From de7d92bb7a573665eda1eeafc6c04dfd8ee7392e Mon Sep 17 00:00:00 2001 From: c9jenkinsv3 Date: Thu, 1 Mar 2018 22:42:18 +0100 Subject: [PATCH] Thu Mar 1 22:42:17 CET 2018 --- build/standalone/config/default.js | 496 +- .../runners-docker/Node.js (default).run | 6 +- .../c9.ide.run/runners/C++ (simple).run | 8 +- .../plugins/c9.ide.run/runners/Node.js.run | 6 +- .../plugins/c9.ide.run/runners/Python 2.run | 4 +- .../plugins/c9.ide.language.core/worker.js | 3 +- configs/standalone.js | 2 +- lib/rusha/package.json | 3 +- .../node_modules/graceful-fs/package.json | 3 +- .../node_modules/memory-fs/package.json | 5 +- .../node_modules/tapable/package.json | 3 +- .../enhanced-resolve/package.json | 3 +- .../glob/node_modules/minimatch/package.json | 3 +- lib/tern/node_modules/glob/package.json | 3 +- .../node_modules/lru-cache/package.json | 3 +- .../node_modules/sigmund/package.json | 3 +- lib/tern/node_modules/minimatch/package.json | 3 +- lib/tern/node_modules/typescript/package.json | 3 +- lib/tern/package.json | 2 +- lib/tern_from_ts/package.json | 2 +- module-map.json | 2 +- node_modules/async/package.json | 3 +- node_modules/base64id/package.json | 7 +- node_modules/c9/setup_paths.js | 4 +- .../connect/node_modules/batch/package.json | 3 +- .../node_modules/buffer-crc32/package.json | 8 +- .../connect/node_modules/bytes/package.json | 3 +- .../cookie-signature/package.json | 3 +- .../connect/node_modules/cookie/package.json | 7 +- .../connect/node_modules/methods/package.json | 4 +- .../node_modules/core-util-is/package.json | 3 +- .../node_modules/inherits/package.json | 3 +- .../node_modules/string_decoder/package.json | 3 +- .../node_modules/readable-stream/package.json | 6 +- .../node_modules/stream-counter/package.json | 4 +- .../node_modules/multiparty/package.json | 6 +- .../node_modules/negotiator/package.json | 7 +- .../connect/node_modules/pause/package.json | 3 +- .../node_modules/raw-body/package.json | 5 +- node_modules/connect/package.json | 3 +- node_modules/debug/package.json | 3 +- node_modules/ejs/package.json | 3 +- .../component-emitter/package.json | 5 +- .../component-inherit/package.json | 5 +- .../debug/node_modules/ms/package.json | 3 +- .../node_modules/debug/package.json | 3 +- .../node_modules/after/package.json | 4 +- .../arraybuffer.slice/package.json | 5 +- .../base64-arraybuffer/package.json | 5 +- .../node_modules/blob/package.json | 5 +- .../node_modules/isarray/package.json | 6 +- .../node_modules/has-binary/package.json | 3 +- .../node_modules/utf8/package.json | 5 +- .../engine.io-parser/package.json | 3 +- .../node_modules/has-cors/package.json | 3 +- .../node_modules/indexof/package.json | 3 +- .../node_modules/callsite/package.json | 3 +- .../node_modules/better-assert/package.json | 5 +- .../node_modules/parsejson/package.json | 3 +- .../node_modules/callsite/package.json | 3 +- .../node_modules/better-assert/package.json | 5 +- .../node_modules/parseqs/package.json | 3 +- .../node_modules/callsite/package.json | 3 +- .../node_modules/better-assert/package.json | 5 +- .../node_modules/parseuri/package.json | 5 +- .../xmlhttprequest-ssl/package.json | 3 +- .../node_modules/yeast/package.json | 3 +- node_modules/engine.io-client/package.json | 3 +- .../node_modules/negotiator/package.json | 5 +- .../node_modules/accepts/package.json | 5 +- .../debug/node_modules/ms/package.json | 3 +- .../engine.io/node_modules/debug/package.json | 3 +- .../node_modules/after/package.json | 4 +- .../arraybuffer.slice/package.json | 5 +- .../base64-arraybuffer/package.json | 5 +- .../node_modules/blob/package.json | 5 +- .../node_modules/isarray/package.json | 6 +- .../node_modules/has-binary/package.json | 3 +- .../node_modules/utf8/package.json | 5 +- .../engine.io-parser/package.json | 3 +- node_modules/engine.io/package.json | 3 +- node_modules/http-error/package.json | 3 +- .../less/node_modules/errno/custom.js | 6 +- .../errno/node_modules/prr/package.json | 5 +- .../less/node_modules/errno/package.json | 35 +- node_modules/less/node_modules/errno/test.js | 15 + .../less/node_modules/image-size/package.json | 15 +- .../mkdirp/node_modules/minimist/package.json | 3 +- .../less/node_modules/mkdirp/package.json | 3 +- .../promise/node_modules/asap/package.json | 3 +- .../less/node_modules/promise/package.json | 3 +- .../node_modules/aws-sign2/package.json | 3 +- .../request/node_modules/aws4/package.json | 3 +- .../node_modules/caseless/package.json | 3 +- .../combined-stream/lib/combined_stream.js | 3 +- .../node_modules/combined-stream/lib/defer.js | 26 + .../node_modules/delayed-stream/package.json | 3 +- .../node_modules/combined-stream/package.json | 55 +- .../request/node_modules/extend/package.json | 3 +- .../node_modules/forever-agent/package.json | 5 +- .../node_modules/asynckit/package.json | 3 +- .../node_modules/form-data/package.json | 3 +- .../ajv/node_modules/co/package.json | 3 +- .../node_modules/jsonify/package.json | 7 +- .../json-stable-stringify/package.json | 3 +- .../node_modules/ajv/package.json | 3 +- .../node_modules/har-schema/package.json | 3 +- .../node_modules/har-validator/package.json | 3 +- .../hawk/node_modules/boom/package.json | 3 +- .../hawk/node_modules/cryptiles/package.json | 3 +- .../hawk/node_modules/hoek/package.json | 3 +- .../hawk/node_modules/sntp/package.json | 5 +- .../request/node_modules/hawk/package.json | 3 +- .../node_modules/assert-plus/package.json | 3 +- .../node_modules/assert-plus/package.json | 3 +- .../node_modules/extsprintf/package.json | 3 +- .../node_modules/json-schema/package.json | 3 +- .../jsprim/node_modules/verror/package.json | 3 +- .../node_modules/jsprim/package.json | 3 +- .../sshpk/node_modules/asn1/package.json | 3 +- .../node_modules/bcrypt-pbkdf/package.json | 3 +- .../sshpk/node_modules/dashdash/package.json | 3 +- .../sshpk/node_modules/ecc-jsbn/package.json | 3 +- .../sshpk/node_modules/getpass/package.json | 3 +- .../sshpk/node_modules/jsbn/package.json | 3 +- .../sshpk/node_modules/tweetnacl/package.json | 3 +- .../node_modules/sshpk/package.json | 3 +- .../node_modules/http-signature/package.json | 3 +- .../node_modules/is-typedarray/package.json | 3 +- .../node_modules/isstream/package.json | 5 +- .../json-stringify-safe/package.json | 3 +- .../node_modules/mime-types/HISTORY.md | 13 + .../node_modules/mime-db/HISTORY.md | 25 + .../mime-types/node_modules/mime-db/db.json | 198 +- .../node_modules/mime-db/package.json | 42 +- .../node_modules/mime-types/package.json | 48 +- .../node_modules/oauth-sign/package.json | 3 +- .../node_modules/performance-now/package.json | 3 +- .../request/node_modules/qs/package.json | 3 +- .../node_modules/safe-buffer/package.json | 3 +- .../node_modules/stringstream/package.json | 3 +- .../node_modules/tough-cookie/lib/cookie.js | 263 +- .../tough-cookie/lib/pubsuffix.js | 2 +- .../node_modules/punycode/package.json | 3 +- .../node_modules/tough-cookie/package.json | 36 +- .../node_modules/tunnel-agent/package.json | 3 +- .../request/node_modules/uuid/package.json | 3 +- .../less/node_modules/request/package.json | 3 +- node_modules/less/package.json | 3 +- node_modules/limiter/package.json | 3 +- node_modules/mime/package.json | 6 +- node_modules/mkdirp/package.json | 9 +- node_modules/msgpack-js-browser/package.json | 12 +- .../nak/node_modules/colors/package.json | 5 +- .../node_modules/isbinaryfile/package.json | 9 +- .../nak/node_modules/simplefunc/package.json | 6 +- node_modules/nak/package.json | 2 +- node_modules/netutil/package.json | 5 +- .../node_modules/minimist/package.json | 3 +- .../node_modules/wordwrap/package.json | 3 +- node_modules/optimist/package.json | 5 +- node_modules/qs/package.json | 4 +- node_modules/rusha/package.json | 3 +- .../send/node_modules/fresh/package.json | 6 +- .../node_modules/range-parser/package.json | 3 +- node_modules/send/package.json | 4 +- node_modules/simple-mime/package.json | 10 +- .../node_modules/graceful-fs/package.json | 3 +- .../node_modules/memory-fs/package.json | 5 +- .../node_modules/tapable/package.json | 3 +- .../enhanced-resolve/package.json | 3 +- .../glob/node_modules/minimatch/package.json | 3 +- .../tern/node_modules/glob/package.json | 3 +- .../node_modules/lru-cache/package.json | 3 +- .../node_modules/sigmund/package.json | 3 +- .../tern/node_modules/minimatch/package.json | 3 +- .../tern/node_modules/typescript/package.json | 3 +- node_modules/tern/package.json | 2 +- node_modules/tern_from_ts/package.json | 2 +- node_modules/through/package.json | 8 +- .../tmp/node_modules/os-tmpdir/package.json | 3 +- node_modules/tmp/package.json | 3 +- .../uglify-js/node_modules/async/package.json | 6 +- .../node_modules/source-map/package.json | 23 +- .../uglify-to-browserify/package.json | 5 +- .../yargs/node_modules/camelcase/package.json | 5 +- .../node_modules/is-buffer/package.json | 3 +- .../node_modules/kind-of/package.json | 3 +- .../node_modules/longest/package.json | 5 +- .../node_modules/repeat-string/package.json | 3 +- .../node_modules/align-text/package.json | 5 +- .../node_modules/lazy-cache/package.json | 3 +- .../node_modules/center-align/package.json | 3 +- .../node_modules/is-buffer/package.json | 3 +- .../node_modules/kind-of/package.json | 3 +- .../node_modules/longest/package.json | 5 +- .../node_modules/repeat-string/package.json | 3 +- .../node_modules/align-text/package.json | 5 +- .../node_modules/right-align/package.json | 3 +- .../cliui/node_modules/wordwrap/package.json | 7 +- .../yargs/node_modules/cliui/package.json | 5 +- .../node_modules/decamelize/package.json | 3 +- .../node_modules/window-size/package.json | 5 +- .../uglify-js/node_modules/yargs/package.json | 3 +- node_modules/uglify-js/package.json | 3 +- .../ws/node_modules/options/package.json | 3 +- .../ws/node_modules/ultron/package.json | 3 +- node_modules/ws/package.json | 3 +- package.json | 2 +- plugins/c9.core/ext.js | 2 + plugins/c9.core/http-xhr.js | 25 +- .../runners-docker/Node.js (default).run | 6 +- plugins/c9.ide.run/runners/C++ (simple).run | 8 +- plugins/c9.ide.run/runners/Node.js.run | 6 +- plugins/c9.ide.run/runners/Python 2.run | 4 +- plugins/c9.ide.server/ide-statics.js | 152 + plugins/c9.ide.server/plugins.js | 173 - plugins/c9.nodeapi/events.js | 3 +- .../views/standalone.html.ejs | 2 +- plugins/node_modules/ace/.gitmodules | 6 + plugins/node_modules/ace/CNAME | 1 + plugins/node_modules/ace/CONTRIBUTING.md | 15 + plugins/node_modules/ace/ChangeLog.txt | 342 + plugins/node_modules/ace/LICENSE | 24 + plugins/node_modules/ace/Makefile | 44 + plugins/node_modules/ace/Makefile.dryice.js | 577 + .../ace/build_support/bookmarklet.html | 112 + .../ace/build_support/editor.html | 39 + .../ace/build_support/mini_require.js | 174 + .../node_modules/ace/build_support/style.css | 226 + .../node_modules/ace/demo/autocompletion.html | 45 + plugins/node_modules/ace/demo/autoresize.html | 68 + plugins/node_modules/ace/demo/chromevox.html | 39 + plugins/node_modules/ace/demo/emmet.html | 43 + plugins/node_modules/ace/demo/ie7.html | 44 + .../ace/demo/keyboard_shortcuts.html | 51 + .../ace/demo/kitchen-sink/demo.js | 585 + .../ace/demo/kitchen-sink/dev_util.js | 217 + .../ace/demo/kitchen-sink/doclist.js | 218 + .../ace/demo/kitchen-sink/docs/Dockerfile | 53 + .../ace/demo/kitchen-sink/docs/Haxe.hx | 17 + .../ace/demo/kitchen-sink/docs/Jack.jack | 247 + .../ace/demo/kitchen-sink/docs/Makefile | 122 + .../ace/demo/kitchen-sink/docs/Nix.nix | 57 + .../ace/demo/kitchen-sink/docs/abap.abap | 36 + .../ace/demo/kitchen-sink/docs/abc.abc | 171 + .../demo/kitchen-sink/docs/actionscript.as | 51 + .../ace/demo/kitchen-sink/docs/ada.ada | 5 + .../demo/kitchen-sink/docs/asciidoc.asciidoc | 6040 + .../demo/kitchen-sink/docs/assembly_x86.asm | 18 + .../ace/demo/kitchen-sink/docs/autohotkey.ahk | 35 + .../ace/demo/kitchen-sink/docs/batchfile.bat | 15 + .../docs/c9search.c9search_results | 25 + .../ace/demo/kitchen-sink/docs/c_cpp.cpp | 46 + .../ace/demo/kitchen-sink/docs/cirru.cirru | 42 + .../ace/demo/kitchen-sink/docs/clojure.clj | 19 + .../ace/demo/kitchen-sink/docs/cobol.CBL | 1 + .../ace/demo/kitchen-sink/docs/coffee.coffee | 22 + .../ace/demo/kitchen-sink/docs/coldfusion.cfm | 5 + .../ace/demo/kitchen-sink/docs/csharp.cs | 4 + .../ace/demo/kitchen-sink/docs/css.css | 18 + .../ace/demo/kitchen-sink/docs/curly.curly | 16 + .../ace/demo/kitchen-sink/docs/d.d | 14 + .../ace/demo/kitchen-sink/docs/dart.dart | 19 + .../ace/demo/kitchen-sink/docs/diff.diff | 69 + .../ace/demo/kitchen-sink/docs/dot.dot | 110 + .../ace/demo/kitchen-sink/docs/eiffel.e | 30 + .../ace/demo/kitchen-sink/docs/ejs.ejs | 31 + .../ace/demo/kitchen-sink/docs/elixir.ex | 42 + .../ace/demo/kitchen-sink/docs/elm.elm | 12 + .../ace/demo/kitchen-sink/docs/erlang.erl | 20 + .../ace/demo/kitchen-sink/docs/forth.frt | 41 + .../ace/demo/kitchen-sink/docs/ftl.ftl | 46 + .../ace/demo/kitchen-sink/docs/gcode.gcode | 31 + .../demo/kitchen-sink/docs/gherkin.feature | 28 + .../ace/demo/kitchen-sink/docs/glsl.glsl | 20 + .../ace/demo/kitchen-sink/docs/golang.go | 34 + .../ace/demo/kitchen-sink/docs/groovy.groovy | 41 + .../ace/demo/kitchen-sink/docs/haml.haml | 36 + .../ace/demo/kitchen-sink/docs/handlebars.hbs | 8 + .../ace/demo/kitchen-sink/docs/haskell.hs | 20 + .../ace/demo/kitchen-sink/docs/htaccess | 10 + .../ace/demo/kitchen-sink/docs/html.html | 17 + .../ace/demo/kitchen-sink/docs/html_ruby.erb | 26 + .../ace/demo/kitchen-sink/docs/ini.ini | 4 + .../ace/demo/kitchen-sink/docs/io.io | 6 + .../ace/demo/kitchen-sink/docs/jade.jade | 45 + .../ace/demo/kitchen-sink/docs/java.java | 15 + .../ace/demo/kitchen-sink/docs/javascript.js | 5 + .../ace/demo/kitchen-sink/docs/json.json | 66 + .../ace/demo/kitchen-sink/docs/jsoniq.jq | 1 + .../ace/demo/kitchen-sink/docs/jsp.jsp | 46 + .../ace/demo/kitchen-sink/docs/jsx.jsx | 9 + .../ace/demo/kitchen-sink/docs/julia.jl | 15 + .../ace/demo/kitchen-sink/docs/latex.tex | 22 + .../ace/demo/kitchen-sink/docs/lean.lean | 9 + .../ace/demo/kitchen-sink/docs/less.less | 28 + .../ace/demo/kitchen-sink/docs/liquid.liquid | 76 + .../ace/demo/kitchen-sink/docs/lisp.lisp | 22 + .../ace/demo/kitchen-sink/docs/livescript.ls | 245 + .../ace/demo/kitchen-sink/docs/logiql.logic | 16 + .../ace/demo/kitchen-sink/docs/lsl.lsl | 75 + .../ace/demo/kitchen-sink/docs/lua.lua | 38 + .../ace/demo/kitchen-sink/docs/luapage.lp | 71 + .../ace/demo/kitchen-sink/docs/lucene.lucene | 1 + .../ace/demo/kitchen-sink/docs/markdown.md | 186 + .../ace/demo/kitchen-sink/docs/mask.mask | 52 + .../ace/demo/kitchen-sink/docs/matlab.matlab | 17 + .../ace/demo/kitchen-sink/docs/maze.mz | 23 + .../ace/demo/kitchen-sink/docs/mel.mel | 33 + .../ace/demo/kitchen-sink/docs/mushcode.mc | 8 + .../ace/demo/kitchen-sink/docs/mysql.mysql | 1 + .../ace/demo/kitchen-sink/docs/objectivec.m | 104 + .../ace/demo/kitchen-sink/docs/ocaml.ml | 18 + .../ace/demo/kitchen-sink/docs/pascal.pas | 48 + .../ace/demo/kitchen-sink/docs/perl.pl | 37 + .../ace/demo/kitchen-sink/docs/pgsql.pgsql | 118 + .../ace/demo/kitchen-sink/docs/php.php | 19 + .../ace/demo/kitchen-sink/docs/plaintext.txt | 11 + .../ace/demo/kitchen-sink/docs/powershell.ps1 | 24 + .../ace/demo/kitchen-sink/docs/praat.praat | 148 + .../ace/demo/kitchen-sink/docs/prolog.plg | 18 + .../kitchen-sink/docs/properties.properties | 15 + .../ace/demo/kitchen-sink/docs/protobuf.proto | 16 + .../ace/demo/kitchen-sink/docs/python.py | 19 + .../ace/demo/kitchen-sink/docs/r.r | 20 + .../ace/demo/kitchen-sink/docs/rdoc.Rd | 64 + .../ace/demo/kitchen-sink/docs/rhtml.Rhtml | 22 + .../ace/demo/kitchen-sink/docs/ruby.rb | 35 + .../ace/demo/kitchen-sink/docs/rust.rs | 20 + .../ace/demo/kitchen-sink/docs/sass.sass | 39 + .../ace/demo/kitchen-sink/docs/scad.scad | 21 + .../ace/demo/kitchen-sink/docs/scala.scala | 69 + .../ace/demo/kitchen-sink/docs/scheme.scm | 21 + .../ace/demo/kitchen-sink/docs/scss.scss | 20 + .../ace/demo/kitchen-sink/docs/sh.sh | 40 + .../ace/demo/kitchen-sink/docs/sjs.sjs | 28 + .../ace/demo/kitchen-sink/docs/smarty.smarty | 7 + .../demo/kitchen-sink/docs/snippets.snippets | 26 + .../demo/kitchen-sink/docs/soy_template.soy | 46 + .../ace/demo/kitchen-sink/docs/space.space | 56 + .../ace/demo/kitchen-sink/docs/sql.sql | 6 + .../kitchen-sink/docs/sqlserver.sqlserver | 72 + .../ace/demo/kitchen-sink/docs/stylus.styl | 55 + .../ace/demo/kitchen-sink/docs/svg.svg | 83 + .../ace/demo/kitchen-sink/docs/swift.swift | 16 + .../ace/demo/kitchen-sink/docs/tcl.tcl | 40 + .../ace/demo/kitchen-sink/docs/tex.tex | 20 + .../demo/kitchen-sink/docs/textile.textile | 29 + .../ace/demo/kitchen-sink/docs/toml.toml | 29 + .../ace/demo/kitchen-sink/docs/twig.twig | 30 + .../ace/demo/kitchen-sink/docs/typescript.ts | 72 + .../ace/demo/kitchen-sink/docs/vala.vala | 21 + .../ace/demo/kitchen-sink/docs/vbscript.vbs | 23 + .../ace/demo/kitchen-sink/docs/velocity.vm | 44 + .../ace/demo/kitchen-sink/docs/verilog.v | 12 + .../ace/demo/kitchen-sink/docs/vhdl.vhd | 34 + .../ace/demo/kitchen-sink/docs/xml.xml | 55 + .../ace/demo/kitchen-sink/docs/xquery.xq | 6 + .../ace/demo/kitchen-sink/docs/yaml.yaml | 35 + .../ace/demo/kitchen-sink/file_drop.js | 73 + .../ace/demo/kitchen-sink/icons/epl.html | 260 + .../ace/demo/kitchen-sink/icons/error_obj.gif | Bin 0 -> 339 bytes .../demo/kitchen-sink/icons/warning_obj.gif | Bin 0 -> 324 bytes .../ace/demo/kitchen-sink/inline_editor.js | 102 + .../ace/demo/kitchen-sink/layout.js | 132 + .../ace/demo/kitchen-sink/logo.png | Bin 0 -> 49263 bytes .../ace/demo/kitchen-sink/require.js | 2074 + .../ace/demo/kitchen-sink/styles.css | 57 + .../ace/demo/kitchen-sink/token_tooltip.js | 156 + .../ace/demo/kitchen-sink/util.js | 235 + plugins/node_modules/ace/demo/modelist.html | 51 + plugins/node_modules/ace/demo/r.js/build.js | 20 + .../node_modules/ace/demo/r.js/editor.html | 36 + .../ace/demo/requirejs+build.html | 49 + .../ace/demo/scrollable-page.html | 155 + .../node_modules/ace/demo/settings_menu.html | 49 + .../node_modules/ace/demo/show_own_source.js | 16 + .../ace/demo/static-highlighter.html | 83 + .../ace/demo/static-highlighter/client.html | 47 + .../ace/demo/static-highlighter/server.js | 42 + plugins/node_modules/ace/demo/statusbar.html | 61 + plugins/node_modules/ace/demo/svg.svg | 11 + plugins/node_modules/ace/demo/xml.xml | 33 + .../ace/doc/site/images/ace-logo.png | Bin 0 -> 60546 bytes .../ace/experiments/animate_folding.html | 249 + .../ace/experiments/basic_animation.html | 191 + .../node_modules/ace/experiments/capture.html | 45 + .../ace/experiments/cut_copy.html | 105 + .../ace/experiments/debug_mem_leak.html | 59 + .../ace/experiments/triple_click.html | 34 + .../node_modules/ace/experiments/worker.html | 33 + .../node_modules/ace/experiments/worker.js | 3 + .../node_modules/ace/experiments/zenbg.png | Bin 0 -> 50753 bytes plugins/node_modules/ace/index.html | 1345 + plugins/node_modules/ace/kitchen-sink.html | 293 + plugins/node_modules/ace/lib/ace/ace.js | 132 + plugins/node_modules/ace/lib/ace/anchor.js | 227 + .../node_modules/ace/lib/ace/anchor_test.js | 223 + .../node_modules/ace/lib/ace/apply_delta.js | 108 + .../node_modules/ace/lib/ace/autocomplete.js | 510 + .../ace/lib/ace/autocomplete/popup.js | 346 + .../lib/ace/autocomplete/text_completer.js | 78 + .../ace/lib/ace/autocomplete/util.js | 89 + .../ace/lib/ace/background_tokenizer.js | 251 + .../ace/lib/ace/background_tokenizer_test.js | 152 + .../node_modules/ace/lib/ace/bidihandler.js | 338 + plugins/node_modules/ace/lib/ace/clipboard.js | 36 + .../ace/lib/ace/commands/command_manager.js | 118 + .../lib/ace/commands/command_manager_test.js | 199 + .../ace/lib/ace/commands/default_commands.js | 758 + .../commands/incremental_search_commands.js | 214 + .../lib/ace/commands/multi_select_commands.js | 113 + .../ace/lib/ace/commands/occur_commands.js | 110 + plugins/node_modules/ace/lib/ace/config.js | 202 + .../node_modules/ace/lib/ace/config_test.js | 135 + .../css/codefolding-fold-button-states.png | Bin 0 -> 759 bytes .../node_modules/ace/lib/ace/css/editor.css | 474 + .../ace/lib/ace/css/expand-marker.png | Bin 0 -> 290 bytes plugins/node_modules/ace/lib/ace/document.js | 692 + .../node_modules/ace/lib/ace/document_test.js | 335 + .../node_modules/ace/lib/ace/edit_session.js | 2559 + .../ace/lib/ace/edit_session/bracket_match.js | 221 + .../ace/lib/ace/edit_session/fold.js | 140 + .../ace/lib/ace/edit_session/fold_line.js | 269 + .../ace/lib/ace/edit_session/folding.js | 869 + .../ace/lib/ace/edit_session_test.js | 1087 + plugins/node_modules/ace/lib/ace/editor.js | 2735 + .../lib/ace/editor_change_document_test.js | 188 + .../editor_highlight_selected_word_test.js | 223 + .../ace/lib/ace/editor_navigation_test.js | 195 + .../ace/lib/ace/editor_text_edit_test.js | 563 + .../node_modules/ace/lib/ace/ext/beautify.js | 57 + .../ace/lib/ace/ext/beautify/php_rules.js | 365 + .../node_modules/ace/lib/ace/ext/chromevox.js | 979 + .../ace/lib/ace/ext/elastic_tabstops_lite.js | 318 + plugins/node_modules/ace/lib/ace/ext/emmet.js | 463 + .../ace/lib/ace/ext/error_marker.js | 217 + .../ace/lib/ace/ext/keybinding_menu.js | 86 + .../ace/lib/ace/ext/language_tools.js | 209 + .../node_modules/ace/lib/ace/ext/linking.js | 87 + .../ext/menu_tools/add_editor_menu_options.js | 109 + .../ace/ext/menu_tools/element_generator.js | 148 + .../ext/menu_tools/generate_settings_menu.js | 264 + .../get_editor_keyboard_shortcuts.js | 91 + .../ace/ext/menu_tools/get_set_functions.js | 141 + .../lib/ace/ext/menu_tools/overlay_page.js | 116 + .../lib/ace/ext/menu_tools/settings_menu.css | 48 + .../node_modules/ace/lib/ace/ext/modelist.js | 221 + .../ace/lib/ace/ext/searchbox.css | 162 + .../node_modules/ace/lib/ace/ext/searchbox.js | 399 + .../ace/lib/ace/ext/settings_menu.js | 76 + .../ace/lib/ace/ext/spellcheck.js | 69 + plugins/node_modules/ace/lib/ace/ext/split.js | 40 + .../node_modules/ace/lib/ace/ext/static.css | 38 + .../ace/lib/ace/ext/static_highlight.js | 191 + .../ace/lib/ace/ext/static_highlight_test.js | 102 + .../node_modules/ace/lib/ace/ext/statusbar.js | 50 + .../node_modules/ace/lib/ace/ext/textarea.js | 521 + .../node_modules/ace/lib/ace/ext/themelist.js | 104 + .../ace/lib/ace/ext/whitespace.js | 243 + .../ace/lib/ace/ext/whitespace_test.js | 206 + .../ace/lib/ace/incremental_search.js | 315 + .../ace/lib/ace/incremental_search_test.js | 213 + .../ace/lib/ace/keyboard/emacs.js | 664 + .../ace/lib/ace/keyboard/emacs_test.js | 173 + .../ace/lib/ace/keyboard/hash_handler.js | 256 + .../ace/lib/ace/keyboard/keybinding.js | 152 + .../ace/lib/ace/keyboard/keybinding_test.js | 69 + .../ace/lib/ace/keyboard/state_handler.js | 249 + .../ace/lib/ace/keyboard/sublime.js | 465 + .../ace/lib/ace/keyboard/textarea.js | 88 + .../ace/lib/ace/keyboard/textinput.js | 501 + .../ace/lib/ace/keyboard/textinput_ios.js | 527 + .../node_modules/ace/lib/ace/keyboard/vim.js | 6263 + .../ace/lib/ace/keyboard/vim_test.js | 4122 + .../node_modules/ace/lib/ace/layer/cursor.js | 243 + .../ace/lib/ace/layer/font_metrics.js | 168 + .../node_modules/ace/lib/ace/layer/gutter.js | 285 + .../node_modules/ace/lib/ace/layer/marker.js | 262 + .../node_modules/ace/lib/ace/layer/text.js | 590 + .../ace/lib/ace/layer/text_test.js | 126 + .../ace/lib/ace/lib/app_config.js | 160 + .../node_modules/ace/lib/ace/lib/bidiutil.js | 406 + plugins/node_modules/ace/lib/ace/lib/dom.js | 286 + .../node_modules/ace/lib/ace/lib/es6-shim.js | 66 + plugins/node_modules/ace/lib/ace/lib/event.js | 400 + .../ace/lib/ace/lib/event_emitter.js | 155 + .../ace/lib/ace/lib/event_emitter_test.js | 65 + .../ace/lib/ace/lib/fixoldbrowsers.js | 18 + plugins/node_modules/ace/lib/ace/lib/keys.js | 163 + plugins/node_modules/ace/lib/ace/lib/lang.js | 223 + plugins/node_modules/ace/lib/ace/lib/net.js | 51 + plugins/node_modules/ace/lib/ace/lib/oop.js | 57 + .../node_modules/ace/lib/ace/lib/useragent.js | 105 + .../node_modules/ace/lib/ace/line_widgets.js | 386 + .../ace/mode/_test/highlight_rules_test.js | 250 + .../ace/lib/ace/mode/_test/package.json | 8 + .../ace/lib/ace/mode/_test/text_asciidoc.txt | 111 + .../ace/lib/ace/mode/_test/text_coffee.txt | 57 + .../lib/ace/mode/_test/text_coldfusion.txt | 8 + .../ace/lib/ace/mode/_test/text_curly.txt | 9 + .../ace/lib/ace/mode/_test/text_ejs.txt | 39 + .../ace/lib/ace/mode/_test/text_gobstones.txt | 19 + .../ace/lib/ace/mode/_test/text_html.txt | 10 + .../lib/ace/mode/_test/text_javascript.txt | 100 + .../lib/ace/mode/_test/text_livescript.txt | 1 + .../ace/lib/ace/mode/_test/text_lucene.txt | 16 + .../ace/lib/ace/mode/_test/text_markdown.txt | 22 + .../ace/lib/ace/mode/_test/text_php.txt | 24 + .../ace/lib/ace/mode/_test/text_ruby.txt | 34 + .../ace/lib/ace/mode/_test/text_rust.txt | 36 + .../ace/lib/ace/mode/_test/text_wollok.txt | 28 + .../ace/lib/ace/mode/_test/text_xml.txt | 7 + .../ace/lib/ace/mode/_test/tokens_abap.json | 213 + .../ace/lib/ace/mode/_test/tokens_abc.json | 2207 + .../ace/mode/_test/tokens_actionscript.json | 263 + .../ace/lib/ace/mode/_test/tokens_ada.json | 39 + .../lib/ace/mode/_test/tokens_asciidoc.json | 422 + .../ace/mode/_test/tokens_assembly_x86.json | 114 + .../lib/ace/mode/_test/tokens_autohotkey.json | 261 + .../lib/ace/mode/_test/tokens_batchfile.json | 70 + .../ace/lib/ace/mode/_test/tokens_bro.json | 106 + .../lib/ace/mode/_test/tokens_c9search.json | 131 + .../ace/lib/ace/mode/_test/tokens_c_cpp.json | 201 + .../ace/lib/ace/mode/_test/tokens_cirru.json | 267 + .../lib/ace/mode/_test/tokens_clojure.json | 162 + .../ace/lib/ace/mode/_test/tokens_cobol.json | 4 + .../ace/lib/ace/mode/_test/tokens_coffee.json | 545 + .../lib/ace/mode/_test/tokens_coldfusion.json | 61 + .../ace/lib/ace/mode/_test/tokens_csharp.json | 31 + .../mode/_test/tokens_csound_document.json | 92 + .../mode/_test/tokens_csound_orchestra.json | 514 + .../ace/mode/_test/tokens_csound_score.json | 158 + .../ace/lib/ace/mode/_test/tokens_css.json | 221 + .../ace/lib/ace/mode/_test/tokens_curly.json | 56 + .../ace/lib/ace/mode/_test/tokens_d.json | 111 + .../ace/lib/ace/mode/_test/tokens_dart.json | 368 + .../ace/lib/ace/mode/_test/tokens_diff.json | 262 + .../ace/lib/ace/mode/_test/tokens_dot.json | 2254 + .../ace/lib/ace/mode/_test/tokens_drools.json | 935 + .../ace/lib/ace/mode/_test/tokens_eiffel.json | 141 + .../ace/lib/ace/mode/_test/tokens_ejs.json | 296 + .../ace/lib/ace/mode/_test/tokens_elixir.json | 196 + .../ace/lib/ace/mode/_test/tokens_elm.json | 198 + .../ace/lib/ace/mode/_test/tokens_erlang.json | 166 + .../ace/lib/ace/mode/_test/tokens_forth.json | 219 + .../lib/ace/mode/_test/tokens_fortran.json | 219 + .../ace/lib/ace/mode/_test/tokens_ftl.json | 341 + .../ace/lib/ace/mode/_test/tokens_gcode.json | 296 + .../lib/ace/mode/_test/tokens_gherkin.json | 142 + .../lib/ace/mode/_test/tokens_gitignore.json | 33 + .../ace/lib/ace/mode/_test/tokens_glsl.json | 127 + .../lib/ace/mode/_test/tokens_gobstones.json | 113 + .../ace/lib/ace/mode/_test/tokens_golang.json | 256 + .../ace/mode/_test/tokens_graphqlschema.json | 400 + .../ace/lib/ace/mode/_test/tokens_groovy.json | 410 + .../ace/lib/ace/mode/_test/tokens_haml.json | 259 + .../lib/ace/mode/_test/tokens_handlebars.json | 81 + .../lib/ace/mode/_test/tokens_haskell.json | 156 + .../ace/mode/_test/tokens_haskell_cabal.json | 278 + .../ace/lib/ace/mode/_test/tokens_haxe.json | 143 + .../ace/lib/ace/mode/_test/tokens_hjson.json | 76 + .../ace/lib/ace/mode/_test/tokens_html.json | 63 + .../ace/mode/_test/tokens_html_elixir.json | 294 + .../lib/ace/mode/_test/tokens_html_ruby.json | 257 + .../ace/lib/ace/mode/_test/tokens_ini.json | 23 + .../ace/lib/ace/mode/_test/tokens_io.json | 49 + .../ace/lib/ace/mode/_test/tokens_jack.json | 1786 + .../ace/lib/ace/mode/_test/tokens_jade.json | 187 + .../ace/lib/ace/mode/_test/tokens_java.json | 95 + .../lib/ace/mode/_test/tokens_javascript.json | 736 + .../ace/lib/ace/mode/_test/tokens_json.json | 412 + .../ace/lib/ace/mode/_test/tokens_jsoniq.json | 4 + .../ace/lib/ace/mode/_test/tokens_jsp.json | 435 + .../ace/lib/ace/mode/_test/tokens_jsx.json | 51 + .../ace/lib/ace/mode/_test/tokens_julia.json | 111 + .../ace/lib/ace/mode/_test/tokens_kotlin.json | 843 + .../ace/lib/ace/mode/_test/tokens_latex.json | 127 + .../ace/lib/ace/mode/_test/tokens_lean.json | 143 + .../ace/lib/ace/mode/_test/tokens_less.json | 224 + .../ace/lib/ace/mode/_test/tokens_liquid.json | 551 + .../ace/lib/ace/mode/_test/tokens_lisp.json | 248 + .../lib/ace/mode/_test/tokens_livescript.json | 6 + .../ace/lib/ace/mode/_test/tokens_logiql.json | 190 + .../ace/lib/ace/mode/_test/tokens_lsl.json | 503 + .../ace/lib/ace/mode/_test/tokens_lua.json | 348 + .../lib/ace/mode/_test/tokens_luapage.json | 651 + .../ace/lib/ace/mode/_test/tokens_lucene.json | 92 + .../lib/ace/mode/_test/tokens_markdown.json | 114 + .../ace/lib/ace/mode/_test/tokens_mask.json | 302 + .../ace/lib/ace/mode/_test/tokens_matlab.json | 90 + .../ace/lib/ace/mode/_test/tokens_maze.json | 241 + .../ace/lib/ace/mode/_test/tokens_mel.json | 255 + .../ace/lib/ace/mode/_test/tokens_mixal.json | 38 + .../lib/ace/mode/_test/tokens_mushcode.json | 790 + .../ace/lib/ace/mode/_test/tokens_mysql.json | 4 + .../ace/lib/ace/mode/_test/tokens_nix.json | 360 + .../ace/lib/ace/mode/_test/tokens_nsis.json | 133 + .../lib/ace/mode/_test/tokens_objectivec.json | 798 + .../ace/lib/ace/mode/_test/tokens_ocaml.json | 200 + .../ace/lib/ace/mode/_test/tokens_pascal.json | 297 + .../ace/lib/ace/mode/_test/tokens_perl.json | 227 + .../ace/lib/ace/mode/_test/tokens_pgsql.json | 889 + .../ace/lib/ace/mode/_test/tokens_php.json | 171 + .../ace/lib/ace/mode/_test/tokens_pig.json | 85 + .../lib/ace/mode/_test/tokens_powershell.json | 184 + .../ace/lib/ace/mode/_test/tokens_praat.json | 955 + .../ace/lib/ace/mode/_test/tokens_prolog.json | 245 + .../lib/ace/mode/_test/tokens_properties.json | 68 + .../lib/ace/mode/_test/tokens_protobuf.json | 136 + .../ace/lib/ace/mode/_test/tokens_python.json | 152 + .../ace/lib/ace/mode/_test/tokens_r.json | 235 + .../ace/lib/ace/mode/_test/tokens_razor.json | 17 + .../ace/lib/ace/mode/_test/tokens_rdoc.json | 441 + .../ace/lib/ace/mode/_test/tokens_rhtml.json | 106 + .../ace/lib/ace/mode/_test/tokens_rst.json | 1297 + .../ace/lib/ace/mode/_test/tokens_ruby.json | 242 + .../lib/ace/mode/_test/tokens_ruby_slim.json | 181 + .../ace/lib/ace/mode/_test/tokens_rust.json | 299 + .../ace/lib/ace/mode/_test/tokens_sass.json | 229 + .../ace/lib/ace/mode/_test/tokens_scad.json | 194 + .../ace/lib/ace/mode/_test/tokens_scala.json | 542 + .../ace/lib/ace/mode/_test/tokens_scheme.json | 216 + .../ace/lib/ace/mode/_test/tokens_scss.json | 123 + .../ace/lib/ace/mode/_test/tokens_sh.json | 397 + .../ace/lib/ace/mode/_test/tokens_sjs.json | 276 + .../ace/lib/ace/mode/_test/tokens_smarty.json | 98 + .../lib/ace/mode/_test/tokens_snippets.json | 159 + .../ace/mode/_test/tokens_soy_template.json | 286 + .../ace/lib/ace/mode/_test/tokens_space.json | 322 + .../ace/lib/ace/mode/_test/tokens_sparql.json | 132 + .../ace/lib/ace/mode/_test/tokens_sql.json | 54 + .../lib/ace/mode/_test/tokens_sqlserver.json | 457 + .../ace/lib/ace/mode/_test/tokens_stylus.json | 271 + .../ace/lib/ace/mode/_test/tokens_svg.json | 685 + .../ace/lib/ace/mode/_test/tokens_swift.json | 171 + .../ace/lib/ace/mode/_test/tokens_tcl.json | 385 + .../ace/lib/ace/mode/_test/tokens_tex.json | 129 + .../ace/lib/ace/mode/_test/tokens_text.json | 29 + .../lib/ace/mode/_test/tokens_textile.json | 113 + .../ace/lib/ace/mode/_test/tokens_toml.json | 131 + .../ace/lib/ace/mode/_test/tokens_tsx.json | 30 + .../ace/lib/ace/mode/_test/tokens_turtle.json | 108 + .../ace/lib/ace/mode/_test/tokens_twig.json | 288 + .../lib/ace/mode/_test/tokens_typescript.json | 563 + .../ace/lib/ace/mode/_test/tokens_vala.json | 158 + .../lib/ace/mode/_test/tokens_vbscript.json | 255 + .../lib/ace/mode/_test/tokens_velocity.json | 287 + .../lib/ace/mode/_test/tokens_verilog.json | 113 + .../ace/lib/ace/mode/_test/tokens_vhdl.json | 271 + .../ace/lib/ace/mode/_test/tokens_wollok.json | 209 + .../ace/lib/ace/mode/_test/tokens_xml.json | 43 + .../ace/lib/ace/mode/_test/tokens_xquery.json | 44 + .../ace/lib/ace/mode/_test/tokens_yaml.json | 167 + plugins/node_modules/ace/lib/ace/mode/abap.js | 61 + .../ace/lib/ace/mode/abap_highlight_rules.js | 134 + plugins/node_modules/ace/lib/ace/mode/abc.js | 58 + .../ace/lib/ace/mode/abc_highlight_rules.js | 114 + .../ace/lib/ace/mode/actionscript.js | 58 + .../ace/mode/actionscript_highlight_rules.js | 141 + plugins/node_modules/ace/lib/ace/mode/ada.js | 54 + .../ace/lib/ace/mode/ada_highlight_rules.js | 93 + .../ace/lib/ace/mode/apache_conf.js | 62 + .../ace/mode/apache_conf_highlight_rules.js | 231 + .../ace/lib/ace/mode/applescript.js | 54 + .../ace/mode/applescript_highlight_rules.js | 139 + .../node_modules/ace/lib/ace/mode/asciidoc.js | 64 + .../lib/ace/mode/asciidoc_highlight_rules.js | 234 + .../ace/lib/ace/mode/assembly_x86.js | 57 + .../ace/mode/assembly_x86_highlight_rules.js | 114 + .../ace/lib/ace/mode/autohotkey.js | 57 + .../ace/mode/autohotkey_highlight_rules.js | 107 + .../ace/lib/ace/mode/batchfile.js | 62 + .../lib/ace/mode/batchfile_highlight_rules.js | 97 + .../ace/lib/ace/mode/behaviour.js | 90 + .../lib/ace/mode/behaviour/behaviour_test.js | 232 + .../ace/lib/ace/mode/behaviour/css.js | 108 + .../ace/lib/ace/mode/behaviour/cstyle.js | 400 + .../ace/lib/ace/mode/behaviour/html.js | 46 + .../ace/lib/ace/mode/behaviour/xml.js | 212 + .../ace/lib/ace/mode/behaviour/xquery.js | 92 + plugins/node_modules/ace/lib/ace/mode/bro.js | 58 + .../ace/lib/ace/mode/bro_highlight_rules.js | 204 + .../node_modules/ace/lib/ace/mode/c9search.js | 67 + .../lib/ace/mode/c9search_highlight_rules.js | 193 + .../node_modules/ace/lib/ace/mode/c_cpp.js | 101 + .../ace/lib/ace/mode/c_cpp_highlight_rules.js | 199 + .../node_modules/ace/lib/ace/mode/cirru.js | 52 + .../ace/lib/ace/mode/cirru_highlight_rules.js | 125 + .../node_modules/ace/lib/ace/mode/clojure.js | 129 + .../lib/ace/mode/clojure_highlight_rules.js | 200 + .../node_modules/ace/lib/ace/mode/cobol.js | 53 + .../ace/lib/ace/mode/cobol_highlight_rules.js | 100 + .../node_modules/ace/lib/ace/mode/coffee.js | 116 + .../ace/lib/ace/mode/coffee/coffee.js | 15 + .../ace/lib/ace/mode/coffee/parser_test.js | 89 + .../lib/ace/mode/coffee_highlight_rules.js | 232 + .../ace/lib/ace/mode/coffee_worker.js | 73 + .../ace/lib/ace/mode/coldfusion.js | 61 + .../ace/mode/coldfusion_highlight_rules.js | 86 + .../ace/lib/ace/mode/coldfusion_test.js | 67 + .../node_modules/ace/lib/ace/mode/csharp.js | 61 + .../lib/ace/mode/csharp_highlight_rules.js | 98 + .../ace/lib/ace/mode/csound_document.js | 14 + .../mode/csound_document_highlight_rules.js | 66 + .../ace/lib/ace/mode/csound_orchestra.js | 21 + .../mode/csound_orchestra_highlight_rules.js | 1916 + .../csound_preprocessor_highlight_rules.js | 295 + .../ace/lib/ace/mode/csound_score.js | 21 + .../ace/mode/csound_score_highlight_rules.js | 156 + plugins/node_modules/ace/lib/ace/mode/css.js | 106 + .../ace/lib/ace/mode/css/csslint.js | 9629 ++ .../ace/lib/ace/mode/css_completions.js | 213 + .../ace/lib/ace/mode/css_highlight_rules.js | 227 + .../node_modules/ace/lib/ace/mode/css_test.js | 78 + .../ace/lib/ace/mode/css_worker.js | 100 + .../ace/lib/ace/mode/css_worker_test.js | 68 + .../node_modules/ace/lib/ace/mode/curly.js | 62 + .../ace/lib/ace/mode/curly_highlight_rules.js | 66 + plugins/node_modules/ace/lib/ace/mode/d.js | 57 + .../ace/lib/ace/mode/d_highlight_rules.js | 334 + plugins/node_modules/ace/lib/ace/mode/dart.js | 62 + .../ace/lib/ace/mode/dart_highlight_rules.js | 184 + plugins/node_modules/ace/lib/ace/mode/diff.js | 52 + .../ace/lib/ace/mode/diff_highlight_rules.js | 108 + .../node_modules/ace/lib/ace/mode/django.js | 114 + .../ace/mode/doc_comment_highlight_rules.js | 79 + .../ace/lib/ace/mode/dockerfile.js | 52 + .../ace/mode/dockerfile_highlight_rules.js | 57 + plugins/node_modules/ace/lib/ace/mode/dot.js | 56 + .../ace/lib/ace/mode/dot_highlight_rules.js | 123 + .../node_modules/ace/lib/ace/mode/drools.js | 55 + .../lib/ace/mode/drools_highlight_rules.js | 261 + .../node_modules/ace/lib/ace/mode/eiffel.js | 52 + .../lib/ace/mode/eiffel_highlight_rules.js | 136 + plugins/node_modules/ace/lib/ace/mode/ejs.js | 97 + .../node_modules/ace/lib/ace/mode/elixir.js | 58 + .../lib/ace/mode/elixir_highlight_rules.js | 433 + plugins/node_modules/ace/lib/ace/mode/elm.js | 58 + .../ace/lib/ace/mode/elm_highlight_rules.js | 167 + .../node_modules/ace/lib/ace/mode/erlang.js | 57 + .../lib/ace/mode/erlang_highlight_rules.js | 876 + .../ace/lib/ace/mode/folding/asciidoc.js | 142 + .../ace/lib/ace/mode/folding/c9search.js | 83 + .../ace/lib/ace/mode/folding/coffee.js | 120 + .../ace/lib/ace/mode/folding/coffee_test.js | 101 + .../ace/lib/ace/mode/folding/csharp.js | 137 + .../ace/lib/ace/mode/folding/cstyle.js | 192 + .../ace/lib/ace/mode/folding/cstyle_test.js | 109 + .../ace/lib/ace/mode/folding/diff.js | 69 + .../ace/lib/ace/mode/folding/drools.js | 49 + .../ace/lib/ace/mode/folding/fold_mode.js | 120 + .../ace/lib/ace/mode/folding/haskell_cabal.js | 115 + .../ace/lib/ace/mode/folding/html.js | 48 + .../ace/lib/ace/mode/folding/html_test.js | 186 + .../ace/lib/ace/mode/folding/ini.js | 80 + .../ace/lib/ace/mode/folding/latex.js | 180 + .../ace/lib/ace/mode/folding/lua.js | 163 + .../ace/lib/ace/mode/folding/markdown.js | 125 + .../ace/lib/ace/mode/folding/mixed.js | 83 + .../ace/lib/ace/mode/folding/pythonic.js | 58 + .../ace/lib/ace/mode/folding/pythonic_test.js | 98 + .../ace/lib/ace/mode/folding/sqlserver.js | 111 + .../ace/lib/ace/mode/folding/velocity.js | 120 + .../ace/lib/ace/mode/folding/xml.js | 286 + .../ace/lib/ace/mode/folding/xml_test.js | 110 + .../node_modules/ace/lib/ace/mode/forth.js | 58 + .../ace/lib/ace/mode/forth_highlight_rules.js | 164 + .../node_modules/ace/lib/ace/mode/fortran.js | 113 + .../lib/ace/mode/fortran_highlight_rules.js | 233 + plugins/node_modules/ace/lib/ace/mode/ftl.js | 50 + .../ace/lib/ace/mode/ftl_highlight_rules.js | 194 + .../node_modules/ace/lib/ace/mode/gcode.js | 52 + .../ace/lib/ace/mode/gcode_highlight_rules.js | 94 + .../node_modules/ace/lib/ace/mode/gherkin.js | 81 + .../lib/ace/mode/gherkin_highlight_rules.js | 150 + .../ace/lib/ace/mode/gitignore.js | 21 + .../lib/ace/mode/gitignore_highlight_rules.js | 31 + plugins/node_modules/ace/lib/ace/mode/glsl.js | 56 + .../ace/lib/ace/mode/glsl_highlight_rules.js | 81 + .../ace/lib/ace/mode/gobstones.js | 26 + .../lib/ace/mode/gobstones_highlight_rules.js | 111 + .../node_modules/ace/lib/ace/mode/golang.js | 56 + .../lib/ace/mode/golang_highlight_rules.js | 119 + .../ace/lib/ace/mode/graphqlschema.js | 51 + .../ace/mode/graphqlschema_highlight_rules.js | 74 + .../node_modules/ace/lib/ace/mode/groovy.js | 24 + .../lib/ace/mode/groovy_highlight_rules.js | 172 + plugins/node_modules/ace/lib/ace/mode/haml.js | 62 + .../ace/lib/ace/mode/haml_highlight_rules.js | 145 + .../ace/lib/ace/mode/handlebars.js | 26 + .../ace/mode/handlebars_highlight_rules.js | 72 + .../node_modules/ace/lib/ace/mode/haskell.js | 63 + .../ace/lib/ace/mode/haskell_cabal.js | 61 + .../ace/mode/haskell_cabal_highlight_rules.js | 68 + .../lib/ace/mode/haskell_highlight_rules.js | 246 + plugins/node_modules/ace/lib/ace/mode/haxe.js | 56 + .../ace/lib/ace/mode/haxe_highlight_rules.js | 97 + .../node_modules/ace/lib/ace/mode/hjson.js | 52 + .../ace/lib/ace/mode/hjson_highlight_rules.js | 221 + plugins/node_modules/ace/lib/ace/mode/html.js | 106 + .../ace/lib/ace/mode/html/saxparser.js | 10430 ++ .../ace/lib/ace/mode/html_completions.js | 359 + .../ace/lib/ace/mode/html_elixir.js | 59 + .../ace/mode/html_elixir_highlight_rules.js | 84 + .../ace/lib/ace/mode/html_highlight_rules.js | 111 + .../ace/lib/ace/mode/html_ruby.js | 59 + .../lib/ace/mode/html_ruby_highlight_rules.js | 84 + .../ace/lib/ace/mode/html_test.js | 67 + .../ace/lib/ace/mode/html_worker.js | 92 + plugins/node_modules/ace/lib/ace/mode/ini.js | 54 + .../ace/lib/ace/mode/ini_highlight_rules.js | 112 + plugins/node_modules/ace/lib/ace/mode/io.js | 58 + .../ace/lib/ace/mode/io_highlight_rules.js | 120 + plugins/node_modules/ace/lib/ace/mode/jack.js | 79 + .../ace/lib/ace/mode/jack_highlight_rules.js | 142 + plugins/node_modules/ace/lib/ace/mode/jade.js | 57 + .../ace/lib/ace/mode/jade_highlight_rules.js | 343 + plugins/node_modules/ace/lib/ace/mode/java.js | 24 + .../ace/lib/ace/mode/java_highlight_rules.js | 128 + .../ace/lib/ace/mode/javascript.js | 116 + .../ace/lib/ace/mode/javascript/jshint.js | 12375 ++ .../ace/mode/javascript_highlight_rules.js | 527 + .../ace/lib/ace/mode/javascript_test.js | 213 + .../ace/lib/ace/mode/javascript_worker.js | 185 + .../lib/ace/mode/javascript_worker_test.js | 106 + .../lib/ace/mode/js_regex_highlight_rules.js | 94 + plugins/node_modules/ace/lib/ace/mode/json.js | 93 + .../ace/lib/ace/mode/json/json_parse.js | 348 + .../ace/lib/ace/mode/json_highlight_rules.js | 108 + .../ace/lib/ace/mode/json_worker.js | 67 + .../ace/lib/ace/mode/json_worker_test.js | 102 + .../node_modules/ace/lib/ace/mode/jsoniq.js | 203 + plugins/node_modules/ace/lib/ace/mode/jsp.js | 55 + .../ace/lib/ace/mode/jsp_highlight_rules.js | 91 + plugins/node_modules/ace/lib/ace/mode/jssm.js | 58 + .../ace/lib/ace/mode/jssm_highlight_rules.js | 193 + plugins/node_modules/ace/lib/ace/mode/jsx.js | 56 + .../ace/lib/ace/mode/jsx_highlight_rules.js | 119 + .../node_modules/ace/lib/ace/mode/julia.js | 63 + .../ace/lib/ace/mode/julia_highlight_rules.js | 170 + .../node_modules/ace/lib/ace/mode/kotlin.js | 58 + .../lib/ace/mode/kotlin_highlight_rules.js | 663 + .../node_modules/ace/lib/ace/mode/latex.js | 43 + .../ace/lib/ace/mode/latex_highlight_rules.js | 105 + plugins/node_modules/ace/lib/ace/mode/less.js | 92 + .../ace/lib/ace/mode/less_highlight_rules.js | 170 + .../node_modules/ace/lib/ace/mode/liquid.js | 82 + .../lib/ace/mode/liquid_highlight_rules.js | 131 + plugins/node_modules/ace/lib/ace/mode/lisp.js | 57 + .../ace/lib/ace/mode/lisp_highlight_rules.js | 124 + .../ace/lib/ace/mode/livescript.js | 231 + .../node_modules/ace/lib/ace/mode/logiql.js | 139 + .../lib/ace/mode/logiql_highlight_rules.js | 119 + .../ace/lib/ace/mode/logiql_test.js | 98 + plugins/node_modules/ace/lib/ace/mode/lsl.js | 92 + .../ace/lib/ace/mode/lsl_highlight_rules.js | 122 + plugins/node_modules/ace/lib/ace/mode/lua.js | 169 + .../ace/lib/ace/mode/lua/luaparse.js | 1989 + .../ace/lib/ace/mode/lua_highlight_rules.js | 190 + .../ace/lib/ace/mode/lua_worker.js | 70 + .../node_modules/ace/lib/ace/mode/luapage.js | 24 + .../lib/ace/mode/luapage_highlight_rules.js | 49 + .../node_modules/ace/lib/ace/mode/lucene.js | 20 + .../lib/ace/mode/lucene_highlight_rules.js | 49 + .../node_modules/ace/lib/ace/mode/makefile.js | 59 + .../lib/ace/mode/makefile_highlight_rules.js | 75 + .../node_modules/ace/lib/ace/mode/markdown.js | 77 + .../lib/ace/mode/markdown_highlight_rules.js | 228 + plugins/node_modules/ace/lib/ace/mode/mask.js | 84 + .../ace/lib/ace/mode/mask_highlight_rules.js | 309 + .../lib/ace/mode/matching_brace_outdent.js | 69 + .../lib/ace/mode/matching_parens_outdent.js | 74 + .../node_modules/ace/lib/ace/mode/matlab.js | 55 + .../lib/ace/mode/matlab_highlight_rules.js | 262 + plugins/node_modules/ace/lib/ace/mode/maze.js | 53 + .../ace/lib/ace/mode/maze_highlight_rules.js | 154 + plugins/node_modules/ace/lib/ace/mode/mel.js | 56 + .../ace/lib/ace/mode/mel_highlight_rules.js | 133 + .../node_modules/ace/lib/ace/mode/mixal.js | 49 + .../ace/lib/ace/mode/mixal_highlight_rules.js | 125 + .../node_modules/ace/lib/ace/mode/mushcode.js | 116 + .../lib/ace/mode/mushcode_highlight_rules.js | 569 + .../node_modules/ace/lib/ace/mode/mysql.js | 51 + .../ace/lib/ace/mode/mysql_highlight_rules.js | 122 + plugins/node_modules/ace/lib/ace/mode/nix.js | 63 + .../ace/lib/ace/mode/nix_highlight_rules.js | 118 + plugins/node_modules/ace/lib/ace/mode/nsis.js | 57 + .../ace/lib/ace/mode/nsis_highlight_rules.js | 173 + .../ace/lib/ace/mode/objectivec.js | 62 + .../ace/mode/objectivec_highlight_rules.js | 330 + .../node_modules/ace/lib/ace/mode/ocaml.js | 98 + .../ace/lib/ace/mode/ocaml_highlight_rules.js | 336 + .../node_modules/ace/lib/ace/mode/pascal.js | 68 + .../lib/ace/mode/pascal_highlight_rules.js | 127 + plugins/node_modules/ace/lib/ace/mode/perl.js | 90 + .../ace/lib/ace/mode/perl_highlight_rules.js | 165 + .../node_modules/ace/lib/ace/mode/pgsql.js | 59 + .../ace/lib/ace/mode/pgsql_highlight_rules.js | 616 + plugins/node_modules/ace/lib/ace/mode/php.js | 149 + .../node_modules/ace/lib/ace/mode/php/php.js | 2275 + .../ace/lib/ace/mode/php_completions.js | 9400 ++ .../ace/lib/ace/mode/php_highlight_rules.js | 1100 + .../node_modules/ace/lib/ace/mode/php_test.js | 65 + .../ace/lib/ace/mode/php_worker.js | 77 + plugins/node_modules/ace/lib/ace/mode/pig.js | 58 + .../ace/lib/ace/mode/pig_highlight_rules.js | 178 + .../ace/lib/ace/mode/plain_text.js | 55 + .../ace/lib/ace/mode/plain_text_test.js | 56 + .../ace/lib/ace/mode/powershell.js | 61 + .../ace/mode/powershell_highlight_rules.js | 259 + .../node_modules/ace/lib/ace/mode/praat.js | 84 + .../ace/lib/ace/mode/praat_highlight_rules.js | 269 + .../node_modules/ace/lib/ace/mode/prolog.js | 62 + .../lib/ace/mode/prolog_highlight_rules.js | 238 + .../ace/lib/ace/mode/properties.js | 49 + .../ace/mode/properties_highlight_rules.js | 86 + .../node_modules/ace/lib/ace/mode/protobuf.js | 63 + .../lib/ace/mode/protobuf_highlight_rules.js | 65 + .../node_modules/ace/lib/ace/mode/python.js | 114 + .../lib/ace/mode/python_highlight_rules.js | 191 + .../ace/lib/ace/mode/python_test.js | 79 + plugins/node_modules/ace/lib/ace/mode/r.js | 143 + .../ace/lib/ace/mode/r_highlight_rules.js | 208 + .../node_modules/ace/lib/ace/mode/razor.js | 33 + .../ace/lib/ace/mode/razor_completions.js | 112 + .../ace/lib/ace/mode/razor_highlight_rules.js | 160 + plugins/node_modules/ace/lib/ace/mode/rdoc.js | 61 + .../ace/lib/ace/mode/rdoc_highlight_rules.js | 119 + plugins/node_modules/ace/lib/ace/mode/red.js | 98 + .../ace/lib/ace/mode/red_highlight_rules.js | 233 + .../node_modules/ace/lib/ace/mode/rhtml.js | 87 + .../ace/lib/ace/mode/rhtml_highlight_rules.js | 66 + plugins/node_modules/ace/lib/ace/mode/rst.js | 51 + .../ace/lib/ace/mode/rst_highlight_rules.js | 296 + plugins/node_modules/ace/lib/ace/mode/ruby.js | 100 + .../ace/lib/ace/mode/ruby_highlight_rules.js | 331 + .../ace/lib/ace/mode/ruby_test.js | 77 + plugins/node_modules/ace/lib/ace/mode/rust.js | 59 + .../ace/lib/ace/mode/rust_highlight_rules.js | 147 + plugins/node_modules/ace/lib/ace/mode/sass.js | 53 + .../ace/lib/ace/mode/sass_highlight_rules.js | 79 + plugins/node_modules/ace/lib/ace/mode/scad.js | 98 + .../ace/lib/ace/mode/scad_highlight_rules.js | 141 + .../node_modules/ace/lib/ace/mode/scala.js | 24 + .../ace/lib/ace/mode/scala_highlight_rules.js | 165 + .../node_modules/ace/lib/ace/mode/scheme.js | 134 + .../lib/ace/mode/scheme_highlight_rules.js | 123 + plugins/node_modules/ace/lib/ace/mode/scss.js | 84 + .../ace/lib/ace/mode/scss_highlight_rules.js | 317 + plugins/node_modules/ace/lib/ace/mode/sh.js | 116 + .../ace/lib/ace/mode/sh_highlight_rules.js | 249 + plugins/node_modules/ace/lib/ace/mode/sjs.js | 56 + .../ace/lib/ace/mode/sjs_highlight_rules.js | 233 + .../node_modules/ace/lib/ace/mode/smarty.js | 51 + .../lib/ace/mode/smarty_highlight_rules.js | 139 + .../node_modules/ace/lib/ace/mode/snippets.js | 114 + .../ace/lib/ace/mode/soy_template.js | 52 + .../ace/mode/soy_template_highlight_rules.js | 355 + .../node_modules/ace/lib/ace/mode/space.js | 22 + .../ace/lib/ace/mode/space_highlight_rules.js | 56 + .../node_modules/ace/lib/ace/mode/sparql.js | 57 + .../lib/ace/mode/sparql_highlight_rules.js | 190 + plugins/node_modules/ace/lib/ace/mode/sql.js | 53 + .../ace/lib/ace/mode/sql_highlight_rules.js | 110 + .../ace/lib/ace/mode/sqlserver.js | 62 + .../lib/ace/mode/sqlserver_highlight_rules.js | 232 + .../node_modules/ace/lib/ace/mode/stylus.js | 63 + .../lib/ace/mode/stylus_highlight_rules.js | 164 + plugins/node_modules/ace/lib/ace/mode/svg.js | 69 + .../ace/lib/ace/mode/svg_highlight_rules.js | 49 + .../node_modules/ace/lib/ace/mode/swift.js | 61 + .../ace/lib/ace/mode/swift_highlight_rules.js | 196 + plugins/node_modules/ace/lib/ace/mode/tcl.js | 85 + .../ace/lib/ace/mode/tcl_highlight_rules.js | 172 + plugins/node_modules/ace/lib/ace/mode/tex.js | 70 + .../ace/lib/ace/mode/tex_highlight_rules.js | 127 + plugins/node_modules/ace/lib/ace/mode/text.js | 375 + .../ace/lib/ace/mode/text_highlight_rules.js | 239 + .../ace/lib/ace/mode/text_test.js | 64 + .../node_modules/ace/lib/ace/mode/textile.js | 68 + .../lib/ace/mode/textile_highlight_rules.js | 93 + plugins/node_modules/ace/lib/ace/mode/toml.js | 57 + .../ace/lib/ace/mode/toml_highlight_rules.js | 107 + plugins/node_modules/ace/lib/ace/mode/tsx.js | 52 + .../node_modules/ace/lib/ace/mode/turtle.js | 57 + .../lib/ace/mode/turtle_highlight_rules.js | 166 + plugins/node_modules/ace/lib/ace/mode/twig.js | 81 + .../ace/lib/ace/mode/twig_highlight_rules.js | 166 + .../ace/lib/ace/mode/typescript.js | 62 + .../ace/mode/typescript_highlight_rules.js | 98 + plugins/node_modules/ace/lib/ace/mode/vala.js | 105 + .../ace/lib/ace/mode/vala_highlight_rules.js | 457 + .../node_modules/ace/lib/ace/mode/vbscript.js | 61 + .../lib/ace/mode/vbscript_highlight_rules.js | 222 + .../node_modules/ace/lib/ace/mode/velocity.js | 58 + .../lib/ace/mode/velocity_highlight_rules.js | 177 + .../node_modules/ace/lib/ace/mode/verilog.js | 55 + .../lib/ace/mode/verilog_highlight_rules.js | 109 + plugins/node_modules/ace/lib/ace/mode/vhdl.js | 52 + .../ace/lib/ace/mode/vhdl_highlight_rules.js | 115 + .../node_modules/ace/lib/ace/mode/wollok.js | 25 + .../lib/ace/mode/wollok_highlight_rules.js | 96 + plugins/node_modules/ace/lib/ace/mode/xml.js | 75 + .../ace/lib/ace/mode/xml/dom-parser.js | 260 + .../node_modules/ace/lib/ace/mode/xml/dom.js | 1138 + .../node_modules/ace/lib/ace/mode/xml/sax.js | 592 + .../ace/lib/ace/mode/xml_highlight_rules.js | 238 + .../node_modules/ace/lib/ace/mode/xml_test.js | 75 + .../ace/lib/ace/mode/xml_worker.js | 92 + .../node_modules/ace/lib/ace/mode/xquery.js | 216 + .../ace/lib/ace/mode/xquery/jsoniq_lexer.js | 4469 + .../ace/lib/ace/mode/xquery/xqlint.js | 99801 ++++++++++++++++ .../ace/lib/ace/mode/xquery/xquery_lexer.js | 4438 + .../ace/lib/ace/mode/xquery_worker.js | 116 + plugins/node_modules/ace/lib/ace/mode/yaml.js | 79 + .../ace/lib/ace/mode/yaml_highlight_rules.js | 148 + .../node_modules/ace/lib/ace/model/editor.js | 62 + .../lib/ace/mouse/default_gutter_handler.js | 183 + .../ace/lib/ace/mouse/default_handlers.js | 321 + .../ace/lib/ace/mouse/dragdrop_handler.js | 424 + .../ace/lib/ace/mouse/fold_handler.js | 102 + .../ace/lib/ace/mouse/mouse_event.js | 129 + .../ace/lib/ace/mouse/mouse_handler.js | 227 + .../ace/lib/ace/mouse/mouse_handler_test.js | 77 + .../ace/lib/ace/mouse/multi_select_handler.js | 202 + .../node_modules/ace/lib/ace/multi_select.js | 977 + .../ace/lib/ace/multi_select_test.js | 285 + plugins/node_modules/ace/lib/ace/occur.js | 191 + .../node_modules/ace/lib/ace/occur_test.js | 154 + .../node_modules/ace/lib/ace/placeholder.js | 262 + .../ace/lib/ace/placeholder_test.js | 157 + plugins/node_modules/ace/lib/ace/range.js | 549 + .../node_modules/ace/lib/ace/range_list.js | 239 + .../ace/lib/ace/range_list_test.js | 182 + .../node_modules/ace/lib/ace/range_test.js | 191 + .../node_modules/ace/lib/ace/renderloop.js | 75 + .../ace/lib/ace/requirejs/text.js | 52 + .../ace/lib/ace/requirejs/text_build.js | 60 + plugins/node_modules/ace/lib/ace/scrollbar.js | 286 + plugins/node_modules/ace/lib/ace/search.js | 407 + .../ace/lib/ace/search_highlight.js | 82 + .../node_modules/ace/lib/ace/search_test.js | 525 + plugins/node_modules/ace/lib/ace/selection.js | 940 + .../ace/lib/ace/selection_test.js | 491 + plugins/node_modules/ace/lib/ace/snippets.js | 954 + .../ace/lib/ace/snippets/_.snippets | 240 + .../ace/lib/ace/snippets/_all_modes.js | 7 + .../ace/lib/ace/snippets/_all_modes.snippets | 0 .../node_modules/ace/lib/ace/snippets/abap.js | 7 + .../ace/lib/ace/snippets/abap.snippets | 0 .../node_modules/ace/lib/ace/snippets/abc.js | 7 + .../ace/lib/ace/snippets/abc.snippets | 31 + .../ace/lib/ace/snippets/actionscript.js | 7 + .../lib/ace/snippets/actionscript.snippets | 157 + .../node_modules/ace/lib/ace/snippets/ada.js | 7 + .../ace/lib/ace/snippets/ada.snippets | 0 .../ace/lib/ace/snippets/all_modes.js | 7 + .../ace/lib/ace/snippets/all_modes.snippets | 0 .../ace/lib/ace/snippets/apache.snippets | 35 + .../ace/lib/ace/snippets/apache_conf.js | 7 + .../ace/lib/ace/snippets/apache_conf.snippets | 0 .../ace/lib/ace/snippets/applescript.js | 7 + .../ace/lib/ace/snippets/applescript.snippets | 0 .../ace/lib/ace/snippets/asciidoc.js | 7 + .../ace/lib/ace/snippets/asciidoc.snippets | 0 .../ace/lib/ace/snippets/assembly_x86.js | 7 + .../lib/ace/snippets/assembly_x86.snippets | 0 .../ace/lib/ace/snippets/autohotkey.js | 7 + .../ace/lib/ace/snippets/autohotkey.snippets | 0 .../ace/lib/ace/snippets/autoit.snippets | 66 + .../ace/lib/ace/snippets/batchfile.js | 7 + .../ace/lib/ace/snippets/batchfile.snippets | 0 .../node_modules/ace/lib/ace/snippets/bro.js | 7 + .../ace/lib/ace/snippets/bro.snippets | 0 .../ace/lib/ace/snippets/c.snippets | 235 + .../ace/lib/ace/snippets/c9search.js | 7 + .../ace/lib/ace/snippets/c9search.snippets | 0 .../ace/lib/ace/snippets/c_cpp.js | 7 + .../ace/lib/ace/snippets/c_cpp.snippets | 131 + .../ace/lib/ace/snippets/chef.snippets | 204 + .../ace/lib/ace/snippets/cirru.js | 7 + .../ace/lib/ace/snippets/cirru.snippets | 0 .../ace/lib/ace/snippets/clojure.js | 7 + .../ace/lib/ace/snippets/clojure.snippets | 90 + .../ace/lib/ace/snippets/cmake.snippets | 58 + .../ace/lib/ace/snippets/cobol.js | 7 + .../ace/lib/ace/snippets/cobol.snippets | 0 .../ace/lib/ace/snippets/coffee.js | 7 + .../ace/lib/ace/snippets/coffee.snippets | 95 + .../ace/lib/ace/snippets/coldfusion.js | 7 + .../ace/lib/ace/snippets/coldfusion.snippets | 0 .../ace/lib/ace/snippets/cs.snippets | 374 + .../ace/lib/ace/snippets/csharp.js | 7 + .../ace/lib/ace/snippets/csharp.snippets | 0 .../ace/lib/ace/snippets/csound_document.js | 7 + .../lib/ace/snippets/csound_document.snippets | 10 + .../ace/lib/ace/snippets/csound_orchestra.js | 7 + .../ace/snippets/csound_orchestra.snippets | 47 + .../ace/lib/ace/snippets/csound_score.js | 7 + .../lib/ace/snippets/csound_score.snippets | 0 .../node_modules/ace/lib/ace/snippets/css.js | 7 + .../ace/lib/ace/snippets/css.snippets | 6 + .../ace/lib/ace/snippets/curly.js | 7 + .../ace/lib/ace/snippets/curly.snippets | 0 .../node_modules/ace/lib/ace/snippets/d.js | 7 + .../ace/lib/ace/snippets/d.snippets | 0 .../node_modules/ace/lib/ace/snippets/dart.js | 7 + .../ace/lib/ace/snippets/dart.snippets | 83 + .../node_modules/ace/lib/ace/snippets/diff.js | 7 + .../ace/lib/ace/snippets/diff.snippets | 11 + .../ace/lib/ace/snippets/django.js | 7 + .../ace/lib/ace/snippets/django.snippets | 108 + .../ace/lib/ace/snippets/dockerfile.js | 7 + .../ace/lib/ace/snippets/dockerfile.snippets | 0 .../node_modules/ace/lib/ace/snippets/dot.js | 7 + .../ace/lib/ace/snippets/dot.snippets | 0 .../ace/lib/ace/snippets/drools.js | 7 + .../ace/lib/ace/snippets/drools.snippets | 19 + .../ace/lib/ace/snippets/dummy.js | 7 + .../ace/lib/ace/snippets/dummy_syntax.js | 7 + .../ace/lib/ace/snippets/eiffel.js | 7 + .../ace/lib/ace/snippets/eiffel.snippets | 0 .../node_modules/ace/lib/ace/snippets/ejs.js | 7 + .../ace/lib/ace/snippets/ejs.snippets | 0 .../ace/lib/ace/snippets/elixir.js | 7 + .../ace/lib/ace/snippets/elixir.snippets | 0 .../node_modules/ace/lib/ace/snippets/elm.js | 7 + .../ace/lib/ace/snippets/elm.snippets | 0 .../ace/lib/ace/snippets/erlang.js | 7 + .../ace/lib/ace/snippets/erlang.snippets | 160 + .../ace/lib/ace/snippets/eruby.snippets | 113 + .../ace/lib/ace/snippets/falcon.snippets | 71 + .../ace/lib/ace/snippets/forth.js | 7 + .../ace/lib/ace/snippets/forth.snippets | 0 .../ace/lib/ace/snippets/fortran.js | 7 + .../ace/lib/ace/snippets/fortran.snippets | 0 .../node_modules/ace/lib/ace/snippets/ftl.js | 7 + .../ace/lib/ace/snippets/ftl.snippets | 0 .../ace/lib/ace/snippets/gcode.js | 7 + .../ace/lib/ace/snippets/gcode.snippets | 0 .../ace/lib/ace/snippets/gherkin.js | 7 + .../ace/lib/ace/snippets/gherkin.snippets | 0 .../ace/lib/ace/snippets/gitignore.js | 7 + .../ace/lib/ace/snippets/gitignore.snippets | 0 .../node_modules/ace/lib/ace/snippets/glsl.js | 7 + .../ace/lib/ace/snippets/glsl.snippets | 0 .../ace/lib/ace/snippets/go.snippets | 201 + .../ace/lib/ace/snippets/gobstones.js | 7 + .../ace/lib/ace/snippets/gobstones.snippets | 34 + .../ace/lib/ace/snippets/golang.js | 7 + .../ace/lib/ace/snippets/golang.snippets | 0 .../ace/lib/ace/snippets/graphqlschema.js | 7 + .../lib/ace/snippets/graphqlschema.snippets | 32 + .../ace/lib/ace/snippets/groovy.js | 7 + .../ace/lib/ace/snippets/groovy.snippets | 0 .../node_modules/ace/lib/ace/snippets/haml.js | 7 + .../ace/lib/ace/snippets/haml.snippets | 20 + .../ace/lib/ace/snippets/handlebars.js | 7 + .../ace/lib/ace/snippets/handlebars.snippets | 0 .../ace/lib/ace/snippets/haskell.js | 7 + .../ace/lib/ace/snippets/haskell.snippets | 82 + .../ace/lib/ace/snippets/haskell_cabal.js | 7 + .../lib/ace/snippets/haskell_cabal.snippets | 0 .../node_modules/ace/lib/ace/snippets/haxe.js | 7 + .../ace/lib/ace/snippets/haxe.snippets | 0 .../ace/lib/ace/snippets/hjson.js | 7 + .../ace/lib/ace/snippets/hjson.snippets | 0 .../node_modules/ace/lib/ace/snippets/html.js | 7 + .../ace/lib/ace/snippets/html.snippets | 49 + .../ace/lib/ace/snippets/html_elixir.js | 7 + .../ace/lib/ace/snippets/html_elixir.snippets | 0 .../ace/lib/ace/snippets/html_ruby.js | 7 + .../ace/lib/ace/snippets/html_ruby.snippets | 0 .../ace/lib/ace/snippets/htmldjango.snippets | 136 + .../ace/lib/ace/snippets/htmltornado.snippets | 55 + .../node_modules/ace/lib/ace/snippets/ini.js | 7 + .../ace/lib/ace/snippets/ini.snippets | 0 .../node_modules/ace/lib/ace/snippets/io.js | 69 + .../ace/lib/ace/snippets/io.snippets | 0 .../node_modules/ace/lib/ace/snippets/jack.js | 7 + .../ace/lib/ace/snippets/jack.snippets | 0 .../node_modules/ace/lib/ace/snippets/jade.js | 7 + .../ace/lib/ace/snippets/jade.snippets | 0 .../node_modules/ace/lib/ace/snippets/java.js | 7 + .../ace/lib/ace/snippets/java.snippets | 240 + .../ace/snippets/javascript-jquery.snippets | 589 + .../ace/lib/ace/snippets/javascript.js | 7 + .../ace/lib/ace/snippets/javascript.snippets | 195 + .../node_modules/ace/lib/ace/snippets/json.js | 7 + .../ace/lib/ace/snippets/json.snippets | 0 .../ace/lib/ace/snippets/jsoniq.js | 7 + .../ace/lib/ace/snippets/jsoniq.snippets | 61 + .../node_modules/ace/lib/ace/snippets/jsp.js | 7 + .../ace/lib/ace/snippets/jsp.snippets | 99 + .../node_modules/ace/lib/ace/snippets/jssm.js | 7 + .../ace/lib/ace/snippets/jssm.snippets | 0 .../node_modules/ace/lib/ace/snippets/jsx.js | 7 + .../ace/lib/ace/snippets/jsx.snippets | 0 .../ace/lib/ace/snippets/julia.js | 7 + .../ace/lib/ace/snippets/julia.snippets | 0 .../ace/lib/ace/snippets/kotlin.js | 7 + .../ace/lib/ace/snippets/kotlin.snippets | 0 .../ace/lib/ace/snippets/latex.js | 7 + .../ace/lib/ace/snippets/latex.snippets | 0 .../ace/lib/ace/snippets/ledger.snippets | 5 + .../node_modules/ace/lib/ace/snippets/less.js | 7 + .../ace/lib/ace/snippets/less.snippets | 0 .../ace/lib/ace/snippets/liquid.js | 7 + .../ace/lib/ace/snippets/liquid.snippets | 0 .../node_modules/ace/lib/ace/snippets/lisp.js | 7 + .../ace/lib/ace/snippets/lisp.snippets | 0 .../ace/lib/ace/snippets/livescript.js | 7 + .../ace/lib/ace/snippets/livescript.snippets | 0 .../ace/lib/ace/snippets/logiql.js | 7 + .../ace/lib/ace/snippets/logiql.snippets | 0 .../node_modules/ace/lib/ace/snippets/lsl.js | 7 + .../ace/lib/ace/snippets/lsl.snippets | 1232 + .../node_modules/ace/lib/ace/snippets/lua.js | 7 + .../ace/lib/ace/snippets/lua.snippets | 21 + .../ace/lib/ace/snippets/luapage.js | 7 + .../ace/lib/ace/snippets/luapage.snippets | 0 .../ace/lib/ace/snippets/lucene.js | 7 + .../ace/lib/ace/snippets/lucene.snippets | 0 .../ace/lib/ace/snippets/makefile.js | 7 + .../ace/lib/ace/snippets/makefile.snippets | 4 + .../ace/lib/ace/snippets/mako.snippets | 54 + .../ace/lib/ace/snippets/markdown.js | 7 + .../ace/lib/ace/snippets/markdown.snippets | 88 + .../node_modules/ace/lib/ace/snippets/mask.js | 7 + .../ace/lib/ace/snippets/mask.snippets | 0 .../ace/lib/ace/snippets/matlab.js | 7 + .../ace/lib/ace/snippets/matlab.snippets | 0 .../node_modules/ace/lib/ace/snippets/maze.js | 7 + .../ace/lib/ace/snippets/maze.snippets | 9 + .../node_modules/ace/lib/ace/snippets/mel.js | 7 + .../ace/lib/ace/snippets/mel.snippets | 0 .../ace/lib/ace/snippets/mushcode.js | 7 + .../ace/lib/ace/snippets/mushcode.snippets | 0 .../lib/ace/snippets/mushcode_high_rules.js | 7 + .../ace/snippets/mushcode_high_rules.snippets | 0 .../ace/lib/ace/snippets/mysql.js | 7 + .../ace/lib/ace/snippets/mysql.snippets | 0 .../node_modules/ace/lib/ace/snippets/nix.js | 7 + .../ace/lib/ace/snippets/nix.snippets | 0 .../node_modules/ace/lib/ace/snippets/nsis.js | 7 + .../ace/lib/ace/snippets/nsis.snippets | 0 .../ace/lib/ace/snippets/objc.snippets | 247 + .../ace/lib/ace/snippets/objectivec.js | 7 + .../ace/lib/ace/snippets/objectivec.snippets | 0 .../ace/lib/ace/snippets/ocaml.js | 7 + .../ace/lib/ace/snippets/ocaml.snippets | 0 .../ace/lib/ace/snippets/pascal.js | 7 + .../ace/lib/ace/snippets/pascal.snippets | 0 .../node_modules/ace/lib/ace/snippets/perl.js | 7 + .../ace/lib/ace/snippets/perl.snippets | 347 + .../ace/lib/ace/snippets/pgsql.js | 7 + .../ace/lib/ace/snippets/pgsql.snippets | 0 .../node_modules/ace/lib/ace/snippets/php.js | 7 + .../ace/lib/ace/snippets/php.snippets | 377 + .../node_modules/ace/lib/ace/snippets/pig.js | 7 + .../ace/lib/ace/snippets/pig.snippets | 0 .../ace/lib/ace/snippets/plain_text.js | 7 + .../ace/lib/ace/snippets/plain_text.snippets | 0 .../ace/lib/ace/snippets/powershell.js | 7 + .../ace/lib/ace/snippets/powershell.snippets | 0 .../ace/lib/ace/snippets/praat.js | 7 + .../ace/lib/ace/snippets/praat.snippets | 0 .../ace/lib/ace/snippets/prolog.js | 7 + .../ace/lib/ace/snippets/prolog.snippets | 0 .../ace/lib/ace/snippets/properties.js | 7 + .../ace/lib/ace/snippets/properties.snippets | 0 .../ace/lib/ace/snippets/protobuf.js | 7 + .../ace/lib/ace/snippets/protobuf.snippets | 0 .../ace/lib/ace/snippets/python.js | 7 + .../ace/lib/ace/snippets/python.snippets | 158 + .../node_modules/ace/lib/ace/snippets/r.js | 7 + .../ace/lib/ace/snippets/r.snippets | 121 + .../ace/lib/ace/snippets/razor.js | 7 + .../ace/lib/ace/snippets/razor.snippets | 4 + .../node_modules/ace/lib/ace/snippets/rdoc.js | 7 + .../ace/lib/ace/snippets/rdoc.snippets | 0 .../node_modules/ace/lib/ace/snippets/red.js | 7 + .../ace/lib/ace/snippets/red.snippets | 1 + .../ace/lib/ace/snippets/rhtml.js | 7 + .../ace/lib/ace/snippets/rhtml.snippets | 0 .../node_modules/ace/lib/ace/snippets/rst.js | 7 + .../ace/lib/ace/snippets/rst.snippets | 22 + .../node_modules/ace/lib/ace/snippets/ruby.js | 7 + .../ace/lib/ace/snippets/ruby.snippets | 928 + .../node_modules/ace/lib/ace/snippets/rust.js | 7 + .../ace/lib/ace/snippets/rust.snippets | 0 .../node_modules/ace/lib/ace/snippets/sass.js | 7 + .../ace/lib/ace/snippets/sass.snippets | 0 .../node_modules/ace/lib/ace/snippets/scad.js | 7 + .../ace/lib/ace/snippets/scad.snippets | 0 .../ace/lib/ace/snippets/scala.js | 7 + .../ace/lib/ace/snippets/scala.snippets | 0 .../ace/lib/ace/snippets/scheme.js | 7 + .../ace/lib/ace/snippets/scheme.snippets | 0 .../node_modules/ace/lib/ace/snippets/scss.js | 7 + .../ace/lib/ace/snippets/scss.snippets | 0 .../node_modules/ace/lib/ace/snippets/sh.js | 7 + .../ace/lib/ace/snippets/sh.snippets | 83 + .../node_modules/ace/lib/ace/snippets/sjs.js | 7 + .../ace/lib/ace/snippets/sjs.snippets | 0 .../ace/lib/ace/snippets/smarty.js | 7 + .../ace/lib/ace/snippets/smarty.snippets | 0 .../ace/lib/ace/snippets/snippets.js | 7 + .../ace/lib/ace/snippets/snippets.snippets | 9 + .../ace/lib/ace/snippets/soy_template.js | 7 + .../lib/ace/snippets/soy_template.snippets | 0 .../ace/lib/ace/snippets/space.js | 7 + .../ace/lib/ace/snippets/space.snippets | 0 .../ace/lib/ace/snippets/sparql.js | 7 + .../ace/lib/ace/snippets/sparql.snippets | 0 .../node_modules/ace/lib/ace/snippets/sql.js | 7 + .../ace/lib/ace/snippets/sql.snippets | 26 + .../ace/lib/ace/snippets/sqlserver.js | 7 + .../ace/lib/ace/snippets/sqlserver.snippets | 70 + .../ace/lib/ace/snippets/stylus.js | 7 + .../ace/lib/ace/snippets/stylus.snippets | 0 .../node_modules/ace/lib/ace/snippets/svg.js | 7 + .../ace/lib/ace/snippets/svg.snippets | 0 .../ace/lib/ace/snippets/swift.js | 7 + .../ace/lib/ace/snippets/swift.snippets | 0 .../node_modules/ace/lib/ace/snippets/tcl.js | 7 + .../ace/lib/ace/snippets/tcl.snippets | 92 + .../node_modules/ace/lib/ace/snippets/tex.js | 7 + .../ace/lib/ace/snippets/tex.snippets | 191 + .../node_modules/ace/lib/ace/snippets/text.js | 7 + .../ace/lib/ace/snippets/text.snippets | 0 .../ace/lib/ace/snippets/textile.js | 7 + .../ace/lib/ace/snippets/textile.snippets | 30 + .../ace/lib/ace/snippets/tmsnippet.snippets | 0 .../node_modules/ace/lib/ace/snippets/toml.js | 7 + .../ace/lib/ace/snippets/toml.snippets | 0 .../node_modules/ace/lib/ace/snippets/tsx.js | 7 + .../ace/lib/ace/snippets/tsx.snippets | 0 .../ace/lib/ace/snippets/turtle.js | 7 + .../ace/lib/ace/snippets/turtle.snippets | 0 .../node_modules/ace/lib/ace/snippets/twig.js | 7 + .../ace/lib/ace/snippets/twig.snippets | 0 .../ace/lib/ace/snippets/typescript.js | 7 + .../ace/lib/ace/snippets/typescript.snippets | 0 .../node_modules/ace/lib/ace/snippets/vala.js | 195 + .../ace/lib/ace/snippets/vala.snippets | 0 .../ace/lib/ace/snippets/vbscript.js | 7 + .../ace/lib/ace/snippets/vbscript.snippets | 0 .../ace/lib/ace/snippets/velocity.js | 8 + .../ace/lib/ace/snippets/velocity.snippets | 28 + .../ace/lib/ace/snippets/verilog.js | 7 + .../ace/lib/ace/snippets/verilog.snippets | 0 .../node_modules/ace/lib/ace/snippets/vhdl.js | 7 + .../ace/lib/ace/snippets/vhdl.snippets | 0 .../ace/lib/ace/snippets/wollok.js | 7 + .../ace/lib/ace/snippets/wollok.snippets | 85 + .../node_modules/ace/lib/ace/snippets/xml.js | 7 + .../ace/lib/ace/snippets/xml.snippets | 0 .../ace/lib/ace/snippets/xquery.js | 7 + .../ace/lib/ace/snippets/xquery.snippets | 61 + .../ace/lib/ace/snippets/xslt.snippets | 97 + .../node_modules/ace/lib/ace/snippets/yaml.js | 7 + .../ace/lib/ace/snippets/yaml.snippets | 0 .../node_modules/ace/lib/ace/snippets_test.js | 137 + plugins/node_modules/ace/lib/ace/split.js | 326 + .../ace/lib/ace/theme/ambiance.css | 216 + .../ace/lib/ace/theme/ambiance.js | 33 + .../node_modules/ace/lib/ace/theme/chaos.css | 154 + .../node_modules/ace/lib/ace/theme/chaos.js | 33 + .../node_modules/ace/lib/ace/theme/chrome.css | 154 + .../node_modules/ace/lib/ace/theme/chrome.js | 39 + .../ace/lib/ace/theme/cloud9_day.css | 154 + .../ace/lib/ace/theme/cloud9_day.js | 40 + .../ace/lib/ace/theme/cloud9_night.css | 140 + .../ace/lib/ace/theme/cloud9_night.js | 39 + .../lib/ace/theme/cloud9_night_low_color.css | 129 + .../lib/ace/theme/cloud9_night_low_color.js | 39 + .../node_modules/ace/lib/ace/theme/clouds.css | 111 + .../node_modules/ace/lib/ace/theme/clouds.js | 39 + .../ace/lib/ace/theme/clouds_midnight.css | 112 + .../ace/lib/ace/theme/clouds_midnight.js | 39 + .../node_modules/ace/lib/ace/theme/cobalt.css | 133 + .../node_modules/ace/lib/ace/theme/cobalt.js | 39 + .../ace/lib/ace/theme/crimson_editor.css | 143 + .../ace/lib/ace/theme/crimson_editor.js | 39 + .../node_modules/ace/lib/ace/theme/dawn.css | 126 + .../node_modules/ace/lib/ace/theme/dawn.js | 39 + .../ace/lib/ace/theme/dracula.css | 153 + .../node_modules/ace/lib/ace/theme/dracula.js | 39 + .../ace/lib/ace/theme/dreamweaver.css | 176 + .../ace/lib/ace/theme/dreamweaver.js | 38 + .../ace/lib/ace/theme/eclipse.css | 113 + .../node_modules/ace/lib/ace/theme/eclipse.js | 41 + .../node_modules/ace/lib/ace/theme/github.css | 124 + .../node_modules/ace/lib/ace/theme/github.js | 39 + .../node_modules/ace/lib/ace/theme/gob.css | 130 + plugins/node_modules/ace/lib/ace/theme/gob.js | 39 + .../ace/lib/ace/theme/gruvbox.css | 95 + .../node_modules/ace/lib/ace/theme/gruvbox.js | 33 + .../ace/lib/ace/theme/idle_fingers.css | 112 + .../ace/lib/ace/theme/idle_fingers.js | 39 + .../ace/lib/ace/theme/iplastic.css | 140 + .../ace/lib/ace/theme/iplastic.js | 40 + .../ace/lib/ace/theme/katzenmilch.css | 143 + .../ace/lib/ace/theme/katzenmilch.js | 39 + .../ace/lib/ace/theme/kr_theme.css | 123 + .../ace/lib/ace/theme/kr_theme.js | 39 + .../node_modules/ace/lib/ace/theme/kuroir.css | 70 + .../node_modules/ace/lib/ace/theme/kuroir.js | 39 + .../ace/lib/ace/theme/merbivore.css | 109 + .../ace/lib/ace/theme/merbivore.js | 39 + .../ace/lib/ace/theme/merbivore_soft.css | 110 + .../ace/lib/ace/theme/merbivore_soft.js | 39 + .../ace/lib/ace/theme/mono_industrial.css | 125 + .../ace/lib/ace/theme/mono_industrial.js | 39 + .../ace/lib/ace/theme/monokai.css | 121 + .../node_modules/ace/lib/ace/theme/monokai.js | 39 + .../ace/lib/ace/theme/pastel_on_dark.css | 128 + .../ace/lib/ace/theme/pastel_on_dark.js | 39 + .../ace/lib/ace/theme/solarized_dark.css | 100 + .../ace/lib/ace/theme/solarized_dark.js | 39 + .../ace/lib/ace/theme/solarized_light.css | 105 + .../ace/lib/ace/theme/solarized_light.js | 39 + .../ace/lib/ace/theme/sqlserver.css | 167 + .../ace/lib/ace/theme/sqlserver.js | 39 + .../ace/lib/ace/theme/terminal.css | 131 + .../ace/lib/ace/theme/terminal.js | 39 + .../ace/lib/ace/theme/textmate.css | 154 + .../ace/lib/ace/theme/textmate.js | 40 + .../ace/lib/ace/theme/tomorrow.css | 124 + .../ace/lib/ace/theme/tomorrow.js | 39 + .../ace/lib/ace/theme/tomorrow_night.css | 124 + .../ace/lib/ace/theme/tomorrow_night.js | 39 + .../ace/lib/ace/theme/tomorrow_night_blue.css | 121 + .../ace/lib/ace/theme/tomorrow_night_blue.js | 39 + .../lib/ace/theme/tomorrow_night_bright.css | 140 + .../lib/ace/theme/tomorrow_night_bright.js | 39 + .../lib/ace/theme/tomorrow_night_eighties.css | 124 + .../lib/ace/theme/tomorrow_night_eighties.js | 39 + .../ace/lib/ace/theme/twilight.css | 127 + .../ace/lib/ace/theme/twilight.js | 39 + .../ace/lib/ace/theme/vibrant_ink.css | 109 + .../ace/lib/ace/theme/vibrant_ink.js | 39 + .../node_modules/ace/lib/ace/theme/xcode.css | 102 + .../node_modules/ace/lib/ace/theme/xcode.js | 39 + .../ace/lib/ace/token_iterator.js | 168 + .../ace/lib/ace/token_iterator_test.js | 212 + plugins/node_modules/ace/lib/ace/tokenizer.js | 369 + .../node_modules/ace/lib/ace/tokenizer_dev.js | 185 + .../ace/lib/ace/tokenizer_test.js | 97 + plugins/node_modules/ace/lib/ace/tooltip.js | 145 + .../node_modules/ace/lib/ace/undomanager.js | 589 + .../ace/lib/ace/undomanager_test.js | 111 + plugins/node_modules/ace/lib/ace/unicode.js | 17 + .../ace/lib/ace/virtual_renderer.js | 1775 + .../ace/lib/ace/virtual_renderer_test.js | 113 + .../node_modules/ace/lib/ace/worker/mirror.js | 75 + .../node_modules/ace/lib/ace/worker/worker.js | 218 + .../ace/lib/ace/worker/worker_client.js | 257 + .../ace/lib/ace/worker/worker_test.js | 125 + plugins/node_modules/ace/package.json | 37 + plugins/node_modules/ace/static.js | 113 + plugins/node_modules/ace/static.py | 298 + plugins/node_modules/ace/tool/add_mode.js | 115 + plugins/node_modules/ace/tool/lib.js | 182 + .../node_modules/ace/tool/mode_creator.html | 101 + plugins/node_modules/ace/tool/mode_creator.js | 260 + plugins/node_modules/ace/tool/package.json | 15 + plugins/node_modules/ace/tool/perf-test.html | 417 + .../node_modules/ace/tool/regexp_tokenizer.js | 114 + .../ace/tool/regexp_tokenizer_test.js | 30 + plugins/node_modules/ace/tool/release.sh | 119 + .../ace/tool/templates/dummy.JSON-tmLanguage | 45 + .../ace/tool/templates/highlight_rules.js | 58 + .../node_modules/ace/tool/templates/mode.js | 58 + .../ace/tool/templates/snippets.js | 7 + .../node_modules/ace/tool/templates/theme.css | 60 + .../node_modules/ace/tool/templates/theme.js | 39 + plugins/node_modules/ace/tool/tmlanguage.js | 697 + plugins/node_modules/ace/tool/tmsnippets.js | 82 + plugins/node_modules/ace/tool/tmtheme.js | 430 + .../ace/tool/tmthemes/Active4D.tmTheme | 407 + .../ace/tool/tmthemes/All Hallows Eve.tmTheme | 277 + .../ace/tool/tmthemes/Amy.tmTheme | 557 + .../ace/tool/tmthemes/Blackboard.tmTheme | 350 + .../tool/tmthemes/Brilliance Black.tmTheme | 2619 + .../ace/tool/tmthemes/Brilliance Dull.tmTheme | 2243 + .../ace/tool/tmthemes/Chrome DevTools.tmTheme | 294 + .../ace/tool/tmthemes/Clouds Midnight.tmTheme | 361 + .../ace/tool/tmthemes/Clouds.tmTheme | 348 + .../ace/tool/tmthemes/Cobalt.tmTheme | 559 + .../ace/tool/tmthemes/Dawn.tmTheme | 437 + .../ace/tool/tmthemes/Dreamweaver.tmTheme | 521 + .../ace/tool/tmthemes/Eiffel.tmTheme | 439 + .../ace/tool/tmthemes/Espresso Libre.tmTheme | 402 + .../ace/tool/tmthemes/GitHub.tmTheme | 573 + .../ace/tool/tmthemes/IDLE.tmTheme | 235 + .../ace/tool/tmthemes/Katzenmilch.tmTheme | 399 + .../ace/tool/tmthemes/Kuroir Theme.tmTheme | 916 + .../ace/tool/tmthemes/LAZY.tmTheme | 291 + .../node_modules/ace/tool/tmthemes/LICENSE | 8 + .../ace/tool/tmthemes/MagicWB (Amiga).tmTheme | 376 + .../ace/tool/tmthemes/Merbivore Soft.tmTheme | 322 + .../ace/tool/tmthemes/Merbivore.tmTheme | 296 + .../ace/tool/tmthemes/Monokai.tmTheme | 387 + .../ace/tool/tmthemes/Pastels on Dark.tmTheme | 727 + .../tool/tmthemes/Slush and Poppies.tmTheme | 336 + .../ace/tool/tmthemes/Solarized-dark.tmTheme | 312 + .../ace/tool/tmthemes/Solarized-light.tmTheme | 305 + .../ace/tool/tmthemes/SpaceCadet.tmTheme | 212 + .../ace/tool/tmthemes/Sunburst.tmTheme | 665 + .../tmthemes/Textmate (Mac Classic).tmTheme | 450 + .../tool/tmthemes/Tomorrow-Night-Blue.tmTheme | 186 + .../tmthemes/Tomorrow-Night-Bright.tmTheme | 186 + .../tmthemes/Tomorrow-Night-Eighties.tmTheme | 186 + .../ace/tool/tmthemes/Tomorrow-Night.tmTheme | 186 + .../ace/tool/tmthemes/Tomorrow.tmTheme | 186 + .../ace/tool/tmthemes/Twilight.tmTheme | 527 + .../ace/tool/tmthemes/Vibrant Ink.tmTheme | 460 + .../ace/tool/tmthemes/Xcode_default.tmTheme | 240 + .../ace/tool/tmthemes/Zenburnesque.tmTheme | 343 + .../ace/tool/tmthemes/iPlastic.tmTheme | 286 + .../ace/tool/tmthemes/idleFingers.tmTheme | 393 + .../ace/tool/tmthemes/krTheme.tmTheme | 551 + .../ace/tool/tmthemes/monoindustrial.tmTheme | 451 + plugins/node_modules/ace/tool/update_deps.js | 307 + .../ace/tool/wrap_keyword_regexp.js | 21 + plugins/node_modules/ace/version.js | 4 + plugins/node_modules/ace_tree/LICENSE | 15 + plugins/node_modules/ace_tree/demo.html | 25 + plugins/node_modules/ace_tree/demo/demo.js | 117 + plugins/node_modules/ace_tree/demo/layout.js | 134 + plugins/node_modules/ace_tree/demo/styles.css | 75 + plugins/node_modules/ace_tree/demo/util.js | 238 + .../ace_tree/lib/ace_tree/anchor.js | 242 + .../lib/ace_tree/commands/default_commands.js | 159 + .../ace_tree/lib/ace_tree/config.js | 134 + .../ace_tree/lib/ace_tree/config_test.js | 118 + .../ace_tree/lib/ace_tree/css/light_theme.css | 75 + .../ace_tree/lib/ace_tree/css/light_theme.js | 33 + .../ace_tree/lib/ace_tree/css/tree.css | 190 + .../lib/ace_tree/css/tree_background.png | Bin 0 -> 3676 bytes .../ace_tree/css/tree_close_arrow_small.png | Bin 0 -> 3077 bytes .../ace_tree/lib/ace_tree/data_provider.js | 477 + .../lib/ace_tree/data_provider_mirror.js | 71 + .../lib/ace_tree/data_provider_test.js | 96 + .../ace_tree/lib/ace_tree/edit.js | 407 + .../ace_tree/lib/ace_tree/filter.js | 140 + .../ace_tree/lib/ace_tree/layer/cells.js | 200 + .../ace_tree/lib/ace_tree/layer/heading.js | 195 + .../ace_tree/lib/ace_tree/layer/markers.js | 153 + .../ace_tree/lib/ace_tree/lib/btree.js | 501 + .../ace_tree/lib/ace_tree/lib/btree_test.js | 266 + .../ace_tree/lib/ace_tree/list_data.js | 90 + .../lib/ace_tree/mouse/default_handlers.js | 265 + .../lib/ace_tree/mouse/drag_handler.js | 298 + .../lib/ace_tree/mouse/heading_handler.js | 74 + .../lib/ace_tree/mouse/mouse_event.js | 129 + .../lib/ace_tree/mouse/mouse_handler.js | 144 + .../ace_tree/lib/ace_tree/quicksearch.js | 40 + .../ace_tree/lib/ace_tree/scrollable.js | 45 + .../ace_tree/lib/ace_tree/selection.js | 269 + .../ace_tree/lib/ace_tree/selection_test.js | 465 + .../ace_tree/lib/ace_tree/tooltip.js | 105 + .../ace_tree/lib/ace_tree/tree.js | 727 + .../ace_tree/lib/ace_tree/undomanager.js | 135 + .../ace_tree/lib/ace_tree/virtual_renderer.js | 1204 + .../lib/ace_tree/virtual_renderer_test.js | 86 + plugins/node_modules/ace_tree/list.txt | 1318 + plugins/node_modules/ace_tree/list_demo.html | 71 + plugins/node_modules/ace_tree/package.json | 6 + .../node_modules}/architect-build/LICENSE | 0 .../node_modules}/architect-build/build.js | 0 .../build_support/mini_require.js | 0 .../build_support/node_require.js | 0 .../node_modules}/architect-build/compress.js | 0 .../architect-build/compress_folder.js | 0 .../node_modules}/architect-build/copy.js | 0 .../architect-build/module-deps.js | 0 .../architect-build/npm_build.js | 0 .../architect-build/npm_freeze.js | 0 .../architect-build/package.json | 0 .../node_modules}/vfs-child/LICENSE | 0 .../node_modules}/vfs-child/child.js | 0 .../node_modules}/vfs-child/package.json | 0 .../node_modules}/vfs-child/parent.js | 2 +- .../node_modules}/vfs-http-adapter/LICENSE | 0 .../vfs-http-adapter/multipart.js | 0 .../vfs-http-adapter/package.json | 0 .../node_modules}/vfs-http-adapter/restful.js | 0 .../vfs-http-adapter/test-multipart.js | 0 plugins/node_modules/vfs-lint/lint.js | 73 + plugins/node_modules/vfs-lint/package.json | 15 + .../node_modules}/vfs-local/LICENSE | 0 .../node_modules}/vfs-local/localfs.js | 0 .../node_modules}/vfs-local/package.json | 0 .../node_modules/vfs-nodefs-adapter}/LICENSE | 0 .../node_modules/vfs-nodefs-adapter/nodefs.js | 233 + .../vfs-nodefs-adapter/package.json | 21 + plugins/node_modules/vfs-socket/LICENSE | 21 + .../node_modules}/vfs-socket/component.json | 0 .../node_modules}/vfs-socket/consumer.js | 0 .../node_modules}/vfs-socket/package.json | 0 .../node_modules}/vfs-socket/worker.js | 0 version | 2 +- 1607 files changed, 369104 insertions(+), 1009 deletions(-) create mode 100644 node_modules/less/node_modules/request/node_modules/combined-stream/lib/defer.js create mode 100644 plugins/c9.ide.server/ide-statics.js delete mode 100644 plugins/c9.ide.server/plugins.js create mode 100644 plugins/node_modules/ace/.gitmodules create mode 100644 plugins/node_modules/ace/CNAME create mode 100644 plugins/node_modules/ace/CONTRIBUTING.md create mode 100644 plugins/node_modules/ace/ChangeLog.txt create mode 100644 plugins/node_modules/ace/LICENSE create mode 100644 plugins/node_modules/ace/Makefile create mode 100644 plugins/node_modules/ace/Makefile.dryice.js create mode 100644 plugins/node_modules/ace/build_support/bookmarklet.html create mode 100644 plugins/node_modules/ace/build_support/editor.html create mode 100644 plugins/node_modules/ace/build_support/mini_require.js create mode 100644 plugins/node_modules/ace/build_support/style.css create mode 100644 plugins/node_modules/ace/demo/autocompletion.html create mode 100644 plugins/node_modules/ace/demo/autoresize.html create mode 100644 plugins/node_modules/ace/demo/chromevox.html create mode 100644 plugins/node_modules/ace/demo/emmet.html create mode 100644 plugins/node_modules/ace/demo/ie7.html create mode 100644 plugins/node_modules/ace/demo/keyboard_shortcuts.html create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/demo.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/dev_util.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/doclist.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/Dockerfile create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/Haxe.hx create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/Jack.jack create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/Makefile create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/Nix.nix create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/abap.abap create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/abc.abc create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/actionscript.as create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/ada.ada create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/asciidoc.asciidoc create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/assembly_x86.asm create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/autohotkey.ahk create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/batchfile.bat create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/c9search.c9search_results create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/c_cpp.cpp create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/cirru.cirru create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/clojure.clj create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/cobol.CBL create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/coffee.coffee create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/coldfusion.cfm create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/csharp.cs create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/css.css create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/curly.curly create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/d.d create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/dart.dart create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/diff.diff create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/dot.dot create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/eiffel.e create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/ejs.ejs create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/elixir.ex create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/elm.elm create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/erlang.erl create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/forth.frt create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/ftl.ftl create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/gcode.gcode create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/gherkin.feature create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/glsl.glsl create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/golang.go create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/groovy.groovy create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/haml.haml create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/handlebars.hbs create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/haskell.hs create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/htaccess create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/html.html create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/html_ruby.erb create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/ini.ini create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/io.io create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/jade.jade create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/java.java create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/javascript.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/json.json create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/jsoniq.jq create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/jsp.jsp create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/jsx.jsx create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/julia.jl create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/latex.tex create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/lean.lean create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/less.less create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/liquid.liquid create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/lisp.lisp create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/livescript.ls create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/logiql.logic create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/lsl.lsl create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/lua.lua create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/luapage.lp create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/lucene.lucene create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/markdown.md create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/mask.mask create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/matlab.matlab create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/maze.mz create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/mel.mel create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/mushcode.mc create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/mysql.mysql create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/objectivec.m create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/ocaml.ml create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/pascal.pas create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/perl.pl create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/pgsql.pgsql create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/php.php create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/plaintext.txt create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/powershell.ps1 create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/praat.praat create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/prolog.plg create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/properties.properties create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/protobuf.proto create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/python.py create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/r.r create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/rdoc.Rd create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/rhtml.Rhtml create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/ruby.rb create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/rust.rs create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/sass.sass create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/scad.scad create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/scala.scala create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/scheme.scm create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/scss.scss create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/sh.sh create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/sjs.sjs create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/smarty.smarty create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/snippets.snippets create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/soy_template.soy create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/space.space create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/sql.sql create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/sqlserver.sqlserver create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/stylus.styl create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/svg.svg create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/swift.swift create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/tcl.tcl create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/tex.tex create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/textile.textile create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/toml.toml create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/twig.twig create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/typescript.ts create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/vala.vala create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/vbscript.vbs create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/velocity.vm create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/verilog.v create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/vhdl.vhd create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/xml.xml create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/xquery.xq create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/docs/yaml.yaml create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/file_drop.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/icons/epl.html create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/icons/error_obj.gif create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/icons/warning_obj.gif create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/inline_editor.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/layout.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/logo.png create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/require.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/styles.css create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/token_tooltip.js create mode 100644 plugins/node_modules/ace/demo/kitchen-sink/util.js create mode 100644 plugins/node_modules/ace/demo/modelist.html create mode 100644 plugins/node_modules/ace/demo/r.js/build.js create mode 100644 plugins/node_modules/ace/demo/r.js/editor.html create mode 100644 plugins/node_modules/ace/demo/requirejs+build.html create mode 100644 plugins/node_modules/ace/demo/scrollable-page.html create mode 100644 plugins/node_modules/ace/demo/settings_menu.html create mode 100644 plugins/node_modules/ace/demo/show_own_source.js create mode 100644 plugins/node_modules/ace/demo/static-highlighter.html create mode 100644 plugins/node_modules/ace/demo/static-highlighter/client.html create mode 100644 plugins/node_modules/ace/demo/static-highlighter/server.js create mode 100644 plugins/node_modules/ace/demo/statusbar.html create mode 100644 plugins/node_modules/ace/demo/svg.svg create mode 100644 plugins/node_modules/ace/demo/xml.xml create mode 100644 plugins/node_modules/ace/doc/site/images/ace-logo.png create mode 100644 plugins/node_modules/ace/experiments/animate_folding.html create mode 100644 plugins/node_modules/ace/experiments/basic_animation.html create mode 100644 plugins/node_modules/ace/experiments/capture.html create mode 100644 plugins/node_modules/ace/experiments/cut_copy.html create mode 100644 plugins/node_modules/ace/experiments/debug_mem_leak.html create mode 100644 plugins/node_modules/ace/experiments/triple_click.html create mode 100644 plugins/node_modules/ace/experiments/worker.html create mode 100644 plugins/node_modules/ace/experiments/worker.js create mode 100644 plugins/node_modules/ace/experiments/zenbg.png create mode 100644 plugins/node_modules/ace/index.html create mode 100644 plugins/node_modules/ace/kitchen-sink.html create mode 100644 plugins/node_modules/ace/lib/ace/ace.js create mode 100644 plugins/node_modules/ace/lib/ace/anchor.js create mode 100644 plugins/node_modules/ace/lib/ace/anchor_test.js create mode 100644 plugins/node_modules/ace/lib/ace/apply_delta.js create mode 100644 plugins/node_modules/ace/lib/ace/autocomplete.js create mode 100644 plugins/node_modules/ace/lib/ace/autocomplete/popup.js create mode 100644 plugins/node_modules/ace/lib/ace/autocomplete/text_completer.js create mode 100644 plugins/node_modules/ace/lib/ace/autocomplete/util.js create mode 100644 plugins/node_modules/ace/lib/ace/background_tokenizer.js create mode 100644 plugins/node_modules/ace/lib/ace/background_tokenizer_test.js create mode 100644 plugins/node_modules/ace/lib/ace/bidihandler.js create mode 100644 plugins/node_modules/ace/lib/ace/clipboard.js create mode 100644 plugins/node_modules/ace/lib/ace/commands/command_manager.js create mode 100644 plugins/node_modules/ace/lib/ace/commands/command_manager_test.js create mode 100644 plugins/node_modules/ace/lib/ace/commands/default_commands.js create mode 100644 plugins/node_modules/ace/lib/ace/commands/incremental_search_commands.js create mode 100644 plugins/node_modules/ace/lib/ace/commands/multi_select_commands.js create mode 100644 plugins/node_modules/ace/lib/ace/commands/occur_commands.js create mode 100644 plugins/node_modules/ace/lib/ace/config.js create mode 100644 plugins/node_modules/ace/lib/ace/config_test.js create mode 100644 plugins/node_modules/ace/lib/ace/css/codefolding-fold-button-states.png create mode 100644 plugins/node_modules/ace/lib/ace/css/editor.css create mode 100644 plugins/node_modules/ace/lib/ace/css/expand-marker.png create mode 100644 plugins/node_modules/ace/lib/ace/document.js create mode 100644 plugins/node_modules/ace/lib/ace/document_test.js create mode 100644 plugins/node_modules/ace/lib/ace/edit_session.js create mode 100644 plugins/node_modules/ace/lib/ace/edit_session/bracket_match.js create mode 100644 plugins/node_modules/ace/lib/ace/edit_session/fold.js create mode 100644 plugins/node_modules/ace/lib/ace/edit_session/fold_line.js create mode 100644 plugins/node_modules/ace/lib/ace/edit_session/folding.js create mode 100644 plugins/node_modules/ace/lib/ace/edit_session_test.js create mode 100644 plugins/node_modules/ace/lib/ace/editor.js create mode 100644 plugins/node_modules/ace/lib/ace/editor_change_document_test.js create mode 100644 plugins/node_modules/ace/lib/ace/editor_highlight_selected_word_test.js create mode 100644 plugins/node_modules/ace/lib/ace/editor_navigation_test.js create mode 100644 plugins/node_modules/ace/lib/ace/editor_text_edit_test.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/beautify.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/beautify/php_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/chromevox.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/elastic_tabstops_lite.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/emmet.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/error_marker.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/keybinding_menu.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/language_tools.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/linking.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/menu_tools/add_editor_menu_options.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/menu_tools/element_generator.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/menu_tools/generate_settings_menu.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/menu_tools/get_set_functions.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/menu_tools/overlay_page.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/menu_tools/settings_menu.css create mode 100644 plugins/node_modules/ace/lib/ace/ext/modelist.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/searchbox.css create mode 100644 plugins/node_modules/ace/lib/ace/ext/searchbox.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/settings_menu.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/spellcheck.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/split.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/static.css create mode 100644 plugins/node_modules/ace/lib/ace/ext/static_highlight.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/static_highlight_test.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/statusbar.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/textarea.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/themelist.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/whitespace.js create mode 100644 plugins/node_modules/ace/lib/ace/ext/whitespace_test.js create mode 100644 plugins/node_modules/ace/lib/ace/incremental_search.js create mode 100644 plugins/node_modules/ace/lib/ace/incremental_search_test.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/emacs.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/emacs_test.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/hash_handler.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/keybinding.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/keybinding_test.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/state_handler.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/sublime.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/textarea.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/textinput.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/textinput_ios.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/vim.js create mode 100644 plugins/node_modules/ace/lib/ace/keyboard/vim_test.js create mode 100644 plugins/node_modules/ace/lib/ace/layer/cursor.js create mode 100644 plugins/node_modules/ace/lib/ace/layer/font_metrics.js create mode 100644 plugins/node_modules/ace/lib/ace/layer/gutter.js create mode 100644 plugins/node_modules/ace/lib/ace/layer/marker.js create mode 100644 plugins/node_modules/ace/lib/ace/layer/text.js create mode 100644 plugins/node_modules/ace/lib/ace/layer/text_test.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/app_config.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/bidiutil.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/dom.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/es6-shim.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/event.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/event_emitter.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/event_emitter_test.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/fixoldbrowsers.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/keys.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/lang.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/net.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/oop.js create mode 100644 plugins/node_modules/ace/lib/ace/lib/useragent.js create mode 100644 plugins/node_modules/ace/lib/ace/line_widgets.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/highlight_rules_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/package.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_asciidoc.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_coffee.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_coldfusion.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_curly.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_ejs.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_gobstones.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_html.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_javascript.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_livescript.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_lucene.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_markdown.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_php.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_ruby.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_rust.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_wollok.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/text_xml.txt create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_abap.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_abc.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_actionscript.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_ada.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_asciidoc.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_assembly_x86.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_autohotkey.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_batchfile.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_bro.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_c9search.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_c_cpp.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_cirru.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_clojure.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_cobol.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_coffee.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_coldfusion.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_csharp.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_document.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_orchestra.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_score.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_css.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_curly.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_d.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_dart.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_diff.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_dot.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_drools.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_eiffel.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_ejs.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_elixir.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_elm.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_erlang.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_forth.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_fortran.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_ftl.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_gcode.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_gherkin.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_gitignore.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_glsl.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_gobstones.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_golang.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_graphqlschema.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_groovy.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_haml.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_handlebars.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_haskell.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_haskell_cabal.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_haxe.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_hjson.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_html.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_html_elixir.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_html_ruby.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_ini.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_io.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_jack.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_jade.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_java.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_javascript.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_json.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsoniq.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsp.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsx.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_julia.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_kotlin.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_latex.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_lean.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_less.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_liquid.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_lisp.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_livescript.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_logiql.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_lsl.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_lua.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_luapage.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_lucene.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_markdown.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_mask.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_matlab.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_maze.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_mel.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_mixal.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_mushcode.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_mysql.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_nix.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_nsis.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_objectivec.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_ocaml.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_pascal.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_perl.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_pgsql.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_php.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_pig.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_powershell.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_praat.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_prolog.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_properties.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_protobuf.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_python.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_r.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_razor.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_rdoc.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_rhtml.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_rst.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_ruby.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_ruby_slim.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_rust.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_sass.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_scad.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_scala.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_scheme.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_scss.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_sh.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_sjs.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_smarty.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_snippets.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_soy_template.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_space.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_sparql.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_sql.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_sqlserver.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_stylus.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_svg.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_swift.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_tcl.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_tex.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_text.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_textile.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_toml.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_tsx.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_turtle.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_twig.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_typescript.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_vala.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_vbscript.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_velocity.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_verilog.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_vhdl.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_wollok.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_xml.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_xquery.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/_test/tokens_yaml.json create mode 100644 plugins/node_modules/ace/lib/ace/mode/abap.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/abap_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/abc.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/abc_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/actionscript.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/actionscript_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ada.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ada_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/apache_conf.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/apache_conf_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/applescript.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/applescript_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/asciidoc.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/asciidoc_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/assembly_x86.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/assembly_x86_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/autohotkey.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/autohotkey_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/batchfile.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/batchfile_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/behaviour.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/behaviour/behaviour_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/behaviour/css.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/behaviour/cstyle.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/behaviour/html.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/behaviour/xml.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/behaviour/xquery.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/bro.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/bro_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/c9search.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/c9search_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/c_cpp.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/c_cpp_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/cirru.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/cirru_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/clojure.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/clojure_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/cobol.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/cobol_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/coffee.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/coffee/coffee.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/coffee/parser_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/coffee_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/coffee_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/coldfusion.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/coldfusion_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/coldfusion_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csharp.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csharp_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csound_document.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csound_document_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csound_orchestra.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csound_orchestra_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csound_preprocessor_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csound_score.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/csound_score_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/css.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/css/csslint.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/css_completions.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/css_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/css_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/css_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/css_worker_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/curly.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/curly_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/d.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/d_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/dart.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/dart_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/diff.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/diff_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/django.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/doc_comment_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/dockerfile.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/dockerfile_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/dot.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/dot_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/drools.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/drools_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/eiffel.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/eiffel_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ejs.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/elixir.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/elixir_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/elm.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/elm_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/erlang.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/erlang_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/asciidoc.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/c9search.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/coffee.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/coffee_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/csharp.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/cstyle.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/cstyle_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/diff.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/drools.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/fold_mode.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/haskell_cabal.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/html.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/html_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/ini.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/latex.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/lua.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/markdown.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/mixed.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/pythonic.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/pythonic_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/sqlserver.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/velocity.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/xml.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/folding/xml_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/forth.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/forth_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/fortran.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/fortran_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ftl.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ftl_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/gcode.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/gcode_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/gherkin.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/gherkin_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/gitignore.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/gitignore_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/glsl.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/glsl_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/gobstones.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/gobstones_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/golang.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/golang_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/graphqlschema.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/graphqlschema_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/groovy.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/groovy_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/haml.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/haml_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/handlebars.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/handlebars_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/haskell.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/haskell_cabal.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/haskell_cabal_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/haskell_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/haxe.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/haxe_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/hjson.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/hjson_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html/saxparser.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html_completions.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html_elixir.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html_elixir_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html_ruby.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html_ruby_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/html_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ini.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ini_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/io.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/io_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jack.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jack_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jade.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jade_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/java.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/java_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/javascript.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/javascript/jshint.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/javascript_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/javascript_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/javascript_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/javascript_worker_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/js_regex_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/json.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/json/json_parse.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/json_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/json_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/json_worker_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jsoniq.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jsp.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jsp_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jssm.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jssm_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jsx.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/jsx_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/julia.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/julia_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/kotlin.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/kotlin_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/latex.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/latex_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/less.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/less_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/liquid.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/liquid_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lisp.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lisp_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/livescript.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/logiql.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/logiql_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/logiql_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lsl.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lsl_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lua.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lua/luaparse.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lua_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lua_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/luapage.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/luapage_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lucene.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/lucene_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/makefile.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/makefile_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/markdown.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/markdown_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mask.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mask_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/matching_brace_outdent.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/matching_parens_outdent.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/matlab.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/matlab_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/maze.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/maze_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mel.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mel_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mixal.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mixal_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mushcode.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mushcode_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mysql.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/mysql_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/nix.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/nix_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/nsis.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/nsis_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/objectivec.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/objectivec_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ocaml.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ocaml_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/pascal.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/pascal_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/perl.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/perl_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/pgsql.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/pgsql_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/php.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/php/php.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/php_completions.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/php_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/php_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/php_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/pig.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/pig_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/plain_text.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/plain_text_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/powershell.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/powershell_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/praat.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/praat_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/prolog.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/prolog_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/properties.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/properties_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/protobuf.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/protobuf_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/python.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/python_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/python_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/r.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/r_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/razor.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/razor_completions.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/razor_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/rdoc.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/rdoc_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/red.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/red_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/rhtml.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/rhtml_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/rst.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/rst_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ruby.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ruby_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/ruby_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/rust.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/rust_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sass.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sass_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/scad.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/scad_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/scala.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/scala_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/scheme.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/scheme_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/scss.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/scss_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sh.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sh_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sjs.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sjs_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/smarty.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/smarty_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/snippets.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/soy_template.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/soy_template_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/space.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/space_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sparql.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sparql_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sql.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sql_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sqlserver.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/sqlserver_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/stylus.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/stylus_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/svg.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/svg_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/swift.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/swift_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/tcl.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/tcl_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/tex.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/tex_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/text.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/text_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/text_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/textile.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/textile_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/toml.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/toml_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/tsx.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/turtle.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/turtle_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/twig.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/twig_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/typescript.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/typescript_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/vala.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/vala_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/vbscript.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/vbscript_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/velocity.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/velocity_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/verilog.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/verilog_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/vhdl.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/vhdl_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/wollok.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/wollok_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xml.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xml/dom-parser.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xml/dom.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xml/sax.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xml_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xml_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xml_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xquery.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xquery/jsoniq_lexer.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xquery/xqlint.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xquery/xquery_lexer.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/xquery_worker.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/yaml.js create mode 100644 plugins/node_modules/ace/lib/ace/mode/yaml_highlight_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/model/editor.js create mode 100644 plugins/node_modules/ace/lib/ace/mouse/default_gutter_handler.js create mode 100644 plugins/node_modules/ace/lib/ace/mouse/default_handlers.js create mode 100644 plugins/node_modules/ace/lib/ace/mouse/dragdrop_handler.js create mode 100644 plugins/node_modules/ace/lib/ace/mouse/fold_handler.js create mode 100644 plugins/node_modules/ace/lib/ace/mouse/mouse_event.js create mode 100644 plugins/node_modules/ace/lib/ace/mouse/mouse_handler.js create mode 100644 plugins/node_modules/ace/lib/ace/mouse/mouse_handler_test.js create mode 100644 plugins/node_modules/ace/lib/ace/mouse/multi_select_handler.js create mode 100644 plugins/node_modules/ace/lib/ace/multi_select.js create mode 100644 plugins/node_modules/ace/lib/ace/multi_select_test.js create mode 100644 plugins/node_modules/ace/lib/ace/occur.js create mode 100644 plugins/node_modules/ace/lib/ace/occur_test.js create mode 100644 plugins/node_modules/ace/lib/ace/placeholder.js create mode 100644 plugins/node_modules/ace/lib/ace/placeholder_test.js create mode 100644 plugins/node_modules/ace/lib/ace/range.js create mode 100644 plugins/node_modules/ace/lib/ace/range_list.js create mode 100644 plugins/node_modules/ace/lib/ace/range_list_test.js create mode 100644 plugins/node_modules/ace/lib/ace/range_test.js create mode 100644 plugins/node_modules/ace/lib/ace/renderloop.js create mode 100644 plugins/node_modules/ace/lib/ace/requirejs/text.js create mode 100644 plugins/node_modules/ace/lib/ace/requirejs/text_build.js create mode 100644 plugins/node_modules/ace/lib/ace/scrollbar.js create mode 100644 plugins/node_modules/ace/lib/ace/search.js create mode 100644 plugins/node_modules/ace/lib/ace/search_highlight.js create mode 100644 plugins/node_modules/ace/lib/ace/search_test.js create mode 100644 plugins/node_modules/ace/lib/ace/selection.js create mode 100644 plugins/node_modules/ace/lib/ace/selection_test.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/_.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/_all_modes.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/_all_modes.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/abap.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/abap.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/abc.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/abc.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/actionscript.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/actionscript.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ada.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ada.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/all_modes.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/all_modes.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/apache.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/apache_conf.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/apache_conf.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/applescript.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/applescript.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/asciidoc.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/asciidoc.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/assembly_x86.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/assembly_x86.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/autohotkey.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/autohotkey.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/autoit.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/batchfile.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/batchfile.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/bro.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/bro.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/c.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/c9search.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/c9search.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/c_cpp.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/c_cpp.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/chef.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/cirru.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/cirru.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/clojure.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/clojure.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/cmake.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/cobol.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/cobol.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/coffee.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/coffee.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/coldfusion.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/coldfusion.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/cs.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/csharp.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/csharp.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/csound_document.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/csound_document.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/csound_orchestra.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/csound_orchestra.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/csound_score.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/csound_score.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/css.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/css.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/curly.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/curly.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/d.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/d.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/dart.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/dart.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/diff.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/diff.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/django.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/django.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/dockerfile.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/dockerfile.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/dot.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/dot.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/drools.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/drools.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/dummy.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/dummy_syntax.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/eiffel.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/eiffel.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ejs.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ejs.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/elixir.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/elixir.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/elm.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/elm.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/erlang.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/erlang.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/eruby.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/falcon.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/forth.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/forth.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/fortran.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/fortran.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ftl.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ftl.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/gcode.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/gcode.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/gherkin.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/gherkin.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/gitignore.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/gitignore.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/glsl.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/glsl.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/go.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/gobstones.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/gobstones.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/golang.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/golang.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/graphqlschema.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/graphqlschema.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/groovy.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/groovy.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/haml.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/haml.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/handlebars.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/handlebars.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/haskell.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/haskell.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/haskell_cabal.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/haskell_cabal.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/haxe.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/haxe.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/hjson.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/hjson.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/html.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/html.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/html_elixir.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/html_elixir.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/html_ruby.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/html_ruby.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/htmldjango.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/htmltornado.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ini.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ini.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/io.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/io.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jack.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jack.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jade.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jade.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/java.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/java.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/javascript-jquery.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/javascript.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/javascript.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/json.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/json.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jsoniq.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jsoniq.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jsp.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jsp.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jssm.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jssm.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jsx.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/jsx.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/julia.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/julia.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/kotlin.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/kotlin.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/latex.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/latex.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ledger.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/less.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/less.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/liquid.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/liquid.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/lisp.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/lisp.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/livescript.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/livescript.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/logiql.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/logiql.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/lsl.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/lsl.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/lua.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/lua.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/luapage.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/luapage.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/lucene.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/lucene.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/makefile.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/makefile.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mako.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/markdown.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/markdown.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mask.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mask.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/matlab.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/matlab.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/maze.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/maze.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mel.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mel.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mushcode.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mushcode.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mushcode_high_rules.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mushcode_high_rules.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mysql.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/mysql.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/nix.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/nix.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/nsis.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/nsis.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/objc.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/objectivec.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/objectivec.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ocaml.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ocaml.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/pascal.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/pascal.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/perl.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/perl.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/pgsql.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/pgsql.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/php.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/php.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/pig.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/pig.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/plain_text.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/plain_text.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/powershell.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/powershell.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/praat.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/praat.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/prolog.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/prolog.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/properties.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/properties.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/protobuf.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/protobuf.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/python.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/python.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/r.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/r.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/razor.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/razor.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/rdoc.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/rdoc.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/red.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/red.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/rhtml.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/rhtml.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/rst.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/rst.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ruby.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/ruby.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/rust.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/rust.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sass.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sass.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/scad.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/scad.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/scala.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/scala.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/scheme.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/scheme.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/scss.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/scss.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sh.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sh.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sjs.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sjs.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/smarty.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/smarty.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/snippets.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/snippets.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/soy_template.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/soy_template.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/space.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/space.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sparql.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sparql.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sql.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sql.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sqlserver.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/sqlserver.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/stylus.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/stylus.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/svg.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/svg.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/swift.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/swift.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/tcl.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/tcl.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/tex.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/tex.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/text.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/text.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/textile.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/textile.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/tmsnippet.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/toml.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/toml.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/tsx.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/tsx.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/turtle.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/turtle.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/twig.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/twig.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/typescript.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/typescript.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/vala.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/vala.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/vbscript.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/vbscript.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/velocity.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/velocity.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/verilog.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/verilog.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/vhdl.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/vhdl.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/wollok.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/wollok.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/xml.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/xml.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/xquery.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/xquery.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/xslt.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets/yaml.js create mode 100644 plugins/node_modules/ace/lib/ace/snippets/yaml.snippets create mode 100644 plugins/node_modules/ace/lib/ace/snippets_test.js create mode 100644 plugins/node_modules/ace/lib/ace/split.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/ambiance.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/ambiance.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/chaos.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/chaos.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/chrome.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/chrome.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/cloud9_day.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/cloud9_day.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/cloud9_night.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/cloud9_night.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/cloud9_night_low_color.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/cloud9_night_low_color.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/clouds.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/clouds.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/clouds_midnight.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/clouds_midnight.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/cobalt.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/cobalt.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/crimson_editor.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/crimson_editor.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/dawn.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/dawn.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/dracula.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/dracula.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/dreamweaver.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/dreamweaver.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/eclipse.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/eclipse.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/github.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/github.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/gob.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/gob.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/gruvbox.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/gruvbox.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/idle_fingers.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/idle_fingers.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/iplastic.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/iplastic.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/katzenmilch.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/katzenmilch.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/kr_theme.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/kr_theme.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/kuroir.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/kuroir.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/merbivore.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/merbivore.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/merbivore_soft.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/merbivore_soft.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/mono_industrial.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/mono_industrial.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/monokai.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/monokai.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/pastel_on_dark.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/pastel_on_dark.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/solarized_dark.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/solarized_dark.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/solarized_light.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/solarized_light.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/sqlserver.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/sqlserver.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/terminal.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/terminal.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/textmate.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/textmate.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow_night.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow_night.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow_night_blue.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow_night_blue.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow_night_bright.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow_night_bright.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow_night_eighties.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/tomorrow_night_eighties.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/twilight.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/twilight.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/vibrant_ink.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/vibrant_ink.js create mode 100644 plugins/node_modules/ace/lib/ace/theme/xcode.css create mode 100644 plugins/node_modules/ace/lib/ace/theme/xcode.js create mode 100644 plugins/node_modules/ace/lib/ace/token_iterator.js create mode 100644 plugins/node_modules/ace/lib/ace/token_iterator_test.js create mode 100644 plugins/node_modules/ace/lib/ace/tokenizer.js create mode 100644 plugins/node_modules/ace/lib/ace/tokenizer_dev.js create mode 100644 plugins/node_modules/ace/lib/ace/tokenizer_test.js create mode 100644 plugins/node_modules/ace/lib/ace/tooltip.js create mode 100644 plugins/node_modules/ace/lib/ace/undomanager.js create mode 100644 plugins/node_modules/ace/lib/ace/undomanager_test.js create mode 100644 plugins/node_modules/ace/lib/ace/unicode.js create mode 100644 plugins/node_modules/ace/lib/ace/virtual_renderer.js create mode 100644 plugins/node_modules/ace/lib/ace/virtual_renderer_test.js create mode 100644 plugins/node_modules/ace/lib/ace/worker/mirror.js create mode 100644 plugins/node_modules/ace/lib/ace/worker/worker.js create mode 100644 plugins/node_modules/ace/lib/ace/worker/worker_client.js create mode 100644 plugins/node_modules/ace/lib/ace/worker/worker_test.js create mode 100644 plugins/node_modules/ace/package.json create mode 100644 plugins/node_modules/ace/static.js create mode 100644 plugins/node_modules/ace/static.py create mode 100644 plugins/node_modules/ace/tool/add_mode.js create mode 100644 plugins/node_modules/ace/tool/lib.js create mode 100644 plugins/node_modules/ace/tool/mode_creator.html create mode 100644 plugins/node_modules/ace/tool/mode_creator.js create mode 100644 plugins/node_modules/ace/tool/package.json create mode 100644 plugins/node_modules/ace/tool/perf-test.html create mode 100644 plugins/node_modules/ace/tool/regexp_tokenizer.js create mode 100644 plugins/node_modules/ace/tool/regexp_tokenizer_test.js create mode 100644 plugins/node_modules/ace/tool/release.sh create mode 100644 plugins/node_modules/ace/tool/templates/dummy.JSON-tmLanguage create mode 100644 plugins/node_modules/ace/tool/templates/highlight_rules.js create mode 100644 plugins/node_modules/ace/tool/templates/mode.js create mode 100644 plugins/node_modules/ace/tool/templates/snippets.js create mode 100644 plugins/node_modules/ace/tool/templates/theme.css create mode 100644 plugins/node_modules/ace/tool/templates/theme.js create mode 100644 plugins/node_modules/ace/tool/tmlanguage.js create mode 100644 plugins/node_modules/ace/tool/tmsnippets.js create mode 100644 plugins/node_modules/ace/tool/tmtheme.js create mode 100644 plugins/node_modules/ace/tool/tmthemes/Active4D.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/All Hallows Eve.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Amy.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Blackboard.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Brilliance Black.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Brilliance Dull.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Chrome DevTools.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Clouds Midnight.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Clouds.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Cobalt.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Dawn.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Dreamweaver.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Eiffel.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Espresso Libre.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/GitHub.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/IDLE.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Katzenmilch.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Kuroir Theme.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/LAZY.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/LICENSE create mode 100644 plugins/node_modules/ace/tool/tmthemes/MagicWB (Amiga).tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Merbivore Soft.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Merbivore.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Monokai.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Pastels on Dark.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Slush and Poppies.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Solarized-dark.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Solarized-light.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/SpaceCadet.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Sunburst.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Textmate (Mac Classic).tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Blue.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Bright.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Eighties.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Tomorrow.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Twilight.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Vibrant Ink.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Xcode_default.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/Zenburnesque.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/iPlastic.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/idleFingers.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/krTheme.tmTheme create mode 100644 plugins/node_modules/ace/tool/tmthemes/monoindustrial.tmTheme create mode 100644 plugins/node_modules/ace/tool/update_deps.js create mode 100644 plugins/node_modules/ace/tool/wrap_keyword_regexp.js create mode 100644 plugins/node_modules/ace/version.js create mode 100644 plugins/node_modules/ace_tree/LICENSE create mode 100644 plugins/node_modules/ace_tree/demo.html create mode 100644 plugins/node_modules/ace_tree/demo/demo.js create mode 100644 plugins/node_modules/ace_tree/demo/layout.js create mode 100644 plugins/node_modules/ace_tree/demo/styles.css create mode 100644 plugins/node_modules/ace_tree/demo/util.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/anchor.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/commands/default_commands.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/config.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/config_test.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/css/light_theme.css create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/css/light_theme.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/css/tree.css create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/css/tree_background.png create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/css/tree_close_arrow_small.png create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/data_provider.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/data_provider_mirror.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/data_provider_test.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/edit.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/filter.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/layer/cells.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/layer/heading.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/layer/markers.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/lib/btree.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/lib/btree_test.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/list_data.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/mouse/drag_handler.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/mouse/heading_handler.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/mouse/mouse_event.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/mouse/mouse_handler.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/quicksearch.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/scrollable.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/selection.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/selection_test.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/tooltip.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/tree.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/undomanager.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/virtual_renderer.js create mode 100644 plugins/node_modules/ace_tree/lib/ace_tree/virtual_renderer_test.js create mode 100644 plugins/node_modules/ace_tree/list.txt create mode 100644 plugins/node_modules/ace_tree/list_demo.html create mode 100644 plugins/node_modules/ace_tree/package.json rename {node_modules => plugins/node_modules}/architect-build/LICENSE (100%) rename {node_modules => plugins/node_modules}/architect-build/build.js (100%) rename {node_modules => plugins/node_modules}/architect-build/build_support/mini_require.js (100%) rename {node_modules => plugins/node_modules}/architect-build/build_support/node_require.js (100%) rename {node_modules => plugins/node_modules}/architect-build/compress.js (100%) rename {node_modules => plugins/node_modules}/architect-build/compress_folder.js (100%) rename {node_modules => plugins/node_modules}/architect-build/copy.js (100%) rename {node_modules => plugins/node_modules}/architect-build/module-deps.js (100%) rename {node_modules => plugins/node_modules}/architect-build/npm_build.js (100%) rename {node_modules => plugins/node_modules}/architect-build/npm_freeze.js (100%) rename {node_modules => plugins/node_modules}/architect-build/package.json (100%) rename {node_modules => plugins/node_modules}/vfs-child/LICENSE (100%) rename {node_modules => plugins/node_modules}/vfs-child/child.js (100%) rename {node_modules => plugins/node_modules}/vfs-child/package.json (100%) rename {node_modules => plugins/node_modules}/vfs-child/parent.js (97%) rename {node_modules => plugins/node_modules}/vfs-http-adapter/LICENSE (100%) rename {node_modules => plugins/node_modules}/vfs-http-adapter/multipart.js (100%) rename {node_modules => plugins/node_modules}/vfs-http-adapter/package.json (100%) rename {node_modules => plugins/node_modules}/vfs-http-adapter/restful.js (100%) rename {node_modules => plugins/node_modules}/vfs-http-adapter/test-multipart.js (100%) create mode 100644 plugins/node_modules/vfs-lint/lint.js create mode 100644 plugins/node_modules/vfs-lint/package.json rename {node_modules => plugins/node_modules}/vfs-local/LICENSE (100%) rename {node_modules => plugins/node_modules}/vfs-local/localfs.js (100%) rename {node_modules => plugins/node_modules}/vfs-local/package.json (100%) rename {node_modules/vfs-socket => plugins/node_modules/vfs-nodefs-adapter}/LICENSE (100%) create mode 100644 plugins/node_modules/vfs-nodefs-adapter/nodefs.js create mode 100644 plugins/node_modules/vfs-nodefs-adapter/package.json create mode 100644 plugins/node_modules/vfs-socket/LICENSE rename {node_modules => plugins/node_modules}/vfs-socket/component.json (100%) rename {node_modules => plugins/node_modules}/vfs-socket/consumer.js (100%) rename {node_modules => plugins/node_modules}/vfs-socket/package.json (100%) rename {node_modules => plugins/node_modules}/vfs-socket/worker.js (100%) diff --git a/build/standalone/config/default.js b/build/standalone/config/default.js index 46f6092a..e149376f 100644 --- a/build/standalone/config/default.js +++ b/build/standalone/config/default.js @@ -675,7 +675,8 @@ global.miniRequire = require; define("events",[], function(require, exports, module) { -var EventEmitter = exports.EventEmitter = function() {}; +var EventEmitter = module.exports = function() {}; +EventEmitter.EventEmitter = EventEmitter; var toString = Object.prototype.toString; @@ -3196,13 +3197,140 @@ exports.EventEmitter = EventEmitter; }); +define("ace/lib/app_config",[], function(require, exports, module) { +"no use strict"; + +var oop = require("./oop"); +var EventEmitter = require("./event_emitter").EventEmitter; + +var optionsProvider = { + setOptions: function(optList) { + Object.keys(optList).forEach(function(key) { + this.setOption(key, optList[key]); + }, this); + }, + getOptions: function(optionNames) { + var result = {}; + if (!optionNames) { + var options = this.$options; + optionNames = Object.keys(options).filter(function(key) { + return !options[key].hidden; + }); + } else if (!Array.isArray(optionNames)) { + result = optionNames; + optionNames = Object.keys(result); + } + optionNames.forEach(function(key) { + result[key] = this.getOption(key); + }, this); + return result; + }, + setOption: function(name, value) { + if (this["$" + name] === value) + return; + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value); + + if (!opt.handlesSet) + this["$" + name] = value; + if (opt && opt.set) + opt.set.call(this, value); + }, + getOption: function(name) { + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].getOption(name); + return opt && opt.get ? opt.get.call(this) : this["$" + name]; + } +}; + +function warn(message) { + if (typeof console != "undefined" && console.warn) + console.warn.apply(console, arguments); +} + +function reportError(msg, data) { + var e = new Error(msg); + e.data = data; + if (typeof console == "object" && console.error) + console.error(e); + setTimeout(function() { throw e; }); +} + +var AppConfig = function() { + this.$defaultOptions = {}; +}; + +(function() { + oop.implement(this, EventEmitter); + this.defineOptions = function(obj, path, options) { + if (!obj.$options) + this.$defaultOptions[path] = obj.$options = {}; + + Object.keys(options).forEach(function(key) { + var opt = options[key]; + if (typeof opt == "string") + opt = {forwardTo: opt}; + + opt.name || (opt.name = key); + obj.$options[opt.name] = opt; + if ("initialValue" in opt) + obj["$" + opt.name] = opt.initialValue; + }); + oop.implement(obj, optionsProvider); + + return this; + }; + + this.resetOptions = function(obj) { + Object.keys(obj.$options).forEach(function(key) { + var opt = obj.$options[key]; + if ("value" in opt) + obj.setOption(key, opt.value); + }); + }; + + this.setDefaultValue = function(path, name, value) { + var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {}); + if (opts[name]) { + if (opts.forwardTo) + this.setDefaultValue(opts.forwardTo, name, value); + else + opts[name].value = value; + } + }; + + this.setDefaultValues = function(path, optionHash) { + Object.keys(optionHash).forEach(function(key) { + this.setDefaultValue(path, key, optionHash[key]); + }, this); + }; + + this.warn = warn; + this.reportError = reportError; + +}).call(AppConfig.prototype); + +exports.AppConfig = AppConfig; + +}); + define("ace_tree/config",[], function(require, exports, module) { "no use strict"; var lang = require("ace/lib/lang"); var oop = require("ace/lib/oop"); var net = require("ace/lib/net"); -var EventEmitter = require("ace/lib/event_emitter").EventEmitter; +var AppConfig = require("ace/lib/app_config").AppConfig; + +module.exports = exports = new AppConfig(); var global = (function() { return this; @@ -3235,7 +3363,6 @@ exports.set = function(key, value) { exports.all = function() { return lang.copyObject(options); }; -oop.implement(exports, EventEmitter); exports.moduleUrl = function(name, component) { if (options.$moduleUrls[name]) @@ -3296,136 +3423,6 @@ exports.loadModule = function(moduleName, onLoad) { return afterLoad(); net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); }; -exports.init = function() { - options.packaged = require.packaged || module.packaged || (global.define && define.packaged); - - if (!global.document) - return ""; - - var scriptOptions = {}; - var scriptUrl = ""; - - var scripts = document.getElementsByTagName("script"); - for (var i=0; i\n \n
\n
Version
\n \n
\n

Cloud9 is brought to you by:

\n
\n
\n

\n Alex Brausewetter, Arron Bailiss, Bas de Wachter, Dan Armendariz, Dana Ivan,\n Fabian Jakobs, Harutyun Amirjanyan, Ivar Pruijn, Justin Dray, Lennart Kats, Luca Cipriani,\n Mostafa Eweda, Matthijs van Henten, Nikolai Onken, Suraj Biyani, Tim Robinson, Ruben Daniels\n

\n
\n
\n

© 2010 — 2017 Cloud9 Inc. All rights reserved

\n
\n
\n \n\n"); +define("text!plugins/c9.ide.help/help.xml",[],"\n \n
\n
Version
\n \n
\n

Cloud9 is brought to you by:

\n
\n
\n

\n Alex Brausewetter, Arron Bailiss, Bas de Wachter, Dan Armendariz, Dana Ivan,\n Fabian Jakobs, Harutyun Amirjanyan, Ivar Pruijn, Justin Dray, Lennart Kats, Luca Cipriani,\n Mostafa Eweda, Matthijs van Henten, Nikolai Onken, Suraj Biyani, Tim Robinson, Ruben Daniels\n

\n
\n
\n

© 2010 — {YEAR} Cloud9 Inc. All rights reserved

\n
\n
\n \n
\n"); define("text!plugins/c9.ide.help/style.css",[],""); @@ -49601,7 +49472,7 @@ define("plugins/c9.ide.help/help",[], function(require, exports, module) { data: require("text!./skin.xml"), }, plugin); ui.insertCss(css, null, plugin); - ui.insertMarkup(null, markup, plugin); + ui.insertMarkup(null, markup.replace(/{YEAR}/g, new Date().getFullYear()), plugin); aboutDialog = plugin.getElement("aboutDialog"); @@ -63954,7 +63825,7 @@ function Heap(param) { }; this.min = function() { - if (this.empty()) throw new Exception("Priority queue underflow"); + if (this.empty()) throw new Error("Priority queue underflow"); return this.pq[1]; }; @@ -63964,7 +63835,7 @@ function Heap(param) { }; this.pop = function() { - if (this.empty()) throw new Exception("Priority queue underflow"); + if (this.empty()) throw new Error("Priority queue underflow"); this.$exch(1, this.N); var min = this.pq.splice(this.pq.length - 1, 1)[0]; this.sink(1); @@ -73186,7 +73057,7 @@ define("plugins/c9.ide.layout.classic/layout",[], function(require, exports, mod var isFlatTheme = theme.indexOf("flat") > -1; var img = options.staticPrefix + "/images/" + ( isFlatTheme - ? "gecko_mask_flat_light.png" + ? "gecko_mask_flat_light@" + (highResolution ? 2 : 1) + "x.png" : "gecko_mask.png"); var width = isFlatTheme ? 76 : 46; var height = isFlatTheme ? 26 : 24; @@ -92919,34 +92790,30 @@ var DevtoolsProtocol = module.exports = function(socket) { return this.callbacks[message.id](message.result, message.error); } else { var params = message.params; - if (message.method == "Debugger.scriptParsed") { - this.$scripts[params.scriptId] = params; - this._signal("afterCompile", params); - } - else if (message.method == "Runtime.executionContextCreated") { - console.log(message.params); - } - else if (message.method == "Runtime.executionContextDestroyed") { - console.log(message.params); - this.detachDebugger(); - } - else if (message.method == "Debugger.resumed") { - this.$callstack = null; - this._signal("changeRunning", params); - console.warn(message); - } - else if (message.method == "Debugger.paused") { - this.$callstack = params; - this._signal("changeRunning", params); - console.warn(message); - if (params.reason == "exception") { - this._signal("exception", params); - } else { - this._signal("break", params); - } - } - else { - console.warn(message); + switch (message.method) { + case "Debugger.scriptParsed": + this.$scripts[params.scriptId] = params; + this._signal("afterCompile", params); + break; + case "Runtime.executionContextCreated": + break; + case "Runtime.executionContextDestroyed": + this.detachDebugger(); + break; + case "Debugger.resumed": + this.$callstack = null; + this._signal("changeRunning", params); + break; + case "Debugger.paused": + this.$callstack = params; + this._signal("changeRunning", params); + if (params.reason == "exception") + this._signal("exception", params); + else + this._signal("break", params); + break; + case "Runtime.consoleAPICalled": + break; } } }; @@ -93104,7 +92971,7 @@ var DevtoolsProtocol = module.exports = function(socket) { this.changelive = function(scriptId, newSource, previewOnly, callback, $retry) { - that.$send("Debugger.setScriptSource", { + this.$send("Debugger.setScriptSource", { scriptId: scriptId, scriptSource: newSource, dryRun: !!previewOnly @@ -93206,7 +93073,13 @@ define("plugins/c9.ide.run.debug/debuggers/chrome/chromedebugger",[], function(r } var list = breakpoints.slice(0); - var retries = 0; + if (list.length == 0) { + list.push({ + path: "_c9_node_segfault_workaround_", + line: 100, + enabled: true, + }); + } listBreakpoints(function handleBps(err, remoteBreakpoints) { if (err) return callback(err); @@ -94111,10 +93984,6 @@ define("plugins/c9.ide.run.debug/debuggers/v8/v8debugger",[], function(require, }, eventForwarder); }); - dbg.on(event, function(e) { - return emit(event, e); - }, eventForwarder); - dbg.attach(socket, reconnect, callback); }); } @@ -116132,7 +116001,7 @@ define(["require", "module", "exports", "./lib/menu/menu", "./lib/crypto", apf.nameserver.remove("all", e.plugin) delete apf.nameserver.lookup.all[e.plugin.name]; }); - apf = { +var apf = window.apf = { getPlugin: function(name) { return apf.nameserver.get("all", name); }, @@ -116160,6 +116029,7 @@ define(["require", "module", "exports", "./lib/menu/menu", "./lib/crypto", browserDetect: function(){ if (this.$bdetect) return; + try { delete window.event } catch(e) {} var Browser = this.$bdetect = (function() { var ua = navigator.userAgent.toLowerCase(), @@ -116536,7 +116406,6 @@ apf.Class.prototype = new (function(){ for (i = 0, l = this.$bufferEvents.length; i < l; i++) this.addEventListener.apply(this, this.$bufferEvents[i]); - delete realAddEventListener; delete this.$initStack; delete this.$bufferEvents; @@ -163049,7 +162918,7 @@ define("plugins/c9.core/http-xhr",[], function(require, module, exports) { try { data = JSON.parse(data); } catch (e) { - return done(e); + return done(new Error("JSON parsing error")); } } @@ -163065,15 +162934,12 @@ define("plugins/c9.core/http-xhr",[], function(require, module, exports) { }; xhr.onerror = function(e) { - if (typeof XMLHttpRequestProgressEvent == "function" && e instanceof XMLHttpRequestProgressEvent) { - var err = new Error("Failed to retrieve resource from " + parsedUrl.host); - err.cause = e; - err.code = e.target.status; - return done(err); - } - e.code = e.target.status; - done(e); - }; + var code = e.target.status; + var err = new Error("Failed to retrieve resource from " + parsedUrl.href + " with code " + code); + err.cause = e; + err.code = code; + return done(err); + }; var called = false; function done(err, data, res) { @@ -163128,9 +162994,10 @@ define("plugins/c9.core/http-xhr",[], function(require, module, exports) { function parseHeaders(headerString) { return headerString - .split('\u000d\u000a') + .trim() // on ie11 header string can start with single \n + .split("\r\n") .reduce(function(headers, headerPair) { - var index = headerPair.indexOf('\u003a\u0020'); + var index = headerPair.indexOf(": "); if (index > 0) { var key = headerPair.substring(0, index).toLowerCase(); var val = headerPair.substring(index + 2); @@ -163302,6 +163169,7 @@ define("plugins/c9.core/ext",[], function(require, exports, module) { } function unloadRemotePlugin(id, options, callback) { + var vfs = architectApp.services.vfs; if (typeof options == "function") { callback = options; options = {}; diff --git a/build/standalone/static/plugins/c9.ide.run/runners-docker/Node.js (default).run b/build/standalone/static/plugins/c9.ide.run/runners-docker/Node.js (default).run index 11e6dc49..eb26cbcd 100644 --- a/build/standalone/static/plugins/c9.ide.run/runners-docker/Node.js (default).run +++ b/build/standalone/static/plugins/c9.ide.run/runners-docker/Node.js (default).run @@ -2,15 +2,15 @@ "script": [ "set -e", "if ! [ \"$debug\" == true ]; then ", - " node $file $args", + " node \"$file\" $args", "elif \"$(node -p 'parseInt(process.version.slice(1)) < 7')\" == true; then", " FLAGS=\"--nocrankshaft --nolazy --debug-brk=$debugport\"", " if node --nodead_code_elimination -e '' &> /dev/null; then", " FLAGS=\"$FLAGS --nodead_code_elimination\"", " fi", - " node $FLAGS $file $args", + " node $FLAGS \"$file\" $args", "else", - " node --inspect-brk=$debugport $file $args", + " node --inspect-brk=$debugport \"$file\" $args", "fi" ], "debugger": "v8", diff --git a/build/standalone/static/plugins/c9.ide.run/runners/C++ (simple).run b/build/standalone/static/plugins/c9.ide.run/runners/C++ (simple).run index 67459b77..3af0ec95 100644 --- a/build/standalone/static/plugins/c9.ide.run/runners/C++ (simple).run +++ b/build/standalone/static/plugins/c9.ide.run/runners/C++ (simple).run @@ -2,13 +2,13 @@ "script" : [ "set -e", "if [ \"$debug\" == true ]; then ", - "/usr/bin/g++ -ggdb3 -std=c++11 $file -o $file.o", + "/usr/bin/g++ -ggdb3 -std=c++11 \"$file\" -o \"$file.o\"", "chmod 755 \"$file.o\"", "node $HOME/.c9/bin/c9gdbshim.js \"$file.o\" $args", "else", - "/usr/bin/g++ -std=c++11 $file -o $file.o", - "chmod 755 $file.o", - "$file.o $args", + "/usr/bin/g++ -std=c++11 \"$file\" -o \"$file.o\"", + "chmod 755 \"$file.o\"", + "\"$file.o\" $args", "fi" ], "info": "Running $file", diff --git a/build/standalone/static/plugins/c9.ide.run/runners/Node.js.run b/build/standalone/static/plugins/c9.ide.run/runners/Node.js.run index 1879613f..e9d96c85 100644 --- a/build/standalone/static/plugins/c9.ide.run/runners/Node.js.run +++ b/build/standalone/static/plugins/c9.ide.run/runners/Node.js.run @@ -2,15 +2,15 @@ "script": [ "set -e", "if ! [ \"$debug\" == true ]; then ", - " node $file $args", + " node \"$file\" $args", "elif node --debug -e '' &> /dev/null; then", " FLAGS=\"--nocrankshaft --nolazy --debug-brk=$debugport\"", " if node --nodead_code_elimination -e '' &> /dev/null; then", " FLAGS=\"$FLAGS --nodead_code_elimination\"", " fi", - " node $FLAGS $file $args", + " node $FLAGS \"$file\" $args", "else", - " node --inspect-brk=$debugport $file $args", + " node --inspect-brk=$debugport \"$file\" $args", "fi" ], "debugger": "v8", diff --git a/build/standalone/static/plugins/c9.ide.run/runners/Python 2.run b/build/standalone/static/plugins/c9.ide.run/runners/Python 2.run index a4dd34bc..6e5c4711 100644 --- a/build/standalone/static/plugins/c9.ide.run/runners/Python 2.run +++ b/build/standalone/static/plugins/c9.ide.run/runners/Python 2.run @@ -1,9 +1,9 @@ { "script": [ "if [ \"$debug\" == true ]; then ", - " python2 -m ikpdb --ikpdb-port=15471 --ikpdb-working-directory=$project_path $file $args", + " python2 -m ikpdb --ikpdb-port=15471 --ikpdb-working-directory=$project_path \"$file\" $args", "else", - " python2 $file $args", + " python2 \"$file\" $args", "fi", "checkExitCode() {", " if [ $1 ] && [ \"$debug\" == true ]; then ", diff --git a/build/standalone/worker/plugins/c9.ide.language.core/worker.js b/build/standalone/worker/plugins/c9.ide.language.core/worker.js index d4c8d3ed..9172d110 100644 --- a/build/standalone/worker/plugins/c9.ide.language.core/worker.js +++ b/build/standalone/worker/plugins/c9.ide.language.core/worker.js @@ -102580,7 +102580,8 @@ define.amd = true; define("events",[], function(require, exports, module) { -var EventEmitter = exports.EventEmitter = function() {}; +var EventEmitter = module.exports = function() {}; +EventEmitter.EventEmitter = EventEmitter; var toString = Object.prototype.toString; diff --git a/configs/standalone.js b/configs/standalone.js index 191ac427..7c835497 100644 --- a/configs/standalone.js +++ b/configs/standalone.js @@ -152,7 +152,7 @@ module.exports = function(config, optimist) { "./c9.core/ext", { - packagePath: "./c9.ide.server/plugins", + packagePath: "./c9.ide.server/ide-statics", // allow everything in standalone mode blacklist: { "c9.ide.server": true, diff --git a/lib/rusha/package.json b/lib/rusha/package.json index ee5bea19..ca235898 100644 --- a/lib/rusha/package.json +++ b/lib/rusha/package.json @@ -78,5 +78,6 @@ "tmp": "tmp/rusha-0.8.5.tgz_1480058262431_0.6161824602168053" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.5.tgz" + "_resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/enhanced-resolve/node_modules/graceful-fs/package.json b/lib/tern/node_modules/enhanced-resolve/node_modules/graceful-fs/package.json index 8b9f028d..76ebca97 100644 --- a/lib/tern/node_modules/enhanced-resolve/node_modules/graceful-fs/package.json +++ b/lib/tern/node_modules/enhanced-resolve/node_modules/graceful-fs/package.json @@ -72,5 +72,6 @@ "host": "packages-18-east.internal.npmjs.com", "tmp": "tmp/graceful-fs-4.1.11.tgz_1479843029430_0.2122855328489095" }, - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/enhanced-resolve/node_modules/memory-fs/package.json b/lib/tern/node_modules/enhanced-resolve/node_modules/memory-fs/package.json index 37d7119d..ba9b50d9 100644 --- a/lib/tern/node_modules/enhanced-resolve/node_modules/memory-fs/package.json +++ b/lib/tern/node_modules/enhanced-resolve/node_modules/memory-fs/package.json @@ -12,7 +12,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/webpack/memory-fs.git" + "url": "git+https://github.com/webpack/memory-fs.git" }, "keywords": [ "fs", @@ -50,5 +50,6 @@ "shasum": "f2bb25368bc121e391c2520de92969caee0a0290", "tarball": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" }, - "_resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" + "_resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/enhanced-resolve/node_modules/tapable/package.json b/lib/tern/node_modules/enhanced-resolve/node_modules/tapable/package.json index 38dd0e49..503fb8a3 100644 --- a/lib/tern/node_modules/enhanced-resolve/node_modules/tapable/package.json +++ b/lib/tern/node_modules/enhanced-resolve/node_modules/tapable/package.json @@ -46,5 +46,6 @@ "tarball": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz" + "_resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/enhanced-resolve/package.json b/lib/tern/node_modules/enhanced-resolve/package.json index 9da27b5c..d240f528 100644 --- a/lib/tern/node_modules/enhanced-resolve/package.json +++ b/lib/tern/node_modules/enhanced-resolve/package.json @@ -61,5 +61,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz" + "_resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/glob/node_modules/minimatch/package.json b/lib/tern/node_modules/glob/node_modules/minimatch/package.json index b245f06f..68b547b8 100644 --- a/lib/tern/node_modules/glob/node_modules/minimatch/package.json +++ b/lib/tern/node_modules/glob/node_modules/minimatch/package.json @@ -53,5 +53,6 @@ }, "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", "directories": {}, - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz" + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/glob/package.json b/lib/tern/node_modules/glob/package.json index a5aa4d6c..12809818 100644 --- a/lib/tern/node_modules/glob/package.json +++ b/lib/tern/node_modules/glob/package.json @@ -53,5 +53,6 @@ "tarball": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz" + "_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/minimatch/node_modules/lru-cache/package.json b/lib/tern/node_modules/minimatch/node_modules/lru-cache/package.json index 233bca66..280389b7 100644 --- a/lib/tern/node_modules/minimatch/node_modules/lru-cache/package.json +++ b/lib/tern/node_modules/minimatch/node_modules/lru-cache/package.json @@ -53,5 +53,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/minimatch/node_modules/sigmund/package.json b/lib/tern/node_modules/minimatch/node_modules/sigmund/package.json index 658dbb81..546c28c0 100644 --- a/lib/tern/node_modules/minimatch/node_modules/sigmund/package.json +++ b/lib/tern/node_modules/minimatch/node_modules/sigmund/package.json @@ -55,5 +55,6 @@ "email": "i@izs.me" } ], - "_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/minimatch/package.json b/lib/tern/node_modules/minimatch/package.json index 81448179..858e91de 100644 --- a/lib/tern/node_modules/minimatch/package.json +++ b/lib/tern/node_modules/minimatch/package.json @@ -53,5 +53,6 @@ "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", "directories": {}, "_shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a", - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/node_modules/typescript/package.json b/lib/tern/node_modules/typescript/package.json index 99728fcf..cee7ab09 100644 --- a/lib/tern/node_modules/typescript/package.json +++ b/lib/tern/node_modules/typescript/package.json @@ -56,5 +56,6 @@ ], "directories": {}, "_shasum": "e8eacde3084a091d3fe29b60ac5862252662a25a", - "_resolved": "https://registry.npmjs.org/typescript/-/typescript-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/typescript/-/typescript-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/lib/tern/package.json b/lib/tern/package.json index d1861872..e996b89a 100644 --- a/lib/tern/package.json +++ b/lib/tern/package.json @@ -248,7 +248,7 @@ }, "homepage": "https://github.com/ternjs/tern#readme", "_id": "tern@0.16.1", - "_shasum": "d48fce89d544b6bdfb11a2e00076927583d71f4f", + "_shasum": "2a7d756f07dac279b9ed2a49ba930cf9cf97d645", "_from": "git+https://github.com/cloud9ide/tern.git#39015d544d4c00c7899fea4c95c2e5bc2720e68e", "_resolved": "git+https://github.com/cloud9ide/tern.git#39015d544d4c00c7899fea4c95c2e5bc2720e68e" } diff --git a/lib/tern_from_ts/package.json b/lib/tern_from_ts/package.json index 8aa42e67..53cbc9d7 100644 --- a/lib/tern_from_ts/package.json +++ b/lib/tern_from_ts/package.json @@ -20,7 +20,7 @@ "readme": "# tern_from_ts\n\nTern signatures extracted from typescript signatures.\n\nLicense: MIT\n\nSee also https://github.com/marijnh/tern and https://github.com/borisyankov/DefinitelyTyped\n", "readmeFilename": "README.md", "_id": "tern_from_ts@0.0.1", - "_shasum": "54cb5326591d20442b1578317d16aba3d9150a3b", + "_shasum": "8713975fb90fe744fdf5930e77bb61a9b44a87fb", "_from": "git+https://github.com/cloud9ide/tern_from_ts.git#66df507986bbdd63f3bc4f0c53edb39169ce4f1c", "_resolved": "git+https://github.com/cloud9ide/tern_from_ts.git#66df507986bbdd63f3bc4f0c53edb39169ce4f1c" } diff --git a/module-map.json b/module-map.json index 5427901c..a9abf7ae 100644 --- a/module-map.json +++ b/module-map.json @@ -1 +1 @@ -{"server.js|server.js":"server.js","amd-loader|server.js":"node_modules/amd-loader/amd-loader.js","architect|server.js":"node_modules/architect/architect.js","c9/urls|server.js":"node_modules/c9/urls.js","c9/hostname|server.js":"node_modules/c9/hostname.js","c9/setup_paths.js|server.js":"node_modules/c9/setup_paths.js","optimist|server.js":"node_modules/optimist/index.js","minimist|node_modules/optimist/index.js":"node_modules/optimist/node_modules/minimist/index.js","wordwrap|node_modules/optimist/index.js":"node_modules/optimist/node_modules/wordwrap/index.js","async|server.js":"node_modules/async/lib/async.js","/mnt/workspace/newclient-sync-sdk/build/sdk/configs/standalone|/mnt/workspace/newclient-sync-sdk/build/sdk/configs/standalone":"configs/standalone.js","configs/utils/ssl":"configs/utils/ssl.js","server":"server.js","node_modules/connect-architect/connect|node_modules/connect-architect/connect":"node_modules/connect-architect/connect/connect-plugin.js","connect/lib/utils|node_modules/connect-architect/connect/connect-plugin.js":"node_modules/connect/lib/utils.js","cookie-signature|node_modules/connect/lib/utils.js":"node_modules/connect/node_modules/cookie-signature/index.js","pause|node_modules/connect/lib/utils.js":"node_modules/connect/node_modules/pause/index.js","bytes|node_modules/connect/lib/utils.js":"node_modules/connect/node_modules/bytes/index.js","netutil|node_modules/connect-architect/connect/connect-plugin.js":"node_modules/netutil/netutil.js","connect|node_modules/connect-architect/connect/connect-plugin.js":"node_modules/connect/index.js","node_modules/connect/lib/connect":"node_modules/connect/lib/connect.js","node_modules/connect/lib/proto":"node_modules/connect/lib/proto.js","node_modules/connect/lib/utils":"node_modules/connect/lib/utils.js","debug|node_modules/connect/lib/proto.js":"node_modules/debug/lib/debug.js","node_modules/connect/lib/patch":"node_modules/connect/lib/patch.js","node_modules/connect/lib/middleware/static":"node_modules/connect/lib/middleware/static.js","send|node_modules/connect/lib/middleware/static.js":"node_modules/send/index.js","node_modules/send/lib/send":"node_modules/send/lib/send.js","debug|node_modules/send/lib/send.js":"node_modules/debug/lib/debug.js","range-parser|node_modules/send/lib/send.js":"node_modules/send/node_modules/range-parser/index.js","mime|node_modules/send/lib/send.js":"node_modules/mime/mime.js","fresh|node_modules/send/lib/send.js":"node_modules/send/node_modules/fresh/index.js","node_modules/send/lib/utils":"node_modules/send/lib/utils.js","node_modules/connect/lib/middleware/basicAuth":"node_modules/connect/lib/middleware/basicAuth.js","node_modules/connect/lib/middleware/bodyParser":"node_modules/connect/lib/middleware/bodyParser.js","node_modules/connect/lib/middleware/multipart":"node_modules/connect/lib/middleware/multipart.js","multiparty|node_modules/connect/lib/middleware/multipart.js":"node_modules/connect/node_modules/multiparty/index.js","readable-stream|node_modules/connect/node_modules/multiparty/index.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/readable.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js","isarray|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/index.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits_browser.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits_browser.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js","string_decoder/|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/index.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","stream-counter|node_modules/connect/node_modules/multiparty/index.js":"node_modules/connect/node_modules/multiparty/node_modules/stream-counter/index.js","readable-stream|node_modules/connect/node_modules/multiparty/node_modules/stream-counter/index.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/readable.js","node_modules/connect/lib/middleware/limit":"node_modules/connect/lib/middleware/limit.js","qs|node_modules/connect/lib/middleware/multipart.js":"node_modules/qs/index.js","node_modules/connect/lib/middleware/urlencoded":"node_modules/connect/lib/middleware/urlencoded.js","raw-body|node_modules/connect/lib/middleware/urlencoded.js":"node_modules/connect/node_modules/raw-body/index.js","bytes|node_modules/connect/node_modules/raw-body/index.js":"node_modules/connect/node_modules/bytes/index.js","qs|node_modules/connect/lib/middleware/urlencoded.js":"node_modules/qs/index.js","node_modules/connect/lib/middleware/json":"node_modules/connect/lib/middleware/json.js","raw-body|node_modules/connect/lib/middleware/json.js":"node_modules/connect/node_modules/raw-body/index.js","node_modules/connect/lib/middleware/compress":"node_modules/connect/lib/middleware/compress.js","negotiator|node_modules/connect/lib/middleware/compress.js":"node_modules/connect/node_modules/negotiator/lib/negotiator.js","node_modules/connect/node_modules/negotiator/lib/charset.js":"node_modules/connect/node_modules/negotiator/lib/charset.js","node_modules/connect/node_modules/negotiator/lib/encoding.js":"node_modules/connect/node_modules/negotiator/lib/encoding.js","node_modules/connect/node_modules/negotiator/lib/language.js":"node_modules/connect/node_modules/negotiator/lib/language.js","node_modules/connect/node_modules/negotiator/lib/mediaType.js":"node_modules/connect/node_modules/negotiator/lib/mediaType.js","node_modules/connect/lib/middleware/cookieParser":"node_modules/connect/lib/middleware/cookieParser.js","cookie|node_modules/connect/lib/middleware/cookieParser.js":"node_modules/connect/node_modules/cookie/index.js","node_modules/connect/lib/middleware/cookieSession":"node_modules/connect/lib/middleware/cookieSession.js","node_modules/connect/lib/middleware/session/cookie":"node_modules/connect/lib/middleware/session/cookie.js","cookie|node_modules/connect/lib/middleware/session/cookie.js":"node_modules/connect/node_modules/cookie/index.js","debug|node_modules/connect/lib/middleware/cookieSession.js":"node_modules/debug/lib/debug.js","cookie-signature|node_modules/connect/lib/middleware/cookieSession.js":"node_modules/connect/node_modules/cookie-signature/index.js","buffer-crc32|node_modules/connect/lib/middleware/cookieSession.js":"node_modules/connect/node_modules/buffer-crc32/index.js","node_modules/connect/lib/middleware/csrf":"node_modules/connect/lib/middleware/csrf.js","uid2|node_modules/connect/lib/middleware/csrf.js":"node_modules/connect/node_modules/uid2/index.js","node_modules/connect/lib/middleware/directory":"node_modules/connect/lib/middleware/directory.js","batch|node_modules/connect/lib/middleware/directory.js":"node_modules/connect/node_modules/batch/index.js","negotiator|node_modules/connect/lib/middleware/directory.js":"node_modules/connect/node_modules/negotiator/lib/negotiator.js","node_modules/connect/lib/middleware/errorHandler":"node_modules/connect/lib/middleware/errorHandler.js","node_modules/connect/lib/middleware/favicon":"node_modules/connect/lib/middleware/favicon.js","node_modules/connect/lib/middleware/logger":"node_modules/connect/lib/middleware/logger.js","bytes|node_modules/connect/lib/middleware/logger.js":"node_modules/connect/node_modules/bytes/index.js","node_modules/connect/lib/middleware/methodOverride":"node_modules/connect/lib/middleware/methodOverride.js","methods|node_modules/connect/lib/middleware/methodOverride.js":"node_modules/connect/node_modules/methods/index.js","node_modules/connect/lib/middleware/query":"node_modules/connect/lib/middleware/query.js","qs|node_modules/connect/lib/middleware/query.js":"node_modules/qs/index.js","node_modules/connect/lib/middleware/responseTime":"node_modules/connect/lib/middleware/responseTime.js","node_modules/connect/lib/middleware/session":"node_modules/connect/lib/middleware/session.js","node_modules/connect/lib/middleware/session/session":"node_modules/connect/lib/middleware/session/session.js","debug|node_modules/connect/lib/middleware/session.js":"node_modules/debug/lib/debug.js","node_modules/connect/lib/middleware/session/memory":"node_modules/connect/lib/middleware/session/memory.js","node_modules/connect/lib/middleware/session/store":"node_modules/connect/lib/middleware/session/store.js","cookie-signature|node_modules/connect/lib/middleware/session.js":"node_modules/connect/node_modules/cookie-signature/index.js","uid2|node_modules/connect/lib/middleware/session.js":"node_modules/connect/node_modules/uid2/index.js","buffer-crc32|node_modules/connect/lib/middleware/session.js":"node_modules/connect/node_modules/buffer-crc32/index.js","node_modules/connect/lib/middleware/staticCache":"node_modules/connect/lib/middleware/staticCache.js","node_modules/connect/lib/cache":"node_modules/connect/lib/cache.js","fresh|node_modules/connect/lib/middleware/staticCache.js":"node_modules/connect/node_modules/fresh/index.js","node_modules/connect/lib/middleware/timeout":"node_modules/connect/lib/middleware/timeout.js","debug|node_modules/connect/lib/middleware/timeout.js":"node_modules/debug/lib/debug.js","node_modules/connect/lib/middleware/vhost":"node_modules/connect/lib/middleware/vhost.js","node_modules/connect-architect/connect.basicauth|node_modules/connect-architect/connect.basicauth":"node_modules/connect-architect/connect.basicauth/basicauth-plugin.js","node_modules/connect-architect/connect.static|node_modules/connect-architect/connect.static":"node_modules/connect-architect/connect.static/static-plugin.js","plugins/c9.error/error_handler.js|plugins/c9.error/error_handler.js":"plugins/c9.error/error_handler.js","http-error|plugins/c9.error/error_handler.js":"node_modules/http-error/error.js","frontdoor|plugins/c9.error/error_handler.js":"node_modules/frontdoor/frontdoor.js","amd-loader|node_modules/frontdoor/frontdoor.js":"node_modules/amd-loader/amd-loader.js","node_modules/frontdoor/lib/route":"node_modules/frontdoor/lib/route.js","node_modules/frontdoor/lib/types":"node_modules/frontdoor/lib/types.js","node_modules/frontdoor/lib/utils":"node_modules/frontdoor/lib/utils.js","http-error|node_modules/frontdoor/lib/route.js":"node_modules/http-error/error.js","node_modules/frontdoor/lib/section":"node_modules/frontdoor/lib/section.js","node_modules/frontdoor/lib/middleware":"node_modules/frontdoor/lib/middleware.js","http-error|node_modules/frontdoor/lib/middleware.js":"node_modules/http-error/error.js","node_modules/frontdoor/lib/api":"node_modules/frontdoor/lib/api.js","node_modules/connect-architect/connect.remote-address|node_modules/connect-architect/connect.remote-address":"node_modules/connect-architect/connect.remote-address/remote-address.js","node_modules/connect-architect/connect.render|node_modules/connect-architect/connect.render":"node_modules/connect-architect/connect.render/render.js","http-error|node_modules/connect-architect/connect.render/render.js":"node_modules/http-error/error.js","async|node_modules/connect-architect/connect.render/render.js":"node_modules/async/lib/async.js","node_modules/connect-architect/connect.render.ejs|node_modules/connect-architect/connect.render.ejs":"node_modules/connect-architect/connect.render.ejs/render-ejs.js","ejs|node_modules/connect-architect/connect.render.ejs/render-ejs.js":"node_modules/ejs/lib/ejs.js","node_modules/ejs/lib/utils":"node_modules/ejs/lib/utils.js","node_modules/ejs/lib/filters":"node_modules/ejs/lib/filters.js","node_modules/connect-architect/connect.redirect|node_modules/connect-architect/connect.redirect":"node_modules/connect-architect/connect.redirect/redirect.js","node_modules/connect-architect/connect.cors|node_modules/connect-architect/connect.cors":"node_modules/connect-architect/connect.cors/cors.js","plugins/c9.connect.favicon/favicon.js|plugins/c9.connect.favicon/favicon.js":"plugins/c9.connect.favicon/favicon.js","plugins/c9.core/ext.js|plugins/c9.core/ext.js":"plugins/c9.core/ext.js","events|plugins/c9.core/ext.js":"plugins/c9.nodeapi/events.js","plugins/c9.ide.server/plugins.js|plugins/c9.ide.server/plugins.js":"plugins/c9.ide.server/plugins.js","plugins/c9.preview/statics.js|plugins/c9.preview/statics.js":"plugins/c9.preview/statics.js","plugins/c9.nodeapi/nodeapi.js|plugins/c9.nodeapi/nodeapi.js":"plugins/c9.nodeapi/nodeapi.js","plugins/c9.vfs.standalone/standalone.js|plugins/c9.vfs.standalone/standalone.js":"plugins/c9.vfs.standalone/standalone.js","async|plugins/c9.vfs.standalone/standalone.js":"node_modules/async/lib/async.js","frontdoor|plugins/c9.vfs.standalone/standalone.js":"node_modules/frontdoor/frontdoor.js","plugins/c9.vfs.server/vfs.server.js|plugins/c9.vfs.server/vfs.server.js":"plugins/c9.vfs.server/vfs.server.js","frontdoor|plugins/c9.vfs.server/vfs.server.js":"node_modules/frontdoor/frontdoor.js","http-error|plugins/c9.vfs.server/vfs.server.js":"node_modules/http-error/error.js","kaefer|plugins/c9.vfs.server/vfs.server.js":"node_modules/kaefer/index.js","amd-loader|node_modules/kaefer/index.js":"node_modules/amd-loader/amd-loader.js","node_modules/kaefer/lib/server":"node_modules/kaefer/lib/server.js","node_modules/kaefer/lib/util":"node_modules/kaefer/lib/util.js","node_modules/kaefer/lib/reliable_socket":"node_modules/kaefer/lib/reliable_socket.js","node_modules/kaefer/lib/reconnect_socket":"node_modules/kaefer/lib/reconnect_socket.js","node_modules/kaefer/lib/version":"node_modules/kaefer/lib/version.js","node_modules/kaefer/lib/client":"node_modules/kaefer/lib/client.js","c9/ratelimit|plugins/c9.vfs.server/vfs.server.js":"node_modules/c9/ratelimit.js","http-error|node_modules/c9/ratelimit.js":"node_modules/http-error/error.js","limiter|node_modules/c9/ratelimit.js":"node_modules/limiter/index.js","node_modules/limiter/lib/rateLimiter":"node_modules/limiter/lib/rateLimiter.js","node_modules/limiter/lib/tokenBucket":"node_modules/limiter/lib/tokenBucket.js","c9/request_timeout|plugins/c9.vfs.server/vfs.server.js":"node_modules/c9/request_timeout.js","plugins/c9.error/logger.raygun_noop.js|plugins/c9.error/logger.raygun_noop.js":"plugins/c9.error/logger.raygun_noop.js","plugins/c9.preview/preview.handler.js|plugins/c9.preview/preview.handler.js":"plugins/c9.preview/preview.handler.js","http-error|plugins/c9.preview/preview.handler.js":"node_modules/http-error/error.js","mime|plugins/c9.preview/preview.handler.js":"node_modules/mime/mime.js","c9/cache|plugins/c9.preview/preview.handler.js":"node_modules/c9/cache.js","debug|plugins/c9.preview/preview.handler.js":"node_modules/debug/lib/debug.js","plugins/c9.ide.language.html.diff/HTMLSimpleDOM":"plugins/c9.ide.language.html.diff/HTMLSimpleDOM.js","plugins/c9.ide.language.html.diff/HTMLTokenizer":"plugins/c9.ide.language.html.diff/HTMLTokenizer.js","plugins/c9.ide.language.html.diff/murmurhash3_gc":"plugins/c9.ide.language.html.diff/murmurhash3_gc.js","plugins/c9.vfs.server/cache.js|plugins/c9.vfs.server/cache.js":"plugins/c9.vfs.server/cache.js","async|plugins/c9.vfs.server/cache.js":"node_modules/async/lib/async.js","c9/uid|plugins/c9.vfs.server/cache.js":"node_modules/c9/uid.js","http-error|plugins/c9.vfs.server/cache.js":"node_modules/http-error/error.js","plugins/c9.vfs.server/download.js|plugins/c9.vfs.server/download.js":"plugins/c9.vfs.server/download.js","http-error|plugins/c9.vfs.server/download.js":"node_modules/http-error/error.js","plugins/c9.vfs.server/filelist.js|plugins/c9.vfs.server/filelist.js":"plugins/c9.vfs.server/filelist.js","http-error|plugins/c9.vfs.server/filelist.js":"node_modules/http-error/error.js","plugins/c9.vfs.server/fetchcache.js|plugins/c9.vfs.server/fetchcache.js":"plugins/c9.vfs.server/fetchcache.js","http-error|plugins/c9.vfs.server/fetchcache.js":"node_modules/http-error/error.js","async|plugins/c9.vfs.server/fetchcache.js":"node_modules/async/lib/async.js","plugins/c9.vfs.server/statics.js|plugins/c9.vfs.server/statics.js":"plugins/c9.vfs.server/statics.js","engine.io-client/engine.io.js|plugins/c9.vfs.server/statics.js":"node_modules/engine.io-client/engine.io.js","kaefer/lib/client|plugins/c9.vfs.server/statics.js":"node_modules/kaefer/lib/client.js","smith|plugins/c9.vfs.server/statics.js":"node_modules/smith/smith.js","msgpack-js|node_modules/smith/smith.js":"node_modules/msgpack-js/msgpack.js","vfs-socket/consumer|plugins/c9.vfs.server/statics.js":"node_modules/vfs-socket/consumer.js","smith|node_modules/vfs-socket/consumer.js":"node_modules/smith/smith.js","msgpack-js-browser|plugins/c9.vfs.server/statics.js":"node_modules/msgpack-js-browser/msgpack.js","architect-build/build_support/mini_require|plugins/c9.vfs.server/statics.js":"node_modules/architect-build/build_support/mini_require.js","plugins/c9.analytics/mock_analytics.js|plugins/c9.analytics/mock_analytics.js":"plugins/c9.analytics/mock_analytics.js","plugins/c9.metrics/mock_metrics.js|plugins/c9.metrics/mock_metrics.js":"plugins/c9.metrics/mock_metrics.js","plugins/c9.vfs.server/vfs.connect.standalone.js|plugins/c9.vfs.server/vfs.connect.standalone.js":"plugins/c9.vfs.server/vfs.connect.standalone.js","plugins/c9.vfs.server/vfs":"plugins/c9.vfs.server/vfs.js","kaefer|plugins/c9.vfs.server/vfs.js":"node_modules/kaefer/index.js","smith|plugins/c9.vfs.server/vfs.js":"node_modules/smith/smith.js","engine.io|plugins/c9.vfs.server/vfs.js":"node_modules/engine.io/lib/engine.io.js","node_modules/engine.io/lib/server":"node_modules/engine.io/lib/server.js","base64id|node_modules/engine.io/lib/server.js":"node_modules/base64id/lib/base64id.js","node_modules/engine.io/lib/transports":"node_modules/engine.io/lib/transports/index.js","node_modules/engine.io/lib/transports/polling-xhr":"node_modules/engine.io/lib/transports/polling-xhr.js","node_modules/engine.io/lib/transports/polling":"node_modules/engine.io/lib/transports/polling.js","node_modules/engine.io/lib/transport":"node_modules/engine.io/lib/transport.js","engine.io-parser|node_modules/engine.io/lib/transport.js":"node_modules/engine.io/node_modules/engine.io-parser/index.js","node_modules/engine.io/node_modules/engine.io-parser/lib":"node_modules/engine.io/node_modules/engine.io-parser/lib/index.js","utf8|node_modules/engine.io/node_modules/engine.io-parser/lib/index.js":"node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/utf8.js","after|node_modules/engine.io/node_modules/engine.io-parser/lib/index.js":"node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/index.js","node_modules/engine.io/node_modules/engine.io-parser/lib/keys":"node_modules/engine.io/node_modules/engine.io-parser/lib/keys.js","debug|node_modules/engine.io/lib/transport.js":"node_modules/engine.io/node_modules/debug/node.js","node_modules/engine.io/node_modules/debug/debug":"node_modules/engine.io/node_modules/debug/debug.js","ms|node_modules/engine.io/node_modules/debug/debug.js":"node_modules/engine.io/node_modules/debug/node_modules/ms/index.js","engine.io-parser|node_modules/engine.io/lib/transports/polling.js":"node_modules/engine.io/node_modules/engine.io-parser/index.js","accepts|node_modules/engine.io/lib/transports/polling.js":"node_modules/engine.io/node_modules/accepts/index.js","negotiator|node_modules/engine.io/node_modules/accepts/index.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/negotiator.js","node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/charset.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/charset.js","node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/encoding.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/encoding.js","node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/language.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/language.js","node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/mediaType.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/mediaType.js","mime-types|node_modules/engine.io/node_modules/accepts/index.js":"node_modules/engine.io/node_modules/accepts/node_modules/mime-types/index.js","mime-db|node_modules/engine.io/node_modules/accepts/node_modules/mime-types/index.js":"node_modules/engine.io/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js","node_modules/engine.io/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json":"node_modules/engine.io/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json","debug|node_modules/engine.io/lib/transports/polling.js":"node_modules/engine.io/node_modules/debug/node.js","debug|node_modules/engine.io/lib/transports/polling-xhr.js":"node_modules/engine.io/node_modules/debug/node.js","node_modules/engine.io/lib/transports/polling-jsonp":"node_modules/engine.io/lib/transports/polling-jsonp.js","node_modules/engine.io/lib/transports/websocket":"node_modules/engine.io/lib/transports/websocket.js","engine.io-parser|node_modules/engine.io/lib/transports/websocket.js":"node_modules/engine.io/node_modules/engine.io-parser/index.js","debug|node_modules/engine.io/lib/transports/websocket.js":"node_modules/engine.io/node_modules/debug/node.js","node_modules/engine.io/lib/socket":"node_modules/engine.io/lib/socket.js","debug|node_modules/engine.io/lib/socket.js":"node_modules/engine.io/node_modules/debug/node.js","ws|node_modules/engine.io/lib/server.js":"node_modules/ws/index.js","node_modules/ws/lib/WebSocket":"node_modules/ws/lib/WebSocket.js","ultron|node_modules/ws/lib/WebSocket.js":"node_modules/ws/node_modules/ultron/index.js","options|node_modules/ws/lib/WebSocket.js":"node_modules/ws/node_modules/options/lib/options.js","node_modules/ws/lib/Sender":"node_modules/ws/lib/Sender.js","node_modules/ws/lib/ErrorCodes":"node_modules/ws/lib/ErrorCodes.js","node_modules/ws/lib/BufferUtil":"node_modules/ws/lib/BufferUtil.js","node_modules/ws/lib/BufferUtil.fallback":"node_modules/ws/lib/BufferUtil.fallback.js","node_modules/ws/lib/PerMessageDeflate":"node_modules/ws/lib/PerMessageDeflate.js","node_modules/ws/lib/Receiver":"node_modules/ws/lib/Receiver.js","node_modules/ws/lib/Validation":"node_modules/ws/lib/Validation.js","node_modules/ws/lib/Validation.fallback":"node_modules/ws/lib/Validation.fallback.js","node_modules/ws/lib/BufferPool":"node_modules/ws/lib/BufferPool.js","node_modules/ws/lib/Sender.hixie":"node_modules/ws/lib/Sender.hixie.js","node_modules/ws/lib/Receiver.hixie":"node_modules/ws/lib/Receiver.hixie.js","node_modules/ws/lib/Extensions":"node_modules/ws/lib/Extensions.js","node_modules/ws/lib/WebSocketServer":"node_modules/ws/lib/WebSocketServer.js","options|node_modules/ws/lib/WebSocketServer.js":"node_modules/ws/node_modules/options/lib/options.js","debug|node_modules/engine.io/lib/server.js":"node_modules/engine.io/node_modules/debug/node.js","engine.io-parser|node_modules/engine.io/lib/engine.io.js":"node_modules/engine.io/node_modules/engine.io-parser/index.js","vfs-http-adapter|plugins/c9.vfs.server/vfs.js":"node_modules/vfs-http-adapter/restful.js","node_modules/vfs-http-adapter/multipart":"node_modules/vfs-http-adapter/multipart.js","vfs-socket/worker|plugins/c9.vfs.server/vfs.js":"node_modules/vfs-socket/worker.js","smith|node_modules/vfs-socket/worker.js":"node_modules/smith/smith.js","plugins/c9.vfs.server/vfs_wrapper":"plugins/c9.vfs.server/vfs_wrapper.js","http-error|plugins/c9.vfs.server/vfs_wrapper.js":"node_modules/http-error/error.js","plugins/c9.vfs.server/vfs_proxy":"plugins/c9.vfs.server/vfs_proxy.js","vfs-child|plugins/c9.vfs.server/vfs.connect.standalone.js":"node_modules/vfs-child/parent.js","vfs-socket/consumer|node_modules/vfs-child/parent.js":"node_modules/vfs-socket/consumer.js","node_modules/vfs-child/child.js":"node_modules/vfs-child/child.js","vfs-socket/worker|node_modules/vfs-child/child.js":"node_modules/vfs-socket/worker.js","vfs-local|node_modules/vfs-child/child.js":"node_modules/vfs-local/localfs.js","simple-mime|node_modules/vfs-local/localfs.js":"node_modules/simple-mime/simple-mime.js","vfs-local|node_modules/vfs-child/parent.js":"node_modules/vfs-local/localfs.js","plugins/c9.static/cdn.js|plugins/c9.static/cdn.js":"plugins/c9.static/cdn.js","send|plugins/c9.static/cdn.js":"node_modules/send/index.js","mkdirp|plugins/c9.static/cdn.js":"node_modules/mkdirp/index.js","c9/atomic|plugins/c9.static/cdn.js":"node_modules/c9/atomic.js","tmp|node_modules/c9/atomic.js":"node_modules/tmp/lib/tmp.js","os-tmpdir|node_modules/tmp/lib/tmp.js":"node_modules/tmp/node_modules/os-tmpdir/index.js","async|node_modules/c9/atomic.js":"node_modules/async/lib/async.js","http-error|plugins/c9.static/cdn.js":"node_modules/http-error/error.js","frontdoor|plugins/c9.static/cdn.js":"node_modules/frontdoor/frontdoor.js","architect-build/module-deps|plugins/c9.static/cdn.js":"node_modules/architect-build/module-deps.js","through|node_modules/architect-build/module-deps.js":"node_modules/through/index.js","plugins/c9.static/build.js|plugins/c9.static/build.js":"plugins/c9.static/build.js","http-error|plugins/c9.static/build.js":"node_modules/http-error/error.js","architect-build/build|plugins/c9.static/build.js":"node_modules/architect-build/build.js","async|node_modules/architect-build/build.js":"node_modules/async/lib/async.js","mkdirp|node_modules/architect-build/build.js":"node_modules/mkdirp/index.js","node_modules/architect-build/module-deps":"node_modules/architect-build/module-deps.js","node_modules/architect-build/compress":"node_modules/architect-build/compress.js","uglify-js|node_modules/architect-build/compress.js":"node_modules/uglify-js/tools/node.js","source-map|node_modules/uglify-js/tools/node.js":"node_modules/uglify-js/node_modules/source-map/source-map.js","node_modules/uglify-js/node_modules/source-map/lib/source-map-generator":"node_modules/uglify-js/node_modules/source-map/lib/source-map-generator.js","node_modules/uglify-js/node_modules/source-map/lib/base64-vlq":"node_modules/uglify-js/node_modules/source-map/lib/base64-vlq.js","node_modules/uglify-js/node_modules/source-map/lib/base64":"node_modules/uglify-js/node_modules/source-map/lib/base64.js","node_modules/uglify-js/node_modules/source-map/lib/util":"node_modules/uglify-js/node_modules/source-map/lib/util.js","node_modules/uglify-js/node_modules/source-map/lib/array-set":"node_modules/uglify-js/node_modules/source-map/lib/array-set.js","node_modules/uglify-js/node_modules/source-map/lib/mapping-list":"node_modules/uglify-js/node_modules/source-map/lib/mapping-list.js","node_modules/uglify-js/node_modules/source-map/lib/source-map-consumer":"node_modules/uglify-js/node_modules/source-map/lib/source-map-consumer.js","node_modules/uglify-js/node_modules/source-map/lib/binary-search":"node_modules/uglify-js/node_modules/source-map/lib/binary-search.js","node_modules/uglify-js/node_modules/source-map/lib/quick-sort":"node_modules/uglify-js/node_modules/source-map/lib/quick-sort.js","node_modules/uglify-js/node_modules/source-map/lib/source-node":"node_modules/uglify-js/node_modules/source-map/lib/source-node.js","less|node_modules/architect-build/build.js":"node_modules/less/index.js","node_modules/less/lib/less-node":"node_modules/less/lib/less-node/index.js","node_modules/less/lib/less-node/environment":"node_modules/less/lib/less-node/environment.js","mime|node_modules/less/lib/less-node/environment.js":"node_modules/mime/mime.js","source-map|node_modules/less/lib/less-node/environment.js":"node_modules/less/node_modules/source-map/source-map.js","node_modules/less/node_modules/source-map/lib/source-map-generator":"node_modules/less/node_modules/source-map/lib/source-map-generator.js","node_modules/less/node_modules/source-map/lib/base64-vlq":"node_modules/less/node_modules/source-map/lib/base64-vlq.js","node_modules/less/node_modules/source-map/lib/base64":"node_modules/less/node_modules/source-map/lib/base64.js","node_modules/less/node_modules/source-map/lib/util":"node_modules/less/node_modules/source-map/lib/util.js","node_modules/less/node_modules/source-map/lib/array-set":"node_modules/less/node_modules/source-map/lib/array-set.js","node_modules/less/node_modules/source-map/lib/mapping-list":"node_modules/less/node_modules/source-map/lib/mapping-list.js","node_modules/less/node_modules/source-map/lib/source-map-consumer":"node_modules/less/node_modules/source-map/lib/source-map-consumer.js","node_modules/less/node_modules/source-map/lib/binary-search":"node_modules/less/node_modules/source-map/lib/binary-search.js","node_modules/less/node_modules/source-map/lib/quick-sort":"node_modules/less/node_modules/source-map/lib/quick-sort.js","node_modules/less/node_modules/source-map/lib/source-node":"node_modules/less/node_modules/source-map/lib/source-node.js","node_modules/less/lib/less-node/file-manager":"node_modules/less/lib/less-node/file-manager.js","node_modules/less/lib/less-node/fs":"node_modules/less/lib/less-node/fs.js","graceful-fs|node_modules/less/lib/less-node/fs.js":"node_modules/less/node_modules/graceful-fs/graceful-fs.js","node_modules/less/node_modules/graceful-fs/polyfills.js":"node_modules/less/node_modules/graceful-fs/polyfills.js","node_modules/less/node_modules/graceful-fs/fs.js":"node_modules/less/node_modules/graceful-fs/fs.js","node_modules/less/node_modules/graceful-fs/legacy-streams.js":"node_modules/less/node_modules/graceful-fs/legacy-streams.js","node_modules/less/lib/less/environment/abstract-file-manager.js":"node_modules/less/lib/less/environment/abstract-file-manager.js","promise|node_modules/less/lib/less-node/file-manager.js":"node_modules/less/node_modules/promise/index.js","node_modules/less/node_modules/promise/lib":"node_modules/less/node_modules/promise/lib/index.js","node_modules/less/node_modules/promise/lib/core.js":"node_modules/less/node_modules/promise/lib/core.js","asap/raw|node_modules/less/node_modules/promise/lib/core.js":"node_modules/less/node_modules/promise/node_modules/asap/raw.js","node_modules/less/node_modules/promise/lib/done.js":"node_modules/less/node_modules/promise/lib/done.js","node_modules/less/node_modules/promise/lib/finally.js":"node_modules/less/node_modules/promise/lib/finally.js","node_modules/less/node_modules/promise/lib/es6-extensions.js":"node_modules/less/node_modules/promise/lib/es6-extensions.js","node_modules/less/node_modules/promise/lib/node-extensions.js":"node_modules/less/node_modules/promise/lib/node-extensions.js","asap|node_modules/less/node_modules/promise/lib/node-extensions.js":"node_modules/less/node_modules/promise/node_modules/asap/asap.js","node_modules/less/node_modules/promise/node_modules/asap/raw":"node_modules/less/node_modules/promise/node_modules/asap/raw.js","node_modules/less/node_modules/promise/lib/synchronous.js":"node_modules/less/node_modules/promise/lib/synchronous.js","node_modules/less/lib/less-node/url-file-manager":"node_modules/less/lib/less-node/url-file-manager.js","node_modules/less/lib/less/logger":"node_modules/less/lib/less/logger.js","promise|node_modules/less/lib/less-node/url-file-manager.js":"node_modules/less/node_modules/promise/index.js","request|node_modules/less/lib/less-node/url-file-manager.js":"node_modules/less/node_modules/request/index.js","extend|node_modules/less/node_modules/request/index.js":"node_modules/less/node_modules/request/node_modules/extend/index.js","node_modules/less/node_modules/request/lib/cookies":"node_modules/less/node_modules/request/lib/cookies.js","tough-cookie|node_modules/less/node_modules/request/lib/cookies.js":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/cookie.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pubsuffix":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/store":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/store.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/memstore":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/memstore.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/permuteDomain":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pathMatch":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js","node_modules/less/node_modules/request/node_modules/tough-cookie/package.json":"node_modules/less/node_modules/request/node_modules/tough-cookie/package.json","node_modules/less/node_modules/request/lib/helpers":"node_modules/less/node_modules/request/lib/helpers.js","json-stringify-safe|node_modules/less/node_modules/request/lib/helpers.js":"node_modules/less/node_modules/request/node_modules/json-stringify-safe/stringify.js","safe-buffer|node_modules/less/node_modules/request/lib/helpers.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","node_modules/less/node_modules/request/request":"node_modules/less/node_modules/request/request.js","hawk|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/hawk/lib/index.js","boom|node_modules/less/node_modules/request/node_modules/hawk/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js","hoek|node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js","node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js","sntp|node_modules/less/node_modules/request/node_modules/hawk/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/index.js","node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/lib":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js","hoek|node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js","node_modules/less/node_modules/request/node_modules/hawk/lib/server":"node_modules/less/node_modules/request/node_modules/hawk/lib/server.js","boom|node_modules/less/node_modules/request/node_modules/hawk/lib/server.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js","hoek|node_modules/less/node_modules/request/node_modules/hawk/lib/server.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js","cryptiles|node_modules/less/node_modules/request/node_modules/hawk/lib/server.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js","boom|node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js","node_modules/less/node_modules/request/node_modules/hawk/lib/crypto":"node_modules/less/node_modules/request/node_modules/hawk/lib/crypto.js","node_modules/less/node_modules/request/node_modules/hawk/lib/utils":"node_modules/less/node_modules/request/node_modules/hawk/lib/utils.js","sntp|node_modules/less/node_modules/request/node_modules/hawk/lib/utils.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/index.js","boom|node_modules/less/node_modules/request/node_modules/hawk/lib/utils.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js","node_modules/less/node_modules/request/node_modules/hawk/package.json":"node_modules/less/node_modules/request/node_modules/hawk/package.json","node_modules/less/node_modules/request/node_modules/hawk/lib/client":"node_modules/less/node_modules/request/node_modules/hawk/lib/client.js","hoek|node_modules/less/node_modules/request/node_modules/hawk/lib/client.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js","cryptiles|node_modules/less/node_modules/request/node_modules/hawk/lib/client.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js","aws-sign2|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/aws-sign2/index.js","aws4|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/aws4/aws4.js","node_modules/less/node_modules/request/node_modules/aws4/lru":"node_modules/less/node_modules/request/node_modules/aws4/lru.js","http-signature|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/http-signature/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/lib/parser":"node_modules/less/node_modules/request/node_modules/http-signature/lib/parser.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/lib/parser.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/lib/utils":"node_modules/less/node_modules/request/node_modules/http-signature/lib/utils.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/lib/utils.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js","sshpk|node_modules/less/node_modules/request/node_modules/http-signature/lib/utils.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/algs":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/algs.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","ecc-jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/index.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/index.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","ecc-jsbn/lib/ec|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","tweetnacl|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","tweetnacl|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/index":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/errors":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/types":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/types.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/reader":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/writer":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","bcrypt-pbkdf|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/index.js","tweetnacl|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/index.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","tweetnacl|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/lib/signer":"node_modules/less/node_modules/request/node_modules/http-signature/lib/signer.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/lib/signer.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js","sshpk|node_modules/less/node_modules/request/node_modules/http-signature/lib/signer.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js","jsprim|node_modules/less/node_modules/request/node_modules/http-signature/lib/signer.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus/assert.js","extsprintf|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/lib/extsprintf.js","verror|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus/assert.js","extsprintf|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/lib/extsprintf.js","core-util-is|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/node_modules/core-util-is/lib/util.js","json-schema|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/validate.js","node_modules/less/node_modules/request/node_modules/http-signature/lib/verify":"node_modules/less/node_modules/request/node_modules/http-signature/lib/verify.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/lib/verify.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js","sshpk|node_modules/less/node_modules/request/node_modules/http-signature/lib/verify.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js","mime-types|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/mime-types/index.js","mime-db|node_modules/less/node_modules/request/node_modules/mime-types/index.js":"node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js","node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json":"node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json","stringstream|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/stringstream/stringstream.js","caseless|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/caseless/index.js","forever-agent|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/forever-agent/index.js","form-data|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/form-data/lib/form_data.js","combined-stream|node_modules/less/node_modules/request/node_modules/form-data/lib/form_data.js":"node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js","delayed-stream|node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js":"node_modules/less/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js","mime-types|node_modules/less/node_modules/request/node_modules/form-data/lib/form_data.js":"node_modules/less/node_modules/request/node_modules/mime-types/index.js","asynckit|node_modules/less/node_modules/request/node_modules/form-data/lib/form_data.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/index.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/parallel.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/parallel.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/iterate.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/iterate.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/async.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/async.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/defer.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/defer.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/abort.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/abort.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/state.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/state.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/terminator.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/terminator.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/serial.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/serial.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/serialOrdered.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/serialOrdered.js","node_modules/less/node_modules/request/node_modules/form-data/lib/populate.js":"node_modules/less/node_modules/request/node_modules/form-data/lib/populate.js","extend|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/extend/index.js","isstream|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/isstream/isstream.js","is-typedarray|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/is-typedarray/index.js","node_modules/less/node_modules/request/lib/getProxyFromURI":"node_modules/less/node_modules/request/lib/getProxyFromURI.js","node_modules/less/node_modules/request/lib/querystring":"node_modules/less/node_modules/request/lib/querystring.js","qs|node_modules/less/node_modules/request/lib/querystring.js":"node_modules/less/node_modules/request/node_modules/qs/lib/index.js","node_modules/less/node_modules/request/node_modules/qs/lib/stringify":"node_modules/less/node_modules/request/node_modules/qs/lib/stringify.js","node_modules/less/node_modules/request/node_modules/qs/lib/utils":"node_modules/less/node_modules/request/node_modules/qs/lib/utils.js","node_modules/less/node_modules/request/node_modules/qs/lib/formats":"node_modules/less/node_modules/request/node_modules/qs/lib/formats.js","node_modules/less/node_modules/request/node_modules/qs/lib/parse":"node_modules/less/node_modules/request/node_modules/qs/lib/parse.js","node_modules/less/node_modules/request/lib/har":"node_modules/less/node_modules/request/lib/har.js","har-validator|node_modules/less/node_modules/request/lib/har.js":"node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/promise.js","har-schema|node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/promise.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/afterRequest.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/afterRequest.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/beforeRequest.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/beforeRequest.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/browser.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/browser.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/cache.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/cache.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/content.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/content.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/cookie.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/cookie.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/creator.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/creator.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/entry.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/entry.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/har.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/har.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/header.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/header.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/log.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/log.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/page.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/page.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/pageTimings.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/pageTimings.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/postData.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/postData.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/query.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/query.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/request.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/request.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/response.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/response.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/timings.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/timings.json","ajv|node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/promise.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/ajv.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/resolve":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/resolve.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/equal":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/equal.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/util":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/util.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/ucs2length":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/ucs2length.js","json-stable-stringify|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/util.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/index.js","jsonify|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/index.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/lib/parse":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/lib/parse.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/lib/stringify":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/lib/stringify.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/schema_obj":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/schema_obj.js","json-stable-stringify|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/index.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/async":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/async.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/validate":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/validate.js","co|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/index.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/validation_error":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/validation_error.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/cache":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/cache.js","json-stable-stringify|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/ajv.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/formats":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/formats.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/rules":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/rules.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/_rules":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/_rules.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/ref":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/ref.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/allOf":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/allOf.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/anyOf":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/anyOf.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/dependencies":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/dependencies.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/enum":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/enum.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/format":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/format.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/items":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/items.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limit":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limit.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitItems":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitItems.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitLength":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitLength.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitProperties":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitProperties.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/multipleOf":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/multipleOf.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/not":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/not.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/oneOf":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/oneOf.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/pattern":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/pattern.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/properties":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/properties.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/required":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/required.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/uniqueItems":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/uniqueItems.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/v5":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/v5.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/switch":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/switch.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/constant":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/constant.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_formatLimit":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_formatLimit.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/patternRequired":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/patternRequired.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-v5.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-v5.json","co|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/ajv.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/keyword":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/keyword.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/custom":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/custom.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-draft-04.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-draft-04.json","node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/error":"node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/error.js","extend|node_modules/less/node_modules/request/lib/har.js":"node_modules/less/node_modules/request/node_modules/extend/index.js","node_modules/less/node_modules/request/lib/auth":"node_modules/less/node_modules/request/lib/auth.js","caseless|node_modules/less/node_modules/request/lib/auth.js":"node_modules/less/node_modules/request/node_modules/caseless/index.js","uuid|node_modules/less/node_modules/request/lib/auth.js":"node_modules/less/node_modules/request/node_modules/uuid/index.js","node_modules/less/node_modules/request/node_modules/uuid/v1":"node_modules/less/node_modules/request/node_modules/uuid/v1.js","node_modules/less/node_modules/request/node_modules/uuid/lib/rng":"node_modules/less/node_modules/request/node_modules/uuid/lib/rng.js","node_modules/less/node_modules/request/node_modules/uuid/lib/bytesToUuid":"node_modules/less/node_modules/request/node_modules/uuid/lib/bytesToUuid.js","node_modules/less/node_modules/request/node_modules/uuid/v4":"node_modules/less/node_modules/request/node_modules/uuid/v4.js","node_modules/less/node_modules/request/lib/oauth":"node_modules/less/node_modules/request/lib/oauth.js","qs|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/qs/lib/index.js","caseless|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/caseless/index.js","uuid|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/uuid/index.js","oauth-sign|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/oauth-sign/index.js","safe-buffer|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","node_modules/less/node_modules/request/lib/multipart":"node_modules/less/node_modules/request/lib/multipart.js","uuid|node_modules/less/node_modules/request/lib/multipart.js":"node_modules/less/node_modules/request/node_modules/uuid/index.js","combined-stream|node_modules/less/node_modules/request/lib/multipart.js":"node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js","isstream|node_modules/less/node_modules/request/lib/multipart.js":"node_modules/less/node_modules/request/node_modules/isstream/isstream.js","safe-buffer|node_modules/less/node_modules/request/lib/multipart.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","node_modules/less/node_modules/request/lib/redirect":"node_modules/less/node_modules/request/lib/redirect.js","node_modules/less/node_modules/request/lib/tunnel":"node_modules/less/node_modules/request/lib/tunnel.js","tunnel-agent|node_modules/less/node_modules/request/lib/tunnel.js":"node_modules/less/node_modules/request/node_modules/tunnel-agent/index.js","safe-buffer|node_modules/less/node_modules/request/node_modules/tunnel-agent/index.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","performance-now|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/performance-now/lib/performance-now.js","safe-buffer|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","node_modules/less/lib/less":"node_modules/less/lib/less/index.js","node_modules/less/lib/less/data":"node_modules/less/lib/less/data/index.js","node_modules/less/lib/less/data/colors":"node_modules/less/lib/less/data/colors.js","node_modules/less/lib/less/data/unit-conversions":"node_modules/less/lib/less/data/unit-conversions.js","node_modules/less/lib/less/tree":"node_modules/less/lib/less/tree/index.js","node_modules/less/lib/less/tree/node":"node_modules/less/lib/less/tree/node.js","node_modules/less/lib/less/tree/alpha":"node_modules/less/lib/less/tree/alpha.js","node_modules/less/lib/less/tree/color":"node_modules/less/lib/less/tree/color.js","node_modules/less/lib/less/tree/directive":"node_modules/less/lib/less/tree/directive.js","node_modules/less/lib/less/tree/selector":"node_modules/less/lib/less/tree/selector.js","node_modules/less/lib/less/tree/element":"node_modules/less/lib/less/tree/element.js","node_modules/less/lib/less/tree/paren":"node_modules/less/lib/less/tree/paren.js","node_modules/less/lib/less/tree/combinator":"node_modules/less/lib/less/tree/combinator.js","node_modules/less/lib/less/tree/ruleset":"node_modules/less/lib/less/tree/ruleset.js","node_modules/less/lib/less/tree/rule":"node_modules/less/lib/less/tree/rule.js","node_modules/less/lib/less/tree/value":"node_modules/less/lib/less/tree/value.js","node_modules/less/lib/less/tree/keyword":"node_modules/less/lib/less/tree/keyword.js","node_modules/less/lib/less/contexts":"node_modules/less/lib/less/contexts.js","node_modules/less/lib/less/functions/function-registry":"node_modules/less/lib/less/functions/function-registry.js","node_modules/less/lib/less/functions/default":"node_modules/less/lib/less/functions/default.js","node_modules/less/lib/less/tree/debug-info":"node_modules/less/lib/less/tree/debug-info.js","node_modules/less/lib/less/tree/detached-ruleset":"node_modules/less/lib/less/tree/detached-ruleset.js","node_modules/less/lib/less/tree/operation":"node_modules/less/lib/less/tree/operation.js","node_modules/less/lib/less/tree/dimension":"node_modules/less/lib/less/tree/dimension.js","node_modules/less/lib/less/tree/unit":"node_modules/less/lib/less/tree/unit.js","node_modules/less/lib/less/tree/variable":"node_modules/less/lib/less/tree/variable.js","node_modules/less/lib/less/tree/attribute":"node_modules/less/lib/less/tree/attribute.js","node_modules/less/lib/less/tree/quoted":"node_modules/less/lib/less/tree/quoted.js","node_modules/less/lib/less/tree/js-eval-node":"node_modules/less/lib/less/tree/js-eval-node.js","node_modules/less/lib/less/tree/expression":"node_modules/less/lib/less/tree/expression.js","node_modules/less/lib/less/tree/comment":"node_modules/less/lib/less/tree/comment.js","node_modules/less/lib/less/tree/call":"node_modules/less/lib/less/tree/call.js","node_modules/less/lib/less/functions/function-caller":"node_modules/less/lib/less/functions/function-caller.js","node_modules/less/lib/less/tree/url":"node_modules/less/lib/less/tree/url.js","node_modules/less/lib/less/tree/import":"node_modules/less/lib/less/tree/import.js","node_modules/less/lib/less/tree/media":"node_modules/less/lib/less/tree/media.js","node_modules/less/lib/less/tree/anonymous":"node_modules/less/lib/less/tree/anonymous.js","node_modules/less/lib/less/tree/mixin-call":"node_modules/less/lib/less/tree/mixin-call.js","node_modules/less/lib/less/tree/mixin-definition":"node_modules/less/lib/less/tree/mixin-definition.js","node_modules/less/lib/less/tree/javascript":"node_modules/less/lib/less/tree/javascript.js","node_modules/less/lib/less/tree/assignment":"node_modules/less/lib/less/tree/assignment.js","node_modules/less/lib/less/tree/condition":"node_modules/less/lib/less/tree/condition.js","node_modules/less/lib/less/tree/unicode-descriptor":"node_modules/less/lib/less/tree/unicode-descriptor.js","node_modules/less/lib/less/tree/negative":"node_modules/less/lib/less/tree/negative.js","node_modules/less/lib/less/tree/extend":"node_modules/less/lib/less/tree/extend.js","node_modules/less/lib/less/tree/ruleset-call":"node_modules/less/lib/less/tree/ruleset-call.js","node_modules/less/lib/less/environment/environment":"node_modules/less/lib/less/environment/environment.js","node_modules/less/lib/less/environment/abstract-file-manager":"node_modules/less/lib/less/environment/abstract-file-manager.js","node_modules/less/lib/less/visitors":"node_modules/less/lib/less/visitors/index.js","node_modules/less/lib/less/visitors/visitor":"node_modules/less/lib/less/visitors/visitor.js","node_modules/less/lib/less/visitors/import-visitor":"node_modules/less/lib/less/visitors/import-visitor.js","node_modules/less/lib/less/visitors/import-sequencer":"node_modules/less/lib/less/visitors/import-sequencer.js","node_modules/less/lib/less/visitors/set-tree-visibility-visitor":"node_modules/less/lib/less/visitors/set-tree-visibility-visitor.js","node_modules/less/lib/less/visitors/extend-visitor":"node_modules/less/lib/less/visitors/extend-visitor.js","node_modules/less/lib/less/visitors/join-selector-visitor":"node_modules/less/lib/less/visitors/join-selector-visitor.js","node_modules/less/lib/less/visitors/to-css-visitor":"node_modules/less/lib/less/visitors/to-css-visitor.js","node_modules/less/lib/less/parser/parser":"node_modules/less/lib/less/parser/parser.js","node_modules/less/lib/less/less-error":"node_modules/less/lib/less/less-error.js","node_modules/less/lib/less/utils":"node_modules/less/lib/less/utils.js","node_modules/less/lib/less/parser/parser-input":"node_modules/less/lib/less/parser/parser-input.js","node_modules/less/lib/less/parser/chunker":"node_modules/less/lib/less/parser/chunker.js","node_modules/less/lib/less/functions":"node_modules/less/lib/less/functions/index.js","node_modules/less/lib/less/functions/color":"node_modules/less/lib/less/functions/color.js","node_modules/less/lib/less/functions/color-blending":"node_modules/less/lib/less/functions/color-blending.js","node_modules/less/lib/less/functions/data-uri":"node_modules/less/lib/less/functions/data-uri.js","node_modules/less/lib/less/functions/math":"node_modules/less/lib/less/functions/math.js","node_modules/less/lib/less/functions/math-helper.js":"node_modules/less/lib/less/functions/math-helper.js","node_modules/less/lib/less/functions/number":"node_modules/less/lib/less/functions/number.js","node_modules/less/lib/less/functions/string":"node_modules/less/lib/less/functions/string.js","node_modules/less/lib/less/functions/svg":"node_modules/less/lib/less/functions/svg.js","node_modules/less/lib/less/functions/types":"node_modules/less/lib/less/functions/types.js","node_modules/less/lib/less/source-map-output":"node_modules/less/lib/less/source-map-output.js","node_modules/less/lib/less/source-map-builder":"node_modules/less/lib/less/source-map-builder.js","node_modules/less/lib/less/parse-tree":"node_modules/less/lib/less/parse-tree.js","node_modules/less/lib/less/transform-tree":"node_modules/less/lib/less/transform-tree.js","node_modules/less/lib/less/import-manager":"node_modules/less/lib/less/import-manager.js","node_modules/less/lib/less/plugins/function-importer":"node_modules/less/lib/less/plugins/function-importer.js","node_modules/less/lib/less/render":"node_modules/less/lib/less/render.js","promise|node_modules/less/lib/less/render.js":"node_modules/less/node_modules/promise/index.js","node_modules/less/lib/less/parse":"node_modules/less/lib/less/parse.js","node_modules/less/lib/less/plugin-manager":"node_modules/less/lib/less/plugin-manager.js","promise|node_modules/less/lib/less/parse.js":"node_modules/less/node_modules/promise/index.js","node_modules/less/lib/less-node/lessc-helper":"node_modules/less/lib/less-node/lessc-helper.js","node_modules/less/lib/less-node/plugin-loader":"node_modules/less/lib/less-node/plugin-loader.js","node_modules/less/lib/less-node/image-size":"node_modules/less/lib/less-node/image-size.js","image-size|node_modules/less/lib/less-node/image-size.js":"node_modules/less/node_modules/image-size/lib/index.js","node_modules/less/node_modules/image-size/lib/detector":"node_modules/less/node_modules/image-size/lib/detector.js","node_modules/less/node_modules/image-size/lib/types":"node_modules/less/node_modules/image-size/lib/types.js","node_modules/less/node_modules/image-size/lib/types/bmp":"node_modules/less/node_modules/image-size/lib/types/bmp.js","node_modules/less/node_modules/image-size/lib/types/dds":"node_modules/less/node_modules/image-size/lib/types/dds.js","node_modules/less/node_modules/image-size/lib/types/gif":"node_modules/less/node_modules/image-size/lib/types/gif.js","node_modules/less/node_modules/image-size/lib/types/jpg":"node_modules/less/node_modules/image-size/lib/types/jpg.js","node_modules/less/node_modules/image-size/lib/types/png":"node_modules/less/node_modules/image-size/lib/types/png.js","node_modules/less/node_modules/image-size/lib/types/psd":"node_modules/less/node_modules/image-size/lib/types/psd.js","node_modules/less/node_modules/image-size/lib/types/svg":"node_modules/less/node_modules/image-size/lib/types/svg.js","node_modules/less/node_modules/image-size/lib/types/tiff":"node_modules/less/node_modules/image-size/lib/types/tiff.js","node_modules/less/node_modules/image-size/lib/readUInt":"node_modules/less/node_modules/image-size/lib/readUInt.js","node_modules/less/node_modules/image-size/lib/types/webp":"node_modules/less/node_modules/image-size/lib/types/webp.js","scripts/makestatic.js":"scripts/makestatic.js","amd-loader|scripts/makestatic.js":"node_modules/amd-loader/amd-loader.js","c9/setup_paths.js|scripts/makestatic.js":"node_modules/c9/setup_paths.js","architect|scripts/makestatic.js":"node_modules/architect/architect.js","optimist|scripts/makestatic.js":"node_modules/optimist/index.js","!config":{"connect-architect/connect":{"packagePath":"node_modules/connect-architect/connect/connect-plugin.js","consumes":[],"provides":["connect","http"]},"connect-architect/connect.basicauth":{"packagePath":"node_modules/connect-architect/connect.basicauth/basicauth-plugin.js","consumes":["connect"],"provides":[]},"connect-architect/connect.static":{"packagePath":"node_modules/connect-architect/connect.static/static-plugin.js","consumes":["connect"],"provides":["connect.static"]},"./c9.error/error_handler":{"packagePath":"plugins/c9.error/error_handler.js","consumes":["connect","connect.static","connect.render","connect.render.ejs"],"provides":["connect.error"]},"connect-architect/connect.remote-address":{"packagePath":"node_modules/connect-architect/connect.remote-address/remote-address.js","consumes":["connect"],"provides":["connect.remote-address"]},"connect-architect/connect.render":{"packagePath":"node_modules/connect-architect/connect.render/render.js","consumes":["connect"],"provides":["connect.render"]},"connect-architect/connect.render.ejs":{"packagePath":"node_modules/connect-architect/connect.render.ejs/render-ejs.js","consumes":["connect.render"],"provides":["connect.render.ejs"]},"connect-architect/connect.redirect":{"packagePath":"node_modules/connect-architect/connect.redirect/redirect.js","consumes":["connect"],"provides":["connect.redirect"]},"connect-architect/connect.cors":{"packagePath":"node_modules/connect-architect/connect.cors/cors.js","consumes":["connect"],"provides":["connect.cors"]},"./c9.connect.favicon/favicon":{"packagePath":"plugins/c9.connect.favicon/favicon.js","consumes":["connect"],"provides":["connect.favicon"]},"./c9.core/ext":{"packagePath":"plugins/c9.core/ext.js","consumes":["app"],"provides":["ext","Plugin"]},"./c9.ide.server/plugins":{"packagePath":"plugins/c9.ide.server/plugins.js","consumes":["Plugin","connect.static"],"provides":["c9.static.plugins"]},"./c9.preview/statics":{"packagePath":"plugins/c9.preview/statics.js","consumes":["connect.static"],"provides":[]},"./c9.nodeapi/nodeapi":{"packagePath":"plugins/c9.nodeapi/nodeapi.js","consumes":["connect.static"],"provides":["c9.static.node"]},"./c9.vfs.standalone/standalone":{"packagePath":"plugins/c9.vfs.standalone/standalone.js","consumes":["connect.static","connect","preview.handler","connect.render","connect.render.ejs"],"provides":["api","passport"]},"./c9.vfs.server/vfs.server":{"packagePath":"plugins/c9.vfs.server/vfs.server.js","consumes":["api","passport","connect","connect.render","connect.render.ejs","connect.remote-address","vfs.cache","analytics"],"provides":["vfs.server"]},"./c9.error/logger.raygun_noop":{"packagePath":"plugins/c9.error/logger.raygun_noop.js","consumes":[],"provides":["error.logger"]},"./c9.preview/preview.handler":{"packagePath":"plugins/c9.preview/preview.handler.js","consumes":["connect.render","connect.render.ejs","connect.redirect","connect.static","error.logger","metrics"],"provides":["preview.handler"]},"./c9.vfs.server/cache":{"packagePath":"plugins/c9.vfs.server/cache.js","consumes":["Plugin","vfs.connect","metrics"],"provides":["vfs.cache"]},"./c9.vfs.server/download":{"packagePath":"plugins/c9.vfs.server/download.js","consumes":["Plugin","vfs.cache"],"provides":["vfs.download"]},"./c9.vfs.server/filelist":{"packagePath":"plugins/c9.vfs.server/filelist.js","consumes":["Plugin","vfs.cache","connect"],"provides":["vfs.filelist"]},"./c9.vfs.server/fetchcache":{"packagePath":"plugins/c9.vfs.server/fetchcache.js","consumes":["Plugin","vfs.cache","connect"],"provides":["vfs.fetchcache"]},"./c9.vfs.server/statics":{"packagePath":"plugins/c9.vfs.server/statics.js","consumes":["Plugin","connect.static"],"provides":["smithio.server"]},"./c9.analytics/mock_analytics":{"packagePath":"plugins/c9.analytics/mock_analytics.js","consumes":[],"provides":["analytics"]},"./c9.metrics/mock_metrics":{"packagePath":"plugins/c9.metrics/mock_metrics.js","consumes":[],"provides":["metrics"]},"./c9.vfs.server/vfs.connect.standalone":{"packagePath":"plugins/c9.vfs.server/vfs.connect.standalone.js","consumes":["Plugin","api"],"provides":["vfs.connect"]},"./c9.static/cdn":{"packagePath":"plugins/c9.static/cdn.js","consumes":["connect","connect.cors","connect.static","cdn.build"],"provides":[]},"./c9.static/build":{"packagePath":"plugins/c9.static/build.js","consumes":["Plugin","connect.static"],"provides":["cdn.build"]}}} \ No newline at end of file +{"server.js|server.js":"server.js","amd-loader|server.js":"node_modules/amd-loader/amd-loader.js","architect|server.js":"node_modules/architect/architect.js","c9/urls|server.js":"node_modules/c9/urls.js","c9/hostname|server.js":"node_modules/c9/hostname.js","c9/setup_paths.js|server.js":"node_modules/c9/setup_paths.js","optimist|server.js":"node_modules/optimist/index.js","minimist|node_modules/optimist/index.js":"node_modules/optimist/node_modules/minimist/index.js","wordwrap|node_modules/optimist/index.js":"node_modules/optimist/node_modules/wordwrap/index.js","async|server.js":"node_modules/async/lib/async.js","/mnt/workspace/newclient-sync-sdk/build/sdk/configs/standalone|/mnt/workspace/newclient-sync-sdk/build/sdk/configs/standalone":"configs/standalone.js","configs/utils/ssl":"configs/utils/ssl.js","server":"server.js","node_modules/connect-architect/connect|node_modules/connect-architect/connect":"node_modules/connect-architect/connect/connect-plugin.js","connect/lib/utils|node_modules/connect-architect/connect/connect-plugin.js":"node_modules/connect/lib/utils.js","cookie-signature|node_modules/connect/lib/utils.js":"node_modules/connect/node_modules/cookie-signature/index.js","pause|node_modules/connect/lib/utils.js":"node_modules/connect/node_modules/pause/index.js","bytes|node_modules/connect/lib/utils.js":"node_modules/connect/node_modules/bytes/index.js","netutil|node_modules/connect-architect/connect/connect-plugin.js":"node_modules/netutil/netutil.js","connect|node_modules/connect-architect/connect/connect-plugin.js":"node_modules/connect/index.js","node_modules/connect/lib/connect":"node_modules/connect/lib/connect.js","node_modules/connect/lib/proto":"node_modules/connect/lib/proto.js","node_modules/connect/lib/utils":"node_modules/connect/lib/utils.js","debug|node_modules/connect/lib/proto.js":"node_modules/debug/lib/debug.js","node_modules/connect/lib/patch":"node_modules/connect/lib/patch.js","node_modules/connect/lib/middleware/static":"node_modules/connect/lib/middleware/static.js","send|node_modules/connect/lib/middleware/static.js":"node_modules/send/index.js","node_modules/send/lib/send":"node_modules/send/lib/send.js","debug|node_modules/send/lib/send.js":"node_modules/debug/lib/debug.js","range-parser|node_modules/send/lib/send.js":"node_modules/send/node_modules/range-parser/index.js","mime|node_modules/send/lib/send.js":"node_modules/mime/mime.js","fresh|node_modules/send/lib/send.js":"node_modules/send/node_modules/fresh/index.js","node_modules/send/lib/utils":"node_modules/send/lib/utils.js","node_modules/connect/lib/middleware/basicAuth":"node_modules/connect/lib/middleware/basicAuth.js","node_modules/connect/lib/middleware/bodyParser":"node_modules/connect/lib/middleware/bodyParser.js","node_modules/connect/lib/middleware/multipart":"node_modules/connect/lib/middleware/multipart.js","multiparty|node_modules/connect/lib/middleware/multipart.js":"node_modules/connect/node_modules/multiparty/index.js","readable-stream|node_modules/connect/node_modules/multiparty/index.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/readable.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js","isarray|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/isarray/index.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits_browser.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits_browser.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js","string_decoder/|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_readable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/index.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_writable.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_duplex.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js","node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_transform.js","core-util-is|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/lib/util.js","inherits|node_modules/connect/node_modules/multiparty/node_modules/readable-stream/lib/_stream_passthrough.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/inherits.js","stream-counter|node_modules/connect/node_modules/multiparty/index.js":"node_modules/connect/node_modules/multiparty/node_modules/stream-counter/index.js","readable-stream|node_modules/connect/node_modules/multiparty/node_modules/stream-counter/index.js":"node_modules/connect/node_modules/multiparty/node_modules/readable-stream/readable.js","node_modules/connect/lib/middleware/limit":"node_modules/connect/lib/middleware/limit.js","qs|node_modules/connect/lib/middleware/multipart.js":"node_modules/qs/index.js","node_modules/connect/lib/middleware/urlencoded":"node_modules/connect/lib/middleware/urlencoded.js","raw-body|node_modules/connect/lib/middleware/urlencoded.js":"node_modules/connect/node_modules/raw-body/index.js","bytes|node_modules/connect/node_modules/raw-body/index.js":"node_modules/connect/node_modules/bytes/index.js","qs|node_modules/connect/lib/middleware/urlencoded.js":"node_modules/qs/index.js","node_modules/connect/lib/middleware/json":"node_modules/connect/lib/middleware/json.js","raw-body|node_modules/connect/lib/middleware/json.js":"node_modules/connect/node_modules/raw-body/index.js","node_modules/connect/lib/middleware/compress":"node_modules/connect/lib/middleware/compress.js","negotiator|node_modules/connect/lib/middleware/compress.js":"node_modules/connect/node_modules/negotiator/lib/negotiator.js","node_modules/connect/node_modules/negotiator/lib/charset.js":"node_modules/connect/node_modules/negotiator/lib/charset.js","node_modules/connect/node_modules/negotiator/lib/encoding.js":"node_modules/connect/node_modules/negotiator/lib/encoding.js","node_modules/connect/node_modules/negotiator/lib/language.js":"node_modules/connect/node_modules/negotiator/lib/language.js","node_modules/connect/node_modules/negotiator/lib/mediaType.js":"node_modules/connect/node_modules/negotiator/lib/mediaType.js","node_modules/connect/lib/middleware/cookieParser":"node_modules/connect/lib/middleware/cookieParser.js","cookie|node_modules/connect/lib/middleware/cookieParser.js":"node_modules/connect/node_modules/cookie/index.js","node_modules/connect/lib/middleware/cookieSession":"node_modules/connect/lib/middleware/cookieSession.js","node_modules/connect/lib/middleware/session/cookie":"node_modules/connect/lib/middleware/session/cookie.js","cookie|node_modules/connect/lib/middleware/session/cookie.js":"node_modules/connect/node_modules/cookie/index.js","debug|node_modules/connect/lib/middleware/cookieSession.js":"node_modules/debug/lib/debug.js","cookie-signature|node_modules/connect/lib/middleware/cookieSession.js":"node_modules/connect/node_modules/cookie-signature/index.js","buffer-crc32|node_modules/connect/lib/middleware/cookieSession.js":"node_modules/connect/node_modules/buffer-crc32/index.js","node_modules/connect/lib/middleware/csrf":"node_modules/connect/lib/middleware/csrf.js","uid2|node_modules/connect/lib/middleware/csrf.js":"node_modules/connect/node_modules/uid2/index.js","node_modules/connect/lib/middleware/directory":"node_modules/connect/lib/middleware/directory.js","batch|node_modules/connect/lib/middleware/directory.js":"node_modules/connect/node_modules/batch/index.js","negotiator|node_modules/connect/lib/middleware/directory.js":"node_modules/connect/node_modules/negotiator/lib/negotiator.js","node_modules/connect/lib/middleware/errorHandler":"node_modules/connect/lib/middleware/errorHandler.js","node_modules/connect/lib/middleware/favicon":"node_modules/connect/lib/middleware/favicon.js","node_modules/connect/lib/middleware/logger":"node_modules/connect/lib/middleware/logger.js","bytes|node_modules/connect/lib/middleware/logger.js":"node_modules/connect/node_modules/bytes/index.js","node_modules/connect/lib/middleware/methodOverride":"node_modules/connect/lib/middleware/methodOverride.js","methods|node_modules/connect/lib/middleware/methodOverride.js":"node_modules/connect/node_modules/methods/index.js","node_modules/connect/lib/middleware/query":"node_modules/connect/lib/middleware/query.js","qs|node_modules/connect/lib/middleware/query.js":"node_modules/qs/index.js","node_modules/connect/lib/middleware/responseTime":"node_modules/connect/lib/middleware/responseTime.js","node_modules/connect/lib/middleware/session":"node_modules/connect/lib/middleware/session.js","node_modules/connect/lib/middleware/session/session":"node_modules/connect/lib/middleware/session/session.js","debug|node_modules/connect/lib/middleware/session.js":"node_modules/debug/lib/debug.js","node_modules/connect/lib/middleware/session/memory":"node_modules/connect/lib/middleware/session/memory.js","node_modules/connect/lib/middleware/session/store":"node_modules/connect/lib/middleware/session/store.js","cookie-signature|node_modules/connect/lib/middleware/session.js":"node_modules/connect/node_modules/cookie-signature/index.js","uid2|node_modules/connect/lib/middleware/session.js":"node_modules/connect/node_modules/uid2/index.js","buffer-crc32|node_modules/connect/lib/middleware/session.js":"node_modules/connect/node_modules/buffer-crc32/index.js","node_modules/connect/lib/middleware/staticCache":"node_modules/connect/lib/middleware/staticCache.js","node_modules/connect/lib/cache":"node_modules/connect/lib/cache.js","fresh|node_modules/connect/lib/middleware/staticCache.js":"node_modules/connect/node_modules/fresh/index.js","node_modules/connect/lib/middleware/timeout":"node_modules/connect/lib/middleware/timeout.js","debug|node_modules/connect/lib/middleware/timeout.js":"node_modules/debug/lib/debug.js","node_modules/connect/lib/middleware/vhost":"node_modules/connect/lib/middleware/vhost.js","node_modules/connect-architect/connect.basicauth|node_modules/connect-architect/connect.basicauth":"node_modules/connect-architect/connect.basicauth/basicauth-plugin.js","node_modules/connect-architect/connect.static|node_modules/connect-architect/connect.static":"node_modules/connect-architect/connect.static/static-plugin.js","plugins/c9.error/error_handler.js|plugins/c9.error/error_handler.js":"plugins/c9.error/error_handler.js","http-error|plugins/c9.error/error_handler.js":"node_modules/http-error/error.js","frontdoor|plugins/c9.error/error_handler.js":"node_modules/frontdoor/frontdoor.js","amd-loader|node_modules/frontdoor/frontdoor.js":"node_modules/amd-loader/amd-loader.js","node_modules/frontdoor/lib/route":"node_modules/frontdoor/lib/route.js","node_modules/frontdoor/lib/types":"node_modules/frontdoor/lib/types.js","node_modules/frontdoor/lib/utils":"node_modules/frontdoor/lib/utils.js","http-error|node_modules/frontdoor/lib/route.js":"node_modules/http-error/error.js","node_modules/frontdoor/lib/section":"node_modules/frontdoor/lib/section.js","node_modules/frontdoor/lib/middleware":"node_modules/frontdoor/lib/middleware.js","http-error|node_modules/frontdoor/lib/middleware.js":"node_modules/http-error/error.js","node_modules/frontdoor/lib/api":"node_modules/frontdoor/lib/api.js","node_modules/connect-architect/connect.remote-address|node_modules/connect-architect/connect.remote-address":"node_modules/connect-architect/connect.remote-address/remote-address.js","node_modules/connect-architect/connect.render|node_modules/connect-architect/connect.render":"node_modules/connect-architect/connect.render/render.js","http-error|node_modules/connect-architect/connect.render/render.js":"node_modules/http-error/error.js","async|node_modules/connect-architect/connect.render/render.js":"node_modules/async/lib/async.js","node_modules/connect-architect/connect.render.ejs|node_modules/connect-architect/connect.render.ejs":"node_modules/connect-architect/connect.render.ejs/render-ejs.js","ejs|node_modules/connect-architect/connect.render.ejs/render-ejs.js":"node_modules/ejs/lib/ejs.js","node_modules/ejs/lib/utils":"node_modules/ejs/lib/utils.js","node_modules/ejs/lib/filters":"node_modules/ejs/lib/filters.js","node_modules/connect-architect/connect.redirect|node_modules/connect-architect/connect.redirect":"node_modules/connect-architect/connect.redirect/redirect.js","node_modules/connect-architect/connect.cors|node_modules/connect-architect/connect.cors":"node_modules/connect-architect/connect.cors/cors.js","plugins/c9.connect.favicon/favicon.js|plugins/c9.connect.favicon/favicon.js":"plugins/c9.connect.favicon/favicon.js","plugins/c9.core/ext.js|plugins/c9.core/ext.js":"plugins/c9.core/ext.js","events|plugins/c9.core/ext.js":"plugins/c9.nodeapi/events.js","plugins/c9.ide.server/ide-statics.js|plugins/c9.ide.server/ide-statics.js":"plugins/c9.ide.server/ide-statics.js","plugins/c9.preview/statics.js|plugins/c9.preview/statics.js":"plugins/c9.preview/statics.js","plugins/c9.nodeapi/nodeapi.js|plugins/c9.nodeapi/nodeapi.js":"plugins/c9.nodeapi/nodeapi.js","plugins/c9.vfs.standalone/standalone.js|plugins/c9.vfs.standalone/standalone.js":"plugins/c9.vfs.standalone/standalone.js","async|plugins/c9.vfs.standalone/standalone.js":"node_modules/async/lib/async.js","frontdoor|plugins/c9.vfs.standalone/standalone.js":"node_modules/frontdoor/frontdoor.js","plugins/c9.vfs.server/vfs.server.js|plugins/c9.vfs.server/vfs.server.js":"plugins/c9.vfs.server/vfs.server.js","frontdoor|plugins/c9.vfs.server/vfs.server.js":"node_modules/frontdoor/frontdoor.js","http-error|plugins/c9.vfs.server/vfs.server.js":"node_modules/http-error/error.js","kaefer|plugins/c9.vfs.server/vfs.server.js":"node_modules/kaefer/index.js","amd-loader|node_modules/kaefer/index.js":"node_modules/amd-loader/amd-loader.js","node_modules/kaefer/lib/server":"node_modules/kaefer/lib/server.js","node_modules/kaefer/lib/util":"node_modules/kaefer/lib/util.js","node_modules/kaefer/lib/reliable_socket":"node_modules/kaefer/lib/reliable_socket.js","node_modules/kaefer/lib/reconnect_socket":"node_modules/kaefer/lib/reconnect_socket.js","node_modules/kaefer/lib/version":"node_modules/kaefer/lib/version.js","node_modules/kaefer/lib/client":"node_modules/kaefer/lib/client.js","c9/ratelimit|plugins/c9.vfs.server/vfs.server.js":"node_modules/c9/ratelimit.js","http-error|node_modules/c9/ratelimit.js":"node_modules/http-error/error.js","limiter|node_modules/c9/ratelimit.js":"node_modules/limiter/index.js","node_modules/limiter/lib/rateLimiter":"node_modules/limiter/lib/rateLimiter.js","node_modules/limiter/lib/tokenBucket":"node_modules/limiter/lib/tokenBucket.js","c9/request_timeout|plugins/c9.vfs.server/vfs.server.js":"node_modules/c9/request_timeout.js","plugins/c9.error/logger.raygun_noop.js|plugins/c9.error/logger.raygun_noop.js":"plugins/c9.error/logger.raygun_noop.js","plugins/c9.preview/preview.handler.js|plugins/c9.preview/preview.handler.js":"plugins/c9.preview/preview.handler.js","http-error|plugins/c9.preview/preview.handler.js":"node_modules/http-error/error.js","mime|plugins/c9.preview/preview.handler.js":"node_modules/mime/mime.js","c9/cache|plugins/c9.preview/preview.handler.js":"node_modules/c9/cache.js","debug|plugins/c9.preview/preview.handler.js":"node_modules/debug/lib/debug.js","plugins/c9.ide.language.html.diff/HTMLSimpleDOM":"plugins/c9.ide.language.html.diff/HTMLSimpleDOM.js","plugins/c9.ide.language.html.diff/HTMLTokenizer":"plugins/c9.ide.language.html.diff/HTMLTokenizer.js","plugins/c9.ide.language.html.diff/murmurhash3_gc":"plugins/c9.ide.language.html.diff/murmurhash3_gc.js","plugins/c9.vfs.server/cache.js|plugins/c9.vfs.server/cache.js":"plugins/c9.vfs.server/cache.js","async|plugins/c9.vfs.server/cache.js":"node_modules/async/lib/async.js","c9/uid|plugins/c9.vfs.server/cache.js":"node_modules/c9/uid.js","http-error|plugins/c9.vfs.server/cache.js":"node_modules/http-error/error.js","plugins/c9.vfs.server/download.js|plugins/c9.vfs.server/download.js":"plugins/c9.vfs.server/download.js","http-error|plugins/c9.vfs.server/download.js":"node_modules/http-error/error.js","plugins/c9.vfs.server/filelist.js|plugins/c9.vfs.server/filelist.js":"plugins/c9.vfs.server/filelist.js","http-error|plugins/c9.vfs.server/filelist.js":"node_modules/http-error/error.js","plugins/c9.vfs.server/fetchcache.js|plugins/c9.vfs.server/fetchcache.js":"plugins/c9.vfs.server/fetchcache.js","http-error|plugins/c9.vfs.server/fetchcache.js":"node_modules/http-error/error.js","async|plugins/c9.vfs.server/fetchcache.js":"node_modules/async/lib/async.js","plugins/c9.vfs.server/statics.js|plugins/c9.vfs.server/statics.js":"plugins/c9.vfs.server/statics.js","engine.io-client/engine.io.js|plugins/c9.vfs.server/statics.js":"node_modules/engine.io-client/engine.io.js","kaefer/lib/client|plugins/c9.vfs.server/statics.js":"node_modules/kaefer/lib/client.js","smith|plugins/c9.vfs.server/statics.js":"node_modules/smith/smith.js","msgpack-js|node_modules/smith/smith.js":"node_modules/msgpack-js/msgpack.js","vfs-socket/consumer|plugins/c9.vfs.server/statics.js":"plugins/node_modules/vfs-socket/consumer.js","smith|plugins/node_modules/vfs-socket/consumer.js":"node_modules/smith/smith.js","msgpack-js-browser|plugins/c9.vfs.server/statics.js":"node_modules/msgpack-js-browser/msgpack.js","architect-build/build_support/mini_require|plugins/c9.vfs.server/statics.js":"plugins/node_modules/architect-build/build_support/mini_require.js","plugins/c9.analytics/mock_analytics.js|plugins/c9.analytics/mock_analytics.js":"plugins/c9.analytics/mock_analytics.js","plugins/c9.metrics/mock_metrics.js|plugins/c9.metrics/mock_metrics.js":"plugins/c9.metrics/mock_metrics.js","plugins/c9.vfs.server/vfs.connect.standalone.js|plugins/c9.vfs.server/vfs.connect.standalone.js":"plugins/c9.vfs.server/vfs.connect.standalone.js","plugins/c9.vfs.server/vfs":"plugins/c9.vfs.server/vfs.js","kaefer|plugins/c9.vfs.server/vfs.js":"node_modules/kaefer/index.js","smith|plugins/c9.vfs.server/vfs.js":"node_modules/smith/smith.js","engine.io|plugins/c9.vfs.server/vfs.js":"node_modules/engine.io/lib/engine.io.js","node_modules/engine.io/lib/server":"node_modules/engine.io/lib/server.js","base64id|node_modules/engine.io/lib/server.js":"node_modules/base64id/lib/base64id.js","node_modules/engine.io/lib/transports":"node_modules/engine.io/lib/transports/index.js","node_modules/engine.io/lib/transports/polling-xhr":"node_modules/engine.io/lib/transports/polling-xhr.js","node_modules/engine.io/lib/transports/polling":"node_modules/engine.io/lib/transports/polling.js","node_modules/engine.io/lib/transport":"node_modules/engine.io/lib/transport.js","engine.io-parser|node_modules/engine.io/lib/transport.js":"node_modules/engine.io/node_modules/engine.io-parser/index.js","node_modules/engine.io/node_modules/engine.io-parser/lib":"node_modules/engine.io/node_modules/engine.io-parser/lib/index.js","utf8|node_modules/engine.io/node_modules/engine.io-parser/lib/index.js":"node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/utf8.js","after|node_modules/engine.io/node_modules/engine.io-parser/lib/index.js":"node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/index.js","node_modules/engine.io/node_modules/engine.io-parser/lib/keys":"node_modules/engine.io/node_modules/engine.io-parser/lib/keys.js","debug|node_modules/engine.io/lib/transport.js":"node_modules/engine.io/node_modules/debug/node.js","node_modules/engine.io/node_modules/debug/debug":"node_modules/engine.io/node_modules/debug/debug.js","ms|node_modules/engine.io/node_modules/debug/debug.js":"node_modules/engine.io/node_modules/debug/node_modules/ms/index.js","engine.io-parser|node_modules/engine.io/lib/transports/polling.js":"node_modules/engine.io/node_modules/engine.io-parser/index.js","accepts|node_modules/engine.io/lib/transports/polling.js":"node_modules/engine.io/node_modules/accepts/index.js","negotiator|node_modules/engine.io/node_modules/accepts/index.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/negotiator.js","node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/charset.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/charset.js","node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/encoding.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/encoding.js","node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/language.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/language.js","node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/mediaType.js":"node_modules/engine.io/node_modules/accepts/node_modules/negotiator/lib/mediaType.js","mime-types|node_modules/engine.io/node_modules/accepts/index.js":"node_modules/engine.io/node_modules/accepts/node_modules/mime-types/index.js","mime-db|node_modules/engine.io/node_modules/accepts/node_modules/mime-types/index.js":"node_modules/engine.io/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js","node_modules/engine.io/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json":"node_modules/engine.io/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json","debug|node_modules/engine.io/lib/transports/polling.js":"node_modules/engine.io/node_modules/debug/node.js","debug|node_modules/engine.io/lib/transports/polling-xhr.js":"node_modules/engine.io/node_modules/debug/node.js","node_modules/engine.io/lib/transports/polling-jsonp":"node_modules/engine.io/lib/transports/polling-jsonp.js","node_modules/engine.io/lib/transports/websocket":"node_modules/engine.io/lib/transports/websocket.js","engine.io-parser|node_modules/engine.io/lib/transports/websocket.js":"node_modules/engine.io/node_modules/engine.io-parser/index.js","debug|node_modules/engine.io/lib/transports/websocket.js":"node_modules/engine.io/node_modules/debug/node.js","node_modules/engine.io/lib/socket":"node_modules/engine.io/lib/socket.js","debug|node_modules/engine.io/lib/socket.js":"node_modules/engine.io/node_modules/debug/node.js","ws|node_modules/engine.io/lib/server.js":"node_modules/ws/index.js","node_modules/ws/lib/WebSocket":"node_modules/ws/lib/WebSocket.js","ultron|node_modules/ws/lib/WebSocket.js":"node_modules/ws/node_modules/ultron/index.js","options|node_modules/ws/lib/WebSocket.js":"node_modules/ws/node_modules/options/lib/options.js","node_modules/ws/lib/Sender":"node_modules/ws/lib/Sender.js","node_modules/ws/lib/ErrorCodes":"node_modules/ws/lib/ErrorCodes.js","node_modules/ws/lib/BufferUtil":"node_modules/ws/lib/BufferUtil.js","node_modules/ws/lib/BufferUtil.fallback":"node_modules/ws/lib/BufferUtil.fallback.js","node_modules/ws/lib/PerMessageDeflate":"node_modules/ws/lib/PerMessageDeflate.js","node_modules/ws/lib/Receiver":"node_modules/ws/lib/Receiver.js","node_modules/ws/lib/Validation":"node_modules/ws/lib/Validation.js","node_modules/ws/lib/Validation.fallback":"node_modules/ws/lib/Validation.fallback.js","node_modules/ws/lib/BufferPool":"node_modules/ws/lib/BufferPool.js","node_modules/ws/lib/Sender.hixie":"node_modules/ws/lib/Sender.hixie.js","node_modules/ws/lib/Receiver.hixie":"node_modules/ws/lib/Receiver.hixie.js","node_modules/ws/lib/Extensions":"node_modules/ws/lib/Extensions.js","node_modules/ws/lib/WebSocketServer":"node_modules/ws/lib/WebSocketServer.js","options|node_modules/ws/lib/WebSocketServer.js":"node_modules/ws/node_modules/options/lib/options.js","debug|node_modules/engine.io/lib/server.js":"node_modules/engine.io/node_modules/debug/node.js","engine.io-parser|node_modules/engine.io/lib/engine.io.js":"node_modules/engine.io/node_modules/engine.io-parser/index.js","vfs-http-adapter|plugins/c9.vfs.server/vfs.js":"plugins/node_modules/vfs-http-adapter/restful.js","plugins/node_modules/vfs-http-adapter/multipart":"plugins/node_modules/vfs-http-adapter/multipart.js","vfs-socket/worker|plugins/c9.vfs.server/vfs.js":"plugins/node_modules/vfs-socket/worker.js","smith|plugins/node_modules/vfs-socket/worker.js":"node_modules/smith/smith.js","plugins/c9.vfs.server/vfs_wrapper":"plugins/c9.vfs.server/vfs_wrapper.js","http-error|plugins/c9.vfs.server/vfs_wrapper.js":"node_modules/http-error/error.js","plugins/c9.vfs.server/vfs_proxy":"plugins/c9.vfs.server/vfs_proxy.js","vfs-child|plugins/c9.vfs.server/vfs.connect.standalone.js":"plugins/node_modules/vfs-child/parent.js","vfs-socket/consumer|plugins/node_modules/vfs-child/parent.js":"plugins/node_modules/vfs-socket/consumer.js","plugins/node_modules/vfs-child/child.js":"plugins/node_modules/vfs-child/child.js","vfs-socket/worker|plugins/node_modules/vfs-child/child.js":"plugins/node_modules/vfs-socket/worker.js","vfs-local|plugins/node_modules/vfs-child/child.js":"plugins/node_modules/vfs-local/localfs.js","simple-mime|plugins/node_modules/vfs-local/localfs.js":"node_modules/simple-mime/simple-mime.js","vfs-local|plugins/node_modules/vfs-child/parent.js":"plugins/node_modules/vfs-local/localfs.js","plugins/c9.static/cdn.js|plugins/c9.static/cdn.js":"plugins/c9.static/cdn.js","send|plugins/c9.static/cdn.js":"node_modules/send/index.js","mkdirp|plugins/c9.static/cdn.js":"node_modules/mkdirp/index.js","c9/atomic|plugins/c9.static/cdn.js":"node_modules/c9/atomic.js","tmp|node_modules/c9/atomic.js":"node_modules/tmp/lib/tmp.js","os-tmpdir|node_modules/tmp/lib/tmp.js":"node_modules/tmp/node_modules/os-tmpdir/index.js","async|node_modules/c9/atomic.js":"node_modules/async/lib/async.js","http-error|plugins/c9.static/cdn.js":"node_modules/http-error/error.js","frontdoor|plugins/c9.static/cdn.js":"node_modules/frontdoor/frontdoor.js","architect-build/module-deps|plugins/c9.static/cdn.js":"plugins/node_modules/architect-build/module-deps.js","through|plugins/node_modules/architect-build/module-deps.js":"node_modules/through/index.js","plugins/c9.static/build.js|plugins/c9.static/build.js":"plugins/c9.static/build.js","http-error|plugins/c9.static/build.js":"node_modules/http-error/error.js","architect-build/build|plugins/c9.static/build.js":"plugins/node_modules/architect-build/build.js","async|plugins/node_modules/architect-build/build.js":"node_modules/async/lib/async.js","mkdirp|plugins/node_modules/architect-build/build.js":"node_modules/mkdirp/index.js","plugins/node_modules/architect-build/module-deps":"plugins/node_modules/architect-build/module-deps.js","plugins/node_modules/architect-build/compress":"plugins/node_modules/architect-build/compress.js","uglify-js|plugins/node_modules/architect-build/compress.js":"node_modules/uglify-js/tools/node.js","source-map|node_modules/uglify-js/tools/node.js":"node_modules/uglify-js/node_modules/source-map/source-map.js","node_modules/uglify-js/node_modules/source-map/lib/source-map-generator":"node_modules/uglify-js/node_modules/source-map/lib/source-map-generator.js","node_modules/uglify-js/node_modules/source-map/lib/base64-vlq":"node_modules/uglify-js/node_modules/source-map/lib/base64-vlq.js","node_modules/uglify-js/node_modules/source-map/lib/base64":"node_modules/uglify-js/node_modules/source-map/lib/base64.js","node_modules/uglify-js/node_modules/source-map/lib/util":"node_modules/uglify-js/node_modules/source-map/lib/util.js","node_modules/uglify-js/node_modules/source-map/lib/array-set":"node_modules/uglify-js/node_modules/source-map/lib/array-set.js","node_modules/uglify-js/node_modules/source-map/lib/mapping-list":"node_modules/uglify-js/node_modules/source-map/lib/mapping-list.js","node_modules/uglify-js/node_modules/source-map/lib/source-map-consumer":"node_modules/uglify-js/node_modules/source-map/lib/source-map-consumer.js","node_modules/uglify-js/node_modules/source-map/lib/binary-search":"node_modules/uglify-js/node_modules/source-map/lib/binary-search.js","node_modules/uglify-js/node_modules/source-map/lib/quick-sort":"node_modules/uglify-js/node_modules/source-map/lib/quick-sort.js","node_modules/uglify-js/node_modules/source-map/lib/source-node":"node_modules/uglify-js/node_modules/source-map/lib/source-node.js","less|plugins/node_modules/architect-build/build.js":"node_modules/less/index.js","node_modules/less/lib/less-node":"node_modules/less/lib/less-node/index.js","node_modules/less/lib/less-node/environment":"node_modules/less/lib/less-node/environment.js","mime|node_modules/less/lib/less-node/environment.js":"node_modules/mime/mime.js","source-map|node_modules/less/lib/less-node/environment.js":"node_modules/less/node_modules/source-map/source-map.js","node_modules/less/node_modules/source-map/lib/source-map-generator":"node_modules/less/node_modules/source-map/lib/source-map-generator.js","node_modules/less/node_modules/source-map/lib/base64-vlq":"node_modules/less/node_modules/source-map/lib/base64-vlq.js","node_modules/less/node_modules/source-map/lib/base64":"node_modules/less/node_modules/source-map/lib/base64.js","node_modules/less/node_modules/source-map/lib/util":"node_modules/less/node_modules/source-map/lib/util.js","node_modules/less/node_modules/source-map/lib/array-set":"node_modules/less/node_modules/source-map/lib/array-set.js","node_modules/less/node_modules/source-map/lib/mapping-list":"node_modules/less/node_modules/source-map/lib/mapping-list.js","node_modules/less/node_modules/source-map/lib/source-map-consumer":"node_modules/less/node_modules/source-map/lib/source-map-consumer.js","node_modules/less/node_modules/source-map/lib/binary-search":"node_modules/less/node_modules/source-map/lib/binary-search.js","node_modules/less/node_modules/source-map/lib/quick-sort":"node_modules/less/node_modules/source-map/lib/quick-sort.js","node_modules/less/node_modules/source-map/lib/source-node":"node_modules/less/node_modules/source-map/lib/source-node.js","node_modules/less/lib/less-node/file-manager":"node_modules/less/lib/less-node/file-manager.js","node_modules/less/lib/less-node/fs":"node_modules/less/lib/less-node/fs.js","graceful-fs|node_modules/less/lib/less-node/fs.js":"node_modules/less/node_modules/graceful-fs/graceful-fs.js","node_modules/less/node_modules/graceful-fs/polyfills.js":"node_modules/less/node_modules/graceful-fs/polyfills.js","node_modules/less/node_modules/graceful-fs/fs.js":"node_modules/less/node_modules/graceful-fs/fs.js","node_modules/less/node_modules/graceful-fs/legacy-streams.js":"node_modules/less/node_modules/graceful-fs/legacy-streams.js","node_modules/less/lib/less/environment/abstract-file-manager.js":"node_modules/less/lib/less/environment/abstract-file-manager.js","promise|node_modules/less/lib/less-node/file-manager.js":"node_modules/less/node_modules/promise/index.js","node_modules/less/node_modules/promise/lib":"node_modules/less/node_modules/promise/lib/index.js","node_modules/less/node_modules/promise/lib/core.js":"node_modules/less/node_modules/promise/lib/core.js","asap/raw|node_modules/less/node_modules/promise/lib/core.js":"node_modules/less/node_modules/promise/node_modules/asap/raw.js","node_modules/less/node_modules/promise/lib/done.js":"node_modules/less/node_modules/promise/lib/done.js","node_modules/less/node_modules/promise/lib/finally.js":"node_modules/less/node_modules/promise/lib/finally.js","node_modules/less/node_modules/promise/lib/es6-extensions.js":"node_modules/less/node_modules/promise/lib/es6-extensions.js","node_modules/less/node_modules/promise/lib/node-extensions.js":"node_modules/less/node_modules/promise/lib/node-extensions.js","asap|node_modules/less/node_modules/promise/lib/node-extensions.js":"node_modules/less/node_modules/promise/node_modules/asap/asap.js","node_modules/less/node_modules/promise/node_modules/asap/raw":"node_modules/less/node_modules/promise/node_modules/asap/raw.js","node_modules/less/node_modules/promise/lib/synchronous.js":"node_modules/less/node_modules/promise/lib/synchronous.js","node_modules/less/lib/less-node/url-file-manager":"node_modules/less/lib/less-node/url-file-manager.js","node_modules/less/lib/less/logger":"node_modules/less/lib/less/logger.js","promise|node_modules/less/lib/less-node/url-file-manager.js":"node_modules/less/node_modules/promise/index.js","request|node_modules/less/lib/less-node/url-file-manager.js":"node_modules/less/node_modules/request/index.js","extend|node_modules/less/node_modules/request/index.js":"node_modules/less/node_modules/request/node_modules/extend/index.js","node_modules/less/node_modules/request/lib/cookies":"node_modules/less/node_modules/request/lib/cookies.js","tough-cookie|node_modules/less/node_modules/request/lib/cookies.js":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/cookie.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pubsuffix":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/store":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/store.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/memstore":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/memstore.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/permuteDomain":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js","node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pathMatch":"node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js","node_modules/less/node_modules/request/node_modules/tough-cookie/package.json":"node_modules/less/node_modules/request/node_modules/tough-cookie/package.json","node_modules/less/node_modules/request/lib/helpers":"node_modules/less/node_modules/request/lib/helpers.js","json-stringify-safe|node_modules/less/node_modules/request/lib/helpers.js":"node_modules/less/node_modules/request/node_modules/json-stringify-safe/stringify.js","safe-buffer|node_modules/less/node_modules/request/lib/helpers.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","node_modules/less/node_modules/request/request":"node_modules/less/node_modules/request/request.js","hawk|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/hawk/lib/index.js","boom|node_modules/less/node_modules/request/node_modules/hawk/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js","hoek|node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js","node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js","sntp|node_modules/less/node_modules/request/node_modules/hawk/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/index.js","node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/lib":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js","hoek|node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js","node_modules/less/node_modules/request/node_modules/hawk/lib/server":"node_modules/less/node_modules/request/node_modules/hawk/lib/server.js","boom|node_modules/less/node_modules/request/node_modules/hawk/lib/server.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js","hoek|node_modules/less/node_modules/request/node_modules/hawk/lib/server.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js","cryptiles|node_modules/less/node_modules/request/node_modules/hawk/lib/server.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js","boom|node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js","node_modules/less/node_modules/request/node_modules/hawk/lib/crypto":"node_modules/less/node_modules/request/node_modules/hawk/lib/crypto.js","node_modules/less/node_modules/request/node_modules/hawk/lib/utils":"node_modules/less/node_modules/request/node_modules/hawk/lib/utils.js","sntp|node_modules/less/node_modules/request/node_modules/hawk/lib/utils.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/index.js","boom|node_modules/less/node_modules/request/node_modules/hawk/lib/utils.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js","node_modules/less/node_modules/request/node_modules/hawk/package.json":"node_modules/less/node_modules/request/node_modules/hawk/package.json","node_modules/less/node_modules/request/node_modules/hawk/lib/client":"node_modules/less/node_modules/request/node_modules/hawk/lib/client.js","hoek|node_modules/less/node_modules/request/node_modules/hawk/lib/client.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js","cryptiles|node_modules/less/node_modules/request/node_modules/hawk/lib/client.js":"node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js","aws-sign2|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/aws-sign2/index.js","aws4|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/aws4/aws4.js","node_modules/less/node_modules/request/node_modules/aws4/lru":"node_modules/less/node_modules/request/node_modules/aws4/lru.js","http-signature|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/http-signature/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/lib/parser":"node_modules/less/node_modules/request/node_modules/http-signature/lib/parser.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/lib/parser.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/lib/utils":"node_modules/less/node_modules/request/node_modules/http-signature/lib/utils.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/lib/utils.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js","sshpk|node_modules/less/node_modules/request/node_modules/http-signature/lib/utils.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/algs":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/algs.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","ecc-jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/index.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/index.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","ecc-jsbn/lib/ec|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","tweetnacl|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","tweetnacl|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/index":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/errors":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/types":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/types.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/reader":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/writer":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","bcrypt-pbkdf|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/index.js","tweetnacl|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/index.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","tweetnacl|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js","jsbn|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js","asn1|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js","node_modules/less/node_modules/request/node_modules/http-signature/lib/signer":"node_modules/less/node_modules/request/node_modules/http-signature/lib/signer.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/lib/signer.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js","sshpk|node_modules/less/node_modules/request/node_modules/http-signature/lib/signer.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js","jsprim|node_modules/less/node_modules/request/node_modules/http-signature/lib/signer.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus/assert.js","extsprintf|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/lib/extsprintf.js","verror|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus/assert.js","extsprintf|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/lib/extsprintf.js","core-util-is|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/node_modules/core-util-is/lib/util.js","json-schema|node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/validate.js","node_modules/less/node_modules/request/node_modules/http-signature/lib/verify":"node_modules/less/node_modules/request/node_modules/http-signature/lib/verify.js","assert-plus|node_modules/less/node_modules/request/node_modules/http-signature/lib/verify.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js","sshpk|node_modules/less/node_modules/request/node_modules/http-signature/lib/verify.js":"node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js","mime-types|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/mime-types/index.js","mime-db|node_modules/less/node_modules/request/node_modules/mime-types/index.js":"node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js","node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json":"node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json","stringstream|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/stringstream/stringstream.js","caseless|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/caseless/index.js","forever-agent|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/forever-agent/index.js","form-data|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/form-data/lib/form_data.js","combined-stream|node_modules/less/node_modules/request/node_modules/form-data/lib/form_data.js":"node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js","delayed-stream|node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js":"node_modules/less/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js","node_modules/less/node_modules/request/node_modules/combined-stream/lib/defer.js":"node_modules/less/node_modules/request/node_modules/combined-stream/lib/defer.js","mime-types|node_modules/less/node_modules/request/node_modules/form-data/lib/form_data.js":"node_modules/less/node_modules/request/node_modules/mime-types/index.js","asynckit|node_modules/less/node_modules/request/node_modules/form-data/lib/form_data.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/index.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/parallel.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/parallel.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/iterate.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/iterate.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/async.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/async.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/defer.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/defer.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/abort.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/abort.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/state.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/state.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/terminator.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/terminator.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/serial.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/serial.js","node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/serialOrdered.js":"node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/serialOrdered.js","node_modules/less/node_modules/request/node_modules/form-data/lib/populate.js":"node_modules/less/node_modules/request/node_modules/form-data/lib/populate.js","extend|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/extend/index.js","isstream|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/isstream/isstream.js","is-typedarray|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/is-typedarray/index.js","node_modules/less/node_modules/request/lib/getProxyFromURI":"node_modules/less/node_modules/request/lib/getProxyFromURI.js","node_modules/less/node_modules/request/lib/querystring":"node_modules/less/node_modules/request/lib/querystring.js","qs|node_modules/less/node_modules/request/lib/querystring.js":"node_modules/less/node_modules/request/node_modules/qs/lib/index.js","node_modules/less/node_modules/request/node_modules/qs/lib/stringify":"node_modules/less/node_modules/request/node_modules/qs/lib/stringify.js","node_modules/less/node_modules/request/node_modules/qs/lib/utils":"node_modules/less/node_modules/request/node_modules/qs/lib/utils.js","node_modules/less/node_modules/request/node_modules/qs/lib/formats":"node_modules/less/node_modules/request/node_modules/qs/lib/formats.js","node_modules/less/node_modules/request/node_modules/qs/lib/parse":"node_modules/less/node_modules/request/node_modules/qs/lib/parse.js","node_modules/less/node_modules/request/lib/har":"node_modules/less/node_modules/request/lib/har.js","har-validator|node_modules/less/node_modules/request/lib/har.js":"node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/promise.js","har-schema|node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/promise.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/afterRequest.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/afterRequest.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/beforeRequest.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/beforeRequest.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/browser.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/browser.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/cache.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/cache.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/content.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/content.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/cookie.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/cookie.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/creator.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/creator.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/entry.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/entry.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/har.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/har.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/header.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/header.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/log.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/log.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/page.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/page.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/pageTimings.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/pageTimings.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/postData.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/postData.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/query.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/query.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/request.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/request.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/response.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/response.json","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/timings.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/lib/timings.json","ajv|node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/promise.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/ajv.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/resolve":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/resolve.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/equal":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/equal.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/util":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/util.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/ucs2length":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/ucs2length.js","json-stable-stringify|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/util.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/index.js","jsonify|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/index.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/lib/parse":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/lib/parse.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/lib/stringify":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/lib/stringify.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/schema_obj":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/schema_obj.js","json-stable-stringify|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/index.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/async":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/async.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/validate":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/validate.js","co|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/index.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/validation_error":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/validation_error.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/cache":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/cache.js","json-stable-stringify|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/ajv.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/formats":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/formats.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/rules":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/rules.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/_rules":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/compile/_rules.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/ref":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/ref.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/allOf":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/allOf.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/anyOf":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/anyOf.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/dependencies":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/dependencies.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/enum":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/enum.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/format":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/format.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/items":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/items.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limit":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limit.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitItems":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitItems.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitLength":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitLength.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitProperties":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitProperties.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/multipleOf":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/multipleOf.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/not":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/not.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/oneOf":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/oneOf.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/pattern":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/pattern.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/properties":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/properties.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/required":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/required.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/uniqueItems":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/uniqueItems.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/v5":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/v5.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/switch":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/switch.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/constant":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/constant.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_formatLimit":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/_formatLimit.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/patternRequired":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/patternRequired.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-v5.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-v5.json","co|node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/ajv.js":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co/index.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/keyword":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/keyword.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/custom":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/dotjs/custom.js","node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-draft-04.json":"node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-draft-04.json","node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/error":"node_modules/less/node_modules/request/node_modules/har-validator/lib/node4/error.js","extend|node_modules/less/node_modules/request/lib/har.js":"node_modules/less/node_modules/request/node_modules/extend/index.js","node_modules/less/node_modules/request/lib/auth":"node_modules/less/node_modules/request/lib/auth.js","caseless|node_modules/less/node_modules/request/lib/auth.js":"node_modules/less/node_modules/request/node_modules/caseless/index.js","uuid|node_modules/less/node_modules/request/lib/auth.js":"node_modules/less/node_modules/request/node_modules/uuid/index.js","node_modules/less/node_modules/request/node_modules/uuid/v1":"node_modules/less/node_modules/request/node_modules/uuid/v1.js","node_modules/less/node_modules/request/node_modules/uuid/lib/rng":"node_modules/less/node_modules/request/node_modules/uuid/lib/rng.js","node_modules/less/node_modules/request/node_modules/uuid/lib/bytesToUuid":"node_modules/less/node_modules/request/node_modules/uuid/lib/bytesToUuid.js","node_modules/less/node_modules/request/node_modules/uuid/v4":"node_modules/less/node_modules/request/node_modules/uuid/v4.js","node_modules/less/node_modules/request/lib/oauth":"node_modules/less/node_modules/request/lib/oauth.js","qs|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/qs/lib/index.js","caseless|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/caseless/index.js","uuid|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/uuid/index.js","oauth-sign|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/oauth-sign/index.js","safe-buffer|node_modules/less/node_modules/request/lib/oauth.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","node_modules/less/node_modules/request/lib/multipart":"node_modules/less/node_modules/request/lib/multipart.js","uuid|node_modules/less/node_modules/request/lib/multipart.js":"node_modules/less/node_modules/request/node_modules/uuid/index.js","combined-stream|node_modules/less/node_modules/request/lib/multipart.js":"node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js","isstream|node_modules/less/node_modules/request/lib/multipart.js":"node_modules/less/node_modules/request/node_modules/isstream/isstream.js","safe-buffer|node_modules/less/node_modules/request/lib/multipart.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","node_modules/less/node_modules/request/lib/redirect":"node_modules/less/node_modules/request/lib/redirect.js","node_modules/less/node_modules/request/lib/tunnel":"node_modules/less/node_modules/request/lib/tunnel.js","tunnel-agent|node_modules/less/node_modules/request/lib/tunnel.js":"node_modules/less/node_modules/request/node_modules/tunnel-agent/index.js","safe-buffer|node_modules/less/node_modules/request/node_modules/tunnel-agent/index.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","performance-now|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/performance-now/lib/performance-now.js","safe-buffer|node_modules/less/node_modules/request/request.js":"node_modules/less/node_modules/request/node_modules/safe-buffer/index.js","node_modules/less/lib/less":"node_modules/less/lib/less/index.js","node_modules/less/lib/less/data":"node_modules/less/lib/less/data/index.js","node_modules/less/lib/less/data/colors":"node_modules/less/lib/less/data/colors.js","node_modules/less/lib/less/data/unit-conversions":"node_modules/less/lib/less/data/unit-conversions.js","node_modules/less/lib/less/tree":"node_modules/less/lib/less/tree/index.js","node_modules/less/lib/less/tree/node":"node_modules/less/lib/less/tree/node.js","node_modules/less/lib/less/tree/alpha":"node_modules/less/lib/less/tree/alpha.js","node_modules/less/lib/less/tree/color":"node_modules/less/lib/less/tree/color.js","node_modules/less/lib/less/tree/directive":"node_modules/less/lib/less/tree/directive.js","node_modules/less/lib/less/tree/selector":"node_modules/less/lib/less/tree/selector.js","node_modules/less/lib/less/tree/element":"node_modules/less/lib/less/tree/element.js","node_modules/less/lib/less/tree/paren":"node_modules/less/lib/less/tree/paren.js","node_modules/less/lib/less/tree/combinator":"node_modules/less/lib/less/tree/combinator.js","node_modules/less/lib/less/tree/ruleset":"node_modules/less/lib/less/tree/ruleset.js","node_modules/less/lib/less/tree/rule":"node_modules/less/lib/less/tree/rule.js","node_modules/less/lib/less/tree/value":"node_modules/less/lib/less/tree/value.js","node_modules/less/lib/less/tree/keyword":"node_modules/less/lib/less/tree/keyword.js","node_modules/less/lib/less/contexts":"node_modules/less/lib/less/contexts.js","node_modules/less/lib/less/functions/function-registry":"node_modules/less/lib/less/functions/function-registry.js","node_modules/less/lib/less/functions/default":"node_modules/less/lib/less/functions/default.js","node_modules/less/lib/less/tree/debug-info":"node_modules/less/lib/less/tree/debug-info.js","node_modules/less/lib/less/tree/detached-ruleset":"node_modules/less/lib/less/tree/detached-ruleset.js","node_modules/less/lib/less/tree/operation":"node_modules/less/lib/less/tree/operation.js","node_modules/less/lib/less/tree/dimension":"node_modules/less/lib/less/tree/dimension.js","node_modules/less/lib/less/tree/unit":"node_modules/less/lib/less/tree/unit.js","node_modules/less/lib/less/tree/variable":"node_modules/less/lib/less/tree/variable.js","node_modules/less/lib/less/tree/attribute":"node_modules/less/lib/less/tree/attribute.js","node_modules/less/lib/less/tree/quoted":"node_modules/less/lib/less/tree/quoted.js","node_modules/less/lib/less/tree/js-eval-node":"node_modules/less/lib/less/tree/js-eval-node.js","node_modules/less/lib/less/tree/expression":"node_modules/less/lib/less/tree/expression.js","node_modules/less/lib/less/tree/comment":"node_modules/less/lib/less/tree/comment.js","node_modules/less/lib/less/tree/call":"node_modules/less/lib/less/tree/call.js","node_modules/less/lib/less/functions/function-caller":"node_modules/less/lib/less/functions/function-caller.js","node_modules/less/lib/less/tree/url":"node_modules/less/lib/less/tree/url.js","node_modules/less/lib/less/tree/import":"node_modules/less/lib/less/tree/import.js","node_modules/less/lib/less/tree/media":"node_modules/less/lib/less/tree/media.js","node_modules/less/lib/less/tree/anonymous":"node_modules/less/lib/less/tree/anonymous.js","node_modules/less/lib/less/tree/mixin-call":"node_modules/less/lib/less/tree/mixin-call.js","node_modules/less/lib/less/tree/mixin-definition":"node_modules/less/lib/less/tree/mixin-definition.js","node_modules/less/lib/less/tree/javascript":"node_modules/less/lib/less/tree/javascript.js","node_modules/less/lib/less/tree/assignment":"node_modules/less/lib/less/tree/assignment.js","node_modules/less/lib/less/tree/condition":"node_modules/less/lib/less/tree/condition.js","node_modules/less/lib/less/tree/unicode-descriptor":"node_modules/less/lib/less/tree/unicode-descriptor.js","node_modules/less/lib/less/tree/negative":"node_modules/less/lib/less/tree/negative.js","node_modules/less/lib/less/tree/extend":"node_modules/less/lib/less/tree/extend.js","node_modules/less/lib/less/tree/ruleset-call":"node_modules/less/lib/less/tree/ruleset-call.js","node_modules/less/lib/less/environment/environment":"node_modules/less/lib/less/environment/environment.js","node_modules/less/lib/less/environment/abstract-file-manager":"node_modules/less/lib/less/environment/abstract-file-manager.js","node_modules/less/lib/less/visitors":"node_modules/less/lib/less/visitors/index.js","node_modules/less/lib/less/visitors/visitor":"node_modules/less/lib/less/visitors/visitor.js","node_modules/less/lib/less/visitors/import-visitor":"node_modules/less/lib/less/visitors/import-visitor.js","node_modules/less/lib/less/visitors/import-sequencer":"node_modules/less/lib/less/visitors/import-sequencer.js","node_modules/less/lib/less/visitors/set-tree-visibility-visitor":"node_modules/less/lib/less/visitors/set-tree-visibility-visitor.js","node_modules/less/lib/less/visitors/extend-visitor":"node_modules/less/lib/less/visitors/extend-visitor.js","node_modules/less/lib/less/visitors/join-selector-visitor":"node_modules/less/lib/less/visitors/join-selector-visitor.js","node_modules/less/lib/less/visitors/to-css-visitor":"node_modules/less/lib/less/visitors/to-css-visitor.js","node_modules/less/lib/less/parser/parser":"node_modules/less/lib/less/parser/parser.js","node_modules/less/lib/less/less-error":"node_modules/less/lib/less/less-error.js","node_modules/less/lib/less/utils":"node_modules/less/lib/less/utils.js","node_modules/less/lib/less/parser/parser-input":"node_modules/less/lib/less/parser/parser-input.js","node_modules/less/lib/less/parser/chunker":"node_modules/less/lib/less/parser/chunker.js","node_modules/less/lib/less/functions":"node_modules/less/lib/less/functions/index.js","node_modules/less/lib/less/functions/color":"node_modules/less/lib/less/functions/color.js","node_modules/less/lib/less/functions/color-blending":"node_modules/less/lib/less/functions/color-blending.js","node_modules/less/lib/less/functions/data-uri":"node_modules/less/lib/less/functions/data-uri.js","node_modules/less/lib/less/functions/math":"node_modules/less/lib/less/functions/math.js","node_modules/less/lib/less/functions/math-helper.js":"node_modules/less/lib/less/functions/math-helper.js","node_modules/less/lib/less/functions/number":"node_modules/less/lib/less/functions/number.js","node_modules/less/lib/less/functions/string":"node_modules/less/lib/less/functions/string.js","node_modules/less/lib/less/functions/svg":"node_modules/less/lib/less/functions/svg.js","node_modules/less/lib/less/functions/types":"node_modules/less/lib/less/functions/types.js","node_modules/less/lib/less/source-map-output":"node_modules/less/lib/less/source-map-output.js","node_modules/less/lib/less/source-map-builder":"node_modules/less/lib/less/source-map-builder.js","node_modules/less/lib/less/parse-tree":"node_modules/less/lib/less/parse-tree.js","node_modules/less/lib/less/transform-tree":"node_modules/less/lib/less/transform-tree.js","node_modules/less/lib/less/import-manager":"node_modules/less/lib/less/import-manager.js","node_modules/less/lib/less/plugins/function-importer":"node_modules/less/lib/less/plugins/function-importer.js","node_modules/less/lib/less/render":"node_modules/less/lib/less/render.js","promise|node_modules/less/lib/less/render.js":"node_modules/less/node_modules/promise/index.js","node_modules/less/lib/less/parse":"node_modules/less/lib/less/parse.js","node_modules/less/lib/less/plugin-manager":"node_modules/less/lib/less/plugin-manager.js","promise|node_modules/less/lib/less/parse.js":"node_modules/less/node_modules/promise/index.js","node_modules/less/lib/less-node/lessc-helper":"node_modules/less/lib/less-node/lessc-helper.js","node_modules/less/lib/less-node/plugin-loader":"node_modules/less/lib/less-node/plugin-loader.js","node_modules/less/lib/less-node/image-size":"node_modules/less/lib/less-node/image-size.js","image-size|node_modules/less/lib/less-node/image-size.js":"node_modules/less/node_modules/image-size/lib/index.js","node_modules/less/node_modules/image-size/lib/detector":"node_modules/less/node_modules/image-size/lib/detector.js","node_modules/less/node_modules/image-size/lib/types":"node_modules/less/node_modules/image-size/lib/types.js","node_modules/less/node_modules/image-size/lib/types/bmp":"node_modules/less/node_modules/image-size/lib/types/bmp.js","node_modules/less/node_modules/image-size/lib/types/dds":"node_modules/less/node_modules/image-size/lib/types/dds.js","node_modules/less/node_modules/image-size/lib/types/gif":"node_modules/less/node_modules/image-size/lib/types/gif.js","node_modules/less/node_modules/image-size/lib/types/jpg":"node_modules/less/node_modules/image-size/lib/types/jpg.js","node_modules/less/node_modules/image-size/lib/types/png":"node_modules/less/node_modules/image-size/lib/types/png.js","node_modules/less/node_modules/image-size/lib/types/psd":"node_modules/less/node_modules/image-size/lib/types/psd.js","node_modules/less/node_modules/image-size/lib/types/svg":"node_modules/less/node_modules/image-size/lib/types/svg.js","node_modules/less/node_modules/image-size/lib/types/tiff":"node_modules/less/node_modules/image-size/lib/types/tiff.js","node_modules/less/node_modules/image-size/lib/readUInt":"node_modules/less/node_modules/image-size/lib/readUInt.js","node_modules/less/node_modules/image-size/lib/types/webp":"node_modules/less/node_modules/image-size/lib/types/webp.js","scripts/makestatic.js":"scripts/makestatic.js","amd-loader|scripts/makestatic.js":"node_modules/amd-loader/amd-loader.js","c9/setup_paths.js|scripts/makestatic.js":"node_modules/c9/setup_paths.js","architect|scripts/makestatic.js":"node_modules/architect/architect.js","optimist|scripts/makestatic.js":"node_modules/optimist/index.js","!config":{"connect-architect/connect":{"packagePath":"node_modules/connect-architect/connect/connect-plugin.js","consumes":[],"provides":["connect","http"]},"connect-architect/connect.basicauth":{"packagePath":"node_modules/connect-architect/connect.basicauth/basicauth-plugin.js","consumes":["connect"],"provides":[]},"connect-architect/connect.static":{"packagePath":"node_modules/connect-architect/connect.static/static-plugin.js","consumes":["connect"],"provides":["connect.static"]},"./c9.error/error_handler":{"packagePath":"plugins/c9.error/error_handler.js","consumes":["connect","connect.static","connect.render","connect.render.ejs"],"provides":["connect.error"]},"connect-architect/connect.remote-address":{"packagePath":"node_modules/connect-architect/connect.remote-address/remote-address.js","consumes":["connect"],"provides":["connect.remote-address"]},"connect-architect/connect.render":{"packagePath":"node_modules/connect-architect/connect.render/render.js","consumes":["connect"],"provides":["connect.render"]},"connect-architect/connect.render.ejs":{"packagePath":"node_modules/connect-architect/connect.render.ejs/render-ejs.js","consumes":["connect.render"],"provides":["connect.render.ejs"]},"connect-architect/connect.redirect":{"packagePath":"node_modules/connect-architect/connect.redirect/redirect.js","consumes":["connect"],"provides":["connect.redirect"]},"connect-architect/connect.cors":{"packagePath":"node_modules/connect-architect/connect.cors/cors.js","consumes":["connect"],"provides":["connect.cors"]},"./c9.connect.favicon/favicon":{"packagePath":"plugins/c9.connect.favicon/favicon.js","consumes":["connect"],"provides":["connect.favicon"]},"./c9.core/ext":{"packagePath":"plugins/c9.core/ext.js","consumes":["app"],"provides":["ext","Plugin"]},"./c9.ide.server/ide-statics":{"packagePath":"plugins/c9.ide.server/ide-statics.js","consumes":["Plugin","connect.static"],"provides":["c9.static.plugins"]},"./c9.preview/statics":{"packagePath":"plugins/c9.preview/statics.js","consumes":["connect.static"],"provides":[]},"./c9.nodeapi/nodeapi":{"packagePath":"plugins/c9.nodeapi/nodeapi.js","consumes":["connect.static"],"provides":["c9.static.node"]},"./c9.vfs.standalone/standalone":{"packagePath":"plugins/c9.vfs.standalone/standalone.js","consumes":["connect.static","connect","preview.handler","connect.render","connect.render.ejs"],"provides":["api","passport"]},"./c9.vfs.server/vfs.server":{"packagePath":"plugins/c9.vfs.server/vfs.server.js","consumes":["api","passport","connect","connect.render","connect.render.ejs","connect.remote-address","vfs.cache","analytics"],"provides":["vfs.server"]},"./c9.error/logger.raygun_noop":{"packagePath":"plugins/c9.error/logger.raygun_noop.js","consumes":[],"provides":["error.logger"]},"./c9.preview/preview.handler":{"packagePath":"plugins/c9.preview/preview.handler.js","consumes":["connect.render","connect.render.ejs","connect.redirect","connect.static","error.logger","metrics"],"provides":["preview.handler"]},"./c9.vfs.server/cache":{"packagePath":"plugins/c9.vfs.server/cache.js","consumes":["Plugin","vfs.connect","metrics"],"provides":["vfs.cache"]},"./c9.vfs.server/download":{"packagePath":"plugins/c9.vfs.server/download.js","consumes":["Plugin","vfs.cache"],"provides":["vfs.download"]},"./c9.vfs.server/filelist":{"packagePath":"plugins/c9.vfs.server/filelist.js","consumes":["Plugin","vfs.cache","connect"],"provides":["vfs.filelist"]},"./c9.vfs.server/fetchcache":{"packagePath":"plugins/c9.vfs.server/fetchcache.js","consumes":["Plugin","vfs.cache","connect"],"provides":["vfs.fetchcache"]},"./c9.vfs.server/statics":{"packagePath":"plugins/c9.vfs.server/statics.js","consumes":["Plugin","connect.static"],"provides":["smithio.server"]},"./c9.analytics/mock_analytics":{"packagePath":"plugins/c9.analytics/mock_analytics.js","consumes":[],"provides":["analytics"]},"./c9.metrics/mock_metrics":{"packagePath":"plugins/c9.metrics/mock_metrics.js","consumes":[],"provides":["metrics"]},"./c9.vfs.server/vfs.connect.standalone":{"packagePath":"plugins/c9.vfs.server/vfs.connect.standalone.js","consumes":["Plugin","api"],"provides":["vfs.connect"]},"./c9.static/cdn":{"packagePath":"plugins/c9.static/cdn.js","consumes":["connect","connect.cors","connect.static","cdn.build"],"provides":[]},"./c9.static/build":{"packagePath":"plugins/c9.static/build.js","consumes":["Plugin","connect.static"],"provides":["cdn.build"]}}} \ No newline at end of file diff --git a/node_modules/async/package.json b/node_modules/async/package.json index 04ad568e..5d71bbf6 100644 --- a/node_modules/async/package.json +++ b/node_modules/async/package.json @@ -79,5 +79,6 @@ "tarball": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + "_resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/base64id/package.json b/node_modules/base64id/package.json index 6a7c08b7..2805a6dd 100644 --- a/node_modules/base64id/package.json +++ b/node_modules/base64id/package.json @@ -39,5 +39,10 @@ "directories": {}, "_shasum": "02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f", "_resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", - "_from": "base64id@>=0.1.0 <0.2.0" + "_from": "base64id@>=0.1.0 <0.2.0", + "bugs": { + "url": "https://github.com/faeldt/base64id/issues" + }, + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/faeldt/base64id#readme" } diff --git a/node_modules/c9/setup_paths.js b/node_modules/c9/setup_paths.js index 36b7e841..d81fa572 100644 --- a/node_modules/c9/setup_paths.js +++ b/node_modules/c9/setup_paths.js @@ -5,9 +5,9 @@ */ var modules = require("module"); var oldResolve = modules._resolveFilename; -var path = require("path") +var path = require("path"); var root = path.join(__dirname, "/../.."); -var extraPaths = [ root ]; +var extraPaths = [ root, root + "/plugins/node_modules" ]; modules._resolveFilename = function(request, parent) { if (!parent) parent = { paths: [], filename: "" }; // Ensure client extensions can be loaded diff --git a/node_modules/connect/node_modules/batch/package.json b/node_modules/connect/node_modules/batch/package.json index 22dedfd2..1c515474 100644 --- a/node_modules/connect/node_modules/batch/package.json +++ b/node_modules/connect/node_modules/batch/package.json @@ -30,5 +30,6 @@ ], "directories": {}, "_shasum": "fd2e05a7a5d696b4db9314013e285d8ff3557ec3", - "_resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz" + "_resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/node_modules/buffer-crc32/package.json b/node_modules/connect/node_modules/buffer-crc32/package.json index 300e808a..1c9ebb59 100644 --- a/node_modules/connect/node_modules/buffer-crc32/package.json +++ b/node_modules/connect/node_modules/buffer-crc32/package.json @@ -19,7 +19,7 @@ }, "main": "index.js", "scripts": { - "test": "./node_modules/.bin/tap tests/*.test.js" + "test": "tap tests/*.test.js" }, "dependencies": {}, "devDependencies": { @@ -48,5 +48,9 @@ "directories": {}, "_shasum": "be3e5382fc02b6d6324956ac1af98aa98b08534c", "_resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz", - "_from": "buffer-crc32@0.2.1" + "_from": "buffer-crc32@0.2.1", + "bugs": { + "url": "https://github.com/brianloveswords/buffer-crc32/issues" + }, + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/node_modules/bytes/package.json b/node_modules/connect/node_modules/bytes/package.json index 9e975a01..9b683a61 100644 --- a/node_modules/connect/node_modules/bytes/package.json +++ b/node_modules/connect/node_modules/bytes/package.json @@ -37,5 +37,6 @@ ], "directories": {}, "_shasum": "555b08abcb063f8975905302523e4cd4ffdfdf31", - "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz" + "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/node_modules/cookie-signature/package.json b/node_modules/connect/node_modules/cookie-signature/package.json index 296d73e7..e8bf1bf7 100644 --- a/node_modules/connect/node_modules/cookie-signature/package.json +++ b/node_modules/connect/node_modules/cookie-signature/package.json @@ -36,5 +36,6 @@ ], "directories": {}, "_shasum": "44e072148af01e6e8e24afbf12690d68ae698ecb", - "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/node_modules/cookie/package.json b/node_modules/connect/node_modules/cookie/package.json index c6361de8..8b8d3912 100644 --- a/node_modules/connect/node_modules/cookie/package.json +++ b/node_modules/connect/node_modules/cookie/package.json @@ -45,5 +45,10 @@ ], "directories": {}, "_shasum": "90eb469ddce905c866de687efc43131d8801f9d0", - "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", + "bugs": { + "url": "https://github.com/shtylman/node-cookie/issues" + }, + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/shtylman/node-cookie#readme" } diff --git a/node_modules/connect/node_modules/methods/package.json b/node_modules/connect/node_modules/methods/package.json index 0c32694f..7df09513 100644 --- a/node_modules/connect/node_modules/methods/package.json +++ b/node_modules/connect/node_modules/methods/package.json @@ -40,5 +40,7 @@ ], "directories": {}, "_shasum": "335d429eefd21b7bacf2e9c922a8d2bd14a30e4f", - "_resolved": "https://registry.npmjs.org/methods/-/methods-0.1.0.tgz" + "_resolved": "https://registry.npmjs.org/methods/-/methods-0.1.0.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/visionmedia/node-methods#readme" } diff --git a/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/package.json index f65d83fb..19fb8592 100644 --- a/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/package.json +++ b/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/core-util-is/package.json @@ -55,5 +55,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/package.json b/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/package.json index f0e62d3c..9146e757 100644 --- a/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/package.json +++ b/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/inherits/package.json @@ -58,5 +58,6 @@ "tmp": "tmp/inherits-2.0.3.tgz_1473295776489_0.08142363070510328" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/package.json index fdf923ef..8e8b77db 100644 --- a/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/package.json +++ b/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/node_modules/string_decoder/package.json @@ -49,5 +49,6 @@ "tarball": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/package.json b/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/package.json index b233161a..06f5144f 100644 --- a/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/package.json +++ b/node_modules/connect/node_modules/multiparty/node_modules/readable-stream/package.json @@ -17,7 +17,7 @@ }, "repository": { "type": "git", - "url": "git://github.com/isaacs/readable-stream" + "url": "git://github.com/isaacs/readable-stream.git" }, "keywords": [ "readable", @@ -73,5 +73,7 @@ "tmp": "tmp/readable-stream-1.1.14.tgz_1460563293219_0.5682175166439265" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/isaacs/readable-stream#readme" } diff --git a/node_modules/connect/node_modules/multiparty/node_modules/stream-counter/package.json b/node_modules/connect/node_modules/multiparty/node_modules/stream-counter/package.json index aea38acf..a4af7f00 100644 --- a/node_modules/connect/node_modules/multiparty/node_modules/stream-counter/package.json +++ b/node_modules/connect/node_modules/multiparty/node_modules/stream-counter/package.json @@ -43,5 +43,7 @@ ], "directories": {}, "_shasum": "ded266556319c8b0e222812b9cf3b26fa7d947de", - "_resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz" + "_resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/superjoe30/node-stream-counter#readme" } diff --git a/node_modules/connect/node_modules/multiparty/package.json b/node_modules/connect/node_modules/multiparty/package.json index 1da6a267..5be3e26c 100644 --- a/node_modules/connect/node_modules/multiparty/package.json +++ b/node_modules/connect/node_modules/multiparty/package.json @@ -4,7 +4,7 @@ "description": "multipart/form-data parser which supports streaming", "repository": { "type": "git", - "url": "git@github.com:superjoe30/node-multiparty.git" + "url": "git+ssh://git@github.com/superjoe30/node-multiparty.git" }, "keywords": [ "file", @@ -54,5 +54,7 @@ ], "directories": {}, "_shasum": "a567c2af000ad22dc8f2a653d91978ae1f5316f4", - "_resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz" + "_resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/superjoe30/node-multiparty#readme" } diff --git a/node_modules/connect/node_modules/negotiator/package.json b/node_modules/connect/node_modules/negotiator/package.json index 59d289a6..f3f94886 100644 --- a/node_modules/connect/node_modules/negotiator/package.json +++ b/node_modules/connect/node_modules/negotiator/package.json @@ -53,5 +53,10 @@ "directories": {}, "_shasum": "706d692efeddf574d57ea9fb1ab89a4fa7ee8f60", "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz", - "_from": "negotiator@0.3.0" + "_from": "negotiator@0.3.0", + "bugs": { + "url": "https://github.com/federomero/negotiator/issues" + }, + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/federomero/negotiator#readme" } diff --git a/node_modules/connect/node_modules/pause/package.json b/node_modules/connect/node_modules/pause/package.json index a6c3e6c5..77fe974a 100644 --- a/node_modules/connect/node_modules/pause/package.json +++ b/node_modules/connect/node_modules/pause/package.json @@ -27,5 +27,6 @@ "directories": {}, "_shasum": "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d", "_resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "_from": "pause@0.0.1" + "_from": "pause@0.0.1", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/node_modules/raw-body/package.json b/node_modules/connect/node_modules/raw-body/package.json index f5dde4d5..b1fb43b5 100644 --- a/node_modules/connect/node_modules/raw-body/package.json +++ b/node_modules/connect/node_modules/raw-body/package.json @@ -10,7 +10,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/stream-utils/raw-body.git" + "url": "git+https://github.com/stream-utils/raw-body.git" }, "bugs": { "url": "https://github.com/stream-utils/raw-body/issues" @@ -53,5 +53,6 @@ ], "directories": {}, "_shasum": "c74b3004dea5defd1696171106ac740ec31d62be", - "_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.2.tgz" + "_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/connect/package.json b/node_modules/connect/package.json index 80e7a023..dbd2904b 100644 --- a/node_modules/connect/package.json +++ b/node_modules/connect/package.json @@ -86,5 +86,6 @@ "deprecated": "connect 2.x series is deprecated", "directories": {}, "_shasum": "31d8fa0dcacdf1908d822bd2923be8a2d2a7ed9a", - "_resolved": "https://registry.npmjs.org/connect/-/connect-2.12.0.tgz" + "_resolved": "https://registry.npmjs.org/connect/-/connect-2.12.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/debug/package.json b/node_modules/debug/package.json index 0f0e846f..3e6a9274 100644 --- a/node_modules/debug/package.json +++ b/node_modules/debug/package.json @@ -58,5 +58,6 @@ ], "directories": {}, "_shasum": "06e1ea8082c2cb14e39806e22e2f6f757f92af39", - "_resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + "_resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/ejs/package.json b/node_modules/ejs/package.json index f79c58ba..19a49300 100644 --- a/node_modules/ejs/package.json +++ b/node_modules/ejs/package.json @@ -47,5 +47,6 @@ "deprecated": "Critical security bugs fixed in 2.5.5", "directories": {}, "_shasum": "c9c60a48a46ee452fb32a71c317b95e5aa1fcb3d", - "_resolved": "https://registry.npmjs.org/ejs/-/ejs-1.0.0.tgz" + "_resolved": "https://registry.npmjs.org/ejs/-/ejs-1.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/component-emitter/package.json b/node_modules/engine.io-client/node_modules/component-emitter/package.json index 05988751..d72bce08 100644 --- a/node_modules/engine.io-client/node_modules/component-emitter/package.json +++ b/node_modules/engine.io-client/node_modules/component-emitter/package.json @@ -14,7 +14,7 @@ "main": "index.js", "repository": { "type": "git", - "url": "https://github.com/component/emitter.git" + "url": "git+https://github.com/component/emitter.git" }, "scripts": { "test": "make test" @@ -42,5 +42,6 @@ ], "directories": {}, "_shasum": "296594f2753daa63996d2af08d15a95116c9aec3", - "_resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" + "_resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/component-inherit/package.json b/node_modules/engine.io-client/node_modules/component-inherit/package.json index 61744f57..64db37d9 100644 --- a/node_modules/engine.io-client/node_modules/component-inherit/package.json +++ b/node_modules/engine.io-client/node_modules/component-inherit/package.json @@ -14,7 +14,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/component/inherit.git" + "url": "git+https://github.com/component/inherit.git" }, "bugs": { "url": "https://github.com/component/inherit/issues" @@ -39,5 +39,6 @@ ], "directories": {}, "_shasum": "645fc4adf58b72b649d5cae65135619db26ff143", - "_resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" + "_resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/debug/node_modules/ms/package.json b/node_modules/engine.io-client/node_modules/debug/node_modules/ms/package.json index 29c1ba53..e36489ef 100644 --- a/node_modules/engine.io-client/node_modules/debug/node_modules/ms/package.json +++ b/node_modules/engine.io-client/node_modules/debug/node_modules/ms/package.json @@ -43,5 +43,6 @@ "tarball": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/debug/package.json b/node_modules/engine.io-client/node_modules/debug/package.json index 33bdb64a..46ce4c53 100644 --- a/node_modules/engine.io-client/node_modules/debug/package.json +++ b/node_modules/engine.io-client/node_modules/debug/package.json @@ -68,5 +68,6 @@ "tarball": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" + "_resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/package.json b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/package.json index ac80f6b0..004bc9a4 100644 --- a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/package.json +++ b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/package.json @@ -56,5 +56,7 @@ ], "directories": {}, "_shasum": "ab5d4fb883f596816d3515f8f791c0af486dd627", - "_resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz" + "_resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/Raynos/after#readme" } diff --git a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json index cea166a4..35bbdf7d 100644 --- a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json +++ b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json @@ -10,7 +10,7 @@ }, "repository": { "type": "git", - "url": "git@github.com:rase-/arraybuffer.slice.git" + "url": "git+ssh://git@github.com/rase-/arraybuffer.slice.git" }, "bugs": { "url": "https://github.com/rase-/arraybuffer.slice/issues" @@ -34,5 +34,6 @@ ], "directories": {}, "_shasum": "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca", - "_resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz" + "_resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json index 5e573c53..cc988f94 100644 --- a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json +++ b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json @@ -10,7 +10,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/niklasvh/base64-arraybuffer" + "url": "git+https://github.com/niklasvh/base64-arraybuffer.git" }, "bugs": { "url": "https://github.com/niklasvh/base64-arraybuffer/issues" @@ -51,5 +51,6 @@ ], "directories": {}, "_shasum": "474df4a9f2da24e05df3158c3b1db3c3cd46a154", - "_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz" + "_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/package.json b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/package.json index f4a45d32..b5874552 100644 --- a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/package.json +++ b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/package.json @@ -12,7 +12,7 @@ }, "repository": { "type": "git", - "url": "git@github.com:rase-/blob.git" + "url": "git+ssh://git@github.com/rase-/blob.git" }, "scripts": { "test": "make test" @@ -39,5 +39,6 @@ ], "directories": {}, "_shasum": "bcf13052ca54463f30f9fc7e95b9a47630a94921", - "_resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz" + "_resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json index 9cfdb95b..060e073f 100644 --- a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json +++ b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json @@ -45,5 +45,9 @@ ], "directories": {}, "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "bugs": { + "url": "https://github.com/juliangruber/isarray/issues" + }, + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/package.json b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/package.json index fe152d85..72bff47e 100644 --- a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/package.json +++ b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/package.json @@ -34,5 +34,6 @@ "tarball": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz" + "_resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/package.json b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/package.json index b288a3d1..0498ae03 100644 --- a/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/package.json +++ b/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/package.json @@ -17,7 +17,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/mathiasbynens/utf8.js.git" + "url": "git+https://github.com/mathiasbynens/utf8.js.git" }, "bugs": { "url": "https://github.com/mathiasbynens/utf8.js/issues" @@ -59,5 +59,6 @@ "tarball": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz" + "_resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/engine.io-parser/package.json b/node_modules/engine.io-client/node_modules/engine.io-parser/package.json index f34da504..4014c1b3 100644 --- a/node_modules/engine.io-client/node_modules/engine.io-parser/package.json +++ b/node_modules/engine.io-client/node_modules/engine.io-parser/package.json @@ -49,5 +49,6 @@ "tarball": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz" + "_resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/has-cors/package.json b/node_modules/engine.io-client/node_modules/has-cors/package.json index 5408d82d..a69d5b38 100644 --- a/node_modules/engine.io-client/node_modules/has-cors/package.json +++ b/node_modules/engine.io-client/node_modules/has-cors/package.json @@ -57,5 +57,6 @@ "tarball": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz" + "_resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/indexof/package.json b/node_modules/engine.io-client/node_modules/indexof/package.json index 8f2bb95b..b561ad32 100644 --- a/node_modules/engine.io-client/node_modules/indexof/package.json +++ b/node_modules/engine.io-client/node_modules/indexof/package.json @@ -27,5 +27,6 @@ "directories": {}, "_shasum": "82dc336d232b9062179d05ab3293a66059fd435d", "_resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "_from": "indexof@0.0.1" + "_from": "indexof@0.0.1", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/package.json b/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/package.json index e9f94c65..e6474aee 100644 --- a/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/package.json +++ b/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/package.json @@ -39,5 +39,6 @@ ], "directories": {}, "_shasum": "280398e5d664bd74038b6f0905153e6e8af1bc20", - "_resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" + "_resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/package.json b/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/package.json index cec97c52..207ad271 100644 --- a/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/package.json +++ b/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/package.json @@ -26,7 +26,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/visionmedia/better-assert.git" + "url": "git+https://github.com/visionmedia/better-assert.git" }, "main": "index", "engines": { @@ -59,5 +59,6 @@ "tarball": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parsejson/package.json b/node_modules/engine.io-client/node_modules/parsejson/package.json index 919dcefe..ce6b4909 100644 --- a/node_modules/engine.io-client/node_modules/parsejson/package.json +++ b/node_modules/engine.io-client/node_modules/parsejson/package.json @@ -32,5 +32,6 @@ ], "directories": {}, "_shasum": "9b10c6c0d825ab589e685153826de0a3ba278bcc", - "_resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz" + "_resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/package.json b/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/package.json index e9f94c65..e6474aee 100644 --- a/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/package.json +++ b/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/package.json @@ -39,5 +39,6 @@ ], "directories": {}, "_shasum": "280398e5d664bd74038b6f0905153e6e8af1bc20", - "_resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" + "_resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/package.json b/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/package.json index cec97c52..207ad271 100644 --- a/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/package.json +++ b/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/package.json @@ -26,7 +26,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/visionmedia/better-assert.git" + "url": "git+https://github.com/visionmedia/better-assert.git" }, "main": "index", "engines": { @@ -59,5 +59,6 @@ "tarball": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parseqs/package.json b/node_modules/engine.io-client/node_modules/parseqs/package.json index 116bb208..403ab86a 100644 --- a/node_modules/engine.io-client/node_modules/parseqs/package.json +++ b/node_modules/engine.io-client/node_modules/parseqs/package.json @@ -32,5 +32,6 @@ ], "directories": {}, "_shasum": "9dfe70b2cddac388bde4f35b1f240fa58adbe6c7", - "_resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz" + "_resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/package.json b/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/package.json index e9f94c65..e6474aee 100644 --- a/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/package.json +++ b/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/package.json @@ -39,5 +39,6 @@ ], "directories": {}, "_shasum": "280398e5d664bd74038b6f0905153e6e8af1bc20", - "_resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" + "_resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/package.json b/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/package.json index cec97c52..207ad271 100644 --- a/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/package.json +++ b/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/package.json @@ -26,7 +26,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/visionmedia/better-assert.git" + "url": "git+https://github.com/visionmedia/better-assert.git" }, "main": "index", "engines": { @@ -59,5 +59,6 @@ "tarball": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/parseuri/package.json b/node_modules/engine.io-client/node_modules/parseuri/package.json index 150e8935..14d5b06b 100644 --- a/node_modules/engine.io-client/node_modules/parseuri/package.json +++ b/node_modules/engine.io-client/node_modules/parseuri/package.json @@ -4,7 +4,7 @@ "description": "Method that parses a URI and returns an array of its components", "repository": { "type": "git", - "url": "https://github.com/get/parseuri.git" + "url": "git+https://github.com/get/parseuri.git" }, "homepage": "https://github.com/get/parseuri", "scripts": { @@ -40,5 +40,6 @@ ], "directories": {}, "_shasum": "806582a39887e1ea18dd5e2fe0e01902268e9350", - "_resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz" + "_resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/xmlhttprequest-ssl/package.json b/node_modules/engine.io-client/node_modules/xmlhttprequest-ssl/package.json index f8807a51..5a109b60 100644 --- a/node_modules/engine.io-client/node_modules/xmlhttprequest-ssl/package.json +++ b/node_modules/engine.io-client/node_modules/xmlhttprequest-ssl/package.json @@ -53,5 +53,6 @@ "email": "mjwwit@gmail.com" } ], - "_resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz" + "_resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/node_modules/yeast/package.json b/node_modules/engine.io-client/node_modules/yeast/package.json index 8ed642d9..61892460 100644 --- a/node_modules/engine.io-client/node_modules/yeast/package.json +++ b/node_modules/engine.io-client/node_modules/yeast/package.json @@ -61,5 +61,6 @@ "tarball": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" + "_resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io-client/package.json b/node_modules/engine.io-client/package.json index f7b4ccac..0b17e38c 100644 --- a/node_modules/engine.io-client/package.json +++ b/node_modules/engine.io-client/package.json @@ -88,5 +88,6 @@ "tmp": "tmp/engine.io-client-1.6.9.tgz_1462247658295_0.9066626788116992" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.9.tgz" + "_resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.9.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/accepts/node_modules/negotiator/package.json b/node_modules/engine.io/node_modules/accepts/node_modules/negotiator/package.json index d4f535e5..5a140671 100644 --- a/node_modules/engine.io/node_modules/accepts/node_modules/negotiator/package.json +++ b/node_modules/engine.io/node_modules/accepts/node_modules/negotiator/package.json @@ -15,7 +15,7 @@ ], "repository": { "type": "git", - "url": "https://github.com/jshttp/negotiator" + "url": "git+https://github.com/jshttp/negotiator.git" }, "keywords": [ "http", @@ -74,5 +74,6 @@ "tarball": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz" + "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/accepts/package.json b/node_modules/engine.io/node_modules/accepts/package.json index b2d12432..28d26123 100644 --- a/node_modules/engine.io/node_modules/accepts/package.json +++ b/node_modules/engine.io/node_modules/accepts/package.json @@ -10,7 +10,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/jshttp/accepts" + "url": "git+https://github.com/jshttp/accepts.git" }, "dependencies": { "mime-types": "~2.0.4", @@ -87,5 +87,6 @@ "tarball": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz" + "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/debug/node_modules/ms/package.json b/node_modules/engine.io/node_modules/debug/node_modules/ms/package.json index 29c1ba53..e36489ef 100644 --- a/node_modules/engine.io/node_modules/debug/node_modules/ms/package.json +++ b/node_modules/engine.io/node_modules/debug/node_modules/ms/package.json @@ -43,5 +43,6 @@ "tarball": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/debug/package.json b/node_modules/engine.io/node_modules/debug/package.json index 33bdb64a..46ce4c53 100644 --- a/node_modules/engine.io/node_modules/debug/package.json +++ b/node_modules/engine.io/node_modules/debug/package.json @@ -68,5 +68,6 @@ "tarball": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" + "_resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/package.json b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/package.json index ac80f6b0..004bc9a4 100644 --- a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/package.json +++ b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/package.json @@ -56,5 +56,7 @@ ], "directories": {}, "_shasum": "ab5d4fb883f596816d3515f8f791c0af486dd627", - "_resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz" + "_resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/Raynos/after#readme" } diff --git a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json index cea166a4..35bbdf7d 100644 --- a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json +++ b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json @@ -10,7 +10,7 @@ }, "repository": { "type": "git", - "url": "git@github.com:rase-/arraybuffer.slice.git" + "url": "git+ssh://git@github.com/rase-/arraybuffer.slice.git" }, "bugs": { "url": "https://github.com/rase-/arraybuffer.slice/issues" @@ -34,5 +34,6 @@ ], "directories": {}, "_shasum": "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca", - "_resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz" + "_resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json index 5e573c53..cc988f94 100644 --- a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json +++ b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json @@ -10,7 +10,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/niklasvh/base64-arraybuffer" + "url": "git+https://github.com/niklasvh/base64-arraybuffer.git" }, "bugs": { "url": "https://github.com/niklasvh/base64-arraybuffer/issues" @@ -51,5 +51,6 @@ ], "directories": {}, "_shasum": "474df4a9f2da24e05df3158c3b1db3c3cd46a154", - "_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz" + "_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/package.json b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/package.json index f4a45d32..b5874552 100644 --- a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/package.json +++ b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/package.json @@ -12,7 +12,7 @@ }, "repository": { "type": "git", - "url": "git@github.com:rase-/blob.git" + "url": "git+ssh://git@github.com/rase-/blob.git" }, "scripts": { "test": "make test" @@ -39,5 +39,6 @@ ], "directories": {}, "_shasum": "bcf13052ca54463f30f9fc7e95b9a47630a94921", - "_resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz" + "_resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json index 9cfdb95b..060e073f 100644 --- a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json +++ b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json @@ -45,5 +45,9 @@ ], "directories": {}, "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "bugs": { + "url": "https://github.com/juliangruber/isarray/issues" + }, + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/package.json b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/package.json index fe152d85..72bff47e 100644 --- a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/package.json +++ b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/package.json @@ -34,5 +34,6 @@ "tarball": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz" + "_resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/package.json b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/package.json index b288a3d1..0498ae03 100644 --- a/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/package.json +++ b/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/package.json @@ -17,7 +17,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/mathiasbynens/utf8.js.git" + "url": "git+https://github.com/mathiasbynens/utf8.js.git" }, "bugs": { "url": "https://github.com/mathiasbynens/utf8.js/issues" @@ -59,5 +59,6 @@ "tarball": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz" + "_resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/node_modules/engine.io-parser/package.json b/node_modules/engine.io/node_modules/engine.io-parser/package.json index f34da504..4014c1b3 100644 --- a/node_modules/engine.io/node_modules/engine.io-parser/package.json +++ b/node_modules/engine.io/node_modules/engine.io-parser/package.json @@ -49,5 +49,6 @@ "tarball": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz" + "_resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/engine.io/package.json b/node_modules/engine.io/package.json index 46eedb63..d10d88a3 100644 --- a/node_modules/engine.io/package.json +++ b/node_modules/engine.io/package.json @@ -76,5 +76,6 @@ "tmp": "tmp/engine.io-1.6.9.tgz_1462247658890_0.8458864190615714" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.9.tgz" + "_resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.9.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/http-error/package.json b/node_modules/http-error/package.json index 0d87adb6..e6ff0345 100644 --- a/node_modules/http-error/package.json +++ b/node_modules/http-error/package.json @@ -54,5 +54,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/http-error/-/http-error-0.0.6.tgz" + "_resolved": "https://registry.npmjs.org/http-error/-/http-error-0.0.6.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/errno/custom.js b/node_modules/less/node_modules/errno/custom.js index dbe9fa46..ca8c1d8d 100644 --- a/node_modules/less/node_modules/errno/custom.js +++ b/node_modules/less/node_modules/errno/custom.js @@ -1,13 +1,15 @@ var prr = require('prr') function init (type, message, cause) { + if (!!message && typeof message != 'string') { + message = message.message || message.name + } prr(this, { type : type , name : type // can be passed just a 'cause' , cause : typeof message != 'string' ? message : cause - , message : !!message && typeof message != 'string' ? message.message : message - + , message : message }, 'ewr') } diff --git a/node_modules/less/node_modules/errno/node_modules/prr/package.json b/node_modules/less/node_modules/errno/node_modules/prr/package.json index a59e5a49..bf36b76b 100644 --- a/node_modules/less/node_modules/errno/node_modules/prr/package.json +++ b/node_modules/less/node_modules/errno/node_modules/prr/package.json @@ -17,7 +17,7 @@ "main": "./prr.js", "repository": { "type": "git", - "url": "https://github.com/rvagg/prr.git" + "url": "git+https://github.com/rvagg/prr.git" }, "dependencies": {}, "devDependencies": { @@ -50,5 +50,6 @@ "tarball": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/errno/package.json b/node_modules/less/node_modules/errno/package.json index 66fd23d0..7e2b010b 100644 --- a/node_modules/less/node_modules/errno/package.json +++ b/node_modules/less/node_modules/errno/package.json @@ -9,7 +9,7 @@ "errno", "libuv" ], - "version": "0.1.6", + "version": "0.1.7", "main": "errno.js", "dependencies": { "prr": "~1.0.1" @@ -30,39 +30,42 @@ "scripts": { "test": "node --use_strict test.js" }, - "gitHead": "dab1099bb035b8950d7578b5c5d6f8b459318a42", + "gitHead": "ffb10fcb9459bcef9dcf5cb5f4fa6c68bbab8f4e", "bugs": { "url": "https://github.com/rvagg/node-errno/issues" }, "homepage": "https://github.com/rvagg/node-errno#readme", - "_id": "errno@0.1.6", + "_id": "errno@0.1.7", "_npmVersion": "5.6.0", - "_nodeVersion": "9.2.0", + "_nodeVersion": "9.4.0", "_npmUser": { "name": "ralphtheninja", "email": "ralphtheninja@riseup.net" }, "dist": { - "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", - "shasum": "c386ce8a6283f14fc09563b71560908c9bf53026", - "tarball": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz" + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "shasum": "4684d71779ad39af177e3f007996f7c67c852618", + "tarball": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "fileCount": 9, + "unpackedSize": 18048 }, "maintainers": [ { - "email": "ralphtheninja@riseup.net", - "name": "ralphtheninja" + "name": "ralphtheninja", + "email": "ralphtheninja@riseup.net" }, { - "email": "r@va.gg", - "name": "rvagg" + "name": "rvagg", + "email": "r@va.gg" } ], + "directories": {}, "_npmOperationalInternal": { "host": "s3://npm-registry-packages", - "tmp": "tmp/errno-0.1.6.tgz_1513086218646_0.35013204999268055" + "tmp": "tmp/errno_0.1.7_1518663517573_0.2402603718742864" }, - "directories": {}, - "_shasum": "c386ce8a6283f14fc09563b71560908c9bf53026", - "_resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", - "_from": "errno@>=0.1.1 <0.2.0" + "_shasum": "4684d71779ad39af177e3f007996f7c67c852618", + "_resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "_from": "errno@>=0.1.1 <0.2.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/errno/test.js b/node_modules/less/node_modules/errno/test.js index 9f3c912d..1c046357 100644 --- a/node_modules/less/node_modules/errno/test.js +++ b/node_modules/less/node_modules/errno/test.js @@ -71,3 +71,18 @@ test('callstack', function (t) { secondLastFunction(MyError3, testFrames(t)) }) }) + +test('error without message', function (t) { + const Cust = errno.create('WriteError') + const cust = new Cust({ + code: 22, + message: '', + name: 'QuotaExceededError' + }) + + t.equal(cust.name, 'WriteError', 'correct custom name') + t.equal(cust.type, 'WriteError', 'correct custom type') + t.equal(cust.message, 'QuotaExceededError', 'message is the name') + t.notOk(cust.cause, 'no cause') + t.end() +}) diff --git a/node_modules/less/node_modules/image-size/package.json b/node_modules/less/node_modules/image-size/package.json index 6ba00703..f4a87fd3 100644 --- a/node_modules/less/node_modules/image-size/package.json +++ b/node_modules/less/node_modules/image-size/package.json @@ -73,16 +73,16 @@ }, "maintainers": [ { - "email": "snnskwtnb@gmail.com", - "name": "shinnn" + "name": "shinnn", + "email": "snnskwtnb@gmail.com" }, { - "email": "zeke@sikelianos.com", - "name": "zeke" + "name": "zeke", + "email": "zeke@sikelianos.com" }, { - "email": "aditya@netroy.in", - "name": "netroy" + "name": "netroy", + "email": "aditya@netroy.in" } ], "_npmOperationalInternal": { @@ -90,5 +90,6 @@ "tmp": "tmp/image-size-0.5.5.tgz_1497255554208_0.9632799690589309" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" + "_resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/mkdirp/node_modules/minimist/package.json b/node_modules/less/node_modules/mkdirp/node_modules/minimist/package.json index f7ee1cfc..0c9af0e7 100644 --- a/node_modules/less/node_modules/mkdirp/node_modules/minimist/package.json +++ b/node_modules/less/node_modules/mkdirp/node_modules/minimist/package.json @@ -62,5 +62,6 @@ ], "directories": {}, "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d", - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/mkdirp/package.json b/node_modules/less/node_modules/mkdirp/package.json index d91ddc81..2c4d8590 100644 --- a/node_modules/less/node_modules/mkdirp/package.json +++ b/node_modules/less/node_modules/mkdirp/package.json @@ -55,5 +55,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/promise/node_modules/asap/package.json b/node_modules/less/node_modules/promise/node_modules/asap/package.json index 6f5e45f5..6250638d 100644 --- a/node_modules/less/node_modules/promise/node_modules/asap/package.json +++ b/node_modules/less/node_modules/promise/node_modules/asap/package.json @@ -88,5 +88,6 @@ "tmp": "tmp/asap-2.0.6.tgz_1499700096673_0.1125483822543174" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + "_resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/promise/package.json b/node_modules/less/node_modules/promise/package.json index 1c484a72..16415780 100644 --- a/node_modules/less/node_modules/promise/package.json +++ b/node_modules/less/node_modules/promise/package.json @@ -68,5 +68,6 @@ "directories": {}, "_shasum": "064b72602b18f90f29192b8b1bc418ffd1ebd3bf", "_resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "_from": "promise@>=7.1.1 <8.0.0" + "_from": "promise@>=7.1.1 <8.0.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/aws-sign2/package.json b/node_modules/less/node_modules/request/node_modules/aws-sign2/package.json index 1320e304..68572c7b 100644 --- a/node_modules/less/node_modules/request/node_modules/aws-sign2/package.json +++ b/node_modules/less/node_modules/request/node_modules/aws-sign2/package.json @@ -44,5 +44,6 @@ "tarball": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/aws4/package.json b/node_modules/less/node_modules/request/node_modules/aws4/package.json index 01f9a210..38b85673 100644 --- a/node_modules/less/node_modules/request/node_modules/aws4/package.json +++ b/node_modules/less/node_modules/request/node_modules/aws4/package.json @@ -101,5 +101,6 @@ "tmp": "tmp/aws4-1.6.0.tgz_1486481933920_0.6127187723759562" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz" + "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/caseless/package.json b/node_modules/less/node_modules/request/node_modules/caseless/package.json index 29fbd963..feb3c3f2 100644 --- a/node_modules/less/node_modules/request/node_modules/caseless/package.json +++ b/node_modules/less/node_modules/request/node_modules/caseless/package.json @@ -61,5 +61,6 @@ "tmp": "tmp/caseless-0.12.0.tgz_1485466648253_0.3714302028529346" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + "_resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js b/node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js index 6b5c21b6..809b3c2e 100644 --- a/node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js +++ b/node_modules/less/node_modules/request/node_modules/combined-stream/lib/combined_stream.js @@ -1,6 +1,7 @@ var util = require('util'); var Stream = require('stream').Stream; var DelayedStream = require('delayed-stream'); +var defer = require('./defer.js'); module.exports = CombinedStream; function CombinedStream() { @@ -88,7 +89,7 @@ CombinedStream.prototype._getNext = function() { this._handleErrors(stream); } - this._pipeNext(stream); + defer(this._pipeNext.bind(this, stream)); }.bind(this)); }; diff --git a/node_modules/less/node_modules/request/node_modules/combined-stream/lib/defer.js b/node_modules/less/node_modules/request/node_modules/combined-stream/lib/defer.js new file mode 100644 index 00000000..b67110c7 --- /dev/null +++ b/node_modules/less/node_modules/request/node_modules/combined-stream/lib/defer.js @@ -0,0 +1,26 @@ +module.exports = defer; + +/** + * Runs provided function on next iteration of the event loop + * + * @param {function} fn - function to run + */ +function defer(fn) +{ + var nextTick = typeof setImmediate == 'function' + ? setImmediate + : ( + typeof process == 'object' && typeof process.nextTick == 'function' + ? process.nextTick + : null + ); + + if (nextTick) + { + nextTick(fn); + } + else + { + setTimeout(fn, 0); + } +} diff --git a/node_modules/less/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json b/node_modules/less/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json index 8f5885f0..a4717288 100644 --- a/node_modules/less/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json +++ b/node_modules/less/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json @@ -59,5 +59,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "_resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/combined-stream/package.json b/node_modules/less/node_modules/request/node_modules/combined-stream/package.json index 0cb78ff4..bb18b5c3 100644 --- a/node_modules/less/node_modules/request/node_modules/combined-stream/package.json +++ b/node_modules/less/node_modules/request/node_modules/combined-stream/package.json @@ -6,7 +6,7 @@ }, "name": "combined-stream", "description": "A stream that emits multiple other streams one after another.", - "version": "1.0.5", + "version": "1.0.6", "homepage": "https://github.com/felixge/node-combined-stream", "repository": { "type": "git", @@ -26,32 +26,15 @@ "far": "~0.0.7" }, "license": "MIT", - "gitHead": "cfc7b815d090a109bcedb5bb0f6713148d55a6b7", - "bugs": { - "url": "https://github.com/felixge/node-combined-stream/issues" - }, - "_id": "combined-stream@1.0.5", - "_shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009", - "_from": "combined-stream@>=1.0.5 <1.1.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "0.12.4", - "_npmUser": { - "name": "alexindigo", - "email": "iam@alexindigo.com" - }, + "licenseText": "Copyright (c) 2011 Debuggable Limited \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n", + "_id": "combined-stream@1.0.6", "dist": { - "shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009", - "tarball": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" + "shasum": "723e7df6e801ac5613113a7e445a9b69cb632818", + "tarball": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "fileCount": 7, + "unpackedSize": 11070 }, "maintainers": [ - { - "name": "felixge", - "email": "felix@debuggable.com" - }, - { - "name": "celer", - "email": "dtyree77@gmail.com" - }, { "name": "alexindigo", "email": "iam@alexindigo.com" @@ -59,8 +42,30 @@ { "name": "apechimp", "email": "apeherder@gmail.com" + }, + { + "name": "celer", + "email": "dtyree77@gmail.com" + }, + { + "name": "felixge", + "email": "felix@debuggable.com" } ], + "_npmUser": { + "name": "alexindigo", + "email": "iam@alexindigo.com" + }, "directories": {}, - "_resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/combined-stream_1.0.6_1518539465161_0.17330394935691018" + }, + "_shasum": "723e7df6e801ac5613113a7e445a9b69cb632818", + "_resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "_from": "combined-stream@>=1.0.5 <1.1.0", + "bugs": { + "url": "https://github.com/felixge/node-combined-stream/issues" + }, + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/extend/package.json b/node_modules/less/node_modules/request/node_modules/extend/package.json index 06eef051..935a0d53 100644 --- a/node_modules/less/node_modules/request/node_modules/extend/package.json +++ b/node_modules/less/node_modules/request/node_modules/extend/package.json @@ -76,5 +76,6 @@ "tmp": "tmp/extend-3.0.1.tgz_1493357803699_0.1708133383654058" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz" + "_resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/forever-agent/package.json b/node_modules/less/node_modules/request/node_modules/forever-agent/package.json index c5517515..36c4f594 100644 --- a/node_modules/less/node_modules/request/node_modules/forever-agent/package.json +++ b/node_modules/less/node_modules/request/node_modules/forever-agent/package.json @@ -9,7 +9,7 @@ "version": "0.6.1", "license": "Apache-2.0", "repository": { - "url": "https://github.com/mikeal/forever-agent" + "url": "git+https://github.com/mikeal/forever-agent.git" }, "main": "index.js", "dependencies": {}, @@ -51,5 +51,6 @@ "tarball": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/package.json b/node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/package.json index fae8d957..0871f867 100644 --- a/node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/package.json +++ b/node_modules/less/node_modules/request/node_modules/form-data/node_modules/asynckit/package.json @@ -88,5 +88,6 @@ "tmp": "tmp/asynckit-0.4.0.tgz_1465928940169_0.8008207362145185" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "_resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/form-data/package.json b/node_modules/less/node_modules/request/node_modules/form-data/package.json index 0f6c8ffd..f76448cc 100644 --- a/node_modules/less/node_modules/request/node_modules/form-data/package.json +++ b/node_modules/less/node_modules/request/node_modules/form-data/package.json @@ -107,5 +107,6 @@ "tmp": "tmp/form-data-2.1.4.tgz_1491750597266_0.5097400255035609" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz" + "_resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co/package.json b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co/package.json index 869ebc1b..2ab6af9a 100644 --- a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co/package.json +++ b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/co/package.json @@ -67,5 +67,6 @@ "tarball": "https://registry.npmjs.org/co/-/co-4.6.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + "_resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/package.json b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/package.json index cfd676ef..5e090292 100644 --- a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/package.json +++ b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/node_modules/jsonify/package.json @@ -48,5 +48,10 @@ ], "_shasum": "2c74b6ee41d93ca51b7b5aaee8f503631d252a73", "_resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "_from": "jsonify@>=0.0.0 <0.1.0" + "_from": "jsonify@>=0.0.0 <0.1.0", + "bugs": { + "url": "https://github.com/substack/jsonify/issues" + }, + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/substack/jsonify#readme" } diff --git a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/package.json b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/package.json index 6f9232fd..4039854d 100644 --- a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/package.json +++ b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-stable-stringify/package.json @@ -71,5 +71,6 @@ "tmp": "tmp/json-stable-stringify-1.0.1.tgz_1454436356521_0.9410459187347442" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/package.json b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/package.json index c28a733d..5daa6d1c 100644 --- a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/package.json +++ b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/ajv/package.json @@ -132,5 +132,6 @@ "tmp": "tmp/ajv-4.11.8.tgz_1493407396661_0.6132844805251807" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz" + "_resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/package.json b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/package.json index 3eb2b940..33b8e954 100644 --- a/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/package.json +++ b/node_modules/less/node_modules/request/node_modules/har-validator/node_modules/har-schema/package.json @@ -83,5 +83,6 @@ "tmp": "tmp/har-schema-1.0.5.tgz_1480877746957_0.2995719478931278" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz" + "_resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/har-validator/package.json b/node_modules/less/node_modules/request/node_modules/har-validator/package.json index 8c77ac05..33d5aebe 100644 --- a/node_modules/less/node_modules/request/node_modules/har-validator/package.json +++ b/node_modules/less/node_modules/request/node_modules/har-validator/package.json @@ -98,5 +98,6 @@ "tmp": "tmp/har-validator-4.2.1.tgz_1488636538686_0.5101928301155567" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz" + "_resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/package.json b/node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/package.json index f89de57b..9a9fa164 100644 --- a/node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/package.json +++ b/node_modules/less/node_modules/request/node_modules/hawk/node_modules/boom/package.json @@ -59,5 +59,6 @@ "tarball": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + "_resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json b/node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json index 61550411..bf368d3f 100644 --- a/node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json +++ b/node_modules/less/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json @@ -56,5 +56,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + "_resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/package.json b/node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/package.json index ab781709..ef22487c 100644 --- a/node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/package.json +++ b/node_modules/less/node_modules/request/node_modules/hawk/node_modules/hoek/package.json @@ -56,5 +56,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "_resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/package.json b/node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/package.json index e29f0668..36a4c033 100644 --- a/node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/package.json +++ b/node_modules/less/node_modules/request/node_modules/hawk/node_modules/sntp/package.json @@ -10,7 +10,7 @@ "contributors": [], "repository": { "type": "git", - "url": "git://github.com/hueniverse/sntp" + "url": "git://github.com/hueniverse/sntp.git" }, "main": "index", "keywords": [ @@ -60,5 +60,6 @@ "tarball": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + "_resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/hawk/package.json b/node_modules/less/node_modules/request/node_modules/hawk/package.json index ca87d10e..0882fa80 100644 --- a/node_modules/less/node_modules/request/node_modules/hawk/package.json +++ b/node_modules/less/node_modules/request/node_modules/hawk/package.json @@ -63,5 +63,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" + "_resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json index 6bb28417..6b14225c 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json @@ -78,5 +78,6 @@ "email": "patrick.f.mooney@gmail.com" } ], - "directories": {} + "directories": {}, + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus/package.json index a5360d2f..0c08e161 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/assert-plus/package.json @@ -78,5 +78,6 @@ "shasum": "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525", "tarball": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" }, - "directories": {} + "directories": {}, + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/package.json index 868dd17c..a3dabd95 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/package.json @@ -37,5 +37,6 @@ "tarball": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + "_resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/package.json index 2e1c5581..96b78c8e 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/package.json @@ -61,5 +61,6 @@ "host": "packages-12-west.internal.npmjs.com", "tmp": "tmp/json-schema-0.2.3.tgz_1473699189380_0.7420965158380568" }, - "_resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" + "_resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/package.json index 2e3a3b64..519f02ce 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/package.json @@ -46,5 +46,6 @@ "tmp": "tmp/verror-1.10.0.tgz_1493743247437_0.7535550429020077" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + "_resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/package.json index 067f1c93..63285d5c 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/jsprim/package.json @@ -47,5 +47,6 @@ "tmp": "tmp/jsprim-1.4.1.tgz_1501691396911_0.08959000837057829" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" + "_resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/package.json index b8760de9..fa0ac24d 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/package.json @@ -60,5 +60,6 @@ "shasum": "dac8787713c9966849fc8180777ebe9c1ddf3b86", "tarball": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" }, - "directories": {} + "directories": {}, + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/package.json index 09476b36..6af98395 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/package.json @@ -46,5 +46,6 @@ "tmp": "tmp/bcrypt-pbkdf-1.0.1.tgz_1486007687899_0.974529881728813" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/package.json index e37aa032..7f1878f3 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/package.json @@ -87,5 +87,6 @@ "tmp": "tmp/dashdash-1.14.1.tgz_1479854020349_0.731718891998753" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + "_resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/package.json index 1c813b9f..25fa1104 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/package.json @@ -51,5 +51,6 @@ "tarball": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + "_resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/package.json index 1f2e53bb..ea130eb5 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/package.json @@ -47,5 +47,6 @@ "tmp": "tmp/getpass-0.1.7.tgz_1493163657029_0.5366648870985955" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + "_resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json index 1b3e4119..d77b3b77 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json @@ -49,5 +49,6 @@ "tmp": "tmp/jsbn-0.1.1.tgz_1486886593983_0.3002306066919118" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "_resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json index df9ee650..28e2ebd4 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json @@ -81,5 +81,6 @@ "host": "packages-12-west.internal.npmjs.com", "tmp": "tmp/tweetnacl-0.14.5.tgz_1481627515097_0.015130913350731134" }, - "_resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "_resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json index ed8b256a..6637b7a7 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json @@ -96,5 +96,6 @@ "host": "s3://npm-registry-packages", "tmp": "tmp/sshpk-1.13.1.tgz_1496888143718_0.9964376483112574" }, - "_resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz" + "_resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/http-signature/package.json b/node_modules/less/node_modules/request/node_modules/http-signature/package.json index a003ab27..12b32f8e 100644 --- a/node_modules/less/node_modules/request/node_modules/http-signature/package.json +++ b/node_modules/less/node_modules/request/node_modules/http-signature/package.json @@ -78,5 +78,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz" + "_resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/is-typedarray/package.json b/node_modules/less/node_modules/request/node_modules/is-typedarray/package.json index 2619aaf4..750da78e 100644 --- a/node_modules/less/node_modules/request/node_modules/is-typedarray/package.json +++ b/node_modules/less/node_modules/request/node_modules/is-typedarray/package.json @@ -52,5 +52,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "_resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/isstream/package.json b/node_modules/less/node_modules/request/node_modules/isstream/package.json index 6bb0a0a4..266fd5d1 100644 --- a/node_modules/less/node_modules/request/node_modules/isstream/package.json +++ b/node_modules/less/node_modules/request/node_modules/isstream/package.json @@ -8,7 +8,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/rvagg/isstream.git" + "url": "git+https://github.com/rvagg/isstream.git" }, "keywords": [ "stream", @@ -54,5 +54,6 @@ "tarball": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "_resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/json-stringify-safe/package.json b/node_modules/less/node_modules/request/node_modules/json-stringify-safe/package.json index 586ab0bf..1ba97c94 100644 --- a/node_modules/less/node_modules/request/node_modules/json-stringify-safe/package.json +++ b/node_modules/less/node_modules/request/node_modules/json-stringify-safe/package.json @@ -63,5 +63,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "_resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/mime-types/HISTORY.md b/node_modules/less/node_modules/request/node_modules/mime-types/HISTORY.md index 7517c11a..ecdc59aa 100644 --- a/node_modules/less/node_modules/request/node_modules/mime-types/HISTORY.md +++ b/node_modules/less/node_modules/request/node_modules/mime-types/HISTORY.md @@ -1,3 +1,16 @@ +2.1.18 / 2018-02-16 +=================== + + * deps: mime-db@~1.33.0 + - Add `application/raml+yaml` with extension `.raml` + - Add `application/wasm` with extension `.wasm` + - Add `text/shex` with extension `.shex` + - Add extensions for JPEG-2000 images + - Add extensions from IANA for `message/*` types + - Add new upstream MIME types + - Update font MIME types + - Update `text/hjson` to registered `application/hjson` + 2.1.17 / 2017-09-01 =================== diff --git a/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md index b2870c40..29a8c4ff 100644 --- a/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md +++ b/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md @@ -1,3 +1,28 @@ +1.33.0 / 2018-02-15 +=================== + + * Add extensions from IANA for `message/*` types + * Add new upstream MIME types + * Fix some incorrect OOXML types + * Remove `application/font-woff2` + +1.32.0 / 2017-11-29 +=================== + + * Add new upstream MIME types + * Update `text/hjson` to registered `application/hjson` + * Add `text/shex` with extension `.shex` + +1.31.0 / 2017-10-25 +=================== + + * Add `application/raml+yaml` with extension `.raml` + * Add `application/wasm` with extension `.wasm` + * Add new `font` type from IANA + * Add new upstream font extensions + * Add new upstream MIME types + * Add extensions for JPEG-2000 images + 1.30.0 / 2017-08-27 =================== diff --git a/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json b/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json index 0fc2a72f..a8db93b8 100644 --- a/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json +++ b/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json @@ -369,6 +369,9 @@ "application/fdt+xml": { "source": "iana" }, + "application/fhir+xml": { + "source": "iana" + }, "application/fido.trusted-apps+json": { "compressible": true }, @@ -387,10 +390,6 @@ "compressible": false, "extensions": ["woff"] }, - "application/font-woff2": { - "compressible": false, - "extensions": ["woff2"] - }, "application/framework-attributes+xml": { "source": "iana" }, @@ -428,6 +427,9 @@ "application/held+xml": { "source": "iana" }, + "application/hjson": { + "extensions": ["hjson"] + }, "application/http": { "source": "iana" }, @@ -776,6 +778,9 @@ "application/nlsml+xml": { "source": "iana" }, + "application/node": { + "source": "iana" + }, "application/nss": { "source": "iana" }, @@ -880,6 +885,9 @@ "source": "iana", "extensions": ["p8"] }, + "application/pkcs8-encrypted": { + "source": "iana" + }, "application/pkix-attr-cert": { "source": "iana", "extensions": ["ac"] @@ -955,6 +963,10 @@ "application/qsig": { "source": "iana" }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, "application/raptorfec": { "source": "iana" }, @@ -1240,6 +1252,9 @@ "source": "iana", "extensions": ["tsd"] }, + "application/tnauthlist": { + "source": "iana" + }, "application/trig": { "source": "iana" }, @@ -1286,6 +1301,9 @@ "application/vnd.3gpp-prose-pc3ch+xml": { "source": "iana" }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, "application/vnd.3gpp.access-transfer-events+xml": { "source": "iana" }, @@ -1295,12 +1313,24 @@ "application/vnd.3gpp.gmop+xml": { "source": "iana" }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana" + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana" + }, "application/vnd.3gpp.mcptt-info+xml": { "source": "iana" }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana" + }, "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { "source": "iana" }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana" + }, "application/vnd.3gpp.mid-call+xml": { "source": "iana" }, @@ -1411,6 +1441,10 @@ "source": "iana", "extensions": ["azs"] }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, "application/vnd.amazon.ebook": { "source": "apache", "extensions": ["azw"] @@ -1499,6 +1533,10 @@ "application/vnd.autopackage": { "source": "iana" }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, "application/vnd.avistar+xml": { "source": "iana" }, @@ -1508,6 +1546,13 @@ "application/vnd.balsamiq.bmpr": { "source": "iana" }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, "application/vnd.bekitzur-stech+json": { "source": "iana", "compressible": true @@ -1602,6 +1647,24 @@ "application/vnd.coffeescript": { "source": "iana" }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, "application/vnd.collection+json": { "source": "iana", "compressible": true @@ -1617,6 +1680,9 @@ "application/vnd.comicbook+zip": { "source": "iana" }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, "application/vnd.commerce-battelle": { "source": "iana" }, @@ -1876,6 +1942,9 @@ "application/vnd.ecdis-update": { "source": "iana" }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, "application/vnd.ecowin.chart": { "source": "iana", "extensions": ["mag"] @@ -3408,9 +3477,6 @@ "application/vnd.openxmlformats-officedocument.extended-properties+xml": { "source": "iana" }, - "application/vnd.openxmlformats-officedocument.presentationml-template": { - "source": "iana" - }, "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { "source": "iana" }, @@ -3467,7 +3533,7 @@ "source": "iana" }, "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "apache", + "source": "iana", "extensions": ["potx"] }, "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { @@ -3476,9 +3542,6 @@ "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { "source": "iana" }, - "application/vnd.openxmlformats-officedocument.spreadsheetml-template": { - "source": "iana" - }, "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { "source": "iana" }, @@ -3539,7 +3602,7 @@ "source": "iana" }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "apache", + "source": "iana", "extensions": ["xltx"] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { @@ -3563,9 +3626,6 @@ "application/vnd.openxmlformats-officedocument.vmldrawing": { "source": "iana" }, - "application/vnd.openxmlformats-officedocument.wordprocessingml-template": { - "source": "iana" - }, "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { "source": "iana" }, @@ -3602,7 +3662,7 @@ "source": "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "apache", + "source": "iana", "extensions": ["dotx"] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { @@ -3668,6 +3728,9 @@ "application/vnd.paos.xml": { "source": "apache" }, + "application/vnd.patentdive": { + "source": "iana" + }, "application/vnd.pawaafile": { "source": "iana", "extensions": ["paw"] @@ -3827,6 +3890,10 @@ "application/vnd.renlearn.rlprint": { "source": "iana" }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, "application/vnd.rig.cryptonote": { "source": "iana", "extensions": ["cryptonote"] @@ -3974,6 +4041,9 @@ "source": "iana", "extensions": ["sfs"] }, + "application/vnd.sqlite3": { + "source": "iana" + }, "application/vnd.sss-cod": { "source": "iana" }, @@ -4399,6 +4469,9 @@ "source": "iana", "extensions": ["cmp"] }, + "application/vnd.youtube.yt": { + "source": "iana" + }, "application/vnd.zul": { "source": "iana", "extensions": ["zir","zirz"] @@ -4411,12 +4484,24 @@ "source": "iana", "extensions": ["vxml"] }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, "application/vq-rtcpxr": { "source": "iana" }, + "application/wasm": { + "compressible": true, + "extensions": ["wasm"] + }, "application/watcherinfo+xml": { "source": "iana" }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, "application/whoispp-query": { "source": "iana" }, @@ -4614,11 +4699,6 @@ "source": "apache", "extensions": ["psf"] }, - "application/x-font-otf": { - "source": "apache", - "compressible": true, - "extensions": ["otf"] - }, "application/x-font-pcf": { "source": "apache", "extensions": ["pcf"] @@ -4633,11 +4713,6 @@ "application/x-font-sunos-news": { "source": "apache" }, - "application/x-font-ttf": { - "source": "apache", - "compressible": true, - "extensions": ["ttf","ttc"] - }, "application/x-font-type1": { "source": "apache", "extensions": ["pfa","pfb","pfm","afm"] @@ -5715,10 +5790,33 @@ "source": "apache", "extensions": ["xyz"] }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, "font/otf": { + "source": "iana", "compressible": true, "extensions": ["otf"] }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana" + }, "image/apng": { "compressible": false, "extensions": ["apng"] @@ -5758,7 +5856,9 @@ "source": "iana" }, "image/jp2": { - "source": "iana" + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] }, "image/jpeg": { "source": "iana", @@ -5766,10 +5866,14 @@ "extensions": ["jpeg","jpg","jpe"] }, "image/jpm": { - "source": "iana" + "source": "iana", + "compressible": false, + "extensions": ["jpm"] }, "image/jpx": { - "source": "iana" + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] }, "image/ktx": { "source": "iana", @@ -6018,7 +6122,10 @@ "source": "iana" }, "message/disposition-notification": { - "source": "iana" + "source": "iana", + "extensions": [ + "disposition-notification" + ] }, "message/external-body": { "source": "iana" @@ -6027,16 +6134,20 @@ "source": "iana" }, "message/global": { - "source": "iana" + "source": "iana", + "extensions": ["u8msg"] }, "message/global-delivery-status": { - "source": "iana" + "source": "iana", + "extensions": ["u8dsn"] }, "message/global-disposition-notification": { - "source": "iana" + "source": "iana", + "extensions": ["u8mdn"] }, "message/global-headers": { - "source": "iana" + "source": "iana", + "extensions": ["u8hdr"] }, "message/http": { "source": "iana", @@ -6074,7 +6185,8 @@ "source": "iana" }, "message/vnd.wfa.wsc": { - "source": "iana" + "source": "iana", + "extensions": ["wsc"] }, "model/3mf": { "source": "iana" @@ -6085,6 +6197,7 @@ "extensions": ["gltf"] }, "model/gltf-binary": { + "source": "iana", "compressible": true, "extensions": ["glb"] }, @@ -6203,6 +6316,9 @@ "source": "iana", "compressible": false }, + "multipart/multilingual": { + "source": "iana" + }, "multipart/parallel": { "source": "iana" }, @@ -6282,9 +6398,6 @@ "text/grammar-ref-list": { "source": "iana" }, - "text/hjson": { - "extensions": ["hjson"] - }, "text/html": { "source": "iana", "compressible": true, @@ -6380,6 +6493,9 @@ "source": "iana", "extensions": ["sgml","sgm"] }, + "text/shex": { + "extensions": ["shex"] + }, "text/slim": { "extensions": ["slim","slm"] }, @@ -6760,6 +6876,9 @@ "video/rtx": { "source": "iana" }, + "video/smpte291": { + "source": "iana" + }, "video/smpte292m": { "source": "iana" }, @@ -6850,6 +6969,9 @@ "video/vnd.nokia.interleaved-multimedia": { "source": "iana" }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, "video/vnd.nokia.videovoip": { "source": "iana" }, diff --git a/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json b/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json index a428c77a..21c1392d 100644 --- a/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json +++ b/node_modules/less/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json @@ -1,7 +1,7 @@ { "name": "mime-db", "description": "Media Type Database", - "version": "1.30.0", + "version": "1.33.0", "contributors": [ { "name": "Douglas Christopher Wilson", @@ -33,20 +33,20 @@ "url": "git+https://github.com/jshttp/mime-db.git" }, "devDependencies": { - "bluebird": "3.5.0", + "bluebird": "3.5.1", "co": "4.6.0", "cogent": "1.0.1", - "csv-parse": "1.2.1", + "csv-parse": "1.3.1", "eslint": "3.19.0", "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.7.0", - "eslint-plugin-node": "5.1.1", - "eslint-plugin-promise": "3.5.0", + "eslint-plugin-import": "2.8.0", + "eslint-plugin-node": "5.2.1", + "eslint-plugin-promise": "3.6.0", "eslint-plugin-standard": "3.0.1", "gnode": "0.1.2", "mocha": "1.21.5", - "nyc": "11.1.0", - "raw-body": "2.3.0", + "nyc": "11.4.1", + "raw-body": "2.3.2", "stream-to-array": "2.3.0" }, "files": [ @@ -68,23 +68,24 @@ "test-travis": "nyc --reporter=text npm test", "update": "npm run fetch && npm run build" }, - "gitHead": "e62cf46c206681ca88b2e275f442a9885f1f86e4", + "gitHead": "e7c849b1c70ff745a4ae456a0cd5e6be8b05c2fb", "bugs": { "url": "https://github.com/jshttp/mime-db/issues" }, "homepage": "https://github.com/jshttp/mime-db#readme", - "_id": "mime-db@1.30.0", - "_shasum": "74c643da2dd9d6a45399963465b26d5ca7d71f01", - "_from": "mime-db@>=1.30.0 <1.31.0", - "_npmVersion": "3.10.10", - "_nodeVersion": "6.11.1", + "_id": "mime-db@1.33.0", + "_npmVersion": "5.6.0", + "_nodeVersion": "6.13.0", "_npmUser": { "name": "dougwilson", "email": "doug@somethingdoug.com" }, "dist": { - "shasum": "74c643da2dd9d6a45399963465b26d5ca7d71f01", - "tarball": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz" + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "shasum": "a3492050a5cb9b63450541e39d9788d2272783db", + "tarball": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "fileCount": 6, + "unpackedSize": 168885 }, "maintainers": [ { @@ -96,10 +97,13 @@ "email": "jonathanrichardong@gmail.com" } ], + "directories": {}, "_npmOperationalInternal": { "host": "s3://npm-registry-packages", - "tmp": "tmp/mime-db-1.30.0.tgz_1503887330099_0.8198229141999036" + "tmp": "tmp/mime-db_1.33.0_1518757820140_0.8293249007794938" }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz" + "_shasum": "a3492050a5cb9b63450541e39d9788d2272783db", + "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "_from": "mime-db@>=1.33.0 <1.34.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/mime-types/package.json b/node_modules/less/node_modules/request/node_modules/mime-types/package.json index 9f1b9836..3ccb1677 100644 --- a/node_modules/less/node_modules/request/node_modules/mime-types/package.json +++ b/node_modules/less/node_modules/request/node_modules/mime-types/package.json @@ -1,7 +1,7 @@ { "name": "mime-types", "description": "The ultimate javascript content-type utility.", - "version": "2.1.17", + "version": "2.1.18", "contributors": [ { "name": "Douglas Christopher Wilson", @@ -28,14 +28,14 @@ "url": "git+https://github.com/jshttp/mime-types.git" }, "dependencies": { - "mime-db": "~1.30.0" + "mime-db": "~1.33.0" }, "devDependencies": { "eslint": "3.19.0", "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.7.0", - "eslint-plugin-node": "5.1.1", - "eslint-plugin-promise": "3.5.0", + "eslint-plugin-import": "2.8.0", + "eslint-plugin-node": "5.2.1", + "eslint-plugin-promise": "3.6.0", "eslint-plugin-standard": "3.0.1", "istanbul": "0.4.5", "mocha": "1.21.5" @@ -54,42 +54,46 @@ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js", "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js" }, - "gitHead": "80039fe78213821c2e9b25132d6b02cc37202e8a", + "gitHead": "076f7902e3a730970ea96cd0b9c09bb6110f1127", "bugs": { "url": "https://github.com/jshttp/mime-types/issues" }, "homepage": "https://github.com/jshttp/mime-types#readme", - "_id": "mime-types@2.1.17", - "_shasum": "09d7a393f03e995a79f8af857b70a9e0ab16557a", - "_from": "mime-types@>=2.1.7 <2.2.0", - "_npmVersion": "3.10.10", - "_nodeVersion": "6.11.1", + "_id": "mime-types@2.1.18", + "_npmVersion": "5.6.0", + "_nodeVersion": "6.13.0", "_npmUser": { "name": "dougwilson", "email": "doug@somethingdoug.com" }, "dist": { - "shasum": "09d7a393f03e995a79f8af857b70a9e0ab16557a", - "tarball": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz" + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "shasum": "6f323f60a83d11146f831ff11fd66e2fe5503bb8", + "tarball": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "fileCount": 5, + "unpackedSize": 14341 }, "maintainers": [ { - "email": "fishrock123@rocketmail.com", - "name": "fishrock123" + "name": "dougwilson", + "email": "doug@somethingdoug.com" }, { - "email": "doug@somethingdoug.com", - "name": "dougwilson" + "name": "fishrock123", + "email": "fishrock123@rocketmail.com" }, { - "email": "jonathanrichardong@gmail.com", - "name": "jongleberry" + "name": "jongleberry", + "email": "jonathanrichardong@gmail.com" } ], + "directories": {}, "_npmOperationalInternal": { "host": "s3://npm-registry-packages", - "tmp": "tmp/mime-types-2.1.17.tgz_1504322793218_0.6663200033362955" + "tmp": "tmp/mime-types_2.1.18_1518802461370_0.7224202442179994" }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz" + "_shasum": "6f323f60a83d11146f831ff11fd66e2fe5503bb8", + "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "_from": "mime-types@>=2.1.7 <2.2.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/oauth-sign/package.json b/node_modules/less/node_modules/request/node_modules/oauth-sign/package.json index 259e3ae1..cf1eeb77 100644 --- a/node_modules/less/node_modules/request/node_modules/oauth-sign/package.json +++ b/node_modules/less/node_modules/request/node_modules/oauth-sign/package.json @@ -61,5 +61,6 @@ "tmp": "tmp/oauth-sign-0.8.2.tgz_1462396399020_0.8175400267355144" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" + "_resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/performance-now/package.json b/node_modules/less/node_modules/request/node_modules/performance-now/package.json index c319d901..cac2182a 100644 --- a/node_modules/less/node_modules/request/node_modules/performance-now/package.json +++ b/node_modules/less/node_modules/request/node_modules/performance-now/package.json @@ -48,5 +48,6 @@ ], "directories": {}, "_shasum": "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5", - "_resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" + "_resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/qs/package.json b/node_modules/less/node_modules/request/node_modules/qs/package.json index 42f332d6..7ffe8ee6 100644 --- a/node_modules/less/node_modules/request/node_modules/qs/package.json +++ b/node_modules/less/node_modules/request/node_modules/qs/package.json @@ -83,5 +83,6 @@ "tmp": "tmp/qs-6.4.0.tgz_1488783808282_0.7979955193586648" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz" + "_resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/safe-buffer/package.json b/node_modules/less/node_modules/request/node_modules/safe-buffer/package.json index 9d0ae2fe..4402106b 100644 --- a/node_modules/less/node_modules/request/node_modules/safe-buffer/package.json +++ b/node_modules/less/node_modules/request/node_modules/safe-buffer/package.json @@ -64,5 +64,6 @@ "directories": {}, "_shasum": "893312af69b2123def71f57889001671eeb2c853", "_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "_from": "safe-buffer@>=5.0.1 <6.0.0" + "_from": "safe-buffer@>=5.0.1 <6.0.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/stringstream/package.json b/node_modules/less/node_modules/request/node_modules/stringstream/package.json index b8db408a..2c6d7cdc 100644 --- a/node_modules/less/node_modules/request/node_modules/stringstream/package.json +++ b/node_modules/less/node_modules/request/node_modules/stringstream/package.json @@ -45,5 +45,6 @@ "tarball": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/tough-cookie/lib/cookie.js b/node_modules/less/node_modules/request/node_modules/tough-cookie/lib/cookie.js index ccf941f8..9f1afa18 100644 --- a/node_modules/less/node_modules/request/node_modules/tough-cookie/lib/cookie.js +++ b/node_modules/less/node_modules/request/node_modules/tough-cookie/lib/cookie.js @@ -44,37 +44,24 @@ try { console.warn("cookie: can't load punycode; won't use punycode for domain normalization"); } -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; - // From RFC6265 S4.1.1 // note that it excludes \x3B ";" -var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/; -var COOKIE_OCTETS = new RegExp('^'+COOKIE_OCTET.source+'+$'); +var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; var CONTROL_CHARS = /[\x00-\x1F]/; -// For COOKIE_PAIR and LOOSE_COOKIE_PAIR below, the number of spaces has been -// restricted to 256 to side-step a ReDoS issue reported here: -// https://github.com/salesforce/tough-cookie/issues/92 - -// Double quotes are part of the value (see: S4.1.1). -// '\r', '\n' and '\0' should be treated as a terminator in the "relaxed" mode -// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60) -// '=' and ';' are attribute/values separators -// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L64) -var COOKIE_PAIR = /^(([^=;]+))\s{0,256}=\s*([^\n\r\0]*)/; - -// Used to parse non-RFC-compliant cookies like '=abc' when given the `loose` -// option in Cookie.parse: -var LOOSE_COOKIE_PAIR = /^((?:=)?([^=;]*)\s{0,256}=\s*)?([^\n\r\0]*)/; +// From Chromium // '\r', '\n' and '\0' should be treated as a terminator in +// the "relaxed" mode, see: +// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60 +var TERMINATORS = ['\n', '\r', '\0']; // RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"' // Note ';' is \x3B var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/; -var DAY_OF_MONTH = /^(\d{1,2})[^\d]*$/; -var TIME = /^(\d{1,2})[^\d]*:(\d{1,2})[^\d]*:(\d{1,2})[^\d]*$/; -var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i; +// date-time parsing constants (RFC6265 S5.1.1) + +var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; var MONTH_TO_NUM = { jan:0, feb:1, mar:2, apr:3, may:4, jun:5, @@ -87,13 +74,80 @@ var NUM_TO_DAY = [ 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' ]; -var YEAR = /^(\d{2}|\d{4})$/; // 2 to 4 digits - var MAX_TIME = 2147483647000; // 31-bit max var MIN_TIME = 0; // 31-bit min +/* + * Parses a Natural number (i.e., non-negative integer) with either the + * *DIGIT ( non-digit *OCTET ) + * or + * *DIGIT + * grammar (RFC6265 S5.1.1). + * + * The "trailingOK" boolean controls if the grammar accepts a + * "( non-digit *OCTET )" trailer. + */ +function parseDigits(token, minDigits, maxDigits, trailingOK) { + var count = 0; + while (count < token.length) { + var c = token.charCodeAt(count); + // "non-digit = %x00-2F / %x3A-FF" + if (c <= 0x2F || c >= 0x3A) { + break; + } + count++; + } -// RFC6265 S5.1.1 date parser: + // constrain to a minimum and maximum number of digits. + if (count < minDigits || count > maxDigits) { + return null; + } + + if (!trailingOK && count != token.length) { + return null; + } + + return parseInt(token.substr(0,count), 10); +} + +function parseTime(token) { + var parts = token.split(':'); + var result = [0,0,0]; + + /* RF6256 S5.1.1: + * time = hms-time ( non-digit *OCTET ) + * hms-time = time-field ":" time-field ":" time-field + * time-field = 1*2DIGIT + */ + + if (parts.length !== 3) { + return null; + } + + for (var i = 0; i < 3; i++) { + // "time-field" must be strictly "1*2DIGIT", HOWEVER, "hms-time" can be + // followed by "( non-digit *OCTET )" so therefore the last time-field can + // have a trailer + var trailingOK = (i == 2); + var num = parseDigits(parts[i], 1, 2, trailingOK); + if (num === null) { + return null; + } + result[i] = num; + } + + return result; +} + +function parseMonth(token) { + token = String(token).substr(0,3).toLowerCase(); + var num = MONTH_TO_NUM[token]; + return num >= 0 ? num : null; +} + +/* + * RFC6265 S5.1.1 date parser (see RFC for full grammar) + */ function parseDate(str) { if (!str) { return; @@ -109,9 +163,9 @@ function parseDate(str) { } var hour = null; - var minutes = null; - var seconds = null; - var day = null; + var minute = null; + var second = null; + var dayOfMonth = null; var month = null; var year = null; @@ -129,22 +183,12 @@ function parseDate(str) { * the date-token, respectively. Skip the remaining sub-steps and continue * to the next date-token. */ - if (seconds === null) { - result = TIME.exec(token); + if (second === null) { + result = parseTime(token); if (result) { - hour = parseInt(result[1], 10); - minutes = parseInt(result[2], 10); - seconds = parseInt(result[3], 10); - /* RFC6265 S5.1.1.5: - * [fail if] - * * the hour-value is greater than 23, - * * the minute-value is greater than 59, or - * * the second-value is greater than 59. - */ - if(hour > 23 || minutes > 59 || seconds > 59) { - return; - } - + hour = result[0]; + minute = result[1]; + second = result[2]; continue; } } @@ -154,16 +198,11 @@ function parseDate(str) { * the day-of-month-value to the number denoted by the date-token. Skip * the remaining sub-steps and continue to the next date-token. */ - if (day === null) { - result = DAY_OF_MONTH.exec(token); - if (result) { - day = parseInt(result, 10); - /* RFC6265 S5.1.1.5: - * [fail if] the day-of-month-value is less than 1 or greater than 31 - */ - if(day < 1 || day > 31) { - return; - } + if (dayOfMonth === null) { + // "day-of-month = 1*2DIGIT ( non-digit *OCTET )" + result = parseDigits(token, 1, 2, true); + if (result !== null) { + dayOfMonth = result; continue; } } @@ -174,47 +213,63 @@ function parseDate(str) { * continue to the next date-token. */ if (month === null) { - result = MONTH.exec(token); - if (result) { - month = MONTH_TO_NUM[result[1].toLowerCase()]; + result = parseMonth(token); + if (result !== null) { + month = result; continue; } } - /* 2.4. If the found-year flag is not set and the date-token matches the year - * production, set the found-year flag and set the year-value to the number - * denoted by the date-token. Skip the remaining sub-steps and continue to - * the next date-token. + /* 2.4. If the found-year flag is not set and the date-token matches the + * year production, set the found-year flag and set the year-value to the + * number denoted by the date-token. Skip the remaining sub-steps and + * continue to the next date-token. */ if (year === null) { - result = YEAR.exec(token); - if (result) { - year = parseInt(result[0], 10); + // "year = 2*4DIGIT ( non-digit *OCTET )" + result = parseDigits(token, 2, 4, true); + if (result !== null) { + year = result; /* From S5.1.1: * 3. If the year-value is greater than or equal to 70 and less * than or equal to 99, increment the year-value by 1900. * 4. If the year-value is greater than or equal to 0 and less * than or equal to 69, increment the year-value by 2000. */ - if (70 <= year && year <= 99) { + if (year >= 70 && year <= 99) { year += 1900; - } else if (0 <= year && year <= 69) { + } else if (year >= 0 && year <= 69) { year += 2000; } - - if (year < 1601) { - return; // 5. ... the year-value is less than 1601 - } } } } - if (seconds === null || day === null || month === null || year === null) { - return; // 5. ... at least one of the found-day-of-month, found-month, found- - // year, or found-time flags is not set, + /* RFC 6265 S5.1.1 + * "5. Abort these steps and fail to parse the cookie-date if: + * * at least one of the found-day-of-month, found-month, found- + * year, or found-time flags is not set, + * * the day-of-month-value is less than 1 or greater than 31, + * * the year-value is less than 1601, + * * the hour-value is greater than 23, + * * the minute-value is greater than 59, or + * * the second-value is greater than 59. + * (Note that leap seconds cannot be represented in this syntax.)" + * + * So, in order as above: + */ + if ( + dayOfMonth === null || month === null || year === null || second === null || + dayOfMonth < 1 || dayOfMonth > 31 || + year < 1601 || + hour > 23 || + minute > 59 || + second > 59 + ) { + return; } - return new Date(Date.UTC(year, month, day, hour, minutes, seconds)); + return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second)); } function formatDate(date) { @@ -321,6 +376,50 @@ function defaultPath(path) { return path.slice(0, rightSlash); } +function trimTerminator(str) { + for (var t = 0; t < TERMINATORS.length; t++) { + var terminatorIdx = str.indexOf(TERMINATORS[t]); + if (terminatorIdx !== -1) { + str = str.substr(0,terminatorIdx); + } + } + + return str; +} + +function parseCookiePair(cookiePair, looseMode) { + cookiePair = trimTerminator(cookiePair); + + var firstEq = cookiePair.indexOf('='); + if (looseMode) { + if (firstEq === 0) { // '=' is immediately at start + cookiePair = cookiePair.substr(1); + firstEq = cookiePair.indexOf('='); // might still need to split on '=' + } + } else { // non-loose mode + if (firstEq <= 0) { // no '=' or is at start + return; // needs to have non-empty "cookie-name" + } + } + + var cookieName, cookieValue; + if (firstEq <= 0) { + cookieName = ""; + cookieValue = cookiePair.trim(); + } else { + cookieName = cookiePair.substr(0, firstEq).trim(); + cookieValue = cookiePair.substr(firstEq+1).trim(); + } + + if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) { + return; + } + + var c = new Cookie(); + c.key = cookieName; + c.value = cookieValue; + return c; +} function parse(str, options) { if (!options || typeof options !== 'object') { @@ -330,23 +429,9 @@ function parse(str, options) { // We use a regex to parse the "name-value-pair" part of S5.2 var firstSemi = str.indexOf(';'); // S5.2 step 1 - var pairRe = options.loose ? LOOSE_COOKIE_PAIR : COOKIE_PAIR; - var result = pairRe.exec(firstSemi === -1 ? str : str.substr(0,firstSemi)); - - // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")" - // constraints as well as trimming any whitespace. - if (!result) { - return; - } - - var c = new Cookie(); - if (result[1]) { - c.key = result[2].trim(); - } else { - c.key = ''; - } - c.value = result[3].trim(); - if (CONTROL_CHARS.test(c.key) || CONTROL_CHARS.test(c.value)) { + var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi); + var c = parseCookiePair(cookiePair, !!options.loose); + if (!c) { return; } diff --git a/node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js b/node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js index 0c660153..1b4d7ca3 100644 --- a/node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js +++ b/node_modules/less/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js @@ -93,6 +93,6 @@ module.exports.getPublicSuffix = function getPublicSuffix(domain) { // See public-suffix.txt for more information var index = module.exports.index = Object.freeze( -{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"ar":true,"com.ar":true,"edu.ar":true,"gob.ar":true,"gov.ar":true,"int.ar":true,"mil.ar":true,"net.ar":true,"org.ar":true,"tur.ar":true,"arpa":true,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"au":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"com.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"net.ba":true,"org.ba":true,"bb":true,"biz.bb":true,"co.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"tv.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"eco.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"leg.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mp.br":true,"mus.br":true,"net.br":true,"*.nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bv":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"co.cm":true,"com.cm":true,"gov.cm":true,"net.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cw":true,"com.cw":true,"edu.cw":true,"net.cw":true,"org.cw":true,"cx":true,"gov.cx":true,"cy":true,"ac.cy":true,"biz.cy":true,"com.cy":true,"ekloges.cy":true,"gov.cy":true,"ltd.cy":true,"name.cy":true,"net.cy":true,"org.cy":true,"parliament.cy":true,"press.cy":true,"pro.cy":true,"tm.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"et":true,"com.et":true,"gov.et":true,"org.et":true,"edu.et":true,"biz.et":true,"name.et":true,"info.et":true,"net.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gb":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"net.gg":true,"org.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"co.gl":true,"com.gl":true,"edu.gl":true,"net.gl":true,"org.gl":true,"gm":true,"gn":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"gt":true,"com.gt":true,"edu.gt":true,"gob.gt":true,"ind.gt":true,"mil.gt":true,"net.gt":true,"org.gt":true,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"edu.gy":true,"gov.gy":true,"net.gy":true,"org.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"biz.id":true,"co.id":true,"desa.id":true,"go.id":true,"mil.id":true,"my.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"il":true,"ac.il":true,"co.il":true,"gov.il":true,"idf.il":true,"k12.il":true,"muni.il":true,"net.il":true,"org.il":true,"im":true,"ac.im":true,"co.im":true,"com.im":true,"ltd.co.im":true,"net.im":true,"org.im":true,"plc.co.im":true,"tt.im":true,"tv.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"abr.it":true,"abruzzo.it":true,"aosta-valley.it":true,"aostavalley.it":true,"bas.it":true,"basilicata.it":true,"cal.it":true,"calabria.it":true,"cam.it":true,"campania.it":true,"emilia-romagna.it":true,"emiliaromagna.it":true,"emr.it":true,"friuli-v-giulia.it":true,"friuli-ve-giulia.it":true,"friuli-vegiulia.it":true,"friuli-venezia-giulia.it":true,"friuli-veneziagiulia.it":true,"friuli-vgiulia.it":true,"friuliv-giulia.it":true,"friulive-giulia.it":true,"friulivegiulia.it":true,"friulivenezia-giulia.it":true,"friuliveneziagiulia.it":true,"friulivgiulia.it":true,"fvg.it":true,"laz.it":true,"lazio.it":true,"lig.it":true,"liguria.it":true,"lom.it":true,"lombardia.it":true,"lombardy.it":true,"lucania.it":true,"mar.it":true,"marche.it":true,"mol.it":true,"molise.it":true,"piedmont.it":true,"piemonte.it":true,"pmn.it":true,"pug.it":true,"puglia.it":true,"sar.it":true,"sardegna.it":true,"sardinia.it":true,"sic.it":true,"sicilia.it":true,"sicily.it":true,"taa.it":true,"tos.it":true,"toscana.it":true,"trentino-a-adige.it":true,"trentino-aadige.it":true,"trentino-alto-adige.it":true,"trentino-altoadige.it":true,"trentino-s-tirol.it":true,"trentino-stirol.it":true,"trentino-sud-tirol.it":true,"trentino-sudtirol.it":true,"trentino-sued-tirol.it":true,"trentino-suedtirol.it":true,"trentinoa-adige.it":true,"trentinoaadige.it":true,"trentinoalto-adige.it":true,"trentinoaltoadige.it":true,"trentinos-tirol.it":true,"trentinostirol.it":true,"trentinosud-tirol.it":true,"trentinosudtirol.it":true,"trentinosued-tirol.it":true,"trentinosuedtirol.it":true,"tuscany.it":true,"umb.it":true,"umbria.it":true,"val-d-aosta.it":true,"val-daosta.it":true,"vald-aosta.it":true,"valdaosta.it":true,"valle-aosta.it":true,"valle-d-aosta.it":true,"valle-daosta.it":true,"valleaosta.it":true,"valled-aosta.it":true,"valledaosta.it":true,"vallee-aoste.it":true,"valleeaoste.it":true,"vao.it":true,"vda.it":true,"ven.it":true,"veneto.it":true,"ag.it":true,"agrigento.it":true,"al.it":true,"alessandria.it":true,"alto-adige.it":true,"altoadige.it":true,"an.it":true,"ancona.it":true,"andria-barletta-trani.it":true,"andria-trani-barletta.it":true,"andriabarlettatrani.it":true,"andriatranibarletta.it":true,"ao.it":true,"aosta.it":true,"aoste.it":true,"ap.it":true,"aq.it":true,"aquila.it":true,"ar.it":true,"arezzo.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"asti.it":true,"at.it":true,"av.it":true,"avellino.it":true,"ba.it":true,"balsan.it":true,"bari.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"belluno.it":true,"benevento.it":true,"bergamo.it":true,"bg.it":true,"bi.it":true,"biella.it":true,"bl.it":true,"bn.it":true,"bo.it":true,"bologna.it":true,"bolzano.it":true,"bozen.it":true,"br.it":true,"brescia.it":true,"brindisi.it":true,"bs.it":true,"bt.it":true,"bz.it":true,"ca.it":true,"cagliari.it":true,"caltanissetta.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"campobasso.it":true,"carbonia-iglesias.it":true,"carboniaiglesias.it":true,"carrara-massa.it":true,"carraramassa.it":true,"caserta.it":true,"catania.it":true,"catanzaro.it":true,"cb.it":true,"ce.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"ch.it":true,"chieti.it":true,"ci.it":true,"cl.it":true,"cn.it":true,"co.it":true,"como.it":true,"cosenza.it":true,"cr.it":true,"cremona.it":true,"crotone.it":true,"cs.it":true,"ct.it":true,"cuneo.it":true,"cz.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"en.it":true,"enna.it":true,"fc.it":true,"fe.it":true,"fermo.it":true,"ferrara.it":true,"fg.it":true,"fi.it":true,"firenze.it":true,"florence.it":true,"fm.it":true,"foggia.it":true,"forli-cesena.it":true,"forlicesena.it":true,"fr.it":true,"frosinone.it":true,"ge.it":true,"genoa.it":true,"genova.it":true,"go.it":true,"gorizia.it":true,"gr.it":true,"grosseto.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"im.it":true,"imperia.it":true,"is.it":true,"isernia.it":true,"kr.it":true,"la-spezia.it":true,"laquila.it":true,"laspezia.it":true,"latina.it":true,"lc.it":true,"le.it":true,"lecce.it":true,"lecco.it":true,"li.it":true,"livorno.it":true,"lo.it":true,"lodi.it":true,"lt.it":true,"lu.it":true,"lucca.it":true,"macerata.it":true,"mantova.it":true,"massa-carrara.it":true,"massacarrara.it":true,"matera.it":true,"mb.it":true,"mc.it":true,"me.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"messina.it":true,"mi.it":true,"milan.it":true,"milano.it":true,"mn.it":true,"mo.it":true,"modena.it":true,"monza-brianza.it":true,"monza-e-della-brianza.it":true,"monza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"ms.it":true,"mt.it":true,"na.it":true,"naples.it":true,"napoli.it":true,"no.it":true,"novara.it":true,"nu.it":true,"nuoro.it":true,"og.it":true,"ogliastra.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"or.it":true,"oristano.it":true,"ot.it":true,"pa.it":true,"padova.it":true,"padua.it":true,"palermo.it":true,"parma.it":true,"pavia.it":true,"pc.it":true,"pd.it":true,"pe.it":true,"perugia.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"pescara.it":true,"pg.it":true,"pi.it":true,"piacenza.it":true,"pisa.it":true,"pistoia.it":true,"pn.it":true,"po.it":true,"pordenone.it":true,"potenza.it":true,"pr.it":true,"prato.it":true,"pt.it":true,"pu.it":true,"pv.it":true,"pz.it":true,"ra.it":true,"ragusa.it":true,"ravenna.it":true,"rc.it":true,"re.it":true,"reggio-calabria.it":true,"reggio-emilia.it":true,"reggiocalabria.it":true,"reggioemilia.it":true,"rg.it":true,"ri.it":true,"rieti.it":true,"rimini.it":true,"rm.it":true,"rn.it":true,"ro.it":true,"roma.it":true,"rome.it":true,"rovigo.it":true,"sa.it":true,"salerno.it":true,"sassari.it":true,"savona.it":true,"si.it":true,"siena.it":true,"siracusa.it":true,"so.it":true,"sondrio.it":true,"sp.it":true,"sr.it":true,"ss.it":true,"suedtirol.it":true,"sv.it":true,"ta.it":true,"taranto.it":true,"te.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"teramo.it":true,"terni.it":true,"tn.it":true,"to.it":true,"torino.it":true,"tp.it":true,"tr.it":true,"trani-andria-barletta.it":true,"trani-barletta-andria.it":true,"traniandriabarletta.it":true,"tranibarlettaandria.it":true,"trapani.it":true,"trentino.it":true,"trento.it":true,"treviso.it":true,"trieste.it":true,"ts.it":true,"turin.it":true,"tv.it":true,"ud.it":true,"udine.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"va.it":true,"varese.it":true,"vb.it":true,"vc.it":true,"ve.it":true,"venezia.it":true,"venice.it":true,"verbania.it":true,"vercelli.it":true,"verona.it":true,"vi.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vicenza.it":true,"viterbo.it":true,"vr.it":true,"vs.it":true,"vt.it":true,"vv.it":true,"je":true,"co.je":true,"net.je":true,"org.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"aichi.jp":true,"akita.jp":true,"aomori.jp":true,"chiba.jp":true,"ehime.jp":true,"fukui.jp":true,"fukuoka.jp":true,"fukushima.jp":true,"gifu.jp":true,"gunma.jp":true,"hiroshima.jp":true,"hokkaido.jp":true,"hyogo.jp":true,"ibaraki.jp":true,"ishikawa.jp":true,"iwate.jp":true,"kagawa.jp":true,"kagoshima.jp":true,"kanagawa.jp":true,"kochi.jp":true,"kumamoto.jp":true,"kyoto.jp":true,"mie.jp":true,"miyagi.jp":true,"miyazaki.jp":true,"nagano.jp":true,"nagasaki.jp":true,"nara.jp":true,"niigata.jp":true,"oita.jp":true,"okayama.jp":true,"okinawa.jp":true,"osaka.jp":true,"saga.jp":true,"saitama.jp":true,"shiga.jp":true,"shimane.jp":true,"shizuoka.jp":true,"tochigi.jp":true,"tokushima.jp":true,"tokyo.jp":true,"tottori.jp":true,"toyama.jp":true,"wakayama.jp":true,"yamagata.jp":true,"yamaguchi.jp":true,"yamanashi.jp":true,"xn--4pvxs.jp":true,"xn--vgu402c.jp":true,"xn--c3s14m.jp":true,"xn--f6qx53a.jp":true,"xn--8pvr4u.jp":true,"xn--uist22h.jp":true,"xn--djrs72d6uy.jp":true,"xn--mkru45i.jp":true,"xn--0trq7p7nn.jp":true,"xn--8ltr62k.jp":true,"xn--2m4a15e.jp":true,"xn--efvn9s.jp":true,"xn--32vp30h.jp":true,"xn--4it797k.jp":true,"xn--1lqs71d.jp":true,"xn--5rtp49c.jp":true,"xn--5js045d.jp":true,"xn--ehqz56n.jp":true,"xn--1lqs03n.jp":true,"xn--qqqt11m.jp":true,"xn--kbrq7o.jp":true,"xn--pssu33l.jp":true,"xn--ntsq17g.jp":true,"xn--uisz3g.jp":true,"xn--6btw5a.jp":true,"xn--1ctwo.jp":true,"xn--6orx2r.jp":true,"xn--rht61e.jp":true,"xn--rht27z.jp":true,"xn--djty4k.jp":true,"xn--nit225k.jp":true,"xn--rht3d.jp":true,"xn--klty5x.jp":true,"xn--kltx9a.jp":true,"xn--kltp7d.jp":true,"xn--uuwu58a.jp":true,"xn--zbx025d.jp":true,"xn--ntso0iqx3a.jp":true,"xn--elqq16h.jp":true,"xn--4it168d.jp":true,"xn--klt787d.jp":true,"xn--rny31h.jp":true,"xn--7t0a264c.jp":true,"xn--5rtq34k.jp":true,"xn--k7yn95e.jp":true,"xn--tor131o.jp":true,"xn--d5qv7z876c.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.nagoya.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.yokohama.jp":true,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.nagoya.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.yokohama.jp":false,"aisai.aichi.jp":true,"ama.aichi.jp":true,"anjo.aichi.jp":true,"asuke.aichi.jp":true,"chiryu.aichi.jp":true,"chita.aichi.jp":true,"fuso.aichi.jp":true,"gamagori.aichi.jp":true,"handa.aichi.jp":true,"hazu.aichi.jp":true,"hekinan.aichi.jp":true,"higashiura.aichi.jp":true,"ichinomiya.aichi.jp":true,"inazawa.aichi.jp":true,"inuyama.aichi.jp":true,"isshiki.aichi.jp":true,"iwakura.aichi.jp":true,"kanie.aichi.jp":true,"kariya.aichi.jp":true,"kasugai.aichi.jp":true,"kira.aichi.jp":true,"kiyosu.aichi.jp":true,"komaki.aichi.jp":true,"konan.aichi.jp":true,"kota.aichi.jp":true,"mihama.aichi.jp":true,"miyoshi.aichi.jp":true,"nishio.aichi.jp":true,"nisshin.aichi.jp":true,"obu.aichi.jp":true,"oguchi.aichi.jp":true,"oharu.aichi.jp":true,"okazaki.aichi.jp":true,"owariasahi.aichi.jp":true,"seto.aichi.jp":true,"shikatsu.aichi.jp":true,"shinshiro.aichi.jp":true,"shitara.aichi.jp":true,"tahara.aichi.jp":true,"takahama.aichi.jp":true,"tobishima.aichi.jp":true,"toei.aichi.jp":true,"togo.aichi.jp":true,"tokai.aichi.jp":true,"tokoname.aichi.jp":true,"toyoake.aichi.jp":true,"toyohashi.aichi.jp":true,"toyokawa.aichi.jp":true,"toyone.aichi.jp":true,"toyota.aichi.jp":true,"tsushima.aichi.jp":true,"yatomi.aichi.jp":true,"akita.akita.jp":true,"daisen.akita.jp":true,"fujisato.akita.jp":true,"gojome.akita.jp":true,"hachirogata.akita.jp":true,"happou.akita.jp":true,"higashinaruse.akita.jp":true,"honjo.akita.jp":true,"honjyo.akita.jp":true,"ikawa.akita.jp":true,"kamikoani.akita.jp":true,"kamioka.akita.jp":true,"katagami.akita.jp":true,"kazuno.akita.jp":true,"kitaakita.akita.jp":true,"kosaka.akita.jp":true,"kyowa.akita.jp":true,"misato.akita.jp":true,"mitane.akita.jp":true,"moriyoshi.akita.jp":true,"nikaho.akita.jp":true,"noshiro.akita.jp":true,"odate.akita.jp":true,"oga.akita.jp":true,"ogata.akita.jp":true,"semboku.akita.jp":true,"yokote.akita.jp":true,"yurihonjo.akita.jp":true,"aomori.aomori.jp":true,"gonohe.aomori.jp":true,"hachinohe.aomori.jp":true,"hashikami.aomori.jp":true,"hiranai.aomori.jp":true,"hirosaki.aomori.jp":true,"itayanagi.aomori.jp":true,"kuroishi.aomori.jp":true,"misawa.aomori.jp":true,"mutsu.aomori.jp":true,"nakadomari.aomori.jp":true,"noheji.aomori.jp":true,"oirase.aomori.jp":true,"owani.aomori.jp":true,"rokunohe.aomori.jp":true,"sannohe.aomori.jp":true,"shichinohe.aomori.jp":true,"shingo.aomori.jp":true,"takko.aomori.jp":true,"towada.aomori.jp":true,"tsugaru.aomori.jp":true,"tsuruta.aomori.jp":true,"abiko.chiba.jp":true,"asahi.chiba.jp":true,"chonan.chiba.jp":true,"chosei.chiba.jp":true,"choshi.chiba.jp":true,"chuo.chiba.jp":true,"funabashi.chiba.jp":true,"futtsu.chiba.jp":true,"hanamigawa.chiba.jp":true,"ichihara.chiba.jp":true,"ichikawa.chiba.jp":true,"ichinomiya.chiba.jp":true,"inzai.chiba.jp":true,"isumi.chiba.jp":true,"kamagaya.chiba.jp":true,"kamogawa.chiba.jp":true,"kashiwa.chiba.jp":true,"katori.chiba.jp":true,"katsuura.chiba.jp":true,"kimitsu.chiba.jp":true,"kisarazu.chiba.jp":true,"kozaki.chiba.jp":true,"kujukuri.chiba.jp":true,"kyonan.chiba.jp":true,"matsudo.chiba.jp":true,"midori.chiba.jp":true,"mihama.chiba.jp":true,"minamiboso.chiba.jp":true,"mobara.chiba.jp":true,"mutsuzawa.chiba.jp":true,"nagara.chiba.jp":true,"nagareyama.chiba.jp":true,"narashino.chiba.jp":true,"narita.chiba.jp":true,"noda.chiba.jp":true,"oamishirasato.chiba.jp":true,"omigawa.chiba.jp":true,"onjuku.chiba.jp":true,"otaki.chiba.jp":true,"sakae.chiba.jp":true,"sakura.chiba.jp":true,"shimofusa.chiba.jp":true,"shirako.chiba.jp":true,"shiroi.chiba.jp":true,"shisui.chiba.jp":true,"sodegaura.chiba.jp":true,"sosa.chiba.jp":true,"tako.chiba.jp":true,"tateyama.chiba.jp":true,"togane.chiba.jp":true,"tohnosho.chiba.jp":true,"tomisato.chiba.jp":true,"urayasu.chiba.jp":true,"yachimata.chiba.jp":true,"yachiyo.chiba.jp":true,"yokaichiba.chiba.jp":true,"yokoshibahikari.chiba.jp":true,"yotsukaido.chiba.jp":true,"ainan.ehime.jp":true,"honai.ehime.jp":true,"ikata.ehime.jp":true,"imabari.ehime.jp":true,"iyo.ehime.jp":true,"kamijima.ehime.jp":true,"kihoku.ehime.jp":true,"kumakogen.ehime.jp":true,"masaki.ehime.jp":true,"matsuno.ehime.jp":true,"matsuyama.ehime.jp":true,"namikata.ehime.jp":true,"niihama.ehime.jp":true,"ozu.ehime.jp":true,"saijo.ehime.jp":true,"seiyo.ehime.jp":true,"shikokuchuo.ehime.jp":true,"tobe.ehime.jp":true,"toon.ehime.jp":true,"uchiko.ehime.jp":true,"uwajima.ehime.jp":true,"yawatahama.ehime.jp":true,"echizen.fukui.jp":true,"eiheiji.fukui.jp":true,"fukui.fukui.jp":true,"ikeda.fukui.jp":true,"katsuyama.fukui.jp":true,"mihama.fukui.jp":true,"minamiechizen.fukui.jp":true,"obama.fukui.jp":true,"ohi.fukui.jp":true,"ono.fukui.jp":true,"sabae.fukui.jp":true,"sakai.fukui.jp":true,"takahama.fukui.jp":true,"tsuruga.fukui.jp":true,"wakasa.fukui.jp":true,"ashiya.fukuoka.jp":true,"buzen.fukuoka.jp":true,"chikugo.fukuoka.jp":true,"chikuho.fukuoka.jp":true,"chikujo.fukuoka.jp":true,"chikushino.fukuoka.jp":true,"chikuzen.fukuoka.jp":true,"chuo.fukuoka.jp":true,"dazaifu.fukuoka.jp":true,"fukuchi.fukuoka.jp":true,"hakata.fukuoka.jp":true,"higashi.fukuoka.jp":true,"hirokawa.fukuoka.jp":true,"hisayama.fukuoka.jp":true,"iizuka.fukuoka.jp":true,"inatsuki.fukuoka.jp":true,"kaho.fukuoka.jp":true,"kasuga.fukuoka.jp":true,"kasuya.fukuoka.jp":true,"kawara.fukuoka.jp":true,"keisen.fukuoka.jp":true,"koga.fukuoka.jp":true,"kurate.fukuoka.jp":true,"kurogi.fukuoka.jp":true,"kurume.fukuoka.jp":true,"minami.fukuoka.jp":true,"miyako.fukuoka.jp":true,"miyama.fukuoka.jp":true,"miyawaka.fukuoka.jp":true,"mizumaki.fukuoka.jp":true,"munakata.fukuoka.jp":true,"nakagawa.fukuoka.jp":true,"nakama.fukuoka.jp":true,"nishi.fukuoka.jp":true,"nogata.fukuoka.jp":true,"ogori.fukuoka.jp":true,"okagaki.fukuoka.jp":true,"okawa.fukuoka.jp":true,"oki.fukuoka.jp":true,"omuta.fukuoka.jp":true,"onga.fukuoka.jp":true,"onojo.fukuoka.jp":true,"oto.fukuoka.jp":true,"saigawa.fukuoka.jp":true,"sasaguri.fukuoka.jp":true,"shingu.fukuoka.jp":true,"shinyoshitomi.fukuoka.jp":true,"shonai.fukuoka.jp":true,"soeda.fukuoka.jp":true,"sue.fukuoka.jp":true,"tachiarai.fukuoka.jp":true,"tagawa.fukuoka.jp":true,"takata.fukuoka.jp":true,"toho.fukuoka.jp":true,"toyotsu.fukuoka.jp":true,"tsuiki.fukuoka.jp":true,"ukiha.fukuoka.jp":true,"umi.fukuoka.jp":true,"usui.fukuoka.jp":true,"yamada.fukuoka.jp":true,"yame.fukuoka.jp":true,"yanagawa.fukuoka.jp":true,"yukuhashi.fukuoka.jp":true,"aizubange.fukushima.jp":true,"aizumisato.fukushima.jp":true,"aizuwakamatsu.fukushima.jp":true,"asakawa.fukushima.jp":true,"bandai.fukushima.jp":true,"date.fukushima.jp":true,"fukushima.fukushima.jp":true,"furudono.fukushima.jp":true,"futaba.fukushima.jp":true,"hanawa.fukushima.jp":true,"higashi.fukushima.jp":true,"hirata.fukushima.jp":true,"hirono.fukushima.jp":true,"iitate.fukushima.jp":true,"inawashiro.fukushima.jp":true,"ishikawa.fukushima.jp":true,"iwaki.fukushima.jp":true,"izumizaki.fukushima.jp":true,"kagamiishi.fukushima.jp":true,"kaneyama.fukushima.jp":true,"kawamata.fukushima.jp":true,"kitakata.fukushima.jp":true,"kitashiobara.fukushima.jp":true,"koori.fukushima.jp":true,"koriyama.fukushima.jp":true,"kunimi.fukushima.jp":true,"miharu.fukushima.jp":true,"mishima.fukushima.jp":true,"namie.fukushima.jp":true,"nango.fukushima.jp":true,"nishiaizu.fukushima.jp":true,"nishigo.fukushima.jp":true,"okuma.fukushima.jp":true,"omotego.fukushima.jp":true,"ono.fukushima.jp":true,"otama.fukushima.jp":true,"samegawa.fukushima.jp":true,"shimogo.fukushima.jp":true,"shirakawa.fukushima.jp":true,"showa.fukushima.jp":true,"soma.fukushima.jp":true,"sukagawa.fukushima.jp":true,"taishin.fukushima.jp":true,"tamakawa.fukushima.jp":true,"tanagura.fukushima.jp":true,"tenei.fukushima.jp":true,"yabuki.fukushima.jp":true,"yamato.fukushima.jp":true,"yamatsuri.fukushima.jp":true,"yanaizu.fukushima.jp":true,"yugawa.fukushima.jp":true,"anpachi.gifu.jp":true,"ena.gifu.jp":true,"gifu.gifu.jp":true,"ginan.gifu.jp":true,"godo.gifu.jp":true,"gujo.gifu.jp":true,"hashima.gifu.jp":true,"hichiso.gifu.jp":true,"hida.gifu.jp":true,"higashishirakawa.gifu.jp":true,"ibigawa.gifu.jp":true,"ikeda.gifu.jp":true,"kakamigahara.gifu.jp":true,"kani.gifu.jp":true,"kasahara.gifu.jp":true,"kasamatsu.gifu.jp":true,"kawaue.gifu.jp":true,"kitagata.gifu.jp":true,"mino.gifu.jp":true,"minokamo.gifu.jp":true,"mitake.gifu.jp":true,"mizunami.gifu.jp":true,"motosu.gifu.jp":true,"nakatsugawa.gifu.jp":true,"ogaki.gifu.jp":true,"sakahogi.gifu.jp":true,"seki.gifu.jp":true,"sekigahara.gifu.jp":true,"shirakawa.gifu.jp":true,"tajimi.gifu.jp":true,"takayama.gifu.jp":true,"tarui.gifu.jp":true,"toki.gifu.jp":true,"tomika.gifu.jp":true,"wanouchi.gifu.jp":true,"yamagata.gifu.jp":true,"yaotsu.gifu.jp":true,"yoro.gifu.jp":true,"annaka.gunma.jp":true,"chiyoda.gunma.jp":true,"fujioka.gunma.jp":true,"higashiagatsuma.gunma.jp":true,"isesaki.gunma.jp":true,"itakura.gunma.jp":true,"kanna.gunma.jp":true,"kanra.gunma.jp":true,"katashina.gunma.jp":true,"kawaba.gunma.jp":true,"kiryu.gunma.jp":true,"kusatsu.gunma.jp":true,"maebashi.gunma.jp":true,"meiwa.gunma.jp":true,"midori.gunma.jp":true,"minakami.gunma.jp":true,"naganohara.gunma.jp":true,"nakanojo.gunma.jp":true,"nanmoku.gunma.jp":true,"numata.gunma.jp":true,"oizumi.gunma.jp":true,"ora.gunma.jp":true,"ota.gunma.jp":true,"shibukawa.gunma.jp":true,"shimonita.gunma.jp":true,"shinto.gunma.jp":true,"showa.gunma.jp":true,"takasaki.gunma.jp":true,"takayama.gunma.jp":true,"tamamura.gunma.jp":true,"tatebayashi.gunma.jp":true,"tomioka.gunma.jp":true,"tsukiyono.gunma.jp":true,"tsumagoi.gunma.jp":true,"ueno.gunma.jp":true,"yoshioka.gunma.jp":true,"asaminami.hiroshima.jp":true,"daiwa.hiroshima.jp":true,"etajima.hiroshima.jp":true,"fuchu.hiroshima.jp":true,"fukuyama.hiroshima.jp":true,"hatsukaichi.hiroshima.jp":true,"higashihiroshima.hiroshima.jp":true,"hongo.hiroshima.jp":true,"jinsekikogen.hiroshima.jp":true,"kaita.hiroshima.jp":true,"kui.hiroshima.jp":true,"kumano.hiroshima.jp":true,"kure.hiroshima.jp":true,"mihara.hiroshima.jp":true,"miyoshi.hiroshima.jp":true,"naka.hiroshima.jp":true,"onomichi.hiroshima.jp":true,"osakikamijima.hiroshima.jp":true,"otake.hiroshima.jp":true,"saka.hiroshima.jp":true,"sera.hiroshima.jp":true,"seranishi.hiroshima.jp":true,"shinichi.hiroshima.jp":true,"shobara.hiroshima.jp":true,"takehara.hiroshima.jp":true,"abashiri.hokkaido.jp":true,"abira.hokkaido.jp":true,"aibetsu.hokkaido.jp":true,"akabira.hokkaido.jp":true,"akkeshi.hokkaido.jp":true,"asahikawa.hokkaido.jp":true,"ashibetsu.hokkaido.jp":true,"ashoro.hokkaido.jp":true,"assabu.hokkaido.jp":true,"atsuma.hokkaido.jp":true,"bibai.hokkaido.jp":true,"biei.hokkaido.jp":true,"bifuka.hokkaido.jp":true,"bihoro.hokkaido.jp":true,"biratori.hokkaido.jp":true,"chippubetsu.hokkaido.jp":true,"chitose.hokkaido.jp":true,"date.hokkaido.jp":true,"ebetsu.hokkaido.jp":true,"embetsu.hokkaido.jp":true,"eniwa.hokkaido.jp":true,"erimo.hokkaido.jp":true,"esan.hokkaido.jp":true,"esashi.hokkaido.jp":true,"fukagawa.hokkaido.jp":true,"fukushima.hokkaido.jp":true,"furano.hokkaido.jp":true,"furubira.hokkaido.jp":true,"haboro.hokkaido.jp":true,"hakodate.hokkaido.jp":true,"hamatonbetsu.hokkaido.jp":true,"hidaka.hokkaido.jp":true,"higashikagura.hokkaido.jp":true,"higashikawa.hokkaido.jp":true,"hiroo.hokkaido.jp":true,"hokuryu.hokkaido.jp":true,"hokuto.hokkaido.jp":true,"honbetsu.hokkaido.jp":true,"horokanai.hokkaido.jp":true,"horonobe.hokkaido.jp":true,"ikeda.hokkaido.jp":true,"imakane.hokkaido.jp":true,"ishikari.hokkaido.jp":true,"iwamizawa.hokkaido.jp":true,"iwanai.hokkaido.jp":true,"kamifurano.hokkaido.jp":true,"kamikawa.hokkaido.jp":true,"kamishihoro.hokkaido.jp":true,"kamisunagawa.hokkaido.jp":true,"kamoenai.hokkaido.jp":true,"kayabe.hokkaido.jp":true,"kembuchi.hokkaido.jp":true,"kikonai.hokkaido.jp":true,"kimobetsu.hokkaido.jp":true,"kitahiroshima.hokkaido.jp":true,"kitami.hokkaido.jp":true,"kiyosato.hokkaido.jp":true,"koshimizu.hokkaido.jp":true,"kunneppu.hokkaido.jp":true,"kuriyama.hokkaido.jp":true,"kuromatsunai.hokkaido.jp":true,"kushiro.hokkaido.jp":true,"kutchan.hokkaido.jp":true,"kyowa.hokkaido.jp":true,"mashike.hokkaido.jp":true,"matsumae.hokkaido.jp":true,"mikasa.hokkaido.jp":true,"minamifurano.hokkaido.jp":true,"mombetsu.hokkaido.jp":true,"moseushi.hokkaido.jp":true,"mukawa.hokkaido.jp":true,"muroran.hokkaido.jp":true,"naie.hokkaido.jp":true,"nakagawa.hokkaido.jp":true,"nakasatsunai.hokkaido.jp":true,"nakatombetsu.hokkaido.jp":true,"nanae.hokkaido.jp":true,"nanporo.hokkaido.jp":true,"nayoro.hokkaido.jp":true,"nemuro.hokkaido.jp":true,"niikappu.hokkaido.jp":true,"niki.hokkaido.jp":true,"nishiokoppe.hokkaido.jp":true,"noboribetsu.hokkaido.jp":true,"numata.hokkaido.jp":true,"obihiro.hokkaido.jp":true,"obira.hokkaido.jp":true,"oketo.hokkaido.jp":true,"okoppe.hokkaido.jp":true,"otaru.hokkaido.jp":true,"otobe.hokkaido.jp":true,"otofuke.hokkaido.jp":true,"otoineppu.hokkaido.jp":true,"oumu.hokkaido.jp":true,"ozora.hokkaido.jp":true,"pippu.hokkaido.jp":true,"rankoshi.hokkaido.jp":true,"rebun.hokkaido.jp":true,"rikubetsu.hokkaido.jp":true,"rishiri.hokkaido.jp":true,"rishirifuji.hokkaido.jp":true,"saroma.hokkaido.jp":true,"sarufutsu.hokkaido.jp":true,"shakotan.hokkaido.jp":true,"shari.hokkaido.jp":true,"shibecha.hokkaido.jp":true,"shibetsu.hokkaido.jp":true,"shikabe.hokkaido.jp":true,"shikaoi.hokkaido.jp":true,"shimamaki.hokkaido.jp":true,"shimizu.hokkaido.jp":true,"shimokawa.hokkaido.jp":true,"shinshinotsu.hokkaido.jp":true,"shintoku.hokkaido.jp":true,"shiranuka.hokkaido.jp":true,"shiraoi.hokkaido.jp":true,"shiriuchi.hokkaido.jp":true,"sobetsu.hokkaido.jp":true,"sunagawa.hokkaido.jp":true,"taiki.hokkaido.jp":true,"takasu.hokkaido.jp":true,"takikawa.hokkaido.jp":true,"takinoue.hokkaido.jp":true,"teshikaga.hokkaido.jp":true,"tobetsu.hokkaido.jp":true,"tohma.hokkaido.jp":true,"tomakomai.hokkaido.jp":true,"tomari.hokkaido.jp":true,"toya.hokkaido.jp":true,"toyako.hokkaido.jp":true,"toyotomi.hokkaido.jp":true,"toyoura.hokkaido.jp":true,"tsubetsu.hokkaido.jp":true,"tsukigata.hokkaido.jp":true,"urakawa.hokkaido.jp":true,"urausu.hokkaido.jp":true,"uryu.hokkaido.jp":true,"utashinai.hokkaido.jp":true,"wakkanai.hokkaido.jp":true,"wassamu.hokkaido.jp":true,"yakumo.hokkaido.jp":true,"yoichi.hokkaido.jp":true,"aioi.hyogo.jp":true,"akashi.hyogo.jp":true,"ako.hyogo.jp":true,"amagasaki.hyogo.jp":true,"aogaki.hyogo.jp":true,"asago.hyogo.jp":true,"ashiya.hyogo.jp":true,"awaji.hyogo.jp":true,"fukusaki.hyogo.jp":true,"goshiki.hyogo.jp":true,"harima.hyogo.jp":true,"himeji.hyogo.jp":true,"ichikawa.hyogo.jp":true,"inagawa.hyogo.jp":true,"itami.hyogo.jp":true,"kakogawa.hyogo.jp":true,"kamigori.hyogo.jp":true,"kamikawa.hyogo.jp":true,"kasai.hyogo.jp":true,"kasuga.hyogo.jp":true,"kawanishi.hyogo.jp":true,"miki.hyogo.jp":true,"minamiawaji.hyogo.jp":true,"nishinomiya.hyogo.jp":true,"nishiwaki.hyogo.jp":true,"ono.hyogo.jp":true,"sanda.hyogo.jp":true,"sannan.hyogo.jp":true,"sasayama.hyogo.jp":true,"sayo.hyogo.jp":true,"shingu.hyogo.jp":true,"shinonsen.hyogo.jp":true,"shiso.hyogo.jp":true,"sumoto.hyogo.jp":true,"taishi.hyogo.jp":true,"taka.hyogo.jp":true,"takarazuka.hyogo.jp":true,"takasago.hyogo.jp":true,"takino.hyogo.jp":true,"tamba.hyogo.jp":true,"tatsuno.hyogo.jp":true,"toyooka.hyogo.jp":true,"yabu.hyogo.jp":true,"yashiro.hyogo.jp":true,"yoka.hyogo.jp":true,"yokawa.hyogo.jp":true,"ami.ibaraki.jp":true,"asahi.ibaraki.jp":true,"bando.ibaraki.jp":true,"chikusei.ibaraki.jp":true,"daigo.ibaraki.jp":true,"fujishiro.ibaraki.jp":true,"hitachi.ibaraki.jp":true,"hitachinaka.ibaraki.jp":true,"hitachiomiya.ibaraki.jp":true,"hitachiota.ibaraki.jp":true,"ibaraki.ibaraki.jp":true,"ina.ibaraki.jp":true,"inashiki.ibaraki.jp":true,"itako.ibaraki.jp":true,"iwama.ibaraki.jp":true,"joso.ibaraki.jp":true,"kamisu.ibaraki.jp":true,"kasama.ibaraki.jp":true,"kashima.ibaraki.jp":true,"kasumigaura.ibaraki.jp":true,"koga.ibaraki.jp":true,"miho.ibaraki.jp":true,"mito.ibaraki.jp":true,"moriya.ibaraki.jp":true,"naka.ibaraki.jp":true,"namegata.ibaraki.jp":true,"oarai.ibaraki.jp":true,"ogawa.ibaraki.jp":true,"omitama.ibaraki.jp":true,"ryugasaki.ibaraki.jp":true,"sakai.ibaraki.jp":true,"sakuragawa.ibaraki.jp":true,"shimodate.ibaraki.jp":true,"shimotsuma.ibaraki.jp":true,"shirosato.ibaraki.jp":true,"sowa.ibaraki.jp":true,"suifu.ibaraki.jp":true,"takahagi.ibaraki.jp":true,"tamatsukuri.ibaraki.jp":true,"tokai.ibaraki.jp":true,"tomobe.ibaraki.jp":true,"tone.ibaraki.jp":true,"toride.ibaraki.jp":true,"tsuchiura.ibaraki.jp":true,"tsukuba.ibaraki.jp":true,"uchihara.ibaraki.jp":true,"ushiku.ibaraki.jp":true,"yachiyo.ibaraki.jp":true,"yamagata.ibaraki.jp":true,"yawara.ibaraki.jp":true,"yuki.ibaraki.jp":true,"anamizu.ishikawa.jp":true,"hakui.ishikawa.jp":true,"hakusan.ishikawa.jp":true,"kaga.ishikawa.jp":true,"kahoku.ishikawa.jp":true,"kanazawa.ishikawa.jp":true,"kawakita.ishikawa.jp":true,"komatsu.ishikawa.jp":true,"nakanoto.ishikawa.jp":true,"nanao.ishikawa.jp":true,"nomi.ishikawa.jp":true,"nonoichi.ishikawa.jp":true,"noto.ishikawa.jp":true,"shika.ishikawa.jp":true,"suzu.ishikawa.jp":true,"tsubata.ishikawa.jp":true,"tsurugi.ishikawa.jp":true,"uchinada.ishikawa.jp":true,"wajima.ishikawa.jp":true,"fudai.iwate.jp":true,"fujisawa.iwate.jp":true,"hanamaki.iwate.jp":true,"hiraizumi.iwate.jp":true,"hirono.iwate.jp":true,"ichinohe.iwate.jp":true,"ichinoseki.iwate.jp":true,"iwaizumi.iwate.jp":true,"iwate.iwate.jp":true,"joboji.iwate.jp":true,"kamaishi.iwate.jp":true,"kanegasaki.iwate.jp":true,"karumai.iwate.jp":true,"kawai.iwate.jp":true,"kitakami.iwate.jp":true,"kuji.iwate.jp":true,"kunohe.iwate.jp":true,"kuzumaki.iwate.jp":true,"miyako.iwate.jp":true,"mizusawa.iwate.jp":true,"morioka.iwate.jp":true,"ninohe.iwate.jp":true,"noda.iwate.jp":true,"ofunato.iwate.jp":true,"oshu.iwate.jp":true,"otsuchi.iwate.jp":true,"rikuzentakata.iwate.jp":true,"shiwa.iwate.jp":true,"shizukuishi.iwate.jp":true,"sumita.iwate.jp":true,"tanohata.iwate.jp":true,"tono.iwate.jp":true,"yahaba.iwate.jp":true,"yamada.iwate.jp":true,"ayagawa.kagawa.jp":true,"higashikagawa.kagawa.jp":true,"kanonji.kagawa.jp":true,"kotohira.kagawa.jp":true,"manno.kagawa.jp":true,"marugame.kagawa.jp":true,"mitoyo.kagawa.jp":true,"naoshima.kagawa.jp":true,"sanuki.kagawa.jp":true,"tadotsu.kagawa.jp":true,"takamatsu.kagawa.jp":true,"tonosho.kagawa.jp":true,"uchinomi.kagawa.jp":true,"utazu.kagawa.jp":true,"zentsuji.kagawa.jp":true,"akune.kagoshima.jp":true,"amami.kagoshima.jp":true,"hioki.kagoshima.jp":true,"isa.kagoshima.jp":true,"isen.kagoshima.jp":true,"izumi.kagoshima.jp":true,"kagoshima.kagoshima.jp":true,"kanoya.kagoshima.jp":true,"kawanabe.kagoshima.jp":true,"kinko.kagoshima.jp":true,"kouyama.kagoshima.jp":true,"makurazaki.kagoshima.jp":true,"matsumoto.kagoshima.jp":true,"minamitane.kagoshima.jp":true,"nakatane.kagoshima.jp":true,"nishinoomote.kagoshima.jp":true,"satsumasendai.kagoshima.jp":true,"soo.kagoshima.jp":true,"tarumizu.kagoshima.jp":true,"yusui.kagoshima.jp":true,"aikawa.kanagawa.jp":true,"atsugi.kanagawa.jp":true,"ayase.kanagawa.jp":true,"chigasaki.kanagawa.jp":true,"ebina.kanagawa.jp":true,"fujisawa.kanagawa.jp":true,"hadano.kanagawa.jp":true,"hakone.kanagawa.jp":true,"hiratsuka.kanagawa.jp":true,"isehara.kanagawa.jp":true,"kaisei.kanagawa.jp":true,"kamakura.kanagawa.jp":true,"kiyokawa.kanagawa.jp":true,"matsuda.kanagawa.jp":true,"minamiashigara.kanagawa.jp":true,"miura.kanagawa.jp":true,"nakai.kanagawa.jp":true,"ninomiya.kanagawa.jp":true,"odawara.kanagawa.jp":true,"oi.kanagawa.jp":true,"oiso.kanagawa.jp":true,"sagamihara.kanagawa.jp":true,"samukawa.kanagawa.jp":true,"tsukui.kanagawa.jp":true,"yamakita.kanagawa.jp":true,"yamato.kanagawa.jp":true,"yokosuka.kanagawa.jp":true,"yugawara.kanagawa.jp":true,"zama.kanagawa.jp":true,"zushi.kanagawa.jp":true,"aki.kochi.jp":true,"geisei.kochi.jp":true,"hidaka.kochi.jp":true,"higashitsuno.kochi.jp":true,"ino.kochi.jp":true,"kagami.kochi.jp":true,"kami.kochi.jp":true,"kitagawa.kochi.jp":true,"kochi.kochi.jp":true,"mihara.kochi.jp":true,"motoyama.kochi.jp":true,"muroto.kochi.jp":true,"nahari.kochi.jp":true,"nakamura.kochi.jp":true,"nankoku.kochi.jp":true,"nishitosa.kochi.jp":true,"niyodogawa.kochi.jp":true,"ochi.kochi.jp":true,"okawa.kochi.jp":true,"otoyo.kochi.jp":true,"otsuki.kochi.jp":true,"sakawa.kochi.jp":true,"sukumo.kochi.jp":true,"susaki.kochi.jp":true,"tosa.kochi.jp":true,"tosashimizu.kochi.jp":true,"toyo.kochi.jp":true,"tsuno.kochi.jp":true,"umaji.kochi.jp":true,"yasuda.kochi.jp":true,"yusuhara.kochi.jp":true,"amakusa.kumamoto.jp":true,"arao.kumamoto.jp":true,"aso.kumamoto.jp":true,"choyo.kumamoto.jp":true,"gyokuto.kumamoto.jp":true,"kamiamakusa.kumamoto.jp":true,"kikuchi.kumamoto.jp":true,"kumamoto.kumamoto.jp":true,"mashiki.kumamoto.jp":true,"mifune.kumamoto.jp":true,"minamata.kumamoto.jp":true,"minamioguni.kumamoto.jp":true,"nagasu.kumamoto.jp":true,"nishihara.kumamoto.jp":true,"oguni.kumamoto.jp":true,"ozu.kumamoto.jp":true,"sumoto.kumamoto.jp":true,"takamori.kumamoto.jp":true,"uki.kumamoto.jp":true,"uto.kumamoto.jp":true,"yamaga.kumamoto.jp":true,"yamato.kumamoto.jp":true,"yatsushiro.kumamoto.jp":true,"ayabe.kyoto.jp":true,"fukuchiyama.kyoto.jp":true,"higashiyama.kyoto.jp":true,"ide.kyoto.jp":true,"ine.kyoto.jp":true,"joyo.kyoto.jp":true,"kameoka.kyoto.jp":true,"kamo.kyoto.jp":true,"kita.kyoto.jp":true,"kizu.kyoto.jp":true,"kumiyama.kyoto.jp":true,"kyotamba.kyoto.jp":true,"kyotanabe.kyoto.jp":true,"kyotango.kyoto.jp":true,"maizuru.kyoto.jp":true,"minami.kyoto.jp":true,"minamiyamashiro.kyoto.jp":true,"miyazu.kyoto.jp":true,"muko.kyoto.jp":true,"nagaokakyo.kyoto.jp":true,"nakagyo.kyoto.jp":true,"nantan.kyoto.jp":true,"oyamazaki.kyoto.jp":true,"sakyo.kyoto.jp":true,"seika.kyoto.jp":true,"tanabe.kyoto.jp":true,"uji.kyoto.jp":true,"ujitawara.kyoto.jp":true,"wazuka.kyoto.jp":true,"yamashina.kyoto.jp":true,"yawata.kyoto.jp":true,"asahi.mie.jp":true,"inabe.mie.jp":true,"ise.mie.jp":true,"kameyama.mie.jp":true,"kawagoe.mie.jp":true,"kiho.mie.jp":true,"kisosaki.mie.jp":true,"kiwa.mie.jp":true,"komono.mie.jp":true,"kumano.mie.jp":true,"kuwana.mie.jp":true,"matsusaka.mie.jp":true,"meiwa.mie.jp":true,"mihama.mie.jp":true,"minamiise.mie.jp":true,"misugi.mie.jp":true,"miyama.mie.jp":true,"nabari.mie.jp":true,"shima.mie.jp":true,"suzuka.mie.jp":true,"tado.mie.jp":true,"taiki.mie.jp":true,"taki.mie.jp":true,"tamaki.mie.jp":true,"toba.mie.jp":true,"tsu.mie.jp":true,"udono.mie.jp":true,"ureshino.mie.jp":true,"watarai.mie.jp":true,"yokkaichi.mie.jp":true,"furukawa.miyagi.jp":true,"higashimatsushima.miyagi.jp":true,"ishinomaki.miyagi.jp":true,"iwanuma.miyagi.jp":true,"kakuda.miyagi.jp":true,"kami.miyagi.jp":true,"kawasaki.miyagi.jp":true,"marumori.miyagi.jp":true,"matsushima.miyagi.jp":true,"minamisanriku.miyagi.jp":true,"misato.miyagi.jp":true,"murata.miyagi.jp":true,"natori.miyagi.jp":true,"ogawara.miyagi.jp":true,"ohira.miyagi.jp":true,"onagawa.miyagi.jp":true,"osaki.miyagi.jp":true,"rifu.miyagi.jp":true,"semine.miyagi.jp":true,"shibata.miyagi.jp":true,"shichikashuku.miyagi.jp":true,"shikama.miyagi.jp":true,"shiogama.miyagi.jp":true,"shiroishi.miyagi.jp":true,"tagajo.miyagi.jp":true,"taiwa.miyagi.jp":true,"tome.miyagi.jp":true,"tomiya.miyagi.jp":true,"wakuya.miyagi.jp":true,"watari.miyagi.jp":true,"yamamoto.miyagi.jp":true,"zao.miyagi.jp":true,"aya.miyazaki.jp":true,"ebino.miyazaki.jp":true,"gokase.miyazaki.jp":true,"hyuga.miyazaki.jp":true,"kadogawa.miyazaki.jp":true,"kawaminami.miyazaki.jp":true,"kijo.miyazaki.jp":true,"kitagawa.miyazaki.jp":true,"kitakata.miyazaki.jp":true,"kitaura.miyazaki.jp":true,"kobayashi.miyazaki.jp":true,"kunitomi.miyazaki.jp":true,"kushima.miyazaki.jp":true,"mimata.miyazaki.jp":true,"miyakonojo.miyazaki.jp":true,"miyazaki.miyazaki.jp":true,"morotsuka.miyazaki.jp":true,"nichinan.miyazaki.jp":true,"nishimera.miyazaki.jp":true,"nobeoka.miyazaki.jp":true,"saito.miyazaki.jp":true,"shiiba.miyazaki.jp":true,"shintomi.miyazaki.jp":true,"takaharu.miyazaki.jp":true,"takanabe.miyazaki.jp":true,"takazaki.miyazaki.jp":true,"tsuno.miyazaki.jp":true,"achi.nagano.jp":true,"agematsu.nagano.jp":true,"anan.nagano.jp":true,"aoki.nagano.jp":true,"asahi.nagano.jp":true,"azumino.nagano.jp":true,"chikuhoku.nagano.jp":true,"chikuma.nagano.jp":true,"chino.nagano.jp":true,"fujimi.nagano.jp":true,"hakuba.nagano.jp":true,"hara.nagano.jp":true,"hiraya.nagano.jp":true,"iida.nagano.jp":true,"iijima.nagano.jp":true,"iiyama.nagano.jp":true,"iizuna.nagano.jp":true,"ikeda.nagano.jp":true,"ikusaka.nagano.jp":true,"ina.nagano.jp":true,"karuizawa.nagano.jp":true,"kawakami.nagano.jp":true,"kiso.nagano.jp":true,"kisofukushima.nagano.jp":true,"kitaaiki.nagano.jp":true,"komagane.nagano.jp":true,"komoro.nagano.jp":true,"matsukawa.nagano.jp":true,"matsumoto.nagano.jp":true,"miasa.nagano.jp":true,"minamiaiki.nagano.jp":true,"minamimaki.nagano.jp":true,"minamiminowa.nagano.jp":true,"minowa.nagano.jp":true,"miyada.nagano.jp":true,"miyota.nagano.jp":true,"mochizuki.nagano.jp":true,"nagano.nagano.jp":true,"nagawa.nagano.jp":true,"nagiso.nagano.jp":true,"nakagawa.nagano.jp":true,"nakano.nagano.jp":true,"nozawaonsen.nagano.jp":true,"obuse.nagano.jp":true,"ogawa.nagano.jp":true,"okaya.nagano.jp":true,"omachi.nagano.jp":true,"omi.nagano.jp":true,"ookuwa.nagano.jp":true,"ooshika.nagano.jp":true,"otaki.nagano.jp":true,"otari.nagano.jp":true,"sakae.nagano.jp":true,"sakaki.nagano.jp":true,"saku.nagano.jp":true,"sakuho.nagano.jp":true,"shimosuwa.nagano.jp":true,"shinanomachi.nagano.jp":true,"shiojiri.nagano.jp":true,"suwa.nagano.jp":true,"suzaka.nagano.jp":true,"takagi.nagano.jp":true,"takamori.nagano.jp":true,"takayama.nagano.jp":true,"tateshina.nagano.jp":true,"tatsuno.nagano.jp":true,"togakushi.nagano.jp":true,"togura.nagano.jp":true,"tomi.nagano.jp":true,"ueda.nagano.jp":true,"wada.nagano.jp":true,"yamagata.nagano.jp":true,"yamanouchi.nagano.jp":true,"yasaka.nagano.jp":true,"yasuoka.nagano.jp":true,"chijiwa.nagasaki.jp":true,"futsu.nagasaki.jp":true,"goto.nagasaki.jp":true,"hasami.nagasaki.jp":true,"hirado.nagasaki.jp":true,"iki.nagasaki.jp":true,"isahaya.nagasaki.jp":true,"kawatana.nagasaki.jp":true,"kuchinotsu.nagasaki.jp":true,"matsuura.nagasaki.jp":true,"nagasaki.nagasaki.jp":true,"obama.nagasaki.jp":true,"omura.nagasaki.jp":true,"oseto.nagasaki.jp":true,"saikai.nagasaki.jp":true,"sasebo.nagasaki.jp":true,"seihi.nagasaki.jp":true,"shimabara.nagasaki.jp":true,"shinkamigoto.nagasaki.jp":true,"togitsu.nagasaki.jp":true,"tsushima.nagasaki.jp":true,"unzen.nagasaki.jp":true,"ando.nara.jp":true,"gose.nara.jp":true,"heguri.nara.jp":true,"higashiyoshino.nara.jp":true,"ikaruga.nara.jp":true,"ikoma.nara.jp":true,"kamikitayama.nara.jp":true,"kanmaki.nara.jp":true,"kashiba.nara.jp":true,"kashihara.nara.jp":true,"katsuragi.nara.jp":true,"kawai.nara.jp":true,"kawakami.nara.jp":true,"kawanishi.nara.jp":true,"koryo.nara.jp":true,"kurotaki.nara.jp":true,"mitsue.nara.jp":true,"miyake.nara.jp":true,"nara.nara.jp":true,"nosegawa.nara.jp":true,"oji.nara.jp":true,"ouda.nara.jp":true,"oyodo.nara.jp":true,"sakurai.nara.jp":true,"sango.nara.jp":true,"shimoichi.nara.jp":true,"shimokitayama.nara.jp":true,"shinjo.nara.jp":true,"soni.nara.jp":true,"takatori.nara.jp":true,"tawaramoto.nara.jp":true,"tenkawa.nara.jp":true,"tenri.nara.jp":true,"uda.nara.jp":true,"yamatokoriyama.nara.jp":true,"yamatotakada.nara.jp":true,"yamazoe.nara.jp":true,"yoshino.nara.jp":true,"aga.niigata.jp":true,"agano.niigata.jp":true,"gosen.niigata.jp":true,"itoigawa.niigata.jp":true,"izumozaki.niigata.jp":true,"joetsu.niigata.jp":true,"kamo.niigata.jp":true,"kariwa.niigata.jp":true,"kashiwazaki.niigata.jp":true,"minamiuonuma.niigata.jp":true,"mitsuke.niigata.jp":true,"muika.niigata.jp":true,"murakami.niigata.jp":true,"myoko.niigata.jp":true,"nagaoka.niigata.jp":true,"niigata.niigata.jp":true,"ojiya.niigata.jp":true,"omi.niigata.jp":true,"sado.niigata.jp":true,"sanjo.niigata.jp":true,"seiro.niigata.jp":true,"seirou.niigata.jp":true,"sekikawa.niigata.jp":true,"shibata.niigata.jp":true,"tagami.niigata.jp":true,"tainai.niigata.jp":true,"tochio.niigata.jp":true,"tokamachi.niigata.jp":true,"tsubame.niigata.jp":true,"tsunan.niigata.jp":true,"uonuma.niigata.jp":true,"yahiko.niigata.jp":true,"yoita.niigata.jp":true,"yuzawa.niigata.jp":true,"beppu.oita.jp":true,"bungoono.oita.jp":true,"bungotakada.oita.jp":true,"hasama.oita.jp":true,"hiji.oita.jp":true,"himeshima.oita.jp":true,"hita.oita.jp":true,"kamitsue.oita.jp":true,"kokonoe.oita.jp":true,"kuju.oita.jp":true,"kunisaki.oita.jp":true,"kusu.oita.jp":true,"oita.oita.jp":true,"saiki.oita.jp":true,"taketa.oita.jp":true,"tsukumi.oita.jp":true,"usa.oita.jp":true,"usuki.oita.jp":true,"yufu.oita.jp":true,"akaiwa.okayama.jp":true,"asakuchi.okayama.jp":true,"bizen.okayama.jp":true,"hayashima.okayama.jp":true,"ibara.okayama.jp":true,"kagamino.okayama.jp":true,"kasaoka.okayama.jp":true,"kibichuo.okayama.jp":true,"kumenan.okayama.jp":true,"kurashiki.okayama.jp":true,"maniwa.okayama.jp":true,"misaki.okayama.jp":true,"nagi.okayama.jp":true,"niimi.okayama.jp":true,"nishiawakura.okayama.jp":true,"okayama.okayama.jp":true,"satosho.okayama.jp":true,"setouchi.okayama.jp":true,"shinjo.okayama.jp":true,"shoo.okayama.jp":true,"soja.okayama.jp":true,"takahashi.okayama.jp":true,"tamano.okayama.jp":true,"tsuyama.okayama.jp":true,"wake.okayama.jp":true,"yakage.okayama.jp":true,"aguni.okinawa.jp":true,"ginowan.okinawa.jp":true,"ginoza.okinawa.jp":true,"gushikami.okinawa.jp":true,"haebaru.okinawa.jp":true,"higashi.okinawa.jp":true,"hirara.okinawa.jp":true,"iheya.okinawa.jp":true,"ishigaki.okinawa.jp":true,"ishikawa.okinawa.jp":true,"itoman.okinawa.jp":true,"izena.okinawa.jp":true,"kadena.okinawa.jp":true,"kin.okinawa.jp":true,"kitadaito.okinawa.jp":true,"kitanakagusuku.okinawa.jp":true,"kumejima.okinawa.jp":true,"kunigami.okinawa.jp":true,"minamidaito.okinawa.jp":true,"motobu.okinawa.jp":true,"nago.okinawa.jp":true,"naha.okinawa.jp":true,"nakagusuku.okinawa.jp":true,"nakijin.okinawa.jp":true,"nanjo.okinawa.jp":true,"nishihara.okinawa.jp":true,"ogimi.okinawa.jp":true,"okinawa.okinawa.jp":true,"onna.okinawa.jp":true,"shimoji.okinawa.jp":true,"taketomi.okinawa.jp":true,"tarama.okinawa.jp":true,"tokashiki.okinawa.jp":true,"tomigusuku.okinawa.jp":true,"tonaki.okinawa.jp":true,"urasoe.okinawa.jp":true,"uruma.okinawa.jp":true,"yaese.okinawa.jp":true,"yomitan.okinawa.jp":true,"yonabaru.okinawa.jp":true,"yonaguni.okinawa.jp":true,"zamami.okinawa.jp":true,"abeno.osaka.jp":true,"chihayaakasaka.osaka.jp":true,"chuo.osaka.jp":true,"daito.osaka.jp":true,"fujiidera.osaka.jp":true,"habikino.osaka.jp":true,"hannan.osaka.jp":true,"higashiosaka.osaka.jp":true,"higashisumiyoshi.osaka.jp":true,"higashiyodogawa.osaka.jp":true,"hirakata.osaka.jp":true,"ibaraki.osaka.jp":true,"ikeda.osaka.jp":true,"izumi.osaka.jp":true,"izumiotsu.osaka.jp":true,"izumisano.osaka.jp":true,"kadoma.osaka.jp":true,"kaizuka.osaka.jp":true,"kanan.osaka.jp":true,"kashiwara.osaka.jp":true,"katano.osaka.jp":true,"kawachinagano.osaka.jp":true,"kishiwada.osaka.jp":true,"kita.osaka.jp":true,"kumatori.osaka.jp":true,"matsubara.osaka.jp":true,"minato.osaka.jp":true,"minoh.osaka.jp":true,"misaki.osaka.jp":true,"moriguchi.osaka.jp":true,"neyagawa.osaka.jp":true,"nishi.osaka.jp":true,"nose.osaka.jp":true,"osakasayama.osaka.jp":true,"sakai.osaka.jp":true,"sayama.osaka.jp":true,"sennan.osaka.jp":true,"settsu.osaka.jp":true,"shijonawate.osaka.jp":true,"shimamoto.osaka.jp":true,"suita.osaka.jp":true,"tadaoka.osaka.jp":true,"taishi.osaka.jp":true,"tajiri.osaka.jp":true,"takaishi.osaka.jp":true,"takatsuki.osaka.jp":true,"tondabayashi.osaka.jp":true,"toyonaka.osaka.jp":true,"toyono.osaka.jp":true,"yao.osaka.jp":true,"ariake.saga.jp":true,"arita.saga.jp":true,"fukudomi.saga.jp":true,"genkai.saga.jp":true,"hamatama.saga.jp":true,"hizen.saga.jp":true,"imari.saga.jp":true,"kamimine.saga.jp":true,"kanzaki.saga.jp":true,"karatsu.saga.jp":true,"kashima.saga.jp":true,"kitagata.saga.jp":true,"kitahata.saga.jp":true,"kiyama.saga.jp":true,"kouhoku.saga.jp":true,"kyuragi.saga.jp":true,"nishiarita.saga.jp":true,"ogi.saga.jp":true,"omachi.saga.jp":true,"ouchi.saga.jp":true,"saga.saga.jp":true,"shiroishi.saga.jp":true,"taku.saga.jp":true,"tara.saga.jp":true,"tosu.saga.jp":true,"yoshinogari.saga.jp":true,"arakawa.saitama.jp":true,"asaka.saitama.jp":true,"chichibu.saitama.jp":true,"fujimi.saitama.jp":true,"fujimino.saitama.jp":true,"fukaya.saitama.jp":true,"hanno.saitama.jp":true,"hanyu.saitama.jp":true,"hasuda.saitama.jp":true,"hatogaya.saitama.jp":true,"hatoyama.saitama.jp":true,"hidaka.saitama.jp":true,"higashichichibu.saitama.jp":true,"higashimatsuyama.saitama.jp":true,"honjo.saitama.jp":true,"ina.saitama.jp":true,"iruma.saitama.jp":true,"iwatsuki.saitama.jp":true,"kamiizumi.saitama.jp":true,"kamikawa.saitama.jp":true,"kamisato.saitama.jp":true,"kasukabe.saitama.jp":true,"kawagoe.saitama.jp":true,"kawaguchi.saitama.jp":true,"kawajima.saitama.jp":true,"kazo.saitama.jp":true,"kitamoto.saitama.jp":true,"koshigaya.saitama.jp":true,"kounosu.saitama.jp":true,"kuki.saitama.jp":true,"kumagaya.saitama.jp":true,"matsubushi.saitama.jp":true,"minano.saitama.jp":true,"misato.saitama.jp":true,"miyashiro.saitama.jp":true,"miyoshi.saitama.jp":true,"moroyama.saitama.jp":true,"nagatoro.saitama.jp":true,"namegawa.saitama.jp":true,"niiza.saitama.jp":true,"ogano.saitama.jp":true,"ogawa.saitama.jp":true,"ogose.saitama.jp":true,"okegawa.saitama.jp":true,"omiya.saitama.jp":true,"otaki.saitama.jp":true,"ranzan.saitama.jp":true,"ryokami.saitama.jp":true,"saitama.saitama.jp":true,"sakado.saitama.jp":true,"satte.saitama.jp":true,"sayama.saitama.jp":true,"shiki.saitama.jp":true,"shiraoka.saitama.jp":true,"soka.saitama.jp":true,"sugito.saitama.jp":true,"toda.saitama.jp":true,"tokigawa.saitama.jp":true,"tokorozawa.saitama.jp":true,"tsurugashima.saitama.jp":true,"urawa.saitama.jp":true,"warabi.saitama.jp":true,"yashio.saitama.jp":true,"yokoze.saitama.jp":true,"yono.saitama.jp":true,"yorii.saitama.jp":true,"yoshida.saitama.jp":true,"yoshikawa.saitama.jp":true,"yoshimi.saitama.jp":true,"aisho.shiga.jp":true,"gamo.shiga.jp":true,"higashiomi.shiga.jp":true,"hikone.shiga.jp":true,"koka.shiga.jp":true,"konan.shiga.jp":true,"kosei.shiga.jp":true,"koto.shiga.jp":true,"kusatsu.shiga.jp":true,"maibara.shiga.jp":true,"moriyama.shiga.jp":true,"nagahama.shiga.jp":true,"nishiazai.shiga.jp":true,"notogawa.shiga.jp":true,"omihachiman.shiga.jp":true,"otsu.shiga.jp":true,"ritto.shiga.jp":true,"ryuoh.shiga.jp":true,"takashima.shiga.jp":true,"takatsuki.shiga.jp":true,"torahime.shiga.jp":true,"toyosato.shiga.jp":true,"yasu.shiga.jp":true,"akagi.shimane.jp":true,"ama.shimane.jp":true,"gotsu.shimane.jp":true,"hamada.shimane.jp":true,"higashiizumo.shimane.jp":true,"hikawa.shimane.jp":true,"hikimi.shimane.jp":true,"izumo.shimane.jp":true,"kakinoki.shimane.jp":true,"masuda.shimane.jp":true,"matsue.shimane.jp":true,"misato.shimane.jp":true,"nishinoshima.shimane.jp":true,"ohda.shimane.jp":true,"okinoshima.shimane.jp":true,"okuizumo.shimane.jp":true,"shimane.shimane.jp":true,"tamayu.shimane.jp":true,"tsuwano.shimane.jp":true,"unnan.shimane.jp":true,"yakumo.shimane.jp":true,"yasugi.shimane.jp":true,"yatsuka.shimane.jp":true,"arai.shizuoka.jp":true,"atami.shizuoka.jp":true,"fuji.shizuoka.jp":true,"fujieda.shizuoka.jp":true,"fujikawa.shizuoka.jp":true,"fujinomiya.shizuoka.jp":true,"fukuroi.shizuoka.jp":true,"gotemba.shizuoka.jp":true,"haibara.shizuoka.jp":true,"hamamatsu.shizuoka.jp":true,"higashiizu.shizuoka.jp":true,"ito.shizuoka.jp":true,"iwata.shizuoka.jp":true,"izu.shizuoka.jp":true,"izunokuni.shizuoka.jp":true,"kakegawa.shizuoka.jp":true,"kannami.shizuoka.jp":true,"kawanehon.shizuoka.jp":true,"kawazu.shizuoka.jp":true,"kikugawa.shizuoka.jp":true,"kosai.shizuoka.jp":true,"makinohara.shizuoka.jp":true,"matsuzaki.shizuoka.jp":true,"minamiizu.shizuoka.jp":true,"mishima.shizuoka.jp":true,"morimachi.shizuoka.jp":true,"nishiizu.shizuoka.jp":true,"numazu.shizuoka.jp":true,"omaezaki.shizuoka.jp":true,"shimada.shizuoka.jp":true,"shimizu.shizuoka.jp":true,"shimoda.shizuoka.jp":true,"shizuoka.shizuoka.jp":true,"susono.shizuoka.jp":true,"yaizu.shizuoka.jp":true,"yoshida.shizuoka.jp":true,"ashikaga.tochigi.jp":true,"bato.tochigi.jp":true,"haga.tochigi.jp":true,"ichikai.tochigi.jp":true,"iwafune.tochigi.jp":true,"kaminokawa.tochigi.jp":true,"kanuma.tochigi.jp":true,"karasuyama.tochigi.jp":true,"kuroiso.tochigi.jp":true,"mashiko.tochigi.jp":true,"mibu.tochigi.jp":true,"moka.tochigi.jp":true,"motegi.tochigi.jp":true,"nasu.tochigi.jp":true,"nasushiobara.tochigi.jp":true,"nikko.tochigi.jp":true,"nishikata.tochigi.jp":true,"nogi.tochigi.jp":true,"ohira.tochigi.jp":true,"ohtawara.tochigi.jp":true,"oyama.tochigi.jp":true,"sakura.tochigi.jp":true,"sano.tochigi.jp":true,"shimotsuke.tochigi.jp":true,"shioya.tochigi.jp":true,"takanezawa.tochigi.jp":true,"tochigi.tochigi.jp":true,"tsuga.tochigi.jp":true,"ujiie.tochigi.jp":true,"utsunomiya.tochigi.jp":true,"yaita.tochigi.jp":true,"aizumi.tokushima.jp":true,"anan.tokushima.jp":true,"ichiba.tokushima.jp":true,"itano.tokushima.jp":true,"kainan.tokushima.jp":true,"komatsushima.tokushima.jp":true,"matsushige.tokushima.jp":true,"mima.tokushima.jp":true,"minami.tokushima.jp":true,"miyoshi.tokushima.jp":true,"mugi.tokushima.jp":true,"nakagawa.tokushima.jp":true,"naruto.tokushima.jp":true,"sanagochi.tokushima.jp":true,"shishikui.tokushima.jp":true,"tokushima.tokushima.jp":true,"wajiki.tokushima.jp":true,"adachi.tokyo.jp":true,"akiruno.tokyo.jp":true,"akishima.tokyo.jp":true,"aogashima.tokyo.jp":true,"arakawa.tokyo.jp":true,"bunkyo.tokyo.jp":true,"chiyoda.tokyo.jp":true,"chofu.tokyo.jp":true,"chuo.tokyo.jp":true,"edogawa.tokyo.jp":true,"fuchu.tokyo.jp":true,"fussa.tokyo.jp":true,"hachijo.tokyo.jp":true,"hachioji.tokyo.jp":true,"hamura.tokyo.jp":true,"higashikurume.tokyo.jp":true,"higashimurayama.tokyo.jp":true,"higashiyamato.tokyo.jp":true,"hino.tokyo.jp":true,"hinode.tokyo.jp":true,"hinohara.tokyo.jp":true,"inagi.tokyo.jp":true,"itabashi.tokyo.jp":true,"katsushika.tokyo.jp":true,"kita.tokyo.jp":true,"kiyose.tokyo.jp":true,"kodaira.tokyo.jp":true,"koganei.tokyo.jp":true,"kokubunji.tokyo.jp":true,"komae.tokyo.jp":true,"koto.tokyo.jp":true,"kouzushima.tokyo.jp":true,"kunitachi.tokyo.jp":true,"machida.tokyo.jp":true,"meguro.tokyo.jp":true,"minato.tokyo.jp":true,"mitaka.tokyo.jp":true,"mizuho.tokyo.jp":true,"musashimurayama.tokyo.jp":true,"musashino.tokyo.jp":true,"nakano.tokyo.jp":true,"nerima.tokyo.jp":true,"ogasawara.tokyo.jp":true,"okutama.tokyo.jp":true,"ome.tokyo.jp":true,"oshima.tokyo.jp":true,"ota.tokyo.jp":true,"setagaya.tokyo.jp":true,"shibuya.tokyo.jp":true,"shinagawa.tokyo.jp":true,"shinjuku.tokyo.jp":true,"suginami.tokyo.jp":true,"sumida.tokyo.jp":true,"tachikawa.tokyo.jp":true,"taito.tokyo.jp":true,"tama.tokyo.jp":true,"toshima.tokyo.jp":true,"chizu.tottori.jp":true,"hino.tottori.jp":true,"kawahara.tottori.jp":true,"koge.tottori.jp":true,"kotoura.tottori.jp":true,"misasa.tottori.jp":true,"nanbu.tottori.jp":true,"nichinan.tottori.jp":true,"sakaiminato.tottori.jp":true,"tottori.tottori.jp":true,"wakasa.tottori.jp":true,"yazu.tottori.jp":true,"yonago.tottori.jp":true,"asahi.toyama.jp":true,"fuchu.toyama.jp":true,"fukumitsu.toyama.jp":true,"funahashi.toyama.jp":true,"himi.toyama.jp":true,"imizu.toyama.jp":true,"inami.toyama.jp":true,"johana.toyama.jp":true,"kamiichi.toyama.jp":true,"kurobe.toyama.jp":true,"nakaniikawa.toyama.jp":true,"namerikawa.toyama.jp":true,"nanto.toyama.jp":true,"nyuzen.toyama.jp":true,"oyabe.toyama.jp":true,"taira.toyama.jp":true,"takaoka.toyama.jp":true,"tateyama.toyama.jp":true,"toga.toyama.jp":true,"tonami.toyama.jp":true,"toyama.toyama.jp":true,"unazuki.toyama.jp":true,"uozu.toyama.jp":true,"yamada.toyama.jp":true,"arida.wakayama.jp":true,"aridagawa.wakayama.jp":true,"gobo.wakayama.jp":true,"hashimoto.wakayama.jp":true,"hidaka.wakayama.jp":true,"hirogawa.wakayama.jp":true,"inami.wakayama.jp":true,"iwade.wakayama.jp":true,"kainan.wakayama.jp":true,"kamitonda.wakayama.jp":true,"katsuragi.wakayama.jp":true,"kimino.wakayama.jp":true,"kinokawa.wakayama.jp":true,"kitayama.wakayama.jp":true,"koya.wakayama.jp":true,"koza.wakayama.jp":true,"kozagawa.wakayama.jp":true,"kudoyama.wakayama.jp":true,"kushimoto.wakayama.jp":true,"mihama.wakayama.jp":true,"misato.wakayama.jp":true,"nachikatsuura.wakayama.jp":true,"shingu.wakayama.jp":true,"shirahama.wakayama.jp":true,"taiji.wakayama.jp":true,"tanabe.wakayama.jp":true,"wakayama.wakayama.jp":true,"yuasa.wakayama.jp":true,"yura.wakayama.jp":true,"asahi.yamagata.jp":true,"funagata.yamagata.jp":true,"higashine.yamagata.jp":true,"iide.yamagata.jp":true,"kahoku.yamagata.jp":true,"kaminoyama.yamagata.jp":true,"kaneyama.yamagata.jp":true,"kawanishi.yamagata.jp":true,"mamurogawa.yamagata.jp":true,"mikawa.yamagata.jp":true,"murayama.yamagata.jp":true,"nagai.yamagata.jp":true,"nakayama.yamagata.jp":true,"nanyo.yamagata.jp":true,"nishikawa.yamagata.jp":true,"obanazawa.yamagata.jp":true,"oe.yamagata.jp":true,"oguni.yamagata.jp":true,"ohkura.yamagata.jp":true,"oishida.yamagata.jp":true,"sagae.yamagata.jp":true,"sakata.yamagata.jp":true,"sakegawa.yamagata.jp":true,"shinjo.yamagata.jp":true,"shirataka.yamagata.jp":true,"shonai.yamagata.jp":true,"takahata.yamagata.jp":true,"tendo.yamagata.jp":true,"tozawa.yamagata.jp":true,"tsuruoka.yamagata.jp":true,"yamagata.yamagata.jp":true,"yamanobe.yamagata.jp":true,"yonezawa.yamagata.jp":true,"yuza.yamagata.jp":true,"abu.yamaguchi.jp":true,"hagi.yamaguchi.jp":true,"hikari.yamaguchi.jp":true,"hofu.yamaguchi.jp":true,"iwakuni.yamaguchi.jp":true,"kudamatsu.yamaguchi.jp":true,"mitou.yamaguchi.jp":true,"nagato.yamaguchi.jp":true,"oshima.yamaguchi.jp":true,"shimonoseki.yamaguchi.jp":true,"shunan.yamaguchi.jp":true,"tabuse.yamaguchi.jp":true,"tokuyama.yamaguchi.jp":true,"toyota.yamaguchi.jp":true,"ube.yamaguchi.jp":true,"yuu.yamaguchi.jp":true,"chuo.yamanashi.jp":true,"doshi.yamanashi.jp":true,"fuefuki.yamanashi.jp":true,"fujikawa.yamanashi.jp":true,"fujikawaguchiko.yamanashi.jp":true,"fujiyoshida.yamanashi.jp":true,"hayakawa.yamanashi.jp":true,"hokuto.yamanashi.jp":true,"ichikawamisato.yamanashi.jp":true,"kai.yamanashi.jp":true,"kofu.yamanashi.jp":true,"koshu.yamanashi.jp":true,"kosuge.yamanashi.jp":true,"minami-alps.yamanashi.jp":true,"minobu.yamanashi.jp":true,"nakamichi.yamanashi.jp":true,"nanbu.yamanashi.jp":true,"narusawa.yamanashi.jp":true,"nirasaki.yamanashi.jp":true,"nishikatsura.yamanashi.jp":true,"oshino.yamanashi.jp":true,"otsuki.yamanashi.jp":true,"showa.yamanashi.jp":true,"tabayama.yamanashi.jp":true,"tsuru.yamanashi.jp":true,"uenohara.yamanashi.jp":true,"yamanakako.yamanashi.jp":true,"yamanashi.yamanashi.jp":true,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"kp":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"lb":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"ac.lk":true,"lr":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"co.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"com.ms":true,"edu.ms":true,"gov.ms":true,"net.ms":true,"org.ms":true,"mt":true,"com.mt":true,"edu.mt":true,"net.mt":true,"org.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"mz":true,"ac.mz":true,"adv.mz":true,"co.mz":true,"edu.mz":true,"gov.mz":true,"mil.mz":true,"net.mz":true,"org.mz":true,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ng":true,"com.ng":true,"edu.ng":true,"gov.ng":true,"i.ng":true,"mil.ng":true,"mobi.ng":true,"name.ng":true,"net.ng":true,"org.ng":true,"sch.ng":true,"com.ni":true,"gob.ni":true,"edu.ni":true,"org.ni":true,"nom.ni":true,"net.ni":true,"mil.ni":true,"co.ni":true,"biz.ni":true,"web.ni":true,"int.ni":true,"ac.ni":true,"in.ni":true,"info.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"nz":true,"ac.nz":true,"co.nz":true,"cri.nz":true,"geek.nz":true,"gen.nz":true,"govt.nz":true,"health.nz":true,"iwi.nz":true,"kiwi.nz":true,"maori.nz":true,"mil.nz":true,"xn--mori-qsa.nz":true,"net.nz":true,"org.nz":true,"parliament.nz":true,"school.nz":true,"om":true,"co.om":true,"com.om":true,"edu.om":true,"gov.om":true,"med.om":true,"museum.om":true,"net.om":true,"org.om":true,"pro.om":true,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"com.pl":true,"net.pl":true,"org.pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"gov.pl":true,"ap.gov.pl":true,"ic.gov.pl":true,"is.gov.pl":true,"us.gov.pl":true,"kmpsp.gov.pl":true,"kppsp.gov.pl":true,"kwpsp.gov.pl":true,"psp.gov.pl":true,"wskr.gov.pl":true,"kwp.gov.pl":true,"mw.gov.pl":true,"ug.gov.pl":true,"um.gov.pl":true,"umig.gov.pl":true,"ugim.gov.pl":true,"upow.gov.pl":true,"uw.gov.pl":true,"starostwo.gov.pl":true,"pa.gov.pl":true,"po.gov.pl":true,"psse.gov.pl":true,"pup.gov.pl":true,"rzgw.gov.pl":true,"sa.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"wsa.gov.pl":true,"sko.gov.pl":true,"uzs.gov.pl":true,"wiih.gov.pl":true,"winb.gov.pl":true,"pinb.gov.pl":true,"wios.gov.pl":true,"witd.gov.pl":true,"wzmiuw.gov.pl":true,"piw.gov.pl":true,"wiw.gov.pl":true,"griw.gov.pl":true,"wif.gov.pl":true,"oum.gov.pl":true,"sdn.gov.pl":true,"zp.gov.pl":true,"uppo.gov.pl":true,"mup.gov.pl":true,"wuoz.gov.pl":true,"konsulat.gov.pl":true,"oirm.gov.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"post":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aaa.pro":true,"aca.pro":true,"acct.pro":true,"avocat.pro":true,"bar.pro":true,"cpa.pro":true,"eng.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"recht.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"py":true,"com.py":true,"coop.py":true,"edu.py":true,"gov.py":true,"mil.py":true,"net.py":true,"org.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"asso.re":true,"com.re":true,"nom.re":true,"ro":true,"arts.ro":true,"com.ro":true,"firm.ro":true,"info.ro":true,"nom.ro":true,"nt.ro":true,"org.ro":true,"rec.ro":true,"store.ro":true,"tm.ro":true,"www.ro":true,"rs":true,"ac.rs":true,"co.rs":true,"edu.rs":true,"gov.rs":true,"in.rs":true,"org.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"tv.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"com.sh":true,"net.sh":true,"gov.sh":true,"org.sh":true,"mil.sh":true,"si":true,"sj":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"adygeya.su":true,"arkhangelsk.su":true,"balashov.su":true,"bashkiria.su":true,"bryansk.su":true,"dagestan.su":true,"grozny.su":true,"ivanovo.su":true,"kalmykia.su":true,"kaluga.su":true,"karelia.su":true,"khakassia.su":true,"krasnodar.su":true,"kurgan.su":true,"lenug.su":true,"mordovia.su":true,"msk.su":true,"murmansk.su":true,"nalchik.su":true,"nov.su":true,"obninsk.su":true,"penza.su":true,"pokrovsk.su":true,"sochi.su":true,"spb.su":true,"togliatti.su":true,"troitsk.su":true,"tula.su":true,"tuva.su":true,"vladikavkaz.su":true,"vladimir.su":true,"vologda.su":true,"sv":true,"com.sv":true,"edu.sv":true,"gob.sv":true,"org.sv":true,"red.sv":true,"sx":true,"gov.sx":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"com.tm":true,"co.tm":true,"org.tm":true,"net.tm":true,"nom.tm":true,"gov.tm":true,"mil.tm":true,"edu.tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"tr":true,"com.tr":true,"info.tr":true,"biz.tr":true,"net.tr":true,"org.tr":true,"web.tr":true,"gen.tr":true,"tv.tr":true,"av.tr":true,"dr.tr":true,"bbs.tr":true,"name.tr":true,"tel.tr":true,"gov.tr":true,"bel.tr":true,"pol.tr":true,"mil.tr":true,"k12.tr":true,"edu.tr":true,"kep.tr":true,"nc.tr":true,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"tz":true,"ac.tz":true,"co.tz":true,"go.tz":true,"hotel.tz":true,"info.tz":true,"me.tz":true,"mil.tz":true,"mobi.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"tv.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"cherkasy.ua":true,"chernigov.ua":true,"chernihiv.ua":true,"chernivtsi.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"cr.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"dnipropetrovsk.ua":true,"dominic.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkiv.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"khmelnytskyi.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"krym.ua":true,"ks.ua":true,"kv.ua":true,"kyiv.ua":true,"lg.ua":true,"lt.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lv.ua":true,"lviv.ua":true,"mk.ua":true,"mykolaiv.ua":true,"nikolaev.ua":true,"od.ua":true,"odesa.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rivne.ua":true,"rovno.ua":true,"rv.ua":true,"sb.ua":true,"sebastopol.ua":true,"sevastopol.ua":true,"sm.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uz.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vinnytsia.ua":true,"vn.ua":true,"volyn.ua":true,"yalta.ua":true,"zaporizhzhe.ua":true,"zaporizhzhia.ua":true,"zhitomir.ua":true,"zhytomyr.ua":true,"zp.ua":true,"zt.ua":true,"ug":true,"co.ug":true,"or.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"com.ug":true,"org.ug":true,"uk":true,"ac.uk":true,"co.uk":true,"gov.uk":true,"ltd.uk":true,"me.uk":true,"net.uk":true,"nhs.uk":true,"org.uk":true,"plc.uk":true,"police.uk":true,"*.sch.uk":true,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"uy":true,"com.uy":true,"edu.uy":true,"gub.uy":true,"mil.uy":true,"net.uy":true,"org.uy":true,"uz":true,"co.uz":true,"com.uz":true,"net.uz":true,"org.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"ve":true,"arts.ve":true,"co.ve":true,"com.ve":true,"e12.ve":true,"edu.ve":true,"firm.ve":true,"gob.ve":true,"gov.ve":true,"info.ve":true,"int.ve":true,"mil.ve":true,"net.ve":true,"org.ve":true,"rec.ve":true,"store.ve":true,"tec.ve":true,"web.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"com.vu":true,"edu.vu":true,"net.vu":true,"org.vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--y9a3aq":true,"xn--54b7fta0cc":true,"xn--90ais":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--e1a4c":true,"xn--node":true,"xn--qxam":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbtx2b":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--80ao21a":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--d1alf":true,"xn--l1acc":true,"xn--mix891f":true,"xn--mix082f":true,"xn--mgbx4cd0ab":true,"xn--mgb9awbf":true,"xn--mgbai9azgqp6j":true,"xn--mgbai9a5eva00b":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--o1ac.xn--90a3ac":true,"xn--c1avg.xn--90a3ac":true,"xn--90azh.xn--90a3ac":true,"xn--d1at.xn--90a3ac":true,"xn--o1ach.xn--90a3ac":true,"xn--80au.xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--mgbpl2fh":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"ac.za":true,"agric.za":true,"alt.za":true,"co.za":true,"edu.za":true,"gov.za":true,"grondar.za":true,"law.za":true,"mil.za":true,"net.za":true,"ngo.za":true,"nis.za":true,"nom.za":true,"org.za":true,"school.za":true,"tm.za":true,"web.za":true,"zm":true,"ac.zm":true,"biz.zm":true,"co.zm":true,"com.zm":true,"edu.zm":true,"gov.zm":true,"info.zm":true,"mil.zm":true,"net.zm":true,"org.zm":true,"sch.zm":true,"*.zw":true,"aaa":true,"aarp":true,"abarth":true,"abb":true,"abbott":true,"abbvie":true,"abc":true,"able":true,"abogado":true,"abudhabi":true,"academy":true,"accenture":true,"accountant":true,"accountants":true,"aco":true,"active":true,"actor":true,"adac":true,"ads":true,"adult":true,"aeg":true,"aetna":true,"afamilycompany":true,"afl":true,"africa":true,"agakhan":true,"agency":true,"aig":true,"aigo":true,"airbus":true,"airforce":true,"airtel":true,"akdn":true,"alfaromeo":true,"alibaba":true,"alipay":true,"allfinanz":true,"allstate":true,"ally":true,"alsace":true,"alstom":true,"americanexpress":true,"americanfamily":true,"amex":true,"amfam":true,"amica":true,"amsterdam":true,"analytics":true,"android":true,"anquan":true,"anz":true,"aol":true,"apartments":true,"app":true,"apple":true,"aquarelle":true,"arab":true,"aramco":true,"archi":true,"army":true,"art":true,"arte":true,"asda":true,"associates":true,"athleta":true,"attorney":true,"auction":true,"audi":true,"audible":true,"audio":true,"auspost":true,"author":true,"auto":true,"autos":true,"avianca":true,"aws":true,"axa":true,"azure":true,"baby":true,"baidu":true,"banamex":true,"bananarepublic":true,"band":true,"bank":true,"bar":true,"barcelona":true,"barclaycard":true,"barclays":true,"barefoot":true,"bargains":true,"baseball":true,"basketball":true,"bauhaus":true,"bayern":true,"bbc":true,"bbt":true,"bbva":true,"bcg":true,"bcn":true,"beats":true,"beauty":true,"beer":true,"bentley":true,"berlin":true,"best":true,"bestbuy":true,"bet":true,"bharti":true,"bible":true,"bid":true,"bike":true,"bing":true,"bingo":true,"bio":true,"black":true,"blackfriday":true,"blanco":true,"blockbuster":true,"blog":true,"bloomberg":true,"blue":true,"bms":true,"bmw":true,"bnl":true,"bnpparibas":true,"boats":true,"boehringer":true,"bofa":true,"bom":true,"bond":true,"boo":true,"book":true,"booking":true,"boots":true,"bosch":true,"bostik":true,"boston":true,"bot":true,"boutique":true,"box":true,"bradesco":true,"bridgestone":true,"broadway":true,"broker":true,"brother":true,"brussels":true,"budapest":true,"bugatti":true,"build":true,"builders":true,"business":true,"buy":true,"buzz":true,"bzh":true,"cab":true,"cafe":true,"cal":true,"call":true,"calvinklein":true,"cam":true,"camera":true,"camp":true,"cancerresearch":true,"canon":true,"capetown":true,"capital":true,"capitalone":true,"car":true,"caravan":true,"cards":true,"care":true,"career":true,"careers":true,"cars":true,"cartier":true,"casa":true,"case":true,"caseih":true,"cash":true,"casino":true,"catering":true,"catholic":true,"cba":true,"cbn":true,"cbre":true,"cbs":true,"ceb":true,"center":true,"ceo":true,"cern":true,"cfa":true,"cfd":true,"chanel":true,"channel":true,"chase":true,"chat":true,"cheap":true,"chintai":true,"chloe":true,"christmas":true,"chrome":true,"chrysler":true,"church":true,"cipriani":true,"circle":true,"cisco":true,"citadel":true,"citi":true,"citic":true,"city":true,"cityeats":true,"claims":true,"cleaning":true,"click":true,"clinic":true,"clinique":true,"clothing":true,"cloud":true,"club":true,"clubmed":true,"coach":true,"codes":true,"coffee":true,"college":true,"cologne":true,"comcast":true,"commbank":true,"community":true,"company":true,"compare":true,"computer":true,"comsec":true,"condos":true,"construction":true,"consulting":true,"contact":true,"contractors":true,"cooking":true,"cookingchannel":true,"cool":true,"corsica":true,"country":true,"coupon":true,"coupons":true,"courses":true,"credit":true,"creditcard":true,"creditunion":true,"cricket":true,"crown":true,"crs":true,"cruise":true,"cruises":true,"csc":true,"cuisinella":true,"cymru":true,"cyou":true,"dabur":true,"dad":true,"dance":true,"data":true,"date":true,"dating":true,"datsun":true,"day":true,"dclk":true,"dds":true,"deal":true,"dealer":true,"deals":true,"degree":true,"delivery":true,"dell":true,"deloitte":true,"delta":true,"democrat":true,"dental":true,"dentist":true,"desi":true,"design":true,"dev":true,"dhl":true,"diamonds":true,"diet":true,"digital":true,"direct":true,"directory":true,"discount":true,"discover":true,"dish":true,"diy":true,"dnp":true,"docs":true,"doctor":true,"dodge":true,"dog":true,"doha":true,"domains":true,"dot":true,"download":true,"drive":true,"dtv":true,"dubai":true,"duck":true,"dunlop":true,"duns":true,"dupont":true,"durban":true,"dvag":true,"dvr":true,"dwg":true,"earth":true,"eat":true,"eco":true,"edeka":true,"education":true,"email":true,"emerck":true,"emerson":true,"energy":true,"engineer":true,"engineering":true,"enterprises":true,"epost":true,"epson":true,"equipment":true,"ericsson":true,"erni":true,"esq":true,"estate":true,"esurance":true,"etisalat":true,"eurovision":true,"eus":true,"events":true,"everbank":true,"exchange":true,"expert":true,"exposed":true,"express":true,"extraspace":true,"fage":true,"fail":true,"fairwinds":true,"faith":true,"family":true,"fan":true,"fans":true,"farm":true,"farmers":true,"fashion":true,"fast":true,"fedex":true,"feedback":true,"ferrari":true,"ferrero":true,"fiat":true,"fidelity":true,"fido":true,"film":true,"final":true,"finance":true,"financial":true,"fire":true,"firestone":true,"firmdale":true,"fish":true,"fishing":true,"fit":true,"fitness":true,"flickr":true,"flights":true,"flir":true,"florist":true,"flowers":true,"fly":true,"foo":true,"food":true,"foodnetwork":true,"football":true,"ford":true,"forex":true,"forsale":true,"forum":true,"foundation":true,"fox":true,"free":true,"fresenius":true,"frl":true,"frogans":true,"frontdoor":true,"frontier":true,"ftr":true,"fujitsu":true,"fujixerox":true,"fun":true,"fund":true,"furniture":true,"futbol":true,"fyi":true,"gal":true,"gallery":true,"gallo":true,"gallup":true,"game":true,"games":true,"gap":true,"garden":true,"gbiz":true,"gdn":true,"gea":true,"gent":true,"genting":true,"george":true,"ggee":true,"gift":true,"gifts":true,"gives":true,"giving":true,"glade":true,"glass":true,"gle":true,"global":true,"globo":true,"gmail":true,"gmbh":true,"gmo":true,"gmx":true,"godaddy":true,"gold":true,"goldpoint":true,"golf":true,"goo":true,"goodhands":true,"goodyear":true,"goog":true,"google":true,"gop":true,"got":true,"grainger":true,"graphics":true,"gratis":true,"green":true,"gripe":true,"grocery":true,"group":true,"guardian":true,"gucci":true,"guge":true,"guide":true,"guitars":true,"guru":true,"hair":true,"hamburg":true,"hangout":true,"haus":true,"hbo":true,"hdfc":true,"hdfcbank":true,"health":true,"healthcare":true,"help":true,"helsinki":true,"here":true,"hermes":true,"hgtv":true,"hiphop":true,"hisamitsu":true,"hitachi":true,"hiv":true,"hkt":true,"hockey":true,"holdings":true,"holiday":true,"homedepot":true,"homegoods":true,"homes":true,"homesense":true,"honda":true,"honeywell":true,"horse":true,"host":true,"hosting":true,"hot":true,"hoteles":true,"hotels":true,"hotmail":true,"house":true,"how":true,"hsbc":true,"htc":true,"hughes":true,"hyatt":true,"hyundai":true,"ibm":true,"icbc":true,"ice":true,"icu":true,"ieee":true,"ifm":true,"iinet":true,"ikano":true,"imamat":true,"imdb":true,"immo":true,"immobilien":true,"industries":true,"infiniti":true,"ing":true,"ink":true,"institute":true,"insurance":true,"insure":true,"intel":true,"international":true,"intuit":true,"investments":true,"ipiranga":true,"irish":true,"iselect":true,"ismaili":true,"ist":true,"istanbul":true,"itau":true,"itv":true,"iveco":true,"iwc":true,"jaguar":true,"java":true,"jcb":true,"jcp":true,"jeep":true,"jetzt":true,"jewelry":true,"jio":true,"jlc":true,"jll":true,"jmp":true,"jnj":true,"joburg":true,"jot":true,"joy":true,"jpmorgan":true,"jprs":true,"juegos":true,"juniper":true,"kaufen":true,"kddi":true,"kerryhotels":true,"kerrylogistics":true,"kerryproperties":true,"kfh":true,"kia":true,"kim":true,"kinder":true,"kindle":true,"kitchen":true,"kiwi":true,"koeln":true,"komatsu":true,"kosher":true,"kpmg":true,"kpn":true,"krd":true,"kred":true,"kuokgroup":true,"kyoto":true,"lacaixa":true,"ladbrokes":true,"lamborghini":true,"lamer":true,"lancaster":true,"lancia":true,"lancome":true,"land":true,"landrover":true,"lanxess":true,"lasalle":true,"lat":true,"latino":true,"latrobe":true,"law":true,"lawyer":true,"lds":true,"lease":true,"leclerc":true,"lefrak":true,"legal":true,"lego":true,"lexus":true,"lgbt":true,"liaison":true,"lidl":true,"life":true,"lifeinsurance":true,"lifestyle":true,"lighting":true,"like":true,"lilly":true,"limited":true,"limo":true,"lincoln":true,"linde":true,"link":true,"lipsy":true,"live":true,"living":true,"lixil":true,"loan":true,"loans":true,"locker":true,"locus":true,"loft":true,"lol":true,"london":true,"lotte":true,"lotto":true,"love":true,"lpl":true,"lplfinancial":true,"ltd":true,"ltda":true,"lundbeck":true,"lupin":true,"luxe":true,"luxury":true,"macys":true,"madrid":true,"maif":true,"maison":true,"makeup":true,"man":true,"management":true,"mango":true,"map":true,"market":true,"marketing":true,"markets":true,"marriott":true,"marshalls":true,"maserati":true,"mattel":true,"mba":true,"mcd":true,"mcdonalds":true,"mckinsey":true,"med":true,"media":true,"meet":true,"melbourne":true,"meme":true,"memorial":true,"men":true,"menu":true,"meo":true,"merckmsd":true,"metlife":true,"miami":true,"microsoft":true,"mini":true,"mint":true,"mit":true,"mitsubishi":true,"mlb":true,"mls":true,"mma":true,"mobile":true,"mobily":true,"moda":true,"moe":true,"moi":true,"mom":true,"monash":true,"money":true,"monster":true,"montblanc":true,"mopar":true,"mormon":true,"mortgage":true,"moscow":true,"moto":true,"motorcycles":true,"mov":true,"movie":true,"movistar":true,"msd":true,"mtn":true,"mtpc":true,"mtr":true,"mutual":true,"mutuelle":true,"nab":true,"nadex":true,"nagoya":true,"nationwide":true,"natura":true,"navy":true,"nba":true,"nec":true,"netbank":true,"netflix":true,"network":true,"neustar":true,"new":true,"newholland":true,"news":true,"next":true,"nextdirect":true,"nexus":true,"nfl":true,"ngo":true,"nhk":true,"nico":true,"nike":true,"nikon":true,"ninja":true,"nissan":true,"nissay":true,"nokia":true,"northwesternmutual":true,"norton":true,"now":true,"nowruz":true,"nowtv":true,"nra":true,"nrw":true,"ntt":true,"nyc":true,"obi":true,"observer":true,"off":true,"office":true,"okinawa":true,"olayan":true,"olayangroup":true,"oldnavy":true,"ollo":true,"omega":true,"one":true,"ong":true,"onl":true,"online":true,"onyourside":true,"ooo":true,"open":true,"oracle":true,"orange":true,"organic":true,"orientexpress":true,"origins":true,"osaka":true,"otsuka":true,"ott":true,"ovh":true,"page":true,"pamperedchef":true,"panasonic":true,"panerai":true,"paris":true,"pars":true,"partners":true,"parts":true,"party":true,"passagens":true,"pay":true,"pccw":true,"pet":true,"pfizer":true,"pharmacy":true,"phd":true,"philips":true,"phone":true,"photo":true,"photography":true,"photos":true,"physio":true,"piaget":true,"pics":true,"pictet":true,"pictures":true,"pid":true,"pin":true,"ping":true,"pink":true,"pioneer":true,"pizza":true,"place":true,"play":true,"playstation":true,"plumbing":true,"plus":true,"pnc":true,"pohl":true,"poker":true,"politie":true,"porn":true,"pramerica":true,"praxi":true,"press":true,"prime":true,"prod":true,"productions":true,"prof":true,"progressive":true,"promo":true,"properties":true,"property":true,"protection":true,"pru":true,"prudential":true,"pub":true,"pwc":true,"qpon":true,"quebec":true,"quest":true,"qvc":true,"racing":true,"radio":true,"raid":true,"read":true,"realestate":true,"realtor":true,"realty":true,"recipes":true,"red":true,"redstone":true,"redumbrella":true,"rehab":true,"reise":true,"reisen":true,"reit":true,"reliance":true,"ren":true,"rent":true,"rentals":true,"repair":true,"report":true,"republican":true,"rest":true,"restaurant":true,"review":true,"reviews":true,"rexroth":true,"rich":true,"richardli":true,"ricoh":true,"rightathome":true,"ril":true,"rio":true,"rip":true,"rmit":true,"rocher":true,"rocks":true,"rodeo":true,"rogers":true,"room":true,"rsvp":true,"ruhr":true,"run":true,"rwe":true,"ryukyu":true,"saarland":true,"safe":true,"safety":true,"sakura":true,"sale":true,"salon":true,"samsclub":true,"samsung":true,"sandvik":true,"sandvikcoromant":true,"sanofi":true,"sap":true,"sapo":true,"sarl":true,"sas":true,"save":true,"saxo":true,"sbi":true,"sbs":true,"sca":true,"scb":true,"schaeffler":true,"schmidt":true,"scholarships":true,"school":true,"schule":true,"schwarz":true,"science":true,"scjohnson":true,"scor":true,"scot":true,"search":true,"seat":true,"secure":true,"security":true,"seek":true,"select":true,"sener":true,"services":true,"ses":true,"seven":true,"sew":true,"sex":true,"sexy":true,"sfr":true,"shangrila":true,"sharp":true,"shaw":true,"shell":true,"shia":true,"shiksha":true,"shoes":true,"shop":true,"shopping":true,"shouji":true,"show":true,"showtime":true,"shriram":true,"silk":true,"sina":true,"singles":true,"site":true,"ski":true,"skin":true,"sky":true,"skype":true,"sling":true,"smart":true,"smile":true,"sncf":true,"soccer":true,"social":true,"softbank":true,"software":true,"sohu":true,"solar":true,"solutions":true,"song":true,"sony":true,"soy":true,"space":true,"spiegel":true,"spot":true,"spreadbetting":true,"srl":true,"srt":true,"stada":true,"staples":true,"star":true,"starhub":true,"statebank":true,"statefarm":true,"statoil":true,"stc":true,"stcgroup":true,"stockholm":true,"storage":true,"store":true,"stream":true,"studio":true,"study":true,"style":true,"sucks":true,"supplies":true,"supply":true,"support":true,"surf":true,"surgery":true,"suzuki":true,"swatch":true,"swiftcover":true,"swiss":true,"sydney":true,"symantec":true,"systems":true,"tab":true,"taipei":true,"talk":true,"taobao":true,"target":true,"tatamotors":true,"tatar":true,"tattoo":true,"tax":true,"taxi":true,"tci":true,"tdk":true,"team":true,"tech":true,"technology":true,"telecity":true,"telefonica":true,"temasek":true,"tennis":true,"teva":true,"thd":true,"theater":true,"theatre":true,"theguardian":true,"tiaa":true,"tickets":true,"tienda":true,"tiffany":true,"tips":true,"tires":true,"tirol":true,"tjmaxx":true,"tjx":true,"tkmaxx":true,"tmall":true,"today":true,"tokyo":true,"tools":true,"top":true,"toray":true,"toshiba":true,"total":true,"tours":true,"town":true,"toyota":true,"toys":true,"trade":true,"trading":true,"training":true,"travelchannel":true,"travelers":true,"travelersinsurance":true,"trust":true,"trv":true,"tube":true,"tui":true,"tunes":true,"tushu":true,"tvs":true,"ubank":true,"ubs":true,"uconnect":true,"unicom":true,"university":true,"uno":true,"uol":true,"ups":true,"vacations":true,"vana":true,"vanguard":true,"vegas":true,"ventures":true,"verisign":true,"versicherung":true,"vet":true,"viajes":true,"video":true,"vig":true,"viking":true,"villas":true,"vin":true,"vip":true,"virgin":true,"visa":true,"vision":true,"vista":true,"vistaprint":true,"viva":true,"vivo":true,"vlaanderen":true,"vodka":true,"volkswagen":true,"volvo":true,"vote":true,"voting":true,"voto":true,"voyage":true,"vuelos":true,"wales":true,"walmart":true,"walter":true,"wang":true,"wanggou":true,"warman":true,"watch":true,"watches":true,"weather":true,"weatherchannel":true,"webcam":true,"weber":true,"website":true,"wed":true,"wedding":true,"weibo":true,"weir":true,"whoswho":true,"wien":true,"wiki":true,"williamhill":true,"win":true,"windows":true,"wine":true,"winners":true,"wme":true,"wolterskluwer":true,"woodside":true,"work":true,"works":true,"world":true,"wow":true,"wtc":true,"wtf":true,"xbox":true,"xerox":true,"xfinity":true,"xihuan":true,"xin":true,"xn--11b4c3d":true,"xn--1ck2e1b":true,"xn--1qqw23a":true,"xn--30rr7y":true,"xn--3bst00m":true,"xn--3ds443g":true,"xn--3oq18vl8pn36a":true,"xn--3pxu8k":true,"xn--42c2d9a":true,"xn--45q11c":true,"xn--4gbrim":true,"xn--4gq48lf9j":true,"xn--55qw42g":true,"xn--55qx5d":true,"xn--5su34j936bgsg":true,"xn--5tzm5g":true,"xn--6frz82g":true,"xn--6qq986b3xl":true,"xn--80adxhks":true,"xn--80aqecdr1a":true,"xn--80asehdb":true,"xn--80aswg":true,"xn--8y0a063a":true,"xn--9dbq2a":true,"xn--9et52u":true,"xn--9krt00a":true,"xn--b4w605ferd":true,"xn--bck1b9a5dre4c":true,"xn--c1avg":true,"xn--c2br7g":true,"xn--cck2b3b":true,"xn--cg4bki":true,"xn--czr694b":true,"xn--czrs0t":true,"xn--czru2d":true,"xn--d1acj3b":true,"xn--eckvdtc9d":true,"xn--efvy88h":true,"xn--estv75g":true,"xn--fct429k":true,"xn--fhbei":true,"xn--fiq228c5hs":true,"xn--fiq64b":true,"xn--fjq720a":true,"xn--flw351e":true,"xn--fzys8d69uvgm":true,"xn--g2xx48c":true,"xn--gckr3f0f":true,"xn--gk3at1e":true,"xn--hxt814e":true,"xn--i1b6b1a6a2e":true,"xn--imr513n":true,"xn--io0a7i":true,"xn--j1aef":true,"xn--jlq61u9w7b":true,"xn--jvr189m":true,"xn--kcrx77d1x4a":true,"xn--kpu716f":true,"xn--kput3i":true,"xn--mgba3a3ejt":true,"xn--mgba7c0bbn0a":true,"xn--mgbaakc7dvf":true,"xn--mgbab2bd":true,"xn--mgbb9fbpob":true,"xn--mgbca7dzdo":true,"xn--mgbi4ecexp":true,"xn--mgbt3dhd":true,"xn--mk1bu44c":true,"xn--mxtq1m":true,"xn--ngbc5azd":true,"xn--ngbe9e0a":true,"xn--ngbrx":true,"xn--nqv7f":true,"xn--nqv7fs00ema":true,"xn--nyqy26a":true,"xn--p1acf":true,"xn--pbt977c":true,"xn--pssy2u":true,"xn--q9jyb4c":true,"xn--qcka1pmc":true,"xn--rhqv96g":true,"xn--rovu88b":true,"xn--ses554g":true,"xn--t60b56a":true,"xn--tckwe":true,"xn--tiq49xqyj":true,"xn--unup4y":true,"xn--vermgensberater-ctb":true,"xn--vermgensberatung-pwb":true,"xn--vhquv":true,"xn--vuq861b":true,"xn--w4r85el8fhu5dnra":true,"xn--w4rs40l":true,"xn--xhq521b":true,"xn--zfr164b":true,"xperia":true,"xyz":true,"yachts":true,"yahoo":true,"yamaxun":true,"yandex":true,"yodobashi":true,"yoga":true,"yokohama":true,"you":true,"youtube":true,"yun":true,"zappos":true,"zara":true,"zero":true,"zip":true,"zippo":true,"zone":true,"zuerich":true,"beep.pl":true,"*.compute.estate":true,"*.alces.network":true,"*.alwaysdata.net":true,"cloudfront.net":true,"compute.amazonaws.com":true,"ap-northeast-1.compute.amazonaws.com":true,"ap-northeast-2.compute.amazonaws.com":true,"ap-southeast-1.compute.amazonaws.com":true,"ap-southeast-2.compute.amazonaws.com":true,"eu-central-1.compute.amazonaws.com":true,"eu-west-1.compute.amazonaws.com":true,"sa-east-1.compute.amazonaws.com":true,"us-gov-west-1.compute.amazonaws.com":true,"us-west-1.compute.amazonaws.com":true,"us-west-2.compute.amazonaws.com":true,"compute-1.amazonaws.com":true,"z-1.compute-1.amazonaws.com":true,"z-2.compute-1.amazonaws.com":true,"us-east-1.amazonaws.com":true,"compute.amazonaws.com.cn":true,"cn-north-1.compute.amazonaws.com.cn":true,"elasticbeanstalk.com":true,"elb.amazonaws.com":true,"s3.amazonaws.com":true,"s3-ap-northeast-1.amazonaws.com":true,"s3-ap-northeast-2.amazonaws.com":true,"s3-ap-southeast-1.amazonaws.com":true,"s3-ap-southeast-2.amazonaws.com":true,"s3-eu-central-1.amazonaws.com":true,"s3-eu-west-1.amazonaws.com":true,"s3-external-1.amazonaws.com":true,"s3-external-2.amazonaws.com":true,"s3-fips-us-gov-west-1.amazonaws.com":true,"s3-sa-east-1.amazonaws.com":true,"s3-us-gov-west-1.amazonaws.com":true,"s3-us-west-1.amazonaws.com":true,"s3-us-west-2.amazonaws.com":true,"s3.ap-northeast-2.amazonaws.com":true,"s3.cn-north-1.amazonaws.com.cn":true,"s3.eu-central-1.amazonaws.com":true,"on-aptible.com":true,"pimienta.org":true,"poivron.org":true,"potager.org":true,"sweetpepper.org":true,"myasustor.com":true,"myfritz.net":true,"backplaneapp.io":true,"betainabox.com":true,"bnr.la":true,"boxfuse.io":true,"browsersafetymark.io":true,"mycd.eu":true,"ae.org":true,"ar.com":true,"br.com":true,"cn.com":true,"com.de":true,"com.se":true,"de.com":true,"eu.com":true,"gb.com":true,"gb.net":true,"hu.com":true,"hu.net":true,"jp.net":true,"jpn.com":true,"kr.com":true,"mex.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"se.net":true,"uk.com":true,"uk.net":true,"us.com":true,"uy.com":true,"za.bz":true,"za.com":true,"africa.com":true,"gr.com":true,"in.net":true,"us.org":true,"co.com":true,"c.la":true,"certmgr.org":true,"xenapponazure.com":true,"virtueeldomein.nl":true,"cloudcontrolled.com":true,"cloudcontrolapp.com":true,"co.ca":true,"co.cz":true,"c.cdn77.org":true,"cdn77-ssl.net":true,"r.cdn77.net":true,"rsc.cdn77.org":true,"ssl.origin.cdn77-secure.org":true,"cloudns.asia":true,"cloudns.biz":true,"cloudns.club":true,"cloudns.cc":true,"cloudns.eu":true,"cloudns.in":true,"cloudns.info":true,"cloudns.org":true,"cloudns.pro":true,"cloudns.pw":true,"cloudns.us":true,"co.nl":true,"co.no":true,"*.platform.sh":true,"realm.cz":true,"*.cryptonomic.net":true,"cupcake.is":true,"cyon.link":true,"cyon.site":true,"daplie.me":true,"biz.dk":true,"co.dk":true,"firm.dk":true,"reg.dk":true,"store.dk":true,"dedyn.io":true,"dnshome.de":true,"dreamhosters.com":true,"mydrobo.com":true,"drud.io":true,"drud.us":true,"duckdns.org":true,"dy.fi":true,"tunk.org":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true,"ddnss.de":true,"dyn.ddnss.de":true,"dyndns.ddnss.de":true,"dyndns1.de":true,"dyn-ip24.de":true,"home-webserver.de":true,"dyn.home-webserver.de":true,"myhome-server.de":true,"ddnss.org":true,"dynv6.net":true,"e4.cz":true,"eu.org":true,"al.eu.org":true,"asso.eu.org":true,"at.eu.org":true,"au.eu.org":true,"be.eu.org":true,"bg.eu.org":true,"ca.eu.org":true,"cd.eu.org":true,"ch.eu.org":true,"cn.eu.org":true,"cy.eu.org":true,"cz.eu.org":true,"de.eu.org":true,"dk.eu.org":true,"edu.eu.org":true,"ee.eu.org":true,"es.eu.org":true,"fi.eu.org":true,"fr.eu.org":true,"gr.eu.org":true,"hr.eu.org":true,"hu.eu.org":true,"ie.eu.org":true,"il.eu.org":true,"in.eu.org":true,"int.eu.org":true,"is.eu.org":true,"it.eu.org":true,"jp.eu.org":true,"kr.eu.org":true,"lt.eu.org":true,"lu.eu.org":true,"lv.eu.org":true,"mc.eu.org":true,"me.eu.org":true,"mk.eu.org":true,"mt.eu.org":true,"my.eu.org":true,"net.eu.org":true,"ng.eu.org":true,"nl.eu.org":true,"no.eu.org":true,"nz.eu.org":true,"paris.eu.org":true,"pl.eu.org":true,"pt.eu.org":true,"q-a.eu.org":true,"ro.eu.org":true,"ru.eu.org":true,"se.eu.org":true,"si.eu.org":true,"sk.eu.org":true,"tr.eu.org":true,"uk.eu.org":true,"us.eu.org":true,"eu-1.evennode.com":true,"eu-2.evennode.com":true,"us-1.evennode.com":true,"us-2.evennode.com":true,"apps.fbsbx.com":true,"a.ssl.fastly.net":true,"b.ssl.fastly.net":true,"global.ssl.fastly.net":true,"a.prod.fastly.net":true,"global.prod.fastly.net":true,"fhapp.xyz":true,"firebaseapp.com":true,"flynnhub.com":true,"freebox-os.com":true,"freeboxos.com":true,"fbx-os.fr":true,"fbxos.fr":true,"freebox-os.fr":true,"freeboxos.fr":true,"myfusion.cloud":true,"futuremailing.at":true,"*.ex.ortsinfo.at":true,"*.kunden.ortsinfo.at":true,"service.gov.uk":true,"github.io":true,"githubusercontent.com":true,"githubcloud.com":true,"*.api.githubcloud.com":true,"*.ext.githubcloud.com":true,"gist.githubcloud.com":true,"*.githubcloudusercontent.com":true,"gitlab.io":true,"ro.com":true,"ro.im":true,"shop.ro":true,"goip.de":true,"*.0emm.com":true,"appspot.com":true,"blogspot.ae":true,"blogspot.al":true,"blogspot.am":true,"blogspot.ba":true,"blogspot.be":true,"blogspot.bg":true,"blogspot.bj":true,"blogspot.ca":true,"blogspot.cf":true,"blogspot.ch":true,"blogspot.cl":true,"blogspot.co.at":true,"blogspot.co.id":true,"blogspot.co.il":true,"blogspot.co.ke":true,"blogspot.co.nz":true,"blogspot.co.uk":true,"blogspot.co.za":true,"blogspot.com":true,"blogspot.com.ar":true,"blogspot.com.au":true,"blogspot.com.br":true,"blogspot.com.by":true,"blogspot.com.co":true,"blogspot.com.cy":true,"blogspot.com.ee":true,"blogspot.com.eg":true,"blogspot.com.es":true,"blogspot.com.mt":true,"blogspot.com.ng":true,"blogspot.com.tr":true,"blogspot.com.uy":true,"blogspot.cv":true,"blogspot.cz":true,"blogspot.de":true,"blogspot.dk":true,"blogspot.fi":true,"blogspot.fr":true,"blogspot.gr":true,"blogspot.hk":true,"blogspot.hr":true,"blogspot.hu":true,"blogspot.ie":true,"blogspot.in":true,"blogspot.is":true,"blogspot.it":true,"blogspot.jp":true,"blogspot.kr":true,"blogspot.li":true,"blogspot.lt":true,"blogspot.lu":true,"blogspot.md":true,"blogspot.mk":true,"blogspot.mr":true,"blogspot.mx":true,"blogspot.my":true,"blogspot.nl":true,"blogspot.no":true,"blogspot.pe":true,"blogspot.pt":true,"blogspot.qa":true,"blogspot.re":true,"blogspot.ro":true,"blogspot.rs":true,"blogspot.ru":true,"blogspot.se":true,"blogspot.sg":true,"blogspot.si":true,"blogspot.sk":true,"blogspot.sn":true,"blogspot.td":true,"blogspot.tw":true,"blogspot.ug":true,"blogspot.vn":true,"cloudfunctions.net":true,"codespot.com":true,"googleapis.com":true,"googlecode.com":true,"pagespeedmobilizer.com":true,"publishproxy.com":true,"withgoogle.com":true,"withyoutube.com":true,"hashbang.sh":true,"hasura-app.io":true,"hepforge.org":true,"herokuapp.com":true,"herokussl.com":true,"iki.fi":true,"biz.at":true,"info.at":true,"ac.leg.br":true,"al.leg.br":true,"am.leg.br":true,"ap.leg.br":true,"ba.leg.br":true,"ce.leg.br":true,"df.leg.br":true,"es.leg.br":true,"go.leg.br":true,"ma.leg.br":true,"mg.leg.br":true,"ms.leg.br":true,"mt.leg.br":true,"pa.leg.br":true,"pb.leg.br":true,"pe.leg.br":true,"pi.leg.br":true,"pr.leg.br":true,"rj.leg.br":true,"rn.leg.br":true,"ro.leg.br":true,"rr.leg.br":true,"rs.leg.br":true,"sc.leg.br":true,"se.leg.br":true,"sp.leg.br":true,"to.leg.br":true,"*.triton.zone":true,"*.cns.joyent.com":true,"js.org":true,"keymachine.de":true,"knightpoint.systems":true,"co.krd":true,"edu.krd":true,"*.magentosite.cloud":true,"meteorapp.com":true,"eu.meteorapp.com":true,"co.pl":true,"azurewebsites.net":true,"azure-mobile.net":true,"cloudapp.net":true,"bmoattachments.org":true,"4u.com":true,"ngrok.io":true,"nfshost.com":true,"nsupdate.info":true,"nerdpol.ovh":true,"blogsyte.com":true,"brasilia.me":true,"cable-modem.org":true,"ciscofreak.com":true,"collegefan.org":true,"couchpotatofries.org":true,"damnserver.com":true,"ddns.me":true,"ditchyourip.com":true,"dnsfor.me":true,"dnsiskinky.com":true,"dvrcam.info":true,"dynns.com":true,"eating-organic.net":true,"fantasyleague.cc":true,"geekgalaxy.com":true,"golffan.us":true,"health-carereform.com":true,"homesecuritymac.com":true,"homesecuritypc.com":true,"hopto.me":true,"ilovecollege.info":true,"loginto.me":true,"mlbfan.org":true,"mmafan.biz":true,"myactivedirectory.com":true,"mydissent.net":true,"myeffect.net":true,"mymediapc.net":true,"mypsx.net":true,"mysecuritycamera.com":true,"mysecuritycamera.net":true,"mysecuritycamera.org":true,"net-freaks.com":true,"nflfan.org":true,"nhlfan.net":true,"no-ip.ca":true,"no-ip.co.uk":true,"no-ip.net":true,"noip.us":true,"onthewifi.com":true,"pgafan.net":true,"point2this.com":true,"pointto.us":true,"privatizehealthinsurance.net":true,"quicksytes.com":true,"read-books.org":true,"securitytactics.com":true,"serveexchange.com":true,"servehumour.com":true,"servep2p.com":true,"servesarcasm.com":true,"stufftoread.com":true,"ufcfan.org":true,"unusualperson.com":true,"workisboring.com":true,"3utilities.com":true,"bounceme.net":true,"ddns.net":true,"ddnsking.com":true,"gotdns.ch":true,"hopto.org":true,"myftp.biz":true,"myftp.org":true,"myvnc.com":true,"no-ip.biz":true,"no-ip.info":true,"no-ip.org":true,"noip.me":true,"redirectme.net":true,"servebeer.com":true,"serveblog.net":true,"servecounterstrike.com":true,"serveftp.com":true,"servegame.com":true,"servehalflife.com":true,"servehttp.com":true,"serveirc.com":true,"serveminecraft.net":true,"servemp3.com":true,"servepics.com":true,"servequake.com":true,"sytes.net":true,"webhop.me":true,"zapto.org":true,"nyc.mn":true,"nid.io":true,"opencraft.hosting":true,"operaunite.com":true,"outsystemscloud.com":true,"ownprovider.com":true,"oy.lc":true,"pgfog.com":true,"pagefrontapp.com":true,"art.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pantheonsite.io":true,"gotpantheon.com":true,"mypep.link":true,"xen.prgmr.com":true,"priv.at":true,"protonet.io":true,"chirurgiens-dentistes-en-france.fr":true,"qa2.com":true,"dev-myqnapcloud.com":true,"alpha-myqnapcloud.com":true,"myqnapcloud.com":true,"rackmaze.com":true,"rackmaze.net":true,"rhcloud.com":true,"hzc.io":true,"wellbeingzone.eu":true,"ptplus.fit":true,"wellbeingzone.co.uk":true,"sandcats.io":true,"logoip.de":true,"logoip.com":true,"firewall-gateway.com":true,"firewall-gateway.de":true,"my-gateway.de":true,"my-router.de":true,"spdns.de":true,"spdns.eu":true,"firewall-gateway.net":true,"my-firewall.org":true,"myfirewall.org":true,"spdns.org":true,"biz.ua":true,"co.ua":true,"pp.ua":true,"shiftedit.io":true,"myshopblocks.com":true,"1kapp.com":true,"appchizi.com":true,"applinzi.com":true,"sinaapp.com":true,"vipsinaapp.com":true,"bounty-full.com":true,"alpha.bounty-full.com":true,"beta.bounty-full.com":true,"static.land":true,"dev.static.land":true,"sites.static.land":true,"apps.lair.io":true,"*.stolos.io":true,"spacekit.io":true,"stackspace.space":true,"diskstation.me":true,"dscloud.biz":true,"dscloud.me":true,"dscloud.mobi":true,"dsmynas.com":true,"dsmynas.net":true,"dsmynas.org":true,"familyds.com":true,"familyds.net":true,"familyds.org":true,"i234.me":true,"myds.me":true,"synology.me":true,"taifun-dns.de":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"bloxcms.com":true,"townnews-staging.com":true,"*.transurl.be":true,"*.transurl.eu":true,"*.transurl.nl":true,"tuxfamily.org":true,"hk.com":true,"hk.org":true,"ltd.hk":true,"inc.hk":true,"lib.de.us":true,"router.management":true,"wmflabs.org":true,"yolasite.com":true,"za.net":true,"za.org":true,"now.sh":true}); +{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"ar":true,"com.ar":true,"edu.ar":true,"gob.ar":true,"gov.ar":true,"int.ar":true,"mil.ar":true,"musica.ar":true,"net.ar":true,"org.ar":true,"tur.ar":true,"arpa":true,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"au":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"com.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"net.ba":true,"org.ba":true,"bb":true,"biz.bb":true,"co.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"tv.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"web.bo":true,"academia.bo":true,"agro.bo":true,"arte.bo":true,"blog.bo":true,"bolivia.bo":true,"ciencia.bo":true,"cooperativa.bo":true,"democracia.bo":true,"deporte.bo":true,"ecologia.bo":true,"economia.bo":true,"empresa.bo":true,"indigena.bo":true,"industria.bo":true,"info.bo":true,"medicina.bo":true,"movimiento.bo":true,"musica.bo":true,"natural.bo":true,"nombre.bo":true,"noticias.bo":true,"patria.bo":true,"politica.bo":true,"profesional.bo":true,"plurinacional.bo":true,"pueblo.bo":true,"revista.bo":true,"salud.bo":true,"tecnologia.bo":true,"tksat.bo":true,"transporte.bo":true,"wiki.bo":true,"br":true,"9guacu.br":true,"abc.br":true,"adm.br":true,"adv.br":true,"agr.br":true,"aju.br":true,"am.br":true,"anani.br":true,"aparecida.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"belem.br":true,"bhz.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"boavista.br":true,"bsb.br":true,"campinagrande.br":true,"campinas.br":true,"caxias.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"contagem.br":true,"coop.br":true,"cri.br":true,"cuiaba.br":true,"curitiba.br":true,"def.br":true,"ecn.br":true,"eco.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"feira.br":true,"flog.br":true,"floripa.br":true,"fm.br":true,"fnd.br":true,"fortal.br":true,"fot.br":true,"foz.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"goiania.br":true,"gov.br":true,"ac.gov.br":true,"al.gov.br":true,"am.gov.br":true,"ap.gov.br":true,"ba.gov.br":true,"ce.gov.br":true,"df.gov.br":true,"es.gov.br":true,"go.gov.br":true,"ma.gov.br":true,"mg.gov.br":true,"ms.gov.br":true,"mt.gov.br":true,"pa.gov.br":true,"pb.gov.br":true,"pe.gov.br":true,"pi.gov.br":true,"pr.gov.br":true,"rj.gov.br":true,"rn.gov.br":true,"ro.gov.br":true,"rr.gov.br":true,"rs.gov.br":true,"sc.gov.br":true,"se.gov.br":true,"sp.gov.br":true,"to.gov.br":true,"gru.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jab.br":true,"jampa.br":true,"jdf.br":true,"joinville.br":true,"jor.br":true,"jus.br":true,"leg.br":true,"lel.br":true,"londrina.br":true,"macapa.br":true,"maceio.br":true,"manaus.br":true,"maringa.br":true,"mat.br":true,"med.br":true,"mil.br":true,"morena.br":true,"mp.br":true,"mus.br":true,"natal.br":true,"net.br":true,"niteroi.br":true,"*.nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"osasco.br":true,"palmas.br":true,"poa.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"pvh.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"recife.br":true,"ribeirao.br":true,"rio.br":true,"riobranco.br":true,"riopreto.br":true,"salvador.br":true,"sampa.br":true,"santamaria.br":true,"santoandre.br":true,"saobernardo.br":true,"saogonca.br":true,"sjc.br":true,"slg.br":true,"slz.br":true,"sorocaba.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"the.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"udi.br":true,"vet.br":true,"vix.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bv":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"co.cm":true,"com.cm":true,"gov.cm":true,"net.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cw":true,"com.cw":true,"edu.cw":true,"net.cw":true,"org.cw":true,"cx":true,"gov.cx":true,"cy":true,"ac.cy":true,"biz.cy":true,"com.cy":true,"ekloges.cy":true,"gov.cy":true,"ltd.cy":true,"name.cy":true,"net.cy":true,"org.cy":true,"parliament.cy":true,"press.cy":true,"pro.cy":true,"tm.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"et":true,"com.et":true,"gov.et":true,"org.et":true,"edu.et":true,"biz.et":true,"name.et":true,"info.et":true,"net.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gb":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"net.gg":true,"org.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"co.gl":true,"com.gl":true,"edu.gl":true,"net.gl":true,"org.gl":true,"gm":true,"gn":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"gt":true,"com.gt":true,"edu.gt":true,"gob.gt":true,"ind.gt":true,"mil.gt":true,"net.gt":true,"org.gt":true,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"edu.gy":true,"gov.gy":true,"net.gy":true,"org.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"biz.id":true,"co.id":true,"desa.id":true,"go.id":true,"mil.id":true,"my.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"il":true,"ac.il":true,"co.il":true,"gov.il":true,"idf.il":true,"k12.il":true,"muni.il":true,"net.il":true,"org.il":true,"im":true,"ac.im":true,"co.im":true,"com.im":true,"ltd.co.im":true,"net.im":true,"org.im":true,"plc.co.im":true,"tt.im":true,"tv.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"abr.it":true,"abruzzo.it":true,"aosta-valley.it":true,"aostavalley.it":true,"bas.it":true,"basilicata.it":true,"cal.it":true,"calabria.it":true,"cam.it":true,"campania.it":true,"emilia-romagna.it":true,"emiliaromagna.it":true,"emr.it":true,"friuli-v-giulia.it":true,"friuli-ve-giulia.it":true,"friuli-vegiulia.it":true,"friuli-venezia-giulia.it":true,"friuli-veneziagiulia.it":true,"friuli-vgiulia.it":true,"friuliv-giulia.it":true,"friulive-giulia.it":true,"friulivegiulia.it":true,"friulivenezia-giulia.it":true,"friuliveneziagiulia.it":true,"friulivgiulia.it":true,"fvg.it":true,"laz.it":true,"lazio.it":true,"lig.it":true,"liguria.it":true,"lom.it":true,"lombardia.it":true,"lombardy.it":true,"lucania.it":true,"mar.it":true,"marche.it":true,"mol.it":true,"molise.it":true,"piedmont.it":true,"piemonte.it":true,"pmn.it":true,"pug.it":true,"puglia.it":true,"sar.it":true,"sardegna.it":true,"sardinia.it":true,"sic.it":true,"sicilia.it":true,"sicily.it":true,"taa.it":true,"tos.it":true,"toscana.it":true,"trentino-a-adige.it":true,"trentino-aadige.it":true,"trentino-alto-adige.it":true,"trentino-altoadige.it":true,"trentino-s-tirol.it":true,"trentino-stirol.it":true,"trentino-sud-tirol.it":true,"trentino-sudtirol.it":true,"trentino-sued-tirol.it":true,"trentino-suedtirol.it":true,"trentinoa-adige.it":true,"trentinoaadige.it":true,"trentinoalto-adige.it":true,"trentinoaltoadige.it":true,"trentinos-tirol.it":true,"trentinostirol.it":true,"trentinosud-tirol.it":true,"trentinosudtirol.it":true,"trentinosued-tirol.it":true,"trentinosuedtirol.it":true,"tuscany.it":true,"umb.it":true,"umbria.it":true,"val-d-aosta.it":true,"val-daosta.it":true,"vald-aosta.it":true,"valdaosta.it":true,"valle-aosta.it":true,"valle-d-aosta.it":true,"valle-daosta.it":true,"valleaosta.it":true,"valled-aosta.it":true,"valledaosta.it":true,"vallee-aoste.it":true,"valleeaoste.it":true,"vao.it":true,"vda.it":true,"ven.it":true,"veneto.it":true,"ag.it":true,"agrigento.it":true,"al.it":true,"alessandria.it":true,"alto-adige.it":true,"altoadige.it":true,"an.it":true,"ancona.it":true,"andria-barletta-trani.it":true,"andria-trani-barletta.it":true,"andriabarlettatrani.it":true,"andriatranibarletta.it":true,"ao.it":true,"aosta.it":true,"aoste.it":true,"ap.it":true,"aq.it":true,"aquila.it":true,"ar.it":true,"arezzo.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"asti.it":true,"at.it":true,"av.it":true,"avellino.it":true,"ba.it":true,"balsan.it":true,"bari.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"belluno.it":true,"benevento.it":true,"bergamo.it":true,"bg.it":true,"bi.it":true,"biella.it":true,"bl.it":true,"bn.it":true,"bo.it":true,"bologna.it":true,"bolzano.it":true,"bozen.it":true,"br.it":true,"brescia.it":true,"brindisi.it":true,"bs.it":true,"bt.it":true,"bz.it":true,"ca.it":true,"cagliari.it":true,"caltanissetta.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"campobasso.it":true,"carbonia-iglesias.it":true,"carboniaiglesias.it":true,"carrara-massa.it":true,"carraramassa.it":true,"caserta.it":true,"catania.it":true,"catanzaro.it":true,"cb.it":true,"ce.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"ch.it":true,"chieti.it":true,"ci.it":true,"cl.it":true,"cn.it":true,"co.it":true,"como.it":true,"cosenza.it":true,"cr.it":true,"cremona.it":true,"crotone.it":true,"cs.it":true,"ct.it":true,"cuneo.it":true,"cz.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"en.it":true,"enna.it":true,"fc.it":true,"fe.it":true,"fermo.it":true,"ferrara.it":true,"fg.it":true,"fi.it":true,"firenze.it":true,"florence.it":true,"fm.it":true,"foggia.it":true,"forli-cesena.it":true,"forlicesena.it":true,"fr.it":true,"frosinone.it":true,"ge.it":true,"genoa.it":true,"genova.it":true,"go.it":true,"gorizia.it":true,"gr.it":true,"grosseto.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"im.it":true,"imperia.it":true,"is.it":true,"isernia.it":true,"kr.it":true,"la-spezia.it":true,"laquila.it":true,"laspezia.it":true,"latina.it":true,"lc.it":true,"le.it":true,"lecce.it":true,"lecco.it":true,"li.it":true,"livorno.it":true,"lo.it":true,"lodi.it":true,"lt.it":true,"lu.it":true,"lucca.it":true,"macerata.it":true,"mantova.it":true,"massa-carrara.it":true,"massacarrara.it":true,"matera.it":true,"mb.it":true,"mc.it":true,"me.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"messina.it":true,"mi.it":true,"milan.it":true,"milano.it":true,"mn.it":true,"mo.it":true,"modena.it":true,"monza-brianza.it":true,"monza-e-della-brianza.it":true,"monza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"ms.it":true,"mt.it":true,"na.it":true,"naples.it":true,"napoli.it":true,"no.it":true,"novara.it":true,"nu.it":true,"nuoro.it":true,"og.it":true,"ogliastra.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"or.it":true,"oristano.it":true,"ot.it":true,"pa.it":true,"padova.it":true,"padua.it":true,"palermo.it":true,"parma.it":true,"pavia.it":true,"pc.it":true,"pd.it":true,"pe.it":true,"perugia.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"pescara.it":true,"pg.it":true,"pi.it":true,"piacenza.it":true,"pisa.it":true,"pistoia.it":true,"pn.it":true,"po.it":true,"pordenone.it":true,"potenza.it":true,"pr.it":true,"prato.it":true,"pt.it":true,"pu.it":true,"pv.it":true,"pz.it":true,"ra.it":true,"ragusa.it":true,"ravenna.it":true,"rc.it":true,"re.it":true,"reggio-calabria.it":true,"reggio-emilia.it":true,"reggiocalabria.it":true,"reggioemilia.it":true,"rg.it":true,"ri.it":true,"rieti.it":true,"rimini.it":true,"rm.it":true,"rn.it":true,"ro.it":true,"roma.it":true,"rome.it":true,"rovigo.it":true,"sa.it":true,"salerno.it":true,"sassari.it":true,"savona.it":true,"si.it":true,"siena.it":true,"siracusa.it":true,"so.it":true,"sondrio.it":true,"sp.it":true,"sr.it":true,"ss.it":true,"suedtirol.it":true,"sv.it":true,"ta.it":true,"taranto.it":true,"te.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"teramo.it":true,"terni.it":true,"tn.it":true,"to.it":true,"torino.it":true,"tp.it":true,"tr.it":true,"trani-andria-barletta.it":true,"trani-barletta-andria.it":true,"traniandriabarletta.it":true,"tranibarlettaandria.it":true,"trapani.it":true,"trentino.it":true,"trento.it":true,"treviso.it":true,"trieste.it":true,"ts.it":true,"turin.it":true,"tv.it":true,"ud.it":true,"udine.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"va.it":true,"varese.it":true,"vb.it":true,"vc.it":true,"ve.it":true,"venezia.it":true,"venice.it":true,"verbania.it":true,"vercelli.it":true,"verona.it":true,"vi.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vicenza.it":true,"viterbo.it":true,"vr.it":true,"vs.it":true,"vt.it":true,"vv.it":true,"je":true,"co.je":true,"net.je":true,"org.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"aichi.jp":true,"akita.jp":true,"aomori.jp":true,"chiba.jp":true,"ehime.jp":true,"fukui.jp":true,"fukuoka.jp":true,"fukushima.jp":true,"gifu.jp":true,"gunma.jp":true,"hiroshima.jp":true,"hokkaido.jp":true,"hyogo.jp":true,"ibaraki.jp":true,"ishikawa.jp":true,"iwate.jp":true,"kagawa.jp":true,"kagoshima.jp":true,"kanagawa.jp":true,"kochi.jp":true,"kumamoto.jp":true,"kyoto.jp":true,"mie.jp":true,"miyagi.jp":true,"miyazaki.jp":true,"nagano.jp":true,"nagasaki.jp":true,"nara.jp":true,"niigata.jp":true,"oita.jp":true,"okayama.jp":true,"okinawa.jp":true,"osaka.jp":true,"saga.jp":true,"saitama.jp":true,"shiga.jp":true,"shimane.jp":true,"shizuoka.jp":true,"tochigi.jp":true,"tokushima.jp":true,"tokyo.jp":true,"tottori.jp":true,"toyama.jp":true,"wakayama.jp":true,"yamagata.jp":true,"yamaguchi.jp":true,"yamanashi.jp":true,"xn--4pvxs.jp":true,"xn--vgu402c.jp":true,"xn--c3s14m.jp":true,"xn--f6qx53a.jp":true,"xn--8pvr4u.jp":true,"xn--uist22h.jp":true,"xn--djrs72d6uy.jp":true,"xn--mkru45i.jp":true,"xn--0trq7p7nn.jp":true,"xn--8ltr62k.jp":true,"xn--2m4a15e.jp":true,"xn--efvn9s.jp":true,"xn--32vp30h.jp":true,"xn--4it797k.jp":true,"xn--1lqs71d.jp":true,"xn--5rtp49c.jp":true,"xn--5js045d.jp":true,"xn--ehqz56n.jp":true,"xn--1lqs03n.jp":true,"xn--qqqt11m.jp":true,"xn--kbrq7o.jp":true,"xn--pssu33l.jp":true,"xn--ntsq17g.jp":true,"xn--uisz3g.jp":true,"xn--6btw5a.jp":true,"xn--1ctwo.jp":true,"xn--6orx2r.jp":true,"xn--rht61e.jp":true,"xn--rht27z.jp":true,"xn--djty4k.jp":true,"xn--nit225k.jp":true,"xn--rht3d.jp":true,"xn--klty5x.jp":true,"xn--kltx9a.jp":true,"xn--kltp7d.jp":true,"xn--uuwu58a.jp":true,"xn--zbx025d.jp":true,"xn--ntso0iqx3a.jp":true,"xn--elqq16h.jp":true,"xn--4it168d.jp":true,"xn--klt787d.jp":true,"xn--rny31h.jp":true,"xn--7t0a264c.jp":true,"xn--5rtq34k.jp":true,"xn--k7yn95e.jp":true,"xn--tor131o.jp":true,"xn--d5qv7z876c.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.nagoya.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.yokohama.jp":true,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.nagoya.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.yokohama.jp":false,"aisai.aichi.jp":true,"ama.aichi.jp":true,"anjo.aichi.jp":true,"asuke.aichi.jp":true,"chiryu.aichi.jp":true,"chita.aichi.jp":true,"fuso.aichi.jp":true,"gamagori.aichi.jp":true,"handa.aichi.jp":true,"hazu.aichi.jp":true,"hekinan.aichi.jp":true,"higashiura.aichi.jp":true,"ichinomiya.aichi.jp":true,"inazawa.aichi.jp":true,"inuyama.aichi.jp":true,"isshiki.aichi.jp":true,"iwakura.aichi.jp":true,"kanie.aichi.jp":true,"kariya.aichi.jp":true,"kasugai.aichi.jp":true,"kira.aichi.jp":true,"kiyosu.aichi.jp":true,"komaki.aichi.jp":true,"konan.aichi.jp":true,"kota.aichi.jp":true,"mihama.aichi.jp":true,"miyoshi.aichi.jp":true,"nishio.aichi.jp":true,"nisshin.aichi.jp":true,"obu.aichi.jp":true,"oguchi.aichi.jp":true,"oharu.aichi.jp":true,"okazaki.aichi.jp":true,"owariasahi.aichi.jp":true,"seto.aichi.jp":true,"shikatsu.aichi.jp":true,"shinshiro.aichi.jp":true,"shitara.aichi.jp":true,"tahara.aichi.jp":true,"takahama.aichi.jp":true,"tobishima.aichi.jp":true,"toei.aichi.jp":true,"togo.aichi.jp":true,"tokai.aichi.jp":true,"tokoname.aichi.jp":true,"toyoake.aichi.jp":true,"toyohashi.aichi.jp":true,"toyokawa.aichi.jp":true,"toyone.aichi.jp":true,"toyota.aichi.jp":true,"tsushima.aichi.jp":true,"yatomi.aichi.jp":true,"akita.akita.jp":true,"daisen.akita.jp":true,"fujisato.akita.jp":true,"gojome.akita.jp":true,"hachirogata.akita.jp":true,"happou.akita.jp":true,"higashinaruse.akita.jp":true,"honjo.akita.jp":true,"honjyo.akita.jp":true,"ikawa.akita.jp":true,"kamikoani.akita.jp":true,"kamioka.akita.jp":true,"katagami.akita.jp":true,"kazuno.akita.jp":true,"kitaakita.akita.jp":true,"kosaka.akita.jp":true,"kyowa.akita.jp":true,"misato.akita.jp":true,"mitane.akita.jp":true,"moriyoshi.akita.jp":true,"nikaho.akita.jp":true,"noshiro.akita.jp":true,"odate.akita.jp":true,"oga.akita.jp":true,"ogata.akita.jp":true,"semboku.akita.jp":true,"yokote.akita.jp":true,"yurihonjo.akita.jp":true,"aomori.aomori.jp":true,"gonohe.aomori.jp":true,"hachinohe.aomori.jp":true,"hashikami.aomori.jp":true,"hiranai.aomori.jp":true,"hirosaki.aomori.jp":true,"itayanagi.aomori.jp":true,"kuroishi.aomori.jp":true,"misawa.aomori.jp":true,"mutsu.aomori.jp":true,"nakadomari.aomori.jp":true,"noheji.aomori.jp":true,"oirase.aomori.jp":true,"owani.aomori.jp":true,"rokunohe.aomori.jp":true,"sannohe.aomori.jp":true,"shichinohe.aomori.jp":true,"shingo.aomori.jp":true,"takko.aomori.jp":true,"towada.aomori.jp":true,"tsugaru.aomori.jp":true,"tsuruta.aomori.jp":true,"abiko.chiba.jp":true,"asahi.chiba.jp":true,"chonan.chiba.jp":true,"chosei.chiba.jp":true,"choshi.chiba.jp":true,"chuo.chiba.jp":true,"funabashi.chiba.jp":true,"futtsu.chiba.jp":true,"hanamigawa.chiba.jp":true,"ichihara.chiba.jp":true,"ichikawa.chiba.jp":true,"ichinomiya.chiba.jp":true,"inzai.chiba.jp":true,"isumi.chiba.jp":true,"kamagaya.chiba.jp":true,"kamogawa.chiba.jp":true,"kashiwa.chiba.jp":true,"katori.chiba.jp":true,"katsuura.chiba.jp":true,"kimitsu.chiba.jp":true,"kisarazu.chiba.jp":true,"kozaki.chiba.jp":true,"kujukuri.chiba.jp":true,"kyonan.chiba.jp":true,"matsudo.chiba.jp":true,"midori.chiba.jp":true,"mihama.chiba.jp":true,"minamiboso.chiba.jp":true,"mobara.chiba.jp":true,"mutsuzawa.chiba.jp":true,"nagara.chiba.jp":true,"nagareyama.chiba.jp":true,"narashino.chiba.jp":true,"narita.chiba.jp":true,"noda.chiba.jp":true,"oamishirasato.chiba.jp":true,"omigawa.chiba.jp":true,"onjuku.chiba.jp":true,"otaki.chiba.jp":true,"sakae.chiba.jp":true,"sakura.chiba.jp":true,"shimofusa.chiba.jp":true,"shirako.chiba.jp":true,"shiroi.chiba.jp":true,"shisui.chiba.jp":true,"sodegaura.chiba.jp":true,"sosa.chiba.jp":true,"tako.chiba.jp":true,"tateyama.chiba.jp":true,"togane.chiba.jp":true,"tohnosho.chiba.jp":true,"tomisato.chiba.jp":true,"urayasu.chiba.jp":true,"yachimata.chiba.jp":true,"yachiyo.chiba.jp":true,"yokaichiba.chiba.jp":true,"yokoshibahikari.chiba.jp":true,"yotsukaido.chiba.jp":true,"ainan.ehime.jp":true,"honai.ehime.jp":true,"ikata.ehime.jp":true,"imabari.ehime.jp":true,"iyo.ehime.jp":true,"kamijima.ehime.jp":true,"kihoku.ehime.jp":true,"kumakogen.ehime.jp":true,"masaki.ehime.jp":true,"matsuno.ehime.jp":true,"matsuyama.ehime.jp":true,"namikata.ehime.jp":true,"niihama.ehime.jp":true,"ozu.ehime.jp":true,"saijo.ehime.jp":true,"seiyo.ehime.jp":true,"shikokuchuo.ehime.jp":true,"tobe.ehime.jp":true,"toon.ehime.jp":true,"uchiko.ehime.jp":true,"uwajima.ehime.jp":true,"yawatahama.ehime.jp":true,"echizen.fukui.jp":true,"eiheiji.fukui.jp":true,"fukui.fukui.jp":true,"ikeda.fukui.jp":true,"katsuyama.fukui.jp":true,"mihama.fukui.jp":true,"minamiechizen.fukui.jp":true,"obama.fukui.jp":true,"ohi.fukui.jp":true,"ono.fukui.jp":true,"sabae.fukui.jp":true,"sakai.fukui.jp":true,"takahama.fukui.jp":true,"tsuruga.fukui.jp":true,"wakasa.fukui.jp":true,"ashiya.fukuoka.jp":true,"buzen.fukuoka.jp":true,"chikugo.fukuoka.jp":true,"chikuho.fukuoka.jp":true,"chikujo.fukuoka.jp":true,"chikushino.fukuoka.jp":true,"chikuzen.fukuoka.jp":true,"chuo.fukuoka.jp":true,"dazaifu.fukuoka.jp":true,"fukuchi.fukuoka.jp":true,"hakata.fukuoka.jp":true,"higashi.fukuoka.jp":true,"hirokawa.fukuoka.jp":true,"hisayama.fukuoka.jp":true,"iizuka.fukuoka.jp":true,"inatsuki.fukuoka.jp":true,"kaho.fukuoka.jp":true,"kasuga.fukuoka.jp":true,"kasuya.fukuoka.jp":true,"kawara.fukuoka.jp":true,"keisen.fukuoka.jp":true,"koga.fukuoka.jp":true,"kurate.fukuoka.jp":true,"kurogi.fukuoka.jp":true,"kurume.fukuoka.jp":true,"minami.fukuoka.jp":true,"miyako.fukuoka.jp":true,"miyama.fukuoka.jp":true,"miyawaka.fukuoka.jp":true,"mizumaki.fukuoka.jp":true,"munakata.fukuoka.jp":true,"nakagawa.fukuoka.jp":true,"nakama.fukuoka.jp":true,"nishi.fukuoka.jp":true,"nogata.fukuoka.jp":true,"ogori.fukuoka.jp":true,"okagaki.fukuoka.jp":true,"okawa.fukuoka.jp":true,"oki.fukuoka.jp":true,"omuta.fukuoka.jp":true,"onga.fukuoka.jp":true,"onojo.fukuoka.jp":true,"oto.fukuoka.jp":true,"saigawa.fukuoka.jp":true,"sasaguri.fukuoka.jp":true,"shingu.fukuoka.jp":true,"shinyoshitomi.fukuoka.jp":true,"shonai.fukuoka.jp":true,"soeda.fukuoka.jp":true,"sue.fukuoka.jp":true,"tachiarai.fukuoka.jp":true,"tagawa.fukuoka.jp":true,"takata.fukuoka.jp":true,"toho.fukuoka.jp":true,"toyotsu.fukuoka.jp":true,"tsuiki.fukuoka.jp":true,"ukiha.fukuoka.jp":true,"umi.fukuoka.jp":true,"usui.fukuoka.jp":true,"yamada.fukuoka.jp":true,"yame.fukuoka.jp":true,"yanagawa.fukuoka.jp":true,"yukuhashi.fukuoka.jp":true,"aizubange.fukushima.jp":true,"aizumisato.fukushima.jp":true,"aizuwakamatsu.fukushima.jp":true,"asakawa.fukushima.jp":true,"bandai.fukushima.jp":true,"date.fukushima.jp":true,"fukushima.fukushima.jp":true,"furudono.fukushima.jp":true,"futaba.fukushima.jp":true,"hanawa.fukushima.jp":true,"higashi.fukushima.jp":true,"hirata.fukushima.jp":true,"hirono.fukushima.jp":true,"iitate.fukushima.jp":true,"inawashiro.fukushima.jp":true,"ishikawa.fukushima.jp":true,"iwaki.fukushima.jp":true,"izumizaki.fukushima.jp":true,"kagamiishi.fukushima.jp":true,"kaneyama.fukushima.jp":true,"kawamata.fukushima.jp":true,"kitakata.fukushima.jp":true,"kitashiobara.fukushima.jp":true,"koori.fukushima.jp":true,"koriyama.fukushima.jp":true,"kunimi.fukushima.jp":true,"miharu.fukushima.jp":true,"mishima.fukushima.jp":true,"namie.fukushima.jp":true,"nango.fukushima.jp":true,"nishiaizu.fukushima.jp":true,"nishigo.fukushima.jp":true,"okuma.fukushima.jp":true,"omotego.fukushima.jp":true,"ono.fukushima.jp":true,"otama.fukushima.jp":true,"samegawa.fukushima.jp":true,"shimogo.fukushima.jp":true,"shirakawa.fukushima.jp":true,"showa.fukushima.jp":true,"soma.fukushima.jp":true,"sukagawa.fukushima.jp":true,"taishin.fukushima.jp":true,"tamakawa.fukushima.jp":true,"tanagura.fukushima.jp":true,"tenei.fukushima.jp":true,"yabuki.fukushima.jp":true,"yamato.fukushima.jp":true,"yamatsuri.fukushima.jp":true,"yanaizu.fukushima.jp":true,"yugawa.fukushima.jp":true,"anpachi.gifu.jp":true,"ena.gifu.jp":true,"gifu.gifu.jp":true,"ginan.gifu.jp":true,"godo.gifu.jp":true,"gujo.gifu.jp":true,"hashima.gifu.jp":true,"hichiso.gifu.jp":true,"hida.gifu.jp":true,"higashishirakawa.gifu.jp":true,"ibigawa.gifu.jp":true,"ikeda.gifu.jp":true,"kakamigahara.gifu.jp":true,"kani.gifu.jp":true,"kasahara.gifu.jp":true,"kasamatsu.gifu.jp":true,"kawaue.gifu.jp":true,"kitagata.gifu.jp":true,"mino.gifu.jp":true,"minokamo.gifu.jp":true,"mitake.gifu.jp":true,"mizunami.gifu.jp":true,"motosu.gifu.jp":true,"nakatsugawa.gifu.jp":true,"ogaki.gifu.jp":true,"sakahogi.gifu.jp":true,"seki.gifu.jp":true,"sekigahara.gifu.jp":true,"shirakawa.gifu.jp":true,"tajimi.gifu.jp":true,"takayama.gifu.jp":true,"tarui.gifu.jp":true,"toki.gifu.jp":true,"tomika.gifu.jp":true,"wanouchi.gifu.jp":true,"yamagata.gifu.jp":true,"yaotsu.gifu.jp":true,"yoro.gifu.jp":true,"annaka.gunma.jp":true,"chiyoda.gunma.jp":true,"fujioka.gunma.jp":true,"higashiagatsuma.gunma.jp":true,"isesaki.gunma.jp":true,"itakura.gunma.jp":true,"kanna.gunma.jp":true,"kanra.gunma.jp":true,"katashina.gunma.jp":true,"kawaba.gunma.jp":true,"kiryu.gunma.jp":true,"kusatsu.gunma.jp":true,"maebashi.gunma.jp":true,"meiwa.gunma.jp":true,"midori.gunma.jp":true,"minakami.gunma.jp":true,"naganohara.gunma.jp":true,"nakanojo.gunma.jp":true,"nanmoku.gunma.jp":true,"numata.gunma.jp":true,"oizumi.gunma.jp":true,"ora.gunma.jp":true,"ota.gunma.jp":true,"shibukawa.gunma.jp":true,"shimonita.gunma.jp":true,"shinto.gunma.jp":true,"showa.gunma.jp":true,"takasaki.gunma.jp":true,"takayama.gunma.jp":true,"tamamura.gunma.jp":true,"tatebayashi.gunma.jp":true,"tomioka.gunma.jp":true,"tsukiyono.gunma.jp":true,"tsumagoi.gunma.jp":true,"ueno.gunma.jp":true,"yoshioka.gunma.jp":true,"asaminami.hiroshima.jp":true,"daiwa.hiroshima.jp":true,"etajima.hiroshima.jp":true,"fuchu.hiroshima.jp":true,"fukuyama.hiroshima.jp":true,"hatsukaichi.hiroshima.jp":true,"higashihiroshima.hiroshima.jp":true,"hongo.hiroshima.jp":true,"jinsekikogen.hiroshima.jp":true,"kaita.hiroshima.jp":true,"kui.hiroshima.jp":true,"kumano.hiroshima.jp":true,"kure.hiroshima.jp":true,"mihara.hiroshima.jp":true,"miyoshi.hiroshima.jp":true,"naka.hiroshima.jp":true,"onomichi.hiroshima.jp":true,"osakikamijima.hiroshima.jp":true,"otake.hiroshima.jp":true,"saka.hiroshima.jp":true,"sera.hiroshima.jp":true,"seranishi.hiroshima.jp":true,"shinichi.hiroshima.jp":true,"shobara.hiroshima.jp":true,"takehara.hiroshima.jp":true,"abashiri.hokkaido.jp":true,"abira.hokkaido.jp":true,"aibetsu.hokkaido.jp":true,"akabira.hokkaido.jp":true,"akkeshi.hokkaido.jp":true,"asahikawa.hokkaido.jp":true,"ashibetsu.hokkaido.jp":true,"ashoro.hokkaido.jp":true,"assabu.hokkaido.jp":true,"atsuma.hokkaido.jp":true,"bibai.hokkaido.jp":true,"biei.hokkaido.jp":true,"bifuka.hokkaido.jp":true,"bihoro.hokkaido.jp":true,"biratori.hokkaido.jp":true,"chippubetsu.hokkaido.jp":true,"chitose.hokkaido.jp":true,"date.hokkaido.jp":true,"ebetsu.hokkaido.jp":true,"embetsu.hokkaido.jp":true,"eniwa.hokkaido.jp":true,"erimo.hokkaido.jp":true,"esan.hokkaido.jp":true,"esashi.hokkaido.jp":true,"fukagawa.hokkaido.jp":true,"fukushima.hokkaido.jp":true,"furano.hokkaido.jp":true,"furubira.hokkaido.jp":true,"haboro.hokkaido.jp":true,"hakodate.hokkaido.jp":true,"hamatonbetsu.hokkaido.jp":true,"hidaka.hokkaido.jp":true,"higashikagura.hokkaido.jp":true,"higashikawa.hokkaido.jp":true,"hiroo.hokkaido.jp":true,"hokuryu.hokkaido.jp":true,"hokuto.hokkaido.jp":true,"honbetsu.hokkaido.jp":true,"horokanai.hokkaido.jp":true,"horonobe.hokkaido.jp":true,"ikeda.hokkaido.jp":true,"imakane.hokkaido.jp":true,"ishikari.hokkaido.jp":true,"iwamizawa.hokkaido.jp":true,"iwanai.hokkaido.jp":true,"kamifurano.hokkaido.jp":true,"kamikawa.hokkaido.jp":true,"kamishihoro.hokkaido.jp":true,"kamisunagawa.hokkaido.jp":true,"kamoenai.hokkaido.jp":true,"kayabe.hokkaido.jp":true,"kembuchi.hokkaido.jp":true,"kikonai.hokkaido.jp":true,"kimobetsu.hokkaido.jp":true,"kitahiroshima.hokkaido.jp":true,"kitami.hokkaido.jp":true,"kiyosato.hokkaido.jp":true,"koshimizu.hokkaido.jp":true,"kunneppu.hokkaido.jp":true,"kuriyama.hokkaido.jp":true,"kuromatsunai.hokkaido.jp":true,"kushiro.hokkaido.jp":true,"kutchan.hokkaido.jp":true,"kyowa.hokkaido.jp":true,"mashike.hokkaido.jp":true,"matsumae.hokkaido.jp":true,"mikasa.hokkaido.jp":true,"minamifurano.hokkaido.jp":true,"mombetsu.hokkaido.jp":true,"moseushi.hokkaido.jp":true,"mukawa.hokkaido.jp":true,"muroran.hokkaido.jp":true,"naie.hokkaido.jp":true,"nakagawa.hokkaido.jp":true,"nakasatsunai.hokkaido.jp":true,"nakatombetsu.hokkaido.jp":true,"nanae.hokkaido.jp":true,"nanporo.hokkaido.jp":true,"nayoro.hokkaido.jp":true,"nemuro.hokkaido.jp":true,"niikappu.hokkaido.jp":true,"niki.hokkaido.jp":true,"nishiokoppe.hokkaido.jp":true,"noboribetsu.hokkaido.jp":true,"numata.hokkaido.jp":true,"obihiro.hokkaido.jp":true,"obira.hokkaido.jp":true,"oketo.hokkaido.jp":true,"okoppe.hokkaido.jp":true,"otaru.hokkaido.jp":true,"otobe.hokkaido.jp":true,"otofuke.hokkaido.jp":true,"otoineppu.hokkaido.jp":true,"oumu.hokkaido.jp":true,"ozora.hokkaido.jp":true,"pippu.hokkaido.jp":true,"rankoshi.hokkaido.jp":true,"rebun.hokkaido.jp":true,"rikubetsu.hokkaido.jp":true,"rishiri.hokkaido.jp":true,"rishirifuji.hokkaido.jp":true,"saroma.hokkaido.jp":true,"sarufutsu.hokkaido.jp":true,"shakotan.hokkaido.jp":true,"shari.hokkaido.jp":true,"shibecha.hokkaido.jp":true,"shibetsu.hokkaido.jp":true,"shikabe.hokkaido.jp":true,"shikaoi.hokkaido.jp":true,"shimamaki.hokkaido.jp":true,"shimizu.hokkaido.jp":true,"shimokawa.hokkaido.jp":true,"shinshinotsu.hokkaido.jp":true,"shintoku.hokkaido.jp":true,"shiranuka.hokkaido.jp":true,"shiraoi.hokkaido.jp":true,"shiriuchi.hokkaido.jp":true,"sobetsu.hokkaido.jp":true,"sunagawa.hokkaido.jp":true,"taiki.hokkaido.jp":true,"takasu.hokkaido.jp":true,"takikawa.hokkaido.jp":true,"takinoue.hokkaido.jp":true,"teshikaga.hokkaido.jp":true,"tobetsu.hokkaido.jp":true,"tohma.hokkaido.jp":true,"tomakomai.hokkaido.jp":true,"tomari.hokkaido.jp":true,"toya.hokkaido.jp":true,"toyako.hokkaido.jp":true,"toyotomi.hokkaido.jp":true,"toyoura.hokkaido.jp":true,"tsubetsu.hokkaido.jp":true,"tsukigata.hokkaido.jp":true,"urakawa.hokkaido.jp":true,"urausu.hokkaido.jp":true,"uryu.hokkaido.jp":true,"utashinai.hokkaido.jp":true,"wakkanai.hokkaido.jp":true,"wassamu.hokkaido.jp":true,"yakumo.hokkaido.jp":true,"yoichi.hokkaido.jp":true,"aioi.hyogo.jp":true,"akashi.hyogo.jp":true,"ako.hyogo.jp":true,"amagasaki.hyogo.jp":true,"aogaki.hyogo.jp":true,"asago.hyogo.jp":true,"ashiya.hyogo.jp":true,"awaji.hyogo.jp":true,"fukusaki.hyogo.jp":true,"goshiki.hyogo.jp":true,"harima.hyogo.jp":true,"himeji.hyogo.jp":true,"ichikawa.hyogo.jp":true,"inagawa.hyogo.jp":true,"itami.hyogo.jp":true,"kakogawa.hyogo.jp":true,"kamigori.hyogo.jp":true,"kamikawa.hyogo.jp":true,"kasai.hyogo.jp":true,"kasuga.hyogo.jp":true,"kawanishi.hyogo.jp":true,"miki.hyogo.jp":true,"minamiawaji.hyogo.jp":true,"nishinomiya.hyogo.jp":true,"nishiwaki.hyogo.jp":true,"ono.hyogo.jp":true,"sanda.hyogo.jp":true,"sannan.hyogo.jp":true,"sasayama.hyogo.jp":true,"sayo.hyogo.jp":true,"shingu.hyogo.jp":true,"shinonsen.hyogo.jp":true,"shiso.hyogo.jp":true,"sumoto.hyogo.jp":true,"taishi.hyogo.jp":true,"taka.hyogo.jp":true,"takarazuka.hyogo.jp":true,"takasago.hyogo.jp":true,"takino.hyogo.jp":true,"tamba.hyogo.jp":true,"tatsuno.hyogo.jp":true,"toyooka.hyogo.jp":true,"yabu.hyogo.jp":true,"yashiro.hyogo.jp":true,"yoka.hyogo.jp":true,"yokawa.hyogo.jp":true,"ami.ibaraki.jp":true,"asahi.ibaraki.jp":true,"bando.ibaraki.jp":true,"chikusei.ibaraki.jp":true,"daigo.ibaraki.jp":true,"fujishiro.ibaraki.jp":true,"hitachi.ibaraki.jp":true,"hitachinaka.ibaraki.jp":true,"hitachiomiya.ibaraki.jp":true,"hitachiota.ibaraki.jp":true,"ibaraki.ibaraki.jp":true,"ina.ibaraki.jp":true,"inashiki.ibaraki.jp":true,"itako.ibaraki.jp":true,"iwama.ibaraki.jp":true,"joso.ibaraki.jp":true,"kamisu.ibaraki.jp":true,"kasama.ibaraki.jp":true,"kashima.ibaraki.jp":true,"kasumigaura.ibaraki.jp":true,"koga.ibaraki.jp":true,"miho.ibaraki.jp":true,"mito.ibaraki.jp":true,"moriya.ibaraki.jp":true,"naka.ibaraki.jp":true,"namegata.ibaraki.jp":true,"oarai.ibaraki.jp":true,"ogawa.ibaraki.jp":true,"omitama.ibaraki.jp":true,"ryugasaki.ibaraki.jp":true,"sakai.ibaraki.jp":true,"sakuragawa.ibaraki.jp":true,"shimodate.ibaraki.jp":true,"shimotsuma.ibaraki.jp":true,"shirosato.ibaraki.jp":true,"sowa.ibaraki.jp":true,"suifu.ibaraki.jp":true,"takahagi.ibaraki.jp":true,"tamatsukuri.ibaraki.jp":true,"tokai.ibaraki.jp":true,"tomobe.ibaraki.jp":true,"tone.ibaraki.jp":true,"toride.ibaraki.jp":true,"tsuchiura.ibaraki.jp":true,"tsukuba.ibaraki.jp":true,"uchihara.ibaraki.jp":true,"ushiku.ibaraki.jp":true,"yachiyo.ibaraki.jp":true,"yamagata.ibaraki.jp":true,"yawara.ibaraki.jp":true,"yuki.ibaraki.jp":true,"anamizu.ishikawa.jp":true,"hakui.ishikawa.jp":true,"hakusan.ishikawa.jp":true,"kaga.ishikawa.jp":true,"kahoku.ishikawa.jp":true,"kanazawa.ishikawa.jp":true,"kawakita.ishikawa.jp":true,"komatsu.ishikawa.jp":true,"nakanoto.ishikawa.jp":true,"nanao.ishikawa.jp":true,"nomi.ishikawa.jp":true,"nonoichi.ishikawa.jp":true,"noto.ishikawa.jp":true,"shika.ishikawa.jp":true,"suzu.ishikawa.jp":true,"tsubata.ishikawa.jp":true,"tsurugi.ishikawa.jp":true,"uchinada.ishikawa.jp":true,"wajima.ishikawa.jp":true,"fudai.iwate.jp":true,"fujisawa.iwate.jp":true,"hanamaki.iwate.jp":true,"hiraizumi.iwate.jp":true,"hirono.iwate.jp":true,"ichinohe.iwate.jp":true,"ichinoseki.iwate.jp":true,"iwaizumi.iwate.jp":true,"iwate.iwate.jp":true,"joboji.iwate.jp":true,"kamaishi.iwate.jp":true,"kanegasaki.iwate.jp":true,"karumai.iwate.jp":true,"kawai.iwate.jp":true,"kitakami.iwate.jp":true,"kuji.iwate.jp":true,"kunohe.iwate.jp":true,"kuzumaki.iwate.jp":true,"miyako.iwate.jp":true,"mizusawa.iwate.jp":true,"morioka.iwate.jp":true,"ninohe.iwate.jp":true,"noda.iwate.jp":true,"ofunato.iwate.jp":true,"oshu.iwate.jp":true,"otsuchi.iwate.jp":true,"rikuzentakata.iwate.jp":true,"shiwa.iwate.jp":true,"shizukuishi.iwate.jp":true,"sumita.iwate.jp":true,"tanohata.iwate.jp":true,"tono.iwate.jp":true,"yahaba.iwate.jp":true,"yamada.iwate.jp":true,"ayagawa.kagawa.jp":true,"higashikagawa.kagawa.jp":true,"kanonji.kagawa.jp":true,"kotohira.kagawa.jp":true,"manno.kagawa.jp":true,"marugame.kagawa.jp":true,"mitoyo.kagawa.jp":true,"naoshima.kagawa.jp":true,"sanuki.kagawa.jp":true,"tadotsu.kagawa.jp":true,"takamatsu.kagawa.jp":true,"tonosho.kagawa.jp":true,"uchinomi.kagawa.jp":true,"utazu.kagawa.jp":true,"zentsuji.kagawa.jp":true,"akune.kagoshima.jp":true,"amami.kagoshima.jp":true,"hioki.kagoshima.jp":true,"isa.kagoshima.jp":true,"isen.kagoshima.jp":true,"izumi.kagoshima.jp":true,"kagoshima.kagoshima.jp":true,"kanoya.kagoshima.jp":true,"kawanabe.kagoshima.jp":true,"kinko.kagoshima.jp":true,"kouyama.kagoshima.jp":true,"makurazaki.kagoshima.jp":true,"matsumoto.kagoshima.jp":true,"minamitane.kagoshima.jp":true,"nakatane.kagoshima.jp":true,"nishinoomote.kagoshima.jp":true,"satsumasendai.kagoshima.jp":true,"soo.kagoshima.jp":true,"tarumizu.kagoshima.jp":true,"yusui.kagoshima.jp":true,"aikawa.kanagawa.jp":true,"atsugi.kanagawa.jp":true,"ayase.kanagawa.jp":true,"chigasaki.kanagawa.jp":true,"ebina.kanagawa.jp":true,"fujisawa.kanagawa.jp":true,"hadano.kanagawa.jp":true,"hakone.kanagawa.jp":true,"hiratsuka.kanagawa.jp":true,"isehara.kanagawa.jp":true,"kaisei.kanagawa.jp":true,"kamakura.kanagawa.jp":true,"kiyokawa.kanagawa.jp":true,"matsuda.kanagawa.jp":true,"minamiashigara.kanagawa.jp":true,"miura.kanagawa.jp":true,"nakai.kanagawa.jp":true,"ninomiya.kanagawa.jp":true,"odawara.kanagawa.jp":true,"oi.kanagawa.jp":true,"oiso.kanagawa.jp":true,"sagamihara.kanagawa.jp":true,"samukawa.kanagawa.jp":true,"tsukui.kanagawa.jp":true,"yamakita.kanagawa.jp":true,"yamato.kanagawa.jp":true,"yokosuka.kanagawa.jp":true,"yugawara.kanagawa.jp":true,"zama.kanagawa.jp":true,"zushi.kanagawa.jp":true,"aki.kochi.jp":true,"geisei.kochi.jp":true,"hidaka.kochi.jp":true,"higashitsuno.kochi.jp":true,"ino.kochi.jp":true,"kagami.kochi.jp":true,"kami.kochi.jp":true,"kitagawa.kochi.jp":true,"kochi.kochi.jp":true,"mihara.kochi.jp":true,"motoyama.kochi.jp":true,"muroto.kochi.jp":true,"nahari.kochi.jp":true,"nakamura.kochi.jp":true,"nankoku.kochi.jp":true,"nishitosa.kochi.jp":true,"niyodogawa.kochi.jp":true,"ochi.kochi.jp":true,"okawa.kochi.jp":true,"otoyo.kochi.jp":true,"otsuki.kochi.jp":true,"sakawa.kochi.jp":true,"sukumo.kochi.jp":true,"susaki.kochi.jp":true,"tosa.kochi.jp":true,"tosashimizu.kochi.jp":true,"toyo.kochi.jp":true,"tsuno.kochi.jp":true,"umaji.kochi.jp":true,"yasuda.kochi.jp":true,"yusuhara.kochi.jp":true,"amakusa.kumamoto.jp":true,"arao.kumamoto.jp":true,"aso.kumamoto.jp":true,"choyo.kumamoto.jp":true,"gyokuto.kumamoto.jp":true,"kamiamakusa.kumamoto.jp":true,"kikuchi.kumamoto.jp":true,"kumamoto.kumamoto.jp":true,"mashiki.kumamoto.jp":true,"mifune.kumamoto.jp":true,"minamata.kumamoto.jp":true,"minamioguni.kumamoto.jp":true,"nagasu.kumamoto.jp":true,"nishihara.kumamoto.jp":true,"oguni.kumamoto.jp":true,"ozu.kumamoto.jp":true,"sumoto.kumamoto.jp":true,"takamori.kumamoto.jp":true,"uki.kumamoto.jp":true,"uto.kumamoto.jp":true,"yamaga.kumamoto.jp":true,"yamato.kumamoto.jp":true,"yatsushiro.kumamoto.jp":true,"ayabe.kyoto.jp":true,"fukuchiyama.kyoto.jp":true,"higashiyama.kyoto.jp":true,"ide.kyoto.jp":true,"ine.kyoto.jp":true,"joyo.kyoto.jp":true,"kameoka.kyoto.jp":true,"kamo.kyoto.jp":true,"kita.kyoto.jp":true,"kizu.kyoto.jp":true,"kumiyama.kyoto.jp":true,"kyotamba.kyoto.jp":true,"kyotanabe.kyoto.jp":true,"kyotango.kyoto.jp":true,"maizuru.kyoto.jp":true,"minami.kyoto.jp":true,"minamiyamashiro.kyoto.jp":true,"miyazu.kyoto.jp":true,"muko.kyoto.jp":true,"nagaokakyo.kyoto.jp":true,"nakagyo.kyoto.jp":true,"nantan.kyoto.jp":true,"oyamazaki.kyoto.jp":true,"sakyo.kyoto.jp":true,"seika.kyoto.jp":true,"tanabe.kyoto.jp":true,"uji.kyoto.jp":true,"ujitawara.kyoto.jp":true,"wazuka.kyoto.jp":true,"yamashina.kyoto.jp":true,"yawata.kyoto.jp":true,"asahi.mie.jp":true,"inabe.mie.jp":true,"ise.mie.jp":true,"kameyama.mie.jp":true,"kawagoe.mie.jp":true,"kiho.mie.jp":true,"kisosaki.mie.jp":true,"kiwa.mie.jp":true,"komono.mie.jp":true,"kumano.mie.jp":true,"kuwana.mie.jp":true,"matsusaka.mie.jp":true,"meiwa.mie.jp":true,"mihama.mie.jp":true,"minamiise.mie.jp":true,"misugi.mie.jp":true,"miyama.mie.jp":true,"nabari.mie.jp":true,"shima.mie.jp":true,"suzuka.mie.jp":true,"tado.mie.jp":true,"taiki.mie.jp":true,"taki.mie.jp":true,"tamaki.mie.jp":true,"toba.mie.jp":true,"tsu.mie.jp":true,"udono.mie.jp":true,"ureshino.mie.jp":true,"watarai.mie.jp":true,"yokkaichi.mie.jp":true,"furukawa.miyagi.jp":true,"higashimatsushima.miyagi.jp":true,"ishinomaki.miyagi.jp":true,"iwanuma.miyagi.jp":true,"kakuda.miyagi.jp":true,"kami.miyagi.jp":true,"kawasaki.miyagi.jp":true,"marumori.miyagi.jp":true,"matsushima.miyagi.jp":true,"minamisanriku.miyagi.jp":true,"misato.miyagi.jp":true,"murata.miyagi.jp":true,"natori.miyagi.jp":true,"ogawara.miyagi.jp":true,"ohira.miyagi.jp":true,"onagawa.miyagi.jp":true,"osaki.miyagi.jp":true,"rifu.miyagi.jp":true,"semine.miyagi.jp":true,"shibata.miyagi.jp":true,"shichikashuku.miyagi.jp":true,"shikama.miyagi.jp":true,"shiogama.miyagi.jp":true,"shiroishi.miyagi.jp":true,"tagajo.miyagi.jp":true,"taiwa.miyagi.jp":true,"tome.miyagi.jp":true,"tomiya.miyagi.jp":true,"wakuya.miyagi.jp":true,"watari.miyagi.jp":true,"yamamoto.miyagi.jp":true,"zao.miyagi.jp":true,"aya.miyazaki.jp":true,"ebino.miyazaki.jp":true,"gokase.miyazaki.jp":true,"hyuga.miyazaki.jp":true,"kadogawa.miyazaki.jp":true,"kawaminami.miyazaki.jp":true,"kijo.miyazaki.jp":true,"kitagawa.miyazaki.jp":true,"kitakata.miyazaki.jp":true,"kitaura.miyazaki.jp":true,"kobayashi.miyazaki.jp":true,"kunitomi.miyazaki.jp":true,"kushima.miyazaki.jp":true,"mimata.miyazaki.jp":true,"miyakonojo.miyazaki.jp":true,"miyazaki.miyazaki.jp":true,"morotsuka.miyazaki.jp":true,"nichinan.miyazaki.jp":true,"nishimera.miyazaki.jp":true,"nobeoka.miyazaki.jp":true,"saito.miyazaki.jp":true,"shiiba.miyazaki.jp":true,"shintomi.miyazaki.jp":true,"takaharu.miyazaki.jp":true,"takanabe.miyazaki.jp":true,"takazaki.miyazaki.jp":true,"tsuno.miyazaki.jp":true,"achi.nagano.jp":true,"agematsu.nagano.jp":true,"anan.nagano.jp":true,"aoki.nagano.jp":true,"asahi.nagano.jp":true,"azumino.nagano.jp":true,"chikuhoku.nagano.jp":true,"chikuma.nagano.jp":true,"chino.nagano.jp":true,"fujimi.nagano.jp":true,"hakuba.nagano.jp":true,"hara.nagano.jp":true,"hiraya.nagano.jp":true,"iida.nagano.jp":true,"iijima.nagano.jp":true,"iiyama.nagano.jp":true,"iizuna.nagano.jp":true,"ikeda.nagano.jp":true,"ikusaka.nagano.jp":true,"ina.nagano.jp":true,"karuizawa.nagano.jp":true,"kawakami.nagano.jp":true,"kiso.nagano.jp":true,"kisofukushima.nagano.jp":true,"kitaaiki.nagano.jp":true,"komagane.nagano.jp":true,"komoro.nagano.jp":true,"matsukawa.nagano.jp":true,"matsumoto.nagano.jp":true,"miasa.nagano.jp":true,"minamiaiki.nagano.jp":true,"minamimaki.nagano.jp":true,"minamiminowa.nagano.jp":true,"minowa.nagano.jp":true,"miyada.nagano.jp":true,"miyota.nagano.jp":true,"mochizuki.nagano.jp":true,"nagano.nagano.jp":true,"nagawa.nagano.jp":true,"nagiso.nagano.jp":true,"nakagawa.nagano.jp":true,"nakano.nagano.jp":true,"nozawaonsen.nagano.jp":true,"obuse.nagano.jp":true,"ogawa.nagano.jp":true,"okaya.nagano.jp":true,"omachi.nagano.jp":true,"omi.nagano.jp":true,"ookuwa.nagano.jp":true,"ooshika.nagano.jp":true,"otaki.nagano.jp":true,"otari.nagano.jp":true,"sakae.nagano.jp":true,"sakaki.nagano.jp":true,"saku.nagano.jp":true,"sakuho.nagano.jp":true,"shimosuwa.nagano.jp":true,"shinanomachi.nagano.jp":true,"shiojiri.nagano.jp":true,"suwa.nagano.jp":true,"suzaka.nagano.jp":true,"takagi.nagano.jp":true,"takamori.nagano.jp":true,"takayama.nagano.jp":true,"tateshina.nagano.jp":true,"tatsuno.nagano.jp":true,"togakushi.nagano.jp":true,"togura.nagano.jp":true,"tomi.nagano.jp":true,"ueda.nagano.jp":true,"wada.nagano.jp":true,"yamagata.nagano.jp":true,"yamanouchi.nagano.jp":true,"yasaka.nagano.jp":true,"yasuoka.nagano.jp":true,"chijiwa.nagasaki.jp":true,"futsu.nagasaki.jp":true,"goto.nagasaki.jp":true,"hasami.nagasaki.jp":true,"hirado.nagasaki.jp":true,"iki.nagasaki.jp":true,"isahaya.nagasaki.jp":true,"kawatana.nagasaki.jp":true,"kuchinotsu.nagasaki.jp":true,"matsuura.nagasaki.jp":true,"nagasaki.nagasaki.jp":true,"obama.nagasaki.jp":true,"omura.nagasaki.jp":true,"oseto.nagasaki.jp":true,"saikai.nagasaki.jp":true,"sasebo.nagasaki.jp":true,"seihi.nagasaki.jp":true,"shimabara.nagasaki.jp":true,"shinkamigoto.nagasaki.jp":true,"togitsu.nagasaki.jp":true,"tsushima.nagasaki.jp":true,"unzen.nagasaki.jp":true,"ando.nara.jp":true,"gose.nara.jp":true,"heguri.nara.jp":true,"higashiyoshino.nara.jp":true,"ikaruga.nara.jp":true,"ikoma.nara.jp":true,"kamikitayama.nara.jp":true,"kanmaki.nara.jp":true,"kashiba.nara.jp":true,"kashihara.nara.jp":true,"katsuragi.nara.jp":true,"kawai.nara.jp":true,"kawakami.nara.jp":true,"kawanishi.nara.jp":true,"koryo.nara.jp":true,"kurotaki.nara.jp":true,"mitsue.nara.jp":true,"miyake.nara.jp":true,"nara.nara.jp":true,"nosegawa.nara.jp":true,"oji.nara.jp":true,"ouda.nara.jp":true,"oyodo.nara.jp":true,"sakurai.nara.jp":true,"sango.nara.jp":true,"shimoichi.nara.jp":true,"shimokitayama.nara.jp":true,"shinjo.nara.jp":true,"soni.nara.jp":true,"takatori.nara.jp":true,"tawaramoto.nara.jp":true,"tenkawa.nara.jp":true,"tenri.nara.jp":true,"uda.nara.jp":true,"yamatokoriyama.nara.jp":true,"yamatotakada.nara.jp":true,"yamazoe.nara.jp":true,"yoshino.nara.jp":true,"aga.niigata.jp":true,"agano.niigata.jp":true,"gosen.niigata.jp":true,"itoigawa.niigata.jp":true,"izumozaki.niigata.jp":true,"joetsu.niigata.jp":true,"kamo.niigata.jp":true,"kariwa.niigata.jp":true,"kashiwazaki.niigata.jp":true,"minamiuonuma.niigata.jp":true,"mitsuke.niigata.jp":true,"muika.niigata.jp":true,"murakami.niigata.jp":true,"myoko.niigata.jp":true,"nagaoka.niigata.jp":true,"niigata.niigata.jp":true,"ojiya.niigata.jp":true,"omi.niigata.jp":true,"sado.niigata.jp":true,"sanjo.niigata.jp":true,"seiro.niigata.jp":true,"seirou.niigata.jp":true,"sekikawa.niigata.jp":true,"shibata.niigata.jp":true,"tagami.niigata.jp":true,"tainai.niigata.jp":true,"tochio.niigata.jp":true,"tokamachi.niigata.jp":true,"tsubame.niigata.jp":true,"tsunan.niigata.jp":true,"uonuma.niigata.jp":true,"yahiko.niigata.jp":true,"yoita.niigata.jp":true,"yuzawa.niigata.jp":true,"beppu.oita.jp":true,"bungoono.oita.jp":true,"bungotakada.oita.jp":true,"hasama.oita.jp":true,"hiji.oita.jp":true,"himeshima.oita.jp":true,"hita.oita.jp":true,"kamitsue.oita.jp":true,"kokonoe.oita.jp":true,"kuju.oita.jp":true,"kunisaki.oita.jp":true,"kusu.oita.jp":true,"oita.oita.jp":true,"saiki.oita.jp":true,"taketa.oita.jp":true,"tsukumi.oita.jp":true,"usa.oita.jp":true,"usuki.oita.jp":true,"yufu.oita.jp":true,"akaiwa.okayama.jp":true,"asakuchi.okayama.jp":true,"bizen.okayama.jp":true,"hayashima.okayama.jp":true,"ibara.okayama.jp":true,"kagamino.okayama.jp":true,"kasaoka.okayama.jp":true,"kibichuo.okayama.jp":true,"kumenan.okayama.jp":true,"kurashiki.okayama.jp":true,"maniwa.okayama.jp":true,"misaki.okayama.jp":true,"nagi.okayama.jp":true,"niimi.okayama.jp":true,"nishiawakura.okayama.jp":true,"okayama.okayama.jp":true,"satosho.okayama.jp":true,"setouchi.okayama.jp":true,"shinjo.okayama.jp":true,"shoo.okayama.jp":true,"soja.okayama.jp":true,"takahashi.okayama.jp":true,"tamano.okayama.jp":true,"tsuyama.okayama.jp":true,"wake.okayama.jp":true,"yakage.okayama.jp":true,"aguni.okinawa.jp":true,"ginowan.okinawa.jp":true,"ginoza.okinawa.jp":true,"gushikami.okinawa.jp":true,"haebaru.okinawa.jp":true,"higashi.okinawa.jp":true,"hirara.okinawa.jp":true,"iheya.okinawa.jp":true,"ishigaki.okinawa.jp":true,"ishikawa.okinawa.jp":true,"itoman.okinawa.jp":true,"izena.okinawa.jp":true,"kadena.okinawa.jp":true,"kin.okinawa.jp":true,"kitadaito.okinawa.jp":true,"kitanakagusuku.okinawa.jp":true,"kumejima.okinawa.jp":true,"kunigami.okinawa.jp":true,"minamidaito.okinawa.jp":true,"motobu.okinawa.jp":true,"nago.okinawa.jp":true,"naha.okinawa.jp":true,"nakagusuku.okinawa.jp":true,"nakijin.okinawa.jp":true,"nanjo.okinawa.jp":true,"nishihara.okinawa.jp":true,"ogimi.okinawa.jp":true,"okinawa.okinawa.jp":true,"onna.okinawa.jp":true,"shimoji.okinawa.jp":true,"taketomi.okinawa.jp":true,"tarama.okinawa.jp":true,"tokashiki.okinawa.jp":true,"tomigusuku.okinawa.jp":true,"tonaki.okinawa.jp":true,"urasoe.okinawa.jp":true,"uruma.okinawa.jp":true,"yaese.okinawa.jp":true,"yomitan.okinawa.jp":true,"yonabaru.okinawa.jp":true,"yonaguni.okinawa.jp":true,"zamami.okinawa.jp":true,"abeno.osaka.jp":true,"chihayaakasaka.osaka.jp":true,"chuo.osaka.jp":true,"daito.osaka.jp":true,"fujiidera.osaka.jp":true,"habikino.osaka.jp":true,"hannan.osaka.jp":true,"higashiosaka.osaka.jp":true,"higashisumiyoshi.osaka.jp":true,"higashiyodogawa.osaka.jp":true,"hirakata.osaka.jp":true,"ibaraki.osaka.jp":true,"ikeda.osaka.jp":true,"izumi.osaka.jp":true,"izumiotsu.osaka.jp":true,"izumisano.osaka.jp":true,"kadoma.osaka.jp":true,"kaizuka.osaka.jp":true,"kanan.osaka.jp":true,"kashiwara.osaka.jp":true,"katano.osaka.jp":true,"kawachinagano.osaka.jp":true,"kishiwada.osaka.jp":true,"kita.osaka.jp":true,"kumatori.osaka.jp":true,"matsubara.osaka.jp":true,"minato.osaka.jp":true,"minoh.osaka.jp":true,"misaki.osaka.jp":true,"moriguchi.osaka.jp":true,"neyagawa.osaka.jp":true,"nishi.osaka.jp":true,"nose.osaka.jp":true,"osakasayama.osaka.jp":true,"sakai.osaka.jp":true,"sayama.osaka.jp":true,"sennan.osaka.jp":true,"settsu.osaka.jp":true,"shijonawate.osaka.jp":true,"shimamoto.osaka.jp":true,"suita.osaka.jp":true,"tadaoka.osaka.jp":true,"taishi.osaka.jp":true,"tajiri.osaka.jp":true,"takaishi.osaka.jp":true,"takatsuki.osaka.jp":true,"tondabayashi.osaka.jp":true,"toyonaka.osaka.jp":true,"toyono.osaka.jp":true,"yao.osaka.jp":true,"ariake.saga.jp":true,"arita.saga.jp":true,"fukudomi.saga.jp":true,"genkai.saga.jp":true,"hamatama.saga.jp":true,"hizen.saga.jp":true,"imari.saga.jp":true,"kamimine.saga.jp":true,"kanzaki.saga.jp":true,"karatsu.saga.jp":true,"kashima.saga.jp":true,"kitagata.saga.jp":true,"kitahata.saga.jp":true,"kiyama.saga.jp":true,"kouhoku.saga.jp":true,"kyuragi.saga.jp":true,"nishiarita.saga.jp":true,"ogi.saga.jp":true,"omachi.saga.jp":true,"ouchi.saga.jp":true,"saga.saga.jp":true,"shiroishi.saga.jp":true,"taku.saga.jp":true,"tara.saga.jp":true,"tosu.saga.jp":true,"yoshinogari.saga.jp":true,"arakawa.saitama.jp":true,"asaka.saitama.jp":true,"chichibu.saitama.jp":true,"fujimi.saitama.jp":true,"fujimino.saitama.jp":true,"fukaya.saitama.jp":true,"hanno.saitama.jp":true,"hanyu.saitama.jp":true,"hasuda.saitama.jp":true,"hatogaya.saitama.jp":true,"hatoyama.saitama.jp":true,"hidaka.saitama.jp":true,"higashichichibu.saitama.jp":true,"higashimatsuyama.saitama.jp":true,"honjo.saitama.jp":true,"ina.saitama.jp":true,"iruma.saitama.jp":true,"iwatsuki.saitama.jp":true,"kamiizumi.saitama.jp":true,"kamikawa.saitama.jp":true,"kamisato.saitama.jp":true,"kasukabe.saitama.jp":true,"kawagoe.saitama.jp":true,"kawaguchi.saitama.jp":true,"kawajima.saitama.jp":true,"kazo.saitama.jp":true,"kitamoto.saitama.jp":true,"koshigaya.saitama.jp":true,"kounosu.saitama.jp":true,"kuki.saitama.jp":true,"kumagaya.saitama.jp":true,"matsubushi.saitama.jp":true,"minano.saitama.jp":true,"misato.saitama.jp":true,"miyashiro.saitama.jp":true,"miyoshi.saitama.jp":true,"moroyama.saitama.jp":true,"nagatoro.saitama.jp":true,"namegawa.saitama.jp":true,"niiza.saitama.jp":true,"ogano.saitama.jp":true,"ogawa.saitama.jp":true,"ogose.saitama.jp":true,"okegawa.saitama.jp":true,"omiya.saitama.jp":true,"otaki.saitama.jp":true,"ranzan.saitama.jp":true,"ryokami.saitama.jp":true,"saitama.saitama.jp":true,"sakado.saitama.jp":true,"satte.saitama.jp":true,"sayama.saitama.jp":true,"shiki.saitama.jp":true,"shiraoka.saitama.jp":true,"soka.saitama.jp":true,"sugito.saitama.jp":true,"toda.saitama.jp":true,"tokigawa.saitama.jp":true,"tokorozawa.saitama.jp":true,"tsurugashima.saitama.jp":true,"urawa.saitama.jp":true,"warabi.saitama.jp":true,"yashio.saitama.jp":true,"yokoze.saitama.jp":true,"yono.saitama.jp":true,"yorii.saitama.jp":true,"yoshida.saitama.jp":true,"yoshikawa.saitama.jp":true,"yoshimi.saitama.jp":true,"aisho.shiga.jp":true,"gamo.shiga.jp":true,"higashiomi.shiga.jp":true,"hikone.shiga.jp":true,"koka.shiga.jp":true,"konan.shiga.jp":true,"kosei.shiga.jp":true,"koto.shiga.jp":true,"kusatsu.shiga.jp":true,"maibara.shiga.jp":true,"moriyama.shiga.jp":true,"nagahama.shiga.jp":true,"nishiazai.shiga.jp":true,"notogawa.shiga.jp":true,"omihachiman.shiga.jp":true,"otsu.shiga.jp":true,"ritto.shiga.jp":true,"ryuoh.shiga.jp":true,"takashima.shiga.jp":true,"takatsuki.shiga.jp":true,"torahime.shiga.jp":true,"toyosato.shiga.jp":true,"yasu.shiga.jp":true,"akagi.shimane.jp":true,"ama.shimane.jp":true,"gotsu.shimane.jp":true,"hamada.shimane.jp":true,"higashiizumo.shimane.jp":true,"hikawa.shimane.jp":true,"hikimi.shimane.jp":true,"izumo.shimane.jp":true,"kakinoki.shimane.jp":true,"masuda.shimane.jp":true,"matsue.shimane.jp":true,"misato.shimane.jp":true,"nishinoshima.shimane.jp":true,"ohda.shimane.jp":true,"okinoshima.shimane.jp":true,"okuizumo.shimane.jp":true,"shimane.shimane.jp":true,"tamayu.shimane.jp":true,"tsuwano.shimane.jp":true,"unnan.shimane.jp":true,"yakumo.shimane.jp":true,"yasugi.shimane.jp":true,"yatsuka.shimane.jp":true,"arai.shizuoka.jp":true,"atami.shizuoka.jp":true,"fuji.shizuoka.jp":true,"fujieda.shizuoka.jp":true,"fujikawa.shizuoka.jp":true,"fujinomiya.shizuoka.jp":true,"fukuroi.shizuoka.jp":true,"gotemba.shizuoka.jp":true,"haibara.shizuoka.jp":true,"hamamatsu.shizuoka.jp":true,"higashiizu.shizuoka.jp":true,"ito.shizuoka.jp":true,"iwata.shizuoka.jp":true,"izu.shizuoka.jp":true,"izunokuni.shizuoka.jp":true,"kakegawa.shizuoka.jp":true,"kannami.shizuoka.jp":true,"kawanehon.shizuoka.jp":true,"kawazu.shizuoka.jp":true,"kikugawa.shizuoka.jp":true,"kosai.shizuoka.jp":true,"makinohara.shizuoka.jp":true,"matsuzaki.shizuoka.jp":true,"minamiizu.shizuoka.jp":true,"mishima.shizuoka.jp":true,"morimachi.shizuoka.jp":true,"nishiizu.shizuoka.jp":true,"numazu.shizuoka.jp":true,"omaezaki.shizuoka.jp":true,"shimada.shizuoka.jp":true,"shimizu.shizuoka.jp":true,"shimoda.shizuoka.jp":true,"shizuoka.shizuoka.jp":true,"susono.shizuoka.jp":true,"yaizu.shizuoka.jp":true,"yoshida.shizuoka.jp":true,"ashikaga.tochigi.jp":true,"bato.tochigi.jp":true,"haga.tochigi.jp":true,"ichikai.tochigi.jp":true,"iwafune.tochigi.jp":true,"kaminokawa.tochigi.jp":true,"kanuma.tochigi.jp":true,"karasuyama.tochigi.jp":true,"kuroiso.tochigi.jp":true,"mashiko.tochigi.jp":true,"mibu.tochigi.jp":true,"moka.tochigi.jp":true,"motegi.tochigi.jp":true,"nasu.tochigi.jp":true,"nasushiobara.tochigi.jp":true,"nikko.tochigi.jp":true,"nishikata.tochigi.jp":true,"nogi.tochigi.jp":true,"ohira.tochigi.jp":true,"ohtawara.tochigi.jp":true,"oyama.tochigi.jp":true,"sakura.tochigi.jp":true,"sano.tochigi.jp":true,"shimotsuke.tochigi.jp":true,"shioya.tochigi.jp":true,"takanezawa.tochigi.jp":true,"tochigi.tochigi.jp":true,"tsuga.tochigi.jp":true,"ujiie.tochigi.jp":true,"utsunomiya.tochigi.jp":true,"yaita.tochigi.jp":true,"aizumi.tokushima.jp":true,"anan.tokushima.jp":true,"ichiba.tokushima.jp":true,"itano.tokushima.jp":true,"kainan.tokushima.jp":true,"komatsushima.tokushima.jp":true,"matsushige.tokushima.jp":true,"mima.tokushima.jp":true,"minami.tokushima.jp":true,"miyoshi.tokushima.jp":true,"mugi.tokushima.jp":true,"nakagawa.tokushima.jp":true,"naruto.tokushima.jp":true,"sanagochi.tokushima.jp":true,"shishikui.tokushima.jp":true,"tokushima.tokushima.jp":true,"wajiki.tokushima.jp":true,"adachi.tokyo.jp":true,"akiruno.tokyo.jp":true,"akishima.tokyo.jp":true,"aogashima.tokyo.jp":true,"arakawa.tokyo.jp":true,"bunkyo.tokyo.jp":true,"chiyoda.tokyo.jp":true,"chofu.tokyo.jp":true,"chuo.tokyo.jp":true,"edogawa.tokyo.jp":true,"fuchu.tokyo.jp":true,"fussa.tokyo.jp":true,"hachijo.tokyo.jp":true,"hachioji.tokyo.jp":true,"hamura.tokyo.jp":true,"higashikurume.tokyo.jp":true,"higashimurayama.tokyo.jp":true,"higashiyamato.tokyo.jp":true,"hino.tokyo.jp":true,"hinode.tokyo.jp":true,"hinohara.tokyo.jp":true,"inagi.tokyo.jp":true,"itabashi.tokyo.jp":true,"katsushika.tokyo.jp":true,"kita.tokyo.jp":true,"kiyose.tokyo.jp":true,"kodaira.tokyo.jp":true,"koganei.tokyo.jp":true,"kokubunji.tokyo.jp":true,"komae.tokyo.jp":true,"koto.tokyo.jp":true,"kouzushima.tokyo.jp":true,"kunitachi.tokyo.jp":true,"machida.tokyo.jp":true,"meguro.tokyo.jp":true,"minato.tokyo.jp":true,"mitaka.tokyo.jp":true,"mizuho.tokyo.jp":true,"musashimurayama.tokyo.jp":true,"musashino.tokyo.jp":true,"nakano.tokyo.jp":true,"nerima.tokyo.jp":true,"ogasawara.tokyo.jp":true,"okutama.tokyo.jp":true,"ome.tokyo.jp":true,"oshima.tokyo.jp":true,"ota.tokyo.jp":true,"setagaya.tokyo.jp":true,"shibuya.tokyo.jp":true,"shinagawa.tokyo.jp":true,"shinjuku.tokyo.jp":true,"suginami.tokyo.jp":true,"sumida.tokyo.jp":true,"tachikawa.tokyo.jp":true,"taito.tokyo.jp":true,"tama.tokyo.jp":true,"toshima.tokyo.jp":true,"chizu.tottori.jp":true,"hino.tottori.jp":true,"kawahara.tottori.jp":true,"koge.tottori.jp":true,"kotoura.tottori.jp":true,"misasa.tottori.jp":true,"nanbu.tottori.jp":true,"nichinan.tottori.jp":true,"sakaiminato.tottori.jp":true,"tottori.tottori.jp":true,"wakasa.tottori.jp":true,"yazu.tottori.jp":true,"yonago.tottori.jp":true,"asahi.toyama.jp":true,"fuchu.toyama.jp":true,"fukumitsu.toyama.jp":true,"funahashi.toyama.jp":true,"himi.toyama.jp":true,"imizu.toyama.jp":true,"inami.toyama.jp":true,"johana.toyama.jp":true,"kamiichi.toyama.jp":true,"kurobe.toyama.jp":true,"nakaniikawa.toyama.jp":true,"namerikawa.toyama.jp":true,"nanto.toyama.jp":true,"nyuzen.toyama.jp":true,"oyabe.toyama.jp":true,"taira.toyama.jp":true,"takaoka.toyama.jp":true,"tateyama.toyama.jp":true,"toga.toyama.jp":true,"tonami.toyama.jp":true,"toyama.toyama.jp":true,"unazuki.toyama.jp":true,"uozu.toyama.jp":true,"yamada.toyama.jp":true,"arida.wakayama.jp":true,"aridagawa.wakayama.jp":true,"gobo.wakayama.jp":true,"hashimoto.wakayama.jp":true,"hidaka.wakayama.jp":true,"hirogawa.wakayama.jp":true,"inami.wakayama.jp":true,"iwade.wakayama.jp":true,"kainan.wakayama.jp":true,"kamitonda.wakayama.jp":true,"katsuragi.wakayama.jp":true,"kimino.wakayama.jp":true,"kinokawa.wakayama.jp":true,"kitayama.wakayama.jp":true,"koya.wakayama.jp":true,"koza.wakayama.jp":true,"kozagawa.wakayama.jp":true,"kudoyama.wakayama.jp":true,"kushimoto.wakayama.jp":true,"mihama.wakayama.jp":true,"misato.wakayama.jp":true,"nachikatsuura.wakayama.jp":true,"shingu.wakayama.jp":true,"shirahama.wakayama.jp":true,"taiji.wakayama.jp":true,"tanabe.wakayama.jp":true,"wakayama.wakayama.jp":true,"yuasa.wakayama.jp":true,"yura.wakayama.jp":true,"asahi.yamagata.jp":true,"funagata.yamagata.jp":true,"higashine.yamagata.jp":true,"iide.yamagata.jp":true,"kahoku.yamagata.jp":true,"kaminoyama.yamagata.jp":true,"kaneyama.yamagata.jp":true,"kawanishi.yamagata.jp":true,"mamurogawa.yamagata.jp":true,"mikawa.yamagata.jp":true,"murayama.yamagata.jp":true,"nagai.yamagata.jp":true,"nakayama.yamagata.jp":true,"nanyo.yamagata.jp":true,"nishikawa.yamagata.jp":true,"obanazawa.yamagata.jp":true,"oe.yamagata.jp":true,"oguni.yamagata.jp":true,"ohkura.yamagata.jp":true,"oishida.yamagata.jp":true,"sagae.yamagata.jp":true,"sakata.yamagata.jp":true,"sakegawa.yamagata.jp":true,"shinjo.yamagata.jp":true,"shirataka.yamagata.jp":true,"shonai.yamagata.jp":true,"takahata.yamagata.jp":true,"tendo.yamagata.jp":true,"tozawa.yamagata.jp":true,"tsuruoka.yamagata.jp":true,"yamagata.yamagata.jp":true,"yamanobe.yamagata.jp":true,"yonezawa.yamagata.jp":true,"yuza.yamagata.jp":true,"abu.yamaguchi.jp":true,"hagi.yamaguchi.jp":true,"hikari.yamaguchi.jp":true,"hofu.yamaguchi.jp":true,"iwakuni.yamaguchi.jp":true,"kudamatsu.yamaguchi.jp":true,"mitou.yamaguchi.jp":true,"nagato.yamaguchi.jp":true,"oshima.yamaguchi.jp":true,"shimonoseki.yamaguchi.jp":true,"shunan.yamaguchi.jp":true,"tabuse.yamaguchi.jp":true,"tokuyama.yamaguchi.jp":true,"toyota.yamaguchi.jp":true,"ube.yamaguchi.jp":true,"yuu.yamaguchi.jp":true,"chuo.yamanashi.jp":true,"doshi.yamanashi.jp":true,"fuefuki.yamanashi.jp":true,"fujikawa.yamanashi.jp":true,"fujikawaguchiko.yamanashi.jp":true,"fujiyoshida.yamanashi.jp":true,"hayakawa.yamanashi.jp":true,"hokuto.yamanashi.jp":true,"ichikawamisato.yamanashi.jp":true,"kai.yamanashi.jp":true,"kofu.yamanashi.jp":true,"koshu.yamanashi.jp":true,"kosuge.yamanashi.jp":true,"minami-alps.yamanashi.jp":true,"minobu.yamanashi.jp":true,"nakamichi.yamanashi.jp":true,"nanbu.yamanashi.jp":true,"narusawa.yamanashi.jp":true,"nirasaki.yamanashi.jp":true,"nishikatsura.yamanashi.jp":true,"oshino.yamanashi.jp":true,"otsuki.yamanashi.jp":true,"showa.yamanashi.jp":true,"tabayama.yamanashi.jp":true,"tsuru.yamanashi.jp":true,"uenohara.yamanashi.jp":true,"yamanakako.yamanashi.jp":true,"yamanashi.yamanashi.jp":true,"ke":true,"ac.ke":true,"co.ke":true,"go.ke":true,"info.ke":true,"me.ke":true,"mobi.ke":true,"ne.ke":true,"or.ke":true,"sc.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"kp":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"lb":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"ac.lk":true,"lr":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"co.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"com.ms":true,"edu.ms":true,"gov.ms":true,"net.ms":true,"org.ms":true,"mt":true,"com.mt":true,"edu.mt":true,"net.mt":true,"org.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"mz":true,"ac.mz":true,"adv.mz":true,"co.mz":true,"edu.mz":true,"gov.mz":true,"mil.mz":true,"net.mz":true,"org.mz":true,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"nom.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ng":true,"com.ng":true,"edu.ng":true,"gov.ng":true,"i.ng":true,"mil.ng":true,"mobi.ng":true,"name.ng":true,"net.ng":true,"org.ng":true,"sch.ng":true,"ni":true,"ac.ni":true,"biz.ni":true,"co.ni":true,"com.ni":true,"edu.ni":true,"gob.ni":true,"in.ni":true,"info.ni":true,"int.ni":true,"mil.ni":true,"net.ni":true,"nom.ni":true,"org.ni":true,"web.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"nz":true,"ac.nz":true,"co.nz":true,"cri.nz":true,"geek.nz":true,"gen.nz":true,"govt.nz":true,"health.nz":true,"iwi.nz":true,"kiwi.nz":true,"maori.nz":true,"mil.nz":true,"xn--mori-qsa.nz":true,"net.nz":true,"org.nz":true,"parliament.nz":true,"school.nz":true,"om":true,"co.om":true,"com.om":true,"edu.om":true,"gov.om":true,"med.om":true,"museum.om":true,"net.om":true,"org.om":true,"pro.om":true,"onion":true,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"com.pl":true,"net.pl":true,"org.pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"gov.pl":true,"ap.gov.pl":true,"ic.gov.pl":true,"is.gov.pl":true,"us.gov.pl":true,"kmpsp.gov.pl":true,"kppsp.gov.pl":true,"kwpsp.gov.pl":true,"psp.gov.pl":true,"wskr.gov.pl":true,"kwp.gov.pl":true,"mw.gov.pl":true,"ug.gov.pl":true,"um.gov.pl":true,"umig.gov.pl":true,"ugim.gov.pl":true,"upow.gov.pl":true,"uw.gov.pl":true,"starostwo.gov.pl":true,"pa.gov.pl":true,"po.gov.pl":true,"psse.gov.pl":true,"pup.gov.pl":true,"rzgw.gov.pl":true,"sa.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"wsa.gov.pl":true,"sko.gov.pl":true,"uzs.gov.pl":true,"wiih.gov.pl":true,"winb.gov.pl":true,"pinb.gov.pl":true,"wios.gov.pl":true,"witd.gov.pl":true,"wzmiuw.gov.pl":true,"piw.gov.pl":true,"wiw.gov.pl":true,"griw.gov.pl":true,"wif.gov.pl":true,"oum.gov.pl":true,"sdn.gov.pl":true,"zp.gov.pl":true,"uppo.gov.pl":true,"mup.gov.pl":true,"wuoz.gov.pl":true,"konsulat.gov.pl":true,"oirm.gov.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"post":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aaa.pro":true,"aca.pro":true,"acct.pro":true,"avocat.pro":true,"bar.pro":true,"cpa.pro":true,"eng.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"recht.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"py":true,"com.py":true,"coop.py":true,"edu.py":true,"gov.py":true,"mil.py":true,"net.py":true,"org.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"asso.re":true,"com.re":true,"nom.re":true,"ro":true,"arts.ro":true,"com.ro":true,"firm.ro":true,"info.ro":true,"nom.ro":true,"nt.ro":true,"org.ro":true,"rec.ro":true,"store.ro":true,"tm.ro":true,"www.ro":true,"rs":true,"ac.rs":true,"co.rs":true,"edu.rs":true,"gov.rs":true,"in.rs":true,"org.rs":true,"ru":true,"ac.ru":true,"edu.ru":true,"gov.ru":true,"int.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"tv.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"com.sh":true,"net.sh":true,"gov.sh":true,"org.sh":true,"mil.sh":true,"si":true,"sj":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"sv":true,"com.sv":true,"edu.sv":true,"gob.sv":true,"org.sv":true,"red.sv":true,"sx":true,"gov.sx":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"com.tm":true,"co.tm":true,"org.tm":true,"net.tm":true,"nom.tm":true,"gov.tm":true,"mil.tm":true,"edu.tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"tr":true,"com.tr":true,"info.tr":true,"biz.tr":true,"net.tr":true,"org.tr":true,"web.tr":true,"gen.tr":true,"tv.tr":true,"av.tr":true,"dr.tr":true,"bbs.tr":true,"name.tr":true,"tel.tr":true,"gov.tr":true,"bel.tr":true,"pol.tr":true,"mil.tr":true,"k12.tr":true,"edu.tr":true,"kep.tr":true,"nc.tr":true,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"tz":true,"ac.tz":true,"co.tz":true,"go.tz":true,"hotel.tz":true,"info.tz":true,"me.tz":true,"mil.tz":true,"mobi.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"tv.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"cherkasy.ua":true,"chernigov.ua":true,"chernihiv.ua":true,"chernivtsi.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"cr.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"dnipropetrovsk.ua":true,"dominic.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkiv.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"khmelnytskyi.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"krym.ua":true,"ks.ua":true,"kv.ua":true,"kyiv.ua":true,"lg.ua":true,"lt.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lv.ua":true,"lviv.ua":true,"mk.ua":true,"mykolaiv.ua":true,"nikolaev.ua":true,"od.ua":true,"odesa.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rivne.ua":true,"rovno.ua":true,"rv.ua":true,"sb.ua":true,"sebastopol.ua":true,"sevastopol.ua":true,"sm.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uz.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vinnytsia.ua":true,"vn.ua":true,"volyn.ua":true,"yalta.ua":true,"zaporizhzhe.ua":true,"zaporizhzhia.ua":true,"zhitomir.ua":true,"zhytomyr.ua":true,"zp.ua":true,"zt.ua":true,"ug":true,"co.ug":true,"or.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"com.ug":true,"org.ug":true,"uk":true,"ac.uk":true,"co.uk":true,"gov.uk":true,"ltd.uk":true,"me.uk":true,"net.uk":true,"nhs.uk":true,"org.uk":true,"plc.uk":true,"police.uk":true,"*.sch.uk":true,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"ann-arbor.mi.us":true,"cog.mi.us":true,"dst.mi.us":true,"eaton.mi.us":true,"gen.mi.us":true,"mus.mi.us":true,"tec.mi.us":true,"washtenaw.mi.us":true,"uy":true,"com.uy":true,"edu.uy":true,"gub.uy":true,"mil.uy":true,"net.uy":true,"org.uy":true,"uz":true,"co.uz":true,"com.uz":true,"net.uz":true,"org.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"ve":true,"arts.ve":true,"co.ve":true,"com.ve":true,"e12.ve":true,"edu.ve":true,"firm.ve":true,"gob.ve":true,"gov.ve":true,"info.ve":true,"int.ve":true,"mil.ve":true,"net.ve":true,"org.ve":true,"rec.ve":true,"store.ve":true,"tec.ve":true,"web.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"com.vu":true,"edu.vu":true,"net.vu":true,"org.vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--y9a3aq":true,"xn--54b7fta0cc":true,"xn--90ae":true,"xn--90ais":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--e1a4c":true,"xn--node":true,"xn--qxam":true,"xn--j6w193g":true,"xn--2scrj9c":true,"xn--3hcrj9c":true,"xn--45br5cyl":true,"xn--h2breg3eve":true,"xn--h2brj9c8c":true,"xn--mgbgu82a":true,"xn--rvc1e0am3e":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbtx2b":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--80ao21a":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--d1alf":true,"xn--l1acc":true,"xn--mix891f":true,"xn--mix082f":true,"xn--mgbx4cd0ab":true,"xn--mgb9awbf":true,"xn--mgbai9azgqp6j":true,"xn--mgbai9a5eva00b":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--o1ac.xn--90a3ac":true,"xn--c1avg.xn--90a3ac":true,"xn--90azh.xn--90a3ac":true,"xn--d1at.xn--90a3ac":true,"xn--o1ach.xn--90a3ac":true,"xn--80au.xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--mgbpl2fh":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--o3cw4h":true,"xn--12c1fe0br.xn--o3cw4h":true,"xn--12co0c3b4eva.xn--o3cw4h":true,"xn--h3cuzk1di.xn--o3cw4h":true,"xn--o3cyx2a.xn--o3cw4h":true,"xn--m3ch0j3a.xn--o3cw4h":true,"xn--12cfi8ixb8l.xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"ac.za":true,"agric.za":true,"alt.za":true,"co.za":true,"edu.za":true,"gov.za":true,"grondar.za":true,"law.za":true,"mil.za":true,"net.za":true,"ngo.za":true,"nis.za":true,"nom.za":true,"org.za":true,"school.za":true,"tm.za":true,"web.za":true,"zm":true,"ac.zm":true,"biz.zm":true,"co.zm":true,"com.zm":true,"edu.zm":true,"gov.zm":true,"info.zm":true,"mil.zm":true,"net.zm":true,"org.zm":true,"sch.zm":true,"zw":true,"ac.zw":true,"co.zw":true,"gov.zw":true,"mil.zw":true,"org.zw":true,"aaa":true,"aarp":true,"abarth":true,"abb":true,"abbott":true,"abbvie":true,"abc":true,"able":true,"abogado":true,"abudhabi":true,"academy":true,"accenture":true,"accountant":true,"accountants":true,"aco":true,"active":true,"actor":true,"adac":true,"ads":true,"adult":true,"aeg":true,"aetna":true,"afamilycompany":true,"afl":true,"africa":true,"agakhan":true,"agency":true,"aig":true,"aigo":true,"airbus":true,"airforce":true,"airtel":true,"akdn":true,"alfaromeo":true,"alibaba":true,"alipay":true,"allfinanz":true,"allstate":true,"ally":true,"alsace":true,"alstom":true,"americanexpress":true,"americanfamily":true,"amex":true,"amfam":true,"amica":true,"amsterdam":true,"analytics":true,"android":true,"anquan":true,"anz":true,"aol":true,"apartments":true,"app":true,"apple":true,"aquarelle":true,"arab":true,"aramco":true,"archi":true,"army":true,"art":true,"arte":true,"asda":true,"associates":true,"athleta":true,"attorney":true,"auction":true,"audi":true,"audible":true,"audio":true,"auspost":true,"author":true,"auto":true,"autos":true,"avianca":true,"aws":true,"axa":true,"azure":true,"baby":true,"baidu":true,"banamex":true,"bananarepublic":true,"band":true,"bank":true,"bar":true,"barcelona":true,"barclaycard":true,"barclays":true,"barefoot":true,"bargains":true,"baseball":true,"basketball":true,"bauhaus":true,"bayern":true,"bbc":true,"bbt":true,"bbva":true,"bcg":true,"bcn":true,"beats":true,"beauty":true,"beer":true,"bentley":true,"berlin":true,"best":true,"bestbuy":true,"bet":true,"bharti":true,"bible":true,"bid":true,"bike":true,"bing":true,"bingo":true,"bio":true,"black":true,"blackfriday":true,"blanco":true,"blockbuster":true,"blog":true,"bloomberg":true,"blue":true,"bms":true,"bmw":true,"bnl":true,"bnpparibas":true,"boats":true,"boehringer":true,"bofa":true,"bom":true,"bond":true,"boo":true,"book":true,"booking":true,"boots":true,"bosch":true,"bostik":true,"boston":true,"bot":true,"boutique":true,"box":true,"bradesco":true,"bridgestone":true,"broadway":true,"broker":true,"brother":true,"brussels":true,"budapest":true,"bugatti":true,"build":true,"builders":true,"business":true,"buy":true,"buzz":true,"bzh":true,"cab":true,"cafe":true,"cal":true,"call":true,"calvinklein":true,"cam":true,"camera":true,"camp":true,"cancerresearch":true,"canon":true,"capetown":true,"capital":true,"capitalone":true,"car":true,"caravan":true,"cards":true,"care":true,"career":true,"careers":true,"cars":true,"cartier":true,"casa":true,"case":true,"caseih":true,"cash":true,"casino":true,"catering":true,"catholic":true,"cba":true,"cbn":true,"cbre":true,"cbs":true,"ceb":true,"center":true,"ceo":true,"cern":true,"cfa":true,"cfd":true,"chanel":true,"channel":true,"chase":true,"chat":true,"cheap":true,"chintai":true,"christmas":true,"chrome":true,"chrysler":true,"church":true,"cipriani":true,"circle":true,"cisco":true,"citadel":true,"citi":true,"citic":true,"city":true,"cityeats":true,"claims":true,"cleaning":true,"click":true,"clinic":true,"clinique":true,"clothing":true,"cloud":true,"club":true,"clubmed":true,"coach":true,"codes":true,"coffee":true,"college":true,"cologne":true,"comcast":true,"commbank":true,"community":true,"company":true,"compare":true,"computer":true,"comsec":true,"condos":true,"construction":true,"consulting":true,"contact":true,"contractors":true,"cooking":true,"cookingchannel":true,"cool":true,"corsica":true,"country":true,"coupon":true,"coupons":true,"courses":true,"credit":true,"creditcard":true,"creditunion":true,"cricket":true,"crown":true,"crs":true,"cruise":true,"cruises":true,"csc":true,"cuisinella":true,"cymru":true,"cyou":true,"dabur":true,"dad":true,"dance":true,"data":true,"date":true,"dating":true,"datsun":true,"day":true,"dclk":true,"dds":true,"deal":true,"dealer":true,"deals":true,"degree":true,"delivery":true,"dell":true,"deloitte":true,"delta":true,"democrat":true,"dental":true,"dentist":true,"desi":true,"design":true,"dev":true,"dhl":true,"diamonds":true,"diet":true,"digital":true,"direct":true,"directory":true,"discount":true,"discover":true,"dish":true,"diy":true,"dnp":true,"docs":true,"doctor":true,"dodge":true,"dog":true,"doha":true,"domains":true,"dot":true,"download":true,"drive":true,"dtv":true,"dubai":true,"duck":true,"dunlop":true,"duns":true,"dupont":true,"durban":true,"dvag":true,"dvr":true,"earth":true,"eat":true,"eco":true,"edeka":true,"education":true,"email":true,"emerck":true,"energy":true,"engineer":true,"engineering":true,"enterprises":true,"epost":true,"epson":true,"equipment":true,"ericsson":true,"erni":true,"esq":true,"estate":true,"esurance":true,"etisalat":true,"eurovision":true,"eus":true,"events":true,"everbank":true,"exchange":true,"expert":true,"exposed":true,"express":true,"extraspace":true,"fage":true,"fail":true,"fairwinds":true,"faith":true,"family":true,"fan":true,"fans":true,"farm":true,"farmers":true,"fashion":true,"fast":true,"fedex":true,"feedback":true,"ferrari":true,"ferrero":true,"fiat":true,"fidelity":true,"fido":true,"film":true,"final":true,"finance":true,"financial":true,"fire":true,"firestone":true,"firmdale":true,"fish":true,"fishing":true,"fit":true,"fitness":true,"flickr":true,"flights":true,"flir":true,"florist":true,"flowers":true,"fly":true,"foo":true,"food":true,"foodnetwork":true,"football":true,"ford":true,"forex":true,"forsale":true,"forum":true,"foundation":true,"fox":true,"free":true,"fresenius":true,"frl":true,"frogans":true,"frontdoor":true,"frontier":true,"ftr":true,"fujitsu":true,"fujixerox":true,"fun":true,"fund":true,"furniture":true,"futbol":true,"fyi":true,"gal":true,"gallery":true,"gallo":true,"gallup":true,"game":true,"games":true,"gap":true,"garden":true,"gbiz":true,"gdn":true,"gea":true,"gent":true,"genting":true,"george":true,"ggee":true,"gift":true,"gifts":true,"gives":true,"giving":true,"glade":true,"glass":true,"gle":true,"global":true,"globo":true,"gmail":true,"gmbh":true,"gmo":true,"gmx":true,"godaddy":true,"gold":true,"goldpoint":true,"golf":true,"goo":true,"goodhands":true,"goodyear":true,"goog":true,"google":true,"gop":true,"got":true,"grainger":true,"graphics":true,"gratis":true,"green":true,"gripe":true,"grocery":true,"group":true,"guardian":true,"gucci":true,"guge":true,"guide":true,"guitars":true,"guru":true,"hair":true,"hamburg":true,"hangout":true,"haus":true,"hbo":true,"hdfc":true,"hdfcbank":true,"health":true,"healthcare":true,"help":true,"helsinki":true,"here":true,"hermes":true,"hgtv":true,"hiphop":true,"hisamitsu":true,"hitachi":true,"hiv":true,"hkt":true,"hockey":true,"holdings":true,"holiday":true,"homedepot":true,"homegoods":true,"homes":true,"homesense":true,"honda":true,"honeywell":true,"horse":true,"hospital":true,"host":true,"hosting":true,"hot":true,"hoteles":true,"hotels":true,"hotmail":true,"house":true,"how":true,"hsbc":true,"hughes":true,"hyatt":true,"hyundai":true,"ibm":true,"icbc":true,"ice":true,"icu":true,"ieee":true,"ifm":true,"ikano":true,"imamat":true,"imdb":true,"immo":true,"immobilien":true,"industries":true,"infiniti":true,"ing":true,"ink":true,"institute":true,"insurance":true,"insure":true,"intel":true,"international":true,"intuit":true,"investments":true,"ipiranga":true,"irish":true,"iselect":true,"ismaili":true,"ist":true,"istanbul":true,"itau":true,"itv":true,"iveco":true,"iwc":true,"jaguar":true,"java":true,"jcb":true,"jcp":true,"jeep":true,"jetzt":true,"jewelry":true,"jio":true,"jlc":true,"jll":true,"jmp":true,"jnj":true,"joburg":true,"jot":true,"joy":true,"jpmorgan":true,"jprs":true,"juegos":true,"juniper":true,"kaufen":true,"kddi":true,"kerryhotels":true,"kerrylogistics":true,"kerryproperties":true,"kfh":true,"kia":true,"kim":true,"kinder":true,"kindle":true,"kitchen":true,"kiwi":true,"koeln":true,"komatsu":true,"kosher":true,"kpmg":true,"kpn":true,"krd":true,"kred":true,"kuokgroup":true,"kyoto":true,"lacaixa":true,"ladbrokes":true,"lamborghini":true,"lamer":true,"lancaster":true,"lancia":true,"lancome":true,"land":true,"landrover":true,"lanxess":true,"lasalle":true,"lat":true,"latino":true,"latrobe":true,"law":true,"lawyer":true,"lds":true,"lease":true,"leclerc":true,"lefrak":true,"legal":true,"lego":true,"lexus":true,"lgbt":true,"liaison":true,"lidl":true,"life":true,"lifeinsurance":true,"lifestyle":true,"lighting":true,"like":true,"lilly":true,"limited":true,"limo":true,"lincoln":true,"linde":true,"link":true,"lipsy":true,"live":true,"living":true,"lixil":true,"loan":true,"loans":true,"locker":true,"locus":true,"loft":true,"lol":true,"london":true,"lotte":true,"lotto":true,"love":true,"lpl":true,"lplfinancial":true,"ltd":true,"ltda":true,"lundbeck":true,"lupin":true,"luxe":true,"luxury":true,"macys":true,"madrid":true,"maif":true,"maison":true,"makeup":true,"man":true,"management":true,"mango":true,"map":true,"market":true,"marketing":true,"markets":true,"marriott":true,"marshalls":true,"maserati":true,"mattel":true,"mba":true,"mckinsey":true,"med":true,"media":true,"meet":true,"melbourne":true,"meme":true,"memorial":true,"men":true,"menu":true,"meo":true,"merckmsd":true,"metlife":true,"miami":true,"microsoft":true,"mini":true,"mint":true,"mit":true,"mitsubishi":true,"mlb":true,"mls":true,"mma":true,"mobile":true,"mobily":true,"moda":true,"moe":true,"moi":true,"mom":true,"monash":true,"money":true,"monster":true,"mopar":true,"mormon":true,"mortgage":true,"moscow":true,"moto":true,"motorcycles":true,"mov":true,"movie":true,"movistar":true,"msd":true,"mtn":true,"mtpc":true,"mtr":true,"mutual":true,"nab":true,"nadex":true,"nagoya":true,"nationwide":true,"natura":true,"navy":true,"nba":true,"nec":true,"netbank":true,"netflix":true,"network":true,"neustar":true,"new":true,"newholland":true,"news":true,"next":true,"nextdirect":true,"nexus":true,"nfl":true,"ngo":true,"nhk":true,"nico":true,"nike":true,"nikon":true,"ninja":true,"nissan":true,"nissay":true,"nokia":true,"northwesternmutual":true,"norton":true,"now":true,"nowruz":true,"nowtv":true,"nra":true,"nrw":true,"ntt":true,"nyc":true,"obi":true,"observer":true,"off":true,"office":true,"okinawa":true,"olayan":true,"olayangroup":true,"oldnavy":true,"ollo":true,"omega":true,"one":true,"ong":true,"onl":true,"online":true,"onyourside":true,"ooo":true,"open":true,"oracle":true,"orange":true,"organic":true,"origins":true,"osaka":true,"otsuka":true,"ott":true,"ovh":true,"page":true,"panasonic":true,"panerai":true,"paris":true,"pars":true,"partners":true,"parts":true,"party":true,"passagens":true,"pay":true,"pccw":true,"pet":true,"pfizer":true,"pharmacy":true,"phd":true,"philips":true,"phone":true,"photo":true,"photography":true,"photos":true,"physio":true,"piaget":true,"pics":true,"pictet":true,"pictures":true,"pid":true,"pin":true,"ping":true,"pink":true,"pioneer":true,"pizza":true,"place":true,"play":true,"playstation":true,"plumbing":true,"plus":true,"pnc":true,"pohl":true,"poker":true,"politie":true,"porn":true,"pramerica":true,"praxi":true,"press":true,"prime":true,"prod":true,"productions":true,"prof":true,"progressive":true,"promo":true,"properties":true,"property":true,"protection":true,"pru":true,"prudential":true,"pub":true,"pwc":true,"qpon":true,"quebec":true,"quest":true,"qvc":true,"racing":true,"radio":true,"raid":true,"read":true,"realestate":true,"realtor":true,"realty":true,"recipes":true,"red":true,"redstone":true,"redumbrella":true,"rehab":true,"reise":true,"reisen":true,"reit":true,"reliance":true,"ren":true,"rent":true,"rentals":true,"repair":true,"report":true,"republican":true,"rest":true,"restaurant":true,"review":true,"reviews":true,"rexroth":true,"rich":true,"richardli":true,"ricoh":true,"rightathome":true,"ril":true,"rio":true,"rip":true,"rmit":true,"rocher":true,"rocks":true,"rodeo":true,"rogers":true,"room":true,"rsvp":true,"rugby":true,"ruhr":true,"run":true,"rwe":true,"ryukyu":true,"saarland":true,"safe":true,"safety":true,"sakura":true,"sale":true,"salon":true,"samsclub":true,"samsung":true,"sandvik":true,"sandvikcoromant":true,"sanofi":true,"sap":true,"sapo":true,"sarl":true,"sas":true,"save":true,"saxo":true,"sbi":true,"sbs":true,"sca":true,"scb":true,"schaeffler":true,"schmidt":true,"scholarships":true,"school":true,"schule":true,"schwarz":true,"science":true,"scjohnson":true,"scor":true,"scot":true,"search":true,"seat":true,"secure":true,"security":true,"seek":true,"select":true,"sener":true,"services":true,"ses":true,"seven":true,"sew":true,"sex":true,"sexy":true,"sfr":true,"shangrila":true,"sharp":true,"shaw":true,"shell":true,"shia":true,"shiksha":true,"shoes":true,"shop":true,"shopping":true,"shouji":true,"show":true,"showtime":true,"shriram":true,"silk":true,"sina":true,"singles":true,"site":true,"ski":true,"skin":true,"sky":true,"skype":true,"sling":true,"smart":true,"smile":true,"sncf":true,"soccer":true,"social":true,"softbank":true,"software":true,"sohu":true,"solar":true,"solutions":true,"song":true,"sony":true,"soy":true,"space":true,"spiegel":true,"spot":true,"spreadbetting":true,"srl":true,"srt":true,"stada":true,"staples":true,"star":true,"starhub":true,"statebank":true,"statefarm":true,"statoil":true,"stc":true,"stcgroup":true,"stockholm":true,"storage":true,"store":true,"stream":true,"studio":true,"study":true,"style":true,"sucks":true,"supplies":true,"supply":true,"support":true,"surf":true,"surgery":true,"suzuki":true,"swatch":true,"swiftcover":true,"swiss":true,"sydney":true,"symantec":true,"systems":true,"tab":true,"taipei":true,"talk":true,"taobao":true,"target":true,"tatamotors":true,"tatar":true,"tattoo":true,"tax":true,"taxi":true,"tci":true,"tdk":true,"team":true,"tech":true,"technology":true,"telecity":true,"telefonica":true,"temasek":true,"tennis":true,"teva":true,"thd":true,"theater":true,"theatre":true,"tiaa":true,"tickets":true,"tienda":true,"tiffany":true,"tips":true,"tires":true,"tirol":true,"tjmaxx":true,"tjx":true,"tkmaxx":true,"tmall":true,"today":true,"tokyo":true,"tools":true,"top":true,"toray":true,"toshiba":true,"total":true,"tours":true,"town":true,"toyota":true,"toys":true,"trade":true,"trading":true,"training":true,"travelchannel":true,"travelers":true,"travelersinsurance":true,"trust":true,"trv":true,"tube":true,"tui":true,"tunes":true,"tushu":true,"tvs":true,"ubank":true,"ubs":true,"uconnect":true,"unicom":true,"university":true,"uno":true,"uol":true,"ups":true,"vacations":true,"vana":true,"vanguard":true,"vegas":true,"ventures":true,"verisign":true,"versicherung":true,"vet":true,"viajes":true,"video":true,"vig":true,"viking":true,"villas":true,"vin":true,"vip":true,"virgin":true,"visa":true,"vision":true,"vista":true,"vistaprint":true,"viva":true,"vivo":true,"vlaanderen":true,"vodka":true,"volkswagen":true,"volvo":true,"vote":true,"voting":true,"voto":true,"voyage":true,"vuelos":true,"wales":true,"walmart":true,"walter":true,"wang":true,"wanggou":true,"warman":true,"watch":true,"watches":true,"weather":true,"weatherchannel":true,"webcam":true,"weber":true,"website":true,"wed":true,"wedding":true,"weibo":true,"weir":true,"whoswho":true,"wien":true,"wiki":true,"williamhill":true,"win":true,"windows":true,"wine":true,"winners":true,"wme":true,"wolterskluwer":true,"woodside":true,"work":true,"works":true,"world":true,"wow":true,"wtc":true,"wtf":true,"xbox":true,"xerox":true,"xfinity":true,"xihuan":true,"xin":true,"xn--11b4c3d":true,"xn--1ck2e1b":true,"xn--1qqw23a":true,"xn--30rr7y":true,"xn--3bst00m":true,"xn--3ds443g":true,"xn--3oq18vl8pn36a":true,"xn--3pxu8k":true,"xn--42c2d9a":true,"xn--45q11c":true,"xn--4gbrim":true,"xn--55qw42g":true,"xn--55qx5d":true,"xn--5su34j936bgsg":true,"xn--5tzm5g":true,"xn--6frz82g":true,"xn--6qq986b3xl":true,"xn--80adxhks":true,"xn--80aqecdr1a":true,"xn--80asehdb":true,"xn--80aswg":true,"xn--8y0a063a":true,"xn--9dbq2a":true,"xn--9et52u":true,"xn--9krt00a":true,"xn--b4w605ferd":true,"xn--bck1b9a5dre4c":true,"xn--c1avg":true,"xn--c2br7g":true,"xn--cck2b3b":true,"xn--cg4bki":true,"xn--czr694b":true,"xn--czrs0t":true,"xn--czru2d":true,"xn--d1acj3b":true,"xn--eckvdtc9d":true,"xn--efvy88h":true,"xn--estv75g":true,"xn--fct429k":true,"xn--fhbei":true,"xn--fiq228c5hs":true,"xn--fiq64b":true,"xn--fjq720a":true,"xn--flw351e":true,"xn--fzys8d69uvgm":true,"xn--g2xx48c":true,"xn--gckr3f0f":true,"xn--gk3at1e":true,"xn--hxt814e":true,"xn--i1b6b1a6a2e":true,"xn--imr513n":true,"xn--io0a7i":true,"xn--j1aef":true,"xn--jlq61u9w7b":true,"xn--jvr189m":true,"xn--kcrx77d1x4a":true,"xn--kpu716f":true,"xn--kput3i":true,"xn--mgba3a3ejt":true,"xn--mgba7c0bbn0a":true,"xn--mgbaakc7dvf":true,"xn--mgbab2bd":true,"xn--mgbb9fbpob":true,"xn--mgbca7dzdo":true,"xn--mgbi4ecexp":true,"xn--mgbt3dhd":true,"xn--mk1bu44c":true,"xn--mxtq1m":true,"xn--ngbc5azd":true,"xn--ngbe9e0a":true,"xn--ngbrx":true,"xn--nqv7f":true,"xn--nqv7fs00ema":true,"xn--nyqy26a":true,"xn--p1acf":true,"xn--pbt977c":true,"xn--pssy2u":true,"xn--q9jyb4c":true,"xn--qcka1pmc":true,"xn--rhqv96g":true,"xn--rovu88b":true,"xn--ses554g":true,"xn--t60b56a":true,"xn--tckwe":true,"xn--tiq49xqyj":true,"xn--unup4y":true,"xn--vermgensberater-ctb":true,"xn--vermgensberatung-pwb":true,"xn--vhquv":true,"xn--vuq861b":true,"xn--w4r85el8fhu5dnra":true,"xn--w4rs40l":true,"xn--xhq521b":true,"xn--zfr164b":true,"xperia":true,"xyz":true,"yachts":true,"yahoo":true,"yamaxun":true,"yandex":true,"yodobashi":true,"yoga":true,"yokohama":true,"you":true,"youtube":true,"yun":true,"zappos":true,"zara":true,"zero":true,"zip":true,"zippo":true,"zone":true,"zuerich":true,"cc.ua":true,"inf.ua":true,"ltd.ua":true,"1password.ca":true,"1password.com":true,"1password.eu":true,"beep.pl":true,"*.compute.estate":true,"*.alces.network":true,"alwaysdata.net":true,"cloudfront.net":true,"*.compute.amazonaws.com":true,"*.compute-1.amazonaws.com":true,"*.compute.amazonaws.com.cn":true,"us-east-1.amazonaws.com":true,"cn-north-1.eb.amazonaws.com.cn":true,"elasticbeanstalk.com":true,"ap-northeast-1.elasticbeanstalk.com":true,"ap-northeast-2.elasticbeanstalk.com":true,"ap-south-1.elasticbeanstalk.com":true,"ap-southeast-1.elasticbeanstalk.com":true,"ap-southeast-2.elasticbeanstalk.com":true,"ca-central-1.elasticbeanstalk.com":true,"eu-central-1.elasticbeanstalk.com":true,"eu-west-1.elasticbeanstalk.com":true,"eu-west-2.elasticbeanstalk.com":true,"eu-west-3.elasticbeanstalk.com":true,"sa-east-1.elasticbeanstalk.com":true,"us-east-1.elasticbeanstalk.com":true,"us-east-2.elasticbeanstalk.com":true,"us-gov-west-1.elasticbeanstalk.com":true,"us-west-1.elasticbeanstalk.com":true,"us-west-2.elasticbeanstalk.com":true,"*.elb.amazonaws.com":true,"*.elb.amazonaws.com.cn":true,"s3.amazonaws.com":true,"s3-ap-northeast-1.amazonaws.com":true,"s3-ap-northeast-2.amazonaws.com":true,"s3-ap-south-1.amazonaws.com":true,"s3-ap-southeast-1.amazonaws.com":true,"s3-ap-southeast-2.amazonaws.com":true,"s3-ca-central-1.amazonaws.com":true,"s3-eu-central-1.amazonaws.com":true,"s3-eu-west-1.amazonaws.com":true,"s3-eu-west-2.amazonaws.com":true,"s3-eu-west-3.amazonaws.com":true,"s3-external-1.amazonaws.com":true,"s3-fips-us-gov-west-1.amazonaws.com":true,"s3-sa-east-1.amazonaws.com":true,"s3-us-gov-west-1.amazonaws.com":true,"s3-us-east-2.amazonaws.com":true,"s3-us-west-1.amazonaws.com":true,"s3-us-west-2.amazonaws.com":true,"s3.ap-northeast-2.amazonaws.com":true,"s3.ap-south-1.amazonaws.com":true,"s3.cn-north-1.amazonaws.com.cn":true,"s3.ca-central-1.amazonaws.com":true,"s3.eu-central-1.amazonaws.com":true,"s3.eu-west-2.amazonaws.com":true,"s3.eu-west-3.amazonaws.com":true,"s3.us-east-2.amazonaws.com":true,"s3.dualstack.ap-northeast-1.amazonaws.com":true,"s3.dualstack.ap-northeast-2.amazonaws.com":true,"s3.dualstack.ap-south-1.amazonaws.com":true,"s3.dualstack.ap-southeast-1.amazonaws.com":true,"s3.dualstack.ap-southeast-2.amazonaws.com":true,"s3.dualstack.ca-central-1.amazonaws.com":true,"s3.dualstack.eu-central-1.amazonaws.com":true,"s3.dualstack.eu-west-1.amazonaws.com":true,"s3.dualstack.eu-west-2.amazonaws.com":true,"s3.dualstack.eu-west-3.amazonaws.com":true,"s3.dualstack.sa-east-1.amazonaws.com":true,"s3.dualstack.us-east-1.amazonaws.com":true,"s3.dualstack.us-east-2.amazonaws.com":true,"s3-website-us-east-1.amazonaws.com":true,"s3-website-us-west-1.amazonaws.com":true,"s3-website-us-west-2.amazonaws.com":true,"s3-website-ap-northeast-1.amazonaws.com":true,"s3-website-ap-southeast-1.amazonaws.com":true,"s3-website-ap-southeast-2.amazonaws.com":true,"s3-website-eu-west-1.amazonaws.com":true,"s3-website-sa-east-1.amazonaws.com":true,"s3-website.ap-northeast-2.amazonaws.com":true,"s3-website.ap-south-1.amazonaws.com":true,"s3-website.ca-central-1.amazonaws.com":true,"s3-website.eu-central-1.amazonaws.com":true,"s3-website.eu-west-2.amazonaws.com":true,"s3-website.eu-west-3.amazonaws.com":true,"s3-website.us-east-2.amazonaws.com":true,"t3l3p0rt.net":true,"tele.amune.org":true,"on-aptible.com":true,"user.party.eus":true,"pimienta.org":true,"poivron.org":true,"potager.org":true,"sweetpepper.org":true,"myasustor.com":true,"myfritz.net":true,"*.awdev.ca":true,"*.advisor.ws":true,"backplaneapp.io":true,"betainabox.com":true,"bnr.la":true,"boomla.net":true,"boxfuse.io":true,"square7.ch":true,"bplaced.com":true,"bplaced.de":true,"square7.de":true,"bplaced.net":true,"square7.net":true,"browsersafetymark.io":true,"mycd.eu":true,"ae.org":true,"ar.com":true,"br.com":true,"cn.com":true,"com.de":true,"com.se":true,"de.com":true,"eu.com":true,"gb.com":true,"gb.net":true,"hu.com":true,"hu.net":true,"jp.net":true,"jpn.com":true,"kr.com":true,"mex.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"se.net":true,"uk.com":true,"uk.net":true,"us.com":true,"uy.com":true,"za.bz":true,"za.com":true,"africa.com":true,"gr.com":true,"in.net":true,"us.org":true,"co.com":true,"c.la":true,"certmgr.org":true,"xenapponazure.com":true,"virtueeldomein.nl":true,"c66.me":true,"cloud66.ws":true,"jdevcloud.com":true,"wpdevcloud.com":true,"cloudaccess.host":true,"freesite.host":true,"cloudaccess.net":true,"cloudcontrolled.com":true,"cloudcontrolapp.com":true,"co.ca":true,"co.cz":true,"c.cdn77.org":true,"cdn77-ssl.net":true,"r.cdn77.net":true,"rsc.cdn77.org":true,"ssl.origin.cdn77-secure.org":true,"cloudns.asia":true,"cloudns.biz":true,"cloudns.club":true,"cloudns.cc":true,"cloudns.eu":true,"cloudns.in":true,"cloudns.info":true,"cloudns.org":true,"cloudns.pro":true,"cloudns.pw":true,"cloudns.us":true,"co.nl":true,"co.no":true,"webhosting.be":true,"hosting-cluster.nl":true,"dyn.cosidns.de":true,"dynamisches-dns.de":true,"dnsupdater.de":true,"internet-dns.de":true,"l-o-g-i-n.de":true,"dynamic-dns.info":true,"feste-ip.net":true,"knx-server.net":true,"static-access.net":true,"realm.cz":true,"*.cryptonomic.net":true,"cupcake.is":true,"cyon.link":true,"cyon.site":true,"daplie.me":true,"localhost.daplie.me":true,"biz.dk":true,"co.dk":true,"firm.dk":true,"reg.dk":true,"store.dk":true,"debian.net":true,"dedyn.io":true,"dnshome.de":true,"drayddns.com":true,"dreamhosters.com":true,"mydrobo.com":true,"drud.io":true,"drud.us":true,"duckdns.org":true,"dy.fi":true,"tunk.org":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true,"ddnss.de":true,"dyn.ddnss.de":true,"dyndns.ddnss.de":true,"dyndns1.de":true,"dyn-ip24.de":true,"home-webserver.de":true,"dyn.home-webserver.de":true,"myhome-server.de":true,"ddnss.org":true,"definima.net":true,"definima.io":true,"ddnsfree.com":true,"ddnsgeek.com":true,"giize.com":true,"gleeze.com":true,"kozow.com":true,"loseyourip.com":true,"ooguy.com":true,"theworkpc.com":true,"casacam.net":true,"dynu.net":true,"accesscam.org":true,"camdvr.org":true,"freeddns.org":true,"mywire.org":true,"webredirect.org":true,"myddns.rocks":true,"blogsite.xyz":true,"dynv6.net":true,"e4.cz":true,"mytuleap.com":true,"enonic.io":true,"customer.enonic.io":true,"eu.org":true,"al.eu.org":true,"asso.eu.org":true,"at.eu.org":true,"au.eu.org":true,"be.eu.org":true,"bg.eu.org":true,"ca.eu.org":true,"cd.eu.org":true,"ch.eu.org":true,"cn.eu.org":true,"cy.eu.org":true,"cz.eu.org":true,"de.eu.org":true,"dk.eu.org":true,"edu.eu.org":true,"ee.eu.org":true,"es.eu.org":true,"fi.eu.org":true,"fr.eu.org":true,"gr.eu.org":true,"hr.eu.org":true,"hu.eu.org":true,"ie.eu.org":true,"il.eu.org":true,"in.eu.org":true,"int.eu.org":true,"is.eu.org":true,"it.eu.org":true,"jp.eu.org":true,"kr.eu.org":true,"lt.eu.org":true,"lu.eu.org":true,"lv.eu.org":true,"mc.eu.org":true,"me.eu.org":true,"mk.eu.org":true,"mt.eu.org":true,"my.eu.org":true,"net.eu.org":true,"ng.eu.org":true,"nl.eu.org":true,"no.eu.org":true,"nz.eu.org":true,"paris.eu.org":true,"pl.eu.org":true,"pt.eu.org":true,"q-a.eu.org":true,"ro.eu.org":true,"ru.eu.org":true,"se.eu.org":true,"si.eu.org":true,"sk.eu.org":true,"tr.eu.org":true,"uk.eu.org":true,"us.eu.org":true,"eu-1.evennode.com":true,"eu-2.evennode.com":true,"eu-3.evennode.com":true,"eu-4.evennode.com":true,"us-1.evennode.com":true,"us-2.evennode.com":true,"us-3.evennode.com":true,"us-4.evennode.com":true,"twmail.cc":true,"twmail.net":true,"twmail.org":true,"mymailer.com.tw":true,"url.tw":true,"apps.fbsbx.com":true,"ru.net":true,"adygeya.ru":true,"bashkiria.ru":true,"bir.ru":true,"cbg.ru":true,"com.ru":true,"dagestan.ru":true,"grozny.ru":true,"kalmykia.ru":true,"kustanai.ru":true,"marine.ru":true,"mordovia.ru":true,"msk.ru":true,"mytis.ru":true,"nalchik.ru":true,"nov.ru":true,"pyatigorsk.ru":true,"spb.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"abkhazia.su":true,"adygeya.su":true,"aktyubinsk.su":true,"arkhangelsk.su":true,"armenia.su":true,"ashgabad.su":true,"azerbaijan.su":true,"balashov.su":true,"bashkiria.su":true,"bryansk.su":true,"bukhara.su":true,"chimkent.su":true,"dagestan.su":true,"east-kazakhstan.su":true,"exnet.su":true,"georgia.su":true,"grozny.su":true,"ivanovo.su":true,"jambyl.su":true,"kalmykia.su":true,"kaluga.su":true,"karacol.su":true,"karaganda.su":true,"karelia.su":true,"khakassia.su":true,"krasnodar.su":true,"kurgan.su":true,"kustanai.su":true,"lenug.su":true,"mangyshlak.su":true,"mordovia.su":true,"msk.su":true,"murmansk.su":true,"nalchik.su":true,"navoi.su":true,"north-kazakhstan.su":true,"nov.su":true,"obninsk.su":true,"penza.su":true,"pokrovsk.su":true,"sochi.su":true,"spb.su":true,"tashkent.su":true,"termez.su":true,"togliatti.su":true,"troitsk.su":true,"tselinograd.su":true,"tula.su":true,"tuva.su":true,"vladikavkaz.su":true,"vladimir.su":true,"vologda.su":true,"channelsdvr.net":true,"fastlylb.net":true,"map.fastlylb.net":true,"freetls.fastly.net":true,"map.fastly.net":true,"a.prod.fastly.net":true,"global.prod.fastly.net":true,"a.ssl.fastly.net":true,"b.ssl.fastly.net":true,"global.ssl.fastly.net":true,"fhapp.xyz":true,"fedorainfracloud.org":true,"fedorapeople.org":true,"cloud.fedoraproject.org":true,"app.os.fedoraproject.org":true,"app.os.stg.fedoraproject.org":true,"filegear.me":true,"firebaseapp.com":true,"flynnhub.com":true,"flynnhosting.net":true,"freebox-os.com":true,"freeboxos.com":true,"fbx-os.fr":true,"fbxos.fr":true,"freebox-os.fr":true,"freeboxos.fr":true,"*.futurecms.at":true,"futurehosting.at":true,"futuremailing.at":true,"*.ex.ortsinfo.at":true,"*.kunden.ortsinfo.at":true,"*.statics.cloud":true,"service.gov.uk":true,"github.io":true,"githubusercontent.com":true,"gitlab.io":true,"homeoffice.gov.uk":true,"ro.im":true,"shop.ro":true,"goip.de":true,"*.0emm.com":true,"appspot.com":true,"blogspot.ae":true,"blogspot.al":true,"blogspot.am":true,"blogspot.ba":true,"blogspot.be":true,"blogspot.bg":true,"blogspot.bj":true,"blogspot.ca":true,"blogspot.cf":true,"blogspot.ch":true,"blogspot.cl":true,"blogspot.co.at":true,"blogspot.co.id":true,"blogspot.co.il":true,"blogspot.co.ke":true,"blogspot.co.nz":true,"blogspot.co.uk":true,"blogspot.co.za":true,"blogspot.com":true,"blogspot.com.ar":true,"blogspot.com.au":true,"blogspot.com.br":true,"blogspot.com.by":true,"blogspot.com.co":true,"blogspot.com.cy":true,"blogspot.com.ee":true,"blogspot.com.eg":true,"blogspot.com.es":true,"blogspot.com.mt":true,"blogspot.com.ng":true,"blogspot.com.tr":true,"blogspot.com.uy":true,"blogspot.cv":true,"blogspot.cz":true,"blogspot.de":true,"blogspot.dk":true,"blogspot.fi":true,"blogspot.fr":true,"blogspot.gr":true,"blogspot.hk":true,"blogspot.hr":true,"blogspot.hu":true,"blogspot.ie":true,"blogspot.in":true,"blogspot.is":true,"blogspot.it":true,"blogspot.jp":true,"blogspot.kr":true,"blogspot.li":true,"blogspot.lt":true,"blogspot.lu":true,"blogspot.md":true,"blogspot.mk":true,"blogspot.mr":true,"blogspot.mx":true,"blogspot.my":true,"blogspot.nl":true,"blogspot.no":true,"blogspot.pe":true,"blogspot.pt":true,"blogspot.qa":true,"blogspot.re":true,"blogspot.ro":true,"blogspot.rs":true,"blogspot.ru":true,"blogspot.se":true,"blogspot.sg":true,"blogspot.si":true,"blogspot.sk":true,"blogspot.sn":true,"blogspot.td":true,"blogspot.tw":true,"blogspot.ug":true,"blogspot.vn":true,"cloudfunctions.net":true,"cloud.goog":true,"codespot.com":true,"googleapis.com":true,"googlecode.com":true,"pagespeedmobilizer.com":true,"publishproxy.com":true,"withgoogle.com":true,"withyoutube.com":true,"hashbang.sh":true,"hasura-app.io":true,"hepforge.org":true,"herokuapp.com":true,"herokussl.com":true,"moonscale.net":true,"iki.fi":true,"biz.at":true,"info.at":true,"info.cx":true,"ac.leg.br":true,"al.leg.br":true,"am.leg.br":true,"ap.leg.br":true,"ba.leg.br":true,"ce.leg.br":true,"df.leg.br":true,"es.leg.br":true,"go.leg.br":true,"ma.leg.br":true,"mg.leg.br":true,"ms.leg.br":true,"mt.leg.br":true,"pa.leg.br":true,"pb.leg.br":true,"pe.leg.br":true,"pi.leg.br":true,"pr.leg.br":true,"rj.leg.br":true,"rn.leg.br":true,"ro.leg.br":true,"rr.leg.br":true,"rs.leg.br":true,"sc.leg.br":true,"se.leg.br":true,"sp.leg.br":true,"to.leg.br":true,"pixolino.com":true,"ipifony.net":true,"*.triton.zone":true,"*.cns.joyent.com":true,"js.org":true,"keymachine.de":true,"knightpoint.systems":true,"co.krd":true,"edu.krd":true,"git-repos.de":true,"lcube-server.de":true,"svn-repos.de":true,"linkyard.cloud":true,"linkyard-cloud.ch":true,"we.bs":true,"barsy.bg":true,"barsyonline.com":true,"barsy.de":true,"barsy.eu":true,"barsy.in":true,"barsy.net":true,"barsy.online":true,"barsy.support":true,"*.magentosite.cloud":true,"hb.cldmail.ru":true,"cloud.metacentrum.cz":true,"custom.metacentrum.cz":true,"meteorapp.com":true,"eu.meteorapp.com":true,"co.pl":true,"azurewebsites.net":true,"azure-mobile.net":true,"cloudapp.net":true,"mozilla-iot.org":true,"bmoattachments.org":true,"net.ru":true,"org.ru":true,"pp.ru":true,"bitballoon.com":true,"netlify.com":true,"4u.com":true,"ngrok.io":true,"nh-serv.co.uk":true,"nfshost.com":true,"nsupdate.info":true,"nerdpol.ovh":true,"blogsyte.com":true,"brasilia.me":true,"cable-modem.org":true,"ciscofreak.com":true,"collegefan.org":true,"couchpotatofries.org":true,"damnserver.com":true,"ddns.me":true,"ditchyourip.com":true,"dnsfor.me":true,"dnsiskinky.com":true,"dvrcam.info":true,"dynns.com":true,"eating-organic.net":true,"fantasyleague.cc":true,"geekgalaxy.com":true,"golffan.us":true,"health-carereform.com":true,"homesecuritymac.com":true,"homesecuritypc.com":true,"hopto.me":true,"ilovecollege.info":true,"loginto.me":true,"mlbfan.org":true,"mmafan.biz":true,"myactivedirectory.com":true,"mydissent.net":true,"myeffect.net":true,"mymediapc.net":true,"mypsx.net":true,"mysecuritycamera.com":true,"mysecuritycamera.net":true,"mysecuritycamera.org":true,"net-freaks.com":true,"nflfan.org":true,"nhlfan.net":true,"no-ip.ca":true,"no-ip.co.uk":true,"no-ip.net":true,"noip.us":true,"onthewifi.com":true,"pgafan.net":true,"point2this.com":true,"pointto.us":true,"privatizehealthinsurance.net":true,"quicksytes.com":true,"read-books.org":true,"securitytactics.com":true,"serveexchange.com":true,"servehumour.com":true,"servep2p.com":true,"servesarcasm.com":true,"stufftoread.com":true,"ufcfan.org":true,"unusualperson.com":true,"workisboring.com":true,"3utilities.com":true,"bounceme.net":true,"ddns.net":true,"ddnsking.com":true,"gotdns.ch":true,"hopto.org":true,"myftp.biz":true,"myftp.org":true,"myvnc.com":true,"no-ip.biz":true,"no-ip.info":true,"no-ip.org":true,"noip.me":true,"redirectme.net":true,"servebeer.com":true,"serveblog.net":true,"servecounterstrike.com":true,"serveftp.com":true,"servegame.com":true,"servehalflife.com":true,"servehttp.com":true,"serveirc.com":true,"serveminecraft.net":true,"servemp3.com":true,"servepics.com":true,"servequake.com":true,"sytes.net":true,"webhop.me":true,"zapto.org":true,"stage.nodeart.io":true,"nodum.co":true,"nodum.io":true,"nyc.mn":true,"nom.ae":true,"nom.ai":true,"nom.al":true,"nym.by":true,"nym.bz":true,"nom.cl":true,"nom.gd":true,"nom.gl":true,"nym.gr":true,"nom.gt":true,"nom.hn":true,"nom.im":true,"nym.kz":true,"nym.la":true,"nom.li":true,"nym.li":true,"nym.lt":true,"nym.lu":true,"nym.me":true,"nom.mk":true,"nym.mx":true,"nom.nu":true,"nym.nz":true,"nym.pe":true,"nym.pt":true,"nom.pw":true,"nom.qa":true,"nom.rs":true,"nom.si":true,"nym.sk":true,"nym.su":true,"nym.sx":true,"nym.tw":true,"nom.ug":true,"nom.uy":true,"nom.vc":true,"nom.vg":true,"cya.gg":true,"nid.io":true,"opencraft.hosting":true,"operaunite.com":true,"outsystemscloud.com":true,"ownprovider.com":true,"oy.lc":true,"pgfog.com":true,"pagefrontapp.com":true,"art.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pantheonsite.io":true,"gotpantheon.com":true,"mypep.link":true,"on-web.fr":true,"*.platform.sh":true,"*.platformsh.site":true,"xen.prgmr.com":true,"priv.at":true,"protonet.io":true,"chirurgiens-dentistes-en-france.fr":true,"byen.site":true,"qa2.com":true,"dev-myqnapcloud.com":true,"alpha-myqnapcloud.com":true,"myqnapcloud.com":true,"*.quipelements.com":true,"vapor.cloud":true,"vaporcloud.io":true,"rackmaze.com":true,"rackmaze.net":true,"rhcloud.com":true,"resindevice.io":true,"devices.resinstaging.io":true,"hzc.io":true,"wellbeingzone.eu":true,"ptplus.fit":true,"wellbeingzone.co.uk":true,"sandcats.io":true,"logoip.de":true,"logoip.com":true,"schokokeks.net":true,"scrysec.com":true,"firewall-gateway.com":true,"firewall-gateway.de":true,"my-gateway.de":true,"my-router.de":true,"spdns.de":true,"spdns.eu":true,"firewall-gateway.net":true,"my-firewall.org":true,"myfirewall.org":true,"spdns.org":true,"*.s5y.io":true,"*.sensiosite.cloud":true,"biz.ua":true,"co.ua":true,"pp.ua":true,"shiftedit.io":true,"myshopblocks.com":true,"1kapp.com":true,"appchizi.com":true,"applinzi.com":true,"sinaapp.com":true,"vipsinaapp.com":true,"bounty-full.com":true,"alpha.bounty-full.com":true,"beta.bounty-full.com":true,"static.land":true,"dev.static.land":true,"sites.static.land":true,"apps.lair.io":true,"*.stolos.io":true,"spacekit.io":true,"stackspace.space":true,"storj.farm":true,"temp-dns.com":true,"diskstation.me":true,"dscloud.biz":true,"dscloud.me":true,"dscloud.mobi":true,"dsmynas.com":true,"dsmynas.net":true,"dsmynas.org":true,"familyds.com":true,"familyds.net":true,"familyds.org":true,"i234.me":true,"myds.me":true,"synology.me":true,"vpnplus.to":true,"taifun-dns.de":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"cust.dev.thingdust.io":true,"cust.disrec.thingdust.io":true,"cust.prod.thingdust.io":true,"cust.testing.thingdust.io":true,"bloxcms.com":true,"townnews-staging.com":true,"12hp.at":true,"2ix.at":true,"4lima.at":true,"lima-city.at":true,"12hp.ch":true,"2ix.ch":true,"4lima.ch":true,"lima-city.ch":true,"trafficplex.cloud":true,"de.cool":true,"12hp.de":true,"2ix.de":true,"4lima.de":true,"lima-city.de":true,"1337.pictures":true,"clan.rip":true,"lima-city.rocks":true,"webspace.rocks":true,"lima.zone":true,"*.transurl.be":true,"*.transurl.eu":true,"*.transurl.nl":true,"tuxfamily.org":true,"dd-dns.de":true,"diskstation.eu":true,"diskstation.org":true,"dray-dns.de":true,"draydns.de":true,"dyn-vpn.de":true,"dynvpn.de":true,"mein-vigor.de":true,"my-vigor.de":true,"my-wan.de":true,"syno-ds.de":true,"synology-diskstation.de":true,"synology-ds.de":true,"uber.space":true,"hk.com":true,"hk.org":true,"ltd.hk":true,"inc.hk":true,"lib.de.us":true,"2038.io":true,"router.management":true,"v-info.info":true,"wedeploy.io":true,"wedeploy.me":true,"wedeploy.sh":true,"remotewd.com":true,"wmflabs.org":true,"cistron.nl":true,"demon.nl":true,"xs4all.space":true,"official.academy":true,"yolasite.com":true,"ybo.faith":true,"yombo.me":true,"homelink.one":true,"ybo.party":true,"ybo.review":true,"ybo.science":true,"ybo.trade":true,"za.net":true,"za.org":true,"now.sh":true}); // END of automatically generated file diff --git a/node_modules/less/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json b/node_modules/less/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json index 0b7469ad..0d659a2c 100644 --- a/node_modules/less/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json +++ b/node_modules/less/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json @@ -88,5 +88,6 @@ "tmp": "tmp/punycode-1.4.1.tgz_1458437236261_0.07678767060860991" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + "_resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/tough-cookie/package.json b/node_modules/less/node_modules/request/node_modules/tough-cookie/package.json index 9a5df22c..b2961d1a 100644 --- a/node_modules/less/node_modules/request/node_modules/tough-cookie/package.json +++ b/node_modules/less/node_modules/request/node_modules/tough-cookie/package.json @@ -36,7 +36,7 @@ "RFC6265", "RFC2965" ], - "version": "2.3.3", + "version": "2.3.4", "homepage": "https://github.com/salesforce/tough-cookie", "repository": { "type": "git", @@ -64,19 +64,20 @@ "dependencies": { "punycode": "^1.4.1" }, - "gitHead": "12d426678f77bd34dd1234b7acbf47b299f50439", - "_id": "tough-cookie@2.3.3", - "_shasum": "0b618a5565b6dea90bf3425d04d55edc475a7561", - "_from": "tough-cookie@>=2.3.0 <2.4.0", - "_npmVersion": "4.2.0", - "_nodeVersion": "7.9.0", + "gitHead": "e4dfb0aec5d25e9e982805417a5d936071badc17", + "_id": "tough-cookie@2.3.4", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.4", "_npmUser": { "name": "jstash", "email": "jstash@gmail.com" }, "dist": { - "shasum": "0b618a5565b6dea90bf3425d04d55edc475a7561", - "tarball": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz" + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "shasum": "ec60cee38ac675063ffc97a5c18970578ee83655", + "tarball": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "fileCount": 9, + "unpackedSize": 245484 }, "maintainers": [ { @@ -88,14 +89,21 @@ "email": "jstash@gmail.com" }, { - "name": "nexxy", - "email": "emily@contactvibe.com" + "name": "maratto", + "email": "marat+npm@salesforce.com" + }, + { + "name": "ruoho", + "email": "clint@ruoho.org" } ], + "directories": {}, "_npmOperationalInternal": { "host": "s3://npm-registry-packages", - "tmp": "tmp/tough-cookie-2.3.3.tgz_1506027901957_0.13104762020520866" + "tmp": "tmp/tough-cookie_2.3.4_1519684165015_0.21877903579709823" }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz" + "_shasum": "ec60cee38ac675063ffc97a5c18970578ee83655", + "_resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "_from": "tough-cookie@>=2.3.0 <2.4.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/tunnel-agent/package.json b/node_modules/less/node_modules/request/node_modules/tunnel-agent/package.json index 39f130dd..3d79659f 100644 --- a/node_modules/less/node_modules/request/node_modules/tunnel-agent/package.json +++ b/node_modules/less/node_modules/request/node_modules/tunnel-agent/package.json @@ -65,5 +65,6 @@ "tmp": "tmp/tunnel-agent-0.6.0.tgz_1488673799706_0.16846991260536015" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/node_modules/uuid/package.json b/node_modules/less/node_modules/request/node_modules/uuid/package.json index e5b264e8..6ca83373 100644 --- a/node_modules/less/node_modules/request/node_modules/uuid/package.json +++ b/node_modules/less/node_modules/request/node_modules/uuid/package.json @@ -93,5 +93,6 @@ "directories": {}, "_shasum": "12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14", "_resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "_from": "uuid@>=3.0.0 <4.0.0" + "_from": "uuid@>=3.0.0 <4.0.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/node_modules/request/package.json b/node_modules/less/node_modules/request/package.json index 31dcbf7e..ed3de695 100644 --- a/node_modules/less/node_modules/request/package.json +++ b/node_modules/less/node_modules/request/package.json @@ -127,5 +127,6 @@ "tmp": "tmp/request-2.81.0.tgz_1489075005134_0.036041518207639456" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz" + "_resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/less/package.json b/node_modules/less/package.json index 1914a958..a2b1fdf8 100644 --- a/node_modules/less/package.json +++ b/node_modules/less/package.json @@ -146,5 +146,6 @@ }, "_shasum": "cc1260f51c900a9ec0d91fb6998139e02507b63b", "_resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", - "_from": "less@>=2.4.0 <3.0.0" + "_from": "less@>=2.4.0 <3.0.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/limiter/package.json b/node_modules/limiter/package.json index 1a2a62b7..58221387 100644 --- a/node_modules/limiter/package.json +++ b/node_modules/limiter/package.json @@ -63,5 +63,6 @@ }, "_shasum": "229d8055891c8b11af9e0ee5200e8e09bb3dcbeb", "_resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.2.tgz", - "_from": "limiter@>=1.1.0 <2.0.0" + "_from": "limiter@>=1.1.0 <2.0.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/mime/package.json b/node_modules/mime/package.json index 4cab2d2d..9f17e753 100644 --- a/node_modules/mime/package.json +++ b/node_modules/mime/package.json @@ -21,7 +21,7 @@ "main": "mime.js", "name": "mime", "repository": { - "url": "https://github.com/broofa/node-mime", + "url": "git+https://github.com/broofa/node-mime.git", "type": "git" }, "version": "1.2.11", @@ -51,5 +51,7 @@ ], "directories": {}, "_shasum": "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10", - "_resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" + "_resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/broofa/node-mime#readme" } diff --git a/node_modules/mkdirp/package.json b/node_modules/mkdirp/package.json index e0e1f9e2..b49ef48c 100644 --- a/node_modules/mkdirp/package.json +++ b/node_modules/mkdirp/package.json @@ -14,7 +14,7 @@ ], "repository": { "type": "git", - "url": "http://github.com/substack/node-mkdirp.git" + "url": "git+ssh://git@github.com/substack/node-mkdirp.git" }, "scripts": { "test": "tap test/*.js" @@ -42,5 +42,10 @@ ], "directories": {}, "_shasum": "de3e5f8961c88c787ee1368df849ac4413eca8d7", - "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "bugs": { + "url": "https://github.com/substack/node-mkdirp/issues" + }, + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/substack/node-mkdirp#readme" } diff --git a/node_modules/msgpack-js-browser/package.json b/node_modules/msgpack-js-browser/package.json index e4c173be..6c84b8aa 100644 --- a/node_modules/msgpack-js-browser/package.json +++ b/node_modules/msgpack-js-browser/package.json @@ -12,7 +12,7 @@ "repositories": [ { "type": "git", - "url": "http://github.com/creationix/msgpack-js-browser.git" + "url": "git+ssh://git@github.com/creationix/msgpack-js-browser.git" } ], "github": "http://github.com/creationix/msgpack-js-browser", @@ -49,5 +49,13 @@ ], "directories": {}, "_shasum": "622e314e585eae67663b82b1d0698d08922fd766", - "_resolved": "https://registry.npmjs.org/msgpack-js-browser/-/msgpack-js-browser-0.1.4.tgz" + "_resolved": "https://registry.npmjs.org/msgpack-js-browser/-/msgpack-js-browser-0.1.4.tgz", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/creationix/msgpack-js-browser.git" + }, + "bugs": { + "url": "https://github.com/creationix/msgpack-js-browser/issues" + }, + "homepage": "https://github.com/creationix/msgpack-js-browser#readme" } diff --git a/node_modules/nak/node_modules/colors/package.json b/node_modules/nak/node_modules/colors/package.json index 94ad60db..d860638e 100644 --- a/node_modules/nak/node_modules/colors/package.json +++ b/node_modules/nak/node_modules/colors/package.json @@ -16,7 +16,7 @@ ], "repository": { "type": "git", - "url": "http://github.com/Marak/colors.js.git" + "url": "git+ssh://git@github.com/Marak/colors.js.git" }, "engines": { "node": ">=0.1.90" @@ -41,5 +41,6 @@ ], "directories": {}, "_shasum": "2423fe6678ac0c5dae8852e5d0e5be08c997abcc", - "_resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + "_resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/nak/node_modules/isbinaryfile/package.json b/node_modules/nak/node_modules/isbinaryfile/package.json index 3204261f..5087e2cc 100644 --- a/node_modules/nak/node_modules/isbinaryfile/package.json +++ b/node_modules/nak/node_modules/isbinaryfile/package.json @@ -14,7 +14,7 @@ ], "repository": { "type": "git", - "url": "https://github.com/gjtorikian/isBinaryFile" + "url": "git+https://github.com/gjtorikian/isBinaryFile.git" }, "devDependencies": { "mocha": "" @@ -35,5 +35,10 @@ }, "directories": {}, "_shasum": "309c09010811d04ebed7c8d026df443d565e9f26", - "_resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-2.0.0.tgz" + "_resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-2.0.0.tgz", + "bugs": { + "url": "https://github.com/gjtorikian/isBinaryFile/issues" + }, + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/gjtorikian/isBinaryFile#readme" } diff --git a/node_modules/nak/node_modules/simplefunc/package.json b/node_modules/nak/node_modules/simplefunc/package.json index 104a3d21..4cd91a65 100644 --- a/node_modules/nak/node_modules/simplefunc/package.json +++ b/node_modules/nak/node_modules/simplefunc/package.json @@ -47,5 +47,9 @@ ], "directories": {}, "_shasum": "700c9bb52d6521eadeae72d9816d5442aa32e8ef", - "_resolved": "https://registry.npmjs.org/simplefunc/-/simplefunc-0.0.2.tgz" + "_resolved": "https://registry.npmjs.org/simplefunc/-/simplefunc-0.0.2.tgz", + "bugs": { + "url": "https://github.com/ajlopez/SimpleFunc/issues" + }, + "homepage": "https://github.com/ajlopez/SimpleFunc#readme" } diff --git a/node_modules/nak/package.json b/node_modules/nak/package.json index 7b556488..e182b9e0 100644 --- a/node_modules/nak/package.json +++ b/node_modules/nak/package.json @@ -52,7 +52,7 @@ }, "homepage": "https://github.com/gjtorikian/nak#readme", "_id": "nak@0.3.3", - "_shasum": "2e964bb1fcecaa6ce01a1184acf55b57002fa246", + "_shasum": "8bab9d1cd388a7a1d5310d04fa0d27a7b7b61e6c", "_from": "git+https://github.com/cloud9ide/nak.git#6deef931594", "_resolved": "git+https://github.com/cloud9ide/nak.git#6deef931594787edd167040f7352e3e7533430e4" } diff --git a/node_modules/netutil/package.json b/node_modules/netutil/package.json index 6e84154d..ea8838df 100644 --- a/node_modules/netutil/package.json +++ b/node_modules/netutil/package.json @@ -15,7 +15,7 @@ "main": "./netutil.js", "repository": { "type": "git", - "url": "http://github.com/c9/node-netutil.git" + "url": "git+ssh://git@github.com/c9/node-netutil.git" }, "licenses": [ { @@ -48,5 +48,6 @@ "tarball": "https://registry.npmjs.org/netutil/-/netutil-0.0.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/netutil/-/netutil-0.0.2.tgz" + "_resolved": "https://registry.npmjs.org/netutil/-/netutil-0.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/optimist/node_modules/minimist/package.json b/node_modules/optimist/node_modules/minimist/package.json index 46e07ce9..f0043ff1 100644 --- a/node_modules/optimist/node_modules/minimist/package.json +++ b/node_modules/optimist/node_modules/minimist/package.json @@ -62,5 +62,6 @@ ], "directories": {}, "_shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf", - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/optimist/node_modules/wordwrap/package.json b/node_modules/optimist/node_modules/wordwrap/package.json index a414064c..baaa04f6 100644 --- a/node_modules/optimist/node_modules/wordwrap/package.json +++ b/node_modules/optimist/node_modules/wordwrap/package.json @@ -58,5 +58,6 @@ "email": "mail@substack.net" } ], - "_resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "_resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/optimist/package.json b/node_modules/optimist/package.json index 30863148..b29e66f9 100644 --- a/node_modules/optimist/package.json +++ b/node_modules/optimist/package.json @@ -16,7 +16,7 @@ }, "repository": { "type": "git", - "url": "http://github.com/substack/node-optimist.git" + "url": "git+ssh://git@github.com/substack/node-optimist.git" }, "keywords": [ "argument", @@ -59,5 +59,6 @@ ], "directories": {}, "_shasum": "da3ea74686fa21a19a111c326e90eb15a0196686", - "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz" + "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/qs/package.json b/node_modules/qs/package.json index 383ccc0f..ce7f3cfe 100644 --- a/node_modules/qs/package.json +++ b/node_modules/qs/package.json @@ -49,5 +49,7 @@ ], "directories": {}, "_shasum": "6e015098ff51968b8a3c819001d5f2c89bc4b107", - "_resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz" + "_resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/visionmedia/node-querystring#readme" } diff --git a/node_modules/rusha/package.json b/node_modules/rusha/package.json index ee5bea19..ca235898 100644 --- a/node_modules/rusha/package.json +++ b/node_modules/rusha/package.json @@ -78,5 +78,6 @@ "tmp": "tmp/rusha-0.8.5.tgz_1480058262431_0.6161824602168053" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.5.tgz" + "_resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.5.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/send/node_modules/fresh/package.json b/node_modules/send/node_modules/fresh/package.json index ee8b7399..b257d1e9 100644 --- a/node_modules/send/node_modules/fresh/package.json +++ b/node_modules/send/node_modules/fresh/package.json @@ -10,7 +10,7 @@ "main": "index.js", "repository": { "type": "git", - "url": "https://github.com/visionmedia/node-fresh.git" + "url": "git+https://github.com/visionmedia/node-fresh.git" }, "dependencies": {}, "devDependencies": { @@ -39,5 +39,7 @@ ], "directories": {}, "_shasum": "bfd9402cf3df12c4a4c310c79f99a3dde13d34a7", - "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz" + "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/visionmedia/node-fresh#readme" } diff --git a/node_modules/send/node_modules/range-parser/package.json b/node_modules/send/node_modules/range-parser/package.json index f89cd572..5b3c80e6 100644 --- a/node_modules/send/node_modules/range-parser/package.json +++ b/node_modules/send/node_modules/range-parser/package.json @@ -39,5 +39,6 @@ "directories": {}, "_shasum": "c0427ffef51c10acba0782a46c9602e744ff620b", "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", - "_from": "range-parser@0.0.4" + "_from": "range-parser@0.0.4", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/send/package.json b/node_modules/send/package.json index ede56b5c..f6de34c5 100644 --- a/node_modules/send/package.json +++ b/node_modules/send/package.json @@ -53,5 +53,7 @@ ], "directories": {}, "_shasum": "be70d8d1be01de61821af13780b50345a4f71abd", - "_resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz" + "_resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/visionmedia/send#readme" } diff --git a/node_modules/simple-mime/package.json b/node_modules/simple-mime/package.json index 73cc43b9..e0abd233 100644 --- a/node_modules/simple-mime/package.json +++ b/node_modules/simple-mime/package.json @@ -13,9 +13,11 @@ }, "repository": { "type": "git", - "url": "http://github.com/creationix/simple-mime.git" + "url": "git+ssh://git@github.com/creationix/simple-mime.git" + }, + "bugs": { + "url": "http://github.com/creationix/simple-mime/issues" }, - "bugs": "http://github.com/creationix/simple-mime/issues", "engines": [ "node >= 0.2.0" ], @@ -39,5 +41,7 @@ "directories": {}, "_shasum": "052e70f8ef9f2f790f8f9452c67a1cb5cccf80d0", "_resolved": "https://registry.npmjs.org/simple-mime/-/simple-mime-0.0.8.tgz", - "_from": "simple-mime@>=0.0.8 <0.1.0" + "_from": "simple-mime@>=0.0.8 <0.1.0", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/creationix/simple-mime#readme" } diff --git a/node_modules/tern/node_modules/enhanced-resolve/node_modules/graceful-fs/package.json b/node_modules/tern/node_modules/enhanced-resolve/node_modules/graceful-fs/package.json index 8b9f028d..76ebca97 100644 --- a/node_modules/tern/node_modules/enhanced-resolve/node_modules/graceful-fs/package.json +++ b/node_modules/tern/node_modules/enhanced-resolve/node_modules/graceful-fs/package.json @@ -72,5 +72,6 @@ "host": "packages-18-east.internal.npmjs.com", "tmp": "tmp/graceful-fs-4.1.11.tgz_1479843029430_0.2122855328489095" }, - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/enhanced-resolve/node_modules/memory-fs/package.json b/node_modules/tern/node_modules/enhanced-resolve/node_modules/memory-fs/package.json index 37d7119d..ba9b50d9 100644 --- a/node_modules/tern/node_modules/enhanced-resolve/node_modules/memory-fs/package.json +++ b/node_modules/tern/node_modules/enhanced-resolve/node_modules/memory-fs/package.json @@ -12,7 +12,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/webpack/memory-fs.git" + "url": "git+https://github.com/webpack/memory-fs.git" }, "keywords": [ "fs", @@ -50,5 +50,6 @@ "shasum": "f2bb25368bc121e391c2520de92969caee0a0290", "tarball": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" }, - "_resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" + "_resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/enhanced-resolve/node_modules/tapable/package.json b/node_modules/tern/node_modules/enhanced-resolve/node_modules/tapable/package.json index 38dd0e49..503fb8a3 100644 --- a/node_modules/tern/node_modules/enhanced-resolve/node_modules/tapable/package.json +++ b/node_modules/tern/node_modules/enhanced-resolve/node_modules/tapable/package.json @@ -46,5 +46,6 @@ "tarball": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz" + "_resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/enhanced-resolve/package.json b/node_modules/tern/node_modules/enhanced-resolve/package.json index 9da27b5c..d240f528 100644 --- a/node_modules/tern/node_modules/enhanced-resolve/package.json +++ b/node_modules/tern/node_modules/enhanced-resolve/package.json @@ -61,5 +61,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz" + "_resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/glob/node_modules/minimatch/package.json b/node_modules/tern/node_modules/glob/node_modules/minimatch/package.json index b245f06f..68b547b8 100644 --- a/node_modules/tern/node_modules/glob/node_modules/minimatch/package.json +++ b/node_modules/tern/node_modules/glob/node_modules/minimatch/package.json @@ -53,5 +53,6 @@ }, "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", "directories": {}, - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz" + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/glob/package.json b/node_modules/tern/node_modules/glob/package.json index a5aa4d6c..12809818 100644 --- a/node_modules/tern/node_modules/glob/package.json +++ b/node_modules/tern/node_modules/glob/package.json @@ -53,5 +53,6 @@ "tarball": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz" + "_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/minimatch/node_modules/lru-cache/package.json b/node_modules/tern/node_modules/minimatch/node_modules/lru-cache/package.json index 233bca66..280389b7 100644 --- a/node_modules/tern/node_modules/minimatch/node_modules/lru-cache/package.json +++ b/node_modules/tern/node_modules/minimatch/node_modules/lru-cache/package.json @@ -53,5 +53,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/minimatch/node_modules/sigmund/package.json b/node_modules/tern/node_modules/minimatch/node_modules/sigmund/package.json index 658dbb81..546c28c0 100644 --- a/node_modules/tern/node_modules/minimatch/node_modules/sigmund/package.json +++ b/node_modules/tern/node_modules/minimatch/node_modules/sigmund/package.json @@ -55,5 +55,6 @@ "email": "i@izs.me" } ], - "_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/minimatch/package.json b/node_modules/tern/node_modules/minimatch/package.json index 81448179..858e91de 100644 --- a/node_modules/tern/node_modules/minimatch/package.json +++ b/node_modules/tern/node_modules/minimatch/package.json @@ -53,5 +53,6 @@ "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", "directories": {}, "_shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a", - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/node_modules/typescript/package.json b/node_modules/tern/node_modules/typescript/package.json index 99728fcf..cee7ab09 100644 --- a/node_modules/tern/node_modules/typescript/package.json +++ b/node_modules/tern/node_modules/typescript/package.json @@ -56,5 +56,6 @@ ], "directories": {}, "_shasum": "e8eacde3084a091d3fe29b60ac5862252662a25a", - "_resolved": "https://registry.npmjs.org/typescript/-/typescript-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/typescript/-/typescript-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tern/package.json b/node_modules/tern/package.json index d1861872..e996b89a 100644 --- a/node_modules/tern/package.json +++ b/node_modules/tern/package.json @@ -248,7 +248,7 @@ }, "homepage": "https://github.com/ternjs/tern#readme", "_id": "tern@0.16.1", - "_shasum": "d48fce89d544b6bdfb11a2e00076927583d71f4f", + "_shasum": "2a7d756f07dac279b9ed2a49ba930cf9cf97d645", "_from": "git+https://github.com/cloud9ide/tern.git#39015d544d4c00c7899fea4c95c2e5bc2720e68e", "_resolved": "git+https://github.com/cloud9ide/tern.git#39015d544d4c00c7899fea4c95c2e5bc2720e68e" } diff --git a/node_modules/tern_from_ts/package.json b/node_modules/tern_from_ts/package.json index 8aa42e67..53cbc9d7 100644 --- a/node_modules/tern_from_ts/package.json +++ b/node_modules/tern_from_ts/package.json @@ -20,7 +20,7 @@ "readme": "# tern_from_ts\n\nTern signatures extracted from typescript signatures.\n\nLicense: MIT\n\nSee also https://github.com/marijnh/tern and https://github.com/borisyankov/DefinitelyTyped\n", "readmeFilename": "README.md", "_id": "tern_from_ts@0.0.1", - "_shasum": "54cb5326591d20442b1578317d16aba3d9150a3b", + "_shasum": "8713975fb90fe744fdf5930e77bb61a9b44a87fb", "_from": "git+https://github.com/cloud9ide/tern_from_ts.git#66df507986bbdd63f3bc4f0c53edb39169ce4f1c", "_resolved": "git+https://github.com/cloud9ide/tern_from_ts.git#66df507986bbdd63f3bc4f0c53edb39169ce4f1c" } diff --git a/node_modules/through/package.json b/node_modules/through/package.json index e748e8f5..6128795d 100644 --- a/node_modules/through/package.json +++ b/node_modules/through/package.json @@ -25,7 +25,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/dominictarr/through.git" + "url": "git+https://github.com/dominictarr/through.git" }, "homepage": "http://github.com/dominictarr/through", "_id": "through@2.2.0", @@ -47,5 +47,9 @@ ], "directories": {}, "_shasum": "c4e5a200a3f1b480368196cf50bc69ffe2cdce73", - "_resolved": "https://registry.npmjs.org/through/-/through-2.2.0.tgz" + "_resolved": "https://registry.npmjs.org/through/-/through-2.2.0.tgz", + "bugs": { + "url": "https://github.com/dominictarr/through/issues" + }, + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tmp/node_modules/os-tmpdir/package.json b/node_modules/tmp/node_modules/os-tmpdir/package.json index 5c804ee4..2a26952c 100644 --- a/node_modules/tmp/node_modules/os-tmpdir/package.json +++ b/node_modules/tmp/node_modules/os-tmpdir/package.json @@ -70,5 +70,6 @@ "tmp": "tmp/os-tmpdir-1.0.2.tgz_1475211274587_0.14931037812493742" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/tmp/package.json b/node_modules/tmp/package.json index 0182ce5a..cdefff4c 100644 --- a/node_modules/tmp/package.json +++ b/node_modules/tmp/package.json @@ -68,5 +68,6 @@ "directories": {}, "_shasum": "6d34335889768d21b2bcda0aa277ced3b1bfadf9", "_resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "_from": "tmp@>=0.0.20 <0.1.0" + "_from": "tmp@>=0.0.20 <0.1.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/async/package.json b/node_modules/uglify-js/node_modules/async/package.json index c7e4d671..f7c3b7ea 100644 --- a/node_modules/uglify-js/node_modules/async/package.json +++ b/node_modules/uglify-js/node_modules/async/package.json @@ -8,7 +8,7 @@ "version": "0.2.10", "repository": { "type": "git", - "url": "https://github.com/caolan/async.git" + "url": "git+https://github.com/caolan/async.git" }, "bugs": { "url": "https://github.com/caolan/async/issues" @@ -54,5 +54,7 @@ ], "directories": {}, "_shasum": "b6bbe0b0674b9d719708ca38de8c237cb526c3d1", - "_resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "_resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/caolan/async#readme" } diff --git a/node_modules/uglify-js/node_modules/source-map/package.json b/node_modules/uglify-js/node_modules/source-map/package.json index 3b6475e6..4c62a204 100644 --- a/node_modules/uglify-js/node_modules/source-map/package.json +++ b/node_modules/uglify-js/node_modules/source-map/package.json @@ -199,24 +199,24 @@ }, "maintainers": [ { - "email": "tom@tromey.com", - "name": "tromey" + "name": "tromey", + "email": "tom@tromey.com" }, { - "email": "ejpbruel@gmail.com", - "name": "ejpbruel" + "name": "ejpbruel", + "email": "ejpbruel@gmail.com" }, { - "email": "nfitzgerald@mozilla.com", - "name": "mozilla-devtools" + "name": "mozilla-devtools", + "email": "nfitzgerald@mozilla.com" }, { - "email": "dherman@mozilla.com", - "name": "mozilla" + "name": "mozilla", + "email": "dherman@mozilla.com" }, { - "email": "fitzgen@gmail.com", - "name": "nickfitzgerald" + "name": "nickfitzgerald", + "email": "fitzgen@gmail.com" } ], "_npmOperationalInternal": { @@ -224,5 +224,6 @@ "tmp": "tmp/source-map-0.5.7.tgz_1503333015516_0.19087489508092403" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/uglify-to-browserify/package.json b/node_modules/uglify-js/node_modules/uglify-to-browserify/package.json index 38d69a2c..1542d04e 100644 --- a/node_modules/uglify-js/node_modules/uglify-to-browserify/package.json +++ b/node_modules/uglify-js/node_modules/uglify-to-browserify/package.json @@ -13,7 +13,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/ForbesLindesay/uglify-to-browserify.git" + "url": "git+https://github.com/ForbesLindesay/uglify-to-browserify.git" }, "author": { "name": "ForbesLindesay" @@ -42,5 +42,6 @@ ], "directories": {}, "_shasum": "6e0924d6bda6b5afe349e39a6d632850a0f882b7", - "_resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/camelcase/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/camelcase/package.json index c0c65933..69539bb9 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/camelcase/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/camelcase/package.json @@ -5,7 +5,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/sindresorhus/camelcase" + "url": "git+https://github.com/sindresorhus/camelcase.git" }, "author": { "name": "Sindre Sorhus", @@ -63,5 +63,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json index 61e96657..22cdcee8 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json @@ -75,5 +75,6 @@ "directories": {}, "_shasum": "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", "_resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "_from": "is-buffer@>=1.1.5 <2.0.0" + "_from": "is-buffer@>=1.1.5 <2.0.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/package.json index 9d266c7a..e815d002 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/package.json @@ -140,5 +140,6 @@ "tmp": "tmp/kind-of-3.2.2.tgz_1494958899918_0.23780996026471257" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/longest/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/longest/package.json index 648de139..ca9d53bc 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/longest/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/longest/package.json @@ -9,7 +9,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/jonschlinkert/longest.git" + "url": "git+https://github.com/jonschlinkert/longest.git" }, "bugs": { "url": "https://github.com/jonschlinkert/longest/issues" @@ -65,5 +65,6 @@ "tarball": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/repeat-string/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/repeat-string/package.json index f1ed51fa..056a4239 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/repeat-string/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/repeat-string/package.json @@ -129,5 +129,6 @@ "tmp": "tmp/repeat-string-1.6.1.tgz_1477241638674_0.3764322670176625" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + "_resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json index d247d6a3..e36d9c26 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json @@ -52,7 +52,7 @@ "gitHead": "7f08e823a54c6bda319d875895813537a66a4c5e", "_id": "align-text@0.1.4", "_shasum": "0cd90a561093f35d0a99256c22b7069433fad117", - "_from": "align-text@>=0.1.3 <0.2.0", + "_from": "align-text@>=0.1.1 <0.2.0", "_npmVersion": "3.6.0", "_nodeVersion": "5.5.0", "_npmUser": { @@ -78,5 +78,6 @@ "tmp": "tmp/align-text-0.1.4.tgz_1454377856920_0.9624228512402624" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" + "_resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/lazy-cache/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/lazy-cache/package.json index 6e87e3e9..16d7e55f 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/lazy-cache/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/lazy-cache/package.json @@ -90,5 +90,6 @@ "tmp": "tmp/lazy-cache-1.0.4.tgz_1461378859142_0.0996799839194864" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" + "_resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/package.json index de944684..894e8fcb 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/package.json @@ -83,5 +83,6 @@ "tmp": "tmp/center-align-0.1.3.tgz_1454366538829_0.9471865000668913" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz" + "_resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json index 61e96657..22cdcee8 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json @@ -75,5 +75,6 @@ "directories": {}, "_shasum": "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", "_resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "_from": "is-buffer@>=1.1.5 <2.0.0" + "_from": "is-buffer@>=1.1.5 <2.0.0", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/package.json index 9d266c7a..e815d002 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/package.json @@ -140,5 +140,6 @@ "tmp": "tmp/kind-of-3.2.2.tgz_1494958899918_0.23780996026471257" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/longest/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/longest/package.json index 648de139..ca9d53bc 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/longest/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/longest/package.json @@ -9,7 +9,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/jonschlinkert/longest.git" + "url": "git+https://github.com/jonschlinkert/longest.git" }, "bugs": { "url": "https://github.com/jonschlinkert/longest/issues" @@ -65,5 +65,6 @@ "tarball": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/repeat-string/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/repeat-string/package.json index f1ed51fa..056a4239 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/repeat-string/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/repeat-string/package.json @@ -129,5 +129,6 @@ "tmp": "tmp/repeat-string-1.6.1.tgz_1477241638674_0.3764322670176625" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + "_resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json index d247d6a3..e36d9c26 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json @@ -52,7 +52,7 @@ "gitHead": "7f08e823a54c6bda319d875895813537a66a4c5e", "_id": "align-text@0.1.4", "_shasum": "0cd90a561093f35d0a99256c22b7069433fad117", - "_from": "align-text@>=0.1.3 <0.2.0", + "_from": "align-text@>=0.1.1 <0.2.0", "_npmVersion": "3.6.0", "_nodeVersion": "5.5.0", "_npmUser": { @@ -78,5 +78,6 @@ "tmp": "tmp/align-text-0.1.4.tgz_1454377856920_0.9624228512402624" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" + "_resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/package.json index 31221136..ec0af5d6 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/package.json @@ -63,5 +63,6 @@ "tarball": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz" + "_resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/package.json index e8f689be..e28a5e9f 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/package.json @@ -52,5 +52,10 @@ ], "_shasum": "b79669bb42ecb409f83d583cad52ca17eaa1643f", "_resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "_from": "wordwrap@0.0.2" + "_from": "wordwrap@0.0.2", + "bugs": { + "url": "https://github.com/substack/node-wordwrap/issues" + }, + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/substack/node-wordwrap#readme" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/package.json index 65cd3de6..c680faa4 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/package.json @@ -8,7 +8,7 @@ }, "repository": { "type": "git", - "url": "http://github.com/bcoe/cliui.git" + "url": "git+ssh://git@github.com/bcoe/cliui.git" }, "config": { "blanket": { @@ -84,5 +84,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz" + "_resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/decamelize/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/decamelize/package.json index 4355a9d2..df02abd9 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/decamelize/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/decamelize/package.json @@ -67,5 +67,6 @@ "tmp": "tmp/decamelize-1.2.0.tgz_1457167749082_0.9810893186368048" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "_resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/node_modules/window-size/package.json b/node_modules/uglify-js/node_modules/yargs/node_modules/window-size/package.json index f23288f1..82ec7b26 100644 --- a/node_modules/uglify-js/node_modules/yargs/node_modules/window-size/package.json +++ b/node_modules/uglify-js/node_modules/yargs/node_modules/window-size/package.json @@ -9,7 +9,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/jonschlinkert/window-size.git" + "url": "git+https://github.com/jonschlinkert/window-size.git" }, "bugs": { "url": "https://github.com/jonschlinkert/window-size/issues" @@ -49,5 +49,6 @@ ], "directories": {}, "_shasum": "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d", - "_resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "_resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/node_modules/yargs/package.json b/node_modules/uglify-js/node_modules/yargs/package.json index 4a233c15..2ca6c695 100644 --- a/node_modules/uglify-js/node_modules/yargs/package.json +++ b/node_modules/uglify-js/node_modules/yargs/package.json @@ -115,5 +115,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" + "_resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/uglify-js/package.json b/node_modules/uglify-js/package.json index 9b78daa9..8ba92c69 100644 --- a/node_modules/uglify-js/package.json +++ b/node_modules/uglify-js/package.json @@ -86,5 +86,6 @@ "tmp": "tmp/uglify-js-2.6.4.tgz_1466594174144_0.2869670754298568" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz" + "_resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/ws/node_modules/options/package.json b/node_modules/ws/node_modules/options/package.json index 94f737c5..f60bb1ab 100644 --- a/node_modules/ws/node_modules/options/package.json +++ b/node_modules/ws/node_modules/options/package.json @@ -46,5 +46,6 @@ "tarball": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" + "_resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/ws/node_modules/ultron/package.json b/node_modules/ws/node_modules/ultron/package.json index cf23eff7..258514a3 100644 --- a/node_modules/ws/node_modules/ultron/package.json +++ b/node_modules/ws/node_modules/ultron/package.json @@ -69,5 +69,6 @@ "tarball": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" + "_resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/ws/package.json b/node_modules/ws/package.json index 60325272..c973fb6a 100644 --- a/node_modules/ws/package.json +++ b/node_modules/ws/package.json @@ -72,5 +72,6 @@ "tarball": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/package.json b/package.json index c528300d..6784d14c 100644 --- a/package.json +++ b/package.json @@ -49,5 +49,5 @@ }, "devDependencies": {}, "licenses": [], - "revision": "88d6d57e1688943d27c1cb056eeeff376c258dc8" + "revision": "39c4749d120ac27de1cb1d9f1f9ffd5f77f7feae" } diff --git a/plugins/c9.core/ext.js b/plugins/c9.core/ext.js index 8e07a19f..1ffa0303 100644 --- a/plugins/c9.core/ext.js +++ b/plugins/c9.core/ext.js @@ -1,3 +1,4 @@ +/*global apf*/ define(function(require, exports, module) { main.consumes = ["app"]; main.provides = ["ext", "Plugin"]; @@ -157,6 +158,7 @@ define(function(require, exports, module) { } function unloadRemotePlugin(id, options, callback) { + var vfs = architectApp.services.vfs; if (typeof options == "function") { callback = options; options = {}; diff --git a/plugins/c9.core/http-xhr.js b/plugins/c9.core/http-xhr.js index 5293b99a..cbecccab 100644 --- a/plugins/c9.core/http-xhr.js +++ b/plugins/c9.core/http-xhr.js @@ -115,7 +115,7 @@ define(function(require, module, exports) { try { data = JSON.parse(data); } catch (e) { - return done(e); + return done(new Error("JSON parsing error")); } } @@ -131,17 +131,13 @@ define(function(require, module, exports) { }; xhr.onerror = function(e) { - if (typeof XMLHttpRequestProgressEvent == "function" && e instanceof XMLHttpRequestProgressEvent) { - // No useful information in this object. - // Possibly CORS error if code was 0. - var err = new Error("Failed to retrieve resource from " + parsedUrl.host); - err.cause = e; - err.code = e.target.status; - return done(err); - } - e.code = e.target.status; - done(e); - }; + // No useful information in this object. Possibly CORS error if code was 0. + var code = e.target.status; + var err = new Error("Failed to retrieve resource from " + parsedUrl.href + " with code " + code); + err.cause = e; + err.code = code; + return done(err); + }; var called = false; function done(err, data, res) { @@ -196,9 +192,10 @@ define(function(require, module, exports) { function parseHeaders(headerString) { return headerString - .split('\u000d\u000a') + .trim() // on ie11 header string can start with single \n + .split("\r\n") .reduce(function(headers, headerPair) { - var index = headerPair.indexOf('\u003a\u0020'); + var index = headerPair.indexOf(": "); if (index > 0) { var key = headerPair.substring(0, index).toLowerCase(); var val = headerPair.substring(index + 2); diff --git a/plugins/c9.ide.run/runners-docker/Node.js (default).run b/plugins/c9.ide.run/runners-docker/Node.js (default).run index 11e6dc49..eb26cbcd 100644 --- a/plugins/c9.ide.run/runners-docker/Node.js (default).run +++ b/plugins/c9.ide.run/runners-docker/Node.js (default).run @@ -2,15 +2,15 @@ "script": [ "set -e", "if ! [ \"$debug\" == true ]; then ", - " node $file $args", + " node \"$file\" $args", "elif \"$(node -p 'parseInt(process.version.slice(1)) < 7')\" == true; then", " FLAGS=\"--nocrankshaft --nolazy --debug-brk=$debugport\"", " if node --nodead_code_elimination -e '' &> /dev/null; then", " FLAGS=\"$FLAGS --nodead_code_elimination\"", " fi", - " node $FLAGS $file $args", + " node $FLAGS \"$file\" $args", "else", - " node --inspect-brk=$debugport $file $args", + " node --inspect-brk=$debugport \"$file\" $args", "fi" ], "debugger": "v8", diff --git a/plugins/c9.ide.run/runners/C++ (simple).run b/plugins/c9.ide.run/runners/C++ (simple).run index 67459b77..3af0ec95 100644 --- a/plugins/c9.ide.run/runners/C++ (simple).run +++ b/plugins/c9.ide.run/runners/C++ (simple).run @@ -2,13 +2,13 @@ "script" : [ "set -e", "if [ \"$debug\" == true ]; then ", - "/usr/bin/g++ -ggdb3 -std=c++11 $file -o $file.o", + "/usr/bin/g++ -ggdb3 -std=c++11 \"$file\" -o \"$file.o\"", "chmod 755 \"$file.o\"", "node $HOME/.c9/bin/c9gdbshim.js \"$file.o\" $args", "else", - "/usr/bin/g++ -std=c++11 $file -o $file.o", - "chmod 755 $file.o", - "$file.o $args", + "/usr/bin/g++ -std=c++11 \"$file\" -o \"$file.o\"", + "chmod 755 \"$file.o\"", + "\"$file.o\" $args", "fi" ], "info": "Running $file", diff --git a/plugins/c9.ide.run/runners/Node.js.run b/plugins/c9.ide.run/runners/Node.js.run index 1879613f..e9d96c85 100644 --- a/plugins/c9.ide.run/runners/Node.js.run +++ b/plugins/c9.ide.run/runners/Node.js.run @@ -2,15 +2,15 @@ "script": [ "set -e", "if ! [ \"$debug\" == true ]; then ", - " node $file $args", + " node \"$file\" $args", "elif node --debug -e '' &> /dev/null; then", " FLAGS=\"--nocrankshaft --nolazy --debug-brk=$debugport\"", " if node --nodead_code_elimination -e '' &> /dev/null; then", " FLAGS=\"$FLAGS --nodead_code_elimination\"", " fi", - " node $FLAGS $file $args", + " node $FLAGS \"$file\" $args", "else", - " node --inspect-brk=$debugport $file $args", + " node --inspect-brk=$debugport \"$file\" $args", "fi" ], "debugger": "v8", diff --git a/plugins/c9.ide.run/runners/Python 2.run b/plugins/c9.ide.run/runners/Python 2.run index a4dd34bc..6e5c4711 100644 --- a/plugins/c9.ide.run/runners/Python 2.run +++ b/plugins/c9.ide.run/runners/Python 2.run @@ -1,9 +1,9 @@ { "script": [ "if [ \"$debug\" == true ]; then ", - " python2 -m ikpdb --ikpdb-port=15471 --ikpdb-working-directory=$project_path $file $args", + " python2 -m ikpdb --ikpdb-port=15471 --ikpdb-working-directory=$project_path \"$file\" $args", "else", - " python2 $file $args", + " python2 \"$file\" $args", "fi", "checkExitCode() {", " if [ $1 ] && [ \"$debug\" == true ]; then ", diff --git a/plugins/c9.ide.server/ide-statics.js b/plugins/c9.ide.server/ide-statics.js new file mode 100644 index 00000000..c5daa889 --- /dev/null +++ b/plugins/c9.ide.server/ide-statics.js @@ -0,0 +1,152 @@ +"use strict"; + +main.consumes = ["Plugin", "connect.static"]; +main.provides = ["c9.static.plugins"]; +module.exports = main; + +function main(options, imports, register) { + var Plugin = imports.Plugin; + var statics = imports["connect.static"]; + var fs = require("fs"); + + var whitelist = options.whitelist; + var blacklist = options.blacklist; + var externalPlugins = options.externalPlugins || []; + + /***** Initialization *****/ + + var plugin = new Plugin("Ajax.org", main.consumes); + + var loaded = false; + function load() { + if (loaded) return false; + loaded = true; + + var requirePaths = { + ace: "lib/ace/lib/ace", + ace_tree: "lib/ace_tree/lib/ace_tree", + treehugger: "lib/treehugger/lib/treehugger", + acorn: "lib/treehugger/lib/acorn", + jsonm: "lib/jsonm", + tern: "lib/tern", + tern_from_ts: "lib/tern_from_ts", + ui: "lib/ui", + c9: "lib/c9", + frontdoor: "lib/frontdoor", + outplan: "lib/outplan/dist/outplan", + }; + + [ + "acorn", + "tern", + "tern_from_ts", + "treehugger", + "jsonm", + "pivottable", + "architect", + "source-map", + "rusha", + "c9", + "ui", + "emmet", + "frontdoor", + "outplan", + "mocha", // TESTING + "chai", // TESTING + ].forEach(function(name) { + statics.addStatics([{ + path: __dirname + "/../../node_modules/" + name, + mount: "/lib/" + name + }]); + }); + + statics.addStatics([{ + path: __dirname + "/../node_modules/ace_tree", + mount: "/lib/ace_tree", + }]); + + statics.addStatics([{ + path: __dirname + "/../node_modules/ace", + mount: "/lib/ace", + rjs: requirePaths + }]); + + statics.addStatics(externalPlugins.map(function(plugin) { + if (typeof plugin == "string") + plugin = { path: plugin, mount: plugin }; + return { + path: __dirname + "/../../node_modules/" + plugin.path, + mount: "/plugins/" + plugin.mount + }; + })); + + try { + statics.addStatics( + fs.readdirSync(__dirname + "/../../user-plugins/").map(function(plugin) { + if (/^scripts$|\.(json|sh)$/.test(plugin)) + return; + return { + path: __dirname + "/../../user-plugins/" + plugin, + mount: "/plugins/" + plugin + }; + }).filter(Boolean) + ); + } catch (e) { + } + + statics.addStatics(fs.readdirSync(__dirname + "/../") + .filter(function(path) { + if (path in blacklist) + return false; + else if (path in whitelist) + return true; + else if (path.indexOf("c9.ide.") === 0) + return true; + else if (path.indexOf("c9.account") === 0) + return true; + else + return false; + }) + .map(function(path) { + return { + path: __dirname + "/../../plugins/" + path, + mount: "/plugins/" + path + }; + }) + ); + + + statics.addStatics([{ + path: __dirname + "/../../configs/ide", + mount: "/configs/ide" + }]); + + statics.addStatics([{ + path: __dirname + "/www", + mount: "/" + }]); + + statics.addStatics([{ + path: __dirname + "/../../docs", + mount: "/docs" + }]); + + } + + /***** Lifecycle *****/ + + plugin.on("load", function() { + load(); + }); + plugin.on("unload", function() { + loaded = false; + }); + + /***** Register and define API *****/ + + plugin.freezePublicAPI({}); + + register(null, { + "c9.static.plugins": plugin + }); +} \ No newline at end of file diff --git a/plugins/c9.ide.server/plugins.js b/plugins/c9.ide.server/plugins.js deleted file mode 100644 index 72de157f..00000000 --- a/plugins/c9.ide.server/plugins.js +++ /dev/null @@ -1,173 +0,0 @@ -/** - * Serve plugins on the static server - * - * @copyright 2013, Ajax.org B.V. - */ - -define(function(require, exports, module) { - "use strict"; - - main.consumes = ["Plugin", "connect.static"]; - main.provides = ["c9.static.plugins"]; - return main; - - - function main(options, imports, register) { - var Plugin = imports.Plugin; - var statics = imports["connect.static"]; - var fs = require("fs"); - - var whitelist = options.whitelist; - var blacklist = options.blacklist; - var externalPlugins = options.externalPlugins || []; - - /***** Initialization *****/ - - var plugin = new Plugin("Ajax.org", main.consumes); - - var loaded = false; - function load() { - if (loaded) return false; - loaded = true; - - var requirePaths = { - ace: "lib/ace/lib/ace", - ace_tree: "lib/ace_tree/lib/ace_tree", - treehugger: "lib/treehugger/lib/treehugger", - acorn: "lib/treehugger/lib/acorn", - jsonm: "lib/jsonm", - tern: "lib/tern", - tern_from_ts: "lib/tern_from_ts", - ui: "lib/ui", - c9: "lib/c9", - frontdoor: "lib/frontdoor", - outplan: "lib/outplan/dist/outplan", - }; - - if (whitelist === "*") { - statics.addStatics([{ - path: __dirname + "/../../node_modules", - mount: "/lib" - }]); - - statics.addStatics([{ - path: __dirname + "/../../plugins", - mount: "/plugins", - rjs: requirePaths - }]); - } else { - [ - "acorn", - "tern", - "tern_from_ts", - "treehugger", - "jsonm", - "pivottable", - "architect", - "source-map", - "rusha", - "c9", - "ui", - "emmet", - "frontdoor", - "outplan", - "mocha", // TESTING - "chai", // TESTING - ].forEach(function(name) { - statics.addStatics([{ - path: __dirname + "/../../node_modules/" + name, - mount: "/lib/" + name - }]); - }); - - statics.addStatics([{ - path: __dirname + "/../node_modules/ace_tree", - mount: "/lib/ace_tree", - }]); - - statics.addStatics([{ - path: __dirname + "/../node_modules/ace", - mount: "/lib/ace", - rjs: requirePaths - }]); - - statics.addStatics(externalPlugins.map(function(plugin) { - if (typeof plugin == "string") - plugin = { path: plugin, mount: plugin }; - return { - path: __dirname + "/../../node_modules/" + plugin.path, - mount: "/plugins/" + plugin.mount - }; - })); - - try { - statics.addStatics( - fs.readdirSync(__dirname + "/../../user-plugins/").map(function(plugin) { - if (/^scripts$|\.(json|sh)$/.test(plugin)) - return; - return { - path: __dirname + "/../../user-plugins/" + plugin, - mount: "/plugins/" + plugin - }; - }).filter(Boolean) - ); - } catch (e) { - } - - statics.addStatics(fs.readdirSync(__dirname + "/../") - .filter(function(path) { - if (path in blacklist) - return false; - else if (path in whitelist) - return true; - else if (path.indexOf("c9.ide.") === 0) - return true; - else if (path.indexOf("c9.account") === 0) - return true; - else - return false; - }) - .map(function(path) { - return { - path: __dirname + "/../../plugins/" + path, - mount: "/plugins/" + path - }; - }) - ); - } - - statics.addStatics([{ - path: __dirname + "/../../configs/ide", - mount: "/configs/ide" - }]); - - statics.addStatics([{ - path: __dirname + "/www", - mount: "/" - }]); - - statics.addStatics([{ - path: __dirname + "/../../docs", - mount: "/docs" - }]); - - } - - /***** Lifecycle *****/ - - plugin.on("load", function() { - load(); - }); - plugin.on("unload", function() { - loaded = false; - }); - - /***** Register and define API *****/ - - plugin.freezePublicAPI({}); - - register(null, { - "c9.static.plugins": plugin - }); - } -}); diff --git a/plugins/c9.nodeapi/events.js b/plugins/c9.nodeapi/events.js index 58f7ba45..f19b48d0 100644 --- a/plugins/c9.nodeapi/events.js +++ b/plugins/c9.nodeapi/events.js @@ -17,7 +17,8 @@ define(function(require, exports, module) { * ``` */ -var EventEmitter = exports.EventEmitter = function() {}; +var EventEmitter = module.exports = function() {}; +EventEmitter.EventEmitter = EventEmitter; var toString = Object.prototype.toString; diff --git a/plugins/c9.vfs.standalone/views/standalone.html.ejs b/plugins/c9.vfs.standalone/views/standalone.html.ejs index 62140524..88b77bc5 100644 --- a/plugins/c9.vfs.standalone/views/standalone.html.ejs +++ b/plugins/c9.vfs.standalone/views/standalone.html.ejs @@ -4,6 +4,7 @@ Cloud9 ')} + scripts.forEach(function(s) { + s = s.replace(/"/g, ""); + if (s == "ace/ace") { + comment("load ace"); + script("ace"); + } else { + var extName = s.match(/[^/]*$/)[0]; + comment("load ace " + extName + " extension"); + script("ext-" + extName); + } + }); + result.push(" + + + diff --git a/plugins/node_modules/ace/build_support/editor.html b/plugins/node_modules/ace/build_support/editor.html new file mode 100644 index 00000000..1d972cf9 --- /dev/null +++ b/plugins/node_modules/ace/build_support/editor.html @@ -0,0 +1,39 @@ + + + + + + Editor + + + + +
function foo(items) {
+    var i;
+    for (i = 0; i < items.length; i++) {
+        alert("Ace Rocks " + items[i]);
+    }
+}
+ + + + + + diff --git a/plugins/node_modules/ace/build_support/mini_require.js b/plugins/node_modules/ace/build_support/mini_require.js new file mode 100644 index 00000000..1ecbb78b --- /dev/null +++ b/plugins/node_modules/ace/build_support/mini_require.js @@ -0,0 +1,174 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/** + * Define a module along with a payload + * @param module a name for the payload + * @param payload a function to call with (require, exports, module) params + */ + +(function() { + +var ACE_NAMESPACE = ""; + +var global = (function() { return this; })(); +if (!global && typeof window != "undefined") global = window; // strict mode + + +if (!ACE_NAMESPACE && typeof requirejs !== "undefined") + return; + + +var define = function(module, deps, payload) { + if (typeof module !== "string") { + if (define.original) + define.original.apply(this, arguments); + else { + console.error("dropping module because define wasn\'t a string."); + console.trace(); + } + return; + } + if (arguments.length == 2) + payload = deps; + if (!define.modules[module]) { + define.payloads[module] = payload; + define.modules[module] = null; + } +}; + +define.modules = {}; +define.payloads = {}; + +/** + * Get at functionality define()ed using the function above + */ +var _require = function(parentId, module, callback) { + if (typeof module === "string") { + var payload = lookup(parentId, module); + if (payload != undefined) { + callback && callback(); + return payload; + } + } else if (Object.prototype.toString.call(module) === "[object Array]") { + var params = []; + for (var i = 0, l = module.length; i < l; ++i) { + var dep = lookup(parentId, module[i]); + if (dep == undefined && require.original) + return; + params.push(dep); + } + return callback && callback.apply(null, params) || true; + } +}; + +var require = function(module, callback) { + var packagedModule = _require("", module, callback); + if (packagedModule == undefined && require.original) + return require.original.apply(this, arguments); + return packagedModule; +}; + +var normalizeModule = function(parentId, moduleName) { + // normalize plugin requires + if (moduleName.indexOf("!") !== -1) { + var chunks = moduleName.split("!"); + return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]); + } + // normalize relative requires + if (moduleName.charAt(0) == ".") { + var base = parentId.split("/").slice(0, -1).join("/"); + moduleName = base + "/" + moduleName; + + while(moduleName.indexOf(".") !== -1 && previous != moduleName) { + var previous = moduleName; + moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); + } + } + return moduleName; +}; + +/** + * Internal function to lookup moduleNames and resolve them by calling the + * definition function if needed. + */ +var lookup = function(parentId, moduleName) { + moduleName = normalizeModule(parentId, moduleName); + + var module = define.modules[moduleName]; + if (!module) { + module = define.payloads[moduleName]; + if (typeof module === 'function') { + var exports = {}; + var mod = { + id: moduleName, + uri: '', + exports: exports, + packaged: true + }; + + var req = function(module, callback) { + return _require(moduleName, module, callback); + }; + + var returnValue = module(req, exports, mod); + exports = returnValue || mod.exports; + define.modules[moduleName] = exports; + delete define.payloads[moduleName]; + } + module = define.modules[moduleName] = exports || module; + } + return module; +}; + +function exportAce(ns) { + var root = global; + if (ns) { + if (!global[ns]) + global[ns] = {}; + root = global[ns]; + } + + if (!root.define || !root.define.packaged) { + define.original = root.define; + root.define = define; + root.define.packaged = true; + } + + if (!root.require || !root.require.packaged) { + require.original = root.require; + root.require = require; + root.require.packaged = true; + } +} + +exportAce(ACE_NAMESPACE); + +})(); diff --git a/plugins/node_modules/ace/build_support/style.css b/plugins/node_modules/ace/build_support/style.css new file mode 100644 index 00000000..3ca603b1 --- /dev/null +++ b/plugins/node_modules/ace/build_support/style.css @@ -0,0 +1,226 @@ +@import url(//fonts.googleapis.com/css?family=Droid+Sans+Mono); + +body { + margin:0; + padding:0; + background-color:#e6f5fc; + +} + +H2, H3, H4 { + font-family:Trebuchet MS; + font-weight:bold; + margin:0; + padding:0; +} + +H2 { + font-size:28px; + color:#263842; + padding-bottom:6px; +} + +H3 { + font-family:Trebuchet MS; + font-weight:bold; + font-size:22px; + color:#253741; + margin-top:43px; + margin-bottom:8px; +} + +H4 { + font-family:Trebuchet MS; + font-weight:bold; + font-size:21px; + color:#222222; + margin-bottom:4px; +} + +P { + padding:13px 0; + margin:0; + line-height:22px; +} + +UL{ + line-height : 22px; +} + +PRE{ + background : #333; + color : white; + padding : 10px; +} + +#header { + height : 227px; + position:relative; + overflow:hidden; + background: url(images/background.png) repeat-x 0 0; + border-bottom:1px solid #c9e8fa; +} + +#header .content .signature { + font-family:Trebuchet MS; + font-size:11px; + color:#ebe4d6; + position:absolute; + bottom:5px; + right:42px; + letter-spacing : 1px; +} + +.content { + width:970px; + position:relative; + margin:0 auto; +} + +#header .content { + height:184px; + margin-top:22px; +} + +#header .content .logo { + width : 282px; + height : 184px; + background:url(images/logo.png) no-repeat 0 0; + position:absolute; + top:0; + left:0; +} + +#header .content .title { + width : 605px; + height : 58px; + background:url(images/ace.png) no-repeat 0 0; + position:absolute; + top:98px; + left:329px; +} + +#wrapper { + background:url(images/body_background.png) repeat-x 0 0; + min-height:250px; +} + +#wrapper .content { + font-family:Arial; + font-size:14px; + color:#222222; + width:1000px; +} + +#wrapper .content .column1 { + position:relative; + float:left; + width:315px; + margin-right:31px; +} + +#wrapper .content .column2 { + position:relative; + overflow:hidden; + float:left; + width:600px; + padding-top:47px; +} + +.fork_on_github { + width:310px; + height:80px; + background:url(images/fork_on_github.png) no-repeat 0 0; + position:relative; + overflow:hidden; + margin-top:49px; + cursor:pointer; +} + +.fork_on_github:hover { + background-position:0 -80px; +} + +.divider { + height:3px; + background-color:#bedaea; + margin-bottom:3px; +} + +.menu { + padding:23px 0 0 24px; +} + +UL.content-list { + padding:15px; + margin:0; +} + +UL.menu-list { + padding:0; + margin:0 0 20px 0; + list-style-type:none; + line-height : 16px; +} + +UL.menu-list LI { + color:#2557b4; + font-family:Trebuchet MS; + font-size:14px; + padding:7px 0; + border-bottom:1px dotted #d6e2e7; +} + +UL.menu-list LI:last-child { + border-bottom:0; +} + +A { + color:#2557b4; + text-decoration:none; +} + +A:hover { + text-decoration:underline; +} + +P#first{ + background : rgba(255,255,255,0.5); + padding : 20px; + font-size : 16px; + line-height : 24px; + margin : 0 0 20px 0; +} + +#footer { + height:40px; + position:relative; + overflow:hidden; + background:url(images/bottombar.png) repeat-x 0 0; + position:relative; + margin-top:40px; +} + +UL.menu-footer { + padding:0; + margin:8px 11px 0 0; + list-style-type:none; + float:right; +} + +UL.menu-footer LI { + color:white; + font-family:Arial; + font-size:12px; + display:inline-block; + margin:0 1px; +} + +UL.menu-footer LI A { + color:#8dd0ff; + text-decoration:none; +} + +UL.menu-footer LI A:hover { + text-decoration:underline; +} diff --git a/plugins/node_modules/ace/demo/autocompletion.html b/plugins/node_modules/ace/demo/autocompletion.html new file mode 100644 index 00000000..e0de5ef3 --- /dev/null +++ b/plugins/node_modules/ace/demo/autocompletion.html @@ -0,0 +1,45 @@ + + + + + ACE Autocompletion demo + + + + +

+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/node_modules/ace/demo/autoresize.html b/plugins/node_modules/ace/demo/autoresize.html
new file mode 100644
index 00000000..b0464ecd
--- /dev/null
+++ b/plugins/node_modules/ace/demo/autoresize.html
@@ -0,0 +1,68 @@
+
+
+
+  
+  
+  Editor
+  
+
+
+
autoresizing editor
+
+
minHeight = 2 lines
+
+

+
+

+
+
+
+
+
+
+
+
diff --git a/plugins/node_modules/ace/demo/chromevox.html b/plugins/node_modules/ace/demo/chromevox.html
new file mode 100644
index 00000000..9aa65bae
--- /dev/null
+++ b/plugins/node_modules/ace/demo/chromevox.html
@@ -0,0 +1,39 @@
+
+
+
+  
+  ACE ChromeVox demo
+  
+
+
+
+

+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/node_modules/ace/demo/emmet.html b/plugins/node_modules/ace/demo/emmet.html
new file mode 100644
index 00000000..bd0d4abe
--- /dev/null
+++ b/plugins/node_modules/ace/demo/emmet.html
@@ -0,0 +1,43 @@
+
+
+
+  
+  ACE Emmet demo
+  
+
+
+
+

+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/node_modules/ace/demo/ie7.html b/plugins/node_modules/ace/demo/ie7.html
new file mode 100644
index 00000000..f5db8667
--- /dev/null
+++ b/plugins/node_modules/ace/demo/ie7.html
@@ -0,0 +1,44 @@
+
+
+
+  
+  
+  ACE Editor StatusBar Demo
+  
+
+
+
+
+require("ace/ext/old_ie");
+// now ace will work even on ie7!
+var editor = ace.edit("editor");
+
+ + + + + + + + diff --git a/plugins/node_modules/ace/demo/keyboard_shortcuts.html b/plugins/node_modules/ace/demo/keyboard_shortcuts.html new file mode 100644 index 00000000..3d01f559 --- /dev/null +++ b/plugins/node_modules/ace/demo/keyboard_shortcuts.html @@ -0,0 +1,51 @@ + + + + + + Editor + + + + +

+    
+
+
+
+
+
+
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/demo.js b/plugins/node_modules/ace/demo/kitchen-sink/demo.js
new file mode 100644
index 00000000..33b2dbc0
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/demo.js
@@ -0,0 +1,585 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2010, Ajax.org B.V.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Ajax.org B.V. nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+
+define(function(require, exports, module) {
+"use strict";
+
+require("ace/lib/fixoldbrowsers");
+
+require("ace/multi_select");
+require("ace/ext/spellcheck");
+require("./inline_editor");
+require("./dev_util");
+require("./file_drop");
+
+var config = require("ace/config");
+config.init();
+var env = {};
+
+var dom = require("ace/lib/dom");
+var net = require("ace/lib/net");
+var lang = require("ace/lib/lang");
+var useragent = require("ace/lib/useragent");
+
+var event = require("ace/lib/event");
+var theme = require("ace/theme/textmate");
+var EditSession = require("ace/edit_session").EditSession;
+var UndoManager = require("ace/undomanager").UndoManager;
+
+var HashHandler = require("ace/keyboard/hash_handler").HashHandler;
+
+var Renderer = require("ace/virtual_renderer").VirtualRenderer;
+var Editor = require("ace/editor").Editor;
+
+var whitespace = require("ace/ext/whitespace");
+
+
+
+var doclist = require("./doclist");
+var modelist = require("ace/ext/modelist");
+var themelist = require("ace/ext/themelist");
+var layout = require("./layout");
+var TokenTooltip = require("./token_tooltip").TokenTooltip;
+var util = require("./util");
+var saveOption = util.saveOption;
+var fillDropdown = util.fillDropdown;
+var bindCheckbox = util.bindCheckbox;
+var bindDropdown = util.bindDropdown;
+
+var ElasticTabstopsLite = require("ace/ext/elastic_tabstops_lite").ElasticTabstopsLite;
+
+var IncrementalSearch = require("ace/incremental_search").IncrementalSearch;
+
+
+var workerModule = require("ace/worker/worker_client");
+if (location.href.indexOf("noworker") !== -1) {
+    workerModule.WorkerClient = workerModule.UIWorkerClient;
+}
+
+/*********** create editor ***************************/
+var container = document.getElementById("editor-container");
+
+// Splitting.
+var Split = require("ace/split").Split;
+var split = new Split(container, theme, 1);
+env.editor = split.getEditor(0);
+split.on("focus", function(editor) {
+    env.editor = editor;
+    updateUIEditorOptions();
+});
+env.split = split;
+window.env = env;
+
+
+var consoleEl = dom.createElement("div");
+container.parentNode.appendChild(consoleEl);
+consoleEl.style.cssText = "position:fixed; bottom:1px; right:0;\
+border:1px solid #baf; z-index:100";
+
+var cmdLine = new layout.singleLineEditor(consoleEl);
+cmdLine.editor = env.editor;
+env.editor.cmdLine = cmdLine;
+
+env.editor.showCommandLine = function(val) {
+    this.cmdLine.focus();
+    if (typeof val == "string")
+        this.cmdLine.setValue(val, 1);
+};
+
+/**
+ * This demonstrates how you can define commands and bind shortcuts to them.
+ */
+env.editor.commands.addCommands([{
+    name: "gotoline",
+    bindKey: {win: "Ctrl-L", mac: "Command-L"},
+    exec: function(editor, line) {
+        if (typeof line == "object") {
+            var arg = this.name + " " + editor.getCursorPosition().row;
+            editor.cmdLine.setValue(arg, 1);
+            editor.cmdLine.focus();
+            return;
+        }
+        line = parseInt(line, 10);
+        if (!isNaN(line))
+            editor.gotoLine(line);
+    },
+    readOnly: true
+}, {
+    name: "snippet",
+    bindKey: {win: "Alt-C", mac: "Command-Alt-C"},
+    exec: function(editor, needle) {
+        if (typeof needle == "object") {
+            editor.cmdLine.setValue("snippet ", 1);
+            editor.cmdLine.focus();
+            return;
+        }
+        var s = snippetManager.getSnippetByName(needle, editor);
+        if (s)
+            snippetManager.insertSnippet(editor, s.content);
+    },
+    readOnly: true
+}, {
+    name: "focusCommandLine",
+    bindKey: "shift-esc|ctrl-`",
+    exec: function(editor, needle) { editor.cmdLine.focus(); },
+    readOnly: true
+}, {
+    name: "nextFile",
+    bindKey: "Ctrl-tab",
+    exec: function(editor) { doclist.cycleOpen(editor, 1); },
+    readOnly: true
+}, {
+    name: "previousFile",
+    bindKey: "Ctrl-shift-tab",
+    exec: function(editor) { doclist.cycleOpen(editor, -1); },
+    readOnly: true
+}, {
+    name: "execute",
+    bindKey: "ctrl+enter",
+    exec: function(editor) {
+        try {
+            var r = window.eval(editor.getCopyText() || editor.getValue());
+        } catch(e) {
+            r = e;
+        }
+        editor.cmdLine.setValue(r + "");
+    },
+    readOnly: true
+}, {
+    name: "showKeyboardShortcuts",
+    bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"},
+    exec: function(editor) {
+        config.loadModule("ace/ext/keybinding_menu", function(module) {
+            module.init(editor);
+            editor.showKeyboardShortcuts();
+        });
+    }
+}, {
+    name: "increaseFontSize",
+    bindKey: "Ctrl-=|Ctrl-+",
+    exec: function(editor) {
+        var size = parseInt(editor.getFontSize(), 10) || 12;
+        editor.setFontSize(size + 1);
+    }
+}, {
+    name: "decreaseFontSize",
+    bindKey: "Ctrl+-|Ctrl-_",
+    exec: function(editor) {
+        var size = parseInt(editor.getFontSize(), 10) || 12;
+        editor.setFontSize(Math.max(size - 1 || 1));
+    }
+}, {
+    name: "resetFontSize",
+    bindKey: "Ctrl+0|Ctrl-Numpad0",
+    exec: function(editor) {
+        editor.setFontSize(12);
+    }
+}]);
+
+
+env.editor.commands.addCommands(whitespace.commands);
+
+cmdLine.commands.bindKeys({
+    "Shift-Return|Ctrl-Return|Alt-Return": function(cmdLine) { cmdLine.insert("\n"); },
+    "Esc|Shift-Esc": function(cmdLine){ cmdLine.editor.focus(); },
+    "Return": function(cmdLine){
+        var command = cmdLine.getValue().split(/\s+/);
+        var editor = cmdLine.editor;
+        editor.commands.exec(command[0], editor, command[1]);
+        editor.focus();
+    }
+});
+
+cmdLine.commands.removeCommands(["find", "gotoline", "findall", "replace", "replaceall"]);
+
+var commands = env.editor.commands;
+commands.addCommand({
+    name: "save",
+    bindKey: {win: "Ctrl-S", mac: "Command-S"},
+    exec: function(arg) {
+        var session = env.editor.session;
+        var name = session.name.match(/[^\/]+$/);
+        localStorage.setItem(
+            "saved_file:" + name,
+            session.getValue()
+        );
+        env.editor.cmdLine.setValue("saved "+ name);
+    }
+});
+
+commands.addCommand({
+    name: "load",
+    bindKey: {win: "Ctrl-O", mac: "Command-O"},
+    exec: function(arg) {
+        var session = env.editor.session;
+        var name = session.name.match(/[^\/]+$/);
+        var value = localStorage.getItem("saved_file:" + name);
+        if (typeof value == "string") {
+            session.setValue(value);
+            env.editor.cmdLine.setValue("loaded "+ name);
+        } else {
+            env.editor.cmdLine.setValue("no previuos value saved for "+ name);
+        }
+    }
+});
+
+var keybindings = {
+    ace: null, // Null = use "default" keymapping
+    vim: require("ace/keyboard/vim").handler,
+    emacs: "ace/keyboard/emacs",
+    // This is a way to define simple keyboard remappings
+    custom: new HashHandler({
+        "gotoright":      "Tab",
+        "indent":         "]",
+        "outdent":        "[",
+        "gotolinestart":  "^",
+        "gotolineend":    "$"
+    })
+};
+
+
+
+/*********** manage layout ***************************/
+var consoleHeight = 20;
+function onResize() {
+    var left = env.split.$container.offsetLeft;
+    var width = document.documentElement.clientWidth - left;
+    container.style.width = width + "px";
+    container.style.height = document.documentElement.clientHeight - consoleHeight + "px";
+    env.split.resize();
+
+    consoleEl.style.width = width + "px";
+    cmdLine.resize();
+}
+
+window.onresize = onResize;
+onResize();
+
+/*********** options panel ***************************/
+var docEl = document.getElementById("doc");
+var modeEl = document.getElementById("mode");
+var wrapModeEl = document.getElementById("soft_wrap");
+var themeEl = document.getElementById("theme");
+var foldingEl = document.getElementById("folding");
+var selectStyleEl = document.getElementById("select_style");
+var highlightActiveEl = document.getElementById("highlight_active");
+var showHiddenEl = document.getElementById("show_hidden");
+var showGutterEl = document.getElementById("show_gutter");
+var showPrintMarginEl = document.getElementById("show_print_margin");
+var highlightSelectedWordE = document.getElementById("highlight_selected_word");
+var showHScrollEl = document.getElementById("show_hscroll");
+var showVScrollEl = document.getElementById("show_vscroll");
+var animateScrollEl = document.getElementById("animate_scroll");
+var softTabEl = document.getElementById("soft_tab");
+var behavioursEl = document.getElementById("enable_behaviours");
+
+fillDropdown(docEl, doclist.all);
+
+fillDropdown(modeEl, modelist.modes);
+var modesByName = modelist.modesByName;
+bindDropdown("mode", function(value) {
+    env.editor.session.setMode(modesByName[value].mode || modesByName.text.mode);
+    env.editor.session.modeName = value;
+});
+
+doclist.history = doclist.docs.map(function(doc) {
+    return doc.name;
+});
+doclist.history.index = 0;
+doclist.cycleOpen = function(editor, dir) {
+    var h = this.history;
+    h.index += dir;
+    if (h.index >= h.length)
+        h.index = 0;
+    else if (h.index <= 0)
+        h.index = h.length - 1;
+    var s = h[h.index];
+    docEl.value = s;
+    docEl.onchange();
+};
+doclist.addToHistory = function(name) {
+    var h = this.history;
+    var i = h.indexOf(name);
+    if (i != h.index) {
+        if (i != -1)
+            h.splice(i, 1);
+        h.index = h.push(name);
+    }
+};
+
+bindDropdown("doc", function(name) {
+    doclist.loadDoc(name, function(session) {
+        if (!session)
+            return;
+        doclist.addToHistory(session.name);
+        session = env.split.setSession(session);
+        whitespace.detectIndentation(session);
+        updateUIEditorOptions();
+        env.editor.focus();
+    });
+});
+
+
+function updateUIEditorOptions() {
+    var editor = env.editor;
+    var session = editor.session;
+
+    session.setFoldStyle(foldingEl.value);
+
+    saveOption(docEl, session.name);
+    saveOption(modeEl, session.modeName || "text");
+    saveOption(wrapModeEl, session.getUseWrapMode() ? session.getWrapLimitRange().min || "free" : "off");
+
+    saveOption(selectStyleEl, editor.getSelectionStyle() == "line");
+    saveOption(themeEl, editor.getTheme());
+    saveOption(highlightActiveEl, editor.getHighlightActiveLine());
+    saveOption(showHiddenEl, editor.getShowInvisibles());
+    saveOption(showGutterEl, editor.renderer.getShowGutter());
+    saveOption(showPrintMarginEl, editor.renderer.getShowPrintMargin());
+    saveOption(highlightSelectedWordE, editor.getHighlightSelectedWord());
+    saveOption(showHScrollEl, editor.renderer.getHScrollBarAlwaysVisible());
+    saveOption(animateScrollEl, editor.getAnimatedScroll());
+    saveOption(softTabEl, session.getUseSoftTabs());
+    saveOption(behavioursEl, editor.getBehavioursEnabled());
+}
+
+themelist.themes.forEach(function(x){ x.value = x.theme });
+fillDropdown(themeEl, {
+    Bright: themelist.themes.filter(function(x){return !x.isDark}),
+    Dark: themelist.themes.filter(function(x){return x.isDark}),
+});
+
+event.addListener(themeEl, "mouseover", function(e){
+    themeEl.desiredValue = e.target.value;
+    if (!themeEl.$timer)
+        themeEl.$timer = setTimeout(themeEl.updateTheme);
+});
+
+event.addListener(themeEl, "mouseout", function(e){
+    themeEl.desiredValue = null;
+    if (!themeEl.$timer)
+        themeEl.$timer = setTimeout(themeEl.updateTheme, 20);
+});
+
+themeEl.updateTheme = function(){
+    env.split.setTheme((themeEl.desiredValue || themeEl.selectedValue));
+    themeEl.$timer = null;
+};
+
+bindDropdown("theme", function(value) {
+    if (!value)
+        return;
+    env.editor.setTheme(value);
+    themeEl.selectedValue = value;
+});
+
+bindDropdown("keybinding", function(value) {
+    env.editor.setKeyboardHandler(keybindings[value]);
+});
+
+bindDropdown("fontsize", function(value) {
+    env.split.setFontSize(value);
+});
+
+bindDropdown("folding", function(value) {
+    env.editor.session.setFoldStyle(value);
+    env.editor.setShowFoldWidgets(value !== "manual");
+});
+
+bindDropdown("soft_wrap", function(value) {
+    env.editor.setOption("wrap", value);
+});
+
+bindCheckbox("select_style", function(checked) {
+    env.editor.setOption("selectionStyle", checked ? "line" : "text");
+});
+
+bindCheckbox("highlight_active", function(checked) {
+    env.editor.setHighlightActiveLine(checked);
+});
+
+bindCheckbox("show_hidden", function(checked) {
+    env.editor.setShowInvisibles(checked);
+});
+
+bindCheckbox("display_indent_guides", function(checked) {
+    env.editor.setDisplayIndentGuides(checked);
+});
+
+bindCheckbox("show_gutter", function(checked) {
+    env.editor.renderer.setShowGutter(checked);
+});
+
+bindCheckbox("show_print_margin", function(checked) {
+    env.editor.renderer.setShowPrintMargin(checked);
+});
+
+bindCheckbox("highlight_selected_word", function(checked) {
+    env.editor.setHighlightSelectedWord(checked);
+});
+
+bindCheckbox("show_hscroll", function(checked) {
+    env.editor.setOption("hScrollBarAlwaysVisible", checked);
+});
+
+bindCheckbox("show_vscroll", function(checked) {
+    env.editor.setOption("vScrollBarAlwaysVisible", checked);
+});
+
+bindCheckbox("animate_scroll", function(checked) {
+    env.editor.setAnimatedScroll(checked);
+});
+
+bindCheckbox("soft_tab", function(checked) {
+    env.editor.session.setUseSoftTabs(checked);
+});
+
+bindCheckbox("enable_behaviours", function(checked) {
+    env.editor.setBehavioursEnabled(checked);
+});
+
+bindCheckbox("fade_fold_widgets", function(checked) {
+    env.editor.setFadeFoldWidgets(checked);
+});
+bindCheckbox("read_only", function(checked) {
+    env.editor.setReadOnly(checked);
+});
+bindCheckbox("scrollPastEnd", function(checked) {
+    env.editor.setOption("scrollPastEnd", checked);
+});
+
+bindDropdown("split", function(value) {
+    var sp = env.split;
+    if (value == "none") {
+        sp.setSplits(1);
+    } else {
+        var newEditor = (sp.getSplits() == 1);
+        sp.setOrientation(value == "below" ? sp.BELOW : sp.BESIDE);
+        sp.setSplits(2);
+
+        if (newEditor) {
+            var session = sp.getEditor(0).session;
+            var newSession = sp.setSession(session, 1);
+            newSession.name = session.name;
+        }
+    }
+});
+
+
+bindCheckbox("elastic_tabstops", function(checked) {
+    env.editor.setOption("useElasticTabstops", checked);
+});
+
+var iSearchCheckbox = bindCheckbox("isearch", function(checked) {
+    env.editor.setOption("useIncrementalSearch", checked);
+});
+
+env.editor.addEventListener('incrementalSearchSettingChanged', function(event) {
+    iSearchCheckbox.checked = event.isEnabled;
+});
+
+
+function synchroniseScrolling() {
+    var s1 = env.split.$editors[0].session;
+    var s2 = env.split.$editors[1].session;
+    s1.on('changeScrollTop', function(pos) {s2.setScrollTop(pos)});
+    s2.on('changeScrollTop', function(pos) {s1.setScrollTop(pos)});
+    s1.on('changeScrollLeft', function(pos) {s2.setScrollLeft(pos)});
+    s2.on('changeScrollLeft', function(pos) {s1.setScrollLeft(pos)});
+}
+
+bindCheckbox("highlight_token", function(checked) {
+    var editor = env.editor;
+    if (editor.tokenTooltip && !checked) {
+        editor.tokenTooltip.destroy();
+        delete editor.tokenTooltip;
+    } else if (checked) {
+        editor.tokenTooltip = new TokenTooltip(editor);
+    }
+});
+
+var StatusBar = require("ace/ext/statusbar").StatusBar;
+new StatusBar(env.editor, cmdLine.container);
+
+
+var Emmet = require("ace/ext/emmet");
+net.loadScript("https://cloud9ide.github.io/emmet-core/emmet.js", function() {
+    Emmet.setCore(window.emmet);
+    env.editor.setOption("enableEmmet", true);
+});
+
+
+// require("ace/placeholder").PlaceHolder;
+
+var snippetManager = require("ace/snippets").snippetManager;
+
+env.editSnippets = function() {
+    var sp = env.split;
+    if (sp.getSplits() == 2) {
+        sp.setSplits(1);
+        return;
+    }
+    sp.setSplits(1);
+    sp.setSplits(2);
+    sp.setOrientation(sp.BESIDE);
+    var editor = sp.$editors[1];
+    var id = sp.$editors[0].session.$mode.$id || "";
+    var m = snippetManager.files[id];
+    if (!doclist["snippets/" + id]) {
+        var text = m.snippetText;
+        var s = doclist.initDoc(text, "", {});
+        s.setMode("ace/mode/snippets");
+        doclist["snippets/" + id] = s;
+    }
+    editor.on("blur", function() {
+        m.snippetText = editor.getValue();
+        snippetManager.unregister(m.snippets);
+        m.snippets = snippetManager.parseSnippetFile(m.snippetText, m.scope);
+        snippetManager.register(m.snippets);
+    });
+    sp.$editors[0].once("changeMode", function() {
+        sp.setSplits(1);
+    });
+    editor.setSession(doclist["snippets/" + id], 1);
+    editor.focus();
+};
+
+require("ace/ext/language_tools");
+env.editor.setOptions({
+    enableBasicAutocompletion: true,
+    enableLiveAutocompletion: false,
+    enableSnippets: true
+});
+
+var beautify = require("ace/ext/beautify");
+env.editor.commands.addCommands(beautify.commands);
+
+});
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/dev_util.js b/plugins/node_modules/ace/demo/kitchen-sink/dev_util.js
new file mode 100644
index 00000000..a7b9b096
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/dev_util.js
@@ -0,0 +1,217 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2010, Ajax.org B.V.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Ajax.org B.V. nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+var dom = require("ace/lib/dom");
+var Range = require("ace/range").Range;
+function warn() {
+    var s = (new Error()).stack || "";
+    s = s.split("\n");
+    if (s[1] == "Error") s.shift(); // remove error description on chrome
+    s.shift(); // remove warn
+    s.shift(); // remove the getter
+    s = s.join("\n");
+    // allow easy access to ace in console, but not in ace code
+    if (!/at Object.InjectedScript.|@debugger eval|snippets:\/{3}|:\d+:\d+/.test(s)) {
+        console.error("trying to access to global variable");
+    }
+}
+function def(o, key, get) {
+    try {
+        Object.defineProperty(o, key, {
+            configurable: true, 
+            get: get,
+            set: function(val) {
+                delete o[key];
+                o[key] = val;
+            }
+        });
+    } catch(e) {
+        console.error(e);
+    }
+}
+def(window, "ace", function(){ warn(); return window.env.editor });
+def(window, "editor", function(){ warn(); return window.env.editor });
+def(window, "session", function(){ warn(); return window.env.editor.session });
+def(window, "split", function(){ warn(); return window.env.split });
+
+
+def(window, "devUtil", function(){ warn(); return exports });
+exports.showTextArea = function(argument) {
+    dom.importCssString("\
+      .ace_text-input {\
+        position: absolute;\
+        z-index: 10!important;\
+        width: 6em!important;\
+        height: 1em;\
+        opacity: 1!important;\
+        background: rgba(0, 92, 255, 0.11);\
+        border: none;\
+        font: inherit;\
+        padding: 0 1px;\
+        margin: 0 -1px;\
+        text-indent: 0em;\
+    }\
+    ");
+};
+
+exports.addGlobals = function() {
+    window.oop = require("ace/lib/oop");
+    window.dom = require("ace/lib/dom");
+    window.Range = require("ace/range").Range;
+    window.Editor = require("ace/editor").Editor;
+    window.assert = require("ace/test/asyncjs/assert");
+    window.asyncjs = require("ace/test/asyncjs/async");
+    window.UndoManager = require("ace/undomanager").UndoManager;
+    window.EditSession = require("ace/edit_session").EditSession;
+    window.MockRenderer = require("ace/test/mockrenderer").MockRenderer;
+    window.EventEmitter = require("ace/lib/event_emitter").EventEmitter;
+    
+    window.getSelection = getSelection;
+    window.setSelection = setSelection;
+    window.testSelection = testSelection;
+};
+
+function getSelection(editor) {
+    var data = editor.multiSelect.toJSON();
+    if (!data.length) data = [data];
+    data = data.map(function(x) {
+        var a, c;
+        if (x.isBackwards) {
+            a = x.end;
+            c = x.start;
+        } else {
+            c = x.end;
+            a = x.start;
+        }
+        return Range.comparePoints(a, c) 
+            ? [a.row, a.column, c.row, c.column]
+            : [a.row, a.column];
+    });
+    return data.length > 1 ? data : data[0];
+}
+function setSelection(editor, data) {
+    if (typeof data[0] == "number")
+        data = [data];
+    editor.selection.fromJSON(data.map(function(x) {
+        var start = {row: x[0], column: x[1]};
+        var end = x.length == 2 ? start : {row: x[2], column: x[3]};
+        var isBackwards = Range.comparePoints(start, end) > 0;
+        return isBackwards ? {
+            start: end,
+            end: start,
+            isBackwards: true
+        } : {
+            start: start,
+            end: end,
+            isBackwards: true
+        };
+    }));
+}
+function testSelection(editor, data) {
+    assert.equal(getSelection(editor) + "", data + "");
+}
+
+exports.recordTestCase = function() {
+    exports.addGlobals();
+    var editor = window.editor;
+    var testcase = window.testcase = [];
+    var assert;
+
+    testcase.push({
+        type: "setValue",
+        data: editor.getValue()
+    }, {
+        type: "setSelection",
+        data: getSelection(editor)
+    });
+    editor.commands.on("afterExec", function(e) {
+        testcase.push({
+            type: "exec",
+            data: e
+        });
+        testcase.push({
+            type: "value",
+            data: editor.getValue()
+        });
+        testcase.push({
+            type: "selection",
+            data: getSelection(editor)
+        });
+    });
+    editor.on("mouseup", function() {
+        testcase.push({
+            type: "setSelection",
+            data: getSelection(editor)
+        });
+    });
+    
+    testcase.toString = function() {
+        var lastValue = "";
+        // var lastSelection = ""
+        var str = this.map(function(x) {
+            var data = x.data;
+            switch (x.type) {
+                case "exec": 
+                    return 'editor.execCommand("' 
+                        + data.command.name
+                        + (data.args ? '", ' + JSON.stringify(data.args) : '"')
+                    + ')';
+                case "setSelection":
+                    return 'setSelection(editor, ' + JSON.stringify(data)  + ')';
+                case "setValue":
+                    if (lastValue != data) {
+                        lastValue = data;
+                        return 'editor.setValue(' + JSON.stringify(data) + ', -1)';
+                    }
+                    return;
+                case "selection":
+                    return 'testSelection(editor, ' + JSON.stringify(data) + ')';
+                case "value":
+                    if (lastValue != data) {
+                        lastValue = data;
+                        return 'assert.equal('
+                            + 'editor.getValue(),'
+                            + JSON.stringify(data)
+                        + ')';
+                    }
+                    return;
+            }
+        }).filter(Boolean).join("\n");
+        
+        return getSelection + "\n"
+            + testSelection + "\n"
+            + setSelection + "\n"
+            + "\n" + str + "\n";
+    };
+};
+
+
+});
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/doclist.js b/plugins/node_modules/ace/demo/kitchen-sink/doclist.js
new file mode 100644
index 00000000..a4848d50
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/doclist.js
@@ -0,0 +1,218 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2010, Ajax.org B.V.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Ajax.org B.V. nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+ define(function(require, exports, module) {
+"use strict";
+
+var EditSession = require("ace/edit_session").EditSession;
+var UndoManager = require("ace/undomanager").UndoManager;
+var net = require("ace/lib/net");
+
+var modelist = require("ace/ext/modelist");
+/*********** demo documents ***************************/
+var fileCache = {};
+
+function initDoc(file, path, doc) {
+    if (doc.prepare)
+        file = doc.prepare(file);
+
+    var session = new EditSession(file);
+    session.setUndoManager(new UndoManager());
+    doc.session = session;
+    doc.path = path;
+    session.name = doc.name;
+    if (doc.wrapped) {
+        session.setUseWrapMode(true);
+        session.setWrapLimitRange(80, 80);
+    }
+    var mode = modelist.getModeForPath(path);
+    session.modeName = mode.name;
+    session.setMode(mode.mode);
+    return session;
+}
+
+
+function makeHuge(txt) {
+    for (var i = 0; i < 5; i++)
+        txt += txt;
+    return txt;
+}
+
+var docs = {
+    "docs/javascript.js": {order: 1, name: "JavaScript"},
+
+    "docs/latex.tex": {name: "LaTeX", wrapped: true},
+    "docs/markdown.md": {name: "Markdown", wrapped: true},
+    "docs/mushcode.mc": {name: "MUSHCode", wrapped: true},
+    "docs/pgsql.pgsql": {name: "pgSQL", wrapped: true},
+    "docs/plaintext.txt": {name: "Plain Text", prepare: makeHuge, wrapped: true},
+    "docs/sql.sql": {name: "SQL", wrapped: true},
+
+    "docs/textile.textile": {name: "Textile", wrapped: true},
+
+    "docs/c9search.c9search_results": "C9 Search Results",
+    "docs/mel.mel": "MEL",
+    "docs/Nix.nix": "Nix"
+};
+
+var ownSource = {
+    /* filled from require*/
+};
+
+var hugeDocs = require.toUrl ? {
+    "build/src/ace.js": "",
+    "build/src-min/ace.js": ""
+} : {
+    "src/ace.js": "",
+    "src-min/ace.js": ""
+};
+
+modelist.modes.forEach(function(m) {
+    var ext = m.extensions.split("|")[0];
+    if (ext[0] === "^") {
+        path = ext.substr(1);
+    } else {
+        var path = m.name + "." + ext;
+    }
+    path = "docs/" + path;
+    if (!docs[path]) {
+        docs[path] = {name: m.caption};
+    } else if (typeof docs[path] == "object" && !docs[path].name) {
+        docs[path].name = m.caption;
+    }
+});
+
+
+
+if (window.require && window.require.s) try {
+    for (var path in window.require.s.contexts._.defined) {
+        if (path.indexOf("!") != -1)
+            path = path.split("!").pop();
+        else
+            path = path + ".js";
+        ownSource[path] = "";
+    }
+} catch(e) {}
+
+function sort(list) {
+    return list.sort(function(a, b) {
+        var cmp = (b.order || 0) - (a.order || 0);
+        return cmp || a.name && a.name.localeCompare(b.name);
+    });
+}
+
+function prepareDocList(docs) {
+    var list = [];
+    for (var path in docs) {
+        var doc = docs[path];
+        if (typeof doc != "object")
+            doc = {name: doc || path};
+
+        doc.path = path;
+        doc.desc = doc.name.replace(/^(ace|docs|demo|build)\//, "");
+        if (doc.desc.length > 18)
+            doc.desc = doc.desc.slice(0, 7) + ".." + doc.desc.slice(-9);
+
+        fileCache[doc.name] = doc;
+        list.push(doc);
+    }
+
+    return list;
+}
+
+function loadDoc(name, callback) {
+    var doc = fileCache[name];
+    if (!doc)
+        return callback(null);
+
+    if (doc.session)
+        return callback(doc.session);
+
+    // TODO: show load screen while waiting
+    var path = doc.path;
+    var parts = path.split("/");
+    if (parts[0] == "docs")
+        path = "demo/kitchen-sink/" + path;
+    else if (parts[0] == "ace")
+        path = "lib/" + path;
+
+    net.get(path, function(x) {
+        initDoc(x, path, doc);
+        callback(doc.session);
+    });
+}
+
+function saveDoc(name, callback) {
+    var doc = fileCache[name] || name;
+    if (!doc || !doc.session)
+        return callback("Unknown document: " + name);
+
+    var path = doc.path;
+    var parts = path.split("/");
+    if (parts[0] == "docs")
+        path = "demo/kitchen-sink/" + path;
+    else if (parts[0] == "ace")
+        path = "lib/" + path;
+
+    upload(path, doc.session.getValue(), callback);
+}
+
+function upload(url, data, callback) {
+    url = net.qualifyURL(url);
+    if (!/https?:/.test(url))
+        return callback(new Error("Unsupported url scheme"));
+    var xhr = new XMLHttpRequest();
+    xhr.open("PUT", url, true);
+    xhr.onreadystatechange = function () {
+        if (xhr.readyState === 4) {
+            callback(!/^2../.test(xhr.status));
+        }
+    };
+    xhr.send(data);
+};
+
+
+module.exports = {
+    fileCache: fileCache,
+    docs: sort(prepareDocList(docs)),
+    ownSource: prepareDocList(ownSource),
+    hugeDocs: prepareDocList(hugeDocs),
+    initDoc: initDoc,
+    loadDoc: loadDoc,
+    saveDoc: saveDoc,
+};
+module.exports.all = {
+    "Mode Examples": module.exports.docs,
+    "Huge documents": module.exports.hugeDocs,
+    "own source": module.exports.ownSource
+};
+
+});
+
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/Dockerfile b/plugins/node_modules/ace/demo/kitchen-sink/docs/Dockerfile
new file mode 100644
index 00000000..70270cbf
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/Dockerfile
@@ -0,0 +1,53 @@
+#
+# example Dockerfile for http://docs.docker.io/en/latest/examples/postgresql_service/
+#
+
+FROM ubuntu
+MAINTAINER SvenDowideit@docker.com
+
+# Add the PostgreSQL PGP key to verify their Debian packages.
+# It should be the same key as https://www.postgresql.org/media/keys/ACCC4CF8.asc 
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8
+
+# Add PostgreSQL's repository. It contains the most recent stable release
+#     of PostgreSQL, ``9.3``.
+RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list
+
+# Update the Ubuntu and PostgreSQL repository indexes
+RUN apt-get update
+
+# Install ``python-software-properties``, ``software-properties-common`` and PostgreSQL 9.3
+#  There are some warnings (in red) that show up during the build. You can hide
+#  them by prefixing each apt-get statement with DEBIAN_FRONTEND=noninteractive
+RUN apt-get -y -q install python-software-properties software-properties-common
+RUN apt-get -y -q install postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
+
+# Note: The official Debian and Ubuntu images automatically ``apt-get clean``
+# after each ``apt-get`` 
+
+# Run the rest of the commands as the ``postgres`` user created by the ``postgres-9.3`` package when it was ``apt-get installed``
+USER postgres
+
+# Create a PostgreSQL role named ``docker`` with ``docker`` as the password and
+# then create a database `docker` owned by the ``docker`` role.
+# Note: here we use ``&&\`` to run commands one after the other - the ``\``
+#       allows the RUN command to span multiple lines.
+RUN    /etc/init.d/postgresql start &&\
+    psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\
+    createdb -O docker docker
+
+# Adjust PostgreSQL configuration so that remote connections to the
+# database are possible. 
+RUN echo "host all  all    0.0.0.0/0  md5" >> /etc/postgresql/9.3/main/pg_hba.conf
+
+# And add ``listen_addresses`` to ``/etc/postgresql/9.3/main/postgresql.conf``
+RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf
+
+# Expose the PostgreSQL port
+EXPOSE 5432
+
+# Add VOLUMEs to allow backup of config, logs and databases
+VOLUME	["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
+
+# Set the default command to run when starting the container
+CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/Haxe.hx b/plugins/node_modules/ace/demo/kitchen-sink/docs/Haxe.hx
new file mode 100644
index 00000000..ab205bba
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/Haxe.hx
@@ -0,0 +1,17 @@
+class Haxe 
+{
+    public static function main() 
+    {
+        // Say Hello!
+        var greeting:String = "Hello World";
+        trace(greeting);
+        
+        var targets:Array = ["Flash","Javascript","PHP","Neko","C++","iOS","Android","webOS"];
+        trace("Haxe is a great language that can target:");
+        for (target in targets)
+        {
+            trace (" - " + target);
+        }
+        trace("And many more!");
+    }
+}
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/Jack.jack b/plugins/node_modules/ace/demo/kitchen-sink/docs/Jack.jack
new file mode 100644
index 00000000..15acf743
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/Jack.jack
@@ -0,0 +1,247 @@
+vars it, p
+
+p = {label, value|
+  print("\n" + label)
+  print(inspect(value))
+}
+-- Create an array from 0 to 15
+p("range", i-collect(range(5)))
+
+-- Create an array from 0 to 15 and break up in chunks of 4
+p("chunked range", i-collect(i-chunk(4, range(16))))
+
+-- Check if all or none items in stream pass test.
+p("all < 60 in range(60)", i-all?({i|i<60}, range(60)))
+p("any < 60 in range(60)", i-any?({i|i>60}, range(60)))
+p("all < 60 in range(70)", i-all?({i|i<60}, range(70)))
+p("any < 60 in range(70)", i-any?({i|i>60}, range(70)))
+
+-- Zip three different collections together
+p("zipped", i-collect(i-zip(
+  range(10),
+  [1,2,3,4,5],
+  i-map({i|i*i}, range(10))
+)))
+
+vars names, person, i, doubles, lengths, cubeRange
+names = ["Thorin", "Dwalin", "Balin", "Bifur", "Bofur", "Bombur", "Oin",
+         "Gloin", "Ori", "Nori", "Dori", "Fili", "Kili", "Bilbo", "Gandalf"]
+
+for name in names {
+  if name != "Bilbo" && name != "Gandalf" {
+    print(name)
+  }
+}
+
+person = {name: "Tim", age: 30}
+for key, value in person {
+  print(key + " = " + value)
+}
+
+i = 0
+while i < 10 {
+  i = i + 1
+  print(i)
+}
+
+print("range")
+for i in range(10) {
+  print(i + 1)
+}
+for i in range(10) {
+  print(10 - i)
+}
+
+-- Dynamic object that gives the first 10 doubles
+doubles = {
+  @len: {| 10 }
+  @get: {key|
+    if key is Integer { key * key }
+  }
+}
+print("#doubles", #doubles)
+
+print("Doubles")
+for k, v in doubles {
+  print([k, v])
+}
+
+-- Dynamic object that has names list as keys and string lenth as values
+lengths = {
+  @keys: {| names }
+  @get: {key|
+    if key is String { #key }
+  }
+}
+
+print ("Lengths")
+for k, v in lengths {
+  print([k, v])
+}
+
+
+cubeRange = {n|
+  vars i, v
+  i = 0
+  {
+    @call: {|
+      v = i
+      i = i + 1
+      if v < n { v * v * v }
+    }
+  }
+}
+
+print("Cubes")
+for k, v in cubeRange(5) {
+  print([k, v])
+}
+print("String")
+for k, v in "Hello World" {
+  print([k, v])
+}
+
+
+print([i for i in range(10)])
+print([i for i in range(20) if i % 3])
+
+
+
+-- Example showing how to do parallel work using split..and
+base = {bootstrap, target-dir|
+  split {
+    copy("res", target-dir)
+  } and {
+    if newer("src/*.less", target-dir + "/style.css") {
+      lessc("src/" + bootstrap + ".less", target-dir + "/style.css")
+    }
+  } and {
+    build("src/" + bootstrap + ".js", target-dir + "/app.js")
+  }
+}
+
+
+vars Dragon, pet
+
+Dragon = {name|
+  vars asleep, stuff-in-belly, stuff-in-intestine,
+       feed, walk, put-to-bed, toss, rock,
+       hungry?, poopy?, passage-of-time
+
+  asleep = false
+  stuff-in-belly     = 10 -- He's full.
+  stuff-in-intestine =  0 -- He doesn't need to go.
+
+  print(name + ' is born.')
+
+  feed = {|
+    print('You feed ' + name + '.')
+    stuff-in-belly = 10
+    passage-of-time()
+  }
+
+  walk = {|
+    print('You walk ' + name + ".")
+    stuff-in-intestine = 0
+    passage-of-time
+  }
+
+  put-to-bed = {|
+    print('You put ' + name + ' to bed.')
+    asleep = true
+    for i in range(3) {
+      if asleep {
+        passage-of-time()
+      }
+      if asleep {
+        print(name + ' snores, filling the room with smoke.')
+      }
+    }
+    if asleep {
+      asleep = false
+      print(name + ' wakes up slowly.')
+    }
+  }
+
+  toss = {|
+    print('You toss ' + name + ' up into the air.')
+    print('He giggles, which singes your eyebrows.')
+    passage-of-time()
+  }
+
+  rock = {|
+    print('You rock ' + name + ' gently.')
+    asleep = true
+    print('He briefly dozes off...')
+    passage-of-time()
+    if asleep {
+      asleep = false
+      print('...but wakes when you stop.')
+    }
+  }
+
+  hungry? = {|
+    stuff-in-belly <= 2
+  }
+
+  poopy? = {|
+    stuff-in-intestine >= 8
+  }
+
+  passage-of-time = {|
+    if stuff-in-belly > 0 {
+      -- Move food from belly to intestine
+      stuff-in-belly     = stuff-in-belly     - 1
+      stuff-in-intestine = stuff-in-intestine + 1
+    } else { -- Our dragon is starving!
+      if asleep {
+        asleep = false
+        print('He wakes up suddenly!')
+      }
+      print(name + ' is starving! In desperation, he ate YOU!')
+      abort "died"
+    }
+
+    if stuff-in-intestine >= 10 {
+      stuff-in-intestine = 0
+      print('Whoops! ' + name + ' had an accident...')
+    }
+
+    if hungry?() {
+      if asleep {
+        asleep = false
+        print('He wakes up suddenly!')
+      }
+      print(name + "'s stomach grumbles...")
+    }
+
+    if poopy?() {
+      if asleep {
+        asleep = false
+        print('He wakes up suddenly!')
+      }
+      print(name + ' does the potty dance...')
+    }
+  }
+
+  -- Export the public interface to this closure object.
+  {
+   feed: feed
+   walk: walk
+   put-to-bed: put-to-bed
+   toss: toss
+   rock: rock
+  }
+
+}
+
+pet = Dragon('Norbert')
+pet.feed()
+pet.toss()
+pet.walk()
+pet.put-to-bed()
+pet.rock()
+pet.put-to-bed()
+pet.put-to-bed()
+pet.put-to-bed()
+pet.put-to-bed()
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/Makefile b/plugins/node_modules/ace/demo/kitchen-sink/docs/Makefile
new file mode 100644
index 00000000..9b0b31ac
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/Makefile
@@ -0,0 +1,122 @@
+.PHONY:    apf ext worker mode theme package test
+
+default: apf worker
+
+update: worker
+
+# packages apf
+
+# This is the first line of a comment \
+and this is still part of the comment \
+as is this, since I keep ending each line \
+with a backslash character
+
+apf:
+    cd node_modules/packager; node package.js projects/apf_cloud9.apr
+	cd node_modules/packager; cat build/apf_release.js | sed 's/\(\/\*FILEHEAD(\).*//g' > ../../plugins-client/lib.apf/www/apf-packaged/apf_release.js
+
+# package debug version of apf
+apfdebug:
+	cd node_modules/packager/projects; cat apf_cloud9.apr | sed 's///g' > apf_cloud9_debug2.apr
+	cd node_modules/packager/projects; cat apf_cloud9_debug2.apr | sed 's/apf_release/apf_debug/g' > apf_cloud9_debug.apr; rm apf_cloud9_debug2.apr
+	cd node_modules/packager; node package.js projects/apf_cloud9_debug.apr
+	cd node_modules/packager; cat build/apf_debug.js | sed 's/\(\/\*FILEHEAD(\).*\/apf\/\(.*\)/\1\2/g' > ../../plugins-client/lib.apf/www/apf-packaged/apf_debug.js
+
+# package_apf--temporary fix for non-workering infra
+pack_apf:
+	mkdir -p build/src
+	mv plugins-client/lib.apf/www/apf-packaged/apf_release.js build/src/apf_release.js
+	node build/r.js -o name=./build/src/apf_release.js out=./plugins-client/lib.apf/www/apf-packaged/apf_release.js baseUrl=.
+
+# makes ace; at the moment, requires dryice@0.4.2
+ace:
+	cd node_modules/ace; make clean pre_build; ./Makefile.dryice.js minimal
+
+
+# packages core
+core: ace
+	mkdir -p build/src
+	node build/r.js -o build/core.build.js
+
+# generates packed template
+helper: 
+	node build/packed_helper.js
+
+helper_clean:
+	mkdir -p build/src
+	node build/packed_helper.js 1
+
+# packages ext
+ext: 
+	node build/r.js -o build/app.build.js
+
+# calls dryice on worker & packages it
+worker: plugins-client/lib.ace/www/worker/worker-language.js
+
+plugins-client/lib.ace/www/worker/worker-language.js plugins-client/lib.ace/www/worker/worker-javascript.js : \
+        $(wildcard node_modules/ace/*) $(wildcard node_modules/ace/*/*) $(wildcard node_modules/ace/*/*/mode/*) \
+        $(wildcard plugins-client/ext.language/*) \
+        $(wildcard plugins-client/ext.language/*/*) \
+        $(wildcard plugins-client/ext.linereport/*) \
+        $(wildcard plugins-client/ext.codecomplete/*) \
+        $(wildcard plugins-client/ext.codecomplete/*/*) \
+        $(wildcard plugins-client/ext.jslanguage/*) \
+        $(wildcard plugins-client/ext.jslanguage/*/*) \
+        $(wildcard plugins-client/ext.csslanguage/*) \
+        $(wildcard plugins-client/ext.csslanguage/*/*) \
+        $(wildcard plugins-client/ext.htmllanguage/*) \
+        $(wildcard plugins-client/ext.htmllanguage/*/*) \
+        $(wildcard plugins-client/ext.jsinfer/*) \
+        $(wildcard plugins-client/ext.jsinfer/*/*) \
+        $(wildcard node_modules/treehugger/lib/*) \
+        $(wildcard node_modules/treehugger/lib/*/*) \
+        $(wildcard node_modules/ace/lib/*) \
+        $(wildcard node_modules/ace/*/*) \
+        Makefile.dryice.js
+	mkdir -p plugins-client/lib.ace/www/worker
+	rm -rf /tmp/c9_worker_build
+	mkdir -p /tmp/c9_worker_build/ext
+	ln -s `pwd`/plugins-client/ext.language /tmp/c9_worker_build/ext/language
+	ln -s `pwd`/plugins-client/ext.codecomplete /tmp/c9_worker_build/ext/codecomplete
+	ln -s `pwd`/plugins-client/ext.jslanguage /tmp/c9_worker_build/ext/jslanguage
+	ln -s `pwd`/plugins-client/ext.csslanguage /tmp/c9_worker_build/ext/csslanguage
+	ln -s `pwd`/plugins-client/ext.htmllanguage /tmp/c9_worker_build/ext/htmllanguage
+	ln -s `pwd`/plugins-client/ext.linereport /tmp/c9_worker_build/ext/linereport
+	ln -s `pwd`/plugins-client/ext.linereport_php /tmp/c9_worker_build/ext/linereport_php
+	node Makefile.dryice.js worker
+	cp node_modules/ace/build/src/worker* plugins-client/lib.ace/www/worker
+
+define 
+
+ifeq
+
+override
+
+# copies built ace modes
+mode:
+	mkdir -p plugins-client/lib.ace/www/mode
+	cp `find node_modules/ace/build/src | grep -E "mode-[a-zA-Z_0-9]+.js"`  plugins-client/lib.ace/www/mode
+
+# copies built ace themes
+theme:
+	mkdir -p plugins-client/lib.ace/www/theme
+	cp `find node_modules/ace/build/src | grep -E "theme-[a-zA-Z_0-9]+.js"` plugins-client/lib.ace/www/theme
+
+gzip_safe:
+	for i in `ls ./plugins-client/lib.packed/www/*.js`; do \
+		gzip -9 -v -c -q -f $$i > $$i.gz ; \
+	done
+
+gzip:
+	for i in `ls ./plugins-client/lib.packed/www/*.js`; do \
+		gzip -9 -v -q -f $$i ; \
+	done
+
+c9core: apf ace core worker mode theme
+    
+package_clean: helper_clean c9core ext
+
+package: helper c9core ext
+
+test check:
+	test/run-tests.sh	
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/Nix.nix b/plugins/node_modules/ace/demo/kitchen-sink/docs/Nix.nix
new file mode 100644
index 00000000..9476db3b
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/Nix.nix
@@ -0,0 +1,57 @@
+{
+  # Name of our deployment
+  network.description = "HelloWorld";
+  # Enable rolling back to previous versions of our infrastructure
+  network.enableRollback = true;
+
+  # It consists of a single server named 'helloserver'
+  helloserver =
+    # Every server gets passed a few arguments, including a reference
+    # to nixpkgs (pkgs)
+    { config, pkgs, ... }:
+    let
+      # We import our custom packages from ./default passing pkgs as argument
+      packages = import ./default.nix { pkgs = pkgs; };
+      # This is the nodejs version specified in default.nix
+      nodejs   = packages.nodejs;
+      # And this is the application we'd like to deploy
+      app      = packages.app;
+    in
+    {
+      # We'll be running our application on port 8080, because a regular
+      # user cannot bind to port 80
+      # Then, using some iptables magic we'll forward traffic designated to port 80 to 8080
+      networking.firewall.enable = true;
+      # We will open up port 22 (SSH) as well otherwise we're locking ourselves out
+      networking.firewall.allowedTCPPorts = [ 80 8080 22 ];
+      networking.firewall.allowPing = true;
+
+      # Port forwarding using iptables
+      networking.firewall.extraCommands = ''
+        iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
+      '';
+
+      # To run our node.js program we're going to use a systemd service
+      # We can configure the service to automatically start on boot and to restart
+      # the process in case it crashes
+      systemd.services.helloserver = {
+        description = "Hello world application";
+        # Start the service after the network is available
+        after = [ "network.target" ];
+        # We're going to run it on port 8080 in production
+        environment = { PORT = "8080"; };
+        serviceConfig = {
+          # The actual command to run
+          ExecStart = "${nodejs}/bin/node ${app}/server.js";
+          # For security reasons we'll run this process as a special 'nodejs' user
+          User = "nodejs";
+          Restart = "always";
+        };
+      };
+
+      # And lastly we ensure the user we run our application as is created
+      users.extraUsers = {
+        nodejs = { };
+      };
+    };
+}
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/abap.abap b/plugins/node_modules/ace/demo/kitchen-sink/docs/abap.abap
new file mode 100644
index 00000000..f66bfdfa
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/abap.abap
@@ -0,0 +1,36 @@
+***************************************
+** Program: EXAMPLE                  **
+** Author: Joe Byte, 07-Jul-2007     **
+***************************************
+ 
+REPORT BOOKINGS.
+ 
+* Read flight bookings from the database
+SELECT * FROM FLIGHTINFO
+  WHERE CLASS = 'Y'       "Y = economy
+  OR    CLASS = 'C'.      "C = business
+(...)
+
+REPORT TEST.
+WRITE 'Hello World'.
+
+USERPROMPT = 'Please double-click on a line in the output list ' &
+             'to see the complete details of the transaction.'.
+
+
+DATA LAST_EOM    TYPE D.  "last end-of-month date
+ 
+* Start from today's date
+  LAST_EOM = SY-DATUM.
+* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to "01",
+* giving the first day of the current month
+  LAST_EOM+6(2) = '01'.
+* Subtract one day
+  LAST_EOM = LAST_EOM - 1.
+ 
+  WRITE: 'Last day of previous month was', LAST_EOM.
+  
+DATA : BEGIN OF I_VBRK OCCURS 0,
+         VBELN LIKE VBRK-VBELN,
+         ZUONR LIKE VBRK-ZUONR,
+       END OF I_VBRK.
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/abc.abc b/plugins/node_modules/ace/demo/kitchen-sink/docs/abc.abc
new file mode 100644
index 00000000..d8ac326e
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/abc.abc
@@ -0,0 +1,171 @@
+%abc-2.1
+H:This file contains some example English tunes
+% note that the comments (like this one) are to highlight usages
+%  and would not normally be included in such detail
+O:England             % the origin of all tunes is England
+
+X:1                   % tune no 1
+T:Dusty Miller, The   % title
+T:Binny's Jig         % an alternative title
+C:Trad.               % traditional
+R:DH                  % double hornpipe
+M:3/4                 % meter
+K:G                   % key
+B>cd BAG|FA Ac BA|B>cd BAG|DG GB AG:|
+Bdd gfg|aA Ac BA|Bdd gfa|gG GB AG:|
+BG G/2G/2G BG|FA Ac BA|BG G/2G/2G BG|DG GB AG:|
+W:Hey, the dusty miller, and his dusty coat;
+W:He will win a shilling, or he spend a groat.
+W:Dusty was the coat, dusty was the colour;
+W:Dusty was the kiss, that I got frae the miller.
+
+X:2
+T:Old Sir Simon the King
+C:Trad.
+S:Offord MSS          % from Offord manuscript
+N:see also Playford   % reference note
+M:9/8
+R:SJ                  % slip jig
+N:originally in C     % transcription note
+K:G
+D|GFG GAG G2D|GFG GAG F2D|EFE EFE EFG|A2G F2E D2:|
+D|GAG GAB d2D|GAG GAB c2D|[1 EFE EFE EFG|[A2G] F2E D2:|\ % no line-break in score
+M:12/8                % change of meter
+[2 E2E EFE E2E EFG|\  % no line-break in score
+M:9/8                 % change of meter
+A2G F2E D2|]
+
+X:3
+T:William and Nancy
+T:New Mown Hay
+T:Legacy, The
+C:Trad.
+O:England; Gloucs; Bledington % place of origin
+B:Sussex Tune Book            % can be found in these books
+B:Mally's Cotswold Morris vol.1 2
+D:Morris On                   % can be heard on this record
+P:(AB)2(AC)2A                 % play the parts in this order
+M:6/8
+K:G                        
+[P:A] D|"G"G2G GBd|"C"e2e "G"dBG|"D7"A2d "G"BAG|"C"E2"D7"F "G"G2:|
+[P:B] d|"G"e2d B2d|"C"gfe "G"d2d| "G"e2d    B2d|"C"gfe    "D7"d2c|
+        "G"B2B Bcd|"C"e2e "G"dBG|"D7"A2d "G"BAG|"C"E2"D7"F "G"G2:|
+% changes of meter, using inline fields
+[T:Slows][M:4/4][L:1/4][P:C]"G"d2|"C"e2 "G"d2|B2 d2|"Em"gf "A7"e2|"D7"d2 "G"d2|\
+       "C"e2 "G"d2|[M:3/8][L:1/8] "G"B2 d |[M:6/8] "C"gfe "D7"d2c|
+        "G"B2B Bcd|"C"e2e "G"dBG|"D7"A2d "G"BAG|"C"E2"D7"F "G"G2:|
+
+X:4
+T:South Downs Jig
+R:jig
+S:Robert Harbron
+M:6/8
+L:1/8
+K:G
+|: d | dcA G3 | EFG AFE | DEF GAB | cde d2d |
+dcA G3 | EFG AFE | DEF GAB | cAF G2 :|
+B | Bcd e2c | d2B c2A | Bcd e2c | [M:9/8]d2B c2B A3 |
+[M:6/8]DGF E3 | cBA FED | DEF GAB |1 cAF G2 :|2 cAF G3 |]
+
+X:5
+T:Atholl Brose
+% in this example, which reproduces Highland Bagpipe gracing,
+%  the large number of grace notes mean that it is more convenient to be specific about
+%  score line-breaks (using the $ symbol), rather than using code line breaks to indicate them
+I:linebreak $
+K:D
+{gcd}c<{e}A {gAGAG}A2 {gef}e>A {gAGAG}Ad|
+{gcd}c<{e}A {gAGAG}A>e {ag}a>f {gef}e>d|
+{gcd}c<{e}A {gAGAG}A2 {gef}e>A {gAGAG}Ad|
+{g}c/d/e {g}G>{d}B {gf}gG {dc}d>B:|$
+{g}ce {ag}a>e {gf}g>e|
+{g}ce {ag}a2 {GdG}a>d|
+{g}ce {ag}a>e {gf}g>f|
+{gef}e>d {gf}g>d {gBd}B<{e}G {dc}d>B|
+{g}ce {ag}a>e {gf}g>e|
+{g}ce {ag}a2 {GdG}ad|
+{g}c<{GdG}e {gf}ga {f}g>e {g}f>d|
+{g}e/f/g {Gdc}d>c {gBd}B<{e}G {dc}d2|]
+
+X:6
+T:Untitled Reel
+C:Trad.
+K:D
+eg|a2ab ageg|agbg agef|g2g2 fgag|f2d2 d2:|\
+ed|cecA B2ed|cAcA E2ed|cecA B2ed|c2A2 A2:|
+K:G
+AB|cdec BcdB|ABAF GFE2|cdec BcdB|c2A2 A2:|
+
+X:7
+T:Kitchen Girl
+C:Trad.
+K:D
+[c4a4] [B4g4]|efed c2cd|e2f2 gaba|g2e2 e2fg|
+a4 g4|efed cdef|g2d2 efed|c2A2 A4:|
+K:G
+ABcA BAGB|ABAG EDEG|A2AB c2d2|e3f edcB|ABcA BAGB|
+ABAG EGAB|cBAc BAG2|A4 A4:|
+
+%abc-2.1
+%%pagewidth      21cm
+%%pageheight     29.7cm
+%%topspace       0.5cm
+%%topmargin      1cm
+%%botmargin      0cm
+%%leftmargin     1cm
+%%rightmargin    1cm
+%%titlespace     0cm
+%%titlefont      Times-Bold 32
+%%subtitlefont   Times-Bold 24
+%%composerfont   Times 16
+%%vocalfont      Times-Roman 14
+%%staffsep       60pt
+%%sysstaffsep    20pt
+%%musicspace     1cm
+%%vocalspace     5pt
+%%measurenb      0
+%%barsperstaff   5
+%%scale          0.7
+X: 1
+T: Canzonetta a tre voci
+C: Claudio Monteverdi (1567-1643)
+M: C
+L: 1/4
+Q: "Andante mosso" 1/4 = 110
+%%score [1 2 3]
+V: 1 clef=treble name="Soprano"sname="A"
+V: 2 clef=treble name="Alto"   sname="T"
+V: 3 clef=bass middle=d name="Tenor"  sname="B"
+%%MIDI program 1 75 % recorder
+%%MIDI program 2 75
+%%MIDI program 3 75
+K: Eb
+% 1 - 4
+[V: 1] |:z4  |z4  |f2ec         |_ddcc        |
+w: Son que-sti~i cre-spi cri-ni~e
+w: Que-sti son gli~oc-chi che mi-
+[V: 2] |:c2BG|AAGc|(F/G/A/B/)c=A|B2AA         |
+w: Son que-sti~i cre-spi cri-ni~e que - - - - sto~il vi-so e
+w: Que-sti son~gli oc-chi che mi-ran - - - - do fi-so mi-
+[V: 3] |:z4  |f2ec|_ddcf        |(B/c/_d/e/)ff|
+w: Son que-sti~i cre-spi cri-ni~e que - - - - sto~il
+w: Que-sti son~gli oc-chi che mi-ran - - - - do
+% 5 - 9
+[V: 1] cAB2     |cAAA |c3B|G2!fermata!Gz ::e4|
+w: que-sto~il vi-so ond' io ri-man-go~uc-ci-so. Deh,
+w: ran-do fi-so, tut-to re-stai con-qui-so.
+[V: 2] AAG2     |AFFF |A3F|=E2!fermata!Ez::c4|
+w: que-sto~il vi-so ond' io ri-man-go~uc-ci-so. Deh,
+w: ran-do fi-so tut-to re-stai con-qui-so.
+[V: 3] (ag/f/e2)|A_ddd|A3B|c2!fermata!cz ::A4|
+w: vi - - - so ond' io ti-man-go~uc-ci-so. Deh,
+w: fi - - - so tut-to re-stai con-qui-so.
+% 10 - 15
+[V: 1] f_dec |B2c2|zAGF  |\
+w: dim-me-lo ben mi-o, che que-sto\
+=EFG2          |1F2z2:|2F8|] % more notes
+w: sol de-si-o_. % more lyrics
+[V: 2] ABGA  |G2AA|GF=EF |(GF3/2=E//D//E)|1F2z2:|2F8|]
+w: dim-me-lo ben mi-o, che que-sto sol de-si - - - - o_.
+[V: 3] _dBc>d|e2AF|=EFc_d|c4             |1F2z2:|2F8|]
+w: dim-me-lo ben mi-o, che que-sto sol de-si-o_.
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/actionscript.as b/plugins/node_modules/ace/demo/kitchen-sink/docs/actionscript.as
new file mode 100644
index 00000000..ffe21fbf
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/actionscript.as
@@ -0,0 +1,51 @@
+package code
+{
+    /*****************************************
+	 * based on textmate actionscript bundle
+	 ****************************************/
+	 
+	import fl.events.SliderEvent;
+	
+	public class Foo extends MovieClip
+	{
+		//*************************
+		// Properties:
+		
+		public var activeSwatch:MovieClip;
+		
+		// Color offsets
+		public var c1:Number = 0;	// R
+		
+		//*************************
+		// Constructor:
+		
+		public function Foo()
+		{
+			// Respond to mouse events
+			swatch1_btn.addEventListener(MouseEvent.CLICK,swatchHandler,false,0,false);
+			previewBox_btn.addEventListener(MouseEvent.MOUSE_DOWN,dragPressHandler);
+			
+			// Respond to drag events
+			red_slider.addEventListener(SliderEvent.THUMB_DRAG,sliderHandler);
+			
+			// Draw a frame later
+			addEventListener(Event.ENTER_FRAME,draw);
+		}
+        
+		protected function clickHandler(event:MouseEvent):void
+		{
+			car.transform.colorTransform = new ColorTransform(0,0,0,1,c1,c2,c3);
+		}
+		
+		protected function changeRGBHandler(event:Event):void
+		{
+			c1 = Number(c1_txt.text);
+            
+			if(!(c1>=0)){
+				c1 = 0;
+			}			
+			
+			updateSliders();
+		}
+	}
+}
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/ada.ada b/plugins/node_modules/ace/demo/kitchen-sink/docs/ada.ada
new file mode 100644
index 00000000..90e027f0
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/ada.ada
@@ -0,0 +1,5 @@
+with Ada.Text_IO; use Ada.Text_IO;
+procedure Hello is
+begin
+  Put_Line("Hello, world!");
+end Hello;
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/asciidoc.asciidoc b/plugins/node_modules/ace/demo/kitchen-sink/docs/asciidoc.asciidoc
new file mode 100644
index 00000000..8cddab5d
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/asciidoc.asciidoc
@@ -0,0 +1,6040 @@
+AsciiDoc User Guide
+===================
+Stuart Rackham 
+:Author Initials: SJR
+:toc:
+:icons:
+:numbered:
+:website: http://www.methods.co.nz/asciidoc/
+
+AsciiDoc is a text document format for writing notes, documentation,
+articles, books, ebooks, slideshows, web pages, blogs and UNIX man
+pages.  AsciiDoc files can be translated to many formats including
+HTML, PDF, EPUB, man page.  AsciiDoc is highly configurable: both the
+AsciiDoc source file syntax and the backend output markups (which can
+be almost any type of SGML/XML markup) can be customized and extended
+by the user.
+
+.This document
+**********************************************************************
+This is an overly large document, it probably needs to be refactored
+into a Tutorial, Quick Reference and Formal Reference.
+
+If you're new to AsciiDoc read this section and the <> section and take a look at the example AsciiDoc (`*.txt`)
+source files in the distribution `doc` directory.
+**********************************************************************
+
+
+Introduction
+------------
+AsciiDoc is a plain text human readable/writable document format that
+can be translated to DocBook or HTML using the asciidoc(1) command.
+You can then either use asciidoc(1) generated HTML directly or run
+asciidoc(1) DocBook output through your favorite DocBook toolchain or
+use the AsciiDoc a2x(1) toolchain wrapper to produce PDF, EPUB, DVI,
+LaTeX, PostScript, man page, HTML and text formats.
+
+The AsciiDoc format is a useful presentation format in its own right:
+AsciiDoc markup is simple, intuitive and as such is easily proofed and
+edited.
+
+AsciiDoc is light weight: it consists of a single Python script and a
+bunch of configuration files. Apart from asciidoc(1) and a Python
+interpreter, no other programs are required to convert AsciiDoc text
+files to DocBook or HTML. See <>
+below.
+
+Text markup conventions tend to be a matter of (often strong) personal
+preference: if the default syntax is not to your liking you can define
+your own by editing the text based asciidoc(1) configuration files.
+You can also create configuration files to translate AsciiDoc
+documents to almost any SGML/XML markup.
+
+asciidoc(1) comes with a set of configuration files to translate
+AsciiDoc articles, books and man pages to HTML or DocBook backend
+formats.
+
+.My AsciiDoc Itch
+**********************************************************************
+DocBook has emerged as the de facto standard Open Source documentation
+format. But DocBook is a complex language, the markup is difficult to
+read and even more difficult to write directly -- I found I was
+spending more time typing markup tags, consulting reference manuals
+and fixing syntax errors, than I was writing the documentation.
+**********************************************************************
+
+
+[[X6]]
+Getting Started
+---------------
+Installing AsciiDoc
+~~~~~~~~~~~~~~~~~~~
+See the `README` and `INSTALL` files for install prerequisites and
+procedures. Packagers take a look at <>.
+
+[[X11]]
+Example AsciiDoc Documents
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+The best way to quickly get a feel for AsciiDoc is to view the
+AsciiDoc web site and/or distributed examples:
+
+- Take a look at the linked examples on the AsciiDoc web site home
+  page {website}.  Press the 'Page Source' sidebar menu item to view
+  corresponding AsciiDoc source.
+- Read the `*.txt` source files in the distribution `./doc` directory
+  along with the corresponding HTML and DocBook XML files.
+
+
+AsciiDoc Document Types
+-----------------------
+There are three types of AsciiDoc documents: article, book and
+manpage. All document types share the same AsciiDoc format with some
+minor variations. If you are familiar with DocBook you will have
+noticed that AsciiDoc document types correspond to the same-named
+DocBook document types.
+
+Use the asciidoc(1) `-d` (`--doctype`) option to specify the AsciiDoc
+document type -- the default document type is 'article'.
+
+By convention the `.txt` file extension is used for AsciiDoc document
+source files.
+
+article
+~~~~~~~
+Used for short documents, articles and general documentation.  See the
+AsciiDoc distribution `./doc/article.txt` example.
+
+AsciiDoc defines standard DocBook article frontmatter and backmatter
+<> (appendix, abstract, bibliography,
+glossary, index).
+
+book
+~~~~
+Books share the same format as articles, with the following
+differences:
+
+- The part titles in multi-part books are <>
+  (same level as book title).
+- Some sections are book specific e.g. preface and colophon.
+
+Book documents will normally be used to produce DocBook output since
+DocBook processors can automatically generate footnotes, table of
+contents, list of tables, list of figures, list of examples and
+indexes.
+
+AsciiDoc defines standard DocBook book frontmatter and backmatter
+<> (appendix, dedication, preface,
+bibliography, glossary, index, colophon).
+
+.Example book documents
+Book::
+  The `./doc/book.txt` file in the AsciiDoc distribution.
+
+Multi-part book::
+  The `./doc/book-multi.txt` file in the AsciiDoc distribution.
+
+manpage
+~~~~~~~
+Used to generate roff format UNIX manual pages.  AsciiDoc manpage
+documents observe special header title and section naming conventions
+-- see the <> section for details.
+
+AsciiDoc defines the 'synopsis' <> to
+generate the DocBook `refsynopsisdiv` section.
+
+See also the asciidoc(1) man page source (`./doc/asciidoc.1.txt`) from
+the AsciiDoc distribution.
+
+
+[[X5]]
+AsciiDoc Backends
+-----------------
+The asciidoc(1) command translates an AsciiDoc formatted file to the
+backend format specified by the `-b` (`--backend`) command-line
+option. asciidoc(1) itself has little intrinsic knowledge of backend
+formats, all translation rules are contained in customizable cascading
+configuration files. Backend specific attributes are listed in the
+<> section.
+
+docbook45::
+  Outputs DocBook XML 4.5 markup.
+
+html4::
+  This backend generates plain HTML 4.01 Transitional markup.
+
+xhtml11::
+  This backend generates XHTML 1.1 markup styled with CSS2. Output
+  files have an `.html` extension.
+
+html5::
+  This backend generates HTML 5 markup, apart from the inclusion of
+  <> it is functionally identical to
+  the 'xhtml11' backend.
+
+slidy::
+  Use this backend to generate self-contained
+  http://www.w3.org/Talks/Tools/Slidy2/[Slidy] HTML slideshows for
+  your web browser from AsciiDoc documents. The Slidy backend is
+  documented in the distribution `doc/slidy.txt` file and
+  {website}slidy.html[online].
+
+wordpress::
+  A minor variant of the 'html4' backend to support
+  http://srackham.wordpress.com/blogpost1/[blogpost].
+
+latex::
+  Experimental LaTeX backend.
+
+Backend Aliases
+~~~~~~~~~~~~~~~
+Backend aliases are alternative names for AsciiDoc backends.  AsciiDoc
+comes with two backend aliases: 'html' (aliased to 'xhtml11') and
+'docbook' (aliased to 'docbook45').
+
+You can assign (or reassign) backend aliases by setting an AsciiDoc
+attribute named like `backend-alias-` to an AsciiDoc backend
+name. For example, the following backend alias attribute definitions
+appear in the `[attributes]` section of the global `asciidoc.conf`
+configuration file:
+
+  backend-alias-html=xhtml11
+  backend-alias-docbook=docbook45
+
+[[X100]]
+Backend Plugins
+~~~~~~~~~~~~~~~
+The asciidoc(1) `--backend` option is also used to install and manage
+backend <>.
+
+- A backend plugin is used just like the built-in backends.
+- Backend plugins <> over built-in backends with
+  the same name.
+- You can use the `{asciidoc-confdir}` <> to
+  refer to the built-in backend configuration file location from
+  backend plugin configuration files.
+- You can use the `{backend-confdir}` <> to
+  refer to the backend plugin configuration file location.
+- By default backends plugins are installed in
+  `$HOME/.asciidoc/backends/` where `` is the
+  backend name.
+
+
+DocBook
+-------
+AsciiDoc generates 'article', 'book' and 'refentry'
+http://www.docbook.org/[DocBook] documents (corresponding to the
+AsciiDoc 'article', 'book' and 'manpage' document types).
+
+Most Linux distributions come with conversion tools (collectively
+called a toolchain) for <> to
+presentation formats such as Postscript, HTML, PDF, EPUB, DVI,
+PostScript, LaTeX, roff (the native man page format), HTMLHelp,
+JavaHelp and text.  There are also programs that allow you to view
+DocBook files directly, for example http://live.gnome.org/Yelp[Yelp]
+(the GNOME help viewer).
+
+[[X12]]
+Converting DocBook to other file formats
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+DocBook files are validated, parsed and translated various
+presentation file formats using a combination of applications
+collectively called a DocBook 'tool chain'. The function of a tool
+chain is to read the DocBook markup (produced by AsciiDoc) and
+transform it to a presentation format (for example HTML, PDF, HTML
+Help, EPUB, DVI, PostScript, LaTeX).
+
+A wide range of user output format requirements coupled with a choice
+of available tools and stylesheets results in many valid tool chain
+combinations.
+
+[[X43]]
+a2x Toolchain Wrapper
+~~~~~~~~~~~~~~~~~~~~~
+One of the biggest hurdles for new users is installing, configuring
+and using a DocBook XML toolchain. `a2x(1)` can help -- it's a
+toolchain wrapper command that will generate XHTML (chunked and
+unchunked), PDF, EPUB, DVI, PS, LaTeX, man page, HTML Help and text
+file outputs from an AsciiDoc text file.  `a2x(1)` does all the grunt
+work associated with generating and sequencing the toolchain commands
+and managing intermediate and output files.  `a2x(1)` also optionally
+deploys admonition and navigation icons and a CSS stylesheet. See the
+`a2x(1)` man page for more details. In addition to `asciidoc(1)` you
+also need <>, <> and
+optionally: <> or <> (to generate PDF);
+`w3m(1)` or `lynx(1)` (to generate text).
+
+The following examples generate `doc/source-highlight-filter.pdf` from
+the AsciiDoc `doc/source-highlight-filter.txt` source file. The first
+example uses `dblatex(1)` (the default PDF generator) the second
+example forces FOP to be used:
+
+  $ a2x -f pdf doc/source-highlight-filter.txt
+  $ a2x -f pdf --fop doc/source-highlight-filter.txt
+
+See the `a2x(1)` man page for details.
+
+TIP: Use the `--verbose` command-line option to view executed
+toolchain commands.
+
+HTML generation
+~~~~~~~~~~~~~~~
+AsciiDoc produces nicely styled HTML directly without requiring a
+DocBook toolchain but there are also advantages in going the DocBook
+route:
+
+- HTML from DocBook can optionally include automatically generated
+  indexes, tables of contents, footnotes, lists of figures and tables.
+- DocBook toolchains can also (optionally) generate separate (chunked)
+  linked HTML pages for each document section.
+- Toolchain processing performs link and document validity checks.
+- If the DocBook 'lang' attribute is set then things like table of
+  contents, figure and table captions and admonition captions will be
+  output in the specified language (setting the AsciiDoc 'lang'
+  attribute sets the DocBook 'lang' attribute).
+
+On the other hand, HTML output directly from AsciiDoc is much faster,
+is easily customized and can be used in situations where there is no
+suitable DocBook toolchain (for example, see the {website}[AsciiDoc
+website]).
+
+PDF generation
+~~~~~~~~~~~~~~
+There are two commonly used tools to generate PDFs from DocBook,
+<> and <>.
+
+.dblatex or FOP?
+- 'dblatex' is easier to install, there's zero configuration
+  required and no Java VM to install -- it just works out of the box.
+- 'dblatex' source code highlighting and numbering is superb.
+- 'dblatex' is easier to use as it converts DocBook directly to PDF
+  whereas before using 'FOP' you have to convert DocBook to XML-FO
+  using <>.
+- 'FOP' is more feature complete (for example, callouts are processed
+  inside literal layouts) and arguably produces nicer looking output.
+
+HTML Help generation
+~~~~~~~~~~~~~~~~~~~~
+. Convert DocBook XML documents to HTML Help compiler source files
+  using <> and <>.
+. Convert the HTML Help source (`.hhp` and `.html`) files to HTML Help
+  (`.chm`) files using the <>.
+
+Toolchain components summary
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+AsciiDoc::
+    Converts AsciiDoc (`.txt`) files to DocBook XML (`.xml`) files.
+
+[[X13]]http://docbook.sourceforge.net/projects/xsl/[DocBook XSL Stylesheets]::
+  These are a set of XSL stylesheets containing rules for converting
+  DocBook XML documents to HTML, XSL-FO, manpage and HTML Help files.
+  The stylesheets are used in conjunction with an XML parser such as
+  <>.
+
+[[X40]]http://www.xmlsoft.org[xsltproc]::
+  An XML parser for applying XSLT stylesheets (in our case the
+  <>) to XML documents.
+
+[[X31]]http://dblatex.sourceforge.net/[dblatex]::
+  Generates PDF, DVI, PostScript and LaTeX formats directly from
+  DocBook source via the intermediate LaTeX typesetting language --
+  uses <>, <> and
+  `latex(1)`.
+
+[[X14]]http://xml.apache.org/fop/[FOP]::
+  The Apache Formatting Objects Processor converts XSL-FO (`.fo`)
+  files to PDF files.  The XSL-FO files are generated from DocBook
+  source files using <> and
+  <>.
+
+[[X67]]Microsoft Help Compiler::
+  The Microsoft HTML Help Compiler (`hhc.exe`) is a command-line tool
+  that converts HTML Help source files to a single HTML Help (`.chm`)
+  file. It runs on MS Windows platforms and can be downloaded from
+  http://www.microsoft.com.
+
+AsciiDoc dblatex configuration files
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The AsciiDoc distribution `./dblatex` directory contains
+`asciidoc-dblatex.xsl` (customized XSL parameter settings) and
+`asciidoc-dblatex.sty` (customized LaTeX settings). These are examples
+of optional <> output customization and are used by
+<>.
+
+AsciiDoc DocBook XSL Stylesheets drivers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+You will have noticed that the distributed HTML and HTML Help
+documentation files (for example `./doc/asciidoc.html`) are not the
+plain outputs produced using the default 'DocBook XSL Stylesheets'
+configuration.  This is because they have been processed using
+customized DocBook XSL Stylesheets along with (in the case of HTML
+outputs) the custom `./stylesheets/docbook-xsl.css` CSS stylesheet.
+
+You'll find the customized DocBook XSL drivers along with additional
+documentation in the distribution `./docbook-xsl` directory. The
+examples that follow are executed from the distribution documentation
+(`./doc`) directory. These drivers are also used by <>.
+
+`common.xsl`::
+    Shared driver parameters.  This file is not used directly but is
+    included in all the following drivers.
+
+`chunked.xsl`::
+    Generate chunked XHTML (separate HTML pages for each document
+    section) in the `./doc/chunked` directory. For example:
+
+    $ python ../asciidoc.py -b docbook asciidoc.txt
+    $ xsltproc --nonet ../docbook-xsl/chunked.xsl asciidoc.xml
+
+`epub.xsl`::
+    Used by <> to generate EPUB formatted documents.
+
+`fo.xsl`::
+    Generate XSL Formatting Object (`.fo`) files for subsequent PDF
+    file generation using FOP. For example:
+
+    $ python ../asciidoc.py -b docbook article.txt
+    $ xsltproc --nonet ../docbook-xsl/fo.xsl article.xml > article.fo
+    $ fop article.fo article.pdf
+
+`htmlhelp.xsl`::
+    Generate Microsoft HTML Help source files for the MS HTML Help
+    Compiler in the `./doc/htmlhelp` directory. This example is run on
+    MS Windows from a Cygwin shell prompt:
+
+    $ python ../asciidoc.py -b docbook asciidoc.txt
+    $ xsltproc --nonet ../docbook-xsl/htmlhelp.xsl asciidoc.xml
+    $ c:/Program\ Files/HTML\ Help\ Workshop/hhc.exe htmlhelp.hhp
+
+`manpage.xsl`::
+    Generate a `roff(1)` format UNIX man page from a DocBook XML
+    'refentry' document. This example generates an `asciidoc.1` man
+    page file:
+
+    $ python ../asciidoc.py -d manpage -b docbook asciidoc.1.txt
+    $ xsltproc --nonet ../docbook-xsl/manpage.xsl asciidoc.1.xml
+
+`xhtml.xsl`::
+    Convert a DocBook XML file to a single XHTML file. For example:
+
+    $ python ../asciidoc.py -b docbook asciidoc.txt
+    $ xsltproc --nonet ../docbook-xsl/xhtml.xsl asciidoc.xml > asciidoc.html
+
+If you want to see how the complete documentation set is processed
+take a look at the A-A-P script `./doc/main.aap`.
+
+
+Generating Plain Text Files
+---------------------------
+AsciiDoc does not have a text backend (for most purposes AsciiDoc
+source text is fine), however you can convert AsciiDoc text files to
+formatted text using the AsciiDoc <> toolchain wrapper
+utility.
+
+
+[[X35]]
+HTML5 and XHTML 1.1
+-------------------
+The 'xhtml11' and 'html5' backends embed or link CSS and JavaScript
+files in their outputs, there is also a <> plugin
+framework.
+
+- If the AsciiDoc 'linkcss' attribute is defined then CSS and
+  JavaScript files are linked to the output document, otherwise they
+  are embedded (the default behavior).
+- The default locations for CSS and JavaScript files can be changed by
+  setting the AsciiDoc 'stylesdir' and 'scriptsdir' attributes
+  respectively.
+- The default locations for embedded and linked files differ and are
+  calculated at different times -- embedded files are loaded when
+  asciidoc(1) generates the output document, linked files are loaded
+  by the browser when the user views the output document.
+- Embedded files are automatically inserted in the output files but
+  you need to manually copy linked CSS and Javascript files from
+  AsciiDoc <> to the correct location
+  relative to the output document.
+
+.Stylesheet file locations
+[cols="3*",frame="topbot",options="header"]
+|====================================================================
+|'stylesdir' attribute
+|Linked location ('linkcss' attribute defined)
+|Embedded location ('linkcss' attribute undefined)
+
+|Undefined (default).
+|Same directory as the output document.
+|`stylesheets` subdirectory in the AsciiDoc configuration directory
+(the directory containing the backend conf file).
+
+|Absolute or relative directory name.
+|Absolute or relative to the output document.
+|Absolute or relative to the AsciiDoc configuration directory (the
+directory containing the backend conf file).
+
+|====================================================================
+
+.JavaScript file locations
+[cols="3*",frame="topbot",options="header"]
+|====================================================================
+|'scriptsdir' attribute
+|Linked location ('linkcss' attribute defined)
+|Embedded location ('linkcss' attribute undefined)
+
+|Undefined (default).
+|Same directory as the output document.
+|`javascripts` subdirectory in the AsciiDoc configuration directory
+(the directory containing the backend conf file).
+
+|Absolute or relative directory name.
+|Absolute or relative to the output document.
+|Absolute or relative to the AsciiDoc configuration directory (the
+directory containing the backend conf file).
+
+|====================================================================
+
+[[X99]]
+Themes
+~~~~~~
+The AsciiDoc 'theme' attribute is used to select an alternative CSS
+stylesheet and to optionally include additional JavaScript code.
+
+- Theme files reside in an AsciiDoc <>
+  named `themes//` (where `` is the the theme name set
+  by the 'theme' attribute). asciidoc(1) sets the 'themedir' attribute
+  to the theme directory path name.
+- The 'theme' attribute can also be set using the asciidoc(1)
+  `--theme` option, the `--theme` option can also be used to manage
+  theme <>.
+- AsciiDoc ships with two themes: 'flask' and 'volnitsky'.
+- The `.css` file replaces the default `asciidoc.css` CSS file.
+- The `.js` file is included in addition to the default
+  `asciidoc.js` JavaScript file.
+- If the <> attribute is defined then icons are loaded
+  from the theme `icons` sub-directory if it exists (i.e.  the
+  'iconsdir' attribute is set to theme `icons` sub-directory path).
+- Embedded theme files are automatically inserted in the output files
+  but you need to manually copy linked CSS and Javascript files to the
+  location of the output documents.
+- Linked CSS and JavaScript theme files are linked to the same linked
+  locations as <>.
+
+For example, the command-line option `--theme foo` (or `--attribute
+theme=foo`) will cause asciidoc(1) to search <<"X27","configuration
+file locations 1, 2 and 3">> for a sub-directory called `themes/foo`
+containing the stylesheet `foo.css` and optionally a JavaScript file
+name `foo.js`.
+
+
+Document Structure
+------------------
+An AsciiDoc document consists of a series of <>
+starting with an optional document Header, followed by an optional
+Preamble, followed by zero or more document Sections.
+
+Almost any combination of zero or more elements constitutes a valid
+AsciiDoc document: documents can range from a single sentence to a
+multi-part book.
+
+Block Elements
+~~~~~~~~~~~~~~
+Block elements consist of one or more lines of text and may contain
+other block elements.
+
+The AsciiDoc block structure can be informally summarized as follows
+footnote:[This is a rough structural guide, not a rigorous syntax
+definition]:
+
+  Document      ::= (Header?,Preamble?,Section*)
+  Header        ::= (Title,(AuthorInfo,RevisionInfo?)?)
+  AuthorInfo    ::= (FirstName,(MiddleName?,LastName)?,EmailAddress?)
+  RevisionInfo  ::= (RevisionNumber?,RevisionDate,RevisionRemark?)
+  Preamble      ::= (SectionBody)
+  Section       ::= (Title,SectionBody?,(Section)*)
+  SectionBody   ::= ((BlockTitle?,Block)|BlockMacro)+
+  Block         ::= (Paragraph|DelimitedBlock|List|Table)
+  List          ::= (BulletedList|NumberedList|LabeledList|CalloutList)
+  BulletedList  ::= (ListItem)+
+  NumberedList  ::= (ListItem)+
+  CalloutList   ::= (ListItem)+
+  LabeledList   ::= (ListEntry)+
+  ListEntry     ::= (ListLabel,ListItem)
+  ListLabel     ::= (ListTerm+)
+  ListItem      ::= (ItemText,(List|ListParagraph|ListContinuation)*)
+
+Where:
+
+- '?' implies zero or one occurrence, '+' implies one or more
+  occurrences, '*' implies zero or more occurrences.
+- All block elements are separated by line boundaries.
+- `BlockId`, `AttributeEntry` and `AttributeList` block elements (not
+  shown) can occur almost anywhere.
+- There are a number of document type and backend specific
+  restrictions imposed on the block syntax.
+- The following elements cannot contain blank lines: Header, Title,
+  Paragraph, ItemText.
+- A ListParagraph is a Paragraph with its 'listelement' option set.
+- A ListContinuation is a <>.
+
+[[X95]]
+Header
+~~~~~~
+The Header contains document meta-data, typically title plus optional
+authorship and revision information:
+
+- The Header is optional, but if it is used it must start with a
+  document <>.
+- Optional Author and Revision information immediately follows the
+  header title.
+- The document header must be separated from the remainder of the
+  document by one or more blank lines and cannot contain blank lines.
+- The header can include comments.
+- The header can include <>, typically
+  'doctype', 'lang', 'encoding', 'icons', 'data-uri', 'toc',
+  'numbered'.
+- Header attributes are overridden by command-line attributes.
+- If the header contains non-UTF-8 characters then the 'encoding' must
+  precede the header (either in the document or on the command-line).
+
+Here's an example AsciiDoc document header:
+
+  Writing Documentation using AsciiDoc
+  ====================================
+  Joe Bloggs 
+  v2.0, February 2003:
+  Rewritten for version 2 release.
+
+The author information line contains the author's name optionally
+followed by the author's email address. The author's name is formatted
+like:
+
+  firstname[ [middlename ]lastname][ ]]
+
+i.e. a first name followed by optional middle and last names followed
+by an email address in that order.  Multi-word first, middle and last
+names can be entered using the underscore as a word separator.  The
+email address comes last and must be enclosed in angle <> brackets.
+Here a some examples of author information lines:
+
+  Joe Bloggs 
+  Joe Bloggs
+  Vincent Willem van_Gogh
+
+If the author line does not match the above specification then the
+entire author line is treated as the first name.
+
+The optional revision information line follows the author information
+line. The revision information can be one of two formats:
+
+. An optional document revision number followed by an optional
+  revision date followed by an optional revision remark:
++
+--
+  * If the revision number is specified it must be followed by a
+    comma.
+  * The revision number must contain at least one numeric character.
+  * Any non-numeric characters preceding the first numeric character
+    will be dropped.
+  * If a revision remark is specified it must be preceded by a colon.
+    The revision remark extends from the colon up to the next blank
+    line, attribute entry or comment and is subject to normal text
+    substitutions.
+  * If a revision number or remark has been set but the revision date
+    has not been set then the revision date is set to the value of the
+    'docdate' attribute.
+
+Examples:
+
+  v2.0, February 2003
+  February 2003
+  v2.0,
+  v2.0, February 2003: Rewritten for version 2 release.
+  February 2003: Rewritten for version 2 release.
+  v2.0,: Rewritten for version 2 release.
+  :Rewritten for version 2 release.
+--
+
+. The revision information line can also be an RCS/CVS/SVN $Id$
+  marker:
++
+--
+  * AsciiDoc extracts the 'revnumber', 'revdate', and 'author'
+    attributes from the $Id$ revision marker and displays them in the
+    document header.
+  * If an $Id$ revision marker is used the header author line can be
+    omitted.
+
+Example:
+
+  $Id: mydoc.txt,v 1.5 2009/05/17 17:58:44 jbloggs Exp $
+--
+
+You can override or set header parameters by passing 'revnumber',
+'revremark', 'revdate', 'email', 'author', 'authorinitials',
+'firstname' and 'lastname' attributes using the asciidoc(1) `-a`
+(`--attribute`) command-line option. For example:
+
+  $ asciidoc -a revdate=2004/07/27 article.txt
+
+Attribute entries can also be added to the header for substitution in
+the header template with <> elements.
+
+The 'title' element in HTML outputs is set to the AsciiDoc document
+title, you can set it to a different value by including a 'title'
+attribute entry in the document header.
+
+[[X87]]
+Additional document header information
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+AsciiDoc has two mechanisms for optionally including additional
+meta-data in the header of the output document:
+
+'docinfo' configuration file sections::
+If a <> section named 'docinfo' has been loaded
+then it will be included in the document header. Typically the
+'docinfo' section name will be prefixed with a '+' character so that it
+is appended to (rather than replace) other 'docinfo' sections.
+
+'docinfo' files::
+Two docinfo files are recognized: one named `docinfo` and a second
+named like the AsciiDoc source file with a `-docinfo` suffix.  For
+example, if the source document is called `mydoc.txt` then the
+document information files would be `docinfo.xml` and
+`mydoc-docinfo.xml` (for DocBook outputs) and `docinfo.html` and
+`mydoc-docinfo.html` (for HTML outputs).  The <> attributes control which docinfo files are included in
+the output files.
+
+The contents docinfo templates and files is dependent on the type of
+output:
+
+HTML::
+  Valid 'head' child elements. Typically 'style' and 'script' elements
+  for CSS and JavaScript inclusion.
+
+DocBook::
+  Valid 'articleinfo' or 'bookinfo' child elements.  DocBook defines
+  numerous elements for document meta-data, for example: copyrights,
+  document history and authorship information.  See the DocBook
+  `./doc/article-docinfo.xml` example that comes with the AsciiDoc
+  distribution.  The rendering of meta-data elements (or not) is
+  DocBook processor dependent.
+
+
+[[X86]]
+Preamble
+~~~~~~~~
+The Preamble is an optional untitled section body between the document
+Header and the first Section title.
+
+Sections
+~~~~~~~~
+In addition to the document title (level 0), AsciiDoc supports four
+section levels: 1 (top) to 4 (bottom).  Section levels are delimited
+by section <>.  Sections are translated using
+configuration file <>. AsciiDoc
+generates the following <> specifically for
+use in section markup templates:
+
+level::
+The `level` attribute is the section level number, it is normally just
+the <> level number (1..4). However, if the `leveloffset`
+attribute is defined it will be added to the `level` attribute. The
+`leveloffset` attribute is useful for <>.
+
+sectnum::
+The `-n` (`--section-numbers`) command-line option generates the
+`sectnum` (section number) attribute.  The `sectnum` attribute is used
+for section numbers in HTML outputs (DocBook section numbering are
+handled automatically by the DocBook toolchain commands).
+
+[[X93]]
+Section markup templates
+^^^^^^^^^^^^^^^^^^^^^^^^
+Section markup templates specify output markup and are defined in
+AsciiDoc configuration files.  Section markup template names are
+derived as follows (in order of precedence):
+
+1. From the title's first positional attribute or 'template'
+   attribute. For example, the following three section titles are
+   functionally equivalent:
++
+.....................................................................
+[[terms]]
+[glossary]
+List of Terms
+-------------
+
+["glossary",id="terms"]
+List of Terms
+-------------
+
+[template="glossary",id="terms"]
+List of Terms
+-------------
+.....................................................................
+
+2. When the title text matches a configuration file
+   <> entry.
+3. If neither of the above the default `sect` template is used
+   (where `` is a number from 1 to 4).
+
+In addition to the normal section template names ('sect1', 'sect2',
+'sect3', 'sect4') AsciiDoc has the following templates for
+frontmatter, backmatter and other special sections: 'abstract',
+'preface', 'colophon', 'dedication', 'glossary', 'bibliography',
+'synopsis', 'appendix', 'index'.  These special section templates
+generate the corresponding Docbook elements; for HTML outputs they
+default to the 'sect1' section template.
+
+Section IDs
+^^^^^^^^^^^
+If no explicit section ID is specified an ID will be synthesised from
+the section title.  The primary purpose of this feature is to ensure
+persistence of table of contents links (permalinks): the missing
+section IDs are generated dynamically by the JavaScript TOC generator
+*after* the page is loaded. If you link to a dynamically generated TOC
+address the page will load but the browser will ignore the (as yet
+ungenerated) section ID.
+
+The IDs are generated by the following algorithm:
+
+- Replace all non-alphanumeric title characters with underscores.
+- Strip leading or trailing underscores.
+- Convert to lowercase.
+- Prepend the `idprefix` attribute (so there's no possibility of name
+  clashes with existing document IDs). Prepend an underscore if the
+  `idprefix` attribute is not defined.
+- A numbered suffix (`_2`, `_3` ...) is added if a same named
+  auto-generated section ID exists.
+- If the `ascii-ids` attribute is defined then non-ASCII characters
+  are replaced with ASCII equivalents. This attribute may be
+  deprecated in future releases and *should be avoided*, it's sole
+  purpose is to accommodate deficient downstream applications that
+  cannot process non-ASCII ID attributes.
+
+Example: the title 'Jim's House' would generate the ID `_jim_s_house`.
+
+Section ID synthesis can be disabled by undefining the `sectids`
+attribute.
+
+[[X16]]
+Special Section Titles
+^^^^^^^^^^^^^^^^^^^^^^
+AsciiDoc has a mechanism for mapping predefined section titles
+auto-magically to specific markup templates. For example a title
+'Appendix A: Code Reference' will automatically use the 'appendix'
+<>. The mappings from title to template
+name are specified in `[specialsections]` sections in the Asciidoc
+language configuration files (`lang-*.conf`).  Section entries are
+formatted like:
+
+  =<template>
+
+`<title>` is a Python regular expression and `<template>` is the name
+of a configuration file markup template section. If the `<title>`
+matches an AsciiDoc document section title then the backend output is
+marked up using the `<template>` markup template (instead of the
+default `sect<level>` section template). The `{title}` attribute value
+is set to the value of the matched regular expression group named
+'title', if there is no 'title' group `{title}` defaults to the whole
+of the AsciiDoc section title. If `<template>` is blank then any
+existing entry with the same `<title>` will be deleted.
+
+.Special section titles vs. explicit template names
+*********************************************************************
+AsciiDoc has two mechanisms for specifying non-default section markup
+templates: you can specify the template name explicitly (using the
+'template' attribute) or indirectly (using 'special section titles').
+Specifying a <<X93,section template>> attribute explicitly is
+preferred.  Auto-magical 'special section titles' have the following
+drawbacks:
+
+- They are non-obvious, you have to know the exact matching
+  title for each special section on a language by language basis.
+- Section titles are predefined and can only be customised with a
+  configuration change.
+- The implementation is complicated by multiple languages: every
+  special section title has to be defined for each language (in each
+  of the `lang-*.conf` files).
+
+Specifying special section template names explicitly does add more
+noise to the source document (the 'template' attribute declaration),
+but the intention is obvious and the syntax is consistent with other
+AsciiDoc elements c.f.  bibliographic, Q&A and glossary lists.
+
+Special section titles have been deprecated but are retained for
+backward compatibility.
+
+*********************************************************************
+
+Inline Elements
+~~~~~~~~~~~~~~~
+<<X34,Inline document elements>> are used to format text and to
+perform various types of text substitution. Inline elements and inline
+element syntax is defined in the asciidoc(1) configuration files.
+
+Here is a list of AsciiDoc inline elements in the (default) order in
+which they are processed:
+
+Special characters::
+        These character sequences escape special characters used by
+        the backend markup (typically `<`, `>`, and `&` characters).
+        See `[specialcharacters]` configuration file sections.
+
+Quotes::
+        Elements that markup words and phrases; usually for character
+        formatting. See `[quotes]` configuration file sections.
+
+Special Words::
+        Word or word phrase patterns singled out for markup without
+        the need for further annotation.  See `[specialwords]`
+        configuration file sections.
+
+Replacements::
+        Each replacement defines a word or word phrase pattern to
+        search for along with corresponding replacement text. See
+        `[replacements]` configuration file sections.
+
+Attribute references::
+        Document attribute names enclosed in braces are replaced by
+        the corresponding attribute value.
+
+Inline Macros::
+        Inline macros are replaced by the contents of parametrized
+        configuration file sections.
+
+
+Document Processing
+-------------------
+The AsciiDoc source document is read and processed as follows:
+
+1. The document 'Header' is parsed, header parameter values are
+   substituted into the configuration file `[header]` template section
+   which is then written to the output file.
+2. Each document 'Section' is processed and its constituent elements
+   translated to the output file.
+3. The configuration file `[footer]` template section is substituted
+   and written to the output file.
+
+When a block element is encountered asciidoc(1) determines the type of
+block by checking in the following order (first to last): (section)
+Titles, BlockMacros, Lists, DelimitedBlocks, Tables, AttributeEntrys,
+AttributeLists, BlockTitles, Paragraphs.
+
+The default paragraph definition `[paradef-default]` is last element
+to be checked.
+
+Knowing the parsing order will help you devise unambiguous macro, list
+and block syntax rules.
+
+Inline substitutions within block elements are performed in the
+following default order:
+
+1. Special characters
+2. Quotes
+3. Special words
+4. Replacements
+5. Attributes
+6. Inline Macros
+7. Replacements2
+
+The substitutions and substitution order performed on
+Title, Paragraph and DelimitedBlock elements is determined by
+configuration file parameters.
+
+
+Text Formatting
+---------------
+[[X51]]
+Quoted Text
+~~~~~~~~~~~
+Words and phrases can be formatted by enclosing inline text with
+quote characters:
+
+_Emphasized text_::
+        Word phrases \'enclosed in single quote characters' (acute
+        accents) or \_underline characters_ are emphasized.
+
+*Strong text*::
+        Word phrases \*enclosed in asterisk characters* are rendered
+        in a strong font (usually bold).
+
+[[X81]]+Monospaced text+::
+        Word phrases \+enclosed in plus characters+ are rendered in a
+        monospaced font. Word phrases \`enclosed in backtick
+        characters` (grave accents) are also rendered in a monospaced
+        font but in this case the enclosed text is rendered literally
+        and is not subject to further expansion (see <<X80,inline
+        literal passthrough>>).
+
+`Single quoted text'::
+        Phrases enclosed with a \`single grave accent to the left and
+        a single acute accent to the right' are rendered in single
+        quotation marks.
+
+``Double quoted text''::
+        Phrases enclosed with \\``two grave accents to the left and
+        two acute accents to the right'' are rendered in quotation
+        marks.
+
+#Unquoted text#::
+        Placing \#hashes around text# does nothing, it is a mechanism
+        to allow inline attributes to be applied to otherwise
+        unformatted text.
+
+New quote types can be defined by editing asciidoc(1) configuration
+files. See the <<X7,Configuration Files>> section for details.
+
+.Quoted text behavior
+- Quoting cannot be overlapped.
+- Different quoting types can be nested.
+- To suppress quoted text formatting place a backslash character
+  immediately in front of the leading quote character(s). In the case
+  of ambiguity between escaped and non-escaped text you will need to
+  escape both leading and trailing quotes, in the case of
+  multi-character quotes you may even need to escape individual
+  characters.
+
+[[X96]]
+Quoted text attributes
+^^^^^^^^^^^^^^^^^^^^^^
+Quoted text can be prefixed with an <<X21,attribute list>>.  The first
+positional attribute ('role' attribute) is translated by AsciiDoc to
+an HTML 'span' element 'class' attribute or a DocBook 'phrase' element
+'role' attribute.
+
+DocBook XSL Stylesheets translate DocBook 'phrase' elements with
+'role' attributes to corresponding HTML 'span' elements with the same
+'class' attributes; CSS can then be used
+http://www.sagehill.net/docbookxsl/UsingCSS.html[to style the
+generated HTML].  Thus CSS styling can be applied to both DocBook and
+AsciiDoc generated HTML outputs.  You can also specify multiple class
+names separated by spaces.
+
+CSS rules for text color, text background color, text size and text
+decorators are included in the distributed AsciiDoc CSS files and are
+used in conjunction with AsciiDoc 'xhtml11', 'html5' and 'docbook'
+outputs. The CSS class names are:
+
+- '<color>' (text foreground color).
+- '<color>-background' (text background color).
+- 'big' and 'small' (text size).
+- 'underline', 'overline' and 'line-through' (strike through) text
+  decorators.
+
+Where '<color>' can be any of the
+http://en.wikipedia.org/wiki/Web_colors#HTML_color_names[sixteen HTML
+color names].  Examples:
+
+  [red]#Obvious# and [big red yellow-background]*very obvious*.
+
+  [underline]#Underline text#, [overline]#overline text# and
+  [blue line-through]*bold blue and line-through*.
+
+is rendered as:
+
+[red]#Obvious# and [big red yellow-background]*very obvious*.
+
+[underline]#Underline text#, [overline]#overline text# and
+[bold blue line-through]*bold blue and line-through*.
+
+NOTE: Color and text decorator attributes are rendered for XHTML and
+HTML 5 outputs using CSS stylesheets.  The mechanism to implement
+color and text decorator attributes is provided for DocBook toolchains
+via the DocBook 'phrase' element 'role' attribute, but the actual
+rendering is toolchain specific and is not part of the AsciiDoc
+distribution.
+
+[[X52]]
+Constrained and Unconstrained Quotes
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+There are actually two types of quotes:
+
+Constrained quotes
+++++++++++++++++++
+Quoted must be bounded by white space or commonly adjoining
+punctuation characters. These are the most commonly used type of
+quote.
+
+Unconstrained quotes
+++++++++++++++++++++
+Unconstrained quotes have no boundary constraints and can be placed
+anywhere within inline text. For consistency and to make them easier
+to remember unconstrained quotes are double-ups of the `_`, `*`, `+`
+and `#` constrained quotes:
+
+  __unconstrained emphasized text__
+  **unconstrained strong text**
+  ++unconstrained monospaced text++
+  ##unconstrained unquoted text##
+
+The following example emboldens the letter F:
+
+  **F**ile Open...
+
+Superscripts and Subscripts
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Put \^carets on either^ side of the text to be superscripted, put
+\~tildes on either side~ of text to be subscripted.  For example, the
+following line:
+
+  e^πi^+1 = 0. H~2~O and x^10^. Some ^super text^
+  and ~some sub text~
+
+Is rendered like:
+
+e^πi^+1 = 0. H~2~O and x^10^. Some ^super text^
+and ~some sub text~
+
+Superscripts and subscripts are implemented as <<X52,unconstrained
+quotes>> and they can be escaped with a leading backslash and prefixed
+with with an attribute list.
+
+Line Breaks
+~~~~~~~~~~~
+A plus character preceded by at least one space character at the end
+of a non-blank line forces a line break. It generates a line break
+(`br`) tag for HTML outputs and a custom XML `asciidoc-br` processing
+instruction for DocBook outputs. The `asciidoc-br` processing
+instruction is handled by <<X43,a2x(1)>>.
+
+Page Breaks
+~~~~~~~~~~~
+A line of three or more less-than (`<<<`) characters will generate a
+hard page break in DocBook and printed HTML outputs.  It uses the CSS
+`page-break-after` property for HTML outputs and a custom XML
+`asciidoc-pagebreak` processing instruction for DocBook outputs. The
+`asciidoc-pagebreak` processing instruction is handled by
+<<X43,a2x(1)>>. Hard page breaks are sometimes handy but as a general
+rule you should let your page processor generate page breaks for you.
+
+Rulers
+~~~~~~
+A line of three or more apostrophe characters will generate a ruler
+line.  It generates a ruler (`hr`) tag for HTML outputs and a custom
+XML `asciidoc-hr` processing instruction for DocBook outputs. The
+`asciidoc-hr` processing instruction is handled by <<X43,a2x(1)>>.
+
+Tabs
+~~~~
+By default tab characters input files will translated to 8 spaces. Tab
+expansion is set with the 'tabsize' entry in the configuration file
+`[miscellaneous]` section and can be overridden in included files by
+setting a 'tabsize' attribute in the `include` macro's attribute list.
+For example:
+
+  include::addendum.txt[tabsize=2]
+
+The tab size can also be set using the attribute command-line option,
+for example `--attribute tabsize=4`
+
+Replacements
+~~~~~~~~~~~~
+The following replacements are defined in the default AsciiDoc
+configuration:
+
+  (C) copyright, (TM) trademark, (R) registered trademark,
+  -- em dash, ... ellipsis, -> right arrow, <- left arrow, => right
+  double arrow, <= left double arrow.
+
+Which are rendered as:
+
+(C) copyright, (TM) trademark, (R) registered trademark,
+-- em dash, ... ellipsis, -> right arrow, <- left arrow, => right
+double arrow, <= left double arrow.
+
+You can also include arbitrary entity references in the AsciiDoc
+source. Examples:
+
+  ➊ ¶
+
+renders:
+
+➊ ¶
+
+To render a replacement literally escape it with a leading back-slash.
+
+The <<X7,Configuration Files>> section explains how to configure your
+own replacements.
+
+Special Words
+~~~~~~~~~~~~~
+Words defined in `[specialwords]` configuration file sections are
+automatically marked up without having to be explicitly notated.
+
+The <<X7,Configuration Files>> section explains how to add and replace
+special words.
+
+
+[[X17]]
+Titles
+------
+Document and section titles can be in either of two formats:
+
+Two line titles
+~~~~~~~~~~~~~~~
+A two line title consists of a title line, starting hard against the
+left margin, and an underline. Section underlines consist a repeated
+character pairs spanning the width of the preceding title (give or
+take up to two characters):
+
+The default title underlines for each of the document levels are:
+
+
+  Level 0 (top level):     ======================
+  Level 1:                 ----------------------
+  Level 2:                 ~~~~~~~~~~~~~~~~~~~~~~
+  Level 3:                 ^^^^^^^^^^^^^^^^^^^^^^
+  Level 4 (bottom level):  ++++++++++++++++++++++
+
+Examples:
+
+  Level One Section Title
+  -----------------------
+
+  Level 2 Subsection Title
+  ~~~~~~~~~~~~~~~~~~~~~~~~
+
+[[X46]]
+One line titles
+~~~~~~~~~~~~~~~
+One line titles consist of a single line delimited on either side by
+one or more equals characters (the number of equals characters
+corresponds to the section level minus one).  Here are some examples:
+
+  = Document Title (level 0) =
+  == Section title (level 1) ==
+  === Section title (level 2) ===
+  ==== Section title (level 3) ====
+  ===== Section title (level 4) =====
+
+[NOTE]
+=====================================================================
+- One or more spaces must fall between the title and the delimiters.
+- The trailing title delimiter is optional.
+- The one-line title syntax can be changed by editing the
+  configuration file `[titles]` section `sect0`...`sect4` entries.
+=====================================================================
+
+Floating titles
+~~~~~~~~~~~~~~~
+Setting the title's first positional attribute or 'style' attribute to
+'float' generates a free-floating title. A free-floating title is
+rendered just like a normal section title but is not formally
+associated with a text body and is not part of the regular section
+hierarchy so the normal ordering rules do not apply. Floating titles
+can also be used in contexts where section titles are illegal: for
+example sidebar and admonition blocks.  Example:
+
+  [float]
+  The second day
+  ~~~~~~~~~~~~~~
+
+Floating titles do not appear in a document's table of contents.
+
+
+[[X42]]
+Block Titles
+------------
+A 'BlockTitle' element is a single line beginning with a period
+followed by the title text. A BlockTitle is applied to the immediately
+following Paragraph, DelimitedBlock, List, Table or BlockMacro. For
+example:
+
+........................
+.Notes
+- Note 1.
+- Note 2.
+........................
+
+is rendered as:
+
+.Notes
+- Note 1.
+- Note 2.
+
+
+[[X41]]
+BlockId Element
+---------------
+A 'BlockId' is a single line block element containing a unique
+identifier enclosed in double square brackets. It is used to assign an
+identifier to the ensuing block element. For example:
+
+  [[chapter-titles]]
+  Chapter titles can be ...
+
+The preceding example identifies the ensuing paragraph so it can be
+referenced from other locations, for example with
+`<<chapter-titles,chapter titles>>`.
+
+'BlockId' elements can be applied to Title, Paragraph, List,
+DelimitedBlock, Table and BlockMacro elements.  The BlockId element
+sets the `{id}` attribute for substitution in the subsequent block's
+markup template. If a second positional argument is supplied it sets
+the `{reftext}` attribute which is used to set the DocBook `xreflabel`
+attribute.
+
+The 'BlockId' element has the same syntax and serves the same function
+to the <<X30,anchor inline macro>>.
+
+[[X79]]
+AttributeList Element
+---------------------
+An 'AttributeList' block element is an <<X21,attribute list>> on a
+line by itself:
+
+- 'AttributeList' attributes are only applied to the immediately
+  following block element -- the attributes are made available to the
+  block's markup template.
+- Multiple contiguous 'AttributeList' elements are additively combined
+  in the order they appear..
+- The first positional attribute in the list is often used to specify
+  the ensuing element's <<X23,style>>.
+
+Attribute value substitution
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+By default, only substitutions that take place inside attribute list
+values are attribute references, this is because not all attributes
+are destined to be marked up and rendered as text (for example the
+table 'cols' attribute). To perform normal inline text substitutions
+(special characters, quotes, macros, replacements) on an attribute
+value you need to enclose it in single quotes. In the following quote
+block the second attribute value in the AttributeList is quoted to
+ensure the 'http' macro is expanded to a hyperlink.
+
+---------------------------------------------------------------------
+[quote,'http://en.wikipedia.org/wiki/Samuel_Johnson[Samuel Johnson]']
+_____________________________________________________________________
+Sir, a woman's preaching is like a dog's walking on his hind legs. It
+is not done well; but you are surprised to find it done at all.
+_____________________________________________________________________
+---------------------------------------------------------------------
+
+Common attributes
+~~~~~~~~~~~~~~~~~
+Most block elements support the following attributes:
+
+[cols="1e,1,5a",frame="topbot",options="header"]
+|====================================================================
+|Name |Backends |Description
+
+|id |html4, html5, xhtml11, docbook |
+Unique identifier typically serve as link targets.
+Can also be set by the 'BlockId' element.
+
+|role |html4, html5, xhtml11, docbook |
+Role contains a string used to classify or subclassify an element and
+can be applied to AsciiDoc block elements.  The AsciiDoc 'role'
+attribute is translated to the 'role' attribute in DocBook outputs and
+is included in the 'class' attribute in HTML outputs, in this respect
+it behaves like the <<X96,quoted text role attribute>>.
+
+DocBook XSL Stylesheets translate DocBook 'role' attributes to HTML
+'class' attributes; CSS can then be used
+http://www.sagehill.net/docbookxsl/UsingCSS.html[to style the
+generated HTML].
+
+|reftext |docbook |
+'reftext' is used to set the DocBook 'xreflabel' attribute.
+The 'reftext' attribute can an also be set by the 'BlockId' element.
+
+|====================================================================
+
+
+Paragraphs
+----------
+Paragraphs are blocks of text terminated by a blank line, the end of
+file, or the start of a delimited block or a list.  There are three
+paragraph syntaxes: normal, indented (literal) and admonition which
+are rendered, by default, with the corresponding paragraph style.
+
+Each syntax has a default style, but you can explicitly apply any
+paragraph style to any paragraph syntax. You can also apply
+<<X104,delimited block>> styles to single paragraphs.
+
+The built-in paragraph styles are: 'normal', 'literal', 'verse',
+'quote', 'listing', 'TIP', 'NOTE', 'IMPORTANT', 'WARNING', 'CAUTION',
+'abstract', 'partintro', 'comment', 'example', 'sidebar', 'source',
+'music', 'latex', 'graphviz'.
+
+normal paragraph syntax
+~~~~~~~~~~~~~~~~~~~~~~~
+Normal paragraph syntax consists of one or more non-blank lines of
+text. The first line must start hard against the left margin (no
+intervening white space). The default processing expectation is that
+of a normal paragraph of text.
+
+[[X85]]
+literal paragraph syntax
+~~~~~~~~~~~~~~~~~~~~~~~~
+Literal paragraphs are rendered verbatim in a monospaced font without
+any distinguishing background or border.  By default there is no text
+formatting or substitutions within Literal paragraphs apart from
+Special Characters and Callouts.
+
+The 'literal' style is applied implicitly to indented paragraphs i.e.
+where the first line of the paragraph is indented by one or more space
+or tab characters.  For example:
+
+---------------------------------------------------------------------
+  Consul *necessitatibus* per id,
+  consetetur, eu pro everti postulant
+  homero verear ea mea, qui.
+---------------------------------------------------------------------
+
+Renders:
+
+  Consul *necessitatibus* per id,
+  consetetur, eu pro everti postulant
+  homero verear ea mea, qui.
+
+NOTE: Because <<X64,lists>> can be indented it's possible for your
+indented paragraph to be misinterpreted as a list -- in situations
+like this apply the 'literal' style to a normal paragraph.
+
+Instead of using a paragraph indent you could apply the 'literal'
+style explicitly, for example:
+
+---------------------------------------------------------------------
+[literal]
+Consul *necessitatibus* per id,
+consetetur, eu pro everti postulant
+homero verear ea mea, qui.
+---------------------------------------------------------------------
+
+Renders:
+
+[literal]
+Consul *necessitatibus* per id,
+consetetur, eu pro everti postulant
+homero verear ea mea, qui.
+
+[[X94]]
+quote and verse paragraph styles
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The optional 'attribution' and 'citetitle' attributes (positional
+attributes 2 and 3) specify the author and source respectively.
+
+The 'verse' style retains the line breaks, for example:
+
+---------------------------------------------------------------------
+[verse, William Blake, from Auguries of Innocence]
+To see a world in a grain of sand,
+And a heaven in a wild flower,
+Hold infinity in the palm of your hand,
+And eternity in an hour.
+---------------------------------------------------------------------
+
+Which is rendered as:
+
+[verse, William Blake, from Auguries of Innocence]
+To see a world in a grain of sand,
+And a heaven in a wild flower,
+Hold infinity in the palm of your hand,
+And eternity in an hour.
+
+The 'quote' style flows the text at left and right margins, for
+example:
+
+---------------------------------------------------------------------
+[quote, Bertrand Russell, The World of Mathematics (1956)]
+A good notation has subtlety and suggestiveness which at times makes
+it almost seem like a live teacher.
+---------------------------------------------------------------------
+
+Which is rendered as:
+
+[quote, Bertrand Russell, The World of Mathematics (1956)]
+A good notation has subtlety and suggestiveness which at times makes
+it almost seem like a live teacher.
+
+[[X28]]
+Admonition Paragraphs
+~~~~~~~~~~~~~~~~~~~~~
+'TIP', 'NOTE', 'IMPORTANT', 'WARNING' and 'CAUTION' admonishment
+paragraph styles are generated by placing `NOTE:`, `TIP:`,
+`IMPORTANT:`, `WARNING:` or `CAUTION:` as the first word of the
+paragraph. For example:
+
+  NOTE: This is an example note.
+
+Alternatively, you can specify the paragraph admonition style
+explicitly using an <<X79,AttributeList element>>. For example:
+
+  [NOTE]
+  This is an example note.
+
+Renders:
+
+NOTE: This is an example note.
+
+TIP: If your admonition requires more than a single paragraph use an
+<<X22,admonition block>> instead.
+
+[[X47]]
+Admonition Icons and Captions
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+NOTE: Admonition customization with `icons`, `iconsdir`, `icon` and
+`caption` attributes does not apply when generating DocBook output. If
+you are going the DocBook route then the <<X43,a2x(1)>> `--no-icons`
+and `--icons-dir` options can be used to set the appropriate XSL
+Stylesheets parameters.
+
+By default the asciidoc(1) HTML backends generate text captions
+instead of admonition icon image links. To generate links to icon
+images define the <<X45,`icons`>> attribute, for example using the `-a
+icons` command-line option.
+
+The <<X44,`iconsdir`>> attribute sets the location of linked icon
+images.
+
+You can override the default icon image using the `icon` attribute to
+specify the path of the linked image. For example:
+
+  [icon="./images/icons/wink.png"]
+  NOTE: What lovely war.
+
+Use the `caption` attribute to customize the admonition captions (not
+applicable to `docbook` backend). The following example suppresses the
+icon image and customizes the caption of a 'NOTE' admonition
+(undefining the `icons` attribute with `icons=None` is only necessary
+if <<X45,admonition icons>> have been enabled):
+
+  [icons=None, caption="My Special Note"]
+  NOTE: This is my special note.
+
+This subsection also applies to <<X22,Admonition Blocks>>.
+
+
+[[X104]]
+Delimited Blocks
+----------------
+Delimited blocks are blocks of text enveloped by leading and trailing
+delimiter lines (normally a series of four or more repeated
+characters). The behavior of Delimited Blocks is specified by entries
+in configuration file `[blockdef-*]` sections.
+
+Predefined Delimited Blocks
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+AsciiDoc ships with a number of predefined DelimitedBlocks (see the
+`asciidoc.conf` configuration file in the asciidoc(1) program
+directory):
+
+Predefined delimited block underlines:
+
+  CommentBlock:     //////////////////////////
+  PassthroughBlock: ++++++++++++++++++++++++++
+  ListingBlock:     --------------------------
+  LiteralBlock:     ..........................
+  SidebarBlock:     **************************
+  QuoteBlock:       __________________________
+  ExampleBlock:     ==========================
+  OpenBlock:        --
+
+.Default DelimitedBlock substitutions
+[cols="2e,7*^",frame="topbot",options="header,autowidth"]
+|=====================================================
+| |Attributes |Callouts |Macros | Quotes |Replacements
+|Special chars |Special words
+
+|PassthroughBlock |Yes |No  |Yes |No  |No  |No  |No
+|ListingBlock     |No  |Yes |No  |No  |No  |Yes |No
+|LiteralBlock     |No  |Yes |No  |No  |No  |Yes |No
+|SidebarBlock     |Yes |No  |Yes |Yes |Yes |Yes |Yes
+|QuoteBlock       |Yes |No  |Yes |Yes |Yes |Yes |Yes
+|ExampleBlock     |Yes |No  |Yes |Yes |Yes |Yes |Yes
+|OpenBlock        |Yes |No  |Yes |Yes |Yes |Yes |Yes
+|=====================================================
+
+Listing Blocks
+~~~~~~~~~~~~~~
+'ListingBlocks' are rendered verbatim in a monospaced font, they
+retain line and whitespace formatting and are often distinguished by a
+background or border. There is no text formatting or substitutions
+within Listing blocks apart from Special Characters and Callouts.
+Listing blocks are often used for computer output and file listings.
+
+Here's an example:
+
+[listing]
+......................................
+--------------------------------------
+#include <stdio.h>
+
+int main() {
+   printf("Hello World!\n");
+   exit(0);
+}
+--------------------------------------
+......................................
+
+Which will be rendered like:
+
+--------------------------------------
+#include <stdio.h>
+
+int main() {
+    printf("Hello World!\n");
+    exit(0);
+}
+--------------------------------------
+
+By convention <<X59,filter blocks>> use the listing block syntax and
+are implemented as distinct listing block styles.
+
+[[X65]]
+Literal Blocks
+~~~~~~~~~~~~~~
+'LiteralBlocks' are rendered just like <<X85,literal paragraphs>>.
+Example:
+
+---------------------------------------------------------------------
+...................................
+Consul *necessitatibus* per id,
+consetetur, eu pro everti postulant
+homero verear ea mea, qui.
+...................................
+---------------------------------------------------------------------
+
+Renders:
+...................................
+Consul *necessitatibus* per id,
+consetetur, eu pro everti postulant
+homero verear ea mea, qui.
+...................................
+
+If the 'listing' style is applied to a LiteralBlock it will be
+rendered as a ListingBlock (this is handy if you have a listing
+containing a ListingBlock).
+
+Sidebar Blocks
+~~~~~~~~~~~~~~
+A sidebar is a short piece of text presented outside the narrative
+flow of the main text. The sidebar is normally presented inside a
+bordered box to set it apart from the main text.
+
+The sidebar body is treated like a normal section body.
+
+Here's an example:
+
+---------------------------------------------------------------------
+.An Example Sidebar
+************************************************
+Any AsciiDoc SectionBody element (apart from
+SidebarBlocks) can be placed inside a sidebar.
+************************************************
+---------------------------------------------------------------------
+
+Which will be rendered like:
+
+.An Example Sidebar
+************************************************
+Any AsciiDoc SectionBody element (apart from
+SidebarBlocks) can be placed inside a sidebar.
+************************************************
+
+[[X26]]
+Comment Blocks
+~~~~~~~~~~~~~~
+The contents of 'CommentBlocks' are not processed; they are useful for
+annotations and for excluding new or outdated content that you don't
+want displayed. CommentBlocks are never written to output files.
+Example:
+
+---------------------------------------------------------------------
+//////////////////////////////////////////
+CommentBlock contents are not processed by
+asciidoc(1).
+//////////////////////////////////////////
+---------------------------------------------------------------------
+
+See also <<X25,Comment Lines>>.
+
+NOTE: System macros are executed inside comment blocks.
+
+[[X76]]
+Passthrough Blocks
+~~~~~~~~~~~~~~~~~~
+By default the block contents is subject only to 'attributes' and
+'macros' substitutions (use an explicit 'subs' attribute to apply
+different substitutions).  PassthroughBlock content will often be
+backend specific. Here's an example:
+
+---------------------------------------------------------------------
+[subs="quotes"]
+++++++++++++++++++++++++++++++++++++++
+<table border="1"><tr>
+  <td>*Cell 1*</td>
+  <td>*Cell 2*</td>
+</tr></table>
+++++++++++++++++++++++++++++++++++++++
+---------------------------------------------------------------------
+
+The following styles can be applied to passthrough blocks:
+
+pass::
+  No substitutions are performed. This is equivalent to `subs="none"`.
+
+asciimath, latexmath::
+  By default no substitutions are performed, the contents are rendered
+  as <<X78,mathematical formulas>>.
+
+Quote Blocks
+~~~~~~~~~~~~
+'QuoteBlocks' are used for quoted passages of text. There are two
+styles: 'quote' and 'verse'. The style behavior is identical to
+<<X94,quote and verse paragraphs>> except that blocks can contain
+multiple paragraphs and, in the case of the 'quote' style, other
+section elements.  The first positional attribute sets the style, if
+no attributes are specified the 'quote' style is used.  The optional
+'attribution' and 'citetitle' attributes (positional attributes 2 and
+3) specify the quote's author and source. For example:
+
+---------------------------------------------------------------------
+[quote, Sir Arthur Conan Doyle, The Adventures of Sherlock Holmes]
+____________________________________________________________________
+As he spoke there was the sharp sound of horses' hoofs and
+grating wheels against the curb, followed by a sharp pull at the
+bell. Holmes whistled.
+
+"A pair, by the sound," said he. "Yes," he continued, glancing
+out of the window. "A nice little brougham and a pair of
+beauties. A hundred and fifty guineas apiece. There's money in
+this case, Watson, if there is nothing else."
+____________________________________________________________________
+---------------------------------------------------------------------
+
+Which is rendered as:
+
+[quote, Sir Arthur Conan Doyle, The Adventures of Sherlock Holmes]
+____________________________________________________________________
+As he spoke there was the sharp sound of horses' hoofs and
+grating wheels against the curb, followed by a sharp pull at the
+bell. Holmes whistled.
+
+"A pair, by the sound," said he. "Yes," he continued, glancing
+out of the window. "A nice little brougham and a pair of
+beauties. A hundred and fifty guineas apiece. There's money in
+this case, Watson, if there is nothing else."
+____________________________________________________________________
+
+[[X48]]
+Example Blocks
+~~~~~~~~~~~~~~
+'ExampleBlocks' encapsulate the DocBook Example element and are used
+for, well, examples.  Example blocks can be titled by preceding them
+with a 'BlockTitle'.  DocBook toolchains will normally automatically
+number examples and generate a 'List of Examples' backmatter section.
+
+Example blocks are delimited by lines of equals characters and can
+contain any block elements apart from Titles, BlockTitles and
+Sidebars) inside an example block. For example:
+
+---------------------------------------------------------------------
+.An example
+=====================================================================
+Qui in magna commodo, est labitur dolorum an. Est ne magna primis
+adolescens.
+=====================================================================
+---------------------------------------------------------------------
+
+Renders:
+
+.An example
+=====================================================================
+Qui in magna commodo, est labitur dolorum an. Est ne magna primis
+adolescens.
+=====================================================================
+
+A title prefix that can be inserted with the `caption` attribute
+(HTML backends). For example:
+
+---------------------------------------------------------------------
+[caption="Example 1: "]
+.An example with a custom caption
+=====================================================================
+Qui in magna commodo, est labitur dolorum an. Est ne magna primis
+adolescens.
+=====================================================================
+---------------------------------------------------------------------
+
+[[X22]]
+Admonition Blocks
+~~~~~~~~~~~~~~~~~
+The 'ExampleBlock' definition includes a set of admonition
+<<X23,styles>> ('NOTE', 'TIP', 'IMPORTANT', 'WARNING', 'CAUTION') for
+generating admonition blocks (admonitions containing more than a
+<<X28,single paragraph>>).  Just precede the 'ExampleBlock' with an
+attribute list specifying the admonition style name. For example:
+
+---------------------------------------------------------------------
+[NOTE]
+.A NOTE admonition block
+=====================================================================
+Qui in magna commodo, est labitur dolorum an. Est ne magna primis
+adolescens.
+
+. Fusce euismod commodo velit.
+. Vivamus fringilla mi eu lacus.
+  .. Fusce euismod commodo velit.
+  .. Vivamus fringilla mi eu lacus.
+. Donec eget arcu bibendum
+  nunc consequat lobortis.
+=====================================================================
+---------------------------------------------------------------------
+
+Renders:
+
+[NOTE]
+.A NOTE admonition block
+=====================================================================
+Qui in magna commodo, est labitur dolorum an. Est ne magna primis
+adolescens.
+
+. Fusce euismod commodo velit.
+. Vivamus fringilla mi eu lacus.
+  .. Fusce euismod commodo velit.
+  .. Vivamus fringilla mi eu lacus.
+. Donec eget arcu bibendum
+  nunc consequat lobortis.
+=====================================================================
+
+See also <<X47,Admonition Icons and Captions>>.
+
+[[X29]]
+Open Blocks
+~~~~~~~~~~~
+Open blocks are special:
+
+- The open block delimiter is line containing two hyphen characters
+  (instead of four or more repeated characters).
+
+- They can be used to group block elements for <<X15,List item
+  continuation>>.
+
+- Open blocks can be styled to behave like any other type of delimited
+  block.  The  following built-in styles can be applied to open
+  blocks: 'literal', 'verse', 'quote', 'listing', 'TIP', 'NOTE',
+  'IMPORTANT', 'WARNING', 'CAUTION', 'abstract', 'partintro',
+  'comment', 'example', 'sidebar', 'source', 'music', 'latex',
+  'graphviz'. For example, the following open block and listing block
+  are functionally identical:
+
+  [listing]
+  --
+  Lorum ipsum ...
+  --
+
+  ---------------
+  Lorum ipsum ...
+  ---------------
+
+- An unstyled open block groups section elements but otherwise does
+  nothing.
+
+Open blocks are used to generate document abstracts and book part
+introductions:
+
+- Apply the 'abstract' style to generate an abstract, for example:
+
+  [abstract]
+  --
+  In this paper we will ...
+  --
+
+. Apply the 'partintro' style to generate a book part introduction for
+  a multi-part book, for example:
+
+  [partintro]
+  .Optional part introduction title
+  --
+  Optional part introduction goes here.
+  --
+
+
+[[X64]]
+Lists
+-----
+.List types
+- Bulleted lists. Also known as itemized or unordered lists.
+- Numbered lists. Also called ordered lists.
+- Labeled lists. Sometimes called variable or definition lists.
+- Callout lists (a list of callout annotations).
+
+.List behavior
+- List item indentation is optional and does not determine nesting,
+  indentation does however make the source more readable.
+- Another list or a literal paragraph immediately following a list
+  item will be implicitly included in the list item; use <<X15, list
+  item continuation>> to explicitly append other block elements to a
+  list item.
+- A comment block or a comment line block macro element will terminate
+  a list -- use inline comment lines to put comments inside lists.
+- The `listindex` <<X60,intrinsic attribute>> is the current list item
+  index (1..). If this attribute is used outside a list then it's value
+  is the number of items in the most recently closed list. Useful for
+  displaying the number of items in a list.
+
+Bulleted Lists
+~~~~~~~~~~~~~~
+Bulleted list items start with a single dash or one to five asterisks
+followed by some white space then some text. Bulleted list syntaxes
+are:
+
+...................
+- List item.
+* List item.
+** List item.
+*** List item.
+**** List item.
+***** List item.
+...................
+
+Numbered Lists
+~~~~~~~~~~~~~~
+List item numbers are explicit or implicit.
+
+.Explicit numbering
+List items begin with a number followed by some white space then the
+item text. The numbers can be decimal (arabic), roman (upper or lower
+case) or alpha (upper or lower case). Decimal and alpha numbers are
+terminated with a period, roman numbers are terminated with a closing
+parenthesis. The different terminators are necessary to ensure 'i',
+'v' and 'x' roman numbers are are distinguishable from 'x', 'v' and
+'x' alpha numbers. Examples:
+
+.....................................................................
+1.   Arabic (decimal) numbered list item.
+a.   Lower case alpha (letter) numbered list item.
+F.   Upper case alpha (letter) numbered list item.
+iii) Lower case roman numbered list item.
+IX)  Upper case roman numbered list item.
+.....................................................................
+
+.Implicit numbering
+List items begin one to five period characters, followed by some white
+space then the item text. Examples:
+
+.....................................................................
+. Arabic (decimal) numbered list item.
+.. Lower case alpha (letter) numbered list item.
+... Lower case roman numbered list item.
+.... Upper case alpha (letter) numbered list item.
+..... Upper case roman numbered list item.
+.....................................................................
+
+You can use the 'style' attribute (also the first positional
+attribute) to specify an alternative numbering style.  The numbered
+list style can be one of the following values: 'arabic', 'loweralpha',
+'upperalpha', 'lowerroman', 'upperroman'.
+
+Here are some examples of bulleted and numbered lists:
+
+---------------------------------------------------------------------
+- Praesent eget purus quis magna eleifend eleifend.
+  1. Fusce euismod commodo velit.
+    a. Fusce euismod commodo velit.
+    b. Vivamus fringilla mi eu lacus.
+    c. Donec eget arcu bibendum nunc consequat lobortis.
+  2. Vivamus fringilla mi eu lacus.
+    i)  Fusce euismod commodo velit.
+    ii) Vivamus fringilla mi eu lacus.
+  3. Donec eget arcu bibendum nunc consequat lobortis.
+  4. Nam fermentum mattis ante.
+- Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+  * Fusce euismod commodo velit.
+  ** Qui in magna commodo, est labitur dolorum an. Est ne magna primis
+     adolescens. Sit munere ponderum dignissim et. Minim luptatum et
+     vel.
+  ** Vivamus fringilla mi eu lacus.
+  * Donec eget arcu bibendum nunc consequat lobortis.
+- Nulla porttitor vulputate libero.
+  . Fusce euismod commodo velit.
+  . Vivamus fringilla mi eu lacus.
+[upperroman]
+    .. Fusce euismod commodo velit.
+    .. Vivamus fringilla mi eu lacus.
+  . Donec eget arcu bibendum nunc consequat lobortis.
+---------------------------------------------------------------------
+
+Which render as:
+
+- Praesent eget purus quis magna eleifend eleifend.
+  1. Fusce euismod commodo velit.
+    a. Fusce euismod commodo velit.
+    b. Vivamus fringilla mi eu lacus.
+    c. Donec eget arcu bibendum nunc consequat lobortis.
+  2. Vivamus fringilla mi eu lacus.
+    i)  Fusce euismod commodo velit.
+    ii) Vivamus fringilla mi eu lacus.
+  3. Donec eget arcu bibendum nunc consequat lobortis.
+  4. Nam fermentum mattis ante.
+- Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+  * Fusce euismod commodo velit.
+  ** Qui in magna commodo, est labitur dolorum an. Est ne magna primis
+     adolescens. Sit munere ponderum dignissim et. Minim luptatum et
+     vel.
+  ** Vivamus fringilla mi eu lacus.
+  * Donec eget arcu bibendum nunc consequat lobortis.
+- Nulla porttitor vulputate libero.
+  . Fusce euismod commodo velit.
+  . Vivamus fringilla mi eu lacus.
+[upperroman]
+    .. Fusce euismod commodo velit.
+    .. Vivamus fringilla mi eu lacus.
+  . Donec eget arcu bibendum nunc consequat lobortis.
+
+A predefined 'compact' option is available to bulleted and numbered
+lists -- this translates to the DocBook 'spacing="compact"' lists
+attribute which may or may not be processed by the DocBook toolchain.
+Example:
+
+  [options="compact"]
+  - Compact list item.
+  - Another compact list item.
+
+TIP: To apply the 'compact' option globally define a document-wide
+'compact-option' attribute, e.g. using the `-a compact-option`
+command-line option.
+
+You can set the list start number using the 'start' attribute (works
+for HTML outputs and DocBook outputs processed by DocBook XSL
+Stylesheets). Example:
+
+  [start=7]
+  . List item 7.
+  . List item 8.
+
+Labeled Lists
+~~~~~~~~~~~~~
+Labeled list items consist of one or more text labels followed by the
+text of the list item.
+
+An item label begins a line with an alphanumeric character hard
+against the left margin and ends with two, three or four colons or two
+semi-colons. A list item can have multiple labels, one per line.
+
+The list item text consists of one or more lines of text starting
+after the last label (either on the same line or a new line) and can
+be followed by nested List or ListParagraph elements. Item text can be
+optionally indented.
+
+Here are some examples:
+
+---------------------------------------------------------------------
+In::
+Lorem::
+  Fusce euismod commodo velit.
+
+  Fusce euismod commodo velit.
+
+Ipsum:: Vivamus fringilla mi eu lacus.
+  * Vivamus fringilla mi eu lacus.
+  * Donec eget arcu bibendum nunc consequat lobortis.
+Dolor::
+  Donec eget arcu bibendum nunc consequat lobortis.
+  Suspendisse;;
+    A massa id sem aliquam auctor.
+  Morbi;;
+    Pretium nulla vel lorem.
+  In;;
+    Dictum mauris in urna.
+    Vivamus::: Fringilla mi eu lacus.
+    Donec:::   Eget arcu bibendum nunc consequat lobortis.
+---------------------------------------------------------------------
+
+Which render as:
+
+In::
+Lorem::
+  Fusce euismod commodo velit.
+
+  Fusce euismod commodo velit.
+
+Ipsum:: Vivamus fringilla mi eu lacus.
+  * Vivamus fringilla mi eu lacus.
+  * Donec eget arcu bibendum nunc consequat lobortis.
+Dolor::
+  Donec eget arcu bibendum nunc consequat lobortis.
+  Suspendisse;;
+    A massa id sem aliquam auctor.
+  Morbi;;
+    Pretium nulla vel lorem.
+  In;;
+    Dictum mauris in urna.
+    Vivamus::: Fringilla mi eu lacus.
+    Donec:::   Eget arcu bibendum nunc consequat lobortis.
+
+Horizontal labeled list style
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The 'horizontal' labeled list style (also the first positional
+attribute) places the list text side-by-side with the label instead of
+under the label. Here is an example:
+
+---------------------------------------------------------------------
+[horizontal]
+*Lorem*:: Fusce euismod commodo velit.  Qui in magna commodo, est
+labitur dolorum an. Est ne magna primis adolescens.
+
+  Fusce euismod commodo velit.
+
+*Ipsum*:: Vivamus fringilla mi eu lacus.
+- Vivamus fringilla mi eu lacus.
+- Donec eget arcu bibendum nunc consequat lobortis.
+
+*Dolor*::
+  - Vivamus fringilla mi eu lacus.
+  - Donec eget arcu bibendum nunc consequat lobortis.
+
+---------------------------------------------------------------------
+
+Which render as:
+
+[horizontal]
+*Lorem*:: Fusce euismod commodo velit.  Qui in magna commodo, est
+labitur dolorum an. Est ne magna primis adolescens.
+
+  Fusce euismod commodo velit.
+
+*Ipsum*:: Vivamus fringilla mi eu lacus.
+- Vivamus fringilla mi eu lacus.
+- Donec eget arcu bibendum nunc consequat lobortis.
+
+*Dolor*::
+  - Vivamus fringilla mi eu lacus.
+  - Donec eget arcu bibendum nunc consequat lobortis.
+
+[NOTE]
+=====================================================================
+- Current PDF toolchains do not make a good job of determining
+  the relative column widths for horizontal labeled lists.
+- Nested horizontal labeled lists will generate DocBook validation
+  errors because the 'DocBook XML V4.2' DTD does not permit nested
+  informal tables (although <<X13,DocBook XSL Stylesheets>> and
+  <<X31,dblatex>> process them correctly).
+- The label width can be set as a percentage of the total width by
+  setting the 'width' attribute e.g. `width="10%"`
+=====================================================================
+
+Question and Answer Lists
+~~~~~~~~~~~~~~~~~~~~~~~~~
+AsciiDoc comes pre-configured with a 'qanda' style labeled list for generating
+DocBook question and answer (Q&A) lists. Example:
+
+---------------------------------------------------------------------
+[qanda]
+Question one::
+        Answer one.
+Question two::
+        Answer two.
+---------------------------------------------------------------------
+
+Renders:
+
+[qanda]
+Question one::
+        Answer one.
+Question two::
+        Answer two.
+
+Glossary Lists
+~~~~~~~~~~~~~~
+AsciiDoc comes pre-configured with a 'glossary' style labeled list for
+generating DocBook glossary lists. Example:
+
+---------------------------------------------------------------------
+[glossary]
+A glossary term::
+    The corresponding definition.
+A second glossary term::
+    The corresponding definition.
+---------------------------------------------------------------------
+
+For working examples see the `article.txt` and `book.txt` documents in
+the AsciiDoc `./doc` distribution directory.
+
+NOTE: To generate valid DocBook output glossary lists must be located
+in a section that uses the 'glossary' <<X93,section markup template>>.
+
+Bibliography Lists
+~~~~~~~~~~~~~~~~~~
+AsciiDoc comes with a predefined 'bibliography' bulleted list style
+generating DocBook bibliography entries. Example:
+
+---------------------------------------------------------------------
+[bibliography]
+.Optional list title
+- [[[taoup]]] Eric Steven Raymond. 'The Art of UNIX
+  Programming'. Addison-Wesley. ISBN 0-13-142901-9.
+- [[[walsh-muellner]]] Norman Walsh & Leonard Muellner.
+  'DocBook - The Definitive Guide'. O'Reilly & Associates.
+  1999. ISBN 1-56592-580-7.
+---------------------------------------------------------------------
+
+The `[[[<reference>]]]` syntax is a bibliography entry anchor, it
+generates an anchor named `<reference>` and additionally displays
+`[<reference>]` at the anchor position. For example `[[[taoup]]]`
+generates an anchor named `taoup` that displays `[taoup]` at the
+anchor position. Cite the reference from elsewhere your document using
+`<<taoup>>`, this displays a hyperlink (`[taoup]`) to the
+corresponding bibliography entry anchor.
+
+For working examples see the `article.txt` and `book.txt` documents in
+the AsciiDoc `./doc` distribution directory.
+
+NOTE: To generate valid DocBook output bibliography lists must be
+located in a <<X93,bibliography section>>.
+
+[[X15]]
+List Item Continuation
+~~~~~~~~~~~~~~~~~~~~~~
+Another list or a literal paragraph immediately following a list item
+is implicitly appended to the list item; to append other block
+elements to a list item you need to explicitly join them to the list
+item with a 'list continuation' (a separator line containing a single
+plus character). Multiple block elements can be appended to a list
+item using list continuations (provided they are legal list item
+children in the backend markup).
+
+Here are some examples of list item continuations: list item one
+contains multiple continuations; list item two is continued with an
+<<X29,OpenBlock>> containing multiple elements:
+
+---------------------------------------------------------------------
+1. List item one.
++
+List item one continued with a second paragraph followed by an
+Indented block.
++
+.................
+$ ls *.sh
+$ mv *.sh ~/tmp
+.................
++
+List item continued with a third paragraph.
+
+2. List item two continued with an open block.
++
+--
+This paragraph is part of the preceding list item.
+
+a. This list is nested and does not require explicit item continuation.
++
+This paragraph is part of the preceding list item.
+
+b. List item b.
+
+This paragraph belongs to item two of the outer list.
+--
+---------------------------------------------------------------------
+
+Renders:
+
+1. List item one.
++
+List item one continued with a second paragraph followed by an
+Indented block.
++
+.................
+$ ls *.sh
+$ mv *.sh ~/tmp
+.................
++
+List item continued with a third paragraph.
+
+2. List item two continued with an open block.
++
+--
+This paragraph is part of the preceding list item.
+
+a. This list is nested and does not require explicit item continuation.
++
+This paragraph is part of the preceding list item.
+
+b. List item b.
+
+This paragraph belongs to item two of the outer list.
+--
+
+
+[[X92]]
+Footnotes
+---------
+The shipped AsciiDoc configuration includes three footnote inline
+macros:
+
+`footnote:[<text>]`::
+  Generates a footnote with text `<text>`.
+
+`footnoteref:[<id>,<text>]`::
+  Generates a footnote with a reference ID `<id>` and text `<text>`.
+
+`footnoteref:[<id>]`::
+  Generates a reference to the footnote with ID `<id>`.
+
+The footnote text can span multiple lines.
+
+The 'xhtml11' and 'html5' backends render footnotes dynamically using
+JavaScript; 'html4' outputs do not use JavaScript and leave the
+footnotes inline; 'docbook' footnotes are processed by the downstream
+DocBook toolchain.
+
+Example footnotes:
+
+  A footnote footnote:[An example footnote.];
+  a second footnote with a reference ID footnoteref:[note2,Second footnote.];
+  finally a reference to the second footnote footnoteref:[note2].
+
+Renders:
+
+A footnote footnote:[An example footnote.];
+a second footnote with a reference ID footnoteref:[note2,Second footnote.];
+finally a reference to the second footnote footnoteref:[note2].
+
+
+Indexes
+-------
+The shipped AsciiDoc configuration includes the inline macros for
+generating DocBook index entries.
+
+`indexterm:[<primary>,<secondary>,<tertiary>]`::
+`(((<primary>,<secondary>,<tertiary>)))`::
+    This inline macro generates an index term (the `<secondary>` and
+    `<tertiary>` positional attributes are optional). Example:
+    `indexterm:[Tigers,Big cats]` (or, using the alternative syntax
+    `(((Tigers,Big cats)))`.  Index terms that have secondary and
+    tertiary entries also generate separate index terms for the
+    secondary and tertiary entries. The index terms appear in the
+    index, not the primary text flow.
+
+`indexterm2:[<primary>]`::
+`((<primary>))`::
+    This inline macro generates an index term that appears in both the
+    index and the primary text flow.  The `<primary>` should not be
+    padded to the left or right with white space characters.
+
+For working examples see the `article.txt` and `book.txt` documents in
+the AsciiDoc `./doc` distribution directory.
+
+NOTE: Index entries only really make sense if you are generating
+DocBook markup -- DocBook conversion programs automatically generate
+an index at the point an 'Index' section appears in source document.
+
+
+[[X105]]
+Callouts
+--------
+Callouts are a mechanism for annotating verbatim text (for example:
+source code, computer output and user input). Callout markers are
+placed inside the annotated text while the actual annotations are
+presented in a callout list after the annotated text. Here's an
+example:
+
+---------------------------------------------------------------------
+ .MS-DOS directory listing
+ -----------------------------------------------------
+ 10/17/97   9:04         <DIR>    bin
+ 10/16/97  14:11         <DIR>    DOS            \<1>
+ 10/16/97  14:40         <DIR>    Program Files
+ 10/16/97  14:46         <DIR>    TEMP
+ 10/17/97   9:04         <DIR>    tmp
+ 10/16/97  14:37         <DIR>    WINNT
+ 10/16/97  14:25             119  AUTOEXEC.BAT   \<2>
+  2/13/94   6:21          54,619  COMMAND.COM    \<2>
+ 10/16/97  14:25             115  CONFIG.SYS     \<2>
+ 11/16/97  17:17      61,865,984  pagefile.sys
+  2/13/94   6:21           9,349  WINA20.386     \<3>
+ -----------------------------------------------------
+
+ \<1> This directory holds MS-DOS.
+ \<2> System startup code for DOS.
+ \<3> Some sort of Windows 3.1 hack.
+---------------------------------------------------------------------
+
+Which renders:
+
+.MS-DOS directory listing
+-----------------------------------------------------
+10/17/97   9:04         <DIR>    bin
+10/16/97  14:11         <DIR>    DOS            <1>
+10/16/97  14:40         <DIR>    Program Files
+10/16/97  14:46         <DIR>    TEMP
+10/17/97   9:04         <DIR>    tmp
+10/16/97  14:37         <DIR>    WINNT
+10/16/97  14:25             119  AUTOEXEC.BAT   <2>
+ 2/13/94   6:21          54,619  COMMAND.COM    <2>
+10/16/97  14:25             115  CONFIG.SYS     <2>
+11/16/97  17:17      61,865,984  pagefile.sys
+ 2/13/94   6:21           9,349  WINA20.386     <3>
+-----------------------------------------------------
+
+<1> This directory holds MS-DOS.
+<2> System startup code for DOS.
+<3> Some sort of Windows 3.1 hack.
+
+.Explanation
+- The callout marks are whole numbers enclosed in angle brackets --
+  they refer to the correspondingly numbered item in the following
+  callout list.
+- By default callout marks are confined to 'LiteralParagraphs',
+  'LiteralBlocks' and 'ListingBlocks' (although this is a
+  configuration file option and can be changed).
+- Callout list item numbering is fairly relaxed -- list items can
+  start with `<n>`, `n>` or `>` where `n` is the optional list item
+  number (in the latter case list items starting with a single `>`
+  character are implicitly numbered starting at one).
+- Callout lists should not be nested.
+- Callout lists start list items hard against the left margin.
+- If you want to present a number inside angle brackets you'll need to
+  escape it with a backslash to prevent it being interpreted as a
+  callout mark.
+
+NOTE: Define the AsciiDoc 'icons' attribute (for example using the `-a
+icons` command-line option) to display callout icons.
+
+Implementation Notes
+~~~~~~~~~~~~~~~~~~~~
+Callout marks are generated by the 'callout' inline macro while
+callout lists are generated using the 'callout' list definition. The
+'callout' macro and 'callout' list are special in that they work
+together. The 'callout' inline macro is not enabled by the normal
+'macros' substitutions option, instead it has its own 'callouts'
+substitution option.
+
+The following attributes are available during inline callout macro
+substitution:
+
+`{index}`::
+    The callout list item index inside the angle brackets.
+`{coid}`::
+    An identifier formatted like `CO<listnumber>-<index>` that
+    uniquely identifies the callout mark. For example `CO2-4`
+    identifies the fourth callout mark in the second set of callout
+    marks.
+
+The `{coids}` attribute can be used during callout list item
+substitution -- it is a space delimited list of callout IDs that refer
+to the explanatory list item.
+
+Including callouts in included code
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+You can annotate working code examples with callouts -- just remember
+to put the callouts inside source code comments. This example displays
+the `test.py` source file (containing a single callout) using the
+'source' (code highlighter) filter:
+
+.AsciiDoc source
+---------------------------------------------------------------------
+ [source,python]
+ -------------------------------------------
+ \include::test.py[]
+ -------------------------------------------
+
+ \<1> Print statement.
+---------------------------------------------------------------------
+
+.Included `test.py` source
+---------------------------------------------------------------------
+print 'Hello World!'   # \<1>
+---------------------------------------------------------------------
+
+
+Macros
+------
+Macros are a mechanism for substituting parametrized text into output
+documents.
+
+Macros have a 'name', a single 'target' argument and an 'attribute
+list'.  The usual syntax is `<name>:<target>[<attrlist>]` (for
+inline macros) and `<name>::<target>[<attrlist>]` (for block
+macros).  Here are some examples:
+
+  http://www.docbook.org/[DocBook.org]
+  include::chapt1.txt[tabsize=2]
+  mailto:srackham@gmail.com[]
+
+.Macro behavior
+- `<name>` is the macro name. It can only contain letters, digits or
+  dash characters and cannot start with a dash.
+- The optional `<target>` cannot contain white space characters.
+- `<attrlist>` is a <<X21,list of attributes>> enclosed in square
+  brackets.
+- `]` characters inside attribute lists must be escaped with a
+  backslash.
+- Expansion of macro references can normally be escaped by prefixing a
+  backslash character (see the AsciiDoc 'FAQ' for examples of
+  exceptions to this rule).
+- Attribute references in block macros are expanded.
+- The substitutions performed prior to Inline macro macro expansion
+  are determined by the inline context.
+- Macros are processed in the order they appear in the configuration
+  file(s).
+- Calls to inline macros can be nested inside different inline macros
+  (an inline macro call cannot contain a nested call to itself).
+- In addition to `<name>`, `<target>` and `<attrlist>` the
+  `<passtext>` and `<subslist>` named groups are available to
+  <<X77,passthrough macros>>. A macro is a passthrough macro if the
+  definition includes a `<passtext>` named group.
+
+Inline Macros
+~~~~~~~~~~~~~
+Inline Macros occur in an inline element context. Predefined Inline
+macros include 'URLs', 'image' and 'link' macros.
+
+URLs
+^^^^
+'http', 'https', 'ftp', 'file', 'mailto' and 'callto' URLs are
+rendered using predefined inline macros.
+
+- If you don't need a custom link caption you can enter the 'http',
+  'https', 'ftp', 'file' URLs and email addresses without any special
+  macro syntax.
+- If the `<attrlist>` is empty the URL is displayed.
+
+Here are some examples:
+
+  http://www.docbook.org/[DocBook.org]
+  http://www.docbook.org/
+  mailto:joe.bloggs@foobar.com[email Joe Bloggs]
+  joe.bloggs@foobar.com
+
+Which are rendered:
+
+http://www.docbook.org/[DocBook.org]
+
+http://www.docbook.org/
+
+mailto:joe.bloggs@foobar.com[email Joe Bloggs]
+
+joe.bloggs@foobar.com
+
+If the `<target>` necessitates space characters use `%20`, for example
+`large%20image.png`.
+
+Internal Cross References
+^^^^^^^^^^^^^^^^^^^^^^^^^
+Two AsciiDoc inline macros are provided for creating hypertext links
+within an AsciiDoc document. You can use either the standard macro
+syntax or the (preferred) alternative.
+
+[[X30]]
+anchor
+++++++
+Used to specify hypertext link targets:
+
+  [[<id>,<xreflabel>]]
+  anchor:<id>[<xreflabel>]
+
+The `<id>` is a unique string that conforms to the output markup's
+anchor syntax. The optional `<xreflabel>` is the text to be displayed
+by captionless 'xref' macros that refer to this anchor. The optional
+`<xreflabel>` is only really useful when generating DocBook output.
+Example anchor:
+
+  [[X1]]
+
+You may have noticed that the syntax of this inline element is the
+same as that of the <<X41,BlockId block element>>, this is no
+coincidence since they are functionally equivalent.
+
+xref
+++++
+Creates a hypertext link to a document anchor.
+
+  <<<id>,<caption>>>
+  xref:<id>[<caption>]
+
+The `<id>` refers to an anchor ID. The optional `<caption>` is the
+link's displayed text. Example:
+
+  <<X21,attribute lists>>
+
+If `<caption>` is not specified then the displayed text is
+auto-generated:
+
+- The AsciiDoc 'xhtml11' and 'html5' backends display the `<id>`
+  enclosed in square brackets.
+- If DocBook is produced the DocBook toolchain is responsible for the
+  displayed text which will normally be the referenced figure, table
+  or section title number followed by the element's title text.
+
+Here is an example:
+
+---------------------------------------------------------------------
+[[tiger_image]]
+.Tyger tyger
+image::tiger.png[]
+
+This can be seen in <<tiger_image>>.
+---------------------------------------------------------------------
+
+Linking to Local Documents
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+Hypertext links to files on the local file system are specified using
+the 'link' inline macro.
+
+  link:<target>[<caption>]
+
+The 'link' macro generates relative URLs. The link macro `<target>` is
+the target file name (relative to the file system location of the
+referring document). The optional `<caption>` is the link's displayed
+text. If `<caption>` is not specified then `<target>` is displayed.
+Example:
+
+  link:downloads/foo.zip[download foo.zip]
+
+You can use the `<filename>#<id>` syntax to refer to an anchor within
+a target document but this usually only makes sense when targeting
+HTML documents.
+
+[[X9]]
+Images
+^^^^^^
+Inline images are inserted into the output document using the 'image'
+macro. The inline syntax is:
+
+  image:<target>[<attributes>]
+
+The contents of the image file `<target>` is displayed. To display the
+image its file format must be supported by the target backend
+application. HTML and DocBook applications normally support PNG or JPG
+files.
+
+`<target>` file name paths are relative to the location of the
+referring document.
+
+[[X55]]
+.Image macro attributes
+- The optional 'alt' attribute is also the first positional attribute,
+  it specifies alternative text which is displayed if the output
+  application is unable to display the image file (see also
+  http://htmlhelp.com/feature/art3.htm[Use of ALT texts in IMGs]). For
+  example:
+
+  image:images/logo.png[Company Logo]
+
+- The optional 'title' attribute provides a title for the image. The
+  <<X49,block image macro>> renders the title alongside the image.
+  The inline image macro displays the title as a popup ``tooltip'' in
+  visual browsers (AsciiDoc HTML outputs only).
+
+- The optional `width` and `height` attributes scale the image size
+  and can be used in any combination. The units are pixels.  The
+  following example scales the previous example to a height of 32
+  pixels:
+
+  image:images/logo.png["Company Logo",height=32]
+
+- The optional `link` attribute is used to link the image to an
+  external document. The following example links a screenshot
+  thumbnail to a full size version:
+
+  image:screen-thumbnail.png[height=32,link="screen.png"]
+
+- The optional `scaledwidth` attribute is only used in DocBook block
+  images (specifically for PDF documents). The following example
+  scales the images to 75% of the available print width:
+
+  image::images/logo.png[scaledwidth="75%",alt="Company Logo"]
+
+- The image `scale` attribute sets the DocBook `imagedata` element
+  `scale` attribute.
+
+- The optional `align` attribute is used for horizontal image
+  alignment.  Allowed values are `center`, `left` and `right`. For
+  example:
+
+  image::images/tiger.png["Tiger image",align="left"]
+
+- The optional `float` attribute floats the image `left` or `right` on
+  the page (works with HTML outputs only, has no effect on DocBook
+  outputs). `float` and `align` attributes are mutually exclusive.
+  Use the `unfloat::[]` block macro to stop floating.
+
+Comment Lines
+^^^^^^^^^^^^^
+See <<X25,comment block macro>>.
+
+Block Macros
+~~~~~~~~~~~~
+A Block macro reference must be contained in a single line separated
+either side by a blank line or a block delimiter.
+
+Block macros behave just like Inline macros, with the following
+differences:
+
+- They occur in a block context.
+- The default syntax is `<name>::<target>[<attrlist>]` (two
+  colons, not one).
+- Markup template section names end in `-blockmacro` instead of
+  `-inlinemacro`.
+
+Block Identifier
+^^^^^^^^^^^^^^^^
+The Block Identifier macro sets the `id` attribute and has the same
+syntax as the <<X30,anchor inline macro>> since it performs
+essentially the same function -- block templates use the `id`
+attribute as a block element ID. For example:
+
+  [[X30]]
+
+This is equivalent to the `[id="X30"]` <<X79,AttributeList element>>).
+
+[[X49]]
+Images
+^^^^^^
+The 'image' block macro is used to display images in a block context.
+The syntax is:
+
+  image::<target>[<attributes>]
+
+The block `image` macro has the same <<X55,macro attributes>> as it's
+<<X9,inline image macro>> counterpart.
+
+Block images can be titled by preceding the 'image' macro with a
+'BlockTitle'.  DocBook toolchains normally number titled block images
+and optionally list them in an automatically generated 'List of
+Figures' backmatter section.
+
+This example:
+
+  .Main circuit board
+  image::images/layout.png[J14P main circuit board]
+
+is equivalent to:
+
+  image::images/layout.png["J14P main circuit board",
+                            title="Main circuit board"]
+
+A title prefix that can be inserted with the `caption` attribute
+(HTML backends). For example:
+
+  .Main circuit board
+  [caption="Figure 2: "]
+  image::images/layout.png[J14P main circuit board]
+
+[[X66]]
+.Embedding images in XHTML documents
+*********************************************************************
+If you define the `data-uri` attribute then images will be embedded in
+XHTML outputs using the
+http://en.wikipedia.org/wiki/Data:_URI_scheme[data URI scheme].  You
+can use the 'data-uri' attribute with the 'xhtml11' and 'html5'
+backends to produce single-file XHTML documents with embedded images
+and CSS, for example:
+
+  $ asciidoc -a data-uri mydocument.txt
+
+[NOTE]
+======
+- All current popular browsers support data URIs, although versions
+  of Internet Explorer prior to version 8 do not.
+- Some browsers limit the size of data URIs.
+======
+*********************************************************************
+
+[[X25]]
+Comment Lines
+^^^^^^^^^^^^^
+Single lines starting with two forward slashes hard up against the
+left margin are treated as comments. Comment lines do not appear in
+the output unless the 'showcomments' attribute is defined.  Comment
+lines have been implemented as both block and inline macros so a
+comment line can appear as a stand-alone block or within block elements
+that support inline macro expansion. Example comment line:
+
+  // This is a comment.
+
+If the 'showcomments' attribute is defined comment lines are written
+to the output:
+
+- In DocBook the comment lines are enclosed by the 'remark' element
+  (which may or may not be rendered by your toolchain).
+- The 'showcomments' attribute does not expose <<X26,Comment Blocks>>.
+  Comment Blocks are never passed to the output.
+
+System Macros
+~~~~~~~~~~~~~
+System macros are block macros that perform a predefined task and are
+hardwired into the asciidoc(1) program.
+
+- You can escape system macros with a leading backslash character
+  (as you can with other macros).
+- The syntax and tasks performed by system macros is built into
+  asciidoc(1) so they don't appear in configuration files.  You can
+  however customize the syntax by adding entries to a configuration
+  file `[macros]` section.
+
+[[X63]]
+Include Macros
+^^^^^^^^^^^^^^
+The `include` and `include1`  system macros to include the contents of
+a named file into the source document.
+
+The `include` macro includes a file as if it were part of the parent
+document -- tabs are expanded and system macros processed. The
+contents of `include1` files are not subject to tab expansion or
+system macro processing nor are attribute or lower priority
+substitutions performed. The `include1` macro's intended use is to
+include verbatim embedded CSS or scripts into configuration file
+headers.  Example:
+
+------------------------------------
+\include::chapter1.txt[tabsize=4]
+------------------------------------
+
+.Include macro behavior
+- If the included file name is specified with a relative path then the
+  path is relative to the location of the referring document.
+- Include macros can appear inside configuration files.
+- Files included from within 'DelimitedBlocks' are read to completion
+  to avoid false end-of-block underline termination.
+- Attribute references are expanded inside the include 'target'; if an
+  attribute is undefined then the included file is silently skipped.
+- The 'tabsize' macro attribute sets the number of space characters to
+  be used for tab expansion in the included file (not applicable to
+  `include1` macro).
+- The 'depth' macro attribute sets the maximum permitted number of
+  subsequent nested includes (not applicable to `include1` macro which
+  does not process nested includes). Setting 'depth' to '1' disables
+  nesting inside the included file. By default, nesting is limited to
+  a depth of ten.
+- If the he 'warnings' attribute is set to 'False' (or any other
+  Python literal that evaluates to boolean false) then no warning
+  message is printed if the included file does not exist. By default
+  'warnings' are enabled.
+- Internally the `include1` macro is translated to the `include1`
+  system attribute which means it must be evaluated in a region where
+  attribute substitution is enabled. To inhibit nested substitution in
+  included files it is preferable to use the `include` macro and set
+  the attribute `depth=1`.
+
+Conditional Inclusion Macros
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Lines of text in the source document can be selectively included or
+excluded from processing based on the existence (or not) of a document
+attribute.
+
+Document text between the `ifdef` and `endif` macros is included if a
+document attribute is defined:
+
+  ifdef::<attribute>[]
+  :
+  endif::<attribute>[]
+
+Document text between the `ifndef` and `endif` macros is not included
+if a document attribute is defined:
+
+  ifndef::<attribute>[]
+  :
+  endif::<attribute>[]
+
+`<attribute>` is an attribute name which is optional in the trailing
+`endif` macro.
+
+If you only want to process a single line of text then the text can be
+put inside the square brackets and the `endif` macro omitted, for
+example:
+
+  ifdef::revnumber[Version number 42]
+
+Is equivalent to:
+
+  ifdef::revnumber[]
+  Version number 42
+  endif::revnumber[]
+
+'ifdef' and 'ifndef' macros also accept multiple attribute names:
+
+- Multiple ',' separated attribute names evaluate to defined if one
+  or more of the attributes is defined, otherwise it's value is
+  undefined.
+- Multiple '+' separated attribute names evaluate to defined if all
+  of the attributes is defined, otherwise it's value is undefined.
+
+Document text between the `ifeval` and `endif` macros is included if
+the Python expression inside the square brackets is true. Example:
+
+  ifeval::[{rs458}==2]
+  :
+  endif::[]
+
+- Document attribute references are expanded before the expression is
+  evaluated.
+- If an attribute reference is undefined then the expression is
+  considered false.
+
+Take a look at the `*.conf` configuration files in the AsciiDoc
+distribution for examples of conditional inclusion macro usage.
+
+Executable system macros
+^^^^^^^^^^^^^^^^^^^^^^^^
+The 'eval', 'sys' and 'sys2' block macros exhibit the same behavior as
+their same named <<X24, system attribute references>>. The difference
+is that system macros occur in a block macro context whereas system
+attributes are confined to inline contexts where attribute
+substitution is enabled.
+
+The following example displays a long directory listing inside a
+literal block:
+
+  ------------------
+  sys::[ls -l *.txt]
+  ------------------
+
+NOTE: There are no block macro versions of the 'eval3' and 'sys3'
+system attributes.
+
+Template System Macro
+^^^^^^^^^^^^^^^^^^^^^
+The `template` block macro allows the inclusion of one configuration
+file template section within another.  The following example includes
+the `[admonitionblock]` section in the `[admonitionparagraph]`
+section:
+
+  [admonitionparagraph]
+  template::[admonitionblock]
+
+.Template macro behavior
+- The `template::[]` macro is useful for factoring configuration file
+  markup.
+- `template::[]` macros cannot be nested.
+- `template::[]` macro expansion is applied after all configuration
+  files have been read.
+
+
+[[X77]]
+Passthrough macros
+~~~~~~~~~~~~~~~~~~
+Passthrough macros are analogous to <<X76,passthrough blocks>> and are
+used to pass text directly to the output. The substitution performed
+on the text is determined by the macro definition but can be overridden
+by the `<subslist>`.  The usual syntax is
+`<name>:<subslist>[<passtext>]` (for inline macros) and
+`<name>::<subslist>[<passtext>]` (for block macros). Passthroughs, by
+definition, take precedence over all other text substitutions.
+
+pass::
+  Inline and block. Passes text unmodified (apart from explicitly
+  specified substitutions). Examples:
+
+  pass:[<q>To be or not to be</q>]
+  pass:attributes,quotes[<u>the '{author}'</u>]
+
+asciimath, latexmath::
+  Inline and block. Passes text unmodified.  Used for
+  <<X78,mathematical formulas>>.
+
+\+++::
+  Inline and block. The triple-plus passthrough is functionally
+  identical to the 'pass' macro but you don't have to escape `]`
+  characters and you can prefix with quoted attributes in the inline
+  version. Example:
+
+  Red [red]+++`sum_(i=1)\^n i=(n(n+1))/2`$+++ AsciiMathML formula
+
+$$::
+  Inline and block. The double-dollar passthrough is functionally
+  identical to the triple-plus passthrough with one exception: special
+  characters are escaped. Example:
+
+  $$`[[a,b],[c,d]]((n),(k))`$$
+
+[[X80]]`::
+  Text quoted with single backtick characters constitutes an 'inline
+  literal' passthrough. The enclosed text is rendered in a monospaced
+  font and is only subject to special character substitution.  This
+  makes sense since monospace text is usually intended to be rendered
+  literally and often contains characters that would otherwise have to
+  be escaped. If you need monospaced text containing inline
+  substitutions use a <<X81,plus character instead of a backtick>>.
+
+Macro Definitions
+~~~~~~~~~~~~~~~~~
+Each entry in the configuration `[macros]` section is a macro
+definition which can take one of the following forms:
+
+`<pattern>=<name>[<subslist]`:: Inline macro definition.
+`<pattern>=#<name>[<subslist]`:: Block macro definition.
+`<pattern>=+<name>[<subslist]`:: System macro definition.
+`<pattern>`:: Delete the existing macro with this `<pattern>`.
+
+`<pattern>` is a Python regular expression and `<name>` is the name of
+a markup template. If `<name>` is omitted then it is the value of the
+regular expression match group named 'name'.  The optional
+`[<subslist]` is a comma-separated list of substitution names enclosed
+in `[]` brackets, it sets the default substitutions for passthrough
+text, if omitted then no passthrough substitutions are performed.
+
+.Pattern named groups
+The following named groups can be used in macro `<pattern>` regular
+expressions and are available as markup template attributes:
+
+name::
+  The macro name.
+
+target::
+  The macro target.
+
+attrlist::
+  The macro attribute list.
+
+passtext::
+  Contents of this group are passed unmodified to the output subject
+  only to 'subslist' substitutions.
+
+subslist::
+  Processed as a comma-separated list of substitution names for
+  'passtext' substitution, overrides the the macro definition
+  'subslist'.
+
+.Here's what happens during macro substitution
+- Each contextually relevant macro 'pattern' from the `[macros]`
+  section is matched against the input source line.
+- If a match is found the text to be substituted is loaded from a
+  configuration markup template section named like
+  `<name>-inlinemacro` or `<name>-blockmacro` (depending on the macro
+  type).
+- Global and macro attribute list attributes are substituted in the
+  macro's markup template.
+- The substituted template replaces the macro reference in the output
+  document.
+
+
+[[X98]]
+HTML 5 audio and video block macros
+-----------------------------------
+The 'html5' backend 'audio' and 'video' block macros generate the HTML
+5 'audio' and 'video' elements respectively.  They follow the usual
+AsciiDoc block macro syntax `<name>::<target>[<attrlist>]` where:
+
+[horizontal]
+`<name>`:: 'audio' or 'video'.
+`<target>`:: The URL or file name of the video or audio file.
+`<attrlist>`:: A list of named attributes (see below).
+
+.Audio macro attributes
+[options="header",cols="1,5",frame="topbot"]
+|====================================================================
+|Name | Value
+|options
+|A comma separated list of one or more of the following items:
+'autoplay', 'loop' which correspond to the same-named HTML 5 'audio'
+element boolean attributes.  By default the player 'controls' are
+enabled, include the 'nocontrols' option value to hide them.
+|====================================================================
+
+.Video macro attributes
+[options="header",cols="1,5",frame="topbot"]
+|====================================================================
+|Name   | Value
+|height | The height of the player in pixels.
+|width  | The width of the player in pixels.
+|poster | The URL or file name of an image representing the video.
+|options
+|A comma separated list of one or more of the following items:
+'autoplay', 'loop' and 'nocontrols'. The 'autoplay' and 'loop' options
+correspond to the same-named HTML 5 'video' element boolean
+attributes.  By default the player 'controls' are enabled, include the
+'nocontrols' option value to hide them.
+|====================================================================
+
+Examples:
+
+---------------------------------------------------------------------
+audio::images/example.ogg[]
+
+video::gizmo.ogv[width=200,options="nocontrols,autoplay"]
+
+.Example video
+video::gizmo.ogv[]
+
+video::http://www.808.dk/pics/video/gizmo.ogv[]
+---------------------------------------------------------------------
+
+If your needs are more complex put raw HTML 5 in a markup block, for
+example (from http://www.808.dk/?code-html-5-video):
+
+---------------------------------------------------------------------
+++++
+<video poster="pics/video/gizmo.jpg" id="video" style="cursor: pointer;" >
+  <source src="pics/video/gizmo.mp4" />
+  <source src="pics/video/gizmo.webm" type="video/webm" />
+  <source src="pics/video/gizmo.ogv" type="video/ogg" />
+  Video not playing? <a href="pics/video/gizmo.mp4">Download file</a> instead.
+</video>
+
+<script type="text/javascript">
+  var video = document.getElementById('video');
+  video.addEventListener('click',function(){
+    video.play();
+  },false);
+</script>
+++++
+---------------------------------------------------------------------
+
+
+Tables
+------
+The AsciiDoc table syntax looks and behaves like other delimited block
+types and supports standard <<X73,block configuration entries>>.
+Formatting is easy to read and, just as importantly, easy to enter.
+
+- Cells and columns can be formatted using built-in customizable styles.
+- Horizontal and vertical cell alignment can be set on columns and
+  cell.
+- Horizontal and vertical cell spanning is supported.
+
+.Use tables sparingly
+*********************************************************************
+When technical users first start creating documents, tables (complete
+with column spanning and table nesting) are often considered very
+important. The reality is that tables are seldom used, even in
+technical documentation.
+
+Try this exercise: thumb through your library of technical books,
+you'll be surprised just how seldom tables are actually used, even
+less seldom are tables containing block elements (such as paragraphs
+or lists) or spanned cells. This is no accident, like figures, tables
+are outside the normal document flow -- tables are for consulting not
+for reading.
+
+Tables are designed for, and should normally only be used for,
+displaying column oriented tabular data.
+*********************************************************************
+
+Example tables
+~~~~~~~~~~~~~~
+
+.Simple table
+[width="15%"]
+|=======
+|1 |2 |A
+|3 |4 |B
+|5 |6 |C
+|=======
+
+.AsciiDoc source
+---------------------------------------------------------------------
+[width="15%"]
+|=======
+|1 |2 |A
+|3 |4 |B
+|5 |6 |C
+|=======
+---------------------------------------------------------------------
+
+.Columns formatted with strong, monospaced and emphasis styles
+[width="50%",cols=">s,^m,e",frame="topbot",options="header,footer"]
+|==========================
+|      2+|Columns 2 and 3
+|1       |Item 1  |Item 1
+|2       |Item 2  |Item 2
+|3       |Item 3  |Item 3
+|4       |Item 4  |Item 4
+|footer 1|footer 2|footer 3
+|==========================
+
+.AsciiDoc source
+---------------------------------------------------------------------
+.An example table
+[width="50%",cols=">s,^m,e",frame="topbot",options="header,footer"]
+|==========================
+|      2+|Columns 2 and 3
+|1       |Item 1  |Item 1
+|2       |Item 2  |Item 2
+|3       |Item 3  |Item 3
+|4       |Item 4  |Item 4
+|footer 1|footer 2|footer 3
+|==========================
+---------------------------------------------------------------------
+
+.Horizontal and vertical source data
+[width="80%",cols="3,^2,^2,10",options="header"]
+|=========================================================
+|Date |Duration |Avg HR |Notes
+
+|22-Aug-08 |10:24 | 157 |
+Worked out MSHR (max sustainable heart rate) by going hard
+for this interval.
+
+|22-Aug-08 |23:03 | 152 |
+Back-to-back with previous interval.
+
+|24-Aug-08 |40:00 | 145 |
+Moderately hard interspersed with 3x 3min intervals (2min
+hard + 1min really hard taking the HR up to 160).
+
+|=========================================================
+
+Short cells can be entered horizontally, longer cells vertically.  The
+default behavior is to strip leading and trailing blank lines within a
+cell. These characteristics aid readability and data entry.
+
+.AsciiDoc source
+---------------------------------------------------------------------
+.Windtrainer workouts
+[width="80%",cols="3,^2,^2,10",options="header"]
+|=========================================================
+|Date |Duration |Avg HR |Notes
+
+|22-Aug-08 |10:24 | 157 |
+Worked out MSHR (max sustainable heart rate) by going hard
+for this interval.
+
+|22-Aug-08 |23:03 | 152 |
+Back-to-back with previous interval.
+
+|24-Aug-08 |40:00 | 145 |
+Moderately hard interspersed with 3x 3min intervals (2min
+hard + 1min really hard taking the HR up to 160).
+
+|=========================================================
+---------------------------------------------------------------------
+
+.A table with externally sourced CSV data
+[format="csv",cols="^1,4*2",options="header"]
+|===================================================
+ID,Customer Name,Contact Name,Customer Address,Phone
+include::customers.csv[]
+|===================================================
+
+.AsciiDoc source
+---------------------------------------------------------------------
+[format="csv",cols="^1,4*2",options="header"]
+|===================================================
+ID,Customer Name,Contact Name,Customer Address,Phone
+\include::customers.csv[]
+|===================================================
+---------------------------------------------------------------------
+
+
+.Cell spans, alignments and styles
+[cols="e,m,^,>s",width="25%"]
+|============================
+|1 >s|2 |3 |4
+^|5 2.2+^.^|6 .3+<.>m|7
+^|8
+|9 2+>|10
+|============================
+
+.AsciiDoc source
+---------------------------------------------------------------------
+[cols="e,m,^,>s",width="25%"]
+|============================
+|1 >s|2 |3 |4
+^|5 2.2+^.^|6 .3+<.>m|7
+^|8
+|9 2+>|10
+|============================
+---------------------------------------------------------------------
+
+[[X68]]
+Table input data formats
+~~~~~~~~~~~~~~~~~~~~~~~~
+AsciiDoc table data can be 'psv', 'dsv' or 'csv' formatted.  The
+default table format is 'psv'.
+
+AsciiDoc 'psv' ('Prefix Separated Values') and 'dsv' ('Delimiter
+Separated Values') formats are cell oriented -- the table is treated
+as a sequence of cells -- there are no explicit row separators.
+
+- 'psv' prefixes each cell with a separator whereas 'dsv' delimits
+  cells with a separator.
+- 'psv' and 'dsv' separators are Python regular expressions.
+- The default 'psv' separator contains <<X84, cell specifier>> related
+  named regular expression groups.
+- The default 'dsv' separator is `:|\n` (a colon or a new line
+  character).
+- 'psv' and 'dsv' cell separators can be escaped by preceding them
+  with a backslash character.
+
+Here are four 'psv' cells (the second item spans two columns; the
+last contains an escaped separator):
+
+  |One 2+|Two and three |A \| separator character
+
+'csv'  is the quasi-standard row oriented 'Comma Separated Values
+(CSV)' format commonly used to import and export spreadsheet and
+database data.
+
+[[X69]]
+Table attributes
+~~~~~~~~~~~~~~~~
+Tables can be customized by the following attributes:
+
+format::
+'psv' (default), 'dsv' or 'csv' (See <<X68, Table Data Formats>>).
+
+separator::
+The cell separator. A Python regular expression ('psv' and 'dsv'
+formats) or a single character ('csv' format).
+
+frame::
+Defines the table border and can take the following values: 'topbot'
+(top and bottom), 'all' (all sides), 'none' and 'sides' (left and
+right sides). The default value is 'all'.
+
+grid::
+Defines which ruler lines are drawn between table rows and columns.
+The 'grid' attribute value can be any of the following values: 'none',
+'cols', 'rows' and 'all'. The default value is 'all'.
+
+align::
+Use the 'align' attribute to horizontally align the table on the
+page (works with HTML outputs only, has no effect on DocBook outputs).
+The following values are valid: 'left', 'right', and 'center'.
+
+float::
+Use the 'float' attribute to float the table 'left' or 'right' on the
+page (works with HTML outputs only, has no effect on DocBook outputs).
+Floating only makes sense in conjunction with a table 'width'
+attribute value of less than 100% (otherwise the table will take up
+all the available space).  'float' and 'align' attributes are mutually
+exclusive.  Use the `unfloat::[]` block macro to stop floating.
+
+halign::
+Use the 'halign' attribute to horizontally align all cells in a table.
+The following values are valid: 'left', 'right', and 'center'
+(defaults to 'left'). Overridden by <<X70,Column specifiers>>  and
+<<X84,Cell specifiers>>.
+
+valign::
+Use the 'valign' attribute to vertically align all cells in a table.
+The following values are valid: 'top', 'bottom', and 'middle'
+(defaults to 'top'). Overridden by <<X70,Column specifiers>>  and
+<<X84,Cell specifiers>>.
+
+options::
+The 'options' attribute can contain comma separated values, for
+example: 'header', 'footer'. By default header and footer rows are
+omitted.  See <<X74,attribute options>> for a complete list of
+available table options.
+
+cols::
+The 'cols' attribute is a comma separated list of <<X70,column
+specifiers>>. For example `cols="2<p,2*,4p,>"`.
+
+- If 'cols' is present it must specify all columns.
+- If the 'cols' attribute is not specified the number of columns is
+  calculated as the number of data items in the *first line* of the
+  table.
+- The degenerate form for the 'cols' attribute is an integer
+  specifying the number of columns e.g. `cols=4`.
+
+width::
+The 'width' attribute is expressed as a percentage value
+('"1%"'...'"99%"'). The width specifies the table width relative to
+the available width. HTML backends use this value to set the table
+width attribute. It's a bit more complicated with DocBook, see the
+<<X89,DocBook table widths>> sidebar.
+
+filter::
+The 'filter' attribute defines an external shell command that is
+invoked for each cell. The built-in 'asciidoc' table style is
+implemented using a filter.
+
+[[X89]]
+.DocBook table widths
+**********************************************************************
+The AsciiDoc docbook backend generates CALS tables. CALS tables do not
+support a table width attribute -- table width can only be controlled
+by specifying absolute column widths.
+
+Specifying absolute column widths is not media independent because
+different presentation media have different physical dimensions. To
+get round this limitation both
+http://www.sagehill.net/docbookxsl/Tables.html#TableWidth[DocBook XSL
+Stylesheets] and
+http://dblatex.sourceforge.net/doc/manual/ch03s05.html#sec-table-width[dblatex]
+have implemented table width processing instructions for setting the
+table width as a percentage of the available width. AsciiDoc emits
+these processing instructions if the 'width' attribute is set along
+with proportional column widths (the AsciiDoc docbook backend
+'pageunits' attribute defaults to '*').
+
+To generate DocBook tables with absolute column widths set the
+'pageunits' attribute to a CALS absolute unit such as 'pt' and set the
+'pagewidth' attribute to match the width of the presentation media.
+**********************************************************************
+
+[[X70]]
+Column Specifiers
+~~~~~~~~~~~~~~~~~
+Column specifiers define how columns are rendered and appear in the
+table <<X69,cols attribute>>.  A column specifier consists of an
+optional column multiplier followed by optional alignment, width and
+style values and is formatted like:
+
+  [<multiplier>*][<align>][<width>][<style>]
+
+- All components are optional. The multiplier must be first and the
+  style last. The order of `<align>` or `<width>` is not important.
+- Column `<width>` can be either an integer proportional value (1...)
+  or a percentage (1%...100%). The default value is 1. To ensure
+  portability across different backends, there is no provision for
+  absolute column widths (not to be confused with output column width
+  <<X72,markup attributes>> which are available in both percentage and
+  absolute units).
+- The '<align>' column alignment specifier is formatted like:
+
+  [<horizontal>][.<vertical>]
++
+Where `<horizontal>` and `<vertical>` are one of the following
+characters: `<`, `^` or `>` which represent 'left', 'center' and
+'right' horizontal alignment or 'top', 'middle' and 'bottom' vertical
+alignment respectively.
+
+- A `<multiplier>` can be used to specify repeated columns e.g.
+  `cols="4*<"` specifies four left-justified columns. The default
+  multiplier value is 1.
+- The `<style>` name specifies a <<X71,table style>> to used to markup
+  column cells (you can use the full style names if you wish but the
+  first letter is normally sufficient).
+- Column specific styles are not applied to header rows.
+
+[[X84]]
+Cell Specifiers
+~~~~~~~~~~~~~~~
+Cell specifiers allow individual cells in 'psv' formatted tables to be
+spanned, multiplied, aligned and styled.  Cell specifiers prefix 'psv'
+`|` delimiters and are formatted like:
+
+  [<span>*|+][<align>][<style>]
+
+- '<span>' specifies horizontal and vertical cell spans ('+' operator) or
+  the number of times the cell is replicated ('*' operator). '<span>'
+  is formatted like:
+
+  [<colspan>][.<rowspan>]
++
+Where `<colspan>` and `<rowspan>` are integers specifying the number of
+columns and rows to span.
+
+- `<align>` specifies horizontal and vertical cell alignment an is the
+  same as in <<X70,column specifiers>>.
+- A `<style>` value is the first letter of <<X71,table style>> name.
+
+For example, the following 'psv' formatted cell will span two columns
+and the text will be centered and emphasized:
+
+  `2+^e| Cell text`
+
+[[X71]]
+Table styles
+~~~~~~~~~~~~
+Table styles can be applied to the entire table (by setting the
+'style' attribute in the table's attribute list) or on a per column
+basis (by specifying the style in the table's <<X69,cols attribute>>).
+Table data can be formatted using the following predefined styles:
+
+default::
+The default style: AsciiDoc inline text formatting; blank lines are
+treated as paragraph breaks.
+
+emphasis::
+Like default but all text is emphasised.
+
+monospaced::
+Like default but all text is in a monospaced font.
+
+strong::
+Like default but all text is bold.
+
+header::
+Apply the same style as the table header. Normally used to create a
+vertical header in the first column.
+
+asciidoc::
+With this style table cells can contain any of the AsciiDoc elements
+that are allowed inside document sections. This style runs asciidoc(1)
+as a filter to process cell contents. See also <<X83,Docbook table
+limitations>>.
+
+literal::
+No text formatting; monospaced font; all line breaks are retained
+(the same as the AsciiDoc <<X65,LiteralBlock>> element).
+
+verse::
+All line breaks are retained (just like the AsciiDoc <<X94,verse
+paragraph style>>).
+
+[[X72]]
+Markup attributes
+~~~~~~~~~~~~~~~~~
+AsciiDoc makes a number of attributes available to table markup
+templates and tags. Column specific attributes are available when
+substituting the 'colspec' cell data tags.
+
+pageunits::
+DocBook backend only. Specifies table column absolute width units.
+Defaults to '*'.
+
+pagewidth::
+DocBook backend only. The nominal output page width in 'pageunit'
+units. Used to calculate CALS tables absolute column and table
+widths. Defaults to '425'.
+
+tableabswidth::
+Integer value calculated from 'width' and 'pagewidth' attributes.
+In 'pageunit' units.
+
+tablepcwidth::
+Table width expressed as a percentage of the available width. Integer
+value (0..100).
+
+colabswidth::
+Integer value calculated from 'cols' column width, 'width' and
+'pagewidth' attributes.  In 'pageunit' units.
+
+colpcwidth::
+Column width expressed as a percentage of the table width. Integer
+value (0..100).
+
+colcount::
+Total number of table columns.
+
+rowcount::
+Total number of table rows.
+
+halign::
+Horizontal cell content alignment: 'left', 'right' or 'center'.
+
+valign::
+Vertical cell content alignment: 'top', 'bottom' or 'middle'.
+
+colnumber, colstart::
+The number of the leftmost column occupied by the cell (1...).
+
+colend::
+The number of the rightmost column occupied by the cell (1...).
+
+colspan::
+Number of columns the cell should span.
+
+rowspan::
+Number of rows the cell should span (1...).
+
+morerows::
+Number of additional rows the cell should span (0...).
+
+Nested tables
+~~~~~~~~~~~~~
+An alternative 'psv' separator character '!' can be used (instead of
+'|') in nested tables. This allows a single level of table nesting.
+Columns containing nested tables must use the 'asciidoc' style. An
+example can be found in `./examples/website/newtables.txt`.
+
+[[X83]]
+DocBook table limitations
+~~~~~~~~~~~~~~~~~~~~~~~~~
+Fully implementing tables is not trivial, some DocBook toolchains do
+better than others.  AsciiDoc HTML table outputs are rendered
+correctly in all the popular browsers -- if your DocBook generated
+tables don't look right compare them with the output generated by the
+AsciiDoc 'xhtml11' backend or try a different DocBook toolchain.  Here
+is a list of things to be aware of:
+
+- Although nested tables are not legal in DocBook 4 the FOP and
+  dblatex toolchains will process them correctly.  If you use `a2x(1)`
+  you will need to include the `--no-xmllint` option to suppress
+  DocBook validation errors.
++
+NOTE: In theory you can nest DocBook 4 tables one level using the
+'entrytbl' element, but not all toolchains process 'entrytbl'.
+
+- DocBook only allows a subset of block elements inside table cells so
+  not all AsciiDoc elements produce valid DocBook inside table cells.
+  If you get validation errors running `a2x(1)` try the `--no-xmllint`
+  option, toolchains will often process nested block elements such as
+  sidebar blocks and floating titles correctly even though, strictly
+  speaking, they are not legal.
+
+- Text formatting in cells using the 'monospaced' table style will
+  raise validation errors because the DocBook 'literal' element was
+  not designed to support formatted text (using the 'literal' element
+  is a kludge on the part of AsciiDoc as there is no easy way to set
+  the font style in DocBook.
+
+- Cell alignments are ignored for 'verse', 'literal' or 'asciidoc'
+  table styles.
+
+
+[[X1]]
+Manpage Documents
+-----------------
+Sooner or later, if you program in a UNIX environment, you're going
+to have to write a man page.
+
+By observing a couple of additional conventions (detailed below) you
+can write AsciiDoc files that will generate HTML and PDF man pages
+plus the native manpage roff format.  The easiest way to generate roff
+manpages from AsciiDoc source is to use the a2x(1) command. The
+following example generates a roff formatted manpage file called
+`asciidoc.1` (a2x(1) uses asciidoc(1) to convert `asciidoc.1.txt` to
+DocBook which it then converts to roff using DocBook XSL Stylesheets):
+
+  a2x --doctype manpage --format manpage asciidoc.1.txt
+
+.Viewing and printing manpage files
+**********************************************************************
+Use the `man(1)` command to view the manpage file:
+
+  $ man -l asciidoc.1
+
+To print a high quality man page to a postscript printer:
+
+  $ man -l -Tps asciidoc.1 | lpr
+
+You could also create a PDF version of the man page by converting
+PostScript to PDF using `ps2pdf(1)`:
+
+  $ man -l -Tps asciidoc.1 | ps2pdf - asciidoc.1.pdf
+
+The `ps2pdf(1)` command is included in the Ghostscript distribution.
+**********************************************************************
+
+To find out more about man pages view the `man(7)` manpage
+(`man 7 man` and `man man-pages` commands).
+
+
+Document Header
+~~~~~~~~~~~~~~~
+A manpage document Header is mandatory. The title line contains the
+man page name followed immediately by the manual section number in
+brackets, for example 'ASCIIDOC(1)'. The title name should not contain
+white space and the manual section number is a single digit optionally
+followed by a single character.
+
+The NAME Section
+~~~~~~~~~~~~~~~~
+The first manpage section is mandatory, must be titled 'NAME' and must
+contain a single paragraph (usually a single line) consisting of a
+list of one or more comma separated command name(s) separated from the
+command purpose by a dash character. The dash must have at least one
+white space character on either side. For example:
+
+  printf, fprintf, sprintf - print formatted output
+
+The SYNOPSIS Section
+~~~~~~~~~~~~~~~~~~~~
+The second manpage section is mandatory and must be titled 'SYNOPSIS'.
+
+refmiscinfo attributes
+~~~~~~~~~~~~~~~~~~~~~~
+In addition to the automatically created man page <<X60,intrinsic
+attributes>> you can assign DocBook
+http://www.docbook.org/tdg5/en/html/refmiscinfo.html[refmiscinfo]
+element 'source', 'version' and 'manual' values using AsciiDoc
+`{mansource}`, `{manversion}` and `{manmanual}` attributes
+respectively. This example is from the AsciiDoc header of a man page
+source file:
+
+  :man source:   AsciiDoc
+  :man version:  {revnumber}
+  :man manual:   AsciiDoc Manual
+
+
+[[X78]]
+Mathematical Formulas
+---------------------
+The 'asciimath' and 'latexmath' <<X77,passthrough macros>> along with
+'asciimath' and 'latexmath'  <<X76,passthrough blocks>> provide a
+(backend dependent) mechanism for rendering mathematical formulas. You
+can use the following math markups:
+
+NOTE: The 'latexmath' macro used to include 'LaTeX Math' in DocBook
+outputs is not the same as the 'latexmath' macro used to include
+'LaTeX MathML' in XHTML outputs.  'LaTeX Math' applies to DocBook
+outputs that are processed by <<X31,dblatex>> and is normally used to
+generate PDF files.  'LaTeXMathML' is very much a subset of 'LaTeX
+Math' and applies to XHTML documents.
+
+LaTeX Math
+~~~~~~~~~~
+ftp://ftp.ams.org/pub/tex/doc/amsmath/short-math-guide.pdf[LaTeX
+math] can be included in documents that are processed by
+<<X31,dblatex(1)>>.  Example inline formula:
+
+  latexmath:[$C = \alpha + \beta Y^{\gamma} + \epsilon$]
+
+For more examples see the {website}[AsciiDoc website] or the
+distributed `doc/latexmath.txt` file.
+
+ASCIIMathML
+~~~~~~~~~~~
+/////////////////////////////////////////////////////////////////////
+The older ASCIIMathML 1.47 version is used instead of version 2
+because:
+
+1. Version 2 doesn't work when embedded.
+2. Version 2 is much larger.
+/////////////////////////////////////////////////////////////////////
+
+http://www1.chapman.edu/~jipsen/mathml/asciimath.html[ASCIIMathML]
+formulas can be included in XHTML documents generated using the
+'xhtml11' and 'html5' backends. To enable ASCIIMathML support you must
+define the 'asciimath' attribute, for example using the `-a asciimath`
+command-line option.  Example inline formula:
+
+  asciimath:[`x/x={(1,if x!=0),(text{undefined},if x=0):}`]
+
+For more examples see the {website}[AsciiDoc website] or the
+distributed `doc/asciimathml.txt` file.
+
+LaTeXMathML
+~~~~~~~~~~~
+/////////////////////////////////////////////////////////////////////
+There is an http://math.etsu.edu/LaTeXMathML/[extended LaTeXMathML
+version] by Jeff Knisley, in addition to a JavaScript file it requires
+the inclusion of a CSS file.
+/////////////////////////////////////////////////////////////////////
+
+'LaTeXMathML' allows LaTeX Math style formulas to be included in XHTML
+documents generated using the AsciiDoc 'xhtml11' and 'html5' backends.
+AsciiDoc uses the
+http://www.maths.nottingham.ac.uk/personal/drw/lm.html[original
+LaTeXMathML] by Douglas Woodall.  'LaTeXMathML' is derived from
+ASCIIMathML and is for users who are more familiar with or prefer
+using LaTeX math formulas (it recognizes a subset of LaTeX Math, the
+differences are documented on the 'LaTeXMathML' web page).  To enable
+LaTeXMathML support you must define the 'latexmath' attribute, for
+example using the `-a latexmath` command-line option.  Example inline
+formula:
+
+  latexmath:[$\sum_{n=1}^\infty \frac{1}{2^n}$]
+
+For more examples see the {website}[AsciiDoc website] or the
+distributed `doc/latexmathml.txt` file.
+
+MathML
+~~~~~~
+http://www.w3.org/Math/[MathML] is a low level XML markup for
+mathematics. AsciiDoc has no macros for MathML but users familiar with
+this markup could use passthrough macros and passthrough blocks to
+include MathML in output documents.
+
+
+[[X7]]
+Configuration Files
+-------------------
+AsciiDoc source file syntax and output file markup is largely
+controlled by a set of cascading, text based, configuration files.  At
+runtime The AsciiDoc default configuration files are combined with
+optional user and document specific configuration files.
+
+Configuration File Format
+~~~~~~~~~~~~~~~~~~~~~~~~~
+Configuration files contain named sections. Each section begins with a
+section name in square brackets []. The section body consists of the
+lines of text between adjacent section headings.
+
+- Section names consist of one or more alphanumeric, underscore or
+  dash characters and cannot begin or end with a dash.
+- Lines starting with a '#' character are treated as comments and
+  ignored.
+- If the section name is prefixed with a '+' character then the
+  section contents is appended to the contents of an already existing
+  same-named section.
+- Otherwise same-named sections and section entries override
+  previously loaded sections and section entries (this is sometimes
+  referred to as 'cascading').  Consequently, downstream configuration
+  files need only contain those sections and section entries that need
+  to be overridden.
+
+TIP: When creating custom configuration files you only need to include
+the sections and entries that differ from the default configuration.
+
+TIP: The best way to learn about configuration files is to read the
+default configuration files in the AsciiDoc distribution in
+conjunction with asciidoc(1) output files. You can view configuration
+file load sequence by turning on the asciidoc(1) `-v` (`--verbose`)
+command-line option.
+
+AsciiDoc reserves the following section names for specific purposes:
+
+miscellaneous::
+        Configuration options that don't belong anywhere else.
+attributes::
+        Attribute name/value entries.
+specialcharacters::
+        Special characters reserved by the backend markup.
+tags::
+        Backend markup tags.
+quotes::
+        Definitions for quoted inline character formatting.
+specialwords::
+        Lists of words and phrases singled out for special markup.
+replacements, replacements2, replacements3::
+        Find and replace substitution definitions.
+specialsections::
+        Used to single out special section names for specific markup.
+macros::
+        Macro syntax definitions.
+titles::
+        Heading, section and block title definitions.
+paradef-*::
+        Paragraph element definitions.
+blockdef-*::
+        DelimitedBlock element definitions.
+listdef-*::
+        List element definitions.
+listtags-*::
+        List element tag definitions.
+tabledef-*::
+        Table element definitions.
+tabletags-*::
+        Table element tag definitions.
+
+Each line of text in these sections is a 'section entry'. Section
+entries share the following syntax:
+
+name=value::
+        The entry value is set to value.
+name=::
+        The entry value is set to a zero length string.
+name!::
+        The entry is undefined (deleted from the configuration). This
+        syntax only applies to 'attributes' and 'miscellaneous'
+        sections.
+
+.Section entry behavior
+- All equals characters inside the `name` must be escaped with a
+  backslash character.
+- `name` and `value` are stripped of leading and trailing white space.
+- Attribute names, tag entry names and markup template section names
+  consist of one or more alphanumeric, underscore or dash characters.
+  Names should not begin or end with a dash.
+- A blank configuration file section (one without any entries) deletes
+  any preceding section with the same name (applies to non-markup
+  template sections).
+
+
+Miscellaneous section
+~~~~~~~~~~~~~~~~~~~~~
+The optional `[miscellaneous]` section specifies the following
+`name=value` options:
+
+newline::
+        Output file line termination characters. Can include any
+        valid Python string escape sequences. The default value is
+        `\r\n` (carriage return, line feed). Should not be quoted or
+        contain explicit spaces (use `\x20` instead). For example:
+
+        $ asciidoc -a 'newline=\n' -b docbook mydoc.txt
+
+outfilesuffix::
+        The default extension for the output file, for example
+        `outfilesuffix=.html`. Defaults to backend name.
+tabsize::
+        The number of spaces to expand tab characters, for example
+        `tabsize=4`. Defaults to 8. A 'tabsize' of zero suppresses tab
+        expansion (useful when piping included files through block
+        filters). Included files can override this option using the
+        'tabsize' attribute.
+pagewidth, pageunits::
+        These global table related options are documented in the
+        <<X4,Table Configuration File Definitions>> sub-section.
+
+NOTE: `[miscellaneous]` configuration file entries can be set using
+the asciidoc(1) `-a` (`--attribute`) command-line option.
+
+Titles section
+~~~~~~~~~~~~~~
+sectiontitle::
+        Two line section title pattern. The entry value is a Python
+        regular expression containing the named group 'title'.
+
+underlines::
+        A comma separated list of document and section title underline
+        character pairs starting with the section level 0 and ending
+        with section level 4 underline. The default setting is:
+
+        underlines="==","--","~~","^^","++"
+
+sect0...sect4::
+        One line section title patterns. The entry value is a Python
+        regular expression containing the named group 'title'.
+
+blocktitle::
+        <<X42,BlockTitle element>> pattern.  The entry value is a
+        Python regular expression containing the named group 'title'.
+
+subs::
+        A comma separated list of substitutions that are performed on
+        the document header and section titles. Defaults to 'normal'
+        substitution.
+
+Tags section
+~~~~~~~~~~~~
+The `[tags]` section contains backend tag definitions (one per
+line). Tags are used to translate AsciiDoc elements to backend
+markup.
+
+An AsciiDoc tag definition is formatted like
+`<tagname>=<starttag>|<endtag>`. For example:
+
+  emphasis=<em>|</em>
+
+In this example asciidoc(1) replaces the | character with the
+emphasized text from the AsciiDoc input file and writes the result to
+the output file.
+
+Use the `{brvbar}` attribute reference if you need to include a | pipe
+character inside tag text.
+
+Attributes section
+~~~~~~~~~~~~~~~~~~
+The optional `[attributes]` section contains predefined attributes.
+
+If the attribute value requires leading or trailing spaces then the
+text text should be enclosed in quotation mark (") characters.
+
+To delete a attribute insert a `name!` entry in a downstream
+configuration file or use the asciidoc(1) `--attribute name!`
+command-line option (an attribute name suffixed with a `!` character
+deletes the attribute)
+
+Special Characters section
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+The `[specialcharacters]` section specifies how to escape characters
+reserved by the backend markup. Each translation is specified on a
+single line formatted like:
+
+  <special_character>=<translated_characters>
+
+Special characters are normally confined to those that resolve
+markup ambiguity (in the case of HTML and XML markups the ampersand,
+less than and greater than characters).  The following example causes
+all occurrences of the `<` character to be replaced by `<`.
+
+  <=<
+
+Quoted Text section
+~~~~~~~~~~~~~~~~~~~
+Quoting is used primarily for text formatting.  The `[quotes]` section
+defines AsciiDoc quoting characters and their corresponding backend
+markup tags.  Each section entry value is the name of a of a `[tags]`
+section entry. The entry name is the character (or characters) that
+quote the text.  The following examples are taken from AsciiDoc
+configuration files:
+
+  [quotes]
+  _=emphasis
+
+  [tags]
+  emphasis=<em>|</em>
+
+You can specify the left and right quote strings separately by
+separating them with a | character, for example:
+
+  ``|''=quoted
+
+Omitting the tag will disable quoting, for example, if you don't want
+superscripts or subscripts put the following in a custom configuration
+file or edit the global `asciidoc.conf` configuration file:
+
+  [quotes]
+  ^=
+  ~=
+
+<<X52,Unconstrained quotes>> are differentiated from constrained
+quotes by prefixing the tag name with a hash character, for example:
+
+  __=#emphasis
+
+.Quoted text behavior
+- Quote characters must be non-alphanumeric.
+- To minimize quoting ambiguity try not to use the same quote
+  characters in different quote types.
+
+Special Words section
+~~~~~~~~~~~~~~~~~~~~~
+The `[specialwords]` section is used to single out words and phrases
+that you want to consistently format in some way throughout your
+document without having to repeatedly specify the markup. The name of
+each entry corresponds to a markup template section and the entry
+value consists of a list of words and phrases to be marked up. For
+example:
+
+  [specialwords]
+  strongwords=NOTE IMPORTANT
+
+  [strongwords]
+  <strong>{words}</strong>
+
+The examples specifies that any occurrence of `NOTE` or `IMPORTANT`
+should appear in a bold font.
+
+Words and word phrases are treated as Python regular expressions: for
+example, the word `^NOTE` would only match `NOTE` if appeared at
+the start of a line.
+
+AsciiDoc comes with three built-in Special Word types:
+'emphasizedwords', 'monospacedwords' and 'strongwords', each has a
+corresponding (backend specific) markup template section. Edit the
+configuration files to customize existing Special Words and to add new
+ones.
+
+.Special word behavior
+- Word list entries must be separated by space characters.
+- Word list entries with embedded spaces should be enclosed in quotation (")
+  characters.
+- A `[specialwords]` section entry of the form
+  +name=word1{nbsp}[word2...]+ adds words to existing `name` entries.
+- A `[specialwords]` section entry of the form `name` undefines
+  (deletes) all existing `name` words.
+- Since word list entries are processed as Python regular expressions
+  you need to be careful to escape regular expression special
+  characters.
+- By default Special Words are substituted before Inline Macros, this
+  may lead to undesirable consequences. For example the special word
+  `foobar` would be expanded inside the macro call
+  `http://www.foobar.com[]`.  A possible solution is to emphasize
+  whole words only by defining the word using regular expression
+  characters, for example `\bfoobar\b`.
+- If the first matched character of a special word is a backslash then
+  the remaining characters are output without markup i.e. the
+  backslash can be used to escape special word markup.  For example
+  the special word `\\?\b[Tt]en\b` will mark up the words `Ten` and
+  `ten` only if they are not preceded by a backslash.
+
+[[X10]]
+Replacements section
+~~~~~~~~~~~~~~~~~~~~
+`[replacements]`, `[replacements2]` and `[replacements3]`
+configuration file entries specify find and replace text and are
+formatted like:
+
+  <find_pattern>=<replacement_text>
+
+The find text can be a Python regular expression; the replace text can
+contain Python regular expression group references.
+
+Use Replacement shortcuts for often used macro references, for
+example (the second replacement allows us to backslash escape the
+macro name):
+
+  NEW!=image:./images/smallnew.png[New!]
+  \\NEW!=NEW!
+
+The only difference between the three replacement types is how they
+are applied. By default 'replacements' and 'replacement2' are applied
+in <<X102,normal>> substitution contexts whereas 'replacements3' needs
+to be configured explicitly and should only be used in backend
+configuration files.
+
+.Replacement behavior
+- The built-in replacements can be escaped with a backslash.
+- If the find or replace text has leading or trailing spaces then the
+  text should be enclosed in quotation (") characters.
+- Since the find text is processed as a regular expression you need to
+  be careful to escape regular expression special characters.
+- Replacements are performed in the same order they appear in the
+  configuration file replacements section.
+
+Markup Template Sections
+~~~~~~~~~~~~~~~~~~~~~~~~
+Markup template sections supply backend markup for translating
+AsciiDoc elements.  Since the text is normally backend dependent
+you'll find these sections in the backend specific configuration
+files. Template sections differ from other sections in that they
+contain a single block of text instead of per line 'name=value'
+entries. A markup template section body can contain:
+
+- Attribute references
+- System macro calls.
+- A document content placeholder
+
+The document content placeholder is a single | character and is
+replaced by text from the source element.  Use the `{brvbar}`
+attribute reference if you need a literal | character in the template.
+
+[[X27]]
+Configuration file names, precedence and locations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Configuration files have a `.conf` file name extension; they are
+loaded from the following locations:
+
+1. The directory containing the asciidoc executable.
+2. If there is no `asciidoc.conf` file in the directory containing the
+   asciidoc executable then load from the global configuration
+   directory (normally `/etc/asciidoc` or `/usr/local/etc/asciidoc`)
+   i.e. the global configuration files directory is skipped if
+   AsciiDoc configuration files are installed in the same directory as
+   the asciidoc executable. This allows both a system wide copy and
+   multiple local copies of AsciiDoc to coexist on the same host PC.
+3. The user's `$HOME/.asciidoc` directory (if it exists).
+4. The directory containing the AsciiDoc source file.
+5. Explicit configuration files specified using:
+   - The `conf-files` attribute (one or more file names separated by a
+     `|` character). These files are loaded in the order they are
+     specified and prior to files specified using the `--conf-file`
+     command-line option.
+   - The asciidoc(1) `--conf-file`) command-line option.  The
+     `--conf-file` option can be specified multiple times, in which
+     case configuration files will be processed in the same order they
+     appear on the command-line.
+6. <<X100,Backend plugin>> configuration files are loaded from
+   subdirectories named like `backends/<backend>` in locations 1, 2
+   and 3.
+7. <<X59,Filter>> configuration files are loaded from subdirectories
+   named like `filters/<filter>` in locations 1, 2 and 3.
+
+Configuration files from the above locations are loaded in the
+following order:
+
+- The `[attributes]` section only from:
+  * `asciidoc.conf` in location 3
+  * Files from location 5.
++
+This first pass makes locally set attributes available in the global
+`asciidoc.conf` file.
+
+- `asciidoc.conf` from locations 1, 2, 3.
+- 'attributes', 'titles' and 'specialcharacters' sections from the
+  `asciidoc.conf` in location 4.
+- The document header is parsed at this point and we can assume the
+  'backend' and 'doctype' have now been defined.
+- Backend plugin `<backend>.conf` and `<backend>-<doctype>.conf` files
+  from locations 6.  If a backend plugin is not found then try
+  locations 1, 2 and 3 for `<backend>.conf` and
+  `<backend>-<doctype>.conf` backend configuration files.
+- Filter conf files from locations 7.
+- `lang-<lang>.conf` from locations 1, 2, 3.
+- `asciidoc.conf` from location 4.
+- `<backend>.conf` and `<backend>-<doctype>.conf` from location 4.
+- Filter conf files from location 4.
+- `<docfile>.conf` and `<docfile>-<backend>.conf` from location 4.
+- Configuration files from location 5.
+
+Where:
+
+- `<backend>` and `<doctype>` are values specified by the asciidoc(1)
+  `-b` (`--backend`) and `-d` (`--doctype`) command-line options.
+- `<infile>` is the path name of the AsciiDoc input file without the
+  file name extension.
+- `<lang>` is a two letter country code set by the the AsciiDoc 'lang'
+  attribute.
+
+[NOTE]
+=====================================================================
+The backend and language global configuration files are loaded *after*
+the header has been parsed.  This means that you can set most
+attributes in the document header. Here's an example header:
+
+  Life's Mysteries
+  ================
+  :author: Hu Nose
+  :doctype: book
+  :toc:
+  :icons:
+  :data-uri:
+  :lang: en
+  :encoding: iso-8859-1
+
+Attributes set in the document header take precedence over
+configuration file attributes.
+
+=====================================================================
+
+TIP: Use the asciidoc(1) `-v` (`--verbose`) command-line option to see
+which configuration files are loaded and the order in which they are
+loaded.
+
+
+Document Attributes
+-------------------
+A document attribute is comprised of a 'name' and a textual 'value'
+and is used for textual substitution in AsciiDoc documents and
+configuration files. An attribute reference (an attribute name
+enclosed in braces) is replaced by the corresponding attribute
+value. Attribute names are case insensitive and can only contain
+alphanumeric, dash and underscore characters.
+
+There are four sources of document attributes (from highest to lowest
+precedence):
+
+- Command-line attributes.
+- AttributeEntry, AttributeList, Macro and BlockId elements.
+- Configuration file `[attributes]` sections.
+- Intrinsic attributes.
+
+Within each of these divisions the last processed entry takes
+precedence.
+
+NOTE: If an attribute is not defined then the line containing the
+attribute reference is dropped. This property is used extensively in
+AsciiDoc configuration files to facilitate conditional markup
+generation.
+
+
+[[X18]]
+Attribute Entries
+-----------------
+The `AttributeEntry` block element allows document attributes to be
+assigned within an AsciiDoc document. Attribute entries are added to
+the global document attributes dictionary. The attribute name/value
+syntax is a single line like:
+
+  :<name>: <value>
+
+For example:
+
+  :Author Initials: JB
+
+This will set an attribute reference `{authorinitials}` to the value
+'JB' in the current document.
+
+To delete (undefine) an attribute use the following syntax:
+
+  :<name>!:
+
+.AttributeEntry behavior
+- The attribute entry line begins with colon -- no white space allowed
+  in left margin.
+- AsciiDoc converts the `<name>` to a legal attribute name (lower
+  case, alphanumeric, dash and underscore characters only -- all other
+  characters deleted). This allows more human friendly text to be
+  used.
+- Leading and trailing white space is stripped from the `<value>`.
+- Lines ending in a space followed by a plus character are continued
+  to the next line, for example:
+
+  :description: AsciiDoc is a text document format for writing notes, +
+                documentation, articles, books, slideshows, web pages +
+                and man pages.
+
+- If the `<value>` is blank then the corresponding attribute value is
+  set to an empty string.
+- Attribute references contained in the entry `<value>` will be
+  expanded.
+- By default AttributeEntry values are substituted for
+  `specialcharacters` and `attributes` (see above), if you want to
+  change or disable AttributeEntry substitution use the <<X77,pass:[]
+  inline macro>> syntax.
+- Attribute entries in the document Header are available for header
+  markup template substitution.
+- Attribute elements override configuration file and intrinsic
+  attributes but do not override command-line attributes.
+
+Here are some more attribute entry examples:
+
+---------------------------------------------------------------------
+AsciiDoc User Manual
+====================
+:author:    Stuart Rackham
+:email:     srackham@gmail.com
+:revdate:   April 23, 2004
+:revnumber: 5.1.1
+---------------------------------------------------------------------
+
+Which creates these attributes:
+
+  {author}, {firstname}, {lastname}, {authorinitials}, {email},
+  {revdate}, {revnumber}
+
+The previous example is equivalent to this <<X95,document header>>:
+
+---------------------------------------------------------------------
+AsciiDoc User Manual
+====================
+Stuart Rackham <srackham@gmail.com>
+5.1.1, April 23, 2004
+---------------------------------------------------------------------
+
+Setting configuration entries
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+A variant of the Attribute Entry syntax allows configuration file
+section entries and markup template sections to be set from within an
+AsciiDoc document:
+
+  :<section_name>.[<entry_name>]: <entry_value>
+
+Where `<section_name>` is the configuration section name,
+`<entry_name>` is the name of the entry and `<entry_value>` is the
+optional entry value. This example sets the default labeled list
+style to 'horizontal':
+
+  :listdef-labeled.style: horizontal
+
+It is exactly equivalent to a configuration file containing:
+
+  [listdef-labeled]
+  style=horizontal
+
+- If the `<entry_name>` is omitted then the entire section is
+  substituted with the `<entry_value>`. This feature should only be
+  used to set markup template sections. The following example sets the
+  'xref2' inline macro markup template:
+
+  :xref2-inlinemacro.: <a href="#{1}">{2?{2}}</a>
+
+- No substitution is performed on configuration file attribute entries
+  and they cannot be undefined.
+- This feature can only be used in attribute entries -- configuration
+  attributes cannot be set using the asciidoc(1) command `--attribute`
+  option.
+
+[[X62]]
+.Attribute entries promote clarity and eliminate repetition
+*********************************************************************
+URLs and file names in AsciiDoc macros are often quite long -- they
+break paragraph flow and readability suffers.  The problem is
+compounded by redundancy if the same name is used repeatedly.
+Attribute entries can be used to make your documents easier to read
+and write, here are some examples:
+
+  :1:         http://freshmeat.net/projects/asciidoc/
+  :homepage:  http://methods.co.nz/asciidoc/[AsciiDoc home page]
+  :new:       image:./images/smallnew.png[]
+  :footnote1: footnote:[A meaningless latin term]
+
+  Using previously defined attributes: See the {1}[Freshmeat summary]
+  or the {homepage} for something new {new}. Lorem ispum {footnote1}.
+
+.Note
+- The attribute entry definition must precede it's usage.
+- You are not limited to URLs or file names, entire macro calls or
+  arbitrary lines of text can be abbreviated.
+- Shared attributes entries could be grouped into a separate file and
+  <<X63,included>> in multiple documents.
+*********************************************************************
+
+
+[[X21]]
+Attribute Lists
+---------------
+- An attribute list is a comma separated list of attribute values.
+- The entire list is enclosed in square brackets.
+- Attribute lists are used to pass parameters to macros, blocks (using
+  the <<X79,AttributeList element>>) and inline quotes.
+
+The list consists of zero or more positional attribute values followed
+by zero or more named attribute values.  Here are three examples: a
+single unquoted positional attribute; three unquoted positional
+attribute values; one positional attribute followed by two named
+attributes; the unquoted attribute value in the final example contains
+comma (`,`) and double-quote (`"`) character entities:
+
+  [Hello]
+  [quote, Bertrand Russell, The World of Mathematics (1956)]
+  ["22 times", backcolor="#0e0e0e", options="noborders,wide"]
+  [A footnote, "with an image" image:smallnew.png[]]
+
+.Attribute list behavior
+- If one or more attribute values contains a comma the all string
+  values must be quoted (enclosed in double quotation mark
+  characters).
+- If the list contains any named or quoted attributes then all string
+  attribute values must be quoted.
+- To include a double quotation mark (") character in a quoted
+  attribute value the the quotation mark must be escaped with a
+  backslash.
+- List attributes take precedence over existing attributes.
+- List attributes can only be referenced in configuration file markup
+  templates and tags, they are not available elsewhere in the
+  document.
+- Setting a named attribute to `None` undefines the attribute.
+- Positional attributes are referred to as `{1}`,`{2}`,`{3}`,...
+- Attribute `{0}` refers to the entire list (excluding the enclosing
+  square brackets).
+- Named attribute names cannot contain dash characters.
+
+[[X75]]
+Options attribute
+~~~~~~~~~~~~~~~~~
+If the attribute list contains an attribute named `options` it is
+processed as a comma separated list of option names:
+
+- Each name generates an attribute named like `<option>-option` (where
+  `<option>` is the option name) with an empty string value.  For
+  example `[options="opt1,opt2,opt3"]` is equivalent to setting the
+  following three attributes
+  `[opt1-option="",opt2-option="",opt2-option=""]`.
+- If you define a an option attribute globally (for example with an
+  <<X18,attribute entry>>) then it will apply to all elements in the
+  document.
+- AsciiDoc implements a number of predefined options which are listed
+  in the <<X74,Attribute Options appendix>>.
+
+Macro Attribute lists
+~~~~~~~~~~~~~~~~~~~~~
+Macros calls are suffixed with an attribute list. The list may be
+empty but it cannot be omitted. List entries are used to pass
+attribute values to macro markup templates.
+
+
+Attribute References
+--------------------
+An attribute reference is an attribute name (possibly followed by an
+additional parameters) enclosed in curly braces.  When an attribute
+reference is encountered it is evaluated and replaced by its
+corresponding text value.  If the attribute is undefined the line
+containing the attribute is dropped.
+
+There are three types of attribute reference: 'Simple', 'Conditional'
+and 'System'.
+
+.Attribute reference evaluation
+- You can suppress attribute reference expansion by placing a
+  backslash character immediately in front of the opening brace
+  character.
+- By default attribute references are not expanded in
+  'LiteralParagraphs', 'ListingBlocks' or 'LiteralBlocks'.
+- Attribute substitution proceeds line by line in reverse line order.
+- Attribute reference evaluation is performed in the following order:
+  'Simple' then 'Conditional' and finally 'System'.
+
+Simple Attributes References
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Simple attribute references take the form `{<name>}`. If the
+attribute name is defined its text value is substituted otherwise the
+line containing the reference is dropped from the output.
+
+Conditional Attribute References
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Additional parameters are used in conjunction with attribute names to
+calculate a substitution value. Conditional attribute references take
+the following forms:
+
+`{<names>=<value>}`::
+        `<value>` is substituted if the attribute `<names>` is
+        undefined otherwise its value is substituted. `<value>` can
+        contain simple attribute references.
+
+`{<names>?<value>}`::
+        `<value>` is substituted if the attribute `<names>` is defined
+        otherwise an empty string is substituted.  `<value>` can
+        contain simple attribute references.
+
+`{<names>!<value>}`::
+        `<value>` is substituted if the attribute `<names>` is
+        undefined otherwise an empty string is substituted.  `<value>`
+        can contain simple attribute references.
+
+`{<names>#<value>}`::
+        `<value>` is substituted if the attribute `<names>` is defined
+        otherwise the undefined attribute entry causes the containing
+        line to be dropped.  `<value>` can contain simple attribute
+        references.
+
+`{<names>%<value>}`::
+        `<value>` is substituted if the attribute `<names>` is not
+        defined otherwise the containing line is dropped.  `<value>`
+        can contain simple attribute references.
+
+`{<names>@<regexp>:<value1>[:<value2>]}`::
+        `<value1>` is substituted if the value of attribute `<names>`
+        matches the regular expression `<regexp>` otherwise `<value2>`
+        is substituted. If attribute `<names>` is not defined the
+        containing line is dropped. If `<value2>` is omitted an empty
+        string is assumed. The values and the regular expression can
+        contain simple attribute references.  To embed colons in the
+        values or the regular expression escape them with backslashes.
+
+`{<names>$<regexp>:<value1>[:<value2>]}`::
+        Same behavior as the previous ternary attribute except for
+        the following cases:
+
+        `{<names>$<regexp>:<value>}`;;
+                Substitutes `<value>` if `<names>` matches `<regexp>`
+                otherwise the result is undefined and the containing
+                line is dropped.
+
+        `{<names>$<regexp>::<value>}`;;
+                Substitutes `<value>` if `<names>` does not match
+                `<regexp>` otherwise the result is undefined and the
+                containing line is dropped.
+
+The attribute `<names>` parameter normally consists of a single
+attribute name but it can be any one of the following:
+
+- A single attribute name which evaluates to the attributes value.
+- Multiple ',' separated attribute names which evaluates to an empty
+  string if one or more of the attributes is defined, otherwise it's
+  value is undefined.
+- Multiple '+' separated attribute names which evaluates to an empty
+  string if all of the attributes are defined, otherwise it's value is
+  undefined.
+
+Conditional attributes with single attribute names are evaluated first
+so they can be used inside the multi-attribute conditional `<value>`.
+
+Conditional attribute examples
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Conditional attributes are mainly used in AsciiDoc configuration
+files -- see the distribution `.conf` files for examples.
+
+Attribute equality test::
+  If `{backend}` is 'docbook45' or 'xhtml11' the example evaluates to
+  ``DocBook 4.5 or XHTML 1.1 backend'' otherwise it evaluates to
+  ``some other backend'':
+
+  {backend@docbook45|xhtml11:DocBook 4.5 or XHTML 1.1 backend:some other backend}
+
+Attribute value map::
+  This example maps the `frame` attribute values [`topbot`, `all`,
+  `none`, `sides`] to [`hsides`, `border`, `void`, `vsides`]:
+
+  {frame@topbot:hsides}{frame@all:border}{frame@none:void}{frame@sides:vsides}
+
+
+[[X24]]
+System Attribute References
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+System attribute references generate the attribute text value by
+executing a predefined action that is parametrized by one or more
+arguments. The syntax is `{<action>:<arguments>}`.
+
+`{counter:<attrname>[:<seed>]}`::
+        Increments the document attribute (if the attribute is
+        undefined it is set to `1`). Returns the new attribute value.
+
+        - Counters generate global (document wide) attributes.
+        - The optional `<seed>` specifies the counter's initial value;
+          it can be a number or a single letter; defaults to '1'.
+        - `<seed>` can contain simple and conditional attribute
+          references.
+        - The 'counter' system attribute will not be executed if the
+          containing line is dropped by the prior evaluation of an
+          undefined attribute.
+
+`{counter2:<attrname>[:<seed>]}`::
+        Same as `counter` except the it always returns a blank string.
+
+`{eval:<expression>}`::
+        Substitutes the result of the Python `<expression>`.
+
+        - If `<expression>` evaluates to `None` or `False` the
+          reference is deemed undefined and the line containing the
+          reference is dropped from the output.
+        - If the expression evaluates to `True` the attribute
+          evaluates to an empty string.
+        - `<expression>` can contain simple and conditional attribute
+          references.
+        - The 'eval' system attribute can be nested inside other
+          system attributes.
+
+`{eval3:<command>}`::
+        Passthrough version of `{eval:<expression>}` -- the generated
+        output is written directly to the output without any further
+        substitutions.
+
+`{include:<filename>}`::
+        Substitutes contents of the file named `<filename>`.
+
+        - The included file is read at the time of attribute
+          substitution.
+        - If the file does not exist a warning is emitted and the line
+          containing the reference is dropped from the output file.
+        - Tabs are expanded based on the current 'tabsize' attribute
+          value.
+
+`{set:<attrname>[!][:<value>]}`::
+        Sets or unsets document attribute. Normally only used in
+        configuration file markup templates (use
+        <<X18,AttributeEntries>> in AsciiDoc documents).
+
+        - If the attribute name is followed by an exclamation mark
+          the attribute becomes undefined.
+        - If `<value>` is omitted the attribute is set to a blank
+          string.
+        - `<value>` can contain simple and conditional attribute
+          references.
+        - Returns a blank string unless the attribute is undefined in
+          which case the return value is undefined and the enclosing
+          line will be dropped.
+
+`{set2:<attrname>[!][:<value>]}`::
+        Same as `set` except that the attribute scope is local to the
+        template.
+
+`{sys:<command>}`::
+        Substitutes the stdout generated by the execution of the shell
+        `<command>`.
+
+`{sys2:<command>}`::
+        Substitutes the stdout and stderr generated by the execution
+        of the shell `<command>`.
+
+`{sys3:<command>}`::
+        Passthrough version of `{sys:<command>}` -- the generated
+        output is written directly to the output without any further
+        substitutions.
+
+`{template:<template>}`::
+        Substitutes the contents of the configuration file section
+        named `<template>`. Attribute references contained in the
+        template are substituted.
+
+.System reference behavior
+- System attribute arguments can contain non-system attribute
+  references.
+- Closing brace characters inside system attribute arguments must be
+  escaped with a backslash.
+
+[[X60]]
+Intrinsic Attributes
+--------------------
+Intrinsic attributes are simple attributes that are created
+automatically from: AsciiDoc document header parameters; asciidoc(1)
+command-line arguments; attributes defined in the default
+configuration files; the execution context.  Here's the list of
+predefined intrinsic attributes:
+
+  {amp}                 ampersand (&) character entity
+  {asciidoc-args}       used to pass inherited arguments to asciidoc filters
+  {asciidoc-confdir}    the asciidoc(1) global configuration directory
+  {asciidoc-dir}        the asciidoc(1) application directory
+  {asciidoc-file}       the full path name of the asciidoc(1) script
+  {asciidoc-version}    the version of asciidoc(1)
+  {author}              author's full name
+  {authored}            empty string '' if {author} or {email} defined,
+  {authorinitials}      author initials (from document header)
+  {backend-<backend>}   empty string ''
+  {<backend>-<doctype>} empty string ''
+  {backend}             document backend specified by `-b` option
+  {backend-confdir}     the directory containing the <backend>.conf file
+  {backslash}           backslash character
+  {basebackend-<base>}  empty string ''
+  {basebackend}         html or docbook
+  {blockname}           current block name (note 8).
+  {brvbar}              broken vertical bar (|) character
+  {docdate}             document last modified date
+  {docdir}              document input directory name  (note 5)
+  {docfile}             document file name  (note 5)
+  {docname}             document file name without extension (note 6)
+  {doctime}             document last modified time
+  {doctitle}            document title (from document header)
+  {doctype-<doctype>}   empty string ''
+  {doctype}             document type specified by `-d` option
+  {email}               author's email address (from document header)
+  {empty}               empty string ''
+  {encoding}            specifies input and output encoding
+  {filetype-<fileext>}  empty string ''
+  {filetype}            output file name file extension
+  {firstname}           author first name (from document header)
+  {gt}                  greater than (>) character entity
+  {id}                  running block id generated by BlockId elements
+  {indir}               input file directory name (note 2,5)
+  {infile}              input file name (note 2,5)
+  {lastname}            author last name (from document header)
+  {ldquo}               Left double quote character (note 7)
+  {level}               title level 1..4 (in section titles)
+  {listindex}           the list index (1..) of the most recent list item
+  {localdate}           the current date
+  {localtime}           the current time
+  {lsquo}               Left single quote character (note 7)
+  {lt}                  less than (<) character entity
+  {manname}             manpage name (defined in NAME section)
+  {manpurpose}          manpage (defined in NAME section)
+  {mantitle}            document title minus the manpage volume number
+  {manvolnum}           manpage volume number (1..8) (from document header)
+  {middlename}          author middle name (from document header)
+  {nbsp}                non-breaking space character entity
+  {notitle}             do not display the document title
+  {outdir}              document output directory name (note 2)
+  {outfile}             output file name (note 2)
+  {python}              the full path name of the Python interpreter executable
+  {rdquo}               Right double quote character (note 7)
+  {reftext}             running block xreflabel generated by BlockId elements
+  {revdate}             document revision date (from document header)
+  {revnumber}           document revision number (from document header)
+  {rsquo}               Right single quote character (note 7)
+  {sectnum}             formatted section number (in section titles)
+  {sp}                  space character
+  {showcomments}        send comment lines to the output
+  {title}               section title (in titled elements)
+  {two-colons}          Two colon characters
+  {two-semicolons}      Two semicolon characters
+  {user-dir}            the ~/.asciidoc directory (if it exists)
+  {verbose}             defined as '' if --verbose command option specified
+  {wj}                  Word-joiner
+  {zwsp}                Zero-width space character entity
+
+[NOTE]
+======
+1. Intrinsic attributes are global so avoid defining custom attributes
+   with the same names.
+2. `{outfile}`, `{outdir}`, `{infile}`, `{indir}` attributes are
+   effectively read-only (you can set them but it won't affect the
+   input or output file paths).
+3.  See also the <<X88,Backend Attributes>> section for attributes
+    that relate to AsciiDoc XHTML file generation.
+4. The entries that translate to blank strings are designed to be used
+   for conditional text inclusion. You can also use the `ifdef`,
+   `ifndef` and `endif` System macros for conditional inclusion.
+   footnote:[Conditional inclusion using `ifdef` and `ifndef` macros
+   differs from attribute conditional inclusion in that the former
+   occurs when the file is read while the latter occurs when the
+   contents are written.]
+5. `{docfile}` and `{docdir}` refer to root document specified on the
+   asciidoc(1) command-line; `{infile}` and `{indir}` refer to the
+   current input file which may be the root document or an included
+   file. When the input is being read from the standard input
+   (`stdin`) these attributes are undefined.
+6. If the input file is the standard input and the output file is not
+   the standard output then `{docname}` is the output file name sans
+   file extension.
+7. See
+   http://en.wikipedia.org/wiki/Non-English_usage_of_quotation_marks[non-English
+   usage of quotation marks].
+8. The `{blockname}` attribute identifies the style of the current
+   block. It applies to delimited blocks, lists and tables. Here is a
+   list of `{blockname}` values (does not include filters or custom
+   block and style names):
+
+   delimited blocks:: comment, sidebar, open, pass, literal, verse,
+   listing, quote, example, note, tip, important, caution, warning,
+   abstract, partintro
+
+   lists:: arabic, loweralpha, upperalpha, lowerroman, upperroman,
+   labeled, labeled3, labeled4, qanda, horizontal, bibliography,
+   glossary
+
+   tables:: table
+
+======
+
+
+[[X73]]
+Block Element Definitions
+-------------------------
+The syntax and behavior of Paragraph, DelimitedBlock, List and Table
+block elements is determined by block definitions contained in
+<<X7,AsciiDoc configuration file>> sections.
+
+Each definition consists of a section title followed by one or more
+section entries. Each entry defines a block parameter controlling some
+aspect of the block's behavior. Here's an example:
+
+---------------------------------------------------------------------
+[blockdef-listing]
+delimiter=^-{4,}$
+template=listingblock
+presubs=specialcharacters,callouts
+---------------------------------------------------------------------
+
+Configuration file block definition sections are processed
+incrementally after each configuration file is loaded. Block
+definition section entries are merged into the block definition, this
+allows block parameters to be overridden and extended by later
+<<X27,loading configuration files>>.
+
+AsciiDoc Paragraph, DelimitedBlock, List and Table block elements
+share a common subset of configuration file parameters:
+
+delimiter::
+  A Python regular expression that matches the first line of a block
+  element -- in the case of DelimitedBlocks and Tables it also matches
+  the last line.
+
+template::
+  The name of the configuration file markup template section that will
+  envelope the block contents. The pipe ('|') character is substituted
+  for the block contents. List elements use a set of (list specific)
+  tag parameters instead of a single template. The template name can
+  contain attribute references allowing dynamic template selection a
+  the time of template substitution.
+
+options::
+  A comma delimited list of element specific option names. In addition
+  to being used internally, options are available during markup tag
+  and template substitution as attributes with an empty string value
+  named like `<option>-option` (where `<option>` is the option name).
+  See <<X74,attribute options>> for a complete list of available
+  options.
+
+subs, presubs, postsubs::
+  * 'presubs' and 'postsubs' are lists of comma separated substitutions that are
+    performed on the block contents. 'presubs' is applied first,
+    'postsubs' (if specified) second.
+
+  * 'subs' is an alias for 'presubs'.
+
+  * If a 'filter' is allowed (Paragraphs, DelimitedBlocks and Tables)
+    and has been specified then 'presubs' and 'postsubs' substitutions
+    are performed before and after the filter is run respectively.
+
+  * Allowed values: 'specialcharacters', 'quotes', 'specialwords',
+    'replacements', 'macros', 'attributes', 'callouts'.
+
+  * [[X102]]The following composite values are also allowed:
+
+    'none';;
+        No substitutions.
+    'normal';;
+        The following substitutions in the following order:
+        'specialcharacters', 'quotes', 'attributes', 'specialwords',
+        'replacements', 'macros', 'replacements2'.
+    'verbatim';;
+        The following substitutions in the following order:
+        'specialcharacters' and 'callouts'.
+
+  * 'normal' and 'verbatim' substitutions can be redefined by with
+    `subsnormal` and `subsverbatim` entries in a configuration file
+    `[miscellaneous]` section.
+
+  * The substitutions are processed in the order in which they are
+    listed and can appear more than once.
+
+filter::
+  This optional entry specifies an executable shell command for
+  processing block content (Paragraphs, DelimitedBlocks and Tables).
+  The filter command can contain attribute references.
+
+posattrs::
+  Optional comma separated list of positional attribute names. This
+  list maps positional attributes (in the block's <<X21,attribute
+  list>>) to named block attributes. The following example, from the
+  QuoteBlock definition, maps the first and section positional
+  attributes:
+
+  posattrs=attribution,citetitle
+
+style::
+  This optional parameter specifies the default style name.
+
+
+<stylename>-style::
+  Optional style definition (see <<X23,Styles>> below).
+
+The following block parameters behave like document attributes and can
+be set in block attribute lists and style definitions: 'template',
+'options', 'subs', 'presubs', 'postsubs', 'filter'.
+
+[[X23]]
+Styles
+~~~~~~
+A style is a set of block parameter bundled as a single named
+parameter. The following example defines a style named 'verbatim':
+
+  verbatim-style=template="literalblock",subs="verbatim"
+
+If a block's <<X21,attribute list>> contains a 'style' attribute then
+the corresponding style parameters are be merged into the default
+block definition parameters.
+
+- All style parameter names must be suffixed with `-style` and the
+  style parameter value is in the form of a list of <<X21,named
+  attributes>>.
+- The 'template' style parameter is mandatory, other parameters can be
+  omitted in which case they inherit their values from the default
+  block definition parameters.
+- Multi-item style parameters ('subs','presubs','postsubs','posattrs')
+  must be specified using Python tuple syntax (rather than a simple
+  list of values as they in separate entries) e.g.
+  `postsubs=("callouts",)` not `postsubs="callouts"`.
+
+Paragraphs
+~~~~~~~~~~
+Paragraph translation is controlled by `[paradef-*]` configuration
+file section entries. Users can define new types of paragraphs and
+modify the behavior of existing types by editing AsciiDoc
+configuration files.
+
+Here is the shipped Default paragraph definition:
+
+--------------------------------------------------------------------
+[paradef-default]
+delimiter=(?P<text>\S.*)
+template=paragraph
+--------------------------------------------------------------------
+
+The normal paragraph definition has a couple of special properties:
+
+1. It must exist and be defined in a configuration file section named
+   `[paradef-default]`.
+2. Irrespective of its position in the configuration files default
+   paragraph document matches are attempted only after trying all
+   other paragraph types.
+
+Paragraph specific block parameter notes:
+
+delimiter::
+  This regular expression must contain the named group 'text' which
+  matches the text on the first line.  Paragraphs are terminated by a
+  blank line, the end of file, or the start of a DelimitedBlock.
+
+options::
+  The 'listelement' option specifies that paragraphs of this type will
+  automatically be considered part of immediately preceding list
+  items.  The 'skip' option causes the paragraph to be treated as a
+  comment (see <<X26,CommentBlocks>>).
+
+.Paragraph processing proceeds as follows:
+1. The paragraph text is aligned to the left margin.
+2. Optional 'presubs' inline substitutions are performed on the
+   paragraph text.
+3. If a filter command is specified it is executed and the paragraph
+   text piped to its standard input; the filter output replaces the
+   paragraph text.
+4. Optional 'postsubs' inline substitutions are performed on the
+   paragraph text.
+5. The paragraph text is enveloped by the paragraph's markup template
+   and written to the output file.
+
+Delimited Blocks
+~~~~~~~~~~~~~~~~
+DelimitedBlock 'options' values are:
+
+sectionbody::
+    The block contents are processed as a SectionBody.
+
+skip::
+    The block is treated as a comment (see <<X26,CommentBlocks>>).
+    Preceding <<X21,attribute lists>> and <<X42,block titles>> are not
+    consumed.
+
+'presubs', 'postsubs' and 'filter' entries are ignored when
+'sectionbody' or 'skip' options are set.
+
+DelimitedBlock processing proceeds as follows:
+
+1. Optional 'presubs' substitutions are performed on the block
+   contents.
+2. If a filter is specified it is executed and the block's contents
+   piped to its standard input. The filter output replaces the block
+   contents.
+3. Optional 'postsubs' substitutions are performed on the block
+   contents.
+4. The block contents is enveloped by the block's markup template and
+   written to the output file.
+
+TIP: Attribute expansion is performed on the block filter command
+before it is executed, this is useful for passing arguments to the
+filter.
+
+Lists
+~~~~~
+List behavior and syntax is determined by `[listdef-*]` configuration
+file sections. The user can change existing list behavior and add new
+list types by editing configuration files.
+
+List specific block definition notes:
+
+type::
+  This is either 'bulleted','numbered','labeled' or 'callout'.
+
+delimiter::
+  A Python regular expression that matches the first line of a
+  list element entry. This expression can contain the named groups
+  'text' (bulleted groups), 'index' and 'text' (numbered lists),
+  'label' and 'text' (labeled lists).
+
+tags::
+  The `<name>` of the `[listtags-<name>]` configuration file section
+  containing list markup tag definitions.  The tag entries ('list',
+  'entry', 'label', 'term', 'text') map the AsciiDoc list structure to
+  backend markup; see the 'listtags' sections in the AsciiDoc
+  distributed backend `.conf` configuration files for examples.
+
+Tables
+~~~~~~
+Table behavior and syntax is determined by `[tabledef-*]` and
+`[tabletags-*]` configuration file sections. The user can change
+existing table behavior and add new table types by editing
+configuration files.  The following `[tabledef-*]` section entries
+generate table output markup elements:
+
+colspec::
+  The table 'colspec' tag definition.
+
+headrow, footrow, bodyrow::
+  Table header, footer and body row tag definitions. 'headrow' and
+  'footrow' table definition entries default to 'bodyrow' if
+  they are undefined.
+
+headdata, footdata, bodydata::
+  Table header, footer and body data tag definitions. 'headdata' and
+  'footdata' table definition entries default to 'bodydata' if they
+  are undefined.
+
+paragraph::
+  If the 'paragraph' tag is specified then blank lines in the cell
+  data are treated as paragraph delimiters and marked up using this
+  tag.
+
+[[X4]]
+Table behavior is also influenced by the following `[miscellaneous]`
+configuration file entries:
+
+pagewidth::
+  This integer value is the printable width of the output media. See
+  <<X69,table attributes>>.
+
+pageunits::
+  The units of width in output markup width attribute values.
+
+.Table definition behavior
+- The output markup generation is specifically designed to work with
+  the HTML and CALS (DocBook) table models, but should be adaptable to
+  most XML table schema.
+- Table definitions can be ``mixed in'' from multiple cascading
+  configuration files.
+- New table definitions inherit the default table and table tags
+  definitions (`[tabledef-default]` and `[tabletags-default]`) so you
+  only need to override those conf file entries that require
+  modification.
+
+
+[[X59]]
+Filters
+-------
+AsciiDoc filters allow external commands to process AsciiDoc
+'Paragraphs', 'DelimitedBlocks' and 'Table' content. Filters are
+primarily an extension mechanism for generating specialized outputs.
+Filters are implemented using external commands which are specified in
+configuration file definitions.
+
+There's nothing special about the filters, they're just standard UNIX
+filters: they read text from the standard input, process it, and write
+to the standard output.
+
+The asciidoc(1) command `--filter` option can be used to install and
+remove filters. The same option is used to unconditionally load a
+filter.
+
+Attribute substitution is performed on the filter command prior to
+execution -- attributes can be used to pass parameters from the
+AsciiDoc source document to the filter.
+
+WARNING: Filters sometimes included executable code. Before installing
+a filter you should verify that it is from a trusted source.
+
+Filter Search Paths
+~~~~~~~~~~~~~~~~~~~
+If the filter command does not specify a directory path then
+asciidoc(1) recursively searches for the executable filter command:
+
+- First it looks in the user's `$HOME/.asciidoc/filters` directory.
+- Next the global filters directory (usually `/etc/asciidoc/filters`
+  or `/usr/local/etc/asciidoc`) directory is searched.
+- Then it looks in the asciidoc(1) `./filters` directory.
+- Finally it relies on the executing shell to search the environment
+  search path (`$PATH`).
+
+Standard practice is to install each filter in it's own sub-directory
+with the same name as the filter's style definition. For example the
+music filter's style name is 'music' so it's configuration and filter
+files are stored in the `filters/music` directory.
+
+Filter Configuration Files
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+Filters are normally accompanied by a configuration file containing a
+Paragraph or DelimitedBlock definition along with corresponding markup
+templates.
+
+While it is possible to create new 'Paragraph' or 'DelimitedBlock'
+definitions the preferred way to implement a filter is to add a
+<<X23,style>> to the existing Paragraph and ListingBlock definitions
+(all filters shipped with AsciiDoc use this technique). The filter is
+applied to the paragraph or delimited block by preceding it with an
+attribute list: the first positional attribute is the style name,
+remaining attributes are normally filter specific parameters.
+
+asciidoc(1) auto-loads all `.conf` files found in the filter search
+paths unless the container directory also contains a file named
+`__noautoload__` (see previous section). The `__noautoload__` feature
+is used for filters that will be loaded manually using the `--filter`
+option.
+
+[[X56]]
+Example Filter
+~~~~~~~~~~~~~~
+AsciiDoc comes with a toy filter for highlighting source code keywords
+and comments.  See also the `./filters/code/code-filter-readme.txt`
+file.
+
+NOTE: The purpose of this toy filter is to demonstrate how to write a
+filter -- it's much to simplistic to be passed off as a code syntax
+highlighter.  If you want a full featured multi-language highlighter
+use the {website}source-highlight-filter.html[source code highlighter
+filter].
+
+Built-in filters
+~~~~~~~~~~~~~~~~
+The AsciiDoc distribution includes 'source', 'music', 'latex' and
+'graphviz' filters, details are on the
+{website}index.html#_filters[AsciiDoc website].
+
+[cols="1e,5",frame="topbot",options="header"]
+.Built-in filters list
+|====================================================================
+|Filter name |Description
+
+|music
+|A {website}music-filter.html[music filter] is included in the
+distribution `./filters/` directory. It translates music in
+http://lilypond.org/[LilyPond] or http://abcnotation.org.uk/[ABC]
+notation to standard classical notation.
+
+|source
+|A {website}source-highlight-filter.html[source code highlight filter]
+is included in the distribution `./filters/` directory.
+
+|latex
+|The {website}latex-filter.html[AsciiDoc LaTeX filter] translates
+LaTeX source to a PNG image that is automatically inserted into the
+AsciiDoc output documents.
+
+|graphviz
+|Gouichi Iisaka has written a http://www.graphviz.org/[Graphviz]
+filter for AsciiDoc.  Graphviz generates diagrams from a textual
+specification. Gouichi Iisaka's Graphviz filter is included in the
+AsciiDoc distribution. Here are some
+{website}asciidoc-graphviz-sample.html[AsciiDoc Graphviz examples].
+
+|====================================================================
+
+[[X58]]
+Filter plugins
+~~~~~~~~~~~~~~
+Filter <<X101,plugins>> are a mechanism for distributing AsciiDoc
+filters.  A filter plugin is a Zip file containing the files that
+constitute a filter.  The asciidoc(1) `--filter` option is used to
+load and manage filer <<X101,plugins>>.
+
+- Filter plugins <<X27,take precedence>> over built-in filters with
+  the same name.
+- By default filter plugins are installed in
+  `$HOME/.asciidoc/filters/<filter>` where `<filter>` is the filter
+  name.
+
+
+[[X101]]
+Plugins
+-------
+The AsciiDoc plugin architecture is an extension mechanism that allows
+additional <<X100,backends>>, <<X58,filters>> and <<X99,themes>> to be
+added to AsciiDoc.
+
+- A plugin is a Zip file containing an AsciiDoc backend, filter or
+  theme (configuration files, stylesheets, scripts, images).
+- The asciidoc(1) `--backend`, `--filter` and `--theme` command-line
+  options are used to load and manage plugins. Each of these options
+  responds to the plugin management 'install', 'list', 'remove' and
+  'build' commands.
+- The plugin management command names are reserved and cannot be used
+  for filter, backend or theme names.
+- The plugin Zip file name always begins with the backend, filter or
+  theme name.
+
+Plugin commands and conventions are documented in the asciidoc(1) man
+page.  You can find lists of plugins on the
+{website}plugins.html[AsciiDoc website].
+
+
+[[X36]]
+Help Commands
+-------------
+The asciidoc(1) command has a `--help` option which prints help topics
+to stdout. The default topic summarizes asciidoc(1) usage:
+
+  $ asciidoc --help
+
+To print a help topic specify the topic name as a command argument.
+Help topic names can be shortened so long as they are not ambiguous.
+Examples:
+
+  $ asciidoc --help manpage
+  $ asciidoc -h m              # Short version of previous example.
+  $ asciidoc --help syntax
+  $ asciidoc -h s              # Short version of previous example.
+
+Customizing Help
+~~~~~~~~~~~~~~~~
+To change, delete or add your own help topics edit a help
+configuration file.  The help file name `help-<lang>.conf` is based on
+the setting of the `lang` attribute, it defaults to `help.conf`
+(English).  The <<X27,help file location>> will depend on whether you
+want the topics to apply to all users or just the current user.
+
+The help topic files have the same named section format as other
+<<X7,configuration files>>. The `help.conf` files are stored in the
+same locations and loaded in the same order as other configuration
+files.
+
+When the `--help` command-line option is specified AsciiDoc loads the
+appropriate help files and then prints the contents of the section
+whose name matches the help topic name.  If a topic name is not
+specified `default` is used. You don't need to specify the whole help
+topic name on the command-line, just enough letters to ensure it's not
+ambiguous. If a matching help file section is not found a list of
+available topics is printed.
+
+
+Tips and Tricks
+---------------
+
+Know Your Editor
+~~~~~~~~~~~~~~~~
+Writing AsciiDoc documents will be a whole lot more pleasant if you
+know your favorite text editor. Learn how to indent and reformat text
+blocks, paragraphs, lists and sentences. <<X20,Tips for 'vim' users>>
+follow.
+
+[[X20]]
+Vim Commands for Formatting AsciiDoc
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Text Wrap Paragraphs
+^^^^^^^^^^^^^^^^^^^^
+Use the vim `:gq` command to reformat paragraphs. Setting the
+'textwidth' sets the right text wrap margin; for example:
+
+  :set textwidth=70
+
+To reformat a paragraph:
+
+1. Position the cursor at the start of the paragraph.
+2. Type `gq}`.
+
+Execute `:help gq` command to read about the vim gq command.
+
+[TIP]
+=====================================================================
+- Assign the `gq}` command to the Q key with the `nnoremap Q gq}`
+  command or put it in your `~/.vimrc` file to so it's always
+  available (see the <<X61, Example `~/.vimrc` file>>).
+- Put `set` commands in your `~/.vimrc` file so you don't have to
+  enter them manually.
+- The Vim website (http://www.vim.org) has a wealth of resources,
+  including scripts for automated spell checking and ASCII Art
+  drawing.
+=====================================================================
+
+Format Lists
+^^^^^^^^^^^^
+The `gq` command can also be used to format bulleted, numbered and
+callout lists. First you need to set the `comments`, `formatoptions`
+and `formatlistpat` (see the <<X61, Example `~/.vimrc` file>>).
+
+Now you can format simple lists that use dash, asterisk, period and
+plus bullets along with numbered ordered lists:
+
+1. Position the cursor at the start of the list.
+2. Type `gq}`.
+
+Indent Paragraphs
+^^^^^^^^^^^^^^^^^
+Indent whole paragraphs by indenting the fist line with the desired
+indent and then executing the `gq}` command.
+
+[[X61]]
+Example `~/.vimrc` File
+^^^^^^^^^^^^^^^^^^^^^^^
+---------------------------------------------------------------------
+" Use bold bright fonts.
+set background=dark
+
+" Show tabs and trailing characters.
+set listchars=tab:»·,trail:·
+set list
+
+" Don't highlight searched text.
+highlight clear Search
+
+" Don't move to matched text while search pattern is being entered.
+set noincsearch
+
+" Reformat paragraphs and list.
+nnoremap R gq}
+
+" Delete trailing white space and Dos-returns and to expand tabs to spaces.
+nnoremap S :set et<CR>:retab!<CR>:%s/[\r \t]\+$//<CR>
+
+autocmd BufRead,BufNewFile *.txt,README,TODO,CHANGELOG,NOTES
+        \ setlocal autoindent expandtab tabstop=8 softtabstop=2 shiftwidth=2 filetype=asciidoc
+        \ textwidth=70 wrap formatoptions=tcqn
+        \ formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\\|^\\s*<\\d\\+>\\s\\+\\\\|^\\s*[a-zA-Z.]\\.\\s\\+\\\\|^\\s*[ivxIVX]\\+\\.\\s\\+
+        \ comments=s1:/*,ex:*/,://,b:#,:%,:XCOMM,fb:-,fb:*,fb:+,fb:.,fb:>
+---------------------------------------------------------------------
+
+Troubleshooting
+~~~~~~~~~~~~~~~
+AsciiDoc diagnostic features are detailed in the <<X82,Diagnostics
+appendix>>.
+
+Gotchas
+~~~~~~~
+Incorrect character encoding::
+    If you get an error message like `'UTF-8' codec can't decode ...`
+    then you source file contains invalid UTF-8 characters -- set the
+    AsciiDoc <<X54,encoding attribute>> for the correct character set
+    (typically ISO-8859-1 (Latin-1) for European languages).
+
+Invalid output::
+    AsciiDoc attempts to validate the input AsciiDoc source but makes
+    no attempt to validate the output markup, it leaves that to
+    external tools such as `xmllint(1)` (integrated into `a2x(1)`).
+    Backend validation cannot be hardcoded into AsciiDoc because
+    backends are dynamically configured. The following example
+    generates valid HTML but invalid DocBook (the DocBook `literal`
+    element cannot contain an `emphasis` element):
+
+    +monospaced text with an _emphasized_ word+
+
+Misinterpreted text formatting::
+    You can suppress markup expansion by placing a backslash character
+    immediately in front of the element. The following example
+    suppresses inline monospaced formatting:
+
+    \+1 for C++.
+
+Overlapping text formatting::
+    Overlapping text formatting will generate illegal overlapping
+    markup tags which will result in downstream XML parsing errors.
+    Here's an example:
+
+    Some *strong markup _that overlaps* emphasized markup_.
+
+Ambiguous underlines::
+    A DelimitedBlock can immediately follow a paragraph without an
+    intervening blank line, but be careful, a single line paragraph
+    underline may be misinterpreted as a section title underline
+    resulting in a ``closing block delimiter expected'' error.
+
+Ambiguous ordered list items::
+    Lines beginning with numbers at the end of sentences will be
+    interpreted as ordered list items.  The following example
+    (incorrectly) begins a new list with item number 1999:
+
+    He was last sighted in
+    1999. Since then things have moved on.
++
+The 'list item out of sequence' warning makes it unlikely that this
+problem will go unnoticed.
+
+Special characters in attribute values::
+    Special character substitution precedes attribute substitution so
+    if attribute values contain special characters you may, depending
+    on the substitution context, need to escape the special characters
+    yourself. For example:
+
+    $ asciidoc -a 'orgname=Bill & Ben Inc.' mydoc.txt
+
+Attribute lists::
+    If any named attribute entries are present then all string
+    attribute values must be quoted.  For example:
+
+    ["Desktop screenshot",width=32]
+
+[[X90]]
+Combining separate documents
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+You have a number of stand-alone AsciiDoc documents that you want to
+process as a single document. Simply processing them with a series of
+`include` macros won't work because the documents contain (level 0)
+document titles.  The solution is to create a top level wrapper
+document and use the `leveloffset` attribute to push them all down one
+level. For example:
+
+[listing]
+.....................................................................
+Combined Document Title
+=======================
+
+// Push titles down one level.
+:leveloffset: 1
+
+\include::document1.txt[]
+
+// Return to normal title levels.
+:leveloffset: 0
+
+A Top Level Section
+-------------------
+Lorum ipsum.
+
+// Push titles down one level.
+:leveloffset: 1
+
+\include::document2.txt[]
+
+\include::document3.txt[]
+.....................................................................
+
+The document titles in the included documents will now be processed as
+level 1 section titles, level 1 sections as level 2 sections and so
+on.
+
+- Put a blank line between the `include` macro lines to ensure the
+  title of the included document is not seen as part of the last
+  paragraph of the previous document.
+- You won't want non-title document header lines (for example, Author
+  and Revision lines) in the included files -- conditionally exclude
+  them if they are necessary for stand-alone processing.
+
+Processing document sections separately
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+You have divided your AsciiDoc document into separate files (one per
+top level section) which are combined and processed with the following
+top level document:
+
+---------------------------------------------------------------------
+Combined Document Title
+=======================
+Joe Bloggs
+v1.0, 12-Aug-03
+
+\include::section1.txt[]
+
+\include::section2.txt[]
+
+\include::section3.txt[]
+---------------------------------------------------------------------
+
+You also want to process the section files as separate documents.
+This is easy because asciidoc(1) will quite happily process
+`section1.txt`, `section2.txt` and `section3.txt` separately -- the
+resulting output documents contain the section but have no document
+title.
+
+Processing document snippets
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Use the `-s` (`--no-header-footer`) command-line option to suppress
+header and footer output, this is useful if the processed output is to
+be included in another file. For example:
+
+  $ asciidoc -sb docbook section1.txt
+
+asciidoc(1) can be used as a filter, so you can pipe chunks of text
+through it. For example:
+
+  $ echo 'Hello *World!*' | asciidoc -s -
+  <div class="paragraph"><p>Hello <strong>World!</strong></p></div>
+
+Badges in HTML page footers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+See the `[footer]` section in the AsciiDoc distribution `xhtml11.conf`
+configuration file.
+
+Pretty printing AsciiDoc output
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If the indentation and layout of the asciidoc(1) output is not to your
+liking you can:
+
+1. Change the indentation and layout of configuration file markup
+   template sections. The `{empty}` attribute is useful for outputting
+   trailing blank lines in markup templates.
+
+2. Use Dave Raggett's http://tidy.sourceforge.net/[HTML Tidy] program
+   to tidy asciidoc(1) output. Example:
+
+   $ asciidoc -b docbook -o - mydoc.txt | tidy -indent -xml >mydoc.xml
+
+3. Use the `xmllint(1)` format option. Example:
+
+   $ xmllint --format mydoc.xml
+
+Supporting minor DocBook DTD variations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The conditional inclusion of DocBook SGML markup at the end of the
+distribution `docbook45.conf` file illustrates how to support minor
+DTD variations. The included sections override corresponding entries
+from preceding sections.
+
+Creating stand-alone HTML documents
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you've ever tried to send someone an HTML document that includes
+stylesheets and images you'll know that it's not as straight-forward
+as exchanging a single file.  AsciiDoc has options to create
+stand-alone documents containing embedded images, stylesheets and
+scripts.  The following AsciiDoc command creates a single file
+containing <<X66,embedded images>>, CSS stylesheets, and JavaScript
+(for table of contents and footnotes):
+
+  $ asciidoc -a data-uri -a icons -a toc -a max-width=55em article.txt
+
+You can view the HTML file here: {website}article-standalone.html[]
+
+Shipping stand-alone AsciiDoc source
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Reproducing presentation documents from someone else's source has one
+major problem: unless your configuration files are the same as the
+creator's you won't get the same output.
+
+The solution is to create a single backend specific configuration file
+using the asciidoc(1) `-c` (`--dump-conf`) command-line option. You
+then ship this file along with the AsciiDoc source document plus the
+`asciidoc.py` script. The only end user requirement is that they have
+Python installed (and that they consider you a trusted source). This
+example creates a composite HTML configuration file for `mydoc.txt`:
+
+  $ asciidoc -cb xhtml11 mydoc.txt > mydoc-xhtml11.conf
+
+Ship `mydoc.txt`, `mydoc-html.conf`, and `asciidoc.py`. With
+these three files (and a Python interpreter) the recipient can
+regenerate the HMTL output:
+
+  $ ./asciidoc.py -eb xhtml11 mydoc.txt
+
+The `-e` (`--no-conf`) option excludes the use of implicit
+configuration files, ensuring that only entries from the
+`mydoc-html.conf` configuration are used.
+
+Inserting blank space
+~~~~~~~~~~~~~~~~~~~~~
+Adjust your style sheets to add the correct separation between block
+elements. Inserting blank paragraphs containing a single non-breaking
+space character `{nbsp}` works but is an ad hoc solution compared
+to using style sheets.
+
+Closing open sections
+~~~~~~~~~~~~~~~~~~~~~
+You can close off section tags up to level `N` by calling the
+`eval::[Section.setlevel(N)]` system macro. This is useful if you
+want to include a section composed of raw markup. The following
+example includes a DocBook glossary division at the top section level
+(level 0):
+
+---------------------------------------------------------------------
+\ifdef::basebackend-docbook[]
+
+\eval::[Section.setlevel(0)]
+
++++++++++++++++++++++++++++++++
+<glossary>
+  <title>Glossary
+  
+  ...
+  
+
++++++++++++++++++++++++++++++++
+\endif::basebackend-docbook[]
+---------------------------------------------------------------------
+
+Validating output files
+~~~~~~~~~~~~~~~~~~~~~~~
+Use `xmllint(1)` to check the AsciiDoc generated markup is both well
+formed and valid. Here are some examples:
+
+  $ xmllint --nonet --noout --valid docbook-file.xml
+  $ xmllint --nonet --noout --valid xhtml11-file.html
+  $ xmllint --nonet --noout --valid --html html4-file.html
+
+The `--valid` option checks the file is valid against the document
+type's DTD, if the DTD is not installed in your system's catalog then
+it will be fetched from its Internet location. If you omit the
+`--valid` option the document will only be checked that it is well
+formed.
+
+The online http://validator.w3.org/#validate_by_uri+with_options[W3C
+Markup Validation Service] is the defacto standard when it comes to
+validating HTML (it validates all HTML standards including HTML5).
+
+
+:numbered!:
+
+[glossary]
+Glossary
+--------
+[glossary]
+[[X8]] Block element::
+    An AsciiDoc block element is a document entity composed of one or
+    more whole lines of text.
+
+[[X34]] Inline element::
+    AsciiDoc inline elements occur within block element textual
+    content, they perform formatting and substitution tasks.
+
+Formal element::
+    An AsciiDoc block element that has a BlockTitle. Formal elements
+    are normally listed in front or back matter, for example lists of
+    tables, examples and figures.
+
+Verbatim element::
+    The word verbatim indicates that white space and line breaks in
+    the source document are to be preserved in the output document.
+
+
+[appendix]
+Migration Notes
+---------------
+[[X53]]
+Version 7 to version 8
+~~~~~~~~~~~~~~~~~~~~~~
+- A new set of quotes has been introduced which may match inline text
+  in existing documents -- if they do you'll need to escape the
+  matched text with backslashes.
+- The index entry inline macro syntax has changed -- if your documents
+  include indexes you may need to edit them.
+- Replaced a2x(1) `--no-icons` and `--no-copy` options with their
+  negated equivalents: `--icons` and `--copy` respectively. The
+  default behavior has also changed -- the use of icons and copying of
+  icon and CSS files must be specified explicitly with the `--icons`
+  and `--copy` options.
+
+The rationale for the changes can be found in the AsciiDoc
+`CHANGELOG`.
+
+NOTE: If you want to disable unconstrained quotes, the new alternative
+constrained quotes syntax and the new index entry syntax then you can
+define the attribute `asciidoc7compatible` (for example by using the
+`-a asciidoc7compatible` command-line option).
+
+[[X38]]
+[appendix]
+Packager Notes
+--------------
+Read the `README` and `INSTALL` files (in the distribution root
+directory) for install prerequisites and procedures.  The distribution
+`Makefile.in` (used by `configure` to generate the `Makefile`) is the
+canonical installation procedure.
+
+
+[[X39]]
+[appendix]
+AsciiDoc Safe Mode
+-------------------
+AsciiDoc 'safe mode' skips potentially dangerous scripted sections in
+AsciiDoc source files by inhibiting the execution of arbitrary code or
+the inclusion of arbitrary files.
+
+The safe mode is disabled by default, it can be enabled with the
+asciidoc(1) `--safe` command-line option.
+
+.Safe mode constraints
+- `eval`, `sys` and `sys2` executable attributes and block macros are
+  not executed.
+- `include::[]` and `include1::[]` block macro
+  files must reside inside the parent file's directory.
+- `{include:}` executable attribute files must reside
+  inside the source document directory.
+- Passthrough Blocks are dropped.
+
+[WARNING]
+=====================================================================
+The safe mode is not designed to protect against unsafe AsciiDoc
+configuration files. Be especially careful when:
+
+1. Implementing filters.
+2. Implementing elements that don't escape special characters.
+3. Accepting configuration files from untrusted sources.
+=====================================================================
+
+
+[appendix]
+Using AsciiDoc with non-English Languages
+-----------------------------------------
+AsciiDoc can process UTF-8 character sets but there are some things
+you need to be aware of:
+
+- If you are generating output documents using a DocBook toolchain
+  then you should set the AsciiDoc `lang` attribute to the appropriate
+  language (it defaults to `en` (English)). This will ensure things
+  like table of contents, figure and table captions and admonition
+  captions are output in the specified language.  For example:
+
+  $ a2x -a lang=es doc/article.txt
+
+- If you are outputting HTML directly from asciidoc(1) you'll
+  need to set the various `*_caption` attributes to match your target
+  language (see the list of captions and titles in the `[attributes]`
+  section of the distribution `lang-*.conf` files). The easiest way is
+  to create a language `.conf` file (see the AsciiDoc's `lang-en.conf`
+  file).
++
+NOTE: You still use the 'NOTE', 'CAUTION', 'TIP', 'WARNING',
+'IMPORTANT' captions in the AsciiDoc source, they get translated in
+the HTML output file.
+
+- asciidoc(1) automatically loads configuration files named like
+  `lang-.conf` where `` is a two letter language code that
+  matches the current AsciiDoc `lang` attribute. See also
+  <>.
+
+
+[appendix]
+Vim Syntax Highlighter
+----------------------
+Syntax highlighting is incredibly useful, in addition to making
+reading AsciiDoc documents much easier syntax highlighting also helps
+you catch AsciiDoc syntax errors as you write your documents.
+
+The AsciiDoc `./vim/` distribution directory contains Vim syntax
+highlighter and filetype detection scripts for AsciiDoc.  Syntax
+highlighting makes it much easier to spot AsciiDoc syntax errors.
+
+If Vim is installed on your system the AsciiDoc installer
+(`install.sh`) will automatically install the vim scripts in the Vim
+global configuration directory (`/etc/vim`).
+
+You can also turn on syntax highlighting by adding the following line
+to the end of you AsciiDoc source files:
+
+  // vim: set syntax=asciidoc:
+
+TIP: Bold fonts are often easier to read, use the Vim `:set
+background=dark` command to set bold bright fonts.
+
+NOTE: There are a number of alternative syntax highlighters for
+various editors listed on the {website}[AsciiDoc website].
+
+Limitations
+~~~~~~~~~~~
+The current implementation does a reasonable job but on occasions gets
+things wrong:
+
+- Nested quoted text formatting is highlighted according to the outer
+  format.
+- If a closing Example Block delimiter is sometimes mistaken for a
+  title underline. A workaround is to insert a blank line before the
+  closing delimiter.
+- Lines within a paragraph starting with equals characters may be
+  highlighted as single-line titles.
+- Lines within a paragraph beginning with a period may be highlighted
+  as block titles.
+
+
+[[X74]]
+[appendix]
+Attribute Options
+-----------------
+Here is the list of predefined <>:
+
+
+[cols="2e,2,2,5",frame="topbot",options="header"]
+|====================================================================
+|Option|Backends|AsciiDoc Elements|Description
+
+|autowidth |xhtml11, html5, html4 |table|
+The column widths are determined by the browser, not the AsciiDoc
+'cols' attribute. If there is no 'width' attribute the table width is
+also left up to the browser.
+
+|unbreakable |xhtml11, html5 |block elements|
+'unbreakable' attempts to keep the block element together on a single
+printed page c.f. the 'breakable' and 'unbreakable' docbook (XSL/FO)
+options below.
+
+|breakable, unbreakable |docbook (XSL/FO) |table, example, block image|
+The 'breakable' options allows block elements to break across page
+boundaries; 'unbreakable' attempts to keep the block element together
+on a single page. If neither option is specified the default XSL
+stylesheet behavior prevails.
+
+|compact |docbook, xhtml11, html5 |bulleted list, numbered list|
+Minimizes vertical space in the list
+
+|footer |docbook, xhtml11, html5, html4 |table|
+The last row of the table is rendered as a footer.
+
+|header |docbook, xhtml11, html5, html4 |table|
+The first row of the table is rendered as a header.
+
+|pgwide |docbook (XSL/FO) |table, block image, horizontal labeled list|
+Specifies that the element should be rendered across the full text
+width of the page irrespective of the current indentation.
+
+|strong |xhtml11, html5, html4 |labeled lists|
+Emboldens label text.
+|====================================================================
+
+
+[[X82]]
+[appendix]
+Diagnostics
+-----------
+The `asciidoc(1)` `--verbose` command-line option prints additional
+information to stderr: files processed, filters processed, warnings,
+system attribute evaluation.
+
+A special attribute named 'trace' enables the output of
+element-by-element diagnostic messages detailing output markup
+generation to stderr.  The 'trace' attribute can be set on the
+command-line or from within the document using <> (the latter allows tracing to be confined to specific
+portions of the document).
+
+- Trace messages print the source file name and line number and the
+  trace name followed by related markup.
+- 'trace names' are normally the names of AsciiDoc elements (see the
+  list below).
+- The trace message is only printed if the 'trace' attribute value
+  matches the start of a 'trace name'. The 'trace' attribute value can
+  be any Python regular expression.  If a trace value is not specified
+  all trace messages will be printed (this can result in large amounts
+  of output if applied to the whole document).
+
+- In the case of inline substitutions:
+  * The text before and after the substitution is printed; the before
+    text is preceded by a line containing `<<<` and the after text by
+    a line containing `>>>`.
+  * The 'subs' trace value is an alias for all inline substitutions.
+
+.Trace names
+.....................................................................
+ block close
+ block open
+
+dropped line (a line containing an undefined attribute reference).
+floating title
+footer
+header
+list close
+list entry close
+list entry open
+list item close
+list item open
+list label close
+list label open
+list open
+macro block (a block macro)
+name (man page NAME section)
+paragraph
+preamble close
+preamble open
+push blockname
+pop blockname
+section close
+section open: level 
+subs (all inline substitutions)
+table
+.....................................................................
+
+Where:
+
+- `` is section level number '0...4'.
+- `` is a delimited block name: 'comment', 'sidebar',
+  'open', 'pass', 'listing', 'literal', 'quote', 'example'.
+- `` is an inline substitution type:
+  'specialcharacters','quotes','specialwords', 'replacements',
+  'attributes','macros','callouts', 'replacements2', 'replacements3'.
+
+Command-line examples:
+
+. Trace the entire document.
+
+  $ asciidoc -a trace mydoc.txt
+
+. Trace messages whose names start with `quotes` or `macros`:
+
+  $ asciidoc -a 'trace=quotes|macros'  mydoc.txt
+
+. Print the first line of each trace message:
+
+  $ asciidoc -a trace mydoc.txt 2>&1 | grep ^TRACE:
+
+Attribute Entry examples:
+
+. Begin printing all trace messages:
+
+  :trace:
+
+. Print only matched trace messages:
+
+  :trace: quotes|macros
+
+. Turn trace messages off:
+
+  :trace!:
+
+
+[[X88]]
+[appendix]
+Backend Attributes
+------------------
+This table contains a list of optional attributes that influence the
+generated outputs.
+
+[cols="1e,1,5a",frame="topbot",options="header"]
+|====================================================================
+|Name |Backends |Description
+
+|badges |xhtml11, html5 |
+Link badges ('XHTML 1.1' and 'CSS') in document footers. By default
+badges are omitted ('badges' is undefined).
+
+NOTE: The path names of images, icons and scripts are relative path
+names to the output document not the source document.
+
+|data-uri |xhtml11, html5 |
+Embed images using the <>.
+
+|css-signature |html5, xhtml11 |
+Set a 'CSS signature' for the document (sets the 'id' attribute of the
+HTML 'body' element). CSS signatures provide a mechanism that allows
+users to personalize the document appearance. The term 'CSS signature'
+was http://archivist.incutio.com/viewlist/css-discuss/13291[coined by
+Eric Meyer].
+
+
+|disable-javascript |xhtml11, html5 |
+If the `disable-javascript` attribute is defined the `asciidoc.js`
+JavaScript is not embedded or linked to the output document.  By
+default AsciiDoc automatically embeds or links the `asciidoc.js`
+JavaScript to the output document. The script dynamically generates
+<> and <>.
+
+|[[X97]] docinfo, docinfo1, docinfo2 |All backends |
+These three attributes control which <> will be included in the the header of the output file:
+
+docinfo:: Include `-docinfo.`
+docinfo1:: Include `docinfo.`
+docinfo2:: Include `docinfo.` and `-docinfo.`
+
+Where `` is the file name (sans extension) of the AsciiDoc
+input file and `` is `.html` for HTML outputs or `.xml` for
+DocBook outputs. If the input file is the standard input then the
+output file name is used. The following example will include the
+`mydoc-docinfo.xml` docinfo file in the DocBook `mydoc.xml` output
+file:
+
+  $ asciidoc -a docinfo -b docbook mydoc.txt
+
+This next example will include `docinfo.html` and `mydoc-docinfo.html`
+docinfo files in the HTML output file:
+
+  $ asciidoc -a docinfo2 -b html4 mydoc.txt
+
+
+|[[X54]]encoding |html4, html5, xhtml11, docbook |
+Set the input and output document character set encoding. For example
+the `--attribute encoding=ISO-8859-1` command-line option will set the
+character set encoding to `ISO-8859-1`.
+
+- The default encoding is UTF-8.
+- This attribute specifies the character set in the output document.
+- The encoding name must correspond to a Python codec name or alias.
+- The 'encoding' attribute can be set using an AttributeEntry inside
+  the document header. For example:
+
+  :encoding: ISO-8859-1
+
+|[[X45]]icons |xhtml11, html5 |
+Link admonition paragraph and admonition block icon images and badge
+images. By default 'icons' is undefined and text is used in place of
+icon images.
+
+|[[X44]]iconsdir |html4, html5, xhtml11, docbook |
+The name of the directory containing linked admonition icons,
+navigation icons and the `callouts` sub-directory (the `callouts`
+sub-directory contains <> number images). 'iconsdir'
+defaults to `./images/icons`.
+
+|imagesdir |html4, html5, xhtml11, docbook |
+If this attribute is defined it is prepended to the target image file
+name paths in inline and block image macros.
+
+|keywords, description, title |html4, html5, xhtml11 |
+The 'keywords' and 'description' attributes set the correspondingly
+named HTML meta tag contents; the 'title' attribute sets the HTML
+title tag contents.  Their principle use is for SEO (Search Engine
+Optimisation).  All three are optional, but if they are used they must
+appear in the document header (or on the command-line). If 'title' is
+not specified the AsciiDoc document title is used.
+
+|linkcss |html5, xhtml11 |
+Link CSS stylesheets and JavaScripts. By default 'linkcss' is
+undefined in which case stylesheets and scripts are automatically
+embedded in the output document.
+
+|[[X103]]max-width |html5, xhtml11 |
+Set the document maximum display width (sets the 'body' element CSS
+'max-width' property).
+
+|numbered |html4, html5, xhtml11, docbook (XSL Stylesheets) |
+Adds section numbers to section titles. The 'docbook' backend ignores
+'numbered' attribute entries after the document header.
+
+|plaintext | All backends |
+If this global attribute is defined all inline substitutions are
+suppressed and block indents are retained.  This option is useful when
+dealing with large amounts of imported plain text.
+
+|quirks |xhtml11 |
+Include the `xhtml11-quirks.conf` configuration file and
+`xhtml11-quirks.css` <> to work around IE6 browser
+incompatibilities. This feature is deprecated and its use is
+discouraged -- documents are still viewable in IE6 without it.
+
+|revremark |docbook |
+A short summary of changes in this document revision. Must be defined
+prior to the first document section. The document also needs to be
+dated to output this attribute.
+
+|scriptsdir |html5, xhtml11 |
+The name of the directory containing linked JavaScripts.
+See <>.
+
+|sgml |docbook45 |
+The `--backend=docbook45` command-line option produces DocBook 4.5
+XML.  You can produce the older DocBook SGML format using the
+`--attribute sgml` command-line option.
+
+|stylesdir |html5, xhtml11 |
+The name of the directory containing linked or embedded
+<>.
+See <>.
+
+|stylesheet |html5, xhtml11 |
+The file name of an optional additional CSS <>.
+
+|theme |html5, xhtml11 |
+Use alternative stylesheet (see <>).
+
+|[[X91]]toc |html5, xhtml11, docbook (XSL Stylesheets) |
+Adds a table of contents to the start of an article or book document.
+The `toc` attribute can be specified using the `--attribute toc`
+command-line option or a `:toc:` attribute entry in the document
+header. The 'toc' attribute is defined by default when the 'docbook'
+backend is used. To disable table of contents generation undefine the
+'toc' attribute by putting a `:toc!:` attribute entry in the document
+header or from the command-line with an `--attribute toc!` option.
+
+*xhtml11 and html5 backends*
+
+- JavaScript needs to be enabled in your browser.
+- The following example generates a numbered table of contents using a
+  JavaScript embedded in the `mydoc.html` output document:
+
+  $ asciidoc -a toc -a numbered mydoc.txt
+
+|toc2 |html5, xhtml11 |
+Adds a scrollable table of contents in the left hand margin of an
+article or book document. Use the 'max-width' attribute to change the
+content width. In all other respects behaves the same as the 'toc'
+attribute.
+
+|toc-placement |html5, xhtml11 |
+When set to 'auto' (the default value) asciidoc(1) will place the
+table of contents in the document header. When 'toc-placement' is set
+to 'manual' the TOC can be positioned anywhere in the document by
+placing the `toc::[]` block macro at the point you want the TOC to
+appear.
+
+NOTE: If you use 'toc-placement' then you also have to define the
+<> attribute.
+
+|toc-title |html5, xhtml11 |
+Sets the table of contents title (defaults to 'Table of Contents').
+
+|toclevels |html5, xhtml11 |
+Sets the number of title levels (1..4) reported in the table of
+contents (see the 'toc' attribute above). Defaults to 2 and must be
+used with the 'toc' attribute. Example usage:
+
+  $ asciidoc -a toc -a toclevels=3 doc/asciidoc.txt
+
+|====================================================================
+
+
+[appendix]
+License
+-------
+AsciiDoc is free software; you can redistribute it and/or modify it
+under the terms of the 'GNU General Public License version 2' (GPLv2)
+as published by the Free Software Foundation.
+
+AsciiDoc is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License version 2 for more details.
+
+AsciiDoc Highlighter sponsored by O'Reilly Media
+
+Copyright (C) 2002-2011 Stuart Rackham.
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/assembly_x86.asm b/plugins/node_modules/ace/demo/kitchen-sink/docs/assembly_x86.asm
new file mode 100644
index 00000000..01e8305c
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/assembly_x86.asm
@@ -0,0 +1,18 @@
+section	.text
+    global main         ;must be declared for using gcc
+
+main:	                ;tell linker entry point
+
+	mov	edx, len	    ;message length
+	mov	ecx, msg	    ;message to write
+	mov	ebx, 1	        ;file descriptor (stdout)
+	mov	eax, 4	        ;system call number (sys_write)
+	int	0x80	        ;call kernel
+
+	mov	eax, 1	        ;system call number (sys_exit)
+	int	0x80	        ;call kernel
+
+section	.data
+
+msg	db	'Hello, world!',0xa	;our dear string
+len	equ	$ - msg			;length of our dear string
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/autohotkey.ahk b/plugins/node_modules/ace/demo/kitchen-sink/docs/autohotkey.ahk
new file mode 100644
index 00000000..73687e67
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/autohotkey.ahk
@@ -0,0 +1,35 @@
+#NoEnv
+SetBatchLines -1
+
+CoordMode Mouse, Screen
+OnExit GuiClose
+
+zoom := 9
+
+computeSize(){
+	global as_x
+	as_x := Round(ws_x/zoom/2 - 0.5)
+	if (zoom>1) {
+		pix := Round(zoom)
+	} ele {
+		pix := 1
+	}
+    ToolTip Message %as_x% %zoom% %ws_x% %hws_x% 
+}
+
+hdc_frame := DllCall("GetDC", UInt, MagnifierID)
+
+; comment
+DrawCross(byRef x="", rX,rY,z, dc){
+        ;specify the style, thickness and color of the cross lines
+    h_pen := DllCall( "gdi32.dll\CreatePen", Int, 0, Int, 1, UInt, 0x0000FF)
+}
+
+;Ctrl ^; Shift +; Win #; Alt !
+^NumPadAdd::
+^WheelUp::   
+^;::   ;comment
+    If(zoom < ws_x and ( A_ThisHotKey = "^WheelUp" or A_ThisHotKey ="^NumPadAdd") )
+		zoom *= 1.189207115         ; sqrt(sqrt(2))
+	Gosub,setZoom
+return
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/batchfile.bat b/plugins/node_modules/ace/demo/kitchen-sink/docs/batchfile.bat
new file mode 100644
index 00000000..c066a9e9
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/batchfile.bat
@@ -0,0 +1,15 @@
+:: batch file highlighting in Ace!
+@echo off
+
+CALL set var1=%cd%
+echo unhide everything in %var1%!
+
+:: FOR loop in bat is super strange!
+FOR /f "tokens=*" %%G IN ('dir /A:D /b') DO (
+echo %var1%%%G
+attrib -r -a -h -s "%var1%%%G" /D /S
+)
+
+pause
+
+REM that's all
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/c9search.c9search_results b/plugins/node_modules/ace/demo/kitchen-sink/docs/c9search.c9search_results
new file mode 100644
index 00000000..0ad9ccd4
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/c9search.c9search_results
@@ -0,0 +1,25 @@
+Searching for var in/.c9/metadata/workspace/pluginsregexp, case sensitive, whole word
+
+configs/default.js:
+    1: var fs = require("fs");
+	2: var argv = require('optimist').argv;
+	3: var path = require("path");
+	5: var clientExtensions = {};
+	6: var clientDirs = fs.readdirSync(__dirname + "/../plugins-client");
+	7: for (var i = 0; i < clientDirs.length; i++) {
+	8:     var dir = clientDirs[i];
+	12:     var name = dir.split(".")[1];
+	16: var projectDir = (argv.w && path.resolve(process.cwd(), argv.w)) || process.cwd();
+	17: var fsUrl = "/workspace";
+	19: var port = argv.p || process.env.PORT || 3131;
+	20: var host = argv.l || "localhost";
+	22: var config = {
+
+configs/local.js:
+	2: var config = require("./default");
+
+configs/packed.js:
+	1: var config = require("./default");
+
+
+Found 15 matches in 3 files
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/c_cpp.cpp b/plugins/node_modules/ace/demo/kitchen-sink/docs/c_cpp.cpp
new file mode 100644
index 00000000..3e06ac24
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/c_cpp.cpp
@@ -0,0 +1,46 @@
+// compound assignment operators
+
+#include 
+
+#include \
+   
+
+#include \
+   \
+   
+
+#include \
+   \
+   "iostream"
+
+#include 
+#include "boost/asio/io_service.hpp"
+
+#include \
+   \
+   "iostream" \
+   "string" \
+   
+   
+using namespace std;
+
+//
+int main ()
+{
+    int a, b=3; /* foobar */
+    a = b; // single line comment\
+        continued
+    a+=2; // equivalent to a=a+2
+    cout << a;
+    #if VERBOSE >= 2
+        prints("trace message");
+    #endif
+    return 0;
+}
+
+/* Print an error message and get out */
+#define ABORT                             \
+    do {                                  \
+        print( "Abort\n" );                \
+        exit(8);                          \
+} while (0)                      /* Note: No semicolon */
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/cirru.cirru b/plugins/node_modules/ace/demo/kitchen-sink/docs/cirru.cirru
new file mode 100644
index 00000000..244833df
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/cirru.cirru
@@ -0,0 +1,42 @@
+-- https://github.com/Cirru/cirru-gopher/blob/master/code/scope.cr,
+
+set a (int 2)
+
+print (self)
+
+set c (child)
+
+under c
+  under parent
+    print a
+
+print $ get c a
+
+set c x (int 3)
+print $ get c x
+
+set just-print $ code
+  print a
+
+print just-print
+
+eval (self) just-print
+eval just-print
+
+print (string "string with space")
+print (string "escapes \n \"\\")
+
+brackets ((((()))))
+
+"eval" $ string "eval"
+
+print (add $ (int 1) (int 2))
+
+print $ unwrap $
+  map (a $ int 1) (b $ int 2)
+
+print a
+  int 1
+  , b c
+  int 2
+  , d
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/clojure.clj b/plugins/node_modules/ace/demo/kitchen-sink/docs/clojure.clj
new file mode 100644
index 00000000..42acfcc7
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/clojure.clj
@@ -0,0 +1,19 @@
+(defn parting
+  "returns a String parting in a given language"
+  ([] (parting "World"))
+  ([name] (parting name "en"))
+  ([name language]
+    ; condp is similar to a case statement in other languages.
+    ; It is described in more detail later.
+    ; It is used here to take different actions based on whether the
+    ; parameter "language" is set to "en", "es" or something else.
+    (condp = language
+      "en" (str "Goodbye, " name)
+      "es" (str "Adios, " name)
+      (throw (IllegalArgumentException.
+        (str "unsupported language " language))))))
+
+(println (parting)) ; -> Goodbye, World
+(println (parting "Mark")) ; -> Goodbye, Mark
+(println (parting "Mark" "es")) ; -> Adios, Mark
+(println (parting "Mark", "xy")) ; -> java.lang.IllegalArgumentException: unsupported language xy
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/cobol.CBL b/plugins/node_modules/ace/demo/kitchen-sink/docs/cobol.CBL
new file mode 100644
index 00000000..30404ce4
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/cobol.CBL
@@ -0,0 +1 @@
+TODO
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/coffee.coffee b/plugins/node_modules/ace/demo/kitchen-sink/docs/coffee.coffee
new file mode 100644
index 00000000..a7e50d08
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/coffee.coffee
@@ -0,0 +1,22 @@
+#!/usr/bin/env coffee
+
+try
+    throw URIError decodeURI(0xC0ffee * 123456.7e-8 / .9)
+catch e
+    console.log 'qstring' + "qqstring" + '''
+        qdoc
+    ''' + """
+        qqdoc
+    """
+
+do ->
+    ###
+    herecomment
+    ###
+    re = /regex/imgy.test ///
+        heregex  # comment
+    ///imgy
+    this isnt: `just JavaScript`
+    undefined
+    
+sentence = "#{ 22 / 7 } is a decent approximation of π"
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/coldfusion.cfm b/plugins/node_modules/ace/demo/kitchen-sink/docs/coldfusion.cfm
new file mode 100644
index 00000000..750a389f
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/coldfusion.cfm
@@ -0,0 +1,5 @@
+
+
+
+
+#welcome#
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/csharp.cs b/plugins/node_modules/ace/demo/kitchen-sink/docs/csharp.cs
new file mode 100644
index 00000000..9478be87
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/csharp.cs
@@ -0,0 +1,4 @@
+public void HelloWorld() {
+    //Say Hello!
+    Console.WriteLine("Hello World");
+}
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/css.css b/plugins/node_modules/ace/demo/kitchen-sink/docs/css.css
new file mode 100644
index 00000000..6d2d71f5
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/css.css
@@ -0,0 +1,18 @@
+.text-layer {
+    font: 12px Monaco, "Courier New", monospace;
+    cursor: text;
+}
+
+.blinker {
+    animation: blink 1s linear infinite alternate;
+}
+
+@keyframes blink {
+    0%, 40% {
+        opacity: 0;
+    }
+
+    40.5%, 100% {
+        opacity: 1
+    }
+}
\ No newline at end of file
diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/curly.curly b/plugins/node_modules/ace/demo/kitchen-sink/docs/curly.curly
new file mode 100644
index 00000000..c42d6790
--- /dev/null
+++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/curly.curly
@@ -0,0 +1,16 @@
+
+    
+
+    
+
+    
+    
+        

{{author_name}}

+ + diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/d.d b/plugins/node_modules/ace/demo/kitchen-sink/docs/d.d new file mode 100644 index 00000000..57069067 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/d.d @@ -0,0 +1,14 @@ +#!/usr/bin/env rdmd +// Computes average line length for standard input. +import std.stdio; + +void main() { + ulong lines = 0; + double sumLength = 0; + foreach (line; stdin.byLine()) { + ++lines; + sumLength += line.length; + } + writeln("Average line length: ", + lines ? sumLength / lines : 0); +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/dart.dart b/plugins/node_modules/ace/demo/kitchen-sink/docs/dart.dart new file mode 100644 index 00000000..735a20b3 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/dart.dart @@ -0,0 +1,19 @@ +// Go ahead and modify this example. + +import "dart:html"; + +// Computes the nth Fibonacci number. +int fibonacci(int n) { + if (n < 2) return n; + return fibonacci(n - 1) + fibonacci(n - 2); +} + +// Displays a Fibonacci number. +void main() { + int i = 20; + String message = "fibonacci($i) = ${fibonacci(i)}"; + + // This example uses HTML to display the result and it will appear + // in a nested HTML frame (an iframe). + document.body.append(new HeadingElement.h1()..appendText(message)); +} diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/diff.diff b/plugins/node_modules/ace/demo/kitchen-sink/docs/diff.diff new file mode 100644 index 00000000..16c89890 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/diff.diff @@ -0,0 +1,69 @@ +diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js +index 23fc3fc..ed3b273 100644 +--- a/lib/ace/edit_session.js ++++ b/lib/ace/edit_session.js +@@ -51,6 +51,7 @@ var TextMode = require("./mode/text").Mode; + var Range = require("./range").Range; + var Document = require("./document").Document; + var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer; ++var SearchHighlight = require("./search_highlight").SearchHighlight; + + /** + * class EditSession +@@ -307,6 +308,13 @@ var EditSession = function(text, mode) { + return token; + }; + ++ this.highlight = function(re) { ++ if (!this.$searchHighlight) { ++ var highlight = new SearchHighlight(null, "ace_selected-word", "text"); ++ this.$searchHighlight = this.addDynamicMarker(highlight); ++ } ++ this.$searchHighlight.setRegexp(re); ++ } + /** + * EditSession.setUndoManager(undoManager) + * - undoManager (UndoManager): The new undo manager +@@ -556,7 +564,8 @@ var EditSession = function(text, mode) { + type : type || "line", + renderer: typeof type == "function" ? type : null, + clazz : clazz, +- inFront: !!inFront ++ inFront: !!inFront, ++ id: id + } + + if (inFront) { +diff --git a/lib/ace/editor.js b/lib/ace/editor.js +index 834e603..b27ec73 100644 +--- a/lib/ace/editor.js ++++ b/lib/ace/editor.js +@@ -494,7 +494,7 @@ var Editor = function(renderer, session) { + * Emitted when a selection has changed. + **/ + this.onSelectionChange = function(e) { +- var session = this.getSession(); ++ var session = this.session; + + if (session.$selectionMarker) { + session.removeMarker(session.$selectionMarker); +@@ -509,12 +509,40 @@ var Editor = function(renderer, session) { + this.$updateHighlightActiveLine(); + } + +- var self = this; +- if (this.$highlightSelectedWord && !this.$wordHighlightTimer) +- this.$wordHighlightTimer = setTimeout(function() { +- self.session.$mode.highlightSelection(self); +- self.$wordHighlightTimer = null; +- }, 30, this); ++ var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp() + }; +diff --git a/lib/ace/search_highlight.js b/lib/ace/search_highlight.js +new file mode 100644 +index 0000000..b2df779 +--- /dev/null ++++ b/lib/ace/search_highlight.js +@@ -0,0 +1,3 @@ ++new ++empty file \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/dot.dot b/plugins/node_modules/ace/demo/kitchen-sink/docs/dot.dot new file mode 100644 index 00000000..1e13be7e --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/dot.dot @@ -0,0 +1,110 @@ +// Original source: http://www.graphviz.org/content/lion_share +##"A few people in the field of genetics are using dot to draw "marriage node diagram" pedigree drawings. Here is one I have done of a test pedigree from the FTREE pedigree drawing package (Lion Share was a racehorse)." Contributed by David Duffy. + +##Command to get the layout: "dot -Tpng thisfile > thisfile.png" + +digraph Ped_Lion_Share { +# page = "8.2677165,11.692913" ; +ratio = "auto" ; +mincross = 2.0 ; +label = "Pedigree Lion_Share" ; + +"001" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"002" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"003" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"004" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"005" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"006" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"007" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"009" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"014" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"015" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"016" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"ZZ01" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"ZZ02" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"017" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"012" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"008" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"011" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"013" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"010" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"023" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"020" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"021" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"018" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"025" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"019" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"022" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"024" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"027" [shape=circle , regular=1,style=filled,fillcolor=white ] ; +"026" [shape=box , regular=1,style=filled,fillcolor=white ] ; +"028" [shape=box , regular=1,style=filled,fillcolor=grey ] ; +"marr0001" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"001" -> "marr0001" [dir=none,weight=1] ; +"007" -> "marr0001" [dir=none,weight=1] ; +"marr0001" -> "017" [dir=none, weight=2] ; +"marr0002" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"001" -> "marr0002" [dir=none,weight=1] ; +"ZZ02" -> "marr0002" [dir=none,weight=1] ; +"marr0002" -> "012" [dir=none, weight=2] ; +"marr0003" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"002" -> "marr0003" [dir=none,weight=1] ; +"003" -> "marr0003" [dir=none,weight=1] ; +"marr0003" -> "008" [dir=none, weight=2] ; +"marr0004" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"002" -> "marr0004" [dir=none,weight=1] ; +"006" -> "marr0004" [dir=none,weight=1] ; +"marr0004" -> "011" [dir=none, weight=2] ; +"marr0005" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"002" -> "marr0005" [dir=none,weight=1] ; +"ZZ01" -> "marr0005" [dir=none,weight=1] ; +"marr0005" -> "013" [dir=none, weight=2] ; +"marr0006" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"004" -> "marr0006" [dir=none,weight=1] ; +"009" -> "marr0006" [dir=none,weight=1] ; +"marr0006" -> "010" [dir=none, weight=2] ; +"marr0007" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"005" -> "marr0007" [dir=none,weight=1] ; +"015" -> "marr0007" [dir=none,weight=1] ; +"marr0007" -> "023" [dir=none, weight=2] ; +"marr0008" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"005" -> "marr0008" [dir=none,weight=1] ; +"016" -> "marr0008" [dir=none,weight=1] ; +"marr0008" -> "020" [dir=none, weight=2] ; +"marr0009" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"005" -> "marr0009" [dir=none,weight=1] ; +"012" -> "marr0009" [dir=none,weight=1] ; +"marr0009" -> "021" [dir=none, weight=2] ; +"marr0010" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"008" -> "marr0010" [dir=none,weight=1] ; +"017" -> "marr0010" [dir=none,weight=1] ; +"marr0010" -> "018" [dir=none, weight=2] ; +"marr0011" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"011" -> "marr0011" [dir=none,weight=1] ; +"023" -> "marr0011" [dir=none,weight=1] ; +"marr0011" -> "025" [dir=none, weight=2] ; +"marr0012" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"013" -> "marr0012" [dir=none,weight=1] ; +"014" -> "marr0012" [dir=none,weight=1] ; +"marr0012" -> "019" [dir=none, weight=2] ; +"marr0013" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"010" -> "marr0013" [dir=none,weight=1] ; +"021" -> "marr0013" [dir=none,weight=1] ; +"marr0013" -> "022" [dir=none, weight=2] ; +"marr0014" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"019" -> "marr0014" [dir=none,weight=1] ; +"020" -> "marr0014" [dir=none,weight=1] ; +"marr0014" -> "024" [dir=none, weight=2] ; +"marr0015" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"022" -> "marr0015" [dir=none,weight=1] ; +"025" -> "marr0015" [dir=none,weight=1] ; +"marr0015" -> "027" [dir=none, weight=2] ; +"marr0016" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"024" -> "marr0016" [dir=none,weight=1] ; +"018" -> "marr0016" [dir=none,weight=1] ; +"marr0016" -> "026" [dir=none, weight=2] ; +"marr0017" [shape=diamond,style=filled,label="",height=.1,width=.1] ; +"026" -> "marr0017" [dir=none,weight=1] ; +"027" -> "marr0017" [dir=none,weight=1] ; +"marr0017" -> "028" [dir=none, weight=2] ; +} diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/eiffel.e b/plugins/node_modules/ace/demo/kitchen-sink/docs/eiffel.e new file mode 100644 index 00000000..943cdb35 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/eiffel.e @@ -0,0 +1,30 @@ +note + description: "Represents a person." + +class + PERSON + +create + make, make_unknown + +feature {NONE} -- Creation + + make (a_name: like name) + -- Create a person with `a_name' as `name'. + do + name := a_name + ensure + name = a_name + end + + make_unknown + do ensure + name = Void + end + +feature -- Access + + name: detachable STRING + -- Full name or Void if unknown. + +end \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/ejs.ejs b/plugins/node_modules/ace/demo/kitchen-sink/docs/ejs.ejs new file mode 100644 index 00000000..aaf497a9 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/ejs.ejs @@ -0,0 +1,31 @@ + + + + Cloud9 Rocks! + + + + + + + + + <% if (!isRoot) { %> + + + + + <% } %> + <% entries.forEach(function(entry) { %> + + + + + <% }) %> +
NameSize
..
+ + <%= entry.name %> + <%= entry.size %>
+ + + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/elixir.ex b/plugins/node_modules/ace/demo/kitchen-sink/docs/elixir.ex new file mode 100644 index 00000000..bb6a45f1 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/elixir.ex @@ -0,0 +1,42 @@ +defmodule HelloModule do + @moduledoc """ + This is supposed to be `markdown`. + __Yes__ this is [mark](http://down.format) + + # Truly + + ## marked + + * with lists + * more + * and more + + Even.with(code) + blocks |> with |> samples + + _Docs are first class citizens in Elixir_ (Jose Valim) + """ + + # A "Hello world" function + def some_fun do + IO.puts "Juhu Kinners!" + end + # A private function + defp priv do + is_regex ~r""" + This is a regex + spanning several + lines. + """ + x = elem({ :a, :b, :c }, 0) #=> :a + end +end + +test_fun = fn(x) -> + cond do + x > 10 -> + :greater_than_ten + true -> + :maybe_ten + end +end \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/elm.elm b/plugins/node_modules/ace/demo/kitchen-sink/docs/elm.elm new file mode 100644 index 00000000..eef70b2a --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/elm.elm @@ -0,0 +1,12 @@ +{- Ace {- 4 -} Elm -} +main = lift clock (every second) + +clock t = collage 400 400 [ filled lightGrey (ngon 12 110) + , outlined (solid grey) (ngon 12 110) + , hand orange 100 t + , hand charcoal 100 (t/60) + , hand charcoal 60 (t/720) ] + +hand clr len time = + let angle = degrees (90 - 6 * inSeconds time) + in traced (solid clr) <| segment (0,0) (len * cos angle, len * sin angle) \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/erlang.erl b/plugins/node_modules/ace/demo/kitchen-sink/docs/erlang.erl new file mode 100644 index 00000000..705642b3 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/erlang.erl @@ -0,0 +1,20 @@ + %% A process whose only job is to keep a counter. + %% First version + -module(counter). + -export([start/0, codeswitch/1]). + + start() -> loop(0). + + loop(Sum) -> + receive + {increment, Count} -> + loop(Sum+Count); + {counter, Pid} -> + Pid ! {counter, Sum}, + loop(Sum); + code_switch -> + ?MODULE:codeswitch(Sum) + % Force the use of 'codeswitch/1' from the latest MODULE version + end. + + codeswitch(Sum) -> loop(Sum). \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/forth.frt b/plugins/node_modules/ace/demo/kitchen-sink/docs/forth.frt new file mode 100644 index 00000000..dc85cd7b --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/forth.frt @@ -0,0 +1,41 @@ +: HELLO ( -- ) CR ." Hello, world!" ; + +HELLO +Hello, world! + +: [CHAR] CHAR POSTPONE LITERAL ; IMMEDIATE + +0 value ii 0 value jj +0 value KeyAddr 0 value KeyLen +create SArray 256 allot \ state array of 256 bytes +: KeyArray KeyLen mod KeyAddr ; + +: get_byte + c@ ; +: set_byte + c! ; +: as_byte 255 and ; +: reset_ij 0 TO ii 0 TO jj ; +: i_update 1 + as_byte TO ii ; +: j_update ii SArray get_byte + as_byte TO jj ; +: swap_s_ij + jj SArray get_byte + ii SArray get_byte jj SArray set_byte + ii SArray set_byte +; + +: rc4_init ( KeyAddr KeyLen -- ) + 256 min TO KeyLen TO KeyAddr + 256 0 DO i i SArray set_byte LOOP + reset_ij + BEGIN + ii KeyArray get_byte jj + j_update + swap_s_ij + ii 255 < WHILE + ii i_update + REPEAT + reset_ij +; +: rc4_byte + ii i_update jj j_update + swap_s_ij + ii SArray get_byte jj SArray get_byte + as_byte SArray get_byte xor +; \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/ftl.ftl b/plugins/node_modules/ace/demo/kitchen-sink/docs/ftl.ftl new file mode 100644 index 00000000..faa573f5 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/ftl.ftl @@ -0,0 +1,46 @@ +<#ftl encoding="utf-8" /> +<#setting locale="en_US" /> +<#import "library" as lib /> +<#-- + FreeMarker comment + ${abc} <#assign a=12 /> +--> + + + + + + + ${title!"FreeMarker"}<title> + </head> + + <body> + + <h1>Hello ${name!""}</h1> + + <p>Today is: ${.now?date}</p> + + <#assign x = 13> + <#if x > 12 && x lt 14>x equals 13: ${x}</#if> + + <ul> + <#list items as item> + <li>${item_index}: ${item.name!?split("\n")[0]}</li> + </#list> + </ul> + + User directive: <@lib.function attr1=true attr2='value' attr3=-42.12>Test</@lib.function> + <@anotherOne /> + + <#if variable?exists> + Deprecated + <#elseif variable??> + Better + <#else> + Default + </#if> + + <img src="images/${user.id}.png" /> + + </body> +</html> diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/gcode.gcode b/plugins/node_modules/ace/demo/kitchen-sink/docs/gcode.gcode new file mode 100644 index 00000000..5f47bca3 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/gcode.gcode @@ -0,0 +1,31 @@ +O003 (DIAMOND SQUARE) +N2 G54 G90 G49 G80 +N3 M6 T1 (1.ENDMILL) +N4 M3 S1800 +N5 G0 X-.6 Y2.050 +N6 G43 H1 Z.1 +N7 G1 Z-.3 F50. +N8 G41 D1 Y1.45 +N9 G1 X0 F20. +N10 G2 J-1.45 +(CUTTER COMP CANCEL) +N11 G1 Z-.2 F50. +N12 Y-.990 +N13 G40 +N14 G0 X-.6 Y1.590 +N15 G0 Z.1 +N16 M5 G49 G28 G91 Z0 +N17 CALL O9456 +N18 #500=0.004 +N19 #503=[#500+#501] +N20 VC45=0.0006 +VS4=0.0007 +N21 G90 G10 L20 P3 X5.Y4. Z6.567 +N22 G0 X5000 +N23 IF [#1 LT 0.370] GOTO 49 +N24 X-0.678 Y+.990 +N25 G84.3 X-0.1 +N26 #4=#5*COS[45] +N27 #4=#5*SIN[45] +N28 VZOFZ=652.9658 +% \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/gherkin.feature b/plugins/node_modules/ace/demo/kitchen-sink/docs/gherkin.feature new file mode 100644 index 00000000..83c6e844 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/gherkin.feature @@ -0,0 +1,28 @@ +@these @_are_ @tags +Feature: Serve coffee + Coffee should not be served until paid for + Coffee should not be served until the button has been pressed + If there is no coffee left then money should be refunded + + Scenario Outline: Eating + Given there are <start> cucumbers + When I eat <eat> cucumbers + Then I should have <left> cucumbers + + Examples: + | start | eat | left | + | 12 | 5 | 7 | + | @20 | 5 | 15 | + + Scenario: Buy last coffee + Given there are 1 coffees left in the machine + And I have deposited 1$ + When I press the coffee button + Then I should be served a "coffee" + + # this a comment + + """ + this is a + pystring + """ \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/glsl.glsl b/plugins/node_modules/ace/demo/kitchen-sink/docs/glsl.glsl new file mode 100644 index 00000000..e32bf07d --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/glsl.glsl @@ -0,0 +1,20 @@ +uniform float amplitude; +attribute float displacement; +varying vec3 vNormal; + +void main() { + + vNormal = normal; + + // multiply our displacement by the + // amplitude. The amp will get animated + // so we'll have animated displacement + vec3 newPosition = position + + normal * + vec3(displacement * + amplitude); + + gl_Position = projectionMatrix * + modelViewMatrix * + vec4(newPosition,1.0); +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/golang.go b/plugins/node_modules/ace/demo/kitchen-sink/docs/golang.go new file mode 100644 index 00000000..6b1298f0 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/golang.go @@ -0,0 +1,34 @@ +// Concurrent computation of pi. +// See http://goo.gl/ZuTZM. +// +// This demonstrates Go's ability to handle +// large numbers of concurrent processes. +// It is an unreasonable way to calculate pi. +package main + +import ( + "fmt" + "math" +) + +func main() { + fmt.Println(pi(5000)) +} + +// pi launches n goroutines to compute an +// approximation of pi. +func pi(n int) float64 { + ch := make(chan float64) + for k := 0; k <= n; k++ { + go term(ch, float64(k)) + } + f := 0.0 + for k := 0; k <= n; k++ { + f += <-ch + } + return f +} + +func term(ch chan float64, k float64) { + ch <- 4 * math.Pow(-1, k) / (2*k + 1) +} diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/groovy.groovy b/plugins/node_modules/ace/demo/kitchen-sink/docs/groovy.groovy new file mode 100644 index 00000000..8097a702 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/groovy.groovy @@ -0,0 +1,41 @@ +//http://groovy.codehaus.org/Martin+Fowler%27s+closure+examples+in+Groovy + +class Employee { + def name, salary + boolean manager + String toString() { return name } +} + +def emps = [new Employee(name:'Guillaume', manager:true, salary:200), + new Employee(name:'Graeme', manager:true, salary:200), + new Employee(name:'Dierk', manager:false, salary:151), + new Employee(name:'Bernd', manager:false, salary:50)] + +def managers(emps) { + emps.findAll { e -> e.isManager() } +} + +assert emps[0..1] == managers(emps) // [Guillaume, Graeme] + +def highPaid(emps) { + threshold = 150 + emps.findAll { e -> e.salary > threshold } +} + +assert emps[0..2] == highPaid(emps) // [Guillaume, Graeme, Dierk] + +def paidMore(amount) { + { e -> e.salary > amount} +} +def highPaid = paidMore(150) + +assert highPaid(emps[0]) // true +assert emps[0..2] == emps.findAll(highPaid) + +def filename = 'test.txt' +new File(filename).withReader{ reader -> doSomethingWith(reader) } + +def readersText +def doSomethingWith(reader) { readersText = reader.text } + +assert new File(filename).text == readersText \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/haml.haml b/plugins/node_modules/ace/demo/kitchen-sink/docs/haml.haml new file mode 100644 index 00000000..d07ed4a2 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/haml.haml @@ -0,0 +1,36 @@ +!!!5 + +# <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> +# <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> +# <!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> +# <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> + + +/adasdasdad +%div{:id => "#{@item.type}_#{@item.number}", :class => '#{@item.type} #{@item.urgency}', :phoney => `asdasdasd`} +/ file: app/views/movies/index.html.haml +\d +%ads:{:bleh => 33} +%p==ddd== + Date/Time: + - now = DateTime.now + %strong= now + = if now DateTime.parse("December 31, 2006") + = "Happy new " + "year!" +%sfd.dfdfg +#content + .title + %h1= @title + = link_to 'Home', home_url + + #contents +%div#content + %div.articles + %div.article.title Blah + %div.article.date 2006-11-05 + %div.article.entry + Neil Patrick Harris + +%div[@user, :greeting] + %bar[290]/ + ==Hello!== diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/handlebars.hbs b/plugins/node_modules/ace/demo/kitchen-sink/docs/handlebars.hbs new file mode 100644 index 00000000..bb096a1a --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/handlebars.hbs @@ -0,0 +1,8 @@ +{{!-- Ace + :-}} --}} + +<div id="comments"> + {{#each comments}} + <h2><a href="/posts/{{../permalink}}#{{id}}">{{title}}</a></h2> + <div>{{{body}}}</div> + {{/each}} +</div> diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/haskell.hs b/plugins/node_modules/ace/demo/kitchen-sink/docs/haskell.hs new file mode 100644 index 00000000..5c0defc2 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/haskell.hs @@ -0,0 +1,20 @@ +-- Type annotation (optional) +fib :: Int -> Integer + +-- With self-referencing data +fib n = fibs !! n + where fibs = 0 : scanl (+) 1 fibs + -- 0,1,1,2,3,5,... + +-- Same, coded directly +fib n = fibs !! n + where fibs = 0 : 1 : next fibs + next (a : t@(b:_)) = (a+b) : next t + +-- Similar idea, using zipWith +fib n = fibs !! n + where fibs = 0 : 1 : zipWith (+) fibs (tail fibs) + +-- Using a generator function +fib n = fibs (0,1) !! n + where fibs (a,b) = a : fibs (b,a+b) \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/htaccess b/plugins/node_modules/ace/demo/kitchen-sink/docs/htaccess new file mode 100644 index 00000000..a9f5a27c --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/htaccess @@ -0,0 +1,10 @@ +Redirect /linux http://www.linux.org +Redirect 301 /kernel http://www.linux.org + +# comment +RewriteEngine on + +RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* +RewriteRule ^/$ /homepage.max.html [L] + +RewriteRule ^/$ /homepage.std.html [L] diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/html.html b/plugins/node_modules/ace/demo/kitchen-sink/docs/html.html new file mode 100644 index 00000000..81398bef --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/html.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html> + <head> + + <style type="text/css"> + .text-layer { + font-family: Monaco, "Courier New", monospace; + font-size: 12px; + cursor: text; + } + </style> + + </head> + <body> + <h1 style="color:red">Juhu Kinners</h1> + </body> +</html> \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/html_ruby.erb b/plugins/node_modules/ace/demo/kitchen-sink/docs/html_ruby.erb new file mode 100644 index 00000000..f75835ca --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/html_ruby.erb @@ -0,0 +1,26 @@ +<h1>Listing Books</h1> + +<table> + <tr> + <th>Title</th> + <th>Summary</th> + <th></th> + <th></th> + <th></th> + </tr> + +<% @books.each do |book| %> + <tr> + <%# comment %> + <td><%= book.title %></td> + <td><%= book.content %></td> + <td><%= link_to 'Show', book %></td> + <td><%= link_to 'Edit', edit_book_path(book) %></td> + <td><%= link_to 'Remove', book, :confirm => 'Are you sure?', :method => :delete %></td> + </tr> +<% end %> +</table> + +<br /> + +<%= link_to 'New book', new_book_path %> \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/ini.ini b/plugins/node_modules/ace/demo/kitchen-sink/docs/ini.ini new file mode 100644 index 00000000..45f83c9a --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/ini.ini @@ -0,0 +1,4 @@ +[.ShellClassInfo] +IconResource=..\logo.png +[ViewState] +FolderType=Generic diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/io.io b/plugins/node_modules/ace/demo/kitchen-sink/docs/io.io new file mode 100644 index 00000000..4b80b6c2 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/io.io @@ -0,0 +1,6 @@ +// computes factorial of a number +factorial := method(n, + if(n == 0, return 1) + res := 1 + Range 1 to(n) foreach(i, res = res * i) +) \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/jade.jade b/plugins/node_modules/ace/demo/kitchen-sink/docs/jade.jade new file mode 100644 index 00000000..d9fb7e30 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/jade.jade @@ -0,0 +1,45 @@ +!!!doctype +!!!5 +!!! + +include something + + include another_thing + + // let's talk about it + +// + here it is. a block comment! + and another row! +but not here. + + // + a far spaced + should be lack of block + + // also not a comment + div.attemptAtBlock + + span#myName + + #{implicit} + !{more_explicit} + + #idDiv + + .idDiv + + test(id="tag") + header(id="tag", blah="foo", meh="aads") +mixin article(obj, parents) + + mixin bleh() + + mixin clever-name + + -var x = "0"; + - y each z + + - var items = ["one", "two", "three"] + each item in items + li= item \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/java.java b/plugins/node_modules/ace/demo/kitchen-sink/docs/java.java new file mode 100644 index 00000000..f3b542b7 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/java.java @@ -0,0 +1,15 @@ +public class InfiniteLoop { + + /* + * This will cause the program to hang... + * + * Taken from: + * http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/ + */ + public static void main(String[] args) { + double d = Double.parseDouble("2.2250738585072012e-308"); + + // unreachable code + System.out.println("Value: " + d); + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/javascript.js b/plugins/node_modules/ace/demo/kitchen-sink/docs/javascript.js new file mode 100644 index 00000000..5b367b5f --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/javascript.js @@ -0,0 +1,5 @@ +function foo(items, nada) { + for (var i=0; i<items.length; i++) { + alert(items[i] + "juhu\n"); + } // Real Tab. +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/json.json b/plugins/node_modules/ace/demo/kitchen-sink/docs/json.json new file mode 100644 index 00000000..6028d5ed --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/json.json @@ -0,0 +1,66 @@ +{ + "query": { + "count": 10, + "created": "2011-06-21T08:10:46Z", + "lang": "en-US", + "results": { + "photo": [ + { + "farm": "6", + "id": "5855620975", + "isfamily": "0", + "isfriend": "0", + "ispublic": "1", + "owner": "32021554@N04", + "secret": "f1f5e8515d", + "server": "5110", + "title": "7087 bandit cat" + }, + { + "farm": "4", + "id": "5856170534", + "isfamily": "0", + "isfriend": "0", + "ispublic": "1", + "owner": "32021554@N04", + "secret": "ff1efb2a6f", + "server": "3217", + "title": "6975 rusty cat" + }, + { + "farm": "6", + "id": "5856172972", + "isfamily": "0", + "isfriend": "0", + "ispublic": "1", + "owner": "51249875@N03", + "secret": "6c6887347c", + "server": "5192", + "title": "watermarked-cats" + }, + { + "farm": "6", + "id": "5856168328", + "isfamily": "0", + "isfriend": "0", + "ispublic": "1", + "owner": "32021554@N04", + "secret": "0c1cfdf64c", + "server": "5078", + "title": "7020 mandy cat" + }, + { + "farm": "3", + "id": "5856171774", + "isfamily": "0", + "isfriend": "0", + "ispublic": "1", + "owner": "32021554@N04", + "secret": "7f5a3180ab", + "server": "2696", + "title": "7448 bobby cat" + } + ] + } + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/jsoniq.jq b/plugins/node_modules/ace/demo/kitchen-sink/docs/jsoniq.jq new file mode 100644 index 00000000..30404ce4 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/jsoniq.jq @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/jsp.jsp b/plugins/node_modules/ace/demo/kitchen-sink/docs/jsp.jsp new file mode 100644 index 00000000..43fbb835 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/jsp.jsp @@ -0,0 +1,46 @@ +<html> +<body> + <script> + var x = "abc"; + function y { + } + </script> + <style> + .class { + background: #124356; + } + </style> + + <p> + Today's date: <%= (new java.util.Date()).toLocaleString()%> + </p> + <%! int i = 0; %> + <jsp:declaration> + int j = 10; + </jsp:declaration> + + <%-- This is JSP comment --%> + <%@ directive attribute="value" %> + + <h2>Select Languages:</h2> + + <form ACTION="jspCheckBox.jsp"> + <input type="checkbox" name="id" value="Java"> Java<BR> + <input type="checkbox" name="id" value=".NET"> .NET<BR> + <input type="checkbox" name="id" value="PHP"> PHP<BR> + <input type="checkbox" name="id" value="C/C++"> C/C++<BR> + <input type="checkbox" name="id" value="PERL"> PERL <BR> + <input type="submit" value="Submit"> + </form> + + <% + String select[] = request.getParameterValues("id"); + if (select != null && select.length != 0) { + out.println("You have selected: "); + for (int i = 0; i < select.length; i++) { + out.println(select[i]); + } + } + %> +</body> +</html> \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/jsx.jsx b/plugins/node_modules/ace/demo/kitchen-sink/docs/jsx.jsx new file mode 100644 index 00000000..fbbeb662 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/jsx.jsx @@ -0,0 +1,9 @@ +/*EXPECTED +hello world! +*/ +class Test { + static function run() : void { + // console.log("hello world!"); + log "hello world!"; + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/julia.jl b/plugins/node_modules/ace/demo/kitchen-sink/docs/julia.jl new file mode 100644 index 00000000..f558ae22 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/julia.jl @@ -0,0 +1,15 @@ +for op = (:+, :*, :&, :|, :$) + @eval ($op)(a,b,c) = ($op)(($op)(a,b),c) +end + +v = α'; +function g(x,y) + return x * y + x + y +end + +cd("data") do + open("outfile", "w") do f + write(f, data) + end +end diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/latex.tex b/plugins/node_modules/ace/demo/kitchen-sink/docs/latex.tex new file mode 100644 index 00000000..1427168a --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/latex.tex @@ -0,0 +1,22 @@ +\usepackage{amsmath} +\title{\LaTeX} +\date{} +\begin{document} + \maketitle + \LaTeX{} is a document preparation system for the \TeX{} + typesetting program. It offers programmable desktop publishing + features and extensive facilities for automating most aspects of + typesetting and desktop publishing, including numbering and + cross-referencing, tables and figures, page layout, bibliographies, + and much more. \LaTeX{} was originally written in 1984 by Leslie + Lamport and has become the dominant method for using \TeX; few + people write in plain \TeX{} anymore. The current version is + \LaTeXe. + + % This is a comment; it will not be shown in the final output. + % The following shows a little of the typesetting power of LaTeX: + \begin{align} + E &= mc^2 \\ + m &= \frac{m_0}{\sqrt{1-\frac{v^2}{c^2}}} + \end{align} +\end{document} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/lean.lean b/plugins/node_modules/ace/demo/kitchen-sink/docs/lean.lean new file mode 100644 index 00000000..40e82753 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/lean.lean @@ -0,0 +1,9 @@ +import logic +section + variables (A : Type) (p q : A → Prop) + + example : (∀x : A, p x ∧ q x) → ∀y : A, p y := + assume H : ∀x : A, p x ∧ q x, + take y : A, + show p y, from and.elim_left (H y) +end diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/less.less b/plugins/node_modules/ace/demo/kitchen-sink/docs/less.less new file mode 100644 index 00000000..b3fdaadd --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/less.less @@ -0,0 +1,28 @@ +/* styles.less */ + +@base: #f938ab; + +.box-shadow(@style, @c) when (iscolor(@c)) { + box-shadow: @style @c; + -webkit-box-shadow: @style @c; + -moz-box-shadow: @style @c; +} +.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) { + .box-shadow(@style, rgba(0, 0, 0, @alpha)); +} + +// Box styles +.box { + color: saturate(@base, 5%); + border-color: lighten(@base, 30%); + + div { .box-shadow(0 0 5px, 30%) } + + a { + color: @base; + + &:hover { + color: lighten(@base, 50%); + } + } +} diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/liquid.liquid b/plugins/node_modules/ace/demo/kitchen-sink/docs/liquid.liquid new file mode 100644 index 00000000..29c0b016 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/liquid.liquid @@ -0,0 +1,76 @@ +The following examples can be found in full at http://liquidmarkup.org/ + +Liquid is an extraction from the e-commerce system Shopify. +Shopify powers many thousands of e-commerce stores which all call for unique designs. +For this we developed Liquid which allows our customers complete design freedom while +maintaining the integrity of our servers. + +Liquid has been in production use since June 2006 and is now used by many other +hosted web applications. + +It was developed for usage in Ruby on Rails web applications and integrates seamlessly +as a plugin but it also works excellently as a stand alone library. + +Here's what it looks like: + + <ul id="products"> + {% for product in products %} + <li> + <h2>{{ product.title }}</h2> + Only {{ product.price | format_as_money }} + + <p>{{ product.description | prettyprint | truncate: 200 }}</p> + + </li> + {% endfor %} + </ul> + + +Some more features include: + +<h2>Filters</h2> +<p> The word "tobi" in uppercase: {{ 'tobi' | upcase }} </p> +<p>The word "tobi" has {{ 'tobi' | size }} letters! </p> +<p>Change "Hello world" to "Hi world": {{ 'Hello world' | replace: 'Hello', 'Hi' }} </p> +<p>The date today is {{ 'now' | date: "%Y %b %d" }} </p> + + +<h2>If</h2> +<p> + {% if user.name == 'tobi' or user.name == 'marc' %} + hi marc or tobi + {% endif %} +</p> + + +<h2>Case</h2> +<p> + {% case template %} + {% when 'index' %} + Welcome + {% when 'product' %} + {{ product.vendor | link_to_vendor }} / {{ product.title }} + {% else %} + {{ page_title }} + {% endcase %} +</p> + + +<h2>For Loops</h2> +<p> + {% for item in array %} + {{ item }} + {% endfor %} +</p> + + +<h2>Tables</h2> +<p> + {% tablerow item in items cols: 3 %} + {% if tablerowloop.col_first %} + First column: {{ item.variable }} + {% else %} + Different column: {{ item.variable }} + {% endif %} + {% endtablerow %} +</p> diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/lisp.lisp b/plugins/node_modules/ace/demo/kitchen-sink/docs/lisp.lisp new file mode 100644 index 00000000..e8d25558 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/lisp.lisp @@ -0,0 +1,22 @@ +(defun prompt-for-cd () + "Prompts + for CD" + (prompt-read "Title" 1.53 1 2/4 1.7 1.7e0 2.9E-4 +42 -7 #b001 #b001/100 #o777 #O777 #xabc55 #c(0 -5.6)) + (prompt-read "Artist" &rest) + (or (parse-integer (prompt-read "Rating") :junk-allowed t) 0) + (if x (format t "yes") (format t "no" nil) ;and here comment + ) 0xFFLL -23ull + ;; second line comment + '(+ 1 2) + (defvar *lines*) ; list of all lines + (position-if-not #'sys::whitespacep line :start beg)) + (quote (privet 1 2 3)) + '(hello world) + (* 5 7) + (1 2 34 5) + (:use "aaaa") + (let ((x 10) (y 20)) + (print (+ x y)) + ) LAmbDa + + "asdad\0eqweqe" \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/livescript.ls b/plugins/node_modules/ace/demo/kitchen-sink/docs/livescript.ls new file mode 100644 index 00000000..ce082b4c --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/livescript.ls @@ -0,0 +1,245 @@ +# Defines an editing mode for [Ace](http://ace.ajax.org). +# +# Open [test/ace.html](../test/ace.html) to test. + +require, exports, module <-! define \ace/mode/ls + +identifier = /(?![\d\s])[$\w\xAA-\uFFDC](?:(?!\s)[$\w\xAA-\uFFDC]|-[A-Za-z])*/$ + +exports.Mode = class LiveScriptMode extends require(\ace/mode/text)Mode + -> + @$tokenizer = + new (require \ace/tokenizer)Tokenizer LiveScriptMode.Rules + if require \ace/mode/matching_brace_outdent + @$outdent = new that.MatchingBraceOutdent + + indenter = // (? + : [({[=:] + | [-~]> + | \b (?: e(?:lse|xport) | d(?:o|efault) | t(?:ry|hen) | finally | + import (?:\s* all)? | const | var | + let | new | catch (?:\s* #identifier)? ) + ) \s* $ // + + getNextLineIndent: (state, line, tab) -> + indent = @$getIndent line + {tokens} = @$tokenizer.getLineTokens line, state + unless tokens.length and tokens[*-1]type is \comment + indent += tab if state is \start and indenter.test line + indent + + toggleCommentLines: (state, doc, startRow, endRow) -> + comment = /^(\s*)#/; range = new (require \ace/range)Range 0 0 0 0 + for i from startRow to endRow + if out = comment.test line = doc.getLine i + then line.=replace comment, \$1 + else line.=replace /^\s*/ \$&# + range.end.row = range.start.row = i + range.end.column = line.length + 1 + doc.replace range, line + 1 - out * 2 + + checkOutdent: (state, line, input) -> @$outdent?checkOutdent line, input + + autoOutdent: (state, doc, row) -> @$outdent?autoOutdent doc, row + +### Highlight Rules + +keywordend = /(?![$\w]|-[A-Za-z]|\s*:(?![:=]))/$ +stringfill = token: \string, regex: '.+' + +LiveScriptMode.Rules = + start: + * token: \keyword + regex: //(? + :t(?:h(?:is|row|en)|ry|ypeof!?) + |c(?:on(?:tinue|st)|a(?:se|tch)|lass) + |i(?:n(?:stanceof)?|mp(?:ort(?:\s+all)?|lements)|[fs]) + |d(?:e(?:fault|lete|bugger)|o) + |f(?:or(?:\s+own)?|inally|unction) + |s(?:uper|witch) + |e(?:lse|x(?:tends|port)|val) + |a(?:nd|rguments) + |n(?:ew|ot) + |un(?:less|til) + |w(?:hile|ith) + |o[fr]|return|break|let|var|loop + )//$ + keywordend + + * token: \constant.language + regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend + + * token: \invalid.illegal + regex: '(? + :p(?:ackage|r(?:ivate|otected)|ublic) + |i(?:mplements|nterface) + |enum|static|yield + )' + keywordend + + * token: \language.support.class + regex: '(? + :R(?:e(?:gExp|ferenceError)|angeError) + |S(?:tring|yntaxError) + |E(?:rror|valError) + |Array|Boolean|Date|Function|Number|Object|TypeError|URIError + )' + keywordend + + * token: \language.support.function + regex: '(? + :is(?:NaN|Finite) + |parse(?:Int|Float) + |Math|JSON + |(?:en|de)codeURI(?:Component)? + )' + keywordend + + * token: \variable.language + regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend + + * token: \identifier + regex: identifier + /\s*:(?![:=])/$ + + * token: \variable + regex: identifier + + * token: \keyword.operator + regex: /(?:\.{3}|\s+\?)/$ + + * token: \keyword.variable + regex: /(?:@+|::|\.\.)/$ + next : \key + + * token: \keyword.operator + regex: /\.\s*/$ + next : \key + + * token: \string + regex: /\\\S[^\s,;)}\]]*/$ + + * token: \string.doc + regex: \''' + next : \qdoc + + * token: \string.doc + regex: \""" + next : \qqdoc + + * token: \string + regex: \' + next : \qstring + + * token: \string + regex: \" + next : \qqstring + + * token: \string + regex: \` + next : \js + + * token: \string + regex: '<\\[' + next : \words + + * token: \string.regex + regex: \// + next : \heregex + + * token: \comment.doc + regex: '/\\*' + next : \comment + + * token: \comment + regex: '#.*' + + * token: \string.regex + regex: // + /(?: [^ [ / \n \\ ]* + (?: (?: \\. + | \[ [^\]\n\\]* (?:\\.[^\]\n\\]*)* \] + ) [^ [ / \n \\ ]* + )* + )/ [gimy$]{0,4} + //$ + next : \key + + * token: \constant.numeric + regex: '(?:0x[\\da-fA-F][\\da-fA-F_]* + |(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]* + |(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*) + (?:e[+-]?\\d[\\d_]*)?[\\w$]*)' + + * token: \lparen + regex: '[({[]' + + * token: \rparen + regex: '[)}\\]]' + next : \key + + * token: \keyword.operator + regex: \\\S+ + + * token: \text + regex: \\\s+ + + heregex: + * token: \string.regex + regex: '.*?//[gimy$?]{0,4}' + next : \start + * token: \string.regex + regex: '\\s*#{' + * token: \comment.regex + regex: '\\s+(?:#.*)?' + * token: \string.regex + regex: '\\S+' + + key: + * token: \keyword.operator + regex: '[.?@!]+' + * token: \identifier + regex: identifier + next : \start + * token: \text + regex: '.' + next : \start + + comment: + * token: \comment.doc + regex: '.*?\\*/' + next : \start + * token: \comment.doc + regex: '.+' + + qdoc: + token: \string + regex: ".*?'''" + next : \key + stringfill + + qqdoc: + token: \string + regex: '.*?"""' + next : \key + stringfill + + qstring: + token: \string + regex: /[^\\']*(?:\\.[^\\']*)*'/$ + next : \key + stringfill + + qqstring: + token: \string + regex: /[^\\"]*(?:\\.[^\\"]*)*"/$ + next : \key + stringfill + + js: + token: \string + regex: /[^\\`]*(?:\\.[^\\`]*)*`/$ + next : \key + stringfill + + words: + token: \string + regex: '.*?\\]>' + next : \key + stringfill diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/logiql.logic b/plugins/node_modules/ace/demo/kitchen-sink/docs/logiql.logic new file mode 100644 index 00000000..910862d7 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/logiql.logic @@ -0,0 +1,16 @@ +// ancestors +parentof("douglas", "john"). +parentof("john", "bob"). +parentof("bob", "ebbon"). + +parentof("douglas", "jane"). +parentof("jane", "jan"). + +ancestorof(A, B) <- parentof(A, B). +ancestorof(A, C) <- ancestorof(A, B), parentof(B,C). + +grandparentof(A, B) <- parentof(A, C), parentof(C, B). + +cousins(A,B) <- grandparentof(C,A), grandparentof(C,B). + +parentof[`arg](A, B) -> int[32](A), !string(B). \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/lsl.lsl b/plugins/node_modules/ace/demo/kitchen-sink/docs/lsl.lsl new file mode 100644 index 00000000..baf06f08 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/lsl.lsl @@ -0,0 +1,75 @@ +/* + Testing syntax highlighting + of Ace Editor + for the Linden Scripting Language +*/ + +integer someIntNormal = 3672; +integer someIntHex = 0x00000000; +integer someIntMath = PI_BY_TWO; + +integer event = 5673; // invalid.illegal + +key someKeyTexture = TEXTURE_DEFAULT; +string someStringSpecial = EOF; + +some_user_defined_function_without_return_type(string inputAsString) +{ + llSay(PUBLIC_CHANNEL, inputAsString); +} + +string user_defined_function_returning_a_string(key inputAsKey) +{ + return (string)inputAsKey; +} + +default +{ + state_entry() + { + key someKey = NULL_KEY; + someKey = llGetOwner(); + + string someString = user_defined_function_returning_a_string(someKey); + + some_user_defined_function_without_return_type(someString); + } + + touch_start(integer num_detected) + { + list agentsInRegion = llGetAgentList(AGENT_LIST_REGION, []); + integer numOfAgents = llGetListLength(agentsInRegion); + + integer index; // defaults to 0 + for (; index <= numOfAgents - 1; index++) // for each agent in region + { + llRegionSayTo(llList2Key(agentsInRegion, index), PUBLIC_CHANNEL, "Hello, Avatar!"); + } + } + + touch_end(integer num_detected) + { + someIntNormal = 3672; + someIntHex = 0x00000000; + someIntMath = PI_BY_TWO; + + event = 5673; // invalid.illegal + + someKeyTexture = TEXTURE_DEFAULT; + someStringSpecial = EOF; + + llSetInventoryPermMask("some item", MASK_NEXT, PERM_ALL); // reserved.godmode + + llWhisper(PUBLIC_CHANNEL, "Leaving \"default\" now..."); + state other; + } +} + +state other +{ + state_entry() + { + llWhisper(PUBLIC_CHANNEL, "Entered \"state other\", returning to \"default\" again..."); + state default; + } +} diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/lua.lua b/plugins/node_modules/ace/demo/kitchen-sink/docs/lua.lua new file mode 100644 index 00000000..6c927197 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/lua.lua @@ -0,0 +1,38 @@ +--[[-- +num_args takes in 5.1 byte code and extracts the number of arguments +from its function header. +--]]-- + +function int(t) + return t:byte(1)+t:byte(2)*0x100+t:byte(3)*0x10000+t:byte(4)*0x1000000 +end + +function num_args(func) + local dump = string.dump(func) + local offset, cursor = int(dump:sub(13)), offset + 26 + --Get the params and var flag (whether there's a ... in the param) + return dump:sub(cursor):byte(), dump:sub(cursor+1):byte() +end + +-- Usage: +num_args(function(a,b,c,d, ...) end) -- return 4, 7 + +-- Python styled string format operator +local gm = debug.getmetatable("") + +gm.__mod=function(self, other) + if type(other) ~= "table" then other = {other} end + for i,v in ipairs(other) do other[i] = tostring(v) end + return self:format(unpack(other)) +end + +print([===[ + blah blah %s, (%d %d) +]===]%{"blah", num_args(int)}) + +--[=[-- +table.maxn is deprecated, use # instead. +--]=]-- +print(table.maxn{1,2,[4]=4,[8]=8) -- outputs 8 instead of 2 + +print(5 --[[ blah ]]) \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/luapage.lp b/plugins/node_modules/ace/demo/kitchen-sink/docs/luapage.lp new file mode 100644 index 00000000..f70c992b --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/luapage.lp @@ -0,0 +1,71 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html> +<% --[[-- + index.lp from the Kepler Project's LuaDoc HTML doclet. + http://keplerproject.github.com/luadoc/ +--]] %> +<head> + <title>Reference + " type="text/css" /> + + + + +
+ +
+ +
+
+
+ +
+ + + +
+ + +<%if not options.nomodules and #doc.modules > 0 then%> +

Modules

+ + +<%for _, modulename in ipairs(doc.modules) do%> + + + + +<%end%> +
<%=modulename%><%=doc.modules[modulename].summary%>
+<%end%> + + + +<%if not options.nofiles and #doc.files > 0 then%> +

Files

+ + +<%for _, filepath in ipairs(doc.files) do%> + + + + +<%end%> +
<%=filepath%>
+<%end%> + +
+ +
+ +
+

Valid XHTML 1.0!

+
+ +
+ + diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/lucene.lucene b/plugins/node_modules/ace/demo/kitchen-sink/docs/lucene.lucene new file mode 100644 index 00000000..7ac4b90b --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/lucene.lucene @@ -0,0 +1 @@ +(title:"foo bar" AND body:"quick fox") OR title:fox \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/markdown.md b/plugins/node_modules/ace/demo/kitchen-sink/docs/markdown.md new file mode 100644 index 00000000..63e96eab --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/markdown.md @@ -0,0 +1,186 @@ +Ace (Ajax.org Cloud9 Editor) +============================ + +Ace is a standalone code editor written in JavaScript. Our goal is to create a browser based editor that matches and extends the features, usability and performance of existing native editors such as TextMate, Vim or Eclipse. It can be easily embedded in any web page or JavaScript application. Ace is developed as the primary editor for [Cloud9 IDE](http://www.cloud9ide.com/) and the successor of the Mozilla Skywriter (Bespin) Project. + +Features +-------- + +* Syntax highlighting +* Automatic indent and outdent +* An optional command line +* Handles huge documents (100,000 lines and more are no problem) +* Fully customizable key bindings including VI and Emacs modes +* Themes (TextMate themes can be imported) +* Search and replace with regular expressions +* Highlight matching parentheses +* Toggle between soft tabs and real tabs +* Displays hidden characters +* Drag and drop text using the mouse +* Line wrapping +* Unstructured / user code folding +* Live syntax checker (currently JavaScript/CoffeeScript) + +Take Ace for a spin! +-------------------- + +Check out the Ace live [demo](http://ajaxorg.github.com/ace/) or get a [Cloud9 IDE account](http://run.cloud9ide.com) to experience Ace while editing one of your own GitHub projects. + +If you want, you can use Ace as a textarea replacement thanks to the [Ace Bookmarklet](http://ajaxorg.github.com/ace/build/textarea/editor.html). + +History +------- + +Previously known as “Bespin†and “Skywriter†it’s now known as Ace (Ajax.org Cloud9 Editor)! Bespin and Ace started as two independent projects, both aiming to build a no-compromise code editor component for the web. Bespin started as part of Mozilla Labs and was based on the canvas tag, while Ace is the Editor component of the Cloud9 IDE and is using the DOM for rendering. After the release of Ace at JSConf.eu 2010 in Berlin the Skywriter team decided to merge Ace with a simplified version of Skywriter's plugin system and some of Skywriter's extensibility points. All these changes have been merged back to Ace. Both Ajax.org and Mozilla are actively developing and maintaining Ace. + +Getting the code +---------------- + +Ace is a community project. We actively encourage and support contributions. The Ace source code is hosted on GitHub. It is released under the BSD License. This license is very simple, and is friendly to all kinds of projects, whether open source or not. Take charge of your editor and add your favorite language highlighting and keybindings! + +```bash + git clone git://github.com/ajaxorg/ace.git + cd ace + git submodule update --init --recursive +``` + +Embedding Ace +------------- + +Ace can be easily embedded into any existing web page. The Ace git repository ships with a pre-packaged version of Ace inside of the `build` directory. The same packaged files are also available as a separate [download](https://github.com/ajaxorg/ace/downloads). Simply copy the contents of the `src` subdirectory somewhere into your project and take a look at the included demos of how to use Ace. + +The easiest version is simply: + +```html +
some text
+ + +``` + +With "editor" being the id of the DOM element, which should be converted to an editor. Note that this element must be explicitly sized and positioned `absolute` or `relative` for Ace to work. e.g. + +```css + #editor { + position: absolute; + width: 500px; + height: 400px; + } +``` + +To change the theme simply include the Theme's JavaScript file + +```html + +``` + +and configure the editor to use the theme: + +```javascript + editor.setTheme("ace/theme/twilight"); +``` + +By default the editor only supports plain text mode; many other languages are available as separate modules. After including the mode's JavaScript file: + +```html + +``` + +Then the mode can be used like this: + +```javascript + var JavaScriptMode = require("ace/mode/javascript").Mode; + editor.getSession().setMode(new JavaScriptMode()); +``` + +Documentation +------------- + +You find a lot more sample code in the [demo app](https://github.com/ajaxorg/ace/blob/master/demo/demo.js). + +There is also some documentation on the [wiki page](https://github.com/ajaxorg/ace/wiki). + +If you still need help, feel free to drop a mail on the [ace mailing list](http://groups.google.com/group/ace-discuss). + +Running Ace +----------- + +After the checkout Ace works out of the box. No build step is required. Open 'editor.html' in any browser except Google Chrome. Google Chrome doesn't allow XMLHTTPRequests from files loaded from disc (i.e. with a file:/// URL). To open Ace in Chrome simply start the bundled mini HTTP server: + +```bash + ./static.py +``` + +Or using Node.JS + +```bash + ./static.js +``` + +The editor can then be opened at http://localhost:8888/index.html. + +Package Ace +----------- + +To package Ace we use the dryice build tool developed by the Mozilla Skywriter team. Before you can build you need to make sure that the submodules are up to date. + +```bash + git submodule update --init --recursive +``` + +Afterwards Ace can be built by calling + +```bash + ./Makefile.dryice.js normal +``` + +The packaged Ace will be put in the 'build' folder. + +To build the bookmarklet version execute + +```bash + ./Makefile.dryice.js bm +``` + +Running the Unit Tests +---------------------- + +The Ace unit tests run on node.js. Before the first run a couple of node modules have to be installed. The easiest way to do this is by using the node package manager (npm). In the Ace base directory simply call + +```bash + npm link . +``` + +To run the tests call: + +```bash + node lib/ace/test/all.js +``` + +You can also run the tests in your browser by serving: + + http://localhost:8888/lib/ace/test/tests.html + +This makes debugging failing tests way more easier. + +Contributing +------------ + +Ace wouldn't be what it is without contributions! Feel free to fork and improve/enhance Ace any way you want. If you feel that the editor or the Ace community will benefit from your changes, please open a pull request. To protect the interests of the Ace contributors and users we require contributors to sign a Contributors License Agreement (CLA) before we pull the changes into the main repository. Our CLA is the simplest of agreements, requiring that the contributions you make to an ajax.org project are only those you're allowed to make. This helps us significantly reduce future legal risk for everyone involved. It is easy, helps everyone, takes ten minutes, and only needs to be completed once. There are two versions of the agreement: + +1. [The Individual CLA](https://github.com/ajaxorg/ace/raw/master/doc/Contributor_License_Agreement-v2.pdf): use this version if you're working on an ajax.org in your spare time, or can clearly claim ownership of copyright in what you'll be submitting. +2. [The Corporate CLA](https://github.com/ajaxorg/ace/raw/master/doc/Corporate_Contributor_License_Agreement-v2.pdf): have your corporate lawyer review and submit this if your company is going to be contributing to ajax.org projects + +If you want to contribute to an ajax.org project please print the CLA and fill it out and sign it. Then either send it by snail mail or fax to us or send it back scanned (or as a photo) by email. + +Email: fabian.jakobs@web.de + +Fax: +31 (0) 206388953 + +Address: Ajax.org B.V. + Keizersgracht 241 + 1016 EA, Amsterdam + the Netherlands \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/mask.mask b/plugins/node_modules/ace/demo/kitchen-sink/docs/mask.mask new file mode 100644 index 00000000..85a9e6c2 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/mask.mask @@ -0,0 +1,52 @@ +/* Mask Syntax Demo */ + +div > ' Test ~[name]'; + +define :userProfile { + header { + h4 > @title; + button.close; + } +} + +:userProfile { + @title > ' Hello ~[: username.toUpperCase()]' +} + +style { + html, body { + background: url('name.png') 0 0 no-repeat; + } +} + +button { + event click (e) { + this.textContent = `name ${e.clientX} !`; + } +} + +md > """ + +- div +- span + +Hello + +[one](http://google.com) + +"""; + + +header .foo > 'Heading' + +button .baz x-signal='click: test' disabled > " + Hello, + world + \"Buddy\" +" + +var a = { + name: `name ${window.innerWidth}` +}; + +span .foo > "~[bind: a.name]" \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/matlab.matlab b/plugins/node_modules/ace/demo/kitchen-sink/docs/matlab.matlab new file mode 100644 index 00000000..b2ca44d5 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/matlab.matlab @@ -0,0 +1,17 @@ +%{ + %{ + Ace Matlab demo + %} +%} + +classdef hello + methods + function greet(this) + disp('Hello!') % say hi + end + end +end + +% transpose +a = [ 'x''y', "x\n\ + y", 1' ]' + 2' \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/maze.mz b/plugins/node_modules/ace/demo/kitchen-sink/docs/maze.mz new file mode 100644 index 00000000..72c140e2 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/maze.mz @@ -0,0 +1,23 @@ +## ## () ## ^^ ## ## ## ## +## H1 C2 S1 <> S2 H2 DN ## +## %U <> %D *2 %L IZ .. ## +## ## ## .. ## DN *3 ## ## +## ## ## %R C1 IZ () ## ## +## ## ## ## >/ *1 +## () *3 *1 %L () + + +// Set divisor and dividend +S1-> = 9 +S2-> = 24 + +// Holding cells +H1-> IF *1 THEN %R ELSE %N +H2-> IF *2 THEN %R ELSE %N + +// Arithmetic +DN-> -= 1 +IZ-> IF <= 0 THEN %D ELSE %U + +C1-> IF *3 THEN %D ELSE %R +C2-> IF *3 THEN %U ELSE %D diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/mel.mel b/plugins/node_modules/ace/demo/kitchen-sink/docs/mel.mel new file mode 100644 index 00000000..63dc14d6 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/mel.mel @@ -0,0 +1,33 @@ +// animated duplicates, instances script +proc animatedDuplication (int $rangeStart, int $rangeEnd, int $numOfDuplicates, int $duplicateOrInstance) +{ + int $range_start = $rangeStart; + int $range_end = $rangeEnd; + int $num_of_duplicates = $numOfDuplicates; + int $step_size = ($range_end - $range_start) / $num_of_duplicates; + int $i = 0; + int $temp; + + currentTime $range_start; // set to range start + + string $selectedObjects[]; // to store selected objects + $selectedObjects = `ls -sl`; // store selected objects + select $selectedObjects; + + while ($i <= $num_of_duplicates) + { + $temp = $range_start + ($step_size * $i); + currentTime ($temp); + // seleced the objects to duplicate or instance + select $selectedObjects; + if($duplicateOrInstance == 0) + { + duplicate; + } + else + { + instance; + } + $i++; + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/mushcode.mc b/plugins/node_modules/ace/demo/kitchen-sink/docs/mushcode.mc new file mode 100644 index 00000000..6861f955 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/mushcode.mc @@ -0,0 +1,8 @@ +@create phone +&pickup phone=$pick up:@ifelse [u(is,u(mode),ICC)]={@pemit %#=You pick up the [fullname(me)].[set(me,PHONER:%#)][set(me,MODE:CIP)][set([u(INCOMING)],CONNECTED:[num(me)])][set(me,CONNECTED:[u(INCOMING)])]%r[showpicture(PICPICKUP)]%rUse '[color(green,black,psay )]' (or '[color(green,black,p )]') to talk into the phone.;@oemit %#=%N picks up the [fullname(me)].},{@pemit %#=You pick up the phone but no one is there. You hear a dialtone and then hang up. [play(u(DIALTONE))];@oemit %#=%N picks up the phone, but no one is on the other end.} +&ringfun phone=[ifelse(eq(comp([u(%0/ringtone)],off),0),[color(black,cyan,INCOMING CALL FROM %1)],[play([switch([u(%0/ringtone)],1,[u(%0/ringtone1)],2,[u(%0/ringtone2)],3,[u(%0/ringtone3)],4,[u(%0/ringtone4)],5,[u(%0/ringtone5)],6,[u(%0/ringtone6)],7,[u(%0/ringtone7)],8,[u(%0/ringtone8)],9,[u(%0/ringtone9)],custom,[u(%0/customtone)],vibrate,[u(%0/vibrate)])])] +&ringloop phone=@switch [u(ringstate)]=1,{@emit [setq(q,[u(connecting)])][set(%qq,rangs:0)][set(%qq,mode:WFC)][set(%qq,INCOMING:)];@ifelse [u(%qq/HASVMB)]={@tr me/ROUTEVMB=[u(connecting)];},{@pemit %#=[u(MSGCNC)];}},2,{@pemit %#=The call is connected.[setq(q,[u(CONNECTING)])][set(me,CONNECTED:%qq)][set(%qq,CONNECTED:[num(me)])][set(%qq,MODE:CIP)];@tr me/ciploop;@tr %qq/ciploop;},3,{@emit On [fullname(me)]'s earpiece you hear a ringing sound.[play(u(LINETONE))];@tr me/ringhere;@increment [u(connecting)]/RANGS;@wait 5={@tr me/ringloop};},4,{} +&ringstate phone=[setq(q,u(connecting))][setq(1,[gt(u(%qq/rangs),sub(u(%qq/rings),1))])][setq(2,[and(u(is,u(%qq/MODE),CIP),u(is,u(%qq/INCOMING),[num(me)]))][setq(3,[u(is,u(%qq/MODE),ICC)])][ifelse(%q1,1,ifelse(%q2,2,ifelse(%q3,3,4)))] +;comment +@@(comment) +say [time()] diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/mysql.mysql b/plugins/node_modules/ace/demo/kitchen-sink/docs/mysql.mysql new file mode 100644 index 00000000..30404ce4 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/mysql.mysql @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/objectivec.m b/plugins/node_modules/ace/demo/kitchen-sink/docs/objectivec.m new file mode 100644 index 00000000..1728dfe5 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/objectivec.m @@ -0,0 +1,104 @@ +@protocol Printing: someParent +-(void) print; +@end + +@interface Fraction: NSObject { + int numerator; + int denominator; +} +@end + +@"blah\8" @"a\222sd\d" @"\faw\"\? \' \4 n\\" @"\56" +@"\xSF42" + +-(NSDecimalNumber*)addCount:(id)addObject{ + +return [count decimalNumberByAdding:addObject.count]; + +} + + NS_DURING NS_HANDLER NS_ENDHANDLER + +@try { + if (argc > 1) { + @throw [NSException exceptionWithName:@"Throwing a test exception" reason:@"Testing the @throw directive." userInfo:nil]; + } +} +@catch (id theException) { + NSLog(@"%@", theException); + result = 1 ; +} +@finally { + NSLog(@"This always happens."); + result += 2 ; +} + + @synchronized(lock) { + NSLog(@"Hello World"); + } + +struct { @defs( NSObject) } + +char *enc1 = @encode(int); + + IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class + + + @class @protocol + +@public + // instance variables +@package + // instance variables +@protected + // instance variables +@private + // instance variables + + YES NO Nil nil +NSApp() +NSRectToCGRect (Protocol ProtocolFromString:"NSTableViewDelegate")) + +[SPPoint pointFromCGPoint:self.position] + +NSRoundDownToMultipleOfPageSize + +#import + +int main( int argc, const char *argv[] ) { + printf( "hello world\n" ); + return 0; +} + +NSChangeSpelling + +@"0 != SUBQUERY(image, $x, 0 != SUBQUERY($x.bookmarkItems, $y, $y.@count == 0).@count).@count" + +@selector(lowercaseString) @selector(uppercaseString:) + +NSFetchRequest *localRequest = [[NSFetchRequest alloc] init]; +localRequest.entity = [NSEntityDescription entityForName:@"VNSource" inManagedObjectContext:context]; +localRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"resolution" ascending:YES]]; +NSPredicate *predicate = [NSPredicate predicateWithFormat:@"0 != SUBQUERY(image, $x, 0 != SUBQUERY($x.bookmarkItems, $y, $y.@count == 0).@count).@count"]; +[NSPredicate predicateWithFormat:] +NSString *predicateString = [NSString stringWithFormat:@"SELF beginsWith[cd] %@", searchString]; +NSPredicate *pred = [NSPredicate predicateWithFormat:predicateString]; +NSArray *filteredKeys = [[myMutableDictionary allKeys] filteredArrayUsingPredicate:pred]; + +localRequest.predicate = [NSPredicate predicateWithFormat:@"whichChart = %@" argumentArray: listChartToDownload]; +localRequest.fetchBatchSize = 100; +arrayRequest = [context executeFetchRequest:localRequest error:&error1]; + +[localRequest release]; + +#ifndef Nil +#define Nil __DARWIN_NULL /* id of Nil class */ +#endif + +@implementation MyObject +- (unsigned int)areaOfWidth:(unsigned int)width + height:(unsigned int)height +{ + return width*height; +} +@end diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/ocaml.ml b/plugins/node_modules/ace/demo/kitchen-sink/docs/ocaml.ml new file mode 100644 index 00000000..85e6eba7 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/ocaml.ml @@ -0,0 +1,18 @@ +(* + * Example of early return implementation taken from + * http://ocaml.janestreet.com/?q=node/91 + *) + +let with_return (type t) (f : _ -> t) = + let module M = + struct exception Return of t end + in + let return = { return = (fun x -> raise (M.Return x)); } in + try f return with M.Return x -> x + + +(* Function that uses the 'early return' functionality provided by `with_return` *) +let sum_until_first_negative list = + with_return (fun r -> + List.fold list ~init:0 ~f:(fun acc x -> + if x >= 0 then acc + x else r.return acc)) \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/pascal.pas b/plugins/node_modules/ace/demo/kitchen-sink/docs/pascal.pas new file mode 100644 index 00000000..7a4a7fc6 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/pascal.pas @@ -0,0 +1,48 @@ +(***************************************************************************** + * A simple bubble sort program. Reads integers, one per line, and prints * + * them out in sorted order. Blows up if there are more than 49. * + *****************************************************************************) +PROGRAM Sort(input, output); + CONST + (* Max array size. *) + MaxElts = 50; + TYPE + (* Type of the element array. *) + IntArrType = ARRAY [1..MaxElts] OF Integer; + + VAR + (* Indexes, exchange temp, array size. *) + i, j, tmp, size: integer; + + (* Array of ints *) + arr: IntArrType; + + (* Read in the integers. *) + PROCEDURE ReadArr(VAR size: Integer; VAR a: IntArrType); + BEGIN + size := 1; + WHILE NOT eof DO BEGIN + readln(a[size]); + IF NOT eof THEN + size := size + 1 + END + END; + + BEGIN + (* Read *) + ReadArr(size, arr); + + (* Sort using bubble sort. *) + FOR i := size - 1 DOWNTO 1 DO + FOR j := 1 TO i DO + IF arr[j] > arr[j + 1] THEN BEGIN + tmp := arr[j]; + arr[j] := arr[j + 1]; + arr[j + 1] := tmp; + END; + + (* Print. *) + FOR i := 1 TO size DO + writeln(arr[i]) + END. + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/perl.pl b/plugins/node_modules/ace/demo/kitchen-sink/docs/perl.pl new file mode 100644 index 00000000..d6a332e2 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/perl.pl @@ -0,0 +1,37 @@ +#!/usr/bin/perl +=begin + perl example code for Ace +=cut + +use strict; +use warnings; +my $num_primes = 0; +my @primes; + +# Put 2 as the first prime so we won't have an empty array +$primes[$num_primes] = 2; +$num_primes++; + +MAIN_LOOP: +for my $number_to_check (3 .. 200) +{ + for my $p (0 .. ($num_primes-1)) + { + if ($number_to_check % $primes[$p] == 0) + { + next MAIN_LOOP; + } + } + + # If we reached this point it means $number_to_check is not + # divisable by any prime number that came before it. + $primes[$num_primes] = $number_to_check; + $num_primes++; +} + +for my $p (0 .. ($num_primes-1)) +{ + print $primes[$p], ", "; +} +print "\n"; + diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/pgsql.pgsql b/plugins/node_modules/ace/demo/kitchen-sink/docs/pgsql.pgsql new file mode 100644 index 00000000..ef265cdc --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/pgsql.pgsql @@ -0,0 +1,118 @@ + +BEGIN; + +/** +* Samples from PostgreSQL src/tutorial/basics.source +*/ +CREATE TABLE weather ( + city varchar(80), + temp_lo int, -- low temperature + temp_hi int, -- high temperature + prcp real, -- precipitation + "date" date +); + +CREATE TABLE cities ( + name varchar(80), + location point +); + + +INSERT INTO weather + VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27'); + +INSERT INTO cities + VALUES ('San Francisco', '(-194.0, 53.0)'); + +INSERT INTO weather (city, temp_lo, temp_hi, prcp, "date") + VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29'); + +INSERT INTO weather (date, city, temp_hi, temp_lo) + VALUES ('1994-11-29', 'Hayward', 54, 37); + + +SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, "date" FROM weather; + +SELECT city, temp_lo, temp_hi, prcp, "date", location + FROM weather, cities + WHERE city = name; + + + +/** +* Dollar quotes starting at the end of the line are colored as SQL unless +* a special language tag is used. Dollar quote syntax coloring is implemented +* for Perl, Python, JavaScript, and Json. +*/ +create or replace function blob_content_chunked( + in p_data bytea, + in p_chunk integer) +returns setof bytea as $$ +-- Still SQL comments +declare + v_size integer = octet_length(p_data); +begin + for i in 1..v_size by p_chunk loop + return next substring(p_data from i for p_chunk); + end loop; +end; +$$ language plpgsql stable; + + +-- pl/perl +CREATE FUNCTION perl_max (integer, integer) RETURNS integer AS $perl$ + # perl comment... + my ($x,$y) = @_; + if (! defined $x) { + if (! defined $y) { return undef; } + return $y; + } + if (! defined $y) { return $x; } + if ($x > $y) { return $x; } + return $y; +$perl$ LANGUAGE plperl; + +-- pl/python +CREATE FUNCTION usesavedplan() RETURNS trigger AS $python$ + # python comment... + if SD.has_key("plan"): + plan = SD["plan"] + else: + plan = plpy.prepare("SELECT 1") + SD["plan"] = plan +$python$ LANGUAGE plpythonu; + +-- pl/v8 (javascript) +CREATE FUNCTION plv8_test(keys text[], vals text[]) RETURNS text AS $javascript$ +var o = {}; +for(var i=0; i \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/plaintext.txt b/plugins/node_modules/ace/demo/kitchen-sink/docs/plaintext.txt new file mode 100644 index 00000000..37bb4cca --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/plaintext.txt @@ -0,0 +1,11 @@ +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/powershell.ps1 b/plugins/node_modules/ace/demo/kitchen-sink/docs/powershell.ps1 new file mode 100644 index 00000000..f3a70bc1 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/powershell.ps1 @@ -0,0 +1,24 @@ +# This is a simple comment +function Hello($name) { + Write-host "Hello $name" +} + +function add($left, $right=4) { + if ($right -ne 4) { + return $left + } elseif ($left -eq $null -and $right -eq 2) { + return 3 + } else { + return 2 + } +} + +$number = 1 + 2; +$number += 3 + +Write-Host Hello -name "World" + +$an_array = @(1, 2, 3) +$a_hash = @{"something" = "something else"} + +& notepad .\readme.md diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/praat.praat b/plugins/node_modules/ace/demo/kitchen-sink/docs/praat.praat new file mode 100644 index 00000000..3700ae6f --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/praat.praat @@ -0,0 +1,148 @@ +form Highlighter test + sentence My_sentence This should all be a string + text My_text This should also all be a string + word My_word Only the first word is a string, the rest is invalid + boolean Binary 1 + boolean Text no + boolean Quoted "yes" + comment This should be a string + real left_Range -123.6 + positive right_Range_max 3.3 + integer Int 4 + natural Nat 4 +endform + +# External scripts +include /path/to/file +runScript: "/path/to/file" +execute /path/to/file + +stopwatch + +# old-style procedure call +call oldStyle "quoted" 2 unquoted string +assert oldStyle.local = 1 + +# New-style procedure call with parens +@newStyle("quoted", 2, "quoted string") +if praatVersion >= 5364 + # New-style procedure call with colon + @newStyle: "quoted", 2, "quoted string" +endif + +# if-block with built-in variables +if windows + # We are on Windows +elsif unix = 1 or !macintosh + exitScript: "We are on Linux" +else macintosh == 1 + exit We are on Mac +endif + +# inline if with inline comment +var = if macintosh = 1 then 0 else 1 fi ; This is an inline comment + +# for-loop with explicit from using local variable +# and paren-style function calls and variable interpolation +n = numberOfSelected("Sound") +for i from newStyle.local to n + sound'i' = selected("Sound", i) + sound[i] = sound'i' +endfor + +for i from 1 to n + # Different styles of object selection + select sound'i' + sound = selected() + sound$ = selected$("Sound") + select Sound 'sound$' + selectObject(sound[i]) + selectObject: sound + + # Pause commands + beginPause("Viewing " + sound$) + if i > 1 + button = endPause("Stop", "Previous", + ...if i = total_sounds then "Finish" else "Next" fi, + ...3, 1) + else + button = endPause("Stop", + ...if i = total_sounds then "Finish" else "Next" fi, + ...2, 1) + endif + editor_name$ = if total_textgrids then "TextGrid " else "Sound " fi + name$ + nocheck editor 'editor_name$' + nocheck Close + nocheck endeditor + + # New-style standalone command call + Rename: "SomeName" + + # Command call with assignment + duration = Get total duration + + # Multi-line command with modifier + pitch = noprogress To Pitch (ac): 0, 75, 15, "no", + ...0.03, 0.45, 0.01, 0.35, 0.14, 600 + + # do-style command with assignment + minimum = do("Get minimum...", 0, 0, "Hertz", "Parabolic") + + # New-style multi-line command call with broken strings + table = Create Table with column names: "table", 0, + ..."file subject speaker + ...f0 f1 f2 f3 " + + ..."duration response" + + removeObject: pitch, table + + # Picture window commands + selectObject: sound + # do-style command + do("Select inner viewport...", 1, 6, 0.5, 1.5) + Black + Draw... 0 0 0 0 "no" Curve + Draw inner box + Text bottom: "yes", sound$ + Erase all + + # Demo window commands + demo Erase all + demo Select inner viewport... 0 100 0 100 + demo Axes... 0 100 0 100 + demo Paint rectangle... white 0 100 0 100 + demo Text... 50 centre 50 half Click to finish + demoWaitForInput ( ) + demo Erase all + demo Text: 50, "centre", 50, "half", "Finished" +endfor + +# An old-style sendpraat block +sendpraat Praat + ...'newline$' Create Sound as pure tone... "tone" 1 0 0.4 44100 440 0.2 0.01 0.01 + ...'newline$' Play + ...'newline$' Remove + +# A new-style sendpraat block +beginSendPraat: "Praat" + Create Sound as pure tone: "tone", 1, 0, 0.4, 44100, 440, 0.2, 0.01, 0.01 + duration = Get total duration + Remove +endSendPraat: "duration" +appendInfoLine: "The generated sound lasted for ", duration, "seconds" + +time = stopwatch +clearinfo +echo This script took +print 'time' seconds to +printline execute. + +# Old-style procedure declaration +procedure oldStyle .str1$ .num .str2$ + .local = 1 +endproc + +# New-style procedure declaration +procedure newStyle (.str1$, .num, .str2$) + .local = 1 +endproc diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/prolog.plg b/plugins/node_modules/ace/demo/kitchen-sink/docs/prolog.plg new file mode 100644 index 00000000..2c867157 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/prolog.plg @@ -0,0 +1,18 @@ +partition([], _, [], []). +partition([X|Xs], Pivot, Smalls, Bigs) :- + ( X @< Pivot -> + Smalls = [X|Rest], + partition(Xs, Pivot, Rest, Bigs) + ; Bigs = [X|Rest], + partition(Xs, Pivot, Smalls, Rest) + ). + +quicksort([]) --> []. +quicksort([X|Xs]) --> + { partition(Xs, X, Smaller, Bigger) }, + quicksort(Smaller), [X], quicksort(Bigger). + +perfect(N) :- + between(1, inf, N), U is N // 2, + findall(D, (between(1,U,D), N mod D =:= 0), Ds), + sumlist(Ds, N). \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/properties.properties b/plugins/node_modules/ace/demo/kitchen-sink/docs/properties.properties new file mode 100644 index 00000000..446b340d --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/properties.properties @@ -0,0 +1,15 @@ +# You are reading the ".properties" entry. +! The exclamation mark can also mark text as comments. +# The key and element characters #, !, =, and : are written with a preceding backslash to ensure that they are properly loaded. +website = http\://en.wikipedia.org/ +language = English +# The backslash below tells the application to continue reading +# the value onto the next line. +message = Welcome to \ + Wikipedia! +# Add spaces to the key +key\ with\ spaces = This is the value that could be looked up with the key "key with spaces". +# Unicode +tab : \u0009 +empty-key= +last.line=value diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/protobuf.proto b/plugins/node_modules/ace/demo/kitchen-sink/docs/protobuf.proto new file mode 100644 index 00000000..4da95a75 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/protobuf.proto @@ -0,0 +1,16 @@ +message Point { + required int32 x = 1; + required int32 y = 2; + optional string label = 3; +} + +message Line { + required Point start = 1; + required Point end = 2; + optional string label = 3; +} + +message Polyline { + repeated Point point = 1; + optional string label = 2; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/python.py b/plugins/node_modules/ace/demo/kitchen-sink/docs/python.py new file mode 100644 index 00000000..90afdc30 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/python.py @@ -0,0 +1,19 @@ +#!/usr/local/bin/python + +import string, sys + +# If no arguments were given, print a helpful message +if len(sys.argv)==1: + print '''Usage: +celsius temp1 temp2 ...''' + sys.exit(0) + +# Loop over the arguments +for i in sys.argv[1:]: + try: + fahrenheit=float(string.atoi(i)) + except string.atoi_error: + print repr(i), "not a numeric value" + else: + celsius=(fahrenheit-32)*5.0/9.0 + print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5)) \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/r.r b/plugins/node_modules/ace/demo/kitchen-sink/docs/r.r new file mode 100644 index 00000000..e4d4c579 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/r.r @@ -0,0 +1,20 @@ +Call: +lm(formula = y ~ x) + +Residuals: +1 2 3 4 5 6 +3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333 + +Coefficients: + Estimate Std. Error t value Pr(>|t|) +(Intercept) -9.3333 2.8441 -3.282 0.030453 * +x 7.0000 0.7303 9.585 0.000662 *** +--- +Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 + +Residual standard error: 3.055 on 4 degrees of freedom +Multiple R-squared: 0.9583, Adjusted R-squared: 0.9478 +F-statistic: 91.88 on 1 and 4 DF, p-value: 0.000662 + +> par(mfrow=c(2, 2)) # Request 2x2 plot layout +> plot(lm_1) # Diagnostic plot of regression model \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/rdoc.Rd b/plugins/node_modules/ace/demo/kitchen-sink/docs/rdoc.Rd new file mode 100644 index 00000000..16664795 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/rdoc.Rd @@ -0,0 +1,64 @@ +\name{picker} +\alias{picker} +\title{Create a picker control} +\description{ + Create a picker control to enable manipulation of plot variables based on a set of fixed choices. +} + +\usage{ +picker(..., initial = NULL, label = NULL) +} + + +\arguments{ + \item{\dots}{ + Arguments containing objects to be presented as choices for the picker (or a list containing the choices). If an element is named then the name is used to display it within the picker. If an element is not named then it is displayed within the picker using \code{\link{as.character}}. +} + \item{initial}{ + Initial value for picker. Value must be present in the list of choices specified. If not specified defaults to the first choice. +} + \item{label}{ + Display label for picker. Defaults to the variable name if not specified. +} +} + +\value{ + An object of class "manipulator.picker" which can be passed to the \code{\link{manipulate}} function. +} + +\seealso{ +\code{\link{manipulate}}, \code{\link{slider}}, \code{\link{checkbox}}, \code{\link{button}} +} + + +\examples{ +\dontrun{ + +## Filtering data with a picker +manipulate( + barplot(as.matrix(longley[,factor]), + beside = TRUE, main = factor), + factor = picker("GNP", "Unemployed", "Employed")) + +## Create a picker with labels +manipulate( + plot(pressure, type = type), + type = picker("points" = "p", "line" = "l", "step" = "s")) + +## Picker with groups +manipulate( + barplot(as.matrix(mtcars[group,"mpg"]), beside=TRUE), + group = picker("Group 1" = 1:11, + "Group 2" = 12:22, + "Group 3" = 23:32)) + +## Histogram w/ picker to select type +require(lattice) +require(stats) +manipulate( + histogram(~ height | voice.part, + data = singer, type = type), + type = picker("percent", "count", "density")) + +} +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/rhtml.Rhtml b/plugins/node_modules/ace/demo/kitchen-sink/docs/rhtml.Rhtml new file mode 100644 index 00000000..5eb6189d --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/rhtml.Rhtml @@ -0,0 +1,22 @@ + + + +Title + + + + +

This is an R HTML document. When you click the Knit HTML button a web page will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

+ + + +

You can also embed plots, for example:

+ + + + + diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/ruby.rb b/plugins/node_modules/ace/demo/kitchen-sink/docs/ruby.rb new file mode 100644 index 00000000..386fbb86 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/ruby.rb @@ -0,0 +1,35 @@ +#!/usr/bin/ruby + +# Program to find the factorial of a number +def fact(n) + if n == 0 + 1 + else + n * fact(n-1) + end +end + +puts fact(ARGV[0].to_i) + +class Range + def to_json(*a) + { + 'json_class' => self.class.name, # = 'Range' + 'data' => [ first, last, exclude_end? ] + }.to_json(*a) + end +end + +{:id => ?", :key => "value"} + + + herDocs = [<<'FOO', <(vector: &[T], function: &fn(v: &T) -> U) -> ~[U] { + let mut accumulator = ~[]; + for vec::each(vector) |element| { + accumulator.push(function(element)); + } + return accumulator; +} diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/sass.sass b/plugins/node_modules/ace/demo/kitchen-sink/docs/sass.sass new file mode 100644 index 00000000..6caaaff8 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/sass.sass @@ -0,0 +1,39 @@ +// sass ace mode; + +@import url(http://fonts.googleapis.com/css?family=Ace:700) + +html, body + :background-color #ace + text-align: center + height: 100% + /*;*********; + ;comment ; + ;*********; + +.toggle + $size: 14px + + :background url(http://subtlepatterns.com/patterns/dark_stripes.png) + border-radius: 8px + height: $size + + &:before + $radius: $size * 0.845 + $glow: $size * 0.125 + + box-shadow: 0 0 $glow $glow / 2 #fff + border-radius: $radius + + &:active + ~ .button + box-shadow: 0 15px 25px -4px rgba(0,0,0,0.4) + ~ .label + font-size: 40px + color: rgba(0,0,0,0.45) + + &:checked + ~ .button + box-shadow: 0 15px 25px -4px #ace + ~ .label + font-size: 40px + color: #c9c9c9 diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/scad.scad b/plugins/node_modules/ace/demo/kitchen-sink/docs/scad.scad new file mode 100644 index 00000000..a45c1aec --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/scad.scad @@ -0,0 +1,21 @@ +// ace can highlight scad! +module Element(xpos, ypos, zpos){ + translate([xpos,ypos,zpos]){ + union(){ + cube([10,10,4],true); + cylinder(10,15,5); + translate([0,0,10])sphere(5); + } + } +} + +union(){ + for(i=[0:30]){ + # Element(0,0,0); + Element(15*i,0,0); + } +} + +for (i = [3, 5, 7, 11]){ + rotate([i*10,0,0])scale([1,1,i])cube(10); +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/scala.scala b/plugins/node_modules/ace/demo/kitchen-sink/docs/scala.scala new file mode 100644 index 00000000..f8280677 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/scala.scala @@ -0,0 +1,69 @@ +// http://www.scala-lang.org/node/54 + +package examples.actors + +import scala.actors.Actor +import scala.actors.Actor._ + +abstract class PingMessage +case object Start extends PingMessage +case object SendPing extends PingMessage +case object Pong extends PingMessage + +abstract class PongMessage +case object Ping extends PongMessage +case object Stop extends PongMessage + +object pingpong extends Application { + val pong = new Pong + val ping = new Ping(100000, pong) + ping.start + pong.start + ping ! Start +} + +class Ping(count: Int, pong: Actor) extends Actor { + def act() { + println("Ping: Initializing with count "+count+": "+pong) + var pingsLeft = count + loop { + react { + case Start => + println("Ping: starting.") + pong ! Ping + pingsLeft = pingsLeft - 1 + case SendPing => + pong ! Ping + pingsLeft = pingsLeft - 1 + case Pong => + if (pingsLeft % 1000 == 0) + println("Ping: pong from: "+sender) + if (pingsLeft > 0) + self ! SendPing + else { + println("Ping: Stop.") + pong ! Stop + exit('stop) + } + } + } + } +} + +class Pong extends Actor { + def act() { + var pongCount = 0 + loop { + react { + case Ping => + if (pongCount % 1000 == 0) + println("Pong: ping "+pongCount+" from "+sender) + sender ! Pong + pongCount = pongCount + 1 + case Stop => + println("Pong: Stop.") + exit('stop) + } + } + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/scheme.scm b/plugins/node_modules/ace/demo/kitchen-sink/docs/scheme.scm new file mode 100644 index 00000000..8c78359c --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/scheme.scm @@ -0,0 +1,21 @@ +(define (prompt-for-cd) + "Prompts + for CD" + (prompt-read "Title" 1.53 1 2/4 1.7 1.7e0 2.9E-4 +42 -7 #b001 #b001/100 #o777 #O777 #xabc55 #c(0 -5.6)) + (prompt-read "Artist") + (or (parse-integer (prompt-read "Rating") #:junk-allowed #t) 0) + (if x (format #t "yes") (format #f "no") ;and here comment + ) + ;; second line comment + '(+ 1 2) + (position-if-not char-set:whitespace line #:start beg)) + (quote (privet 1 2 3)) + '(hello world) + (* 5 7) + (1 2 34 5) + (#:use "aaaa") + (let ((x 10) (y 20)) + (display (+ x y)) + ) + + "asdad\0eqweqe" diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/scss.scss b/plugins/node_modules/ace/demo/kitchen-sink/docs/scss.scss new file mode 100644 index 00000000..e1558168 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/scss.scss @@ -0,0 +1,20 @@ +/* style.scss */ + +#navbar { + $navbar-width: 800px; + $items: 5; + $navbar-color: #ce4dd6; + + width: $navbar-width; + border-bottom: 2px solid $navbar-color; + + li { + float: left; + width: $navbar-width/$items - 10px; + + background-color: lighten($navbar-color, 20%); + &:hover { + background-color: lighten($navbar-color, 10%); + } + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/sh.sh b/plugins/node_modules/ace/demo/kitchen-sink/docs/sh.sh new file mode 100644 index 00000000..4c5e6968 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/sh.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +# Script to open a browser to current branch +# Repo formats: +# ssh git@github.com:richo/gh_pr.git +# http https://richoH@github.com/richo/gh_pr.git +# git git://github.com/richo/gh_pr.git + +username=`git config --get github.user` + +get_repo() { + git remote -v | grep ${@:-$username} | while read remote; do + if repo=`echo $remote | grep -E -o "git@github.com:[^ ]*"`; then + echo $repo | sed -e "s/^git@github\.com://" -e "s/\.git$//" + exit 1 + fi + if repo=`echo $remote | grep -E -o "https?://([^@]*@)?github.com/[^ ]*\.git"`; then + echo $repo | sed -e "s|^https?://||" -e "s/^.*github\.com\///" -e "s/\.git$//" + exit 1 + fi + if repo=`echo $remote | grep -E -o "git://github.com/[^ ]*\.git"`; then + echo $repo | sed -e "s|^git://github.com/||" -e "s/\.git$//" + exit 1 + fi + done + + if [ $? -eq 0 ]; then + echo "Couldn't find a valid remote" >&2 + exit 1 + fi +} + +echo ${#x[@]} + +if repo=`get_repo $@`; then + branch=`git symbolic-ref HEAD 2>/dev/null` + echo "http://github.com/$repo/pull/new/${branch##refs/heads/}" +else + exit 1 +fi diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/sjs.sjs b/plugins/node_modules/ace/demo/kitchen-sink/docs/sjs.sjs new file mode 100644 index 00000000..18ce0e49 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/sjs.sjs @@ -0,0 +1,28 @@ +var { each, map } = require('sjs:sequence'); +var { get } = require('sjs:http'); + +function foo(items, nada) { + var component = { name: "Ace", role: "Editor" }; + console.log(" + Welcome, #{component.name} + ".trim()); + + logging.debug(`Component added: $String(component) (${component})`); + + console.log(` + Welcome, {${function() { + return { x: 1, y: "why?}"}; + }()} + `.trim()); + + waitfor { + items .. each.par { |item| + get(item); + } + } and { + var lengths = items .. map(i -> i.length); + } or { + hold(1500); + throw new Error("timed out"); + } +} // Real Tab. diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/smarty.smarty b/plugins/node_modules/ace/demo/kitchen-sink/docs/smarty.smarty new file mode 100644 index 00000000..77206724 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/smarty.smarty @@ -0,0 +1,7 @@ +{foreach $foo as $bar} + {$bar.zag} + {$bar.zag2} + {$bar.zag3} +{foreachelse} + There were no rows found. +{/foreach} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/snippets.snippets b/plugins/node_modules/ace/demo/kitchen-sink/docs/snippets.snippets new file mode 100644 index 00000000..be99f51e --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/snippets.snippets @@ -0,0 +1,26 @@ +# Function +snippet fun + function ${1?:function_name}(${2:argument}) { + ${3:// body...} + } +# Anonymous Function +regex /((=)\s*|(:)\s*|(\()|\b)/f/(\))?/ +name f + function${M1?: ${1:functionName}}($2) { + ${0:$TM_SELECTED_TEXT} + }${M2?;}${M3?,}${M4?)} +# Immediate function +trigger \(?f\( +endTrigger \)? +snippet f( + (function(${1}) { + ${0:${TM_SELECTED_TEXT:/* code */}} + }(${1})); +# if +snippet if + if (${1:true}) { + ${0} + } + + + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/soy_template.soy b/plugins/node_modules/ace/demo/kitchen-sink/docs/soy_template.soy new file mode 100644 index 00000000..3a9e3436 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/soy_template.soy @@ -0,0 +1,46 @@ +/** + * Greets a person using "Hello" by default. + * @param name The name of the person. + * @param? greetingWord Optional greeting word to use instead of "Hello". + */ +{template .helloName #eee} + {if not $greetingWord} + Hello {$name}! + {else} + {$greetingWord} {$name}! + {/if} +{/template} + +/** + * Greets a person and optionally a list of other people. + * @param name The name of the person. + * @param additionalNames The additional names to greet. May be an empty list. + */ +{template .helloNames} + // Greet the person. + {call .helloName data="all" /}
+ // Greet the additional people. + {foreach $additionalName in $additionalNames} + {call .helloName} + {param name: $additionalName /} + {/call} + {if not isLast($additionalName)} +
// break after every line except the last + {/if} + {ifempty} + No additional people to greet. + {/foreach} +{/template} + + +{/foreach} +{if length($items) > 5} +{msg desc="Says hello to the user."} + + +{namespace ns autoescape="contextual"} + +/** Example. */ +{template .example} + foo is {$ij.foo} +{/template} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/space.space b/plugins/node_modules/ace/demo/kitchen-sink/docs/space.space new file mode 100644 index 00000000..7bd8ab19 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/space.space @@ -0,0 +1,56 @@ +query + count 10 + created 2011-06-21T08:10:46Z + lang en-US + results + photo + 0 + farm 6 + id 5855620975 + isfamily 0 + isfriend 0 + ispublic 1 + owner 32021554@N04 + secret f1f5e8515d + server 5110 + title 7087 bandit cat + 1 + farm 4 + id 5856170534 + isfamily 0 + isfriend 0 + ispublic 1 + owner 32021554@N04 + secret ff1efb2a6f + server 3217 + title 6975 rusty cat + 2 + farm 6 + id 5856172972 + isfamily 0 + isfriend 0 + ispublic 1 + owner 51249875@N03 + secret 6c6887347c + server 5192 + title watermarked-cats + 3 + farm 6 + id 5856168328 + isfamily 0 + isfriend 0 + ispublic 1 + owner 32021554@N04 + secret 0c1cfdf64c + server 5078 + title 7020 mandy cat + 4 + farm 3 + id 5856171774 + isfamily 0 + isfriend 0 + ispublic 1 + owner 32021554@N04 + secret 7f5a3180ab + server 2696 + title 7448 bobby cat diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/sql.sql b/plugins/node_modules/ace/demo/kitchen-sink/docs/sql.sql new file mode 100644 index 00000000..d674f8a6 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/sql.sql @@ -0,0 +1,6 @@ +SELECT city, COUNT(id) AS users_count +FROM users +WHERE group_name = 'salesman' +AND created > '2011-05-21' +GROUP BY 1 +ORDER BY 2 DESC \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/sqlserver.sqlserver b/plugins/node_modules/ace/demo/kitchen-sink/docs/sqlserver.sqlserver new file mode 100644 index 00000000..7efd2b7e --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/sqlserver.sqlserver @@ -0,0 +1,72 @@ +-- ============================================= +-- Author: Morgan Yarbrough +-- Create date: 4/27/2015 +-- Description: Test procedure that shows off language features. +-- Includes non-standard folding with region comments using either +-- line comments or block comments (both are demonstrated below). +-- This mode imitates SSMS and it designed to be used with SQL Server theme. +-- ============================================= +CREATE PROCEDURE dbo.TestProcedure + +--#region parameters + @vint INT = 1 + ,@vdate DATE = NULL + ,@vdatetime DATETIME = DATEADD(dd, 1, GETDATE()) + ,@vvarchar VARCHAR(MAX) = '' +--#endregion + +AS +BEGIN + + /*#region set statements */ + SET NOCOUNT ON; + SET XACT_ABORT ON; + SET QUOTED_IDENTIFIER ON; + /*#endregion*/ + + /** + * These comments will produce a fold widget + */ + + -- folding demonstration + SET @vint = CASE + WHEN @vdate IS NULL + THEN 1 + ELSE 2 + END + + -- another folding demonstration + IF @vint = 1 + BEGIN + SET @vvarchar = 'one' + SET @vint = DATEDIFF(dd, @vdate, @vdatetime) + END + + -- this mode handles strings properly + DECLARE @sql NVARCHAR(4000) = N'SELECT TOP(1) OrderID + FROM Orders + WHERE @OrderDate > GETDATE()' + + -- this mode is aware of built in stored procedures + EXECUTE sp_executesql @sql + + -- demonstrating some syntax highlighting + SELECT Orders.OrderID + ,Customers.CompanyName + ,DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS FirstDayOfYear + FROM Orders + INNER JOIN Customers + ON Orders.CustomerID = Customers.CustomerID + WHERE CompanyName NOT LIKE '%something' + OR CompanyName IS NULL + OR CompanyName IN ('bla', 'nothing') + + -- this mode includes snippets + -- place your cusor at the end of the line below and trigger auto complete (Ctrl+Space) + createpr + + -- SQL Server allows using keywords as object names (not recommended) as long as they are wrapped in brackets + DATABASE -- keyword + [DATABASE] -- not a keyword + +END diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/stylus.styl b/plugins/node_modules/ace/demo/kitchen-sink/docs/stylus.styl new file mode 100644 index 00000000..614981a4 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/stylus.styl @@ -0,0 +1,55 @@ +// I'm a comment! + +/* + * Adds the given numbers together. + */ + + +/*! + * Adds the given numbers together. + */ + + +asdasdasdad(df, ad=23) + +add(a, b = a) + a + b +green(#0c0) + add(10, 5) + // => 15 + + add(10) + add(a, b) + + &asdasd + + (arguments) + + @sdfsdf +.signatures + background-color #e0e8e0 + border 1px solid grayLighter + box-shadow 0 0 3px grayLightest + border-radius 3px + padding 3px 5px + "adsads" + margin-left 0 + list-style none +.signature + list-style none + display: inline + margin-left 0 + > li + display inline +is not +.signature-values + list-style none + display inline + margin-left 0 + &:before + content '→' + margin 0 5px + > li + !important + + unless \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/svg.svg b/plugins/node_modules/ace/demo/kitchen-sink/docs/svg.svg new file mode 100644 index 00000000..4bb28e22 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/svg.svg @@ -0,0 +1,83 @@ + + + Test Tube Progress Bar + Created for the Web Directions SVG competition + + + + + + + Hickory, + + dickory, + + dock! + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/swift.swift b/plugins/node_modules/ace/demo/kitchen-sink/docs/swift.swift new file mode 100644 index 00000000..d1b58293 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/swift.swift @@ -0,0 +1,16 @@ +import UIKit + +class DetailsViewController: UIViewController { + var album: Album? + @IBOutlet weak var albumCover: UIImageView! + + required init(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + } + + override func viewDidLoad() { + super.viewDidLoad() + mLabel.text = self.album?.title && "Juhu \( "kinners" )! " + albumCover.image = UIImage(data: NSData(contentsOfURL: NSURL(string: self.album!.largeImageURL)!)!) + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/tcl.tcl b/plugins/node_modules/ace/demo/kitchen-sink/docs/tcl.tcl new file mode 100644 index 00000000..5c53b971 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/tcl.tcl @@ -0,0 +1,40 @@ + +proc dijkstra {graph origin} { + # Initialize + dict for {vertex distmap} $graph { + dict set dist $vertex Inf + dict set path $vertex {} + } + dict set dist $origin 0 + dict set path $origin [list $origin] + + while {[dict size $graph]} { + # Find unhandled node with least weight + set d Inf + dict for {uu -} $graph { + if {$d > [set dd [dict get $dist $uu]]} { + set u $uu + set d $dd + } + } + + # No such node; graph must be disconnected + if {$d == Inf} break + + # Update the weights for nodes\ + lead to by the node we've picked + dict for {v dd} [dict get $graph $u] { + if {[dict exists $graph $v]} { + set alt [expr {$d + $dd}] + if {$alt < [dict get $dist $v]} { + dict set dist $v $alt + dict set path $v [list {*}[dict get $path $u] $v] + } + } + } + + # Remove chosen node from graph still to be handled + dict unset graph $u + } + return [list $dist $path] +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/tex.tex b/plugins/node_modules/ace/demo/kitchen-sink/docs/tex.tex new file mode 100644 index 00000000..9f1df621 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/tex.tex @@ -0,0 +1,20 @@ +The quadratic formula is $$-b \pm \sqrt{b^2 - 4ac} \over 2a$$ +\bye + +\makeatletter + \newcommand{\be}{% + \begingroup + % \setlength{\arraycolsep}{2pt} + \eqnarray% + \@ifstar{\nonumber}{}% + } + \newcommand{\ee}{\endeqnarray\endgroup} + \makeatother + + \begin{equation} + x=\left\{ \begin{array}{cl} + 0 & \textrm{if }A=\ldots\\ + 1 & \textrm{if }B=\ldots\\ + x & \textrm{this runs with as much text as you like, but without an raggeright text +.}\end{array}\right. + \end{equation} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/textile.textile b/plugins/node_modules/ace/demo/kitchen-sink/docs/textile.textile new file mode 100644 index 00000000..8c67ec16 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/textile.textile @@ -0,0 +1,29 @@ +h1. Textile document + +h2. Heading Two + +h3. A two-line + header + +h2. Another two-line +header + +Paragraph: +one, two, +thee lines! + +p(classone two three). This is a paragraph with classes + +p(#id). (one with an id) + +p(one two three#my_id). ..classes + id + +* Unordered list +** sublist +* back again! +** sublist again.. + +# ordered + +bg. Blockquote! + This is a two-list blockquote..! \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/toml.toml b/plugins/node_modules/ace/demo/kitchen-sink/docs/toml.toml new file mode 100644 index 00000000..46e5b9d1 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/toml.toml @@ -0,0 +1,29 @@ +# This is a TOML document. Boom. + +title = "TOML Example" + +[owner] +name = "Tom Preston-Werner" +organization = "GitHub" +bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." +dob = 1979-05-27T07:32:00Z # First class dates? Why not? + +[database] +server = "192.168.1.1" +ports = [ 8001, 8001, 8002 ] +connection_max = 5000 +enabled = true + +[servers] + + # You can indent as you please. Tabs or spaces. TOML don't care. + [servers.alpha] + ip = "10.0.0.1" + dc = "eqdc10" + + [servers.beta] + ip = "10.0.0.2" + dc = "eqdc10" + +[clients] +data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/twig.twig b/plugins/node_modules/ace/demo/kitchen-sink/docs/twig.twig new file mode 100644 index 00000000..02214f09 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/twig.twig @@ -0,0 +1,30 @@ + + + + My Webpage + + + + + {% if 1 not in [1, 2, 3] %} + + {# is equivalent to #} + {% if not (1 in [1, 2, 3]) %} + + {% autoescape true %} + {{ var }} + {{ var|raw }} {# var won't be escaped #} + {{ var|escape }} {# var won't be doubled-escaped #} + {% endautoescape %} + + {{ include('twig.html', sandboxed = true) }} + + {{"string #{with} \" escapes" 'another#one' }} +

My Webpage

+ {{ a_variable }} + + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/typescript.ts b/plugins/node_modules/ace/demo/kitchen-sink/docs/typescript.ts new file mode 100644 index 00000000..2f880d03 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/typescript.ts @@ -0,0 +1,72 @@ +class Greeter { + greeting: string; + constructor (message: string) { + this.greeting = message; + } + greet() { + return "Hello, " + this.greeting; + } +} + +var greeter = new Greeter("world"); + +var button = document.createElement('button') +button.innerText = "Say Hello" +button.onclick = function() { + alert(greeter.greet()) +} + +document.body.appendChild(button) + +class Snake extends Animal { + move() { + alert("Slithering..."); + super(5); + } +} + +class Horse extends Animal { + move() { + alert("Galloping..."); + super.move(45); + } +} + +module Sayings { + export class Greeter { + greeting: string; + constructor (message: string) { + this.greeting = message; + } + greet() { + return "Hello, " + this.greeting; + } + } +} +module Mankala { + export class Features { + public turnContinues = false; + public seedStoredCount = 0; + public capturedCount = 0; + public spaceCaptured = NoSpace; + + public clear() { + this.turnContinues = false; + this.seedStoredCount = 0; + this.capturedCount = 0; + this.spaceCaptured = NoSpace; + } + + public toString() { + var stringBuilder = ""; + if (this.turnContinues) { + stringBuilder += " turn continues,"; + } + stringBuilder += " stores " + this.seedStoredCount; + if (this.capturedCount > 0) { + stringBuilder += " captures " + this.capturedCount + " from space " + this.spaceCaptured; + } + return stringBuilder; + } + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/vala.vala b/plugins/node_modules/ace/demo/kitchen-sink/docs/vala.vala new file mode 100644 index 00000000..f9600286 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/vala.vala @@ -0,0 +1,21 @@ +using Gtk; + +int main (string[] args) { + Gtk.init (ref args); + var foo = new MyFoo>(); + + var window = new Window(); + window.title = "Hello, World!"; + window.border_width = 10; + window.window_position = WindowPosition.CENTER; + window.set_default_size(350, 70); + window.destroy.connect(Gtk.main_quit); + + var label = new Label("Hello, World!"); + + window.add(label); + window.show_all(); + + Gtk.main(); + return 0; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/vbscript.vbs b/plugins/node_modules/ace/demo/kitchen-sink/docs/vbscript.vbs new file mode 100644 index 00000000..ace5c9f9 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/vbscript.vbs @@ -0,0 +1,23 @@ +myfilename = "C:\Wikipedia - VBScript - Example - Hello World.txt" +MakeHelloWorldFile myfilename + +Sub MakeHelloWorldFile (FileName) +'Create a new file in C: drive or overwrite existing file + Set FSO = CreateObject("Scripting.FileSystemObject") + If FSO.FileExists(FileName) Then + Answer = MsgBox ("File " & FileName & " exists ... OK to overwrite?", vbOKCancel) + 'If button selected is not OK, then quit now + 'vbOK is a language constant + If Answer <> vbOK Then Exit Sub + Else + 'Confirm OK to create + Answer = MsgBox ("File " & FileName & " ... OK to create?", vbOKCancel) + If Answer <> vbOK Then Exit Sub + End If + 'Create new file (or replace an existing file) + Set FileObject = FSO.CreateTextFile (FileName) + FileObject.WriteLine "Time ... " & Now() + FileObject.WriteLine "Hello World" + FileObject.Close() + MsgBox "File " & FileName & " ... updated." +End Sub \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/velocity.vm b/plugins/node_modules/ace/demo/kitchen-sink/docs/velocity.vm new file mode 100644 index 00000000..9156020b --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/velocity.vm @@ -0,0 +1,44 @@ +#* + This is a sample comment block that + spans multiple lines. +*# + +#macro ( outputItem $item ) +
  • ${item}
  • +#end + +## Define the items to iterate +#set ( $items = [1, 2, 3, 4] ) + +
      + ## Iterate over the items and output the evens. + #foreach ( $item in $items ) + #if ( $_MathTool.mod($item, 2) == 0 ) + #outputItem ($item) + #end + #end +
    + + + + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/verilog.v b/plugins/node_modules/ace/demo/kitchen-sink/docs/verilog.v new file mode 100644 index 00000000..b1f79265 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/verilog.v @@ -0,0 +1,12 @@ +always @(negedge reset or posedge clk) begin + if (reset == 0) begin + d_out <= 16'h0000; + d_out_mem[resetcount] <= d_out; + laststoredvalue <= d_out; + end else begin + d_out <= d_out + 1'b1; + end +end + +always @(bufreadaddr) + bufreadval = d_out_mem[bufreadaddr]; \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/vhdl.vhd b/plugins/node_modules/ace/demo/kitchen-sink/docs/vhdl.vhd new file mode 100644 index 00000000..662375e8 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/vhdl.vhd @@ -0,0 +1,34 @@ +library IEEE +user IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity COUNT16 is + + port ( + cOut :out std_logic_vector(15 downto 0); -- counter output + clkEn :in std_logic; -- count enable + clk :in std_logic; -- clock input + rst :in std_logic -- reset input + ); + +end entity; + +architecture count_rtl of COUNT16 is + signal count :std_logic_vector (15 downto 0); + +begin + process (clk, rst) begin + + if(rst = '1') then + count <= (others=>'0'); + elsif(rising_edge(clk)) then + if(clkEn = '1') then + count <= count + 1; + end if; + end if; + + end process; + cOut <= count; + +end architecture; + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/xml.xml b/plugins/node_modules/ace/demo/kitchen-sink/docs/xml.xml new file mode 100644 index 00000000..5b12c0a2 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/xml.xml @@ -0,0 +1,55 @@ + + + + true + + 26 + 25 + 21978 + + + + 24865670 + Continent + Africa + + + 24865675 + Continent + Europe + + + 24865673 + Continent + South America + + + 28289421 + Continent + Antarctic + + + 24865671 + Continent + Asia + + + 24865672 + Continent + North America + + + 55949070 + Continent + Australia + + + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/xquery.xq b/plugins/node_modules/ace/demo/kitchen-sink/docs/xquery.xq new file mode 100644 index 00000000..1b0ac753 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/xquery.xq @@ -0,0 +1,6 @@ +xquery version "1.0"; + +let $message := "Hello World!" +return + {$message} + diff --git a/plugins/node_modules/ace/demo/kitchen-sink/docs/yaml.yaml b/plugins/node_modules/ace/demo/kitchen-sink/docs/yaml.yaml new file mode 100644 index 00000000..52ee320e --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/docs/yaml.yaml @@ -0,0 +1,35 @@ +# This sample document was taken from wikipedia: +# http://en.wikipedia.org/wiki/YAML#Sample_document +--- +receipt: Oz-Ware Purchase Invoice +date: 2007-08-06 +customer: + given: Dorothy + family: Gale + +items: + - part_no: 'A4786' + descrip: Water Bucket (Filled) + price: 1.47 + quantity: 4 + + - part_no: 'E1628' + descrip: High Heeled "Ruby" Slippers + size: 8 + price: 100.27 + quantity: 1 + +bill-to: &id001 + street: | + 123 Tornado Alley + Suite 16 + city: East Centerville + state: KS + +ship-to: *id001 + +specialDelivery: > + Follow the Yellow Brick + Road to the Emerald City. + Pay no attention to the + man behind the curtain. diff --git a/plugins/node_modules/ace/demo/kitchen-sink/file_drop.js b/plugins/node_modules/ace/demo/kitchen-sink/file_drop.js new file mode 100644 index 00000000..8b89d5f1 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/file_drop.js @@ -0,0 +1,73 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var config = require("ace/config"); +var event = require("ace/lib/event"); +var modelist = require("ace/ext/modelist"); + +module.exports = function(editor) { + event.addListener(editor.container, "dragover", function(e) { + var types = e.dataTransfer.types; + if (types && Array.prototype.indexOf.call(types, 'Files') !== -1) + return event.preventDefault(e); + }); + + event.addListener(editor.container, "drop", function(e) { + var file; + try { + file = e.dataTransfer.files[0]; + if (window.FileReader) { + var reader = new FileReader(); + reader.onload = function() { + var mode = modelist.getModeForPath(file.name); + editor.session.doc.setValue(reader.result); + editor.session.setMode(mode.mode); + editor.session.modeName = mode.name; + }; + reader.readAsText(file); + } + return event.preventDefault(e); + } catch(err) { + return event.stopEvent(e); + } + }); +}; + +var Editor = require("ace/editor").Editor; +config.defineOptions(Editor.prototype, "editor", { + loadDroppedFile: { + set: function() { module.exports(this); }, + value: true + } +}); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/icons/epl.html b/plugins/node_modules/ace/demo/kitchen-sink/icons/epl.html new file mode 100644 index 00000000..f57b834b --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/icons/epl.html @@ -0,0 +1,260 @@ + + + + +Eclipse Public License - Version 1.0 + + + + + + +

    Eclipse Public License - v 1.0

    + +

    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR +DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS +AGREEMENT.

    + +

    1. DEFINITIONS

    + +

    "Contribution" means:

    + +

    a) in the case of the initial Contributor, the initial +code and documentation distributed under this Agreement, and

    +

    b) in the case of each subsequent Contributor:

    +

    i) changes to the Program, and

    +

    ii) additions to the Program;

    +

    where such changes and/or additions to the Program +originate from and are distributed by that particular Contributor. A +Contribution 'originates' from a Contributor if it was added to the +Program by such Contributor itself or anyone acting on such +Contributor's behalf. Contributions do not include additions to the +Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) +are not derivative works of the Program.

    + +

    "Contributor" means any person or entity that distributes +the Program.

    + +

    "Licensed Patents" mean patent claims licensable by a +Contributor which are necessarily infringed by the use or sale of its +Contribution alone or when combined with the Program.

    + +

    "Program" means the Contributions distributed in accordance +with this Agreement.

    + +

    "Recipient" means anyone who receives the Program under +this Agreement, including all Contributors.

    + +

    2. GRANT OF RIGHTS

    + +

    a) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works +of, publicly display, publicly perform, distribute and sublicense the +Contribution of such Contributor, if any, and such derivative works, in +source code and object code form.

    + +

    b) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, +offer to sell, import and otherwise transfer the Contribution of such +Contributor, if any, in source code and object code form. This patent +license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, +such addition of the Contribution causes such combination to be covered +by the Licensed Patents. The patent license shall not apply to any other +combinations which include the Contribution. No hardware per se is +licensed hereunder.

    + +

    c) Recipient understands that although each Contributor +grants the licenses to its Contributions set forth herein, no assurances +are provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program.

    + +

    d) Each Contributor represents that to its knowledge it +has sufficient copyright rights in its Contribution, if any, to grant +the copyright license set forth in this Agreement.

    + +

    3. REQUIREMENTS

    + +

    A Contributor may choose to distribute the Program in object code +form under its own license agreement, provided that:

    + +

    a) it complies with the terms and conditions of this +Agreement; and

    + +

    b) its license agreement:

    + +

    i) effectively disclaims on behalf of all Contributors +all warranties and conditions, express and implied, including warranties +or conditions of title and non-infringement, and implied warranties or +conditions of merchantability and fitness for a particular purpose;

    + +

    ii) effectively excludes on behalf of all Contributors +all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits;

    + +

    iii) states that any provisions which differ from this +Agreement are offered by that Contributor alone and not by any other +party; and

    + +

    iv) states that source code for the Program is available +from such Contributor, and informs licensees how to obtain it in a +reasonable manner on or through a medium customarily used for software +exchange.

    + +

    When the Program is made available in source code form:

    + +

    a) it must be made available under this Agreement; and

    + +

    b) a copy of this Agreement must be included with each +copy of the Program.

    + +

    Contributors may not remove or alter any copyright notices contained +within the Program.

    + +

    Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution.

    + +

    4. COMMERCIAL DISTRIBUTION

    + +

    Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the +like. While this license is intended to facilitate the commercial use of +the Program, the Contributor who includes the Program in a commercial +product offering should do so in a manner which does not create +potential liability for other Contributors. Therefore, if a Contributor +includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and +indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") +arising from claims, lawsuits and other legal actions brought by a third +party against the Indemnified Contributor to the extent caused by the +acts or omissions of such Commercial Contributor in connection with its +distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In +order to qualify, an Indemnified Contributor must: a) promptly notify +the Commercial Contributor in writing of such claim, and b) allow the +Commercial Contributor to control, and cooperate with the Commercial +Contributor in, the defense and any related settlement negotiations. The +Indemnified Contributor may participate in any such claim at its own +expense.

    + +

    For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages.

    + +

    5. NO WARRANTY

    + +

    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, +ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely +responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to +the risks and costs of program errors, compliance with applicable laws, +damage to or loss of data, programs or equipment, and unavailability or +interruption of operations.

    + +

    6. DISCLAIMER OF LIABILITY

    + +

    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT +NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    + +

    7. GENERAL

    + +

    If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable.

    + +

    If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such +Recipient's rights granted under Section 2(b) shall terminate as of the +date such litigation is filed.

    + +

    All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of time +after becoming aware of such noncompliance. If all Recipient's rights +under this Agreement terminate, Recipient agrees to cease use and +distribution of the Program as soon as reasonably practicable. However, +Recipient's obligations under this Agreement and any licenses granted by +Recipient relating to the Program shall continue and survive.

    + +

    Everyone is permitted to copy and distribute copies of this +Agreement, but in order to avoid inconsistency the Agreement is +copyrighted and may only be modified in the following manner. The +Agreement Steward reserves the right to publish new versions (including +revisions) of this Agreement from time to time. No one other than the +Agreement Steward has the right to modify this Agreement. The Eclipse +Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a +suitable separate entity. Each new version of the Agreement will be +given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version +of the Agreement is published, Contributor may elect to distribute the +Program (including its Contributions) under the new version. Except as +expressly stated in Sections 2(a) and 2(b) above, Recipient receives no +rights or licenses to the intellectual property of any Contributor under +this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this +Agreement are reserved.

    + +

    This Agreement is governed by the laws of the State of New York and +the intellectual property laws of the United States of America. No party +to this Agreement will bring a legal action under this Agreement more +than one year after the cause of action arose. Each party waives its +rights to a jury trial in any resulting litigation.

    + + + + + \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/kitchen-sink/icons/error_obj.gif b/plugins/node_modules/ace/demo/kitchen-sink/icons/error_obj.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bc60689c6dcbfb71770789a3c2e98f51f6eecd7 GIT binary patch literal 339 zcmZ?wbhEHb6krfwxXQrrHNWU4 z&?^&f5)>{J;LlXy?-r(U7vw8pD9sGYH>i^m7 z{}+n?Uupb*wdw!W=Kpu5|Gzi)|MMOH&*W4G3O9s`Hie5dhKhAYOSDHz^u$R`Ns&F; ztb4Lu|5%IOu~xma-9{(d4NrF&pY1liGsFJ=Y^MivoF6U?J>712zT5O-ui5SC4)jB<~Eh3Ck(|MR1tY+CYw%7@BZ0uHG65^MT;^$&kcave^ j77&vV;AWL^lhtKopEXNY&Ru%J!UdsAmM(L0WUvMR>~MP$ literal 0 HcmV?d00001 diff --git a/plugins/node_modules/ace/demo/kitchen-sink/inline_editor.js b/plugins/node_modules/ace/demo/kitchen-sink/inline_editor.js new file mode 100644 index 00000000..6b56887d --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/inline_editor.js @@ -0,0 +1,102 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var LineWidgets = require("ace/line_widgets").LineWidgets; +var Editor = require("ace/editor").Editor; +var Renderer = require("ace/virtual_renderer").VirtualRenderer; +var dom = require("ace/lib/dom"); + + +require("ace/commands/default_commands").commands.push({ + name: "openInlineEditor", + bindKey: "F3", + exec: function(editor) { + var split = window.env.split; + var s = editor.session; + var inlineEditor = new Editor(new Renderer()); + var splitSession = split.$cloneSession(s); + + var row = editor.getCursorPosition().row; + if (editor.session.lineWidgets && editor.session.lineWidgets[row]) { + editor.session.lineWidgets[row].destroy(); + return; + } + + var rowCount = 10; + var w = { + row: row, + // rowCount: rowCount, + fixedWidth: true, + el: dom.createElement("div"), + editor: inlineEditor + }; + var el = w.el; + el.appendChild(inlineEditor.container); + + if (!editor.session.widgetManager) { + editor.session.widgetManager = new LineWidgets(editor.session); + editor.session.widgetManager.attach(editor); + } + + var h = rowCount*editor.renderer.layerConfig.lineHeight; + inlineEditor.container.style.height = h + "px"; + + el.style.position = "absolute"; + el.style.zIndex = "4"; + el.style.borderTop = "solid blue 2px"; + el.style.borderBottom = "solid blue 2px"; + + inlineEditor.setSession(splitSession); + editor.session.widgetManager.addLineWidget(w); + + var kb = { + handleKeyboard:function(_,hashId, keyString) { + if (hashId === 0 && keyString === "esc") { + w.destroy(); + return true; + } + } + }; + + w.destroy = function() { + editor.keyBinding.removeKeyboardHandler(kb); + s.widgetManager.removeLineWidget(w); + }; + + editor.keyBinding.addKeyboardHandler(kb); + inlineEditor.keyBinding.addKeyboardHandler(kb); + inlineEditor.setTheme("ace/theme/solarized_light"); + } +}); +}); diff --git a/plugins/node_modules/ace/demo/kitchen-sink/layout.js b/plugins/node_modules/ace/demo/kitchen-sink/layout.js new file mode 100644 index 00000000..1332eef3 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/layout.js @@ -0,0 +1,132 @@ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("ace/lib/dom"); +var event = require("ace/lib/event"); + +var EditSession = require("ace/edit_session").EditSession; +var UndoManager = require("ace/undomanager").UndoManager; +var Renderer = require("ace/virtual_renderer").VirtualRenderer; +var Editor = require("ace/editor").Editor; +var MultiSelect = require("ace/multi_select").MultiSelect; + +dom.importCssString("\ +splitter {\ + border: 1px solid #C6C6D2;\ + width: 0px;\ + cursor: ew-resize;\ + z-index:10}\ +splitter:hover {\ + margin-left: -2px;\ + width:3px;\ + border-color: #B5B4E0;\ +}\ +", "splitEditor"); + +exports.edit = function(el) { + if (typeof(el) == "string") + el = document.getElementById(el); + + var editor = new Editor(new Renderer(el, require("ace/theme/textmate"))); + + editor.resize(); + event.addListener(window, "resize", function() { + editor.resize(); + }); + return editor; +}; + + +var SplitRoot = function(el, theme, position, getSize) { + el.style.position = position || "relative"; + this.container = el; + this.getSize = getSize || this.getSize; + this.resize = this.$resize.bind(this); + + event.addListener(el.ownerDocument.defaultView, "resize", this.resize); + this.editor = this.createEditor(); +}; + +(function(){ + this.createEditor = function() { + var el = document.createElement("div"); + el.className = this.$editorCSS; + el.style.cssText = "position: absolute; top:0px; bottom:0px"; + this.$container.appendChild(el); + var session = new EditSession(""); + var editor = new Editor(new Renderer(el, this.$theme)); + + /*editor.on("focus", function() { + this._emit("focus", editor); + }.bind(this));*/ + + this.$editors.push(editor); + editor.setFontSize(this.$fontSize); + return editor; + }; + this.$resize = function() { + var size = this.getSize(this.container); + this.rect = { + x: size.left, + y: size.top, + w: size.width, + h: size.height + }; + this.item.resize(this.rect); + }; + this.getSize = function(el) { + return el.getBoundingClientRect(); + }; + this.destroy = function() { + var win = this.container.ownerDocument.defaultView; + event.removeListener(win, "resize", this.resize); + }; + + +}).call(SplitRoot.prototype); + + + +var Split = function(){ + +}; +(function(){ + this.execute = function(options) { + this.$u.execute(options); + }; + +}).call(Split.prototype); + + + +exports.singleLineEditor = function(el) { + var renderer = new Renderer(el); + el.style.overflow = "hidden"; + + renderer.screenToTextCoordinates = function(x, y) { + var pos = this.pixelToScreenCoordinates(x, y); + return this.session.screenToDocumentPosition( + Math.min(this.session.getScreenLength() - 1, Math.max(pos.row, 0)), + Math.max(pos.column, 0) + ); + }; + + renderer.$maxLines = 4; + + renderer.setStyle("ace_one-line"); + var editor = new Editor(renderer); + editor.session.setUndoManager(new UndoManager()); + + editor.setShowPrintMargin(false); + editor.renderer.setShowGutter(false); + editor.renderer.setHighlightGutterLine(false); + editor.$mouseHandler.$focusWaitTimout = 0; + + return editor; +}; + + + +}); + diff --git a/plugins/node_modules/ace/demo/kitchen-sink/logo.png b/plugins/node_modules/ace/demo/kitchen-sink/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a722472f14258f4d6e6942879e8fc03017222161 GIT binary patch literal 49263 zcmd?QRa9JC6F=BUf+WEMK^qzk4#7RpxVr@iL4&(nf;0qzyK8U=PNTuyEkOe`ZlTde zr*rT9{_`*|^Ehh_FPwGOK3%oTcGYiJMX0IBzQ88K1^@sr(bCP+)Wrhu*4*)f1+~1rsg;F>g{ir>^N@uI0Pq7}9{g6zYw<7( zBZy8r>oKreNLh6?>(>gYrR#e%Q|E|yVs!}=X@QWJ^j}=|SJqcbUtP2KWLotGp>XDX z#?B`|M@J{p3o+{M?%w`!d^q0!YY5u9)>+nC)>78eU5@jHvIAIhbez6lw*Tcsv-8R~ z#(5kI$=lz*el)C%f1dyV6qJ9TBqaX#1{L++r=Xz!y+KF+@9FhG8jdM$!`1{3QXsk>vtBlwR@Vb6}I-lqjK zkpLEwOpJ*-J&FJOBj;30kx)94_3tVyWcP!RSP7Z`e$RrQ((d!4*ea;opLHU}EnH5X zPZE_BY2ttNsa4_joq!ns*lg8!2F_X(vcp6Yi~lb*iJ@>=K6tDnei{?jy4dy(FWVI! zE&~%CR7RGX7Wvyq!w;%WiasSsl*Gau(WF^X7E4v7!T%b49T6n~{*U-3J5|85M+8+$ zWh#+^7@VFaU`q-t0?wxm08xg2K`#0$F9jW;eoZCp*HnnaSUc%Z;lWQSZm{?_pG%Mo zqJCCJuG(avLd4@FL%hvd~*mx~L{SvWl4apk$!_|L;J0l6-Y-!eBBF#v!n5`{F1 zURvO^IwsAKj)F^C@{XxN_ExiG;AQLhHkQ+yr+|Ol8uN=R`&6`Dky%?P-OyFXRr}CL zw5W%ItEQ%_vc0{gM0{CyoLs@pjs)i`J13@hG5uyW59m8mW@cu=JyKGl_xJZJt-?Y= zIRX2n_iKo8&!=!|5aR9~rr@XW|8~_cE%H}9@q{f$mrEHbIRQ5t@(GL+5n#|8$vibf zYCHiY;;2#$YEJzJ$;vi$8<>32XFI2H$d<6WDv0VN=|uk4tmY?`zSbf{R;JP2)7?H0 zk)+!guvF;jQLPei&~)6_ zR2Ya64`~U1^+QdiFE7I<85db-J{UGy%FD|;5cau?Hn{8eI|O7NvB>_*e#~z8m%dVI z%H)7K*Dun@zIj~S7wxrH6WM{r-gDaJCI;<36@YwoOs>D;`Ild&R4=dgiTx9+99I<> zqxi!q>6qp>*6J_d=oAaHns7VLrW!lHj33-dy--)^yWQwMgqjG|nurkJrHiiaLS56E z$I>SMnxAV9uJ_=@$zNWBf{?za9xmHa7~GE7&R|r@;o9`Cb;<-i8vr3>wId#1eRF_J zFL{d0Xox5t!~NMAo(7egCy^?1UJ}ZP#nc z;>RNv6NJKj1Mq&=mywq*8yF2%i4BygE3r$=x4tGOj7)U8ioif>EdA4`PXj>TyHj7W z<`2>k)ziVI#J~Q4hlk|Q3&u+IYdB17EX#9M@W`L!os+b(`vtV?{U0WTY{;^1rn25# z>4y}86k#LDAs{IQ#od8zb^GP*n`Dl)Ll8x1a(o3CodEUUt$vJvq*%i=MN${)6%v|L z{C=aQEX>Y#s3u1j!Ak%kX3HTV1DmJzQc_Z?Z4WmGogzoGn*7*L3J$1<(CJ$-**5|0U^=NbD3K}x~GBPp`HLe5ECu|1wyMmECMBLmUW`akv0T3PMbpNO1|t_f*P z411dQ$_oknPYe-+xWb4(nk&qVr$1}V20|+O*!K-XZ{W++1T;0%_R;W zQi7>UC**s36L6EJ8hCRn{)m{sIAa2ZhyCkbYN+tIYU0Xw1MY5ae$C#)iI30GQO~$Z z!fbS2GJ_!I_|SWk>el1it5x5V?_d4?u)=y{!l}vrGc1(89z`*iN(YPEfZNNXoyLX+ ze_p)j;}9>c=I|1}540d(AzaE9i}iKLV?}GLa9lyq|M?VuP_`qVs(a&f(Y8A4yY=Zt z1~N=w;o(w)KnffOl$4bG6WP26s_fJ23>1jNNxc8rG75}#sRXilD@*0?HZD9aut~ly z2Qz|OVQrw?eUW1&_O(CzrfebrAEedA{vy|rPlHsKggUh;ApkJ^P7F*ic=UAW`T;(| zQGI-LaC<3em2>}@6=-Ft&EZ}B7gK4di7ulV$A^hM@0;^TC(Sw&#}bt6vGTx?=M?lO#a!G<;d9p-b7t8>4t zsI8G4u3<=x!V7>P#iqwxEsnU~dbjum?(@6zFmi_y#-073(YKjdWgob@&ITsDk)8xK z!Z?jZ1E^WT*U$GaS7%$2SgFPN_{t;EUDcQl3FeY4eLWkS0)37%1#uI+cnYbtYw@s9 z07R%@2>_sv9XKk(=c3Fx@hX|kkob7-=)ONrmI@KBEf)J82is%Wb|B^SM^fRuex2nC zFQ>ru$m4D2V}{a)DZFaTh=h7!|M>|;uoM8`-Fdmb{uGcqxYe`g%09NA-rxSG`%oUhqgF9ttINaN26e4wuzTx7zq`~Y6hJHq9x@Iqm3R@U zi7ltk%?-Fy37sQ0W5gev%l$Y9F;Y`qyUAXp3At{Mnp|F7-0v=*jhE*if~W?c{ig^C z1XXtr$4OhAySdwWO@DtsIV>q6wHIxRm2-;V1MzzuBh9nCzYa7Zc6L}N8~eDg=dkna zuPz=I1i@M;0D2J6m|!DS&w;YZ|Mv3Cax@bm<;}}LY877ll8KMI%-mVbtEBF%T(elE zJ&U{C%wndzW!Lw>C+`mcFi7@~Jeh&ULv=?1H+qo!rJoh}}j`!EW zaxVuAP-<4U?3b-Q4er`h3JZ22V#2SOiuDrdaJ|@{1Bz|I5=a+{c>6#!G`E;S!f8!|x=Sh;VWqiZ}uhL*i?J zkI#|$Uy5AY37#A#fckNP1FVb!Af%=afc5CwiYYu&0b34h#h-lc>g!L-w?iLJifW4m ze^^uG=xp04BvgGTb?Hs>>pb7#FL5Iv5$ivPwFF{B*2T+VYq(%ba=~9I{#&6{2(xak z2DmpdQ|!C{QezCe-uK_?Z&Ch}4PX!gMCi489DR&TVTBqRyJd;dD!zOPV3wCO@4q}* zd+eJ}PR@~({5KPT_2l?9V-L<(8cyVh`d(7Py9;i>n7#lxIk=gp=T%b%gX%+iZjd=G z&ELEMc`m65!fR}=j&YkB>z6?sBIpRf4;{&prlu>|1Tu2Rkbm_97?j0<*El{t1ll?{ zbjSw)gZu!$*=f+w&^pVi%Wo5NgCvmjpP-HXK?Nvih#{l+O+72nBow*I%Q&9vS=qO5 z+ru3X4>^21JaV6R(pI3aU5q1*f&cQ%lhn{SpaFzD16FBORfm_S z>_9a!s~+BGBp(ciiy?zdfLs7-H+mthA>ulU6_^9@15ii1l=JHhl97?!jF?td>Rw)6 zGQeVngZA|RLC$FScz_?^VGKlE3>pUR0|^W*$ZmX2iw-Pom_N0Pp!B`GtLW%32D!%U zsqEyeprN&%Wr_5o0RSMRg|!Vsvh=*#u`kYQ9M?Kx_*K(f>J0Qg`vGE~%p1>OJbfCV zYodE4uOQ7D6&Gt~H~>GSMOR0P_3yWmBaj)MZunG(?Se(E-yJTJ@Vg14vr>Ic&9knm zT`a!JN@iN$rn$6s2n8339%!PI3}*f@Bw5rAAZf_Qe^dgR$0 zc$Unz3dZuYO+gkdqP!x8JdAPI=&f@an0ocih)lTmZI@F}dpK z?@U2ghd`u((>|f=-D@NEW2!=S1 z1H1wz)&}X2$@Okhc0v!T>Z+hO`#7~Hgmfv%HIw51rf`Ghe&%dci<4_>j|tZ97ez>t z3@VZzYJRrhzVka32KxQ!T0f1&L%R51Y7q+5a@<^MOH)DDBZhi;u-;%>zRUiSbk$J2zbbhs}rJ{{ry z=oL|x%kfKKP`()rdqKXce5|hAgn{FL%lNPD4=RWa7R0U#u^P4ToFmJ{lPmZJ*);r9 zEf#>#^Ee}8CyPJuA?DfR^ijLxk%IgnUdnYHIt$7^}Yp=!S_mFz~$Hw>(-wETMVeTWzkY;P!r@SPmyQ)Z#ft_p*DBI@Pn zs&7YY$(6HBQ&q@^dSN|8FW0FgyWfoD>^Z;I|A>k4QO7LNQnj?`NgcyfMY0bC3nBG) zk^7F52V`Dw9?8++1&Q?Yl9o_=`3z}D7+3vD)^a-i=@X70T-!fz^~1Oa9pZT2qWCYkj*!UO9GZS)RAPq%tmf z)Lubn9d(n1rl6ppn##Kuf5&d6#XagTwZBDZRGpt*Uylk{$s0({XD49Wh0MEEC}Y}U zDxQUak8XWF9wi6YJE(F{zM`5bAS?axWCRa;JUo+}<4rOuW!XEfK)7iM)GS@N385jw z6GHyzKtv!VsPoX-AfzPQ$T!Iq`Hi7~_PrlnVQcGct8xP4BQ9bD8N@qKoJipZ&j%fypY!4K41yQ$m$HY+YpzB@cIhl`SZ~IdZ0S0)b_QK!(PYIY<;f5Gy zl4D2AJ&pED?Ag4&mq!LQr115z<9q+}yT$hN#Rp?DMWr~ zb$-P!Y;CnBCsf_j3{8{fV{Mgk6iVSz+>5q2v=~ndddEp~@01v$R6UrAp(@Z6-&Y|> z-5(w|a*pzFIK@8Ea)@xI zg-MhPG}q>3)~SWWM^zG`9cv#>ulvnX*o5!D@~^(4)#^h9{6+J`wtAE$YRh~swvj@y zo!aQ@)O~o0_>PZ@AiION_@BdC+Gn$rm~}&gK2AOFVX*Yju9|KghWco4pD*js9pa$i zs#7nJ3Py3mf}BXQxEkXvh92drRV|G%H@D%H5B00mpy9vK)c2)nFi@Kn z{Ptglw8SzCgPBIkbXQhZ_!s6D0x968mIJHCKD&Kc^}bHMlWtXo4i@rkhlYeBY2Ixu z!cj@_quQlWzR~)_F3EeZ1bs?oL_Z75CH-_;uJro&M*KiPagH^?>y zCi_T~l7Ks%_2NiW8^@zqK2f(Mh)?y_H$k~7qM=UGjN^a-DJD^#Q@PG>Ao|je#QgJ< zU*2rb%nr>p>tV*q72cbkZI1yB>aC|tj9|2;aX55^Xn*6ZgoI1APto&WDXA-IP@Lzk zN!jmRh)b3c^jmQDa$8PV!?s()U>G}fKZD!M=BRf0^ZS6GV7BIRnd@>FdS+lp#^!~n zYHNju!$Xy34$b1vkfI9PK_kvDkeV+#;m$&?<3vJ_^-v;gg=Xt!sxW;+W~nNSaH0o-)#yJ6SsEU0jxB+2p>^V zC}V}HbEirRuvQvb&}C%6MMqo5#JXvW{fBKoXM!j?=%no=Z};^@qzsfcmF8**wzqu~ zigrWtTzh6Yc?t4aQYH$#XULIgSyy80>dO7mw{PDbX-{qRc4;X8$(Fj&>3|VCE#aeC z!u<87Jz*qhUBB(_6<;z@4>w$trg%)PH34%4`00|!X{q*o9X@Ui3&KtPtJxzh9@xl{ z@K^g6IPv-)#y5>Kiwo znO+!XI6K`wCofr{?f5&nI)i;DF6UT>N+m8NoKbw!(h?Kj8REt>^6a1D3k5aa_Pj^$ ziDJv|`;(Z5(~jHuUD0ga_Zx^swk)^DbPuv<*UFuQdcRk2v1u&WcF0-OzP1tz|C^cB zQ`bFWn-2@$IMXs>!~LP})f1wa4U$ihNZg+BPr}6lKPl}BaLb;tHzv0V35D~kEcb4u zcWQQ=bcF*s{>RX|alMW^UJQg>tSkC|seKSO5uW%Iu94*5`c1>kZ1duVgoWuQkEo5x z&q26yb*WMz)SQ+od0|#1&yBEk-e_YkMK&3vCh>YufmmdLacONh%Wwo#`>||+0!5y& zh;dpYKU%z{G`T8Z0)$LCo4@PzYA;pM78Fcq$rh04o6|0YxFN#{6WU}w1|Sx<+%NWP zca)3gSY2F}LAjVt|50!Jg4wmm^?3&3)&Mt>=x4y1yvbp*JtGE{VliI z1;4@x1{-jor5bkMLx1Edkxkd`XmW5^T)lQhc6374+t=rpHHBLxC*ZeOUftnSHUS~? zSYRZ0g$rORvVB5Dfpn(42g)HhEH4VK=r1O3L)I@(!MABJ|3Uadw$jfyH^ zF^nNNi18~N^H&uAi>9>zUt1&lBl@r>I=vo7P3;K*m!p>Zk@WHTU9%;!`|X8dTnpe3 zdT~aRG-igf5>gBeTD&N|Z8Oun;)ha~jIB?BEex-q=u+t48gfvY9;@6lXKsEfS&?%& zUuRr9D&Ny=g)H*%k4h;#E1-Hg1)|=+h6TLf^k2j27rg(or+j|S((07QmHn`fg9(uw z=s;eYSS9#}pdl+r<_n=ukf#8x!XOygJtuw6)%oSa_r^w#(1$*3yjYUeWkuZTHK`#P zgEX=WYRj_mo+vh>B1OySN?qvX`)sbtM_bP-{D|%yyPvXx-~vwLzzx*<2q&qNy=^*o zMKIWrh9wD@50)NJ6Axt<@uy-JNW_2Q&1<0TPHZ6~1}A><79Blk8Wjl&Fsq6Uz7-pk z0S{WX$!l~x-k+#eR+d6@<6)aMB%YHdM2N}kSXC#MV&nbSF|%r=V(vMM}h1_1L(nsg$yUDNn+DY5+hIDXcFZgcvmV(E-cIB>ihcLjwt^U2(-TOgkj+TkcT zgw!w;G?82t{)=PALC~X8$$4q*_qpN9!qRP1ycAEb<-L7^%ru*cg%ab(TLTSOFzSr} zdua}u%`<)YjxO%yj6H630XQ@Tf@Brxo6BX|<*UbMpCG%uqkE>$0J(bAxL)r85`rWE zZ1VeE5x3nDB&hUQ6m-S*_`Gi4S{+pPnz{v8siXa8F z9=vt2Bgy(EMI`#}e*Q3dr;XKNe{gcvCYj(#%^tl`Ovo-;v4!Tr?&1||)vjDP7dE$u z$X!!WbYx%ho zjN5dOGAKm?kl->V|MMLXtmDTq@~7Fe}P%XGfiq1KxQYq$V=@`M{DbAemKb!=MjvdpJRW+*4E4MP^5*{5^t`cVVURvoS#jBSh46r8#uQvDT_~> zyRcmMM`$NT29JeTN6r?6UhymaP&SzdQN4@wp}WPAmlm(rWxxfBdb3luzE_YoPKZ*E z9UmXBR?ZT-AeJOT{}-Qr())U$M^TclbpkCo_=@=gs%i4Uf&?HqDGK(yGkf!uDMi+- zS8D9^cYm4ge!`#Uh)LhZ?<}xwoyylNL)52bvQSo8FH*6LpJNu@h)VW;Hto9ReOfF< z+0bD(=LWK55S=sjP~hF6prZA5eakRmEX-0KDkT#4Q_y?5aP#K&b`xhK&IuovXXu#( zX%Mp>Kr7qtXTaAsVKhY?@w=%QgK|*Z%z2yz1F)xntHpMUk8C?J&gqa2h{VMESb>>K z4S+sH88N$z^OtwZhzV`3Lo>GSB3?fvhrV3TwnZ+Kwg zlS02?wBh;tu{HjgYg>C0?`~xzm1T4jrW@qsKvlAD6P+W;%lB@ssN|F8jT4IGR~hFRyc?_` za@wq*ztYeTLIQq#q23%{>{rlXJ@#$ZEsk)1f2p3%S2`sXm-ltH!q(-iK&8E{cdDTI z-kw;msxAN6ZP4hsLY4g3Hrsyl6y?nb?dJZgft~M4ty{lTi<7Tdht`(Yy&LSAl-~<} z+p=hV7&X<$S$ZQ{H|uzA;0dzCiY2`Xoys`Xj(J(MsUYv0WG!_?z0&F8`^4CACM8== zdkzkK*p;0bY?uF&nGSpMw|HeDonlJKkzHjQ-~^t@b(kP85QNb_Nsz~R>Glbb@I2{Rs-=z`zT^EWH7t3Dvfq6qCVrt~7ek)7 zyU5NTg+B&CnDiy+Q%q_of%(7nR}-_!-eWZd%psxN3?!7>s%gTW13R12%M7^dmDwkY zJb2PuXdYWA-o+=X(UhE&y4E4$r*sIu5NA`}*$IAn|68yvp z|04Q=;@hY4bK(jY_}!bs%>uk(Xl^s1vYOfgdRz-;X52okRBKdN5LN0cWLTL1%gJEm zvPz(%Cl)!uX!6&!Iddj+n3`3hdg0=7zgrK{fY%b*+B_}qfa)?6WI#V>t8acK__*J; z0Ei5?Xy3c!Uf zTp2L@R=}kl7`=Jr5^7ar{EIHfO38DCt;tVqb#}@{IDoI-bA~+Y-ewv~{73!vRxUv0 z%4wWCo+8yan*W3@TQGX*g!G-?I8TU%d>zae!l{J@&r64R|+hyla zfbUYZ@L6`w5AMtzN8{UB54G~W*J~PO7WB$sWxW(w=fK>PvdZg@`f5n@ieGFpn{^d6 zmgxtH|)B60c9jLoNm(H@+8sc-)X67q9(s>Fla!6i=eZ?zah` z)HN1Pp9>hfHgRh@?kR~{Dg{0(%(qd9*;6_ay>H?;Dk=Hq z{dH&;c?q~PmMQoqwhxV<7=snzC-D!^B_})Hyu!s zRQ9GM{PNMd92s=*_NWYSzC!j!pet6)u^zA3Bwu*i4n!<+Co_PQj$|3=>6An}h_K>H zOvIj^czYOz8qLf}Vwx%Aik?rB@)5)-atr;%pMNyV%kmMd%L1@zuo2O*cu-mK@U|RI z%c#yh7859Vl}3BZ&ClHpXEOc1JxorvC2?rB4W~**Bz1lO@<6v@&@j+(!QyP1TLI^6 zHhWXMIx@<4LbI@p{pd~M5r>`a-U}94jQ1}$xe?Kluj3oZ5Zl(Gi8IkXI>@v4y=C6R zuI|i0LXfwjRjS7DPj~;o@lhFW=Cp+QfmgJso3E+zXSRjD?rpCvFW+^zv^23?oIciC zHl=TxS~FGF`Wgfc>H+cVY1!U>yd33A!e2>mTcB^RBIIG zd~2@a=!kdOX=EO7xp`R8{Qw?W&dELlNm(ToQVNI3r3buwJ)ke~HM&rYWuV{j5t_wZ zG{#`YTY=2C>e%MKhxdY@bRepduqVh;I>=7}lGACWsXV0msZ$LUf7BMS>?#qm4YAq>4g|Q`` z|CI{W-4RFhGdiEUO8n>56!t}#oF3pw2yn&&w zCJb>88drK!dy|Tcz{)aKqp7aF=hlN#2SV0vtm>~lQSMhNe$`FXdFx41fx1I1asKio z2g&scSAZ;dO?7+LC=7b-B%4R&a9a%j+HzBU+zGp%C0C5qp$t1`=G15@i%Moaq{Xz* zZ67Wd`f4`d&)4|FRgZy$hv3xWT2nB!{e^~gphmfhoF%4-dyXkV?ov*qJ`uKotg z?6moJ$u1R7&e1QZ5I_Cy=8Rsth|8I1+SuBxz8&|rHO5U|?m$Cw6r@0c8z=9Yh?Bh4 z{0^fOy#3n1ND)|8Ru;V=n|xjAuf@K6?`l;{b}A<;TF*HB4d>}s-usI(J=h91fuQ&= zk}vPV=`s?oxusL2y78ag64%tq^Id%*`o$4h8v~2=LLW9Mw_s=c{BZ!MsDR4gnO>pn zTMg~+sf$?K2}?NBYDGLFdo zRoV*?oD*$A6&GS7;6nD;SqEzkN93KuLVyl>VDOR0j>pJw8@fxoQ1V;J**3hbSN?Z% zD=#;Id-ip1d()o31|fqzum9eYNQl6Rj|O#wTwda+Ltm*1{%Ngft5`sG_e`*)+}`Pl zye;?e+#A|no<6T?7!S}HtFG0WDGv}PAyRf~GW@mzZ_Z%B;vvkOBF!=T%;%ZHIu&vu z!Vnkf_L<2bc=U*0z`=83t^53rc3PNeHd>nZwNb$Bd9(@{Riy6cPrJgod3oz@a0dac_hJKQw2B(>PMZOrELjtG-c?rcg{Rx7f?MmgBss|642>Eb_57FymQzp z=LZ(%p%=kLpSNozEH1O_9$d+NYq4b2A8e%hb*%a`ZA9?Hqo}1To;iDhaAIfL4^R7K z(>K%Jq?es*dx@U!vIqFqGp+32I`C($ynWq9c{KlZ$?n-z-RzZzZgdTL(;ab9Pa3#P z*A3zLE-ofyT2Uw^W)A)Sr~yalv6GObJk`t~BP0Erba{DkNYDDW_ndkhkFO~( z(QRgrh~ns8m$k(VY%0W_0aI{R=@ z9oR0eN&uUqtL9@T6@?zR9FR%nO-h!hC4v;v%(QQ5?jv|;hqSg7Ca5{@)Q;7jj};jt zEO<7XdF$GJn6gpK-0>vMKA7mcRB!BLY_jk27e&F-Pu}EHz+EN$f9z)s`XfCFN9FVYktFVd2>B7BRBQoDe@{_ZrnE$k}KCs zyJY=z{`;DS#s=*|+fuNQvaS$gE+P0~DV!zw(AAfWd7%56@Un?4#E(0A9hEm`n_(gW5bU1PM8h8zh<& zLI)KINB}Q+D8B}r90{$preJvdosPBoTV0+CCh4jeWbG_R_42EXJTb_|*0und)p9XJ z4s{@Vq5R$4+zt{ZW3jjXXfHbF>zVwN!$I7d_{DVm zC+0Se; z)XlHBok&-Xp#Tr}DpSbi7HM}5{Pj$Z88Z=EYj$=PdC8M`r`=O4quAWzSDXCRF95iK zio8FEU46(X_kwM<@6;nZf#1$~cHXYM$tYG5q^H2)c=0qi5|+c)x6nAasg>VH0eSs7 zp044w6cdqX@=`e zvUz}OXc;EO;wGFVW)zTMWb-v=zU%NRYm7TB#&z5|2O5dPZ_ip8i0@sPNZtPup#}n$ z?&}U&dT+h<7#=u2mI|KbgSL!1vX_2kGKq<4KA%>!J%;XN2e?#)ZMieK;J$sm@B12t zt_Aic7!YK_KOL0eId@(#3G_d*5<5$CC1X?;((LHU$_4YofG^J=Tr>#Ub zL-y4SP~8$0l^aFq^nq%tztC??2IRc5aK##TC(rxw6shx#b?2$^A{%Yv{z{Y1hs3>^ zViUa5G9hK+=$@63V14nL>2f!7Mn+>RPh_|I8y`UlFDQWeW9Tm`Ab=Pf|b-=37m9(MlTt1i^|BgWlq zTKRP&k5Z8jZtA->na;^4*J9i^#^lb5ffy`uBsg{inzI1|LSt;-s0`xdM})uYPwopI zAe2Wb{gBz=KgC6ao$NS*=og6%&dOTL;d9@AGzjT�dvtrNxf$7NR3d*+CVtJHD(8 z+#095CFIE$j4OWkM-Yi#0WoDk#UtfwT2-~{SN-gC^qIILZ8U3lkH(ssZ#<_9`GOgZ(R_ZW9Ns7E_po>8nZ4BX(@q!`W%RNuKwPKyum={DvUm~?162~18Fk#a6v>7fKjTMDhfMLQseVO5{_qS? z2Kwzj+@1uk!Q>Mjq?4m(VA|E5CZ=IkrOze1`=TN7_oY|u&B61YFBqPHkvE9iecXc> znu_BfdZH=uZ4Lht>d$7nPr?niE3|{x!{8Zr9hJ;-1C8@D`HcqYT9n*lMYivw8js0y zc`5zt?cXPE?0cB^k6+e1o8K^2N9;po(ld8x^omr#v36G|{DYXP5fBjdX|ur#7J8az ze*Y22Zluk z}TvR1J$*ug|(*r=}!CR(2c~Z+>CXgs3?#6_)SRIjC;@H;Xmhy|cvx&!r z{q*!J4Af7*VxuLov6Alimg|dCWCRxsJGh4+TqnWmtFRtb^djpmDavTuFVmp|jm)8M z*VlNV3`!|kJXtDY0&I4wAFIn<5xi388iYHC?1)IuzXdCZ;Q9_? zBJ*brVqE-RgVF-r{YQ3=o$ryYvq0RZ!2`c2>yQj%%J0=x70BA#r0l7#UD&+UxJg~- z8;G8))X)8ByzseLjj$aj)G5yL6LiTfbDB3$gL1v-Ayol2;Hu)OK}X3it>QjaEISWZ z-us2Ux;?=r1ZXhnZ4!ni;oRr$6X3 zu1T*HeBOCoIkC6y|U4faIBeEUwULiRqAqt*1zuYwY27}uF*1z0} z)7y`e7c2c^epl+jr_v<ZvA;;};716ms`dfrE^rMh<_O zE3RAhpV}D5GmkCaR*FjTh!AsZ`fA+h5PX$M5fDj*3yGd_Dd#vb%xwX>rIJY=gA zPyQG~iy{dRk`M#uz=%Yq^Pb0uzy}X!RK)M==B9Rik6eVOFRoFXWcHfvsk5oS)dyI7 z?2C-^pOxasX(cKPefC@M;v>z^z|gfVvJC&Zl%Ba{h=$Ae?+i*O#zJh4`Ypp2+dYms zDxOt##TWjx@CP*zTRa(JQY3^v=TD@AS+-OIdnl zTE64yR$Kc9jC7V5t57JTAcS4qpd`puajxFa&JZ|JM42$gHnQ%$@|bMA^L3!mKsxpS z_g%dlW&y8o>+tQJHkO>m0dh`AU-h8?rB6UDIgpVcCf@5Si9iqc2sUyy5EF9{*>i`S zL5$eS53ckQdAvJQ3=0c85k-s69zWs;)M!=79G_08z1VqRo^+1na%x3j8k5)<>dCDT=&*DkfAF*@HR> z_%&+CeDVtN!&7xye8ZD3%b#l8VYbceH`gUUY@(xI z6U4B>dXC!H82S1m%iY%e12e@01iTiU2Pm(u)R_DjdeLARm*Xg3PTl52k0P3NLZ!)b z_CJ3{wAMWvhHQFzd$=>y6IAK#1smEL?HyFMS=qp)ZT!l>cgND2{T6E!s~WP5Jle$x z)4cdo+|y8hXJhkDffHGBqjfwG(&*4^^^( zG|M;sRacLvm-@<^ErF6K5#uJaN}ioi@wC{gBMQqU63nwz{!wHYaGd&6M`3c?^$}>W zB&cw?G^jB~tXYQgB>DZ&)8548groMJm(J{vo^?LZQuK%AV|x$Lyo4?Pb;@Ccn}spX z{`Zc6`L#+Q(eZaGm4hQ_hqd4{2?>b~SPvTkh?UxQq00ZZJ2Wx?4-=hOLga^+^Lr<) zu^rxX50%kBAN=xJnSjPm4EYgwq>RffEisbS5B;wYoL4?naZO!Zbz}qnK*~3DaoH;# z;U3QiG&Z`PkDb9sw;QEhc<+WyAI@C8bZ%FtS@J#_zh>Lqv(ENOJ0gu#zxu(%J0CLA z8bt71h4G5<6cp;>pKj;?E&7OnZ@GR`$>O6Wh^P37~OCdl>T_H9N4*XSK0`%5Q}tE!}gP5j-* zqFJh%{bGXNUkk#(Lq)+d;h0SC^j{9h_YDqsNsIn`ybXM;z6>K5yE?Mwxk2I9Y3M#i zd16VIoa-n8jgX6v_YW#Grf(o|8=5S`ix4%M$bWy}0in`GOs>!x9Wm#5Vy2Qs+eA%c zsAh`M-0oKf2cH*cx0;`*UE(WVy2rKn$@|PHIcQ$O1i#33Z1uPTF-IV#0S3V+!?vI~ z*=IY>8>b<6g4q;e9*56`92_+Dvj_HUg25z4Zc`f=R9?9`hvbK2*LOpz0ky~JwpIEd z#s2)o#q^$@^*AeTF)xOs0AjCtDta1VE;y$BY;L7Ew zVZFusznwVZY(w|vKV|zBwFE~X&>lJaz>jQ6MVGoZ;UhU_=h2Pw^&3ZZ!^RQ;_Xlg4 z?iX{q_Vo#0V*<_#+<}kR12Og=KN=Yzhq&E%$c$L!rvNo_B>B* zceJHNC|%57=xcQJ5h*#j;je{-CYzqHi${UYs5gACbW(iVJX=7VpA>Oiy;MWW^pUkq zzr0w;4eGBttCJ+nZ%R;o<0PR?QKFzzOUDVkBJ$t#isKk*FmU~E{dl-(oyaDkM-lV< zxg1j(o><&ywubUd!P`Y%0@bYm&g{`v%d&9mtg|g>m6XT&s3keAj03PW|Kj!S*e4P(_|4~cAYRy zRZ(U9_~^K}xK2+`Px1Tf&6vkcS|HRiC(0t>gkY&y@UNN}~(FVwGL79#rZb2wBM;Fas#SWFQLT z7f*=u_A29>$sv0D8FWL7LP3Uy+@S_UYJosin#}TM2H>%hFZZ zd&sI>;VKH=RJmSa-kTcx$l<<;07JE*)tc#2fr!qus#eX@?-<_+lp|N3P0%>Bu2@ru zg}971#G2X;86Y2HD{|l56%~yXKZdt}Hg2~eRlhYXJB#8`OpxL~XR#CpG(9ueP%xzL zj6UL`&UU52!NA}n&U`Z4wUr4F;T1q($dH@=*Q0l_nkQCCPOC+!FO;vY@r7whM=-|u zV35XR!Ld4afE+kV#tYKP$t+7;H7qShnA&@%Pc(Hdh=|-d9d9devG&+tM3!FJJQ^k; zWs%_ea^h#dj282qf=Wk3F%fTmVc~7*+fe7lRYOeY>Wb%a7^E}*Q-duvvZKK+yZb13 zCj(tb4h5t7?N$WlKkq9Kgw0bn8hGpsSp2H26oRa*P$CcWrH{!7C|{(C9#=|BGHsb? z0PB9FC>+_Pi&9bMTRC1HYSv3sU*Da(+O?n42r^42j6arT^4)vRct*p;&>ux-jcwn? z2nOcztjgZI%e)C_{oqF-a?-@=m~ktJf~FUIl=tyGJ$(&(anZr_HY_EmssO&Q${Bt$ zDznG@yBQh~Fq(*-05SU^jZEfT0JvYyopVv)V4@$q$(acA)8R}V=C1>m5BnEP*M8OU@krO7aCeEeL%qdcuV-~K$UvjZMR29Pm(twaP2F6t(~8i2AtkD;PE0OL zM}{q7aUd|?X+OA=i4zqSHPL71SyESb?Lw!Jr;se4;A9rrMBbjAj?z6~t=Vs2;PX91 zMZ!6Dl#2PoW>w?8l?I2d{q3ox<@w(JDAJ|zZ?c$+5lQ029ewrVn4;d#6qB^?nOdhL zVF6IYg!SrkiCarc^YcFY_j74I+$=2rh9GvjyoKdu0^r9&{W(OnKDE$L$3+gzf8Fm} za=4q|;<|+RMRy>mcs8tj@HxQP)Pbr7(A66%4^Tlbpxqh(0zgR>UrAAMwn{#hS7L7^ z!pfY5U6NSug^r|9oQI$4lF$o0Bh?Y^r~#+nL6M2puecBt79CMx_%v0Yl9H@#!5=BLLXjZ zlVyTJFu`8Vl@XgNxAAWM>%BW6YOLca5mAwVZ&B0RG_b3^ENvHwoeFNkWQ2}iS|Kic$WDw2@GM~g*`i$Obo+pl5^>TC z#t_^P=$t+=`cf3H1?=xp04Vk=okecf3e#xFt#Qan=qBYp)=HPkD1b;}wHH5p47jPY zkT0?#Avl9MJ;Pm=o4|c>1}JK6m$Fnl0$v;wrV7QWPC3L#?)T8{w~?I_{~bXO5vStO zc9Niy$y|h}2buw|+nN&M?|aW@wY4K6;_IVipjl|7z<>a(RP-6RZ%YLbM}217-Qk;J z1slZ7SkmvnU<7KPFTl`tgTR*Z#83@U0`D*Fyi9;Vk;+#7y7F5Tu|M|_yb>p~`caVL zn5Ns%AMGGCw88Q&_he2|qEb5n$|kAQ*qVfNA6sWyMp`9o9`g_OK*?>GwsJdzw5& zZF`Wlbvu|=sO_QzVucstcRrN2Y4GYUBHvf`8==D&`R`%=-VgQ}4mXk0dV7Oy9jRS9 z8-m-1O(qbNh3l_29ByD1HeYKqEI1Ie{c*T#JV~4`#FJ?YA5EOK`k9FL0=6|OVxgwCRyC*_Ak-ZB-KctAc?A~99?K?er z513^(YN~=P5g{U+(TCncU(MT_7PB!?h)?`Y590fo|A(5rlRq!*ph^iic)cAR*=rx9ngbdHFP0ZqJ@ObPAGZrXpfK z*oX)SfQgC-`=R(-*?eKs_vJ&QIyJ>6JgiWo0SGZ_D^oyf4n<;e9Assch8`X}ac;~N zfJIY)d!POw!g0rpjLirLYNKDFF*#dUh{7ldf9(4unhb)E&f=pUFY+PxNfS3DL!Lfl2+?nHT}&eTd`BRiH?Y7``WO&YNdIHKHe3gXP< zXg>?sM3t{uqbhVX>2SQ(AS~g-RLgy8Nsv5^mhMS^zH5{p?!SZCO+q(NxX|}HDVe!i zzugEI`@1~@`41q6EH+90?|eNYhi;*pH%W2#E`)7QrxAe(yS`3-9&(H&-h!=GQA=e$ z|29ga)bC^at(3M1>@JBE(MYY)q*R)K=I0wkZx}&0y!+z|4M7mCbKbv8_nxQm(=>hF z-2Pk9&QbdBa){z^Ffg|+HTa@}KlR($U5;{kyo6KZN@^_Fph_43rH=f2_k^{k&Iu>C zp*2vd&WrB?VFmV1S#o26-Me-I^jM#j zO<3|la$?X~{bH*6FCvkqbQ9Z`r)sy{VOF|YzjRU(mGxysLT4yI%23H?&75pRv(wWK zea>IC1RswL0J_3$Tr+a}B)EYgkmenFUrd}=e80~nM|t1mYSY(ULxQ4AOi;KDE0O96 zrpuDNN16}+{wv^wh<9=FTs19nvU{g+Gp~AKCkD<%h0Q^h6Yx!fM>Xezo)l&<>bC(- zNQKBubc7o!T4-w5UCxzHsqfO|*oXmJ7sW!||K5Wz`1%*fj4QUt!%|FYC^t`%BH>9G z@`EN@Dx~-}ClRt7E9;)J9cTn?nFLPd5n1*ci;j{exP-(whcI0}+Lh+?SI+n>AE7k7bY0v;)g@wL2!~>zto02LR1qh zpIw)QQiY1mkBYT4VjH6ss^Ut6`Cpp!GqDc{;Yl+;Cku?n4~EgF(UsLH3jJy-D!|js zSFa1$PeRw*woXdQw4;p7a9FB^aP>%oV5*17m+QG1U>iS2JTEVAO;v4W$ERE9FT2Kr zB%}K}oNU;&Vbn~BK{U-Zzcv%#9^wWf)1qy(pD0^(Sc)P-jw13ssHnbAD;G^d5~a$Wrv#n= zx-GU{p!ZkLxP%_gwcp@VJ1^?ACqgr(NuJfHuc8hIUzor^1Tc^o(-A9fzs_iHu(3=r z>rufM0J#_$*htdJmsOKB0bdD9(hb4ekgosWi!mrOy<(3bmWtaI6(>Ao*{*d}I{sHo zsLg-`N*htpH${X`CQZ#Y+=M5~8)>JWowHFyBK+TB2DBExX^vQ@LsV;5j{xp}D`8=u z65d52>M#n>mBgq%gtE`v?ogBJ3k0vC`TL&Vz~3EBd{p=#A*!^GLkq9q_b2ySP=uc< z?9l_<7P|YF=EMZk`%Hg@usk@`pG_O8jD|}(a~m%2@~`YB&F=j>6zgj$aE^GqkE6Nc zfe0Qo4^O*| zX#H|3fI)VsquI&KOe?9uzw$54o(Kcy6ndc?lz%I2p1Zy zu5Kv_n0z}WRG6+iCzAh6_d!+ZmEU9}KaG%&h|ClAs}|A`CL)melwT}D7}6~<=-)Yc zUbv^?LcKC>fwZqJ5Oh#(IXrM9;0^O;~ zEFSDFyyfDBe+_kTV?uSs4BRMObEC*tvXOmM#C6gSl2SkQE~ttO{eim=yR6@d@my3p zr6eQ{>9DUD6?r?s8dc91hopF@r)B->U)6?_UMHa?*4n8f66Q)2)gu+_z36D z*W2!bIXIdDZbA=GbOzRx&_h9Oy3ip0{XY6FO8b$+?x7MUjJJ9?(qqygx`@88J+!sG zIvI_V;iP&`=1EjWagBx$ho~?ZZm@_R`!XZvN0G#akgEmbir#k<;TTWa(i%{emI<-11%pqMo>mGw=b z50Z+gpm50?5Winlp~&*|4(7oe_dB()TWQ8k(jg58;h8W`)$ZTL(CdGB(DR@G z5XOtojNhs0Z%l;lx&0gcLom@e!4YZaBu3fuIL>+1v91T|^6yDwm*1F`H$quY}E)<!Q&M^UftT|AZnK8^-yS8T`N9bfb`*vmB z&yHoIuZ!b`B#sRe8rqDSyb3~mz3nfS!6LUyyr}>ra>&UR%PUb$9fxml3wZ+6wX|q+ zJ~p2=>6w4w-9igL(`aHNrXyDx(*r$|&;gB*kR0v@Bja`eTc2c7cr${NocL6$OFA4C z4*Lh1xTt(jR{;?W%&4qr@~L(!XtVR6i$^-b(i0gA2D*X(j8WlrKu@{W+T$w5jl&Bm z6#*Hay6E+DziT(gDqbhXqYt6sbhUHH9QqP4eH{k^iaExoj{i8sJi4Glay~;Zf24yq z3sd&Vvri#iGYYloV>XYF_uE7B7(7+TFdvVev?vr@vGF8FR#GU*;0f*eXv!3`UG}_( z04D${gI!XTiPY>41q=)n^)1-%tGQ;{bakFOxCN^?*1=_22naPm%Y0PAik?no9Le>N;KPSUaJ=L8N_d6MIjv|y~?h9}e6-{`1 zvn{4LYYVGbN=wpaWuL+x!;>a^7DUz`LJ~m!ZBF^`AfpChiBhFzUp@u01_a>jL{j8> zD5B9uEU};ONRj1iEiYf!F0Vpy&n2Go=rYzux>0HOjvN}_880HI`g!i09;su5%wXGJ z=EPfTf=~u_x$6{O*s9Z$C@h2UlY2rSoes6Z>uzih&)qm1Wpdun&k5+NaNDOE%Xfn( zf1WfRWC{1NuZEny6@1QWSx3eP;%A;wP>oo~XWQPAWw+N8A%F>>(+|8@-2fnR|5844*ywF|99nuI#hBZ5Xpi zN+LTdb!ACGPYls84?g7-IX;hl?T9iq0Bx>GA?X(!z=CX@(#k3^iJogRRs(d}@^=wQ zx*c{%pVnW(SCT)9U78@d8uWU!Hv~s19w1&vGLP-Q;AYomK)*R8q07;neZhmP>uch) z0Osvq`WI8@tOOIs{{{^AgMlKeD}17T-*UVA)Az+>(d0?}?qt1H#6>tSPB`>9GZv%y zu&w%vF-$3oVLQSiI+-ts>3-n`5Gf~6$u?i~eI>0o0Wes(vqKkv7-GGOa^O$v?|0RxzSgDe?Lkc z?d*J5GOOmLD(G?AMMaN2usp->fYe$nX3-p4P8ec)X%&DSc^ZDSR& zZ4L9K9!?U%O^&zT-g7@55|V3jgvW2mXs6)<5v2vE5U+Zosd8zDx*##8W0X7B^vhL{ z>lb(G5OA6@xzf~){o~h~1SYK)rA9--$+wM}_ zPRR&zrhVHUg?lPi4C4hq7Z(RW+>KxGsp);k7VYp8-Bo#2eu9A!LBhgOeeADNLO#^F zU;7|?&Ue~3cbxBICCdQt0o^S>jiJ#cIq+H||aRn<=aY!h^O8pgM{ z$59mlnDCiry~UO&MH6`i_2A_a68t;|TLrrvdms1Sb0LCE_RLA88K$I|HXQ6xun{~L zDN2&r2pXI+4NS_{ozH9*lbr{bTkjy6Hrf*JgJAVxTzDAOR7DCFeeN5dm&aBn$TUz& zSa7r%2>p4YYOvh1(mB}6p&spXH2umt$k(I+cz&XE;NJA~bJlWwNX0xNh($v_y;xF& zisLhd%zf)4NT;>ZLiBORz+kP&t#Ej@tA%*6)hX(8nEte<*AF=yg=?5~4MG#tEB}ud z`z$VhzxakJ1k6);A_%Sz_h*Ln9EV4!SV&7l#>4(5auAa9IBrwXoP6wg*uCuoS)Oo4 zC5kn)&H9H^kVJW$p8({dq&cVL)9DHIST%Z7_r*M?4pg`V8h(b+=Cl3jvExa{Lmiyu z;a`-q_@0JT^)3EBa84DwHxkXkJq0PekGA>;_|-q&;~rL{9tb?xp@P{9&5B%Ww_7U- z6gDJ_s)Ogt&`eqLYXNIdN^afoRE6-Rv= z)1cqL()@xiK1&H4t#kK?dA};)8gl*UYAK3#L-|Q?tDeqdUqaCfm=wtWif}nTvcNq9 zt!!m&{d~Ta>vM{Tb%x&0i>3++GHO#ElU4pE_ zN;{woFL%GIvx<+AB`ADMnRYXMa`#iPTjSPzyd~ZGgcFnHXf2U={4?&rU|J)w0UF3dy z1ZIRJxWv%PK~%`Mfe3(CxX6Q`{IvT>CN<}uyQ*Z6Ipo3DvS9s&ZU7;vuRdOUpIRCA zBl0=yzNpj^%iHxpPDL45mACeI2FB224`h?j_Y(YQ$zpff{Orq*DoCk z@*bsPeQd{F$Ahk0A|=0?6t1l&W?o6A*F{{@l(3;)7cjHdT%dNgHZVQv4;;*?AWHgU zfgcakP}e z14#re_&?RP(Qg0DgN2kjCP0k=<=^9>L4~YMWN?5_z^mhOF`b4SgKvYA>=SZtlJ8ZC z{zws~XEVz&ZBar->WQzBva}>W8rsaFSRXqbM5rp|@g3DVS~bS%DntK3h8Ti@$c3GN z26~M z2H1s1x!#vtGUp<7T6dlQ!IEsBiY=Nk^S7C;scfDzFI&-JgyAd23^jukoM*VBu+=+y ztT4_{Zk~tc1fJN9BKEZ*8xT)_Sb+_9?)cR*L$uU~cJIwMJ&{j?_lWVcySQ4EVm~Gj zcD!(_pd3B(g#(^Vk-%|6wFUlFYgtQO4{Jv)b4jEdBWCnt`>VGP4>Db)i%Em-dib7>mQDH@PI{$~FDxhj(PyFY2WEg0AtQ&_!l&RyPyAPk85C^)Z zWW<@cL>%<GDBIBYcV+2bHRIj$OB&Dy~UcDpx*kgfYMl-aL7uwQq8Vw8fM zbYIy+61Sy_Vd(^ji}Yl+?{^Q0*A>*k^~HxPhC6`8dAKA@Kz`&BY7WH;BkN95T28X4 zNUrkhzj#g@Cg18iOI&4)mXi9gY{=BOv1O=El6>e&bkFZDy%mY^L_E==1{9Qhkl)+5)7}=rfK#*)N^g`?Fp%nHi*_ht)b4IO3}c}SU?Zl=s%mMbs;Ys8sV{i_o{neV9;rqiXQAx zoZ2Vv>(BBlUQjsZ;om)8-E8&mH~+^;SmmD$KbEg-`8a54bJ$e_;9$t(g)tI99qhOg z*ZT1NqY}!(;frQvG2b13y30X<|s!g_5PUtr6cm)s1B=!Tzkp=2Flu;X4k1Utyw{+}`e>$$ zULydqF#I?F?`ChyC{O<%lMW^KwzoAkSLfA;-R&61+Qqge{G8F#XD_iCxy3i2(ecwp-C@ho5_BJ$FZ{R z>XQV>Uw`wgd&%)-7FT zURiE;*yQ$fV*q7Xc)0&JmYNTk8!k$`@A03ojBw}cLhI7QFAxJXhsqv7=QUWzv&^ZehAI zEy(Shrw(h-YxPNB7Jj3tbw|Bngn(KB>7?A;TsAU~>%S&(IxXkSp>g*-;SP*fp4G$T z`jnPp!kG$^x1mM*?Dp;(zE726I+mZG13iSVcXwvDNbAFls)=P*LJ!ITlU2J@Ia7;QlQA}Wv0@oZm&R{-P5ubayp#^YY%mkw@G9k-Gy@h(*w%fMYD&=->=SN4mP9VTB7|EyuS$%roF=ytn zG+Q5?7pJ_g!gF47C4)1yL~n^C-TJ31$HP)_(fc-LS;>rt3mOL-=V1ROV@R+Q3EV;) zjoz{U08Cf3Ek$_6lEVS&o>5GcL6FYrDzG86YTpZ*=G+Y65ocLt3H(jf2j;5XRul5 z`yLmBZ`@4zzf+PAG?IlH^ELoogHWX3OpD{wP5s{g%kPhFQwzzm;ey{U5;%zrJpe9r zPUvo*b4qgOQu4Y%dJw^%aGKH#oo0AS0GtNV1%;Ec`BE0trQaF;8Mm)YBb20G#=nuB`A zzS|(r%GSHmLbG81HK_)+2rHcyKQVr`@1EYC+EaYS6q`GmJLk4qAW~`bh%}cLpX4vX z1}w{B(7eJDFG&fJjph@Xt^)<(WO$5NX_4q7(-?8v+p4m-W&5nPR@9~gUKdY2Jx3AJ zRIELOC;@7OHpOb)xxr;|N$>u)iCygi$r2K7?QDBVTy6TYf-UG}RaH_H8zO6we4V42 ze@DAH_-m~u&y7>Zt-gED_0w^~jOmUQv<(~-ohtIG33fIH5W#<*M$hB=&lfLt9;Z`o+Wfi36^y62T+K!B7gI6zLEkkfBDYDZ)W4K`>`-Bw8%p`6#>|v8oXvdFXX>}( zo~S4u9JJM>bG0U@)1b}Dy;+sm*4|)CPGS)B57&s(ri8MG><-Rlw|8U_*Sn8xe6oG9 zin!=e>cNt#WQ>hZa(~2*vY~c`7>QF>d|m9j2)~hGh(>%KudP7>$j&5@IK5frZ%H=BmoviyrJTNpg)b2;AO|h`$2+($0sAs zTjSD`J`_mHP-F{WO z`igp?i-`icb&~RaI7|dfGz7 zM|I|U&6dw0m$N{xvxb6+kH5UUO!9k==0j(~s0EJ%{fmT#hOUS<{YU6WEx~Dfa&aLr zA~?X#*+Bl&IQIHsc|2$KYhycQs;!5Oup3HQ6}@ZT8g6Upaww5$aU#4A2ataf%K{2< z*V1*}ai~k|%T!PV3kouH#TJkHU8AE$dxFlB|8+265?zYo#d{Q)xJCG_NH>@|eW3j5 zh1lsdXe6V6QEViczuT;~YL%1WMtv3gwf;yr7+r4jdoBM{nTv$!U4 z^{1ETm#Mbft}9XoAfSYaMlFWSv~wbTwgILP_cvoo12V2B3B(XH_d=tP>!a~lh<`>_ z61a}LlFmW+IdtFO@2QF3RCXwJr%4S+I(c6>{aX|rb@P&~uiAw}EDN-m$(r4gruKA} zhMwIW{{W}#9YYIBZ}q%8jGN5-w&%5^bPF2Oo15q{U?DM--NZUF(iAzdTNpCg>Z=_@ zMahowY0C4sR%l7}p_@;sGn*S4I~1VQ{8MH=*noefc*alL+pBssFsv72d(&plF_S%f z0}YIylXqLbD3(duq&r|{l}q@o7{Y)E!}^Irb!1BSNr`(Wq(+;;ji9ojYabQ{EAG=+ zI7oJgKDu=HePiaFdrj+hvP;4a6U?ZSels zT2$geDqSJ!QVa`?G|l>oi>k3ucQ{zDK(*a(wM zN%pB3$npsxdFBD&{8Bi(g=TyQ4XwC#$gzjt^>VbCP{( z91`8`(LWCzb`AsQr8sO(@bdCv@b>IHb&=BBSMe%8GR9J69c+zeE1{tA)lnCObg=ca zfA7CcO?c3@n0Sm&9nIMl*TEx4^O#V#QSFb%Gumnj7oJD9$Oj#VJMiNPpkvS5CuATDj1FbT8gzDvFnFOyY!B+%jX$i z;ZMcAc8f!2MIi?Y_FiiCR3tq4Opf?ju6?~`nyz0*!gu8E7p6#fZL+gjO16+-Txo&h zXhWkXnP|$b!O=T}XqL>dMhbXSL{q#l<$XN8W~)talPR-=@lH3u2XaJd1$b?){~} z^wu$&r^Xx{F_2w)>^0h3t)>{lbsrPjJOFJLR6wdJ;fc#X?P)U?!%Um0m&;dmiZWKk4D*Vp&wRfVzMQH4IZMk;=TPWP!Fyj<1AGs%x(L6 zdvekdTD)I!3)76W5v9ARipzc0UoY&Z7DQJKC+Z0t(VLQe=G~#PwkYmomBsY%&X<@i zCNd250y$kQBq{7g+Fx49DKM71%{^EFi6=77ubq+dJ;>9)@AU2)+zlRC=>_ksIO@rh zfxTbKm*v0y`rtn4$5xsI9c$#ub0dk!jYyFS8Ibn(MH59mOeP(T25%YApCz?;SSmV{ ze{Uv#9A90;6cd<|U@U)5&zCEX*vY_YL&dZ3FCdi3~ zRy7t;Y^5sva6Iflf13guM&r^qtaVVj(K|24Yq~g-Ruc*;&%2pKEM?dY_0d(G)W*Bv%mheTF$%qS8g*^%J}rmykyM#~F97 zZ)w^>4rvj`#vrfK+!QuoP)-^`@lVGaCr=;A$q$Sr`(dH!8=K+SxSan!r9(dYf%y*8 zy-0#QpO~X`0^DlS&HUV+S$*a_njC8dyK!3&K@f3U@HJ<&m}vefrA6S5*2dwXF)0N_=5nL)nPZe9zLjhdNDAUA49L1wBbBHo2nUX^i=l zGM6M%fzJtwWo9GiH@Dp;kM1O5Q@E%T8=dS^n8GGT^uGx}C`GY?!i+idwDlM_NPo1$ z5Fm7yw_RRd`xmKL$v4xXUIy(HBuR;nny-r-*x+qgF~|E)Qw|yzhe@($PNU>WW^=KY%k13IhD%}@72#hCwGa(PN{DC36ADa$W05Qf@)nF5Fdl=X z<#EspVyA9-BvdLRN^fKBe%*lF%~G6|ab4#laX}!|x=x(t>$+^_r2mbrt|*GVN;@Sv zn1ei{9NVxdmH@;U;rY>@vG<)8%ET{JxXKU6wfS$s)AJ?=P%q4l5#KHwk(Ucx4GKl3 z)R870jtw61x-Q`Rx6Cxl&h|rtk=#pDl!=9!%H5oy%fW~j3q}$&Vspu0{m6NjS;7`V zW(GBZ$w}gRuOgL<8RO&%9DtShJi}NHQQTu|ysdLA{a~a0>QT*y6Rb3m2ata?YnoVg z6Re|w#=*hC>(R#~ze@qflej7a#@P=fp7k7}rBr(=;CVAe*@!1|X5&7< z$b^gm`*`FgxDPvPixtg1XIk9&mer^D z3Kt!;^i^5|KJNq)!J4trAX8TI%QyKej0W-?!ewb1;zPx!6Z4Uu8MDmaK8eAyYp`Q} z4lUL9eRx5*+Z7PP#&9%4f+oaP8L{<9kal6MEb-hgvO}=oFj}PC*bO~g7*0)$@2;u) z@$xJ90QHVmT6;FP(8b-?gQ|Zb+B$c4Uz9qQp}On$R(&G@PgmLn%IaC_WSux3RA%(t z6t{^;;J=z5YNDoa&`3X+zO0rP&I|)9Yc>;F{lUkEPu7;e&5AzhWJ4-7tFQT;$G_hW zk25Zpj~Im_~aXgJXT1<{Pk} zZ4LH9!lb98M3jlXtXeS--n?p`;(zJ(nNja2%|EFjU4Aizd;+qHs2F;M4z|SJH4#@K zsT&O`JaUTIUETIqT#*Hg8J!D^T&W9ExG1Z)ajVa}2J(Kl#@ay^dJm8|(W<`o%~G)k zgYl``9EaaMMSl5Z;!x|(_nT^dsh;N8{6B(4X@(9w>9n*-BIbm;cxY(LSttrDNFot- zl&FBn=TOq|pwIwyW{kl1?3qqJg4@3anhMG#b1W11Cru#ubXjqIr)_bb%Yew+@UoT> zcTG^@5w;Z@5OrnlAv3ywry1t7eyvG)EcYlz6=X<2jV2>GK$f^i@<~*6V<5;jN2l~8 zKM7ie@yisCb?LFyBW1uL@7yZ>;`}!rqS(nVm@l|CtPwsypvhOJ0_Ae%k5@bPp-p(k zGMou2z$Y!+%I_8@O(8A{y*qW;O%93KzYP;#4^~KT8~s5E{^v5wIrA5#-Q{*Xx*}WV$TQq z#A<~R@nz+8{`0q`Yw3tJpX*M_vPNcT_6I>*zTpn0E*Gz6M}ttIB}d3(Pja!$#Iwsx zVn1rb!-+ct?+$yxF*;fMmQod4eNp=|_o;nfk9HzKZhVQ%7u34`HqYs4x>jc^bEZf` z!S@k*xK89|-QO5#Dac7&bg#yOWRL{Ui` zZ;E6%f)0xP%JVq@7A@O)vnr*R0~ip%UX;TP!@3wq)ggmCD#d0dK*wIY*6tc+Zq<&3 z={zIq)PD|bqhh<66yH<3LJ!G^*3!HnOsJ;kigzs*zsn3(0k>#u=ecC$QJQz>LHfpc zrtg2J8*caBQc^=qsgRt8`d3!aCr-dd+^w~`>=T*vs8E@CNZ2$esVEPx03Ru&m{WLT zmun zCO_5GFO(4nRX3{H1}-zE!ycu~EsX-3Q_MR7?}?&WLw2g*`f~YGw6Wyw^oREsRF@I< zJGVNnFK>D~+5W9uxv4!>oAg3{#vN5tIOCPC;R3;F9F=O4qQfB`JyYxENh{=z!A1&- z0;W-I_6cuLmhfKQ-ZV1c)i`VYGY^dT-P?S4a4G5*%*uX391#p%*bk22nDTT%Q&fn$ z&`*nsD!TMZSB^d`$x5d5;;NPlFIBp{T`U7DF^!a8Mp2Jjrsidjw{0vL;EkAinSe2( zNL=Omns)RZLGe)8Io$AM(P=R-iH94uski$aBYN-?a)@&TWTTFMgGhJGo@j!lxpCzB2iV90Hx?hXm z%;s{YhD~0u3PVN7km}D=s(3NOAc^mT!7C+8KBo(Ek4fw+=mDC`(bXo_Rh2f=7AP{z z7;wcrAp`scw8Vg});6EIuap2%X6i6!fv#`mg18VbNuSe5J=;M}kME!$RG8>bui@k8 z_@B)Zv`D)s9ja{<9dlg*ucyfwdnI41GGKZIKTY2s$yjJxF{F+JB%i(|d=P-Iq35m_ zl_X=nEt{>fU2-j_oPh;a`}}5y5pX0Xmf3AsXzn^F+q51B80#ic`}y3_$7<4S86%if zoWXGijdX$tmfs-q^!%yxDc@LQZa7oh8CPGx?F$c?@K!|2`I?rzogsbN48+#n ztSxbzTVY-;_mSzcN%6RKaq_wo5s`cH%V+l=Q;wgtz|k9Lg}2XTYZ*x zuRxr#ry3?AMdbjxiY~?OXvR)fJXzXZ>m=O;gaH>h( z_(P=n9I}nf(tUNL2TFAXV>9N*xJmG`K{ zAtO?zlj}sqGIvv@VG+B^hsr0*(_zARbj#0=)T$Jly?3u_PPEj*$q>V;Ds5m+iG|GJA&&UDF9rK zMG6iGAXF?hvtZTeqz)@}l{`c5a{%3)8fKRU|9anB9`R*02{=a(J~O`BXs?N@V>*Q; zjOV@SPg1JVbGug=7RR0GoY4Wao=B@*LA!3>;6HNDU9_uRS`VbP2n7*tP6j{fS>&m) z;r1+y`W5qB!Zx{N7n+0F63Hly!qG5Tfv%tBKA!GAUOE$xs-$3VRX*ZmyAbB1!xt}- z$D8~vJGC;8=GQU9nJJHc$5*^Lgc(+>#_g5ej}>>*y^srkElPl{;DT^rbu;uhfk(^U z>DUbjpYIork9!`12;767Z)-2aTKvlkG|4C0m>XgAF-q=mOa%=V#I4=V^XHb+Wj0X48F{0Z>)`Ip4^|7Lz@;P9il%Ogs#(2q>K=Ipi#S7}NuvU6E0IIsP(mO1HCTZlN zD&hGLM%8NJL86ca=r^%M!$3w($Cre-_K|RUGRR6RtB1csPj#}MAsmgbuB~u~Da_(n zqt!FJ!w@Xro(tOqJ6X?!8FyuB1_UzFvP6m->m5>6yPjJM3!a7$IhC+Yk`Vpzt#n^L z+I!t~PI);FD7;$_4&K4U^j`c5na{Lgmv9jouj&P8x}#6MiL=%hQNw291(0i}NX_X) zE;;M3HF`h&`ukU8s)v*4MW!G~!<_vJPfJ{o&M8zfeijvcRO3rgP}deRF434aZmVr9 zu(;~;smk^u+`E7Hoy)Q&^Db2}&E?C$C)jC8eA35@jn?Rtz8R&qH`c2|SD#lWV50PWDj%T9wy zUolox#D&|daD}8gFwrygv_3?C?u=klAjkq&*{(dT)&KlnS?edxs&->-awk(z3_%H~ zk~W(KP1-Z^$#bnt+CB2NjCePFRw?9-&Stjw)1H$JBhLf!Bzk@XOR-#U&;}j_Gh8t) z6}3hFbrkMbtP^$XB-6rqiY47^!=+I8Mk)F10Swo1hXp|?bsvM)>i zrll*cZp!Y1Uj=kOZWbx$r@!vQ=IdRPErHq&Qc?f^$ZyFDG{N=H5e0?@)Re5)&}*<@XJRv9i5}JsB%nma3mZkoDF@NogvYRSPwE z-8Q!U)e?c*Ea{DAA2t&s#kIrx!j1ODh?%^)@!4OyOK_dA_SU@Tb5`pWzgH^NoYl`- zs0#`}ZZv&`y0yTL+M6Mw=Jk#FBuf=3pZoh)n+2Wg9#n9-A!E}|pYpP~FLfe<^-ut4>4MynP~0sN0-x;d!_dyosk>&JJ6O=NSKvrYj@B&r#uPx zkgHe1MNl1<*O>cpX7GM{1la_{s<@143gOuln1k~-VKW2rgxUt~W9veaeYEA4+fdCy zsVHeKXer&w?p`+*CIjx%$sQr|bZVIk1mU$2sbQX6RCIJ9CA!c6c3mpnnny}XYKXbJ zRO6^?r*k6{kEl*@9<>w0KIVW(RPYy?*R0h(>|kmc=T*wW%Wh#Pr6 zRf-HdXpS!Xb+gk?1Z8IdTaP3MKhiO65;gxdfGGa7Xz=xiZ5 zc8+q4oy#u!+UynnR+=>e?OL@v3?KalneWe8swCd@obIcjZGsS?EDfN)J%I(ZemH_Z z(fbq-!a$C;sHk73beHk|Dptwo)#Pc@>r83(Ftz#@_XPeNZl~*+#MXJi`;zpR|7-27 zqoVqvzu^Hvx&;MK5Ky`qLg_APq@`mB0ZCzoRJyynK^>4TDQW5M7=|I<%lCbr zf1dTczrWtQ7A!6^>z;kj-e;e^_t|@Yh7vVx=%?&;W?-gxUl7_4yZWJC1S5Rin;E9M z4zFnjxJ3kcb+p^s#d9`>@_Po8WS)1wBF=iZju5TrUOnznO6!V^18rRrhLb6uStt11 zUd%ax6deok;AwH;-*+c_&gFSTj^Lg@2c?~~<<8kxX4F5(WTSp~7@;4usMKsNGdSO1DJ_^F z=dXO(l+(`Se3=FBR4U~P47es7ktW8`(7)q*E?B`{rTMN40Oi)-2pRsF1>`YI&~IG% z?5}ustU8`r2$(soWn*qSuH~+n%mYd zb5YL}A}jWvHFgrOH3VK;UryHGiMn)s{S=q8%^=}R5KiSXGRb@|78Dp?MAA;8fCHa1 zISO6ID?rP}9eZ7a7Zyb2^`vPDhvKgU^E;uRQF}u6@ssu*ld7m;glR0i z{jcoSdobMDKKZC*;p%}9O)Bt zJ)K~>NNCL-wAabNbQ|N9uWL{vk>`EwIc((Fn^<8TIWi*b9Cz09S^?+|O2@$9@z7!< zLo|Sg^wSeD%RE`;#NPd?A~bNU$}_{;*?+fz8lql^b`QZM&7B$ld7 z5%`(0^7WM%nB=-L#{F@8mF+kCP5}am$`x8F#T4EUyKZrJLVwpNHhwPDhyM3AE27t& zoKq2Gf6{VXTMwAW-Ck zrZ*d@o#&n$nKwmezxdVTaHOlA&jr5DtbCkKWQWXH2uOSLX~ocT?&HAS8JlY$+kj8q zRv5%!VJMcw#@N5bCAW-LQ4vDaj{nwZ#Fd6vh~2^yf6=4(=A{cQp%vPHYgk$5qxWPP z9=-O z8@!Hz0!tZBq|;6YfZx(CT=iy|Ly0`?-+o{wn)y-Y@589@&5k58ayx++hzv?QZ5_?U zDvK1BI0ayo_qZWLtCDZ*aV%Or0Lu~@W7~(Owv{A>hlUhPPJQmBF3h}jexB&FsE@L3 zQR+;6b)vRJLYe^08}G$=ee-iqDZq&HBW1`YZkQlC+q(i@H$AA+9cG-*YH`r2^OS#l z7S=3*H%e`jaeSmAdUMu}Ek%K_KKt=Pml81h_7wU?ueCxS(?)99;%X1uwR#?Q_^xzC zY#Jb{CMsW_#ie>}ItfXFC>-|{!(Bk5QvfK(`JLVQH%Gs*ZB?U(8_wT`BK$c91ssj=3qd-DP zRc!UNKf!`N@(y~J*(u)N2AG}3B1MhRJU}2ZGG=R3{5$lC+Fc6gh=ikY(z}xh#1odB zt0rklscha970lGr63<5C6v`t`3Ruw!Og~3C1K*Rwt26?|04+J)dAIL`SKJPwQxa$KMEjY4{+8ZqoTEigPNGzJ``q z-%s47V9C9PF{9YC-s8K=v>u_#6tnmPa^7#qr~JV$*dz+Ef2Q!EGy57G3=WSO$tLL; z-c&I#eD135{(Y0kY1lu%1OUDA@X`ht^9xB=1o;9-dw7Fesf0%NpkS+d;f_zfs+bB`U$ou>*Pki&vIkw^ zb9hC5oSJFoiiwG3F_^n%MjqFEHwN=}8y`J7TAB#1;wL0P6}3XKfDRYszsz~|V!@*A zGdsxag30<&zY-c!PrT+@)0uOy<6}2u3xt!$aoTn0?KO}Lq$u%APJgl1Ep$r=P?SPM zL&bg?_HzyAI+iPfonu%y%&pbU52TL(v@w}6`Et- zx1*)wRxypC#;7kLg_Ibq%M0D3mR{O%N4nPeThGNswN!y;_k zzo5FP**dJ&Uy*7P9J3i}-ETB$F*@$7D(a8Gps=)c`kt)=q6=?ChACXNHbRkw*uMhR z`H~-kp>8Wk2~{oURr|j$U$_ULW73!Qz|(j5=T?0d>TX8zVgRuvO~;2LeSWDP!tG*v zU&Dm4lw4CtS`d}Ih;os}a&G!$4$nyhrgSCoL3F=7Y|bQf_0xr2AhArJyr*ZQ``}!o z(^7jp8{uv1CD=bvoKPw6QngGi8=D&b0ioJM*{?MVagl{_`n z;R_ddinKJ`vnjD~&il>U8Tb!xBiGWl;hy8>Tb;0pFHc41jtv(sK86~4pAjms#P3am z(rGSzXe25DtT7z*jHO@WK5IQQv^Y$pybW zpIn)AAX}0EooYsbe=E%b%r9fdPAt$6SnIEb7ya-MbnS8a98UXG$F-`>6es6tw&OU{ zcAa6fSIW~@`6_bc_o^3ydI@t~Ff!7a~=p*@= z5gm&(s=~L8bR3ArJF8XGZ@lxlHkod{d$w2Yx`r6h35H5+=3MDqcXn1Bvx2qFC5O1D z9NAIuwD+4U+a3oK{@PYq1!pL}^yR?9JZI zNdLI+s&?*Arhux>Mgl7XN)Ukb!koVqB+{RVhj<5&pY1=Cu}(1|c* zWNTyZi1H3SEN9e-6Fw^;BJM!BgB6ALk}Lmg+|==}ADk@~@$XWC+}N5m4rxw~q)Ge{ zVbDuDe=Tk8qPu4dA!R{3Bfhd3Jc&7+1|%mF@hbj(H_KK0hQAJbB!Ts0<4OL}$ng>_ zgz7inwUki^;hRh3UwdwitNpC-P`+R(Yz~b`xs|fp|5%C7lDzK^-X1(EWnFDuOFU&$ zbt4W81acMXVYv}q@jSjWN_Q_3`N3zjONmhw7#PPC&N?E512D#fG+EQ_Kg>>oo-u`7 z7;5QJ10M2%Gp&wD| z6BceXzRV?{1M4P-RmJZ=S+J=}w`%LB_F*0Vsxw9U!uL|^jYDtZfHg$dEg}{D2IR)Q zBc;q@7S_7$=Cd1M3_VuKcYEiUt=df*z?T`Mvh_gS5u5Tb@}S*B2_U6n>tH{l9qm6e zIa#mUp1ng5_kP!*I-T~N1zRsp9VX0vp3B6?D?P6sZnT@d_KO?_x%l+=z&Rs%yToW+ zI`SO-vMhyUa@$bwo8VCTv&!$n#-VaWXwa6M*;tXAXLlKTce?U!@H5WfU5$mW@5CRp zbRHB#_#E8b1=mu&u-No8%v4)zHmkKve42DV4fH;YKiDY&HNMRh=xiK zRQdE&K~b^iIh?5QH++W4?Bl8|w(nZ)crH#;gs=N!=2CMGu2Bk}KL4hUQ+K zF4Otshw3#qCOd9!h>4CF5@q@w-&*Cx))Y)U3>^NQdh-`>PBu43QqkBPX~)kJFgTL1 zW66>7vH}(o_|in-m8Th|YYLF+V$ag#IGxA^|4rc~)IZ^+!oa|vMCdImjC`LQe5H_?zn-+%o(udPIJaa?2b?DxXSD+z4g(pZT zt!=Mon56A)$0;GQInPTJQoNPF_KbQhw+o4QUS#mqXrM`Q_o7CL$Eel;-EgR9l0a=( zw8(HC%{pr$rVdB|DD~p^x|6}h-|=m$g1ZQo4CQfDE(Sv3<+ymCE@C%Um+ zk7!8#(nx^dqvHAGL3wE%LiJb>ej^VIN>cPLJ3>Mr?m@ zbmt}6^xz-)_;QQdXFbC!U3lO1!;ppO9`R-#SL4An&b}avq}Ib0yRGfQ zjH?7%)sV@=5sB4Esw9%ko5w^-Vo%~Q$`KU8VSDy+ZyK}z0dlac>NtgP?Of*rdk;M% z`c$|unf}q!y%gxla8T9ecdQxFLy@!Fg#k*BNxV^YcYS}cnrxkcT53J)u+!~VX*PJb zd73lAcU|%tm=c07?d>8m{nNn-{XuJI*m^ZvF4aXB z7{*H8X3gHk0~~tN8t>zn#LO3!n0{PE#Wj%uc*yC3z8?maTT3?|WgwF)+nu%vUBN0! zam$Gy1~a18$nL#gr!q{{JA-`h?_v`=a1HH$|1ql+^kkT10?wbept_R@ZHZQr_}qXg zl!Q!XUm_cznS64T@*sK`PQnWwjqDoqo2Mc?ROKAnKF+p43^~^|LmzPoO|zPb`5!K$ z6-;!osTBlhKvibUT3!eA#9-*Z&#(%kRso=iaK_`veNr;4yyBHj#f?~QcGl!|aiA$d z@?(LHBduK}zTh~>B=&Zw+gE7O3$i)ZI)>Wc?wdsNe_VD%cwy<^=JdqMd`JpM4WFV& zU6=e%KT}xVN&pVtqx1)X(Jd0YQ~&LDNcK$VA8`KJmw$@2;ErGTp(czB=G4MEaoA)W zqO`&1^JDU0cOxdUfd0ikCau9p%eo2tvhLIus1J8xRO?N86g4v>lOdzYR)V!5X}_WS zqlPal$FjU=h^;(smDyw(@kdMmBO@mB)%(zQs1M>eAkHi;>B^^ol|v8#hTfsUr(^~Z znwdBM{%JgT%~WQUk3ILjDu?aM(#-*qD&2MXt><@ej#6}3413(WzhiT_7wnw#GLu!D z>H9SL-)&y79imoiYvx8-9=WHG%FQQNr7^j=KT$`fXSH)xYN9$nBa!?4bt(DuyoaHiptq^@`iKvks^5GFG2p;9~xHiP85MW-G(8 zrX!PK)V}ctzY9LXmZk87#)Dd$_CZ|H3o#<`cB(TIy_<;g_2fsp0RA9iF zL44ol?f#On_l{q{)wn9&^5_60%mfd}q5=E}t#o!G@sBO)<1HvUPu(Mw^kX`go8F_N z2UG7KYfD$}>AAp3)*j40n5^Ak2_e#yJ=qc-e| za^aEozS{xR199U^=u}B!#FS&zmhzm!j4^T;gCUrISBu5$x1@(o1kecic5N+QrA6oY zfDM*5TJj<{=rG1zYdrL@kxJ%7rCHtoiFWp~&f5{ulP&X2ZvDC~eNK?doDR0Tb$@?S z5)6OIC<4c5IGb+!AhItegc0n2z)gar-iwEH1TX^jw6#|d`{$-4 zt$zm1=hnlNV-ai@y`x9CvYQ~dWS_i=6YR~W(WC+H*0TvG|5aMyJhyiFYBc|(KLZ19 zuP#1>@t72^gF)0aV0X&Fg!YN}ZQ@R}78is!G2ypg{_pR14<{31jlrW0Jx^S>_qUTa zFId+#U=9f(DHuw4klv1Z-{88UkVoGg1v$YU3t=ga$Q%^KI_r3k-ic%q1;}vXQ&nN> zKpd$%3ktn->oJDM{xsm*WhpZ2!n~|gTw9WBQw8BPTQMqUpkQ0I<#I7o>Fvpztm|Ne z7cN&ORrb4!-kb;gnkJ+{{P*{PQHY@xvS$sUWCiK;;Vw5=aX9a(>SrND=L7>OX!3Dv zbe@*1w)K0~Q?=MzGs%^NZ(XkfS-}WqKrFnthu;w4(4pY_a}9nY39weq@Z9S*F{wzPi-)L{PY< z_#?ZCsxnFvk;@WRr6j1rf)4f!o`zJv(JT8Hr;Zkt*dt|8!cl7S96fSg``;@7z7n=x z{AfCdce@f9-bX4j4kmCYGZ;8*V!e6QY=8Xv^bJ+xg*yoJcrrwfj$pD}VP{zQ5W28C z>^~H|640yl7LS9Cegcq=cRURKta)kSn(7G^npP2x+hXW%)>Bxr4&cCo=ZX&3g)l_)p|NAbTwOATg!W-rKOQv zLYMyp9cIs@6odMpmwi6)8(c*;J#3=rrl@2$hJmD^R1F;?_sK6M1VujP{Br8$bQ_M z;9hKAfh8ZKt!`414y_ruj3%Dwm>E!WVl7f9pIOIc$H$WlF+giicbQB}w+xAX^1_(= zmaaFZH`_L}Dt#c=mck_*B1l#yTwn)@#AIUalFqv<)9nZ~UvNhrs=T?qTy^3VS6B8! zM0gphm-LP=1nA3%q|v2GX$G$Jqz}T&_Ky>wH+|(N6VA^IUoMmrQ1fdfF*AIQ3U@XB zG{WQf@HZ!ecEN8EwxL7(0d&${7!)KS`K#n0w{Nc03tDvl3p`C?;tn*CB%OE85>i5Kjd?ne8E`OeRjyVU|(jJ^_7oFUx71nIIQ2x zt=sI+q~+uE!`bFjcJ#YcpD&umhuKOfM!jy9ybmvf1A#0cHpX?Kyl)h-k)h`0MnD4` zWUAPW*?B<=2Ut;R0v`5oTY6|$opNl~J{RN<2)YdqOt7;-lsjnwDtfb*B9n}tyXJP?6?`Zyu2(w{N|?46^KyZAjl1WHZN^^ z^Z_fBi-+NhMc3h38)LB)M8IM3y7?y_#YiB?DC%BV@OKOs!7?VXEfT#S)3-7 zPs6}ZMKs#IX9+RMEm%BkuT5lk3{B}7gz_*+8Ab!VAv=`tEBwSPA z(Euzw~`1$$q3`4^EL%c%YQk$DGhkEu{{pJi5`taCQt~|cgY=1Fi zzQyAkzj+dUeqy}XT-wz^ z!;RdA1@Kf&$hKp;)7bKvQsvcM=30zSwho$DPHGvG4K_*h*1;Wwo`h3?hEkKR7}PNq zcTGzZ@k?{hHn(AUZ}b@SsB8b6jCii6fZuKkx&!}0(7~4YICYml90xNfu&zGvG8S&@ z8&vuJ$A)kadpgZ?2Fwbv7^wSLd1*Vc$qb09 zQ^H9&3C!q~sLo{8%W>W%;8j=gCtg5Axc3%8s;Xkj+gsb)4Oi40#$KkYIvYdDr%UR7 zFcKq0PjPubIm9HA4uyTy)JQnsSs7Z>z)O5u)*kY7opnW-}82E$tc z#i15?52qZCO6chA=8SF764|Ct` z?eSDbT{>q#Czu$RFbLbFBuL@!2yLo0`eKjzTVr`TL_jQbWUkdO&*cub z#KuBNNWg(WnK_CK9!Fl|vM#>V1k{|uQbu&&j>-HQ4p|GA0;PU!(N_cr1dYBu$+jJw zu-7>l9ge0ITzna@m^O0tC?<H76XFRYTt^Uu#cM zw)$$0n${@6SdDEBNBnw>%sRt+YWn^h=v+xt&1Zf;#n>v9gY9#c=?Qp2lnF-t0OJ~{0s;#E^kRvig;qV~V_5D~Tw-jLcl-f0S1dWu$j7%A9# z3Ib*E;R>IOjZZp=PPzL5U4E}`>8#WIXEXCpl;!y~_SM~D0wum+@=}qjtKYk<7bU<# zGTgiV%D+&cm6kE(*B7?1oz?-61#+O9eulyg%WrK}YRP#e{1B3Fe0dBDINOL?gf6dY zK|&8SMEZ%E&9<~Cev+2GD(L!cJp4D9J|>acUu&x#b-H1QzK=iB?cj%A$(Foq7pAHu z=4F+$Xx0&hlK`CY_(o!vvJifDeqpg@Zeg(ozDMaXHp+)Sq99qzoou9>@*Ll*tGAHa zi6!FrPKG+XLuI}Ne!fB50d(8XwTM|G*g~;Sw3={TA{Pemz>6dj_fIv`2{1UtpS{I) zwBTks`ik=&T((^+GK~ASmfn9YH!Bd>({RcEJORo`mN@f@zCQKcs}{XSy|Bh%SAH{o z!w?~(PF|eH&oa;&#){5+7*-@47vh9!M9h-Q6%U=Ao}tLqc;q)KMo|Y z;o^R+4hh$sYO2bDi(GA)-&G&|`vRV*gY&n4p|Q#jk$yK*D$Hj*b_hHz%ddJzw9M?3 zTQEzd=%WWr*X0tKU!(Vi;N~mjyj@IjL0;mwzP=tdR|F8q)!&hF<4}8`zP0)7#oOzo z)DG`)Js^`s0m(2izQ8qRGjWaa00l71Mq}dqkIh5{(s`XZ{e9Urli5yDMa)^fX?e(^KpE3os9NwxZC-bh0AaBCtS9s&X4Q5Ci zUfoaVPe<-2iHjNb?L7eaRq#E3xNle7ryY`Z_~_Sn05)P_2`NkU<415XR_eC6Z5IM% zpDezcR5OAi_Cy1J`a%K9>O>p^V2cO9Gm^Lr9Nz-vvtk!}wIghH3B-U#|19tgu8)-m zIH`6f!p=8$t+&h+Z117vXvvj`ysurW+B~EUf&eK=Ulmx$@eHD|&Bwye(<*k+x79A| z{5?-=udUTlb$9->1oup+%L;+uZ5Ks_6s>0f5mHN_&+qm4va?rBEn;A_H=N&qs-6)b zsXRDkUGZJ@-1K<-_6;Sh=gxinouH9R_xhn8U7(xh><3anYh~fF=E32b!dgyR?uUmdII2;&0$)*z}dav$oP$)A2sSPkPy;- zubGTZ`+Im;J$G&u3y$Q)ek=}OzSlqaL8{5t)n1-2&~-RsnFPK*l2^j~8OF9-i4<)lmHPENov^o8MTcL%e#K&>Nj$rd5F;hs zV!(^d3dtSi1?;aQ0LS$_;3-hItCND$ih+DUOacSWd17DJS^{hMHE%_gov7KX?E@gy znUIJ`^z7!)59#-HVSJI4+JN!+OV0g(dO!64k`bY8d)@Owt+?&4NE+I^=h>L%C+)Eu`cPd*1q zL@7XC9Y14bnH)~iDo?YxjiyODuld$_eUAjjyg*VQR8(rJ*O$P_1YH8AQZhSoklD6L zOXr(R?%3d|FB0%0OM!yVpCm@7Ki$>uvbFtrfdp$zOs*GRm1$DP&^Jm&s-vu53B^b)|O@$}x6j(eZoLQYOc z2FzuVuE>07P)T8!frVp^(@f2}ua5C2)TZOjG0aopCRATbXuc$eE%=_&eP%{~OO~SK zTHeZZ-$n1>%&Rl&#aDh;XQxBr<YnK()i#+hfV3>|qnzoyGKdD{1CiggT8i%I|r-_^s@ktiQoi!Q^m zVqdLjToZ9Xgq|ITr~JwmO71bM9y|pE{!{~KWQYO)%eS=)d)sJcNQ?b!7ZgJt+^YVZ%b^Zw4>}$G8eCIR%sZ zaTOJ1Uf(zSvd?#?mo6)mZchtZ{gJJH8y4w(b47#+x(OX=5~M zx8vx`JFWgu$UgSQXUbIOdzI7~@+dA^-y&~gQ~YchHt4lGw|H^U7th|gc+J$wIvvOofDxLLpb0#>aKlj=vH#6Sf)4mtAaER6nTyY%%b4#F%?TaszalF}9F>bLL%YJ-@ zM0WO~ar6+iq)#;PI9ORF`ymQsYK?;PUaP$(#+X8e><_CWdQeH z3p$!MCmz4-MvP0SrniPRIxhIksW`Tu)9M)BW=yJk|ISI-w2K9HC{j|Eu5Td;@g(9a zjO6osdY0YNa)SI%?|uT+^%uZQE{#r3x@RFtlnnG@L*gmb>X{z$0%V)}Wi-^##r{H+ zm5I>BC*wU;jg3^km;z|m`Qz=cu0hRk&S4gt~L2qRlCI5ze7?qrzogJ3xzf*i@ z?DZ2R9&pmfPN5Yp&zz5NQUQYf7#K2LjerDxRm93$WKuu54Y=;1#i?xDDH%sD1>Dv8 z`uf5K#UGWFh4agBMt=pAX8Q0?+fSjo&Es2gxy>`glOoP@4M4610HbnKQP`17eq7Y( zcIoge+zWsT?D#L1$tzNtR2FV>d~{0xcEoSFg@@j2L(jV11AyDBjFDj)KOqjfAT77R zr^WyUN;vb;#X8HF6*xaT?iC*|vG19!w{yDr7vT3V#^i2C2mPEhSYJjaPYipb7l(mC zH8I?VQe>*6sk|`Zl05G7@v8LF?Zq9JNsIjqH3j>75uno*$;JSLDYlN6xx~1ug!)y{ z{V+9~I(T~Sbf$J{f3kOkPE=Zf@&W__PutPBuw&;<1Jc;LyH;Inl{6&$(!0_Hb46YX zP6DWx=YRsBpTt!V&C4^x`{cAal=>L8Gu`Qbog*9d9{e=Txumf#J1UN>aV(paWv~E{ zefn)&gX9>)?cN@d0Qbd{N4_^YlqIS@cIp=bsc7hcFaQug4 ztvX(@j97}SOuu5d?@~hS*0~^b{cm>^iSIh#)0tRhK-i*%KIi>;KLpX1a|^)&W#xuQ zTfUW2e3M4JUTwqDX(BHtLOB7Qew(CDZz4fu<)d4KIDaUs>4&*MnC z0QMJY$&^qht;=JT#70Q4%7{c0ce<=b%Rg;)+b)i0dnc4%TDqGh#VI%Wl|@6L6lJQf zVo=Zg5K#{T%__b*seP&@FO>IVn=ckpHq+w1>jd`S%5GgeNs0mz@q}cqNjyum1)evX z^f?rx@A)c4PDWC>xEiBG}e-I zHi6lPFCi~DpK4hH7AU|qV-gmeVek^a`zYOQ6r!>!9S>T#z3!S?ps zKZXv=m|;dra+)4p^fi_w(=LxepeF`WjEM`*7R-5Fh$JEdAtqV#9WRmFt{6Ju+w1#w z^xMIA=bt;pPkIr|ln{CT6E&yfXGp_WV?a$IVDTr1TvEnbk;X}|bfFvD&hmNoeU~N= z#W%8osh$b~*vM&ohNb_6G!b>`F$sBmyk-_VkiRMzpdAJp+b4;f)cU>s&K3o|^&z=M z_C>2MvyWnWJojhMe*g>O)&oGat879U2s-ePHQ_LV>+uzumv(jJuEl@=H^%1}vRHjt z=9hTKV#rXzYxKWVo|diNX4g$F{x562i;Ig00-_lgwUcZg*qTyAwj&*f=^ZxcnRiG3 ziw659q-aj|j-c|)Xx>>dSNeM=dK#Lm9w48U-utS!kpA*|v(m`>upN28`QONsxbmzk zY7x%xa{vT-R!YWpzl>W;QCd}e)j$kiRM7h*;iypjG#MK(wV^W!9P!^SkT78pV2|Kz zS0vI`mZt*8C0w-17C7h+neD(2z4k%e%JpI3 z!wBh(f8RWpeC=-1&N~f%j@He;2sO$zUE=xH-79WipkBNg_HOKNt@X$_u(b5f^ZM@7 zajk)gS!Co8Ybyel@Onc=j@m~G$xs6fz}RDFnj{`5`4;~AWa=CAQEMeH>$IWkP+LA= zkf#AyojJE19o|L@3$A9>f1kS6BQ@O`D4B&52Ar{EMRvtEO?t)la=kGdMM@qjP(Yf7|whg z&;(OUo=cfi0qdc(4cep-91ePOF6PN_`R4P__ZtHp7gIgfRWv+7KP2xt8OPat5H>;1 zX4~yNhZ3<#%~IV>!8=-Uf9K9mtH0mv?nJ)(8p2G$G`97Dg`E1eZ2r=9%awGtDvtp- zXhQF4=n!i*l?KDaqk09S>99f8Y)6gaHTqKz6W(MR-flA$5&9+mI;W)rKWQ{zG&S38 zo{m&5UHk|pacl(^(0&oa8v$Fdr!p70#=Pp$78Ciy|ILiPf>h9>*y^M>{k+@?rWMb2 zPj~l^fY(;?IU|GKVfiNx%(W8%#72mV&{nFdXEzsni=s8I(-m(FL_yC49OqxwxerX` zp)Wtig1_Gpj3ImZ9tICw%%?HEdd?MxePqHVgZf(hkWw1fEi4posg~rJ+ z29`Xkk3|>!;+4$wfq@_892(qD4_~^Eg3kas{>mZ+sgB74K z`QF|-XHx(851c21#lKggkNSX11*)roKj9Z!dIs!5RJML}$AF+@;mPF9N^}@Yx7fCu z6hmz=%EXsU=nQy3;aIahb&Fp%B_rfT*MH(3)iT@Jup| z8aZ4_M$Cc@3ZjbCUqayiLn#KMvt%rl^B>&54ucmNp1vFn7p0_2Z%I88SB{pyo>}-@d=z5c!-d$3=J!@B%XZv zh!zte1RGQr*9LG^5?^67$aJD*_&?6gn#k>N@lJ}Flv^;cfnHJtsqOn>Y30$^y_vWY zh7$w4g~x^}DCUdr>d@>kQuX44FkfkR3T|~U*5gA+#SM;I4Ux(|V|Y3>HY=Na#7rGrB)!;yEP**mgm^ zkSvUVT$56{=WtSx4J)c>ZD~qciiYj!f1lzisA6VCkNGk)fJTW=)V4bXe_y)iJphKq z)s(w_coa<9i&0LcM;?uEc>R7ZkbfUnLf$bA*MX;T{+f&KTH zIR^^_2PAPypztn}Xc>eR;s^Rr7LrFpomKS|l=bS%?&k>7Ul@R-ysm{$FcH0ej1}nd zDAej3g~k1_HcA|L>JQ=gpe>6}czdF;ME4R%k&jgkc&(jv474CzT#$ND5eUTl*#-o> z-sp}CCTMg~PWs;i;E|vpOi-ZV{r>~YKp+Nk(Ea~_OJbMYjPk#~?y0}OfXDoI{g1c6 zbN;*j*O&kAxBqL1`$6xo|Bu`MHO~M3^#6YQ{~uBR`~CiBqW+Ih|L;WoA0+?(N8|r~ p@c%)@|9tyD()dI7=nne{=&JQYLThDi&OJL6WZ%nFNPP(Ue*n0zF$(|y literal 0 HcmV?d00001 diff --git a/plugins/node_modules/ace/demo/kitchen-sink/require.js b/plugins/node_modules/ace/demo/kitchen-sink/require.js new file mode 100644 index 00000000..203843c1 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/require.js @@ -0,0 +1,2074 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.1.11+ Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +//Not using strict: uneven strict support in browsers, #392, and causes +//problems with requirejs.exec()/transpiler plugins that may not be strict. +/*jslint regexp: true, nomen: true, sloppy: true */ +/*global window, navigator, document, importScripts, setTimeout, opera */ + +var requirejs, require, define; +(function (global) { + var req, s, head, baseElement, dataMain, src, + interactiveScript, currentlyAddingScript, mainScript, subPath, + version = '2.1.11+', + commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, + cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, + jsSuffixRegExp = /\.js$/, + currDirRegExp = /^\.\//, + op = Object.prototype, + ostring = op.toString, + hasOwn = op.hasOwnProperty, + ap = Array.prototype, + apsp = ap.splice, + isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document), + isWebWorker = !isBrowser && typeof importScripts !== 'undefined', + //PS3 indicates loaded and complete, but need to wait for complete + //specifically. Sequence is 'loading', 'loaded', execution, + // then 'complete'. The UA check is unfortunate, but not sure how + //to feature test w/o causing perf issues. + readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? + /^complete$/ : /^(complete|loaded)$/, + defContextName = '_', + //Oh the tragedy, detecting opera. See the usage of isOpera for reason. + isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', + contexts = {}, + cfg = {}, + globalDefQueue = [], + useInteractive = false; + + function isFunction(it) { + return ostring.call(it) === '[object Function]'; + } + + function isArray(it) { + return ostring.call(it) === '[object Array]'; + } + + /** + * Helper function for iterating over an array. If the func returns + * a true value, it will break out of the loop. + */ + function each(ary, func) { + if (ary) { + var i; + for (i = 0; i < ary.length; i += 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + /** + * Helper function for iterating over an array backwards. If the func + * returns a true value, it will break out of the loop. + */ + function eachReverse(ary, func) { + if (ary) { + var i; + for (i = ary.length - 1; i > -1; i -= 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + function getOwn(obj, prop) { + return hasProp(obj, prop) && obj[prop]; + } + + /** + * Cycles over properties in an object and calls a function for each + * property value. If the function returns a truthy value, then the + * iteration is stopped. + */ + function eachProp(obj, func) { + var prop; + for (prop in obj) { + if (hasProp(obj, prop)) { + if (func(obj[prop], prop)) { + break; + } + } + } + } + + /** + * Simple function to mix in properties from source into target, + * but only if target does not already have a property of the same name. + */ + function mixin(target, source, force, deepStringMixin) { + if (source) { + eachProp(source, function (value, prop) { + if (force || !hasProp(target, prop)) { + if (deepStringMixin && typeof value === 'object' && value && + !isArray(value) && !isFunction(value) && + !(value instanceof RegExp)) { + + if (!target[prop]) { + target[prop] = {}; + } + mixin(target[prop], value, force, deepStringMixin); + } else { + target[prop] = value; + } + } + }); + } + return target; + } + + //Similar to Function.prototype.bind, but the 'this' object is specified + //first, since it is easier to read/figure out what 'this' will be. + function bind(obj, fn) { + return function () { + return fn.apply(obj, arguments); + }; + } + + function scripts() { + return document.getElementsByTagName('script'); + } + + function defaultOnError(err) { + throw err; + } + + //Allow getting a global that is expressed in + //dot notation, like 'a.b.c'. + function getGlobal(value) { + if (!value) { + return value; + } + var g = global; + each(value.split('.'), function (part) { + g = g[part]; + }); + return g; + } + + /** + * Constructs an error with a pointer to an URL with more information. + * @param {String} id the error ID that maps to an ID on a web page. + * @param {String} message human readable error. + * @param {Error} [err] the original error, if there is one. + * + * @returns {Error} + */ + function makeError(id, msg, err, requireModules) { + var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); + e.requireType = id; + e.requireModules = requireModules; + if (err) { + e.originalError = err; + } + return e; + } + + if (typeof define !== 'undefined') { + //If a define is already in play via another AMD loader, + //do not overwrite. + return; + } + + if (typeof requirejs !== 'undefined') { + if (isFunction(requirejs)) { + //Do not overwrite an existing requirejs instance. + return; + } + cfg = requirejs; + requirejs = undefined; + } + + //Allow for a require config object + if (typeof require !== 'undefined' && !isFunction(require)) { + //assume it is a config object. + cfg = require; + require = undefined; + } + + function newContext(contextName) { + var inCheckLoaded, Module, context, handlers, + checkLoadedTimeoutId, + config = { + //Defaults. Do not set a default for map + //config to speed up normalize(), which + //will run faster if there is no default. + waitSeconds: 7, + baseUrl: './', + paths: {}, + bundles: {}, + pkgs: {}, + shim: {}, + config: {} + }, + registry = {}, + //registry of just enabled modules, to speed + //cycle breaking code when lots of modules + //are registered, but not activated. + enabledRegistry = {}, + undefEvents = {}, + defQueue = [], + defined = {}, + urlFetched = {}, + bundlesMap = {}, + requireCounter = 1, + unnormalizedCounter = 1; + + /** + * Trims the . and .. from an array of path segments. + * It will keep a leading path segment if a .. will become + * the first path segment, to help with module name lookups, + * which act like paths, but can be remapped. But the end result, + * all paths that use this function should look normalized. + * NOTE: this method MODIFIES the input array. + * @param {Array} ary the array of path segments. + */ + function trimDots(ary) { + var i, part, length = ary.length; + for (i = 0; i < length; i++) { + part = ary[i]; + if (part === '.') { + ary.splice(i, 1); + i -= 1; + } else if (part === '..') { + if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + ary.splice(i - 1, 2); + i -= 2; + } + } + } + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @param {Boolean} applyMap apply the map config to the value. Should + * only be done if this normalization is for a dependency ID. + * @returns {String} normalized name + */ + function normalize(name, baseName, applyMap) { + var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex, + foundMap, foundI, foundStarMap, starI, + baseParts = baseName && baseName.split('/'), + normalizedBaseParts = baseParts, + map = config.map, + starMap = map && map['*']; + + //Adjust any relative paths. + if (name && name.charAt(0) === '.') { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + name = name.split('/'); + lastIndex = name.length - 1; + + // If wanting node ID compatibility, strip .js from end + // of IDs. Have to do this here, and not in nameToUrl + // because node allows either .js or non .js to map + // to same file. + if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { + name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); + } + + name = normalizedBaseParts.concat(name); + trimDots(name); + name = name.join('/'); + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if (applyMap && map && (baseParts || starMap)) { + nameParts = name.split('/'); + + outerLoop: for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join('/'); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = getOwn(map, baseParts.slice(0, j).join('/')); + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = getOwn(mapValue, nameSegment); + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break outerLoop; + } + } + } + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) { + foundStarMap = getOwn(starMap, nameSegment); + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + // If the name points to a package's name, use + // the package main instead. + pkgMain = getOwn(config.pkgs, name); + + return pkgMain ? pkgMain : name; + } + + function removeScript(name) { + if (isBrowser) { + each(scripts(), function (scriptNode) { + if (scriptNode.getAttribute('data-requiremodule') === name && + scriptNode.getAttribute('data-requirecontext') === context.contextName) { + scriptNode.parentNode.removeChild(scriptNode); + return true; + } + }); + } + } + + function hasPathFallback(id) { + var pathConfig = getOwn(config.paths, id); + if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { + //Pop off the first array value, since it failed, and + //retry + pathConfig.shift(); + context.require.undef(id); + + //Custom require that does not do map translation, since + //ID is "absolute", already mapped/resolved. + context.makeRequire(null, { + skipMap: true + })([id]); + + return true; + } + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Creates a module mapping that includes plugin prefix, module + * name, and path. If parentModuleMap is provided it will + * also normalize the name via require.normalize() + * + * @param {String} name the module name + * @param {String} [parentModuleMap] parent module map + * for the module name, used to resolve relative names. + * @param {Boolean} isNormalized: is the ID already normalized. + * This is true if this call is done for a define() module ID. + * @param {Boolean} applyMap: apply the map config to the ID. + * Should only be true if this map is for a dependency. + * + * @returns {Object} + */ + function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { + var url, pluginModule, suffix, nameParts, + prefix = null, + parentName = parentModuleMap ? parentModuleMap.name : null, + originalName = name, + isDefine = true, + normalizedName = ''; + + //If no name, then it means it is a require call, generate an + //internal name. + if (!name) { + isDefine = false; + name = '_@r' + (requireCounter += 1); + } + + nameParts = splitPrefix(name); + prefix = nameParts[0]; + name = nameParts[1]; + + if (prefix) { + prefix = normalize(prefix, parentName, applyMap); + pluginModule = getOwn(defined, prefix); + } + + //Account for relative paths if there is a base name. + if (name) { + if (prefix) { + if (pluginModule && pluginModule.normalize) { + //Plugin is loaded, use its normalize method. + normalizedName = pluginModule.normalize(name, function (name) { + return normalize(name, parentName, applyMap); + }); + } else { + normalizedName = normalize(name, parentName, applyMap); + } + } else { + //A regular module. + normalizedName = normalize(name, parentName, applyMap); + + //Normalized name may be a plugin ID due to map config + //application in normalize. The map config values must + //already be normalized, so do not need to redo that part. + nameParts = splitPrefix(normalizedName); + prefix = nameParts[0]; + normalizedName = nameParts[1]; + isNormalized = true; + + url = context.nameToUrl(normalizedName); + } + } + + //If the id is a plugin id that cannot be determined if it needs + //normalization, stamp it with a unique ID so two matching relative + //ids that may conflict can be separate. + suffix = prefix && !pluginModule && !isNormalized ? + '_unnormalized' + (unnormalizedCounter += 1) : + ''; + + return { + prefix: prefix, + name: normalizedName, + parentMap: parentModuleMap, + unnormalized: !!suffix, + url: url, + originalName: originalName, + isDefine: isDefine, + id: (prefix ? + prefix + '!' + normalizedName : + normalizedName) + suffix + }; + } + + function getModule(depMap) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (!mod) { + mod = registry[id] = new context.Module(depMap); + } + + return mod; + } + + function on(depMap, name, fn) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (hasProp(defined, id) && + (!mod || mod.defineEmitComplete)) { + if (name === 'defined') { + fn(defined[id]); + } + } else { + mod = getModule(depMap); + if (mod.error && name === 'error') { + fn(mod.error); + } else { + mod.on(name, fn); + } + } + } + + function onError(err, errback) { + var ids = err.requireModules, + notified = false; + + if (errback) { + errback(err); + } else { + each(ids, function (id) { + var mod = getOwn(registry, id); + if (mod) { + //Set error on module, so it skips timeout checks. + mod.error = err; + if (mod.events.error) { + notified = true; + mod.emit('error', err); + } + } + }); + + if (!notified) { + req.onError(err); + } + } + } + + /** + * Internal method to transfer globalQueue items to this context's + * defQueue. + */ + function takeGlobalQueue() { + //Push all the globalDefQueue items into the context's defQueue + if (globalDefQueue.length) { + //Array splice in the values since the context code has a + //local var ref to defQueue, so cannot just reassign the one + //on context. + apsp.apply(defQueue, + [defQueue.length, 0].concat(globalDefQueue)); + globalDefQueue = []; + } + } + + handlers = { + 'require': function (mod) { + if (mod.require) { + return mod.require; + } else { + return (mod.require = context.makeRequire(mod.map)); + } + }, + 'exports': function (mod) { + mod.usingExports = true; + if (mod.map.isDefine) { + if (mod.exports) { + return (defined[mod.map.id] = mod.exports); + } else { + return (mod.exports = defined[mod.map.id] = {}); + } + } + }, + 'module': function (mod) { + if (mod.module) { + return mod.module; + } else { + return (mod.module = { + id: mod.map.id, + uri: mod.map.url, + config: function () { + return getOwn(config.config, mod.map.id) || {}; + }, + exports: mod.exports || (mod.exports = {}) + }); + } + } + }; + + function cleanRegistry(id) { + //Clean up machinery used for waiting modules. + delete registry[id]; + delete enabledRegistry[id]; + } + + function breakCycle(mod, traced, processed) { + var id = mod.map.id; + + if (mod.error) { + mod.emit('error', mod.error); + } else { + traced[id] = true; + each(mod.depMaps, function (depMap, i) { + var depId = depMap.id, + dep = getOwn(registry, depId); + + //Only force things that have not completed + //being defined, so still in the registry, + //and only if it has not been matched up + //in the module already. + if (dep && !mod.depMatched[i] && !processed[depId]) { + if (getOwn(traced, depId)) { + mod.defineDep(i, defined[depId]); + mod.check(); //pass false? + } else { + breakCycle(dep, traced, processed); + } + } + }); + processed[id] = true; + } + } + + function checkLoaded() { + var err, usingPathFallback, + waitInterval = config.waitSeconds * 1000, + //It is possible to disable the wait interval by using waitSeconds of 0. + expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), + noLoads = [], + reqCalls = [], + stillLoading = false, + needCycleCheck = true; + + //Do not bother if this call was a result of a cycle break. + if (inCheckLoaded) { + return; + } + + inCheckLoaded = true; + + //Figure out the state of all the modules. + eachProp(enabledRegistry, function (mod) { + var map = mod.map, + modId = map.id; + + //Skip things that are not enabled or in error state. + if (!mod.enabled) { + return; + } + + if (!map.isDefine) { + reqCalls.push(mod); + } + + if (!mod.error) { + //If the module should be executed, and it has not + //been inited and time is up, remember it. + if (!mod.inited && expired) { + if (hasPathFallback(modId)) { + usingPathFallback = true; + stillLoading = true; + } else { + noLoads.push(modId); + removeScript(modId); + } + } else if (!mod.inited && mod.fetched && map.isDefine) { + stillLoading = true; + if (!map.prefix) { + //No reason to keep looking for unfinished + //loading. If the only stillLoading is a + //plugin resource though, keep going, + //because it may be that a plugin resource + //is waiting on a non-plugin cycle. + return (needCycleCheck = false); + } + } + } + }); + + if (expired && noLoads.length) { + //If wait time expired, throw error of unloaded modules. + err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); + err.contextName = context.contextName; + return onError(err); + } + + //Not expired, check for a cycle. + if (needCycleCheck) { + each(reqCalls, function (mod) { + breakCycle(mod, {}, {}); + }); + } + + //If still waiting on loads, and the waiting load is something + //other than a plugin resource, or there are still outstanding + //scripts, then just try back later. + if ((!expired || usingPathFallback) && stillLoading) { + //Something is still waiting to load. Wait for it, but only + //if a timeout is not already in effect. + if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { + checkLoadedTimeoutId = setTimeout(function () { + checkLoadedTimeoutId = 0; + checkLoaded(); + }, 50); + } + } + + inCheckLoaded = false; + } + + Module = function (map) { + this.events = getOwn(undefEvents, map.id) || {}; + this.map = map; + this.shim = getOwn(config.shim, map.id); + this.depExports = []; + this.depMaps = []; + this.depMatched = []; + this.pluginMaps = {}; + this.depCount = 0; + + /* this.exports this.factory + this.depMaps = [], + this.enabled, this.fetched + */ + }; + + Module.prototype = { + init: function (depMaps, factory, errback, options) { + options = options || {}; + + //Do not do more inits if already done. Can happen if there + //are multiple define calls for the same module. That is not + //a normal, common case, but it is also not unexpected. + if (this.inited) { + return; + } + + this.factory = factory; + + if (errback) { + //Register for errors on this module. + this.on('error', errback); + } else if (this.events.error) { + //If no errback already, but there are error listeners + //on this module, set up an errback to pass to the deps. + errback = bind(this, function (err) { + this.emit('error', err); + }); + } + + //Do a copy of the dependency array, so that + //source inputs are not modified. For example + //"shim" deps are passed in here directly, and + //doing a direct modification of the depMaps array + //would affect that config. + this.depMaps = depMaps && depMaps.slice(0); + + this.errback = errback; + + //Indicate this module has be initialized + this.inited = true; + + this.ignore = options.ignore; + + //Could have option to init this module in enabled mode, + //or could have been previously marked as enabled. However, + //the dependencies are not known until init is called. So + //if enabled previously, now trigger dependencies as enabled. + if (options.enabled || this.enabled) { + //Enable this module and dependencies. + //Will call this.check() + this.enable(); + } else { + this.check(); + } + }, + + defineDep: function (i, depExports) { + //Because of cycles, defined callback for a given + //export can be called more than once. + if (!this.depMatched[i]) { + this.depMatched[i] = true; + this.depCount -= 1; + this.depExports[i] = depExports; + } + }, + + fetch: function () { + if (this.fetched) { + return; + } + this.fetched = true; + + context.startTime = (new Date()).getTime(); + + var map = this.map; + + //If the manager is for a plugin managed resource, + //ask the plugin to load it now. + if (this.shim) { + context.makeRequire(this.map, { + enableBuildCallback: true + })(this.shim.deps || [], bind(this, function () { + return map.prefix ? this.callPlugin() : this.load(); + })); + } else { + //Regular dependency. + return map.prefix ? this.callPlugin() : this.load(); + } + }, + + load: function () { + var url = this.map.url; + + //Regular dependency. + if (!urlFetched[url]) { + urlFetched[url] = true; + context.load(this.map.id, url); + } + }, + + /** + * Checks if the module is ready to define itself, and if so, + * define it. + */ + check: function () { + if (!this.enabled || this.enabling) { + return; + } + + var err, cjsModule, + id = this.map.id, + depExports = this.depExports, + exports = this.exports, + factory = this.factory; + + if (!this.inited) { + this.fetch(); + } else if (this.error) { + this.emit('error', this.error); + } else if (!this.defining) { + //The factory could trigger another require call + //that would result in checking this module to + //define itself again. If already in the process + //of doing that, skip this work. + this.defining = true; + + if (this.depCount < 1 && !this.defined) { + if (isFunction(factory)) { + //If there is an error listener, favor passing + //to that instead of throwing an error. However, + //only do it for define()'d modules. require + //errbacks should not be called for failures in + //their callbacks (#699). However if a global + //onError is set, use that. + if ((this.events.error && this.map.isDefine) || + req.onError !== defaultOnError) { + try { + exports = context.execCb(id, factory, depExports, exports); + } catch (e) { + err = e; + } + } else { + exports = context.execCb(id, factory, depExports, exports); + } + + // Favor return value over exports. If node/cjs in play, + // then will not have a return value anyway. Favor + // module.exports assignment over exports object. + if (this.map.isDefine && exports === undefined) { + cjsModule = this.module; + if (cjsModule) { + exports = cjsModule.exports; + } else if (this.usingExports) { + //exports already set the defined value. + exports = this.exports; + } + } + + if (err) { + err.requireMap = this.map; + err.requireModules = this.map.isDefine ? [this.map.id] : null; + err.requireType = this.map.isDefine ? 'define' : 'require'; + return onError((this.error = err)); + } + + } else { + //Just a literal value + exports = factory; + } + + this.exports = exports; + + if (this.map.isDefine && !this.ignore) { + defined[id] = exports; + + if (req.onResourceLoad) { + req.onResourceLoad(context, this.map, this.depMaps); + } + } + + //Clean up + cleanRegistry(id); + + this.defined = true; + } + + //Finished the define stage. Allow calling check again + //to allow define notifications below in the case of a + //cycle. + this.defining = false; + + if (this.defined && !this.defineEmitted) { + this.defineEmitted = true; + this.emit('defined', this.exports); + this.defineEmitComplete = true; + } + + } + }, + + callPlugin: function () { + var map = this.map, + id = map.id, + //Map already normalized the prefix. + pluginMap = makeModuleMap(map.prefix); + + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(pluginMap); + + on(pluginMap, 'defined', bind(this, function (plugin) { + var load, normalizedMap, normalizedMod, + bundleId = getOwn(bundlesMap, this.map.id), + name = this.map.name, + parentName = this.map.parentMap ? this.map.parentMap.name : null, + localRequire = context.makeRequire(map.parentMap, { + enableBuildCallback: true + }); + + //If current map is not normalized, wait for that + //normalized name to load instead of continuing. + if (this.map.unnormalized) { + //Normalize the ID if the plugin allows it. + if (plugin.normalize) { + name = plugin.normalize(name, function (name) { + return normalize(name, parentName, true); + }) || ''; + } + + //prefix and name should already be normalized, no need + //for applying map config again either. + normalizedMap = makeModuleMap(map.prefix + '!' + name, + this.map.parentMap); + on(normalizedMap, + 'defined', bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true, + ignore: true + }); + })); + + normalizedMod = getOwn(registry, normalizedMap.id); + if (normalizedMod) { + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(normalizedMap); + + if (this.events.error) { + normalizedMod.on('error', bind(this, function (err) { + this.emit('error', err); + })); + } + normalizedMod.enable(); + } + + return; + } + + //If a paths config, then just load that file instead to + //resolve the plugin, as it is built into that paths layer. + if (bundleId) { + this.map.url = context.nameToUrl(bundleId); + this.load(); + return; + } + + load = bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true + }); + }); + + load.error = bind(this, function (err) { + this.inited = true; + this.error = err; + err.requireModules = [id]; + + //Remove temp unnormalized modules for this module, + //since they will never be resolved otherwise now. + eachProp(registry, function (mod) { + if (mod.map.id.indexOf(id + '_unnormalized') === 0) { + cleanRegistry(mod.map.id); + } + }); + + onError(err); + }); + + //Allow plugins to load other code without having to know the + //context or how to 'complete' the load. + load.fromText = bind(this, function (text, textAlt) { + /*jslint evil: true */ + var moduleName = map.name, + moduleMap = makeModuleMap(moduleName), + hasInteractive = useInteractive; + + //As of 2.1.0, support just passing the text, to reinforce + //fromText only being called once per resource. Still + //support old style of passing moduleName but discard + //that moduleName in favor of the internal ref. + if (textAlt) { + text = textAlt; + } + + //Turn off interactive script matching for IE for any define + //calls in the text, then turn it back on at the end. + if (hasInteractive) { + useInteractive = false; + } + + //Prime the system by creating a module instance for + //it. + getModule(moduleMap); + + //Transfer any config to this other module. + if (hasProp(config.config, id)) { + config.config[moduleName] = config.config[id]; + } + + try { + req.exec(text); + } catch (e) { + return onError(makeError('fromtexteval', + 'fromText eval for ' + id + + ' failed: ' + e, + e, + [id])); + } + + if (hasInteractive) { + useInteractive = true; + } + + //Mark this as a dependency for the plugin + //resource + this.depMaps.push(moduleMap); + + //Support anonymous modules. + context.completeLoad(moduleName); + + //Bind the value of that module to the value for this + //resource ID. + localRequire([moduleName], load); + }); + + //Use parentName here since the plugin's name is not reliable, + //could be some weird string with no path that actually wants to + //reference the parentName's path. + plugin.load(map.name, localRequire, load, config); + })); + + context.enable(pluginMap, this); + this.pluginMaps[pluginMap.id] = pluginMap; + }, + + enable: function () { + enabledRegistry[this.map.id] = this; + this.enabled = true; + + //Set flag mentioning that the module is enabling, + //so that immediate calls to the defined callbacks + //for dependencies do not trigger inadvertent load + //with the depCount still being zero. + this.enabling = true; + + //Enable each dependency + each(this.depMaps, bind(this, function (depMap, i) { + var id, mod, handler; + + if (typeof depMap === 'string') { + //Dependency needs to be converted to a depMap + //and wired up to this module. + depMap = makeModuleMap(depMap, + (this.map.isDefine ? this.map : this.map.parentMap), + false, + !this.skipMap); + this.depMaps[i] = depMap; + + handler = getOwn(handlers, depMap.id); + + if (handler) { + this.depExports[i] = handler(this); + return; + } + + this.depCount += 1; + + on(depMap, 'defined', bind(this, function (depExports) { + this.defineDep(i, depExports); + this.check(); + })); + + if (this.errback) { + on(depMap, 'error', bind(this, this.errback)); + } + } + + id = depMap.id; + mod = registry[id]; + + //Skip special modules like 'require', 'exports', 'module' + //Also, don't call enable if it is already enabled, + //important in circular dependency cases. + if (!hasProp(handlers, id) && mod && !mod.enabled) { + context.enable(depMap, this); + } + })); + + //Enable each plugin that is used in + //a dependency + eachProp(this.pluginMaps, bind(this, function (pluginMap) { + var mod = getOwn(registry, pluginMap.id); + if (mod && !mod.enabled) { + context.enable(pluginMap, this); + } + })); + + this.enabling = false; + + this.check(); + }, + + on: function (name, cb) { + var cbs = this.events[name]; + if (!cbs) { + cbs = this.events[name] = []; + } + cbs.push(cb); + }, + + emit: function (name, evt) { + each(this.events[name], function (cb) { + cb(evt); + }); + if (name === 'error') { + //Now that the error handler was triggered, remove + //the listeners, since this broken Module instance + //can stay around for a while in the registry. + delete this.events[name]; + } + } + }; + + function callGetModule(args) { + //Skip modules already defined. + if (!hasProp(defined, args[0])) { + getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); + } + } + + function removeListener(node, func, name, ieName) { + //Favor detachEvent because of IE9 + //issue, see attachEvent/addEventListener comment elsewhere + //in this file. + if (node.detachEvent && !isOpera) { + //Probably IE. If not it will throw an error, which will be + //useful to know. + if (ieName) { + node.detachEvent(ieName, func); + } + } else { + node.removeEventListener(name, func, false); + } + } + + /** + * Given an event from a script node, get the requirejs info from it, + * and then removes the event listeners on the node. + * @param {Event} evt + * @returns {Object} + */ + function getScriptData(evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + var node = evt.currentTarget || evt.srcElement; + + //Remove the listeners once here. + removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); + removeListener(node, context.onScriptError, 'error'); + + return { + node: node, + id: node && node.getAttribute('data-requiremodule') + }; + } + + function intakeDefines() { + var args; + + //Any defined modules in the global queue, intake them now. + takeGlobalQueue(); + + //Make sure any remaining defQueue items get properly processed. + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1])); + } else { + //args are id, deps, factory. Should be normalized by the + //define() function. + callGetModule(args); + } + } + } + + context = { + config: config, + contextName: contextName, + registry: registry, + defined: defined, + urlFetched: urlFetched, + defQueue: defQueue, + Module: Module, + makeModuleMap: makeModuleMap, + nextTick: req.nextTick, + onError: onError, + + /** + * Set a configuration for the context. + * @param {Object} cfg config object to integrate. + */ + configure: function (cfg) { + //Make sure the baseUrl ends in a slash. + if (cfg.baseUrl) { + if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { + cfg.baseUrl += '/'; + } + } + + //Save off the paths since they require special processing, + //they are additive. + var shim = config.shim, + objs = { + paths: true, + bundles: true, + config: true, + map: true + }; + + eachProp(cfg, function (value, prop) { + if (objs[prop]) { + if (!config[prop]) { + config[prop] = {}; + } + mixin(config[prop], value, true, true); + } else { + config[prop] = value; + } + }); + + //Reverse map the bundles + if (cfg.bundles) { + eachProp(cfg.bundles, function (value, prop) { + each(value, function (v) { + if (v !== prop) { + bundlesMap[v] = prop; + } + }); + }); + } + + //Merge shim + if (cfg.shim) { + eachProp(cfg.shim, function (value, id) { + //Normalize the structure + if (isArray(value)) { + value = { + deps: value + }; + } + if ((value.exports || value.init) && !value.exportsFn) { + value.exportsFn = context.makeShimExports(value); + } + shim[id] = value; + }); + config.shim = shim; + } + + //Adjust packages if necessary. + if (cfg.packages) { + each(cfg.packages, function (pkgObj) { + var location, name; + + pkgObj = typeof pkgObj === 'string' ? { name: pkgObj } : pkgObj; + + name = pkgObj.name; + location = pkgObj.location; + if (location) { + config.paths[name] = pkgObj.location; + } + + //Save pointer to main module ID for pkg name. + //Remove leading dot in main, so main paths are normalized, + //and remove any trailing .js, since different package + //envs have different conventions: some use a module name, + //some use a file name. + config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main') + .replace(currDirRegExp, '') + .replace(jsSuffixRegExp, ''); + }); + } + + //If there are any "waiting to execute" modules in the registry, + //update the maps for them, since their info, like URLs to load, + //may have changed. + eachProp(registry, function (mod, id) { + //If module already has init called, since it is too + //late to modify them, and ignore unnormalized ones + //since they are transient. + if (!mod.inited && !mod.map.unnormalized) { + mod.map = makeModuleMap(id); + } + }); + + //If a deps array or a config callback is specified, then call + //require with those args. This is useful when require is defined as a + //config object before require.js is loaded. + if (cfg.deps || cfg.callback) { + context.require(cfg.deps || [], cfg.callback); + } + }, + + makeShimExports: function (value) { + function fn() { + var ret; + if (value.init) { + ret = value.init.apply(global, arguments); + } + return ret || (value.exports && getGlobal(value.exports)); + } + return fn; + }, + + makeRequire: function (relMap, options) { + options = options || {}; + + function localRequire(deps, callback, errback) { + var id, map, requireMod; + + if (options.enableBuildCallback && callback && isFunction(callback)) { + callback.__requireJsBuild = true; + } + + if (typeof deps === 'string') { + if (isFunction(callback)) { + //Invalid call + return onError(makeError('requireargs', 'Invalid require call'), errback); + } + + //If require|exports|module are requested, get the + //value for them from the special handlers. Caveat: + //this only works while module is being defined. + if (relMap && hasProp(handlers, deps)) { + return handlers[deps](registry[relMap.id]); + } + + //Synchronous access to one module. If require.get is + //available (as in the Node adapter), prefer that. + if (req.get) { + return req.get(context, deps, relMap, localRequire); + } + + //Normalize module name, if it contains . or .. + map = makeModuleMap(deps, relMap, false, true); + id = map.id; + + if (!hasProp(defined, id)) { + return onError(makeError('notloaded', 'Module name "' + + id + + '" has not been loaded yet for context: ' + + contextName + + (relMap ? '' : '. Use require([])'))); + } + return defined[id]; + } + + //Grab defines waiting in the global queue. + intakeDefines(); + + //Mark all the dependencies as needing to be loaded. + context.nextTick(function () { + //Some defines could have been added since the + //require call, collect them. + intakeDefines(); + + requireMod = getModule(makeModuleMap(null, relMap)); + + //Store if map config should be applied to this require + //call for dependencies. + requireMod.skipMap = options.skipMap; + + requireMod.init(deps, callback, errback, { + enabled: true + }); + + checkLoaded(); + }); + + return localRequire; + } + + mixin(localRequire, { + isBrowser: isBrowser, + + /** + * Converts a module name + .extension into an URL path. + * *Requires* the use of a module name. It does not support using + * plain URLs like nameToUrl. + */ + toUrl: function (moduleNamePlusExt) { + var ext, + index = moduleNamePlusExt.lastIndexOf('.'), + segment = moduleNamePlusExt.split('/')[0], + isRelative = segment === '.' || segment === '..'; + + //Have a file extension alias, and it is not the + //dots from a relative path. + if (index !== -1 && (!isRelative || index > 1)) { + ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); + moduleNamePlusExt = moduleNamePlusExt.substring(0, index); + } + + return context.nameToUrl(normalize(moduleNamePlusExt, + relMap && relMap.id, true), ext, true); + }, + + defined: function (id) { + return hasProp(defined, makeModuleMap(id, relMap, false, true).id); + }, + + specified: function (id) { + id = makeModuleMap(id, relMap, false, true).id; + return hasProp(defined, id) || hasProp(registry, id); + } + }); + + //Only allow undef on top level require calls + if (!relMap) { + localRequire.undef = function (id) { + //Bind any waiting define() calls to this context, + //fix for #408 + takeGlobalQueue(); + + var map = makeModuleMap(id, relMap, true), + mod = getOwn(registry, id); + + removeScript(id); + + delete defined[id]; + delete urlFetched[map.url]; + delete undefEvents[id]; + + //Clean queued defines too. Go backwards + //in array so that the splices do not + //mess up the iteration. + eachReverse(defQueue, function(args, i) { + if(args[0] === id) { + defQueue.splice(i, 1); + } + }); + + if (mod) { + //Hold on to listeners in case the + //module will be attempted to be reloaded + //using a different config. + if (mod.events.defined) { + undefEvents[id] = mod.events; + } + + cleanRegistry(id); + } + }; + } + + return localRequire; + }, + + /** + * Called to enable a module if it is still in the registry + * awaiting enablement. A second arg, parent, the parent module, + * is passed in for context, when this method is overridden by + * the optimizer. Not shown here to keep code compact. + */ + enable: function (depMap) { + var mod = getOwn(registry, depMap.id); + if (mod) { + getModule(depMap).enable(); + } + }, + + /** + * Internal method used by environment adapters to complete a load event. + * A load event could be a script load or just a load pass from a synchronous + * load call. + * @param {String} moduleName the name of the module to potentially complete. + */ + completeLoad: function (moduleName) { + var found, args, mod, + shim = getOwn(config.shim, moduleName) || {}, + shExports = shim.exports; + + takeGlobalQueue(); + + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + args[0] = moduleName; + //If already found an anonymous module and bound it + //to this name, then this is some other anon module + //waiting for its completeLoad to fire. + if (found) { + break; + } + found = true; + } else if (args[0] === moduleName) { + //Found matching define call for this script! + found = true; + } + + callGetModule(args); + } + + //Do this after the cycle of callGetModule in case the result + //of those calls/init calls changes the registry. + mod = getOwn(registry, moduleName); + + if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) { + if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { + if (hasPathFallback(moduleName)) { + return; + } else { + return onError(makeError('nodefine', + 'No define call for ' + moduleName, + null, + [moduleName])); + } + } else { + //A script that does not call define(), so just simulate + //the call for it. + callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); + } + } + + checkLoaded(); + }, + + /** + * Converts a module name to a file path. Supports cases where + * moduleName may actually be just an URL. + * Note that it **does not** call normalize on the moduleName, + * it is assumed to have already been normalized. This is an + * internal API, not a public one. Use toUrl for the public API. + */ + nameToUrl: function (moduleName, ext, skipExt) { + var paths, syms, i, parentModule, url, + parentPath, bundleId, + pkgMain = getOwn(config.pkgs, moduleName); + + if (pkgMain) { + moduleName = pkgMain; + } + + bundleId = getOwn(bundlesMap, moduleName); + + if (bundleId) { + return context.nameToUrl(bundleId, ext, skipExt); + } + + //If a colon is in the URL, it indicates a protocol is used and it is just + //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) + //or ends with .js, then assume the user meant to use an url and not a module id. + //The slash is important for protocol-less URLs as well as full paths. + if (req.jsExtRegExp.test(moduleName)) { + //Just a plain path, not module name lookup, so just return it. + //Add extension if it is included. This is a bit wonky, only non-.js things pass + //an extension, this method probably needs to be reworked. + url = moduleName + (ext || ''); + } else { + //A module that needs to be converted to a path. + paths = config.paths; + + syms = moduleName.split('/'); + //For each module name segment, see if there is a path + //registered for it. Start with most specific name + //and work up from it. + for (i = syms.length; i > 0; i -= 1) { + parentModule = syms.slice(0, i).join('/'); + + parentPath = getOwn(paths, parentModule); + if (parentPath) { + //If an array, it means there are a few choices, + //Choose the one that is desired + if (isArray(parentPath)) { + parentPath = parentPath[0]; + } + syms.splice(0, i, parentPath); + break; + } + } + + //Join the path parts together, then figure out if baseUrl is needed. + url = syms.join('/'); + url += (ext || (/^data\:|\?/.test(url) || skipExt ? '' : '.js')); + url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; + } + + return config.urlArgs ? url + + ((url.indexOf('?') === -1 ? '?' : '&') + + config.urlArgs) : url; + }, + + //Delegates to req.load. Broken out as a separate function to + //allow overriding in the optimizer. + load: function (id, url) { + req.load(context, id, url); + }, + + /** + * Executes a module callback function. Broken out as a separate function + * solely to allow the build system to sequence the files in the built + * layer in the right sequence. + * + * @private + */ + execCb: function (name, callback, args, exports) { + return callback.apply(exports, args); + }, + + /** + * callback for script loads, used to check status of loading. + * + * @param {Event} evt the event from the browser for the script + * that was loaded. + */ + onScriptLoad: function (evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + if (evt.type === 'load' || + (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { + //Reset interactive script so a script node is not held onto for + //to long. + interactiveScript = null; + + //Pull out the name of the module and the context. + var data = getScriptData(evt); + context.completeLoad(data.id); + } + }, + + /** + * Callback for script errors. + */ + onScriptError: function (evt) { + var data = getScriptData(evt); + if (!hasPathFallback(data.id)) { + return onError(makeError('scripterror', 'Script error for: ' + data.id, evt, [data.id])); + } + } + }; + + context.require = context.makeRequire(); + return context; + } + + /** + * Main entry point. + * + * If the only argument to require is a string, then the module that + * is represented by that string is fetched for the appropriate context. + * + * If the first argument is an array, then it will be treated as an array + * of dependency string names to fetch. An optional function callback can + * be specified to execute when all of those dependencies are available. + * + * Make a local req variable to help Caja compliance (it assumes things + * on a require that are not standardized), and to give a short + * name for minification/local scope use. + */ + req = requirejs = function (deps, callback, errback, optional) { + + //Find the right context, use default + var context, config, + contextName = defContextName; + + // Determine if have config object in the call. + if (!isArray(deps) && typeof deps !== 'string') { + // deps is a config object + config = deps; + if (isArray(callback)) { + // Adjust args if there are dependencies + deps = callback; + callback = errback; + errback = optional; + } else { + deps = []; + } + } + + if (config && config.context) { + contextName = config.context; + } + + context = getOwn(contexts, contextName); + if (!context) { + context = contexts[contextName] = req.s.newContext(contextName); + } + + if (config) { + context.configure(config); + } + + return context.require(deps, callback, errback); + }; + + /** + * Support require.config() to make it easier to cooperate with other + * AMD loaders on globally agreed names. + */ + req.config = function (config) { + return req(config); + }; + + /** + * Execute something after the current tick + * of the event loop. Override for other envs + * that have a better solution than setTimeout. + * @param {Function} fn function to execute later. + */ + req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { + setTimeout(fn, 4); + } : function (fn) { fn(); }; + + /** + * Export require as a global, but only if it does not already exist. + */ + if (!require) { + require = req; + } + + req.version = version; + + //Used to filter out dependencies that are already paths. + req.jsExtRegExp = /^\/|:|\?|\.js$/; + req.isBrowser = isBrowser; + s = req.s = { + contexts: contexts, + newContext: newContext + }; + + //Create default context. + req({}); + + //Exports some context-sensitive methods on global require. + each([ + 'toUrl', + 'undef', + 'defined', + 'specified' + ], function (prop) { + //Reference from contexts instead of early binding to default context, + //so that during builds, the latest instance of the default context + //with its config gets used. + req[prop] = function () { + var ctx = contexts[defContextName]; + return ctx.require[prop].apply(ctx, arguments); + }; + }); + + if (isBrowser) { + head = s.head = document.getElementsByTagName('head')[0]; + //If BASE tag is in play, using appendChild is a problem for IE6. + //When that browser dies, this can be removed. Details in this jQuery bug: + //http://dev.jquery.com/ticket/2709 + baseElement = document.getElementsByTagName('base')[0]; + if (baseElement) { + head = s.head = baseElement.parentNode; + } + } + + /** + * Any errors that require explicitly generates will be passed to this + * function. Intercept/override it if you want custom error handling. + * @param {Error} err the error object. + */ + req.onError = defaultOnError; + + /** + * Creates the node for the load command. Only used in browser envs. + */ + req.createNode = function (config, moduleName, url) { + var node = config.xhtml ? + document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : + document.createElement('script'); + node.type = config.scriptType || 'text/javascript'; + node.charset = 'utf-8'; + node.async = true; + return node; + }; + + /** + * Does the request to load a module for the browser case. + * Make this a separate function to allow other environments + * to override it. + * + * @param {Object} context the require context to find state. + * @param {String} moduleName the name of the module. + * @param {Object} url the URL to the module. + */ + req.load = function (context, moduleName, url) { + var config = (context && context.config) || {}, + node; + if (isBrowser) { + //In the browser so use a script tag + node = req.createNode(config, moduleName, url); + + node.setAttribute('data-requirecontext', context.contextName); + node.setAttribute('data-requiremodule', moduleName); + + //Set up load listener. Test attachEvent first because IE9 has + //a subtle issue in its addEventListener and script onload firings + //that do not match the behavior of all other browsers with + //addEventListener support, which fire the onload event for a + //script right after the script execution. See: + //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution + //UNFORTUNATELY Opera implements attachEvent but does not follow the script + //script execution mode. + if (node.attachEvent && + //Check if node.attachEvent is artificially added by custom script or + //natively supported by browser + //read https://github.com/jrburke/requirejs/issues/187 + //if we can NOT find [native code] then it must NOT natively supported. + //in IE8, node.attachEvent does not have toString() + //Note the test for "[native code" with no closing brace, see: + //https://github.com/jrburke/requirejs/issues/273 + !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && + !isOpera) { + //Probably IE. IE (at least 6-8) do not fire + //script onload right after executing the script, so + //we cannot tie the anonymous define call to a name. + //However, IE reports the script as being in 'interactive' + //readyState at the time of the define call. + useInteractive = true; + + node.attachEvent('onreadystatechange', context.onScriptLoad); + //It would be great to add an error handler here to catch + //404s in IE9+. However, onreadystatechange will fire before + //the error handler, so that does not help. If addEventListener + //is used, then IE will fire error before load, but we cannot + //use that pathway given the connect.microsoft.com issue + //mentioned above about not doing the 'script execute, + //then fire the script load event listener before execute + //next script' that other browsers do. + //Best hope: IE10 fixes the issues, + //and then destroys all installs of IE 6-9. + //node.attachEvent('onerror', context.onScriptError); + } else { + node.addEventListener('load', context.onScriptLoad, false); + node.addEventListener('error', context.onScriptError, false); + } + node.src = url; + + //For some cache cases in IE 6-8, the script executes before the end + //of the appendChild execution, so to tie an anonymous define + //call to the module name (which is stored on the node), hold on + //to a reference to this node, but clear after the DOM insertion. + currentlyAddingScript = node; + if (baseElement) { + head.insertBefore(node, baseElement); + } else { + head.appendChild(node); + } + currentlyAddingScript = null; + + return node; + } else if (isWebWorker) { + try { + //In a web worker, use importScripts. This is not a very + //efficient use of importScripts, importScripts will block until + //its script is downloaded and evaluated. However, if web workers + //are in play, the expectation that a build has been done so that + //only one script needs to be loaded anyway. This may need to be + //reevaluated if other use cases become common. + importScripts(url); + + //Account for anonymous modules + context.completeLoad(moduleName); + } catch (e) { + context.onError(makeError('importscripts', + 'importScripts failed for ' + + moduleName + ' at ' + url, + e, + [moduleName])); + } + } + }; + + function getInteractiveScript() { + if (interactiveScript && interactiveScript.readyState === 'interactive') { + return interactiveScript; + } + + eachReverse(scripts(), function (script) { + if (script.readyState === 'interactive') { + return (interactiveScript = script); + } + }); + return interactiveScript; + } + + //Look for a data-main script attribute, which could also adjust the baseUrl. + if (isBrowser && !cfg.skipDataMain) { + //Figure out baseUrl. Get it from the script tag with require.js in it. + eachReverse(scripts(), function (script) { + //Set the 'head' where we can append children by + //using the script's parent. + if (!head) { + head = script.parentNode; + } + + //Look for a data-main attribute to set main script for the page + //to load. If it is there, the path to data main becomes the + //baseUrl, if it is not already set. + dataMain = script.getAttribute('data-main'); + if (dataMain) { + //Preserve dataMain in case it is a path (i.e. contains '?') + mainScript = dataMain; + + //Set final baseUrl if there is not already an explicit one. + if (!cfg.baseUrl) { + //Pull off the directory of data-main for use as the + //baseUrl. + src = mainScript.split('/'); + mainScript = src.pop(); + subPath = src.length ? src.join('/') + '/' : './'; + + cfg.baseUrl = subPath; + } + + //Strip off any trailing .js since mainScript is now + //like a module name. + mainScript = mainScript.replace(jsSuffixRegExp, ''); + + //If mainScript is still a path, fall back to dataMain + if (req.jsExtRegExp.test(mainScript)) { + mainScript = dataMain; + } + + //Put the data-main script in the files to load. + cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript]; + + return true; + } + }); + } + + /** + * The function that handles definitions of modules. Differs from + * require() in that a string for the module should be the first argument, + * and the function to execute after dependencies are loaded should + * return a value to define the module corresponding to the first argument's + * name. + */ + define = function (name, deps, callback) { + var node, context; + + //Allow for anonymous modules + if (typeof name !== 'string') { + //Adjust args appropriately + callback = deps; + deps = name; + name = null; + } + + //This module may not have dependencies + if (!isArray(deps)) { + callback = deps; + deps = null; + } + + //If no name, and callback is a function, then figure out if it a + //CommonJS thing with dependencies. + if (!deps && isFunction(callback)) { + deps = []; + //Remove comments from the callback string, + //look for require calls, and pull them into the dependencies, + //but only if there are function args. + if (callback.length) { + callback + .toString() + .replace(commentRegExp, '') + .replace(cjsRequireRegExp, function (match, dep) { + deps.push(dep); + }); + + //May be a CommonJS thing even without require calls, but still + //could use exports, and module. Avoid doing exports and module + //work though if it just needs require. + //REQUIRES the function to expect the CommonJS variables in the + //order listed below. + deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); + } + } + + //If in IE 6-8 and hit an anonymous define() call, do the interactive + //work. + if (useInteractive) { + node = currentlyAddingScript || getInteractiveScript(); + if (node) { + if (!name) { + name = node.getAttribute('data-requiremodule'); + } + context = contexts[node.getAttribute('data-requirecontext')]; + } + } + + //Always save off evaluating the def call until the script onload handler. + //This allows multiple modules to be in a file without prematurely + //tracing dependencies, and allows for anonymous module support, + //where the module name is not known until the script onload event + //occurs. If no context, use the global queue, and get it processed + //in the onscript load callback. + (context ? context.defQueue : globalDefQueue).push([name, deps, callback]); + }; + + define.amd = { + jQuery: true + }; + + + /** + * Executes the text. Normally just uses eval, but can be modified + * to use a better, environment-specific call. Only used for transpiling + * loader plugins, not for plain JS modules. + * @param {String} text the text to execute/evaluate. + */ + req.exec = function (text) { + /*jslint evil: true */ + return eval(text); + }; + + //Set up with config info. + req(cfg); +}(this)); diff --git a/plugins/node_modules/ace/demo/kitchen-sink/styles.css b/plugins/node_modules/ace/demo/kitchen-sink/styles.css new file mode 100644 index 00000000..b9ace9c6 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/styles.css @@ -0,0 +1,57 @@ +html { + height: 100%; + width: 100%; + overflow: hidden; +} + +body { + overflow: hidden; + margin: 0; + padding: 0; + height: 100%; + width: 100%; + font-family: Arial, Helvetica, sans-serif, Tahoma, Verdana, sans-serif; + font-size: 12px; + background: rgb(14, 98, 165); + color: white; +} + +#c9-logo, #ace-logo { + padding: 0; + border: none; +} + +#editor-container { + position: absolute; + top: 0px; + left: 280px; + bottom: 0px; + right: 0px; + background: white; +} + +#controls { + padding: 5px; +} + +#controls td { + text-align: right; +} + +#controls td + td { + text-align: left; +} +.ace_status-indicator { + color: gray; + position: absolute; + right: 0; + border-left: 1px solid; +} + +/* .ace_text-input { + z-index: 10!important; + opacity: 1!important; + background: rgb(84, 0, 255)!important; + color: rgb(255, 255, 255)!important; + width: 10em!important; +}*/ diff --git a/plugins/node_modules/ace/demo/kitchen-sink/token_tooltip.js b/plugins/node_modules/ace/demo/kitchen-sink/token_tooltip.js new file mode 100644 index 00000000..9e607f69 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/token_tooltip.js @@ -0,0 +1,156 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("ace/lib/dom"); +var oop = require("ace/lib/oop"); +var event = require("ace/lib/event"); +var Range = require("ace/range").Range; +var Tooltip = require("ace/tooltip").Tooltip; + +function TokenTooltip (editor) { + if (editor.tokenTooltip) + return; + Tooltip.call(this, editor.container); + editor.tokenTooltip = this; + this.editor = editor; + + this.update = this.update.bind(this); + this.onMouseMove = this.onMouseMove.bind(this); + this.onMouseOut = this.onMouseOut.bind(this); + event.addListener(editor.renderer.scroller, "mousemove", this.onMouseMove); + event.addListener(editor.renderer.content, "mouseout", this.onMouseOut); +} + +oop.inherits(TokenTooltip, Tooltip); + +(function(){ + this.token = {}; + this.range = new Range(); + + this.update = function() { + this.$timer = null; + + var r = this.editor.renderer; + if (this.lastT - (r.timeStamp || 0) > 1000) { + r.rect = null; + r.timeStamp = this.lastT; + this.maxHeight = window.innerHeight; + this.maxWidth = window.innerWidth; + } + + var canvasPos = r.rect || (r.rect = r.scroller.getBoundingClientRect()); + var offset = (this.x + r.scrollLeft - canvasPos.left - r.$padding) / r.characterWidth; + var row = Math.floor((this.y + r.scrollTop - canvasPos.top) / r.lineHeight); + var col = Math.round(offset); + + var screenPos = {row: row, column: col, side: offset - col > 0 ? 1 : -1}; + var session = this.editor.session; + var docPos = session.screenToDocumentPosition(screenPos.row, screenPos.column); + var token = session.getTokenAt(docPos.row, docPos.column); + + if (!token && !session.getLine(docPos.row)) { + token = { + type: "", + value: "", + state: session.bgTokenizer.getState(0) + }; + } + if (!token) { + session.removeMarker(this.marker); + this.hide(); + return; + } + + var tokenText = token.type; + if (token.state) + tokenText += "|" + token.state; + if (token.merge) + tokenText += "\n merge"; + if (token.stateTransitions) + tokenText += "\n " + token.stateTransitions.join("\n "); + + if (this.tokenText != tokenText) { + this.setText(tokenText); + this.width = this.getWidth(); + this.height = this.getHeight(); + this.tokenText = tokenText; + } + + this.show(null, this.x, this.y); + + this.token = token; + session.removeMarker(this.marker); + this.range = new Range(docPos.row, token.start, docPos.row, token.start + token.value.length); + this.marker = session.addMarker(this.range, "ace_bracket", "text"); + }; + + this.onMouseMove = function(e) { + this.x = e.clientX; + this.y = e.clientY; + if (this.isOpen) { + this.lastT = e.timeStamp; + this.setPosition(this.x, this.y); + } + if (!this.$timer) + this.$timer = setTimeout(this.update, 100); + }; + + this.onMouseOut = function(e) { + if (e && e.currentTarget.contains(e.relatedTarget)) + return; + this.hide(); + this.editor.session.removeMarker(this.marker); + this.$timer = clearTimeout(this.$timer); + }; + + this.setPosition = function(x, y) { + if (x + 10 + this.width > this.maxWidth) + x = window.innerWidth - this.width - 10; + if (y > window.innerHeight * 0.75 || y + 20 + this.height > this.maxHeight) + y = y - this.height - 30; + + Tooltip.prototype.setPosition.call(this, x + 10, y + 20); + }; + + this.destroy = function() { + this.onMouseOut(); + event.removeListener(this.editor.renderer.scroller, "mousemove", this.onMouseMove); + event.removeListener(this.editor.renderer.content, "mouseout", this.onMouseOut); + delete this.editor.tokenTooltip; + }; + +}).call(TokenTooltip.prototype); + +exports.TokenTooltip = TokenTooltip; + +}); diff --git a/plugins/node_modules/ace/demo/kitchen-sink/util.js b/plugins/node_modules/ace/demo/kitchen-sink/util.js new file mode 100644 index 00000000..c4b74f38 --- /dev/null +++ b/plugins/node_modules/ace/demo/kitchen-sink/util.js @@ -0,0 +1,235 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("ace/lib/dom"); +var event = require("ace/lib/event"); + +var EditSession = require("ace/edit_session").EditSession; +var UndoManager = require("ace/undomanager").UndoManager; +var Renderer = require("ace/virtual_renderer").VirtualRenderer; +var Editor = require("ace/editor").Editor; +var MultiSelect = require("ace/multi_select").MultiSelect; + +exports.createEditor = function(el) { + return new Editor(new Renderer(el)); +}; + +exports.createSplitEditor = function(el) { + if (typeof(el) == "string") + el = document.getElementById(el); + + var e0 = document.createElement("div"); + var s = document.createElement("splitter"); + var e1 = document.createElement("div"); + el.appendChild(e0); + el.appendChild(e1); + el.appendChild(s); + e0.style.position = e1.style.position = s.style.position = "absolute"; + el.style.position = "relative"; + var split = {$container: el}; + + split.editor0 = split[0] = new Editor(new Renderer(e0)); + split.editor1 = split[1] = new Editor(new Renderer(e1)); + split.splitter = s; + + s.ratio = 0.5; + + split.resize = function resize(){ + var height = el.parentNode.clientHeight - el.offsetTop; + var total = el.clientWidth; + var w1 = total * s.ratio; + var w2 = total * (1- s.ratio); + s.style.left = w1 - 1 + "px"; + s.style.height = el.style.height = height + "px"; + + var st0 = split[0].container.style; + var st1 = split[1].container.style; + st0.width = w1 + "px"; + st1.width = w2 + "px"; + st0.left = 0 + "px"; + st1.left = w1 + "px"; + + st0.top = st1.top = "0px"; + st0.height = st1.height = height + "px"; + + split[0].resize(); + split[1].resize(); + }; + + split.onMouseDown = function(e) { + var rect = el.getBoundingClientRect(); + var x = e.clientX; + var y = e.clientY; + + var button = e.button; + if (button !== 0) { + return; + } + + var onMouseMove = function(e) { + x = e.clientX; + y = e.clientY; + }; + var onResizeEnd = function(e) { + clearInterval(timerId); + }; + + var onResizeInterval = function() { + s.ratio = (x - rect.left) / rect.width; + split.resize(); + }; + + event.capture(s, onMouseMove, onResizeEnd); + var timerId = setInterval(onResizeInterval, 40); + + return e.preventDefault(); + }; + + + + event.addListener(s, "mousedown", split.onMouseDown); + event.addListener(window, "resize", split.resize); + split.resize(); + return split; +}; + +/***************************/ +exports.stripLeadingComments = function(str) { + if(str.slice(0,2)=='/*') { + var j = str.indexOf('*/')+2; + str = str.substr(j); + } + return str.trim() + "\n"; +}; + +/***************************/ +exports.saveOption = function(el, val) { + if (!el.onchange && !el.onclick) + return; + + if ("checked" in el) { + if (val !== undefined) + el.checked = val; + + localStorage && localStorage.setItem(el.id, el.checked ? 1 : 0); + } + else { + if (val !== undefined) + el.value = val; + + localStorage && localStorage.setItem(el.id, el.value); + } +}; + +exports.bindCheckbox = function(id, callback, noInit) { + if (typeof id == "string") + var el = document.getElementById(id); + else { + var el = id; + id = el.id; + } + var el = document.getElementById(id); + if (localStorage && localStorage.getItem(id)) + el.checked = localStorage.getItem(id) == "1"; + + var onCheck = function() { + callback(!!el.checked); + exports.saveOption(el); + }; + el.onclick = onCheck; + noInit || onCheck(); + return el; +}; + +exports.bindDropdown = function(id, callback, noInit) { + if (typeof id == "string") + var el = document.getElementById(id); + else { + var el = id; + id = el.id; + } + if (localStorage && localStorage.getItem(id)) + el.value = localStorage.getItem(id); + + var onChange = function() { + callback(el.value); + exports.saveOption(el); + }; + + el.onchange = onChange; + noInit || onChange(); +}; + +exports.fillDropdown = function(el, values) { + if (typeof el == "string") + el = document.getElementById(el); + + dropdown(values).forEach(function(e) { + el.appendChild(e); + }); +}; + +function elt(tag, attributes, content) { + var el = dom.createElement(tag); + if (typeof content == "string") { + el.appendChild(document.createTextNode(content)); + } else if (content) { + content.forEach(function(ch) { + el.appendChild(ch); + }); + } + + for (var i in attributes) + el.setAttribute(i, attributes[i]); + return el; +} + +function optgroup(values) { + return values.map(function(item) { + if (typeof item == "string") + item = {name: item, caption: item}; + return elt("option", {value: item.value || item.name}, item.caption || item.desc); + }); +} + +function dropdown(values) { + if (Array.isArray(values)) + return optgroup(values); + + return Object.keys(values).map(function(i) { + return elt("optgroup", {"label": i}, optgroup(values[i])); + }); +} + + +}); diff --git a/plugins/node_modules/ace/demo/modelist.html b/plugins/node_modules/ace/demo/modelist.html new file mode 100644 index 00000000..9b4b6039 --- /dev/null +++ b/plugins/node_modules/ace/demo/modelist.html @@ -0,0 +1,51 @@ + + + + + + ACE Editor Modelist Demo + + + + +
    
    +    
    +
    +
    +
    +
    +
    +
    diff --git a/plugins/node_modules/ace/demo/r.js/build.js b/plugins/node_modules/ace/demo/r.js/build.js
    new file mode 100644
    index 00000000..028d2234
    --- /dev/null
    +++ b/plugins/node_modules/ace/demo/r.js/build.js
    @@ -0,0 +1,20 @@
    +({
    +    optimize: "none",
    +    preserveLicenseComments: false,
    +    name: "node_modules/almond/almond",
    +    baseUrl: "../../",
    +    paths: {
    +        ace : "lib/ace",
    +        demo: "demo/kitchen-sink"        
    +    },
    +    packages: [
    +    ],
    +    include: [
    +        "ace/ace"
    +    ],
    +    exclude: [
    +    ],
    +    out: "./packed.js",
    +    useStrict: true,
    +    wrap: false
    +})
    \ No newline at end of file
    diff --git a/plugins/node_modules/ace/demo/r.js/editor.html b/plugins/node_modules/ace/demo/r.js/editor.html
    new file mode 100644
    index 00000000..9f7a47bf
    --- /dev/null
    +++ b/plugins/node_modules/ace/demo/r.js/editor.html
    @@ -0,0 +1,36 @@
    +
    +
    +
    +
    +    Editor
    +        
    +
    +
    +    
    +
    +        
    + demo showing Ace usage with r.js: + + install r.js and almond + and run `r.js -o demo/r.js/build.js` + + note that you also need ace/build/src to lazy load modes and themes + require("ace/config").set("basePath", "../../build/src"); + require("ace/config").set("packaged", true); +
    +
    + + + + + diff --git a/plugins/node_modules/ace/demo/requirejs+build.html b/plugins/node_modules/ace/demo/requirejs+build.html new file mode 100644 index 00000000..72d50dbc --- /dev/null +++ b/plugins/node_modules/ace/demo/requirejs+build.html @@ -0,0 +1,49 @@ + + + + + + Editor + + + + +
    function foo(items) {
    +    var i;
    +    for (i = 0; i < items.length; i++) {
    +        alert("Ace Rocks " + items[i]);
    +    }
    +}
    + + + + + + diff --git a/plugins/node_modules/ace/demo/scrollable-page.html b/plugins/node_modules/ace/demo/scrollable-page.html new file mode 100644 index 00000000..ef725c4a --- /dev/null +++ b/plugins/node_modules/ace/demo/scrollable-page.html @@ -0,0 +1,155 @@ + + + + + + Editor + + + +
    + + scroll down ⇓ + +
    +
    function foo(items) {
    +    var i;
    +    for (i = 0; i < items.length; i++) {
    +        alert("Ace Rocks " + items[i]);
    +    }
    +
    +}
    +
    +
    + press F11 to switch to fullscreen mode +
    + + + + + +
    + + + + + + diff --git a/plugins/node_modules/ace/demo/settings_menu.html b/plugins/node_modules/ace/demo/settings_menu.html new file mode 100644 index 00000000..9fb82a43 --- /dev/null +++ b/plugins/node_modules/ace/demo/settings_menu.html @@ -0,0 +1,49 @@ + + + + + + Editor + + + + +
    
    +    
    +
    +
    +
    +
    +
    +
    diff --git a/plugins/node_modules/ace/demo/show_own_source.js b/plugins/node_modules/ace/demo/show_own_source.js
    new file mode 100644
    index 00000000..a9e0ec69
    --- /dev/null
    +++ b/plugins/node_modules/ace/demo/show_own_source.js
    @@ -0,0 +1,16 @@
    +if (typeof ace == "undefined" && typeof require == "undefined") {
    +    document.body.innerHTML = "

    couldn't find ace.js file,
    " + + "to build it run node Makefile.dryice.js full" +} else if (typeof ace == "undefined" && typeof require != "undefined") { + require(["ace/ace"], setValue) +} else { + require = ace.require; + setValue() +} + +function setValue() { + require("ace/lib/net").get(document.baseURI, function(t){ + var el = document.getElementById("editor"); + el.env.editor.setValue(t, 1); + }) +} \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/static-highlighter.html b/plugins/node_modules/ace/demo/static-highlighter.html new file mode 100644 index 00000000..8e43789d --- /dev/null +++ b/plugins/node_modules/ace/demo/static-highlighter.html @@ -0,0 +1,83 @@ + + + + + Static Code highlighter using Ace + + + + + +

    Client Side Syntax Highlighting

    + +

    Syntax highlighting using Ace language modes and themes.

    + +
    +.code { + width: 50%; + white-space: pre-wrap; + border: solid lightgrey 1px +} + +
    + +
    +function wobble (flam) {
    +    return flam.wobbled = true;
    +}
    +
    +
    + + +
    +--[[-- +num_args takes in 5.1 byte code and extracts the number of arguments from its function header. +--]]-- + +function int(t) + return t:byte(1) + t:byte(2) * 0x100 + t:byte(3) * 0x10000 + t:byte(4) * 0x1000000 +end + +function num_args(func) + local dump = string.dump(func) + local offset, cursor = int(dump:sub(13)), offset + 26 + --Get the params and var flag (whether there's a ... in the param) + return dump:sub(cursor):byte(), dump:sub(cursor+1):byte() +end + +
    + + + + + + + diff --git a/plugins/node_modules/ace/demo/static-highlighter/client.html b/plugins/node_modules/ace/demo/static-highlighter/client.html new file mode 100644 index 00000000..93d20909 --- /dev/null +++ b/plugins/node_modules/ace/demo/static-highlighter/client.html @@ -0,0 +1,47 @@ + + + + + + Static Code highlighter using Ace + + + + +

    Client Side Syntax Highlighting

    + +

    Syntax highlighting using Ace language modes and themes.

    + +
    + + + + + + diff --git a/plugins/node_modules/ace/demo/static-highlighter/server.js b/plugins/node_modules/ace/demo/static-highlighter/server.js new file mode 100644 index 00000000..ea8361d4 --- /dev/null +++ b/plugins/node_modules/ace/demo/static-highlighter/server.js @@ -0,0 +1,42 @@ +/** + * Simple node.js server, which generates the synax highlighted version of itself + * using the Ace modes and themes on the server and serving a static web page. + */ + +// include ace search path and modules +require("amd-loader"); + +var http = require("http"); +var fs = require("fs"); +var resolve = require("path").resolve; + +// load the highlighter and the desired mode and theme +var highlighter = require("../../lib/ace/ext/static_highlight"); +var JavaScriptMode = require("../../lib/ace/mode/javascript").Mode; +var theme = require("../../lib/ace/theme/twilight"); + +var port = process.env.PORT || 2222; + +http.createServer(function(req, res) { + var url = req.url; + var path = /[^#?\x00]*/.exec(url)[0]; + var root = resolve(__dirname + "/../../").replace(/\\/g, "/"); + path = resolve(root + "/" + path).replace(/\\/g, "/"); + if (path.indexOf(root + "/") != 0) + path = __filename; + res.writeHead(200, {"Content-Type": "text/html; charset=utf-8"}); + fs.readFile(path, "utf8", function(err, data) { + if (err) data = err.message; + var highlighted = highlighter.render(data, new JavaScriptMode(), theme); + res.end( + '\n' + + '\n' + + highlighted.html + + '' + ); + }); +}).listen(port); + +console.log("Listening on port " + port); \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/statusbar.html b/plugins/node_modules/ace/demo/statusbar.html new file mode 100644 index 00000000..d38bfcb9 --- /dev/null +++ b/plugins/node_modules/ace/demo/statusbar.html @@ -0,0 +1,61 @@ + + + + + + ACE Editor StatusBar Demo + + + + +
    
    +
    ace rocks!
    + + + + + + + diff --git a/plugins/node_modules/ace/demo/svg.svg b/plugins/node_modules/ace/demo/svg.svg new file mode 100644 index 00000000..662ab53b --- /dev/null +++ b/plugins/node_modules/ace/demo/svg.svg @@ -0,0 +1,11 @@ + + + + + +
    Hi!
    +
    +
    \ No newline at end of file diff --git a/plugins/node_modules/ace/demo/xml.xml b/plugins/node_modules/ace/demo/xml.xml new file mode 100644 index 00000000..b4f78bf8 --- /dev/null +++ b/plugins/node_modules/ace/demo/xml.xml @@ -0,0 +1,33 @@ + + + + + + ACE Autocompletion demo + + + +
    
    +
    +    
    +    
    +
    +    
    +
    +
    diff --git a/plugins/node_modules/ace/doc/site/images/ace-logo.png b/plugins/node_modules/ace/doc/site/images/ace-logo.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..886a8df3119423f1b37d8675855421f53b525bd5
    GIT binary patch
    literal 60546
    zcmW(+V{~NQ67AUL#I|jllT2*ew(VrXi7~M~VaK-3i8ZnF`g?2j?bZF~+*@_4_Nm%u
    zSM+x!X(V_&cmM!^Br7AK3IKqKfPOE-LW8~wR(1dT^UY0C%k77wg`20bi#b5l%+bW0
    zMAqKe(p=Tt*v#8`%v=BfxS)`g5LNS9zv%YvqF7OBYVqnD
    zZpF=ZHhpTY@0*=9vf2dJb6r^&okUo-S^5lcuyD*W2*(+BG$4JrhK}H}a5cyGg(3~F
    zrhDoltgF*iv_9RMOIesnY`PvLc1rbVQjW>=r?B1oR#y7`k&qhv*ylg?JLV5tYF#Hf
    zR+L}^M1m1OIiUiH0QgsB5F`*RF3N_0%s;)3V5^W$*uZZ96hM1MRLqi!zJ215RF!!B
    zI+1w6Ik*>g&@s3dRgf(}4{3M4qt-ai*c6eyseWtF-pB$BKo+7J0}xq@PgRw(Rn)P~
    zHP0d|`T@9tcA^iOfp|s?O2n8GuWG7a*8sGy=g|Q95qIggW;6lq4h>o|+Uf4v>7}*j
    z9hG!H)YJa$KDNCJ0D_ivT67pe>o~M+WPQ!)?7-}j13uw_`QXnSXk%vzHLX~H+SU>9
    zn{|Kz;%*g~Up(v4SrN^65l!WgiAtKeHaAl(j){CHiFZjG^}bD@sH7FanriZl(Y|Jv1?&c3kwwcP~W@@&{lS
    zet|;EfcE!ihrp*my5DMbE4B|l-P2AylK?+dAU~jMD}1iX9xABHzU300jT`Vx1gOiJ
    zIUW$0i4~Z^*`E!M@__1;MhG&r!+nZ2u=;Pa;lAdBEZer?IBVIse1h^?}`k1eS;fdiKw4`F%`fhd4y
    z?t_2r!bFLdv;LVmrkgq^>S6O+sb?ZyJv4Nx}aB>Nma@a)D
    zc?pC9yLv}sxx_>N0dZI^3Z14paq@?re-jDT6Cr+OW#tVYA0Ke@1MrD~#;BpW_@5_#
    zLOef0Jiipt^ng~Lv}{`27X!kGcm!>u$C_B&dNn{?;3=FXHvpv}LMDvbbZNTqNuXJj
    zflfHGNZzx$$jND{HX!4BTU$NAfheeRZrQ3Go>=l>L2iRT5g=Ywes?_vc690Ev|(;EQ41r&0Dpwndy*D
    z+$Vf+PqIX)q(Q6elZTFe68#JAVS{-!OQ^ASwJSM4z|UGcLB&W;(gAj1zbz~mWU%aaDz@O@JM0l
    zb@H^s{hasb7Vpur)#{MZ?2yx{WZi~T+k$9Y)to~c(O(>JLbQ`I6vXv8sAGW?%e#N|K4
    z<5m|1D)vpU_7<e;s0MT=*D%kVWe%U5q!Cko>9
    zNJ}=NjNQuWOFV692a{R$IlP_m=TE9HX&KEi83gue-3r$L@!v#5uo)#nosE4D4-b9A
    z!^5~hZnQbW+S>8|Tu2T5UJJO11R>1`7dLlVr}b-;3=z^zgOic3a}X3jOjtCY7scp5qE^$$(I>o#WkJ*qFTyTN^vQ~b=J9_%JwOOxhQ67enwq*YW6S!zS4;0Bv3zW>
    zF#1nc512#oyvCB7iT82EkG_5~}q|%(VK4jiPNCjn%u2qYURSSPm6<+o)=hq9aD`977
    zn5CkQQ?E|1wcnRTzf+T36kd#jzN2?^OhSJsS1pZ86{|S%5PXsat<)fDgSOmtBI27j
    zDnPIIfnQ}&r=Z?yw(4XJ@83b#QvCQitRcYF&teoQ}
    z!Hs%B=Xm`Z>0|&ST(Jo%*u}2-lt?o;%$bbCpZ9_SJSorwy2lTSeJxdd3j215>6rBwYYlbToTAJ4ET?Iby(b
    zLYkA$e~H}y)q4$fGaO0eW2K5Ic^d2p^GsRo$h)a1uFs{A&!^tH?P|I9cJEQ;I%E#x
    zd;`RTg=Yw{Q7NE-Uv&Qq7(e~e5~*G9n~a~JJ)G6D!^|PsMJ8>AIZb7Z3Cv+EPlgbg
    z0Z5YUy~y^mQZ|b11^tnLuW^9cazN3x7Q_5%-{o&E7@i=QA~iWvIFT_UxvcJu$KFZld{8!T2w2}|Vql~)*~c0AT{W(uTBhQA9cuFE
    z#paitOtqfFOn3UXq83w^u-tnmYKVJSse)M*v64+oRoMKBJ_<%tQ`3vcJUPOb|0dkz*3M#-MVj0lA%f(53RA~+)L*!pXRRIL?tq(u-gw3eztQ=Ok^`%
    zPa3+l>(kW?h7|Z{aYg-3$|N+^H#8)!t*Z+p0!~C*b#TA2nn17Kaaz^&Gh(
    zb?krD!nMO?Q1}nV-up+6ZKV@02GTN!#X8e2A%zZ-5-|lBetYwIpntn1Wvn3FJ&46Y
    znxOOe(;0TZcC#GboGdNXZUP+*G9|}qkfmVWgGYqHgloV8EonOaPbrj`#fb-kKTH@&
    z|5_8qX22W7bL9Zr+ZBF?w>&*fjRb8=DAM|7mEfoBZysC*FH|>$n+3pUU!}jpe~~>G
    zyaTF;4x%xrrv(X~za16OJ(5`vUrpPJJHA|)+yqCeU3XaOg~YcINkHBSNV76C7@>h-
    z)97ne82$7j1;kf3iXQ)BV$~oTV5Ly+5sTAmcOpr%x!k26l;z|)dKn!Vm~!HsyNGVL
    zX`a8bMr0Au5#9Vpq6+pd0v-ZR8(y7O$d6mJWj%n~r|+3R=>L@4_w{JreVJjnZ17zF
    z>}SVP3Sfc_;pRupsj0pAFRmkDdNskGw|-J9C!BZG;twJJrf4WD`krr;uzRevlfTn>
    z@;)hjY@1=|gO*?zfcgveuSxKl8@#CkWZrHTHItZn?W$2()y)4JCr?zMy$fa=SLYR&R!Y1ffSh;2D~Xt%~07KQF)UdXfjBVOIu$%;N9YJ-7n8zhYEK^zO5K~BKodGvXlA|xV62jnPeyg`XMg1)T>Z$2|H0R(nsJW#@TIGo)Nu0y*A3l7(>pn&k87gxcgDg9Az
    z=_m#!K_DRMbVpiE7DZui4EFA~@yjNnMOIVRC_HCWy?Og|XvB_^la_|hsO2phRVq?1
    zudFMT0>cwi+HY5hX;2wBy^^l~y8|xo(bqydqHi6qd6~!E2BB@+N4V$w_3=<$(><1h
    zqBXNp3{099>o%kd0rqOG$&!Nr*-%=dx4vWjzpVSU%ME^mlbxNNp-lBtTl@@Ez9(fO
    z@Z7Ku&r%aH=zbkBTi}l{3y0A&@xvNR31t<~RRMVN{zX-duHWZ4Us`Ic+Evw}VMwHu
    zGXl(@qrjRb9#m4h88%ebIP!CzJOhM1!v0*GGn@%rU-rU6$Z?BV$o*yO*?=@qGVNvl
    zjgBX;Z9f+d6$2UC;@<45f4Bf8boa;iCPv=uF_(KaNy}2l147hx;kO4=AH&4`5RPFN
    z*e;gD{q~Z2FQ{X{4!-mpKKMsJa`3Nt@1PC;`7-7Djo6c^!|`2>wd1ox-g)lRUF|RU
    zix+~!T3Jgd^vZ4Z^er8I$YVzIT;*SR#;f~s}09!Pol>~;+l}MbrkFOEb}Ug5RbYOvM-k{W1)oT){z@xMtKgG`7}Tw-^#%$))t9rYtE-F9jVbo+OAqEdBEHW^jpVg`TlSu-V>`jQt>EMx!QGmGn%BZ~!zzp&
    z0Z|1oVeohzT;>(0axjO)BUr28uCQ3n#p^Kddi`jXt%~r{v3YShJ#5eVc?V!`t>piM
    z4^4);u+cKmAP1?jPF-|{rolWZMWDDM2y&4mqA$X}r{~ie@O3w?>;x60?0Mr$8ibN3;O){`drspPfP2HIhGbt)4X?+y0iNCt{Jg2q(Z*y~e!}UGXaZ>oS$&B&
    zzo<^h4X;>duYAS^GQcg6^Ivy2FF0DTWGOwPbXwG6OB2SQYs^ICIjl*
    z?Vo47s78hFgCfbT#x&Q}jIrqpD6f-*xlnatR46s#^jiNKPC@CgVW8
    z2dGn=3#2Lv?AC#z2l#b_?4Savr}G4To&KEc5yp!5nZkj*|Gs=2^XaQp-glShPjH#u
    z@8%oVQQcR;h@}D$4rUCBLU;qmg@>4ho7e|73*1Oxmy#X07P^vGQ|bz=wTP30(PASj
    ztnl}EJ)R>F&U<-g1iD33^o0RhfhiGFq6-`-nq+nC8$a7H?!+gR;|$oU?9gSkhDS!w2Y0R%Oh;*GjWez
    z^eJmgWAliI4_op?;5K{DqcW6P!1PCl4TXno!~F{Hv%7es{v~v6fDuW=o6V3x9GB~>
    zLN*XQCS|N_mSRG`X`*|bbI^kELl>#U7-k+$tI1e_tBqyGm4M#^)w2cpaogK>j-Rt8
    zjWr^U)nR9~dsye(*Xfa)(>#{K<@Np)E~qVLv~NjO3v72G{-fK3EBoVTO-;@Bdzrq(
    zm-pQ#enXnq>z;h*nZRjhvtKN0>me032n3U0<*KNdrg{^Z><#mj#gvCA_MeI3$_;_aj*-lE?hzUtDTmPFAL2tRRO}vKFyneu3-5$Aw~*qm9rW#3z
    z_PX(1xs2WBzZ%}1$n)oALsDpM1rCFOtGW2(My;`<85+T2X~GAMTu97Wk51%$tcFD6
    zng&nd2>U_Ts`OF9u7Cke!ZmeAtagN}X@cB$tq*;C(pmu#tNZEW>VUsGb85RDc8DhG
    z8-E4UkP|p2kvYOcr)Sx}dx%_`(O;E$FuGylmYA0x!jFcmQAi8r?ypk9IAvd4ehgb4
    zLzq?*j6vkjxKjPPJlQTqXScNgAGWLu`WTZvoKO@TN@o%$
    zbe!WulN+3;jLWu7Rg~Tf?Tq5B`Aj>9zD19QehPAeEPZ@jZ)kAzMiFZQ{CfsOrGcYK
    zjd`bxA@wjtRROdHqy4NRR2j@J+c>A@h+EvD5@*a(l*2WHu>1U1)V+#sUkyNawSPF1T
    zD41NDWno5+*@N%liJ>EOV~P%6nO+J-qB3Z0y#c_F_!^0o9e-wWJU{*3h28<%??Guw
    z{Ee3VAkg75Z!DIFF?>BXdKnR)zU@|Ivl
    z&mWTbo2T#B1G^$sW=H|Iyv$mUDm;h;BuE?ySUj@P1>60B2M9C=;rZAVNpD#
    z1a9WVbm>blM;*u-<#Dh4OoixU#443+oK~4lgeT!H5TNhwJ=p
    zgx>8~F9`WNh!-yH7u}H#G_ab0UfI5@XH+ngQCO-dEQr~G5MTHDB=zX-LI
    z#kRfjBnaxx7=7bDFj8w4>o;EH!8k3YVf4NPxOo4&UehOD2DE0%Rf88gwqLu-Q`g_7
    zNZ&1o`V@1Tx8PDYr11^#zt(C|`oqf^Pl+zSv#;%}ey5NCJyIl?}
    zUqw%>jA>7Uds*I8Y>`)Cl;5SzP&MF&wuSZ1wrt_Fk202?RP_)6%h(DH;TzZU`)T9D
    zj$>WqOwXt4qItBp5W;I4jkC%$EJsAFu><3qNeI2tB9?;v7h!*AB{Jens2szDPJ~R!
    zfvbQ>`!Wy8@F7uX2@@mJvGjUR{H1
    z79iyP)W`xw=iep@*}4{@Nv6@FTOU>4EIA`EU6LN{J$0WjH+DSg<(cyvz%5*69wyns
    zDxCcyk#ZI7?_!uP!T|&ds>wXYof;x?xH*HSN204`XbSqKe0jUK6DWHSC>5W?J1r-8
    zN4W5=rc|!5;U9_(G%+ClX9Vp1U}^ln918#V0CBl|x7|I+m_z3uc!hPaamMeq=49eWWX
    zNI{y5E~dHsS~B0jGI0-%y5M&nPTy^^>K!pjFJ^$(bDg5}S}2=nIV}QJ19Hdg`OKKp
    zcYe^j4`huxRiJ{*roLBT#u8KK59FbGhYb2F)Adt0yZZUl^?o0xCK0Fs0WRh=d-7_C
    zjhP^Epf}J%+;}KNvj#&DD%G5N9?cf{r^^M^jdgT&W3s~>XOPtV3o^jRH3defXsRbY
    zh54s82N0r2!ADItM8)ZML7I9-XLN8dJ~2uSow|n{Nwe_|z%ZZ)Kd})xb0ZEX40jjM8$2;qXR>7B68lR1ScGg}ftLq@;R_HTLv$o&(
    zv?*UT35cXLouV`fJjT`X(ueI*4MCB%n3nhKPi$f;ch;glo1(b|JPL{($F<{!*H662
    zruKUwm3VeP<`NgqthG)nwhp%+u8R8Yl5V}tMmG+8MkI&zZ^z32CKP4Gc{Z)WY6b^V
    zv%is(y;_1otB3y0H7-G%Nbx4plgTGP+r1M8rJ6inA;(Xwh&-ll@pX0u;Ylyi5ky|*
    z82&U@)w}2qg5e`Jc`XS@^87x4#HUtidqCmd`XhwU3eU8!u9iNtL&`ob?X=wi3#HbM
    z&Pjh5mAiRtt&4;<*Xupp^cxaRjsn#oZ%YE5J@drB9i)ng8A5qgrTr9Cok6lB;o7<1
    zI(TnriWHls0eYnqe_|G}H6(+F>>}vv1VV&+s?Hi%lc7pYJOi(OG1N1}?DL^{pW0B?
    z0B&UeEVaCV&KaF0)zw>Igl9e(_*3gi;uhXNGG;W2ZEFQW*37_74lx3c}g2EP&Ea%mW5-mgXMospGS!Mp1RhpXU2nA$az
    z)_#lC`Th&hb)mn0X^3)wsCI{Yu;neHy?jO7oa2bIuo_Xp9w$JbDMd(s=N7xgC+879
    z_TkL5)_(LXhNzaEk!EC#m7V7DHD(BpCWxej)FcsW^z5y~IY;l>Rezu-mOtUp;QT&W
    zl-`<$z%rt4pM25)O?8xd12>_AN4EHJ!%-J8n-)no;)bxIu0b@Fj#Nna4~
    zxH5z(DW|1tO5d3;N(Rqtv^9cKLp>f_2(GiAYE`k0A9GQ^Fpuk!XwK_9P&GkFxpLfQW90p&Sc>9ExM=qw`cayG5
    z(>COuE4e)PG<09Ac7o#Dp)4mnSisSpHz}DRJ(+aW$)Js-AlJq?>I2;B(cMdfQkm=V
    z$J0(A73=GLLgC!sAzZcyR_(?6+-pYUcV%WjXp0S9jk-3(?&**(f$&m+r3xO<55%Vm0@
    zPqD!;=_N?U#5ma
    z7sLL*&#WBW8+iLSy)iBn2_7YZPa!6PawJL8(PQlW(UPL`5=o(3R!=3wxxZ@BVSAF
    zGZ`sh={Cs(r$ed33WEkYEhQ#LMEp=&AH!4pkhcdTTSWL+@)Do
    z3QzMD!z-a{*ZBvPH{IZnVkoX&>HPTJ1h*Od{Aw|ZLsA-U}pc`U`1T0vRe-iTH*t34W;8XAm
    zU^y*BlQ>Pt-(Z5I*AEH8%~Yh~aq}V$cq+Dp{yM?Sd(dY}iWXHM#W`WP8)%@5F-bOG
    z69&Ioslw`n4<=>=wgB|tc6|UVU_8jXY=8`Kp2^8yTU1w-7%QcPskfi@5)vgBQW6{x
    zPQ7n`Fo2f;A*kI2iTeW9BWh5&D?D>2fbvH;iQc0Gc_yx?@>KVeMfhePKR=d
    zI0vG^6lQM5o
    zJ**Ly3oC^fsPT1y(qpTdm7(rqIlm|VYl#T-RP$Eh;-wf~(VgxhOpgN~dTB4|n7&K%
    z=2Kw}gz&s}^JSYXcdSmT*24gs<8O9YeBDKoM&QJL|3kTaGcm@1F|lf73MN{_Ik~{i
    zF4t$@@Z;1MVSO;j1T<-?(i%4{CP64LUXcJl${>8OE>vK~
    zl6wuPbOC+NJGh2%xrQ@4YG)!k!RN@m9l!L(8|`|RUyahu4f8;?yMcE3OrW+A@*$SXk@
    z`_-d?W+eHs`UP0Jm9My6M%>Gs3_lcq?&zwRpZQcUe;sgprci=gUgVtZ^jh!2KI%Q8
    zMdRSaXS+2?RC36U6Zv_uaYh``fzU6Hn32erL)nf(?0!q?m*1K~$b5fL%=HmyRNzXj
    zxZ77&@{y3uP!}cEkk~;5O(24lBo5#=Phfh&`7=16{=2fWl5WB!2R#DwBvp0nWF!*h
    zI3=uW(L-E2J$}cw28;a|eORx&#Aq
    zqC`L8(|>IE9Qe3)munM<&%?=3e3Z-hIOc}NRUo}?5e3|q7N2-x4ma&PV%-`%6M!!i
    z4JvBZ9n4&Bg_s=R{t`*X!Ry@2G40A*gC>Eb6rc4E7W*^1xWl2hN*ADNeutaH?Bmtf
    z(QErhgU2LBs)A_}ig8B2)aig!cugr8AsoyU7cx}PSL*qBtnuz|7bXfYQS9fN)W?|Ewa2ghY`!~a=Qe2aYC!>Ax%l83fdX{{(>tp%`
    zrEL=gd~hpbI#pO4{}qU)%e9s*JWfOogRhiWC#S{!WxLPz;QSprQ>S;45%>f}xPOHO
    z#1>2{Ht6&{SNM?Lv2A|wO|jW=S}DfoQ@3d7NX9p)kl}g;2j8wfNzE*4yvlHAAR8!N
    z8k7^4_Fvp0#Br_%h>1h=EjQS$qB~=(e%y1jH*A{$#UMYZv45a@u
    z1oP8X!8~tTvs1ww5|iMU?zYri&-kMpX}D4(NWb_MbnF;R122G
    zz3y#0BNFmswb)qD`lFsY`S_jG6Efq=W^#+uE|$o_Ihr2%xxQ8f789R{)pAk$-o7W+*e{;EU^UCW@{rA!i&@DuZ~
    zo2^2F1-|6N$z2!-CyGnBaB7DuHzY$g>Xm~&&(f*il&`YFxx5nbyqJELll#rzs5~A@
    zxG`nYYD~GO=+cE-TJjJVZL2e+fjQuZGTW?e?5M58;efjOmH<&=@A2W-PdAXdpr(lC
    z2(TL2*!gkcCA?apcZ!0J@ZGp)SGgJBk#%KI>`O8^Y(`qkM{Vli5-SB&1dJt{1SQtVV5neTsURkk_T(u83z_QiM|6O~6!DjD#$74P?nrQc!ye@~E+!P3`{*B~-Hto3
    z=By}8)L^M+>mA`qo;1i@FY%>;H0D2V`xY1cIn%&U?QeY5u@Nr#>l0A&SoEGxFaDJM6hUGo|_zCa$aSy4+Oj5%j
    zqh$BR2F91GkP-98)5Q;&vo*LESDo
    z)*MUM&v=L3j^CF9427ZbqHwc(z;=B#N;HZM{i`QNjV3}(T^-EpA1Jd!K$-n5=o;eY
    z8YCiRp1J$OYO%kz
    zJWYtXljz<$mXMCu6q2uTNd&91-bp7X`!hsuxiwW
    z0V>Xh8Ank`O^HRjaw&ejX8s!+K{1MN3_)la6W}F{p(%}zu*`wOd={}o7#>%|o3%GT
    zL2{!vrF@8g;EQLg1T?7|mMD*>`la6FWJTEivjafizw@la#IXl}@!~$&TRLnd}u(t=}Tjs0nyp1%@0=U4SQW2a7H^Er
    zo>^Me*dnsUyU(!sE9EgJrA4rEhb*Ya&&1I)D5Ygi$saa>`|7ZaEUWnsbyU`E7oXX3
    zm7mdIn<65z`(NcWKN)QIneaK=YgTaQf=jg|k
    zQuLUpmdT8G94sRzem0K9no^&h^HN2x^ejAtMe{z$9UIFBUR=+=0bkL>o0T73&R$k(
    zpu)>F4PBz1v$KDjHi`J#j|PR|$hEo#w5<7>+dZoS?WxwVzCj0b3H@
    zVnSyH!M@^VrzOxue??sdQ`R7@e9J+&6Lj@%Iea;_ZK#vo8Uq3$cXK7&&fx*QUN@bP
    zK*vMxfZ~a}r9{YQfsMQKVBRdxWn4Jfo?AIGp!kAL;IqWq=V3+T#|jAatrmxd*HQ6p
    z1qph}W9eUW3-;Etl$6iQy(C^l0W{dZr|-me1hPCoFB~ma369&FnU~ysRRn#RGoGg0
    zJpl8wdoMZI+$qEP2Ta`{$?1&f6g%#SR+*NI<^`#w6bajRhF4D
    z)3(9w#+Q2x8Ym#fN!A5)K>!`m=LnU#042TRH*eU0UeJNp)-R>97nc#KUk3=KnXup{
    zIu`E9mqR0Q#y(a$=TAG`C+~lwC69x{9SB$368wE(Ry(thA7Ea^RRi^c!#psO`CP_q#sefGgexS4LU?b
    zt~^%^F7Z~JHG1ta^{X}3-|!y&78?m6zNYc`>W0R309zjkh`c4O-^*Iaw~{DH4{&I+&_3izZC
    z+6myvC@EtE#K^z^XQqztuE+2E4Aj;CFqr@IB*MB%iq|9J3`#r@&@i-TjGu+MV&c2*
    z>^%9LQfomWUJng@TV};`$2YR9gkLI>P**R<(Kwlq9nDcA(4%8qlK4)L9!ephxD^3*
    z!Vv0U-K@jd%xCY$M@aF5r7yzy_VcH+SoR8~kM7%dm6G9ybtn7ul8L^SUS9IYBW(|G
    zqYdMI>W;LAzcmcTJ5IdHjn_ET7
    zo6Wx;cIc+YNFu$N_h*iq-=JTo{yco4NFLzu@%SOWG;F2R*aE74JaLHl0rx9~_N9d-
    z4H06Z@dW(p(+XfnPAWZldt`*ePX0)S?SBKhE=#9RHA<7sv#e?g(l`|!NKXE8g2dWj
    zF*D>khFq$OmLEV8`n=|fNjX#c!_%;9b^K`B~4JOOnvzQwR*
    z#>HG@4Hm?*L+%zyu}f{Oe4(mKlyc;M@oaF|fl&zvP{n7#WZL5IzXJ)c8HnESpAC1|
    z2eKXVcJIHz1ZYF&{xON1wmYe6F<+E}fyPoqEMjNBYs@;oeTqY7ZN*(=h~t19=FdbM
    zYULj+ClifthG8PIk(7a_^?ol1CuH6nP)_hY|!vdXDSk_1sPK>Mc=?tw_!>0(yWh>VV((U*FT{!dTEtjwq
    zysQqPorv<42gG95s7+5BFQA1ku;2uL!LEgm_4o%^c;ghC-!;|6sRE&RjzK6QM{q6MtD?>kt4dfoOP}l`IGpzXvDrxHX6Y|;;PO7qQK}wyH!IUoqIWe(O^P8qW
    zAhRQg=Ts|LlZ)VzB#{oa*E{lJ%OMhFa-Lv8`9fZo-IIjwf|
    z0Ru-fyvntCL|)pd52)cTH7w*_wmw;(7f=3dUpvXwf8R$KE)h*xhcyDkw`YR!DoT{{
    zlO`!q5doFDUg>=7U(_?Br8>4&HObbDa<(**OgU65U=Y{n@IZjn6C!*
    zp9UrgbrwG7mbahRTPn!4T^FbZ@BQ7iIuA9t*5Ix$O~2
    z2PzI;oMPAY_HYgnYM<_5B?#mU9M^LDfbnM{!-RQwO;QOmm88E;L)XMZo5?lcKXPD?
    zA!krMJZ>SKF5O(V0eyIMiwfX};C$U>sL@OfdI_ViL1?%=!xuWLw
    z-%E=ZT)=Ns!3r`1T3XAO2TsQOH
    zs63UWX=Y*Jg>HP|lw;;j4=HkhmL^ysIY+#r&LjrtU+4!EMopmHD?g)=URQ#v7C|2rBq
    z8F_HMWERQC;)^(>{4!S^X3xiBQ>T=>JO3`SPFR}-?}mx$Iu(Oxs1)2rSGMH=58kN!
    zqa*RVEj&&Cknw9Ib}fba4IJ!~N7S#gD&*oyxm5KJTtf)pWi}QKCO=1W!bM_gYv#T`
    z+?YSY@1OY6kZ&@{*|K4%{V&
    zGi7A`){PwI{-5B-`dWrL853?R7HJ>mkYS}x5{|?U;KOYgf
    zaiVM?Bg^4jdq8RsW6>TQJfD^;;jIf?odL4
    z3lAq*e%Fc+i#+Z0X8qIN^YwBUmCB!zSzDa6d_xsb7Wp{^)L4cs)Kz)DIFMqWz+ozN^qz~M5)K-B+n$G$w+zC>}%CVz~sB?9~<}N`*
    z@2zcZ)Yexa_u5Pe|p%(P|s1>6;|ICY7Ah6?|JYc?Q)9G+%qCpKy1DSY7txm?|5$q$Ek*r2d
    z&<_#ql7DE3!g6VDTg0Bjr-2zbxe*5(oih*pxumUpZE$>fe-B0I`t*N-xNDgDIz{Z*
    z2%oQE*%;{Hl+Tpi1T<5g%K0dStcjXr+T_oyl194H0w{*!7T=4q@Y4w^lGI3cy0%U7
    zn6DCJvGurPyew9ex_Gt<^ids@qPjoVbCFA5z`Ko623o*g2Mm7Hrl``H8X=Bk9;NNS~Ov!!;uRmKSoWgR
    zgddO7OlUbS^}r7^Fs}=h53_*BY}TXZxs;I1s+3*T6_Jbr7!IKLlqzQITS9Pidaq=)$66==5Guyud&{aA@1DA83Zi+GjKLzWY?i5{XX#cl?*Um
    zZ)g-4@aDh+0rehskS4~Qp#Uw|cZmQekoNc<)ValUx(BH2YT~~>k4e5g1om`0zchrl
    z-#$x{0A9R8{C-ihVMddaWHh^+>gRT&=$W7_jeav8Ba%-M3sp|x&df#d?-F;yo6cTG
    znn|z=iO+61M_}xv80V=UEN$WMl(pDnZ9xnm_@{hn_lAyEZ|Y%Uv#5?#OOI>yzL8;=
    zkYUgr%zkh=atZ#{J)`h1J#hzRh_ZQFB$p|5I^;1iMaJkjo)oM^iXNY{s;y!>u^Gu7
    zzp>QfNoM?>LXa9R6s7-ELJp(4#!Z#x-#&JkQ2F`zFR8a2vQw?A2k*_2rm?R?y{q+@
    z{{fvqV!x&d2ajHia#3P2E3haQF^`yZwTLj3&d#T9iN{FT8A|BpqEDWyb%u5)L%Z8W
    zr`JQ)ZZ*L0-03ZxJH3hL?Ze`0uI$a9cX6jALXhJ`vHI>n7*aiM-S5T*yWMVgV`HNa
    z;75t*7oJoAC?c-{@Vlo^pWb5T`r*LOIwnVLUmEhh;}#q8UiZvnIJkceby;G3_8iQj
    zv=@}0gDZ(vE_Fyo^oo;ENYFcyBMk$iltm_sFI@QVx-|HY>iiSD8Z#S};ODbaoMOH>G7!
    zG*q*)EAg|e#&)u0T?L
    z$pfH>yb!>jZf)4{v$mcesxxD10q2lMSICgZW4ZU)r=
    zzfkO8hA2P!Fxo)bf#P0npcB$mC+oxJUu3CMpyBnl+)J8NnPWvIX;+iz&(i1-O)QZ@
    zw7kSZb{Z}4(rKcG6@2_o99UqiN=g7kQ`ff7*%+)1hWO2Ixe^K$^7-T2viZ9IaSpeg
    zcmOKX(5*H|XR*~SVY8AH63}1<>?*F(=<%iG1|U1?=t(}*T{E^StP{|Tk6Wow)`%iJ
    z2nq{~yT8_MCb7^?ad{k8MNME1DHLwppo31(%?L&+Xg9__Ed@cJ<4kVEUUoyI!i-{n
    zZK~wvvKz>y*J;%Ix#8|<&Y5duoep}#0s5mMbjvc%>3E8V9yo)2GOJ&4ygPr@HG}yw
    z5c;v9fgvVgv6m+827)4jwY9a;U@-VFfNvtA%`aI1bnR_7kH_PV8%*@5z|XMF_pvc}
    z<0q!W51!8Y&$;1Jw6w*LJUHXiToHNSfr^Q{L%{!b|l)owQckeQd5-_o%RVJxw9WFc`1H7XpbJbG+(;+bHJenv9Z2^_Lku_8(dx7T
    z0Q0=S$$KBf@lH{`@`~>KCC7RTpCe3rmczf3ribMsNvc0(W}g?l2f*Kdyn2eWza{v!
    z0sPK%I_(ujk$ag-1N@xGvf-*s)`!kn!;>)Mmv5d9KRWL8pZA<&AYp8tI)l2Z0XR!|
    zAL7vRou5N&<%a2JZU%`9>7=evlg2-M=6<~B_!=HMxAnM#U%p^F
    zOo^fn(lZ-)(e^IRBUsWqrnx*1Fm&GDuboA(#!~}(v*`gN3N;Ii2#iUJT#deASJZI1
    z;PV@%k*o4cBD0~!`=z(_g315b{Yl^I3sTw}auv8hV2+jz9A8!R)|L
    zGoVE&zyH>1jmQEW5s4zQX(a2>DOzjt+E%SK@;sjcI5r#(KO`bw^?39X|7~@EKR27r
    zo}K6UWND~)1N_nnS8gD1E_{m*RDR
    z)O0XG7l4~odki0HO22>=w4
    zZz+o6yC;*$cvq2g0)8R%T>?L241W3J)8Qxce(#2BkD@9{Y@IoW==Nb6?is@AC`XE6
    zs~7$HDPEEcI`VlH2{to{$$_&;cYUQc8Lks6phQOCos}KPN+Qva<)Jzf^@nLOBy=~>
    zt_QRcs*}>79kWX$m}oYV{9aS0l+{JT3a7cQ?Zs>im^ygs7ITVW5}|~=p@<11G)34>a}jYs=s{OSJtWr_
    zRCNZp>$zd1OQDt>{4Kp+k&@>?+-zhwmm1C_mJKI>N+^p0XC9cN+wWn0|2|xF^dL6&
    zuj9A>=KkS>`L_PH>jwG$fv^@W$~oq^aW_yZ8oMroV9LB_vsn&ceKZ=qUqoK=STaHN
    zMS|a@0Nyy8&6bS~mc!l#_z5?`?^ixP9e!-P)4%SSM^Vlf0sKr|xw~ze^OLCOQd!XN
    zi7$>&76yLDypE2e9zD2tv2U0wOTp#W_ljD_lxRS}T)Fl!Zn(+7^>oH=fEd-X8!ai`
    zIxCS>z}vX{&Dg509g#>eLYO0Ig7_20U2gS&4O83VS7J1{RmdFkI(}BtKkNalWvrlaZvni-9ONS(0nF+ZE^i4O6#3&avALVYk-^K}Gwu
    z;9hM*Q}Tjor2*0o_;ip*&L(YY2(W4j^pNXz4w}To!kGuJLlcn7^+Q8>_yuMb8?8;H;UPt
    zhf+#XV`K+{v&m$#0pNYE?(lcR0G(mtZ%n7ttgh=^M34?9Pr(nNuh$hkObmN}?UVWN
    z!&~kCbFM#zaz4lS)LAD4c73i(!e)E0r6Fb&H@?s&jVTWJaYA5eR28LpK|!VBzwmj?
    zCWcf_L~Zkl?imSg*#;o(0M|s#Ae)`(Azx)qhkHAQD?)%lGr654etc8Cm}u(+Nvq8&
    zGF(Yp-55p`uG&Asx4-BRHYd}^-00v!+t%E6ohaw;&&*I{O$jK?%Z4_#rWn~zaf`=6
    zB@COwd9)Q;L1n~NYJGJ#B;e6JUcOK!05rl)FId)#7w^`Q|Et7If)vErjFC^5uqH^zK>f;|@h!}mBQIR3i`fnPhD&0gs9ereGoR3Dc_&dXAl
    z|Ni+||4&Y!|H9`TLtT{EKC@*N^2UaKu_~B|TT{6MCBApQ?=|S6B*|$cCJQcXAaZ)V
    zw33_DBck7)&!R8{Ei?yZV%NWiDqm93m7vH^@;cINeUqiKP6$z4PS20B^llB37NtcX
    zWRgg-c2!@tvo6|0y#8f}QP(Br#S=H;5&+K5>_8!Q`M#jLYjkzQW0dwehkR%Q6cghC
    z0V*S?oE8tk+(NudNu!mGl5@&QcZX*q!7V#YYa|K+Vv5WW02vNS0#Z(9!afb7mZrij
    zRf{R@Q+EJMv~=A$_9M-Tb?pbhvqZNU|3*$rX|Ed-rXJert8zJX<$#Z(b(bKl6T8&@
    zfA-!y&a$(v6aGHWIp?mmbyZhY?|XMb_Jt6(1Z0aWLL`EKFeoxABfg`r`!eIa^XfP<
    zg9@mKI_M}0ZU`eHD&PnV5VAoQ64Lu#%dJ~?zxOQ9^Lzhz)^n>m>8`2{;q!9*lnI^c
    zs(a5p=XZX;-*?kS9+KIBC$mfSd|-!6UCG*&NhvUY`aH&_CNQ>X9EYwui2wEY$!aTZ
    zvUlD*+M$4$8HstII!Wb+!5EPw&I5ZHaOF0`{GA|UY+ton{U{N=e7!uu@DjVf?EwBu
    zzu)h#26~vhRm1I3Xs%>&aEIJM`?9OuqQ&kZ*``g
    zR+IcjdZQwgn>DdK0h__?tFa20<41d%>=DSkC6)BdfZgNO^T}kMWf#lo!i5Al1US=c
    z6z1&?d1xhhfR6Xn^j5}=LygDNG*_&3vWAWI%*8^0(5^2d=?^eDJB;QkO)9G*_gs=1Sx!3Uf8
    zo-50}o#O=&0>q*2&r2zS?RL8j;LSwz0AuX^mz@YrL@$ry_-`AHM#Jp;^axD;-j9fK
    zh_C7VgcNx1J)O~0g_-j9E#p|8TSS@)i~5-zkd&DQFZ5#CjFY;@L#Uucx7
    z*I%_0^|=KkajF-?+}n%6>KN@3*f?lNX`e&njhITyDZIxiInLCGIIsbE)Dg5@}hzn{4vM3%9ozKlIMiNRyPIkt+M?0KvF=YsWLo3gkN~!
    zF5GeT1m>2OFUsEjb4UBQeSdkwieDxPZ~V*ipk5t8p#UBh5JZuBuVJJ_{3LT^^GpIs
    zCXtZ?DvS({vDNMD^XJEO<3b_gp2~)#LZl@RasBiNe(bg_c-Fo#!%0JuWr!1H2%BXh
    z$CKooBM3O6AVjecqF5-{zxTz%4gAtSp2A`;27^$=-H@JnphnD9d<323&N#Yw#Cs`n
    zgn09Cm81ZYw_ZDiH$7_>TgD6anuwDGahf5^GHZ!tBxzv~APNH%q6ndWuqK(r#~xV3
    zyT7!6M5M}U-!M1=qdsBq9bN1e#_$78AvYO>-mco*JIu>m+A7%Dtj5i}D`sZ=VDjg2({+`t&CU#=1O2mAg0zBrCsPd56R56yud
    z0-rxUDE|EkQGL#>+tI2w5f5U`3FCR5D|tjveIZDj%Ms{6Y;RZWUr1)ekYqnB)p-d|
    z+USa(y~s>q(T=31?KeR@1a2?V+!A}pQ_kdvxUMlDw`lzMup)?B+Zmah5zl$rjYe$P
    z1lcR9WGNhw5&|J^+r0^|xNbA%mzFMS^gXn5QJQP-+FDax2gba~b5JQql
    zq(a(gPv^pu_nv#g=e6Gr>3u>4J9=lLaC@klUZW@YaU9DrLW+x#f;cp*bs=WCc)}0xNq+|qx
    z4*TP<%6|6+LXIpw7!3MB5KLC9)eiu8-G+C7L{tTEv|g`=#@61i%>L+W_kNo0A~JzY
    z3cTvC>N7XruookR5X*}-Rcx$|(|>?V=dw(IuoMYqm%bpDM`}HtEcu-P%lozEA|vf`
    zeb^7xA5T2TXQLyYNV8z@jz5Sl)LY>@6Iz&1ronv`#yc|GEZvUcpek24k
    zAuw7Q#hN3{GwyFwWo8yhc`Ny2iaJKK)%oag(Qj)gpLzYl(`TivmJ3Y$hN8u6tS$mSmfcM+-D)BGRu$x&<_JC1SA24LIv--
    zV-J4i&b=6~gs3;$IJ2;bPOrZq@3YhE<9w}#v2uX_`pTUEixkKrWbSivsp-hSPao{i
    z87(9-kVqkkW7|jtAA0>hyy@00$b`W8+7cF*8%WZ0U9Ve8iRD%sbG0RG8ISPm-?;+_
    zO77h0*H1pdUpf;x8seQ|h|g(|W^)fZgIPTxG}~w{)-k(d2KV(w%J03mJu1~hoJpxX
    zG!4VSfgkYiS@K=7`~7|ozZ
    zC01-`R9Dw3*yp{vi3kSi!RhQ`5|6TFkq@s=#aD-UhP
    z?N>~o*0?yMgG>_s{NXNGRKj>^V-et9stXesQc38hgib1uWMU|jcW8%ablvvakU1A0
    zd;O8qa=YRoG!HTZ5yQ5z5&ZcZ58#zIOrsyiIJZzktJ}p!A895qzf{LFwpH<_Yo;Jc
    zvlt{CpD@4cv5Fu=9V01pNR=+&EW%B*WB9W-AH>z$N6_qaaelFeI7v73wZ}<{`C1*<
    z?Hs|It{ewJ8_L>rJF?0uSnab4EpzsBWTRj)yrzPezfIo%CPI6;iB@eH+xKq87nY*(
    z2fo@FQ49uE1Pw=1-)9y99#)Ak#*n6I+U<4&0Pow#4)BM2z21lrYC*#C3DvgqGI<_E
    zj_fQ+;_r_R%2yoN1`(@Z^1O{aa~Fr+7bs&%STZRL;Ne-jJ1{_fKvI&mS2x|4e^W{G
    z;pD92*~+ooqHJV47U<+PvJxgEvvcw}qdLil^|0Kuvm$^;^R}2lzVsJza$=qvo$V3m
    zQCtd;*0u^_m>I3&oiE&udb5Qj%`U17_&>*bICA<74onpFu5{x%z;;4NvJAacVvrGp
    zwXhFu*JeL|tEV3F=+kJf9fQ5@kVt~E)H$_iCV+}V4RGzuIR5M{SKx}RBd9l9n5)&1
    zX4!_mNB=9$GAu4P@TOa4Ks?gdmDbZrY0odb3>a0YrT(5w?YKn-$wIt%&nCS84F@n;
    z4KY`%quy*;YS~7A#c7Jg{%czX$mUYdz3r{lcl2R2~Po#%xaE(WsiA~`vFz1
    zBUJZ8YpIT2vxPlZ?7}~sl9i7=-Yc6Gn)JAjZtN8vaUA3q#BR6SjpO(gMD&_<7eI~t
    z{)FHC8AL4K{UL8@uTRWpjt@#-ZAGQosZq4+O&c%B5a?@L%Yh_;G6^Bn4J|X_{@gw+
    z$!o)vwh_cYlG)H4`!l_kT?qZ>6Zjpmd449(+~4WCaiFmf@U
    zmLx1CBtqP}briq<#sk7sX`>pl8|7_(y>&zv3cvRVQS0D0Gdaq7{A2}OKLJj@+@+)|Hg8{~hgqQ6sLkO)R5;AvP+w0bRPUJoC?ft5E
    zb*6(8@CfJXUXod+_0Nj5-dJ2l7AM$qXgB`g!NKUGwK(*Pp!8Qi#$1c6^&a`4;$Sf7
    z0eBA)mDbwD9VFrjy~Vv8hLRmO|~uK6xxIA3CrNt@<)Dy`zyb(m|Cto3_)5(YBi(f>9%H6+
    zcNrwO3%1ePU(%NL=I=<;nXIgP-fQ3<^PcDTDd74d5w7#hJ$03=OiJ~dg%A*k@P=z=
    zaMSKlEH*A)8u?F;_c1?z9=uq>w(-J-BESI9jw$yZq`6kixst+-O^m5-SASNDxUM2I
    z5rnzV&yHNVeX}+K0LQboj^RD8KY&WaaBgu4gE+xcc{JJ`y!hZ4Bn$LzHnBWcf_^9y
    z^!4f1JVXS60594zf&cVfdjJwRx43j!;|hk4&2(};<3u~@d(w~#Po=ssK
    z`dnm|x!pI@(+r%j)c$?lAqpW-JG+1=3b1|eR{Y)JL0Jc*X%U6A=)UFc4($U?!w|=D
    z((Co60sQ!S3*bAAKxRw7SewfidaKuMJ%M>5qc
    zeey7M^4_PvsL!-w#cOXoVzv8k-i}N=#}K5FbLl-7NI(MEJz2%uZ`+E+b}9u_cNpgc)K*R02|3vsi3k{KX@5#*)oD(
    zyK^r{rZ~S?Q&Z7X_}Y^+#s19&_3)7?AX9t3$;(u>DX-AxB$4TGGQSL{
    zhZg_{k)n2P4wIWV;l56({K2nvtLh=CU1Oy5J3(Wr>S>YPD69dIpC_W3H5EW2x;D$Q
    z=cH+xaAi-EtFpssPPt$q0zP#-Dev381+ArJM#keRgS+p-&^
    z?^ML{_?0vgM6Nqqv!-xsC0|IT?rHb;lR<*z`5Jca+m4SN%c>79B#|zBHcG<-KWv_8
    z5Ckf-Sl22krReo~0f1jvYX|uD!C=t$XKUO2dAmOY>HEOPXOH(wokBG%azYxXIjbp0
    z{cx@oIV&V>F=VW{ebm*FmC0ctzG3L9=O4mPeNHJRPfuc-HWM_0OuEL
    z$e!ZPY51!gk+YK5CZ*7T2R!zJu`LS=6}@k_sRZMF8F$$ML|cwv?ltcw8c*&oz6%e>jnpcki4=yV0_pj&Dn3
    zc67E&^7eZ^w~suk2-A+SFq;JF_DQNRikz6-QY5?-u^f`<$<~;sx-iNETL_13?)@>_
    zkH~}*=CdHQuG1@>i~|d7Si{U9&=-cXCsO~LTYDpbzyigzmze-DAd?K&Z5hKGZ{32$
    z`tl_i9em`WK18pnnf)A$MHnrzjqd>a!bMbi=iQ>UzAVtnAw8;#0j4~;BKgEfQ&@Nb
    z|MiaTIJBjV^H1^4>_Uf1g=HGu74DjXv5XSRl!GJ?6!B{>-GM_}D>z@PeN#*;{3A&-
    zY_5b}k<(#YzKN{8_cbF!2uGEH11^0fm&?fEo_~nG7ddkjNifvU*DyXYiU+%;;$M8d
    zSFxt9dTR4WVc%cKpHcx(x7*DC{LH0xfG1)
    zBk2#UTQdXK?J&2zI-v05XsLb-Fe!ekIzul)ws
    zNN}cqJ|FsdhF_dXz
    z($2=AL(jn-0&JX@{dI&83h^aU=zW^1@lgm!$?&~bZ^j+hOKVM^`puYMsw2z3`Nf-vFjio8d{++AhP~iQhB7QMO**$Dzs$0{fh}p1
    zR!aDPnHr=YY$D6BJYU0(JzMc7j|@g)A&sF5GhUaDJL}6I^Ic%C*Xsdz
    z2N7+)(ED9Y3;cRxc#zlp=DR&MI=n8>PgsL)XNj*MCQEqA
    zA(Gl`*M+Kh-|ZACtvqqmtL{Mkc2$bM7lsu=@#
    zh=ZFV%a7Zz4v2u|L83o%0U~Yn&baD+41=G0%X00-$4q{T|9LRa8JxkY74}SyO5>)|O<-O}bj#7&n|m7(h$H&nY&ZduG44W2}sycYNh^fJ>7E
    z$k1zdQ5_$}<}FkB(}&vCAG~3t!z71bf`u#~a?afhL}WtXnGHZz3gTX`Cn}Z7j{x|U
    zC+z@gUx~P
    z>bA_UsO@Lq7z@6jz+Y`Uxjy$E>U!ETd}6@U`n&s)7{l_y5@xnf<6}p&O1&pId84r3
    z1sdmTr@CS^)CK;i<~2X*2z+~*rX?bh=H{|?R~mNC%fFo6{bx_c#VuPlVbJb4YjbNY
    z?rqQP@-yGE=DyEEK88I&E_~Bd4pcC*8ygw~tP*CuN|DTUqyC2}y}IUAWgpaF$X)cd
    zYWq7+vsWRRb9uJ*@7j0G+FTietRzfSD){M_?!t1bg+ZKLyeeZL@E4B`AOHWk5g4mPo7ul2ixwK*TFv@pFG66Y9NTY1R+FES5YEJexkkt*sSWu+=H&@tYDNl5rew0`QuPDS$6ek|gnd01fX4E+DLC|8goRZJilMzteXi
    zDT2I|c^%zn;w(K@Kcw3aS?Y&xAOMdtBZp}f=0T)kca0j6zi=JeL76XUyHe>48N4n}
    z{pJ7|qUw-O)iJwD^O_7zgS?;{y}z@W5!SX`?MX~WXg$_6Z9?rz1Z0{)Ai^)bcn2y4
    zLcQ6#v@YS%J{rws?NS^%dnO)YqPVdpsA>dcdcR4Y2-}=5F%)XVRwzBlS9WB22WqH5
    zk}zGZ;O)0<$NW-#&2*Pk5Z?2}Hrn$iAmbh=?%{A_V*rQ~^$e7yx$BM*X*!6&c)5aq
    zd)qcFEY%^_*nM{siTB^vf#^20$!r0X4Di5WjDEVlb;gn9#1=9CTDAAHz5lqo7tD3-
    zCF{Yz*R2xDQN_sYx6Op;{Wo)8wQ5aF%}nBd9m^{1STZ@(1v+B1%SRdB1r7#-K7hAf
    z%ntC*mE$k7uGqHA(N)-hAM@RepBaSFEF^kf0vppd^cLY8wmvu57}F0NEwDC*i}`2>
    zvs2-@{0{R>VcHhonx0znGIFjPEC?J5=~-r3M`+WgGv-3k$$8sZ;l158YWj}(ojQ*-
    zAL#B`Uvb#qMLHSGA%x@^oJyx^;RU?zni)Lzz!*-Ro4cgZ_k2s>6UPRiehVxNZNQC`
    zgn?ujD{(vKZ`9GxJPoImV4R$bN1kw*4w+f2PE>sneVG_C65M9OFSD25IGc^Y4TwPU9-&);bTY6~`Xptt6lCX1P1n+p^b}ZDF
    zFB$3li--D1J4;}SEDCUrSTgi76*4qh+IR{~oM~S>6R=HYJRzmpFxFLm0G3GY`Eyoe
    znwlgX&El4AV|dxMlc?1j>v(;H4?og@>@0zW`ZJG;7%#1#5MJ*J+&kX|Wr_a0rQIb<
    zlDKkn72kE^G!~cF{`z|f;bTW)h<;Ob^r8C#n02dO%WrDM%Hv3gERyo{;YNqqRRq?!uClXZcf
    zW4*5qi2=OniALb(CrRQfKUTG#$?a(LAAe;oD^5*R5%&g8xgeY`o(bv}k{r#1e8&?8
    zLSXlQX1}Na7V`E5f#w715OM4I7eElRyhP*0M__r^X`>+?B3b8buB6fjTb-k!x@eKN
    zHDl0wQ4+$A!$#GhUMKfPcxJ=f&FeOtChHrh-@6o~UxTI&6sq{;m+b(F7_Cbb^*?kj
    z#oectfph=_ArcDEO@TxjrcQ*h;>J@cc1{-XvoG9>XYAMx3d*XBHCFA`VTa{E2k#s^
    zS1f%EWXkkGvJmfh{#GnETk8UD?l~1>VY#W(c0wQs!J;B|j;|j<{o?TfDDEjanfE?O
    zNPrjcqtDxhcBhSO9h9BBPYlpluBqFXhhRLiqE4hEV>UNWieWOWH#JpuD^R3{W@Y!emTQ570
    z5N++W^B|$eY#Bmc`EbDEkV3=*JccRFt8<`MAIWlo)*j!;1oHSfzj-1n%Ta2e1J<2x
    z*ptfnC^-pBdHJE6Hsi`|70fMO+Oj_tgbzL310_93#?ecGSTYsp4HslRQox3TATy&8
    zzW=su_~;K^h2MDfAyg~lZjvzMF>g|^4_WU#d5l^MYTdeh95?P!_Ezh8egAM|0E*jS
    zL8Lk;jfig_i`EVP{LSMrDCt|zMwro&aa=Vsf#)3>!&0NUuHW;8Q!ywVfQNx5-s>(Z
    z2r*eMV6+sh`DcISYyxBhPoUuK+H;?c3YPK(27V?td0;1Whe)vn)#i+%#;Mnk#_%oATsmj|{yU`uo-SESj7cLEP&N
    z&P?Hnvu>UUQbFw+UT!Z8H!dM>q;M;q

    Y&fGbWIdOOn68A=Z!}XIwKoG}uTgLI0=WfB=;!-Z8=b~sYM+Z2uxQsy@qn~lL zgJJF=!Wb}J3N!<2gGb;b!E&<&DI{KT!!$l{*FLbQ>{*!^C5;?%frc}{Fy~R5gd!;7 z9k*@6(sFZMukCzO;Gu<{`b@Mt}!F@Bp=D!+Y>*P=F*@P{fZue+!ze z_PX|r%RPyE76xiv!1Zg_Obs3t@uEE=YgUsq`V#ld^=-PFDt^*tI@|S2-L&HF zCl3HyX{v7Y(PYn&Z2^rTh=&wsX@(%+c(ln1bL})BSnEBD2>a>~Ly7T=paw%;v!VcM z{@+1U03H1$Pd&*MLERZXRLcsJ6C+4`A}1lASg+p@^Sd$A^>Kz3r_T3Rz=iX8$-7aA z@*SU_qUMJa*{6#c)hR!g=f3wsh1`E{G#qWntz&Uc_ndo|ZqI4L?~I(txB?f7W&G01 zccI(uqSNbLnhtj$@u5fh=(JnN!1Z1;a9U)>0UlxBWa+Y)gvLpV`K3CJoH~t#r8;ij zJBGJiH>n;N=6uKtC%josr*TLo!nHG_xM5cntxjiMukCB+63C?IoWAww$ifI)#@0>= znr~(J8i%Unij+J+w|Ovz*ewBEGU?}*T{8$hT&l3teO`oy{1Y{jC^GmNQ6$Kg~`nm z`0Odw1!AZv%Lj?sNzo=MX@<+4t95|;gb;j1^R~+PtDG6g`mlYYF2ZubLrZNwfc}1K zDC&u$rF7%0bOlLjXIx(tY{OT~&Q0e9Seclld~;@9D>Bn;yQhqlp6fFlfqIDkVgklt zmi5NjSBM-d+l1GcouE-Px~G}&#(tKke^?5Tem~YdSU~aue&+UV*g76!e(92v{_wXC zc2KJ?>1D8zyeS%zCZB43_0F-vW!Ik8n=PDMSj4MumP$tU73T8&u1|Fn>@LON(V9;9fT!K8e@UV!t+&G0stF>;F z`AA)YlEKiFBf$z)Ja^Y5uH9Z*^LzNj;XWwt+ALts7`TZg^{;t-e?hx^yR{IrhN;F0 zTe-)O_jlF({K7ucuON&xUCdui8{jVpm%})T_ru`0b z1@Jl{L@xAb<$jEY0(pQ$0LPjXh1>xQLXSC0DWX9FYiOw}6%U3?L&>v$4;>N=2V_WP z0qYbQ3^qzq`o@gR$at7XKXNgC;M_iChhO%G?&-(kMu>=o7Ym#c{De7lv^8@={ zqwZiibcChFrbe;7g++C#un|B(9%aKP^paJ_A4hY83bBE z&q)dQ*HRD(upm;OIb%Rn!gIEj^~3kl4oSfKztq9Q=W2jR6cQVRmLWg{1jQ;|^o&ht zu0ye6j)xag$aLW3ky#2Bm9S-M3cvE2eQ0;q_B;ON@Bn9*mn|7z8KCNG#@q|mz*l(B zEU6n3&wt(*VG&!#u#}`jMB;TVd^cC?{L9kb$Qpk@m^Af+lEXg3Phpg&DhDaJ#f2OxhkP(*Z{; z#D99(4ivb+(i(VT_nwMz_vvLI8>k(Z@3tbD1B*0uXyP&$p=9^cn#MW4bGQTCBc(OC%K;!3h#1=c z0fbX65tIu7C`~-I!!USCd4R&pNM+V1%mWoxEX5sQVk7zNnbgEbol0kShf*p4&P?^W zka6TR!Pb(HhuXnKKYgtB*;}rX^C^TBKrm#e;GJk17EhY)Qwoc&!5VuC2o~Y(&)kX| zc8%iL=`)wy?Zg@3gAepTamSg5jR#)S!;ENv+ZX}n0iv7{9$1hC;Z3AM3dT9hyTmY};d?Pn(-gps!v%0N z5hece(0B;|id8*K!yo|Xx)c`10#IUWQ~qLJO+f9x$)O58teto0vtg!iTjZ>;T4ZWJ zV2v~NiIS=SG5~_Kvod)+Gg6MloEgd{)3J?Cwq{HTa-*`L2G}t@Z>#`c+U8Ssw5^w4 z{Ompv9M^B1!1q6Y8_q8-uF2Q#Q;)?svs72(QCRe0bj`pQ&L~2vM7yyfd&)Y%PE0t{ zNpx2i*k^((gepUW*~PekL0Pvy zRUP25S^}94)T+d+5`@tDWTvEWaQ6Qs1sE^ldHYAv?l#u_Ix`6zX{Mk|fJK2tI&H@Z zrlehIABTG_962A^9hhP_q(G+gdxHQxEUJQGC`Q`v(B%7q2#go;f`emdciS6sp2w;Y zqL8CE7@*zhqS0!vSrPNV=@h?ycMs4L1LMxE+^4UR%^L?vC;NW1MRqkJJ2`0nG0JB?;}FC*7FI1Fb3KLmWQ`I+)iaO`tUNO)be9%Ls(H zZl;RY-#CSv_l{$ta^aEY2LT+N@8Ny_`z-E0(?Fmp8jP#mnbaebl~(H$D$-aNLBGZI ziy%NERoTV*#!!y8!hSeXWDsEq|M4Z;F+CFC*y*J;UCbYOpo8AhS+KAOL`+d>KZrweE` zHwI|x_4;`1$gyBjNiJq3(;Btm{e>5#(}T^(z`!n(m{-=qGx?K1;Sz#zxwJu z81%b1bFP6>v4DxuQQWk59PfJ7Zv5~^kAO?{cbIg0bfdX<9VNFQh$F@sz%bDF7lD|D zN~JarW(=i5gd+_RN-05sk(WxwIJ0R!tF5CLV-P}QQ4~D~z^6k1ljK2xR#fbnb`BFB zrIhHWk|o4h4n_1^TT7&*oY$8hf|LU~tbEQVQL-UBc};zRv%OcZQvn=;MR>-{D1Pkr zZMbpInA?vf3Hou2BuSNgh6tQ<6ru>#avA$)D|q+o4&c}R{scbpcnx8iD9Kn58ik>Y z^^}=?xgt$$&V?DPm9vG*9flAP$UJ{jO#l@Ff=776bzAVlXH4SQ=`(9W2@fx%INkwn zziK}=RU%B30!&mwjFke6mO_k|LyT8KY^sD9Er*z>Ms|cceB#toQvB*YiGMzmDuc@b*w-nH`3g zM?Au>zH}${Y%bvFDRs@pNrGm(gVAag&%a_8*UyaL!MTQYTW3MIV)yQig>L7kb;e8^ zg0L_gT9cWSISI~yQ%xD>*eQM(8JWIiPrt8VU3T$Fx0{`OqW@yFOKKML_lV1~ehddotnY zc3)^L3IpKEsWRUA;vG1@P(y#PHYeW$(;@!m?N?x=Qn>`~8X?Ovo11&NkAHk@fI+9} zKmwDK!IEKM)bnY!c|EY!eFP_QmYx#DC$ z6LJ|jJi?o=o5ibdp23OJXIFR`wmKc0pXa!FTNPhBSI+?_q?;pkuRCWMx05G(u8oC? zp>3@&VbO}I6D=7^=?L}ysxEJ~toDHB^-9%g>^B8)o6(B+q(P#bf9r})urZLl5CvA- zX*!@GW9A%HBtJ%*BBJFsR*?|^s~91;-J?@jt_!om>OY^@;8THn;d*NF+A{CXdMc{oAV zR;V=#iy8&@%plkhCzP0-Xh>ur7T~sBoA5KQ*n@@I(gky4lg6kbLG&P9qp5CIR zWOjXS+H=UOHagMN8+D2`V?)#HvVMX>v4Hum2zErFKu$I1NYQ2w=qC*B{0LL#( zT^ORm__PZ_j0b@$dTgj;^V?{`g`HTehLG||k=PW zf?9nUbG4;4J#mQ$r_P_;5;vG64F%p)~z)&TARQRXAM zgq%sfrn=aNA%mTyz{ovptREpmnj|O`BP{fZZyS@spHz9kS4_0I2}l*dNmBqPX_Y(B z1|WIG$e*AP{7l z0N@xK8O85^?*U9y7#8Nb*r@&~$)t7*HW8`Jl6~#NS$gDb9_k`!U`lD}PuApC>$zQn zpjSsh3GaUSE^vyUlKo#M2#?HV`25KXpP$Q+wp8I`fGT)AR3J@YwBdm>P&J;E&?W>V z96-TC%#M!WgKs*BnXwQ@PM&(w43kIaGxP^NH}&Og?R++e-ZSb4jg_ti%z{l;0AaMX zdMsv4>4yW(u^ba0ZqD+38(CWOP_sjv^T`kZXX?lchrLB;-d%xtfb~$egRk^31Y#fg z@zCA;;qPYx#TW85!a_P59gX&W|1-DY*8LMWe)`OY6+hDjc6zj?R@ z8Z^P8q8_~>Z9u@iZc0Big&G;7(kR~l+CA7eQ^Jvxr?HWx!!G2pip?1}h8Q6{hISr- z)ZMEJc6Y`ZCSO{Oiv&a^{MsuH;N>^Y;E}^eFYAc=*nEZu&ZYRmIe|v22^n`lBDS5j z1v-pxph3WS=;@*LttSnam0J$!?AR#&`1=lF_vR9go;r;*eR6{S|301oN#E;iG^f*K z!AOO?=a5~I>GLQ7p^ z-#)&1$G@Hx5WQt^(|vfV8Hc7z7Y0uRUL3*uU$YC(+&6|}r_LZwk_~-LrBIWVho8Az zYchRZIaYC|ws(|tTsC3souuuUe)%PPao4l9;M~IEniJnv9pNQ#d?~}>MS+JFGkmo! z5qF!AaaWlbFg0SbFj6{aQ~0zL%^9b{^AXeq$$TDQfR?!J-ZYBed&5EOo-X0|=`$F_ zPtH;}-xB!TnZ6?0>!2nADKuU05}Dr|8Dj;nX!#lm`@P(gbZRP-A;h&4;=Uf3R#Alv z|8MVmra}N~svy+}Br*vUcz!#k_bPd*%kWT5E1$+px4A}$qEp~VM^+LfD9b>sfFFOs zHuQTP)EmujSDUBd5gKlt*)s)3dPeRVF#>uJSaAgJd(}=n|H@4`dFC8Cz23&ZrT{i* zoe_ZK!b2gd4U@;Jt4=h|QxB zj-9&r_0mTl9w>exXSv2kolmtBBuFsw9H#xiGwUm8J`bklk#L5}7En=tBNoIw%))ok zA4N%WMc>nXyZckqS8@X`bM=tJ7LR=^Gg6C+YA7l^ctP>!ooF*3u45!juxY zcKaA^**l8Ij~)MZrFohjoYa`eS$^LH9bDxn4Ti;0y!TZ*@S>|Har)dGnj7Hyvf43P z^z6?xy@KmtdL_vcnwrQ~+l#1TDVd9f6&aYmMhnF;yyrE$@#1SXV_~U|`P$Nkzka4) ztL!zM_Lzq{k0=D^p=ZUVfku7)jqQ}Pwldw6$!XCtNfzO|u9(Iz-?<;<0=uN*_t<=f ze>vU+B|Wf0SyNd8I{`4w`DEmP7PHo3R%%RE459X|p4NV-e%MT*0IO0=R^tM$azr73 zWj<{GaxoWF1j;fA@JNjoI!Rth+SFhz?NXBG=`wyJ$Xrm0%@H;yLn_j-;rvM+;rpIB zgZahUx>@nxJ}zek)O@+Xj9p&0FEcH(;wYCZ`2E-J#x48Dab|9QU3|zVJEliNn`CBr zfZXdmIJbq4S#q`!?;9&I;W-y8+qapKDt_nn`*Hp5F`QqhVPR?Mvb_GyV`W$P^q33I zRj^YSIk#`F&3(1805MN?=64#_JVcMaL4==q!4CYu?K_ZV8IGJdebH-(BqRL6{e4i{ zS4gv!2r{p$=5DRvSk7KohgGowi#M2z;V{(2T@}@V$a(Xxs$TOo!9zzS1aOL7;J-d$ z0W2_?WdfiGVA>toWcxA>$)t|7bY`Y%k?BQMuCkU^uEhkIkye$s4B|~=Rot|zg5xI_ zzFlP2a1a5#l+aIs&DG221T$U=a5jvzCfw|ajn|)YW8SrC1i$+|dvIWD6=%-Rt;zrJ zk_yO(F)L8{yc|QaEI@Pn*a~ks%kPs?tzx7EScGTqoWOs(YaeDNikJO8jF-4}AXml( z(1pg3m@O~S@D+`m)hVBqL5J2glZhQ*A$DyV!Mk3w7dP!4N2k}r$q$zVaK6G^V%W?s}J3t&Od z$hvRCMM3wY1x6%=C38aufLo&i0=Ra3R@zF>%F2)y4XQKL8InP6q_&vXmQk-fIErSg z0s8-O5le-7;>P-)gG>>QWBu>l1Zc-neWgG%CbUwZHegszl?J(5DBzF3t91Ep)`GSa z6RG_i6?cmPK>;t`H;MoJn%$ThiE#4FSu|Vi%YNP}p} z>9#a7a~U$^F%b~rC!V(*Z-3zq1ROYV>I_<)&Sic5A(z-UUc`}B!Hu~_XX}|UkWD-^ z=E835w|g+HX9q9ftvAl%oiE*m@k)eReHrKG7cPmq^XOcLj~q@xgAQ1ss7)?hQk|24 zdWnh#bdj1XsMQ`Wk#Q)&(esQnD6(3K1qd$TIX+~HzyS0@0LuWtIp;zMd7-&EN0ZU7 zXtKy;CJ;ng5U$KmeFCBjLdxgksvoZG_BiursvB4e8|g_>KiRddJc(58c!U6D2^cs=4_tFu&*9GT z0=}%fEn|O9L4=@K#V_7Ai|>2hR!EXKa^e)amjUot^?VLuyz1&rxbI9|sZBJ<1`rTH zYgMJ=t9ky3kW#x81-NQv9RJTNcjNj!V;ICSjvn85#Cp{+GfnZred9Pfx2P2@2FBLT z&BMmLX4I7gqRcrI5dl2Fbz4U9^LOmR&HE;h34!CM&Rp{Tb-73Q&3j^G?L}n@%Unmw zz@2}lPk+;vR<;m$PV(;G{rA9}Zrm;anJw%Q2d(2;PD936N<=ABwkz3c)pEr$Ru{yn zGGs@HAhLN5*2OlzKRF(2(ptAmlk1TIQ3cyafyKp*-~D~*WQO=c9ly7H z?WZPcQxz!Hkr7g<-uFOAjD*1Jt}7y3r(*7}zLwx~N9G{94gKKJwqZty50A=VgT+0t z$wSVFxM~u@0>C&nSE9>$vtG5O1n>e_)&YV7P^jPqyC?87FWZ4bTdU~x`#5p>ERr;R z${r|5n&OUY#_@r>$1%UWr2Pj~F;Ld++{V!RLn-*LqhK6pa`!>A%#uyA1ot&|1im&Kc89l=N$N@q6%GhL1nC1lg;rF(y#Lea;lEL5&Wcq-!X|iTR<@j46AeOz6%b zz(k2()|>UVgH`OfZwlwyqquG72;TCnY20?@1UO?@s4e0A!s0iji>I`Y-@J1de(j9#N1i={JD)j&@k*rh+b7Rn_K|nBE_lrBlyqvL^7)H!!|Vut;Mucy@io&ZMjT0!;`rSBnoxHl;Dh%JaQ~Sl zP}~964_4CdIO+>77nwn!)ZX+r)aE&WCO7`BNb0rxKr=CpL~O+qh;#m=7Z>N80a!8x za4rafeZ~!%F-Dwol2S5|w#XLJ@~AlH;GAPym1PgN;Gk#*8-uBkU-EVj(uE}Hk(h)_ zVv|M?OuE;vbc||z2rG#cy>ucY8Q(RnrKWRzzY?OZ{3Uk z_R8%zFk8f_vuCY@?^2KEfbhEyq>zJ-vMS<1j>+!==E-Hy!gDO~^FX9@xynp{gj$Y| zM1dNMF4IwDDgNHtUnmw%=tNVx;=cej``XWZaj1VfBkO`;x|5h4xc^Q zRCzWajS#Dc-`GeIFWpnY9oJ0Z*#{?3ia4Ys%q`Y1zgYXG$srq!7XHg!2M~Wm;$M%~ z0O-BDFiC%~f#xi%VB1I$ueoXhFS&XW*X$Yt1CR-Uvvc!UT&l16Ui#aIV*JzNi?;YN z9)hs|oNMB{)4+mp7l>|~Q?D~zfxr4(bXyQvZlWCU_iNS_nREbn$0*?xgL9ZP$*ia`(Qe{?<2}NQ8yjaE9)DHaiU3+oeu2CF5 zeqznVj|ljq`(iBA<^d95VbK<4gYGF&InV7-$Qn-uPE)BZoz&|LJ%j3y;>4`n68q@dX-r`DxQ{>+gSpFdd# zlAd}E#=c0SY8G5FJUi{6!Fj=6CCplrF=gpQn!1st*1o+GUfvNnNmD%hjl&2yUsur> z4$0b>BGSf@<0r9w>nvs`%9x!fuJ|5Fgm$NkuX1jSuztHpSz3K9==v;p&+ehk$p(3dCoz#C>Wx*6Am zY?B`(q0~cWt>%r*JkYr-EPxOavz1Wz-Q5!vK`-So0FW`pVp9OW%oyXGb52B3?Gy6F zj;Z#N`AF_)fzecvL?T5{;ED(6Thf@yP2PGBo~yLfi{@PK%T%i@wa(I{voR(v%id^H zHM9g%&Q#U|4-|*V>;sjH}Bkw>vxag*s0TKwby=;ovaId@R0-< zw86p%JcxiO%1fM#rc=Kz(~%lrL}jc9>$D7z%6Jee=!v)lagIs>mwgAP%vjg1g&kzT zVi(vszVWZE-RbJF70k>gFhT=jn|LPPowxU_E*IVIm z0Fr5$Twp;^RVSoYhU9C5Er=jwnZRtdAch;W70sHB>ahF206+_Hv6znlKoA6lG))IN zN9dtIk>P(H7)N@zgP>4!c0yjhlidX}Kb8_JV>8`?fZ06(v+k~17=0Ozks`yvsVW}p zM0U5Jg0sCuH!1T#O<@GPH*dnb@7jlbGZh>^b$VS~wth-@-#rPER!xuL1wCE_%C(ni zE+x1n>zdI*ttbN!2~BYI;tUuE2h*oi>JggZ>CPg`B=9?5k+^9KzbpmN9C4f=jxP^| zWwAqebV1v@esfn7}%CEwg{jd z1VLnXebza`vy{6Dj4?Y6ZJV3I1E5~<~$R+C%A;~V! z6FEs!yy2!9@X}b`rpE_9jMX_fP#D1-S8c-|zx7JxMR@Ww8tWwT{>gnYPAxS6nSw>y zu{Y3#(D=7;W!kA?sJZ4`X^W|VTbEz8h>pOR(T8%6D61u0^66Uv;|%!Sdx0+>pTm&` z!?)sbzD4+zFQoYL*>7#RrX=7mz8dS|*V2yO1%>+B)r{8oGH1MCBzFFA$Cy73l9!hO zN18TM&hY)`#od}xDGAtCWx{oJ?pkrRYW4RO1VISkh~EJMzym=LJX=3u*ou5$O>ovo zFli4#x?ws<{^T1OWJy02MCQ<5-2pN^8k1zU&Gl`_&EAFSr9RW#EdL}7GI>!(t(RT^ z6TIx&P5Apqrg8si=(H?7VlpVNvY-ITikKZA!H>US8(wJ-}Cv&qFll@a2VV z_&0)32)=cS#>r*EuYWPc!rVzLY~F+BKw_-)tyjpC4EUq_5`5-p9n@>soix1NxLFlh zb3W7IkzcCFh2DePJ)y2tE2c}!!PH4|B!%9~`(rGD7{mSvp6b<{sYw^r4eA1T?{ES9 zR1`(G!nNixTKme5Ypwl&tY z5SoK{4V_yBlth0l#xE$5&1+AnPmwL5NO!8HZ~VxO(fgH4u zc4~NJeiqN!{jF61m%0+~{c?h@pRYsqm%*d5&YIQ*PdiH!cPW4FKF%!T!0f9HYl5H< zT+);nl|d|(i@f0uo0Ld6VTI2}DIeZUQ1Iv;y83N6|;S z$7Xb##>Z)=?Ta%H`t;Z{J>oQWPwS}A_K5dsMTbGT8zKZk3^b4nxsg<^m8#Ue&SmfK zTkD-a*1Ohv*LU`*B#@8_sq;Mb)TvYF>~qfE-}hVZ<#)lJ-MjEF-f$`YyVqQVdk(E* zK16I^^4Pm)3EP)^8SLM4{{xSS2*V%m;vwn4C96e9zs|>40e-5e_B6*tM5Jw&pYq*mp*>v zwupD#*kd?+H)OV+A^_Ho;X`+xi=K{pGuEwJU3iixfHCv|&)Pj5>^@=v4KNJj^d%ihaZ(o z#+L0x0RH{8a~wE)7>Gl%jn820Jdz0X}p~kKenwM}KTT5PHC+r5k0RK~8EUA#**Ju}f4>!F)M# z0x&WXy&QpA66mD1$+l%Kw2@ZjlrQlR20ZsH%$GcgmEW~sSaZ!SC_3jl04IoOe*=I- zG#8OibzS$$zVEeyby5Jzgv3P_c&BzXQE>SlKdjF;Fh~cVH>Y{)TlhB#@(D&ZmrsO7 z?k9@mTs71&;7f<*5b=*WFD$<$543%lbRCwLmcYyy!hrRS8HUG@04oB#=d%G{xc?ZW zUr!mWuG1DnQ`1kxC4Cj(E&9Q@XPST>5n{i!?Dfh^G-vRh^ezftc@)ykf zZA9b&8DgwFy|SX#jZ0+KMF@*yqBmT^Yu6lzE4x>??b$<4f|42_qlTx6;7C6yeSc%S5 z+5;(omJAVmGmdE9*raZ${IFQgs^M8Sb$BA*K6N+YH*aFhk39$p^AwtH?AxJwTp8B! zq5B!%c5%crcAq{V_^Evn@48WN^5_A`Y^@kg5WD2i0|mf1;0ybY;@Z3S;3dyE{bsM9 zzH7j{zS!gVk%x2<*Xi=DtAYUL0)E6MAf8REX%0cBG`1l#?rMV3ECr_MXJbkUL{w8~ zE(^c>wIxDJ2vG?`r|vgZ)xE?R}>+%OvDyc95PBP9DZ@fBtOz&#&m8@Qv`1 zHQ+s85Pa(HqmWr5zUL(Yu~RUJ1;j}NG@s$OzZmh%J&&&u?W3z+Bi{4*0e^ST5y-}g zRG|1Q2X%l;?k;7X>=oS0?9L{wv6;XuNQD$7J(E*FR3%sxE%>Qwg;fs6&Nq4F$@wcS z2G5>`aPdwKMf*!6cK%0brEk^m*5&!%)%7QD2Zpy1(H-9VCH-O=Z&&okZ%~$*anW`c zF4-pi#vsOYQ9al6$%uyUBRK&c&3s-#QpMeR60!G?egii>^yKvcy!pY1|MT+^GF#Q( zD-oSjNDV_AL)fQnFsBV$YNhh?m6S8k?Qql>#$+s;?2g1}tCNOWfvyauQ+0jA;r)J+j-Dr8A5`SCywCPKNGRmKe5;0Yyke> z8+!cHkIix2T@NCz9Zd(UpQLNjcPZu~J4<)d^gHQXUPzMO*It7#?(R$=r*7bC&LHe+ z;$!(dPDxeSJhj;98@G4~2}f#l6^0P;;`3;hipkvS(kQyOzHDTG(0e}xumRvRTUCGn z@cYdCc4qEkl)j|3>&}*#K+5)Jc0v>hM8Zt;+NbmSdu|=NbG9pyw^Vf@t+%7vUpOxeB(0u+vGa;aSJt;9xH==P4xCx}6;kJXv@av!2jh}t#*Zvyr18~iq1ODXZISw5= zinxAEuf<8BtCVb!JeJBJ7=s#wknJt%*NOG2-2B$g{A}L1b~Ma-jjATUEK5iU|J6}C z2=J=CZX?bAHqr7L*B4U-5&%pllNA6TCZhgS0QkoM-aeU3mNzyw`sBPS1%li5Hw_s?LrDuLBJS_nmxRF*8bau`l=EoMeuz1L-ly2I#mST^gF z79xlc^=A^2{vHp`xV2AL?A&af5fl+?OFKQZ(*Fj;kQIa53S!ahHKGg{M^VvN^yUH9URjg1r9LlWA+gww<-ym9m+%{3YA|>XVqeY|@Q#Hd19`1f(Y=4VD?`*YUA^JMq$s9J(igI^h0e zf`5I@fD=a!0Yk5+trAMfYiy*i1_x3p0NE#vOd(HX=YD2hSX3Z7GYO&w64}r}^pFVv z9MJc8|J@GXerb>8$I%@6^ZOnC(=8ni96p>{E$6|LWe|5&+LuFpN}Hae8d)*h0j>_* zWp)yOvk$oa_)h#c&+Bpd(;j;ezx@#519uQUwSR`NdPMnfoyxz=Ry12dL0>;+hz#|$ z(}P@u0G8w?G+)D)4+Q-4kDrYny&U+q%N!mLbDl%1f=}K#;IHotICAU=WOiI9QNB72 zky`5K_)Ih3%Y42BRyx~6%@a;b9<$WQZsa4cQ_{TevLPT96z6}J_!*(H^{LM@mAMr&L&$?D;(;Sa@tJ$h z!YeM}(;EElIxP6rYX=-Ua*npW%YS!8zbj?K%hfh2AFOV)V9Q}f5^Knr31rGk zH$p@c!)aAa*`$}CJXg1=+9MHEC2n<^2_ks)McpiQo^2Oe3|uN0N;0G=?e8`K*Avlw z4-0_W2ETJ@X=!KQpIEbPaN_JRB#JOIF^g`33C=kzcTwJWDXm?#e^@zd>Ql>0E)D9X z)PV@u0!IL$sEe~y0+R@WNSQYZJHSP)0@v^tU*3f)&!^K?WBH{6g8%)xh_#~!68Lq~ zG+cJ66zwqvd=ifS$h3V$v;K$njdPqmnct<-@75a(-n z-yMVtwy)sTmpnEgczj0qz#S93|9+3*_yNS($y9Ajro}ju{WNX!GFWK)D2Q5#kOFq1 zNxAG52YVbsZz_ZQ@c=|5Et|fVxWdPxU6NEdCFuw2* z;rfRn;@VNf`AHxoXB~7)+JX48b+4i1RjtEWJ045t z*6B+$>x zSfT#BdeAt{l4PfR(_HwqbeFa&;%2Bv%!yZ8!sY9kDmdZh5NQYlh9RKud+LV){k*3W8$G@CW5d(-?wY_APETsnva^(wibZE# zLCb3P>IE3pKs6!^0WtIlLytJ$Ky*{Q@S;8VM=xTWZV>pXeS+WoLcsjkgGuF~+d<}J zyvkl3UeubZf|pi+h?Nf)gPzK!5(Ft-1g#2W6gZzjkcd-mgr2?<21w{3{Vd7sx+#9( z^6hxjbHZ0lF*&?W`1n4L_us=|W00~>_Ql-f~!J@s8}?m*U;C&ey&bysa`Ac5K>4{jF2z~;(*xC)X#A!>3QTj z&~ydpmcZRIE?gGuT>&~0Z0ph@U~MiqItT7w6C7Iafnf%jtwDy3^xP5E=T;Q3^OiM_ zM6$A@fDp<|p1rFruf|c7-=|b~(o}!6Y2iVY|EJqpk&uAOaV0lXYNy#bvkXy8^*%kW zs-D({h=2bocj&zBUF^Dvbe%`nb>bYuI}dg&-g(Ra6Nv(mNXyI1ySuLI06d+D9(Y6m zC?Z#g$PL3V^y}*zhlxobLYc@M6EIPT0mBe53_T4)KtBvLpU?59xAxmUbPugOZDoSI zi;Su&0l3_tMV3XBPE1KDnBn3Lh*dxpbgkeDFH$Y1}@W$ut#CKnQdO%=^z@Og` z@n<(524;!hR^)AJTSe(OO7lOxC?#qTmCk5IO(L?(hJ;uzD(2*%TjY#3Wy{s=ah{h+ z)G(S@@@-}45r|vg6{ONX_yK@KLbZNv3&JWnVB#)roB7EtP$EP0fxb`8!{P=^w ze6>~_ZmP2~-$T9@+CbVVs1EBhvi`aVvi68umBPV#9^lFf>;vJ^5-Le zuUs=rGLX%YqV@dg8c-lh$;cm9>X(2<>1SM|U{$)LMZ3`7|vKS`Od=>=_b0 z!rD>1@8*CVlihgb6Fd(*v?_S_=OR9L-;pFG>ZWDboNuIL6OMWcXFVl5r2yqwX-%L@ zz|mHB;ieOeVf6^&>_o~N*7+Wk(3}=N3Lwr`%BfE`GMCQ4 zRIo)sK-C7FIg#O+($+Nst_<806#_AU)iff8A>C+ksEZ*HIF1Yq_M= z5tZ3q21d^G61G8KqSvrS&&G(?J;SeaYMmv`{hVYG25VeImL(Up836D7ivEcIanZed zN+LlB@zrdb5LgxN4ZzeuBX&p)aMu1S)b=!#O-tqSL5dmP=`47h!Kk1x%Mc4V| zei+vIVX8pq1Tl&@4)k5maO-y+>-`sw#HAfmS5J3lor#EU&{E|iT4E>ta9YL37{DS3 z1UNTAz>sQ*PJp=}t{=yHzeKp}_%6KVO2&@q*N)=yhc`rAfA2BGjpGS`e4cepDqoDe z0YBq>D?x8~<9=b}Kwzh4tRB@-r&@*Q?AmDbE%s~Bd|{eN0+MJ zSVi{40)a1)0EiCY2$I}hPfBGbQXNMq`&5<#*(;IU*XOJNhTfc+M+ps>XC2{4yQ$28 zlPMTwd0MCPRalyD`dGKCaN6GHg_eVflZ_a)OJ$5u$m6UFB(0v);y?W^S%L=gN=;FD zTCR%A<7j%DA@>nUF)uD;XI-#Sadu(-yx6qmWrr)M-As&y9l~IPCYAw`#%z5A-t


    $*u6&i*?h8Xh$OY8CjeoZ}Bnr_)`1Kdi@m<2+my=sjW- zeCIR5#?=q>ODjHYZOVxemEsVknBq{Od88*WBGIR!q_ww5gcFY-0_G0Vr57l!AIInJ z3Ap|E9(>@OTBEJ$OR!*S88ja-Sd^e-N=>FEg(!A<9dP#1He8*C#Z}LQsxW zKKUhE3hA(zyLL?5v>dLsI5r4fjUP$dM9J1!RBr@l4&JUZ*W7B z&6OHap;a(f;(B@=CtAVOYAME8q8iiX7ZunN%_%8A0-~fgncx%v()L`Oq{AZ&>0>T! z9aCj%d=FFDG)l-0q|%9Uz6#XFNw`*oV3V$wt2b%$X(gmwiZZ{|*=#WfRh?^IUXd&9 zD~T(_bP02vDZ0ARCpEQI6Hy{1h?UpXRQaV+W7AR8_B^EGonx}pSHhs z6P$z?+&Igmse{mDGTDwKef!-lM|}@>!=JtPnRM`;+piLlSIy`16Z5`bEuQ%TgcuM* zLz3E2(OTFwp=p$743XfD*`qzW7qT3FDBq!f}8M z17eJb!yK`nr!QLCiF3}{h3|L<;e{6xwm$|H;ShnF_DB5f-GWaa1cnpp0HU@*q%$Qr zm;CGuw+fkXYSOH7<_T#f$GX%gEswFnYES)a9puwy*DO2owlYy@Oh`>W$u(+}indsn z0dde6(rA1y@~k$DSgqBih71R>wD`^&B>~qKvYC*Z?_oFH{4i&+gzAl065FKsPNwG| z)c>$Ijm(q-#dn^Q!UOj6vtaY;3HchXgjc3K5}MMwRZxD!4M)xKx~?%BJcS zNUA=n9Klh$YJ5el(_0Y1Mu_->*L4Rc-otlk`Qg1o*LC8Z2Q!QF$)ix)VoA{&An*P5 z>2$iCh~7y=|HD@dfB-P>`xkrXt`!klTU$REV;B+uZr%uo5YhMZvJoEo0sYX^yKWe^ z|Chtv(vB%tmcRlK6b(P7Oq$MssGk?(pnvQ8Aq~D|=n+GYsG!J8JK(pUjpv^QJnw0Q zr|$$V+(nN_KGla*>D_xwaKl01GY14GPo&%q8G6-#c7_V!3WY*<_-ZMXD?6#%Iiz+X z&E9pMH>MgGORKWgCAOA4b@0w3mj0&gq; zD0NBn#!WL%Z^lX7l&trvA0ldgmJUc67#7w;V$JFsJM?5aOu^*?pnwrx8Hzy=Xrn$1tYq81nc zF1X}5e|O;S+x`H+k9qI5&HH#-@M>hQOBOp^kkTf#Y0 z!rpC!ofE>;5vE?SF(i@ou^F&`O|XAP2(xv_Fh`uP0mDXW8=VJr6I~v35N366aWykR z-S^1*Lifq;EP1nAI;s2=>Y!gmi|v!o>cE>Dyb^lk&5dQe*~$XJo^P?XaQ5sY2H*<~ zsieU~SBLKzMDu3UOg>BkUui}nh7w?Sd8SH^ zp$y||v8l@xr$d`OhoUyTCqLKu;7#&1Hu0@#VPrY2Ffk5!_SZx>+UmWrk5YFeq~|Q= zgx5RvV(+3eVSK40f-*|eYvw7kHf@6itfuDWMf zdiTxPao+YxlF5k%pGZus?Yy~^>SU6)?V=P1kj6Ty9x;=9qeRFM)S@SyuA%R-I`7M4 zi?%vMPQzDBz<6f1OQ;n|A&zq8s^x$p<+Pse}-YjJ>jb^x=MnTbZMEPPg;GqNa^!=haGh@+t!};2}nPWHs zTP)R8ejYNtq-iV5A&}eRXnto```JwZ!=-AJoShPbnrcY%HBzb#w5>9>sM^fz&1ks{ zCB)1I4G%Eo>5!QlO09IwV@c>0+$}gsX*CZYqU!nH^2r?L04EABpU_ieuf;2qQHbXPwNGbuJB>I>*t zM1+Jzt3V+UCn7>I3SNDY%=WJi?t}NvSI*rwF*j)D0&%I%vk8EZDbMu=aV!XkNe}CM zI^a1XYK0;S!W%sSj=@eZo?^W+rOSw>tBZwi46>hsn@Agep+5@-JOg zp`=Y?TIh&Kdj1Pg>+@;D+l9*SNRkN4GzNQ#DI3gGhypfTM}2Pc7PSFIOVzO2Xs6Fv zGzDW`t%jmQC(+-jw9{t3R*E&Ml~bg1Lyw!9I2lmmSkpxZm2! z=hrrxrGkt|$m0qV?I8<8nUY{=x5hZM5Yl-Bpq1m7y~T6Hg-8UGGn;PGeBR1^B;)8z z_H`=e1*qX&0Qwm4bKl6v9kV#cmiM=?`m2Y*rt0s1W99=7hii|DI`@fdKJ8!r(r>v| zM80`GpRdjP{&=2ah?(Ezg-DtQ_B0FwLI^bPdkn)szk5^I_UQv|`K%>hpM0s+9`fP? zNf{z$*j-cRM5FE~wGc6u_{SIpCpQKRA?FbfMH4Hmf_o#>az^urEp}KX=w1{-Sq*TIwYBAA(>sZi@Uz$Ayoy7Y)KfT>0} zQduV1>J&|dEX~G;+G-{>dqlMH zm;&J0d!I=U+;z)0JLXRV@Uz+M#C$$qwXLvjg*UarSuWQP1BM~cyKWq|fA%3>+BtD0 z3nN`fc_UX1Q>AEItEGNaepDHBYwIB)Vs#!c3!%^;B!;FVK;|{s)3Y%7_1~EQoVihj zWU6H5LMySS5Q=Q65Rc1+yr9Lktxch-)Rw;iv)p=Z0!(bKs0@!T`Ts>jU(pIE(>B<( zl}MI#SrE-Pqy?y^+QNtwo6Q0G>R)JDtTOA&ZK$P3ExIH{67f3A{X`cjGV))_hk~}( z68du35qIh5G5(2TkgRl(YWviXoXzi^ugAK@uHe*aXEW!Mnk{PjHlv>*0~@m{TDTIT zV*t6y2&7@Mx4B)&*ymGCb0sqYG62S?U{ov3wCqx9Oq7NTh-R6gmTLtZ71*>;;gT6l zh3lGq1#1OZU+sAmy!t{}|A$w&)y{VcdTH_Da|^7RUrT*aG76Yzvb?-}wgTe!d+-0^ zkzm@R7EheL_nCCy?%UoD;O!!UjoIu-3}FLG`-yrHE}91>icFdZ9$FjRpWYT$zIenh zZS&mBKqN{5f#&4Rh6+Y(nN#EPID2&-u%W4End(vX$2Mv+E||TM@pVH(+%ALoGV}H$ z;%+S9U4XLKUr@c#RrFn~p49ABv&P21k0__36kraFtw$4 z>`c&Xsk6(H{rYOtQr(zQ%?e7^iP_TT*^*0-7UH5*|mbHrYNm!B^iZ+*Ty z+3B3mdoNwu{=$1FW$x#k1wV*LuKsp)UAGM2z0CXrj}*_oBD(Ocx8L!viRfA)!qRkl z77@8JjL%|mrc$Ol=aX33u{iJHox`4G7ytgnZvDtcz*?_2yi|%v)-`5Zeaio@f9Dgh zdayb4fidsNl-I6G(kzSIO&Xh^?9Ep`mpqtV{Ty=T1S7ZH?RvP}wqF(&oAzX>O0@w&D!$c!k~$Y8QBA6->xU$pBav*#pZ-mmPbjQkGyVfmtPzQle{NEm zP5Hj&_p;A%mQui%=bPa`#i2P?ZEHR()H|_;`RLD(t=hy?;05clsb}5-Q(clrDe8;* z8tLl|{S#FU0#@v1wT180Ks4)~sd?Rbr+d>DNO9gGBTq_`YZInsY9-xz59TuaTEdit{{I zCz%X>Afm4G+r9V80FKROv!8u5SoRgkXV2dIOuFxmn=b9T?y~@P^?koKo6U}k)B$Of zm|EeGSpAtGJq!be5NPOo3?a}hhlBs+>*DS`Q-@`5He{&0Ktw^LtPqfPlcq1|Ai#-r zB~D9(grEzOSg08yD$pjSr@-1S=_XhzBON?)V$M~nSsJue&zQDMBe#>5X-dZDuWm-! zRAiZak7b`dD6PXdt`yGRc&=YVRFq(^j;C6z8_ZS^Vx~I zArgcbAW>)t17Z~PeNQpQ0)qX##}Ed(^>FaN{CBc@_mr^BYm8==a_NPRyb#GV7sDlr z0vz86df;lC9EN247=rQ&X@PhfwT;$OUnCS|Lsp>_iPxA)Q3mmKc|vs`-_DxyEU}SQ z)vV;Yscm^_834;1QAV@6a&zWcQ2tV5GheuXTyEMT=!fPIQ=R!q2+ASjO|v9x4$!vY z+%9*ro-+(;bL6(Z+|&vxJx%V^EwO|;1J>VD?99smg@jOv#2C>#4DCglxtduxj20In z##sloZOlrICgycaK~b6x3YEmQpEn*QgBmY$}M`=8Hw`m=uM(0yN)#~lDI2=2e@)?Z^zPzL=OloRN>mh@|e^Hm}i+p4E* zcT=^K^AV!di&}toae>+f#V}W%Va)*swE#%EZL|PZe>c?Sh5dc=G9bo6`^ifuX5M@$ zHJe^qD7CT@w{$~wi#NG2-guQWHLCW^yiaGv$qmLV8OXH&SQZYxC`)4D{7Erj$Y!i$ zc!fSG>8$+R)*aeT|8EzIB#PmBS zH)l0C$gh_OB4Qa&R7#ar;3CG>%Yd8#L$ZrAQnzfhOTM6$-`lRF<1f9y&AsydymOLU z->&P#Df!uX*F^DV9?+!gc6MF2LPYnhuCBdc$BylX9xaZ2#nD3RCyroc=UMd1SG?@w z7wx_9n~CUh=iD@k#2A(PfXdQN(z(0^6rzT#M%XolT)G3pk@Y}#o@Bq|xtwT}3DS8( zWkiqbeLx>zR_l2HoIok(2jrHkSas()3D+Nk3=O~<4P;qQ`npht-(*~!i|1LCLKLmn zx|B9G0VdT8*=kS?Z-7f)2o>XlntGo$s9g3CqQO!6GnoN2H~&sQCo2tv{iHlsls9Wy z5f-N+^)lpapB`%qoK9q&qr$j_lu9bl$Uy~m2Sy`-#mo) zhKrtc#ck^+jy!4{`>HJTaus;TO`qGfWBc~2MdV5mU^br}3&XIU4>_F&BF0(?=FPBH zgQXG-L%@H$Ic)pX0l$3K)FT;Di)jHk(OqK1EC|--gYm%A8FaLY2~I=sT-{V&O_4gK zgnExCLmAZP7BuE97|3klqM8_VItp4O@2YLCWbPVJh@{mvDLJC#nWJPY;YHPx0$Ge9 z4WXTK4xv$_v9DRJRz6m&x13R60Il!ah|ahCDNkA(U}|tt3k;nJFz= zd6b!>_0zKx!Z7H~TnXkfQdJ~vZ7AC0hRZ0XvR^c(Ybr9SRF*8;%Itw?Hq2T<=4vlR z9vJOzrv2z)6LW<&GK3&wnowF?cCC7(ng5a56r0fjIkT8I?XCVUiG$Hw)iiaZC8DE}zvSzt(cAUlEB65*};L)M)H%3d5 z0)oR35MwCxn4sAr83h0Ewz%?<`*>x~l;Kr=Hw)dQ{EbScq2eV$b+kQr&oT2?z7f)oI6waQcjoh+%K%-zt)+w#wo zazCi>(HfatCY$FOnDf;Okj;VwtV@NKw-+TOFcR5J0kR+tW3+%Ot=uGgGcvb^UZ?u> zW)=tlx=4_0oKQwBnhBz^FUd3II8;x)oP9#p$U&-GjhY+O`Ek_OGS37J!McE4HB=S5 zbg~D1o<(P#B$@G#q^)vU2%7btl`yjDV5+Hs6ctG?f|s8kHeUA(UcY3w4~|`yx54}J zeyRL2-_PZ4M8U6{Otw$DZo75}zjN+0p8Zo_DfoTGG#LAqzxhSadfvSo8yjyRqGLqB zbTZxDb=|Vnf3nMIP7cl`k#qXRofxvC_|D@km%Ft$Um8vxTn|_qV(VZ*g!MtHoTtR$ zsSg@euds%VUgT$H&cUvPySrkG?#kE0u~8dI)`2KiP{~@b1_VXlnFFpk6G^F^UF9vA zQHY4$D$2tIwCX!@7;lqXb(iRi|#EO#R_P4lfIsEc`D7 z>gpAkGe1&wn)#Eil4@-Zvi(0A@i7Y)dzIX=@w+pW5UJvQ&KvQ(`L`QpL$j)n!{zrV zMy5?g-)1#eA4J`~4Z#fL)o(fefiOGmoN&Zz?-;^aJ{A7U9=i{Uh7r(G#7 z3dUB8jJ-So5H8i1j0f4oDr1U;IGa>)Rg+3=?AxijyOdC(P`%Vr*paKDFlBY76^^+P zByY{gX*C%t02z6mif zQ(R)QiBgk)));%$mhxz$Ta6kv5uF?J0tMAnnzv0f=*(7Ebh%nE!Z&x-x@{9Gtq zsvNp8Re8m6#@K4*7Q7sUbtYfP<5KA@lpUzmbYU*QckGSpKlU8A>XMN`1AfjW(sOQm znK=OP{n31KK87-FQM?-3GZhGK~L{afRZi&(gNF&fv4vRL7ALFCq~Y?!n1Lkx$m__M{dSyRh;vRYsTW9hYM)>ptKwvC5I zBa~KGWV3aboms`88dSf@xuqB@3_aKxnu(F+6`)h?GLuX8SFtyKcFF-9=IwKA=VxWs zm$<3KuH8B}vNxq==}18G`;7;p&M+yNI2518a%e}jdke<+z*M$jFgen#(LtjM$-e_< z0(od@Ed_UDxkef*Te4;ciF+#AQ5AU`IYcCy%MV-{SHJgCx9)Oxm#V!@;Fr2Ww-Ee% z*KM0lCK>#0pU>y7x#(HXyYH(7zsD2+#~^s`?Ki%x>$>*=*rOnLvhVwo83Z#uW)TSH z3NR$TAVLTfL&Qh#2}}R?ZM?lBf;XpEu4sx^nJOZRd4UbE%9UWFBh79tnRJ^jXkms7 zz0L)zG%gxjtrDhF7A$&^NBv1m=*9d%W7{v9 zYUg|jpel!x8I6dMJC=4?sXUS$rlmS8mnyhKyHvib6n7RW#t)=UH|22^=n7~O%YKuiSgt75nV??X&^FF$ms$ z>leRaI-UMCfD57shQ42&&1NTwSh8kVq9lNmSU@msiBlyQl6eAxw#g5z4g8mPV&&@n zywq`$|J2h_%mO1QkWld)6sbdbLhCnJqZxByrl+jhjf){W*M%mdCbwC46RI0P=1OF+ zH?b}=M7PX^R$%#VTrKXc@}iJ#wIvqh3Qfw^vgmvpi!5r|Dr?nLNlC5^CCbVVtpLRW zNcj>CNYZMkWPW7PeK0vCOyy(t-&-T0Rc_b?La2rj4ZWnX6l#?))-ZuwLwqh(3{%-U zTa$vyBa{SoBMUObpcN&XhzE6!$#c$Af?%kNoETETmTjjcHu~GnfuA)w zQ1IJ6P3|rrqWgwnc+G{+eD3X!75F_a05}H0J8%B{vsPA?KM3Gb1;MrXe11|S9UUUI z8jNa;8bY9`o8k}x4I!jJbmKB})qP?5ySMNT2ZCpfqKU>cPeDMSTT{K61K_F=X(BT7hE5t)h1s@}(W&O@h1KxW*T5ud zwzFEXXsaukygZVlr8d56VhUrnw_0FsDwzxnYq4*B=P{58HoHufe2FYEbBjlWTV0vf zKtYgNT{fl#RA1{t;4U^>Qk5x5A*Sah z@juhG5+pe}|KO!@^-Y($b>|q~B{hfdIymNr`-z4FJa=c-sxv@7=L|#|Mb;yeNV&3>$sluZ0lj76c_qsRUzeTjE94;4lpM z(>t*3gZJ`sS5mOdJw(2|yv1Tan~V|{3PHAA7el2X8_!6FN~2X`*|w?ZzWg7kaoB2t zcU0?}AEIus%@(wnzdB=(z*Ql_#$wCTW7ySUeY5NcI)AiXtWf}rXN9Heq(Tc}wI?Ir zZIaY3;uFv~J1CCKV2lAx#SL6~3r$T-prX;;L-C{^HPA zrygrfFRgQsSbw}cugnXzV!bxhLyw>;B3C^Gnan7|6-V#N`$N%nmqka6&DaDc*Ec(& z(>S}MRD!LVr||T0WnYhvdR>(etr{XlCJf1rGGYuEKzPwPGJEY_S%2=?e#k9vn)^98 zqwpw(2ioddm4|BLshdo8biP~BjqOh3?c96eg?~(h z*GH{D(uR0g%Qsu81XZYRTjCIEH5fx^s=?ci1pm?du>9!*ZaN`*VtGT{H1}*na0Rld zYN_b*HO6dN5N5MV&DPf>GS`bJx1&T2xzz@~H(WX6o?Bh0>rBy(eW=O*$SOO(sRGT` zV(gNpxSBCZan7buOP#B`nE7dTvBItazY<5{7F2Ks7$ww-kjC00;}*5K;v0dXY%wQX z1dh4ImfAYkYTnE%WfPY&{Oic(*!Y*Y-7rUKcKwZj?#a z_Ik1{ycp(`R(Wx>1d+sjENmnKYbQzB3ZL!apu`X>p9G(Ad0sM_Ix z*j26+Gtr(Uir;*;%rDv&hU0V4gB#>XD(|p{E{iS@Oe05zgivHlRJm8g#?=-&H!)H; zcFLAlw-)9)kmovJCJormetvnw3Y`;{MTJ&vMUSdnD2XNvyYR)3?46uhniTmQ7mGMT zmN#+z{sge=Qciic!zx=mz_}`&N}Nq@a)>nTuu}MRY{afn`8BK@=SNva)qA##QuE`G z;e?yf6)a1qFhXMed8jD6xXRtsE{b42PKMW~N)C43m;u=5klGD5@;HDEIWM)V?EI!o z4N-D78m^%YA2Qs*Ojs}1V>U#{OopMEoo1N!728pM(mAP0_ky_<5SE6B& ze&$h9mi4hil!$qZc+~}QYBZ8G2Y_zelaWsUuQK(R= z8p(6P+!CLv8jMj8h5=XIkEN>~prw0Oo$s7aSrd74Nye&N<#i&GXcIB&5=2VCdFEfS zbCoZw7qA4iCC`;plYPtOWG6wQ!j#z`ja*d>9mc#YG;(RF#s{18b|v&BU${8ww%MH%tM7gTsMm?}{WVv9rS%tJPIDh0tXZ*`J9Gudf-@4((o8R`@@BZH5@dUrG82~N_xUDl?o+yNQ@(Z>1&H?Jz|JEjt?wMrId6L<|9++%MCs9^j=fpKx90 zJe&^QMW{%;5_d4qyIi9L6IAXOk=Hq&lAc3N(5js@S89%Kaj7X`s>5_8s2YMZb8SOx z>s$m03SRj!nt5St$;#O+i*4`@3fGKWvc2LQ(`mc;5&h5xwr!gKEii+z^F3=g{jjEDaV+IU%a^wMgwmcfAVV;d1J#}*>af<>fr)XZw&CdlLoPoJ-IiQx;T{G+-cNdf7xRD&^!E=kh+ zF$7$HP^N$L08MW?>L#8XI^R{Ulxat#m={o6^&snj+3>tj96l=Tg!I}C5O!6(FD*g2 zEd})|DBa1zo7i1ml$s7{d;xC%m$$aDI*0SLUk~LpIlbcfb zotlqZKuUtfWujeZWF54f>t%Af7{y6Wp_A&%SG_FN02n4`qfo*$sgI4ahjV+=clbkUJGpBemE-F|ZAm%-0_ztl}8yQx@a z;m|M)KfL#{D?a+Q0>7_004@SS0J!J28{ROPOnxVdoSWrEeczv)&-;^7hR%W*TOb^U zfeMW#<}|vP+hRnC4G`XQQv65nqot4U=OynvJbO6Zkjhx6E5^b~+SMjmV^cB95xr=t zl~$FJkqxIFX+R4IN9!=Hm0ix&$lJU`F3zJ(^807HoB8G<{z5vC)!b(__W0zkcj9YSSZ2;WGwgX$z|=sdKPSFb!B~ zrC<1`8K{i3F3T_xhw`{YBciv&kxPx)UMp&gH8GXy7OgXKrRIcYwoRF?We?D7DMv;U zs*4X%H}N4v3~|7v+e81F3*+qN=hH?GB`@u+V>oqa&Q%|k_cyn^+0sfRVltU*_g%N0 zYJ}^xt7~g-dFFG!>CUeu_&p&2xD^O~{xhFA|Gab0eHVbgpIc&y5wqF+SO{U=w8aVZ zve|0k4c4|eSA-H{0m7Ky4*}~#q)+arrH}9D>3wU?cfNynoeqpqli{-3#0Fx6M~Vh2 z^18D9Rc9F>d+j+*&5MmNy|#(2;jmc;-)!2M+uVEuW(OQ1N_oiHb5N>0FKWnn+1}FT z*03y&NBaLw6_u$NH<_!@NZ?}Jv&ODkTR3WMPH-IIL*o!OZh7OVb(a<#qbUB4vyfsd zxM={DEG=)S6d4+Upz3^y2{8oqHjG98OG;1|OLopi5@cj>#l4y<1u0g&F*Db8I)`Kx zT8bLoN_D_4(lnLMNwKz9>wOD+`glVO7(&1c&JMG0zffk++e33Uz{kX;-F0QYSAg%7 zRiB8!Ii7S~x8l5CQt*o+_&4wWzz2WnCx7~F{nr}&o-hDh0D|Rbx$lmfe!@Bb4uR~+ zFa9tLYx8-(5n`B=%HDD{m}i3t{L+#nSA-S_b8DPIGip}Jz7z1*?8o%O_q*kEx_NZY zrwGD)q2;u+v1&wH3Tz@oQ@IFh1rRkmh>JaVYMmz#1aJw?5u+VOvFHMiqbpmW%<{e1 z%=HpaF8j&ajB)FOASSa(f^paq!_gb1Wj5f%hKIcsvAOOA(rj{(^F1x5v}EV0#;psj zG`9ijU=}N30oY5!5NW+A#%Y<#HxxBgE!AOTk)=;mUUo#ytd>}0ZK-9p*&1;q)zfx3 z_NoHGh$E;ox-#?2N|T{3IV6_SJ4yApt@Mg{YoWiHIaouTWa*uIp0OSE4d;-!Ke6zW1^#uClNC*Ao1mPyjqt zHTbztUwz*B=b!fu06&sOA?ef_hGBI+@7JSL3ym=l#uzE;M%V&jZjH<5m(OlgFN}fgS_O}!}-)AJLPW_qt(1@P`^O2p)+}7kWDfzM=%?j8bN;I;i>ye_U_9c zCoX!+5>2V|K6Y*9M{@%kV9T>}n~-U9fW~pPnZ8oGKeP)6+A3Pb@^ocER7h;wSIg}! zU8aIew- zm<#0UzEtlylS5+V9%7U+Vz$6pnNduCo9`oKL6Zap1Hv#M#vXf@<8Z}Uv48P7m|wOF zJ%Jj~)AlvBvfApN3iwL9yQ%8quIv1=Pqy{B>U$`}_;VLt`uF~5{7OC%;CI>p;Hg0H zfBjc)?|$M(fA}9TySEGEf((Q)#sY+rl9M1(=YwfElAhCXYb+uZbzYd;;}|1Z0L@?+ zCF0Nq+~*IWyX6>nw;rSJWbn)`%?+LJz}*yCK4+IH*@m97BrWswM$wugltPezb^}b- zqKNBKrI>)W4`&l6Y5WQ=ngNb}lm^6NTlHDD_C;5Z1v zZ2p|$Kfw#yTb&=8yrYIgSpLsEcFue2s(fRcU)2^7GKAtLQ(E2P8)$%1 z+J0Te>2DHE5@LYF9wGDyTIroViQ(D1WVm9t^v^p>`rS(uGU#PMQ{a>QJ~1x@K2BAh zBwl#s@@0C9DrsET`IWBgwiOfBv?lt4d3^b3ZR4yK*&XD#CS<6rei>!c3hh?Q*RM)8_)G1jF2d=f~T>3V+Kn_%ELzzwadZ zdsdxi=i!_O`zf63KpG;%Y*2(J1+oRR#e!k6rOH4? z-^VOmvgfLdx665ZoQ-Jp+9~$<`Xp3JOfjF=KzjAIEIy4nu`QL=F%AlJLuqGY91y~Q zv$_~BSdro4?Gi5AiQ!p0rQb0@w5pgqtIMF5!HqP5jnn^0`J4s7N1)Q~Qk_ThWYVp4 zUANr;9{}7qo6Y|5#m~9&>hUY~M1$XH34o^pK>&39HCH|Dg7eS&MPmL(BC>3Oa2SU5 zd9NJ8Er3t~ki;lV@&;K%Qj44cPr)xr1|#OCwFk2+=CnB z5(s*b%TgDckrwy>2s_?X@mZq|0zDLC_~pO;&_{mzCx7~F!|BrUJ}Ch3kpSTr zuKVQqPdj_h|47Vl6_ITg2tx>cKMd<3gmrC?DgR#%)UKQ3K$%c#!7#>{LNN7X`SGLD zaB_tx_2b1{A-Cy4gbr=T2HhVz-vPq_iPL_qRk1;ynTJX5eQ4Z z!fQv6Ns6A4DMOaM$dZFBd&shb?3_S$PbKc`5O+@zU2-52ORTpbXa8it%e+6zF|lNT z%m7}dvs5r7U0m=c;B)LI-n(V*{c_C!ArRa7?VVrgI={rs-2&kI%?BRX|8HOT@^3r1=p;Yg!0$-|fDZ$L06@R->+e{4<9EOQ zhn@HT7{E7;fiShmVQt>e*Ck3XlET?@MQE2M=>8fCi>8t^k7x-?3B%YbA7k(){}-#WR)Wv<^VgDEph&ah_Y z>7?tHoO8=$*a!-I2cpE^xaXdG|HDgO^&N+wEWr1q1HeZLgaB~+jh}t_^3u{BFz%33#80H~_jTquwQW|-&gUgk1;0(eccuz_>Hwi^ z{@50PI0nO7%{7kAxplRFa^(n=s!wcuWivBO*Q-z>Ku^8%Q}5kM^LX|1J{N}JH?RK0 zHGlA<|M0)v*lK=rI)mSn5&$0!5PsywJAF6%cE?Y}?%h?~?_-62B1RnX2y$2yXfq8!tiHTn)+?2x$R0=IwF@Jo|Cm zHs|YHIedSCtup{P)bFOpjI%e{lsz*}0S&^$l2=BS+OSk;z z*S+xvSHB*B@9PEtPXUAt0NRgz;kr*gch}CH-|M~mULty-tmO)Fbwht4@igpQr_%_oN2CuR8$zN~%Htbj{y<@WS)YKkxOE zu6r#Jy%xZpMPO(@7A5u~62cIM7~=q72r)#_tInR}V_+P=PbPis%-d7v&0Zs?0?79L z`Y~&BMMT8J#LSL}JP6)7$IR>q)Y+iy&U zGhYVaQUKGfTHOVdmxpbU&b&Q!0PmFGM-ST`&j8#nBKM2P9U;U!=6!$1d_Mp3RabxF z=C}QmUs!#FK=+gYy{9w)eg&1`!&Zs_@QRncgn#9i{->v(efHTGO}g$JVm{9~K8K0V zX6ADMoX1R;5YaQv0Nk0kEe^fo0PaAtj69b9mg4}9ipZ)!j)xEqg&`b@5+7P$-#Bph zJ@-EF{r~lk9efx-I~B-1-ph(7O+fA8IAjlaR_+FE)4Cx7~FN6)+( zPYulb3P0ymASRFUYoBtUcLo3-dq8}oAEPs`%NfA?D!)d)3ZQ(-1Kyb%?ePJ`NAi50 zd9KgAJzl_h%KtwDc4uzNCmI;fJm+WL9`}mz4A7kcz^?~@Jo9$u?F_hmjo$u$?lBx) T|87W#00000NkvXXu0mjfQ&#ZR literal 0 HcmV?d00001 diff --git a/plugins/node_modules/ace/experiments/animate_folding.html b/plugins/node_modules/ace/experiments/animate_folding.html new file mode 100644 index 00000000..ea3f08ec --- /dev/null +++ b/plugins/node_modules/ace/experiments/animate_folding.html @@ -0,0 +1,249 @@ + + + + + + + + + Editor + + + + +
    +
    +
    + + + + + + + diff --git a/plugins/node_modules/ace/experiments/basic_animation.html b/plugins/node_modules/ace/experiments/basic_animation.html new file mode 100644 index 00000000..85df5ab1 --- /dev/null +++ b/plugins/node_modules/ace/experiments/basic_animation.html @@ -0,0 +1,191 @@ + + + + + + + + + +
    +
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, + sed diam nonummy nibh euismod tincidunt ut laoreet dolore + magna aliquam erat volutpat. Ut wisi enim ad minim veniam, + quis nostrud exerci tation ullamcorper suscipit lobortis nisl + ut aliquip ex ea commodo consequat. Duis autem vel eum iriure + dolor in hendrerit in vulputate velit esse molestie consequat, + vel illum dolore eu feugiat nulla facilisis at vero eros et + accumsan et iusto odio dignissim qui blandit praesent luptatum + zzril delenit augue duis dolore te feugait nulla facilisi. + Nam liber tempor cum soluta nobis eleifend option congue + nihil imperdiet doming id quod mazim placerat facer possim + assum. Typi non habent claritatem insitam; est usus legentis + in iis qui facit eorum claritatem. Investigationes + demonstraverunt lectores legere me lius quod ii legunt saepius. + Claritas est etiam processus dynamicus, qui sequitur mutationem + consuetudium lectorum. Mirum est notare quam littera gothica, + quam nunc putamus parum claram, anteposuerit litterarum formas + humanitatis per seacula quarta decima et quinta decima. Eodem + modo typi, qui nunc nobis videntur parum clari, fiant sollemnes + in futurum.
    +
    +
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, + sed diam nonummy nibh euismod tincidunt ut laoreet dolore + magna aliquam erat volutpat. Ut wisi enim ad minim veniam, + quis nostrud exerci tation ullamcorper suscipit lobortis nisl + ut aliquip ex ea commodo consequat. Duis autem vel eum iriure + dolor in hendrerit in vulputate velit esse molestie consequat, + vel illum dolore eu feugiat nulla facilisis at vero eros et + accumsan et iusto odio dignissim qui blandit praesent luptatum + zzril delenit augue duis dolore te feugait nulla facilisi. + Nam liber tempor cum soluta nobis eleifend option congue + nihil imperdiet doming id quod mazim placerat facer possim + assum. Typi non habent claritatem insitam; est usus legentis + in iis qui facit eorum claritatem. Investigationes + demonstraverunt lectores legere me lius quod ii legunt saepius. + Claritas est etiam processus dynamicus, qui sequitur mutationem + consuetudium lectorum. Mirum est notare quam littera gothica, + quam nunc putamus parum claram, anteposuerit litterarum formas + humanitatis per seacula quarta decima et quinta decima. Eodem + modo typi, qui nunc nobis videntur parum clari, fiant sollemnes + in futurum.
    +
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, + sed diam nonummy nibh euismod tincidunt ut laoreet dolore + magna aliquam erat volutpat. Ut wisi enim ad minim veniam, + quis nostrud exerci tation ullamcorper suscipit lobortis nisl + ut aliquip ex ea commodo consequat. Duis autem vel eum iriure + dolor in hendrerit in vulputate velit esse molestie consequat, + vel illum dolore eu feugiat nulla facilisis at vero eros et + accumsan et iusto odio dignissim qui blandit praesent luptatum + zzril delenit augue duis dolore te feugait nulla facilisi. + Nam liber tempor cum soluta nobis eleifend option congue + nihil imperdiet doming id quod mazim placerat facer possim + assum. Typi non habent claritatem insitam; est usus legentis + in iis qui facit eorum claritatem. Investigationes + demonstraverunt lectores legere me lius quod ii legunt saepius. + Claritas est etiam processus dynamicus, qui sequitur mutationem + consuetudium lectorum. Mirum est notare quam littera gothica, + quam nunc putamus parum claram, anteposuerit litterarum formas + humanitatis per seacula quarta decima et quinta decima. Eodem + modo typi, qui nunc nobis videntur parum clari, fiant sollemnes + in futurum.
    +
    +
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, + sed diam nonummy nibh euismod tincidunt ut laoreet dolore + magna aliquam erat volutpat. Ut wisi enim ad minim veniam, + quis nostrud exerci tation ullamcorper suscipit lobortis nisl + ut aliquip ex ea commodo consequat. Duis autem vel eum iriure + dolor in hendrerit in vulputate velit esse molestie consequat, + vel illum dolore eu feugiat nulla facilisis at vero eros et + accumsan et iusto odio dignissim qui blandit praesent luptatum + zzril delenit augue duis dolore te feugait nulla facilisi. + Nam liber tempor cum soluta nobis eleifend option congue + nihil imperdiet doming id quod mazim placerat facer possim + assum. Typi non habent claritatem insitam; est usus legentis + in iis qui facit eorum claritatem. Investigationes + demonstraverunt lectores legere me lius quod ii legunt saepius. + Claritas est etiam processus dynamicus, qui sequitur mutationem + consuetudium lectorum. Mirum est notare quam littera gothica, + quam nunc putamus parum claram, anteposuerit litterarum formas + humanitatis per seacula quarta decima et quinta decima. Eodem + modo typi, qui nunc nobis videntur parum clari, fiant sollemnes + in futurum.
    +
    + + + + + diff --git a/plugins/node_modules/ace/experiments/capture.html b/plugins/node_modules/ace/experiments/capture.html new file mode 100644 index 00000000..9df5e3cd --- /dev/null +++ b/plugins/node_modules/ace/experiments/capture.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + +
    + +
    + + + + + diff --git a/plugins/node_modules/ace/experiments/cut_copy.html b/plugins/node_modules/ace/experiments/cut_copy.html new file mode 100644 index 00000000..3299f3ad --- /dev/null +++ b/plugins/node_modules/ace/experiments/cut_copy.html @@ -0,0 +1,105 @@ + + + + + + Text Events + + + + + + + +
    + +
    +
    + + +
    + +
    + + + + + diff --git a/plugins/node_modules/ace/experiments/debug_mem_leak.html b/plugins/node_modules/ace/experiments/debug_mem_leak.html new file mode 100644 index 00000000..b8ee8726 --- /dev/null +++ b/plugins/node_modules/ace/experiments/debug_mem_leak.html @@ -0,0 +1,59 @@ + + + + + + + + +

    + +
    + + + \ No newline at end of file diff --git a/plugins/node_modules/ace/experiments/triple_click.html b/plugins/node_modules/ace/experiments/triple_click.html new file mode 100644 index 00000000..da953a94 --- /dev/null +++ b/plugins/node_modules/ace/experiments/triple_click.html @@ -0,0 +1,34 @@ + + + + + + triple_click + + + + + +
    + Juhu Kinners +
    + + + + + + + diff --git a/plugins/node_modules/ace/experiments/worker.html b/plugins/node_modules/ace/experiments/worker.html new file mode 100644 index 00000000..f3c75bde --- /dev/null +++ b/plugins/node_modules/ace/experiments/worker.html @@ -0,0 +1,33 @@ + + + + + + worker + + + + + + + + + + diff --git a/plugins/node_modules/ace/experiments/worker.js b/plugins/node_modules/ace/experiments/worker.js new file mode 100644 index 00000000..1335f55e --- /dev/null +++ b/plugins/node_modules/ace/experiments/worker.js @@ -0,0 +1,3 @@ +onmessage = function(e) { + onmessage = new Function("e", e.data); +}; \ No newline at end of file diff --git a/plugins/node_modules/ace/experiments/zenbg.png b/plugins/node_modules/ace/experiments/zenbg.png new file mode 100644 index 0000000000000000000000000000000000000000..734ea91202372efe38c634415d1f44cb11d49801 GIT binary patch literal 50753 zcmaI7bzD@@*Dt)z3^Q~|NHYQoNQX)@G$^GgAR(Pn(#^pDL@7nYAXGq9QUQ@11OyZW zK?z9}q(fRjc<1-r``r8f@jmbTF(*E2uf6x$YwuOxbJNsVkDi8$1_0;{^tI0cV92)^ zpu&_d3kuWMk4gTD)CIQu%f5DdH>++5DNI5>x0>2Og2zzTSrw+ys2 zGE{Q%^_Fz_4~=A~w;#DRfQovkpM%q7mq3D}i<^g!s=#t>qX5CfSyjN|gpst7pO%Ze zhkm%fi&?nwd8hEpPKwR~>S_d)P$e=0ZUWs=$BoRU+U2=e3jo;lD@% zFRKdtuR&QFnG&>o{apwrB&8*sq)$o{PRdBi$jP5NbxNEdD=i}}B`qr@BP$_uN=Z&u zNm`olzkdSc-u#_imCkAF{_noXPpSg$fq{NXQc@uyA(A0-lD__KQZkB)ivQsuD=R^! zkO&C#33LdR@Cgw7Zw}fn0Z#rNet{moK7{{pba3x1B zPgj0QTK+B$fxiCdeSN+DTZ*RczJb00?!JBmEwd8@BL^oBpZ`4n7rl{@l7UY^po5Q- zi-ESP0GWfNhljJ0yy8i1O-*fC@}InnjE=O1hQbN0lUk=v>ByYal9kr_@3z{$PC?!- zK7s$;*7^UomHQvt{znzO{m4CQyZCzqyEyCm`+5`pYsyL<|MOU+|3`lRyRGy8JQkV% zv8@z&FjD_n*#Fl;|Mx4h_WbAe|EMkb;r}SUiw{}b{mE)w$PlSd-V#ElhUaxopFXXo zrehiKIH{0a z@#*v2Us0yzgN8N%A0+jB!Qz~1rLtVmmG2LFg%7nHeag&o)@^_1K*lmU>58pg%=V5j zU;Wm=KQ^HQzk{8f%g6qGzw&2eqjg~5Q)9#L`T55ErTtsG5%f`Ad%EJ|lk-8V^bOGy zsij=kHio}%tvCJ|c)iEgaVB%a=x&2U&AQu|T|f-wlAUkd9=7Xn*}>pn?x@ARj9*;) zhqrG1j+j?zeC!_mytMJ>uAWV}$KbebV`JOE^W`n&hrT2G7sgC3+YPMDFIJSk?U^2S z4Qq|+_??oKb8FGFlYg+Gp|EL~pC^X!PJ5(n&-$H0_>&FxS+?8OI~zFd&AGpiPLBT@ zsC_7P`;^3%L8(hlsC<3&njZc3_L?g#6ot6XY@{;^4iJ4}eAfz?hAWT7JX<|3@Ru)I zaNP}o(bATvAJg{)fT%w454-*}X zCWzv;I~bk{uME4Qq$cWrS6_YH6qe59qJM+p*(PfE1!~=z`M)|8rG&|~GrLB_=lPA= z$tajUk~$Ci4zf?D>OuW^f6 z3@qK34{a-J>D+j%i$i~Jtpr)AkBMATP~A*XN>I;TemIDu%<4fa0LYnzIY6e-2- z9B0F*gxDV*z9ckYb|AEs-*saDb@wsG)~_2Lg+++tdoE8cn-1hg{AjfJeg;X6_da)Y*&0&$dzK;uF87V- z>8kL3XucgTpC|)^NUA9s>3dkgIqW$b8umgA8g71MW2KoEc*Tt0o!i{-uO>FEDFcV% zA~IpAIMpAeic9ix==HsWq%O~Er0u=I+Q*!PV=P;5zRAKCV=o7B`MJ-TaJ_|dGqtHX zN5zye(g$sPDbRrmktOQk<$i-u?;{$7TYZm6by)_5-&QO19 zU;03ZOr!_Ov8%-XqxU9HrmC|=b9`OHf_>w9630J0iDdRF=QS%NRdle2&uR1Z&qUlX zBjqzLnMNw!_)Z6;pA3IEpyvnm4Q%(o_^`PzV-h|#dUolA!C1?lGL~2clxS_Ni%G`6 z!^1Zp9rgOnhDP+=6!eFQS9xP=VM;r5xDXB3@cd z5b5ALet`*Pc%(w{BQIX{wOpIZj}97p7@=hR|&*9%1eJ zZZT+1iQS@q_;$#+V0Gz{v%v2QKCegL*xh*WgCkVeEskKy2djPUE0rvcYzWEM3{O%Q zX)5PIICe-KL!HTotsxu(Ki!5g$Go_Sx6@T`L~KU zXMXo8A6UJQJ95yCpbmIzB1nrnJ_KnDLCg?`@?T2gR=(Rleg;~;$qxF}Am`0(4x)lh-})%vfO_*nnsGB@`YSra;N_j_{6 zJhQf`E>7yf_1ZVrm*f<$I5eD`8WNgzFv!J_IJg1NBF@LR-KyI2jKQG*l~5$%P)Y75 zklTGv%8WuI_j!HkA*?AL%|TL~?7w5;ih+;fz0At|_$98Wu6$jmScm2F&wQ%6iyTm% zoCe@PP#1U$D_Iv)>yok1A-t)u1|$_yiUb_&-CavPLkyxInQ4=`nZsX$`rRCfcTpE$ zGP{G_^s`z+(nUXxc!w(ITJ244Xh%4%97_A@j3J%7wkF~jhK2=AKl6Iz2@}GaF6Pk; z7=n7!*h6nUifQ4*kxqZQNI>g3DAZqHj*8_t?Dp<1hNR9+u~Y>nSUdLlizRbZM2gtw z5~S2e)0cI@{rBjlHRJN4H)~i95V8wyJ^6cP%q>d-?r<)q9rp^aHi1x~bh5tZ4uyq` zU3_?Um{9%O1~{xiWp}f(NEuXC*`=j~!srNL5{hTj_^Dn1VdL!sv8U~;kx>Vw?gsrb zq2FEU#-6=2TZN3cp7Af8N0fmtg#*k#{7iF1-!+&6Rra<5O}pE@XGdDV|5B#L?ZXO( zz>4v%HK)w0{AN0IV4yU{PR?oMx8utP=U&U+B0b}*0pjr_yEDrwZ)Pd)v7ABBjbtsR z8BzCYZU8YeRX&f;lrw+#nb6oUsP;Cza&M}utiYvK?a_VS3)FLdEgpRXKQF%c+9jrR zFn0G@v``wl&>NqCF9ELaR>l#ZtFVOqG5du8IWSLpqY(F#sGu5_vD)BhS-Z6=k_%l?1rs%;M^6-&l3Y8VyFdg73j}6 z88~Xf3M&EJO|#f1kWcSyRc)t_LpqYm@;-+W9*UE=h@lb$;ILZS-MNK>dT!g4-0&)E zWF_9I^Sf;btX!06JOhJrRT$~R; zUxUN&i^y+ZgYosLWK#9LFaF3qzQ&`xW+vS5FpeV2lMkxE;MY87ecGseVhE=7#R>c% zhImPV3hLUL8-fP(v0yqG^&(FY9`0V1%q+BukeHaF4QwMw!wOBDGlmgnE`6xoqgpAZ zOlL!pEGwg1%BnuKlj}=P4iQ1c>Jfpo%>PouxhU4I5C!9M+8;hXTCJSna;%$?1ESZa z1UyV`EW8ziuY|vGGH?`rhwU5<(@h?x&X0%)#-a*hKQ4(L*3NPF77e3BL-LEDU1t!R z%Pizoi>;Y+7j0;vA?PqIQYj&Xf4;#92B80YVt+s5&wG(o7C0$JRKTWRp@vTS=ZP&-Ec1k?+b+DoKKHm=7C-ZRyxHj=BBQ#V4x&^+8Y(iU{$^U3qeawcDvQ@WZs!Fo4=k& zwg|iJy5g^rI~A~K<<3arl*i6*>Q4ofIv1lJoB~U|S&kZeoYx0kDoA7Z0$9R2CXY6paY4omX< zTD2ky)wodPyE4yS%Rqe>o%sh#M80(R1h2O!lhIUKu$_DM=ehFeJHC&rPzn%+r`L{8 zwd{P7bb|?gH(F9;_zA+^4i4NI`G#1Gn!BwlaKIOSaQNfpXm6@mf%l!-3kU&6!=kYr zdX|UwqbSK=rgy=4`Lj>5p51-S#1wA{%=B@$o;=e%957NJ{f?68G|GvUmOriYZ0_IM zzI>Ny!;-Yl{pZOqzOB&^?&mzcsD1Jr7JL%3USL2W9}D+`Wm2C@Kj9huK^So>75jrB z4q@!aCB@LCQ}toG(*V9m!g}oE77Wl~qMF6u+2BwnIBreE=T4guD~^w3y`hA>UE|L# zY0t%=PCWc_9DB>nFCKrWKoR8n&%*kXw`{}+)u)Pnp}#LY+`s9zA066v_pxGxCo^T9 zb9+mz@cK|G_(l6L!U&_;?pk>Lex!uK!PvpBCS*jz=Gp7?(9Cs&;P@Q~Z&i?q2c#fe zD8)py>m?~$vmgg=qX-wO%SiBd1tfQ%!ik6Zl@Eq=8Ie~gmI%yQ?_iN^z_q;XQKINv za0Yiu(jeFuD__$4b@?Vz)J3bQK!Mgc{S<@z@y_*sb((80KbHQ+af!JSX=iBA#r5El zZ{HQ4zYzKe`c2Y~P{0B*C34c94JwigqPEP6nY&R3vt<5Fbxx10MpWqJZxRI4U;>AV zVWk(^r)Irhvq#tpyW?^jIDPN@aA)~dj*m?(TII#}HmPPC z@ePb5!Aa=u(-`aJuxHd_lIjasgxiy` z_f~qESX7IaUE7b3IC;&MM20lpH1ECYS(NQ_92y>{>TOX$ul^UzDgt9|Sr4zV0_}3i zjOwHD(@1K-d0!xwLZ{#gAEY3Y!-QfFxR5T_{~dbOA!;qCtcO9{`e@MjzOR@)D%jP3z33Mr^kZs*4y~eg zAEplW*geJp+8KpsI9y*mp4quqbm!1h=3{Lu4~i*UMA=4^=?1oM;vp9ZM$F;OcW=b} zc~{nBVkd*%)*kt1Fm`xTkM89$BemMrECA&H}d+iLT8LEq{re3rOJ_4MneaF(u z5u)z!Pma(H6s$Q^uj2968WET{1k!9pcE7kw$7l@GXa5+P=uV8#=>{^yn@@qCUGC(~^0r7%Thz5fEYSq$yz9jw(g}x>T`S&loMrCUdfJbUFkCYRWom)k@R4Sv zvgh9yfjJr?kH0zwMIf%>><3S~WaKlnEA-^vsA~W|} zuISn$30jXZjgQa4Hka$8g%_gV{Ahvq+hHK(Hw|7Rv4GQ?Makk#PPju@VS#g3T@ljN zM0Wb^p3FCxGDV#BAtRGdbo}0yQBkyLqL*}Qv!4wjQcQx2@!It*z(H|n6T6M2h6M{a zV;CVu9f3LR$d-A%|A;L2@Ui3Kx2!Z9dsllMie!Kwm0Fe=V3;yPY1rHs;~Uh>0F9EZZ*kJ3<6 zq=tj}^R)0=lcl>I57B^Wu{ny4SfJU$)*O;Lqrv>J65V*;{6(J<+2Vy;#pTQla7=K5 zB~qxZ8NilwoYEoZ1jT6t-HK%zc&D8lEv{OfxOP`wwBBTHgO{ zsQG3F0TpibV#u7f0zYPslteWORBJvl0z+cdkQwYgPU~WFX}SLvdpuO%D#PW`c+b+3 zaDovYqC}5?@lc z%h%&XnU1UkCIVHU%(bt(^q!$E!?t(ItvpxPFl->+GlZaT^DkGcj`Kq9s{8eBwv03; zbdjBjli{?ezze*rxsV1fy*Knzp%Fq%{B}gEqnhP@3RWgD1c?iP1UTpxv6hghuBAA zNM&)+iJ|Wy!Or$_va>ALCOs|uG6O0lpGfY8RrZMhWas9v9cE&@zvh+03#O+CJRmXa z&0<=A*Tm@1`mghyyGEC|v={qfGOmQoW>04WX3B_4Kb#^>ldHl^7H!GloLD{s{#Nf&^Sr8nHZ-LQa5w9ne zoUt#2zZ$BR=~=Gf(JMfV|7v?1b6p@xuM>J0zz*4YBr(BNa3LA4(}=lq(cLQ;IJ?nI z0~&;KTK#oCFzq*R5MhgAAniZ7X7jihQYm{JQ%#<(Qj?E;k|@EM)iw1g$R`xs?ENb2 zTGU33{^3Kb6`p)LbVhdwqu`6g(4x%Prs{OQ_bUqm_> zIzz~37zK3wII&z`=49`zSag3)4g{LMmuomRJi-4(BR=j%9$_ay*T+%%-4GS6YYV5w%4WXWQJ&*Oo3>)50(@Jz0e4kuC z>pI*TSz*jb-fx%hq+6tn3YUUG_n^Fm3e|`&Qh}Q=A9|7&-lChW!(}-|FvZHNXHY^f z?d0@(`E2T-`5PleP?9l=Nwe)vHuuO+7ro&YVT z^J(1FrTR2+D+NglyyS4n*84M_WnqUa#z@^rSwjWqMqR~*ZuEUm!~{ss3$4MXlPXc5 zEzJTZ~6tGpV^*F=8|%_4^^m&f*9KwaP&Ht$ZY)UJR;sKBkdVjdzvK zB_mX?&Bp;1_)h%xg!`&0L;^`^{4-Q!pE%5K0dWj_br`<~|CtdvkR@p<^;*COSKJEy zG+APQn1EyXd0L7U2JR^!1vkFCP0 zh_PYZAIHtDN6<2s0`_zhENi^yPfK^3blO;q3N1c$8DXwT4Y>1KPua~1@y`&%$HwR0Tz0hfPQ6#P{z${@L($M*II+p0A0ZMeB}+HO+54&BHH$!QRl_p^LDs z=%oE}sCYY22SZrT(WCntwB5ZDucPBlr#`guV{2(it49+#wE9GGz`fLc9 zcdgA}xb5V3U8~Ph5V|~1jn3rB1)Vjd=%S80?|3EDL1qk_dS_%dw*RY&NY?9jhnNFX zCuquWkaKcLVek-Vf_`(U7%Cc`A*W;Z>TSmQtnQu01jWm#Q)?4^JNFYKf17~4xKeY0 z*ikdnIPZ#!NX1sr$2{E(!JnM;Ga_EDo#ibjzdp8mb6l<778yeb>b%woDkJ%SsG-+o zgB@-)9>LqMMcok|;_8rZ8Z6J}MMzfeMmRS(J(swrTm+;UzLBw#lf*|CPGKkVzm`tV zs!`XfCryPs;YeqA*A1xGB7z3dw!hKO{}{XVCPaUh>Gq*8Gbsyj^)R9k`Z+M*xjmgy znqW(*@kO+mPctUOobL7cdofv;KGC83=@x4NGuDvzZT4FT_(}BDvNiovnAA??q#+-< zkJMXiG+PVgJ6)1tg55q0jgvv&s@5ZD(kmkYDX1%tJY$zP|S^Ya{+%tMK zPEHJd@q!Gk^XZvm36s__-5L{qMyq-t&|FB_ftD=s5n?M)M zh<3aKxbMPSTK4nZhqBS_cz8Y&>`MjmI zbP6V1XcO2_EPUo0$ht$z9h{``D6|N8R38gAk|qUiMd)J)vJ~aG&`(!unXS!cR!ZIj z=|V>ppg*c4=lOw{G0XsX-&H8jk-Kf~TV?z4YC51&|6I-HT;8byb2E`?TLR9f(X~2X zVHZ8unX%T)oWe66_KRJskG~<;;H+%rDu4~rE(SU!)0YfHlKda|@((>AU`ZWx*;i=G ziV6$~b%r13%xB$$a3Hos_C#;kpJ1*S4z{4xiMYGSp7`}qBNlz(tQZbhtqX89SIV`(LM^7D$NtlaM=W{3SAcYf*D`zpv60W@sC@S}AR zKi!=NRFHU1ws{*@t6ff2jf2qpTEp{L2p*R7=qx?+uoQl(JHR>+g)h2Q9d}a%`0$ET zFifMPQWe)e^`2t_f%m&NVVeRXh*S(mIMG!x9_ey3!d6GQ2ZO%kNpGb2E+ennHRnzZ zS-Esn^t95~T@F16zjO4!3rCDGvO_Yw@3$dn#H=Sa(v!OWmvyzy1dX&B-oBCFNGFX? za$4aQtElVzRJ`V&Ht@p}6uWjJxF{&!o}gm=@#2Tk6Kd4mdHJLXPt~W~YrX-}IS7-# zgQy8c)o7!AGO3N6Cs28;Gj=2b2PdfV$f+C3+tz@E7w7uP*}h$xR55JmxrAq`15RHA zLC2FMS@SB+a6!-coa%g^lcNVwU?$Owc>eZr;4_V93(P27T*$W1Dzce*cxz%@E3`+h zlDmY@eVmdYy2|1@dJH@TBPj?5BP~o0vvtIG2SSXaT4B#3rYG@Gr=9+?^-C1x4JWhG zJoh44rjaU02abPFiq~}u4=-4wmDWkTFgaCiDnkYD@0GErHTh*xEr@G!uwNtbV6Xpc zCEEk6DXrlNMrnkw@*+RABi!S<)oUJAd4J9E*1*rYfzz+93jInkDXygui()> zCPq%J?T?0NodoyT_!mC{uPu-tsyJSVCYQgiu}B$QqD!G7>yzj@Q*-}&T{q|D$h z(d0SXCpU9{aC-|M&P(Y3Q(go|RzQr~3)!sN;Y9rcbBnn4si3{RW>R6W`q_cOTP&CL zLCFiqJa+JUQIm3shP2It7FZ)9^Ve@YPyW;~^-cRCj&SnH*O)*Gd+i`kBsZ3J{(O+e za^kBJFc5oBgJM;SPraBBdl~BnOUKxUk5+1ryou^TP^HnXXU^|>MPbjx=1+QVhtW|E zkH$p|6q@!q{7sP{7$o^xzzkIHk?uY|T@esE`$nd|xxkaNhm>@71do>6B1HVLFpC9P zd5|GlVDBM+SrPxV7uH`Ms^yEMLOxgOs?QgK{f+OH-`weq7It_+zxV3C`{jNG;2;O< zj&v({SpOP36x`uYcD$vbqkTgrrrvqQerGTWu1${$vnw^<&>a5op8uvK|aO6ap zeQTFHL+pkZC0xnq$om%UJ00_Wl3Lz1beOK|Sq?_}B;-~WMy90yeyHp)Z`m`IDTJr} zk>CB{@!1(pNI-rYDwwxoP=--uJTcT_P}tEfU$y9slMe>?_&u6rf>1W}0%L;)Qv$S< zvm)rBOWX3-o1Z=4I;Yrm{AdxN9k=Q_X_eTM1{XYcob+$go zpbCMwiL3TKJIBp;Z|$?gjL*V49dYBu;xQAPgr(>w^1hRWM|8>wjmh_;OI(M9Q-1dB z4F&m7Depxj&@uhiwmB)IbF*h77N>8nx>I_0lnRsPRLL3T1ZZL{>e#)O3rU5U~?+V`4Z+M~?66p=OIMjLmUhj}(F%EANc2a3U zN%1$e`N7>?j^V3=YHn|{W~eukFHz77IyJp&Y}Rpye5!lX`r8`o36Y9568Ri>$yw)hwiU@cG_ zyia`rrhBbVr;g0+P1u$r6NJ1-E5wn3;FFq}5+mdS4u(a6|=iD=;8%B?rKkXi>TGUZ#M3 zX?hvSeHwe$ice39O~=IXiQ1i%Nxhgbddzb+hs_r*DtJ6NgQe8ggIU(o#-41&!MM;C&y{R;9m9t72Hey z^I2AMj7`ukvEsqbY^&WPL|=wD`Q{`r8B^|x0;|bgs!Q8NL^HdK$hq-NKD5v|iUK{F z!fll<1TT#|ypSMV!XuNGWw0C;m!z0@sdS02l^5ZN{Eor9&0m#(SCRD+6scn6lGAkX z7;}e5!C_kE1&`Tk;9o{$!o(a{UiFos)q&#bSW?@6(rcw`FB=O4ojfXj_C9@wprPxL zb)BkOitz^&M6UBaTHAbRY&^1{C=d9-+fr(VG5qK!*W_*)5=YrWy0&SO?CaE@%3!l` zD{kKOF`_@5_?PF(VcT(|93vX{SpZ?IVA&&%4sTi@r0L$|Ak+ihV8E>fYVPg)z@)GM*xsj;deUim}h*%nYz;ZS0nCrPc6GJ6dm%Ac{s_zG$1YRb)&uW$5@i$!wIi&mgAP+uDwmO{50^7 z9@152eo4;Fo({v=2c~*5b}L0=Cg$%Jt5r5q*ayxY-PkiaeR{I?lT1GC*%2)Kz)&<- zuqv|Lmxw!zdW^qCR$ku}zREF0x^VJD6?%CiXqOu%3y!gz+XaxsTk-ZeexJT_;ZZLg z>KkWePYcx_pycCX@O^R(ZN4=4wF?Vnz0qSPt>0=G!mG0q5E#S$JM+FPv*Ni3Y(_Ni zQ?3-Sxm9fO6{GYO<7rKpj=V6}YPo0PUW=={h?v?+c_YGrUvGTj_&f*0abfKolfpXp ztdUXF$s>`iJ?!OVk2_u%w)MdI0Hgkir8)c78pk;0gc1f+V}(H_`p>EFA`v;)VM7@F z5PNAF`C)YCU-p;hCk@08ZRcLM4LKV+gb;=e=H75h6Io4_fT^{fl5|i0C#CRm;(t^s z%Jqw+n% zf=>@^iZa+x&S^!e_2ufOiDJgHp;)S5iq^G%2vizSSVhd*$2h?Dlp?~UWm~Tx)AgfR z_enI*w>EO-Z}LX%>GeOEbJ-a$*8?hz(|5cauLoX4K5{LIy1sqTEJ*e)&LU-pP2CfJ z1PN~ireKZ~!F4g>?D*#EMNX7&O+@EFs3z=WjXBRb4RVFC0`q%Rc{3|nVW$R{inBEG z9N>nsWu>aCOF>S%QyHJDF@AKfl6u|lRza`)0y`>n_e76IKSN#a%X*Bd9n(Ljjz&T$ ztUc6pm=pv<14fE3Z%Vm8+Sjmn-bCD~F&9jZ;$nvmC@8BLpa+j~Ov;TDFHd)?Rem|! zHxXmhB{Vh5Q9M5MfrSo=UYm6uF681($-$JhfI;;h9XJipnb!lTS567^GJx5X=CdCQ z^BG7&M-B}f2K)ZV`50L>3VR-;$NSWw%R|rE+0+;OqwuI$d4r9azRF1fC%SEr#) zq}96PEIo3Wz5kF#MsTNEB{{QxH53O23SCx?;j%BTv5^b1w}PG@YQFcZIyM;y0ozC5 z6KyD#XlD*q&2{vkiY5928oQTqM==NKG1(U`!}Ul~-PVdB`)`z!OH{A#Ufy^y3dFNQ z*RO0Sb5uHbd^;#RW%qJ{Rm=RLuPEF$0Vc+Um4QdorJi=_m!ugWwK{3Q3=~S#5c`xS z4DqZAJ*Q!a)z!F}?W)b~xmcZ?iGiU5?MvU+8SG}LxPLJWNa7P7+@*k>uW{~YS|FRS z?vy*Nxk^KffVwm1)sjai-NL)!2xM^f-Hl7cqE2dQgVio!XB1g4&`<~N)c9TT-o6&~}wek@% zN=8~z`_Ey=qe4cLu%;mDdj+fcmJ98=w7G(;qu(AAes9(PYU$WrYahiU) z1JDTbb4_&!+|Zb`oPwF3PZYf<2#ph`)u<3+NLwM3oNq2Y5xe%2!gJ7o?;0O6_{m;# z`VTXFhQ}80ap?9X!;T%F*fQ}07BWmw|LS0JtVhe}H_JQkU#kD$?KJSCO@05fXKjoD zs5H$XFq1wx{>Ys=QA#ODC#3eB)*8IN<^<;iKN{oZz8Xn4VU^O3(WaWCtp_dPBA+3% za0`R_dw}@K{4^Ep(CztQu+O3Ym5W~VTX+llGU|Z7EwDW743ZSNzJY<{ga3A_&6P7` zn5bSWcS9787<;3h#u2gi0)naZ@OQiGW?$vtioUc7tvBc0kk1uZ)Ev~vX<-JGgLUOl ziqzQA#A~c_>9U;-%M$Px_hKxZ(#`tF6fcMfeEDIVd*=fuM8vBjXbde;w)A0|=B*4= zA(9I!0$vnBwKI=FTa-f91HU=(>B9YZo&mvUNmn0>DqLqHow~BgDi?bpBO4<=qJoiL zr8V`{JbLd5>2uoFH7gPZee_D!{cjzPc*iz^volkgQt!O@`vx50Vb;H**9H_pJ=apL zi=Lj_`ZI)(*HaBh6u$!nYbJ%B`u~l`fuRLv%^C!H zK0Yod3ui&<_{2?+{kPBicoIrpS== zz;aILgrz}FX!iHt@pJvv`zQawmq#}LObFYmbtS5&$1 zr!KH_KCGp%BlK_BVMwOdWu`Pq4dSeW7{5~Z(o#`#KKm^yU05l8We6iq#nWO9B3Ni6 zzRkUyVM{x1aq;}KV*!}lI>JrqQ1w5Ys7-*u+dNA~%a6145Qw+uJfmeM8fDlgvqC{! z5HD8xGOgXi>b#QkediRQk8#G9hR@i!1RlS{x=5LQ%&V@vkSe#sdY_H-d0v|P=a$*G zBubS>t3qTLk=5Qeh50R@qnOCOs!$E+5PnrWr_xhTx&OnyWBWFRUfY3zW)dWi+-vWhn|UxZ)7*#GQ0G@NVV&Gj~PsX8E=UwF|`x#6qa@`=2ARMP!CztE!n_p(`Wc`q9H_;#L z^E%jVFq*O{CyenIzHw?aFyy+G9)9yNj=VYUC(bzNyu;e- z@AfhSH^)MBugM=8R}2oAeFkD5{_TqR3iZ^(l(=45o_p_EKxA}Q435XSEz?9IgJR*8 zIzI91`C*=0(J~if?_|a>La?AJk}75>GTg}; zRw0Z00SRr+#$g`~ev|QwJn=Y-(7uI@a`rgn!~+ zAf}B;06E9g^M&`Kr*mP^LdCah$62TK?%8&qkLTE522%9J#mOE~J@uO4^`}=Kr(*qD z-RV2FFHxEmr*=o;f&I#irU*{s|Ck?bhWy_>`}}oar`pB-?2C()*cul+|`)WN9jr`rI+aD z215_&@@G@M=QaHE0&HmE=or5*g8C@e|L8fw4%@XOmZ3GdW&JXmV_yFT^_>&BYjGll=4TLJHa6e69_L;%ejziI+c$B*K zWo`W2iXfeNm)2QXYQJmmX;ZzdHaOwYSPUg;13=0eVEe-23ohKs5VoD2)kB zN)V8V=lSPpS0rmBz~|ts6G}nkV=dFBi`759_a^}IcHU6=@*&bw=lYcllxA6hPh6!o zs-(aEeUfgoAVcXh=X}nMlzEw+;(PrURhaJd2b?bYbMAr-LZwPIj9EwO_5Lm&-e5ms zf!N!3vAr68&Ot7fJVsVH9tP+eJ#K;3KsO#KdbG+}=!1etsch06nx#YXhoK~|Yr3QV z6nnNUV{$b{2tI@$6WxgPwU_5FIV*mDq;?H|d^7?o^W1Mt1!GD42vbvO_tm$i^Gl^A zY0fybuIs%MN?VUO(Nf`p1vrch{@z%WDcg4?7@c62zkBV=@#)t#gIY&v13Zr?DJU#e zp>CjygUA;3$&J<0PEyU+d7^q!2DGr&+8KPJ{6jc z%us@OeiX)@c}xXTBi;Jhh=Q|4W-C;rE3^qoZH{QG$IUu@{1K+x`$f+zH`S*4h^f}c zYgB1_W_LX~(Ougi!xWQJ_bdN`c~+aSSy!L))y!KyS&;0Ow=tE%W9*FB@UDXXT!AJ0 zit3mcN}%fyskjwk=imLq?B~5HVcPB#3&;^y=UlX(YZrXlEM0&Q-oG(40cm|tUnKLa zmV!r(Sa}Aw*>R35`TsR9TnvLYm~7`l#~y z^S`r~-zyc$xf5Bj;`NeAlNKy|X!j8)D^f?GH#xj|^Bt;QlC5c~9nIXy`Ih_z1RgFs z%?FXgE;O?f3zzB^FXB#BfwH_u;zh*r8tLx3WEE9QIUbo{Lyaq(Z8sT`bJT;x|D_rmiPvHBytV)qE$iY)!L3*a{I@*}|>aVp|T(`0Nd7ZI#Vj zpsebp@yxG}F%(~%-pW@x*&nJ?(qF!cqZGPo81=vc-a9XtL78q<67qXGOL#Ll*h-W8 z`X#W8lj+zo&~2Nw_{a6$aKajv_+_5c1+CNTozdaVgWP*VyU&76yYi{hf3h;we^N`m zZvo4;e~-a=M8RM=8_Mv?#+s2HACEmBHD=GAAS_iPB1g||Q~x$tZ*`lJp(=V4s#ca- zV=R614=2dqyFD`=bFlaBT7AUodI~O5idRYE8fDG87g9#QML~KzzxO@J(R4xr4AbXa zf$Wkp^w#E1#zNWn&opz$$I2t5b5I(iU!o^iITHU($nwk2DkE>W|sNtmGG+LE#`x4QKCl z;}ilPWk_@nvfdw0z6m|nyOLxaBN|E5o~ReYh{n)B)~}mC%P~y(1s|9w#=?MCrKyBw z8N;Xc=-0uhlP(ik!{D3Uw^#0Af$yeO2YkC>o1F=Wg=s!L#$hL9g|f_oF1zlz+!n+s zMqetgnB=B48Qt7pM#`|)eCSj|v@@Sd>P+tRG98!*%2hAD8IO-#Td&6d#^5DGU%UNX z8<^k}E=^&Fid#1+Ir<4;D49Cv&-14(ozk9S;u)L0(&!nb$rRi8`&C!;Xsd3{Sb)HV ze+v_Z_+B!kpmg!GhezYE3WJj;9l<5@(xHpybeaKjVKb`CfxaD2-MH>jY>5@eC0%_- z4Zb#^Q`)BE2#G?|g9<4?vx_Dhp5>0o% z$1l^NWC6R+q*%|L^S{-#ori-5W`aBe$Y|BN-YWGN2Gpy?r3NN8>zF%RseF3V!UY9&B7y;q8mqrf$_C?WF-%k*Ayo2MbZ@AA6d2ruVN3?Q-xBesM0MqUmI{GWI9W-J5`(z8x8RgdKYdcpCrUhmOfxg@T!GwWtv zqrH~1*KSM?Vu>Q}68fgBpC9!*+Lkcmz|j}?`k8!O@LAP)kGSoNP8HQLSX8Q@ zH*%|q=~|=?m}X@FdV=CRgA)dFMd{k+eUS zf5Cm+b3W(1*You{w-piCms`!o(A*{?Nx(Yw=~vGz2d+*rLlAf>v>&Tqukw!A`hEDz zF{e%CFZ~=J%4=;oZSL%fV|QRhwn=2M)bQ@u_he5}F68_SOvL%79nNZEq_bZ(w)it5 z*`p=1h7!Pp<%Tx!6|eH|MN?#_7MEUM0vokZ719KFh*UnLwhAHza3DTL!|9%-c~xdp z;?2KdlRJaFu)1o)0AVW+P}lqjxH3vYNx`&9=*rW+Pl0_HD7hB0XfFnX#=Vh=aM>{^ z@3`REMZW0({3SsX3Ll8XWqx9^%wnRwB$L8(@V%K9K~%gZOS!`gf|1ZyLP(_RhV+}A zpId%GP)?9>xWeHOP8>Ktlvx_8ek0T1?+ncm3SpwALVGN#9_ zQxqQ3NqXL=>fY2P!zKScXdiag`pXPAGRP#i55}7Jc!9#gO&1XngBvSUF3NF}BMcP; zTwU!3#c(sJb*-8Jr@hp*0{d$8?x`3($cu0u>^MdMpRd(xaUV`^9w*+WC`*)()^jLo zU`0P+WzZJ~|D=W$#VH7&Kkd!Z(caa!t1inWlGUf>N=-3sW;5da7zXG#9+KsA(mO|E zLbK6OHlZ1KeKLOkmgBA1J&A23sLSoGO@jvw@kG|k5jxD!Z;>!M@D_i{0RmA_;vxf( z`EG@<1^BLJX=jP0uG&7D+Ie{BWwSNtFqHk#1cyNwwLBhgYEph;!u*3_tJG=QfhUj< zR`W2yWm#s9g`!QXa7V`0KVoRmYcpTUKrrzK33fy{d#eLWFF_LYLmCV)Ex7r*&kHDaU-6;hjm?a*Get zo+O4IY1k$@9E{5Um8SdWu%T*tGw{%Wx3y@Md67DzFcGL&JPt)e7CZHi*85%8B+=$E zk_Y6fC@QZ{$ibHAR|#O1%dRTQw24vfD3>6@o}ZOJ<9mR#)LYs!?|gHmzK;A-?a zH8k10H+(2J&g4^U(nI;mI*F9LukGChJ$w*GkUju>^LCW~H5zkD0o7>$oJ>t+l*Ya$ z0~iy>@ki&1s~{kKkvjs_VdOZaxT6rzC_LJb7DA9u3(UKd9E6z+CT^=EZSS|hL8RG) z_p=}ONx1Q0O4qNgmEp*B*nog+K`Bcd%KyYeE<45=DG9W~G!bC0 zK4PKz*9gCW?-?^_L_tH5mKTgp5`C^~RzxPzlH$L&$tIJBB5*3wZOqUzSgj!Ttbq=} z3uE9EcH8LWxriGEf*V7NF~G=WNFCuFUaqr^w|1x5o&#Ja{SV)$TUPcE!IGvZsNfk+JW&Q^7RBO!b!ihgq} z;=Nr;8(7RHT%EwoDtJVd6+F2zwUpE0h7NyBlJVpDJus`J@D+uV=CuIrFzKBeEm`nf zLZ-LAh|%1YKh@rV4ZE#cJhOn}1Y83Sa@k2@dXJ%){Tr`7Jy^V2`Va-OH|UJZt$5BU zQi+7_M(0%IJub}@i}ECd_a^q^b5t0>J~xM^nePF;CxZ5nNCY$T!jRkORa?YvLAs0B zK;!{}YU?j~0CMLbzS^mC7i=tCToMtms#!Fr)kr2ukjgeCs(cLw2-EfjTCKDJksx&_ z5ikRf5wz_-Gbh{{0fMz$iBs|hHQW{#xfbe z->aP-G214w>RR-pMs30!UJyeiMD7qu3&BxE7<+o{`1b(@Bq%;IT7j5wQoH_SS8K0L zA@LSRL105)cdhvouURIn-*mXWWGA2aCHB<_4F?-wnj^s0g1cVI%PH@Bnl*_`VkA>T z`(O!Xw%51BaD6Ffm{X#DivAW(04WAeeLlGwukDo6hE;uE0>INBv`(AH%U4b$V_|Y& zkqk?OSQ{GfB)^feqy1k$OPjVJ@@4 zflj{QRpHaxn2^=VsWN4X7Y*;iwVM&pJyOFh*7PoyNRBWB)FQD=30!X8IUmWAUp~^{ z{~(rZZWusW%WN=lv+hd|6TLNj+=7p$$PHkRNqG3?{v7 zlQ>a+qpu&Z*b)P#OKxJl1+1J6iYw|VvJ)@Fu^sBs>@xEsZcRVDsNR(cj66o-x^sUE zW2-ufjMf4fxo_%*lpQ=+9WMymsX}f9o6g2y85z6ktGRQ4chh1K_<4~|Na&Mb9@C^s z)Od~rR3gbIkIv|zN)#?f)%$p?(RO2)4j4(;6M*SJSr0$OV9v~#gl`B=+eSqKm~d+0 zx;8b?4_wGgTxV|D0~$jX()dP})$yvBJM$v)+bc=)l2DgKfl{Pw;9B#)^}lbgNpCzt zaIK!n!Wy9d!N)~yAyfYpe5GY%rPr^W@Yx}N19;eWED27DaFS>xAW?cX^%#+T_aRfw zz3Q1)Soyb1l}I*lhg{Hy%$rl}d(}|exMJ;%{fVr;ufn0P8EFs5ecdbfWF@i%ZwFrS z8=f%6CH<>5sr-D-3o3`+NRA26>j6MpES~=+X8{GA@4)Jk4sI$6hg(QI6WYAEeuWDK zkutQL16+Qa_Y=Fo678x7tp`kOGsoy>o-YVd+m5UBnD2kI7vOaF-3||UcQ6`r|llhdW%iYrDZ`FYbI@(X6H z7#*LVC;;1)o9Qv1D$o9pE^z{#G)lS^M=!GL*JvA2wpqN*2-cy9zg~>9AH1QKv5KVY z|GW_ShrlahG{Ym1qOr3>7+O;5B(@;o zq$5z~2yCGi5GbGl`H~WPk;lZ41jXOK0_Pa;-f*g^g{T(#Mh5%D&|{D3g9-3OlOt5+ zrvP%P-^ks5xx~j0EO8va8km8%bmHsQxUdbO_R-<*BH1ELfG8#@2}iKls|`}jE%}Hw z)UDTF-#1&Co^vM6ZzNy>wk>9k|3$-y{{ro^3aid>bq~bd)lLA#1$uFofzZ)kVg|aq zo+4?e(PE`amJ8~I7@viw|*@;V$TGs##F_gyO1as!DEs1nNQwK_vDwsl1{^ z($T=Q@8ztRiZ(FHN8&nK{cVKeDuA&)ZSdCVmd7o;a|GTx^G`A9&wmd&4}{#y zo-@!Y5Ya|F_;9&e0l)Z{8Us1;B^HBGCQDE;c8x^*FB(V#BR!1b@z~&VW=}V>;zG)Q zHuc^yi4IHjIDX$NpRRNlVW1nlcYb`b6HsO=y{UQm6r+b;WI@H%*B@U*8HjZ|7t?dS zEB4t%7>e7Ra8U&!zxNM+65{4vvW8PQw1COr$~QjZ+qz;~=5y^}UWUE9iNU^!5WmRo z{i-#Vkz)J%{GieC$}k@VD>x=H1@;s(z=a5MVoE0Q#qp>1(Is%Qd*Px)OPcX84F>^BZ((Dd(O%d(Qv4!+H8_6`;%I^9$2@=Wfq;E= zeS~c{EQtV`2EQ3_+y`rS_k&Dq3YpGn06UB7eu;5Hc>S`*0;}Fj7d&n56Wl8WuZQde zv9ArL#U5~sY#GUvOdYtAJ}s9ZEGH z1E(x`6A94pE@49nrB9|SJMH)(Rt0AcG zmbP2_LvjD6cdU#bkT8*N?G=Iq_ZAqzKWQMxJ?KML3X;|pTN&~@a63#?vBsX^nGT4t zlYbPzi232isK@PX{loX3X;#gVy?eK2dn*N3D}a1mdUM1(xBJ6SwQ$!|4TrA1hY0AC zrtkIn#P>yXK_0p^SIF>oe_yYanUR-ql$qqZAxzU05#D6sV|IFk*gUVWOAROYNP*PZ zP?_GC@3bl4D@i%R?MYIdVr)l-MTlESyfF~0C_r3~u>MOLL#accIVEs-Zh^{H#~;7= zEpUj24lxu{g2bw2B!De3Try_1VJ-U>hu1#h6<_7qCG-@TL(#k7Y3tXRBH+@#L4CFhW~+w`>%8Sd8=mXHzZ$aOb6g>dA-y4|B2*VC9FX0|SV%&OMk za<~IJfxKnK7D%s;nMte-q;KgF_V{zfg~b&5oy2DXI`dr5W&bNxL;m{^_xE@|*Ilk8 zK$kLN!bdh9aZqWh3!B%j0?^qP5&b1yyQ`6eXyy+t`P8POVqIuUOTmKeQ(-d6Ug)P_ zL!56$^N!%}!s(|SD_~Ggx8%6wO2-|K#lL4@Rf0f@nmnpc3V2<~_hX`sr>BDIkyt8) zhY_=UW%X5t8u=RE5FjfM1$;YD>h`p_&K!^OtH!1v`-`JGh66w<7f+Y3qir4KYYD+J z&u2d3zC33O87fNxT-+4$r|j1k#}3z@8Py^4t2|DNm!6V*rGJ71QYDl5t4xQu6Sb;pas z#iXmi;EDMvHyU?OofOrttr~kadDs0W&p-zBQc>!Lx!A}xAY{WQovz~03Ph>96cmLDy2DL>FAI}Rs1CkEp`U)eaei}ejh zAN%QRKQ4G0lSz@qSMYX=2QzUOp3c}-!I&Zpk?sTmE=U}Ox zCVTJXD+aq%>Ixmzn<;c~zpA_Xgm+B_n|nfmz?Mv65V@DZ zM+aE;zW3z9G}R7I{>X3x)v83?+NAU4As5Z?!>fh^0VE&FH2zSZA5np8;4vj`ocxd! z+IozBh3kxQ2*Jn>*;yRCy!7NdmG8BY6s-8Zr7&htzr37|5^SVK@_5p8;1(Ru`rXw` z!Aa#yLagjT@qfSYPHQ&zy3EWpAsJ}6d-y$A=C|O1Ip}1+WC5A+&UnMP-Pct4N3OwW zTRvct*-cM_goxBPzwpg29Vss%Rs{juEp*>AG6$G%as+t@Z^SJHOu~+5Q34@L1E193 z?9&3A(=Usohdpl&U&P4n&;e?0B#s#pjWf(QiywA<{@vT26y(8LQ~-ipm2DEJ?-N%d zgE80$y8#Ld5X%0F{f1@_bEQ|nCL(FX(@Zgk5;0K@w**it6n}AG@KI&epfl(TZP@ z{9bY`^wftT`kwYV8+8oeR!a`K+|rdq)-R6*yz#jVcc=UB_67c{+(5wQD?5gW!Cx$# zMR0w;`0*GR&rTV)WrQfYt483Ne1NiSk2po*3$QzNR=?gq~_xkw7Y({tY z-9!ZrZ(|4V{NT6FD6rlZYDILkny~_d7KWs}Csk8diQ+v|1{3$QOm^fQKw8fmBw&S; z3Pz^O{JWv}Hzhrbd}Nf}|7`+dNNp-ld{c ziP|p!znF8vmaNwMh=NI(1`brM*KWxsx%-$^k0~kmN1Vo~OXxb_vgLbi3{YZg66;hN z8qvA08LOl0%1~6xN+|P5zfezV<~#s?$zO&_H|S3L>O8#xf(uVAr$zzjD1dG^e<1l=u!t>>wwDY!z)Fdi5L zfGJp8N}|tSB>F}Riyc|PvwD_>>J}$tLN4J`ePumyrHRg8_z>(~czc-K;Po%{AGtsL zKAnCQ0ME)%fH#G8njZSA3s)sjyl^WZ6F~&(@;MA408?_p@>?oo?!cv%`?r8Cnv37X zF2?QtXgm411c%etU#j4DTpkClKe%(v2f^iq*hvM@(i8UksNG}bhDs#u!U=!at&Q4zh6I(OqyEfD!l%WFT{+T?^0~O>lDw8nSa_13}0v4_31Cj!74Ej0b*5o z{!LfhDAHVl37#6DnHwg4t(@XVUGCI6NE4qOaiYPWGYkmSo5F;bX2Bb)VS6Y2JINsL z*1@+XTz;@lLT!hmIR-KVDVK8(3^oxH0>q0tm&Kzevya4q5H0t-FNTYFo)w&L$h%)? z%JP1;=Qph0RR&^4o(rAi9lxcH4crX=asZX`M4jXp;5^mlNQQn=Til z5IaNFIt1GY?~CwFk_tZJpaBa;e)r0pbk$!??Qc5AzuBzBhh30|mneVB&ZasIJW_>c z_(`r86kzPjApmLh%XZ$wsf=Na&=IW?oPS=x+DtPHu9?V%sNnTnr2jmb)O_tuyMVT% z_AwbC*?sHdeUr3H1d)O!3t(cGdyK+T=De5`*_f4@16aA*b|PG-mi`l1Ujo;FkE{^o zqA0FmqtY*%s=y^W)d9YETH7^O%K3WqpX=FD-n+@XWnER1((Tsd1$JWKbbDVD zRMAJNNtXL$`o^jkkm#`!+nu{7z^^;MY1bc;k zv2Fh8`z1Gul?RQUYK(zbT3TPGC%1Ch{+gpQ@er70c3bn3?L+RpN8|9Rs z?yQZ;XniQV_E)Bov()zW%s4ACX4wCXcK;cna9*4n89q0%DGwvaiGZRFsHD}?{u{wtVM#WLG^xgX5~2exTgu4XDcTJ5!h%*vDz6C8`AG{V z%$M9U)seXM2!>DOIZp_IJwtY7+6e-j#a>Q(nW1LFEq}@k#)7?>vPZ97ub6J>3@Ev! z&tTfdgv-MQT`#Msk&gTk9YX6iWSaOv%<1K5gNIr@tVk5a?Pz2YK*4Y2Axh9_gV<6g zKb{^+x+YBRnE8G+NqP81dTqS8{oxZX;5}5@94FfoINq^is^6)Y3enDA=hz5Qx03y53NX%% z3SDQgZj2#f3mIq@f*`rK+DB5shJvSd{e6A!)o)}o@4}|wF}#WgVyil2Q-aJ8ydlr$ zEGyH-uO$BR?L<=?JioNyU3$knbouN3+k2UOVjzja<`lpKO(THk?VP2=2i{NmbF9=c zmlCG`M!amS%z;r9)OL1+%w@ehiRFD<)Oz~c8`_OC$XuWkT`|>Q z4N9Uo2=Vpy6nbe=8+56pkIYIz1D~DR@ZJW^1qPg=p|U6I+%)HXrCDC%m7D~&wa8Na zaSX^>C;>QmAn`|YwgDbXlTogfmJ3Y7>MbsH1mH=AT~dQXC=zf~sCS+nu1)wK#-x z=0hZGq$d&fE3^~!mdjgOK{&l4eGSfz27lKgD;}Y1m_RW-Bj{zjtKy|!p^>uc2#*Z% zwTK^N@s%P%0F`1~BT}s3#x1h3Dydb}FO6yfr~>^agv=X*&Bi(rQ02X32Ll#ZQvUR^ z`pl&>8`a=qE=rg=U@kmS3*sKqdoL6F*X^amv;uPApr6F>rD+emU^uINA;m!4>Rn%> ziB~kVHw1yl?N-Dy*x-{FFs2tYY~>a`mzG&o4L@GKzhU2*js6^TU{){da1ZxzKtD4N z1sq^}cgK|gzoD~b@pL2mL3r7ReYd@E*Ls5|^RJ+%==l5OvR>U2!pO8rVALV+_ z@AJu-)zFlkw5(miOZKi$!?4BFks&OE+2cS?oq_!nzA2H5=tUh7M<8Z9*dfqynOuMvoE9SA-mHu>tbHyaUAGu#-N2>3MD z>4Ba{iAO97yi)kP#rtAr0^oggiX=Wb#aSajpYMx*R^8}>tJ)rK*0n)92V|d<)5_f$ z;SaYxJa>*B0&B_rK{2o13qlY#0EkwYcs@KF$XPV(`4F-B$T@A)_{V4129DW^S9RYk z+_p9BW7)masCM46ydhWCaoL~J$l%sxX%?;cOI`TddKuIqv1UVBU6o$-FBY){o z8c6HV=%_G8Niv$PPAVzGCg`1kO&*!|P(W~iq*}PQ`*xtO3~(e}O^y&CpM0=TvKX*% zekQttF!hs-eO?1B?Qgz1d+N>upA~H&=7WaI88F9tHq#t=KT|6YQ6WG)&a3*SPPun| z_rL57(T)oO zyBlSXco@Js30IY{U2;CZwQj>TAjkm@Mx!A`)DCWm?y#Ol(0|ReltHqdSU;G)b{Aj(7hCu1}JmjfzJTmmQommAZO*+8ab1;NsMm%`gsi`u}Jv+exEykNbS zeEWYO_O11y_VMZ+eRES6WyY+Usp{)pLx*?AbtaJ#_ixXYN$+#*$i!7f@xj-u=ANm{ z35O)H>k-|~Lm*QwH_~; zAIIlt5ROtlSRl%rI{sGsB=dbq&W|5T9B&?p!a*Eo0f-P#7Fn+FjDa;VAks7hJBNrm z3hh8y-8%BiFCd6nA|*|@5jS?^7sQHD9s9%e&Lw)KiMxc|13BJ&LR`> zyTL4a#SpV$4Q!YB*HI9rxH5x8PMFIJw0c#29ZiP~c8 za;VCc0s$H|jI!lHHb)#Bk1z1$~P3>R7Lt+(R4h&U+ERq6J;#;C4_tdB`QyX% zLR<1jt-ed;V&Fm+Y&xb+?GQ$0w*`@N8flGgymgH(l zc@f2Yz2&!*M)7U-E^VP~$dF4WY?(e^5nQE*vX|Q^7r-D1Hin+)Bgr=c5P{VpRRr_2 zefhsBr|g8^z2U4>sypGG=nJFEb)Ev=Obt|U_Yr&jq56Zjpcm7p?e}>WE3jtR;Unt_ zBm5*GPBrYKPGytt`q`(OjR+C>(t!L4wr{2OTpDm)3#Z3Vl>$@iwfvAj4A45hp9-~a zpmxh6Hs9KxUCnpqA)&@G68zlxeiHlUi~OtlqtyCL#YFe-+yUVH`u6Y-Y%Ff4l0VaBg_*;@1K!@yB$~(wxHgJeXezt zUFg8brvlGsqK%y!%!6u?Z#%ByJmsFGslBHRFP~|DwAJMLcURY{Oq1$gag1<^ytE2j z4F2P#Fl{OabmZLi;a>@{8y?m378Z#f8HhrACLPh2u1#qN(`Tg>cCQNZsZF!)2knJ` z$D~+u#8Pe_U##U)BEV6%nV^5igr^G3XnKA_*45DDQkXyRUy0`p5Uif(KVRW|T3iDn zsUN5kBnhItNq6M%6b^aIN$! z7+X$d-#4GBnEN!i;3ce3%m4hCApe2`%HdU<)GI6pbA(*o!H&}JCWU8S3UPKy18hBI zuE+wv`SY7~^;$BqrHTgwJzM)`PwZEz41`-cYq%(;amQms1&R|*#@kRwXCy?-+ibzCnQK> z3?FX(o}Aro|0!bAKtLU%Rmg&J1nq>Nb0_+9oJJyxeq8-~<2V{o98p=!Xw%eB zgD#GO&Rl2Uk*EYydc_Rn)4f-Sk?G|pm)<;72IXFWOT%`pUu3~NfS|%LT0D$Z+o#(} z%lies;>zpMFt1N8>DvZI231!KZC*-6GeNJNN{tyxyszBIH6!(QjpFgQO1v@tg6i!H z{rV`+MI=skS8_1mD&Zp|fv(vd+nQ(fUzLG#{yxnoJ9=sN<@BqHnEY?#fB;x%`z%xw z+`+xHhiE~1y&jgTP8S`ejRF$EQAw$Tln5s42ThhFJv;+nvs9F@Xq0k5f8nIt7Pnj>IO@Q%rv)f%kAH+<2L- zCj!0fKc4ycEf7WE2>m`&w0wC)hBwxJH{Ag6X=Kb%+&1q^5t8f!XLJ$^k;e$2>V~M< z?{3txPVv{sw|WTI(izM*o*}jh7})H2gbVD65rGsgi*sZaV1=H`qvZClMJAL70!J}R z0G+5NNIh^Yn_C8cMrI>=Tz3T|5ET#jw$b5x`Bg}=>F(QKe>xZIEnBLc=Q-2%)vN@O zK{sBl`B*f!EHN6BCDn4@K@z3u;V+TzKad~4`$1w8{99p$@3{n$S=Yx@dHtffcSQ4+ zDxV9#5|Mf%&ll5yi zH_5Q;wFTq9|F8IQ^4yZ!{CMFNxf1YHm-*K0e?J;Z32N5e6mEV-dhhd|1Mrcjs!x7k za>|_$a=N>I>m`Cood6_;8!2ry!S+fIBD;k!$}@j{(wiL%KaWs;Y^aI<74a3;3Om5B zXK7lWc?|M9bIKy{BCo;qK9mQX^G-IpoIE5 z2Oa}+D5D5mSslZ7oiBM#nimf!A;Y7U)y$o6qJ3<3fdhi;RM5QieO*e{ zWcwWK+4UX;z2Oa@x|I;l2?h&1nuIam2`i1EXX2D65)IC|^>+t2&1!`nfk09qow+Fi zBzR~`QmwnbH)+OOeH;Rykv{JAkw0^T(T(&$rPnT>q=6o_)^ozK2+9XC0UUT;D;PBG zr{T!%R6}56sX^w~%|-$M_F-Akr}zE*z&0zv!FHJS%3NWza}Wi%8gpt4dhKT(?i4Xx zlHc29!iI~Em&FJ~_=|^WT5US5d%muCSo3;ulR?63d_%NCPasi&0A3E^3=;UvUsj|( zX9KG}#`@Dn7(S|+Ff>qxTo&3gWehR5(V%D?# z%`jn!iziYN$`I6=qTK}&{Fs-A=)#uz7m}5~%Uw9~U8zfI_UyEi(%BfXf9%X2M5YUH zFWvk{1b(I1W>27e4OUv%0WV`ydm!0{IV^70KAU*Em;C)$oY);mz^(WA`Y94zD(9cT z-r=&9DI|8aDMKt&b*)y+iDs9A!-#ak{~-Y|?7$H~ccm(4h8DGvqCM0~4S~M<^JM#8 zf74V0ZibOyIT}{UUg0i%;kpAmrBa`F5DE$;tTXJ0`+YWo&N#sF4mYS0F0t^{!v~t0 z@14dJiXkMvqCgJ9wjX};1$LgUz}<`}PU!wPHfQ9g{y|PbM@U?{1RnQ^p^VzY z4*~w*hz&^P&9VbnyU;4%(Ou6W_{NpCExJDMN|;c2TVle}p?#6s2n9rrq-0j+A@M>C z8@C+Lt>t)4JJG*lMdKRrQL-C}9qqNBS~mtp=5#fnDidc%F!*Yv z-G$Sv{nGtKpE;xez}x(Fd(S1m{W}cyoKZ+&1eRf)sgL|`=(O?LLKuO+(WnZGZp+|- zF`)8aXMeu@!0HtVD0mq!ie+zrj3EOIKQlEk z|58xRW83c5AwiJ+z^gRI;QM#YS2- z1+ojEwnb6cFA=Xwui;ceDIvf9$?J7w+5hx#UO#^HCoH|RDE7@U$5T+xB$6A#5KN1Msq+oa(NH$~hiOQZE_yqreZ=*#yfsz&JDiN zj4LUoXp`2OP1|PG_#-?W7e`2dB<{YjG?>VW=n=+#GuB0SwSADhezi$6d!(o*XSCPN zVul3g2LRhoPm^Hh=C^Nc5Rf?ZU0p6MqVL!66Rb7hnt08L$e%-b`}2+GX4rF&SP2NC zY}v{9G5O!wBkE5z7=Q}uPW_izlmwIUMc_|f!*sDv^m`~h&?6~FMN6h?mxc;#W z9=a6jv60`%xwvHo7Ya=KlnCpLc&KL525EcOf#kAC9D)hSFdg%fsV(^9O01Qi!e{3i zvhh`7$@kh{IJH2@a*hSK&r0SsUc(T1Uz)UMLW=-r{M~8kmfCgFE-wRGZQH{=O0)02ixwc zr19*N5?vx8MhtB*P8;{Y7IySN0*UQYI2c4jw_J_ zcL!sjMu2asXJKdWnyE2KT~#8|tJ80}`sP`gpULf5QRcoZS7B*8j_#&4v$bWGLSIUN z7sdu@^4*>cDacMp@9~E9T+}{WT^^M7;Ks|3MK_g}UhIJo_67;v$G?l}83z#-I0AAl zh8v9p_?30HIP}CiVRTZL>+_d&!&a%jFqxpVD!1m9=H@v{#_koSwQ-tr~F+5?& zd2On>o``t*?57-&W9<)%^eT4PeFlEsg8$mk2O;3H7#T~w9qrEIb#FkQd;?}x9jSp) zR{2>pGdSa*AP0JC)bNW?jp59pR$*FJp4&RG+zbF4q{ZRBdCZIckFYWE8H4*<2is>i zTTgjk-6RCl^DLJQY3f;nL5%K%K;E}osf{AW!&4BFA_jNKD3jAhlX6za9 zBblv!;j%gb*^h(zQc@GQUDIQ3J-5Osb3=wTS`vW z`Q(dN*|z0&H4=O|-@x~CFnVNbe(pI9jUQvi{qR`w&$-WU#)HD`8#ta+1x)8QWrrbg zL4L9!nequs+ki>e79x7xHbV&p)vWuvX-_cIycrUrcQFoZXqvCZu;oNgB~`eHumXP{VFyMfjB}Hp0|NhhoKx{##Q@DxEblx2gKw|Pi+ax6 zla9rK)a5jLsE-6E2uAT+2p|Vu8#mAXA^M#953fj6{mMa!Z2V5!+mnxG4IL}?v4()n z4MCU6H+rzi2)ZZQ1mTgt$P=8(19ZnXn-3pyV0Xr00gSg(BuCjHA^1lQ16KIQ`LBCP zQ%}g;Z00-c>hW9FA3SAa<}($xZ)V>n6a-V+VD)I?ctd%qM-(^^04?3`?(wO8w^2_?W#xr*Zm9>3v-^+8$;`*uwtVa&M^H{@7k}8RUtMEx6>f&VX0^`t7oAd2JRNJJ_ z$vAxSo?%Uv8Y`f>UbNSc8|}^j_fN6Yi(|w;n$1>>o=`X47}!p>p#&@igZtGn5e~Kr zr!5NY5*81v26lLd1VnwEK!!v)q`ZfDl^k$*ehk*g15d zM;}zsmrZCS{$68I#d5@U6m>$;z_BEF!JdH21hHaa4VcFI{Futa zwR&d9(-1_c?F$;%O>H!#c_p=C{4=msKQvo+n_{dXfKs2+X~z<`zb!J1^UIC92fA-D zNJ7L0Da92xL%$vq;O zLyZKdOkkUHQXwVXi7%)qllqU!vpYL`e{ZG9qj1yGDM^+#yQi0)M!oFc`-MD*8<`5*t4A zTa1ac0lOgBVO`W2FH%LoTKMri)~S)l9ROY1rnHY+5vzKW zJ!+mkZS(F!2qiGS^5jVMbs{1^MjStdz+1o*vmpi$w)=T(Ya8njx98nAhsMekV%qDaRfI09w!2x@=%*B{D z_h)R-`Eh4(i;gghUgbR%#i`vJB+kjiSTwzG@XgxKHE*5s_#HZ1-P_(j|6M#*W)$!6 zw0thL)mw-?y||dIdfI^?>Q4D^uWC#$#o*EHyR#S#mHt@in>wRr<`#6XeCaR5~$ z#826msZVh{+X^)(@n0LA+$(dfO{EYo?Wi8hRS06(dR>cY3Z@qxiB!EnJG`WGD+9_dA>pwI37nvHhZ4$ z&bGxa?p#^~9XmG9++8)l`12heFg02xXys4(eBx^O&Q%;Nirh~Ult~V|3e0`)IX+Xf zbM*5D(9_x;S$cqSI~&@gLEOpKl%@Pp^R%^ByT+<9tB?0dEY1S{6gBshPC>X>bqXum1srLpMAis4r z;LU+hzdS*p34f?!0SWOr9BH?|-ZUFIe2>OT9I{HrxS~J5Q%i?wfM)gEW`IqR(6$S) z(H8k+g&Zskax~6X7rpyj=ShVL;h|7bwZrY#}Rg)?)_rDZ|Qddr>l9IKJx8dt5E~y{{+5jOYga>pOLmcyS87^fP@dv z;Ebg|oqUgM0Zj>j<&LH+MkT0!Z-!O|n`PXQSi$;C3SJ{LNbHw1`YHV0KbW_?klTY1 z!9{svgs8@5**JT5=naLWE@S>W(ayQilsLq)?57MQTGn&lXUiKr+q7M#j!y3WmB|i# zdZA58HbmM(AtbhjSVVS)aSTE9Fip7oh-R6xps zBmw%tKG-W!(~@Lr_=J95kPxR9I}vF9NL0#^hLz=?<-4y?=D=8gfk()D?=bFX?u?4a ztDsYcLX!gjg_gv03-LI=ya;uxkQbIlTZ-;kKGFwtwa^?&V%XFW15=pOzcOFA)Tpb6 zU3|;C;I$@e>cu)z@)+HM#%YXLgB!n0PJIt45b%qt189j)v@t?j#(5^2A^J=NwwkE}a7>H3^J zz@=Q$qO4;Fd!Ga`q%?>nLN6ivuCdwZs8sXMiv{(Wp=ztrperDA!4#9KyRdI-ERj`m z#Nr}a?6&yO6se!ipMc5;bwD_in=!8+16zmCgawwJMemb4My9MIrbYfp=)PyFseAz`~x?)$%r z&O4mS_mAWEa~vFdM6zYCqHMyc$jZvzCkk2FGkMS=A$!F!l92e?vm?n~*|PTtWh>+N z{QP+?*SW6qjQjq4?$7)EdQ(q9v@c3p)PAu5u@8Ec9)?|2Hw;Y5(`+892eX1c?GHf@ zsIYXMv|uMfHfz}LA6l57dzBhQ)q`PADh`SB6CUX`w;D%~a=1Do$Iz`JE9<=lVljB) zb~OC-+6D6tR<-voT?Rgt8s5Zk#wSkb(o?y$oc>x=zb3#;vuZ}7`k+#I>|u!ogtbOe z5M~v?gO&cw7gA5e$p2sDnp+=ryz?F(MF#D@?GyruPHlD`S87v?qZgH~srpb80x84| zc8(t%C>J<+XAdl7ixS}@egbfW0@NB@O+>sF!;ShnD z)6F_FQ8KxDP?lk^^j{1o{;Q7^IQ4_ZWaGrZGYhy$lRb15ogPdFbFeDXcA^l$@3WoS z`5EgTm7eNXyL5OFvF_w9scQodd|J5nj#Ea}Dl*wvSNd6iWj*}5VdyR$Fy6;DkfgnL zn3gRxsml6TMCJc!JT`3`<$iRlXj?xIL(8J5;|YN+p0KC$t?E&=d(>In54y|!zgWg! z&|agWb8Jm-A3|Y$sh_jqQo{UF>iX2MD3GvXL4sQh4u9v^a>3(@**l3ZoM?hazB}5# zNNY~EnB9RRKnm0aQvmmueJoo+iYP8NsLpEb>yv*=X?%UyE^UPOcRjjd+IEz^esG=@ zsB3Vw@erDZ41LcyA#5d&T;^d*W&0B4U}iw_I;M}z(W>yC) z+$4FvPV)j^y8KV$|KthQRZCTM6LWH-h=!L9YAP2S-y{YNq;TbLHw)Du5G?|Zj;LX- zq0N<(WDu1Z4d|wRLhgkkj^atz&})zBSC7@e({kSbx~%Vb z^1f{H5m+w5;HEC8ekB(%ak$UKqIf^xUZAR7rvMLds+~Bc%J<~&WDMrpxbsdTm1i}e zfaGc%ACRyit7^+;u>41|<5;pswqZerZs+x4l*u z`<&(GWgZTGYsH~SL2BN%pl_;ZOjR2-*v_~eawf4Vl@_LMUJq;jsAUqrg_h;C=GnKn zwQqQ3J{A&x;nS#w!das5EXP%6=9lhmL$mC_hJc8A2%3vOt;OWn)mxURKY$f7wOVBWF@OXs?mS=1>i@Ls4khpwm)ATy$PaD5 zZE#L47AbVxIrb!`T<2G3=tF8+Xq68rJyO-9jC;z-CCur2YiB%ji5m7`0$Q`wx1P^$ zy=#*-O1v5;)Ti!djtg>8Ko*%jk9Mwar7B#XtR4W%#wp85>lI5=gmEdgGwJs-{;j<5 z3tQ5`kbVtXpeGmi&!r+V{CXQ<}w&Phso`=9U5tqD3c ziAv~O58lwCKS&l6@gUd!!)=Db;u$oBO(q`H?{&%go zC_gvzsW*Sk&5YOyeOpq!daP91L)X9Lrg~ShESA|NMzK#jnL#}Ifim$$@MQBVe^@V5 z6j=Q@{pzDE>e90bEb+Ps=+&QfdzjoAb3_7YNy!#PYr^jpM!bP!uKNew0dob0dnW9>tCAjPTD=T@ooh$@z@aliY3AmD>|f>zngM;}_Y z52ZiUMz-@52k~r5ol?c56LaL;2Vl!`y!&fe^b<-VMM!D`>UDfj$eeveB_C+iDoxuVi zxbbVo0NRAIBu|Lo`F0W&>k{+t2A);TEEIsD-;zznbc9_n0pZ5^`4+Ck(o_u;S|IZ@ z>bIc8o9~_{)lX>-^+=<96svIrFnQv*Z+_6-@x$Nt+1-i zrof2mERAPLN%X**0;Y}m^=Qm9K|?|ocuA2!DWtEvWUC4=h!)W}TCYPD;WyQi#4tZ5 zeauZ@2V>yU&q@j#$^k1=)2odDbXF)O%PD9oWzqblG7sH{2<>w!&5dXGj2n%eqG(fpWR$i<^ z_`pxJnt9;SLLM+pOW#_BAqWD{W2JY+6kzN+58nP)`XJc_!hXFyr+$V6s2#7Io{$64 zl2|h%8#P!`J(i!FL<~^6&oo$uaSus z(%16L>qI=ItbTX-xt=X6Ll)F7+?`28F!3Fj-ZeW-4J>F?k+|Ali9$%nxp$aIX}|J`MnOw0^Lg=fw(~8^EOy*R}f`LqPIWzled=-O9Cz&RCQ^i^B&Lxn$|Ycy_7BG|zI#{H)0Adt5_Q z1E*j3{`#is4hkMVNMSJoDMbFfSo;d7ozITR)`efE;u+TO>wL_JIR5&z zK@K1|1^y*XeaQyEB{~qCYD!uPr6(PJCI|M%#%&LWBK?iuJSGySN21=-9T{H?eIdrZ zI-%HP)A$E5p;dUm;T{FVq1BCF6; z<+*`0f5p$aUV-glg`+6b?DrNQGEb%{wgqj72t&82@sTEfFs}gNw{p>J+i{|>T3q9e z3n=lcfG}Q{!{eR}Jrt-?_Xx{PsanZ#e`SvRowFdS8BTNaA^M zH|H1sk4^4cQm$c$WeNr8Ws}vA&Xb>F;@hX*yf=S{G@ri4bE9JOD`^0XAzXKw(NgoY zu#KUEvEPx!_B#h)&w&dMJXOQj6vp1!K&5Fcd2x<^vpu4^RJ^W6@cmqHW*R;3$KozfxZSULD} zUpoJv6Itr+pg zbPgiU$&Q})1LYCN0{D&SLwN{#Qn%9ew!5W(0eiU)%C-Ex9a{Y|34|P@v^+6$RlV-L z*NC|gwUKQ#tQ}W&Jr7a7{fYsTr{AG}W}KR!d)Rc7>UgU`q`7A;PYfW`;;mICkXK33 z_@-O;yDt5S1OKy`<;%!30_4nh7f^iBKIL6evOY=T=WNaY~?|8 zmm7s`wLa@H4S2vFp`Bv}alI~~^103gyaldKqUI-_w?@@E{5ZXc4fMMo^0iPgcsg-9 z@1)2pV#g#Mt%%0v_!fD>;$}#}Ac7!0fP6(Fj|N{KuT;`smKqS7F0*z03(7r%dxQe; z)W@!N~X{W1WHhK~aemh@8!hKBBXfgtIm@d?Hzy5Z2S3aF6*1!N1wf@t2Th$=y5;8G$m zYC+6ZH#!becPlPAb8Q3vmxuOgRJ`Q94CxwK5H5^Q-6B|jLpur>KYvAsLsUcTS2IPE z{PXH8CkFLA%!k@3h2^&2zxfe^%k3TPdB<{Lt|3F$qibX_SZ?ypCX1|1bfLp+nyo3? z>_U$iL<_AI#MPtR8#sGn8*iD^(MaT*9#V`FP+ge-q8DETGyx#R+pJxF1?DDt}bMokH2TEJ1&scad5QBchvIs61nup!N#=Y ztp|VwiQa)qth|RUoL49nguS;R+3xDM|J_L%Z&ieF-5;nlxGvorWCE-1L$2V684S>x zB=f`+_%q&ni-u87PwzY7YkMT()`V97X zkx5L}`;l>nMyv0r#i6GiLOu7$L?NzpQUVWN6Q$7JcvV<##i78Rckay%gU5SXKpt~2 z3LIPKuYr7wIVAp@ON!K7ucNh+Lcy0cx1{xkKWpt+?dL#KPz;scJHoza__Wd1=>NsR z9sxF`lxfG;lE@bde=Xt>{L~z`niJ>Mgm~mMgnDh)l{)r6d}a>3K|RKz;?8Om@k5Bc z-zc8M_gn_B$$(4La5F6=d&*_S$25A?1)E>i=k#B~Oxm{KL&P)CAJ=L+MRj;*hc5P4 z%?I1BZEWx?X4PK6o=TT>{yuXchIQw^^>Yd^SZ3$xjJKBCx)vUnEd}26){SgxRn_p2G{na7ONss51ISV2FmJ@J*)lcx3Y@Y zV639~cQi76L(&WVsUG~E?*_0yC(InGO%0$6RyHRrro3r9wbNJWfM#wyQ~SNIRElLUZ|Jx(jbn z!Szj!nl&8~ZYad?h9C2!OHUYZH{M+t?JLY=u)%2)vpbBU7+b0+LL$Kv8hCe6vW!hW ze>}<}q^04k4Ws9F=htHDD>)+gEvE0ZxXzK>Mo-w?#55rDv&r@{8J%#bQ4aG-iAo4J z2PEOeI0sA8-nz*rQ(`3uJnn5^h>mg7$qo7TjRX?TyCVMXGGc8MV9(mKcda4tGh4^X z=qM=yi~3^%5!kRlM8&_h4sj~#dsiD$ytQ+@LqqsraR5u;Y<)wzfEj- z-J(%$Opi#sUDEazu-pJsapq=zG{SNQ)c;w&5n4*k5Bntp^hmJsX9d9vj5h^Q=O)N7 z3>bQPY0Cv`{S-o0lX))t6E8lX zfCgW+4ZxSD4Se=Vpd%QPDby12Opv~#Yu%SIUFJK(MC&m}-_tWw_L(U(iNl%c-plmAHXHkZS$=L0??e-J7aY zyFLMwZ*HUg(ct4HO=1GB+f@ruXgf>gJ*5U}00~v8V380G;MdgPYW*X|#={(YDcb)K z0w*k(JFjoxJ5{)U8uF$2Qy@+lMuOZ-xCU4B!N%sD4_oZO`un~z5T}I$?4qXW__I6Y zi9YW*qTig1SaHH@)u4v7iYk`PRL_D<<3H+xE{S~6gm43!6GZtj$LQKXs0_=w4e%yWg;O_1|sO zY-6wY7L9kRT?lcYUE(->7-LrS%{SF@1n~K)$S3iwmK>h!CaZV%o;^!lEcI>1Ai0a! zh3M0Yab-bq6oQ=+SJYsdw7k*~Q7gnLl&7ISqz|!{AUf7E`!z= zC+q5QK3M(CwX2|Q8(=$niJGSAJmGrqjR*VSS~EkyFJNjf)oAH@(5B!g;Rl(fI#AZ!!;nW*1M{jDJgzcEM->$YJ?+7Ks(_E(#kD)VwEmgb)uve0Iq`!E*fcmG zT%hXZUmrBNRGA+eW&I>_|Lv~-^ZLNusx}#J0=7KIW9-UoyE79xxB{@Pfs6|lQ0%{2 zN@ZP;;#p;;>+Oi{Zw+XC^<5s`+B@Mx-1Nmusaq)b?!ypdS~<{kh-_FyF0w zK@>4uzQSfNm2FFB2BZ687&N`BNq~gPTVMgBvhL1W*LXAKE ziO3#~;ra-2IlMZrb0kyveIBTvx zr@y?ka~OqgEj)Mklk)mKd@H?W%tTQ{^vC%hr&oySe)Eu@bd4R})DwMMCHCj22(T@@ z8Y#Ecm3b+1?N{4Cvs-zS<3rHH)nn1@MhX?s_lWmHRk=7}QP3bjb$@wW$)P9Ge$vOG zz>bor0K&G3b^zUG z)Uwh?PI(Trf?7=>L>2i*tbnAwb3Sl!UEQ|mT9NGQ>^V+VH0V1;JRij1L5zezXfj}< z0L{f1&1U~d8x)op2$BBgmK2SVd|UD1>J=fAtK)uNC6KJ3Yxr$;xRhB1X;R-;R&bcf z#*JxuX7}3Nzbxuq-bZ<@&Rzu!l^Bsgmpj@pgnpq065ty1Nl&pl+<BODCIU^|B|p3ceXokEx=)u9aM<_ z6XaY}zKy~z+V!ofNSo!lC0c+H6^RKBiQ7UehTRSf_h^17ul?m%Z9b4?dj+@ z)Vu_NBooSW1b&?5z(eiLJ*o66=P^C027Vh7WYduMzb3YGmjV>{-;ga_O9rr;UL;6* zRa_18_0g6ufDu`9<^2f zJB)aTk7uqRW7-SgjHaA)0xy1%mln^Yhl*v_C{8de*qs$8Ml=F93ol$!v?MwmQPuw- z!5eCgoX}u|92rpj{vW8(8$5t*d1O&ns<%ANsF6J5_IEng0X-SQdk-Bte8#FEgr@@6 zP3ft7`bi+eH-8XIDu{C6y{SpXUaFdxM#~RQe%%``dkA&J7??nCqNV3*fUV z3B57h*QYl;iY6ApCkvT%S#y&zsYa5g=vjhN9w}dkHJe4jhReTN$1!_4E+^{Gpx+K? zs>K0ptV10Ip}5%RU4pSIOSdQ1&M4Cb#Wf1u%Mofd(KxHDHiT&Z1?2Mx^l*fgY0u#CI;=0Hzx@W1W6o+8?s>%a{|Rdg=~y7XZ4hbbwZ5A|CB*h{oK zn3e`6lP6t6VR=|S#0a%JrFnJ?tF#3;O{1}5BbHV~jNp39GZ6&QnWMJ?S={rP59pAz zf9Yi-z++z16Xe*r6JPUeR<{ZO`W`9NSlb2ZH^ubr>$CDxg@F*f0z_GE(!q7MRuG&! zu8PL4rMccd&$#Ge!Sf4z7D=N3a;VkUQJ@03cjRF5jBD6Qel!3RCHu1X&Y@-RTPDN| z5Mok{O?rt)w++yh{3hcxGeGYn5!V_CrDZ5Zf=vP`-vp3 zNtfwLf7VP1x(TKe@33+u>2K%QBFL!*x<*p??&_Rv&H@?Wfv`8JlAF;}kX~ZO*VuU! z7z!$re;MJ*Q7-VF|IT)KXk+XmcyOwJr7To6nTBGEzK2( zhTb;kl1SjlBfpxzjKPDwjR>Ti(kB9kD2;^KNBFspAC#V(NJ=Z3U2oKNZSe56nEZo5 zVB2_ui(>v>h$Me#(;(?B5!Dkqluf+A?!C)Qd)o2OZHSP;O8@&C2ALN(lw;`GdRQq{xIuAR+0Bac zZh2%)tCS`gOmXa`G+X~KZyO^&YI|+qr63i2k$B?i)7Wr#aw8t_hX+uzW=*2-oqRJW zJ=fJ!a=6E-`%dN~2p;$`t)0yXuR82dfQmXLfym%Xww?jRupiwirqlwci>m<9tFmr3Z_wCC4(Bm<~2TE9Z9@QJOp*Nx_JIcOh;x=FSweB0SBZR z!@4_Lb0h`i#XTv2^UgauLR`oG#aJ((%S286=)=t2`}c3rhtBEr8!3FAQ9@PG;Rwc8 zTcl#|@~uz+lIRv~t^TV);yLwm_v!-Qx~f#M>Y9ZN#Z`JeAz_QeQ)&GDXJpKS>VNS3 zUYe*s0_jq3ObcIPe}-FQuZQ! z2@v6{NjcRKE#wG*M&Pf4-r#q!tSP?}NfKmAJPA+mKaB_%6g@HfUj$cdbQR1&fW zKs~MqxbVy8(HB5X|6bS!qp>o|QFG;oDjlqQaYRGWyqw?6JkkAam#0Rwz_Ob3qnIfY zkQ8^{a!bu@Z90sRg%Q!#fbbJpuO`SNB3@@`q_8jT694Di6ootmu3-Ah zrWHSr0&0j~_zs-vnD{rB$WG*DAbZkIvBQOx`Q=^|C8tIs#tWA7x!efKE)j-%%Xv4P zPn2msjh`ZI1PhyolDW+UiXcAsE-)u|!|%8+Pz5;iLkzCQQ&{u zj|M11;Ct&AXm*N2n}YI0=MT2s4#L@#MNehnJ+iHwvN*Qi&C_9#XMEZQjYAr=(fwSb z7_tH`T5`hN;E<#GAN_Y9ZlEZ^AX>KVVCn2(dX!4hnWLJ)=HLYEqf=XyTDoy|&_oRH zE0FvjEB^~Io|TrjGDrb9xK$pBxE3j0QN8()L81R2=C`%R!^Aj+CvLV0B57tM6pKlg zb)CefXDAS!{BWKbx&*<&oigjcel{1K6?`*3c5Gg`qm_8DeP0I~18QfTcG12XE%`fI z^$Aw{p8CzM6HnjW;^-L(%M0+S#tA7fp1T0?*7Z3#EYeG*#!H8L*W=6vD6O11AgLSA zj0g!0OJ(wLPZAsoA@MA#G3$r@>R(-R3Y3v!p8osk3sLg=(@e4(sxrX;+_O5{c~v}C zjj+b zuUzT8F5FQL5h{lGn1W0U+?Yg}Wqxgj61U`DlggDeDXx=yyoi^MQboL@gNcaJ@Mtpq zS>?KyZ@fVMXFw=_X(Cg=OdoM7{VBYGpA`%GeHhJxIn4f>Uf4b2^UM9bBaFbEt$xZSmW0_KGHfVT6}eaj~hjL+A!xdRl38DRn9uDryb z;Y>^=f0?R5{WsSbxFLtRmASFT)xzCn*|a1+_eGNpz_L$M`-Sy8zxgB{{5to#PMm<{nV{=kU}kex}e1R@x^uCH~HVqSchD3T{N>iErgeGQ+qOCRV<@?= zUTCJsivy*%1Wb1B+7ZF&mQkz#K3U`g3rMwamaG!V`*O#@}G(r+? zRjVx7VH22GGZk4v3a(b?ln`pqGshowT|y$AE}l33fS$C-W#tm#*AKpZLE|F8%AsLs z5ncDF(YlW!3Oj(7-ji=|{I3|%^Kn^q@^F3(6)JQN$d?dIdnWvUO|3htDwurSv7@~* zF9W*U$BbHCn({{z7B?p-Ua}D!ZnA?PWZBv4CGHeB;#rMWbJl@H^N-o|H7L*}^9@Oc z>@zR#9Z(@uJ!|eU++|B1e-q6+x^tKNobCUUor^Lu!2A0(*GBthI`?O5- zhG)$xk+u4Y9q0T_)e=p(y^sZAtoDzi^0&+XI<#MzU8(=FOgD0NBF8S>8xnAH8?7`y zaeMv0L%SRww}GkQoPQ^AJ6fOo5@+Y{b6D*)f!J$ErUg$#|xxhhn4xop@0k|Vxwr$GU* zypYCk=(awcpBMV^r}9VB+i0#scPUVD=~0AcDHvE&lYcYyu*L1756(p4ljB#N&>`8E z=hOBhomSGjbg!j#R|8Cy0T^W%>Y%9?X9Vb=@SU%b7(gmACtf^-DrJ1%-WTj_!V_*z zcC;f0wBIOLY)tV06nvQKapR-u2bR1ixGF&TY5X@FZTFk5oNvLBY_GDK3gEv#+~0ck z{F}^|1j|kdo6-x(LIuJ*@B;($ZLvt>JF}38_~khmiZiJ){X+!RkKK5pa&Nxu6C9qT-+<=lYGKFGjcjpCAv2)o|!xsEc`&nqBMZI@#h%lF+O z`)?S|=IGT}n4MnCUB8W+;DhmyyA=MObE8`*+HepHP0h6R|#eM>3(JhF5vL6;jM2(BZoI9NH>#uLk4jEkFKD^ zkvGjJbPB?~ube&$_M5TSFcf<-BF$TD$`8E1k~%YF7JR_W`bwOYKAKGZ)bl-90T?V#1FN+ZYagTPI59e);%W$@?rd z>8UHmXCTp^xB63wB>zQG=V`yrVWt>Jtm1+1lpFknFlKf(o-ifh_s8_|?TLlNdeY6Z zc?^Lq!j2jj?VxPqM*$}fi+37=0vp<&R5_^Go2_Z>t%1w0QSZLlw>-Su^)BQ(b@DT7 zxCzpKi~X|$wdn$Mmcc(GXA&}`Pww`5kHS98`j>%-bDj|;$nz2V^mD#D6ba(g4&hr- zZ~1oP(+B?tfaGcr7f_|{@BJB-mpBTdRv4YpgbRGdM8yE7-ysmTtbkNYjBGCa9ZiF3 zz>$K0z?#|roeDdMwj;1@Z>5}fjU*X_(J%BXe~LXyL_>jMLf#mN@8 z2@2{aBuN+?&yuf7k!34ee3)~K!obn)&X-;X>4uyIt7SaHp$z1%Hp~bHKWw&icV_EX zpz!iZ4{YgH!aey?|5Vtr11{E#2k$QNDlfQLhUDAWfY}QdZ#;(54v%z7vkoqkMVU$- z%5{Tp#U9?JgK=cvy#hKRt}kmAZ<1boqMg(GPxn(ctJhl|GqG9B!4xr=jz_Ui_ks4n z?-fz0*E#rrjPOX{!tWvjCsHOrYnbP&fn+Kn63*8)X_xENTZ1UE6W16o`l7qzQl|Yz zoRMU=q0aV5t0R)yOgm#vQ8#Fxj;x2vdH3tpyDu9@F$7BSzrTu4m*2?#Ur6n15&DvG zquiJ1`MuBE(PNaJt%GiM9TJI~r9VHFJf>Q{gOlfcSH}j-zB6U11hdje50YC*I3hLX zge5CI@H$KL(A=j0^UY-dO92Eo2v5 zKH-ID$vL`mxfK~>RNm^|r6V-?%^+kvNS0`a5~sKboaqbBld#SO@w&S#dD zfK_ak#YKyDQy@!@U}li&OnwR_zmiIriwoP4@F`+`Zckfc@&rxbA-MG5sJY^2=EsSN zhWXQDA$We!0pzRP9Ss8)IBp-fWsR6Xz;z1mh$P~Fdo1Iz!X97Sk=2!}D!azI#b62hHXR#gs6h<m9IAT1}?i3SYODJ*;1Uyn-kg!8Vy6K4f zZAKz&1`mK2f^%NgWUYP-A%Pd9`tK5Pm=vqRDtW9A=^}hm1{L|Pp-ky9R5bl<#~7F~ z%n8)IY{=}^)YuTPzt$yfEp)$fZBc!DtJBfq4J|}M+NIN8KmOPFG8u!H+Ch6w*V}>? zPlcp|Pm|?fRt4tUK#eoWFz`(Tl3d*QFtGl zTLzc^)ha37>ehM%;KJby9#CAcX1E~;i@&c)&l ze^C?|tIdlf{g4(ng!_6={9zf6X4*)Gh-H45jx6_lCqW5trTb9B>EbP|$l?5;>fd}@ z_P;B73L#8_{oc`=#1m4b^)pT!d7(>okxgWbfG07`BcZEmozT$<5qM@PUy;D1Ee2Or zi1laAuL~5OUArBQ&nIV<5L8CyeE5t(Bc?vS5^7I?({UNI%)FSF-1GT6im=9&t1yb} z4;G-pPn`@Aq+!{aYFx9#+*aRQ0SzeHq{6$d(HbkUm3ER|?e=YkXo94N7U)&X-6FLj z28bEaD~}k~!=zm|1%Ov&tWpCMr`u@vZY*TA5UX;U6pL{aL=E@7(a$hgLn0tEiVS2~ z3(~Jl$oux6uL_@4gILa434oJ(b@hIYM@(aY1ln=>*%>8} z@0_1}EZ~>_X7hsK++9%mxc=j9TN%a#0bnS14>_Tc^n*%k0TR2_U6O7SNL(5ro#h>* zS2nHFuLArFNZ`QQQW<1i&L#NeC4;?(ZkACh+8+EO3oz4$`b}C(wHDr2GJ=Btez3h+ zw=^|urhcT3s<){aWg{!>FWhveA{;j=JRxB<0it&2Jq-2CkiTWww06Ix3P_o~WM@f) z)k@ts?djv~cdJ|MTHQ{?N_vraUb{1KsZbTZIx<$1^eHeY^ENhY<zU|ylMuQ6C0OPW0Dm}IZ4$yT4#M9Ml z6C#&MfJDoWuig`d3gk$b=O={wX)VWg8Hw#8g0-o7Z_Vh0FtCs;)cl3Vh*fy&r7Co zVLx`q5y*jJeuefi8T`N|=)JO&+>{LoyqvnKh9ySUyc`<5L(XTZC;DYq1soSi9hC^K zgVpTu*h@!s6o5Ch39UQTidt5F43)CukL&v!|I$l*J>lmORVG$5SkyW5AeSLHh(eh`#YpTCZB`!{DPbIFphY~uB(X$FNW?+{nWop8}^HLx0A+@+i4vrX6DVeFBJhy-jc zn@T~ksc^}}C7jIrMC^;pdM^?c_G0xrds+EafSN+;1FH_*oPaq4Q1jYd`xTI#(m?@r z%T#~A=@X}sMvP|niBapsyO$>%lILjP?g9`g_LF$9Z)G~bTeh%C3l)?G^?_1Xrggel zC{`i3A(9zv&k%J`yNHrf{Odzie9Q98BL^O5)=)tl_6tepNn8c#{jfo9Fp26_+f{81 zT)jnk+g9xH&E1iK&tMh-=F7uDqt*bvNS}_OjTZXv7T$`72*@r!%KYwm$7VI=#nVM; zwMaQQIENlAf@f-ZP977W!j4|%3mRw&)Bb01Qf&K4^FQ1;&Rnw^z_lvs2iT9`gs3hM z?@zzlTF14>TD^_}fd(AfpNGWC{&smjJ}4XD&RzcAL;XJXI5;lrL4VNnvN}oDWVPX} zS`5r@<~O+ZOplDW80{or>pmiE5em94 z2w4Q~7hO$nSAR@BR_v+XTcYy{;L zXhGO01i&gV5R+5<^G*l@G`6hHrCJN{G@anLdE-8J%M}800KHq(ta=0CyV`0qgb0+^ z=BM!cph4vemsgkBpqF39)&4t;tr@sSUCJA(l{onQ;EpI70*wIdFq6VT#008SeF!e` z%)=l;DclH@*Lw)TrN>Jev-dE8re!*yee8KdWO5Oznc3kr^NK}e;~U53MWS3|f&PSw zaXM_KECO*-QAFX34rPG5QIiOmj6V)PTP-F{r8sg0c;*N1wJuyottpJ~;5I>9YTy1v zu8u7xM&~|5m5*;$cQC(ePrNwDJb~y{bH(c=RYjAF)S$O2UfhHnbn}*3L0Gm**akiL z`OU5K3nXPi`P3c{M#=v(k^6B4xX1+(5hkEz>qQ^}Y>bLMQh#|-{{{fHVw&pymbHcx z3Igs$ZYese2B0{hD4d4h1p6wYkauzNZSxO1V*C@O-;Dz|NtJupX{4=6{@beJ3)MfO zI#f!dJa|MsdvJaBbx^%+&*h(i%3WPdvLz5`-q!{AmR(P@xZCiX=4)*?dT~_o(O18D z+RM7>=X8B%0%Hztq_Bp^Cpp4r@Y_&BB=lJ#fdX)m>Rm>;4+oi-Eeoc|-Fo$UQ}33C z%>g(1W=FCpYqN0TxmBUAW?Zc)Y4u|v_n=_`6qXNcq~m$)An^EyUyVwiX6wg7$XBu1 zOx+XSU=t#&-1?%(7iwH*@9yOblBnGgO>&bdQ^o+@nMdnH%=bP(+ZF)3Qc3!9#cJra?l0NLT? zDnJa47?FVN3!>izwpSjiO44QmL@}`=MLSJA`ffi^ARy@vGZ-t(b)5f0i--nuvdy>0 z>i>!%2_eALI-`^2`GG?N@zD?3f4l6z%ByKaMhab7$ZzJhn3F|OAK_RB>_FWfYw&v; zFXng0YC%*M4)gfQ6_CfPXMhvi*#ff|*qP}}7hxs9}ivPIL}Lh?2F zRFGb|X(d%P8@zOn6%rSb@Y9jMdlnhzyKd)ZtSp&M^S-fYS{g=EL79ILmHw;Q*ounqik-S@5}ubkIlB^4#}4J? z0^hD`>XU2pNm6&6{W%kr7S)-R4ww27&P#qZneQIn11HSQ7g0em6GMTAYKuFK%u|Q! z7;$&%um<06vf4!E59vUP)fJHu+08!FotK9?-0(WAYxUyd2T>F-<{1{Mrv$%N8x?1` z0bZxQFjgPJeS+mI&CoyxnX)Zc8$ z0vs`J-e78%e;UQGF0oeRuqoGyeywcFUgXvK4R#cCfBcS> zyEe6$K;>>M){*T0bne#-{D)&yjsLN{^F=X-&oOxPwt~*%rmZd7m)fJdU79|!DX@P0 zuWvKYt|dG6P<#rXcx7nSN1dR~Qs7fcCG}nI8MBpmwKO+1;B~Hr6;-ngS lKhF=%hf}*UWkS!HaKL_-Vs24=KNcW=8mc-fCAV;4{{y@ODy{$k literal 0 HcmV?d00001 diff --git a/plugins/node_modules/ace/index.html b/plugins/node_modules/ace/index.html new file mode 100644 index 00000000..e2440eb1 --- /dev/null +++ b/plugins/node_modules/ace/index.html @@ -0,0 +1,1345 @@ + + + + + Ace - The High Performance Code Editor for the Web + + + + + + + + + + + + + Fork me on GitHub + +
    +
    +
    +
    +

    The high performance code editor for the web.

    + +
    +
    + +
    +
    +

    Built for Code

    +

    Ace is an embeddable code editor written in JavaScript. + It matches the features and performance of native + editors such as Sublime, Vim and TextMate. It can be easily embedded + in any web page and JavaScript application. Ace is maintained as the + primary editor for Cloud9 IDE + and is the successor of the Mozilla Skywriter (Bespin) project. +

    + +
    /**
    + * In fact, you're looking at ACE right now. Go ahead and play with it!
    + *
    + * We are currently showing off the JavaScript mode. ACE has support for 45
    + * language modes and 24 color themes!
    + */
    +
    +function add(x, y) {
    +    var resultString = "Hello, ACE! The result of your math is: ";
    +    var result = x + y;
    +    return resultString + result;
    +}
    +
    +var addResult = add(3, 2);
    +console.log(addResult);
    +
    + +

    Looking for a more full-featured demo? Check out the + kitchen sink. +

    +

    Features

    +
      +
    • Syntax highlighting for over 110 languages (TextMate/Sublime Text.tmlanguage files can be imported)
    • +
    • Over 20 themes (TextMate/Sublime Text .tmtheme files can be imported)
    • +
    • Automatic indent and outdent
    • +
    • An optional command line
    • +
    • Handles huge documents (four million lines seems to be the limit!)
    • +
    • Fully customizable key bindings including vim and Emacs modes
    • +
    • Search and replace with regular expressions
    • +
    • Highlight matching parentheses
    • +
    • Toggle between soft tabs and real tabs
    • +
    • Displays hidden characters
    • +
    • Drag and drop text using the mouse
    • +
    • Line wrapping
    • +
    • Code folding
    • +
    • Multiple cursors and selections
    • +
    • Live syntax checker (currently JavaScript/CoffeeScript/CSS/XQuery)
    • +
    • Cut, copy, and paste functionality
    • +
    +

    Get the Open-Source Code

    +

    Ace is a community project. We actively encourage and support + contributions! The Ace source code is hosted on GitHub + and released under the BSD license ‐ + very simple and friendly to all kinds of projects, whether open-source + or not. Take charge of your editor and add your favorite language + highlighting and keybindings! +

    +
    git clone git://github.com/ajaxorg/ace.git
    +

    History

    +

    Skywriter/Bespin and Ace started + as two independent projects both aiming to build a no compromise + code editor component for the web. Bespin started as part of + Mozilla Labs and was based on the <canvas> tag, while Ace is + the editor component of Cloud9 IDE + and uses the DOM for rendering. After the release of Ace at + JSConf.eu 2010 + in Berlin the Skywriter team decided to merge Ace with a simplified + version of Skywriter's plugin system and some of Skywriter's + extensibility points. All these changes have been merged back to Ace + now, which supersedes Skywriter. Both Cloud9 IDE + and Mozilla are actively developing and + maintaining Ace. +

    +

    Related Projects

    + +
    +
    +

    Embedding Ace in Your Site

    +

    Ace can be easily embedded into a web page. Get prebuilt version of ace from + ace-builds repository and use the code below:

    +
    <!DOCTYPE html>
    +<html lang="en">
    +<head>
    +<title>ACE in Action</title>
    +<style type="text/css" media="screen">
    +    #editor { 
    +        position: absolute;
    +        top: 0;
    +        right: 0;
    +        bottom: 0;
    +        left: 0;
    +    }
    +</style>
    +</head>
    +<body>
    +
    +<div id="editor">function foo(items) {
    +    var x = "All this is syntax highlighted";
    +    return x;
    +}</div>
    +    
    +<script src="/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
    +<script>
    +    var editor = ace.edit("editor");
    +    editor.setTheme("ace/theme/monokai");
    +    editor.getSession().setMode("ace/mode/javascript");
    +</script>
    +</body>
    +</html>
    +

    Now check out the How-To Guide for instructions on + common operations, such as setting a different language mode or + getting the contents from the editor. +

    +

    Loading Ace from a Local URL

    +

    If you want to clone and host Ace locally you can + use one of the pre-packaged versions. Just copy + one of src* subdirectories somewhere into your project, or use RequireJS to load the + contents of lib/ace folder as ace: +

    +

    The packaged version can also be loaded from CDN's such as jsDelivr or cdnjs. +

    +
    +
    +

    Working with Ace

    +

    In all of these examples Ace has been invoked + as shown in the embedding guide. +

    +

    Setting Themes

    +

    Themes are loaded on demand; all you have to do is pass the string name:

    +
    editor.setTheme("ace/theme/twilight");
    +

    > See all themes

    +

    Setting the Programming Language Mode

    +

    By default, the editor supports plain text mode. All other language modes are available as separate modules, loaded on demand like this:

    +
    editor.getSession().setMode("ace/mode/javascript");
    + +

    Common Operations

    +

    Set and get content:

    +
    editor.setValue("the new text here"); // or session.setValue
    +editor.getValue(); // or session.getValue
    +

    Get selected text:

    +
    editor.session.getTextRange(editor.getSelectionRange());
    +

    Insert at cursor:

    +
    editor.insert("Something cool");
    +

    Get the current cursor line and column:

    +
    editor.selection.getCursor();
    +

    Go to a line:

    +
    editor.gotoLine(lineNumber);
    +

    Get total number of lines:

    +
    editor.session.getLength();
    +

    Set the default tab size:

    +
    editor.getSession().setTabSize(4);
    +

    Use soft tabs:

    +
    editor.getSession().setUseSoftTabs(true);
    +

    Set the font size:

    +
    document.getElementById('editor').style.fontSize='12px';
    +

    Toggle word wrapping:

    +
    editor.getSession().setUseWrapMode(true);
    +

    Set line highlighting:

    +
    editor.setHighlightActiveLine(false);
    +

    Set the print margin visibility:

    +
    editor.setShowPrintMargin(false);
    +

    Set the editor to read-only:

    +
    editor.setReadOnly(true);  // false to make it editable
    +

    Triggering Resizes

    +

    Ace only resizes itself on window events. If you resize the editor div in another manner, and need Ace to resize, use the following:

    +
    editor.resize()
    +

    Searching

    +
    editor.find('needle',{
    +    backwards: false,
    +    wrap: false,
    +    caseSensitive: false,
    +    wholeWord: false,
    +    regExp: false
    +});
    +editor.findNext();
    +editor.findPrevious();
    +

    The following options are available to you for your search parameters:

    +
      +
    • + needle: The string or regular expression you're looking for +
    • +
    • + backwards: Whether to search backwards from where cursor currently is. Defaults to false. +
    • +
    • + wrap: Whether to wrap the search back to the beginning when it hits the end. Defaults to false. +
    • +
    • + caseSensitive: Whether the search ought to be case-sensitive. Defaults to false. +
    • +
    • + wholeWord: Whether the search matches only on whole words. Defaults to false. +
    • +
    • + range: The Range to search within. Set this to null for the whole document +
    • +
    • + regExp: Whether the search is a regular expression or not. Defaults to false. +
    • +
    • + start: The starting Range or cursor position to begin the search +
    • +
    • + skipCurrent: Whether or not to include the current line in the search. Default to false. +
    • +
    +

    Here's how you can perform a replace:

    +
    editor.find('foo');
    +editor.replace('bar');
    +

    And here's a replace all:

    +
    editor.replaceAll('bar');
    +

    (editor.replaceAll uses the needle set earlier by editor.find('needle', ...)

    +

    Listening to Events

    +

    To listen for an onchange:

    +
    editor.getSession().on('change', function(e) {
    +    // e.type, etc
    +});
    +

    To listen for an selection change:

    +
    editor.getSession().selection.on('changeSelection', function(e) {
    +});
    +

    To listen for a cursor change:

    +
    editor.getSession().selection.on('changeCursor', function(e) {
    +});
    +

    Adding New Commands and Keybindings

    +

    To assign key bindings to a custom function:

    +
    editor.commands.addCommand({
    +    name: 'myCommand',
    +    bindKey: {win: 'Ctrl-M',  mac: 'Command-M'},
    +    exec: function(editor) {
    +        //...
    +    },
    +    readOnly: true // false if this command should not apply in readOnly mode
    +});
    +
    +
    +

    Creating a Syntax Highlighter for Ace

    +

    Creating a new syntax highlighter for Ace is extremly simple. You'll need to define two pieces of code: a new mode, and a new set of highlighting rules.

    +

    Where to Start

    +

    We recommend using the the Ace Mode Creator when defining your highlighter. This allows you to inspect your code's tokens, as well as providing a live preview of the syntax highlighter in action.

    +

    Defining a Mode

    +

    Every language needs a mode. A mode contains the paths to a language's syntax highlighting rules, indentation rules, and code folding rules. Without defining a mode, Ace won't know anything about the finer aspects of your language.

    +

    Here is the starter template we'll use to create a new mode:

    +
    define(function(require, exports, module) {
    +"use strict";
    +
    +var oop = require("../lib/oop");
    +// defines the parent mode
    +var TextMode = require("./text").Mode;
    +var Tokenizer = require("../tokenizer").Tokenizer;
    +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
    +
    +// defines the language specific highlighters and folding rules
    +var MyNewHighlightRules = require("./mynew_highlight_rules").MyNewHighlightRules;
    +var MyNewFoldMode = require("./folding/mynew").MyNewFoldMode;
    +
    +var Mode = function() {
    +    // set everything up
    +    this.HighlightRules = MyNewHighlightRules;
    +    this.$outdent = new MatchingBraceOutdent();
    +    this.foldingRules = new MyNewFoldMode();
    +};
    +oop.inherits(Mode, TextMode);
    +
    +(function() {
    +    // configure comment start/end characters
    +    this.lineCommentStart = "//";
    +    this.blockComment = {start: "/*", end: "*/"};
    +    
    +    // special logic for indent/outdent. 
    +    // By default ace keeps indentation of previous line
    +    this.getNextLineIndent = function(state, line, tab) {
    +        var indent = this.$getIndent(line);
    +        return indent;
    +    };
    +
    +    this.checkOutdent = function(state, line, input) {
    +        return this.$outdent.checkOutdent(line, input);
    +    };
    +
    +    this.autoOutdent = function(state, doc, row) {
    +        this.$outdent.autoOutdent(doc, row);
    +    };
    +    
    +    // create worker for live syntax checking
    +    this.createWorker = function(session) {
    +        var worker = new WorkerClient(["ace"], "ace/mode/mynew_worker", "NewWorker");
    +        worker.attachToDocument(session.getDocument());
    +        worker.on("errors", function(e) {
    +            session.setAnnotations(e.data);
    +        });
    +        return worker;
    +    };
    +    
    +}).call(Mode.prototype);
    +
    +exports.Mode = Mode;
    +});
    +

    What's going on here? First, you're defining the path to TextMode (more on this later). Then you're pointing the mode to your definitions for the highlighting rules, as well as your rules for code folding. Finally, you're setting everything up to find those rules, and exporting the Mode so that it can be consumed. That's it!

    +

    Regarding TextMode, you'll notice that it's only being used once: oop.inherits(Mode, TextMode);. If your new language depends on the rules of another language, you can choose to inherit the same rules, while expanding on it with your language's own requirements. For example, PHP inherits from HTML, since it can be embedded directly inside .html pages. You can either inherit from TextMode, or any other existing mode, if it already relates to your language.

    +

    All Ace modes can be found in the lib/ace/mode folder.

    +

    Defining Syntax Highlighting Rules

    +

    The Ace highlighter can be considered to be a state machine. Regular expressions define the tokens for the current state, as well as the transitions into another state. Let's define mynew_highlight_rules.js, which our mode above uses.

    +

    All syntax highlighters start off looking something like this:

    +
    define(function(require, exports, module) {
    +"use strict";
    +
    +var oop = require("../lib/oop");
    +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
    +
    +var MyNewHighlightRules = function() {
    +
    +    // regexp must not have capturing parentheses. Use (?:) instead.
    +    // regexps are ordered -> the first match is used
    +   this.$rules = {
    +        "start" : [
    +            {
    +                token: <token>, // String, Array, or Function: the CSS token to apply
    +                regex: <regex>, // String or RegExp: the regexp to match
    +                next:  <next>   // [Optional] String: next state to enter
    +            }
    +        ]
    +    };
    +};
    +
    +oop.inherits(MyNewHighlightRules, TextHighlightRules);
    +
    +exports.MyNewHighlightRules = MyNewHighlightRules;
    +
    +});
    +

    The token state machine operates on whatever is defined in this.$rules. The highlighter always begins at the start state, and progresses down the list, looking for a matching regex. When one is found, the resulting text is wrapped within a <span class="ace_<token>"> tag, where <token> is defined as the token property. Note that all tokens are preceded by the ace_ prefix when they're rendered on the page.

    +

    Once again, we're inheriting from TextHighlightRules here. We could choose to make this any other language set we want, if our new language requires previously defined syntaxes. For more information on extending languages, see "extending Highlighters" below.

    +

    Defining Tokens

    +

    The Ace highlighting system is heavily inspired by the TextMate language grammar. Most tokens will follow the conventions of TextMate when naming grammars. A thorough (albeit incomplete) list of tokens can be found on the Ace Wiki.

    +

    For the complete list of tokens, see tool/tmtheme.js. It is possible to add new token names, but the scope of that knowledge is outside of this document.

    +

    Multiple tokens can be applied to the same text by adding dots in the token, e.g. token: support.function wraps the text in a <span class="ace_support ace_function"> tag.

    +

    Defining Regular Expressions

    +

    Regular expressions can either be a RegExp or String definition

    +

    If you're using a regular expression, remember to start and end the line with the / character, like this:

    +
    {
    +    token : "constant.language.escape",
    +    regex : /\$[\w\d]+/
    +}
    +

    A caveat of using stringed regular expressions is that any \ character must be escaped. That means that even an innocuous regular expression like this:

    +
    regex: "function\s*\(\w+\)"
    +

    Must actually be written like this:

    +
    regex: "function\\s*\(\\w+\)"
    +

    Groupings

    +

    You can also include flat regexps--(var)--or have matching groups--((a+)(b+)). There is a strict requirement whereby matching groups must cover the entire matched string; thus, (hel)lo is invalid. If you want to create a non-matching group, simply start the group with the ?: predicate; thus, (hel)(?:lo) is okay. You can, of course, create longer non-matching groups. For example:

    +
    {
    +    token : "constant.language.boolean",
    +    regex : /(?:true|false)\b/
    +},
    +

    For flat regular expression matches, token can be a String, or a Function that takes a single argument (the match) and returns a string token. For example, using a function might look like this:

    +
    var colors = lang.arrayToMap(
    +    ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" +
    +    "purple|red|silver|teal|white|yellow").split("|")
    +);
    +
    +var fonts = lang.arrayToMap(
    +    ("arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|" +
    +    "symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|" +
    +    "serif|monospace").split("|")
    +);
    +
    +...
    +
    +{
    +    token: function(value) {
    +        if (colors.hasOwnProperty(value.toLowerCase())) {
    +            return "support.constant.color";
    +        }
    +        else if (fonts.hasOwnProperty(value.toLowerCase())) {
    +            return "support.constant.fonts";
    +        }
    +        else {
    +            return "text";
    +        }
    +    },
    +    regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
    +}
    +

    If token is a function,it should take the same number of arguments as there are groups, and return an array of tokens.

    +

    For grouped regular expressions, token can be a String, in which case all matched groups are given that same token, like this:

    +
    {
    +    token: "identifier",
    +    regex: "(\\w+\\s*:)(\\w*)"
    +}
    +

    More commonly, though, token is an Array (of the same length as the number of groups), whereby matches are given the token of the same alignment as in the match. For a complicated regular expression, like defining a function, that might look something like this:

    +
    {
    +    token : ["storage.type", "text", "entity.name.function"],
    +    regex : "(function)(\\s+)([a-zA-Z_][a-zA-Z0-9_]*\\b)"
    +}
    +

    Defining States

    +

    The syntax highlighting state machine stays in the start state, until you define a next state for it to advance to. At that point, the tokenizer stays in that new state, until it advances to another state. Afterwards, you should return to the original start state.

    +

    Here's an example:

    +
    this.$rules = {
    +    "start" : [ {
    +        token : "text",
    +        regex : "<\\!\\[CDATA\\[",
    +        next : "cdata"
    +    },
    +
    +    "cdata" : [ {
    +        token : "text",
    +        regex : "\\]\\]>",
    +        next : "start"
    +    }, {
    +        defaultToken : "text"
    +    } ]
    +};
    +

    In this extremly short sample, we're defining some highlighting rules for when Ace detectes a <![CDATA tag. When one is encountered, the tokenizer moves from start into the cdata state. It remains there, applying the text token to any string it encounters. Finally, when it hits a closing ]> symbol, it returns to the start state and continues to tokenize anything else.

    +

    Using the TMLanguage Tool

    +

    There is a tool that + will take an existing tmlanguage file and do its best to convert it into Javascript for Ace to consume. Here's what you need to get started: +

    +
      +
    1. In the Ace repository, navigate to the tools folder.
    2. +
    3. Run npm install to install required dependencies.
    4. +
    5. Run node tmlanguage.js <path_to_tmlanguage_file>; for example, node <path_to_tmlanguage_file> /Users/Elrond/elven.tmLanguage
    6. +
    +

    Two files are created and placed in lib/ace/mode: one for the language mode, and one for the set of highlight rules. You will still need to add the code into ace/ext/modelist.js, and add a sample file for testing.

    +

    A Note on Accuracy

    +

    Your .tmlanguage file will then be converted to the best of the converter’s ability. It is an understatement to say that the tool is imperfect. Probably, language mode creation will never be able to be fully autogenerated. There's a list of non-determinable items; for example:

    +
      +
    • The use of regular expression lookbehinds
      This is a concept that JavaScript simply does not have and needs to be faked
    • +
    • Deciding which state to transition to
      While the tool does create new states correctly, it labels them with generic terms like state_2, state_10, e.t.c.
    • +
    • Extending modes
      Many modes say something like include source.c, to mean, “add all the rules in C highlighting.†That syntax does not make sense to Ace or this tool (though of course you can extending existing highlighters).
    • +
    • Rule preference order
    • +
    • Gathering keywords
      Most likely, you’ll need to take keywords from your language file and run them through createKeywordMapper()
    • +
    +

    However, the tool is an excellent way to get a quick start, if you already possess a tmlanguage file for you language.

    +

    Extending Highlighters

    +

    Suppose you're working on a LuaPage, PHP embedded in HTML, or a Django template. You'll need to create a syntax highlighter that takes all the rules from the original language (Lua, PHP, or Python) and extends it with some additional identifiers (<?lua, <?php, {%, for example). Ace allows you to easily extend a highlighter using a few helper functions.

    +

    Getting Existing Rules

    +

    To get the existing syntax highlighting rules for a particular language, use the getRules() function. For example:

    +
    var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
    +
    +this.$rules = new HtmlHighlightRules().getRules();
    +
    +/*
    +    this.$rules == Same this.$rules as HTML highlighting
    +*/
    +

    Extending a Highlighter

    +

    The addRules method does one thing, and it does one thing well: it adds new rules to an existing rule set, and prefixes any state with a given tag. For example, let's say you've got two sets of rules, defined like this:

    +
    this.$rules = {
    +    "start": [ /* ... */ ]
    +};
    +
    +var newRules = {
    +    "start": [ /* ... */ ]
    +}
    +

    If you want to incorporate newRules into this.$rules, you'd do something like this:

    +
    this.addRules(newRules, "new-");
    +
    +/*
    +    this.$rules = {
    +        "start": [ ... ],
    +        "new-start": [ ... ]
    +    };
    +*/
    +

    Extending Two Highlighters

    +

    The last function available to you combines both of these concepts, and it's called embedRules. It takes three parameters:

    +
      +
    1. An existing rule set to embed with
    2. +
    3. A prefix to apply for each state in the existing rule set
    4. +
    5. A set of new states to add
    6. +
    +

    Like addRules, embedRules adds on to the existing this.$rules object.

    +

    To explain this visually, let's take a look at the syntax highlighter for Lua pages, which combines all of these concepts:

    +
    var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
    +var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules;
    +
    +var LuaPageHighlightRules = function() {
    +    this.$rules = new HtmlHighlightRules().getRules();
    +
    +    for (var i in this.$rules) {
    +        this.$rules[i].unshift({
    +            token: "keyword",
    +            regex: "<\\%\\=?",
    +            next: "lua-start"
    +        }, {
    +            token: "keyword",
    +            regex: "<\\?lua\\=?",
    +            next: "lua-start"
    +        });
    +    }
    +    this.embedRules(LuaHighlightRules, "lua-", [
    +        {
    +            token: "keyword",
    +            regex: "\\%>",
    +            next: "start"
    +        },
    +        {
    +            token: "keyword",
    +            regex: "\\?>",
    +            next: "start"
    +        }
    +    ]);
    +};
    +

    Here, this.$rules starts off as a set of HTML highlighting rules. To this set, we add two new checks for <%= and <?lua=. We also delegate that if one of these rules are matched, we should move onto the lua-start state. Next, embedRules takes the already existing set of LuaHighlightRules and applies the lua- prefix to each state there. Finally, it adds two new checks for %> and ?>, allowing the state machine to return to start.

    +

    Code Folding

    +

    Adding new folding rules to your mode can be a little tricky. First, insert the following lines of code into your mode definition:

    +
    var MyFoldMode = require("./folding/newrules").FoldMode;
    +
    +...
    +var MyMode = function() {
    +
    +    ...
    +
    +    this.foldingRules = new MyFoldMode();
    +};
    +

    You'll be defining your code folding rules into the lib/ace/mode/folding folder. Here's a template that you can use to get started:

    +
    define(function(require, exports, module) {
    +"use strict";
    +
    +var oop = require("../../lib/oop");
    +var Range = require("../../range").Range;
    +var BaseFoldMode = require("./fold_mode").FoldMode;
    +
    +var FoldMode = exports.FoldMode = function() {};
    +oop.inherits(FoldMode, BaseFoldMode);
    +
    +(function() {
    +
    +    // regular expressions that identify starting and stopping points
    +    this.foldingStartMarker; 
    +    this.foldingStopMarker;
    +
    +    this.getFoldWidgetRange = function(session, foldStyle, row) {
    +        var line = session.getLine(row);
    +
    +        // test each line, and return a range of segments to collapse
    +    };
    +
    +}).call(FoldMode.prototype);
    +
    +});
    +

    Just like with TextMode for syntax highlighting, BaseFoldMode contains the starting point for code folding logic. foldingStartMarker defines your opening folding point, while foldingStopMarker defines the stopping point. For example, for a C-style folding system, these values might look like this:

    +
    this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
    +this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
    +

    These regular expressions identify various symbols--{, [, //--to pay attention to. getFoldWidgetRange matches on these regular expressions, and when found, returns the range of relevant folding points. For more information on the Range object, see the Ace API documentation.

    +

    Again, for a C-style folding mechanism, a range to return for the starting fold might look like this:

    +
    var line = session.getLine(row);
    +var match = line.match(this.foldingStartMarker);
    +if (match) {
    +    var i = match.index;
    +
    +    if (match[1])
    +        return this.openingBracketBlock(session, match[1], row, i);
    +
    +    var range = session.getCommentFoldRange(row, i + match[0].length);
    +    range.end.column -= 2;
    +    return range;
    +}
    +

    Let's say we stumble across the code block hello_world() {. Our range object here becomes:

    +
    {
    +  startRow: 0,
    +  endRow: 0,
    +  startColumn: 0,
    +  endColumn: 13
    +}
    +

    Testing Your Highlighter

    +

    The best way to test your tokenizer is to see it live, right? To do that, you'll want to modify the live Ace demo to preview your changes. You can find this file in the root Ace directory with the name kitchen-sink.html.

    +
      +
    1. + add an entry to supportedModes in ace/ext/modelist.js +
    2. +
    3. +

      add a sample file to demo/kitchen-sink/docs/ with same name as the mode file +

    4. +
    +

    Once you set this up, you should be able to witness a live demonstration of your new highlighter.

    +

    Adding Automated Tests

    +

    Adding automated tests for a highlighter is trivial so you are not required to do it, but it can help during development.

    +

    In lib/ace/mode/_test create a file named

    text_<modeName>.txt
    with some example code. (You can skip this if the document you have added in demo/docs both looks good and covers various edge cases in your language syntax). +

    +

    Run node highlight_rules_test.js -gen to preserve current output of your tokenizer in tokens_<modeName>.json +

    +

    After this running highlight_rules_test.js optionalLanguageName will compare output of your tokenizer with the correct output you've created. +

    +

    Any files ending with the _test.js suffix are automatically run by Ace's Travis CI server.

    +
    +
    +
    +
    + +
    +
    +
    +

    Ace API Reference

    +

    Welcome to the Ace API Reference!

    +

    On the left, you'll find a list of all of our currently documented classes. + These is not a complete set of classes, but rather, the "core" set. For more + information on how to work with Ace, check out the embedding guide. +

    +

    Below is an ERD diagram describing some fundamentals about how the internals of Ace works:

    + +
    +
    +
    +
    +
    +

    Projects Using Ace

    +

    Ace is used all over the web in all kinds of production applications. Here is + just a small sampling:

    + +
    +
    +

    Support and User Resources

    +

    Aside from our GitHub page, here's a list of places you can find help for Ace:

    + +
    +
    +
    +
    +
    + + + + + + + + + diff --git a/plugins/node_modules/ace/kitchen-sink.html b/plugins/node_modules/ace/kitchen-sink.html new file mode 100644 index 00000000..a8e1fb7b --- /dev/null +++ b/plugins/node_modules/ace/kitchen-sink.html @@ -0,0 +1,293 @@ + + + + + + Ace Kitchen Sink + + + + + + + + + +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +
    +
    + + + + + +
    +
    +
    +
    + + + + + + + + + + + diff --git a/plugins/node_modules/ace/lib/ace/ace.js b/plugins/node_modules/ace/lib/ace/ace.js new file mode 100644 index 00000000..93af50a1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ace.js @@ -0,0 +1,132 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/** + * The main class required to set up an Ace instance in the browser. + * + * @class Ace + **/ + +define(function(require, exports, module) { +"use strict"; + +require("./lib/fixoldbrowsers"); + +var dom = require("./lib/dom"); +var event = require("./lib/event"); + +var Editor = require("./editor").Editor; +var EditSession = require("./edit_session").EditSession; +var UndoManager = require("./undomanager").UndoManager; +var Renderer = require("./virtual_renderer").VirtualRenderer; + +// The following require()s are for inclusion in the built ace file +require("./worker/worker_client"); +require("./keyboard/hash_handler"); +require("./placeholder"); +require("./multi_select"); +require("./mode/folding/fold_mode"); +require("./theme/textmate"); +require("./ext/error_marker"); + +exports.config = require("./config"); + +/** + * Provides access to require in packed noconflict mode + * @param {String} moduleName + * @returns {Object} + **/ +exports.require = require; + +if (typeof define === "function") + exports.define = define; + +/** + * Embeds the Ace editor into the DOM, at the element provided by `el`. + * @param {String | DOMElement} el Either the id of an element, or the element itself + * @param {Object } options Options for the editor + * + **/ +exports.edit = function(el, options) { + if (typeof el == "string") { + var _id = el; + el = document.getElementById(_id); + if (!el) + throw new Error("ace.edit can't find div #" + _id); + } + + if (el && el.env && el.env.editor instanceof Editor) + return el.env.editor; + + var value = ""; + if (el && /input|textarea/i.test(el.tagName)) { + var oldNode = el; + value = oldNode.value; + el = dom.createElement("pre"); + oldNode.parentNode.replaceChild(el, oldNode); + } else if (el) { + value = dom.getInnerText(el); + el.innerHTML = ""; + } + + var doc = exports.createEditSession(value); + + var editor = new Editor(new Renderer(el), doc, options); + + var env = { + document: doc, + editor: editor, + onResize: editor.resize.bind(editor, null) + }; + if (oldNode) env.textarea = oldNode; + event.addListener(window, "resize", env.onResize); + editor.on("destroy", function() { + event.removeListener(window, "resize", env.onResize); + env.editor.container.env = null; // prevent memory leak on old ie + }); + editor.container.env = editor.env = env; + return editor; +}; + +/** + * Creates a new [[EditSession]], and returns the associated [[Document]]. + * @param {Document | String} text {:textParam} + * @param {TextMode} mode {:modeParam} + * + **/ +exports.createEditSession = function(text, mode) { + var doc = new EditSession(text, mode); + doc.setUndoManager(new UndoManager()); + return doc; +}; +exports.EditSession = EditSession; +exports.UndoManager = UndoManager; +exports.version = "1.2.9"; +}); diff --git a/plugins/node_modules/ace/lib/ace/anchor.js b/plugins/node_modules/ace/lib/ace/anchor.js new file mode 100644 index 00000000..39b78e0f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/anchor.js @@ -0,0 +1,227 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; + +/** + * + * Defines a floating pointer in the document. Whenever text is inserted or deleted before the cursor, the position of the anchor is updated. + * + * @class Anchor + **/ + +/** + * Creates a new `Anchor` and associates it with a document. + * + * @param {Document} doc The document to associate with the anchor + * @param {Number} row The starting row position + * @param {Number} column The starting column position + * + * @constructor + **/ + +var Anchor = exports.Anchor = function(doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); +}; + +(function() { + + oop.implement(this, EventEmitter); + + /** + * Returns an object identifying the `row` and `column` position of the current anchor. + * @returns {Object} + **/ + this.getPosition = function() { + return this.$clipPositionToDocument(this.row, this.column); + }; + + /** + * + * Returns the current document. + * @returns {Document} + **/ + this.getDocument = function() { + return this.document; + }; + + /** + * experimental: allows anchor to stick to the next on the left + */ + this.$insertRight = false; + /** + * Fires whenever the anchor position changes. + * + * Both of these objects have a `row` and `column` property corresponding to the position. + * + * Events that can trigger this function include [[Anchor.setPosition `setPosition()`]]. + * + * @event change + * @param {Object} e An object containing information about the anchor position. It has two properties: + * - `old`: An object describing the old Anchor position + * - `value`: An object describing the new Anchor position + * + **/ + this.onChange = function(delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + + if (delta.start.row > this.row) + return; + + var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + + function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); + } + + function $getTransformedPoint(delta, point, moveIfEqual) { + // Get delta info. + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + + // DELTA AFTER POINT: No change needed. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + + // DELTA BEFORE POINT: Move point by delta shift. + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + + // DELTA ENVELOPS POINT (delete only): Move point to delta start. + // TODO warn if delta.action != "remove" ? + + return { + row: deltaStart.row, + column: deltaStart.column + }; + } + + /** + * Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped. + * @param {Number} row The row index to move the anchor to + * @param {Number} column The column index to move the anchor to + * @param {Boolean} noClip Identifies if you want the position to be clipped + * + **/ + this.setPosition = function(row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } else { + pos = this.$clipPositionToDocument(row, column); + } + + if (this.row == pos.row && this.column == pos.column) + return; + + var old = { + row: this.row, + column: this.column + }; + + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + + /** + * When called, the `"change"` event listener is removed. + * + **/ + this.detach = function() { + this.document.removeEventListener("change", this.$onChange); + }; + this.attach = function(doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + + /** + * Clips the anchor position to the specified row and column. + * @param {Number} row The row index to clip the anchor to + * @param {Number} column The column index to clip the anchor to + * + **/ + this.$clipPositionToDocument = function(row, column) { + var pos = {}; + + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + + if (column < 0) + pos.column = 0; + + return pos; + }; + +}).call(Anchor.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/anchor_test.js b/plugins/node_modules/ace/lib/ace/anchor_test.js new file mode 100644 index 00000000..49208394 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/anchor_test.js @@ -0,0 +1,223 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var Document = require("./document").Document; +var Anchor = require("./anchor").Anchor; +var Range = require("./range").Range; +var assert = require("./test/assertions"); + +module.exports = { + + "test create anchor" : function() { + var doc = new Document("juhu"); + var anchor = new Anchor(doc, 0, 0); + + assert.position(anchor.getPosition(), 0, 0); + assert.equal(anchor.getDocument(), doc); + }, + + "test insert text in same row before cursor should move anchor column": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + + doc.insert({row: 1, column: 1}, "123"); + assert.position(anchor.getPosition(), 1, 7); + }, + + "test insert text at anchor should not move anchor when insertRight is true": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + anchor.$insertRight = true; + + doc.insert({row: 1, column: 4}, "123"); + assert.position(anchor.getPosition(), 1, 4); + }, + + "test insert lines before cursor should move anchor row": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + + doc.insertFullLines(1, ["123", "456"]); + assert.position(anchor.getPosition(), 3, 4); + }, + + "test insert lines at anchor position should move anchor down": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 0); + + doc.insertLines(1, ["line"]); + assert.position(anchor.getPosition(), 2, 0); + }, + + "test insert lines at anchor position should not move anchor down when insertRight is true and column is 0": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 0); + anchor.$insertRight = true; + + doc.insertLines(1, ["line"]); + assert.position(anchor.getPosition(), 1, 0); + }, + + "test insert lines at anchor row should move anchor down when column > 0": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 2); + anchor.$insertRight = true; + + doc.insertLines(1, ["line"]); + assert.position(anchor.getPosition(), 2, 2); + }, + + "test insert new line before cursor should move anchor column": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + + doc.insertMergedLines({row: 0, column: 0}, ['', '']); + assert.position(anchor.getPosition(), 2, 4); + }, + + "test insert new line in anchor line before anchor should move anchor column and row": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + + doc.insertMergedLines({row: 1, column: 2}, ['', '']); + assert.position(anchor.getPosition(), 2, 2); + }, + + "test delete text in anchor line before anchor should move anchor column": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + + doc.remove(new Range(1, 1, 1, 3)); + assert.position(anchor.getPosition(), 1, 2); + }, + + "test remove range which contains the anchor should move the anchor to the start of the range": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 0, 3); + + doc.remove(new Range(0, 1, 1, 3)); + assert.position(anchor.getPosition(), 0, 1); + }, + + "test delete character before the anchor should have no effect": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + + doc.remove(new Range(1, 4, 1, 5)); + assert.position(anchor.getPosition(), 1, 4); + }, + + "test delete lines in anchor line before anchor should move anchor row": function() { + var doc = new Document("juhu\n1\n2\nkinners"); + var anchor = new Anchor(doc, 3, 4); + + doc.removeFullLines(1, 2); + assert.position(anchor.getPosition(), 1, 4); + }, + + "test remove new line before the cursor": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + + doc.removeNewLine(0); + assert.position(anchor.getPosition(), 0, 8); + }, + + "test delete range which contains the anchor should move anchor to the end of the range": function() { + var doc = new Document("juhu\nkinners"); + var anchor = new Anchor(doc, 1, 4); + + doc.remove(new Range(0, 2, 1, 2)); + assert.position(anchor.getPosition(), 0, 4); + }, + + "test delete line which contains the anchor should move anchor to the end of the range": function() { + var doc = new Document("juhu\nkinners\n123"); + var anchor = new Anchor(doc, 1, 5); + + doc.removeFullLines(1, 1); + assert.position(anchor.getPosition(), 1, 0); + }, + + "test remove after the anchor should have no effect": function() { + var doc = new Document("juhu\nkinners\n123"); + var anchor = new Anchor(doc, 1, 2); + + doc.remove(new Range(1, 4, 2, 2)); + assert.position(anchor.getPosition(), 1, 2); + }, + + "test anchor changes triggered by document changes should emit change event": function(next) { + var doc = new Document("juhu\nkinners\n123"); + var anchor = new Anchor(doc, 1, 5); + + anchor.on("change", function(e) { + assert.position(anchor.getPosition(), 0, 0); + next(); + }); + + doc.remove(new Range(0, 0, 2, 1)); + }, + + "test only fire change event if position changes": function() { + var doc = new Document("juhu\nkinners\n123"); + var anchor = new Anchor(doc, 1, 5); + + anchor.on("change", function(e) { + assert.fail(); + }); + + doc.remove(new Range(2, 0, 2, 1)); + }, + + "test insert/remove lines at the end of the document": function() { + var doc = new Document("juhu\nkinners\n123"); + var anchor = new Anchor(doc, 2, 4); + + doc.removeFullLines(0, 3); + assert.position(anchor.getPosition(), 0, 0); + doc.insertFullLines(0, ["a", "b", "c"]); + assert.position(anchor.getPosition(), 3, 0); + assert.equal(doc.getValue(), "a\nb\nc\n"); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/apply_delta.js b/plugins/node_modules/ace/lib/ace/apply_delta.js new file mode 100644 index 00000000..7c2f1588 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/apply_delta.js @@ -0,0 +1,108 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +function throwDeltaError(delta, errorText){ + console.log("Invalid Delta:", delta); + throw "Invalid Delta: " + errorText; +} + +function positionInDocument(docLines, position) { + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} + +function validateDelta(docLines, delta) { + // Validate action string. + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + + // Validate lines type. + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + + // Validate range type. + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + + // Validate that the start point is contained in the document. + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + + // Validate that the end point is contained in the document (remove deltas only). + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + + // Validate that the .range size matches the .lines size. + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} + +exports.applyDelta = function(docLines, delta, doNotValidate) { + // disabled validation since it breaks autocompletion popup + // if (!doNotValidate) + // validateDelta(docLines, delta); + + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } else { + docLines.splice( + row, endRow - row + 1, + line.substring(0, startColumn) + docLines[endRow].substring(endColumn) + ); + } + break; + } +}; +}); diff --git a/plugins/node_modules/ace/lib/ace/autocomplete.js b/plugins/node_modules/ace/lib/ace/autocomplete.js new file mode 100644 index 00000000..8b362c23 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/autocomplete.js @@ -0,0 +1,510 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var HashHandler = require("./keyboard/hash_handler").HashHandler; +var AcePopup = require("./autocomplete/popup").AcePopup; +var util = require("./autocomplete/util"); +var event = require("./lib/event"); +var lang = require("./lib/lang"); +var dom = require("./lib/dom"); +var snippetManager = require("./snippets").snippetManager; + +var Autocomplete = function() { + this.autoInsert = false; + this.autoSelect = true; + this.exactMatch = false; + this.gatherCompletionsId = 0; + this.keyboardHandler = new HashHandler(); + this.keyboardHandler.bindKeys(this.commands); + + this.blurListener = this.blurListener.bind(this); + this.changeListener = this.changeListener.bind(this); + this.mousedownListener = this.mousedownListener.bind(this); + this.mousewheelListener = this.mousewheelListener.bind(this); + + this.changeTimer = lang.delayedCall(function() { + this.updateCompletions(true); + }.bind(this)); + + this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); +}; + +(function() { + + this.$init = function() { + this.popup = new AcePopup(document.body || document.documentElement); + this.popup.on("click", function(e) { + this.insertMatch(); + e.stop(); + }.bind(this)); + this.popup.focus = this.editor.focus.bind(this.editor); + this.popup.on("show", this.tooltipTimer.bind(null, null)); + this.popup.on("select", this.tooltipTimer.bind(null, null)); + this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); + return this.popup; + }; + + this.getPopup = function() { + return this.popup || this.$init(); + }; + + this.openPopup = function(editor, prefix, keepPopupPosition) { + if (!this.popup) + this.$init(); + + this.popup.autoSelect = this.autoSelect; + + this.popup.setData(this.completions.filtered); + + editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + + var renderer = editor.renderer; + this.popup.setRow(this.autoSelect ? 0 : -1); + if (!keepPopupPosition) { + this.popup.setTheme(editor.getTheme()); + this.popup.setFontSize(editor.getFontSize()); + + var lineHeight = renderer.layerConfig.lineHeight; + + var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); + pos.left -= this.popup.getTextLeftOffset(); + + var rect = editor.container.getBoundingClientRect(); + pos.top += rect.top - renderer.layerConfig.offset; + pos.left += rect.left - editor.renderer.scrollLeft; + pos.left += renderer.gutterWidth; + + this.popup.show(pos, lineHeight); + } else if (keepPopupPosition && !prefix) { + this.detach(); + } + }; + + this.detach = function() { + this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); + this.editor.off("changeSelection", this.changeListener); + this.editor.off("blur", this.blurListener); + this.editor.off("mousedown", this.mousedownListener); + this.editor.off("mousewheel", this.mousewheelListener); + this.changeTimer.cancel(); + this.hideDocTooltip(); + + this.gatherCompletionsId += 1; + if (this.popup && this.popup.isOpen) + this.popup.hide(); + + if (this.base) + this.base.detach(); + this.activated = false; + this.completions = this.base = null; + }; + + this.changeListener = function(e) { + var cursor = this.editor.selection.lead; + if (cursor.row != this.base.row || cursor.column < this.base.column) { + this.detach(); + } + if (this.activated) + this.changeTimer.schedule(); + else + this.detach(); + }; + + this.blurListener = function(e) { + // we have to check if activeElement is a child of popup because + // on IE preventDefault doesn't stop scrollbar from being focussed + var el = document.activeElement; + var text = this.editor.textInput.getElement(); + var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget); + var container = this.popup && this.popup.container; + if (el != text && el.parentNode != container && !fromTooltip + && el != this.tooltipNode && e.relatedTarget != text + ) { + this.detach(); + } + }; + + this.mousedownListener = function(e) { + this.detach(); + }; + + this.mousewheelListener = function(e) { + this.detach(); + }; + + this.goTo = function(where) { + var row = this.popup.getRow(); + var max = this.popup.session.getLength() - 1; + + switch(where) { + case "up": row = row <= 0 ? max : row - 1; break; + case "down": row = row >= max ? -1 : row + 1; break; + case "start": row = 0; break; + case "end": row = max; break; + } + + this.popup.setRow(row); + }; + + this.insertMatch = function(data, options) { + if (!data) + data = this.popup.getData(this.popup.getRow()); + if (!data) + return false; + + if (data.completer && data.completer.insertMatch) { + data.completer.insertMatch(this.editor, data); + } else { + // TODO add support for options.deleteSuffix + if (this.completions.filterText) { + var ranges = this.editor.selection.getAllRanges(); + for (var i = 0, range; range = ranges[i]; i++) { + range.start.column -= this.completions.filterText.length; + this.editor.session.remove(range); + } + } + if (data.snippet) + snippetManager.insertSnippet(this.editor, data.snippet); + else + this.editor.execCommand("insertstring", data.value || data); + } + this.detach(); + }; + + + this.commands = { + "Up": function(editor) { editor.completer.goTo("up"); }, + "Down": function(editor) { editor.completer.goTo("down"); }, + "Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); }, + "Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); }, + + "Esc": function(editor) { editor.completer.detach(); }, + "Return": function(editor) { return editor.completer.insertMatch(); }, + "Shift-Return": function(editor) { editor.completer.insertMatch(null, {deleteSuffix: true}); }, + "Tab": function(editor) { + var result = editor.completer.insertMatch(); + if (!result && !editor.tabstopManager) + editor.completer.goTo("down"); + else + return result; + }, + + "PageUp": function(editor) { editor.completer.popup.gotoPageUp(); }, + "PageDown": function(editor) { editor.completer.popup.gotoPageDown(); } + }; + + this.gatherCompletions = function(editor, callback) { + var session = editor.getSession(); + var pos = editor.getCursorPosition(); + + var prefix = util.getCompletionPrefix(editor); + + this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); + this.base.$insertRight = true; + + var matches = []; + var total = editor.completers.length; + editor.completers.forEach(function(completer, i) { + completer.getCompletions(editor, session, pos, prefix, function(err, results) { + if (!err && results) + matches = matches.concat(results); + // Fetch prefix again, because they may have changed by now + callback(null, { + prefix: util.getCompletionPrefix(editor), + matches: matches, + finished: (--total === 0) + }); + }); + }); + return true; + }; + + this.showPopup = function(editor) { + if (this.editor) + this.detach(); + + this.activated = true; + + this.editor = editor; + if (editor.completer != this) { + if (editor.completer) + editor.completer.detach(); + editor.completer = this; + } + + editor.on("changeSelection", this.changeListener); + editor.on("blur", this.blurListener); + editor.on("mousedown", this.mousedownListener); + editor.on("mousewheel", this.mousewheelListener); + + this.updateCompletions(); + }; + + this.updateCompletions = function(keepPopupPosition) { + if (keepPopupPosition && this.base && this.completions) { + var pos = this.editor.getCursorPosition(); + var prefix = this.editor.session.getTextRange({start: this.base, end: pos}); + if (prefix == this.completions.filterText) + return; + this.completions.setFilter(prefix); + if (!this.completions.filtered.length) + return this.detach(); + if (this.completions.filtered.length == 1 + && this.completions.filtered[0].value == prefix + && !this.completions.filtered[0].snippet) + return this.detach(); + this.openPopup(this.editor, prefix, keepPopupPosition); + return; + } + + // Save current gatherCompletions session, session is close when a match is insert + var _id = this.gatherCompletionsId; + this.gatherCompletions(this.editor, function(err, results) { + // Only detach if result gathering is finished + var detachIfFinished = function() { + if (!results.finished) return; + return this.detach(); + }.bind(this); + + var prefix = results.prefix; + var matches = results && results.matches; + + if (!matches || !matches.length) + return detachIfFinished(); + + // Wrong prefix or wrong session -> ignore + if (prefix.indexOf(results.prefix) !== 0 || _id != this.gatherCompletionsId) + return; + + this.completions = new FilteredList(matches); + + if (this.exactMatch) + this.completions.exactMatch = true; + + this.completions.setFilter(prefix); + var filtered = this.completions.filtered; + + // No results + if (!filtered.length) + return detachIfFinished(); + + // One result equals to the prefix + if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet) + return detachIfFinished(); + + // Autoinsert if one result + if (this.autoInsert && filtered.length == 1 && results.finished) + return this.insertMatch(filtered[0]); + + this.openPopup(this.editor, prefix, keepPopupPosition); + }.bind(this)); + }; + + this.cancelContextMenu = function() { + this.editor.$mouseHandler.cancelContextMenu(); + }; + + this.updateDocTooltip = function() { + var popup = this.popup; + var all = popup.data; + var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); + var doc = null; + if (!selected || !this.editor || !this.popup.isOpen) + return this.hideDocTooltip(); + this.editor.completers.some(function(completer) { + if (completer.getDocTooltip) + doc = completer.getDocTooltip(selected); + return doc; + }); + if (!doc) + doc = selected; + + if (typeof doc == "string") + doc = {docText: doc}; + if (!doc || !(doc.docHTML || doc.docText)) + return this.hideDocTooltip(); + this.showDocTooltip(doc); + }; + + this.showDocTooltip = function(item) { + if (!this.tooltipNode) { + this.tooltipNode = dom.createElement("div"); + this.tooltipNode.className = "ace_tooltip ace_doc-tooltip"; + this.tooltipNode.style.margin = 0; + this.tooltipNode.style.pointerEvents = "auto"; + this.tooltipNode.tabIndex = -1; + this.tooltipNode.onblur = this.blurListener.bind(this); + this.tooltipNode.onclick = this.onTooltipClick.bind(this); + } + + var tooltipNode = this.tooltipNode; + if (item.docHTML) { + tooltipNode.innerHTML = item.docHTML; + } else if (item.docText) { + tooltipNode.textContent = item.docText; + } + + if (!tooltipNode.parentNode) + document.body.appendChild(tooltipNode); + var popup = this.popup; + var rect = popup.container.getBoundingClientRect(); + tooltipNode.style.top = popup.container.style.top; + tooltipNode.style.bottom = popup.container.style.bottom; + + if (window.innerWidth - rect.right < 320) { + tooltipNode.style.right = window.innerWidth - rect.left + "px"; + tooltipNode.style.left = ""; + } else { + tooltipNode.style.left = (rect.right + 1) + "px"; + tooltipNode.style.right = ""; + } + tooltipNode.style.display = "block"; + }; + + this.hideDocTooltip = function() { + this.tooltipTimer.cancel(); + if (!this.tooltipNode) return; + var el = this.tooltipNode; + if (!this.editor.isFocused() && document.activeElement == el) + this.editor.focus(); + this.tooltipNode = null; + if (el.parentNode) + el.parentNode.removeChild(el); + }; + + this.onTooltipClick = function(e) { + var a = e.target; + while (a && a != this.tooltipNode) { + if (a.nodeName == "A" && a.href) { + a.rel = "noreferrer"; + a.target = "_blank"; + break; + } + a = a.parentNode; + } + }; + +}).call(Autocomplete.prototype); + +Autocomplete.startCommand = { + name: "startAutocomplete", + exec: function(editor) { + if (!editor.completer) + editor.completer = new Autocomplete(); + editor.completer.autoInsert = false; + editor.completer.autoSelect = true; + editor.completer.showPopup(editor); + // prevent ctrl-space opening context menu on firefox on mac + editor.completer.cancelContextMenu(); + }, + bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" +}; + +var FilteredList = function(array, filterText) { + this.all = array; + this.filtered = array; + this.filterText = filterText || ""; + this.exactMatch = false; +}; +(function(){ + this.setFilter = function(str) { + if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) + var matches = this.filtered; + else + var matches = this.all; + + this.filterText = str; + matches = this.filterCompletions(matches, this.filterText); + matches = matches.sort(function(a, b) { + return b.exactMatch - a.exactMatch || b.score - a.score; + }); + + // make unique + var prev = null; + matches = matches.filter(function(item){ + var caption = item.snippet || item.caption || item.value; + if (caption === prev) return false; + prev = caption; + return true; + }); + + this.filtered = matches; + }; + this.filterCompletions = function(items, needle) { + var results = []; + var upper = needle.toUpperCase(); + var lower = needle.toLowerCase(); + loop: for (var i = 0, item; item = items[i]; i++) { + var caption = item.value || item.caption || item.snippet; + if (!caption) continue; + var lastIndex = -1; + var matchMask = 0; + var penalty = 0; + var index, distance; + + if (this.exactMatch) { + if (needle !== caption.substr(0, needle.length)) + continue loop; + }else{ + // caption char iteration is faster in Chrome but slower in Firefox, so lets use indexOf + for (var j = 0; j < needle.length; j++) { + // TODO add penalty on case mismatch + var i1 = caption.indexOf(lower[j], lastIndex + 1); + var i2 = caption.indexOf(upper[j], lastIndex + 1); + index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; + if (index < 0) + continue loop; + distance = index - lastIndex - 1; + if (distance > 0) { + // first char mismatch should be more sensitive + if (lastIndex === -1) + penalty += 10; + penalty += distance; + } + matchMask = matchMask | (1 << index); + lastIndex = index; + } + } + item.matchMask = matchMask; + item.exactMatch = penalty ? 0 : 1; + item.score = (item.score || 0) - penalty; + results.push(item); + } + return results; + }; +}).call(FilteredList.prototype); + +exports.Autocomplete = Autocomplete; +exports.FilteredList = FilteredList; + +}); diff --git a/plugins/node_modules/ace/lib/ace/autocomplete/popup.js b/plugins/node_modules/ace/lib/ace/autocomplete/popup.js new file mode 100644 index 00000000..edb51aaa --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/autocomplete/popup.js @@ -0,0 +1,346 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Renderer = require("../virtual_renderer").VirtualRenderer; +var Editor = require("../editor").Editor; +var Range = require("../range").Range; +var event = require("../lib/event"); +var lang = require("../lib/lang"); +var dom = require("../lib/dom"); + +var $singleLineEditor = function(el) { + var renderer = new Renderer(el); + + renderer.$maxLines = 4; + + var editor = new Editor(renderer); + + editor.setHighlightActiveLine(false); + editor.setShowPrintMargin(false); + editor.renderer.setShowGutter(false); + editor.renderer.setHighlightGutterLine(false); + + editor.$mouseHandler.$focusWaitTimout = 0; + editor.$highlightTagPending = true; + + return editor; +}; + +var AcePopup = function(parentNode) { + var el = dom.createElement("div"); + var popup = new $singleLineEditor(el); + + if (parentNode) + parentNode.appendChild(el); + el.style.display = "none"; + popup.renderer.content.style.cursor = "default"; + popup.renderer.setStyle("ace_autocomplete"); + + popup.setOption("displayIndentGuides", false); + popup.setOption("dragDelay", 150); + + var noop = function(){}; + + popup.focus = noop; + popup.$isFocused = true; + + popup.renderer.$cursorLayer.restartTimer = noop; + popup.renderer.$cursorLayer.element.style.opacity = 0; + + popup.renderer.$maxLines = 8; + popup.renderer.$keepTextAreaAtCursor = false; + + popup.setHighlightActiveLine(false); + // set default highlight color + popup.session.highlight(""); + popup.session.$searchHighlight.clazz = "ace_highlight-marker"; + + popup.on("mousedown", function(e) { + var pos = e.getDocumentPosition(); + popup.selection.moveToPosition(pos); + selectionMarker.start.row = selectionMarker.end.row = pos.row; + e.stop(); + }); + + var lastMouseEvent; + var hoverMarker = new Range(-1,0,-1,Infinity); + var selectionMarker = new Range(-1,0,-1,Infinity); + selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); + popup.setSelectOnHover = function(val) { + if (!val) { + hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); + } else if (hoverMarker.id) { + popup.session.removeMarker(hoverMarker.id); + hoverMarker.id = null; + } + }; + popup.setSelectOnHover(false); + popup.on("mousemove", function(e) { + if (!lastMouseEvent) { + lastMouseEvent = e; + return; + } + if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { + return; + } + lastMouseEvent = e; + lastMouseEvent.scrollTop = popup.renderer.scrollTop; + var row = lastMouseEvent.getDocumentPosition().row; + if (hoverMarker.start.row != row) { + if (!hoverMarker.id) + popup.setRow(row); + setHoverMarker(row); + } + }); + popup.renderer.on("beforeRender", function() { + if (lastMouseEvent && hoverMarker.start.row != -1) { + lastMouseEvent.$pos = null; + var row = lastMouseEvent.getDocumentPosition().row; + if (!hoverMarker.id) + popup.setRow(row); + setHoverMarker(row, true); + } + }); + popup.renderer.on("afterRender", function() { + var row = popup.getRow(); + var t = popup.renderer.$textLayer; + var selected = t.element.childNodes[row - t.config.firstRow]; + if (selected == t.selectedNode) + return; + if (t.selectedNode) + dom.removeCssClass(t.selectedNode, "ace_selected"); + t.selectedNode = selected; + if (selected) + dom.addCssClass(selected, "ace_selected"); + }); + var hideHoverMarker = function() { setHoverMarker(-1); }; + var setHoverMarker = function(row, suppressRedraw) { + if (row !== hoverMarker.start.row) { + hoverMarker.start.row = hoverMarker.end.row = row; + if (!suppressRedraw) + popup.session._emit("changeBackMarker"); + popup._emit("changeHoverMarker"); + } + }; + popup.getHoveredRow = function() { + return hoverMarker.start.row; + }; + + event.addListener(popup.container, "mouseout", hideHoverMarker); + popup.on("hide", hideHoverMarker); + popup.on("changeSelection", hideHoverMarker); + + popup.session.doc.getLength = function() { + return popup.data.length; + }; + popup.session.doc.getLine = function(i) { + var data = popup.data[i]; + if (typeof data == "string") + return data; + return (data && data.value) || ""; + }; + + var bgTokenizer = popup.session.bgTokenizer; + bgTokenizer.$tokenizeRow = function(row) { + var data = popup.data[row]; + var tokens = []; + if (!data) + return tokens; + if (typeof data == "string") + data = {value: data}; + if (!data.caption) + data.caption = data.value || data.name; + + var last = -1; + var flag, c; + for (var i = 0; i < data.caption.length; i++) { + c = data.caption[i]; + flag = data.matchMask & (1 << i) ? 1 : 0; + if (last !== flag) { + tokens.push({type: data.className || "" + ( flag ? "completion-highlight" : ""), value: c}); + last = flag; + } else { + tokens[tokens.length - 1].value += c; + } + } + + if (data.meta) { + var maxW = popup.renderer.$size.scrollerWidth / popup.renderer.layerConfig.characterWidth; + var metaData = data.meta; + if (metaData.length + data.caption.length > maxW - 2) { + // trim meta to fit this popup and add ellipsis + metaData = metaData.substr(0, maxW - data.caption.length - 3) + "\u2026"; + } + tokens.push({type: "rightAlignedText", value: metaData}); + } + return tokens; + }; + bgTokenizer.$updateOnChange = noop; + bgTokenizer.start = noop; + + popup.session.$computeWidth = function() { + return this.screenWidth = 0; + }; + + // public + popup.isOpen = false; + popup.isTopdown = false; + popup.autoSelect = true; + + popup.data = []; + popup.setData = function(list) { + popup.setValue(lang.stringRepeat("\n", list.length), -1); + popup.data = list || []; + popup.setRow(0); + }; + popup.getData = function(row) { + return popup.data[row]; + }; + + popup.getRow = function() { + return selectionMarker.start.row; + }; + popup.setRow = function(line) { + line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length, line)); + if (selectionMarker.start.row != line) { + popup.selection.clearSelection(); + selectionMarker.start.row = selectionMarker.end.row = line || 0; + popup.session._emit("changeBackMarker"); + popup.moveCursorTo(line || 0, 0); + if (popup.isOpen) + popup._signal("select"); + } + }; + + popup.on("changeSelection", function() { + if (popup.isOpen) + popup.setRow(popup.selection.lead.row); + popup.renderer.scrollCursorIntoView(); + }); + + popup.hide = function() { + this.container.style.display = "none"; + this._signal("hide"); + popup.isOpen = false; + }; + popup.show = function(pos, lineHeight, topdownOnly) { + var el = this.container; + var screenHeight = window.innerHeight; + var screenWidth = window.innerWidth; + var renderer = this.renderer; + // var maxLines = Math.min(renderer.$maxLines, this.session.getLength()); + var maxH = renderer.$maxLines * lineHeight * 1.4; + var top = pos.top + this.$borderSize; + var allowTopdown = top > screenHeight / 2 && !topdownOnly; + if (allowTopdown && top + lineHeight + maxH > screenHeight) { + renderer.$maxPixelHeight = top - 2 * this.$borderSize; + el.style.top = ""; + el.style.bottom = screenHeight - top + "px"; + popup.isTopdown = false; + } else { + top += lineHeight; + renderer.$maxPixelHeight = screenHeight - top - 0.2 * lineHeight; + el.style.top = top + "px"; + el.style.bottom = ""; + popup.isTopdown = true; + } + + el.style.display = ""; + this.renderer.$textLayer.checkForSizeChanges(); + + var left = pos.left; + if (left + el.offsetWidth > screenWidth) + left = screenWidth - el.offsetWidth; + + el.style.left = left + "px"; + + this._signal("show"); + lastMouseEvent = null; + popup.isOpen = true; + }; + + popup.getTextLeftOffset = function() { + return this.$borderSize + this.renderer.$padding + this.$imageSize; + }; + + popup.$imageSize = 0; + popup.$borderSize = 1; + + return popup; +}; + +dom.importCssString("\ +.ace_autocomplete.ace-tm .ace_marker-layer .ace_active-line {\ + background-color: #CAD6FA;\ + z-index: 1;\ +}\ +.ace_autocomplete.ace-tm .ace_line-hover {\ + border: 1px solid #abbffe;\ + margin-top: -1px;\ + background: rgba(233,233,253,0.4);\ +}\ +.ace_autocomplete .ace_line-hover {\ + position: absolute;\ + z-index: 2;\ +}\ +.ace_autocomplete .ace_scroller {\ + background: none;\ + border: none;\ + box-shadow: none;\ +}\ +.ace_rightAlignedText {\ + color: gray;\ + display: inline-block;\ + position: absolute;\ + right: 4px;\ + text-align: right;\ + z-index: -1;\ +}\ +.ace_autocomplete .ace_completion-highlight{\ + color: #000;\ + text-shadow: 0 0 0.01em;\ +}\ +.ace_autocomplete {\ + width: 280px;\ + z-index: 200000;\ + background: #fbfbfb;\ + color: #444;\ + border: 1px lightgray solid;\ + position: fixed;\ + box-shadow: 2px 3px 5px rgba(0,0,0,.2);\ + line-height: 1.4;\ +}"); + +exports.AcePopup = AcePopup; + +}); diff --git a/plugins/node_modules/ace/lib/ace/autocomplete/text_completer.js b/plugins/node_modules/ace/lib/ace/autocomplete/text_completer.js new file mode 100644 index 00000000..6d4b8d29 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/autocomplete/text_completer.js @@ -0,0 +1,78 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + var Range = require("../range").Range; + + var splitRegex = /[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/; + + function getWordIndex(doc, pos) { + var textBefore = doc.getTextRange(Range.fromPoints({row: 0, column:0}, pos)); + return textBefore.split(splitRegex).length - 1; + } + + /** + * Does a distance analysis of the word `prefix` at position `pos` in `doc`. + * @return Map + */ + function wordDistance(doc, pos) { + var prefixPos = getWordIndex(doc, pos); + var words = doc.getValue().split(splitRegex); + var wordScores = Object.create(null); + + var currentWord = words[prefixPos]; + + words.forEach(function(word, idx) { + if (!word || word === currentWord) return; + + var distance = Math.abs(prefixPos - idx); + var score = words.length - distance; + if (wordScores[word]) { + wordScores[word] = Math.max(score, wordScores[word]); + } else { + wordScores[word] = score; + } + }); + return wordScores; + } + + exports.getCompletions = function(editor, session, pos, prefix, callback) { + var wordScore = wordDistance(session, pos); + var wordList = Object.keys(wordScore); + callback(null, wordList.map(function(word) { + return { + caption: word, + value: word, + score: wordScore[word], + meta: "local" + }; + })); + }; +}); diff --git a/plugins/node_modules/ace/lib/ace/autocomplete/util.js b/plugins/node_modules/ace/lib/ace/autocomplete/util.js new file mode 100644 index 00000000..7e1d7f5e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/autocomplete/util.js @@ -0,0 +1,89 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +exports.parForEach = function(array, fn, callback) { + var completed = 0; + var arLength = array.length; + if (arLength === 0) + callback(); + for (var i = 0; i < arLength; i++) { + fn(array[i], function(result, err) { + completed++; + if (completed === arLength) + callback(result, err); + }); + } +}; + +var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/; + +exports.retrievePrecedingIdentifier = function(text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos-1; i >= 0; i--) { + if (regex.test(text[i])) + buf.push(text[i]); + else + break; + } + return buf.reverse().join(""); +}; + +exports.retrieveFollowingIdentifier = function(text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos; i < text.length; i++) { + if (regex.test(text[i])) + buf.push(text[i]); + else + break; + } + return buf; +}; + +exports.getCompletionPrefix = function (editor) { + var pos = editor.getCursorPosition(); + var line = editor.session.getLine(pos.row); + var prefix; + editor.completers.forEach(function(completer) { + if (completer.identifierRegexps) { + completer.identifierRegexps.forEach(function(identifierRegex) { + if (!prefix && identifierRegex) + prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex); + }.bind(this)); + } + }.bind(this)); + return prefix || this.retrievePrecedingIdentifier(line, pos.column); +}; + +}); diff --git a/plugins/node_modules/ace/lib/ace/background_tokenizer.js b/plugins/node_modules/ace/lib/ace/background_tokenizer.js new file mode 100644 index 00000000..c500120a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/background_tokenizer.js @@ -0,0 +1,251 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; + + +/** + * Tokenizes the current [[Document `Document`]] in the background, and caches the tokenized rows for future use. + * + * If a certain row is changed, everything below that row is re-tokenized. + * + * @class BackgroundTokenizer + **/ + +/** + * Creates a new `BackgroundTokenizer` object. + * @param {Tokenizer} tokenizer The tokenizer to use + * @param {Editor} editor The editor to associate with + * + * @constructor + **/ + +var BackgroundTokenizer = function(tokenizer, editor) { + this.running = false; + this.lines = []; + this.states = []; + this.currentLine = 0; + this.tokenizer = tokenizer; + + var self = this; + + this.$worker = function() { + if (!self.running) { return; } + + var workerStart = new Date(); + var currentLine = self.currentLine; + var endLine = -1; + var doc = self.doc; + + var startLine = currentLine; + while (self.lines[currentLine]) + currentLine++; + + var len = doc.getLength(); + var processedLines = 0; + self.running = false; + while (currentLine < len) { + self.$tokenizeRow(currentLine); + endLine = currentLine; + do { + currentLine++; + } while (self.lines[currentLine]); + + // only check every 5 lines + processedLines ++; + if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { + self.running = setTimeout(self.$worker, 20); + break; + } + } + self.currentLine = currentLine; + + if (endLine == -1) + endLine = currentLine; + + if (startLine <= endLine) + self.fireUpdateEvent(startLine, endLine); + }; +}; + +(function(){ + + oop.implement(this, EventEmitter); + + /** + * Sets a new tokenizer for this object. + * + * @param {Tokenizer} tokenizer The new tokenizer to use + * + **/ + this.setTokenizer = function(tokenizer) { + this.tokenizer = tokenizer; + this.lines = []; + this.states = []; + + this.start(0); + }; + + /** + * Sets a new document to associate with this object. + * @param {Document} doc The new document to associate with + **/ + this.setDocument = function(doc) { + this.doc = doc; + this.lines = []; + this.states = []; + + this.stop(); + }; + + /** + * Fires whenever the background tokeniziers between a range of rows are going to be updated. + * + * @event update + * @param {Object} e An object containing two properties, `first` and `last`, which indicate the rows of the region being updated. + * + **/ + /** + * Emits the `'update'` event. `firstRow` and `lastRow` are used to define the boundaries of the region to be updated. + * @param {Number} firstRow The starting row region + * @param {Number} lastRow The final row region + * + **/ + this.fireUpdateEvent = function(firstRow, lastRow) { + var data = { + first: firstRow, + last: lastRow + }; + this._signal("update", {data: data}); + }; + + /** + * Starts tokenizing at the row indicated. + * + * @param {Number} startRow The row to start at + * + **/ + this.start = function(startRow) { + this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength()); + + // remove all cached items below this line + this.lines.splice(this.currentLine, this.lines.length); + this.states.splice(this.currentLine, this.states.length); + + this.stop(); + // pretty long delay to prevent the tokenizer from interfering with the user + this.running = setTimeout(this.$worker, 700); + }; + + this.scheduleStart = function() { + if (!this.running) + this.running = setTimeout(this.$worker, 700); + }; + + this.$updateOnChange = function(delta) { + var startRow = delta.start.row; + var len = delta.end.row - startRow; + + if (len === 0) { + this.lines[startRow] = null; + } else if (delta.action == "remove") { + this.lines.splice(startRow, len + 1, null); + this.states.splice(startRow, len + 1, null); + } else { + var args = Array(len + 1); + args.unshift(startRow, 1); + this.lines.splice.apply(this.lines, args); + this.states.splice.apply(this.states, args); + } + + this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength()); + + this.stop(); + }; + + /** + * Stops tokenizing. + * + **/ + this.stop = function() { + if (this.running) + clearTimeout(this.running); + this.running = false; + }; + + /** + * Gives list of tokens of the row. (tokens are cached) + * + * @param {Number} row The row to get tokens at + * + * + * + **/ + this.getTokens = function(row) { + return this.lines[row] || this.$tokenizeRow(row); + }; + + /** + * [Returns the state of tokenization at the end of a row.]{: #BackgroundTokenizer.getState} + * + * @param {Number} row The row to get state at + **/ + this.getState = function(row) { + if (this.currentLine == row) + this.$tokenizeRow(row); + return this.states[row] || "start"; + }; + + this.$tokenizeRow = function(row) { + var line = this.doc.getLine(row); + var state = this.states[row - 1]; + + var data = this.tokenizer.getLineTokens(line, state, row); + + if (this.states[row] + "" !== data.state + "") { + this.states[row] = data.state; + this.lines[row + 1] = null; + if (this.currentLine > row + 1) + this.currentLine = row + 1; + } else if (this.currentLine == row) { + this.currentLine = row + 1; + } + + return this.lines[row] = data.tokens; + }; + +}).call(BackgroundTokenizer.prototype); + +exports.BackgroundTokenizer = BackgroundTokenizer; +}); diff --git a/plugins/node_modules/ace/lib/ace/background_tokenizer_test.js b/plugins/node_modules/ace/lib/ace/background_tokenizer_test.js new file mode 100644 index 00000000..d5267bc5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/background_tokenizer_test.js @@ -0,0 +1,152 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var JavaScriptMode = require("./mode/javascript").Mode; +var LuaMode = require("./mode/lua").Mode; +var Range = require("./range").Range; +var assert = require("./test/assertions"); + +function forceTokenize(session, startLine) { + for (var i = startLine || 0, l = session.getLength(); i < l; i++) + session.getTokens(i); +} + +function testStates(session, states) { + for (var i = 0, l = session.getLength(); i < l; i++) + assert.equal(session.bgTokenizer.states[i], states[i]); + assert.ok(l == states.length); +} + +module.exports = { + + "test background tokenizer update on session change" : function() { + var doc = new EditSession([ + "/*", + "*/", + "var juhu" + ]); + doc.setMode("./mode/javascript"); + + forceTokenize(doc); + testStates(doc, ["comment1", "start", "no_regex"]); + + doc.remove(new Range(0,2,1,2)); + testStates(doc, [null, "no_regex"]); + + forceTokenize(doc); + testStates(doc, ["comment1", "comment1"]); + + doc.insert({row:0, column:2}, "\n*/"); + testStates(doc, [undefined, undefined, "comment1"]); + + forceTokenize(doc); + testStates(doc, ["comment1", "start", "no_regex"]); + }, + "test background tokenizer sends update event" : function() { + var doc = new EditSession([ + "/*", + "var", + "juhu", + "*/" + ]); + doc.setMode("./mode/javascript"); + + var updateEvent = null; + doc.bgTokenizer.on("update", function(e) { + updateEvent = e.data; + }); + function checkEvent(first, last) { + assert.ok(!updateEvent, "unneccessary update event"); + doc.bgTokenizer.running = 1; + doc.bgTokenizer.$worker(); + assert.ok(updateEvent); + assert.equal([first, last] + "", + [updateEvent.first, updateEvent.last] + ""); + updateEvent = null; + } + + forceTokenize(doc); + var comment = "comment1"; + testStates(doc, [comment, comment, comment, "start"]); + + doc.remove(new Range(0,0,0,2)); + testStates(doc, [comment, comment, comment, "start"]); + + checkEvent(0, 3); + testStates(doc, ["start", "no_regex", "no_regex", "regex"]); + + // insert /* and and press down several times quickly + doc.insert({row:0, column:0}, "/*"); + doc.getTokens(0); + doc.getTokens(1); + doc.getTokens(2); + checkEvent(0, 3); + + forceTokenize(doc); + testStates(doc, [comment, comment, comment, "start"]); + }, + "test background tokenizer sends update event 2" : function(next) { + var doc = new EditSession([ + "-[[", + "juhu", + "kinners]]--", + "" + ]); + doc.setMode("./mode/lua"); + forceTokenize(doc); + var string = "bracketedString,2,start"; + var comment = "bracketedComment,2,start"; + testStates(doc, [string, string, "start", "start"]); + + doc.insert({row:0, column:0}, "-"); + forceTokenize(doc); + doc.bgTokenizer.once("update", function(e) { + assert.equal([0, 4] + "", [e.data.first, e.data.last] + ""); + testStates(doc, [comment, comment, "start", "start"]); + next(); + }); + doc.bgTokenizer.running = 1; + doc.bgTokenizer.$worker(); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/bidihandler.js b/plugins/node_modules/ace/lib/ace/bidihandler.js new file mode 100644 index 00000000..374e0bfe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/bidihandler.js @@ -0,0 +1,338 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var bidiUtil = require("./lib/bidiutil"); +var lang = require("./lib/lang"); +var useragent = require("./lib/useragent"); +var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; + +/** + * This object is used to ensure Bi-Directional support (for languages with text flowing from right to left, like Arabic or Hebrew) + * including correct caret positioning, text selection mouse and keyboard arrows functioning + * @class BidiHandler + **/ + +/** + * Creates a new `BidiHandler` object + * @param {EditSession} session The session to use + * + * @constructor + **/ +var BidiHandler = function(session) { + this.session = session; + this.bidiMap = {}; + /* current screen row */ + this.currentRow = null; + this.bidiUtil = bidiUtil; + /* Arabic/Hebrew character width differs from regular character width */ + this.charWidths = []; + this.EOL = "\xAC"; + this.showInvisibles = true; + this.isRtlDir = false; + this.line = ""; + this.wrapIndent = 0; + this.isLastRow = false; + this.EOF = "\xB6"; + this.seenBidi = false; +}; + +(function() { + /** + * Returns 'true' if row contains Bidi characters, in such case + * creates Bidi map to be used in operations related to selection + * (keyboard arrays, mouse click, select) + * @param {Number} the screen row to be checked + * @param {Number} the document row to be checked [optional] + * @param {Number} the wrapped screen line index [ optional] + **/ + this.isBidiRow = function(screenRow, docRow, splitIndex) { + if (!this.seenBidi) + return false; + if (screenRow !== this.currentRow) { + this.currentRow = screenRow; + this.updateRowLine(docRow, splitIndex); + this.updateBidiMap(); + } + return this.bidiMap.bidiLevels; + }; + + this.onChange = function(delta) { + if (!this.seenBidi) { + if (delta.action == "insert" && bidiRE.test(delta.lines.join("\n"))) { + this.seenBidi = true; + this.currentRow = null; + } + } + else { + this.currentRow = null; + } + }; + + this.getDocumentRow = function() { + var docRow = 0; + var rowCache = this.session.$screenRowCache; + if (rowCache.length) { + var index = this.session.$getRowCacheIndex(rowCache, this.currentRow); + if (index >= 0) + docRow = this.session.$docRowCache[index]; + } + + return docRow; + }; + + this.getSplitIndex = function() { + var splitIndex = 0; + var rowCache = this.session.$screenRowCache; + if (rowCache.length) { + var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow); + while (this.currentRow - splitIndex > 0) { + currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1); + if (currentIndex !== prevIndex) + break; + + prevIndex = currentIndex; + splitIndex++; + } + } + + return splitIndex; + }; + + this.updateRowLine = function(docRow, splitIndex) { + if (docRow === undefined) + docRow = this.getDocumentRow(); + + this.wrapIndent = 0; + this.isLastRow = (docRow === this.session.getLength() - 1); + this.line = this.session.getLine(docRow); + if (this.session.$useWrapMode) { + var splits = this.session.$wrapData[docRow]; + if (splits) { + if (splitIndex === undefined) + splitIndex = this.getSplitIndex(); + + if(splitIndex > 0 && splits.length) { + this.wrapIndent = splits.indent; + this.line = (splitIndex < splits.length) ? + this.line.substring(splits[splitIndex - 1], splits[splits.length - 1]) : + this.line.substring(splits[splits.length - 1]); + } else { + this.line = this.line.substring(0, splits[splitIndex]); + } + } + } + + /* replace tab and wide characters by commensurate spaces */ + var session = this.session, shift = 0, size; + this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function(ch, i){ + if (ch === '\t' || session.isFullWidth(ch.charCodeAt(0))) { + size = (ch === '\t') ? session.getScreenTabSize(i + shift) : 2; + shift += size - 1; + return lang.stringRepeat(bidiUtil.DOT, size); + } + return ch; + }); + }; + + this.updateBidiMap = function() { + var textCharTypes = [], endOfLine = this.isLastRow ? this.EOF : this.EOL; + var line = this.line + (this.showInvisibles ? endOfLine : bidiUtil.DOT); + if (bidiUtil.hasBidiCharacters(line, textCharTypes)) { + this.bidiMap = bidiUtil.doBidiReorder(line, textCharTypes, this.isRtlDir); + } else { + this.bidiMap = {}; + } + }; + + /** + * Resets stored info related to current screen row + **/ + this.markAsDirty = function() { + this.currentRow = null; + }; + + /** + * Updates array of character widths + * @param {Object} font metrics + * + **/ + this.updateCharacterWidths = function(fontMetrics) { + if (!this.seenBidi) + return; + if (this.characterWidth === fontMetrics.$characterSize.width) + return; + + var characterWidth = this.characterWidth = fontMetrics.$characterSize.width; + var bidiCharWidth = fontMetrics.$measureCharWidth("\u05d4"); + + this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth; + this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth; + this.charWidths[bidiUtil.R_H] = useragent.isChrome ? bidiCharWidth : bidiCharWidth * 0.45; + this.charWidths[bidiUtil.B] = 0; + + this.currentRow = null; + }; + + this.getShowInvisibles = function() { + return this.showInvisibles; + }; + + this.setShowInvisibles = function(showInvisibles) { + this.showInvisibles = showInvisibles; + this.currentRow = null; + }; + + this.setEolChar = function(eolChar) { + this.EOL = eolChar; + }; + + this.setTextDir = function(isRtlDir) { + this.isRtlDir = isRtlDir; + }; + + /** + * Returns offset of character at position defined by column. + * @param {Number} the screen column position + * + * @return {int} horizontal pixel offset of given screen column + **/ + this.getPosLeft = function(col) { + col -= this.wrapIndent; + var visualIdx = bidiUtil.getVisualFromLogicalIdx(col > 0 ? col - 1 : 0, this.bidiMap), + levels = this.bidiMap.bidiLevels, left = 0; + + if (col === 0 && levels[visualIdx] % 2 !== 0) + visualIdx++; + + for (var i = 0; i < visualIdx; i++) { + left += this.charWidths[levels[i]]; + } + + if (col !== 0 && levels[visualIdx] % 2 === 0) + left += this.charWidths[levels[visualIdx]]; + + if (this.wrapIndent) + left += this.wrapIndent * this.charWidths[bidiUtil.L]; + + return left; + }; + + /** + * Returns 'selections' - array of objects defining set of selection rectangles + * @param {Number} the start column position + * @param {Number} the end column position + * + * @return {Array of Objects} Each object contains 'left' and 'width' values defining selection rectangle. + **/ + this.getSelections = function(startCol, endCol) { + var map = this.bidiMap, levels = map.bidiLevels, level, offset = this.wrapIndent * this.charWidths[bidiUtil.L], selections = [], + selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, + isSelected = false, isSelectedPrev = false, selectionStart = 0; + + for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) { + logIdx = map.logicalFromVisual[visIdx]; + level = levels[visIdx]; + isSelected = (logIdx >= selColMin) && (logIdx < selColMax); + if (isSelected && !isSelectedPrev) { + selectionStart = offset; + } else if (!isSelected && isSelectedPrev) { + selections.push({left: selectionStart, width: offset - selectionStart}); + } + offset += this.charWidths[level]; + isSelectedPrev = isSelected; + } + + if (isSelected && (visIdx === levels.length)) { + selections.push({left: selectionStart, width: offset - selectionStart}); + } + + return selections; + }; + + /** + * Converts character coordinates on the screen to respective document column number + * @param {int} character horizontal offset + * + * @return {Number} screen column number corresponding to given pixel offset + **/ + this.offsetToCol = function(posX) { + var logicalIdx = 0, posX = Math.max(posX, 0), + offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, + charWidth = this.charWidths[levels[visualIdx]]; + + if (this.wrapIndent) { + posX -= this.wrapIndent * this.charWidths[bidiUtil.L]; + } + + while(posX > offset + charWidth/2) { + offset += charWidth; + if(visualIdx === levels.length - 1) { + /* quit when we on the right of the last character, flag this by charWidth = 0 */ + charWidth = 0; + break; + } + charWidth = this.charWidths[levels[++visualIdx]]; + } + + if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){ + /* Bidi character on the left and None Bidi character on the right */ + if(posX < offset) + visualIdx--; + logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; + + } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){ + /* None Bidi character on the left and Bidi character on the right */ + logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx] + : this.bidiMap.logicalFromVisual[visualIdx - 1]); + + } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0)) + || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){ + /* To the right of last character, which is None Bidi, in RTL direction or */ + /* to the left of first Bidi character, in LTR direction */ + logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx]; + } else { + /* Tweak visual position when Bidi character on the left in order to map it to corresponding logical position */ + if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0) + visualIdx--; + + /* Regular case */ + logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; + } + + return (logicalIdx + this.wrapIndent); + }; + +}).call(BidiHandler.prototype); + +exports.BidiHandler = BidiHandler; +}); diff --git a/plugins/node_modules/ace/lib/ace/clipboard.js b/plugins/node_modules/ace/lib/ace/clipboard.js new file mode 100644 index 00000000..b1a76354 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/clipboard.js @@ -0,0 +1,36 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +module.exports = { lineMode: false }; + +}); diff --git a/plugins/node_modules/ace/lib/ace/commands/command_manager.js b/plugins/node_modules/ace/lib/ace/commands/command_manager.js new file mode 100644 index 00000000..df30ef9b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/commands/command_manager.js @@ -0,0 +1,118 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var MultiHashHandler = require("../keyboard/hash_handler").MultiHashHandler; +var EventEmitter = require("../lib/event_emitter").EventEmitter; + +/** + * @class CommandManager + * + **/ + +/** + * new CommandManager(platform, commands) + * @param {String} platform Identifier for the platform; must be either `"mac"` or `"win"` + * @param {Array} commands A list of commands + * + **/ + +var CommandManager = function(platform, commands) { + MultiHashHandler.call(this, commands, platform); + this.byName = this.commands; + this.setDefaultHandler("exec", function(e) { + return e.command.exec(e.editor, e.args || {}); + }); +}; + +oop.inherits(CommandManager, MultiHashHandler); + +(function() { + + oop.implement(this, EventEmitter); + + this.exec = function(command, editor, args) { + if (Array.isArray(command)) { + for (var i = command.length; i--; ) { + if (this.exec(command[i], editor, args)) return true; + } + return false; + } + + if (typeof command === "string") + command = this.commands[command]; + + if (!command) + return false; + + if (editor && editor.$readOnly && !command.readOnly) + return false; + + var e = {editor: editor, command: command, args: args}; + e.returnValue = this._emit("exec", e); + this._signal("afterExec", e); + + return e.returnValue === false ? false : true; + }; + + this.toggleRecording = function(editor) { + if (this.$inReplay) + return; + + editor && editor._emit("changeStatus"); + if (this.recording) { + this.macro.pop(); + this.removeEventListener("exec", this.$addCommandToMacro); + + if (!this.macro.length) + this.macro = this.oldMacro; + + return this.recording = false; + } + if (!this.$addCommandToMacro) { + this.$addCommandToMacro = function(e) { + this.macro.push([e.command, e.args]); + }.bind(this); + } + + this.oldMacro = this.macro; + this.macro = []; + this.on("exec", this.$addCommandToMacro); + return this.recording = true; + }; + + this.replay = function(editor) { + if (this.$inReplay || !this.macro) + return; + + if (this.recording) + return this.toggleRecording(editor); + + try { + this.$inReplay = true; + this.macro.forEach(function(x) { + if (typeof x == "string") + this.exec(x, editor); + else + this.exec(x[0], editor, x[1]); + }, this); + } finally { + this.$inReplay = false; + } + }; + + this.trimMacro = function(m) { + return m.map(function(x){ + if (typeof x[0] != "string") + x[0] = x[0].name; + if (!x[1]) + x = x[0]; + return x; + }); + }; + +}).call(CommandManager.prototype); + +exports.CommandManager = CommandManager; + +}); diff --git a/plugins/node_modules/ace/lib/ace/commands/command_manager_test.js b/plugins/node_modules/ace/lib/ace/commands/command_manager_test.js new file mode 100644 index 00000000..902600be --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/commands/command_manager_test.js @@ -0,0 +1,199 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var CommandManager = require("./command_manager").CommandManager; +var keys = require("../lib/keys"); +var assert = require("../test/assertions"); + +module.exports = { + + setUp: function() { + this.command = { + name: "gotoline", + bindKey: { + mac: "Command-L", + win: "Ctrl-L" + }, + called: false, + exec: function(editor) { this.called = true; } + }; + + this.cm = new CommandManager("mac", [this.command]); + }, + + "test: register command": function() { + this.cm.exec("gotoline"); + assert.ok(this.command.called); + }, + + "test: mac hotkeys": function() { + var command = this.cm.findKeyCommand(keys.KEY_MODS.command, "l"); + assert.equal(command, this.command); + + var command = this.cm.findKeyCommand(keys.KEY_MODS.ctrl, "l"); + assert.equal(command, undefined); + }, + + "test: win hotkeys": function() { + var cm = new CommandManager("win", [this.command]); + + var command = cm.findKeyCommand(keys.KEY_MODS.command, "l"); + assert.equal(command, undefined); + + var command = cm.findKeyCommand(keys.KEY_MODS.ctrl, "l"); + assert.equal(command, this.command); + }, + + "test: remove command by object": function() { + this.cm.removeCommand(this.command); + + this.cm.exec("gotoline"); + assert.ok(!this.command.called); + + var command = this.cm.findKeyCommand(keys.KEY_MODS.command, "l"); + assert.equal(command, null); + }, + + "test: remove command by name": function() { + this.cm.removeCommand("gotoline"); + + this.cm.exec("gotoline"); + assert.ok(!this.command.called); + + var command = this.cm.findKeyCommand(keys.KEY_MODS.command, "l"); + assert.equal(command, null); + }, + + "test: adding a new command with the same name as an existing one should remove the old one first": function() { + var command = { + name: "gotoline", + bindKey: { + mac: "Command-L", + win: "Ctrl-L" + }, + called: false, + exec: function(editor) { this.called = true; } + }; + this.cm.addCommand(command); + + this.cm.exec("gotoline"); + assert.ok(command.called); + assert.ok(!this.command.called); + + assert.equal(this.cm.findKeyCommand(keys.KEY_MODS.command, "l"), command); + }, + + "test: adding commands and recording a macro": function() { + var called = ""; + this.cm.addCommands({ + togglerecording: function(editor) { + editor.cm.toggleRecording(editor); + }, + replay: function(editor) { + editor.cm.replay(); + }, + cm1: function(editor, arg) { + called += "1" + (arg || ""); + }, + cm2: function(editor) { + called += "2"; + } + }); + + + var statusUpdateEmitted = false; + this._emit = function() {statusUpdateEmitted = true}; + + this.cm.exec("togglerecording", this); + assert.ok(this.cm.recording); + assert.ok(statusUpdateEmitted); + + this.cm.exec("cm1", this, "-"); + this.cm.exec("cm2"); + this.cm.exec("replay", this); + assert.ok(!this.cm.recording); + assert.equal(called, "1-2"); + + called = ""; + this.cm.exec("replay", this); + assert.equal(called, "1-2"); + }, + + "test: bindkeys": function() { + this.cm.bindKeys({ + "Ctrl-L|Command-C": "cm1", + "Ctrl-R": "cm2" + }); + + var command = this.cm.findKeyCommand(keys.KEY_MODS.command, "c"); + assert.equal(command, "cm1"); + + var command = this.cm.findKeyCommand(keys.KEY_MODS.ctrl, "r"); + assert.equal(command, "cm2"); + + this.cm.bindKeys({ + "Ctrl-R": null + }); + + var command = this.cm.findKeyCommand(keys.KEY_MODS.ctrl, "r"); + assert.equal(command, null); + }, + + "test: binding keys without modifiers": function() { + this.cm.bindKeys({ + "R": "cm1", + "Shift-r": "cm2", + "Return": "cm4", + "Enter": "cm3" + }); + + var command = this.cm.findKeyCommand(-1, "r"); + assert.equal(command, "cm1"); + + var command = this.cm.findKeyCommand(-1, "R"); + assert.equal(command, "cm2"); + + var command = this.cm.findKeyCommand(0, "return"); + assert.equal(command + "", ["cm4", "cm3"] + ""); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/commands/default_commands.js b/plugins/node_modules/ace/lib/ace/commands/default_commands.js new file mode 100644 index 00000000..f7c6d5f5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/commands/default_commands.js @@ -0,0 +1,758 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var lang = require("../lib/lang"); +var config = require("../config"); +var Range = require("../range").Range; + +function bindKey(win, mac) { + return {win: win, mac: mac}; +} + +/* + multiSelectAction: "forEach"|"forEachLine"|function|undefined, + scrollIntoView: true|"cursor"|"center"|"selectionPart" +*/ +exports.commands = [{ + name: "showSettingsMenu", + bindKey: bindKey("Ctrl-,", "Command-,"), + exec: function(editor) { + config.loadModule("ace/ext/settings_menu", function(module) { + module.init(editor); + editor.showSettingsMenu(); + }); + }, + readOnly: true +}, { + name: "goToNextError", + bindKey: bindKey("Alt-E", "F4"), + exec: function(editor) { + config.loadModule("ace/ext/error_marker", function(module) { + module.showErrorMarker(editor, 1); + }); + }, + scrollIntoView: "animate", + readOnly: true +}, { + name: "goToPreviousError", + bindKey: bindKey("Alt-Shift-E", "Shift-F4"), + exec: function(editor) { + config.loadModule("ace/ext/error_marker", function(module) { + module.showErrorMarker(editor, -1); + }); + }, + scrollIntoView: "animate", + readOnly: true +}, { + name: "selectall", + bindKey: bindKey("Ctrl-A", "Command-A"), + exec: function(editor) { editor.selectAll(); }, + readOnly: true +}, { + name: "centerselection", + bindKey: bindKey(null, "Ctrl-L"), + exec: function(editor) { editor.centerSelection(); }, + readOnly: true +}, { + name: "gotoline", + bindKey: bindKey("Ctrl-L", "Command-L"), + exec: function(editor, line) { + if (typeof line !== "number") + line = parseInt(prompt("Enter line number:"), 10); + if (!isNaN(line)) { + editor.gotoLine(line); + } + }, + readOnly: true +}, { + name: "fold", + bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), + exec: function(editor) { editor.session.toggleFold(false); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true +}, { + name: "unfold", + bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), + exec: function(editor) { editor.session.toggleFold(true); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true +}, { + name: "toggleFoldWidget", + bindKey: bindKey("F2", "F2"), + exec: function(editor) { editor.session.toggleFoldWidget(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true +}, { + name: "toggleParentFoldWidget", + bindKey: bindKey("Alt-F2", "Alt-F2"), + exec: function(editor) { editor.session.toggleFoldWidget(true); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true +}, { + name: "foldall", + bindKey: bindKey(null, "Ctrl-Command-Option-0"), + exec: function(editor) { editor.session.foldAll(); }, + scrollIntoView: "center", + readOnly: true +}, { + name: "foldOther", + bindKey: bindKey("Alt-0", "Command-Option-0"), + exec: function(editor) { + editor.session.foldAll(); + editor.session.unfold(editor.selection.getAllRanges()); + }, + scrollIntoView: "center", + readOnly: true +}, { + name: "unfoldall", + bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), + exec: function(editor) { editor.session.unfold(); }, + scrollIntoView: "center", + readOnly: true +}, { + name: "findnext", + bindKey: bindKey("Ctrl-K", "Command-G"), + exec: function(editor) { editor.findNext(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true +}, { + name: "findprevious", + bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), + exec: function(editor) { editor.findPrevious(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true +}, { + name: "selectOrFindNext", + bindKey: bindKey("Alt-K", "Ctrl-G"), + exec: function(editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + else + editor.findNext(); + }, + readOnly: true +}, { + name: "selectOrFindPrevious", + bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), + exec: function(editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + else + editor.findPrevious(); + }, + readOnly: true +}, { + name: "find", + bindKey: bindKey("Ctrl-F", "Command-F"), + exec: function(editor) { + config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor);}); + }, + readOnly: true +}, { + name: "overwrite", + bindKey: "Insert", + exec: function(editor) { editor.toggleOverwrite(); }, + readOnly: true +}, { + name: "selecttostart", + bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), + exec: function(editor) { editor.getSelection().selectFileStart(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" +}, { + name: "gotostart", + bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), + exec: function(editor) { editor.navigateFileStart(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" +}, { + name: "selectup", + bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), + exec: function(editor) { editor.getSelection().selectUp(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "golineup", + bindKey: bindKey("Up", "Up|Ctrl-P"), + exec: function(editor, args) { editor.navigateUp(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selecttoend", + bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), + exec: function(editor) { editor.getSelection().selectFileEnd(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" +}, { + name: "gotoend", + bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), + exec: function(editor) { editor.navigateFileEnd(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" +}, { + name: "selectdown", + bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), + exec: function(editor) { editor.getSelection().selectDown(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "golinedown", + bindKey: bindKey("Down", "Down|Ctrl-N"), + exec: function(editor, args) { editor.navigateDown(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectwordleft", + bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), + exec: function(editor) { editor.getSelection().selectWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "gotowordleft", + bindKey: bindKey("Ctrl-Left", "Option-Left"), + exec: function(editor) { editor.navigateWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selecttolinestart", + bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), + exec: function(editor) { editor.getSelection().selectLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "gotolinestart", + bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), + exec: function(editor) { editor.navigateLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectleft", + bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), + exec: function(editor) { editor.getSelection().selectLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "gotoleft", + bindKey: bindKey("Left", "Left|Ctrl-B"), + exec: function(editor, args) { editor.navigateLeft(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectwordright", + bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), + exec: function(editor) { editor.getSelection().selectWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "gotowordright", + bindKey: bindKey("Ctrl-Right", "Option-Right"), + exec: function(editor) { editor.navigateWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selecttolineend", + bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), + exec: function(editor) { editor.getSelection().selectLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "gotolineend", + bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), + exec: function(editor) { editor.navigateLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectright", + bindKey: bindKey("Shift-Right", "Shift-Right"), + exec: function(editor) { editor.getSelection().selectRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "gotoright", + bindKey: bindKey("Right", "Right|Ctrl-F"), + exec: function(editor, args) { editor.navigateRight(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectpagedown", + bindKey: "Shift-PageDown", + exec: function(editor) { editor.selectPageDown(); }, + readOnly: true +}, { + name: "pagedown", + bindKey: bindKey(null, "Option-PageDown"), + exec: function(editor) { editor.scrollPageDown(); }, + readOnly: true +}, { + name: "gotopagedown", + bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), + exec: function(editor) { editor.gotoPageDown(); }, + readOnly: true +}, { + name: "selectpageup", + bindKey: "Shift-PageUp", + exec: function(editor) { editor.selectPageUp(); }, + readOnly: true +}, { + name: "pageup", + bindKey: bindKey(null, "Option-PageUp"), + exec: function(editor) { editor.scrollPageUp(); }, + readOnly: true +}, { + name: "gotopageup", + bindKey: "PageUp", + exec: function(editor) { editor.gotoPageUp(); }, + readOnly: true +}, { + name: "scrollup", + bindKey: bindKey("Ctrl-Up", null), + exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, + readOnly: true +}, { + name: "scrolldown", + bindKey: bindKey("Ctrl-Down", null), + exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, + readOnly: true +}, { + name: "selectlinestart", + bindKey: "Shift-Home", + exec: function(editor) { editor.getSelection().selectLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectlineend", + bindKey: "Shift-End", + exec: function(editor) { editor.getSelection().selectLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "togglerecording", + bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), + exec: function(editor) { editor.commands.toggleRecording(editor); }, + readOnly: true +}, { + name: "replaymacro", + bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), + exec: function(editor) { editor.commands.replay(editor); }, + readOnly: true +}, { + name: "jumptomatching", + bindKey: bindKey("Ctrl-P", "Ctrl-P"), + exec: function(editor) { editor.jumpToMatching(); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true +}, { + name: "selecttomatching", + bindKey: bindKey("Ctrl-Shift-P", "Ctrl-Shift-P"), + exec: function(editor) { editor.jumpToMatching(true); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true +}, { + name: "expandToMatching", + bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"), + exec: function(editor) { editor.jumpToMatching(true, true); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true +}, { + name: "passKeysToBrowser", + bindKey: bindKey(null, null), + exec: function() {}, + passEvent: true, + readOnly: true +}, { + name: "copy", + exec: function(editor) { + // placeholder for replay macro + }, + readOnly: true +}, + +// commands disabled in readOnly mode +{ + name: "cut", + exec: function(editor) { + var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty(); + var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange(); + editor._emit("cut", range); + + if (!range.isEmpty()) + editor.session.remove(range); + editor.clearSelection(); + }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" +}, { + name: "paste", + exec: function(editor, args) { + editor.$handlePaste(args); + }, + scrollIntoView: "cursor" +}, { + name: "removeline", + bindKey: bindKey("Ctrl-D", "Command-D"), + exec: function(editor) { editor.removeLines(); }, + scrollIntoView: "cursor", + multiSelectAction: "forEachLine" +}, { + name: "duplicateSelection", + bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), + exec: function(editor) { editor.duplicateSelection(); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" +}, { + name: "sortlines", + bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), + exec: function(editor) { editor.sortLines(); }, + scrollIntoView: "selection", + multiSelectAction: "forEachLine" +}, { + name: "togglecomment", + bindKey: bindKey("Ctrl-/", "Command-/"), + exec: function(editor) { editor.toggleCommentLines(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" +}, { + name: "toggleBlockComment", + bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), + exec: function(editor) { editor.toggleBlockComment(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" +}, { + name: "modifyNumberUp", + bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), + exec: function(editor) { editor.modifyNumber(1); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" +}, { + name: "modifyNumberDown", + bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), + exec: function(editor) { editor.modifyNumber(-1); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" +}, { + name: "replace", + bindKey: bindKey("Ctrl-H", "Command-Option-F"), + exec: function(editor) { + config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor, true);}); + } +}, { + name: "undo", + bindKey: bindKey("Ctrl-Z", "Command-Z"), + exec: function(editor) { editor.undo(); } +}, { + name: "redo", + bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), + exec: function(editor) { editor.redo(); } +}, { + name: "copylinesup", + bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), + exec: function(editor) { editor.copyLinesUp(); }, + scrollIntoView: "cursor" +}, { + name: "movelinesup", + bindKey: bindKey("Alt-Up", "Option-Up"), + exec: function(editor) { editor.moveLinesUp(); }, + scrollIntoView: "cursor" +}, { + name: "copylinesdown", + bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), + exec: function(editor) { editor.copyLinesDown(); }, + scrollIntoView: "cursor" +}, { + name: "movelinesdown", + bindKey: bindKey("Alt-Down", "Option-Down"), + exec: function(editor) { editor.moveLinesDown(); }, + scrollIntoView: "cursor" +}, { + name: "del", + bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), + exec: function(editor) { editor.remove("right"); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "backspace", + bindKey: bindKey( + "Shift-Backspace|Backspace", + "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H" + ), + exec: function(editor) { editor.remove("left"); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "cut_or_delete", + bindKey: bindKey("Shift-Delete", null), + exec: function(editor) { + if (editor.selection.isEmpty()) { + editor.remove("left"); + } else { + return false; + } + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "removetolinestart", + bindKey: bindKey("Alt-Backspace", "Command-Backspace"), + exec: function(editor) { editor.removeToLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "removetolineend", + bindKey: bindKey("Alt-Delete", "Ctrl-K|Command-Delete"), + exec: function(editor) { editor.removeToLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "removetolinestarthard", + bindKey: bindKey("Ctrl-Shift-Backspace", null), + exec: function(editor) { + var range = editor.selection.getRange(); + range.start.column = 0; + editor.session.remove(range); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "removetolineendhard", + bindKey: bindKey("Ctrl-Shift-Delete", null), + exec: function(editor) { + var range = editor.selection.getRange(); + range.end.column = Number.MAX_VALUE; + editor.session.remove(range); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "removewordleft", + bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), + exec: function(editor) { editor.removeWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "removewordright", + bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), + exec: function(editor) { editor.removeWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "outdent", + bindKey: bindKey("Shift-Tab", "Shift-Tab"), + exec: function(editor) { editor.blockOutdent(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" +}, { + name: "indent", + bindKey: bindKey("Tab", "Tab"), + exec: function(editor) { editor.indent(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" +}, { + name: "blockoutdent", + bindKey: bindKey("Ctrl-[", "Ctrl-["), + exec: function(editor) { editor.blockOutdent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" +}, { + name: "blockindent", + bindKey: bindKey("Ctrl-]", "Ctrl-]"), + exec: function(editor) { editor.blockIndent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" +}, { + name: "insertstring", + exec: function(editor, str) { editor.insert(str); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "inserttext", + exec: function(editor, args) { + editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "splitline", + bindKey: bindKey(null, "Ctrl-O"), + exec: function(editor) { editor.splitLine(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "transposeletters", + bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), + exec: function(editor) { editor.transposeLetters(); }, + multiSelectAction: function(editor) {editor.transposeSelections(1); }, + scrollIntoView: "cursor" +}, { + name: "touppercase", + bindKey: bindKey("Ctrl-U", "Ctrl-U"), + exec: function(editor) { editor.toUpperCase(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "tolowercase", + bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), + exec: function(editor) { editor.toLowerCase(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" +}, { + name: "expandtoline", + bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"), + exec: function(editor) { + var range = editor.selection.getRange(); + + range.start.column = range.end.column = 0; + range.end.row++; + editor.selection.setRange(range, false); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true +}, { + name: "joinlines", + bindKey: bindKey(null, null), + exec: function(editor) { + var isBackwards = editor.selection.isBackwards(); + var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); + var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); + var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length; + var selectedText = editor.session.doc.getTextRange(editor.selection.getRange()); + var selectedCount = selectedText.replace(/\n\s*/, " ").length; + var insertLine = editor.session.doc.getLine(selectionStart.row); + + for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) { + var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i))); + if (curLine.length !== 0) { + curLine = " " + curLine; + } + insertLine += curLine; + } + + if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) { + // Don't insert a newline at the end of the document + insertLine += editor.session.doc.getNewLineCharacter(); + } + + editor.clearSelection(); + editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine); + + if (selectedCount > 0) { + // Select the text that was previously selected + editor.selection.moveCursorTo(selectionStart.row, selectionStart.column); + editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount); + } else { + // If the joined line had something in it, start the cursor at that something + firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol; + editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol); + } + }, + multiSelectAction: "forEach", + readOnly: true +}, { + name: "invertSelection", + bindKey: bindKey(null, null), + exec: function(editor) { + var endRow = editor.session.doc.getLength() - 1; + var endCol = editor.session.doc.getLine(endRow).length; + var ranges = editor.selection.rangeList.ranges; + var newRanges = []; + + // If multiple selections don't exist, rangeList will return 0 so replace with single range + if (ranges.length < 1) { + ranges = [editor.selection.getRange()]; + } + + for (var i = 0; i < ranges.length; i++) { + if (i == (ranges.length - 1)) { + // The last selection must connect to the end of the document, unless it already does + if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) { + newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol)); + } + } + + if (i === 0) { + // The first selection must connect to the start of the document, unless it already does + if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) { + newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column)); + } + } else { + newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column)); + } + } + + editor.exitMultiSelectMode(); + editor.clearSelection(); + + for(var i = 0; i < newRanges.length; i++) { + editor.selection.addRange(newRanges[i], false); + } + }, + readOnly: true, + scrollIntoView: "none" +}]; + +}); diff --git a/plugins/node_modules/ace/lib/ace/commands/incremental_search_commands.js b/plugins/node_modules/ace/lib/ace/commands/incremental_search_commands.js new file mode 100644 index 00000000..19548665 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/commands/incremental_search_commands.js @@ -0,0 +1,214 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var config = require("../config"); +var oop = require("../lib/oop"); +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var occurStartCommand = require("./occur_commands").occurStartCommand; + +// These commands can be installed in a normal key handler to start iSearch: +exports.iSearchStartCommands = [{ + name: "iSearch", + bindKey: {win: "Ctrl-F", mac: "Command-F"}, + exec: function(editor, options) { + config.loadModule(["core", "ace/incremental_search"], function(e) { + var iSearch = e.iSearch = e.iSearch || new e.IncrementalSearch(); + iSearch.activate(editor, options.backwards); + if (options.jumpToFirstMatch) iSearch.next(options); + }); + }, + readOnly: true +}, { + name: "iSearchBackwards", + exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {backwards: true}); }, + readOnly: true +}, { + name: "iSearchAndGo", + bindKey: {win: "Ctrl-K", mac: "Command-G"}, + exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {jumpToFirstMatch: true, useCurrentOrPrevSearch: true}); }, + readOnly: true +}, { + name: "iSearchBackwardsAndGo", + bindKey: {win: "Ctrl-Shift-K", mac: "Command-Shift-G"}, + exec: function(editor) { editor.execCommand('iSearch', {jumpToFirstMatch: true, backwards: true, useCurrentOrPrevSearch: true}); }, + readOnly: true +}]; + +// These commands are only available when incremental search mode is active: +exports.iSearchCommands = [{ + name: "restartSearch", + bindKey: {win: "Ctrl-F", mac: "Command-F"}, + exec: function(iSearch) { + iSearch.cancelSearch(true); + } +}, { + name: "searchForward", + bindKey: {win: "Ctrl-S|Ctrl-K", mac: "Ctrl-S|Command-G"}, + exec: function(iSearch, options) { + options.useCurrentOrPrevSearch = true; + iSearch.next(options); + } +}, { + name: "searchBackward", + bindKey: {win: "Ctrl-R|Ctrl-Shift-K", mac: "Ctrl-R|Command-Shift-G"}, + exec: function(iSearch, options) { + options.useCurrentOrPrevSearch = true; + options.backwards = true; + iSearch.next(options); + } +}, { + name: "extendSearchTerm", + exec: function(iSearch, string) { + iSearch.addString(string); + } +}, { + name: "extendSearchTermSpace", + bindKey: "space", + exec: function(iSearch) { iSearch.addString(' '); } +}, { + name: "shrinkSearchTerm", + bindKey: "backspace", + exec: function(iSearch) { + iSearch.removeChar(); + } +}, { + name: 'confirmSearch', + bindKey: 'return', + exec: function(iSearch) { iSearch.deactivate(); } +}, { + name: 'cancelSearch', + bindKey: 'esc|Ctrl-G', + exec: function(iSearch) { iSearch.deactivate(true); } +}, { + name: 'occurisearch', + bindKey: 'Ctrl-O', + exec: function(iSearch) { + var options = oop.mixin({}, iSearch.$options); + iSearch.deactivate(); + occurStartCommand.exec(iSearch.$editor, options); + } +}, { + name: "yankNextWord", + bindKey: "Ctrl-w", + exec: function(iSearch) { + var ed = iSearch.$editor, + range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorWordRight(); }), + string = ed.session.getTextRange(range); + iSearch.addString(string); + } +}, { + name: "yankNextChar", + bindKey: "Ctrl-Alt-y", + exec: function(iSearch) { + var ed = iSearch.$editor, + range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorRight(); }), + string = ed.session.getTextRange(range); + iSearch.addString(string); + } +}, { + name: 'recenterTopBottom', + bindKey: 'Ctrl-l', + exec: function(iSearch) { iSearch.$editor.execCommand('recenterTopBottom'); } +}, { + name: 'selectAllMatches', + bindKey: 'Ctrl-space', + exec: function(iSearch) { + var ed = iSearch.$editor, + hl = ed.session.$isearchHighlight, + ranges = hl && hl.cache ? hl.cache + .reduce(function(ranges, ea) { + return ranges.concat(ea ? ea : []); }, []) : []; + iSearch.deactivate(false); + ranges.forEach(ed.selection.addRange.bind(ed.selection)); + } +}, { + name: 'searchAsRegExp', + bindKey: 'Alt-r', + exec: function(iSearch) { + iSearch.convertNeedleToRegExp(); + } +}].map(function(cmd) { + cmd.readOnly = true; + cmd.isIncrementalSearchCommand = true; + cmd.scrollIntoView = "animate-cursor"; + return cmd; +}); + +function IncrementalSearchKeyboardHandler(iSearch) { + this.$iSearch = iSearch; +} + +oop.inherits(IncrementalSearchKeyboardHandler, HashHandler); + +(function() { + + this.attach = function(editor) { + var iSearch = this.$iSearch; + HashHandler.call(this, exports.iSearchCommands, editor.commands.platform); + this.$commandExecHandler = editor.commands.addEventListener('exec', function(e) { + if (!e.command.isIncrementalSearchCommand) + return iSearch.deactivate(); + e.stopPropagation(); + e.preventDefault(); + var scrollTop = editor.session.getScrollTop(); + var result = e.command.exec(iSearch, e.args || {}); + editor.renderer.scrollCursorIntoView(null, 0.5); + editor.renderer.animateScrolling(scrollTop); + return result; + }); + }; + + this.detach = function(editor) { + if (!this.$commandExecHandler) return; + editor.commands.removeEventListener('exec', this.$commandExecHandler); + delete this.$commandExecHandler; + }; + + var handleKeyboard$super = this.handleKeyboard; + this.handleKeyboard = function(data, hashId, key, keyCode) { + if (((hashId === 1/*ctrl*/ || hashId === 8/*command*/) && key === 'v') + || (hashId === 1/*ctrl*/ && key === 'y')) return null; + var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); + if (cmd.command) { return cmd; } + if (hashId == -1) { + var extendCmd = this.commands.extendSearchTerm; + if (extendCmd) { return {command: extendCmd, args: key}; } + } + return false; + }; + +}).call(IncrementalSearchKeyboardHandler.prototype); + + +exports.IncrementalSearchKeyboardHandler = IncrementalSearchKeyboardHandler; + +}); diff --git a/plugins/node_modules/ace/lib/ace/commands/multi_select_commands.js b/plugins/node_modules/ace/lib/ace/commands/multi_select_commands.js new file mode 100644 index 00000000..26adc835 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/commands/multi_select_commands.js @@ -0,0 +1,113 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +// commands to enter multiselect mode +exports.defaultCommands = [{ + name: "addCursorAbove", + exec: function(editor) { editor.selectMoreLines(-1); }, + bindKey: {win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up"}, + scrollIntoView: "cursor", + readOnly: true +}, { + name: "addCursorBelow", + exec: function(editor) { editor.selectMoreLines(1); }, + bindKey: {win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down"}, + scrollIntoView: "cursor", + readOnly: true +}, { + name: "addCursorAboveSkipCurrent", + exec: function(editor) { editor.selectMoreLines(-1, true); }, + bindKey: {win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up"}, + scrollIntoView: "cursor", + readOnly: true +}, { + name: "addCursorBelowSkipCurrent", + exec: function(editor) { editor.selectMoreLines(1, true); }, + bindKey: {win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down"}, + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectMoreBefore", + exec: function(editor) { editor.selectMore(-1); }, + bindKey: {win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left"}, + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectMoreAfter", + exec: function(editor) { editor.selectMore(1); }, + bindKey: {win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right"}, + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectNextBefore", + exec: function(editor) { editor.selectMore(-1, true); }, + bindKey: {win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left"}, + scrollIntoView: "cursor", + readOnly: true +}, { + name: "selectNextAfter", + exec: function(editor) { editor.selectMore(1, true); }, + bindKey: {win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right"}, + scrollIntoView: "cursor", + readOnly: true +}, { + name: "splitIntoLines", + exec: function(editor) { editor.multiSelect.splitIntoLines(); }, + bindKey: {win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L"}, + readOnly: true +}, { + name: "alignCursors", + exec: function(editor) { editor.alignCursors(); }, + bindKey: {win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A"}, + scrollIntoView: "cursor" +}, { + name: "findAll", + exec: function(editor) { editor.findAll(); }, + bindKey: {win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G"}, + scrollIntoView: "cursor", + readOnly: true +}]; + +// commands active only in multiselect mode +exports.multiSelectCommands = [{ + name: "singleSelection", + bindKey: "esc", + exec: function(editor) { editor.exitMultiSelectMode(); }, + scrollIntoView: "cursor", + readOnly: true, + isAvailable: function(editor) {return editor && editor.inMultiSelectMode;} +}]; + +var HashHandler = require("../keyboard/hash_handler").HashHandler; +exports.keyboardHandler = new HashHandler(exports.multiSelectCommands); + +}); diff --git a/plugins/node_modules/ace/lib/ace/commands/occur_commands.js b/plugins/node_modules/ace/lib/ace/commands/occur_commands.js new file mode 100644 index 00000000..fd656481 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/commands/occur_commands.js @@ -0,0 +1,110 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var config = require("../config"), + Occur = require("../occur").Occur; + +// These commands can be installed in a normal command handler to start occur: +var occurStartCommand = { + name: "occur", + exec: function(editor, options) { + var alreadyInOccur = !!editor.session.$occur; + var occurSessionActive = new Occur().enter(editor, options); + if (occurSessionActive && !alreadyInOccur) + OccurKeyboardHandler.installIn(editor); + }, + readOnly: true +}; + +var occurCommands = [{ + name: "occurexit", + bindKey: 'esc|Ctrl-G', + exec: function(editor) { + var occur = editor.session.$occur; + if (!occur) return; + occur.exit(editor, {}); + if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); + }, + readOnly: true +}, { + name: "occuraccept", + bindKey: 'enter', + exec: function(editor) { + var occur = editor.session.$occur; + if (!occur) return; + occur.exit(editor, {translatePosition: true}); + if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); + }, + readOnly: true +}]; + +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var oop = require("../lib/oop"); + + +function OccurKeyboardHandler() {} + +oop.inherits(OccurKeyboardHandler, HashHandler); + +(function() { + + this.isOccurHandler = true; + + this.attach = function(editor) { + HashHandler.call(this, occurCommands, editor.commands.platform); + this.$editor = editor; + }; + + var handleKeyboard$super = this.handleKeyboard; + this.handleKeyboard = function(data, hashId, key, keyCode) { + var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); + return (cmd && cmd.command) ? cmd : undefined; + }; + +}).call(OccurKeyboardHandler.prototype); + +OccurKeyboardHandler.installIn = function(editor) { + var handler = new this(); + editor.keyBinding.addKeyboardHandler(handler); + editor.commands.addCommands(occurCommands); +}; + +OccurKeyboardHandler.uninstallFrom = function(editor) { + editor.commands.removeCommands(occurCommands); + var handler = editor.getKeyboardHandler(); + if (handler.isOccurHandler) + editor.keyBinding.removeKeyboardHandler(handler); +}; + +exports.occurStartCommand = occurStartCommand; + +}); diff --git a/plugins/node_modules/ace/lib/ace/config.js b/plugins/node_modules/ace/lib/ace/config.js new file mode 100644 index 00000000..7122708d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/config.js @@ -0,0 +1,202 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"no use strict"; + +var lang = require("./lib/lang"); +var oop = require("./lib/oop"); +var net = require("./lib/net"); +var AppConfig = require("./lib/app_config").AppConfig; + +module.exports = exports = new AppConfig(); + +var global = (function() { + return this || typeof window != "undefined" && window; +})(); + +var options = { + packaged: false, + workerPath: null, + modePath: null, + themePath: null, + basePath: "", + suffix: ".js", + $moduleUrls: {} +}; + +exports.get = function(key) { + if (!options.hasOwnProperty(key)) + throw new Error("Unknown config key: " + key); + + return options[key]; +}; + +exports.set = function(key, value) { + if (!options.hasOwnProperty(key)) + throw new Error("Unknown config key: " + key); + + options[key] = value; +}; + +exports.all = function() { + return lang.copyObject(options); +}; + +// module loading +exports.moduleUrl = function(name, component) { + if (options.$moduleUrls[name]) + return options.$moduleUrls[name]; + + var parts = name.split("/"); + component = component || parts[parts.length - 2] || ""; + + // todo make this configurable or get rid of '-' + var sep = component == "snippets" ? "/" : "-"; + var base = parts[parts.length - 1]; + if (component == "worker" && sep == "-") { + var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g"); + base = base.replace(re, ""); + } + + if ((!base || base == component) && parts.length > 1) + base = parts[parts.length - 2]; + var path = options[component + "Path"]; + if (path == null) { + path = options.basePath; + } else if (sep == "/") { + component = sep = ""; + } + if (path && path.slice(-1) != "/") + path += "/"; + return path + component + sep + base + this.get("suffix"); +}; + +exports.setModuleUrl = function(name, subst) { + return options.$moduleUrls[name] = subst; +}; + +exports.$loading = {}; +exports.loadModule = function(moduleName, onLoad) { + var module, moduleType; + if (Array.isArray(moduleName)) { + moduleType = moduleName[0]; + moduleName = moduleName[1]; + } + + try { + module = require(moduleName); + } catch (e) {} + // require(moduleName) can return empty object if called after require([moduleName], callback) + if (module && !exports.$loading[moduleName]) + return onLoad && onLoad(module); + + if (!exports.$loading[moduleName]) + exports.$loading[moduleName] = []; + + exports.$loading[moduleName].push(onLoad); + + if (exports.$loading[moduleName].length > 1) + return; + + var afterLoad = function() { + require([moduleName], function(module) { + exports._emit("load.module", {name: moduleName, module: module}); + var listeners = exports.$loading[moduleName]; + exports.$loading[moduleName] = null; + listeners.forEach(function(onLoad) { + onLoad && onLoad(module); + }); + }); + }; + + if (!exports.get("packaged")) + return afterLoad(); + net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); +}; + +// initialization +function init(packaged) { + if (!global || !global.document) + return; + + options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged); + + var scriptOptions = {}; + var scriptUrl = ""; + + // Use currentScript.ownerDocument in case this file was loaded from imported document. (HTML Imports) + var currentScript = (document.currentScript || document._currentScript ); // native or polyfill + var currentDocument = currentScript && currentScript.ownerDocument || document; + + var scripts = currentDocument.getElementsByTagName("script"); + for (var i=0; i*-{@IKxT-e*Hm6e;L;i*OLTOK@PW z(cUAx#7p88gBpFzp_4YyZns0z>9j%hPvRGY8hy-Fqg(NK{QY1sD9z{d?~BFa2ZI`Y z%%PJq;dZ;7Xs3y)6iGS_ZBOgI>5vFcGxoaJ&kHv=tJJGU51D;~#PhO{v7iEBnR;cGM+2Mn~M(dZl340MK#*uV-C zw;3|<5vv~6#It6z>0!t~6{{ZTq(0Hh%gcSbg?H%srU=ZT^LRX`)oS&y)oKaB96Biz z^?Lo#<#OTW+Z2I0boAz*hr{8cPN#D$0(0o3Ow4Ap1N=+7-F}~Hiyrhbhi)>NJob9M zzDOi;)a&(pdeFxlI@zOq^ZNSwHN9j{mL28jV-6jlQ}s=)T~3zI@E|mjl2nm2yv(p1DzpN=@EsRWm-|FS*8_+8l0fTVo_mGi$V>3 zYGth!wJ6k3hWMh@q85c3m;m`qCc~LxWvD@zf%b1g4Z;kxW}${n=rV;k)Bv+kqs1iD ph!KYx#yr$8>rk@}HUCwp`3*kwRI8RHvCaSh002ovPDHLkV1gg!UI_pI literal 0 HcmV?d00001 diff --git a/plugins/node_modules/ace/lib/ace/css/editor.css b/plugins/node_modules/ace/lib/ace/css/editor.css new file mode 100644 index 00000000..9d7cf9d8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/css/editor.css @@ -0,0 +1,474 @@ +.ace_editor { + position: relative; + overflow: hidden; + font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace; + direction: ltr; + text-align: left; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.ace_scroller { + position: absolute; + overflow: hidden; + top: 0; + bottom: 0; + background-color: inherit; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; + cursor: text; +} + +.ace_content { + position: absolute; + box-sizing: border-box; + min-width: 100%; +} + +.ace_dragging .ace_scroller:before{ + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + content: ''; + background: rgba(250, 250, 250, 0.01); + z-index: 1000; +} +.ace_dragging.ace_dark .ace_scroller:before{ + background: rgba(0, 0, 0, 0.01); +} + +/*.ace_selecting, .ace_selecting * { + cursor: text !important; +}*/ + +.ace_gutter { + position: absolute; + overflow : hidden; + width: auto; + top: 0; + bottom: 0; + left: 0; + cursor: default; + z-index: 4; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; +} + +.ace_gutter-active-line { + position: absolute; + left: 0; + right: 0; +} + +.ace_scroller.ace_scroll-left { + box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; +} + +.ace_gutter-cell { + padding-left: 19px; + padding-right: 6px; + background-repeat: no-repeat; +} + +.ace_gutter-cell.ace_error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: 2px center; +} + +.ace_gutter-cell.ace_warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); + background-position: 2px center; +} + +.ace_gutter-cell.ace_info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); + background-position: 2px center; +} +.ace_dark .ace_gutter-cell.ace_info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); +} + +.ace_scrollbar { + position: absolute; + right: 0; + bottom: 0; + z-index: 6; +} + +.ace_scrollbar-inner { + position: absolute; + cursor: text; + left: 0; + top: 0; +} + +.ace_scrollbar-v{ + overflow-x: hidden; + overflow-y: scroll; + top: 0; +} + +.ace_scrollbar-h { + overflow-x: scroll; + overflow-y: hidden; + left: 0; +} + +.ace_print-margin { + position: absolute; + height: 100%; +} + +.ace_text-input { + position: absolute; + z-index: 0; + width: 0.5em; + height: 1em; + opacity: 0; + background: transparent; + -moz-appearance: none; + appearance: none; + border: none; + resize: none; + outline: none; + overflow: hidden; + font: inherit; + padding: 0 1px; + margin: 0 -1px; + text-indent: -1em; + -ms-user-select: text; + -moz-user-select: text; + -webkit-user-select: text; + user-select: text; + /*with `pre-line` chrome inserts   instead of space*/ + white-space: pre!important; +} +.ace_text-input.ace_composition { + background: inherit; + color: inherit; + z-index: 1000; + opacity: 1; + text-indent: 0; +} +[ace_nocontext=true] { + transform: none!important; + filter: none!important; + perspective: none!important; + clip-path: none!important; + mask : none!important; + contain: none!important; + perspective: none!important; + mix-blend-mode: initial!important; + z-index: auto; +} + +.ace_layer { + z-index: 1; + position: absolute; + overflow: hidden; + /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/ + word-wrap: normal; + white-space: pre; + height: 100%; + width: 100%; + box-sizing: border-box; + /* setting pointer-events: auto; on node under the mouse, which changes + during scroll, will break mouse wheel scrolling in Safari */ + pointer-events: none; +} + +.ace_gutter-layer { + position: relative; + width: auto; + text-align: right; + pointer-events: auto; +} + +.ace_text-layer { + font: inherit !important; +} + +.ace_cjk { + display: inline-block; + text-align: center; +} + +.ace_cursor-layer { + z-index: 4; +} + +.ace_cursor { + z-index: 4; + position: absolute; + box-sizing: border-box; + border-left: 2px solid; + /* workaround for smooth cursor repaintng whole screen in chrome */ + transform: translatez(0); +} + +.ace_multiselect .ace_cursor { + border-left-width: 1px; +} + +.ace_slim-cursors .ace_cursor { + border-left-width: 1px; +} + +.ace_overwrite-cursors .ace_cursor { + border-left-width: 0; + border-bottom: 1px solid; +} + +.ace_hidden-cursors .ace_cursor { + opacity: 0.2; +} + +.ace_smooth-blinking .ace_cursor { + transition: opacity 0.18s; +} + +.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { + position: absolute; + z-index: 3; +} + +.ace_marker-layer .ace_selection { + position: absolute; + z-index: 5; +} + +.ace_marker-layer .ace_bracket { + position: absolute; + z-index: 6; +} + +.ace_marker-layer .ace_active-line { + position: absolute; + z-index: 2; +} + +.ace_marker-layer .ace_selected-word { + position: absolute; + z-index: 4; + box-sizing: border-box; +} + +.ace_line .ace_fold { + box-sizing: border-box; + + display: inline-block; + height: 11px; + margin-top: -2px; + vertical-align: middle; + + background-image: + url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), + url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); + background-repeat: no-repeat, repeat-x; + background-position: center center, top left; + color: transparent; + + border: 1px solid black; + border-radius: 2px; + + cursor: pointer; + pointer-events: auto; +} + +.ace_dark .ace_fold { +} + +.ace_fold:hover{ + background-image: + url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), + url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); +} + +.ace_tooltip { + background-color: #FFF; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); + border: 1px solid gray; + border-radius: 1px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + color: black; + max-width: 100%; + padding: 3px 4px; + position: fixed; + z-index: 999999; + box-sizing: border-box; + cursor: default; + white-space: pre; + word-wrap: break-word; + line-height: normal; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + pointer-events: none; +} + +.ace_folding-enabled > .ace_gutter-cell { + padding-right: 13px; +} + +.ace_fold-widget { + box-sizing: border-box; + + margin: 0 -12px 0 1px; + display: none; + width: 11px; + vertical-align: top; + + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: center; + + border-radius: 3px; + + border: 1px solid transparent; + cursor: pointer; +} + +.ace_folding-enabled .ace_fold-widget { + display: inline-block; +} + +.ace_fold-widget.ace_end { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); +} + +.ace_fold-widget.ace_closed { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); +} + +.ace_fold-widget:hover { + border: 1px solid rgba(0, 0, 0, 0.3); + background-color: rgba(255, 255, 255, 0.2); + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); +} + +.ace_fold-widget:active { + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); +} +/** + * Dark version for fold widgets + */ +.ace_dark .ace_fold-widget { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); +} +.ace_dark .ace_fold-widget.ace_end { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); +} +.ace_dark .ace_fold-widget.ace_closed { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); +} +.ace_dark .ace_fold-widget:hover { + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.1); +} +.ace_dark .ace_fold-widget:active { + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); +} + +.ace_inline_button { + border: 1px solid lightgray; + display: inline-block; + margin: -1px 8px; + padding: 0 5px; + pointer-events: auto; + cursor: pointer; +} +.ace_inline_button:hover { + border-color: gray; + background: rgba(200,200,200,0.2); + display: inline-block; + pointer-events: auto; +} + +.ace_fold-widget.ace_invalid { + background-color: #FFB4B4; + border-color: #DE5555; +} + +.ace_fade-fold-widgets .ace_fold-widget { + transition: opacity 0.4s ease 0.05s; + opacity: 0; +} + +.ace_fade-fold-widgets:hover .ace_fold-widget { + transition: opacity 0.05s ease 0.05s; + opacity:1; +} + +.ace_underline { + text-decoration: underline; +} + +.ace_bold { + font-weight: bold; +} + +.ace_nobold .ace_bold { + font-weight: normal; +} + +.ace_italic { + font-style: italic; +} + + +.ace_error-marker { + background-color: rgba(255, 0, 0,0.2); + position: absolute; + z-index: 9; +} + +.ace_highlight-marker { + background-color: rgba(255, 255, 0,0.2); + position: absolute; + z-index: 8; +} +.ace_lineWidgetContainer { + z-index: 5; + position: absolute; +} + +/* +styles = [] +for (var i = 1; i < 16; i++) { + styles.push(".ace_br" + i + "{" + ( + ["top-left", "top-right", "bottom-right", "bottom-left"] + ).map(function(x, j) { + return i & (1<yUwf>u=@1 zY#$jHaV+ZCAtV^WB3Kyv<$w6rgPN^}mk4&16mz$?oHnuK^xU*br+VqTIh{}QCzbwQ z#1x(MbFxM9Gg0O2k3UQ29cYXAr*Lnob`1;br1jm literal 0 HcmV?d00001 diff --git a/plugins/node_modules/ace/lib/ace/document.js b/plugins/node_modules/ace/lib/ace/document.js new file mode 100644 index 00000000..245f66ba --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/document.js @@ -0,0 +1,692 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; + +/** + * Contains the text of the document. Document can be attached to several [[EditSession `EditSession`]]s. + * At its core, `Document`s are just an array of strings, with each row in the document matching up to the array index. + * + * @class Document + **/ + +/** + * + * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty. + * @param {String | Array} text The starting text + * @constructor + **/ + +var Document = function(textOrLines) { + this.$lines = [""]; + + // There has to be one line at least in the document. If you pass an empty + // string to the insert function, nothing will happen. Workaround. + if (textOrLines.length === 0) { + this.$lines = [""]; + } else if (Array.isArray(textOrLines)) { + this.insertMergedLines({row: 0, column: 0}, textOrLines); + } else { + this.insert({row: 0, column:0}, textOrLines); + } +}; + +(function() { + + oop.implement(this, EventEmitter); + + /** + * Replaces all the lines in the current `Document` with the value of `text`. + * + * @param {String} text The text to use + **/ + this.setValue = function(text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({row: 0, column: 0}, text); + }; + + /** + * Returns all the lines in the document as a single string, joined by the new line character. + **/ + this.getValue = function() { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + + /** + * Creates a new `Anchor` to define a floating point in the document. + * @param {Number} row The row number to use + * @param {Number} column The column number to use + * + **/ + this.createAnchor = function(row, column) { + return new Anchor(this, row, column); + }; + + /** + * Splits a string of text on any newline (`\n`) or carriage-return (`\r`) characters. + * + * @method $split + * @param {String} text The text to work with + * @returns {String} A String array, with each index containing a piece of the original `text` string. + * + **/ + + // check for IE split bug + if ("aaa".split(/a/).length === 0) { + this.$split = function(text) { + return text.replace(/\r\n|\r/g, "\n").split("\n"); + }; + } else { + this.$split = function(text) { + return text.split(/\r\n|\r|\n/); + }; + } + + + this.$detectNewLine = function(text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + + /** + * Returns the newline character that's being used, depending on the value of `newLineMode`. + * @returns {String} If `newLineMode == windows`, `\r\n` is returned. + * If `newLineMode == unix`, `\n` is returned. + * If `newLineMode == auto`, the value of `autoNewLine` is returned. + * + **/ + this.getNewLineCharacter = function() { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + + this.$autoNewLine = ""; + this.$newLineMode = "auto"; + /** + * [Sets the new line mode.]{: #Document.setNewLineMode.desc} + * @param {String} newLineMode [The newline mode to use; can be either `windows`, `unix`, or `auto`]{: #Document.setNewLineMode.param} + * + **/ + this.setNewLineMode = function(newLineMode) { + if (this.$newLineMode === newLineMode) + return; + + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + + /** + * [Returns the type of newlines being used; either `windows`, `unix`, or `auto`]{: #Document.getNewLineMode} + * @returns {String} + **/ + this.getNewLineMode = function() { + return this.$newLineMode; + }; + + /** + * Returns `true` if `text` is a newline character (either `\r\n`, `\r`, or `\n`). + * @param {String} text The text to check + * + **/ + this.isNewLine = function(text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + + /** + * Returns a verbatim copy of the given line as it is in the document + * @param {Number} row The row index to retrieve + * + **/ + this.getLine = function(row) { + return this.$lines[row] || ""; + }; + + /** + * Returns an array of strings of the rows between `firstRow` and `lastRow`. This function is inclusive of `lastRow`. + * @param {Number} firstRow The first row index to retrieve + * @param {Number} lastRow The final row index to retrieve + * + **/ + this.getLines = function(firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + + /** + * Returns all lines in the document as string array. + **/ + this.getAllLines = function() { + return this.getLines(0, this.getLength()); + }; + + /** + * Returns the number of rows in the document. + **/ + this.getLength = function() { + return this.$lines.length; + }; + + /** + * Returns all the text within `range` as a single string. + * @param {Range} range The range to work with. + * + * @returns {String} + **/ + this.getTextRange = function(range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + + /** + * Returns all the text within `range` as an array of lines. + * @param {Range} range The range to work with. + * + * @returns {Array} + **/ + this.getLinesForRange = function(range) { + var lines; + if (range.start.row === range.end.row) { + // Handle a single-line range. + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } else { + // Handle a multi-line range. + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + + // Deprecated methods retained for backwards compatibility. + this.insertLines = function(row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + this.removeLines = function(firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + this.insertNewLine = function(position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + + /** + * Inserts a block of `text` at the indicated `position`. + * @param {Object} position The position to start inserting at; it's an object that looks like `{ row: row, column: column}` + * @param {String} text A chunk of text to insert + * @returns {Object} The position ({row, column}) of the last line of `text`. If the length of `text` is 0, this function simply returns `position`. + * + **/ + this.insert = function(position, text) { + // Only detect new lines if the document has no line break yet. + if (this.getLength() <= 1) + this.$detectNewLine(text); + + return this.insertMergedLines(position, this.$split(text)); + }; + + /** + * Inserts `text` into the `position` at the current row. This method also triggers the `"change"` event. + * + * This differs from the `insert` method in two ways: + * 1. This does NOT handle newline characters (single-line text only). + * 2. This is faster than the `insert` method for single-line text insertions. + * + * @param {Object} position The position to insert at; it's an object that looks like `{ row: row, column: column}` + * @param {String} text A chunk of text + * @returns {Object} Returns an object containing the final row and column, like this: + * ``` + * {row: endRow, column: 0} + * ``` + **/ + this.insertInLine = function(position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + + return this.clonePos(end); + }; + + this.clippedPos = function(row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } else if (row < 0) { + row = 0; + } else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return {row: row, column: column}; + }; + + this.clonePos = function(pos) { + return {row: pos.row, column: pos.column}; + }; + + this.pos = function(row, column) { + return {row: row, column: column}; + }; + + this.$clipPosition = function(position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + + /** + * Fires whenever the document changes. + * + * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available: + * + * * `"insert"` + * * `range`: the [[Range]] of the change within the document + * * `lines`: the lines being added + * * `"remove"` + * * `range`: the [[Range]] of the change within the document + * * `lines`: the lines being removed + * + * @event change + * @param {Object} e Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties. + * + **/ + + /** + * Inserts the elements in `lines` into the document as full lines (does not merge with existing line), starting at the row index given by `row`. This method also triggers the `"change"` event. + * @param {Number} row The index of the row to insert at + * @param {Array} lines An array of strings + * @returns {Object} Contains the final row and column, like this: + * ``` + * {row: endRow, column: 0} + * ``` + * If `lines` is empty, this function returns an object containing the current row, and column, like this: + * ``` + * {row: row, column: 0} + * ``` + * + **/ + this.insertFullLines = function(row, lines) { + // Clip to document. + // Allow one past the document end. + row = Math.min(Math.max(row, 0), this.getLength()); + + // Calculate insertion point. + var column = 0; + if (row < this.getLength()) { + // Insert before the specified row. + lines = lines.concat([""]); + column = 0; + } else { + // Insert after the last row in the document. + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + + // Insert. + this.insertMergedLines({row: row, column: column}, lines); + }; + + /** + * Inserts the elements in `lines` into the document, starting at the position index given by `row`. This method also triggers the `"change"` event. + * @param {Number} row The index of the row to insert at + * @param {Array} lines An array of strings + * @returns {Object} Contains the final row and column, like this: + * ``` + * {row: endRow, column: 0} + * ``` + * If `lines` is empty, this function returns an object containing the current row, and column, like this: + * ``` + * {row: row, column: 0} + * ``` + * + **/ + this.insertMergedLines = function(position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + + return this.clonePos(end); + }; + + /** + * Removes the `range` from the document. + * @param {Range} range A specified Range to remove + * @returns {Object} Returns the new `start` property of the range, which contains `startRow` and `startColumn`. If `range` is empty, this function returns the unmodified value of `range.start`. + * + **/ + this.remove = function(range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({start: start, end: end}) + }); + return this.clonePos(start); + }; + + /** + * Removes the specified columns from the `row`. This method also triggers a `"change"` event. + * @param {Number} row The row to remove from + * @param {Number} startColumn The column to start removing at + * @param {Number} endColumn The column to stop removing at + * @returns {Object} Returns an object containing `startRow` and `startColumn`, indicating the new row and column values.
    If `startColumn` is equal to `endColumn`, this function returns nothing. + * + **/ + this.removeInLine = function(row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({start: start, end: end}) + }, true); + + return this.clonePos(start); + }; + + /** + * Removes a range of full lines. This method also triggers the `"change"` event. + * @param {Number} firstRow The first row to be removed + * @param {Number} lastRow The last row to be removed + * @returns {[String]} Returns all the removed lines. + * + **/ + this.removeFullLines = function(firstRow, lastRow) { + // Clip to document. + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); + + // Calculate deletion range. + // Delete the ending new line unless we're at the end of the document. + // If we're at the end of the document, delete the starting new line. + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow ); + var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 ); + var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow ); + var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); + var range = new Range(startRow, startCol, endRow, endCol); + + // Store delelted lines with bounding newlines ommitted (maintains previous behavior). + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + + // Return the deleted lines. + return deletedLines; + }; + + /** + * Removes the new line between `row` and the row immediately following it. This method also triggers the `"change"` event. + * @param {Number} row The row to check + * + **/ + this.removeNewLine = function(row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + + /** + * Replaces a range in the document with the new `text`. + * @param {Range} range A specified Range to replace + * @param {String} text The new text to use as a replacement + * @returns {Object} Returns an object containing the final row and column, like this: + * {row: endRow, column: 0} + * If the text and range are empty, this function returns an object containing the current `range.start` value. + * If the text is the exact same as what currently exists, this function returns an object containing the current `range.end` value. + * + **/ + this.replace = function(range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + + // Shortcut: If the text we want to insert is the same as it is already + // in the document, we don't have to replace anything. + if (text == this.getTextRange(range)) + return range.end; + + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + + return end; + }; + + /** + * Applies all changes in `deltas` to the document. + * @param {Array} deltas An array of delta objects (can include "insert" and "remove" actions) + **/ + this.applyDeltas = function(deltas) { + for (var i=0; i=0; i--) { + this.revertDelta(deltas[i]); + } + }; + + /** + * Applies `delta` to the document. + * @param {Object} delta A delta object (can include "insert" and "remove" actions) + **/ + this.applyDelta = function(delta, doNotValidate) { + var isInsert = delta.action == "insert"; + // An empty range is a NOOP. + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + + if (isInsert && delta.lines.length > 20000) + this.$splitAndapplyLargeDelta(delta, 20000); + + // Apply. + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + }; + + this.$splitAndapplyLargeDelta = function(delta, MAX) { + // Split large insert deltas. This is necessary because: + // 1. We need to support splicing delta lines into the document via $lines.splice.apply(...) + // 2. fn.apply() doesn't work for a large number of params. The smallest threshold is on chrome 40 ~42000. + // we use 20000 to leave some space for actual stack + // + // To Do: Ideally we'd be consistent and also split 'delete' deltas. We don't do this now, because delete + // delta handling is too slow. If we make delete delta handling faster we can split all large deltas + // as shown in https://gist.github.com/aldendaniels/8367109#file-document-snippet-js + // If we do this, update validateDelta() to limit the number of lines in a delete delta. + var lines = delta.lines; + var l = lines.length; + var row = delta.start.row; + var column = delta.start.column; + var from = 0, to = 0; + do { + from = to; + to += MAX - 1; + var chunk = lines.slice(from, to); + if (to > l) { + // Update remaining delta. + delta.lines = chunk; + delta.start.row = row + from; + delta.start.column = column; + break; + } + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } while(true); + }; + + /** + * Reverts `delta` from the document. + * @param {Object} delta A delta object (can include "insert" and "remove" actions) + **/ + this.revertDelta = function(delta) { + this.applyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + + /** + * Converts an index position in a document to a `{row, column}` object. + * + * Index refers to the "absolute position" of a character in the document. For example: + * + * ```javascript + * var x = 0; // 10 characters, plus one for newline + * var y = -1; + * ``` + * + * Here, `y` is an index 15: 11 characters for the first row, and 5 characters until `y` in the second. + * + * @param {Number} index An index to convert + * @param {Number} startRow=0 The row from which to start the conversion + * @returns {Object} A `{row, column}` object of the `index` position + */ + this.indexToPosition = function(index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return {row: i, column: index + lines[i].length + newlineLength}; + } + return {row: l-1, column: lines[l-1].length}; + }; + + /** + * Converts the `{row, column}` position in a document to the character's index. + * + * Index refers to the "absolute position" of a character in the document. For example: + * + * ```javascript + * var x = 0; // 10 characters, plus one for newline + * var y = -1; + * ``` + * + * Here, `y` is an index 15: 11 characters for the first row, and 5 characters until `y` in the second. + * + * @param {Object} pos The `{row, column}` to convert + * @param {Number} startRow=0 The row from which to start the conversion + * @returns {Number} The index position in the document + */ + this.positionToIndex = function(pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + + return index + pos.column; + }; + +}).call(Document.prototype); + +exports.Document = Document; +}); diff --git a/plugins/node_modules/ace/lib/ace/document_test.js b/plugins/node_modules/ace/lib/ace/document_test.js new file mode 100644 index 00000000..30048470 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/document_test.js @@ -0,0 +1,335 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var Document = require("./document").Document; +var Range = require("./range").Range; +var assert = require("./test/assertions"); + +module.exports = { + + "test: insert text in line" : function() { + var doc = new Document(["12", "34"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.insert({row: 0, column: 1}, "juhu"); + assert.equal(doc.getValue(), ["1juhu2", "34"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["12", "34"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["1juhu2", "34"].join("\n")); + }, + + "test: insert new line" : function() { + var doc = new Document(["12", "34"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.insertMergedLines({row: 0, column: 1}, ['', '']); + assert.equal(doc.getValue(), ["1", "2", "34"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["12", "34"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["1", "2", "34"].join("\n")); + }, + + "test: insert lines at the beginning" : function() { + var doc = new Document(["12", "34"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.insertFullLines(0, ["aa", "bb"]); + assert.equal(doc.getValue(), ["aa", "bb", "12", "34"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["12", "34"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["aa", "bb", "12", "34"].join("\n")); + }, + + "test: insert lines at the end" : function() { + var doc = new Document(["12", "34"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.insertFullLines(2, ["aa", "bb"]); + assert.equal(doc.getValue(), ["12", "34", "aa", "bb"].join("\n")); + }, + + "test: insert lines in the middle" : function() { + var doc = new Document(["12", "34"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.insertFullLines(1, ["aa", "bb"]); + assert.equal(doc.getValue(), ["12", "aa", "bb", "34"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["12", "34"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["12", "aa", "bb", "34"].join("\n")); + }, + + "test: insert multi line string at the start" : function() { + var doc = new Document(["12", "34"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.insert({row: 0, column: 0}, "aa\nbb\ncc"); + assert.equal(doc.getValue(), ["aa", "bb", "cc12", "34"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["12", "34"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["aa", "bb", "cc12", "34"].join("\n")); + }, + + "test: insert multi line string at the end" : function() { + var doc = new Document(["12", "34"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.insert({row: 1, column: 2}, "aa\nbb\ncc"); + assert.equal(doc.getValue(), ["12", "34aa", "bb", "cc"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["12", "34"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["12", "34aa", "bb", "cc"].join("\n")); + }, + + "test: insert multi line string in the middle" : function() { + var doc = new Document(["12", "34"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.insert({row: 0, column: 1}, "aa\nbb\ncc"); + assert.equal(doc.getValue(), ["1aa", "bb", "cc2", "34"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["12", "34"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["1aa", "bb", "cc2", "34"].join("\n")); + }, + + "test: delete in line" : function() { + var doc = new Document(["1234", "5678"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.remove(new Range(0, 1, 0, 3)); + assert.equal(doc.getValue(), ["14", "5678"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["1234", "5678"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["14", "5678"].join("\n")); + }, + + "test: delete new line" : function() { + var doc = new Document(["1234", "5678"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.remove(new Range(0, 4, 1, 0)); + assert.equal(doc.getValue(), ["12345678"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["1234", "5678"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["12345678"].join("\n")); + }, + + "test: delete multi line range line" : function() { + var doc = new Document(["1234", "5678", "abcd"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.remove(new Range(0, 2, 2, 2)); + assert.equal(doc.getValue(), ["12cd"].join("\n")); + + var d = deltas.concat(); + doc.revertDeltas(d); + assert.equal(doc.getValue(), ["1234", "5678", "abcd"].join("\n")); + + doc.applyDeltas(d); + assert.equal(doc.getValue(), ["12cd"].join("\n")); + }, + + "test: delete full lines" : function() { + var doc = new Document(["1234", "5678", "abcd"]); + + var deltas = []; + doc.on("change", function(e) { deltas.push(e); }); + + doc.remove(new Range(1, 0, 3, 0)); + assert.equal(doc.getValue(), ["1234", ""].join("\n")); + }, + + "test: remove lines should return the removed lines" : function() { + var doc = new Document(["1234", "5678", "abcd"]); + + var removed = doc.removeFullLines(1, 2); + assert.equal(removed.join("\n"), ["5678", "abcd"].join("\n")); + }, + + "test: should handle unix style new lines" : function() { + var doc = new Document(["1", "2", "3"]); + assert.equal(doc.getValue(), ["1", "2", "3"].join("\n")); + }, + + "test: should handle windows style new lines" : function() { + var doc = new Document(["1", "2", "3"].join("\r\n")); + + doc.setNewLineMode("unix"); + assert.equal(doc.getValue(), ["1", "2", "3"].join("\n")); + }, + + "test: set new line mode to 'windows' should use '\\r\\n' as new lines": function() { + var doc = new Document(["1", "2", "3"].join("\n")); + doc.setNewLineMode("windows"); + assert.equal(doc.getValue(), ["1", "2", "3"].join("\r\n")); + }, + + "test: set new line mode to 'unix' should use '\\n' as new lines": function() { + var doc = new Document(["1", "2", "3"].join("\r\n")); + + doc.setNewLineMode("unix"); + assert.equal(doc.getValue(), ["1", "2", "3"].join("\n")); + }, + + "test: set new line mode to 'auto' should detect the incoming nl type": function() { + var doc = new Document(["1", "2", "3"].join("\n")); + + doc.setNewLineMode("auto"); + assert.equal(doc.getValue(), ["1", "2", "3"].join("\n")); + + var doc = new Document(["1", "2", "3"].join("\r\n")); + + doc.setNewLineMode("auto"); + assert.equal(doc.getValue(), ["1", "2", "3"].join("\r\n")); + + doc.replace(new Range(0, 0, 2, 1), ["4", "5", "6"].join("\n")); + assert.equal(["4", "5", "6"].join("\n"), doc.getValue()); + }, + + "test: set value": function() { + var doc = new Document("1"); + assert.equal("1", doc.getValue()); + + doc.setValue(doc.getValue()); + assert.equal("1", doc.getValue()); + + var doc = new Document("1\n2"); + assert.equal("1\n2", doc.getValue()); + + doc.setValue(doc.getValue()); + assert.equal("1\n2", doc.getValue()); + }, + + "test: empty document has to contain one line": function() { + var doc = new Document(""); + assert.equal(doc.$lines.length, 1); + }, + + "test: ignore empty delta": function() { + var doc = new Document(""); + doc.on("change", function() { + throw "should ignore empty delta"; + }); + doc.insert({row: 0, column: 0}, ""); + doc.insert({row: 1, column: 1}, ""); + doc.remove({start: {row: 1, column: 1}, end: {row: 1, column: 1}}); + }, + + "test: inserting huge delta": function() { + var doc = new Document(""); + var val = ""; + var MAX = 0xF000; + for (var i = 0; i < 10 * MAX; i++) { + val += i + "\n"; + } + doc.setValue(val); + assert.equal(doc.getValue(), val); + + for (var i = 3 * MAX + 2; i >= 3 * MAX - 2; i--) { + val = doc.getLines(0, i).join("\n"); + doc.setValue("\nab"); + assert.equal(doc.getValue(), "\nab"); + doc.insert({row: 1, column: 1}, val); + assert.equal(doc.getValue(), "\na" + val + "b"); + } + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/edit_session.js b/plugins/node_modules/ace/lib/ace/edit_session.js new file mode 100644 index 00000000..fdd75858 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/edit_session.js @@ -0,0 +1,2559 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var lang = require("./lib/lang"); +var BidiHandler = require("./bidihandler").BidiHandler; +var config = require("./config"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Selection = require("./selection").Selection; +var TextMode = require("./mode/text").Mode; +var Range = require("./range").Range; +var Document = require("./document").Document; +var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer; +var SearchHighlight = require("./search_highlight").SearchHighlight; + +/** + * Stores all the data about [[Editor `Editor`]] state providing easy way to change editors state. + * + * `EditSession` can be attached to only one [[Document `Document`]]. Same `Document` can be attached to several `EditSession`s. + * @class EditSession + **/ + +//{ events +/** + * + * Emitted when the document changes. + * @event change + * @param {Object} e An object containing a `delta` of information about the change. + **/ +/** + * Emitted when the tab size changes, via [[EditSession.setTabSize]]. + * + * @event changeTabSize + **/ +/** + * Emitted when the ability to overwrite text changes, via [[EditSession.setOverwrite]]. + * + * @event changeOverwrite + **/ +/** + * Emitted when the gutter changes, either by setting or removing breakpoints, or when the gutter decorations change. + * + * @event changeBreakpoint + **/ +/** + * Emitted when a front marker changes. + * + * @event changeFrontMarker + **/ +/** + * Emitted when a back marker changes. + * + * @event changeBackMarker + **/ +/** + * Emitted when an annotation changes, like through [[EditSession.setAnnotations]]. + * + * @event changeAnnotation + **/ +/** + * Emitted when a background tokenizer asynchronously processes new rows. + * @event tokenizerUpdate + * + * @param {Object} e An object containing one property, `"data"`, that contains information about the changing rows + * + **/ +/** + * Emitted when the current mode changes. + * + * @event changeMode + * + **/ +/** + * Emitted when the wrap mode changes. + * + * @event changeWrapMode + * + **/ +/** + * Emitted when the wrapping limit changes. + * + * @event changeWrapLimit + * + **/ +/** + * Emitted when a code fold is added or removed. + * + * @event changeFold + * + **/ + /** + * Emitted when the scroll top changes. + * @event changeScrollTop + * + * @param {Number} scrollTop The new scroll top value + **/ +/** + * Emitted when the scroll left changes. + * @event changeScrollLeft + * + * @param {Number} scrollLeft The new scroll left value + **/ +//} + +/** + * Sets up a new `EditSession` and associates it with the given `Document` and `TextMode`. + * @param {Document | String} text [If `text` is a `Document`, it associates the `EditSession` with it. Otherwise, a new `Document` is created, with the initial text]{: #textParam} + * @param {TextMode} mode [The initial language mode to use for the document]{: #modeParam} + * + * @constructor + **/ + +var EditSession = function(text, mode) { + this.$breakpoints = []; + this.$decorations = []; + this.$frontMarkers = {}; + this.$backMarkers = {}; + this.$markerId = 1; + this.$undoSelect = true; + + this.$foldData = []; + this.id = "session" + (++EditSession.$uid); + this.$foldData.toString = function() { + return this.join("\n"); + }; + this.on("changeFold", this.onChangeFold.bind(this)); + this.$onChange = this.onChange.bind(this); + + if (typeof text != "object" || !text.getLine) + text = new Document(text); + + this.$bidiHandler = new BidiHandler(this); + this.setDocument(text); + this.selection = new Selection(this); + + config.resetOptions(this); + this.setMode(mode); + config._signal("session", this); +}; + + +EditSession.$uid = 0; + +(function() { + + oop.implement(this, EventEmitter); + + /** + * Sets the `EditSession` to point to a new `Document`. If a `BackgroundTokenizer` exists, it also points to `doc`. + * + * @param {Document} doc The new `Document` to use + * + **/ + this.setDocument = function(doc) { + if (this.doc) + this.doc.removeListener("change", this.$onChange); + + this.doc = doc; + doc.on("change", this.$onChange); + + if (this.bgTokenizer) + this.bgTokenizer.setDocument(this.getDocument()); + + this.resetCaches(); + }; + + /** + * Returns the `Document` associated with this session. + * @return {Document} + **/ + this.getDocument = function() { + return this.doc; + }; + + /** + * @param {Number} row The row to work with + * + **/ + this.$resetRowCache = function(docRow) { + if (!docRow) { + this.$docRowCache = []; + this.$screenRowCache = []; + return; + } + var l = this.$docRowCache.length; + var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1; + if (l > i) { + this.$docRowCache.splice(i, l); + this.$screenRowCache.splice(i, l); + } + }; + + this.$getRowCacheIndex = function(cacheArray, val) { + var low = 0; + var hi = cacheArray.length - 1; + + while (low <= hi) { + var mid = (low + hi) >> 1; + var c = cacheArray[mid]; + + if (val > c) + low = mid + 1; + else if (val < c) + hi = mid - 1; + else + return mid; + } + + return low -1; + }; + + this.resetCaches = function() { + this.$modified = true; + this.$wrapData = []; + this.$rowLengthCache = []; + this.$resetRowCache(0); + if (this.bgTokenizer) + this.bgTokenizer.start(0); + }; + + this.onChangeFold = function(e) { + var fold = e.data; + this.$resetRowCache(fold.start.row); + }; + + this.onChange = function(delta) { + this.$modified = true; + this.$bidiHandler.onChange(delta); + this.$resetRowCache(delta.start.row); + + var removedFolds = this.$updateInternalDataOnChange(delta); + if (!this.$fromUndo && this.$undoManager) { + if (removedFolds && removedFolds.length) { + this.$undoManager.add({ + action: "removeFolds", + folds: removedFolds + }, this.mergeUndoDeltas); + this.mergeUndoDeltas = true; + } + this.$undoManager.add(delta, this.mergeUndoDeltas); + this.mergeUndoDeltas = true; + + this.$informUndoManager.schedule(); + } + + this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta); + this._signal("change", delta); + }; + + /** + * Sets the session text. + * @param {String} text The new text to place + * + **/ + this.setValue = function(text) { + this.doc.setValue(text); + this.selection.moveTo(0, 0); + + this.$resetRowCache(0); + this.setUndoManager(this.$undoManager); + this.getUndoManager().reset(); + }; + + /** + * Returns the current [[Document `Document`]] as a string. + * @method toString + * @returns {String} + * @alias EditSession.getValue + * + **/ + + /** + * Returns the current [[Document `Document`]] as a string. + * @method getValue + * @returns {String} + * @alias EditSession.toString + **/ + this.getValue = + this.toString = function() { + return this.doc.getValue(); + }; + + /** + * Returns selection object. + **/ + this.getSelection = function() { + return this.selection; + }; + + /** + * {:BackgroundTokenizer.getState} + * @param {Number} row The row to start at + * + * @related BackgroundTokenizer.getState + **/ + this.getState = function(row) { + return this.bgTokenizer.getState(row); + }; + + /** + * Starts tokenizing at the row indicated. Returns a list of objects of the tokenized rows. + * @param {Number} row The row to start at + * + * + * + **/ + this.getTokens = function(row) { + return this.bgTokenizer.getTokens(row); + }; + + /** + * Returns an object indicating the token at the current row. The object has two properties: `index` and `start`. + * @param {Number} row The row number to retrieve from + * @param {Number} column The column number to retrieve from + * + * + **/ + this.getTokenAt = function(row, column) { + var tokens = this.bgTokenizer.getTokens(row); + var token, c = 0; + if (column == null) { + var i = tokens.length - 1; + c = this.getLine(row).length; + } else { + for (var i = 0; i < tokens.length; i++) { + c += tokens[i].value.length; + if (c >= column) + break; + } + } + token = tokens[i]; + if (!token) + return null; + token.index = i; + token.start = c - token.value.length; + return token; + }; + + /** + * Sets the undo manager. + * @param {UndoManager} undoManager The new undo manager + * + * + **/ + this.setUndoManager = function(undoManager) { + this.$undoManager = undoManager; + + if (this.$informUndoManager) + this.$informUndoManager.cancel(); + + if (undoManager) { + var self = this; + undoManager.addSession(this); + this.$syncInformUndoManager = function() { + self.$informUndoManager.cancel(); + self.mergeUndoDeltas = false; + }; + this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager); + } else { + this.$syncInformUndoManager = function() {}; + } + }; + + /** + * starts a new group in undo history + **/ + this.markUndoGroup = function() { + if (this.$syncInformUndoManager) + this.$syncInformUndoManager(); + }; + + this.$defaultUndoManager = { + undo: function() {}, + redo: function() {}, + reset: function() {}, + add: function() {}, + addSelection: function() {}, + startNewGroup: function() {}, + addSession: function() {} + }; + + /** + * Returns the current undo manager. + **/ + this.getUndoManager = function() { + return this.$undoManager || this.$defaultUndoManager; + }; + + /** + * Returns the current value for tabs. If the user is using soft tabs, this will be a series of spaces (defined by [[EditSession.getTabSize `getTabSize()`]]); otherwise it's simply `'\t'`. + **/ + this.getTabString = function() { + if (this.getUseSoftTabs()) { + return lang.stringRepeat(" ", this.getTabSize()); + } else { + return "\t"; + } + }; + + /** + * Pass `true` to enable the use of soft tabs. Soft tabs means you're using spaces instead of the tab character (`'\t'`). + * @param {Boolean} useSoftTabs Value indicating whether or not to use soft tabs + **/ + this.setUseSoftTabs = function(val) { + this.setOption("useSoftTabs", val); + }; + /** + * Returns `true` if soft tabs are being used, `false` otherwise. + * @returns {Boolean} + **/ + this.getUseSoftTabs = function() { + // todo might need more general way for changing settings from mode, but this is ok for now + return this.$useSoftTabs && !this.$mode.$indentWithTabs; + }; + /** + * Set the number of spaces that define a soft tab; for example, passing in `4` transforms the soft tabs to be equivalent to four spaces. This function also emits the `changeTabSize` event. + * @param {Number} tabSize The new tab size + **/ + this.setTabSize = function(tabSize) { + this.setOption("tabSize", tabSize); + }; + /** + * Returns the current tab size. + **/ + this.getTabSize = function() { + return this.$tabSize; + }; + + /** + * Returns `true` if the character at the position is a soft tab. + * @param {Object} position The position to check + * + **/ + this.isTabStop = function(position) { + return this.$useSoftTabs && (position.column % this.$tabSize === 0); + }; + + /** + * Set whether keyboard navigation of soft tabs moves the cursor within the soft tab, rather than over + * @param {Boolean} navigateWithinSoftTabs Value indicating whether or not to navigate within soft tabs + **/ + this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { + this.setOption("navigateWithinSoftTabs", navigateWithinSoftTabs); + }; + /** + * Returns `true` if keyboard navigation moves the cursor within soft tabs, `false` if it moves the cursor over soft tabs. + * @returns {Boolean} + **/ + this.getNavigateWithinSoftTabs = function() { + return this.$navigateWithinSoftTabs; + }; + + this.$overwrite = false; + /** + * Pass in `true` to enable overwrites in your session, or `false` to disable. + * + * If overwrites is enabled, any text you enter will type over any text after it. If the value of `overwrite` changes, this function also emits the `changeOverwrite` event. + * + * @param {Boolean} overwrite Defines whether or not to set overwrites + * + * + **/ + this.setOverwrite = function(overwrite) { + this.setOption("overwrite", overwrite); + }; + + /** + * Returns `true` if overwrites are enabled; `false` otherwise. + **/ + this.getOverwrite = function() { + return this.$overwrite; + }; + + /** + * Sets the value of overwrite to the opposite of whatever it currently is. + **/ + this.toggleOverwrite = function() { + this.setOverwrite(!this.$overwrite); + }; + + /** + * Adds `className` to the `row`, to be used for CSS stylings and whatnot. + * @param {Number} row The row number + * @param {String} className The class to add + * + **/ + this.addGutterDecoration = function(row, className) { + if (!this.$decorations[row]) + this.$decorations[row] = ""; + this.$decorations[row] += " " + className; + this._signal("changeBreakpoint", {}); + }; + + /** + * Removes `className` from the `row`. + * @param {Number} row The row number + * @param {String} className The class to add + * + **/ + this.removeGutterDecoration = function(row, className) { + this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); + this._signal("changeBreakpoint", {}); + }; + + /** + * Returns an array of strings, indicating the breakpoint class (if any) applied to each row. + * @returns {[String]} + **/ + this.getBreakpoints = function() { + return this.$breakpoints; + }; + + /** + * Sets a breakpoint on every row number given by `rows`. This function also emites the `'changeBreakpoint'` event. + * @param {Array} rows An array of row indices + * + **/ + this.setBreakpoints = function(rows) { + this.$breakpoints = []; + for (var i=0; i 0) + inToken = !!line.charAt(column - 1).match(this.tokenRe); + + if (!inToken) + inToken = !!line.charAt(column).match(this.tokenRe); + + if (inToken) + var re = this.tokenRe; + else if (/^\s+$/.test(line.slice(column-1, column+1))) + var re = /\s/; + else + var re = this.nonTokenRe; + + var start = column; + if (start > 0) { + do { + start--; + } + while (start >= 0 && line.charAt(start).match(re)); + start++; + } + + var end = column; + while (end < line.length && line.charAt(end).match(re)) { + end++; + } + + return new Range(row, start, row, end); + }; + + /** + * Gets the range of a word, including its right whitespace. + * @param {Number} row The row number to start from + * @param {Number} column The column number to start from + * + * @return {Range} + **/ + this.getAWordRange = function(row, column) { + var wordRange = this.getWordRange(row, column); + var line = this.getLine(wordRange.end.row); + + while (line.charAt(wordRange.end.column).match(/[ \t]/)) { + wordRange.end.column += 1; + } + return wordRange; + }; + + /** + * {:Document.setNewLineMode.desc} + * @param {String} newLineMode {:Document.setNewLineMode.param} + * + * + * @related Document.setNewLineMode + **/ + this.setNewLineMode = function(newLineMode) { + this.doc.setNewLineMode(newLineMode); + }; + + /** + * + * Returns the current new line mode. + * @returns {String} + * @related Document.getNewLineMode + **/ + this.getNewLineMode = function() { + return this.doc.getNewLineMode(); + }; + + /** + * Identifies if you want to use a worker for the `EditSession`. + * @param {Boolean} useWorker Set to `true` to use a worker + * + **/ + this.setUseWorker = function(useWorker) { this.setOption("useWorker", useWorker); }; + + /** + * Returns `true` if workers are being used. + **/ + this.getUseWorker = function() { return this.$useWorker; }; + + /** + * Reloads all the tokens on the current session. This function calls [[BackgroundTokenizer.start `BackgroundTokenizer.start ()`]] to all the rows; it also emits the `'tokenizerUpdate'` event. + **/ + this.onReloadTokenizer = function(e) { + var rows = e.data; + this.bgTokenizer.start(rows.first); + this._signal("tokenizerUpdate", e); + }; + + this.$modes = {}; + + /** + * Sets a new text mode for the `EditSession`. This method also emits the `'changeMode'` event. If a [[BackgroundTokenizer `BackgroundTokenizer`]] is set, the `'tokenizerUpdate'` event is also emitted. + * @param {TextMode} mode Set a new text mode + * @param {cb} optional callback + * + **/ + this.$mode = null; + this.$modeId = null; + this.setMode = function(mode, cb) { + if (mode && typeof mode === "object") { + if (mode.getTokenizer) + return this.$onChangeMode(mode); + var options = mode; + var path = options.path; + } else { + path = mode || "ace/mode/text"; + } + + // this is needed if ace isn't on require path (e.g tests in node) + if (!this.$modes["ace/mode/text"]) + this.$modes["ace/mode/text"] = new TextMode(); + + if (this.$modes[path] && !options) { + this.$onChangeMode(this.$modes[path]); + cb && cb(); + return; + } + // load on demand + this.$modeId = path; + config.loadModule(["mode", path], function(m) { + if (this.$modeId !== path) + return cb && cb(); + if (this.$modes[path] && !options) { + this.$onChangeMode(this.$modes[path]); + } else if (m && m.Mode) { + m = new m.Mode(options); + if (!options) { + this.$modes[path] = m; + m.$id = path; + } + this.$onChangeMode(m); + } + cb && cb(); + }.bind(this)); + + // set mode to text until loading is finished + if (!this.$mode) + this.$onChangeMode(this.$modes["ace/mode/text"], true); + }; + + this.$onChangeMode = function(mode, $isPlaceholder) { + if (!$isPlaceholder) + this.$modeId = mode.$id; + if (this.$mode === mode) + return; + + this.$mode = mode; + + this.$stopWorker(); + + if (this.$useWorker) + this.$startWorker(); + + var tokenizer = mode.getTokenizer(); + + if(tokenizer.addEventListener !== undefined) { + var onReloadTokenizer = this.onReloadTokenizer.bind(this); + tokenizer.addEventListener("update", onReloadTokenizer); + } + + if (!this.bgTokenizer) { + this.bgTokenizer = new BackgroundTokenizer(tokenizer); + var _self = this; + this.bgTokenizer.addEventListener("update", function(e) { + _self._signal("tokenizerUpdate", e); + }); + } else { + this.bgTokenizer.setTokenizer(tokenizer); + } + + this.bgTokenizer.setDocument(this.getDocument()); + + this.tokenRe = mode.tokenRe; + this.nonTokenRe = mode.nonTokenRe; + + + if (!$isPlaceholder) { + // experimental method, used by c9 findiniles + if (mode.attachToSession) + mode.attachToSession(this); + this.$options.wrapMethod.set.call(this, this.$wrapMethod); + this.$setFolding(mode.foldingRules); + this.bgTokenizer.start(0); + this._emit("changeMode"); + } + }; + + this.$stopWorker = function() { + if (this.$worker) { + this.$worker.terminate(); + this.$worker = null; + } + }; + + this.$startWorker = function() { + try { + this.$worker = this.$mode.createWorker(this); + } catch (e) { + config.warn("Could not load worker", e); + this.$worker = null; + } + }; + + /** + * Returns the current text mode. + * @returns {TextMode} The current text mode + **/ + this.getMode = function() { + return this.$mode; + }; + + this.$scrollTop = 0; + /** + * This function sets the scroll top value. It also emits the `'changeScrollTop'` event. + * @param {Number} scrollTop The new scroll top value + * + **/ + this.setScrollTop = function(scrollTop) { + // TODO: should we force integer lineheight instead? scrollTop = Math.round(scrollTop); + if (this.$scrollTop === scrollTop || isNaN(scrollTop)) + return; + + this.$scrollTop = scrollTop; + this._signal("changeScrollTop", scrollTop); + }; + + /** + * [Returns the value of the distance between the top of the editor and the topmost part of the visible content.]{: #EditSession.getScrollTop} + * @returns {Number} + **/ + this.getScrollTop = function() { + return this.$scrollTop; + }; + + this.$scrollLeft = 0; + /** + * [Sets the value of the distance between the left of the editor and the leftmost part of the visible content.]{: #EditSession.setScrollLeft} + **/ + this.setScrollLeft = function(scrollLeft) { + // scrollLeft = Math.round(scrollLeft); + if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) + return; + + this.$scrollLeft = scrollLeft; + this._signal("changeScrollLeft", scrollLeft); + }; + + /** + * [Returns the value of the distance between the left of the editor and the leftmost part of the visible content.]{: #EditSession.getScrollLeft} + * @returns {Number} + **/ + this.getScrollLeft = function() { + return this.$scrollLeft; + }; + + /** + * Returns the width of the screen. + * @returns {Number} + **/ + this.getScreenWidth = function() { + this.$computeWidth(); + if (this.lineWidgets) + return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth); + return this.screenWidth; + }; + + this.getLineWidgetMaxWidth = function() { + if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth; + var width = 0; + this.lineWidgets.forEach(function(w) { + if (w && w.screenWidth > width) + width = w.screenWidth; + }); + return this.lineWidgetWidth = width; + }; + + this.$computeWidth = function(force) { + if (this.$modified || force) { + this.$modified = false; + + if (this.$useWrapMode) + return this.screenWidth = this.$wrapLimit; + + var lines = this.doc.getAllLines(); + var cache = this.$rowLengthCache; + var longestScreenLine = 0; + var foldIndex = 0; + var foldLine = this.$foldData[foldIndex]; + var foldStart = foldLine ? foldLine.start.row : Infinity; + var len = lines.length; + + for (var i = 0; i < len; i++) { + if (i > foldStart) { + i = foldLine.end.row + 1; + if (i >= len) + break; + foldLine = this.$foldData[foldIndex++]; + foldStart = foldLine ? foldLine.start.row : Infinity; + } + + if (cache[i] == null) + cache[i] = this.$getStringScreenWidth(lines[i])[0]; + + if (cache[i] > longestScreenLine) + longestScreenLine = cache[i]; + } + this.screenWidth = longestScreenLine; + } + }; + + /** + * Returns a verbatim copy of the given line as it is in the document + * @param {Number} row The row to retrieve from + * + * @returns {String} + **/ + this.getLine = function(row) { + return this.doc.getLine(row); + }; + + /** + * Returns an array of strings of the rows between `firstRow` and `lastRow`. This function is inclusive of `lastRow`. + * @param {Number} firstRow The first row index to retrieve + * @param {Number} lastRow The final row index to retrieve + * + * @returns {[String]} + * + **/ + this.getLines = function(firstRow, lastRow) { + return this.doc.getLines(firstRow, lastRow); + }; + + /** + * Returns the number of rows in the document. + * @returns {Number} + **/ + this.getLength = function() { + return this.doc.getLength(); + }; + + /** + * {:Document.getTextRange.desc} + * @param {Range} range The range to work with + * + * @returns {String} + **/ + this.getTextRange = function(range) { + return this.doc.getTextRange(range || this.selection.getRange()); + }; + + /** + * Inserts a block of `text` and the indicated `position`. + * @param {Object} position The position {row, column} to start inserting at + * @param {String} text A chunk of text to insert + * @returns {Object} The position of the last line of `text`. If the length of `text` is 0, this function simply returns `position`. + * + * + **/ + this.insert = function(position, text) { + return this.doc.insert(position, text); + }; + + /** + * Removes the `range` from the document. + * @param {Range} range A specified Range to remove + * @returns {Object} The new `start` property of the range, which contains `startRow` and `startColumn`. If `range` is empty, this function returns the unmodified value of `range.start`. + * + * @related Document.remove + * + **/ + this.remove = function(range) { + return this.doc.remove(range); + }; + + /** + * Removes a range of full lines. This method also triggers the `'change'` event. + * @param {Number} firstRow The first row to be removed + * @param {Number} lastRow The last row to be removed + * @returns {[String]} Returns all the removed lines. + * + * @related Document.removeFullLines + * + **/ + this.removeFullLines = function(firstRow, lastRow){ + return this.doc.removeFullLines(firstRow, lastRow); + }; + + /** + * Reverts previous changes to your document. + * @param {Array} deltas An array of previous changes + * @param {Boolean} dontSelect [If `true`, doesn't select the range of where the change occured]{: #dontSelect} + * + * @returns {Range} + **/ + this.undoChanges = function(deltas, dontSelect) { + if (!deltas.length) + return; + + this.$fromUndo = true; + for (var i = deltas.length - 1; i != -1; i--) { + var delta = deltas[i]; + if (delta.action == "insert" || delta.action == "remove") { + this.doc.revertDelta(delta); + } else if (delta.folds) { + this.addFolds(delta.folds); + } + } + if (!dontSelect && this.$undoSelect) { + // console.log(deltas.selectionBefore + "uuu") + if (deltas.selectionBefore) + this.selection.fromJSON(deltas.selectionBefore); + else + this.selection.setRange(this.$getUndoSelection(deltas, true)); + } + this.$fromUndo = false; + }; + + /** + * Re-implements a previously undone change to your document. + * @param {Array} deltas An array of previous changes + * @param {Boolean} dontSelect {:dontSelect} + * + * @returns {Range} + **/ + this.redoChanges = function(deltas, dontSelect) { + if (!deltas.length) + return; + + this.$fromUndo = true; + for (var i = 0; i < deltas.length; i++) { + var delta = deltas[i]; + if (delta.action == "insert" || delta.action == "remove") { + this.doc.applyDelta(delta); + } + } + + if (!dontSelect && this.$undoSelect) { + if (deltas.selectionAfter) + this.selection.fromJSON(deltas.selectionAfter); + else + this.selection.setRange(this.$getUndoSelection(deltas, false)); + } + this.$fromUndo = false; + }; + + /** + * Enables or disables highlighting of the range where an undo occurred. + * @param {Boolean} enable If `true`, selects the range of the reinserted change + * + **/ + this.setUndoSelect = function(enable) { + this.$undoSelect = enable; + }; + + this.$getUndoSelection = function(deltas, isUndo) { + function isInsert(delta) { + return isUndo ? delta.action !== "insert" : delta.action === "insert"; + } + + var range, point; + var lastDeltaIsInsert; + + for (var i = 0; i < deltas.length; i++) { + var delta = deltas[i]; + if (!delta.start) continue; // skip folds + if (!range) { + if (isInsert(delta)) { + range = Range.fromPoints(delta.start, delta.end); + lastDeltaIsInsert = true; + } else { + range = Range.fromPoints(delta.start, delta.start); + lastDeltaIsInsert = false; + } + continue; + } + + if (isInsert(delta)) { + point = delta.start; + if (range.compare(point.row, point.column) == -1) { + range.setStart(point); + } + point = delta.end; + if (range.compare(point.row, point.column) == 1) { + range.setEnd(point); + } + lastDeltaIsInsert = true; + } else { + point = delta.start; + if (range.compare(point.row, point.column) == -1) { + range = Range.fromPoints(delta.start, delta.start); + } + lastDeltaIsInsert = false; + } + } + return range; + }; + + /** + * Replaces a range in the document with the new `text`. + * + * @param {Range} range A specified Range to replace + * @param {String} text The new text to use as a replacement + * @returns {Object} An object containing the final row and column, like this: + * ``` + * {row: endRow, column: 0} + * ``` + * If the text and range are empty, this function returns an object containing the current `range.start` value. + * If the text is the exact same as what currently exists, this function returns an object containing the current `range.end` value. + * + * @related Document.replace + **/ + this.replace = function(range, text) { + return this.doc.replace(range, text); + }; + + /** + * Moves a range of text from the given range to the given position. `toPosition` is an object that looks like this: + * ```json + * { row: newRowLocation, column: newColumnLocation } + * ``` + * @param {Range} fromRange The range of text you want moved within the document + * @param {Object} toPosition The location (row and column) where you want to move the text to + * @returns {Range} The new range where the text was moved to. + **/ + this.moveText = function(fromRange, toPosition, copy) { + var text = this.getTextRange(fromRange); + var folds = this.getFoldsInRange(fromRange); + + var toRange = Range.fromPoints(toPosition, toPosition); + if (!copy) { + this.remove(fromRange); + var rowDiff = fromRange.start.row - fromRange.end.row; + var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column; + if (collDiff) { + if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column) + toRange.start.column += collDiff; + if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column) + toRange.end.column += collDiff; + } + if (rowDiff && toRange.start.row >= fromRange.end.row) { + toRange.start.row += rowDiff; + toRange.end.row += rowDiff; + } + } + + toRange.end = this.insert(toRange.start, text); + if (folds.length) { + var oldStart = fromRange.start; + var newStart = toRange.start; + var rowDiff = newStart.row - oldStart.row; + var collDiff = newStart.column - oldStart.column; + this.addFolds(folds.map(function(x) { + x = x.clone(); + if (x.start.row == oldStart.row) + x.start.column += collDiff; + if (x.end.row == oldStart.row) + x.end.column += collDiff; + x.start.row += rowDiff; + x.end.row += rowDiff; + return x; + })); + } + + return toRange; + }; + + /** + * Indents all the rows, from `startRow` to `endRow` (inclusive), by prefixing each row with the token in `indentString`. + * + * If `indentString` contains the `'\t'` character, it's replaced by whatever is defined by [[EditSession.getTabString `getTabString()`]]. + * @param {Number} startRow Starting row + * @param {Number} endRow Ending row + * @param {String} indentString The indent token + * + * + **/ + this.indentRows = function(startRow, endRow, indentString) { + indentString = indentString.replace(/\t/g, this.getTabString()); + for (var row=startRow; row<=endRow; row++) + this.doc.insertInLine({row: row, column: 0}, indentString); + }; + + /** + * Outdents all the rows defined by the `start` and `end` properties of `range`. + * @param {Range} range A range of rows + * + **/ + this.outdentRows = function (range) { + var rowRange = range.collapseRows(); + var deleteRange = new Range(0, 0, 0, 0); + var size = this.getTabSize(); + + for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) { + var line = this.getLine(i); + + deleteRange.start.row = i; + deleteRange.end.row = i; + for (var j = 0; j < size; ++j) + if (line.charAt(j) != ' ') + break; + if (j < size && line.charAt(j) == '\t') { + deleteRange.start.column = j; + deleteRange.end.column = j + 1; + } else { + deleteRange.start.column = 0; + deleteRange.end.column = j; + } + this.remove(deleteRange); + } + }; + + this.$moveLines = function(firstRow, lastRow, dir) { + firstRow = this.getRowFoldStart(firstRow); + lastRow = this.getRowFoldEnd(lastRow); + if (dir < 0) { + var row = this.getRowFoldStart(firstRow + dir); + if (row < 0) return 0; + var diff = row-firstRow; + } else if (dir > 0) { + var row = this.getRowFoldEnd(lastRow + dir); + if (row > this.doc.getLength()-1) return 0; + var diff = row-lastRow; + } else { + firstRow = this.$clipRowToDocument(firstRow); + lastRow = this.$clipRowToDocument(lastRow); + var diff = lastRow - firstRow + 1; + } + + var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE); + var folds = this.getFoldsInRange(range).map(function(x){ + x = x.clone(); + x.start.row += diff; + x.end.row += diff; + return x; + }); + + var lines = dir == 0 + ? this.doc.getLines(firstRow, lastRow) + : this.doc.removeFullLines(firstRow, lastRow); + this.doc.insertFullLines(firstRow+diff, lines); + folds.length && this.addFolds(folds); + return diff; + }; + /** + * Shifts all the lines in the document up one, starting from `firstRow` and ending at `lastRow`. + * @param {Number} firstRow The starting row to move up + * @param {Number} lastRow The final row to move up + * @returns {Number} If `firstRow` is less-than or equal to 0, this function returns 0. Otherwise, on success, it returns -1. + * + **/ + this.moveLinesUp = function(firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, -1); + }; + + /** + * Shifts all the lines in the document down one, starting from `firstRow` and ending at `lastRow`. + * @param {Number} firstRow The starting row to move down + * @param {Number} lastRow The final row to move down + * @returns {Number} If `firstRow` is less-than or equal to 0, this function returns 0. Otherwise, on success, it returns -1. + **/ + this.moveLinesDown = function(firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, 1); + }; + + /** + * Duplicates all the text between `firstRow` and `lastRow`. + * @param {Number} firstRow The starting row to duplicate + * @param {Number} lastRow The final row to duplicate + * @returns {Number} Returns the number of new rows added; in other words, `lastRow - firstRow + 1`. + * + * + **/ + this.duplicateLines = function(firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, 0); + }; + + + this.$clipRowToDocument = function(row) { + return Math.max(0, Math.min(row, this.doc.getLength()-1)); + }; + + this.$clipColumnToRow = function(row, column) { + if (column < 0) + return 0; + return Math.min(this.doc.getLine(row).length, column); + }; + + + this.$clipPositionToDocument = function(row, column) { + column = Math.max(0, column); + + if (row < 0) { + row = 0; + column = 0; + } else { + var len = this.doc.getLength(); + if (row >= len) { + row = len - 1; + column = this.doc.getLine(len-1).length; + } else { + column = Math.min(this.doc.getLine(row).length, column); + } + } + + return { + row: row, + column: column + }; + }; + + this.$clipRangeToDocument = function(range) { + if (range.start.row < 0) { + range.start.row = 0; + range.start.column = 0; + } else { + range.start.column = this.$clipColumnToRow( + range.start.row, + range.start.column + ); + } + + var len = this.doc.getLength() - 1; + if (range.end.row > len) { + range.end.row = len; + range.end.column = this.doc.getLine(len).length; + } else { + range.end.column = this.$clipColumnToRow( + range.end.row, + range.end.column + ); + } + return range; + }; + + // WRAPMODE + this.$wrapLimit = 80; + this.$useWrapMode = false; + this.$wrapLimitRange = { + min : null, + max : null + }; + + /** + * Sets whether or not line wrapping is enabled. If `useWrapMode` is different than the current value, the `'changeWrapMode'` event is emitted. + * @param {Boolean} useWrapMode Enable (or disable) wrap mode + * + **/ + this.setUseWrapMode = function(useWrapMode) { + if (useWrapMode != this.$useWrapMode) { + this.$useWrapMode = useWrapMode; + this.$modified = true; + this.$resetRowCache(0); + + // If wrapMode is activaed, the wrapData array has to be initialized. + if (useWrapMode) { + var len = this.getLength(); + this.$wrapData = Array(len); + this.$updateWrapData(0, len - 1); + } + + this._signal("changeWrapMode"); + } + }; + + /** + * Returns `true` if wrap mode is being used; `false` otherwise. + * @returns {Boolean} + **/ + this.getUseWrapMode = function() { + return this.$useWrapMode; + }; + + // Allow the wrap limit to move freely between min and max. Either + // parameter can be null to allow the wrap limit to be unconstrained + // in that direction. Or set both parameters to the same number to pin + // the limit to that value. + /** + * Sets the boundaries of wrap. Either value can be `null` to have an unconstrained wrap, or, they can be the same number to pin the limit. If the wrap limits for `min` or `max` are different, this method also emits the `'changeWrapMode'` event. + * @param {Number} min The minimum wrap value (the left side wrap) + * @param {Number} max The maximum wrap value (the right side wrap) + * + **/ + this.setWrapLimitRange = function(min, max) { + if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) { + this.$wrapLimitRange = { min: min, max: max }; + this.$modified = true; + this.$bidiHandler.markAsDirty(); + + // This will force a recalculation of the wrap limit + if (this.$useWrapMode) + this._signal("changeWrapMode"); + } + }; + + /** + * This should generally only be called by the renderer when a resize is detected. + * @param {Number} desiredLimit The new wrap limit + * @returns {Boolean} + * + * @private + **/ + this.adjustWrapLimit = function(desiredLimit, $printMargin) { + var limits = this.$wrapLimitRange; + if (limits.max < 0) + limits = {min: $printMargin, max: $printMargin}; + var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max); + if (wrapLimit != this.$wrapLimit && wrapLimit > 1) { + this.$wrapLimit = wrapLimit; + this.$modified = true; + if (this.$useWrapMode) { + this.$updateWrapData(0, this.getLength() - 1); + this.$resetRowCache(0); + this._signal("changeWrapLimit"); + } + return true; + } + return false; + }; + + this.$constrainWrapLimit = function(wrapLimit, min, max) { + if (min) + wrapLimit = Math.max(min, wrapLimit); + + if (max) + wrapLimit = Math.min(max, wrapLimit); + + return wrapLimit; + }; + + /** + * Returns the value of wrap limit. + * @returns {Number} The wrap limit. + **/ + this.getWrapLimit = function() { + return this.$wrapLimit; + }; + + /** + * Sets the line length for soft wrap in the editor. Lines will break + * at a minimum of the given length minus 20 chars and at a maximum + * of the given number of chars. + * @param {number} limit The maximum line length in chars, for soft wrapping lines. + */ + this.setWrapLimit = function (limit) { + this.setWrapLimitRange(limit, limit); + }; + + /** + * Returns an object that defines the minimum and maximum of the wrap limit; it looks something like this: + * + * { min: wrapLimitRange_min, max: wrapLimitRange_max } + * + * @returns {Object} + **/ + this.getWrapLimitRange = function() { + // Avoid unexpected mutation by returning a copy + return { + min : this.$wrapLimitRange.min, + max : this.$wrapLimitRange.max + }; + }; + + this.$updateInternalDataOnChange = function(delta) { + var useWrapMode = this.$useWrapMode; + var action = delta.action; + var start = delta.start; + var end = delta.end; + var firstRow = start.row; + var lastRow = end.row; + var len = lastRow - firstRow; + var removedFolds = null; + + this.$updating = true; + if (len != 0) { + if (action === "remove") { + this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); + + var foldLines = this.$foldData; + removedFolds = this.getFoldsInRange(delta); + this.removeFolds(removedFolds); + + var foldLine = this.getFoldLine(end.row); + var idx = 0; + if (foldLine) { + foldLine.addRemoveChars(end.row, end.column, start.column - end.column); + foldLine.shiftRow(-len); + + var foldLineBefore = this.getFoldLine(firstRow); + if (foldLineBefore && foldLineBefore !== foldLine) { + foldLineBefore.merge(foldLine); + foldLine = foldLineBefore; + } + idx = foldLines.indexOf(foldLine) + 1; + } + + for (idx; idx < foldLines.length; idx++) { + var foldLine = foldLines[idx]; + if (foldLine.start.row >= end.row) { + foldLine.shiftRow(-len); + } + } + + lastRow = firstRow; + } else { + var args = Array(len); + args.unshift(firstRow, 0); + var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache; + arr.splice.apply(arr, args); + + // If some new line is added inside of a foldLine, then split + // the fold line up. + var foldLines = this.$foldData; + var foldLine = this.getFoldLine(firstRow); + var idx = 0; + if (foldLine) { + var cmp = foldLine.range.compareInside(start.row, start.column); + // Inside of the foldLine range. Need to split stuff up. + if (cmp == 0) { + foldLine = foldLine.split(start.row, start.column); + if (foldLine) { + foldLine.shiftRow(len); + foldLine.addRemoveChars(lastRow, 0, end.column - start.column); + } + } else + // Infront of the foldLine but same row. Need to shift column. + if (cmp == -1) { + foldLine.addRemoveChars(firstRow, 0, end.column - start.column); + foldLine.shiftRow(len); + } + // Nothing to do if the insert is after the foldLine. + idx = foldLines.indexOf(foldLine) + 1; + } + + for (idx; idx < foldLines.length; idx++) { + var foldLine = foldLines[idx]; + if (foldLine.start.row >= firstRow) { + foldLine.shiftRow(len); + } + } + } + } else { + // Realign folds. E.g. if you add some new chars before a fold, the + // fold should "move" to the right. + len = Math.abs(delta.start.column - delta.end.column); + if (action === "remove") { + // Get all the folds in the change range and remove them. + removedFolds = this.getFoldsInRange(delta); + this.removeFolds(removedFolds); + + len = -len; + } + var foldLine = this.getFoldLine(firstRow); + if (foldLine) { + foldLine.addRemoveChars(firstRow, start.column, len); + } + } + + if (useWrapMode && this.$wrapData.length != this.doc.getLength()) { + console.error("doc.getLength() and $wrapData.length have to be the same!"); + } + this.$updating = false; + + if (useWrapMode) + this.$updateWrapData(firstRow, lastRow); + else + this.$updateRowLengthCache(firstRow, lastRow); + + return removedFolds; + }; + + this.$updateRowLengthCache = function(firstRow, lastRow, b) { + this.$rowLengthCache[firstRow] = null; + this.$rowLengthCache[lastRow] = null; + }; + + this.$updateWrapData = function(firstRow, lastRow) { + var lines = this.doc.getAllLines(); + var tabSize = this.getTabSize(); + var wrapData = this.$wrapData; + var wrapLimit = this.$wrapLimit; + var tokens; + var foldLine; + + var row = firstRow; + lastRow = Math.min(lastRow, lines.length - 1); + while (row <= lastRow) { + foldLine = this.getFoldLine(row, foldLine); + if (!foldLine) { + tokens = this.$getDisplayTokens(lines[row]); + wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); + row ++; + } else { + tokens = []; + foldLine.walk(function(placeholder, row, column, lastColumn) { + var walkTokens; + if (placeholder != null) { + walkTokens = this.$getDisplayTokens( + placeholder, tokens.length); + walkTokens[0] = PLACEHOLDER_START; + for (var i = 1; i < walkTokens.length; i++) { + walkTokens[i] = PLACEHOLDER_BODY; + } + } else { + walkTokens = this.$getDisplayTokens( + lines[row].substring(lastColumn, column), + tokens.length); + } + tokens = tokens.concat(walkTokens); + }.bind(this), + foldLine.end.row, + lines[foldLine.end.row].length + 1 + ); + + wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); + row = foldLine.end.row + 1; + } + } + }; + + // "Tokens" + var CHAR = 1, + CHAR_EXT = 2, + PLACEHOLDER_START = 3, + PLACEHOLDER_BODY = 4, + PUNCTUATION = 9, + SPACE = 10, + TAB = 11, + TAB_SPACE = 12; + + + this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) { + if (tokens.length == 0) { + return []; + } + + var splits = []; + var displayLength = tokens.length; + var lastSplit = 0, lastDocSplit = 0; + + var isCode = this.$wrapAsCode; + + var indentedSoftWrap = this.$indentedSoftWrap; + var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8) + || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2); + + function getWrapIndent() { + var indentation = 0; + if (maxIndent === 0) + return indentation; + if (indentedSoftWrap) { + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token == SPACE) + indentation += 1; + else if (token == TAB) + indentation += tabSize; + else if (token == TAB_SPACE) + continue; + else + break; + } + } + if (isCode && indentedSoftWrap !== false) + indentation += tabSize; + return Math.min(indentation, maxIndent); + } + function addSplit(screenPos) { + var displayed = tokens.slice(lastSplit, screenPos); + + // The document size is the current size - the extra width for tabs + // and multipleWidth characters. + var len = displayed.length; + displayed.join("") + // Get all the TAB_SPACEs. + .replace(/12/g, function() { + len -= 1; + }) + // Get all the CHAR_EXT/multipleWidth characters. + .replace(/2/g, function() { + len -= 1; + }); + + if (!splits.length) { + indent = getWrapIndent(); + splits.indent = indent; + } + lastDocSplit += len; + splits.push(lastDocSplit); + lastSplit = screenPos; + } + var indent = 0; + while (displayLength - lastSplit > wrapLimit - indent) { + // This is, where the split should be. + var split = lastSplit + wrapLimit - indent; + + // If there is a space or tab at this split position, then making + // a split is simple. + if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) { + /* disabled see https://github.com/ajaxorg/ace/issues/1186 + // Include all following spaces + tabs in this split as well. + while (tokens[split] >= SPACE) { + split ++; + } */ + addSplit(split); + continue; + } + + // === ELSE === + // Check if split is inside of a placeholder. Placeholder are + // not splitable. Therefore, seek the beginning of the placeholder + // and try to place the split before the placeholder's start. + if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) { + // Seek the start of the placeholder and do the split + // before the placeholder. By definition there always + // a PLACEHOLDER_START between split and lastSplit. + for (split; split != lastSplit - 1; split--) { + if (tokens[split] == PLACEHOLDER_START) { + // split++; << No incremental here as we want to + // have the position before the Placeholder. + break; + } + } + + // If the PLACEHOLDER_START is not the index of the + // last split, then we can do the split + if (split > lastSplit) { + addSplit(split); + continue; + } + + // If the PLACEHOLDER_START IS the index of the last + // split, then we have to place the split after the + // placeholder. So, let's seek for the end of the placeholder. + split = lastSplit + wrapLimit; + for (split; split < tokens.length; split++) { + if (tokens[split] != PLACEHOLDER_BODY) { + break; + } + } + + // If spilt == tokens.length, then the placeholder is the last + // thing in the line and adding a new split doesn't make sense. + if (split == tokens.length) { + break; // Breaks the while-loop. + } + + // Finally, add the split... + addSplit(split); + continue; + } + + // === ELSE === + // Search for the first non space/tab/placeholder/punctuation token backwards. + var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1); + while (split > minSplit && tokens[split] < PLACEHOLDER_START) { + split --; + } + if (isCode) { + while (split > minSplit && tokens[split] < PLACEHOLDER_START) { + split --; + } + while (split > minSplit && tokens[split] == PUNCTUATION) { + split --; + } + } else { + while (split > minSplit && tokens[split] < SPACE) { + split --; + } + } + // If we found one, then add the split. + if (split > minSplit) { + addSplit(++split); + continue; + } + + // === ELSE === + split = lastSplit + wrapLimit; + // The split is inside of a CHAR or CHAR_EXT token and no space + // around -> force a split. + if (tokens[split] == CHAR_EXT) + split--; + addSplit(split - indent); + } + return splits; + }; + + /** + * Given a string, returns an array of the display characters, including tabs and spaces. + * @param {String} str The string to check + * @param {Number} offset The value to start at + * + **/ + this.$getDisplayTokens = function(str, offset) { + var arr = []; + var tabSize; + offset = offset || 0; + + for (var i = 0; i < str.length; i++) { + var c = str.charCodeAt(i); + // Tab + if (c == 9) { + tabSize = this.getScreenTabSize(arr.length + offset); + arr.push(TAB); + for (var n = 1; n < tabSize; n++) { + arr.push(TAB_SPACE); + } + } + // Space + else if (c == 32) { + arr.push(SPACE); + } else if((c > 39 && c < 48) || (c > 57 && c < 64)) { + arr.push(PUNCTUATION); + } + // full width characters + else if (c >= 0x1100 && isFullWidth(c)) { + arr.push(CHAR, CHAR_EXT); + } else { + arr.push(CHAR); + } + } + return arr; + }; + + /** + * Calculates the width of the string `str` on the screen while assuming that the string starts at the first column on the screen. + * @param {String} str The string to calculate the screen width of + * @param {Number} maxScreenColumn + * @param {Number} screenColumn + * @returns {[Number]} Returns an `int[]` array with two elements:
    + * The first position indicates the number of columns for `str` on screen.
    + * The second value contains the position of the document column that this function read until. + * + **/ + this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) { + if (maxScreenColumn == 0) + return [0, 0]; + if (maxScreenColumn == null) + maxScreenColumn = Infinity; + screenColumn = screenColumn || 0; + + var c, column; + for (column = 0; column < str.length; column++) { + c = str.charCodeAt(column); + // tab + if (c == 9) { + screenColumn += this.getScreenTabSize(screenColumn); + } + // full width characters + else if (c >= 0x1100 && isFullWidth(c)) { + screenColumn += 2; + } else { + screenColumn += 1; + } + if (screenColumn > maxScreenColumn) { + break; + } + } + + return [screenColumn, column]; + }; + + this.lineWidgets = null; + /** + * Returns number of screenrows in a wrapped line. + * @param {Number} row The row number to check + * + * @returns {Number} + **/ + this.getRowLength = function(row) { + if (this.lineWidgets) + var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; + else + h = 0; + if (!this.$useWrapMode || !this.$wrapData[row]) { + return 1 + h; + } else { + return this.$wrapData[row].length + 1 + h; + } + }; + this.getRowLineCount = function(row) { + if (!this.$useWrapMode || !this.$wrapData[row]) { + return 1; + } else { + return this.$wrapData[row].length + 1; + } + }; + + this.getRowWrapIndent = function(screenRow) { + if (this.$useWrapMode) { + var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); + var splits = this.$wrapData[pos.row]; + return splits.length && splits[0] < pos.column ? splits.indent : 0; + } else { + return 0; + } + }; + + /** + * Returns the position (on screen) for the last character in the provided screen row. + * @param {Number} screenRow The screen row to check + * @returns {Number} + * + * @related EditSession.documentToScreenColumn + **/ + this.getScreenLastRowColumn = function(screenRow) { + var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); + return this.documentToScreenColumn(pos.row, pos.column); + }; + + /** + * For the given document row and column, this returns the column position of the last screen row. + * @param {Number} docRow + * + * @param {Number} docColumn + **/ + this.getDocumentLastRowColumn = function(docRow, docColumn) { + var screenRow = this.documentToScreenRow(docRow, docColumn); + return this.getScreenLastRowColumn(screenRow); + }; + + /** + * For the given document row and column, this returns the document position of the last row. + * @param {Number} docRow + * @param {Number} docColumn + * + **/ + this.getDocumentLastRowColumnPosition = function(docRow, docColumn) { + var screenRow = this.documentToScreenRow(docRow, docColumn); + return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10); + }; + + /** + * For the given row, this returns the split data. + * @returns {String} + **/ + this.getRowSplitData = function(row) { + if (!this.$useWrapMode) { + return undefined; + } else { + return this.$wrapData[row]; + } + }; + + /** + * The distance to the next tab stop at the specified screen column. + * @param {Number} screenColumn The screen column to check + * + * @returns {Number} + **/ + this.getScreenTabSize = function(screenColumn) { + return this.$tabSize - screenColumn % this.$tabSize; + }; + + + this.screenToDocumentRow = function(screenRow, screenColumn) { + return this.screenToDocumentPosition(screenRow, screenColumn).row; + }; + + + this.screenToDocumentColumn = function(screenRow, screenColumn) { + return this.screenToDocumentPosition(screenRow, screenColumn).column; + }; + + /** + * Converts characters coordinates on the screen to characters coordinates within the document. [This takes into account code folding, word wrap, tab size, and any other visual modifications.]{: #conversionConsiderations} + * @param {Number} screenRow The screen row to check + * @param {Number} screenColumn The screen column to check + * @param {int} screen character x-offset [optional] + * + * @returns {Object} The object returned has two properties: `row` and `column`. + * + * @related EditSession.documentToScreenPosition + **/ + this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) { + if (screenRow < 0) + return {row: 0, column: 0}; + + var line; + var docRow = 0; + var docColumn = 0; + var column; + var row = 0; + var rowLength = 0; + + var rowCache = this.$screenRowCache; + var i = this.$getRowCacheIndex(rowCache, screenRow); + var l = rowCache.length; + if (l && i >= 0) { + var row = rowCache[i]; + var docRow = this.$docRowCache[i]; + var doCache = screenRow > rowCache[l - 1]; + } else { + var doCache = !l; + } + + var maxRow = this.getLength() - 1; + var foldLine = this.getNextFoldLine(docRow); + var foldStart = foldLine ? foldLine.start.row : Infinity; + + while (row <= screenRow) { + rowLength = this.getRowLength(docRow); + if (row + rowLength > screenRow || docRow >= maxRow) { + break; + } else { + row += rowLength; + docRow++; + if (docRow > foldStart) { + docRow = foldLine.end.row+1; + foldLine = this.getNextFoldLine(docRow, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + } + + if (doCache) { + this.$docRowCache.push(docRow); + this.$screenRowCache.push(row); + } + } + + if (foldLine && foldLine.start.row <= docRow) { + line = this.getFoldDisplayLine(foldLine); + docRow = foldLine.start.row; + } else if (row + rowLength <= screenRow || docRow > maxRow) { + // clip at the end of the document + return { + row: maxRow, + column: this.getLine(maxRow).length + }; + } else { + line = this.getLine(docRow); + foldLine = null; + } + var wrapIndent = 0, splitIndex = Math.floor(screenRow - row); + if (this.$useWrapMode) { + var splits = this.$wrapData[docRow]; + if (splits) { + column = splits[splitIndex]; + if(splitIndex > 0 && splits.length) { + wrapIndent = splits.indent; + docColumn = splits[splitIndex - 1] || splits[splits.length - 1]; + line = line.substring(docColumn); + } + } + } + + if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex)) + screenColumn = this.$bidiHandler.offsetToCol(offsetX); + + docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1]; + + // We remove one character at the end so that the docColumn + // position returned is not associated to the next row on the screen. + if (this.$useWrapMode && docColumn >= column) + docColumn = column - 1; + + if (foldLine) + return foldLine.idxToPosition(docColumn); + + return {row: docRow, column: docColumn}; + }; + + /** + * Converts document coordinates to screen coordinates. {:conversionConsiderations} + * @param {Number} docRow The document row to check + * @param {Number} docColumn The document column to check + * @returns {Object} The object returned by this method has two properties: `row` and `column`. + * + * @related EditSession.screenToDocumentPosition + **/ + this.documentToScreenPosition = function(docRow, docColumn) { + // Normalize the passed in arguments. + if (typeof docColumn === "undefined") + var pos = this.$clipPositionToDocument(docRow.row, docRow.column); + else + pos = this.$clipPositionToDocument(docRow, docColumn); + + docRow = pos.row; + docColumn = pos.column; + + var screenRow = 0; + var foldStartRow = null; + var fold = null; + + // Clamp the docRow position in case it's inside of a folded block. + fold = this.getFoldAt(docRow, docColumn, 1); + if (fold) { + docRow = fold.start.row; + docColumn = fold.start.column; + } + + var rowEnd, row = 0; + + + var rowCache = this.$docRowCache; + var i = this.$getRowCacheIndex(rowCache, docRow); + var l = rowCache.length; + if (l && i >= 0) { + var row = rowCache[i]; + var screenRow = this.$screenRowCache[i]; + var doCache = docRow > rowCache[l - 1]; + } else { + var doCache = !l; + } + + var foldLine = this.getNextFoldLine(row); + var foldStart = foldLine ?foldLine.start.row :Infinity; + + while (row < docRow) { + if (row >= foldStart) { + rowEnd = foldLine.end.row + 1; + if (rowEnd > docRow) + break; + foldLine = this.getNextFoldLine(rowEnd, foldLine); + foldStart = foldLine ?foldLine.start.row :Infinity; + } + else { + rowEnd = row + 1; + } + + screenRow += this.getRowLength(row); + row = rowEnd; + + if (doCache) { + this.$docRowCache.push(row); + this.$screenRowCache.push(screenRow); + } + } + + // Calculate the text line that is displayed in docRow on the screen. + var textLine = ""; + // Check if the final row we want to reach is inside of a fold. + if (foldLine && row >= foldStart) { + textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn); + foldStartRow = foldLine.start.row; + } else { + textLine = this.getLine(docRow).substring(0, docColumn); + foldStartRow = docRow; + } + var wrapIndent = 0; + // Clamp textLine if in wrapMode. + if (this.$useWrapMode) { + var wrapRow = this.$wrapData[foldStartRow]; + if (wrapRow) { + var screenRowOffset = 0; + while (textLine.length >= wrapRow[screenRowOffset]) { + screenRow ++; + screenRowOffset++; + } + textLine = textLine.substring( + wrapRow[screenRowOffset - 1] || 0, textLine.length + ); + wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0; + } + } + + return { + row: screenRow, + column: wrapIndent + this.$getStringScreenWidth(textLine)[0] + }; + }; + + /** + * For the given document row and column, returns the screen column. + * @param {Number} row + * @param {Number} docColumn + * @returns {Number} + * + **/ + this.documentToScreenColumn = function(row, docColumn) { + return this.documentToScreenPosition(row, docColumn).column; + }; + + /** + * For the given document row and column, returns the screen row. + * @param {Number} docRow + * @param {Number} docColumn + * + **/ + this.documentToScreenRow = function(docRow, docColumn) { + return this.documentToScreenPosition(docRow, docColumn).row; + }; + + /** + * Returns the length of the screen. + * @returns {Number} + **/ + this.getScreenLength = function() { + var screenRows = 0; + var fold = null; + if (!this.$useWrapMode) { + screenRows = this.getLength(); + + // Remove the folded lines again. + var foldData = this.$foldData; + for (var i = 0; i < foldData.length; i++) { + fold = foldData[i]; + screenRows -= fold.end.row - fold.start.row; + } + } else { + var lastRow = this.$wrapData.length; + var row = 0, i = 0; + var fold = this.$foldData[i++]; + var foldStart = fold ? fold.start.row :Infinity; + + while (row < lastRow) { + var splits = this.$wrapData[row]; + screenRows += splits ? splits.length + 1 : 1; + row ++; + if (row > foldStart) { + row = fold.end.row+1; + fold = this.$foldData[i++]; + foldStart = fold ?fold.start.row :Infinity; + } + } + } + + // todo + if (this.lineWidgets) + screenRows += this.$getWidgetScreenLength(); + + return screenRows; + }; + + /** + * @private + * + */ + this.$setFontMetrics = function(fm) { + this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) { + if (maxScreenColumn === 0) + return [0, 0]; + if (!maxScreenColumn) + maxScreenColumn = Infinity; + screenColumn = screenColumn || 0; + + var c, column; + for (column = 0; column < str.length; column++) { + c = str.charAt(column); + // tab + if (c === "\t") { + screenColumn += this.getScreenTabSize(screenColumn); + } else { + screenColumn += fm.getCharacterWidth(c); + } + if (screenColumn > maxScreenColumn) { + break; + } + } + + return [screenColumn, column]; + }; + }; + + this.destroy = function() { + if (this.bgTokenizer) { + this.bgTokenizer.setDocument(null); + this.bgTokenizer = null; + } + this.$stopWorker(); + }; + + this.isFullWidth = isFullWidth; + + // For every keystroke this gets called once per char in the whole doc!! + // Wouldn't hurt to make it a bit faster for c >= 0x1100 + function isFullWidth(c) { + if (c < 0x1100) + return false; + return c >= 0x1100 && c <= 0x115F || + c >= 0x11A3 && c <= 0x11A7 || + c >= 0x11FA && c <= 0x11FF || + c >= 0x2329 && c <= 0x232A || + c >= 0x2E80 && c <= 0x2E99 || + c >= 0x2E9B && c <= 0x2EF3 || + c >= 0x2F00 && c <= 0x2FD5 || + c >= 0x2FF0 && c <= 0x2FFB || + c >= 0x3000 && c <= 0x303E || + c >= 0x3041 && c <= 0x3096 || + c >= 0x3099 && c <= 0x30FF || + c >= 0x3105 && c <= 0x312D || + c >= 0x3131 && c <= 0x318E || + c >= 0x3190 && c <= 0x31BA || + c >= 0x31C0 && c <= 0x31E3 || + c >= 0x31F0 && c <= 0x321E || + c >= 0x3220 && c <= 0x3247 || + c >= 0x3250 && c <= 0x32FE || + c >= 0x3300 && c <= 0x4DBF || + c >= 0x4E00 && c <= 0xA48C || + c >= 0xA490 && c <= 0xA4C6 || + c >= 0xA960 && c <= 0xA97C || + c >= 0xAC00 && c <= 0xD7A3 || + c >= 0xD7B0 && c <= 0xD7C6 || + c >= 0xD7CB && c <= 0xD7FB || + c >= 0xF900 && c <= 0xFAFF || + c >= 0xFE10 && c <= 0xFE19 || + c >= 0xFE30 && c <= 0xFE52 || + c >= 0xFE54 && c <= 0xFE66 || + c >= 0xFE68 && c <= 0xFE6B || + c >= 0xFF01 && c <= 0xFF60 || + c >= 0xFFE0 && c <= 0xFFE6; + } + +}).call(EditSession.prototype); + +require("./edit_session/folding").Folding.call(EditSession.prototype); +require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype); + + +config.defineOptions(EditSession.prototype, "session", { + wrap: { + set: function(value) { + if (!value || value == "off") + value = false; + else if (value == "free") + value = true; + else if (value == "printMargin") + value = -1; + else if (typeof value == "string") + value = parseInt(value, 10) || false; + + if (this.$wrap == value) + return; + this.$wrap = value; + if (!value) { + this.setUseWrapMode(false); + } else { + var col = typeof value == "number" ? value : null; + this.setWrapLimitRange(col, col); + this.setUseWrapMode(true); + } + }, + get: function() { + if (this.getUseWrapMode()) { + if (this.$wrap == -1) + return "printMargin"; + if (!this.getWrapLimitRange().min) + return "free"; + return this.$wrap; + } + return "off"; + }, + handlesSet: true + }, + wrapMethod: { + // code|text|auto + set: function(val) { + val = val == "auto" + ? this.$mode.type != "text" + : val != "text"; + if (val != this.$wrapAsCode) { + this.$wrapAsCode = val; + if (this.$useWrapMode) { + this.$modified = true; + this.$resetRowCache(0); + this.$updateWrapData(0, this.getLength() - 1); + } + } + }, + initialValue: "auto" + }, + indentedSoftWrap: { initialValue: true }, + firstLineNumber: { + set: function() {this._signal("changeBreakpoint");}, + initialValue: 1 + }, + useWorker: { + set: function(useWorker) { + this.$useWorker = useWorker; + + this.$stopWorker(); + if (useWorker) + this.$startWorker(); + }, + initialValue: true + }, + useSoftTabs: {initialValue: true}, + tabSize: { + set: function(tabSize) { + if (isNaN(tabSize) || this.$tabSize === tabSize) return; + + this.$modified = true; + this.$rowLengthCache = []; + this.$tabSize = tabSize; + this._signal("changeTabSize"); + }, + initialValue: 4, + handlesSet: true + }, + navigateWithinSoftTabs: {initialValue: false}, + overwrite: { + set: function(val) {this._signal("changeOverwrite");}, + initialValue: false + }, + newLineMode: { + set: function(val) {this.doc.setNewLineMode(val);}, + get: function() {return this.doc.getNewLineMode();}, + handlesSet: true + }, + mode: { + set: function(val) { this.setMode(val); }, + get: function() { return this.$modeId; } + } +}); + +exports.EditSession = EditSession; +}); diff --git a/plugins/node_modules/ace/lib/ace/edit_session/bracket_match.js b/plugins/node_modules/ace/lib/ace/edit_session/bracket_match.js new file mode 100644 index 00000000..62a8499c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/edit_session/bracket_match.js @@ -0,0 +1,221 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var TokenIterator = require("../token_iterator").TokenIterator; +var Range = require("../range").Range; + + +function BracketMatch() { + + this.findMatchingBracket = function(position, chr) { + if (position.column == 0) return null; + + var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1); + if (charBeforeCursor == "") return null; + + var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/); + if (!match) + return null; + + if (match[1]) + return this.$findClosingBracket(match[1], position); + else + return this.$findOpeningBracket(match[2], position); + }; + + this.getBracketRange = function(pos) { + var line = this.getLine(pos.row); + var before = true, range; + + var chr = line.charAt(pos.column-1); + var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); + if (!match) { + chr = line.charAt(pos.column); + pos = {row: pos.row, column: pos.column + 1}; + match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); + before = false; + } + if (!match) + return null; + + if (match[1]) { + var bracketPos = this.$findClosingBracket(match[1], pos); + if (!bracketPos) + return null; + range = Range.fromPoints(pos, bracketPos); + if (!before) { + range.end.column++; + range.start.column--; + } + range.cursor = range.end; + } else { + var bracketPos = this.$findOpeningBracket(match[2], pos); + if (!bracketPos) + return null; + range = Range.fromPoints(bracketPos, pos); + if (!before) { + range.start.column++; + range.end.column--; + } + range.cursor = range.start; + } + + return range; + }; + + this.$brackets = { + ")": "(", + "(": ")", + "]": "[", + "[": "]", + "{": "}", + "}": "{" + }; + + this.$findOpeningBracket = function(bracket, position, typeRe) { + var openBracket = this.$brackets[bracket]; + var depth = 1; + + var iterator = new TokenIterator(this, position.row, position.column); + var token = iterator.getCurrentToken(); + if (!token) + token = iterator.stepForward(); + if (!token) + return; + + if (!typeRe){ + typeRe = new RegExp( + "(\\.?" + + token.type.replace(".", "\\.").replace("rparen", ".paren") + .replace(/\b(?:end)\b/, "(?:start|begin|end)") + + ")+" + ); + } + + // Start searching in token, just before the character at position.column + var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2; + var value = token.value; + + while (true) { + + while (valueIndex >= 0) { + var chr = value.charAt(valueIndex); + if (chr == openBracket) { + depth -= 1; + if (depth == 0) { + return {row: iterator.getCurrentTokenRow(), + column: valueIndex + iterator.getCurrentTokenColumn()}; + } + } + else if (chr == bracket) { + depth += 1; + } + valueIndex -= 1; + } + + // Scan backward through the document, looking for the next token + // whose type matches typeRe + do { + token = iterator.stepBackward(); + } while (token && !typeRe.test(token.type)); + + if (token == null) + break; + + value = token.value; + valueIndex = value.length - 1; + } + + return null; + }; + + this.$findClosingBracket = function(bracket, position, typeRe) { + var closingBracket = this.$brackets[bracket]; + var depth = 1; + + var iterator = new TokenIterator(this, position.row, position.column); + var token = iterator.getCurrentToken(); + if (!token) + token = iterator.stepForward(); + if (!token) + return; + + if (!typeRe){ + typeRe = new RegExp( + "(\\.?" + + token.type.replace(".", "\\.").replace("lparen", ".paren") + .replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") + + ")+" + ); + } + + // Start searching in token, after the character at position.column + var valueIndex = position.column - iterator.getCurrentTokenColumn(); + + while (true) { + + var value = token.value; + var valueLength = value.length; + while (valueIndex < valueLength) { + var chr = value.charAt(valueIndex); + if (chr == closingBracket) { + depth -= 1; + if (depth == 0) { + return {row: iterator.getCurrentTokenRow(), + column: valueIndex + iterator.getCurrentTokenColumn()}; + } + } + else if (chr == bracket) { + depth += 1; + } + valueIndex += 1; + } + + // Scan forward through the document, looking for the next token + // whose type matches typeRe + do { + token = iterator.stepForward(); + } while (token && !typeRe.test(token.type)); + + if (token == null) + break; + + valueIndex = 0; + } + + return null; + }; +} +exports.BracketMatch = BracketMatch; + +}); diff --git a/plugins/node_modules/ace/lib/ace/edit_session/fold.js b/plugins/node_modules/ace/lib/ace/edit_session/fold.js new file mode 100644 index 00000000..55f71aa5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/edit_session/fold.js @@ -0,0 +1,140 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("../range").Range; +var RangeList = require("../range_list").RangeList; +var oop = require("../lib/oop"); +/* + * Simple fold-data struct. + **/ +var Fold = exports.Fold = function(range, placeholder) { + this.foldLine = null; + this.placeholder = placeholder; + this.range = range; + this.start = range.start; + this.end = range.end; + + this.sameRow = range.start.row == range.end.row; + this.subFolds = this.ranges = []; +}; + +oop.inherits(Fold, RangeList); + +(function() { + + this.toString = function() { + return '"' + this.placeholder + '" ' + this.range.toString(); + }; + + this.setFoldLine = function(foldLine) { + this.foldLine = foldLine; + this.subFolds.forEach(function(fold) { + fold.setFoldLine(foldLine); + }); + }; + + this.clone = function() { + var range = this.range.clone(); + var fold = new Fold(range, this.placeholder); + this.subFolds.forEach(function(subFold) { + fold.subFolds.push(subFold.clone()); + }); + fold.collapseChildren = this.collapseChildren; + return fold; + }; + + this.addSubFold = function(fold) { + if (this.range.isEqual(fold)) + return; + + if (!this.range.containsRange(fold)) + throw new Error("A fold can't intersect already existing fold" + fold.range + this.range); + + // transform fold to local coordinates + consumeRange(fold, this.start); + + var row = fold.start.row, column = fold.start.column; + for (var i = 0, cmp = -1; i < this.subFolds.length; i++) { + cmp = this.subFolds[i].range.compare(row, column); + if (cmp != 1) + break; + } + var afterStart = this.subFolds[i]; + + if (cmp == 0) + return afterStart.addSubFold(fold); + + // cmp == -1 + var row = fold.range.end.row, column = fold.range.end.column; + for (var j = i, cmp = -1; j < this.subFolds.length; j++) { + cmp = this.subFolds[j].range.compare(row, column); + if (cmp != 1) + break; + } + var afterEnd = this.subFolds[j]; + + if (cmp == 0) + throw new Error("A fold can't intersect already existing fold" + fold.range + this.range); + + var consumedFolds = this.subFolds.splice(i, j - i, fold); + fold.setFoldLine(this.foldLine); + + return fold; + }; + + this.restoreRange = function(range) { + return restoreRange(range, this.start); + }; + +}).call(Fold.prototype); + +function consumePoint(point, anchor) { + point.row -= anchor.row; + if (point.row == 0) + point.column -= anchor.column; +} +function consumeRange(range, anchor) { + consumePoint(range.start, anchor); + consumePoint(range.end, anchor); +} +function restorePoint(point, anchor) { + if (point.row == 0) + point.column += anchor.column; + point.row += anchor.row; +} +function restoreRange(range, anchor) { + restorePoint(range.start, anchor); + restorePoint(range.end, anchor); +} + +}); diff --git a/plugins/node_modules/ace/lib/ace/edit_session/fold_line.js b/plugins/node_modules/ace/lib/ace/edit_session/fold_line.js new file mode 100644 index 00000000..9d73154d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/edit_session/fold_line.js @@ -0,0 +1,269 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("../range").Range; + +/* + * If an array is passed in, the folds are expected to be sorted already. + */ +function FoldLine(foldData, folds) { + this.foldData = foldData; + if (Array.isArray(folds)) { + this.folds = folds; + } else { + folds = this.folds = [ folds ]; + } + + var last = folds[folds.length - 1]; + this.range = new Range(folds[0].start.row, folds[0].start.column, + last.end.row, last.end.column); + this.start = this.range.start; + this.end = this.range.end; + + this.folds.forEach(function(fold) { + fold.setFoldLine(this); + }, this); +} + +(function() { + /* + * Note: This doesn't update wrapData! + */ + this.shiftRow = function(shift) { + this.start.row += shift; + this.end.row += shift; + this.folds.forEach(function(fold) { + fold.start.row += shift; + fold.end.row += shift; + }); + }; + + this.addFold = function(fold) { + if (fold.sameRow) { + if (fold.start.row < this.startRow || fold.endRow > this.endRow) { + throw new Error("Can't add a fold to this FoldLine as it has no connection"); + } + this.folds.push(fold); + this.folds.sort(function(a, b) { + return -a.range.compareEnd(b.start.row, b.start.column); + }); + if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) { + this.end.row = fold.end.row; + this.end.column = fold.end.column; + } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { + this.start.row = fold.start.row; + this.start.column = fold.start.column; + } + } else if (fold.start.row == this.end.row) { + this.folds.push(fold); + this.end.row = fold.end.row; + this.end.column = fold.end.column; + } else if (fold.end.row == this.start.row) { + this.folds.unshift(fold); + this.start.row = fold.start.row; + this.start.column = fold.start.column; + } else { + throw new Error("Trying to add fold to FoldRow that doesn't have a matching row"); + } + fold.foldLine = this; + }; + + this.containsRow = function(row) { + return row >= this.start.row && row <= this.end.row; + }; + + this.walk = function(callback, endRow, endColumn) { + var lastEnd = 0, + folds = this.folds, + fold, + cmp, stop, isNewRow = true; + + if (endRow == null) { + endRow = this.end.row; + endColumn = this.end.column; + } + + for (var i = 0; i < folds.length; i++) { + fold = folds[i]; + + cmp = fold.range.compareStart(endRow, endColumn); + // This fold is after the endRow/Column. + if (cmp == -1) { + callback(null, endRow, endColumn, lastEnd, isNewRow); + return; + } + + stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow); + stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd); + + // If the user requested to stop the walk or endRow/endColumn is + // inside of this fold (cmp == 0), then end here. + if (stop || cmp === 0) { + return; + } + + // Note the new lastEnd might not be on the same line. However, + // it's the callback's job to recognize this. + isNewRow = !fold.sameRow; + lastEnd = fold.end.column; + } + callback(null, endRow, endColumn, lastEnd, isNewRow); + }; + + this.getNextFoldTo = function(row, column) { + var fold, cmp; + for (var i = 0; i < this.folds.length; i++) { + fold = this.folds[i]; + cmp = fold.range.compareEnd(row, column); + if (cmp == -1) { + return { + fold: fold, + kind: "after" + }; + } else if (cmp === 0) { + return { + fold: fold, + kind: "inside" + }; + } + } + return null; + }; + + this.addRemoveChars = function(row, column, len) { + var ret = this.getNextFoldTo(row, column), + fold, folds; + if (ret) { + fold = ret.fold; + if (ret.kind == "inside" + && fold.start.column != column + && fold.start.row != row) + { + //throwing here breaks whole editor + //TODO: properly handle this + window.console && window.console.log(row, column, fold); + } else if (fold.start.row == row) { + folds = this.folds; + var i = folds.indexOf(fold); + if (i === 0) { + this.start.column += len; + } + for (i; i < folds.length; i++) { + fold = folds[i]; + fold.start.column += len; + if (!fold.sameRow) { + return; + } + fold.end.column += len; + } + this.end.column += len; + } + } + }; + + this.split = function(row, column) { + var pos = this.getNextFoldTo(row, column); + + if (!pos || pos.kind == "inside") + return null; + + var fold = pos.fold; + var folds = this.folds; + var foldData = this.foldData; + + var i = folds.indexOf(fold); + var foldBefore = folds[i - 1]; + this.end.row = foldBefore.end.row; + this.end.column = foldBefore.end.column; + + // Remove the folds after row/column and create a new FoldLine + // containing these removed folds. + folds = folds.splice(i, folds.length - i); + + var newFoldLine = new FoldLine(foldData, folds); + foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine); + return newFoldLine; + }; + + this.merge = function(foldLineNext) { + var folds = foldLineNext.folds; + for (var i = 0; i < folds.length; i++) { + this.addFold(folds[i]); + } + // Remove the foldLineNext - no longer needed, as + // it's merged now with foldLineNext. + var foldData = this.foldData; + foldData.splice(foldData.indexOf(foldLineNext), 1); + }; + + this.toString = function() { + var ret = [this.range.toString() + ": [" ]; + + this.folds.forEach(function(fold) { + ret.push(" " + fold.toString()); + }); + ret.push("]"); + return ret.join("\n"); + }; + + this.idxToPosition = function(idx) { + var lastFoldEndColumn = 0; + + for (var i = 0; i < this.folds.length; i++) { + var fold = this.folds[i]; + + idx -= fold.start.column - lastFoldEndColumn; + if (idx < 0) { + return { + row: fold.start.row, + column: fold.start.column + idx + }; + } + + idx -= fold.placeholder.length; + if (idx < 0) { + return fold.start; + } + + lastFoldEndColumn = fold.end.column; + } + + return { + row: this.end.row, + column: this.end.column + idx + }; + }; +}).call(FoldLine.prototype); + +exports.FoldLine = FoldLine; +}); diff --git a/plugins/node_modules/ace/lib/ace/edit_session/folding.js b/plugins/node_modules/ace/lib/ace/edit_session/folding.js new file mode 100644 index 00000000..0315f826 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/edit_session/folding.js @@ -0,0 +1,869 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("../range").Range; +var FoldLine = require("./fold_line").FoldLine; +var Fold = require("./fold").Fold; +var TokenIterator = require("../token_iterator").TokenIterator; + +function Folding() { + /* + * Looks up a fold at a given row/column. Possible values for side: + * -1: ignore a fold if fold.start = row/column + * +1: ignore a fold if fold.end = row/column + */ + this.getFoldAt = function(row, column, side) { + var foldLine = this.getFoldLine(row); + if (!foldLine) + return null; + + var folds = foldLine.folds; + for (var i = 0; i < folds.length; i++) { + var fold = folds[i]; + if (fold.range.contains(row, column)) { + if (side == 1 && fold.range.isEnd(row, column)) { + continue; + } else if (side == -1 && fold.range.isStart(row, column)) { + continue; + } + return fold; + } + } + }; + + /* + * Returns all folds in the given range. Note, that this will return folds + * + */ + this.getFoldsInRange = function(range) { + var start = range.start; + var end = range.end; + var foldLines = this.$foldData; + var foundFolds = []; + + start.column += 1; + end.column -= 1; + + for (var i = 0; i < foldLines.length; i++) { + var cmp = foldLines[i].range.compareRange(range); + if (cmp == 2) { + // Range is before foldLine. No intersection. This means, + // there might be other foldLines that intersect. + continue; + } + else if (cmp == -2) { + // Range is after foldLine. There can't be any other foldLines then, + // so let's give up. + break; + } + + var folds = foldLines[i].folds; + for (var j = 0; j < folds.length; j++) { + var fold = folds[j]; + cmp = fold.range.compareRange(range); + if (cmp == -2) { + break; + } else if (cmp == 2) { + continue; + } else + // WTF-state: Can happen due to -1/+1 to start/end column. + if (cmp == 42) { + break; + } + foundFolds.push(fold); + } + } + start.column -= 1; + end.column += 1; + + return foundFolds; + }; + + this.getFoldsInRangeList = function(ranges) { + if (Array.isArray(ranges)) { + var folds = []; + ranges.forEach(function(range) { + folds = folds.concat(this.getFoldsInRange(range)); + }, this); + } else { + var folds = this.getFoldsInRange(ranges); + } + return folds; + }; + + /* + * Returns all folds in the document + */ + this.getAllFolds = function() { + var folds = []; + var foldLines = this.$foldData; + + for (var i = 0; i < foldLines.length; i++) + for (var j = 0; j < foldLines[i].folds.length; j++) + folds.push(foldLines[i].folds[j]); + + return folds; + }; + + /* + * Returns the string between folds at the given position. + * E.g. + * foob|arwolrd -> "bar" + * foobarwol|rd -> "world" + * foobarwolrd -> + * + * where | means the position of row/column + * + * The trim option determs if the return string should be trimed according + * to the "side" passed with the trim value: + * + * E.g. + * foob|arwolrd -trim=-1> "b" + * foobarwol|rd -trim=+1> "rld" + * fo|obarwolrd -trim=00> "foo" + */ + this.getFoldStringAt = function(row, column, trim, foldLine) { + foldLine = foldLine || this.getFoldLine(row); + if (!foldLine) + return null; + + var lastFold = { + end: { column: 0 } + }; + // TODO: Refactor to use getNextFoldTo function. + var str, fold; + for (var i = 0; i < foldLine.folds.length; i++) { + fold = foldLine.folds[i]; + var cmp = fold.range.compareEnd(row, column); + if (cmp == -1) { + str = this + .getLine(fold.start.row) + .substring(lastFold.end.column, fold.start.column); + break; + } + else if (cmp === 0) { + return null; + } + lastFold = fold; + } + if (!str) + str = this.getLine(fold.start.row).substring(lastFold.end.column); + + if (trim == -1) + return str.substring(0, column - lastFold.end.column); + else if (trim == 1) + return str.substring(column - lastFold.end.column); + else + return str; + }; + + this.getFoldLine = function(docRow, startFoldLine) { + var foldData = this.$foldData; + var i = 0; + if (startFoldLine) + i = foldData.indexOf(startFoldLine); + if (i == -1) + i = 0; + for (i; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) { + return foldLine; + } else if (foldLine.end.row > docRow) { + return null; + } + } + return null; + }; + + // returns the fold which starts after or contains docRow + this.getNextFoldLine = function(docRow, startFoldLine) { + var foldData = this.$foldData; + var i = 0; + if (startFoldLine) + i = foldData.indexOf(startFoldLine); + if (i == -1) + i = 0; + for (i; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (foldLine.end.row >= docRow) { + return foldLine; + } + } + return null; + }; + + this.getFoldedRowCount = function(first, last) { + var foldData = this.$foldData, rowCount = last-first+1; + for (var i = 0; i < foldData.length; i++) { + var foldLine = foldData[i], + end = foldLine.end.row, + start = foldLine.start.row; + if (end >= last) { + if (start < last) { + if (start >= first) + rowCount -= last-start; + else + rowCount = 0; // in one fold + } + break; + } else if (end >= first){ + if (start >= first) // fold inside range + rowCount -= end-start; + else + rowCount -= end-first+1; + } + } + return rowCount; + }; + + this.$addFoldLine = function(foldLine) { + this.$foldData.push(foldLine); + this.$foldData.sort(function(a, b) { + return a.start.row - b.start.row; + }); + return foldLine; + }; + + /** + * Adds a new fold. + * + * @returns + * The new created Fold object or an existing fold object in case the + * passed in range fits an existing fold exactly. + */ + this.addFold = function(placeholder, range) { + var foldData = this.$foldData; + var added = false; + var fold; + + if (placeholder instanceof Fold) + fold = placeholder; + else { + fold = new Fold(range, placeholder); + fold.collapseChildren = range.collapseChildren; + } + this.$clipRangeToDocument(fold.range); + + var startRow = fold.start.row; + var startColumn = fold.start.column; + var endRow = fold.end.row; + var endColumn = fold.end.column; + + // --- Some checking --- + if (!(startRow < endRow || + startRow == endRow && startColumn <= endColumn - 2)) + throw new Error("The range has to be at least 2 characters width"); + + var startFold = this.getFoldAt(startRow, startColumn, 1); + var endFold = this.getFoldAt(endRow, endColumn, -1); + if (startFold && endFold == startFold) + return startFold.addSubFold(fold); + + if (startFold && !startFold.range.isStart(startRow, startColumn)) + this.removeFold(startFold); + + if (endFold && !endFold.range.isEnd(endRow, endColumn)) + this.removeFold(endFold); + + // Check if there are folds in the range we create the new fold for. + var folds = this.getFoldsInRange(fold.range); + if (folds.length > 0) { + // Remove the folds from fold data. + this.removeFolds(folds); + // Add the removed folds as subfolds on the new fold. + folds.forEach(function(subFold) { + fold.addSubFold(subFold); + }); + } + + for (var i = 0; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (endRow == foldLine.start.row) { + foldLine.addFold(fold); + added = true; + break; + } else if (startRow == foldLine.end.row) { + foldLine.addFold(fold); + added = true; + if (!fold.sameRow) { + // Check if we might have to merge two FoldLines. + var foldLineNext = foldData[i + 1]; + if (foldLineNext && foldLineNext.start.row == endRow) { + // We need to merge! + foldLine.merge(foldLineNext); + break; + } + } + break; + } else if (endRow <= foldLine.start.row) { + break; + } + } + + if (!added) + foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold)); + + if (this.$useWrapMode) + this.$updateWrapData(foldLine.start.row, foldLine.start.row); + else + this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row); + + // Notify that fold data has changed. + this.$modified = true; + this._signal("changeFold", { data: fold, action: "add" }); + + return fold; + }; + + this.addFolds = function(folds) { + folds.forEach(function(fold) { + this.addFold(fold); + }, this); + }; + + this.removeFold = function(fold) { + var foldLine = fold.foldLine; + var startRow = foldLine.start.row; + var endRow = foldLine.end.row; + + var foldLines = this.$foldData; + var folds = foldLine.folds; + // Simple case where there is only one fold in the FoldLine such that + // the entire fold line can get removed directly. + if (folds.length == 1) { + foldLines.splice(foldLines.indexOf(foldLine), 1); + } else + // If the fold is the last fold of the foldLine, just remove it. + if (foldLine.range.isEnd(fold.end.row, fold.end.column)) { + folds.pop(); + foldLine.end.row = folds[folds.length - 1].end.row; + foldLine.end.column = folds[folds.length - 1].end.column; + } else + // If the fold is the first fold of the foldLine, just remove it. + if (foldLine.range.isStart(fold.start.row, fold.start.column)) { + folds.shift(); + foldLine.start.row = folds[0].start.row; + foldLine.start.column = folds[0].start.column; + } else + // We know there are more then 2 folds and the fold is not at the edge. + // This means, the fold is somewhere in between. + // + // If the fold is in one row, we just can remove it. + if (fold.sameRow) { + folds.splice(folds.indexOf(fold), 1); + } else + // The fold goes over more then one row. This means remvoing this fold + // will cause the fold line to get splitted up. newFoldLine is the second part + { + var newFoldLine = foldLine.split(fold.start.row, fold.start.column); + folds = newFoldLine.folds; + folds.shift(); + newFoldLine.start.row = folds[0].start.row; + newFoldLine.start.column = folds[0].start.column; + } + + if (!this.$updating) { + if (this.$useWrapMode) + this.$updateWrapData(startRow, endRow); + else + this.$updateRowLengthCache(startRow, endRow); + } + + // Notify that fold data has changed. + this.$modified = true; + this._signal("changeFold", { data: fold, action: "remove" }); + }; + + this.removeFolds = function(folds) { + // We need to clone the folds array passed in as it might be the folds + // array of a fold line and as we call this.removeFold(fold), folds + // are removed from folds and changes the current index. + var cloneFolds = []; + for (var i = 0; i < folds.length; i++) { + cloneFolds.push(folds[i]); + } + + cloneFolds.forEach(function(fold) { + this.removeFold(fold); + }, this); + this.$modified = true; + }; + + this.expandFold = function(fold) { + this.removeFold(fold); + fold.subFolds.forEach(function(subFold) { + fold.restoreRange(subFold); + this.addFold(subFold); + }, this); + if (fold.collapseChildren > 0) { + this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1); + } + fold.subFolds = []; + }; + + this.expandFolds = function(folds) { + folds.forEach(function(fold) { + this.expandFold(fold); + }, this); + }; + + this.unfold = function(location, expandInner) { + var range, folds; + if (location == null) { + range = new Range(0, 0, this.getLength(), 0); + expandInner = true; + } else if (typeof location == "number") + range = new Range(location, 0, location, this.getLine(location).length); + else if ("row" in location) + range = Range.fromPoints(location, location); + else + range = location; + + folds = this.getFoldsInRangeList(range); + if (expandInner) { + this.removeFolds(folds); + } else { + var subFolds = folds; + // TODO: might be better to remove and add folds in one go instead of using + // expandFolds several times. + while (subFolds.length) { + this.expandFolds(subFolds); + subFolds = this.getFoldsInRangeList(range); + } + } + if (folds.length) + return folds; + }; + + /* + * Checks if a given documentRow is folded. This is true if there are some + * folded parts such that some parts of the line is still visible. + **/ + this.isRowFolded = function(docRow, startFoldRow) { + return !!this.getFoldLine(docRow, startFoldRow); + }; + + this.getRowFoldEnd = function(docRow, startFoldRow) { + var foldLine = this.getFoldLine(docRow, startFoldRow); + return foldLine ? foldLine.end.row : docRow; + }; + + this.getRowFoldStart = function(docRow, startFoldRow) { + var foldLine = this.getFoldLine(docRow, startFoldRow); + return foldLine ? foldLine.start.row : docRow; + }; + + this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) { + if (startRow == null) + startRow = foldLine.start.row; + if (startColumn == null) + startColumn = 0; + if (endRow == null) + endRow = foldLine.end.row; + if (endColumn == null) + endColumn = this.getLine(endRow).length; + + + // Build the textline using the FoldLine walker. + var doc = this.doc; + var textLine = ""; + + foldLine.walk(function(placeholder, row, column, lastColumn) { + if (row < startRow) + return; + if (row == startRow) { + if (column < startColumn) + return; + lastColumn = Math.max(startColumn, lastColumn); + } + + if (placeholder != null) { + textLine += placeholder; + } else { + textLine += doc.getLine(row).substring(lastColumn, column); + } + }, endRow, endColumn); + return textLine; + }; + + this.getDisplayLine = function(row, endColumn, startRow, startColumn) { + var foldLine = this.getFoldLine(row); + + if (!foldLine) { + var line; + line = this.doc.getLine(row); + return line.substring(startColumn || 0, endColumn || line.length); + } else { + return this.getFoldDisplayLine( + foldLine, row, endColumn, startRow, startColumn); + } + }; + + this.$cloneFoldData = function() { + var fd = []; + fd = this.$foldData.map(function(foldLine) { + var folds = foldLine.folds.map(function(fold) { + return fold.clone(); + }); + return new FoldLine(fd, folds); + }); + + return fd; + }; + + this.toggleFold = function(tryToUnfold) { + var selection = this.selection; + var range = selection.getRange(); + var fold; + var bracketPos; + + if (range.isEmpty()) { + var cursor = range.start; + fold = this.getFoldAt(cursor.row, cursor.column); + + if (fold) { + this.expandFold(fold); + return; + } else if (bracketPos = this.findMatchingBracket(cursor)) { + if (range.comparePoint(bracketPos) == 1) { + range.end = bracketPos; + } else { + range.start = bracketPos; + range.start.column++; + range.end.column--; + } + } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) { + if (range.comparePoint(bracketPos) == 1) + range.end = bracketPos; + else + range.start = bracketPos; + + range.start.column++; + } else { + range = this.getCommentFoldRange(cursor.row, cursor.column) || range; + } + } else { + var folds = this.getFoldsInRange(range); + if (tryToUnfold && folds.length) { + this.expandFolds(folds); + return; + } else if (folds.length == 1 ) { + fold = folds[0]; + } + } + + if (!fold) + fold = this.getFoldAt(range.start.row, range.start.column); + + if (fold && fold.range.toString() == range.toString()) { + this.expandFold(fold); + return; + } + + var placeholder = "..."; + if (!range.isMultiLine()) { + placeholder = this.getTextRange(range); + if (placeholder.length < 4) + return; + placeholder = placeholder.trim().substring(0, 2) + ".."; + } + + this.addFold(placeholder, range); + }; + + this.getCommentFoldRange = function(row, column, dir) { + var iterator = new TokenIterator(this, row, column); + var token = iterator.getCurrentToken(); + var type = token.type; + if (token && /^comment|string/.test(type)) { + type = type.match(/comment|string/)[0]; + if (type == "comment") + type += "|doc-start"; + var re = new RegExp(type); + var range = new Range(); + if (dir != 1) { + do { + token = iterator.stepBackward(); + } while (token && re.test(token.type)); + iterator.stepForward(); + } + + range.start.row = iterator.getCurrentTokenRow(); + range.start.column = iterator.getCurrentTokenColumn() + 2; + + iterator = new TokenIterator(this, row, column); + + if (dir != -1) { + var lastRow = -1; + do { + token = iterator.stepForward(); + if (lastRow == -1) { + var state = this.getState(iterator.$row); + if (!re.test(state)) + lastRow = iterator.$row; + } else if (iterator.$row > lastRow) { + break; + } + } while (token && re.test(token.type)); + token = iterator.stepBackward(); + } else + token = iterator.getCurrentToken(); + + range.end.row = iterator.getCurrentTokenRow(); + range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2; + return range; + } + }; + + this.foldAll = function(startRow, endRow, depth) { + if (depth == undefined) + depth = 100000; // JSON.stringify doesn't hanle Infinity + var foldWidgets = this.foldWidgets; + if (!foldWidgets) + return; // mode doesn't support folding + endRow = endRow || this.getLength(); + startRow = startRow || 0; + for (var row = startRow; row < endRow; row++) { + if (foldWidgets[row] == null) + foldWidgets[row] = this.getFoldWidget(row); + if (foldWidgets[row] != "start") + continue; + + var range = this.getFoldWidgetRange(row); + // sometimes range can be incompatible with existing fold + // TODO change addFold to return null istead of throwing + if (range && range.isMultiLine() + && range.end.row <= endRow + && range.start.row >= startRow + ) { + row = range.end.row; + try { + // addFold can change the range + var fold = this.addFold("...", range); + if (fold) + fold.collapseChildren = depth; + } catch(e) {} + } + } + }; + + // structured folding + this.$foldStyles = { + "manual": 1, + "markbegin": 1, + "markbeginend": 1 + }; + this.$foldStyle = "markbegin"; + this.setFoldStyle = function(style) { + if (!this.$foldStyles[style]) + throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]"); + + if (this.$foldStyle == style) + return; + + this.$foldStyle = style; + + if (style == "manual") + this.unfold(); + + // reset folding + var mode = this.$foldMode; + this.$setFolding(null); + this.$setFolding(mode); + }; + + this.$setFolding = function(foldMode) { + if (this.$foldMode == foldMode) + return; + + this.$foldMode = foldMode; + + this.off('change', this.$updateFoldWidgets); + this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); + this._signal("changeAnnotation"); + + if (!foldMode || this.$foldStyle == "manual") { + this.foldWidgets = null; + return; + } + + this.foldWidgets = []; + this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle); + this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle); + + this.$updateFoldWidgets = this.updateFoldWidgets.bind(this); + this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this); + this.on('change', this.$updateFoldWidgets); + this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); + }; + + this.getParentFoldRangeData = function (row, ignoreCurrent) { + var fw = this.foldWidgets; + if (!fw || (ignoreCurrent && fw[row])) + return {}; + + var i = row - 1, firstRange; + while (i >= 0) { + var c = fw[i]; + if (c == null) + c = fw[i] = this.getFoldWidget(i); + + if (c == "start") { + var range = this.getFoldWidgetRange(i); + if (!firstRange) + firstRange = range; + if (range && range.end.row >= row) + break; + } + i--; + } + + return { + range: i !== -1 && range, + firstRange: firstRange + }; + }; + + this.onFoldWidgetClick = function(row, e) { + e = e.domEvent; + var options = { + children: e.shiftKey, + all: e.ctrlKey || e.metaKey, + siblings: e.altKey + }; + + var range = this.$toggleFoldWidget(row, options); + if (!range) { + var el = (e.target || e.srcElement); + if (el && /ace_fold-widget/.test(el.className)) + el.className += " ace_invalid"; + } + }; + + this.$toggleFoldWidget = function(row, options) { + if (!this.getFoldWidget) + return; + var type = this.getFoldWidget(row); + var line = this.getLine(row); + + var dir = type === "end" ? -1 : 1; + var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir); + + if (fold) { + if (options.children || options.all) + this.removeFold(fold); + else + this.expandFold(fold); + return fold; + } + + var range = this.getFoldWidgetRange(row, true); + // sometimes singleline folds can be missed by the code above + if (range && !range.isMultiLine()) { + fold = this.getFoldAt(range.start.row, range.start.column, 1); + if (fold && range.isEqual(fold.range)) { + this.removeFold(fold); + return fold; + } + } + + if (options.siblings) { + var data = this.getParentFoldRangeData(row); + if (data.range) { + var startRow = data.range.start.row + 1; + var endRow = data.range.end.row; + } + this.foldAll(startRow, endRow, options.all ? 10000 : 0); + } else if (options.children) { + endRow = range ? range.end.row : this.getLength(); + this.foldAll(row + 1, endRow, options.all ? 10000 : 0); + } else if (range) { + if (options.all) + range.collapseChildren = 10000; + this.addFold("...", range); + } + + return range; + }; + + + + this.toggleFoldWidget = function(toggleParent) { + var row = this.selection.getCursor().row; + row = this.getRowFoldStart(row); + var range = this.$toggleFoldWidget(row, {}); + + if (range) + return; + // handle toggleParent + var data = this.getParentFoldRangeData(row, true); + range = data.range || data.firstRange; + + if (range) { + row = range.start.row; + var fold = this.getFoldAt(row, this.getLine(row).length, 1); + + if (fold) { + this.removeFold(fold); + } else { + this.addFold("...", range); + } + } + }; + + this.updateFoldWidgets = function(delta) { + var firstRow = delta.start.row; + var len = delta.end.row - firstRow; + + if (len === 0) { + this.foldWidgets[firstRow] = null; + } else if (delta.action == 'remove') { + this.foldWidgets.splice(firstRow, len + 1, null); + } else { + var args = Array(len + 1); + args.unshift(firstRow, 1); + this.foldWidgets.splice.apply(this.foldWidgets, args); + } + }; + this.tokenizerUpdateFoldWidgets = function(e) { + var rows = e.data; + if (rows.first != rows.last) { + if (this.foldWidgets.length > rows.first) + this.foldWidgets.splice(rows.first, this.foldWidgets.length); + } + }; +} + +exports.Folding = Folding; + +}); diff --git a/plugins/node_modules/ace/lib/ace/edit_session_test.js b/plugins/node_modules/ace/lib/ace/edit_session_test.js new file mode 100644 index 00000000..0717c3c0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/edit_session_test.js @@ -0,0 +1,1087 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var lang = require("./lib/lang"); +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var UndoManager = require("./undomanager").UndoManager; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var Range = require("./range").Range; +var assert = require("./test/assertions"); +var JavaScriptMode = require("./mode/javascript").Mode; + +function createFoldTestSession() { + var lines = [ + "function foo(items) {", + " for (var i=0; i>", [1, 2], 1); + + // Test wrapping for punctuation in + EditSession.prototype.$wrapAsCode = false; + computeAndAssert("ab cde, Juhu kinners", [3, 8, 13, 19], 6); + + // test indented wrapping + EditSession.prototype.$indentedSoftWrap = true; + computeAndAssert("foo bar foo bar foo bara foo", [12, 25]); + computeAndAssert("fooooooooooooooooooooooooooo", [12, 24]); + computeAndAssert("\t\tfoo bar fooooooooooobooooooo", [6, 10, 16, 22, 28]); + computeAndAssert("\t\t\tfoo bar fooooooooooobooooooo", [3, 7, 11, 17, 23, 29]); + computeAndAssert("\tfoo \t \t \t \t bar", [6, 12]); // 14 + }, + + "test get longest line" : function() { + var session = new EditSession(["12"]); + session.setTabSize(4); + assert.equal(session.getScreenWidth(), 2); + + session.doc.insertMergedLines({row: 0, column: Infinity}, ['', '']); + session.doc.insertFullLines(1, ["123"]); + assert.equal(session.getScreenWidth(), 3); + + session.doc.insertMergedLines({row: 0, column: Infinity}, ['', '']); + session.doc.insertFullLines(1, ["\t\t"]); + + assert.equal(session.getScreenWidth(), 8); + + session.setTabSize(2); + assert.equal(session.getScreenWidth(), 4); + }, + + "test getDisplayString": function() { + var session = new EditSession(["12"]); + session.setTabSize(4); + + assert.equal(session.$getDisplayTokens("\t").length, 4); + assert.equal(session.$getDisplayTokens("abc").length, 3); + assert.equal(session.$getDisplayTokens("abc\t").length, 4); + }, + + "test issue 83": function() { + var session = new EditSession(""); + var editor = new Editor(new MockRenderer(), session); + var document = session.getDocument(); + + session.setUseWrapMode(true); + + document.insertFullLines(0, ["a", "b"]); + document.insertFullLines(2, ["c", "d"]); + document.removeFullLines(1, 2); + }, + + "test wrapMode init has to create wrapData array": function() { + var session = new EditSession("foo bar\nfoo bar"); + var editor = new Editor(new MockRenderer(), session); + var document = session.getDocument(); + + session.setUseWrapMode(true); + session.setWrapLimitRange(3, 3); + session.adjustWrapLimit(80); + + // Test if wrapData is there and was computed. + assert.equal(session.$wrapData.length, 2); + assert.equal(session.$wrapData[0].length, 1); + assert.equal(session.$wrapData[1].length, 1); + }, + + "test first line blank with wrap": function() { + var session = new EditSession("\nfoo"); + session.setUseWrapMode(true); + assert.equal(session.doc.getValue(), ["", "foo"].join("\n")); + }, + + "test first line blank with wrap 2" : function() { + var session = new EditSession(""); + session.setUseWrapMode(true); + session.setValue("\nfoo"); + + assert.equal(session.doc.getValue(), ["", "foo"].join("\n")); + }, + + "test fold getFoldDisplayLine": function() { + var session = createFoldTestSession(); + function assertDisplayLine(foldLine, str) { + var line = session.getLine(foldLine.end.row); + var displayLine = + session.getFoldDisplayLine(foldLine, foldLine.end.row, line.length); + assert.equal(displayLine, str); + } + + assertDisplayLine(session.$foldData[0], "function foo(args...) {"); + assertDisplayLine(session.$foldData[1], " for (vfoo...ert(items[bar...\"juhu\");"); + }, + + "test foldLine idxToPosition": function() { + var session = createFoldTestSession(); + + function assertIdx2Pos(foldLineIdx, idx, row, column) { + var foldLine = session.$foldData[foldLineIdx]; + assert.position(foldLine.idxToPosition(idx), row, column); + } + +// "function foo(items) {", +// " for (var i=0; iThe cursor in this paragraph text will be offset by 1 row.

    ", + "

    Everything after this will be offset as well due to the folds in the row before too.

    " + ].join("\n")); + session.addFold('...', new Range(0, 8, 0, 42)); + session.addFold('...', new Range(1, 8, 1, 42)); + session.addFold('...', new Range(3, 7, 3, 51)); + session.setOption("wrap", 40); + session.remove(new Range(0,0, 2, 5)); + // needed because adjustWrapLimit is called async from renderer + session.adjustWrapLimit(80); + + assert.equal(session.$wrapData + "", [[], [], [40, 76]] + ""); + }, + + "test add fold": function() { + var session = createFoldTestSession(); + var fold; + + function tryAddFold(placeholder, range, shouldFail) { + var fail = false; + try { + fold = session.addFold(placeholder, range); + } catch (e) { + fail = true; + } + if (fail != shouldFail) { + throw new Error("Expected to get an exception"); + } + } + + tryAddFold("foo", new Range(0, 13, 0, 17), false); + tryAddFold("foo", new Range(0, 14, 0, 18), true); + tryAddFold("foo", new Range(0, 13, 0, 18), false); + assert.equal(session.$foldData[0].folds.length, 1); + + tryAddFold("f", new Range(0, 13, 0, 18), false); + tryAddFold("foo", new Range(0, 18, 0, 21), false); + assert.equal(session.$foldData[0].folds.length, 2); + session.removeFold(fold); + + tryAddFold("foo", new Range(0, 18, 0, 22), false); + tryAddFold("foo", new Range(0, 18, 0, 19), true); + tryAddFold("foo", new Range(0, 22, 1, 10), false); + }, + + "test add subfolds": function() { + var session = createFoldTestSession(); + var fold, oldFold; + var foldData = session.$foldData; + + oldFold = foldData[0].folds[0]; + + fold = session.addFold("fold0", new Range(0, 10, 0, 21)); + assert.equal(foldData[0].folds.length, 1); + assert.equal(fold.subFolds.length, 1); + assert.equal(fold.subFolds[0], oldFold); + + session.expandFold(fold); + assert.equal(foldData[0].folds.length, 1); + assert.equal(foldData[0].folds[0], oldFold); + assert.equal(fold.subFolds.length, 0); + + fold = session.addFold("fold0", new Range(0, 13, 2, 10)); + assert.equal(foldData.length, 1); + assert.equal(fold.subFolds.length, 2); + assert.equal(fold.subFolds[0], oldFold); + + session.expandFold(fold); + assert.equal(foldData.length, 2); + assert.equal(foldData[0].folds.length, 1); + assert.equal(foldData[0].folds[0], oldFold); + assert.equal(fold.subFolds.length, 0); + + session.unfold(null, true); + fold = session.addFold("fold0", new Range(0, 0, 0, 21)); + session.addFold("fold0", new Range(0, 1, 0, 5)); + session.addFold("fold0", new Range(0, 6, 0, 8)); + assert.equal(fold.subFolds.length, 2); + }, + + "test row cache": function() { + var session = createFoldTestSession(); + + session.screenToDocumentPosition(2,3); + assertArray(session.$docRowCache, [1,3]); + assertArray(session.$screenRowCache, [1,2]); + + session.screenToDocumentPosition(5,3); + assertArray(session.$docRowCache, [1,3,4]); + assertArray(session.$screenRowCache, [1,2,3]); + + session.screenToDocumentPosition(0,3); + assertArray(session.$docRowCache, [1,3,4]); + assertArray(session.$screenRowCache, [1,2,3]); + + var pos = session.screenToDocumentPosition(0,0); + assert.equal(pos.row, 0); + assertArray(session.$docRowCache, [1,3,4]); + assertArray(session.$screenRowCache, [1,2,3]); + + session.screenToDocumentPosition(1,0); + assertArray(session.$docRowCache, [1,3,4]); + assertArray(session.$screenRowCache, [1,2,3]); + + session.$resetRowCache(); + assertArray(session.$docRowCache, []); + assertArray(session.$screenRowCache, []); + + session.screenToDocumentPosition(1,3); + assertArray(session.$docRowCache, [1]); + assertArray(session.$screenRowCache, [1]); + + session.screenToDocumentPosition(5,3); + assertArray(session.$docRowCache, [1,3,4]); + assertArray(session.$screenRowCache, [1,2,3]); + + session = new EditSession(new Array(30).join("\n")); + session.documentToScreenPosition(2,0); + session.documentToScreenPosition(2,0); + assertArray(session.$docRowCache, [1,2]); + assertArray(session.$screenRowCache, [1,2]); + }, + + "test annotations": function() { + var session = new EditSession([]), + annotation = {row: 0, type: 'info', text: "This is a test."}; + + session.clearAnnotations(); + assertArray(session.getAnnotations(), []); + session.setAnnotations([annotation]); + assertArray(session.getAnnotations(), [annotation]); + }, + + "test: mode loading" : function(next) { + if (!require.undef) { + console.log("Skipping test: This test only runs in the browser"); + next(); + return; + } + var session = new EditSession([]); + session.setMode("ace/mode/javascript"); + assert.equal(session.$modeid, "ace/mode/javascript"); + session.on("changeMode", function() { + assert.equal(session.$modeid, "ace/mode/javascript"); + }); + session.setMode("ace/mode/sh", function(mode) { + assert.ok(!mode); + }); + setTimeout(function() { + session.setMode("ace/mode/javascript", function(mode) { + session.setMode("ace/mode/javascript"); + assert.equal(session.$modeid, "ace/mode/javascript"); + next(); + }); + }, 0); + } +}; +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/editor.js b/plugins/node_modules/ace/lib/ace/editor.js new file mode 100644 index 00000000..1ec567f0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/editor.js @@ -0,0 +1,2735 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +require("./lib/fixoldbrowsers"); + +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var lang = require("./lib/lang"); +var useragent = require("./lib/useragent"); +var TextInput = require("./keyboard/textinput").TextInput; +var MouseHandler = require("./mouse/mouse_handler").MouseHandler; +var FoldHandler = require("./mouse/fold_handler").FoldHandler; +var KeyBinding = require("./keyboard/keybinding").KeyBinding; +var EditSession = require("./edit_session").EditSession; +var Search = require("./search").Search; +var Range = require("./range").Range; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var CommandManager = require("./commands/command_manager").CommandManager; +var defaultCommands = require("./commands/default_commands").commands; +var config = require("./config"); +var TokenIterator = require("./token_iterator").TokenIterator; + +var clipboard = require("./clipboard"); + +/** + * The main entry point into the Ace functionality. + * + * The `Editor` manages the [[EditSession]] (which manages [[Document]]s), as well as the [[VirtualRenderer]], which draws everything to the screen. + * + * Event sessions dealing with the mouse and keyboard are bubbled up from `Document` to the `Editor`, which decides what to do with them. + * @class Editor + **/ + +/** + * Creates a new `Editor` object. + * + * @param {VirtualRenderer} renderer Associated `VirtualRenderer` that draws everything + * @param {EditSession} session The `EditSession` to refer to + * + * + * @constructor + **/ +var Editor = function(renderer, session, options) { + var container = renderer.getContainerElement(); + this.container = container; + this.renderer = renderer; + this.id = "editor" + (++Editor.$uid); + + this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); + if (typeof document == "object") { + this.textInput = new TextInput(renderer.getTextAreaContainer(), this); + this.renderer.textarea = this.textInput.getElement(); + // TODO detect touch event support + this.$mouseHandler = new MouseHandler(this); + new FoldHandler(this); + } + + this.keyBinding = new KeyBinding(this); + + this.$search = new Search().set({ + wrap: true + }); + + this.$historyTracker = this.$historyTracker.bind(this); + this.commands.on("exec", this.$historyTracker); + + this.$initOperationListeners(); + + this._$emitInputEvent = lang.delayedCall(function() { + this._signal("input", {}); + if (this.session && this.session.bgTokenizer) + this.session.bgTokenizer.scheduleStart(); + }.bind(this)); + + this.on("change", function(_, _self) { + _self._$emitInputEvent.schedule(31); + }); + + this.setSession(session || options && options.session || new EditSession("")); + config.resetOptions(this); + if (options) + this.setOptions(options); + config._signal("editor", this); +}; + +Editor.$uid = 0; + +(function(){ + + oop.implement(this, EventEmitter); + + this.$initOperationListeners = function() { + this.commands.on("exec", this.startOperation.bind(this), true); + this.commands.on("afterExec", this.endOperation.bind(this), true); + + this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this)); + + // todo: add before change events? + this.on("change", function() { + if (!this.curOp) { + this.startOperation(); + this.curOp.selectionBefore = this.$lastSel; + } + this.curOp.docChanged = true; + }.bind(this), true); + + this.on("changeSelection", function() { + if (!this.curOp) { + this.startOperation(); + this.curOp.selectionBefore = this.$lastSel; + } + this.curOp.selectionChanged = true; + }.bind(this), true); + }; + + this.curOp = null; + this.prevOp = {}; + this.startOperation = function(commadEvent) { + if (this.curOp) { + if (!commadEvent || this.curOp.command) + return; + this.prevOp = this.curOp; + } + if (!commadEvent) { + this.previousCommand = null; + commadEvent = {}; + } + + this.$opResetTimer.schedule(); + this.curOp = this.session.curOp = { + command: commadEvent.command || {}, + args: commadEvent.args, + scrollTop: this.renderer.scrollTop + }; + this.curOp.selectionBefore = this.selection.toJSON(); + }; + + this.endOperation = function(e) { + if (this.curOp) { + if (e && e.returnValue === false) + return (this.curOp = null); + this._signal("beforeEndOperation"); + var command = this.curOp.command; + var scrollIntoView = command && command.scrollIntoView; + if (scrollIntoView) { + switch (scrollIntoView) { + case "center-animate": + scrollIntoView = "animate"; + /* fall through */ + case "center": + this.renderer.scrollCursorIntoView(null, 0.5); + break; + case "animate": + case "cursor": + this.renderer.scrollCursorIntoView(); + break; + case "selectionPart": + var range = this.selection.getRange(); + var config = this.renderer.layerConfig; + if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) { + this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead); + } + break; + default: + break; + } + if (scrollIntoView == "animate") + this.renderer.animateScrolling(this.curOp.scrollTop); + } + var sel = this.selection.toJSON(); + this.curOp.selectionAfter = sel; + this.$lastSel = this.selection.toJSON(); + + // console.log(this.$lastSel+" endOP") + this.session.getUndoManager().addSelection(sel); + this.prevOp = this.curOp; + this.curOp = null; + } + }; + + // TODO use property on commands instead of this + this.$mergeableCommands = ["backspace", "del", "insertstring"]; + this.$historyTracker = function(e) { + if (!this.$mergeUndoDeltas) + return; + + var prev = this.prevOp; + var mergeableCommands = this.$mergeableCommands; + // previous command was the same + var shouldMerge = prev.command && (e.command.name == prev.command.name); + if (e.command.name == "insertstring") { + var text = e.args; + if (this.mergeNextCommand === undefined) + this.mergeNextCommand = true; + + shouldMerge = shouldMerge + && this.mergeNextCommand // previous command allows to coalesce with + && (!/\s/.test(text) || /\s/.test(prev.args)); // previous insertion was of same type + + this.mergeNextCommand = true; + } else { + shouldMerge = shouldMerge + && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable + } + + if ( + this.$mergeUndoDeltas != "always" + && Date.now() - this.sequenceStartTime > 2000 + ) { + shouldMerge = false; // the sequence is too long + } + + if (shouldMerge) + this.session.mergeUndoDeltas = true; + else if (mergeableCommands.indexOf(e.command.name) !== -1) + this.sequenceStartTime = Date.now(); + }; + + /** + * Sets a new key handler, such as "vim" or "windows". + * @param {String} keyboardHandler The new key handler + * + **/ + this.setKeyboardHandler = function(keyboardHandler, cb) { + if (keyboardHandler && typeof keyboardHandler === "string") { + this.$keybindingId = keyboardHandler; + var _self = this; + config.loadModule(["keybinding", keyboardHandler], function(module) { + if (_self.$keybindingId == keyboardHandler) + _self.keyBinding.setKeyboardHandler(module && module.handler); + cb && cb(); + }); + } else { + this.$keybindingId = null; + this.keyBinding.setKeyboardHandler(keyboardHandler); + cb && cb(); + } + }; + + /** + * Returns the keyboard handler, such as "vim" or "windows". + * + * @returns {String} + * + **/ + this.getKeyboardHandler = function() { + return this.keyBinding.getKeyboardHandler(); + }; + + + /** + * Emitted whenever the [[EditSession]] changes. + * @event changeSession + * @param {Object} e An object with two properties, `oldSession` and `session`, that represent the old and new [[EditSession]]s. + * + **/ + /** + * Sets a new editsession to use. This method also emits the `'changeSession'` event. + * @param {EditSession} session The new session to use + * + **/ + this.setSession = function(session) { + if (this.session == session) + return; + + // make sure operationEnd events are not emitted to wrong session + if (this.curOp) this.endOperation(); + this.curOp = {}; + + var oldSession = this.session; + if (oldSession) { + this.session.off("change", this.$onDocumentChange); + this.session.off("changeMode", this.$onChangeMode); + this.session.off("tokenizerUpdate", this.$onTokenizerUpdate); + this.session.off("changeTabSize", this.$onChangeTabSize); + this.session.off("changeWrapLimit", this.$onChangeWrapLimit); + this.session.off("changeWrapMode", this.$onChangeWrapMode); + this.session.off("changeFold", this.$onChangeFold); + this.session.off("changeFrontMarker", this.$onChangeFrontMarker); + this.session.off("changeBackMarker", this.$onChangeBackMarker); + this.session.off("changeBreakpoint", this.$onChangeBreakpoint); + this.session.off("changeAnnotation", this.$onChangeAnnotation); + this.session.off("changeOverwrite", this.$onCursorChange); + this.session.off("changeScrollTop", this.$onScrollTopChange); + this.session.off("changeScrollLeft", this.$onScrollLeftChange); + + var selection = this.session.getSelection(); + selection.off("changeCursor", this.$onCursorChange); + selection.off("changeSelection", this.$onSelectionChange); + } + + this.session = session; + if (session) { + this.$onDocumentChange = this.onDocumentChange.bind(this); + session.on("change", this.$onDocumentChange); + this.renderer.setSession(session); + + this.$onChangeMode = this.onChangeMode.bind(this); + session.on("changeMode", this.$onChangeMode); + + this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); + session.on("tokenizerUpdate", this.$onTokenizerUpdate); + + this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); + session.on("changeTabSize", this.$onChangeTabSize); + + this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); + session.on("changeWrapLimit", this.$onChangeWrapLimit); + + this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); + session.on("changeWrapMode", this.$onChangeWrapMode); + + this.$onChangeFold = this.onChangeFold.bind(this); + session.on("changeFold", this.$onChangeFold); + + this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); + this.session.on("changeFrontMarker", this.$onChangeFrontMarker); + + this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); + this.session.on("changeBackMarker", this.$onChangeBackMarker); + + this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); + this.session.on("changeBreakpoint", this.$onChangeBreakpoint); + + this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); + this.session.on("changeAnnotation", this.$onChangeAnnotation); + + this.$onCursorChange = this.onCursorChange.bind(this); + this.session.on("changeOverwrite", this.$onCursorChange); + + this.$onScrollTopChange = this.onScrollTopChange.bind(this); + this.session.on("changeScrollTop", this.$onScrollTopChange); + + this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); + this.session.on("changeScrollLeft", this.$onScrollLeftChange); + + this.selection = session.getSelection(); + this.selection.on("changeCursor", this.$onCursorChange); + + this.$onSelectionChange = this.onSelectionChange.bind(this); + this.selection.on("changeSelection", this.$onSelectionChange); + + this.onChangeMode(); + + this.onCursorChange(); + + this.onScrollTopChange(); + this.onScrollLeftChange(); + this.onSelectionChange(); + this.onChangeFrontMarker(); + this.onChangeBackMarker(); + this.onChangeBreakpoint(); + this.onChangeAnnotation(); + this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); + this.renderer.updateFull(); + } else { + this.selection = null; + this.renderer.setSession(session); + } + + this._signal("changeSession", { + session: session, + oldSession: oldSession + }); + + this.curOp = null; + + oldSession && oldSession._signal("changeEditor", {oldEditor: this}); + session && session._signal("changeEditor", {editor: this}); + + if (session && session.bgTokenizer) + session.bgTokenizer.scheduleStart(); + }; + + /** + * Returns the current session being used. + * @returns {EditSession} + **/ + this.getSession = function() { + return this.session; + }; + + /** + * Sets the current document to `val`. + * @param {String} val The new value to set for the document + * @param {Number} cursorPos Where to set the new value. `undefined` or 0 is selectAll, -1 is at the document start, and 1 is at the end + * + * @returns {String} The current document value + * @related Document.setValue + **/ + this.setValue = function(val, cursorPos) { + this.session.doc.setValue(val); + + if (!cursorPos) + this.selectAll(); + else if (cursorPos == 1) + this.navigateFileEnd(); + else if (cursorPos == -1) + this.navigateFileStart(); + + return val; + }; + + /** + * Returns the current session's content. + * + * @returns {String} + * @related EditSession.getValue + **/ + this.getValue = function() { + return this.session.getValue(); + }; + + /** + * + * Returns the currently highlighted selection. + * @returns {Selection} The selection object + **/ + this.getSelection = function() { + return this.selection; + }; + + /** + * {:VirtualRenderer.onResize} + * @param {Boolean} force If `true`, recomputes the size, even if the height and width haven't changed + * + * + * @related VirtualRenderer.onResize + **/ + this.resize = function(force) { + this.renderer.onResize(force); + }; + + /** + * {:VirtualRenderer.setTheme} + * @param {String} theme The path to a theme + * @param {Function} cb optional callback called when theme is loaded + **/ + this.setTheme = function(theme, cb) { + this.renderer.setTheme(theme, cb); + }; + + /** + * {:VirtualRenderer.getTheme} + * + * @returns {String} The set theme + * @related VirtualRenderer.getTheme + **/ + this.getTheme = function() { + return this.renderer.getTheme(); + }; + + /** + * {:VirtualRenderer.setStyle} + * @param {String} style A class name + * + * + * @related VirtualRenderer.setStyle + **/ + this.setStyle = function(style) { + this.renderer.setStyle(style); + }; + + /** + * {:VirtualRenderer.unsetStyle} + * @related VirtualRenderer.unsetStyle + **/ + this.unsetStyle = function(style) { + this.renderer.unsetStyle(style); + }; + + /** + * Gets the current font size of the editor text. + */ + this.getFontSize = function () { + return this.getOption("fontSize") || + dom.computedStyle(this.container, "fontSize"); + }; + + /** + * Set a new font size (in pixels) for the editor text. + * @param {String} size A font size ( _e.g._ "12px") + * + * + **/ + this.setFontSize = function(size) { + this.setOption("fontSize", size); + }; + + this.$highlightBrackets = function() { + if (this.session.$bracketHighlight) { + this.session.removeMarker(this.session.$bracketHighlight); + this.session.$bracketHighlight = null; + } + + if (this.$highlightPending) { + return; + } + + // perform highlight async to not block the browser during navigation + var self = this; + this.$highlightPending = true; + setTimeout(function() { + self.$highlightPending = false; + var session = self.session; + if (!session || !session.bgTokenizer) return; + var pos = session.findMatchingBracket(self.getCursorPosition()); + if (pos) { + var range = new Range(pos.row, pos.column, pos.row, pos.column + 1); + } else if (session.$mode.getMatching) { + var range = session.$mode.getMatching(self.session); + } + if (range) + session.$bracketHighlight = session.addMarker(range, "ace_bracket", "text"); + }, 50); + }; + + // todo: move to mode.getMatching + this.$highlightTags = function() { + if (this.$highlightTagPending) + return; + + // perform highlight async to not block the browser during navigation + var self = this; + this.$highlightTagPending = true; + setTimeout(function() { + self.$highlightTagPending = false; + + var session = self.session; + if (!session || !session.bgTokenizer) return; + + var pos = self.getCursorPosition(); + var iterator = new TokenIterator(self.session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + + if (!token || !/\b(?:tag-open|tag-name)/.test(token.type)) { + session.removeMarker(session.$tagHighlight); + session.$tagHighlight = null; + return; + } + + if (token.type.indexOf("tag-open") != -1) { + token = iterator.stepForward(); + if (!token) + return; + } + + var tag = token.value; + var depth = 0; + var prevToken = iterator.stepBackward(); + + if (prevToken.value == '<'){ + //find closing tag + do { + prevToken = token; + token = iterator.stepForward(); + + if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) { + if (prevToken.value === '<'){ + depth++; + } else if (prevToken.value === '= 0); + } else { + //find opening tag + do { + token = prevToken; + prevToken = iterator.stepBackward(); + + if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) { + if (prevToken.value === '<') { + depth++; + } else if (prevToken.value === ' 1)) + highlight = false; + } + + if (session.$highlightLineMarker && !highlight) { + session.removeMarker(session.$highlightLineMarker.id); + session.$highlightLineMarker = null; + } else if (!session.$highlightLineMarker && highlight) { + var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); + range.id = session.addMarker(range, "ace_active-line", "screenLine"); + session.$highlightLineMarker = range; + } else if (highlight) { + session.$highlightLineMarker.start.row = highlight.row; + session.$highlightLineMarker.end.row = highlight.row; + session.$highlightLineMarker.start.column = highlight.column; + session._signal("changeBackMarker"); + } + }; + + this.onSelectionChange = function(e) { + var session = this.session; + + if (session.$selectionMarker) { + session.removeMarker(session.$selectionMarker); + } + session.$selectionMarker = null; + + if (!this.selection.isEmpty()) { + var range = this.selection.getRange(); + var style = this.getSelectionStyle(); + session.$selectionMarker = session.addMarker(range, "ace_selection", style); + } else { + this.$updateHighlightActiveLine(); + } + + var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp(); + this.session.highlight(re); + + this._signal("changeSelection"); + }; + + this.$getSelectionHighLightRegexp = function() { + var session = this.session; + + var selection = this.getSelectionRange(); + if (selection.isEmpty() || selection.isMultiLine()) + return; + + var startColumn = selection.start.column; + var endColumn = selection.end.column; + var line = session.getLine(selection.start.row); + + var needle = line.substring(startColumn, endColumn); + // maximum allowed size for regular expressions in 32000, + // but getting close to it has significant impact on the performance + if (needle.length > 5000 || !/[\w\d]/.test(needle)) + return; + + var re = this.$search.$assembleRegExp({ + wholeWord: true, + caseSensitive: true, + needle: needle + }); + + var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1); + if (!re.test(wordWithBoundary)) + return; + + return re; + }; + + + this.onChangeFrontMarker = function() { + this.renderer.updateFrontMarkers(); + }; + + this.onChangeBackMarker = function() { + this.renderer.updateBackMarkers(); + }; + + + this.onChangeBreakpoint = function() { + this.renderer.updateBreakpoints(); + }; + + this.onChangeAnnotation = function() { + this.renderer.setAnnotations(this.session.getAnnotations()); + }; + + + this.onChangeMode = function(e) { + this.renderer.updateText(); + this._emit("changeMode", e); + }; + + + this.onChangeWrapLimit = function() { + this.renderer.updateFull(); + }; + + this.onChangeWrapMode = function() { + this.renderer.onResize(true); + }; + + + this.onChangeFold = function() { + // Update the active line marker as due to folding changes the current + // line range on the screen might have changed. + this.$updateHighlightActiveLine(); + // TODO: This might be too much updating. Okay for now. + this.renderer.updateFull(); + }; + + + /** + * Returns the string of text currently highlighted. + * @returns {String} + **/ + this.getSelectedText = function(newLineCharacter) { + return this.session.getTextRange(this.getSelectionRange(), newLineCharacter); + }; + + /** + * Emitted when text is copied. + * @event copy + * @param {String} text The copied text + * + **/ + /** + * Returns the string of text currently highlighted. + * @returns {String} + **/ + this.getCopyText = function() { + var text = this.getSelectedText(useragent.isWin ? "\r\n" : "\n"); + var nl = this.session.doc.getNewLineCharacter(); + var copyLine= false; + if (!text && this.$copyWithEmptySelection) { + copyLine = true; + var ranges = this.selection.getAllRanges(); + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (i && ranges[i - 1].start.row == range.start.row) + continue; + text += this.session.getLine(range.start.row) + nl; + } + } + var e = {text: text}; + this._signal("copy", e); + clipboard.lineMode = copyLine ? e.text : ""; + return e.text; + }; + + /** + * Called whenever a text "copy" happens. + **/ + this.onCopy = function() { + this.commands.exec("copy", this); + }; + + /** + * Called whenever a text "cut" happens. + **/ + this.onCut = function() { + this.commands.exec("cut", this); + }; + + /** + * Emitted when text is pasted. + * @event paste + * @param {Object} an object which contains one property, `text`, that represents the text to be pasted. Editing this property will alter the text that is pasted. + * + * + **/ + /** + * Called whenever a text "paste" happens. + * @param {String} text The pasted text + * + * + **/ + this.onPaste = function(text, event) { + var e = {text: text, event: event}; + this.commands.exec("paste", this, e); + }; + + this.$handlePaste = function(e) { + if (typeof e == "string") + e = {text: e}; + this._signal("paste", e); + var text = e.text; + + var lineMode = text == clipboard.lineMode; + var session = this.session; + if (!this.inMultiSelectMode || this.inVirtualSelectionMode) { + if (lineMode) + session.insert({ row: this.selection.lead.row, column: 0 }, text); + else + this.insert(text); + } else if (lineMode) { + this.selection.rangeList.ranges.forEach(function(range) { + session.insert({ row: range.start.row, column: 0 }, text); + }); + } else { + var lines = text.split(/\r\n|\r|\n/); + var ranges = this.selection.rangeList.ranges; + + if (lines.length > ranges.length || lines.length < 2 || !lines[1]) + return this.commands.exec("insertstring", this, text); + + for (var i = ranges.length; i--;) { + var range = ranges[i]; + if (!range.isEmpty()) + session.remove(range); + + session.insert(range.start, lines[i]); + } + } + }; + + this.execCommand = function(command, args) { + return this.commands.exec(command, this, args); + }; + + this.transformAction = function(type, text) { + + }; + + /** + * Inserts `text` into wherever the cursor is pointing. + * @param {String} text The new text to add + * + **/ + this.insert = function(text, pasted) { + var session = this.session; + var mode = session.getMode(); + var cursor = this.getCursorPosition(); + + if (this.getBehavioursEnabled() && !pasted) { + // Get a transform if the current mode wants one. + var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); + if (transform) { + if (text !== transform.text) { + // keep automatic insertion in a separate delta, unless it is in multiselect mode + if (!this.inVirtualSelectionMode) { + this.session.mergeUndoDeltas = false; + this.mergeNextCommand = false; + } + } + text = transform.text; + + } + } + + if (text == "\t") + text = this.session.getTabString(); + + // remove selected text + if (!this.selection.isEmpty()) { + var range = this.getSelectionRange(); + cursor = this.session.remove(range); + this.clearSelection(); + } + else if (this.session.getOverwrite() && text.indexOf("\n") == -1) { + var range = new Range.fromPoints(cursor, cursor); + range.end.column += text.length; + this.session.remove(range); + } + + if (text == "\n" || text == "\r\n") { + var line = session.getLine(cursor.row); + if (cursor.column > line.search(/\S|$/)) { + var d = line.substr(cursor.column).search(/\S|$/); + session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d); + } + } + this.clearSelection(); + + var start = cursor.column; + var lineState = session.getState(cursor.row); + var line = session.getLine(cursor.row); + var shouldOutdent = mode.checkOutdent(lineState, line, text); + var end = session.insert(cursor, text); + + if (transform && transform.selection) { + if (transform.selection.length == 2) { // Transform relative to the current column + this.selection.setSelectionRange( + new Range(cursor.row, start + transform.selection[0], + cursor.row, start + transform.selection[1])); + } else { // Transform relative to the current row. + this.selection.setSelectionRange( + new Range(cursor.row + transform.selection[0], + transform.selection[1], + cursor.row + transform.selection[2], + transform.selection[3])); + } + } + + if (session.getDocument().isNewLine(text)) { + var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); + + session.insert({row: cursor.row+1, column: 0}, lineIndent); + } + if (shouldOutdent) + mode.autoOutdent(lineState, session, cursor.row); + }; + + this.onTextInput = function(text) { + this.keyBinding.onTextInput(text); + }; + + this.onCommandKey = function(e, hashId, keyCode) { + this.keyBinding.onCommandKey(e, hashId, keyCode); + }; + + /** + * Pass in `true` to enable overwrites in your session, or `false` to disable. If overwrites is enabled, any text you enter will type over any text after it. If the value of `overwrite` changes, this function also emits the `changeOverwrite` event. + * @param {Boolean} overwrite Defines whether or not to set overwrites + * + * + * @related EditSession.setOverwrite + **/ + this.setOverwrite = function(overwrite) { + this.session.setOverwrite(overwrite); + }; + + /** + * Returns `true` if overwrites are enabled; `false` otherwise. + * @returns {Boolean} + * @related EditSession.getOverwrite + **/ + this.getOverwrite = function() { + return this.session.getOverwrite(); + }; + + /** + * Sets the value of overwrite to the opposite of whatever it currently is. + * @related EditSession.toggleOverwrite + **/ + this.toggleOverwrite = function() { + this.session.toggleOverwrite(); + }; + + /** + * Sets how fast the mouse scrolling should do. + * @param {Number} speed A value indicating the new speed (in milliseconds) + **/ + this.setScrollSpeed = function(speed) { + this.setOption("scrollSpeed", speed); + }; + + /** + * Returns the value indicating how fast the mouse scroll speed is (in milliseconds). + * @returns {Number} + **/ + this.getScrollSpeed = function() { + return this.getOption("scrollSpeed"); + }; + + /** + * Sets the delay (in milliseconds) of the mouse drag. + * @param {Number} dragDelay A value indicating the new delay + **/ + this.setDragDelay = function(dragDelay) { + this.setOption("dragDelay", dragDelay); + }; + + /** + * Returns the current mouse drag delay. + * @returns {Number} + **/ + this.getDragDelay = function() { + return this.getOption("dragDelay"); + }; + + /** + * Emitted when the selection style changes, via [[Editor.setSelectionStyle]]. + * @event changeSelectionStyle + * @param {Object} data Contains one property, `data`, which indicates the new selection style + **/ + /** + * Draw selection markers spanning whole line, or only over selected text. Default value is "line" + * @param {String} style The new selection style "line"|"text" + * + **/ + this.setSelectionStyle = function(val) { + this.setOption("selectionStyle", val); + }; + + /** + * Returns the current selection style. + * @returns {String} + **/ + this.getSelectionStyle = function() { + return this.getOption("selectionStyle"); + }; + + /** + * Determines whether or not the current line should be highlighted. + * @param {Boolean} shouldHighlight Set to `true` to highlight the current line + **/ + this.setHighlightActiveLine = function(shouldHighlight) { + this.setOption("highlightActiveLine", shouldHighlight); + }; + /** + * Returns `true` if current lines are always highlighted. + * @return {Boolean} + **/ + this.getHighlightActiveLine = function() { + return this.getOption("highlightActiveLine"); + }; + this.setHighlightGutterLine = function(shouldHighlight) { + this.setOption("highlightGutterLine", shouldHighlight); + }; + + this.getHighlightGutterLine = function() { + return this.getOption("highlightGutterLine"); + }; + + /** + * Determines if the currently selected word should be highlighted. + * @param {Boolean} shouldHighlight Set to `true` to highlight the currently selected word + * + **/ + this.setHighlightSelectedWord = function(shouldHighlight) { + this.setOption("highlightSelectedWord", shouldHighlight); + }; + + /** + * Returns `true` if currently highlighted words are to be highlighted. + * @returns {Boolean} + **/ + this.getHighlightSelectedWord = function() { + return this.$highlightSelectedWord; + }; + + this.setAnimatedScroll = function(shouldAnimate){ + this.renderer.setAnimatedScroll(shouldAnimate); + }; + + this.getAnimatedScroll = function(){ + return this.renderer.getAnimatedScroll(); + }; + + /** + * If `showInvisibles` is set to `true`, invisible characters—like spaces or new lines—are show in the editor. + * @param {Boolean} showInvisibles Specifies whether or not to show invisible characters + * + **/ + this.setShowInvisibles = function(showInvisibles) { + this.renderer.setShowInvisibles(showInvisibles); + }; + + /** + * Returns `true` if invisible characters are being shown. + * @returns {Boolean} + **/ + this.getShowInvisibles = function() { + return this.renderer.getShowInvisibles(); + }; + + this.setDisplayIndentGuides = function(display) { + this.renderer.setDisplayIndentGuides(display); + }; + + this.getDisplayIndentGuides = function() { + return this.renderer.getDisplayIndentGuides(); + }; + + /** + * If `showPrintMargin` is set to `true`, the print margin is shown in the editor. + * @param {Boolean} showPrintMargin Specifies whether or not to show the print margin + * + **/ + this.setShowPrintMargin = function(showPrintMargin) { + this.renderer.setShowPrintMargin(showPrintMargin); + }; + + /** + * Returns `true` if the print margin is being shown. + * @returns {Boolean} + **/ + this.getShowPrintMargin = function() { + return this.renderer.getShowPrintMargin(); + }; + + /** + * Sets the column defining where the print margin should be. + * @param {Number} showPrintMargin Specifies the new print margin + * + **/ + this.setPrintMarginColumn = function(showPrintMargin) { + this.renderer.setPrintMarginColumn(showPrintMargin); + }; + + /** + * Returns the column number of where the print margin is. + * @returns {Number} + **/ + this.getPrintMarginColumn = function() { + return this.renderer.getPrintMarginColumn(); + }; + + /** + * If `readOnly` is true, then the editor is set to read-only mode, and none of the content can change. + * @param {Boolean} readOnly Specifies whether the editor can be modified or not + * + **/ + this.setReadOnly = function(readOnly) { + this.setOption("readOnly", readOnly); + }; + + /** + * Returns `true` if the editor is set to read-only mode. + * @returns {Boolean} + **/ + this.getReadOnly = function() { + return this.getOption("readOnly"); + }; + + /** + * Specifies whether to use behaviors or not. ["Behaviors" in this case is the auto-pairing of special characters, like quotation marks, parenthesis, or brackets.]{: #BehaviorsDef} + * @param {Boolean} enabled Enables or disables behaviors + * + **/ + this.setBehavioursEnabled = function (enabled) { + this.setOption("behavioursEnabled", enabled); + }; + + /** + * Returns `true` if the behaviors are currently enabled. {:BehaviorsDef} + * + * @returns {Boolean} + **/ + this.getBehavioursEnabled = function () { + return this.getOption("behavioursEnabled"); + }; + + /** + * Specifies whether to use wrapping behaviors or not, i.e. automatically wrapping the selection with characters such as brackets + * when such a character is typed in. + * @param {Boolean} enabled Enables or disables wrapping behaviors + * + **/ + this.setWrapBehavioursEnabled = function (enabled) { + this.setOption("wrapBehavioursEnabled", enabled); + }; + + /** + * Returns `true` if the wrapping behaviors are currently enabled. + **/ + this.getWrapBehavioursEnabled = function () { + return this.getOption("wrapBehavioursEnabled"); + }; + + /** + * Indicates whether the fold widgets should be shown or not. + * @param {Boolean} show Specifies whether the fold widgets are shown + **/ + this.setShowFoldWidgets = function(show) { + this.setOption("showFoldWidgets", show); + + }; + /** + * Returns `true` if the fold widgets are shown. + * @return {Boolean} + **/ + this.getShowFoldWidgets = function() { + return this.getOption("showFoldWidgets"); + }; + + this.setFadeFoldWidgets = function(fade) { + this.setOption("fadeFoldWidgets", fade); + }; + + this.getFadeFoldWidgets = function() { + return this.getOption("fadeFoldWidgets"); + }; + + /** + * Removes the current selection or one character. + * @param {String} dir The direction of the deletion to occur, either "left" or "right" + * + **/ + this.remove = function(dir) { + if (this.selection.isEmpty()){ + if (dir == "left") + this.selection.selectLeft(); + else + this.selection.selectRight(); + } + + var range = this.getSelectionRange(); + if (this.getBehavioursEnabled()) { + var session = this.session; + var state = session.getState(range.start.row); + var new_range = session.getMode().transformAction(state, 'deletion', this, session, range); + + if (range.end.column === 0) { + var text = session.getTextRange(range); + if (text[text.length - 1] == "\n") { + var line = session.getLine(range.end.row); + if (/^\s+$/.test(line)) { + range.end.column = line.length; + } + } + } + if (new_range) + range = new_range; + } + + this.session.remove(range); + this.clearSelection(); + }; + + /** + * Removes the word directly to the right of the current selection. + **/ + this.removeWordRight = function() { + if (this.selection.isEmpty()) + this.selection.selectWordRight(); + + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + + /** + * Removes the word directly to the left of the current selection. + **/ + this.removeWordLeft = function() { + if (this.selection.isEmpty()) + this.selection.selectWordLeft(); + + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + + /** + * Removes all the words to the left of the current selection, until the start of the line. + **/ + this.removeToLineStart = function() { + if (this.selection.isEmpty()) + this.selection.selectLineStart(); + + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + + /** + * Removes all the words to the right of the current selection, until the end of the line. + **/ + this.removeToLineEnd = function() { + if (this.selection.isEmpty()) + this.selection.selectLineEnd(); + + var range = this.getSelectionRange(); + if (range.start.column == range.end.column && range.start.row == range.end.row) { + range.end.column = 0; + range.end.row++; + } + + this.session.remove(range); + this.clearSelection(); + }; + + /** + * Splits the line at the current selection (by inserting an `'\n'`). + **/ + this.splitLine = function() { + if (!this.selection.isEmpty()) { + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + } + + var cursor = this.getCursorPosition(); + this.insert("\n"); + this.moveCursorToPosition(cursor); + }; + + /** + * Transposes current line. + **/ + this.transposeLetters = function() { + if (!this.selection.isEmpty()) { + return; + } + + var cursor = this.getCursorPosition(); + var column = cursor.column; + if (column === 0) + return; + + var line = this.session.getLine(cursor.row); + var swap, range; + if (column < line.length) { + swap = line.charAt(column) + line.charAt(column-1); + range = new Range(cursor.row, column-1, cursor.row, column+1); + } + else { + swap = line.charAt(column-1) + line.charAt(column-2); + range = new Range(cursor.row, column-2, cursor.row, column); + } + this.session.replace(range, swap); + this.session.selection.moveToPosition(range.end); + }; + + /** + * Converts the current selection entirely into lowercase. + **/ + this.toLowerCase = function() { + var originalRange = this.getSelectionRange(); + if (this.selection.isEmpty()) { + this.selection.selectWord(); + } + + var range = this.getSelectionRange(); + var text = this.session.getTextRange(range); + this.session.replace(range, text.toLowerCase()); + this.selection.setSelectionRange(originalRange); + }; + + /** + * Converts the current selection entirely into uppercase. + **/ + this.toUpperCase = function() { + var originalRange = this.getSelectionRange(); + if (this.selection.isEmpty()) { + this.selection.selectWord(); + } + + var range = this.getSelectionRange(); + var text = this.session.getTextRange(range); + this.session.replace(range, text.toUpperCase()); + this.selection.setSelectionRange(originalRange); + }; + + /** + * Inserts an indentation into the current cursor position or indents the selected lines. + * + * @related EditSession.indentRows + **/ + this.indent = function() { + var session = this.session; + var range = this.getSelectionRange(); + + if (range.start.row < range.end.row) { + var rows = this.$getSelectedRows(); + session.indentRows(rows.first, rows.last, "\t"); + return; + } else if (range.start.column < range.end.column) { + var text = session.getTextRange(range); + if (!/^\s+$/.test(text)) { + var rows = this.$getSelectedRows(); + session.indentRows(rows.first, rows.last, "\t"); + return; + } + } + + var line = session.getLine(range.start.row); + var position = range.start; + var size = session.getTabSize(); + var column = session.documentToScreenColumn(position.row, position.column); + + if (this.session.getUseSoftTabs()) { + var count = (size - column % size); + var indentString = lang.stringRepeat(" ", count); + } else { + var count = column % size; + while (line[range.start.column - 1] == " " && count) { + range.start.column--; + count--; + } + this.selection.setSelectionRange(range); + indentString = "\t"; + } + return this.insert(indentString); + }; + + /** + * Indents the current line. + * @related EditSession.indentRows + **/ + this.blockIndent = function() { + var rows = this.$getSelectedRows(); + this.session.indentRows(rows.first, rows.last, "\t"); + }; + + /** + * Outdents the current line. + * @related EditSession.outdentRows + **/ + this.blockOutdent = function() { + var selection = this.session.getSelection(); + this.session.outdentRows(selection.getRange()); + }; + + // TODO: move out of core when we have good mechanism for managing extensions + this.sortLines = function() { + var rows = this.$getSelectedRows(); + var session = this.session; + + var lines = []; + for (var i = rows.first; i <= rows.last; i++) + lines.push(session.getLine(i)); + + lines.sort(function(a, b) { + if (a.toLowerCase() < b.toLowerCase()) return -1; + if (a.toLowerCase() > b.toLowerCase()) return 1; + return 0; + }); + + var deleteRange = new Range(0, 0, 0, 0); + for (var i = rows.first; i <= rows.last; i++) { + var line = session.getLine(i); + deleteRange.start.row = i; + deleteRange.end.row = i; + deleteRange.end.column = line.length; + session.replace(deleteRange, lines[i-rows.first]); + } + }; + + /** + * Given the currently selected range, this function either comments all the lines, or uncomments all of them. + **/ + this.toggleCommentLines = function() { + var state = this.session.getState(this.getCursorPosition().row); + var rows = this.$getSelectedRows(); + this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last); + }; + + this.toggleBlockComment = function() { + var cursor = this.getCursorPosition(); + var state = this.session.getState(cursor.row); + var range = this.getSelectionRange(); + this.session.getMode().toggleBlockComment(state, this.session, range, cursor); + }; + + /** + * Works like [[EditSession.getTokenAt]], except it returns a number. + * @returns {Number} + **/ + this.getNumberAt = function(row, column) { + var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g; + _numberRx.lastIndex = 0; + + var s = this.session.getLine(row); + while (_numberRx.lastIndex < column) { + var m = _numberRx.exec(s); + if(m.index <= column && m.index+m[0].length >= column){ + var number = { + value: m[0], + start: m.index, + end: m.index+m[0].length + }; + return number; + } + } + return null; + }; + + /** + * If the character before the cursor is a number, this functions changes its value by `amount`. + * @param {Number} amount The value to change the numeral by (can be negative to decrease value) + * + **/ + this.modifyNumber = function(amount) { + var row = this.selection.getCursor().row; + var column = this.selection.getCursor().column; + + // get the char before the cursor + var charRange = new Range(row, column-1, row, column); + + var c = this.session.getTextRange(charRange); + // if the char is a digit + if (!isNaN(parseFloat(c)) && isFinite(c)) { + // get the whole number the digit is part of + var nr = this.getNumberAt(row, column); + // if number found + if (nr) { + var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end; + var decimals = nr.start + nr.value.length - fp; + + var t = parseFloat(nr.value); + t *= Math.pow(10, decimals); + + + if(fp !== nr.end && column < fp){ + amount *= Math.pow(10, nr.end - column - 1); + } else { + amount *= Math.pow(10, nr.end - column); + } + + t += amount; + t /= Math.pow(10, decimals); + var nnr = t.toFixed(decimals); + + //update number + var replaceRange = new Range(row, nr.start, row, nr.end); + this.session.replace(replaceRange, nnr); + + //reposition the cursor + this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length)); + + } + } + }; + + /** + * Removes all the lines in the current selection + * @related EditSession.remove + **/ + this.removeLines = function() { + var rows = this.$getSelectedRows(); + this.session.removeFullLines(rows.first, rows.last); + this.clearSelection(); + }; + + this.duplicateSelection = function() { + var sel = this.selection; + var doc = this.session; + var range = sel.getRange(); + var reverse = sel.isBackwards(); + if (range.isEmpty()) { + var row = range.start.row; + doc.duplicateLines(row, row); + } else { + var point = reverse ? range.start : range.end; + var endPoint = doc.insert(point, doc.getTextRange(range), false); + range.start = point; + range.end = endPoint; + + sel.setSelectionRange(range, reverse); + } + }; + + /** + * Shifts all the selected lines down one row. + * + * @returns {Number} On success, it returns -1. + * @related EditSession.moveLinesUp + **/ + this.moveLinesDown = function() { + this.$moveLines(1, false); + }; + + /** + * Shifts all the selected lines up one row. + * @returns {Number} On success, it returns -1. + * @related EditSession.moveLinesDown + **/ + this.moveLinesUp = function() { + this.$moveLines(-1, false); + }; + + /** + * Moves a range of text from the given range to the given position. `toPosition` is an object that looks like this: + * ```json + * { row: newRowLocation, column: newColumnLocation } + * ``` + * @param {Range} fromRange The range of text you want moved within the document + * @param {Object} toPosition The location (row and column) where you want to move the text to + * + * @returns {Range} The new range where the text was moved to. + * @related EditSession.moveText + **/ + this.moveText = function(range, toPosition, copy) { + return this.session.moveText(range, toPosition, copy); + }; + + /** + * Copies all the selected lines up one row. + * @returns {Number} On success, returns 0. + * + **/ + this.copyLinesUp = function() { + this.$moveLines(-1, true); + }; + + /** + * Copies all the selected lines down one row. + * @returns {Number} On success, returns the number of new rows added; in other words, `lastRow - firstRow + 1`. + * @related EditSession.duplicateLines + * + **/ + this.copyLinesDown = function() { + this.$moveLines(1, true); + }; + + /** + * for internal use + * @ignore + * + **/ + this.$moveLines = function(dir, copy) { + var rows, moved; + var selection = this.selection; + if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) { + var range = selection.toOrientedRange(); + rows = this.$getSelectedRows(range); + moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir); + if (copy && dir == -1) moved = 0; + range.moveBy(moved, 0); + selection.fromOrientedRange(range); + } else { + var ranges = selection.rangeList.ranges; + selection.rangeList.detach(this.session); + this.inVirtualSelectionMode = true; + + var diff = 0; + var totalDiff = 0; + var l = ranges.length; + for (var i = 0; i < l; i++) { + var rangeIndex = i; + ranges[i].moveBy(diff, 0); + rows = this.$getSelectedRows(ranges[i]); + var first = rows.first; + var last = rows.last; + while (++i < l) { + if (totalDiff) ranges[i].moveBy(totalDiff, 0); + var subRows = this.$getSelectedRows(ranges[i]); + if (copy && subRows.first != last) + break; + else if (!copy && subRows.first > last + 1) + break; + last = subRows.last; + } + i--; + diff = this.session.$moveLines(first, last, copy ? 0 : dir); + if (copy && dir == -1) rangeIndex = i + 1; + while (rangeIndex <= i) { + ranges[rangeIndex].moveBy(diff, 0); + rangeIndex++; + } + if (!copy) diff = 0; + totalDiff += diff; + } + + selection.fromOrientedRange(selection.ranges[0]); + selection.rangeList.attach(this.session); + this.inVirtualSelectionMode = false; + } + }; + + /** + * Returns an object indicating the currently selected rows. The object looks like this: + * + * ```json + * { first: range.start.row, last: range.end.row } + * ``` + * + * @returns {Object} + **/ + this.$getSelectedRows = function(range) { + range = (range || this.getSelectionRange()).collapseRows(); + + return { + first: this.session.getRowFoldStart(range.start.row), + last: this.session.getRowFoldEnd(range.end.row) + }; + }; + + this.onCompositionStart = function(text) { + this.renderer.showComposition(this.getCursorPosition()); + }; + + this.onCompositionUpdate = function(text) { + this.renderer.setCompositionText(text); + }; + + this.onCompositionEnd = function() { + this.renderer.hideComposition(); + }; + + /** + * {:VirtualRenderer.getFirstVisibleRow} + * + * @returns {Number} + * @related VirtualRenderer.getFirstVisibleRow + **/ + this.getFirstVisibleRow = function() { + return this.renderer.getFirstVisibleRow(); + }; + + /** + * {:VirtualRenderer.getLastVisibleRow} + * + * @returns {Number} + * @related VirtualRenderer.getLastVisibleRow + **/ + this.getLastVisibleRow = function() { + return this.renderer.getLastVisibleRow(); + }; + + /** + * Indicates if the row is currently visible on the screen. + * @param {Number} row The row to check + * + * @returns {Boolean} + **/ + this.isRowVisible = function(row) { + return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow()); + }; + + /** + * Indicates if the entire row is currently visible on the screen. + * @param {Number} row The row to check + * + * + * @returns {Boolean} + **/ + this.isRowFullyVisible = function(row) { + return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow()); + }; + + /** + * Returns the number of currently visible rows. + * @returns {Number} + **/ + this.$getVisibleRowCount = function() { + return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1; + }; + + this.$moveByPage = function(dir, select) { + var renderer = this.renderer; + var config = this.renderer.layerConfig; + var rows = dir * Math.floor(config.height / config.lineHeight); + + if (select === true) { + this.selection.$moveSelection(function(){ + this.moveCursorBy(rows, 0); + }); + } else if (select === false) { + this.selection.moveCursorBy(rows, 0); + this.selection.clearSelection(); + } + + var scrollTop = renderer.scrollTop; + + renderer.scrollBy(0, rows * config.lineHeight); + if (select != null) + renderer.scrollCursorIntoView(null, 0.5); + + renderer.animateScrolling(scrollTop); + }; + + /** + * Selects the text from the current position of the document until where a "page down" finishes. + **/ + this.selectPageDown = function() { + this.$moveByPage(1, true); + }; + + /** + * Selects the text from the current position of the document until where a "page up" finishes. + **/ + this.selectPageUp = function() { + this.$moveByPage(-1, true); + }; + + /** + * Shifts the document to wherever "page down" is, as well as moving the cursor position. + **/ + this.gotoPageDown = function() { + this.$moveByPage(1, false); + }; + + /** + * Shifts the document to wherever "page up" is, as well as moving the cursor position. + **/ + this.gotoPageUp = function() { + this.$moveByPage(-1, false); + }; + + /** + * Scrolls the document to wherever "page down" is, without changing the cursor position. + **/ + this.scrollPageDown = function() { + this.$moveByPage(1); + }; + + /** + * Scrolls the document to wherever "page up" is, without changing the cursor position. + **/ + this.scrollPageUp = function() { + this.$moveByPage(-1); + }; + + /** + * Moves the editor to the specified row. + * @related VirtualRenderer.scrollToRow + **/ + this.scrollToRow = function(row) { + this.renderer.scrollToRow(row); + }; + + /** + * Scrolls to a line. If `center` is `true`, it puts the line in middle of screen (or attempts to). + * @param {Number} line The line to scroll to + * @param {Boolean} center If `true` + * @param {Boolean} animate If `true` animates scrolling + * @param {Function} callback Function to be called when the animation has finished + * + * + * @related VirtualRenderer.scrollToLine + **/ + this.scrollToLine = function(line, center, animate, callback) { + this.renderer.scrollToLine(line, center, animate, callback); + }; + + /** + * Attempts to center the current selection on the screen. + **/ + this.centerSelection = function() { + var range = this.getSelectionRange(); + var pos = { + row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), + column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2) + }; + this.renderer.alignCursor(pos, 0.5); + }; + + /** + * Gets the current position of the cursor. + * @returns {Object} An object that looks something like this: + * + * ```json + * { row: currRow, column: currCol } + * ``` + * + * @related Selection.getCursor + **/ + this.getCursorPosition = function() { + return this.selection.getCursor(); + }; + + /** + * Returns the screen position of the cursor. + * @returns {Number} + * @related EditSession.documentToScreenPosition + **/ + this.getCursorPositionScreen = function() { + return this.session.documentToScreenPosition(this.getCursorPosition()); + }; + + /** + * {:Selection.getRange} + * @returns {Range} + * @related Selection.getRange + **/ + this.getSelectionRange = function() { + return this.selection.getRange(); + }; + + + /** + * Selects all the text in editor. + * @related Selection.selectAll + **/ + this.selectAll = function() { + this.selection.selectAll(); + }; + + /** + * {:Selection.clearSelection} + * @related Selection.clearSelection + **/ + this.clearSelection = function() { + this.selection.clearSelection(); + }; + + /** + * Moves the cursor to the specified row and column. Note that this does not de-select the current selection. + * @param {Number} row The new row number + * @param {Number} column The new column number + * + * + * @related Selection.moveCursorTo + **/ + this.moveCursorTo = function(row, column) { + this.selection.moveCursorTo(row, column); + }; + + /** + * Moves the cursor to the position indicated by `pos.row` and `pos.column`. + * @param {Object} pos An object with two properties, row and column + * + * + * @related Selection.moveCursorToPosition + **/ + this.moveCursorToPosition = function(pos) { + this.selection.moveCursorToPosition(pos); + }; + + /** + * Moves the cursor's row and column to the next matching bracket or HTML tag. + * + **/ + this.jumpToMatching = function(select, expand) { + var cursor = this.getCursorPosition(); + var iterator = new TokenIterator(this.session, cursor.row, cursor.column); + var prevToken = iterator.getCurrentToken(); + var token = prevToken || iterator.stepForward(); + + if (!token) return; + + //get next closing tag or bracket + var matchType; + var found = false; + var depth = {}; + var i = cursor.column - token.start; + var bracketType; + var brackets = { + ")": "(", + "(": "(", + "]": "[", + "[": "[", + "{": "{", + "}": "{" + }; + + do { + if (token.value.match(/[{}()\[\]]/g)) { + for (; i < token.value.length && !found; i++) { + if (!brackets[token.value[i]]) { + continue; + } + + bracketType = brackets[token.value[i]] + '.' + token.type.replace("rparen", "lparen"); + + if (isNaN(depth[bracketType])) { + depth[bracketType] = 0; + } + + switch (token.value[i]) { + case '(': + case '[': + case '{': + depth[bracketType]++; + break; + case ')': + case ']': + case '}': + depth[bracketType]--; + + if (depth[bracketType] === -1) { + matchType = 'bracket'; + found = true; + } + break; + } + } + } + else if (token.type.indexOf('tag-name') !== -1) { + if (isNaN(depth[token.value])) { + depth[token.value] = 0; + } + + if (prevToken.value === '<') { + depth[token.value]++; + } + else if (prevToken.value === '= 0; --i) { + if(this.$tryReplace(ranges[i], replacement)) { + replaced++; + } + } + + this.selection.setSelectionRange(selection); + + return replaced; + }; + + this.$tryReplace = function(range, replacement) { + var input = this.session.getTextRange(range); + replacement = this.$search.replace(input, replacement); + if (replacement !== null) { + range.end = this.session.replace(range, replacement); + return range; + } else { + return null; + } + }; + + /** + * {:Search.getOptions} For more information on `options`, see [[Search `Search`]]. + * @related Search.getOptions + * @returns {Object} + **/ + this.getLastSearchOptions = function() { + return this.$search.getOptions(); + }; + + /** + * Attempts to find `needle` within the document. For more information on `options`, see [[Search `Search`]]. + * @param {String} needle The text to search for (optional) + * @param {Object} options An object defining various search properties + * @param {Boolean} animate If `true` animate scrolling + * + * + * @related Search.find + **/ + this.find = function(needle, options, animate) { + if (!options) + options = {}; + + if (typeof needle == "string" || needle instanceof RegExp) + options.needle = needle; + else if (typeof needle == "object") + oop.mixin(options, needle); + + var range = this.selection.getRange(); + if (options.needle == null) { + needle = this.session.getTextRange(range) + || this.$search.$options.needle; + if (!needle) { + range = this.session.getWordRange(range.start.row, range.start.column); + needle = this.session.getTextRange(range); + } + this.$search.set({needle: needle}); + } + + this.$search.set(options); + if (!options.start) + this.$search.set({start: range}); + + var newRange = this.$search.find(this.session); + if (options.preventScroll) + return newRange; + if (newRange) { + this.revealRange(newRange, animate); + return newRange; + } + // clear selection if nothing is found + if (options.backwards) + range.start = range.end; + else + range.end = range.start; + this.selection.setRange(range); + }; + + /** + * Performs another search for `needle` in the document. For more information on `options`, see [[Search `Search`]]. + * @param {Object} options search options + * @param {Boolean} animate If `true` animate scrolling + * + * + * @related Editor.find + **/ + this.findNext = function(options, animate) { + this.find({skipCurrent: true, backwards: false}, options, animate); + }; + + /** + * Performs a search for `needle` backwards. For more information on `options`, see [[Search `Search`]]. + * @param {Object} options search options + * @param {Boolean} animate If `true` animate scrolling + * + * + * @related Editor.find + **/ + this.findPrevious = function(options, animate) { + this.find(options, {skipCurrent: true, backwards: true}, animate); + }; + + this.revealRange = function(range, animate) { + this.session.unfold(range); + this.selection.setSelectionRange(range); + + var scrollTop = this.renderer.scrollTop; + this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5); + if (animate !== false) + this.renderer.animateScrolling(scrollTop); + }; + + /** + * {:UndoManager.undo} + * @related UndoManager.undo + **/ + this.undo = function() { + this.session.getUndoManager().undo(this.session); + this.renderer.scrollCursorIntoView(null, 0.5); + }; + + /** + * {:UndoManager.redo} + * @related UndoManager.redo + **/ + this.redo = function() { + this.session.getUndoManager().redo(this.session); + this.renderer.scrollCursorIntoView(null, 0.5); + }; + + /** + * + * Cleans up the entire editor. + **/ + this.destroy = function() { + this.renderer.destroy(); + this._signal("destroy", this); + if (this.session) { + this.session.destroy(); + } + }; + + /** + * Enables automatic scrolling of the cursor into view when editor itself is inside scrollable element + * @param {Boolean} enable default true + **/ + this.setAutoScrollEditorIntoView = function(enable) { + if (!enable) + return; + var rect; + var self = this; + var shouldScroll = false; + if (!this.$scrollAnchor) + this.$scrollAnchor = document.createElement("div"); + var scrollAnchor = this.$scrollAnchor; + scrollAnchor.style.cssText = "position:absolute"; + this.container.insertBefore(scrollAnchor, this.container.firstChild); + var onChangeSelection = this.on("changeSelection", function() { + shouldScroll = true; + }); + // needed to not trigger sync reflow + var onBeforeRender = this.renderer.on("beforeRender", function() { + if (shouldScroll) + rect = self.renderer.container.getBoundingClientRect(); + }); + var onAfterRender = this.renderer.on("afterRender", function() { + if (shouldScroll && rect && (self.isFocused() + || self.searchBox && self.searchBox.isFocused()) + ) { + var renderer = self.renderer; + var pos = renderer.$cursorLayer.$pixelPos; + var config = renderer.layerConfig; + var top = pos.top - config.offset; + if (pos.top >= 0 && top + rect.top < 0) { + shouldScroll = true; + } else if (pos.top < config.height && + pos.top + rect.top + config.lineHeight > window.innerHeight) { + shouldScroll = false; + } else { + shouldScroll = null; + } + if (shouldScroll != null) { + scrollAnchor.style.top = top + "px"; + scrollAnchor.style.left = pos.left + "px"; + scrollAnchor.style.height = config.lineHeight + "px"; + scrollAnchor.scrollIntoView(shouldScroll); + } + shouldScroll = rect = null; + } + }); + this.setAutoScrollEditorIntoView = function(enable) { + if (enable) + return; + delete this.setAutoScrollEditorIntoView; + this.off("changeSelection", onChangeSelection); + this.renderer.off("afterRender", onAfterRender); + this.renderer.off("beforeRender", onBeforeRender); + }; + }; + + + this.$resetCursorStyle = function() { + var style = this.$cursorStyle || "ace"; + var cursorLayer = this.renderer.$cursorLayer; + if (!cursorLayer) + return; + cursorLayer.setSmoothBlinking(/smooth/.test(style)); + cursorLayer.isBlinking = !this.$readOnly && style != "wide"; + dom.setCssClass(cursorLayer.element, "ace_slim-cursors", /slim/.test(style)); + }; + +}).call(Editor.prototype); + + + +config.defineOptions(Editor.prototype, "editor", { + selectionStyle: { + set: function(style) { + this.onSelectionChange(); + this._signal("changeSelectionStyle", {data: style}); + }, + initialValue: "line" + }, + highlightActiveLine: { + set: function() {this.$updateHighlightActiveLine();}, + initialValue: true + }, + highlightSelectedWord: { + set: function(shouldHighlight) {this.$onSelectionChange();}, + initialValue: true + }, + readOnly: { + set: function(readOnly) { + // disabled to not break vim mode! + // this.textInput.setReadOnly(readOnly); + this.$resetCursorStyle(); + }, + initialValue: false + }, + copyWithEmptySelection: { + set: function(value) { + this.textInput.setCopyWithEmptySelection(value); + }, + initialValue: false + }, + cursorStyle: { + set: function(val) { this.$resetCursorStyle(); }, + values: ["ace", "slim", "smooth", "wide"], + initialValue: "ace" + }, + mergeUndoDeltas: { + values: [false, true, "always"], + initialValue: true + }, + behavioursEnabled: {initialValue: true}, + wrapBehavioursEnabled: {initialValue: true}, + autoScrollEditorIntoView: { + set: function(val) {this.setAutoScrollEditorIntoView(val);} + }, + keyboardHandler: { + set: function(val) { this.setKeyboardHandler(val); }, + get: function() { return this.$keybindingId; }, + handlesSet: true + }, + value: { + set: function(val) { this.session.setValue(val); }, + get: function() { return this.getValue(); }, + handlesSet: true, + hidden: true + }, + session: { + set: function(val) { this.setSession(val); }, + get: function() { return this.session; }, + handlesSet: true, + hidden: true + }, + + hScrollBarAlwaysVisible: "renderer", + vScrollBarAlwaysVisible: "renderer", + highlightGutterLine: "renderer", + animatedScroll: "renderer", + showInvisibles: "renderer", + showPrintMargin: "renderer", + printMarginColumn: "renderer", + printMargin: "renderer", + fadeFoldWidgets: "renderer", + showFoldWidgets: "renderer", + showLineNumbers: "renderer", + showGutter: "renderer", + displayIndentGuides: "renderer", + fontSize: "renderer", + fontFamily: "renderer", + maxLines: "renderer", + minLines: "renderer", + scrollPastEnd: "renderer", + fixedWidthGutter: "renderer", + theme: "renderer", + + scrollSpeed: "$mouseHandler", + dragDelay: "$mouseHandler", + dragEnabled: "$mouseHandler", + focusTimout: "$mouseHandler", + tooltipFollowsMouse: "$mouseHandler", + + firstLineNumber: "session", + overwrite: "session", + newLineMode: "session", + useWorker: "session", + useSoftTabs: "session", + tabSize: "session", + wrap: "session", + indentedSoftWrap: "session", + foldStyle: "session", + mode: "session" +}); + +exports.Editor = Editor; +}); diff --git a/plugins/node_modules/ace/lib/ace/editor_change_document_test.js b/plugins/node_modules/ace/lib/ace/editor_change_document_test.js new file mode 100644 index 00000000..fe4e856c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/editor_change_document_test.js @@ -0,0 +1,188 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var Text = require("./mode/text").Mode; +var JavaScriptMode = require("./mode/javascript").Mode; +var CssMode = require("./mode/css").Mode; +var HtmlMode = require("./mode/html").Mode; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var assert = require("./test/assertions"); + +module.exports = { + + setUp : function(next) { + this.session1 = new EditSession(["abc", "def"]); + this.session2 = new EditSession(["ghi", "jkl"]); + + + this.editor = new Editor(new MockRenderer()); + next(); + }, + + "test: change document" : function() { + this.editor.setSession(this.session1); + assert.equal(this.editor.getSession(), this.session1); + + this.editor.setSession(this.session2); + assert.equal(this.editor.getSession(), this.session2); + }, + + "test: only changes to the new document should have effect" : function() { + var called = false; + this.editor.onDocumentChange = function() { + called = true; + }; + + this.editor.setSession(this.session1); + this.editor.setSession(this.session2); + + this.session1.duplicateLines(0, 0); + assert.notOk(called); + + this.session2.duplicateLines(0, 0); + assert.ok(called); + }, + + "test: should use cursor of new document" : function() { + this.session1.getSelection().moveCursorTo(0, 1); + this.session2.getSelection().moveCursorTo(1, 0); + + this.editor.setSession(this.session1); + assert.position(this.editor.getCursorPosition(), 0, 1); + + this.editor.setSession(this.session2); + assert.position(this.editor.getCursorPosition(), 1, 0); + }, + + "test: only changing the cursor of the new doc should not have an effect" : function() { + this.editor.onCursorChange = function() { + called = true; + }; + + this.editor.setSession(this.session1); + this.editor.setSession(this.session2); + assert.position(this.editor.getCursorPosition(), 0, 0); + + var called = false; + this.session1.getSelection().moveCursorTo(0, 1); + assert.position(this.editor.getCursorPosition(), 0, 0); + assert.notOk(called); + + this.session2.getSelection().moveCursorTo(1, 1); + assert.position(this.editor.getCursorPosition(), 1, 1); + assert.ok(called); + }, + + "test: should use selection of new document" : function() { + this.session1.getSelection().selectTo(0, 1); + this.session2.getSelection().selectTo(1, 0); + + this.editor.setSession(this.session1); + assert.position(this.editor.getSelection().getSelectionLead(), 0, 1); + + this.editor.setSession(this.session2); + assert.position(this.editor.getSelection().getSelectionLead(), 1, 0); + }, + + "test: only changing the selection of the new doc should not have an effect" : function() { + this.editor.onSelectionChange = function() { + called = true; + }; + + this.editor.setSession(this.session1); + this.editor.setSession(this.session2); + assert.position(this.editor.getSelection().getSelectionLead(), 0, 0); + + var called = false; + this.session1.getSelection().selectTo(0, 1); + assert.position(this.editor.getSelection().getSelectionLead(), 0, 0); + assert.notOk(called); + + this.session2.getSelection().selectTo(1, 1); + assert.position(this.editor.getSelection().getSelectionLead(), 1, 1); + assert.ok(called); + }, + + "test: should use mode of new document" : function() { + this.editor.onChangeMode = function() { + called = true; + }; + this.editor.setSession(this.session1); + this.editor.setSession(this.session2); + + var called = false; + this.session1.setMode(new Text()); + assert.notOk(called); + + this.session2.setMode(new JavaScriptMode()); + assert.ok(called); + }, + + "test: should use stop worker of old document" : function(next) { + var self = this; + + // 1. Open an editor and set the session to CssMode + self.editor.setSession(self.session1); + self.session1.setMode(new CssMode()); + + // 2. Add a line or two of valid CSS. + self.session1.setValue("DIV { color: red; }"); + + // 3. Clear the session value. + self.session1.setValue(""); + + // 4. Set the session to HtmlMode + self.session1.setMode(new HtmlMode()); + + // 5. Try to type valid HTML + self.session1.insert({row: 0, column: 0}, ""); + + setTimeout(function() { + assert.equal(Object.keys(self.session1.getAnnotations()).length, 0); + next(); + }, 600); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/editor_highlight_selected_word_test.js b/plugins/node_modules/ace/lib/ace/editor_highlight_selected_word_test.js new file mode 100644 index 00000000..45a7d2e5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/editor_highlight_selected_word_test.js @@ -0,0 +1,223 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var assert = require("./test/assertions"); + +var lipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + + "Mauris at arcu mi, eu lobortis mauris. Quisque ut libero eget " + + "diam congue vehicula. Quisque ut odio ut mi aliquam tincidunt. " + + "Duis lacinia aliquam lorem eget eleifend. Morbi eget felis mi. " + + "Duis quam ligula, consequat vitae convallis volutpat, blandit " + + "nec neque. Nulla facilisi. Etiam suscipit lorem ac justo " + + "sollicitudin tristique. Phasellus ut posuere nunc. Aliquam " + + "scelerisque mollis felis non gravida. Vestibulum lacus sem, " + + "posuere non bibendum id, luctus non dolor. Aenean id metus " + + "lorem, vel dapibus est. Donec gravida feugiat augue nec " + + "accumsan.Lorem ipsum dolor sit amet, consectetur adipiscing " + + "elit. Nulla vulputate, velit vitae tincidunt congue, nunc " + + "augue accumsan velit, eu consequat turpis lectus ac orci. " + + "Pellentesque ornare dolor feugiat dui auctor eu varius nulla " + + "fermentum. Sed aliquam odio at velit lacinia vel fermentum " + + "felis sodales. In dignissim magna eget nunc lobortis non " + + "fringilla nibh ullamcorper. Donec facilisis malesuada elit " + + "at egestas. Etiam bibendum, diam vitae tempor aliquet, dui " + + "libero vehicula odio, eget bibendum mauris velit eu lorem.\n" + + "consectetur"; + +function callHighlighterUpdate(session, firstRow, lastRow) { + var rangeCount = 0; + var mockMarkerLayer = { drawSingleLineMarker: function() {rangeCount++;} }; + session.$searchHighlight.update([], mockMarkerLayer, session, { + firstRow: firstRow, + lastRow: lastRow + }); + return rangeCount; +} + +module.exports = { + setUp: function(next) { + this.session = new EditSession(lipsum); + this.editor = new Editor(new MockRenderer(), this.session); + this.selection = this.session.getSelection(); + this.search = this.editor.$search; + next(); + }, + + "test: highlight selected words by default": function() { + assert.equal(this.editor.getHighlightSelectedWord(), true); + }, + + "test: highlight a word": function() { + this.editor.moveCursorTo(0, 9); + this.selection.selectWord(); + + var highlighter = this.editor.session.$searchHighlight; + assert.ok(highlighter != null); + + var range = this.selection.getRange(); + assert.equal(this.session.getTextRange(range), "ipsum"); + assert.equal(highlighter.cache.length, 0); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 2); + }, + + "test: highlight a word and clear highlight": function() { + this.editor.moveCursorTo(0, 8); + this.selection.selectWord(); + + var range = this.selection.getRange(); + assert.equal(this.session.getTextRange(range), "ipsum"); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 2); + + this.session.highlight(""); + assert.equal(this.session.$searchHighlight.cache.length, 0); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 0); + }, + + "test: highlight another word": function() { + this.selection.moveCursorTo(0, 14); + this.selection.selectWord(); + + var range = this.selection.getRange(); + assert.equal(this.session.getTextRange(range), "dolor"); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 4); + }, + + "test: no selection, no highlight": function() { + this.selection.clearSelection(); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 0); + }, + + "test: select a word, no highlight": function() { + this.selection.moveCursorTo(0, 14); + this.selection.selectWord(); + + this.editor.setHighlightSelectedWord(false); + + var range = this.selection.getRange(); + assert.equal(this.session.getTextRange(range), "dolor"); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 0); + }, + + "test: select a word with no matches": function() { + this.editor.setHighlightSelectedWord(true); + + var currentOptions = this.search.getOptions(); + var newOptions = { + wrap: true, + wholeWord: true, + caseSensitive: true, + needle: "Mauris" + }; + this.search.set(newOptions); + + var match = this.search.find(this.session); + assert.notEqual(match, null, "found a match for 'Mauris'"); + + this.search.set(currentOptions); + + this.selection.setSelectionRange(match); + + assert.equal(this.session.getTextRange(match), "Mauris"); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 1); + }, + + "test: partial word selection 1": function() { + this.selection.moveCursorTo(0, 14); + this.selection.selectWord(); + this.selection.selectLeft(); + + var range = this.selection.getRange(); + assert.equal(this.session.getTextRange(range), "dolo"); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 0); + }, + + "test: partial word selection 2": function() { + this.selection.moveCursorTo(0, 13); + this.selection.selectWord(); + this.selection.selectRight(); + + var range = this.selection.getRange(); + assert.equal(this.session.getTextRange(range), "dolor "); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 3); + }, + + "test: partial word selection 3": function() { + this.selection.moveCursorTo(0, 14); + this.selection.selectWord(); + this.selection.selectLeft(); + this.selection.shiftSelection(1); + + var range = this.selection.getRange(); + assert.equal(this.session.getTextRange(range), "olor"); + assert.equal(callHighlighterUpdate(this.session, 0, 0), 0); + }, + + "test: select last word": function() { + this.selection.moveCursorTo(0, 1); + + var currentOptions = this.search.getOptions(); + var newOptions = { + wrap: true, + wholeWord: true, + caseSensitive: true, + backwards: true, + needle: "consectetur" + }; + this.search.set(newOptions); + + var match = this.search.find(this.session); + assert.notEqual(match, null, "found a match for 'consectetur'"); + assert.position(match.start, 1, 0); + + this.search.set(currentOptions); + + this.selection.setSelectionRange(match); + + assert.equal(this.session.getTextRange(match), "consectetur"); + assert.equal(callHighlighterUpdate(this.session, 0, 1), 3); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/editor_navigation_test.js b/plugins/node_modules/ace/lib/ace/editor_navigation_test.js new file mode 100644 index 00000000..0e4e229c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/editor_navigation_test.js @@ -0,0 +1,195 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var assert = require("./test/assertions"); + +module.exports = { + createEditSession : function(rows, cols) { + var line = new Array(cols + 1).join("a"); + var text = new Array(rows).join(line + "\n") + line; + return new EditSession(text); + }, + + "test: navigate to end of file should scroll the last line into view" : function() { + var doc = this.createEditSession(200, 10); + var editor = new Editor(new MockRenderer(), doc); + + editor.execCommand("gotoend"); + var cursor = editor.getCursorPosition(); + + assert.ok(editor.getFirstVisibleRow() <= cursor.row); + assert.ok(editor.getLastVisibleRow() >= cursor.row); + }, + + "test: navigate to start of file should scroll the first row into view" : function() { + var doc = this.createEditSession(200, 10); + var editor = new Editor(new MockRenderer(), doc); + + editor.moveCursorTo(editor.getLastVisibleRow() + 20); + editor.execCommand("gotostart"); + + assert.equal(editor.getFirstVisibleRow(), 0); + }, + + "test: goto hidden line should scroll the line into the middle of the viewport" : function() { + var editor = new Editor(new MockRenderer(), this.createEditSession(200, 5)); + + editor.navigateTo(0, 0); + editor.renderer.scrollCursorIntoView(); + editor.gotoLine(101); + assert.position(editor.getCursorPosition(), 100, 0); + assert.equal(editor.getFirstVisibleRow(), 89); + + editor.navigateTo(100, 0); + editor.renderer.scrollCursorIntoView(); + editor.gotoLine(11); + assert.position(editor.getCursorPosition(), 10, 0); + assert.equal(editor.getFirstVisibleRow(), 0); + + editor.navigateTo(100, 0); + editor.renderer.scrollCursorIntoView(); + editor.gotoLine(6); + assert.position(editor.getCursorPosition(), 5, 0); + assert.equal(0, editor.getFirstVisibleRow(), 0); + + editor.navigateTo(100, 0); + editor.renderer.scrollCursorIntoView(); + editor.gotoLine(1); + assert.position(editor.getCursorPosition(), 0, 0); + assert.equal(editor.getFirstVisibleRow(), 0); + + editor.navigateTo(0, 0); + editor.renderer.scrollCursorIntoView(); + editor.gotoLine(191); + assert.position(editor.getCursorPosition(), 190, 0); + assert.equal(editor.getFirstVisibleRow(), 179); + + editor.navigateTo(0, 0); + editor.renderer.scrollCursorIntoView(); + editor.gotoLine(196); + assert.position(editor.getCursorPosition(), 195, 0); + assert.equal(editor.getFirstVisibleRow(), 180); + }, + + "test: goto visible line should only move the cursor and not scroll": function() { + var editor = new Editor(new MockRenderer(), this.createEditSession(200, 5)); + + editor.navigateTo(0, 0); + editor.renderer.scrollCursorIntoView(); + editor.gotoLine(12); + assert.position(editor.getCursorPosition(), 11, 0); + assert.equal(editor.getFirstVisibleRow(), 0); + + editor.navigateTo(30, 0); + editor.renderer.scrollCursorIntoView(); + editor.gotoLine(33); + assert.position(editor.getCursorPosition(), 32, 0); + assert.equal(editor.getFirstVisibleRow(), 30); + }, + + "test: navigate from the end of a long line down to a short line and back should maintain the curser column": function() { + var editor = new Editor(new MockRenderer(), new EditSession(["123456", "1"])); + + editor.navigateTo(0, 6); + assert.position(editor.getCursorPosition(), 0, 6); + + editor.navigateDown(); + assert.position(editor.getCursorPosition(), 1, 1); + + editor.navigateUp(); + assert.position(editor.getCursorPosition(), 0, 6); + }, + + "test: reset desired column on navigate left or right": function() { + var editor = new Editor(new MockRenderer(), new EditSession(["123456", "12"])); + + editor.navigateTo(0, 6); + assert.position(editor.getCursorPosition(), 0, 6); + + editor.navigateDown(); + assert.position(editor.getCursorPosition(), 1, 2); + + editor.navigateLeft(); + assert.position(editor.getCursorPosition(), 1, 1); + + editor.navigateUp(); + assert.position(editor.getCursorPosition(), 0, 1); + }, + + "test: navigate within soft tabs based on setting": function() { + var editor = new Editor(new MockRenderer(), new EditSession([" "])); + + editor.getSession().setUseSoftTabs(true); + editor.getSession().setTabSize(4); + + editor.navigateTo(0, 0); + editor.navigateRight(); + assert.position(editor.getCursorPosition(), 0, 4); + + editor.navigateLeft(); + assert.position(editor.getCursorPosition(), 0, 0); + + editor.getSession().setNavigateWithinSoftTabs(true); + + editor.navigateRight(); + assert.position(editor.getCursorPosition(), 0, 1); + + editor.navigateTo(0, 4); + editor.navigateLeft(); + assert.position(editor.getCursorPosition(), 0, 3); + }, + + "test: typing text should update the desired column": function() { + var editor = new Editor(new MockRenderer(), new EditSession(["1234", "1234567890"])); + + editor.navigateTo(0, 3); + editor.insert("juhu"); + + editor.navigateDown(); + assert.position(editor.getCursorPosition(), 1, 7); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/editor_text_edit_test.js b/plugins/node_modules/ace/lib/ace/editor_text_edit_test.js new file mode 100644 index 00000000..bd875074 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/editor_text_edit_test.js @@ -0,0 +1,563 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var JavaScriptMode = require("./mode/javascript").Mode; +var UndoManager = require("./undomanager").UndoManager; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var assert = require("./test/assertions"); +var whitespace = require("./ext/whitespace"); + +module.exports = { + "test: delete line from the middle" : function() { + var session = new EditSession(["a", "b", "c", "d"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(1, 1); + editor.removeLines(); + + assert.equal(session.toString(), "a\nc\nd"); + assert.position(editor.getCursorPosition(), 1, 0); + + editor.removeLines(); + + assert.equal(session.toString(), "a\nd"); + assert.position(editor.getCursorPosition(), 1, 0); + + editor.removeLines(); + + assert.equal(session.toString(), "a"); + assert.position(editor.getCursorPosition(), 0, 1); + + editor.removeLines(); + + assert.equal(session.toString(), ""); + assert.position(editor.getCursorPosition(), 0, 0); + }, + + "test: delete multiple selected lines" : function() { + var session = new EditSession(["a", "b", "c", "d"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(1, 1); + editor.getSelection().selectDown(); + + editor.removeLines(); + assert.equal(session.toString(), "a\nd"); + assert.position(editor.getCursorPosition(), 1, 0); + }, + + "test: delete first line" : function() { + var session = new EditSession(["a", "b", "c"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.removeLines(); + + assert.equal(session.toString(), "b\nc"); + assert.position(editor.getCursorPosition(), 0, 0); + }, + + "test: delete last should also delete the new line of the previous line" : function() { + var session = new EditSession(["a", "b", "c", ""].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(3, 0); + + editor.removeLines(); + assert.equal(session.toString(), "a\nb\nc"); + assert.position(editor.getCursorPosition(), 2, 1); + + editor.removeLines(); + assert.equal(session.toString(), "a\nb"); + assert.position(editor.getCursorPosition(), 1, 1); + }, + + "test: indent block" : function() { + var session = new EditSession(["a12345", "b12345", "c12345"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(1, 3); + editor.getSelection().selectDown(); + + editor.indent(); + + assert.equal(["a12345", " b12345", " c12345"].join("\n"), session.toString()); + + assert.position(editor.getCursorPosition(), 2, 7); + + var range = editor.getSelectionRange(); + assert.position(range.start, 1, 7); + assert.position(range.end, 2, 7); + + session.setValue(" x"); + session.setOption("useSoftTabs", false); + editor.selection.moveTo(0, 3); + editor.indent(); + assert.equal("\tx", session.toString()); + }, + + "test: indent selected lines" : function() { + var session = new EditSession(["a12345", "b12345", "c12345"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(1, 0); + editor.getSelection().selectDown(); + + editor.indent(); + assert.equal(["a12345", " b12345", "c12345"].join("\n"), session.toString()); + }, + + "test: no auto indent if cursor is before the {" : function() { + var session = new EditSession("{", new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(0, 0); + editor.onTextInput("\n"); + assert.equal(["", "{"].join("\n"), session.toString()); + }, + + "test: outdent block" : function() { + var session = new EditSession([" a12345", " b12345", " c12345"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(0, 5); + editor.getSelection().selectDown(); + editor.getSelection().selectDown(); + + editor.blockOutdent(); + assert.equal(session.toString(), [" a12345", "b12345", " c12345"].join("\n")); + + assert.position(editor.getCursorPosition(), 2, 1); + + var range = editor.getSelectionRange(); + assert.position(range.start, 0, 1); + assert.position(range.end, 2, 1); + + editor.blockOutdent(); + assert.equal(session.toString(), ["a12345", "b12345", "c12345"].join("\n")); + + var range = editor.getSelectionRange(); + assert.position(range.start, 0, 0); + assert.position(range.end, 2, 0); + }, + + "test: outent without a selection should update cursor" : function() { + var session = new EditSession(" 12"); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(0, 3); + editor.blockOutdent(" "); + + assert.equal(session.toString(), " 12"); + assert.position(editor.getCursorPosition(), 0, 0); + }, + + "test: comment lines should perserve selection" : function() { + var session = new EditSession([" abc", "cde"].join("\n"), new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + whitespace.detectIndentation(session); + + editor.moveCursorTo(0, 2); + editor.getSelection().selectDown(); + editor.toggleCommentLines(); + + assert.equal(["// abc", "// cde"].join("\n"), session.toString()); + + var selection = editor.getSelectionRange(); + assert.position(selection.start, 0, 5); + assert.position(selection.end, 1, 5); + }, + + "test: uncomment lines should perserve selection" : function() { + var session = new EditSession(["// abc", "//cde"].join("\n"), new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + session.setTabSize(2); + + editor.moveCursorTo(0, 1); + editor.getSelection().selectDown(); + editor.getSelection().selectRight(); + editor.getSelection().selectRight(); + + editor.toggleCommentLines(); + + assert.equal([" abc", "cde"].join("\n"), session.toString()); + assert.range(editor.getSelectionRange(), 0, 0, 1, 1); + }, + + "test: toggle comment lines twice should return the original text" : function() { + var session = new EditSession([" abc", "cde", "fg"], new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(0, 0); + editor.getSelection().selectDown(); + editor.getSelection().selectDown(); + + editor.toggleCommentLines(); + editor.toggleCommentLines(); + + assert.equal([" abc", "cde", "fg"].join("\n"), session.toString()); + }, + + + "test: comment lines - if the selection end is at the line start it should stay there": function() { + //select down + var session = new EditSession(["abc", "cde"].join("\n"), new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(0, 0); + editor.getSelection().selectDown(); + + editor.toggleCommentLines(); + assert.range(editor.getSelectionRange(), 0, 3, 1, 0); + + // select up + var session = new EditSession(["abc", "cde"].join("\n"), new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(1, 0); + editor.getSelection().selectUp(); + + editor.toggleCommentLines(); + assert.range(editor.getSelectionRange(), 0, 3, 1, 0); + }, + + "test: move lines down should keep selection on moved lines" : function() { + var session = new EditSession(["11", "22", "33", "44"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(0, 1); + editor.getSelection().selectDown(); + + editor.moveLinesDown(); + assert.equal(["33", "11", "22", "44"].join("\n"), session.toString()); + assert.position(editor.getCursorPosition(), 2, 1); + assert.position(editor.getSelection().getSelectionAnchor(), 1, 1); + assert.position(editor.getSelection().getSelectionLead(), 2, 1); + + editor.moveLinesDown(); + assert.equal(["33", "44", "11", "22"].join("\n"), session.toString()); + assert.position(editor.getCursorPosition(), 3, 1); + assert.position(editor.getSelection().getSelectionAnchor(), 2, 1); + assert.position(editor.getSelection().getSelectionLead(), 3, 1); + + // moving again should have no effect + editor.moveLinesDown(); + assert.equal(["33", "44", "11", "22"].join("\n"), session.toString()); + assert.position(editor.getCursorPosition(), 3, 1); + assert.position(editor.getSelection().getSelectionAnchor(), 2, 1); + assert.position(editor.getSelection().getSelectionLead(), 3, 1); + }, + + "test: move lines up should keep selection on moved lines" : function() { + var session = new EditSession(["11", "22", "33", "44"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(2, 1); + editor.getSelection().selectDown(); + + editor.moveLinesUp(); + assert.equal(session.toString(), ["11", "33", "44", "22"].join("\n")); + assert.position(editor.getCursorPosition(), 2, 1); + assert.position(editor.getSelection().getSelectionAnchor(), 1, 1); + assert.position(editor.getSelection().getSelectionLead(), 2, 1); + + editor.moveLinesUp(); + assert.equal(session.toString(), ["33", "44", "11", "22"].join("\n")); + assert.position(editor.getCursorPosition(), 1, 1); + assert.position(editor.getSelection().getSelectionAnchor(), 0, 1); + assert.position(editor.getSelection().getSelectionLead(), 1, 1); + }, + + "test: move line without active selection should not move cursor relative to the moved line" : function() { + var session = new EditSession(["11", "22", "33", "44"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(1, 1); + editor.clearSelection(); + + editor.moveLinesDown(); + assert.equal(["11", "33", "22", "44"].join("\n"), session.toString()); + assert.position(editor.getCursorPosition(), 2, 1); + + editor.clearSelection(); + + editor.moveLinesUp(); + assert.equal(["11", "22", "33", "44"].join("\n"), session.toString()); + assert.position(editor.getCursorPosition(), 1, 1); + }, + + "test: copy lines down should keep selection" : function() { + var session = new EditSession(["11", "22", "33", "44"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(1, 1); + editor.getSelection().selectDown(); + + editor.copyLinesDown(); + assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), session.toString()); + + assert.position(editor.getCursorPosition(), 4, 1); + assert.position(editor.getSelection().getSelectionAnchor(), 3, 1); + assert.position(editor.getSelection().getSelectionLead(), 4, 1); + }, + + "test: copy lines up should keep selection" : function() { + var session = new EditSession(["11", "22", "33", "44"].join("\n")); + var editor = new Editor(new MockRenderer(), session); + + editor.moveCursorTo(1, 1); + editor.getSelection().selectDown(); + + editor.copyLinesUp(); + assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), session.toString()); + + assert.position(editor.getCursorPosition(), 2, 1); + assert.position(editor.getSelection().getSelectionAnchor(), 1, 1); + assert.position(editor.getSelection().getSelectionLead(), 2, 1); + }, + + "test: input a tab with soft tab should convert it to spaces" : function() { + var session = new EditSession(""); + var editor = new Editor(new MockRenderer(), session); + + session.setTabSize(2); + session.setUseSoftTabs(true); + + editor.onTextInput("\t"); + assert.equal(session.toString(), " "); + + session.setTabSize(5); + editor.onTextInput("\t"); + assert.equal(session.toString(), " "); + }, + + "test: input tab without soft tabs should keep the tab character" : function() { + var session = new EditSession(""); + var editor = new Editor(new MockRenderer(), session); + + session.setUseSoftTabs(false); + + editor.onTextInput("\t"); + assert.equal(session.toString(), "\t"); + }, + + "test: undo/redo for delete line" : function() { + var session = new EditSession(["111", "222", "333"]); + var undoManager = new UndoManager(); + session.setUndoManager(undoManager); + + var initialText = session.toString(); + var editor = new Editor(new MockRenderer(), session); + + editor.removeLines(); + var step1 = session.toString(); + assert.equal(step1, "222\n333"); + session.$syncInformUndoManager(); + + editor.removeLines(); + var step2 = session.toString(); + assert.equal(step2, "333"); + session.$syncInformUndoManager(); + + editor.removeLines(); + var step3 = session.toString(); + assert.equal(step3, ""); + session.$syncInformUndoManager(); + + undoManager.undo(); + session.$syncInformUndoManager(); + assert.equal(session.toString(), step2); + + undoManager.undo(); + session.$syncInformUndoManager(); + assert.equal(session.toString(), step1); + + undoManager.undo(); + session.$syncInformUndoManager(); + assert.equal(session.toString(), initialText); + + undoManager.undo(); + session.$syncInformUndoManager(); + assert.equal(session.toString(), initialText); + }, + + "test: remove left should remove character left of the cursor" : function() { + var session = new EditSession(["123", "456"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 1); + editor.remove("left"); + assert.equal(session.toString(), "123\n56"); + }, + + "test: remove left should remove line break if cursor is at line start" : function() { + var session = new EditSession(["123", "456"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 0); + editor.remove("left"); + assert.equal(session.toString(), "123456"); + }, + + "test: remove left should remove tabsize spaces if cursor is on a tab stop and preceeded by spaces" : function() { + var session = new EditSession(["123", " 456"]); + session.setUseSoftTabs(true); + session.setTabSize(4); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 8); + editor.remove("left"); + assert.equal(session.toString(), "123\n 456"); + }, + + "test: transpose at line start should be a noop": function() { + var session = new EditSession(["123", "4567", "89"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 0); + editor.transposeLetters(); + + assert.equal(session.getValue(), ["123", "4567", "89"].join("\n")); + }, + + "test: transpose in line should swap the charaters before and after the cursor": function() { + var session = new EditSession(["123", "4567", "89"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 2); + editor.transposeLetters(); + + assert.equal(session.getValue(), ["123", "4657", "89"].join("\n")); + }, + + "test: transpose at line end should swap the last two characters": function() { + var session = new EditSession(["123", "4567", "89"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 4); + editor.transposeLetters(); + + assert.equal(session.getValue(), ["123", "4576", "89"].join("\n")); + }, + + "test: transpose with non empty selection should be a noop": function() { + var session = new EditSession(["123", "4567", "89"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 1); + editor.getSelection().selectRight(); + editor.transposeLetters(); + + assert.equal(session.getValue(), ["123", "4567", "89"].join("\n")); + }, + + "test: transpose should move the cursor behind the last swapped character": function() { + var session = new EditSession(["123", "4567", "89"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 2); + editor.transposeLetters(); + assert.position(editor.getCursorPosition(), 1, 3); + }, + + "test: remove to line end": function() { + var session = new EditSession(["123", "4567", "89"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 2); + editor.removeToLineEnd(); + assert.equal(session.getValue(), ["123", "45", "89"].join("\n")); + }, + + "test: remove to line end at line end should remove the new line": function() { + var session = new EditSession(["123", "4567", "89"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 4); + editor.removeToLineEnd(); + assert.position(editor.getCursorPosition(), 1, 4); + assert.equal(session.getValue(), ["123", "456789"].join("\n")); + }, + + "test: transform selection to uppercase": function() { + var session = new EditSession(["ajax", "dot", "org"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 0); + editor.getSelection().selectLineEnd(); + editor.toUpperCase(); + assert.equal(session.getValue(), ["ajax", "DOT", "org"].join("\n")); + }, + + "test: transform word to uppercase": function() { + var session = new EditSession(["ajax", "dot", "org"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 0); + editor.toUpperCase(); + assert.equal(session.getValue(), ["ajax", "DOT", "org"].join("\n")); + assert.position(editor.getCursorPosition(), 1, 0); + }, + + "test: transform selection to lowercase": function() { + var session = new EditSession(["AJAX", "DOT", "ORG"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 0); + editor.getSelection().selectLineEnd(); + editor.toLowerCase(); + assert.equal(session.getValue(), ["AJAX", "dot", "ORG"].join("\n")); + }, + + "test: transform word to lowercase": function() { + var session = new EditSession(["AJAX", "DOT", "ORG"]); + + var editor = new Editor(new MockRenderer(), session); + editor.moveCursorTo(1, 0); + editor.toLowerCase(); + assert.equal(session.getValue(), ["AJAX", "dot", "ORG"].join("\n")); + assert.position(editor.getCursorPosition(), 1, 0); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/ext/beautify.js b/plugins/node_modules/ace/lib/ace/ext/beautify.js new file mode 100644 index 00000000..89d94055 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/beautify.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +// [WIP] + +define(function(require, exports, module) { +"use strict"; +var TokenIterator = require("ace/token_iterator").TokenIterator; + +var phpTransform = require("./beautify/php_rules").transform; + +exports.beautify = function(session) { + var iterator = new TokenIterator(session, 0, 0); + var token = iterator.getCurrentToken(); + + var context = session.$modeId.split("/").pop(); + + var code = phpTransform(iterator, context); + session.doc.setValue(code); +}; + +exports.commands = [{ + name: "beautify", + exec: function(editor) { + exports.beautify(editor.session); + }, + bindKey: "Ctrl-Shift-B" +}]; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/beautify/php_rules.js b/plugins/node_modules/ace/lib/ace/ext/beautify/php_rules.js new file mode 100644 index 00000000..ad851e9f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/beautify/php_rules.js @@ -0,0 +1,365 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var TokenIterator = require("ace/token_iterator").TokenIterator; +exports.newLines = [{ + type: 'support.php_tag', + value: '' +}, { + type: 'paren.lparen', + value: '{', + indent: true +}, { + type: 'paren.rparen', + breakBefore: true, + value: '}', + indent: false +}, { + type: 'paren.rparen', + breakBefore: true, + value: '})', + indent: false, + dontBreak: true +}, { + type: 'comment' +}, { + type: 'text', + value: ';' +}, { + type: 'text', + value: ':', + context: 'php' +}, { + type: 'keyword', + value: 'case', + indent: true, + dontBreak: true +}, { + type: 'keyword', + value: 'default', + indent: true, + dontBreak: true +}, { + type: 'keyword', + value: 'break', + indent: false, + dontBreak: true +}, { + type: 'punctuation.doctype.end', + value: '>' +}, { + type: 'meta.tag.punctuation.end', + value: '>' +}, { + type: 'meta.tag.punctuation.begin', + value: '<', + blockTag: true, + indent: true, + dontBreak: true +}, { + type: 'meta.tag.punctuation.begin', + value: '' ){ + context = 'php'; + } + else if( token.type == 'support.php_tag' && token.value == '?>' ){ + context = 'html'; + } + //css + else if( token.type == 'meta.tag.name.style' && context != 'css' ){ + context = 'css'; + } + else if( token.type == 'meta.tag.name.style' && context == 'css' ){ + context = 'html'; + } + //js + else if( token.type == 'meta.tag.name.script' && context != 'js' ){ + context = 'js'; + } + else if( token.type == 'meta.tag.name.script' && context == 'js' ){ + context = 'html'; + } + + nextToken = iterator.stepForward(); + + //tag name + if (nextToken && nextToken.type.indexOf('meta.tag.name') == 0) { + nextTag = nextToken.value; + } + + //don't linebreak + if ( lastToken.type == 'support.php_tag' && lastToken.value == '' ) { + dontBreak = false; + } + + //next token + lastTag = tag; + + lastToken = token; + + token = nextToken; + + if (token===null) { + break; + } + } + + return code; +}; + + + +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/chromevox.js b/plugins/node_modules/ace/lib/ace/ext/chromevox.js new file mode 100644 index 00000000..e6baf18d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/chromevox.js @@ -0,0 +1,979 @@ +define(function(require, exports, module) { + +/* ChromeVox Ace namespace. */ +var cvoxAce = {}; + +/* Typedefs for Closure compiler. */ +/** + * @typedef {{ + rate: number, + pitch: number, + volume: number, + relativePitch: number, + punctuationEcho: string + }} + */ +/* TODO(peterxiao): Export this typedef through cvox.Api. */ +cvoxAce.SpeechProperty; + +/** + * @typedef {{ + * row: number, + * column: number + * }} + */ +cvoxAce.Cursor; + +/** + * @typedef {{ + type: string, + value: string + }} + } + */ +cvoxAce.Token; + +/** + * These are errors and information that Ace will display in the gutter. + * @typedef {{ + row: number, + column: number, + value: string + }} + } + */ +cvoxAce.Annotation; + +/* Speech Properties. */ +/** + * Speech property for speaking constant tokens. + * @type {cvoxAce.SpeechProperty} + */ +var CONSTANT_PROP = { + 'rate': 0.8, + 'pitch': 0.4, + 'volume': 0.9 +}; + +/** + * Default speech property for speaking tokens. + * @type {cvoxAce.SpeechProperty} + */ +var DEFAULT_PROP = { + 'rate': 1, + 'pitch': 0.5, + 'volume': 0.9 +}; + +/** + * Speech property for speaking entity tokens. + * @type {cvoxAce.SpeechProperty} + */ +var ENTITY_PROP = { + 'rate': 0.8, + 'pitch': 0.8, + 'volume': 0.9 +}; + +/** + * Speech property for speaking keywords. + * @type {cvoxAce.SpeechProperty} + */ +var KEYWORD_PROP = { + 'rate': 0.8, + 'pitch': 0.3, + 'volume': 0.9 +}; + +/** + * Speech property for speaking storage tokens. + * @type {cvoxAce.SpeechProperty} + */ +var STORAGE_PROP = { + 'rate': 0.8, + 'pitch': 0.7, + 'volume': 0.9 +}; + +/** + * Speech property for speaking variable tokens. + * @type {cvoxAce.SpeechProperty} + */ +var VARIABLE_PROP = { + 'rate': 0.8, + 'pitch': 0.8, + 'volume': 0.9 +}; + +/** + * Speech property for speaking deleted text. + * @type {cvoxAce.SpeechProperty} + */ +var DELETED_PROP = { + 'punctuationEcho': 'none', + 'relativePitch': -0.6 +}; + +/* Constants for Earcons. */ +var ERROR_EARCON = 'ALERT_NONMODAL'; +var MODE_SWITCH_EARCON = 'ALERT_MODAL'; +var NO_MATCH_EARCON = 'INVALID_KEYPRESS'; + +/* Constants for vim state. */ +var INSERT_MODE_STATE = 'insertMode'; +var COMMAND_MODE_STATE = 'start'; + +var REPLACE_LIST = [ + { + substr: ';', + newSubstr: ' semicolon ' + }, + { + substr: ':', + newSubstr: ' colon ' + } +]; + +/** + * Context menu commands. + */ +var Command = { + SPEAK_ANNOT: 'annots', + SPEAK_ALL_ANNOTS: 'all_annots', + TOGGLE_LOCATION: 'toggle_location', + SPEAK_MODE: 'mode', + SPEAK_ROW_COL: 'row_col', + TOGGLE_DISPLACEMENT: 'toggle_displacement', + FOCUS_TEXT: 'focus_text' +}; + +/** + * Key prefix for each shortcut. + */ +var KEY_PREFIX = 'CONTROL + SHIFT '; + +/* Globals. */ +cvoxAce.editor = null; +/** + * Last cursor position. + * @type {cvoxAce.Cursor} + */ +var lastCursor = null; + +/** + * Table of annotations. + * @typedef {!Object.>} + */ +var annotTable = {}; + +/** + * Whether to speak character, word, and then line. This allows blind users + * to know the location of the cursor when they change lines. + * @typedef {boolean} + */ +var shouldSpeakRowLocation = false; + +/** + * Whether to speak displacement. + * @typedef {boolean} + */ +var shouldSpeakDisplacement = false; + +/** + * Whether text was changed to cause a cursor change event. + * @typedef {boolean} + */ +var changed = false; + +/** + * Current state vim is in. + */ +var vimState = null; + +/** + * Mapping from key code to shortcut. + */ +var keyCodeToShortcutMap = {}; + +/** + * Mapping from command to shortcut. + */ +var cmdToShortcutMap = {}; + +/** + * Get shortcut string from keyCode. + * @param {number} keyCode Key code of shortcut. + * @return {string} String representation of shortcut. + */ +var getKeyShortcutString = function(keyCode) { + return KEY_PREFIX + String.fromCharCode(keyCode); +}; + +/** + * Return if in vim mode. + * @return {boolean} True if in Vim mode. + */ +var isVimMode = function() { + var keyboardHandler = cvoxAce.editor.keyBinding.getKeyboardHandler(); + return keyboardHandler.$id === 'ace/keyboard/vim'; +}; + +/** + * Gets the current token. + * @param {!cvoxAce.Cursor} cursor Current position of the cursor. + * @return {!cvoxAce.Token} Token at the current position. + */ +var getCurrentToken = function(cursor) { + return cvoxAce.editor.getSession().getTokenAt(cursor.row, cursor.column + 1); +}; + +/** + * Gets the current line the cursor is under. + * @param {!cvoxAce.Cursor} cursor Current cursor position. + */ +var getCurrentLine = function(cursor) { + return cvoxAce.editor.getSession().getLine(cursor.row); +}; + +/** + * Event handler for row changes. When the user changes rows we want to speak + * the line so the user can work on this line. If shouldSpeakRowLocation is on + * then we speak the character, then the row, then the line so the user knows + * where the cursor is. + * @param {!cvoxAce.Cursor} currCursor Current cursor position. + */ +var onRowChange = function(currCursor) { + /* Notify that this line has an annotation. */ + if (annotTable[currCursor.row]) { + cvox.Api.playEarcon(ERROR_EARCON); + } + if (shouldSpeakRowLocation) { + cvox.Api.stop(); + speakChar(currCursor); + speakTokenQueue(getCurrentToken(currCursor)); + speakLine(currCursor.row, 1); + } else { + speakLine(currCursor.row, 0); + } +}; + +/** + * Returns whether the cursor is at the beginning of a word. A word is + * a grouping of alphanumeric characters including underscores. + * @param {!cvoxAce.Cursor} cursor Current cursor position. + * @return {boolean} Whether there is word. + */ +var isWord = function(cursor) { + var line = getCurrentLine(cursor); + var lineSuffix = line.substr(cursor.column - 1); + if (cursor.column === 0) { + lineSuffix = ' ' + line; + } + /* Use regex to tell if the suffix is at the start of a new word. */ + var firstWordRegExp = /^\W(\w+)/; + var words = firstWordRegExp.exec(lineSuffix); + return words !== null; +}; + +/** + * A mapping of syntax type to speech properties / expanding rules. + */ +var rules = { + 'constant': { + prop: CONSTANT_PROP + }, + 'entity': { + prop: ENTITY_PROP + }, + 'keyword': { + prop: KEYWORD_PROP + }, + 'storage': { + prop: STORAGE_PROP + }, + 'variable': { + prop: VARIABLE_PROP + }, + 'meta': { + prop: DEFAULT_PROP, + replace: [ + { + substr: '', + newSubstr: ' close tag ' + }, + { + substr: '<', + newSubstr: ' tag start ' + }, + { + substr: '>', + newSubstr: ' tag end ' + } + ] + } +}; + +/** + * Default rule to be used. + */ +var DEFAULT_RULE = { + prop: DEFAULT_RULE +}; + +/** + * Expands substrings to how they are read based on the given rules. + * @param {string} value Text to be expanded. + * @param {Array.} replaceRules Rules to determine expansion. + * @return {string} New expanded value. + */ +var expand = function(value, replaceRules) { + var newValue = value; + for (var i = 0; i < replaceRules.length; i++) { + var replaceRule = replaceRules[i]; + var regexp = new RegExp(replaceRule.substr, 'g'); + newValue = newValue.replace(regexp, replaceRule.newSubstr); + } + return newValue; +}; + +/** + * Merges tokens from start inclusive to end exclusive. + * @param {Array.} Tokens to be merged. + * @param {number} start Start index inclusive. + * @param {number} end End index exclusive. + * @return {cvoxAce.Token} Merged token. + */ +var mergeTokens = function(tokens, start, end) { + /* Different type of token found! Merge all previous like tokens. */ + var newToken = {}; + newToken.value = ''; + newToken.type = tokens[start].type; + for (var j = start; j < end; j++) { + newToken.value += tokens[j].value; + } + return newToken; +}; + +/** + * Merges tokens that use the same speech properties. + * @param {Array.} tokens Tokens to be merged. + * @return {Array.} Merged tokens. + */ +var mergeLikeTokens = function(tokens) { + if (tokens.length <= 1) { + return tokens; + } + var newTokens = []; + var lastLikeIndex = 0; + for (var i = 1; i < tokens.length; i++) { + var lastLikeToken = tokens[lastLikeIndex]; + var currToken = tokens[i]; + if (getTokenRule(lastLikeToken) !== getTokenRule(currToken)) { + newTokens.push(mergeTokens(tokens, lastLikeIndex, i)); + lastLikeIndex = i; + } + } + newTokens.push(mergeTokens(tokens, lastLikeIndex, tokens.length)); + return newTokens; +}; + +/** + * Returns if given row is a whitespace row. + * @param {number} row Row. + * @return {boolean} True if row is whitespaces. + */ +var isRowWhiteSpace = function(row) { + var line = cvoxAce.editor.getSession().getLine(row); + var whiteSpaceRegexp = /^\s*$/; + return whiteSpaceRegexp.exec(line) !== null; +}; + +/** + * Speak the line with syntax properties. + * @param {number} row Row to speak. + * @param {number} queue Queue mode to speak. + */ +var speakLine = function(row, queue) { + var tokens = cvoxAce.editor.getSession().getTokens(row); + if (tokens.length === 0 || isRowWhiteSpace(row)) { + cvox.Api.playEarcon('EDITABLE_TEXT'); + return; + } + tokens = mergeLikeTokens(tokens); + var firstToken = tokens[0]; + /* Filter out first token. */ + tokens = tokens.filter(function(token) { + return token !== firstToken; + }); + /* Speak first token separately to flush if queue. */ + speakToken_(firstToken, queue); + /* Speak rest of tokens. */ + tokens.forEach(speakTokenQueue); +}; + +/** + * Speak the token based on the syntax of the token, flushing. + * @param {!cvoxAce.Token} token Token to speak. + * @param {number} queue Queue mode. + */ +var speakTokenFlush = function(token) { + speakToken_(token, 0); +}; + +/** + * Speak the token based on the syntax of the token, queueing. + * @param {!cvoxAce.Token} token Token to speak. + * @param {number} queue Queue mode. + */ +var speakTokenQueue = function(token) { + speakToken_(token, 1); +}; + +/** + * @param {!cvoxAce.Token} token Token to speak. + * Get the token speech property. + */ +var getTokenRule = function(token) { + /* Types are period delimited. In this case, we only syntax speak the outer + * most type of token. */ + if (!token || !token.type) { + return; + } + var split = token.type.split('.'); + if (split.length === 0) { + return; + } + var type = split[0]; + var rule = rules[type]; + if (!rule) { + return DEFAULT_RULE; + } + return rule; +}; + +/** + * Speak the token based on the syntax of the token. + * @private + * @param {!cvoxAce.Token} token Token to speak. + * @param {number} queue Queue mode. + */ +var speakToken_ = function(token, queue) { + var rule = getTokenRule(token); + var value = expand(token.value, REPLACE_LIST); + if (rule.replace) { + value = expand(value, rule.replace); + } + cvox.Api.speak(value, queue, rule.prop); +}; + +/** + * Speaks the character under the cursor. This is queued. + * @param {!cvoxAce.Cursor} cursor Current cursor position. + * @return {string} Character. + */ +var speakChar = function(cursor) { + var line = getCurrentLine(cursor); + cvox.Api.speak(line[cursor.column], 1); +}; + +/** + * Speaks the jump from lastCursor to currCursor. This function assumes the + * jump takes place on the current line. + * @param {!cvoxAce.Cursor} lastCursor Previous cursor position. + * @param {!cvoxAce.Cursor} currCursor Current cursor position. + */ +var speakDisplacement = function(lastCursor, currCursor) { + var line = getCurrentLine(currCursor); + + /* Get the text that we jumped past. */ + var displace = line.substring(lastCursor.column, currCursor.column); + + /* Speak out loud spaces. */ + displace = displace.replace(/ /g, ' space '); + cvox.Api.speak(displace); +}; + +/** + * Speaks the word if the cursor jumped to a new word or to the beginning + * of the line. Otherwise speak the charactor. + * @param {!cvoxAce.Cursor} lastCursor Previous cursor position. + * @param {!cvoxAce.Cursor} currCursor Current cursor position. + */ +var speakCharOrWordOrLine = function(lastCursor, currCursor) { + /* Say word only if jump. */ + if (Math.abs(lastCursor.column - currCursor.column) !== 1) { + var currLineLength = getCurrentLine(currCursor).length; + /* Speak line if jumping to beginning or end of line. */ + if (currCursor.column === 0 || currCursor.column === currLineLength) { + speakLine(currCursor.row, 0); + return; + } + if (isWord(currCursor)) { + cvox.Api.stop(); + speakTokenQueue(getCurrentToken(currCursor)); + return; + } + } + speakChar(currCursor); +}; + +/** + * Event handler for column changes. If shouldSpeakDisplacement is on, then + * we just speak displacements in row changes. Otherwise, we either speak + * the character for single character movements, the word when jumping to the + * next word, or the entire line if jumping to beginning or end of the line. + * @param {!cvoxAce.Cursor} lastCursor Previous cursor position. + * @param {!cvoxAce.Cursor} currCursor Current cursor position. + */ +var onColumnChange = function(lastCursor, currCursor) { + if (!cvoxAce.editor.selection.isEmpty()) { + speakDisplacement(lastCursor, currCursor); + cvox.Api.speak('selected', 1); + } + else if (shouldSpeakDisplacement) { + speakDisplacement(lastCursor, currCursor); + } else { + speakCharOrWordOrLine(lastCursor, currCursor); + } +}; + +/** + * Event handler for cursor changes. Classify cursor changes as either row or + * column changes, then delegate accordingly. + * @param {!Event} evt The event. + */ +var onCursorChange = function(evt) { + /* Do not speak if cursor change was a result of text insertion. We want to + * speak the text that was inserted and not where the cursor lands. */ + if (changed) { + changed = false; + return; + } + var currCursor = cvoxAce.editor.selection.getCursor(); + if (currCursor.row !== lastCursor.row) { + onRowChange(currCursor); + } else { + onColumnChange(lastCursor, currCursor); + } + lastCursor = currCursor; +}; + +/** + * Event handler for selection changes. + * @param {!Event} evt The event. + */ +var onSelectionChange = function(evt) { + /* Assumes that when selection changes to empty, the user has unselected. */ + if (cvoxAce.editor.selection.isEmpty()) { + cvox.Api.speak('unselected'); + } +}; + +/** + * Event handler for source changes. We want auditory feedback for inserting + * and deleting text. + * @param {!Event} evt The event. + */ +var onChange = function(delta) { + switch (delta.action) { + case 'remove': + cvox.Api.speak(delta.text, 0, DELETED_PROP); + /* Let the future cursor change event know it's from text change. */ + changed = true; + break; + case 'insert': + cvox.Api.speak(delta.text, 0); + /* Let the future cursor change event know it's from text change. */ + changed = true; + break; + } +}; + +/** + * Returns whether or not the annotation is new. + * @param {!cvoxAce.Annotation} annot Annotation in question. + * @return {boolean} Whether annot is new. + */ +var isNewAnnotation = function(annot) { + var row = annot.row; + var col = annot.column; + return !annotTable[row] || !annotTable[row][col]; +}; + +/** + * Populates the annotation table. + * @param {!Array.} annotations Array of annotations. + */ +var populateAnnotations = function(annotations) { + annotTable = {}; + for (var i = 0; i < annotations.length; i++) { + var annotation = annotations[i]; + var row = annotation.row; + var col = annotation.column; + if (!annotTable[row]) { + annotTable[row] = {}; + } + annotTable[row][col] = annotation; + } +}; + +/** + * Event handler for annotation changes. We want to notify the user when an + * a new annotation appears. + * @param {!Event} evt Event. + */ +var onAnnotationChange = function(evt) { + var annotations = cvoxAce.editor.getSession().getAnnotations(); + var newAnnotations = annotations.filter(isNewAnnotation); + if (newAnnotations.length > 0) { + cvox.Api.playEarcon(ERROR_EARCON); + } + populateAnnotations(annotations); +}; + +/** + * Speak annotation. + * @param {!cvoxAce.Annotation} annot Annotation to speak. + */ +var speakAnnot = function(annot) { + var annotText = annot.type + ' ' + annot.text + ' on ' + + rowColToString(annot.row, annot.column); + annotText = annotText.replace(';', 'semicolon'); + cvox.Api.speak(annotText, 1); +}; + +/** + * Speak annotations in a row. + * @param {number} row Row of annotations to speak. + */ +var speakAnnotsByRow = function(row) { + var annots = annotTable[row]; + for (var col in annots) { + speakAnnot(annots[col]); + } +}; + +/** + * Get a string representation of a row and column. + * @param {boolean} row Zero indexed row. + * @param {boolean} col Zero indexed column. + * @return {string} Row and column to be spoken. + */ +var rowColToString = function(row, col) { + return 'row ' + (row + 1) + ' column ' + (col + 1); +}; + +/** + * Speaks the row and column. + */ +var speakCurrRowAndCol = function() { + cvox.Api.speak(rowColToString(lastCursor.row, lastCursor.column)); +}; + +/** + * Speaks all annotations. + */ +var speakAllAnnots = function() { + for (var row in annotTable) { + speakAnnotsByRow(row); + } +}; + +/** + * Speak the vim mode. If no vim mode, this function does nothing. + */ +var speakMode = function() { + if (!isVimMode()) { + return; + } + switch (cvoxAce.editor.keyBinding.$data.state) { + case INSERT_MODE_STATE: + cvox.Api.speak('Insert mode'); + break; + case COMMAND_MODE_STATE: + cvox.Api.speak('Command mode'); + break; + } +}; + +/** + * Toggle speak location. + */ +var toggleSpeakRowLocation = function() { + shouldSpeakRowLocation = !shouldSpeakRowLocation; + /* Auditory feedback of the change. */ + if (shouldSpeakRowLocation) { + cvox.Api.speak('Speak location on row change enabled.'); + } else { + cvox.Api.speak('Speak location on row change disabled.'); + } +}; + +/** + * Toggle speak displacement. + */ +var toggleSpeakDisplacement = function() { + shouldSpeakDisplacement = !shouldSpeakDisplacement; + /* Auditory feedback of the change. */ + if (shouldSpeakDisplacement) { + cvox.Api.speak('Speak displacement on column changes.'); + } else { + cvox.Api.speak('Speak current character or word on column changes.'); + } +}; + +/** + * Event handler for key down events. Gets the right shortcut from the map, + * and calls the associated function. + * @param {!Event} evt Keyboard event. + */ +var onKeyDown = function(evt) { + if (evt.ctrlKey && evt.shiftKey) { + var shortcut = keyCodeToShortcutMap[evt.keyCode]; + if (shortcut) { + shortcut.func(); + } + } +}; + +/** + * Event handler for status change events. Auditory feedback of changing + * between vim states. + * @param {!Event} evt Change status event. + * @param {!Object} editor Editor state. + */ +var onChangeStatus = function(evt, editor) { + if (!isVimMode()) { + return; + } + var state = editor.keyBinding.$data.state; + if (state === vimState) { + /* State hasn't changed, do nothing. */ + return; + } + switch (state) { + case INSERT_MODE_STATE: + cvox.Api.playEarcon(MODE_SWITCH_EARCON); + /* When in insert mode, we want to speak out keys as feedback. */ + cvox.Api.setKeyEcho(true); + break; + case COMMAND_MODE_STATE: + cvox.Api.playEarcon(MODE_SWITCH_EARCON); + /* When in command mode, we want don't speak out keys because those keys + * are not being inserted in the document. */ + cvox.Api.setKeyEcho(false); + break; + } + vimState = state; +}; + +/** + * Handles context menu events. This is a ChromeVox feature where hitting + * the shortcut ChromeVox + comma will open up a search bar where you can + * type in various commands. All keyboard shortcuts are also commands that + * can be invoked. This handles the event that ChromeVox sends to the page. + * @param {Event} evt Event received. + */ +var contextMenuHandler = function(evt) { + var cmd = evt.detail['customCommand']; + var shortcut = cmdToShortcutMap[cmd]; + if (shortcut) { + shortcut.func(); + /* ChromeVox will bring focus to an element near the cursor instead of the + * text input. */ + cvoxAce.editor.focus(); + } +}; + +/** + * Initialize the ChromeVox context menu. + */ +var initContextMenu = function() { + var ACTIONS = SHORTCUTS.map(function(shortcut) { + return { + desc: shortcut.desc + getKeyShortcutString(shortcut.keyCode), + cmd: shortcut.cmd + }; + }); + + /* Attach ContextMenuActions. */ + var body = document.querySelector('body'); + body.setAttribute('contextMenuActions', JSON.stringify(ACTIONS)); + + /* Listen for ContextMenu events. */ + body.addEventListener('ATCustomEvent', contextMenuHandler, true); +}; + +/** + * Event handler for find events. When there is a match, we want to speak the + * line we are now at. Otherwise, we want to notify the user there was no + * match + * @param {!Event} evt The event. + */ +var onFindSearchbox = function(evt) { + if (evt.match) { + /* There is still a match! Speak the line. */ + speakLine(lastCursor.row, 0); + } else { + /* No match, give auditory feedback! */ + cvox.Api.playEarcon(NO_MATCH_EARCON); + } +}; + +/** + * Focus to text input. + */ +var focus = function() { + cvoxAce.editor.focus(); +}; + +/** + * Shortcut definitions. + */ +var SHORTCUTS = [ + { + /* 1 key. */ + keyCode: 49, + func: function() { + speakAnnotsByRow(lastCursor.row); + }, + cmd: Command.SPEAK_ANNOT, + desc: 'Speak annotations on line' + }, + { + /* 2 key. */ + keyCode: 50, + func: speakAllAnnots, + cmd: Command.SPEAK_ALL_ANNOTS, + desc: 'Speak all annotations' + }, + { + /* 3 key. */ + keyCode: 51, + func: speakMode, + cmd: Command.SPEAK_MODE, + desc: 'Speak Vim mode' + }, + { + /* 4 key. */ + keyCode: 52, + func: toggleSpeakRowLocation, + cmd: Command.TOGGLE_LOCATION, + desc: 'Toggle speak row location' + }, + { + /* 5 key. */ + keyCode: 53, + func: speakCurrRowAndCol, + cmd: Command.SPEAK_ROW_COL, + desc: 'Speak row and column' + }, + { + /* 6 key. */ + keyCode: 54, + func: toggleSpeakDisplacement, + cmd: Command.TOGGLE_DISPLACEMENT, + desc: 'Toggle speak displacement' + }, + { + /* 7 key. */ + keyCode: 55, + func: focus, + cmd: Command.FOCUS_TEXT, + desc: 'Focus text' + } +]; + +/** + * Event handler for focus events. + */ +var onFocus = function(_, editor) { + cvoxAce.editor = editor; + + /* Set up listeners. */ + editor.getSession().selection.on('changeCursor', onCursorChange); + editor.getSession().selection.on('changeSelection', onSelectionChange); + editor.getSession().on('change', onChange); + editor.getSession().on('changeAnnotation', onAnnotationChange); + editor.on('changeStatus', onChangeStatus); + editor.on('findSearchBox', onFindSearchbox); + editor.container.addEventListener('keydown', onKeyDown); + + lastCursor = editor.selection.getCursor(); +}; + +/** + * Initialize the theme. + * @param {Object} editor Editor to use. + */ +var init = function(editor) { + onFocus(null, editor); + + /* Construct maps. */ + SHORTCUTS.forEach(function(shortcut) { + keyCodeToShortcutMap[shortcut.keyCode] = shortcut; + cmdToShortcutMap[shortcut.cmd] = shortcut; + }); + + editor.on('focus', onFocus); + + /* Assume we start in command mode if vim. */ + if (isVimMode()) { + cvox.Api.setKeyEcho(false); + } + initContextMenu(); +}; + +/** + * Returns if cvox exists, and the api exists. + * @return {boolean} Whether not Cvox Api exists. + */ +function cvoxApiExists() { + return (typeof(cvox) !== 'undefined') && cvox && cvox.Api; +} + +/** + * Number of tries for Cvox loading. + * @type {number} + */ +var tries = 0; + +/** + * Max number of tries to watch for Cvox loading. + * @type {number} + */ +var MAX_TRIES = 15; + +/** + * Check for ChromeVox load. + * @param {Object} editor Editor to use. + */ +function watchForCvoxLoad(editor) { + if (cvoxApiExists()) { + init(editor); + } else { + tries++; + if (tries >= MAX_TRIES) { + return; + } + window.setTimeout(watchForCvoxLoad, 500, editor); + } +} + +var Editor = require('../editor').Editor; +require('../config').defineOptions(Editor.prototype, 'editor', { + enableChromevoxEnhancements: { + set: function(val) { + if (val) { + watchForCvoxLoad(this); + } + }, + value: true // turn it on by default or check for window.cvox + } +}); + +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/elastic_tabstops_lite.js b/plugins/node_modules/ace/lib/ace/ext/elastic_tabstops_lite.js new file mode 100644 index 00000000..0f89423a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/elastic_tabstops_lite.js @@ -0,0 +1,318 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var ElasticTabstopsLite = function(editor) { + this.$editor = editor; + var self = this; + var changedRows = []; + var recordChanges = false; + this.onAfterExec = function() { + recordChanges = false; + self.processRows(changedRows); + changedRows = []; + }; + this.onExec = function() { + recordChanges = true; + }; + this.onChange = function(delta) { + if (recordChanges) { + if (changedRows.indexOf(delta.start.row) == -1) + changedRows.push(delta.start.row); + if (delta.end.row != delta.start.row) + changedRows.push(delta.end.row); + } + }; +}; + +(function() { + this.processRows = function(rows) { + this.$inChange = true; + var checkedRows = []; + + for (var r = 0, rowCount = rows.length; r < rowCount; r++) { + var row = rows[r]; + + if (checkedRows.indexOf(row) > -1) + continue; + + var cellWidthObj = this.$findCellWidthsForBlock(row); + var cellWidths = this.$setBlockCellWidthsToMax(cellWidthObj.cellWidths); + var rowIndex = cellWidthObj.firstRow; + + for (var w = 0, l = cellWidths.length; w < l; w++) { + var widths = cellWidths[w]; + checkedRows.push(rowIndex); + this.$adjustRow(rowIndex, widths); + rowIndex++; + } + } + this.$inChange = false; + }; + + this.$findCellWidthsForBlock = function(row) { + var cellWidths = [], widths; + + // starting row and backward + var rowIter = row; + while (rowIter >= 0) { + widths = this.$cellWidthsForRow(rowIter); + if (widths.length == 0) + break; + + cellWidths.unshift(widths); + rowIter--; + } + var firstRow = rowIter + 1; + + // forward (not including starting row) + rowIter = row; + var numRows = this.$editor.session.getLength(); + + while (rowIter < numRows - 1) { + rowIter++; + + widths = this.$cellWidthsForRow(rowIter); + if (widths.length == 0) + break; + + cellWidths.push(widths); + } + + return { cellWidths: cellWidths, firstRow: firstRow }; + }; + + this.$cellWidthsForRow = function(row) { + var selectionColumns = this.$selectionColumnsForRow(row); + // todo: support multicursor + + var tabs = [-1].concat(this.$tabsForRow(row)); + var widths = tabs.map(function(el) { return 0; } ).slice(1); + var line = this.$editor.session.getLine(row); + + for (var i = 0, len = tabs.length - 1; i < len; i++) { + var leftEdge = tabs[i]+1; + var rightEdge = tabs[i+1]; + + var rightmostSelection = this.$rightmostSelectionInCell(selectionColumns, rightEdge); + var cell = line.substring(leftEdge, rightEdge); + widths[i] = Math.max(cell.replace(/\s+$/g,'').length, rightmostSelection - leftEdge); + } + + return widths; + }; + + this.$selectionColumnsForRow = function(row) { + var selections = [], cursor = this.$editor.getCursorPosition(); + if (this.$editor.session.getSelection().isEmpty()) { + // todo: support multicursor + if (row == cursor.row) + selections.push(cursor.column); + } + + return selections; + }; + + this.$setBlockCellWidthsToMax = function(cellWidths) { + var startingNewBlock = true, blockStartRow, blockEndRow, maxWidth; + var columnInfo = this.$izip_longest(cellWidths); + + for (var c = 0, l = columnInfo.length; c < l; c++) { + var column = columnInfo[c]; + if (!column.push) { + console.error(column); + continue; + } + // add an extra None to the end so that the end of the column automatically + // finishes a block + column.push(NaN); + + for (var r = 0, s = column.length; r < s; r++) { + var width = column[r]; + if (startingNewBlock) { + blockStartRow = r; + maxWidth = 0; + startingNewBlock = false; + } + if (isNaN(width)) { + // block ended + blockEndRow = r; + + for (var j = blockStartRow; j < blockEndRow; j++) { + cellWidths[j][c] = maxWidth; + } + startingNewBlock = true; + } + + maxWidth = Math.max(maxWidth, width); + } + } + + return cellWidths; + }; + + this.$rightmostSelectionInCell = function(selectionColumns, cellRightEdge) { + var rightmost = 0; + + if (selectionColumns.length) { + var lengths = []; + for (var s = 0, length = selectionColumns.length; s < length; s++) { + if (selectionColumns[s] <= cellRightEdge) + lengths.push(s); + else + lengths.push(0); + } + rightmost = Math.max.apply(Math, lengths); + } + + return rightmost; + }; + + this.$tabsForRow = function(row) { + var rowTabs = [], line = this.$editor.session.getLine(row), + re = /\t/g, match; + + while ((match = re.exec(line)) != null) { + rowTabs.push(match.index); + } + + return rowTabs; + }; + + this.$adjustRow = function(row, widths) { + var rowTabs = this.$tabsForRow(row); + + if (rowTabs.length == 0) + return; + + var bias = 0, location = -1; + + // this always only contains two elements, so we're safe in the loop below + var expandedSet = this.$izip(widths, rowTabs); + + for (var i = 0, l = expandedSet.length; i < l; i++) { + var w = expandedSet[i][0], it = expandedSet[i][1]; + location += 1 + w; + it += bias; + var difference = location - it; + + if (difference == 0) + continue; + + var partialLine = this.$editor.session.getLine(row).substr(0, it ); + var strippedPartialLine = partialLine.replace(/\s*$/g, ""); + var ispaces = partialLine.length - strippedPartialLine.length; + + if (difference > 0) { + // put the spaces after the tab and then delete the tab, so any insertion + // points behave as expected + this.$editor.session.getDocument().insertInLine({row: row, column: it + 1}, Array(difference + 1).join(" ") + "\t"); + this.$editor.session.getDocument().removeInLine(row, it, it + 1); + + bias += difference; + } + + if (difference < 0 && ispaces >= -difference) { + this.$editor.session.getDocument().removeInLine(row, it + difference, it); + bias += difference; + } + } + }; + + // the is a (naive) Python port--but works for these purposes + this.$izip_longest = function(iterables) { + if (!iterables[0]) + return []; + var longest = iterables[0].length; + var iterablesLength = iterables.length; + + for (var i = 1; i < iterablesLength; i++) { + var iLength = iterables[i].length; + if (iLength > longest) + longest = iLength; + } + + var expandedSet = []; + + for (var l = 0; l < longest; l++) { + var set = []; + for (var i = 0; i < iterablesLength; i++) { + if (iterables[i][l] === "") + set.push(NaN); + else + set.push(iterables[i][l]); + } + + expandedSet.push(set); + } + + + return expandedSet; + }; + + // an even more (naive) Python port + this.$izip = function(widths, tabs) { + // grab the shorter size + var size = widths.length >= tabs.length ? tabs.length : widths.length; + + var expandedSet = []; + for (var i = 0; i < size; i++) { + var set = [ widths[i], tabs[i] ]; + expandedSet.push(set); + } + return expandedSet; + }; + +}).call(ElasticTabstopsLite.prototype); + +exports.ElasticTabstopsLite = ElasticTabstopsLite; + +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + useElasticTabstops: { + set: function(val) { + if (val) { + if (!this.elasticTabstops) + this.elasticTabstops = new ElasticTabstopsLite(this); + this.commands.on("afterExec", this.elasticTabstops.onAfterExec); + this.commands.on("exec", this.elasticTabstops.onExec); + this.on("change", this.elasticTabstops.onChange); + } else if (this.elasticTabstops) { + this.commands.removeListener("afterExec", this.elasticTabstops.onAfterExec); + this.commands.removeListener("exec", this.elasticTabstops.onExec); + this.removeListener("change", this.elasticTabstops.onChange); + } + } + } +}); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/emmet.js b/plugins/node_modules/ace/lib/ace/ext/emmet.js new file mode 100644 index 00000000..18ad221a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/emmet.js @@ -0,0 +1,463 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var HashHandler = require("ace/keyboard/hash_handler").HashHandler; +var Editor = require("ace/editor").Editor; +var snippetManager = require("ace/snippets").snippetManager; +var Range = require("ace/range").Range; +var emmet, emmetPath; + +/** + * Implementation of {@link IEmmetEditor} interface for Ace + */ +function AceEmmetEditor() {} + +AceEmmetEditor.prototype = { + setupContext: function(editor) { + this.ace = editor; + this.indentation = editor.session.getTabString(); + if (!emmet) + emmet = window.emmet; + var resources = emmet.resources || emmet.require("resources"); + resources.setVariable("indentation", this.indentation); + this.$syntax = null; + this.$syntax = this.getSyntax(); + }, + /** + * Returns character indexes of selected text: object with start + * and end properties. If there's no selection, should return + * object with start and end properties referring + * to current caret position + * @return {Object} + * @example + * var selection = editor.getSelectionRange(); + * alert(selection.start + ', ' + selection.end); + */ + getSelectionRange: function() { + // TODO should start be caret position instead? + var range = this.ace.getSelectionRange(); + var doc = this.ace.session.doc; + return { + start: doc.positionToIndex(range.start), + end: doc.positionToIndex(range.end) + }; + }, + + /** + * Creates selection from start to end character + * indexes. If end is ommited, this method should place caret + * and start index + * @param {Number} start + * @param {Number} [end] + * @example + * editor.createSelection(10, 40); + * + * //move caret to 15th character + * editor.createSelection(15); + */ + createSelection: function(start, end) { + var doc = this.ace.session.doc; + this.ace.selection.setRange({ + start: doc.indexToPosition(start), + end: doc.indexToPosition(end) + }); + }, + + /** + * Returns current line's start and end indexes as object with start + * and end properties + * @return {Object} + * @example + * var range = editor.getCurrentLineRange(); + * alert(range.start + ', ' + range.end); + */ + getCurrentLineRange: function() { + var ace = this.ace; + var row = ace.getCursorPosition().row; + var lineLength = ace.session.getLine(row).length; + var index = ace.session.doc.positionToIndex({row: row, column: 0}); + return { + start: index, + end: index + lineLength + }; + }, + + /** + * Returns current caret position + * @return {Number|null} + */ + getCaretPos: function(){ + var pos = this.ace.getCursorPosition(); + return this.ace.session.doc.positionToIndex(pos); + }, + + /** + * Set new caret position + * @param {Number} index Caret position + */ + setCaretPos: function(index){ + var pos = this.ace.session.doc.indexToPosition(index); + this.ace.selection.moveToPosition(pos); + }, + + /** + * Returns content of current line + * @return {String} + */ + getCurrentLine: function() { + var row = this.ace.getCursorPosition().row; + return this.ace.session.getLine(row); + }, + + /** + * Replace editor's content or it's part (from start to + * end index). If value contains + * caret_placeholder, the editor will put caret into + * this position. If you skip start and end + * arguments, the whole target's content will be replaced with + * value. + * + * If you pass start argument only, + * the value will be placed at start string + * index of current content. + * + * If you pass start and end arguments, + * the corresponding substring of current target's content will be + * replaced with value. + * @param {String} value Content you want to paste + * @param {Number} [start] Start index of editor's content + * @param {Number} [end] End index of editor's content + * @param {Boolean} [noIndent] Do not auto indent value + */ + replaceContent: function(value, start, end, noIndent) { + if (end == null) + end = start == null ? this.getContent().length : start; + if (start == null) + start = 0; + + var editor = this.ace; + var doc = editor.session.doc; + var range = Range.fromPoints(doc.indexToPosition(start), doc.indexToPosition(end)); + editor.session.remove(range); + + range.end = range.start; + //editor.selection.setRange(range); + + value = this.$updateTabstops(value); + snippetManager.insertSnippet(editor, value); + }, + + /** + * Returns editor's content + * @return {String} + */ + getContent: function(){ + return this.ace.getValue(); + }, + + /** + * Returns current editor's syntax mode + * @return {String} + */ + getSyntax: function() { + if (this.$syntax) + return this.$syntax; + var syntax = this.ace.session.$modeId.split("/").pop(); + if (syntax == "html" || syntax == "php") { + var cursor = this.ace.getCursorPosition(); + var state = this.ace.session.getState(cursor.row); + if (typeof state != "string") + state = state[0]; + if (state) { + state = state.split("-"); + if (state.length > 1) + syntax = state[0]; + else if (syntax == "php") + syntax = "html"; + } + } + return syntax; + }, + + /** + * Returns current output profile name (@see emmet#setupProfile) + * @return {String} + */ + getProfileName: function() { + var resources = emmet.resources || emmet.require("resources"); + switch (this.getSyntax()) { + case "css": return "css"; + case "xml": + case "xsl": + return "xml"; + case "html": + var profile = resources.getVariable("profile"); + // no forced profile, guess from content html or xhtml? + if (!profile) + profile = this.ace.session.getLines(0,2).join("").search(/]+XHTML/i) != -1 ? "xhtml": "html"; + return profile; + default: + var mode = this.ace.session.$mode; + return mode.emmetConfig && mode.emmetConfig.profile || "xhtml"; + } + }, + + /** + * Ask user to enter something + * @param {String} title Dialog title + * @return {String} Entered data + * @since 0.65 + */ + prompt: function(title) { + return prompt(title); + }, + + /** + * Returns current selection + * @return {String} + * @since 0.65 + */ + getSelection: function() { + return this.ace.session.getTextRange(); + }, + + /** + * Returns current editor's file path + * @return {String} + * @since 0.65 + */ + getFilePath: function() { + return ""; + }, + + // update tabstops: make sure all caret placeholders are unique + // by default, abbreviation parser generates all unlinked (un-mirrored) + // tabstops as ${0}, so we have upgrade all caret tabstops with unique + // positions but make sure that all other tabstops are not linked accidentally + // based on https://github.com/sergeche/emmet-sublime/blob/master/editor.js#L119-L171 + $updateTabstops: function(value) { + var base = 1000; + var zeroBase = 0; + var lastZero = null; + var ts = emmet.tabStops || emmet.require('tabStops'); + var resources = emmet.resources || emmet.require("resources"); + var settings = resources.getVocabulary("user"); + var tabstopOptions = { + tabstop: function(data) { + var group = parseInt(data.group, 10); + var isZero = group === 0; + if (isZero) + group = ++zeroBase; + else + group += base; + + var placeholder = data.placeholder; + if (placeholder) { + // recursively update nested tabstops + placeholder = ts.processText(placeholder, tabstopOptions); + } + + var result = '${' + group + (placeholder ? ':' + placeholder : '') + '}'; + + if (isZero) { + lastZero = [data.start, result]; + } + + return result; + }, + escape: function(ch) { + if (ch == '$') return '\\$'; + if (ch == '\\') return '\\\\'; + return ch; + } + }; + + value = ts.processText(value, tabstopOptions); + + if (settings.variables['insert_final_tabstop'] && !/\$\{0\}$/.test(value)) { + value += '${0}'; + } else if (lastZero) { + var common = emmet.utils ? emmet.utils.common : emmet.require('utils'); + value = common.replaceSubstring(value, '${0}', lastZero[0], lastZero[1]); + } + + return value; + } +}; + + +var keymap = { + expand_abbreviation: {"mac": "ctrl+alt+e", "win": "alt+e"}, + match_pair_outward: {"mac": "ctrl+d", "win": "ctrl+,"}, + match_pair_inward: {"mac": "ctrl+j", "win": "ctrl+shift+0"}, + matching_pair: {"mac": "ctrl+alt+j", "win": "alt+j"}, + next_edit_point: "alt+right", + prev_edit_point: "alt+left", + toggle_comment: {"mac": "command+/", "win": "ctrl+/"}, + split_join_tag: {"mac": "shift+command+'", "win": "shift+ctrl+`"}, + remove_tag: {"mac": "command+'", "win": "shift+ctrl+;"}, + evaluate_math_expression: {"mac": "shift+command+y", "win": "shift+ctrl+y"}, + increment_number_by_1: "ctrl+up", + decrement_number_by_1: "ctrl+down", + increment_number_by_01: "alt+up", + decrement_number_by_01: "alt+down", + increment_number_by_10: {"mac": "alt+command+up", "win": "shift+alt+up"}, + decrement_number_by_10: {"mac": "alt+command+down", "win": "shift+alt+down"}, + select_next_item: {"mac": "shift+command+.", "win": "shift+ctrl+."}, + select_previous_item: {"mac": "shift+command+,", "win": "shift+ctrl+,"}, + reflect_css_value: {"mac": "shift+command+r", "win": "shift+ctrl+r"}, + + encode_decode_data_url: {"mac": "shift+ctrl+d", "win": "ctrl+'"}, + // update_image_size: {"mac": "shift+ctrl+i", "win": "ctrl+u"}, + // expand_as_you_type: "ctrl+alt+enter", + // wrap_as_you_type: {"mac": "shift+ctrl+g", "win": "shift+ctrl+g"}, + expand_abbreviation_with_tab: "Tab", + wrap_with_abbreviation: {"mac": "shift+ctrl+a", "win": "shift+ctrl+a"} +}; + +var editorProxy = new AceEmmetEditor(); +exports.commands = new HashHandler(); +exports.runEmmetCommand = function runEmmetCommand(editor) { + try { + editorProxy.setupContext(editor); + var actions = emmet.actions || emmet.require("actions"); + + if (this.action == "expand_abbreviation_with_tab") { + if (!editor.selection.isEmpty()) + return false; + var pos = editor.selection.lead; + var token = editor.session.getTokenAt(pos.row, pos.column); + if (token && /\btag\b/.test(token.type)) + return false; + } + + if (this.action == "wrap_with_abbreviation") { + // without setTimeout prompt doesn't work on firefox + return setTimeout(function() { + actions.run("wrap_with_abbreviation", editorProxy); + }, 0); + } + + var result = actions.run(this.action, editorProxy); + } catch(e) { + if (!emmet) { + load(runEmmetCommand.bind(this, editor)); + return true; + } + editor._signal("changeStatus", typeof e == "string" ? e : e.message); + console.log(e); + result = false; + } + return result; +}; + +for (var command in keymap) { + exports.commands.addCommand({ + name: "emmet:" + command, + action: command, + bindKey: keymap[command], + exec: exports.runEmmetCommand, + multiSelectAction: "forEach" + }); +} + +exports.updateCommands = function(editor, enabled) { + if (enabled) { + editor.keyBinding.addKeyboardHandler(exports.commands); + } else { + editor.keyBinding.removeKeyboardHandler(exports.commands); + } +}; + +exports.isSupportedMode = function(mode) { + if (!mode) return false; + if (mode.emmetConfig) return true; + var id = mode.$id || mode; + return /css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(id); +}; + +exports.isAvailable = function(editor, command) { + if (/(evaluate_math_expression|expand_abbreviation)$/.test(command)) + return true; + var mode = editor.session.$mode; + var isSupported = exports.isSupportedMode(mode); + if (isSupported && mode.$modes) { + // TODO refactor mode delegates to make this simpler + try { + editorProxy.setupContext(editor); + if (/^(js|php)/.test(editorProxy.getSyntax())) + isSupported = false; + } catch(e) {} + } + return isSupported; +}; + +var onChangeMode = function(e, target) { + var editor = target; + if (!editor) + return; + var enabled = exports.isSupportedMode(editor.session.$mode); + if (e.enableEmmet === false) + enabled = false; + if (enabled) + load(); + exports.updateCommands(editor, enabled); +}; + +var load = function(cb) { + if (typeof emmetPath == "string") { + require("ace/config").loadModule(emmetPath, function() { + emmetPath = null; + cb && cb(); + }); + } +}; + +exports.AceEmmetEditor = AceEmmetEditor; +require("ace/config").defineOptions(Editor.prototype, "editor", { + enableEmmet: { + set: function(val) { + this[val ? "on" : "removeListener"]("changeMode", onChangeMode); + onChangeMode({enableEmmet: !!val}, this); + }, + value: true + } +}); + +exports.setCore = function(e) { + if (typeof e == "string") + emmetPath = e; + else + emmet = e; +}; +}); + diff --git a/plugins/node_modules/ace/lib/ace/ext/error_marker.js b/plugins/node_modules/ace/lib/ace/ext/error_marker.js new file mode 100644 index 00000000..03baa119 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/error_marker.js @@ -0,0 +1,217 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var LineWidgets = require("../line_widgets").LineWidgets; +var dom = require("../lib/dom"); +var Range = require("../range").Range; + +function binarySearch(array, needle, comparator) { + var first = 0; + var last = array.length - 1; + + while (first <= last) { + var mid = (first + last) >> 1; + var c = comparator(needle, array[mid]); + if (c > 0) + first = mid + 1; + else if (c < 0) + last = mid - 1; + else + return mid; + } + + // Return the nearest lesser index, "-1" means "0, "-2" means "1", etc. + return -(first + 1); +} + +function findAnnotations(session, row, dir) { + var annotations = session.getAnnotations().sort(Range.comparePoints); + if (!annotations.length) + return; + + var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints); + if (i < 0) + i = -i - 1; + + if (i >= annotations.length) + i = dir > 0 ? 0 : annotations.length - 1; + else if (i === 0 && dir < 0) + i = annotations.length - 1; + + var annotation = annotations[i]; + if (!annotation || !dir) + return; + + if (annotation.row === row) { + do { + annotation = annotations[i += dir]; + } while (annotation && annotation.row === row); + if (!annotation) + return annotations.slice(); + } + + + var matched = []; + row = annotation.row; + do { + matched[dir < 0 ? "unshift" : "push"](annotation); + annotation = annotations[i += dir]; + } while (annotation && annotation.row == row); + return matched.length && matched; +} + +exports.showErrorMarker = function(editor, dir) { + var session = editor.session; + if (!session.widgetManager) { + session.widgetManager = new LineWidgets(session); + session.widgetManager.attach(editor); + } + + var pos = editor.getCursorPosition(); + var row = pos.row; + var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) { + return w.type == "errorMarker"; + })[0]; + if (oldWidget) { + oldWidget.destroy(); + } else { + row -= dir; + } + var annotations = findAnnotations(session, row, dir); + var gutterAnno; + if (annotations) { + var annotation = annotations[0]; + pos.column = (annotation.pos && typeof annotation.column != "number" + ? annotation.pos.sc + : annotation.column) || 0; + pos.row = annotation.row; + gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row]; + } else if (oldWidget) { + return; + } else { + gutterAnno = { + text: ["Looks good!"], + className: "ace_ok" + }; + } + editor.session.unfold(pos.row); + editor.selection.moveToPosition(pos); + + var w = { + row: pos.row, + fixedWidth: true, + coverGutter: true, + el: dom.createElement("div"), + type: "errorMarker" + }; + var el = w.el.appendChild(dom.createElement("div")); + var arrow = w.el.appendChild(dom.createElement("div")); + arrow.className = "error_widget_arrow " + gutterAnno.className; + + var left = editor.renderer.$cursorLayer + .getPixelPosition(pos).left; + arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px"; + + w.el.className = "error_widget_wrapper"; + el.className = "error_widget " + gutterAnno.className; + el.innerHTML = gutterAnno.text.join("
    "); + + el.appendChild(dom.createElement("div")); + + var kb = function(_, hashId, keyString) { + if (hashId === 0 && (keyString === "esc" || keyString === "return")) { + w.destroy(); + return {command: "null"}; + } + }; + + w.destroy = function() { + if (editor.$mouseHandler.isMousePressed) + return; + editor.keyBinding.removeKeyboardHandler(kb); + session.widgetManager.removeLineWidget(w); + editor.off("changeSelection", w.destroy); + editor.off("changeSession", w.destroy); + editor.off("mouseup", w.destroy); + editor.off("change", w.destroy); + }; + + editor.keyBinding.addKeyboardHandler(kb); + editor.on("changeSelection", w.destroy); + editor.on("changeSession", w.destroy); + editor.on("mouseup", w.destroy); + editor.on("change", w.destroy); + + editor.session.widgetManager.addLineWidget(w); + + w.el.onmousedown = editor.focus.bind(editor); + + editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight}); +}; + + +dom.importCssString("\ + .error_widget_wrapper {\ + background: inherit;\ + color: inherit;\ + border:none\ + }\ + .error_widget {\ + border-top: solid 2px;\ + border-bottom: solid 2px;\ + margin: 5px 0;\ + padding: 10px 40px;\ + white-space: pre-wrap;\ + }\ + .error_widget.ace_error, .error_widget_arrow.ace_error{\ + border-color: #ff5a5a\ + }\ + .error_widget.ace_warning, .error_widget_arrow.ace_warning{\ + border-color: #F1D817\ + }\ + .error_widget.ace_info, .error_widget_arrow.ace_info{\ + border-color: #5a5a5a\ + }\ + .error_widget.ace_ok, .error_widget_arrow.ace_ok{\ + border-color: #5aaa5a\ + }\ + .error_widget_arrow {\ + position: absolute;\ + border: solid 5px;\ + border-top-color: transparent!important;\ + border-right-color: transparent!important;\ + border-left-color: transparent!important;\ + top: -5px;\ + }\ +", ""); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/keybinding_menu.js b/plugins/node_modules/ace/lib/ace/ext/keybinding_menu.js new file mode 100644 index 00000000..38e578d8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/keybinding_menu.js @@ -0,0 +1,86 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +/*global define, require */ + +/** + * Show Keyboard Shortcuts + * @fileOverview Show Keyboard Shortcuts
    + * Generates a menu which displays the keyboard shortcuts. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { + "use strict"; + var Editor = require("ace/editor").Editor; + /** + * Generates a menu which displays the keyboard shortcuts. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {ace.Editor} editor An instance of the ace editor. + */ + function showKeyboardShortcuts (editor) { + // make sure the menu isn't open already. + if(!document.getElementById('kbshortcutmenu')) { + var overlayPage = require('./menu_tools/overlay_page').overlayPage; + var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts; + var kb = getEditorKeybordShortcuts(editor); + var el = document.createElement('div'); + var commands = kb.reduce(function(previous, current) { + return previous + '
    ' + + current.command + ' : ' + + '' + current.key + '
    '; + }, ''); + + el.id = 'kbshortcutmenu'; + el.innerHTML = '

    Keyboard Shortcuts

    ' + commands + ''; + overlayPage(editor, el, '0', '0', '0', null); + } + } + module.exports.init = function(editor) { + Editor.prototype.showKeyboardShortcuts = function() { + showKeyboardShortcuts(this); + }; + editor.commands.addCommands([{ + name: "showKeyboardShortcuts", + bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"}, + exec: function(editor, line) { + editor.showKeyboardShortcuts(); + } + }]); + }; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/language_tools.js b/plugins/node_modules/ace/lib/ace/ext/language_tools.js new file mode 100644 index 00000000..3de3d0cb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/language_tools.js @@ -0,0 +1,209 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var snippetManager = require("../snippets").snippetManager; +var Autocomplete = require("../autocomplete").Autocomplete; +var config = require("../config"); +var lang = require("../lib/lang"); +var util = require("../autocomplete/util"); + +var textCompleter = require("../autocomplete/text_completer"); +var keyWordCompleter = { + getCompletions: function(editor, session, pos, prefix, callback) { + if (session.$mode.completer) { + return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback); + } + var state = editor.session.getState(pos.row); + var completions = session.$mode.getCompletions(state, session, pos, prefix); + callback(null, completions); + } +}; + +var snippetCompleter = { + getCompletions: function(editor, session, pos, prefix, callback) { + var snippetMap = snippetManager.snippetMap; + var completions = []; + snippetManager.getActiveScopes(editor).forEach(function(scope) { + var snippets = snippetMap[scope] || []; + for (var i = snippets.length; i--;) { + var s = snippets[i]; + var caption = s.name || s.tabTrigger; + if (!caption) + continue; + completions.push({ + caption: caption, + snippet: s.content, + meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet", + type: "snippet" + }); + } + }, this); + callback(null, completions); + }, + getDocTooltip: function(item) { + if (item.type == "snippet" && !item.docHTML) { + item.docHTML = [ + "", lang.escapeHTML(item.caption), "", "
    ", + lang.escapeHTML(item.snippet) + ].join(""); + } + } +}; + +var completers = [snippetCompleter, textCompleter, keyWordCompleter]; +// Modifies list of default completers +exports.setCompleters = function(val) { + completers.length = 0; + if (val) completers.push.apply(completers, val); +}; +exports.addCompleter = function(completer) { + completers.push(completer); +}; + +// Exports existing completer so that user can construct his own set of completers. +exports.textCompleter = textCompleter; +exports.keyWordCompleter = keyWordCompleter; +exports.snippetCompleter = snippetCompleter; + +var expandSnippet = { + name: "expandSnippet", + exec: function(editor) { + return snippetManager.expandWithTab(editor); + }, + bindKey: "Tab" +}; + +var onChangeMode = function(e, editor) { + loadSnippetsForMode(editor.session.$mode); +}; + +var loadSnippetsForMode = function(mode) { + var id = mode.$id; + if (!snippetManager.files) + snippetManager.files = {}; + loadSnippetFile(id); + if (mode.modes) + mode.modes.forEach(loadSnippetsForMode); +}; + +var loadSnippetFile = function(id) { + if (!id || snippetManager.files[id]) + return; + var snippetFilePath = id.replace("mode", "snippets"); + snippetManager.files[id] = {}; + config.loadModule(snippetFilePath, function(m) { + if (m) { + snippetManager.files[id] = m; + if (!m.snippets && m.snippetText) + m.snippets = snippetManager.parseSnippetFile(m.snippetText); + snippetManager.register(m.snippets || [], m.scope); + if (m.includeScopes) { + snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes; + m.includeScopes.forEach(function(x) { + loadSnippetFile("ace/mode/" + x); + }); + } + } + }); +}; + +var doLiveAutocomplete = function(e) { + var editor = e.editor; + var hasCompleter = editor.completer && editor.completer.activated; + + // We don't want to autocomplete with no prefix + if (e.command.name === "backspace") { + if (hasCompleter && !util.getCompletionPrefix(editor)) + editor.completer.detach(); + } + else if (e.command.name === "insertstring") { + var prefix = util.getCompletionPrefix(editor); + // Only autocomplete if there's a prefix that can be matched + if (prefix && !hasCompleter) { + if (!editor.completer) { + // Create new autocompleter + editor.completer = new Autocomplete(); + } + // Disable autoInsert + editor.completer.autoInsert = false; + editor.completer.showPopup(editor); + } + } +}; + +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + enableBasicAutocompletion: { + set: function(val) { + if (val) { + if (!this.completers) + this.completers = Array.isArray(val)? val: completers; + this.commands.addCommand(Autocomplete.startCommand); + } else { + this.commands.removeCommand(Autocomplete.startCommand); + } + }, + value: false + }, + /** + * Enable live autocomplete. If the value is an array, it is assumed to be an array of completers + * and will use them instead of the default completers. + */ + enableLiveAutocompletion: { + set: function(val) { + if (val) { + if (!this.completers) + this.completers = Array.isArray(val)? val: completers; + // On each change automatically trigger the autocomplete + this.commands.on('afterExec', doLiveAutocomplete); + } else { + this.commands.removeListener('afterExec', doLiveAutocomplete); + } + }, + value: false + }, + enableSnippets: { + set: function(val) { + if (val) { + this.commands.addCommand(expandSnippet); + this.on("changeMode", onChangeMode); + onChangeMode(null, this); + } else { + this.commands.removeCommand(expandSnippet); + this.off("changeMode", onChangeMode); + } + }, + value: false + } +}); +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/linking.js b/plugins/node_modules/ace/lib/ace/ext/linking.js new file mode 100644 index 00000000..836f9f6f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/linking.js @@ -0,0 +1,87 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var Editor = require("ace/editor").Editor; + +require("../config").defineOptions(Editor.prototype, "editor", { + enableLinking: { + set: function(val) { + if (val) { + this.on("click", onClick); + this.on("mousemove", onMouseMove); + } else { + this.off("click", onClick); + this.off("mousemove", onMouseMove); + } + }, + value: false + } +}); + +exports.previousLinkingHover = false; + +function onMouseMove(e) { + var editor = e.editor; + var ctrl = e.getAccelKey(); + + if (ctrl) { + var editor = e.editor; + var docPos = e.getDocumentPosition(); + var session = editor.session; + var token = session.getTokenAt(docPos.row, docPos.column); + + if (exports.previousLinkingHover && exports.previousLinkingHover != token) { + editor._emit("linkHoverOut"); + } + editor._emit("linkHover", {position: docPos, token: token}); + exports.previousLinkingHover = token; + } else if (exports.previousLinkingHover) { + editor._emit("linkHoverOut"); + exports.previousLinkingHover = false; + } +} + +function onClick(e) { + var ctrl = e.getAccelKey(); + var button = e.getButton(); + + if (button == 0 && ctrl) { + var editor = e.editor; + var docPos = e.getDocumentPosition(); + var session = editor.session; + var token = session.getTokenAt(docPos.row, docPos.column); + + editor._emit("linkClick", {position: docPos, token: token}); + } +} + +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/menu_tools/add_editor_menu_options.js b/plugins/node_modules/ace/lib/ace/ext/menu_tools/add_editor_menu_options.js new file mode 100644 index 00000000..eb90e31d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/menu_tools/add_editor_menu_options.js @@ -0,0 +1,109 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +/*global define, require */ + +/** + * Add Editor Menu Options + * @fileOverview Add Editor Menu Options
    + * The menu options property needs to be added to the editor + * so that the settings menu can know about options for + * selection elements and track which option is selected. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { +'use strict'; + +/** + * The menu options property needs to be added to the editor + * so that the settings menu can know about options for + * selection elements and track which option is selected. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {ace.Editor} editor An instance of the ace editor. + */ +module.exports.addEditorMenuOptions = function addEditorMenuOptions (editor) { + var modelist = require('../modelist'); + var themelist = require('../themelist'); + editor.menuOptions = { + setNewLineMode: [{ + textContent: "unix", + value: "unix" + }, { + textContent: "windows", + value: "windows" + }, { + textContent: "auto", + value: "auto" + }], + setTheme: [], + setMode: [], + setKeyboardHandler: [{ + textContent: "ace", + value: "" + }, { + textContent: "vim", + value: "ace/keyboard/vim" + }, { + textContent: "emacs", + value: "ace/keyboard/emacs" + }, { + textContent: "textarea", + value: "ace/keyboard/textarea" + }, { + textContent: "sublime", + value: "ace/keyboard/sublime" + }] + }; + + editor.menuOptions.setTheme = themelist.themes.map(function(theme) { + return { + textContent: theme.caption, + value: theme.theme + }; + }); + + editor.menuOptions.setMode = modelist.modes.map(function(mode) { + return { + textContent: mode.name, + value: mode.mode + }; + }); +}; + + +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/menu_tools/element_generator.js b/plugins/node_modules/ace/lib/ace/ext/menu_tools/element_generator.js new file mode 100644 index 00000000..ec6ba93b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/menu_tools/element_generator.js @@ -0,0 +1,148 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +/*global define, require */ + +/** + * Element Generator + * @fileOverview Element Generator
    + * Contains methods for generating elements. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { +'use strict'; +/** + * Creates a DOM option element + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {object} obj An object containing properties to add to the dom + * element. If one of those properties is named `selected` then it will be + * added as an attribute on the element instead. + */ +module.exports.createOption = function createOption (obj) { + var attribute; + var el = document.createElement('option'); + for(attribute in obj) { + if(obj.hasOwnProperty(attribute)) { + if(attribute === 'selected') { + el.setAttribute(attribute, obj[attribute]); + } else { + el[attribute] = obj[attribute]; + } + } + } + return el; +}; +/** + * Creates a DOM checkbox element. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {string} id The id of the element. + * @param {boolean} checked Whether or not the element is checked. + * @param {string} clss The class of the element. + * @returns {DOMElement} Returns a checkbox element reference. + */ +module.exports.createCheckbox = function createCheckbox (id, checked, clss) { + var el = document.createElement('input'); + el.setAttribute('type', 'checkbox'); + el.setAttribute('id', id); + el.setAttribute('name', id); + el.setAttribute('value', checked); + el.setAttribute('class', clss); + if(checked) { + el.setAttribute('checked', 'checked'); + } + return el; +}; +/** + * Creates a DOM text input element. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {string} id The id of the element. + * @param {string} value The default value of the input element. + * @param {string} clss The class of the element. + * @returns {DOMElement} Returns an input element reference. + */ +module.exports.createInput = function createInput (id, value, clss) { + var el = document.createElement('input'); + el.setAttribute('type', 'text'); + el.setAttribute('id', id); + el.setAttribute('name', id); + el.setAttribute('value', value); + el.setAttribute('class', clss); + return el; +}; +/** + * Creates a DOM label element. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {string} text The label text. + * @param {string} labelFor The id of the element being labeled. + * @returns {DOMElement} Returns a label element reference. + */ +module.exports.createLabel = function createLabel (text, labelFor) { + var el = document.createElement('label'); + el.setAttribute('for', labelFor); + el.textContent = text; + return el; +}; +/** + * Creates a DOM selection element. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {string} id The id of the element. + * @param {string} values An array of objects suitable for `createOption` + * @param {string} clss The class of the element. + * @returns {DOMElement} Returns a selection element reference. + * @see ace/ext/element_generator.createOption + */ +module.exports.createSelection = function createSelection (id, values, clss) { + var el = document.createElement('select'); + el.setAttribute('id', id); + el.setAttribute('name', id); + el.setAttribute('class', clss); + values.forEach(function(item) { + el.appendChild(module.exports.createOption(item)); + }); + return el; +}; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/menu_tools/generate_settings_menu.js b/plugins/node_modules/ace/lib/ace/ext/menu_tools/generate_settings_menu.js new file mode 100644 index 00000000..a15c26dd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/menu_tools/generate_settings_menu.js @@ -0,0 +1,264 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +/*global define*/ + +/** + * Generates the settings menu + * @fileOverview Generates the settings menu. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { +'use strict'; +var egen = require('./element_generator'); +var addEditorMenuOptions = require('./add_editor_menu_options').addEditorMenuOptions; +var getSetFunctions = require('./get_set_functions').getSetFunctions; + +/** + * Generates an interactive menu with settings useful to end users. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {ace.Editor} editor An instance of the ace editor. + */ +module.exports.generateSettingsMenu = function generateSettingsMenu (editor) { + /** + * container for dom elements that will go in the menu. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + var elements = []; + /** + * Sorts the menu entries (elements var) so they'll appear in alphabetical order + * the sort is performed based on the value of the contains property + * of each element. Since this is an `array.sort` the array is sorted + * in place. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + function cleanupElementsList() { + elements.sort(function(a, b) { + var x = a.getAttribute('contains'); + var y = b.getAttribute('contains'); + return x.localeCompare(y); + }); + } + /** + * Wraps all dom elements contained in the elements var with a single + * div. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + function wrapElements() { + var topmenu = document.createElement('div'); + topmenu.setAttribute('id', 'ace_settingsmenu'); + elements.forEach(function(element) { + topmenu.appendChild(element); + }); + + var el = topmenu.appendChild(document.createElement('div')); + var version = require("../../ace").version; + el.style.padding = "1em"; + el.textContent = "Ace version " + version; + + return topmenu; + } + /** + * Creates a new menu entry. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {object} obj This is a reference to the object containing the + * set function. It is used to set up event listeners for when the + * menu options change. + * @param {string} clss Maps to the class of the dom element. This is + * the name of the object containing the set function e.g. `editor`, + * `session`, `renderer`. + * @param {string} item This is the set function name. It maps to the + * id of the dom element (check, select, input) and to the "contains" + * attribute of the div holding both the element and its label. + * @param {mixed} val This is the value of the setting. It is mapped to + * the dom element's value, checked, or selected option accordingly. + */ + function createNewEntry(obj, clss, item, val) { + var el; + var div = document.createElement('div'); + div.setAttribute('contains', item); + div.setAttribute('class', 'ace_optionsMenuEntry'); + div.setAttribute('style', 'clear: both;'); + + div.appendChild(egen.createLabel( + item.replace(/^set/, '').replace(/([A-Z])/g, ' $1').trim(), + item + )); + + if (Array.isArray(val)) { + el = egen.createSelection(item, val, clss); + el.addEventListener('change', function(e) { + try{ + editor.menuOptions[e.target.id].forEach(function(x) { + if(x.textContent !== e.target.textContent) { + delete x.selected; + } + }); + obj[e.target.id](e.target.value); + } catch (err) { + throw new Error(err); + } + }); + } else if(typeof val === 'boolean') { + el = egen.createCheckbox(item, val, clss); + el.addEventListener('change', function(e) { + try{ + // renderer['setHighlightGutterLine'](true); + obj[e.target.id](!!e.target.checked); + } catch (err) { + throw new Error(err); + } + }); + } else { + // this aids in giving the ability to specify settings through + // post and get requests. + // /ace_editor.html?setMode=ace/mode/html&setOverwrite=true + el = egen.createInput(item, val, clss); + el.addEventListener('change', function(e) { + try{ + if(e.target.value === 'true') { + obj[e.target.id](true); + } else if(e.target.value === 'false') { + obj[e.target.id](false); + } else { + obj[e.target.id](e.target.value); + } + } catch (err) { + throw new Error(err); + } + }); + } + el.style.cssText = 'float:right;'; + div.appendChild(el); + return div; + } + /** + * Generates selection fields for the menu and populates their options + * using information from `editor.menuOptions` + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {string} item The set function name. + * @param {object} esr A reference to the object having the set function. + * @param {string} clss The name of the object containing the set function. + * @param {string} fn The matching get function's function name. + * @returns {DOMElement} Returns a dom element containing a selection + * element populated with options. The option whose value matches that + * returned from `esr[fn]()` will be selected. + */ + function makeDropdown(item, esr, clss, fn) { + var val = editor.menuOptions[item]; + var currentVal = esr[fn](); + if (typeof currentVal == 'object') + currentVal = currentVal.$id; + val.forEach(function(valuex) { + if (valuex.value === currentVal) + valuex.selected = 'selected'; + }); + return createNewEntry(esr, clss, item, val); + } + /** + * Processes the set functions returned from `getSetFunctions`. First it + * checks for menu options defined in `editor.menuOptions`. If no + * options are specified then it checks whether there is a get function + * (replace set with get) for the setting. When either of those + * conditions are met it will attempt to create a new entry for the + * settings menu and push it into the elements array defined above. + * It can only do so for get functions which return + * strings, numbers, and booleans. A special case is written in for + * `getMode` where it looks at the returned objects `$id` property and + * forwards that through instead. Other special cases could be written + * in but that would get a bit ridiculous. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {object} setObj An item from the array returned by + * `getSetFunctions`. + */ + function handleSet(setObj) { + var item = setObj.functionName; + var esr = setObj.parentObj; + var clss = setObj.parentName; + var val; + var fn = item.replace(/^set/, 'get'); + if(editor.menuOptions[item] !== undefined) { + // has options for select element + elements.push(makeDropdown(item, esr, clss, fn)); + } else if(typeof esr[fn] === 'function') { + // has get function + try { + val = esr[fn](); + if(typeof val === 'object') { + // setMode takes a string, getMode returns an object + // the $id property of that object is the string + // which may be given to setMode... + val = val.$id; + } + // the rest of the get functions return strings, + // booleans, or numbers. + elements.push( + createNewEntry(esr, clss, item, val) + ); + } catch (e) { + // if there are errors it is because the element + // does not belong in the settings menu + } + } + } + addEditorMenuOptions(editor); + // gather the set functions + getSetFunctions(editor).forEach(function(setObj) { + // populate the elements array with good stuff. + handleSet(setObj); + }); + // sort the menu entries in the elements list so people can find + // the settings in alphabetical order. + cleanupElementsList(); + // dump the entries from the elements list and wrap them up in a div + return wrapElements(); +}; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js b/plugins/node_modules/ace/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js new file mode 100644 index 00000000..c3f7a627 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js @@ -0,0 +1,91 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +/*global define, require */ + +/** + * Get Editor Keyboard Shortcuts + * @fileOverview Get Editor Keyboard Shortcuts
    + * Gets a map of keyboard shortcuts to command names for the current platform. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { +"use strict"; +var keys = require("../../lib/keys"); + +/** + * Gets a map of keyboard shortcuts to command names for the current platform. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {ace.Editor} editor An editor instance. + * @returns {Array} Returns an array of objects representing the keyboard + * shortcuts for the given editor. + * @example + * var getKbShortcuts = require('./get_keyboard_shortcuts'); + * console.log(getKbShortcuts(editor)); + * // [ + * // {'command' : aCommand, 'key' : 'Control-d'}, + * // {'command' : aCommand, 'key' : 'Control-d'} + * // ] + */ +module.exports.getEditorKeybordShortcuts = function(editor) { + var KEY_MODS = keys.KEY_MODS; + var keybindings = []; + var commandMap = {}; + editor.keyBinding.$handlers.forEach(function(handler) { + var ckb = handler.commandKeyBinding; + for (var i in ckb) { + var key = i.replace(/(^|-)\w/g, function(x) { return x.toUpperCase(); }); + var commands = ckb[i]; + if (!Array.isArray(commands)) + commands = [commands]; + commands.forEach(function(command) { + if (typeof command != "string") + command = command.name; + if (commandMap[command]) { + commandMap[command].key += "|" + key; + } else { + commandMap[command] = {key: key, command: command}; + keybindings.push(commandMap[command]); + } + }); + } + }); + return keybindings; +}; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/menu_tools/get_set_functions.js b/plugins/node_modules/ace/lib/ace/ext/menu_tools/get_set_functions.js new file mode 100644 index 00000000..4cd65508 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/menu_tools/get_set_functions.js @@ -0,0 +1,141 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true */ +/*global define*/ + +/** + * Get Set Functions + * @fileOverview Get Set Functions
    + * Gets various functions for setting settings. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { +'use strict'; +/** + * Generates a list of set functions for the settings menu. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {object} editor The editor instance + * @return {array} Returns an array of objects. Each object contains the + * following properties: functionName, parentObj, and parentName. The + * function name will be the name of a method beginning with the string + * `set` which was found. The parent object will be a reference to the + * object having the method matching the function name. The parent name + * will be a string representing the identifier of the parent object e.g. + * `editor`, `session`, or `renderer`. + */ +module.exports.getSetFunctions = function getSetFunctions (editor) { + /** + * Output array. Will hold the objects described above. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + var out = []; + /** + * This object provides a map between the objects which will be + * traversed and the parent name which will appear in the output. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + var my = { + 'editor' : editor, + 'session' : editor.session, + 'renderer' : editor.renderer + }; + /** + * This array will hold the set function names which have already been + * found so that they are not added to the output multiple times. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + var opts = []; + /** + * This is a list of set functions which will not appear in the settings + * menu. I don't know what to do with setKeyboardHandler. When I tried + * to use it, it didn't appear to be working. Someone who knows better + * could remove it from this list and add it's options to + * add_editor_menu_options.js + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + var skip = [ + 'setOption', + 'setUndoManager', + 'setDocument', + 'setValue', + 'setBreakpoints', + 'setScrollTop', + 'setScrollLeft', + 'setSelectionStyle', + 'setWrapLimitRange' + ]; + + + /** + * This will search the objects mapped to the `my` variable above. When + * it finds a set function in the object that is not listed in the + * `skip` list or the `opts` list it will push a new object to the + * output array. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + ['renderer', 'session', 'editor'].forEach(function(esra) { + var esr = my[esra]; + var clss = esra; + for(var fn in esr) { + if(skip.indexOf(fn) === -1) { + if(/^set/.test(fn) && opts.indexOf(fn) === -1) { + // found set function + opts.push(fn); + out.push({ + 'functionName' : fn, + 'parentObj' : esr, + 'parentName' : clss + }); + } + } + } + }); + return out; +}; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/menu_tools/overlay_page.js b/plugins/node_modules/ace/lib/ace/ext/menu_tools/overlay_page.js new file mode 100644 index 00000000..bf985e29 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/menu_tools/overlay_page.js @@ -0,0 +1,116 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +/*global define, require */ + +/** + * Overlay Page + * @fileOverview Overlay Page
    + * Generates an overlay for displaying menus. The overlay is an absolutely + * positioned div. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { +'use strict'; +var dom = require("../../lib/dom"); +var cssText = require("../../requirejs/text!./settings_menu.css"); +dom.importCssString(cssText); + +/** + * Generates an overlay for displaying menus. The overlay is an absolutely + * positioned div. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {DOMElement} contentElement Any element which may be presented inside + * a div. + * @param {string|number} top absolute position value. + * @param {string|number} right absolute position value. + * @param {string|number} bottom absolute position value. + * @param {string|number} left absolute position value. + */ +module.exports.overlayPage = function overlayPage(editor, contentElement, top, right, bottom, left) { + top = top ? 'top: ' + top + ';' : ''; + bottom = bottom ? 'bottom: ' + bottom + ';' : ''; + right = right ? 'right: ' + right + ';' : ''; + left = left ? 'left: ' + left + ';' : ''; + + var closer = document.createElement('div'); + var contentContainer = document.createElement('div'); + + function documentEscListener(e) { + if (e.keyCode === 27) { + closer.click(); + } + } + + closer.style.cssText = 'margin: 0; padding: 0; ' + + 'position: fixed; top:0; bottom:0; left:0; right:0;' + + 'z-index: 9990; ' + + 'background-color: rgba(0, 0, 0, 0.3);'; + closer.addEventListener('click', function() { + document.removeEventListener('keydown', documentEscListener); + closer.parentNode.removeChild(closer); + editor.focus(); + closer = null; + }); + // click closer if esc key is pressed + document.addEventListener('keydown', documentEscListener); + + contentContainer.style.cssText = top + right + bottom + left; + contentContainer.addEventListener('click', function(e) { + e.stopPropagation(); + }); + + var wrapper = dom.createElement("div"); + wrapper.style.position = "relative"; + + var closeButton = dom.createElement("div"); + closeButton.className = "ace_closeButton"; + closeButton.addEventListener('click', function() { + closer.click(); + }); + + wrapper.appendChild(closeButton); + contentContainer.appendChild(wrapper); + + contentContainer.appendChild(contentElement); + closer.appendChild(contentContainer); + document.body.appendChild(closer); + editor.blur(); +}; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/menu_tools/settings_menu.css b/plugins/node_modules/ace/lib/ace/ext/menu_tools/settings_menu.css new file mode 100644 index 00000000..f8b761ce --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/menu_tools/settings_menu.css @@ -0,0 +1,48 @@ +#ace_settingsmenu, #kbshortcutmenu { + background-color: #F7F7F7; + color: black; + box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55); + padding: 1em 0.5em 2em 1em; + overflow: auto; + position: absolute; + margin: 0; + bottom: 0; + right: 0; + top: 0; + z-index: 9991; + cursor: default; +} + +.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu { + box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25); + background-color: rgba(255, 255, 255, 0.6); + color: black; +} + +.ace_optionsMenuEntry:hover { + background-color: rgba(100, 100, 100, 0.1); + -webkit-transition: all 0.5s; + transition: all 0.3s +} + +.ace_closeButton { + background: rgba(245, 146, 146, 0.5); + border: 1px solid #F48A8A; + border-radius: 50%; + padding: 7px; + position: absolute; + right: -8px; + top: -8px; + z-index: 1000; +} +.ace_closeButton{ + background: rgba(245, 146, 146, 0.9); +} +.ace_optionsMenuKey { + color: darkslateblue; + font-weight: bold; +} +.ace_optionsMenuCommand { + color: darkcyan; + font-weight: normal; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/modelist.js b/plugins/node_modules/ace/lib/ace/ext/modelist.js new file mode 100644 index 00000000..845c0917 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/modelist.js @@ -0,0 +1,221 @@ +define(function(require, exports, module) { +"use strict"; + +var modes = []; +/** + * Suggests a mode based on the file extension present in the given path + * @param {string} path The path to the file + * @returns {object} Returns an object containing information about the + * suggested mode. + */ +function getModeForPath(path) { + var mode = modesByName.text; + var fileName = path.split(/[\/\\]/).pop(); + for (var i = 0; i < modes.length; i++) { + if (modes[i].supportsFile(fileName)) { + mode = modes[i]; + break; + } + } + return mode; +} + +var Mode = function(name, caption, extensions) { + this.name = name; + this.caption = caption; + this.mode = "ace/mode/" + name; + this.extensions = extensions; + var re; + if (/\^/.test(extensions)) { + re = extensions.replace(/\|(\^)?/g, function(a, b){ + return "$|" + (b ? "^" : "^.*\\."); + }) + "$"; + } else { + re = "^.*\\.(" + extensions + ")$"; + } + + this.extRe = new RegExp(re, "gi"); +}; + +Mode.prototype.supportsFile = function(filename) { + return filename.match(this.extRe); +}; + +// todo firstlinematch +var supportedModes = { + ABAP: ["abap"], + ABC: ["abc"], + ActionScript:["as"], + ADA: ["ada|adb"], + Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], + AsciiDoc: ["asciidoc|adoc"], + Assembly_x86:["asm|a"], + AutoHotKey: ["ahk"], + BatchFile: ["bat|cmd"], + Bro: ["bro"], + C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], + C9Search: ["c9search_results"], + Cirru: ["cirru|cr"], + Clojure: ["clj|cljs"], + Cobol: ["CBL|COB"], + coffee: ["coffee|cf|cson|^Cakefile"], + ColdFusion: ["cfm"], + CSharp: ["cs"], + Csound_Document: ["csd"], + Csound_Orchestra: ["orc"], + Csound_Score: ["sco"], + CSS: ["css"], + Curly: ["curly"], + D: ["d|di"], + Dart: ["dart"], + Diff: ["diff|patch"], + Dockerfile: ["^Dockerfile"], + Dot: ["dot"], + Drools: ["drl"], + Eiffel: ["e|ge"], + EJS: ["ejs"], + Elixir: ["ex|exs"], + Elm: ["elm"], + Erlang: ["erl|hrl"], + Forth: ["frt|fs|ldr|fth|4th"], + Fortran: ["f|f90"], + FTL: ["ftl"], + Gcode: ["gcode"], + Gherkin: ["feature"], + Gitignore: ["^.gitignore"], + Glsl: ["glsl|frag|vert"], + Gobstones: ["gbs"], + golang: ["go"], + GraphQLSchema: ["gql"], + Groovy: ["groovy"], + HAML: ["haml"], + Handlebars: ["hbs|handlebars|tpl|mustache"], + Haskell: ["hs"], + Haskell_Cabal: ["cabal"], + haXe: ["hx"], + Hjson: ["hjson"], + HTML: ["html|htm|xhtml|vue|we|wpy"], + HTML_Elixir: ["eex|html.eex"], + HTML_Ruby: ["erb|rhtml|html.erb"], + INI: ["ini|conf|cfg|prefs"], + Io: ["io"], + Jack: ["jack"], + Jade: ["jade|pug"], + Java: ["java"], + JavaScript: ["js|jsm|jsx"], + JSON: ["json"], + JSONiq: ["jq"], + JSP: ["jsp"], + JSSM: ["jssm|jssm_state"], + JSX: ["jsx"], + Julia: ["jl"], + Kotlin: ["kt|kts"], + LaTeX: ["tex|latex|ltx|bib"], + LESS: ["less"], + Liquid: ["liquid"], + Lisp: ["lisp"], + LiveScript: ["ls"], + LogiQL: ["logic|lql"], + LSL: ["lsl"], + Lua: ["lua"], + LuaPage: ["lp"], + Lucene: ["lucene"], + Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], + Markdown: ["md|markdown"], + Mask: ["mask"], + MATLAB: ["matlab"], + Maze: ["mz"], + MEL: ["mel"], + MIXAL: ["mixal"], + MUSHCode: ["mc|mush"], + MySQL: ["mysql"], + Nix: ["nix"], + NSIS: ["nsi|nsh"], + ObjectiveC: ["m|mm"], + OCaml: ["ml|mli"], + Pascal: ["pas|p"], + Perl: ["pl|pm"], + pgSQL: ["pgsql"], + PHP: ["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], + Pig: ["pig"], + Powershell: ["ps1"], + Praat: ["praat|praatscript|psc|proc"], + Prolog: ["plg|prolog"], + Properties: ["properties"], + Protobuf: ["proto"], + Python: ["py"], + R: ["r"], + Razor: ["cshtml|asp"], + RDoc: ["Rd"], + Red: ["red|reds"], + RHTML: ["Rhtml"], + RST: ["rst"], + Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], + Rust: ["rs"], + SASS: ["sass"], + SCAD: ["scad"], + Scala: ["scala"], + Scheme: ["scm|sm|rkt|oak|scheme"], + SCSS: ["scss"], + SH: ["sh|bash|^.bashrc"], + SJS: ["sjs"], + Smarty: ["smarty|tpl"], + snippets: ["snippets"], + Soy_Template:["soy"], + Space: ["space"], + SQL: ["sql"], + SQLServer: ["sqlserver"], + Stylus: ["styl|stylus"], + SVG: ["svg"], + Swift: ["swift"], + Tcl: ["tcl"], + Tex: ["tex"], + Text: ["txt"], + Textile: ["textile"], + Toml: ["toml"], + TSX: ["tsx"], + Twig: ["twig|swig"], + Typescript: ["ts|typescript|str"], + Vala: ["vala"], + VBScript: ["vbs|vb"], + Velocity: ["vm"], + Verilog: ["v|vh|sv|svh"], + VHDL: ["vhd|vhdl"], + Wollok: ["wlk|wpgm|wtest"], + XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], + XQuery: ["xq"], + YAML: ["yaml|yml"], + // Add the missing mode "Django" to ext-modelist + Django: ["html"] +}; + +var nameOverrides = { + ObjectiveC: "Objective-C", + CSharp: "C#", + golang: "Go", + C_Cpp: "C and C++", + Csound_Document: "Csound Document", + Csound_Orchestra: "Csound", + Csound_Score: "Csound Score", + coffee: "CoffeeScript", + HTML_Ruby: "HTML (Ruby)", + HTML_Elixir: "HTML (Elixir)", + FTL: "FreeMarker" +}; +var modesByName = {}; +for (var name in supportedModes) { + var data = supportedModes[name]; + var displayName = (nameOverrides[name] || name).replace(/_/g, " "); + var filename = name.toLowerCase(); + var mode = new Mode(filename, displayName, data[0]); + modesByName[filename] = mode; + modes.push(mode); +} + +module.exports = { + getModeForPath: getModeForPath, + modes: modes, + modesByName: modesByName +}; + +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/searchbox.css b/plugins/node_modules/ace/lib/ace/ext/searchbox.css new file mode 100644 index 00000000..0bdf8cf4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/searchbox.css @@ -0,0 +1,162 @@ + + +/* ------------------------------------------------------------------------------------------ + * Editor Search Form + * --------------------------------------------------------------------------------------- */ +.ace_search { + background-color: #ddd; + color: #666; + border: 1px solid #cbcbcb; + border-top: 0 none; + overflow: hidden; + margin: 0; + padding: 4px 6px 0 4px; + position: absolute; + top: 0; + z-index: 99; + white-space: normal; +} +.ace_search.left { + border-left: 0 none; + border-radius: 0px 0px 5px 0px; + left: 0; +} +.ace_search.right { + border-radius: 0px 0px 0px 5px; + border-right: 0 none; + right: 0; +} + +.ace_search_form, .ace_replace_form { + margin: 0 20px 4px 0; + overflow: hidden; + line-height: 1.9; +} +.ace_replace_form { + margin-right: 0; +} +.ace_search_form.ace_nomatch { + outline: 1px solid red; +} + +.ace_search_field { + border-radius: 3px 0 0 3px; + background-color: white; + color: black; + border: 1px solid #cbcbcb; + border-right: 0 none; + box-sizing: border-box!important; + outline: 0; + padding: 0; + font-size: inherit; + margin: 0; + line-height: inherit; + padding: 0 6px; + min-width: 17em; + vertical-align: top; +} +.ace_searchbtn { + border: 1px solid #cbcbcb; + line-height: inherit; + display: inline-block; + padding: 0 6px; + background: #fff; + border-right: 0 none; + border-left: 1px solid #dcdcdc; + cursor: pointer; + margin: 0; + position: relative; + box-sizing: content-box!important; + color: #666; +} +.ace_searchbtn:last-child { + border-radius: 0 3px 3px 0; + border-right: 1px solid #cbcbcb; +} +.ace_searchbtn:disabled { + background: none; + cursor: default; +} +.ace_searchbtn:hover { + background-color: #eef1f6; +} +.ace_searchbtn.prev, .ace_searchbtn.next { + padding: 0px 0.7em +} +.ace_searchbtn.prev:after, .ace_searchbtn.next:after { + content: ""; + border: solid 2px #888; + width: 0.5em; + height: 0.5em; + border-width: 2px 0 0 2px; + display:inline-block; + transform: rotate(-45deg); +} +.ace_searchbtn.next:after { + border-width: 0 2px 2px 0 ; +} +.ace_searchbtn_close { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; + border-radius: 50%; + border: 0 none; + color: #656565; + cursor: pointer; + font: 16px/16px Arial; + padding: 0; + height: 14px; + width: 14px; + top: 9px; + right: 7px; + position: absolute; +} +.ace_searchbtn_close:hover { + background-color: #656565; + background-position: 50% 100%; + color: white; +} + +.ace_button { + margin-left: 2px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -o-user-select: none; + -ms-user-select: none; + user-select: none; + overflow: hidden; + opacity: 0.7; + border: 1px solid rgba(100,100,100,0.23); + padding: 1px; + box-sizing: border-box!important; + color: black; +} + +.ace_button:hover { + background-color: #eee; + opacity:1; +} +.ace_button:active { + background-color: #ddd; +} + +.ace_button.checked { + border-color: #3399ff; + opacity:1; +} + +.ace_search_options{ + margin-bottom: 3px; + text-align: right; + -webkit-user-select: none; + -moz-user-select: none; + -o-user-select: none; + -ms-user-select: none; + user-select: none; + clear: both; +} + +.ace_search_counter { + float: left; + font-family: arial; + padding: 0 8px; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/searchbox.js b/plugins/node_modules/ace/lib/ace/ext/searchbox.js new file mode 100644 index 00000000..854bc238 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/searchbox.js @@ -0,0 +1,399 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var event = require("../lib/event"); +var searchboxCss = require("../requirejs/text!./searchbox.css"); +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var keyUtil = require("../lib/keys"); + +var MAX_COUNT = 999; + +dom.importCssString(searchboxCss, "ace_searchbox"); + +var html = ''.replace(/> +/g, ">"); + +var SearchBox = function(editor, range, showReplaceForm) { + var div = dom.createElement("div"); + div.innerHTML = html; + this.element = div.firstChild; + + this.setSession = this.setSession.bind(this); + + this.$init(); + this.setEditor(editor); +}; + +(function() { + this.setEditor = function(editor) { + editor.searchBox = this; + editor.renderer.scroller.appendChild(this.element); + this.editor = editor; + }; + + this.setSession = function(e) { + this.searchRange = null; + this.$syncOptions(true); + }; + + this.$initElements = function(sb) { + this.searchBox = sb.querySelector(".ace_search_form"); + this.replaceBox = sb.querySelector(".ace_replace_form"); + this.searchOption = sb.querySelector("[action=searchInSelection]"); + this.replaceOption = sb.querySelector("[action=toggleReplace]"); + this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); + this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); + this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); + this.searchInput = this.searchBox.querySelector(".ace_search_field"); + this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); + this.searchCounter = sb.querySelector(".ace_search_counter"); + }; + + this.$init = function() { + var sb = this.element; + + this.$initElements(sb); + + var _this = this; + event.addListener(sb, "mousedown", function(e) { + setTimeout(function(){ + _this.activeInput.focus(); + }, 0); + event.stopPropagation(e); + }); + event.addListener(sb, "click", function(e) { + var t = e.target || e.srcElement; + var action = t.getAttribute("action"); + if (action && _this[action]) + _this[action](); + else if (_this.$searchBarKb.commands[action]) + _this.$searchBarKb.commands[action].exec(_this); + event.stopPropagation(e); + }); + + event.addCommandKeyListener(sb, function(e, hashId, keyCode) { + var keyString = keyUtil.keyCodeToString(keyCode); + var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); + if (command && command.exec) { + command.exec(_this); + event.stopEvent(e); + } + }); + + this.$onChange = lang.delayedCall(function() { + _this.find(false, false); + }); + + event.addListener(this.searchInput, "input", function() { + _this.$onChange.schedule(20); + }); + event.addListener(this.searchInput, "focus", function() { + _this.activeInput = _this.searchInput; + _this.searchInput.value && _this.highlight(); + }); + event.addListener(this.replaceInput, "focus", function() { + _this.activeInput = _this.replaceInput; + _this.searchInput.value && _this.highlight(); + }); + }; + + //keybinding outside of the searchbox + this.$closeSearchBarKb = new HashHandler([{ + bindKey: "Esc", + name: "closeSearchBar", + exec: function(editor) { + editor.searchBox.hide(); + } + }]); + + //keybinding outside of the searchbox + this.$searchBarKb = new HashHandler(); + this.$searchBarKb.bindKeys({ + "Ctrl-f|Command-f": function(sb) { + var isReplace = sb.isReplace = !sb.isReplace; + sb.replaceBox.style.display = isReplace ? "" : "none"; + sb.replaceOption.checked = false; + sb.$syncOptions(); + sb.searchInput.focus(); + }, + "Ctrl-H|Command-Option-F": function(sb) { + sb.replaceOption.checked = true; + sb.$syncOptions(); + sb.replaceInput.focus(); + }, + "Ctrl-G|Command-G": function(sb) { + sb.findNext(); + }, + "Ctrl-Shift-G|Command-Shift-G": function(sb) { + sb.findPrev(); + }, + "esc": function(sb) { + setTimeout(function() { sb.hide();}); + }, + "Return": function(sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findNext(); + }, + "Shift-Return": function(sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findPrev(); + }, + "Alt-Return": function(sb) { + if (sb.activeInput == sb.replaceInput) + sb.replaceAll(); + sb.findAll(); + }, + "Tab": function(sb) { + (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); + } + }); + + this.$searchBarKb.addCommands([{ + name: "toggleRegexpMode", + bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"}, + exec: function(sb) { + sb.regExpOption.checked = !sb.regExpOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleCaseSensitive", + bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"}, + exec: function(sb) { + sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleWholeWords", + bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"}, + exec: function(sb) { + sb.wholeWordOption.checked = !sb.wholeWordOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleReplace", + exec: function(sb) { + sb.replaceOption.checked = !sb.replaceOption.checked; + sb.$syncOptions(); + } + }, { + name: "searchInSelection", + exec: function(sb) { + sb.searchOption.checked = !sb.searchRange; + sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); + sb.$syncOptions(); + } + }]); + + this.setSearchRange = function(range) { + this.searchRange = range; + if (range) { + this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); + } else if (this.searchRangeMarker) { + this.editor.session.removeMarker(this.searchRangeMarker); + this.searchRangeMarker = null; + } + }; + + this.$syncOptions = function(preventScroll) { + dom.setCssClass(this.replaceOption, "checked", this.searchRange); + dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); + this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; + dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); + dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); + dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); + this.replaceBox.style.display = this.replaceOption.checked ? "" : "none"; + this.find(false, false, preventScroll); + }; + + this.highlight = function(re) { + this.editor.session.highlight(re || this.editor.$search.$options.re); + this.editor.renderer.updateBackMarkers(); + }; + this.find = function(skipCurrent, backwards, preventScroll) { + var range = this.editor.find(this.searchInput.value, { + skipCurrent: skipCurrent, + backwards: backwards, + wrap: true, + regExp: this.regExpOption.checked, + caseSensitive: this.caseSensitiveOption.checked, + wholeWord: this.wholeWordOption.checked, + preventScroll: preventScroll, + range: this.searchRange + }); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); + this.highlight(); + this.updateCounter(); + }; + this.updateCounter = function() { + var editor = this.editor; + var regex = editor.$search.$options.re; + var all = 0; + var before = 0; + if (regex) { + var value = this.searchRange + ? editor.session.getTextRange(this.searchRange) + : editor.getValue(); + + var offset = editor.session.doc.positionToIndex(editor.selection.anchor); + if (this.searchRange) + offset -= editor.session.doc.positionToIndex(this.searchRange.start); + + var last = regex.lastIndex = 0; + var m; + while ((m = regex.exec(value))) { + all++; + last = m.index; + if (last <= offset) + before++; + if (all > MAX_COUNT) + break; + if (!m[0]) { + regex.lastIndex = last += 1; + if (last >= value.length) + break; + } + } + } + this.searchCounter.textContent = before + " of " + (all > MAX_COUNT ? MAX_COUNT + "+" : all); + }; + this.findNext = function() { + this.find(true, false); + }; + this.findPrev = function() { + this.find(true, true); + }; + this.findAll = function(){ + var range = this.editor.findAll(this.searchInput.value, { + regExp: this.regExpOption.checked, + caseSensitive: this.caseSensitiveOption.checked, + wholeWord: this.wholeWordOption.checked + }); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); + this.highlight(); + this.hide(); + }; + this.replace = function() { + if (!this.editor.getReadOnly()) + this.editor.replace(this.replaceInput.value); + }; + this.replaceAndFindNext = function() { + if (!this.editor.getReadOnly()) { + this.editor.replace(this.replaceInput.value); + this.findNext(); + } + }; + this.replaceAll = function() { + if (!this.editor.getReadOnly()) + this.editor.replaceAll(this.replaceInput.value); + }; + + this.hide = function() { + this.active = false; + this.setSearchRange(null); + this.editor.off("changeSession", this.setSession); + + this.element.style.display = "none"; + this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); + this.editor.focus(); + }; + this.show = function(value, isReplace) { + this.active = true; + this.editor.on("changeSession", this.setSession); + this.element.style.display = ""; + this.replaceOption.checked = isReplace; + + if (value) + this.searchInput.value = value; + + this.searchInput.focus(); + this.searchInput.select(); + + this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); + + this.$syncOptions(true); + }; + + this.isFocused = function() { + var el = document.activeElement; + return el == this.searchInput || el == this.replaceInput; + }; +}).call(SearchBox.prototype); + +exports.SearchBox = SearchBox; + +exports.Search = function(editor, isReplace) { + var sb = editor.searchBox || new SearchBox(editor); + sb.show(editor.session.getTextRange(), isReplace); +}; + +}); + + +/* ------------------------------------------------------------------------------------------ + * TODO + * --------------------------------------------------------------------------------------- */ +/* +- move search form to the left if it masks current word +- include all options that search has. ex: regex +- searchbox.searchbox is not that pretty. We should have just searchbox +- disable prev button if it makes sense +*/ diff --git a/plugins/node_modules/ace/lib/ace/ext/settings_menu.js b/plugins/node_modules/ace/lib/ace/ext/settings_menu.js new file mode 100644 index 00000000..44f6d6ad --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/settings_menu.js @@ -0,0 +1,76 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +/*global define, require */ + +/** + * Show Settings Menu + * @fileOverview Show Settings Menu
    + * Displays an interactive settings menu mostly generated on the fly based on + * the current state of the editor. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { +"use strict"; +var generateSettingsMenu = require('./menu_tools/generate_settings_menu').generateSettingsMenu; +var overlayPage = require('./menu_tools/overlay_page').overlayPage; +/** + * This displays the settings menu if it is not already being shown. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + * @param {ace.Editor} editor An instance of the ace editor. + */ +function showSettingsMenu(editor) { + // make sure the menu isn't open already. + var sm = document.getElementById('ace_settingsmenu'); + if (!sm) + overlayPage(editor, generateSettingsMenu(editor), '0', '0', '0'); +} + +/** + * Initializes the settings menu extension. It adds the showSettingsMenu + * method to the given editor object and adds the showSettingsMenu command + * to the editor with appropriate keyboard shortcuts. + * @param {ace.Editor} editor An instance of the Editor. + */ +module.exports.init = function(editor) { + var Editor = require("ace/editor").Editor; + Editor.prototype.showSettingsMenu = function() { + showSettingsMenu(this); + }; +}; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/spellcheck.js b/plugins/node_modules/ace/lib/ace/ext/spellcheck.js new file mode 100644 index 00000000..713b9057 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/spellcheck.js @@ -0,0 +1,69 @@ +define(function(require, exports, module) { +"use strict"; +var event = require("../lib/event"); + +exports.contextMenuHandler = function(e){ + var host = e.target; + var text = host.textInput.getElement(); + if (!host.selection.isEmpty()) + return; + var c = host.getCursorPosition(); + var r = host.session.getWordRange(c.row, c.column); + var w = host.session.getTextRange(r); + + host.session.tokenRe.lastIndex = 0; + if (!host.session.tokenRe.test(w)) + return; + var PLACEHOLDER = "\x01\x01"; + var value = w + " " + PLACEHOLDER; + text.value = value; + text.setSelectionRange(w.length, w.length + 1); + text.setSelectionRange(0, 0); + text.setSelectionRange(0, w.length); + + var afterKeydown = false; + event.addListener(text, "keydown", function onKeydown() { + event.removeListener(text, "keydown", onKeydown); + afterKeydown = true; + }); + + host.textInput.setInputHandler(function(newVal) { + console.log(newVal , value, text.selectionStart, text.selectionEnd); + if (newVal == value) + return ''; + if (newVal.lastIndexOf(value, 0) === 0) + return newVal.slice(value.length); + if (newVal.substr(text.selectionEnd) == value) + return newVal.slice(0, -value.length); + if (newVal.slice(-2) == PLACEHOLDER) { + var val = newVal.slice(0, -2); + if (val.slice(-1) == " ") { + if (afterKeydown) + return val.substring(0, text.selectionEnd); + val = val.slice(0, -1); + host.session.replace(r, val); + return ""; + } + } + + return newVal; + }); +}; +// todo support highlighting with typo.js +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + spellcheck: { + set: function(val) { + var text = this.textInput.getElement(); + text.spellcheck = !!val; + if (!val) + this.removeListener("nativecontextmenu", exports.contextMenuHandler); + else + this.on("nativecontextmenu", exports.contextMenuHandler); + }, + value: true + } +}); + +}); + diff --git a/plugins/node_modules/ace/lib/ace/ext/split.js b/plugins/node_modules/ace/lib/ace/ext/split.js new file mode 100644 index 00000000..8316562f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/split.js @@ -0,0 +1,40 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +/** + * this is experimental, and subject to change, use at your own risk! + */ +module.exports = require("../split"); + +}); + diff --git a/plugins/node_modules/ace/lib/ace/ext/static.css b/plugins/node_modules/ace/lib/ace/ext/static.css new file mode 100644 index 00000000..51986c3f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/static.css @@ -0,0 +1,38 @@ +.ace_static_highlight { + font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace; + font-size: 12px; + white-space: pre-wrap +} + +.ace_static_highlight .ace_gutter { + width: 2em; + text-align: right; + padding: 0 3px 0 0; + margin-right: 3px; +} + +.ace_static_highlight.ace_show_gutter .ace_line { + padding-left: 2.6em; +} + +.ace_static_highlight .ace_line { position: relative; } + +.ace_static_highlight .ace_gutter-cell { + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + user-select: none; + top: 0; + bottom: 0; + left: 0; + position: absolute; +} + + +.ace_static_highlight .ace_gutter-cell:before { + content: counter(ace_line, decimal); + counter-increment: ace_line; +} +.ace_static_highlight { + counter-reset: ace_line; +} diff --git a/plugins/node_modules/ace/lib/ace/ext/static_highlight.js b/plugins/node_modules/ace/lib/ace/ext/static_highlight.js new file mode 100644 index 00000000..fc1928fc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/static_highlight.js @@ -0,0 +1,191 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var TextLayer = require("../layer/text").Text; +var baseStyles = require("../requirejs/text!./static.css"); +var config = require("../config"); +var dom = require("../lib/dom"); + +var SimpleTextLayer = function() { + this.config = {}; +}; +SimpleTextLayer.prototype = TextLayer.prototype; + +var highlight = function(el, opts, callback) { + var m = el.className.match(/lang-(\w+)/); + var mode = opts.mode || m && ("ace/mode/" + m[1]); + if (!mode) + return false; + var theme = opts.theme || "ace/theme/textmate"; + + var data = ""; + var nodes = []; + + if (el.firstElementChild) { + var textLen = 0; + for (var i = 0; i < el.childNodes.length; i++) { + var ch = el.childNodes[i]; + if (ch.nodeType == 3) { + textLen += ch.data.length; + data += ch.data; + } else { + nodes.push(textLen, ch); + } + } + } else { + data = dom.getInnerText(el); + if (opts.trim) + data = data.trim(); + } + + highlight.render(data, mode, theme, opts.firstLineNumber, !opts.showGutter, function (highlighted) { + dom.importCssString(highlighted.css, "ace_highlight"); + el.innerHTML = highlighted.html; + var container = el.firstChild.firstChild; + for (var i = 0; i < nodes.length; i += 2) { + var pos = highlighted.session.doc.indexToPosition(nodes[i]); + var node = nodes[i + 1]; + var lineEl = container.children[pos.row]; + lineEl && lineEl.appendChild(node); + } + callback && callback(); + }); +}; + +/** + * Transforms a given input code snippet into HTML using the given mode + * + * @param {string} input Code snippet + * @param {string|mode} mode String specifying the mode to load such as + * `ace/mode/javascript` or, a mode loaded from `/ace/mode` + * (use 'ServerSideHiglighter.getMode'). + * @param {string|theme} theme String specifying the theme to load such as + * `ace/theme/twilight` or, a theme loaded from `/ace/theme`. + * @param {number} lineStart A number indicating the first line number. Defaults + * to 1. + * @param {boolean} disableGutter Specifies whether or not to disable the gutter. + * `true` disables the gutter, `false` enables the gutter. Defaults to `false`. + * @param {function} callback When specifying the mode or theme as a string, + * this method has no return value and you must specify a callback function. The + * callback will receive the rendered object containing the properties `html` + * and `css`. + * @returns {object} An object containing the properties `html` and `css`. + */ +highlight.render = function(input, mode, theme, lineStart, disableGutter, callback) { + var waiting = 1; + var modeCache = EditSession.prototype.$modes; + + // if either the theme or the mode were specified as objects + // then we need to lazily load them. + if (typeof theme == "string") { + waiting++; + config.loadModule(['theme', theme], function(m) { + theme = m; + --waiting || done(); + }); + } + // allow setting mode options e.h {path: "ace/mode/php", inline:true} + var modeOptions; + if (mode && typeof mode === "object" && !mode.getTokenizer) { + modeOptions = mode; + mode = modeOptions.path; + } + if (typeof mode == "string") { + waiting++; + config.loadModule(['mode', mode], function(m) { + if (!modeCache[mode] || modeOptions) + modeCache[mode] = new m.Mode(modeOptions); + mode = modeCache[mode]; + --waiting || done(); + }); + } + + // loads or passes the specified mode module then calls renderer + function done() { + var result = highlight.renderSync(input, mode, theme, lineStart, disableGutter); + return callback ? callback(result) : result; + } + return --waiting || done(); +}; + +/** + * Transforms a given input code snippet into HTML using the given mode + * @param {string} input Code snippet + * @param {mode} mode Mode loaded from /ace/mode (use 'ServerSideHiglighter.getMode') + * @param {string} r Code snippet + * @returns {object} An object containing: html, css + */ +highlight.renderSync = function(input, mode, theme, lineStart, disableGutter) { + lineStart = parseInt(lineStart || 1, 10); + + var session = new EditSession(""); + session.setUseWorker(false); + session.setMode(mode); + + var textLayer = new SimpleTextLayer(); + textLayer.setSession(session); + + session.setValue(input); + + var stringBuilder = []; + var length = session.getLength(); + + for(var ix = 0; ix < length; ix++) { + stringBuilder.push("
    "); + if (!disableGutter) + stringBuilder.push("" + /*(ix + lineStart) + */ ""); + textLayer.$renderLine(stringBuilder, ix, true, false); + stringBuilder.push("\n
    "); + } + + // let's prepare the whole html + var html = "
    " + + "
    " + + stringBuilder.join("") + + "
    " + + "
    "; + + textLayer.destroy(); + + return { + css: baseStyles + theme.cssText, + html: html, + session: session + }; +}; + +module.exports = highlight; +module.exports.highlight = highlight; +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/static_highlight_test.js b/plugins/node_modules/ace/lib/ace/ext/static_highlight_test.js new file mode 100644 index 00000000..b091bad7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/static_highlight_test.js @@ -0,0 +1,102 @@ +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var assert = require("assert"); +var highlighter = require("./static_highlight"); +var JavaScriptMode = require("../mode/javascript").Mode; +var TextMode = require("../mode/text").Mode; + +// Execution ORDER: test.setUpSuite, setUp, testFn, tearDown, test.tearDownSuite +module.exports = { + timeout: 10000, + + "test loading in node": function(next) { + if (typeof process != "undefined") + assert.equal(typeof window, "undefined"); + require("../ace"); + next(); + }, + + "test simple snippet": function(next) { + var theme = require("../theme/tomorrow"); + var snippet = [ + "/** this is a function", + "*", + "*/", + "function hello (a, b, c) {", + " console.log(a * b + c + 'sup$');", + "}" + ].join("\n"); + var mode = new JavaScriptMode(); + + var result = highlighter.render(snippet, mode, theme); + assert.equal(result.html, "
    " + + "
    /** this is a function\n
    " + + "
    *\n
    " + + "
    */\n
    " + + "
    function hello (a, b, c) {\n
    " + + "
    console.log(a * b + c + 'sup$');\n
    " + + "
    }\n
    " + + "
    "); + assert.ok(!!result.css); + next(); + }, + + "test css from theme is used": function(next) { + var theme = require("../theme/tomorrow"); + var snippet = [ + "/** this is a function", + "*", + "*/", + "function hello (a, b, c) {", + " console.log(a * b + c + 'sup?');", + "}" + ].join("\n"); + var mode = new JavaScriptMode(); + + var result = highlighter.render(snippet, mode, theme); + + assert.ok(result.css.indexOf(theme.cssText) !== -1); + + next(); + }, + + "test theme classname should be in output html": function(next) { + var theme = require("../theme/tomorrow"); + var snippet = [ + "/** this is a function", + "*", + "*/", + "function hello (a, b, c) {", + " console.log(a * b + c + 'sup?');", + "}" + ].join("\n"); + var mode = new JavaScriptMode(); + + var result = highlighter.render(snippet, mode, theme); + assert.equal(!!result.html.match(/
    /), true); + + next(); + }, + + "test js string replace specials": function(next) { + var theme = require("../theme/tomorrow"); + var snippet = "$'$1$2$$$&"; + var mode = new TextMode(); + + var result = highlighter.render(snippet, mode, theme); + assert.ok(result.html.indexOf(snippet) != -1); + + next(); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/ext/statusbar.js b/plugins/node_modules/ace/lib/ace/ext/statusbar.js new file mode 100644 index 00000000..20e1a099 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/statusbar.js @@ -0,0 +1,50 @@ +define(function(require, exports, module) { +"use strict"; +/** simple statusbar **/ +var dom = require("ace/lib/dom"); +var lang = require("ace/lib/lang"); + +var StatusBar = function(editor, parentNode) { + this.element = dom.createElement("div"); + this.element.className = "ace_status-indicator"; + this.element.style.cssText = "display: inline-block;"; + parentNode.appendChild(this.element); + + var statusUpdate = lang.delayedCall(function(){ + this.updateStatus(editor); + }.bind(this)).schedule.bind(null, 100); + + editor.on("changeStatus", statusUpdate); + editor.on("changeSelection", statusUpdate); + editor.on("keyboardActivity", statusUpdate); +}; + +(function(){ + this.updateStatus = function(editor) { + var status = []; + function add(str, separator) { + str && status.push(str, separator || "|"); + } + + add(editor.keyBinding.getStatusText(editor)); + if (editor.commands.recording) + add("REC"); + + var sel = editor.selection; + var c = sel.lead; + + if (!sel.isEmpty()) { + var r = editor.getSelectionRange(); + add("(" + (r.end.row - r.start.row) + ":" +(r.end.column - r.start.column) + ")", " "); + } + add(c.row + ":" + c.column, " "); + if (sel.rangeCount) + add("[" + sel.rangeCount + "]", " "); + status.pop(); + this.element.textContent = status.join(""); + }; +}).call(StatusBar.prototype); + +exports.StatusBar = StatusBar; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/ext/textarea.js b/plugins/node_modules/ace/lib/ace/ext/textarea.js new file mode 100644 index 00000000..54806f99 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/textarea.js @@ -0,0 +1,521 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("../lib/event"); +var UA = require("../lib/useragent"); +var net = require("../lib/net"); +var ace = require("../ace"); + +require("../theme/textmate"); + +module.exports = exports = ace; + +/* + * Returns the CSS property of element. + * 1) If the CSS property is on the style object of the element, use it, OR + * 2) Compute the CSS property + * + * If the property can't get computed, is 'auto' or 'intrinsic', the former + * calculated property is used (this can happen in cases where the textarea + * is hidden and has no dimension styles). + */ +var getCSSProperty = function(element, container, property) { + var ret = element.style[property]; + + if (!ret) { + if (window.getComputedStyle) { + ret = window.getComputedStyle(element, '').getPropertyValue(property); + } else { + ret = element.currentStyle[property]; + } + } + + if (!ret || ret == 'auto' || ret == 'intrinsic') { + ret = container.style[property]; + } + return ret; +}; + +function applyStyles(elm, styles) { + for (var style in styles) { + elm.style[style] = styles[style]; + } +} + +function setupContainer(element, getValue) { + if (element.type != 'textarea') { + throw new Error("Textarea required!"); + } + + var parentNode = element.parentNode; + + // This will hold the editor. + var container = document.createElement('div'); + + // To put Ace in the place of the textarea, we have to copy a few of the + // textarea's style attributes to the div container. + // + // The problem is that the properties have to get computed (they might be + // defined by a CSS file on the page - you can't access such rules that + // apply to an element via elm.style). Computed properties are converted to + // pixels although the dimension might be given as percentage. When the + // window resizes, the dimensions defined by percentages changes, so the + // properties have to get recomputed to get the new/true pixels. + var resizeEvent = function() { + var style = 'position:relative;'; + [ + 'margin-top', 'margin-left', 'margin-right', 'margin-bottom' + ].forEach(function(item) { + style += item + ':' + + getCSSProperty(element, container, item) + ';'; + }); + + // Calculating the width/height of the textarea is somewhat tricky. To + // do it right, you have to include the paddings to the sides as well + // (eg. width = width + padding-left, -right). This works well, as + // long as the width of the element is not set or given in pixels. In + // this case and after the textarea is hidden, getCSSProperty(element, + // container, 'width') will still return pixel value. If the element + // has realtiv dimensions (e.g. width='95') + // getCSSProperty(...) will return pixel values only as long as the + // textarea is visible. After it is hidden getCSSProperty will return + // the relative dimensions as they are set on the element (in the case + // of width, 95). + // Making the sum of pixel vaules (e.g. padding) and realtive values + // (e.g. ) is not possible. As such the padding styles are + // ignored. + + // The complete width is the width of the textarea + the padding + // to the left and right. + var width = getCSSProperty(element, container, 'width') || (element.clientWidth + "px"); + var height = getCSSProperty(element, container, 'height') || (element.clientHeight + "px"); + style += 'height:' + height + ';width:' + width + ';'; + + // Set the display property to 'inline-block'. + style += 'display:inline-block;'; + container.setAttribute('style', style); + }; + event.addListener(window, 'resize', resizeEvent); + + // Call the resizeEvent once, so that the size of the container is + // calculated. + resizeEvent(); + + // Insert the div container after the element. + parentNode.insertBefore(container, element.nextSibling); + + // Override the forms onsubmit function. Set the innerHTML and value + // of the textarea before submitting. + while (parentNode !== document) { + if (parentNode.tagName.toUpperCase() === 'FORM') { + var oldSumit = parentNode.onsubmit; + // Override the onsubmit function of the form. + parentNode.onsubmit = function(evt) { + element.value = getValue(); + // If there is a onsubmit function already, then call + // it with the current context and pass the event. + if (oldSumit) { + oldSumit.call(this, evt); + } + }; + break; + } + parentNode = parentNode.parentNode; + } + return container; +} + +exports.transformTextarea = function(element, options) { + var session; + var container = setupContainer(element, function() { + return session.getValue(); + }); + + // Hide the element. + element.style.display = 'none'; + container.style.background = 'white'; + + // + var editorDiv = document.createElement("div"); + applyStyles(editorDiv, { + top: "0px", + left: "0px", + right: "0px", + bottom: "0px", + border: "1px solid gray", + position: "absolute" + }); + container.appendChild(editorDiv); + + var settingOpener = document.createElement("div"); + applyStyles(settingOpener, { + position: "absolute", + right: "0px", + bottom: "0px", + background: "red", + cursor: "nw-resize", + borderStyle: "solid", + borderWidth: "9px 8px 10px 9px", + width: "2px", + borderColor: "lightblue gray gray lightblue", + zIndex: 101 + }); + + var settingDiv = document.createElement("div"); + var settingDivStyles = { + top: "0px", + left: "20%", + right: "0px", + bottom: "0px", + position: "absolute", + padding: "5px", + zIndex: 100, + color: "white", + display: "none", + overflow: "auto", + fontSize: "14px", + boxShadow: "-5px 2px 3px gray" + }; + if (!UA.isOldIE) { + settingDivStyles.backgroundColor = "rgba(0, 0, 0, 0.6)"; + } else { + settingDivStyles.backgroundColor = "#333"; + } + + applyStyles(settingDiv, settingDivStyles); + container.appendChild(settingDiv); + + options = options || exports.defaultOptions; + // Power up ace on the textarea: + var editor = ace.edit(editorDiv); + session = editor.getSession(); + + session.setValue(element.value || element.innerHTML); + editor.focus(); + + // Add the settingPanel opener to the editor's div. + container.appendChild(settingOpener); + + // Create the API. + setupApi(editor, editorDiv, settingDiv, ace, options); + + // Create the setting's panel. + setupSettingPanel(settingDiv, settingOpener, editor); + + var state = ""; + event.addListener(settingOpener, "mousemove", function(e) { + var rect = this.getBoundingClientRect(); + var x = e.clientX - rect.left, y = e.clientY - rect.top; + if (x + y < (rect.width + rect.height)/2) { + this.style.cursor = "pointer"; + state = "toggle"; + } else { + state = "resize"; + this.style.cursor = "nw-resize"; + } + }); + + event.addListener(settingOpener, "mousedown", function(e) { + if (state == "toggle") { + editor.setDisplaySettings(); + return; + } + container.style.zIndex = 100000; + var rect = container.getBoundingClientRect(); + var startX = rect.width + rect.left - e.clientX; + var startY = rect.height + rect.top - e.clientY; + event.capture(settingOpener, function(e) { + container.style.width = e.clientX - rect.left + startX + "px"; + container.style.height = e.clientY - rect.top + startY + "px"; + editor.resize(); + }, function() {}); + }); + + return editor; +}; + +function load(url, module, callback) { + net.loadScript(url, function() { + require([module], callback); + }); +} + +function setupApi(editor, editorDiv, settingDiv, ace, options) { + var session = editor.getSession(); + var renderer = editor.renderer; + + function toBool(value) { + return value === "true" || value == true; + } + + editor.setDisplaySettings = function(display) { + if (display == null) + display = settingDiv.style.display == "none"; + if (display) { + settingDiv.style.display = "block"; + settingDiv.hideButton.focus(); + editor.on("focus", function onFocus() { + editor.removeListener("focus", onFocus); + settingDiv.style.display = "none"; + }); + } else { + editor.focus(); + } + }; + + editor.$setOption = editor.setOption; + editor.$getOption = editor.getOption; + editor.setOption = function(key, value) { + switch (key) { + case "mode": + editor.$setOption("mode", "ace/mode/" + value); + break; + case "theme": + editor.$setOption("theme", "ace/theme/" + value); + break; + case "keybindings": + switch (value) { + case "vim": + editor.setKeyboardHandler("ace/keyboard/vim"); + break; + case "emacs": + editor.setKeyboardHandler("ace/keyboard/emacs"); + break; + default: + editor.setKeyboardHandler(null); + } + break; + + case "wrap": + case "fontSize": + editor.$setOption(key, value); + break; + + default: + editor.$setOption(key, toBool(value)); + } + }; + + editor.getOption = function(key) { + switch (key) { + case "mode": + return editor.$getOption("mode").substr("ace/mode/".length); + break; + + case "theme": + return editor.$getOption("theme").substr("ace/theme/".length); + break; + + case "keybindings": + var value = editor.getKeyboardHandler(); + switch (value && value.$id) { + case "ace/keyboard/vim": + return "vim"; + case "ace/keyboard/emacs": + return "emacs"; + default: + return "ace"; + } + break; + + default: + return editor.$getOption(key); + } + }; + + editor.setOptions(options); + return editor; +} + +function setupSettingPanel(settingDiv, settingOpener, editor) { + var BOOL = null; + + var desc = { + mode: "Mode:", + wrap: "Soft Wrap:", + theme: "Theme:", + fontSize: "Font Size:", + showGutter: "Display Gutter:", + keybindings: "Keyboard", + showPrintMargin: "Show Print Margin:", + useSoftTabs: "Use Soft Tabs:", + showInvisibles: "Show Invisibles" + }; + + var optionValues = { + mode: { + text: "Plain", + javascript: "JavaScript", + xml: "XML", + html: "HTML", + css: "CSS", + scss: "SCSS", + python: "Python", + php: "PHP", + java: "Java", + ruby: "Ruby", + c_cpp: "C/C++", + coffee: "CoffeeScript", + json: "json", + perl: "Perl", + clojure: "Clojure", + ocaml: "OCaml", + csharp: "C#", + haxe: "haXe", + svg: "SVG", + textile: "Textile", + groovy: "Groovy", + liquid: "Liquid", + Scala: "Scala" + }, + theme: { + clouds: "Clouds", + clouds_midnight: "Clouds Midnight", + cobalt: "Cobalt", + crimson_editor: "Crimson Editor", + dawn: "Dawn", + gob: "Green on Black", + eclipse: "Eclipse", + idle_fingers: "Idle Fingers", + kr_theme: "Kr Theme", + merbivore: "Merbivore", + merbivore_soft: "Merbivore Soft", + mono_industrial: "Mono Industrial", + monokai: "Monokai", + pastel_on_dark: "Pastel On Dark", + solarized_dark: "Solarized Dark", + solarized_light: "Solarized Light", + textmate: "Textmate", + twilight: "Twilight", + vibrant_ink: "Vibrant Ink" + }, + showGutter: BOOL, + fontSize: { + "10px": "10px", + "11px": "11px", + "12px": "12px", + "14px": "14px", + "16px": "16px" + }, + wrap: { + off: "Off", + 40: "40", + 80: "80", + free: "Free" + }, + keybindings: { + ace: "ace", + vim: "vim", + emacs: "emacs" + }, + showPrintMargin: BOOL, + useSoftTabs: BOOL, + showInvisibles: BOOL + }; + + var table = []; + table.push(""); + + function renderOption(builder, option, obj, cValue) { + if (!obj) { + builder.push( + "" + ); + return; + } + builder.push(""); + } + + for (var option in exports.defaultOptions) { + table.push(""); + table.push(""); + } + table.push("
    SettingValue
    ", desc[option], ""); + renderOption(table, option, optionValues[option], editor.getOption(option)); + table.push("
    "); + settingDiv.innerHTML = table.join(""); + + var onChange = function(e) { + var select = e.currentTarget; + editor.setOption(select.title, select.value); + }; + var onClick = function(e) { + var cb = e.currentTarget; + editor.setOption(cb.title, cb.checked); + }; + var selects = settingDiv.getElementsByTagName("select"); + for (var i = 0; i < selects.length; i++) + selects[i].onchange = onChange; + var cbs = settingDiv.getElementsByTagName("input"); + for (var i = 0; i < cbs.length; i++) + cbs[i].onclick = onClick; + + + var button = document.createElement("input"); + button.type = "button"; + button.value = "Hide"; + event.addListener(button, "click", function() { + editor.setDisplaySettings(false); + }); + settingDiv.appendChild(button); + settingDiv.hideButton = button; +} + +// Default startup options. +exports.defaultOptions = { + mode: "javascript", + theme: "textmate", + wrap: "off", + fontSize: "12px", + showGutter: "false", + keybindings: "ace", + showPrintMargin: "false", + useSoftTabs: "true", + showInvisibles: "false" +}; + +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/themelist.js b/plugins/node_modules/ace/lib/ace/ext/themelist.js new file mode 100644 index 00000000..10deca15 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/themelist.js @@ -0,0 +1,104 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl + * All rights reserved. + * + * Contributed to Ajax.org under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +/** + * Generates a list of themes available when ace was built. + * @fileOverview Generates a list of themes available when ace was built. + * @author + * Matthew Christopher Kastor-Inare III
    + * ☭ Hial Atropa!! ☭ + */ + +define(function(require, exports, module) { +"use strict"; +require("ace/lib/fixoldbrowsers"); + +var themeData = [ + ["Chrome" ], + ["Clouds" ], + ["Crimson Editor" ], + ["Dawn" ], + ["Dreamweaver" ], + ["Eclipse" ], + ["GitHub" ], + ["IPlastic" ], + ["Solarized Light"], + ["TextMate" ], + ["Tomorrow" ], + ["XCode" ], + ["Kuroir"], + ["KatzenMilch"], + ["SQL Server" ,"sqlserver" , "light"], + ["Ambiance" ,"ambiance" , "dark"], + ["Chaos" ,"chaos" , "dark"], + ["Clouds Midnight" ,"clouds_midnight" , "dark"], + ["Cobalt" ,"cobalt" , "dark"], + ["Gruvbox" ,"gruvbox" , "dark"], + ["Green on Black" ,"gob" , "dark"], + ["idle Fingers" ,"idle_fingers" , "dark"], + ["krTheme" ,"kr_theme" , "dark"], + ["Merbivore" ,"merbivore" , "dark"], + ["Merbivore Soft" ,"merbivore_soft" , "dark"], + ["Mono Industrial" ,"mono_industrial" , "dark"], + ["Monokai" ,"monokai" , "dark"], + ["Pastel on dark" ,"pastel_on_dark" , "dark"], + ["Solarized Dark" ,"solarized_dark" , "dark"], + ["Terminal" ,"terminal" , "dark"], + ["Tomorrow Night" ,"tomorrow_night" , "dark"], + ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"], + ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"], + ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"], + ["Twilight" ,"twilight" , "dark"], + ["Vibrant Ink" ,"vibrant_ink" , "dark"] +]; + + +exports.themesByName = {}; + +/** + * An array containing information about available themes. + */ +exports.themes = themeData.map(function(data) { + var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); + var theme = { + caption: data[0], + theme: "ace/theme/" + name, + isDark: data[2] == "dark", + name: name + }; + exports.themesByName[name] = theme; + return theme; +}); + +}); + diff --git a/plugins/node_modules/ace/lib/ace/ext/whitespace.js b/plugins/node_modules/ace/lib/ace/ext/whitespace.js new file mode 100644 index 00000000..f605303b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/whitespace.js @@ -0,0 +1,243 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var lang = require("../lib/lang"); + +// based on http://www.freehackers.org/Indent_Finder +exports.$detectIndentation = function(lines, fallback) { + var stats = []; + var changes = []; + var tabIndents = 0; + var prevSpaces = 0; + var max = Math.min(lines.length, 1000); + for (var i = 0; i < max; i++) { + var line = lines[i]; + // ignore empty and comment lines + if (!/^\s*[^*+\-\s]/.test(line)) + continue; + + if (line[0] == "\t") { + tabIndents++; + prevSpaces = -Number.MAX_VALUE; + } else { + var spaces = line.match(/^ */)[0].length; + if (spaces && line[spaces] != "\t") { + var diff = spaces - prevSpaces; + if (diff > 0 && !(prevSpaces%diff) && !(spaces%diff)) + changes[diff] = (changes[diff] || 0) + 1; + + stats[spaces] = (stats[spaces] || 0) + 1; + } + prevSpaces = spaces; + } + // ignore lines ending with backslash + while (i < max && line[line.length - 1] == "\\") + line = lines[i++]; + } + + function getScore(indent) { + var score = 0; + for (var i = indent; i < stats.length; i += indent) + score += stats[i] || 0; + return score; + } + + var changesTotal = changes.reduce(function(a,b){return a+b;}, 0); + + var first = {score: 0, length: 0}; + var spaceIndents = 0; + for (var i = 1; i < 12; i++) { + var score = getScore(i); + if (i == 1) { + spaceIndents = score; + score = stats[1] ? 0.9 : 0.8; + if (!stats.length) + score = 0; + } else + score /= spaceIndents; + + if (changes[i]) + score += changes[i] / changesTotal; + + if (score > first.score) + first = {score: score, length: i}; + } + + if (first.score && first.score > 1.4) + var tabLength = first.length; + + if (tabIndents > spaceIndents + 1) { + if (tabLength == 1 || spaceIndents < tabIndents / 4 || first.score < 1.8) + tabLength = undefined; + return {ch: "\t", length: tabLength}; + } + if (spaceIndents > tabIndents + 1) + return {ch: " ", length: tabLength}; +}; + +exports.detectIndentation = function(session) { + var lines = session.getLines(0, 1000); + var indent = exports.$detectIndentation(lines) || {}; + + if (indent.ch) + session.setUseSoftTabs(indent.ch == " "); + + if (indent.length) + session.setTabSize(indent.length); + return indent; +}; + +/** + * EditSession session + * options.trimEmpty trim empty lines too + * options.keepCursorPosition do not trim whitespace before the cursor + */ +exports.trimTrailingSpace = function(session, options) { + var doc = session.getDocument(); + var lines = doc.getAllLines(); + + var min = options && options.trimEmpty ? -1 : 0; + var cursors = [], ci = -1; + if (options && options.keepCursorPosition) { + if (session.selection.rangeCount) { + session.selection.rangeList.ranges.forEach(function(x, i, ranges) { + var next = ranges[i + 1]; + if (next && next.cursor.row == x.cursor.row) + return; + cursors.push(x.cursor); + }); + } else { + cursors.push(session.selection.getCursor()); + } + ci = 0; + } + var cursorRow = cursors[ci] && cursors[ci].row; + + for (var i = 0, l=lines.length; i < l; i++) { + var line = lines[i]; + var index = line.search(/\s+$/); + + if (i == cursorRow) { + if (index < cursors[ci].column && index > min) + index = cursors[ci].column; + ci++; + cursorRow = cursors[ci] ? cursors[ci].row : -1; + } + + if (index > min) + doc.removeInLine(i, index, line.length); + } +}; + +exports.convertIndentation = function(session, ch, len) { + var oldCh = session.getTabString()[0]; + var oldLen = session.getTabSize(); + if (!len) len = oldLen; + if (!ch) ch = oldCh; + + var tab = ch == "\t" ? ch: lang.stringRepeat(ch, len); + + var doc = session.doc; + var lines = doc.getAllLines(); + + var cache = {}; + var spaceCache = {}; + for (var i = 0, l=lines.length; i < l; i++) { + var line = lines[i]; + var match = line.match(/^\s*/)[0]; + if (match) { + var w = session.$getStringScreenWidth(match)[0]; + var tabCount = Math.floor(w/oldLen); + var reminder = w%oldLen; + var toInsert = cache[tabCount] || (cache[tabCount] = lang.stringRepeat(tab, tabCount)); + toInsert += spaceCache[reminder] || (spaceCache[reminder] = lang.stringRepeat(" ", reminder)); + + if (toInsert != match) { + doc.removeInLine(i, 0, match.length); + doc.insertInLine({row: i, column: 0}, toInsert); + } + } + } + session.setTabSize(len); + session.setUseSoftTabs(ch == " "); +}; + +exports.$parseStringArg = function(text) { + var indent = {}; + if (/t/.test(text)) + indent.ch = "\t"; + else if (/s/.test(text)) + indent.ch = " "; + var m = text.match(/\d+/); + if (m) + indent.length = parseInt(m[0], 10); + return indent; +}; + +exports.$parseArg = function(arg) { + if (!arg) + return {}; + if (typeof arg == "string") + return exports.$parseStringArg(arg); + if (typeof arg.text == "string") + return exports.$parseStringArg(arg.text); + return arg; +}; + +exports.commands = [{ + name: "detectIndentation", + exec: function(editor) { + exports.detectIndentation(editor.session); + // todo show message? + } +}, { + name: "trimTrailingSpace", + exec: function(editor) { + exports.trimTrailingSpace(editor.session); + } +}, { + name: "convertIndentation", + exec: function(editor, arg) { + var indent = exports.$parseArg(arg); + exports.convertIndentation(editor.session, indent.ch, indent.length); + } +}, { + name: "setIndentation", + exec: function(editor, arg) { + var indent = exports.$parseArg(arg); + indent.length && editor.session.setTabSize(indent.length); + indent.ch && editor.session.setUseSoftTabs(indent.ch == " "); + } +}]; + +}); diff --git a/plugins/node_modules/ace/lib/ace/ext/whitespace_test.js b/plugins/node_modules/ace/lib/ace/ext/whitespace_test.js new file mode 100644 index 00000000..18d4f3cb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/ext/whitespace_test.js @@ -0,0 +1,206 @@ +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +require("../multi_select"); +var assert = require("assert"); +var EditSession = require("../edit_session").EditSession; +var UndoManager = require("../undomanager").UndoManager; +var whitespace = require("./whitespace"); + +// Execution ORDER: test.setUpSuite, setUp, testFn, tearDown, test.tearDownSuite +module.exports = { + timeout: 10000, + + "test tab detection": function(next) { + var s = new EditSession([ + "define({", + "\tfoo:1,", + "\tbar:2,", + "\tbaz:{,", + "\t\tx:3", + "\t}", + "})" + ]); + + var indent = whitespace.$detectIndentation(s.doc.$lines); + assert.equal(indent.ch, "\t"); + assert.equal(indent.length, undefined); + + s.insert({row: 0, column: 0}, " "); + indent = whitespace.$detectIndentation(s.doc.$lines); + assert.equal(indent.ch, "\t"); + assert.equal(indent.length, undefined); + s.doc.removeInLine(0, 0, 2); + + s.insert({row: 0, column: 0}, "x\n y\n z\n"); + indent = whitespace.$detectIndentation(s.doc.$lines); + assert.equal(indent.ch, "\t"); + assert.equal(indent.length, 4); + + s.setValue(""); + indent = whitespace.$detectIndentation(s.doc.$lines); + assert.ok(!indent); + + next(); + }, + + "test empty session": function(next) { + var s = new EditSession([ + "define({", + "foo:1,", + "})" + ]); + var indent = whitespace.$detectIndentation(s.doc.$lines); + assert.ok(!indent); + s.insert({row: 1, column: 0}, " x\n "); + + indent = whitespace.$detectIndentation(s.doc.$lines); + assert.equal(indent.ch, " "); + assert.equal(indent.length, 4); + + next(); + }, + + "!test one line": function(next) { + var s = new EditSession([ + "define({", + " foo:1,", + "})" + ]); + var indent = whitespace.$detectIndentation(s.doc.$lines); + assert.equal(indent.ch, " "); + assert.equal(indent.length, 4); + + next(); + }, + + "test 1 width indents": function(next) { + var s = new EditSession([ + "define({", + " foo:1,", + "})", + "define({", + " bar:1,", + "})", + " t", + " t", + " t", + " t", + " t", + " t", + " t", + " t" + ]); + var indent = whitespace.$detectIndentation(s.doc.$lines); + // assert.equal(indent.ch, " "); + // assert.equal(indent.length, 4); + + s = new EditSession([ + "{", + " foo:1,", + " bar: {", + " baz:2", + " }", + "}" + ]); + indent = whitespace.$detectIndentation(s.doc.$lines); + assert.equal(indent.ch, " "); + assert.equal(indent.length, 1); + + next(); + }, + + "test trimTrailingSpace": function(next) { + var session = new EditSession([ + "a", + "\t b \t", + " ", + "\t", + "\t\tx\t\t", + " ", + " " + ]); + session.setUndoManager(new UndoManager()); + + function testOne(value, options) { + console.log(JSON.stringify(session.getValue())); + + whitespace.trimTrailingSpace(session, options); + assert.equal(value, session.getValue()); + session.markUndoGroup(); + session.getUndoManager().undo(); + } + + testOne("a\n\t b\n \n\t\n\t\tx\n \n "); + + testOne("a\n\t b\n\n\n\t\tx\n\n", { + trimEmpty: true + }); + + session.selection.fromJSON([{ + start: {row:2,column:3}, + end: {row:4,column:4} + }]); + testOne("a\n\t b\n\n\n\t\tx\t\n\n", { + keepCursorPosition: true, + trimEmpty: true + }); + + session.selection.fromJSON([{ + start: {row:2,column:3}, + end: {row:4,column:4}, + isBackwards: true + }]); + testOne("a\n\t b\n \n\n\t\tx\n\n", { + keepCursorPosition: true, + trimEmpty: true + }); + + session.selection.$initRangeList(); + session.selection.fromJSON([{ + start: {row:2, column:3}, + end: {row:2,column:3} + }, { + start: {row:1, column:1}, + end: {row:1, column:1} + }, { + start: {row:2,column:2}, + end: {row:2,column:2} + }, { + start: {row:0,column:5}, + end: {row:0,column:5}, + isBackwards:false + }, { + start: {row:6,column:1}, + end: {row:6,column:1}, + isBackwards:false + }]); + testOne("a\n\t b\n \n\n\t\tx\n\n ", { + trimEmpty: true, + keepCursorPosition: true + }); + + session.setValue("some text"); + session.selection.fromJSON([{ + start: {row:0,column:4}, + end: {row:0,column:4} + }]); + testOne("some text", { + keepCursorPosition: true, + trimEmpty: true + }); + + next(); + } + +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/incremental_search.js b/plugins/node_modules/ace/lib/ace/incremental_search.js new file mode 100644 index 00000000..b2cb2d3b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/incremental_search.js @@ -0,0 +1,315 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var Range = require("./range").Range; +var Search = require("./search").Search; +var SearchHighlight = require("./search_highlight").SearchHighlight; +var iSearchCommandModule = require("./commands/incremental_search_commands"); +var ISearchKbd = iSearchCommandModule.IncrementalSearchKeyboardHandler; + +/** + * @class IncrementalSearch + * + * Implements immediate searching while the user is typing. When incremental + * search is activated, keystrokes into the editor will be used for composing + * a search term. Immediately after every keystroke the search is updated: + * - so-far-matching characters are highlighted + * - the cursor is moved to the next match + * + **/ + + +/** + * + * + * Creates a new `IncrementalSearch` object. + * + * @constructor + **/ +function IncrementalSearch() { + this.$options = {wrap: false, skipCurrent: false}; + this.$keyboardHandler = new ISearchKbd(this); +} + +oop.inherits(IncrementalSearch, Search); + +// regexp handling + +function isRegExp(obj) { + return obj instanceof RegExp; +} + +function regExpToObject(re) { + var string = String(re), + start = string.indexOf('/'), + flagStart = string.lastIndexOf('/'); + return { + expression: string.slice(start+1, flagStart), + flags: string.slice(flagStart+1) + }; +} + +function stringToRegExp(string, flags) { + try { + return new RegExp(string, flags); + } catch (e) { return string; } +} + +function objectToRegExp(obj) { + return stringToRegExp(obj.expression, obj.flags); +} + +// iSearch class + +(function() { + + this.activate = function(ed, backwards) { + this.$editor = ed; + this.$startPos = this.$currentPos = ed.getCursorPosition(); + this.$options.needle = ''; + this.$options.backwards = backwards; + ed.keyBinding.addKeyboardHandler(this.$keyboardHandler); + // we need to completely intercept paste, just registering an event handler does not work + this.$originalEditorOnPaste = ed.onPaste; ed.onPaste = this.onPaste.bind(this); + this.$mousedownHandler = ed.addEventListener('mousedown', this.onMouseDown.bind(this)); + this.selectionFix(ed); + this.statusMessage(true); + }; + + this.deactivate = function(reset) { + this.cancelSearch(reset); + var ed = this.$editor; + ed.keyBinding.removeKeyboardHandler(this.$keyboardHandler); + if (this.$mousedownHandler) { + ed.removeEventListener('mousedown', this.$mousedownHandler); + delete this.$mousedownHandler; + } + ed.onPaste = this.$originalEditorOnPaste; + this.message(''); + }; + + this.selectionFix = function(editor) { + // Fix selection bug: When clicked inside the editor + // editor.selection.$isEmpty is false even if the mouse click did not + // open a selection. This is interpreted by the move commands to + // extend the selection. To only extend the selection when there is + // one, we clear it here + if (editor.selection.isEmpty() && !editor.session.$emacsMark) { + editor.clearSelection(); + } + }; + + this.highlight = function(regexp) { + var sess = this.$editor.session, + hl = sess.$isearchHighlight = sess.$isearchHighlight || sess.addDynamicMarker( + new SearchHighlight(null, "ace_isearch-result", "text")); + hl.setRegexp(regexp); + sess._emit("changeBackMarker"); // force highlight layer redraw + }; + + this.cancelSearch = function(reset) { + var e = this.$editor; + this.$prevNeedle = this.$options.needle; + this.$options.needle = ''; + if (reset) { + e.moveCursorToPosition(this.$startPos); + this.$currentPos = this.$startPos; + } else { + e.pushEmacsMark && e.pushEmacsMark(this.$startPos, false); + } + this.highlight(null); + return Range.fromPoints(this.$currentPos, this.$currentPos); + }; + + this.highlightAndFindWithNeedle = function(moveToNext, needleUpdateFunc) { + if (!this.$editor) return null; + var options = this.$options; + + // get search term + if (needleUpdateFunc) { + options.needle = needleUpdateFunc.call(this, options.needle || '') || ''; + } + if (options.needle.length === 0) { + this.statusMessage(true); + return this.cancelSearch(true); + } + + // try to find the next occurrence and enable highlighting marker + options.start = this.$currentPos; + var session = this.$editor.session, + found = this.find(session), + shouldSelect = this.$editor.emacsMark ? + !!this.$editor.emacsMark() : !this.$editor.selection.isEmpty(); + if (found) { + if (options.backwards) found = Range.fromPoints(found.end, found.start); + this.$editor.selection.setRange(Range.fromPoints(shouldSelect ? this.$startPos : found.end, found.end)); + if (moveToNext) this.$currentPos = found.end; + // highlight after cursor move, so selection works properly + this.highlight(options.re); + } + + this.statusMessage(found); + + return found; + }; + + this.addString = function(s) { + return this.highlightAndFindWithNeedle(false, function(needle) { + if (!isRegExp(needle)) + return needle + s; + var reObj = regExpToObject(needle); + reObj.expression += s; + return objectToRegExp(reObj); + }); + }; + + this.removeChar = function(c) { + return this.highlightAndFindWithNeedle(false, function(needle) { + if (!isRegExp(needle)) + return needle.substring(0, needle.length-1); + var reObj = regExpToObject(needle); + reObj.expression = reObj.expression.substring(0, reObj.expression.length-1); + return objectToRegExp(reObj); + }); + }; + + this.next = function(options) { + // try to find the next occurrence of whatever we have searched for + // earlier. + // options = {[backwards: BOOL], [useCurrentOrPrevSearch: BOOL]} + options = options || {}; + this.$options.backwards = !!options.backwards; + this.$currentPos = this.$editor.getCursorPosition(); + return this.highlightAndFindWithNeedle(true, function(needle) { + return options.useCurrentOrPrevSearch && needle.length === 0 ? + this.$prevNeedle || '' : needle; + }); + }; + + this.onMouseDown = function(evt) { + // when mouse interaction happens then we quit incremental search + this.deactivate(); + return true; + }; + + this.onPaste = function(text) { + this.addString(text); + }; + + this.convertNeedleToRegExp = function() { + return this.highlightAndFindWithNeedle(false, function(needle) { + return isRegExp(needle) ? needle : stringToRegExp(needle, 'ig'); + }); + }; + + this.convertNeedleToString = function() { + return this.highlightAndFindWithNeedle(false, function(needle) { + return isRegExp(needle) ? regExpToObject(needle).expression : needle; + }); + }; + + this.statusMessage = function(found) { + var options = this.$options, msg = ''; + msg += options.backwards ? 'reverse-' : ''; + msg += 'isearch: ' + options.needle; + msg += found ? '' : ' (not found)'; + this.message(msg); + }; + + this.message = function(msg) { + if (this.$editor.showCommandLine) { + this.$editor.showCommandLine(msg); + this.$editor.focus(); + } else { + console.log(msg); + } + }; + +}).call(IncrementalSearch.prototype); + + +exports.IncrementalSearch = IncrementalSearch; + + +/** + * + * Config settings for enabling/disabling [[IncrementalSearch `IncrementalSearch`]]. + * + **/ + +var dom = require('./lib/dom'); +dom.importCssString && dom.importCssString("\ +.ace_marker-layer .ace_isearch-result {\ + position: absolute;\ + z-index: 6;\ + box-sizing: border-box;\ +}\ +div.ace_isearch-result {\ + border-radius: 4px;\ + background-color: rgba(255, 200, 0, 0.5);\ + box-shadow: 0 0 4px rgb(255, 200, 0);\ +}\ +.ace_dark div.ace_isearch-result {\ + background-color: rgb(100, 110, 160);\ + box-shadow: 0 0 4px rgb(80, 90, 140);\ +}", "incremental-search-highlighting"); + +// support for default keyboard handler +var commands = require("./commands/command_manager"); +(function() { + this.setupIncrementalSearch = function(editor, val) { + if (this.usesIncrementalSearch == val) return; + this.usesIncrementalSearch = val; + var iSearchCommands = iSearchCommandModule.iSearchStartCommands; + var method = val ? 'addCommands' : 'removeCommands'; + this[method](iSearchCommands); + }; +}).call(commands.CommandManager.prototype); + +// incremental search config option +var Editor = require("./editor").Editor; +require("./config").defineOptions(Editor.prototype, "editor", { + useIncrementalSearch: { + set: function(val) { + this.keyBinding.$handlers.forEach(function(handler) { + if (handler.setupIncrementalSearch) { + handler.setupIncrementalSearch(this, val); + } + }); + this._emit('incrementalSearchSettingChanged', {isEnabled: val}); + } + } +}); + +}); diff --git a/plugins/node_modules/ace/lib/ace/incremental_search_test.js b/plugins/node_modules/ace/lib/ace/incremental_search_test.js new file mode 100644 index 00000000..0fa60fd2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/incremental_search_test.js @@ -0,0 +1,213 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var emacs = require('./keyboard/emacs'); +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var Range = require("./range").Range; +var MultiSelect = require("./multi_select").MultiSelect; +var assert = require("./test/assertions"); +var IncrementalSearch = require("./incremental_search").IncrementalSearch; + +require("./multi_select"); + +var editor, iSearch; +function testRanges(str, ranges) { + ranges = ranges || editor.selection.getAllRanges(); + assert.equal(ranges + "", str + ""); +} + +// force "rerender" +function callHighlighterUpdate() { + var session = editor.session, + ranges = [], + mockMarkerLayer = { + drawSingleLineMarker: function(_, markerRanges) { + ranges = ranges.concat(markerRanges); + } + }; + session.$isearchHighlight.update([], mockMarkerLayer, session, { + firstRow: 0, lastRow: session.getRowLength()}); + return ranges; +} + +module.exports = { + + name: "ACE incremental_search.js", + + setUp: function() { + var session = new EditSession(["abc123", "xyz124"]); + editor = new Editor(new MockRenderer(), session); + new MultiSelect(editor); + iSearch = new IncrementalSearch(); + }, + + "test: keyboard handler setup" : function() { + iSearch.activate(editor); + assert.equal(editor.getKeyboardHandler(), iSearch.$keyboardHandler); + iSearch.deactivate(); + assert.notEqual(editor.getKeyboardHandler(), iSearch.$keyboardHandler); + }, + + "test: isearch highlight setup" : function() { + var sess = editor.session; + iSearch.activate(editor); + iSearch.highlight('foo'); + var highl = sess.$isearchHighlight.id; + assert.ok(sess.$isearchHighlight, 'session has no isearch highlighter'); + assert.equal(sess.getMarkers()[highl.id], highl.id, 'isearch highlight not in markers'); + iSearch.deactivate(); + iSearch.activate(editor); + iSearch.highlight('bar'); + var highl2 = sess.$isearchHighlight.id; + assert.equal(highl2, highl, 'multiple isearch highlights'); + }, + + "test: find simple text incrementally" : function() { + iSearch.activate(editor); + var range = iSearch.addString('1'), // "1" + highlightRanges = callHighlighterUpdate(); + testRanges("Range: [0/3] -> [0/4]", [range]); + testRanges("Range: [0/3] -> [0/4],Range: [1/3] -> [1/4]", highlightRanges); + + range = iSearch.addString('2'); // "12" + highlightRanges = callHighlighterUpdate(); + testRanges("Range: [0/3] -> [0/5]", [range]); + testRanges("Range: [0/3] -> [0/5],Range: [1/3] -> [1/5]", highlightRanges); + + range = iSearch.addString('3'); // "123" + highlightRanges = callHighlighterUpdate(); + testRanges("Range: [0/3] -> [0/6]", [range]); + testRanges("Range: [0/3] -> [0/6]", highlightRanges); + + range = iSearch.removeChar(); // "12" + highlightRanges = callHighlighterUpdate(); + testRanges("Range: [0/3] -> [0/5]", [range]); + testRanges("Range: [0/3] -> [0/5],Range: [1/3] -> [1/5]", highlightRanges); + }, + + "test: forward / backward" : function() { + iSearch.activate(editor); + iSearch.addString('1'); iSearch.addString('2'); + var range = iSearch.next(); + testRanges("Range: [1/3] -> [1/5]", [range]); + + range = iSearch.next(); // nothing to find + testRanges("", [range]); + + range = iSearch.next({backwards: true}); // backwards + testRanges("Range: [1/5] -> [1/3]", [range]); + }, + + "test: cancelSearch" : function() { + iSearch.activate(editor); + iSearch.addString('1'); iSearch.addString('2'); + var range = iSearch.cancelSearch(true); + testRanges("Range: [0/0] -> [0/0]", [range]); + + iSearch.addString('1'); range = iSearch.addString('2'); + testRanges("Range: [0/3] -> [0/5]", [range]); + }, + + "test: failing search keeps pos" : function() { + iSearch.activate(editor); + iSearch.addString('1'); iSearch.addString('2'); + var range = iSearch.addString('x'); + testRanges("", [range]); + assert.position(editor.getCursorPosition(), 0, 5); + }, + + "test: backwards search" : function() { + editor.moveCursorTo(1,0); + iSearch.activate(editor, true); + iSearch.addString('1'); var range = iSearch.addString('2'); + testRanges("Range: [0/5] -> [0/3]", [range]); + assert.position(editor.getCursorPosition(), 0, 3); + }, + + "test: forwards then backwards, same result, reoriented range" : function() { + iSearch.activate(editor); + iSearch.addString('1'); var range = iSearch.addString('2'); + testRanges("Range: [0/3] -> [0/5]", [range]); + assert.position(editor.getCursorPosition(), 0, 5); + + range = iSearch.next({backwards: true}); + testRanges("Range: [0/5] -> [0/3]", [range]); + assert.position(editor.getCursorPosition(), 0, 3); + }, + + "test: reuse prev search via option" : function() { + iSearch.activate(editor); + iSearch.addString('1'); iSearch.addString('2'); + assert.position(editor.getCursorPosition(), 0, 5); + iSearch.deactivate(); + + iSearch.activate(editor); + iSearch.next({backwards: false, useCurrentOrPrevSearch: true}); + assert.position(editor.getCursorPosition(), 1, 5); + }, + + "test: don't extend selection range if selection is empty" : function() { + iSearch.activate(editor); + iSearch.addString('1'); iSearch.addString('2'); + testRanges("Range: [0/5] -> [0/5]", [editor.getSelectionRange()]); + }, + + "test: extend selection range if selection exists" : function() { + iSearch.activate(editor); + editor.selection.selectTo(0, 1); + iSearch.addString('1'); iSearch.addString('2'); + testRanges("Range: [0/0] -> [0/5]", [editor.getSelectionRange()]); + }, + + "test: extend selection in emacs mark mode" : function() { + var emacs = require('./keyboard/emacs'); + editor.keyBinding.addKeyboardHandler(emacs.handler); + emacs.handler.commands.setMark.exec(editor); + iSearch.activate(editor); + iSearch.addString('1'); iSearch.addString('2'); + testRanges("Range: [0/0] -> [0/5]", [editor.getSelectionRange()]); + } + +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/keyboard/emacs.js b/plugins/node_modules/ace/lib/ace/keyboard/emacs.js new file mode 100644 index 00000000..f048426e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/emacs.js @@ -0,0 +1,664 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("../lib/dom"); +require("../incremental_search"); +var iSearchCommandModule = require("../commands/incremental_search_commands"); + + +var screenToTextBlockCoordinates = function(x, y) { + var canvasPos = this.scroller.getBoundingClientRect(); + var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; + + var col = Math.floor(offsetX / this.characterWidth); + + var row = Math.floor( + (y + this.scrollTop - canvasPos.top) / this.lineHeight + ); + + return this.session.screenToDocumentPosition(row, col, offsetX); +}; + +var HashHandler = require("./hash_handler").HashHandler; +exports.handler = new HashHandler(); + +exports.handler.isEmacs = true; +exports.handler.$id = "ace/keyboard/emacs"; + +var initialized = false; +var $formerLongWords; +var $formerLineStart; + +exports.handler.attach = function(editor) { + if (!initialized) { + initialized = true; + dom.importCssString('\ + .emacs-mode .ace_cursor{\ + border: 1px rgba(50,250,50,0.8) solid!important;\ + box-sizing: border-box!important;\ + background-color: rgba(0,250,0,0.9);\ + opacity: 0.5;\ + }\ + .emacs-mode .ace_hidden-cursors .ace_cursor{\ + opacity: 1;\ + background-color: transparent;\ + }\ + .emacs-mode .ace_overwrite-cursors .ace_cursor {\ + opacity: 1;\ + background-color: transparent;\ + border-width: 0 0 2px 2px !important;\ + }\ + .emacs-mode .ace_text-layer {\ + z-index: 4\ + }\ + .emacs-mode .ace_cursor-layer {\ + z-index: 2\ + }', 'emacsMode' + ); + } + // in emacs, gotowordleft/right should not count a space as a word.. + $formerLongWords = editor.session.$selectLongWords; + editor.session.$selectLongWords = true; + // CTRL-A should go to actual beginning of line + $formerLineStart = editor.session.$useEmacsStyleLineStart; + editor.session.$useEmacsStyleLineStart = true; + + editor.session.$emacsMark = null; // the active mark + editor.session.$emacsMarkRing = editor.session.$emacsMarkRing || []; + + editor.emacsMark = function() { + return this.session.$emacsMark; + }; + + editor.setEmacsMark = function(p) { + // to deactivate pass in a falsy value + this.session.$emacsMark = p; + }; + + editor.pushEmacsMark = function(p, activate) { + var prevMark = this.session.$emacsMark; + if (prevMark) + this.session.$emacsMarkRing.push(prevMark); + if (!p || activate) this.setEmacsMark(p); + else this.session.$emacsMarkRing.push(p); + }; + + editor.popEmacsMark = function() { + var mark = this.emacsMark(); + if (mark) { this.setEmacsMark(null); return mark; } + return this.session.$emacsMarkRing.pop(); + }; + + editor.getLastEmacsMark = function(p) { + return this.session.$emacsMark || this.session.$emacsMarkRing.slice(-1)[0]; + }; + + editor.emacsMarkForSelection = function(replacement) { + // find the mark in $emacsMarkRing corresponding to the current + // selection + var sel = this.selection, + multiRangeLength = this.multiSelect ? + this.multiSelect.getAllRanges().length : 1, + selIndex = sel.index || 0, + markRing = this.session.$emacsMarkRing, + markIndex = markRing.length - (multiRangeLength - selIndex), + lastMark = markRing[markIndex] || sel.anchor; + if (replacement) { + markRing.splice(markIndex, 1, + "row" in replacement && "column" in replacement ? + replacement : undefined); + } + return lastMark; + }; + + editor.on("click", $resetMarkMode); + editor.on("changeSession", $kbSessionChange); + editor.renderer.screenToTextCoordinates = screenToTextBlockCoordinates; + editor.setStyle("emacs-mode"); + editor.commands.addCommands(commands); + exports.handler.platform = editor.commands.platform; + editor.$emacsModeHandler = this; + editor.addEventListener('copy', this.onCopy); + editor.addEventListener('paste', this.onPaste); +}; + +exports.handler.detach = function(editor) { + delete editor.renderer.screenToTextCoordinates; + editor.session.$selectLongWords = $formerLongWords; + editor.session.$useEmacsStyleLineStart = $formerLineStart; + editor.removeEventListener("click", $resetMarkMode); + editor.removeEventListener("changeSession", $kbSessionChange); + editor.unsetStyle("emacs-mode"); + editor.commands.removeCommands(commands); + editor.removeEventListener('copy', this.onCopy); + editor.removeEventListener('paste', this.onPaste); + editor.$emacsModeHandler = null; +}; + +var $kbSessionChange = function(e) { + if (e.oldSession) { + e.oldSession.$selectLongWords = $formerLongWords; + e.oldSession.$useEmacsStyleLineStart = $formerLineStart; + } + + $formerLongWords = e.session.$selectLongWords; + e.session.$selectLongWords = true; + $formerLineStart = e.session.$useEmacsStyleLineStart; + e.session.$useEmacsStyleLineStart = true; + + if (!e.session.hasOwnProperty('$emacsMark')) + e.session.$emacsMark = null; + if (!e.session.hasOwnProperty('$emacsMarkRing')) + e.session.$emacsMarkRing = []; +}; + +var $resetMarkMode = function(e) { + e.editor.session.$emacsMark = null; +}; + +var keys = require("../lib/keys").KEY_MODS; +var eMods = {C: "ctrl", S: "shift", M: "alt", CMD: "command"}; +var combinations = ["C-S-M-CMD", + "S-M-CMD", "C-M-CMD", "C-S-CMD", "C-S-M", + "M-CMD", "S-CMD", "S-M", "C-CMD", "C-M", "C-S", + "CMD", "M", "S", "C"]; +combinations.forEach(function(c) { + var hashId = 0; + c.split("-").forEach(function(c) { + hashId = hashId | keys[eMods[c]]; + }); + eMods[hashId] = c.toLowerCase() + "-"; +}); + +exports.handler.onCopy = function(e, editor) { + if (editor.$handlesEmacsOnCopy) return; + editor.$handlesEmacsOnCopy = true; + exports.handler.commands.killRingSave.exec(editor); + editor.$handlesEmacsOnCopy = false; +}; + +exports.handler.onPaste = function(e, editor) { + editor.pushEmacsMark(editor.getCursorPosition()); +}; + +exports.handler.bindKey = function(key, command) { + if (typeof key == "object") + key = key[this.platform]; + if (!key) + return; + + var ckb = this.commandKeyBinding; + key.split("|").forEach(function(keyPart) { + keyPart = keyPart.toLowerCase(); + ckb[keyPart] = command; + // register all partial key combos as null commands + // to be able to activate key combos with arbitrary length + // Example: if keyPart is "C-c C-l t" then "C-c C-l t" will + // get command assigned and "C-c" and "C-c C-l" will get + // a null command assigned in this.commandKeyBinding. For + // the lookup logic see handleKeyboard() + var keyParts = keyPart.split(" ").slice(0,-1); + keyParts.reduce(function(keyMapKeys, keyPart, i) { + var prefix = keyMapKeys[i-1] ? keyMapKeys[i-1] + ' ' : ''; + return keyMapKeys.concat([prefix + keyPart]); + }, []).forEach(function(keyPart) { + if (!ckb[keyPart]) ckb[keyPart] = "null"; + }); + }, this); +}; + +exports.handler.getStatusText = function(editor, data) { + var str = ""; + if (data.count) + str += data.count; + if (data.keyChain) + str += " " + data.keyChain; + return str; +}; + +exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { + // if keyCode == -1 a non-printable key was pressed, such as just + // control. Handling those is currently not supported in this handler + if (keyCode === -1) return undefined; + + var editor = data.editor; + editor._signal("changeStatus"); + // insertstring data.count times + if (hashId == -1) { + editor.pushEmacsMark(); + if (data.count) { + var str = new Array(data.count + 1).join(key); + data.count = null; + return {command: "insertstring", args: str}; + } + } + + var modifier = eMods[hashId]; + + // CTRL + number / universalArgument for setting data.count + if (modifier == "c-" || data.count) { + var count = parseInt(key[key.length - 1]); + if (typeof count === 'number' && !isNaN(count)) { + data.count = Math.max(data.count, 0) || 0; + data.count = 10 * data.count + count; + return {command: "null"}; + } + } + + // this.commandKeyBinding maps key specs like "c-p" (for CTRL + P) to + // command objects, for lookup key needs to include the modifier + if (modifier) key = modifier + key; + + // Key combos like CTRL+X H build up the data.keyChain + if (data.keyChain) key = data.keyChain += " " + key; + + // Key combo prefixes get stored as "null" (String!) in this + // this.commandKeyBinding. When encountered no command is invoked but we + // buld up data.keyChain + var command = this.commandKeyBinding[key]; + data.keyChain = command == "null" ? key : ""; + + // there really is no command + if (!command) return undefined; + + // we pass b/c of key combo or universalArgument + if (command === "null") return {command: "null"}; + + if (command === "universalArgument") { + // if no number pressed emacs repeats action 4 times. + // minus sign is needed to allow next keypress to replace it + data.count = -4; + return {command: "null"}; + } + + // lookup command + // TODO extract special handling of markmode + // TODO special case command.command is really unnecessary, remove + var args; + if (typeof command !== "string") { + args = command.args; + if (command.command) command = command.command; + if (command === "goorselect") { + command = editor.emacsMark() ? args[1] : args[0]; + args = null; + } + } + + if (typeof command === "string") { + if (command === "insertstring" || + command === "splitline" || + command === "togglecomment") { + editor.pushEmacsMark(); + } + command = this.commands[command] || editor.commands.commands[command]; + if (!command) return undefined; + } + + if (!command.readOnly && !command.isYank) + data.lastCommand = null; + + if (!command.readOnly && editor.emacsMark()) + editor.setEmacsMark(null); + + if (data.count) { + var count = data.count; + data.count = 0; + if (!command || !command.handlesCount) { + return { + args: args, + command: { + exec: function(editor, args) { + for (var i = 0; i < count; i++) + command.exec(editor, args); + }, + multiSelectAction: command.multiSelectAction + } + }; + } else { + if (!args) args = {}; + if (typeof args === 'object') args.count = count; + } + } + + return {command: command, args: args}; +}; + +exports.emacsKeys = { + // movement + "Up|C-p" : {command: "goorselect", args: ["golineup","selectup"]}, + "Down|C-n" : {command: "goorselect", args: ["golinedown","selectdown"]}, + "Left|C-b" : {command: "goorselect", args: ["gotoleft","selectleft"]}, + "Right|C-f" : {command: "goorselect", args: ["gotoright","selectright"]}, + "C-Left|M-b" : {command: "goorselect", args: ["gotowordleft","selectwordleft"]}, + "C-Right|M-f" : {command: "goorselect", args: ["gotowordright","selectwordright"]}, + "Home|C-a" : {command: "goorselect", args: ["gotolinestart","selecttolinestart"]}, + "End|C-e" : {command: "goorselect", args: ["gotolineend","selecttolineend"]}, + "C-Home|S-M-,": {command: "goorselect", args: ["gotostart","selecttostart"]}, + "C-End|S-M-." : {command: "goorselect", args: ["gotoend","selecttoend"]}, + + // selection + "S-Up|S-C-p" : "selectup", + "S-Down|S-C-n" : "selectdown", + "S-Left|S-C-b" : "selectleft", + "S-Right|S-C-f" : "selectright", + "S-C-Left|S-M-b" : "selectwordleft", + "S-C-Right|S-M-f" : "selectwordright", + "S-Home|S-C-a" : "selecttolinestart", + "S-End|S-C-e" : "selecttolineend", + "S-C-Home" : "selecttostart", + "S-C-End" : "selecttoend", + + "C-l" : "recenterTopBottom", + "M-s" : "centerselection", + "M-g": "gotoline", + "C-x C-p": "selectall", + + // todo fix these + "C-Down": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, + "C-Up": {command: "goorselect", args: ["gotopageup","selectpageup"]}, + "PageDown|C-v": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, + "PageUp|M-v": {command: "goorselect", args: ["gotopageup","selectpageup"]}, + "S-C-Down": "selectpagedown", + "S-C-Up": "selectpageup", + + "C-s": "iSearch", + "C-r": "iSearchBackwards", + + "M-C-s": "findnext", + "M-C-r": "findprevious", + "S-M-5": "replace", + + // basic editing + "Backspace": "backspace", + "Delete|C-d": "del", + "Return|C-m": {command: "insertstring", args: "\n"}, // "newline" + "C-o": "splitline", + + "M-d|C-Delete|Esc d": {command: "killWord", args: "right"}, + "C-Backspace|M-Backspace|M-Delete|Esc Backspace": {command: "killWord", args: "left"}, + "C-k": "killLine", + + "C-y|S-Delete": "yank", + "M-y": "yankRotate", + "C-g": "keyboardQuit", + + "C-w|C-S-W": "killRegion", + "M-w": "killRingSave", + "C-Space": "setMark", + "C-x C-x": "exchangePointAndMark", + + "C-t": "transposeletters", + "M-u": "touppercase", // Doesn't work + "M-l": "tolowercase", + "M-/": "autocomplete", // Doesn't work + "C-u": "universalArgument", + + "M-;": "togglecomment", + + "C-/|C-x u|S-C--|C-z": "undo", + "S-C-/|S-C-x u|C--|S-C-z": "redo", // infinite undo? + // vertical editing + "C-x r": "selectRectangularRegion", + "M-x": {command: "focusCommandLine", args: "M-x "} + // todo + // "C-x C-t" "M-t" "M-c" "F11" "C-M- "M-q" +}; + + +exports.handler.bindKeys(exports.emacsKeys); + +exports.handler.addCommands({ + recenterTopBottom: function(editor) { + var renderer = editor.renderer; + var pos = renderer.$cursorLayer.getPixelPosition(); + var h = renderer.$size.scrollerHeight - renderer.lineHeight; + var scrollTop = renderer.scrollTop; + if (Math.abs(pos.top - scrollTop) < 2) { + scrollTop = pos.top - h; + } else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) { + scrollTop = pos.top; + } else { + scrollTop = pos.top - h * 0.5; + } + editor.session.setScrollTop(scrollTop); + }, + selectRectangularRegion: function(editor) { + editor.multiSelect.toggleBlockSelection(); + }, + setMark: { + exec: function(editor, args) { + // Sets mark-mode and clears current selection. + // When mark is set, keyboard cursor movement commands become + // selection modification commands. That is, + // "goto" commands become "select" commands. + // Any insertion or mouse click resets mark-mode. + // setMark twice in a row at the same place resets markmode. + // in multi select mode, ea selection is handled individually + + if (args && args.count) { + if (editor.inMultiSelectMode) editor.forEachSelection(moveToMark); + else moveToMark(); + moveToMark(); + return; + } + + var mark = editor.emacsMark(), + ranges = editor.selection.getAllRanges(), + rangePositions = ranges.map(function(r) { return {row: r.start.row, column: r.start.column}; }), + transientMarkModeActive = true, + hasNoSelection = ranges.every(function(range) { return range.isEmpty(); }); + // if transientMarkModeActive then mark behavior is a little + // different. Deactivate the mark when setMark is run with active + // mark + if (transientMarkModeActive && (mark || !hasNoSelection)) { + if (editor.inMultiSelectMode) editor.forEachSelection({exec: editor.clearSelection.bind(editor)}); + else editor.clearSelection(); + if (mark) editor.pushEmacsMark(null); + return; + } + + if (!mark) { + rangePositions.forEach(function(pos) { editor.pushEmacsMark(pos); }); + editor.setEmacsMark(rangePositions[rangePositions.length-1]); + return; + } + + // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + function moveToMark() { + var mark = editor.popEmacsMark(); + mark && editor.moveCursorToPosition(mark); + } + + }, + readOnly: true, + handlesCount: true + }, + exchangePointAndMark: { + exec: function exchangePointAndMark$exec(editor, args) { + var sel = editor.selection; + if (!args.count && !sel.isEmpty()) { // just invert selection + sel.setSelectionRange(sel.getRange(), !sel.isBackwards()); + return; + } + + if (args.count) { // replace mark and point + var pos = {row: sel.lead.row, column: sel.lead.column}; + sel.clearSelection(); + sel.moveCursorToPosition(editor.emacsMarkForSelection(pos)); + } else { // create selection to last mark + sel.selectToPosition(editor.emacsMarkForSelection()); + } + }, + readOnly: true, + handlesCount: true, + multiSelectAction: "forEach" + }, + killWord: { + exec: function(editor, dir) { + editor.clearSelection(); + if (dir == "left") + editor.selection.selectWordLeft(); + else + editor.selection.selectWordRight(); + + var range = editor.getSelectionRange(); + var text = editor.session.getTextRange(range); + exports.killRing.add(text); + + editor.session.remove(range); + editor.clearSelection(); + }, + multiSelectAction: "forEach" + }, + killLine: function(editor) { + editor.pushEmacsMark(null); + // don't delete the selection if it's before the cursor + editor.clearSelection(); + var range = editor.getSelectionRange(); + var line = editor.session.getLine(range.start.row); + range.end.column = line.length; + line = line.substr(range.start.column); + + var foldLine = editor.session.getFoldLine(range.start.row); + if (foldLine && range.end.row != foldLine.end.row) { + range.end.row = foldLine.end.row; + line = "x"; + } + // remove EOL if only whitespace remains after the cursor + if (/^\s*$/.test(line)) { + range.end.row++; + line = editor.session.getLine(range.end.row); + range.end.column = /^\s*$/.test(line) ? line.length : 0; + } + var text = editor.session.getTextRange(range); + if (editor.prevOp.command == this) + exports.killRing.append(text); + else + exports.killRing.add(text); + + editor.session.remove(range); + editor.clearSelection(); + }, + yank: function(editor) { + editor.onPaste(exports.killRing.get() || ''); + editor.keyBinding.$data.lastCommand = "yank"; + }, + yankRotate: function(editor) { + if (editor.keyBinding.$data.lastCommand != "yank") + return; + editor.undo(); + editor.session.$emacsMarkRing.pop(); // also undo recording mark + editor.onPaste(exports.killRing.rotate()); + editor.keyBinding.$data.lastCommand = "yank"; + }, + killRegion: { + exec: function(editor) { + exports.killRing.add(editor.getCopyText()); + editor.commands.byName.cut.exec(editor); + editor.setEmacsMark(null); + }, + readOnly: true, + multiSelectAction: "forEach" + }, + killRingSave: { + exec: function(editor) { + // copy text and deselect. will save marks for starts of the + // selection(s) + + editor.$handlesEmacsOnCopy = true; + var marks = editor.session.$emacsMarkRing.slice(), + deselectedMarks = []; + exports.killRing.add(editor.getCopyText()); + + setTimeout(function() { + function deselect() { + var sel = editor.selection, range = sel.getRange(), + pos = sel.isBackwards() ? range.end : range.start; + deselectedMarks.push({row: pos.row, column: pos.column}); + sel.clearSelection(); + } + editor.$handlesEmacsOnCopy = false; + if (editor.inMultiSelectMode) editor.forEachSelection({exec: deselect}); + else deselect(); + editor.session.$emacsMarkRing = marks.concat(deselectedMarks.reverse()); + }, 0); + }, + readOnly: true + }, + keyboardQuit: function(editor) { + editor.selection.clearSelection(); + editor.setEmacsMark(null); + editor.keyBinding.$data.count = null; + }, + focusCommandLine: function(editor, arg) { + if (editor.showCommandLine) + editor.showCommandLine(arg); + } +}); + +exports.handler.addCommands(iSearchCommandModule.iSearchStartCommands); + +var commands = exports.handler.commands; +commands.yank.isYank = true; +commands.yankRotate.isYank = true; + +exports.killRing = { + $data: [], + add: function(str) { + str && this.$data.push(str); + if (this.$data.length > 30) + this.$data.shift(); + }, + append: function(str) { + var idx = this.$data.length - 1; + var text = this.$data[idx] || ""; + if (str) text += str; + if (text) this.$data[idx] = text; + }, + get: function(n) { + n = n || 1; + return this.$data.slice(this.$data.length-n, this.$data.length).reverse().join('\n'); + }, + pop: function() { + if (this.$data.length > 1) + this.$data.pop(); + return this.get(); + }, + rotate: function() { + this.$data.unshift(this.$data.pop()); + return this.get(); + } +}; + +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/emacs_test.js b/plugins/node_modules/ace/lib/ace/keyboard/emacs_test.js new file mode 100644 index 00000000..2a30acc0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/emacs_test.js @@ -0,0 +1,173 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("../test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +require("../multi_select"); + +var EditSession = require("./../edit_session").EditSession, + Editor = require("./../editor").Editor, + Range = require("./../range").Range, + MockRenderer = require("./../test/mockrenderer").MockRenderer, + emacs = require('./emacs'), + assert = require("./../test/assertions"), + editor, sel; + +function initEditor(docString) { + var doc = new EditSession(docString.split("\n")); + editor = new Editor(new MockRenderer(), doc); + editor.setKeyboardHandler(emacs.handler); + sel = editor.selection; +} + +function print(obj) { + return JSON.stringify(obj, null, 2); +} + +function pluck(arr, what) { + return arr.map(function(ea) { return ea[what]; }); +} + +module.exports = { + + "test: detach removes emacs commands from command manager": function() { + initEditor(''); + assert.ok(!!editor.commands.byName["keyboardQuit"], 'setup error: emacs commands not installed'); + editor.keyBinding.removeKeyboardHandler(editor.getKeyboardHandler()); + assert.ok(!editor.commands.byName["keyboardQuit"], 'emacs commands not removed'); + }, + + "test: keyboardQuit clears selection": function() { + initEditor('foo'); + editor.selectAll(); + editor.execCommand('keyboardQuit'); + assert.ok(editor.selection.isEmpty(), 'selection non-empty'); + }, + + "test: exchangePointAndMark without mark set": function() { + initEditor('foo'); + sel.setRange(Range.fromPoints({row: 0, column: 1}, {row: 0, column: 3})); + editor.execCommand('exchangePointAndMark'); + assert.deepEqual({row: 0, column: 1}, editor.getCursorPosition(), print(editor.getCursorPosition())); + }, + + "test: exchangePointAndMark with mark set": function() { + initEditor('foo'); + editor.pushEmacsMark({row: 0, column: 1}); + editor.pushEmacsMark({row: 0, column: 2}); + editor.execCommand('exchangePointAndMark', {count: 4}); + assert.deepEqual({row: 0, column: 2}, editor.getCursorPosition(), print(editor.getCursorPosition())); + assert.deepEqual([{row: 0, column: 1}, {row: 0, column: 0}], editor.session.$emacsMarkRing, print(editor.session.$emacsMarkRing)); + }, + + "test: exchangePointAndMark with selection": function() { + initEditor('foo'); + editor.pushEmacsMark({row: 0, column: 1}); + editor.pushEmacsMark({row: 0, column: 2}); + sel.setRange(Range.fromPoints({row: 0, column: 0}, {row: 0, column: 1}), true); + editor.execCommand('exchangePointAndMark'); + assert.deepEqual({row: 0, column: 1}, editor.getCursorPosition(), print(editor.getCursorPosition())); + assert.deepEqual([{row: 0, column: 1}, {row: 0, column: 2}], editor.session.$emacsMarkRing, print(editor.session.$emacsMarkRing)); + }, + + "test: exchangePointAndMark with multi selection": function() { + initEditor('foo\nhello world\n123'); + var ranges = [[{row: 0, column: 0}, {row: 0, column: 3}], + [{row: 1, column: 0}, {row: 1, column: 5}], + [{row: 1, column: 6}, {row: 1, column: 11}]]; + ranges.forEach(function(r) { + sel.addRange(Range.fromPoints(r[0], r[1])); + }); + assert.equal("foo\nhello\nworld", editor.getSelectedText()); + editor.execCommand('exchangePointAndMark'); + assert.equal("foo\nhello\nworld", editor.getSelectedText()); + assert.deepEqual(pluck(ranges, 0), pluck(sel.getAllRanges(), 'cursor'), "selections dir not inverted"); + }, + + "test: exchangePointAndMark with multi cursors": function() { + initEditor('foo\nhello world\n123'); + var ranges = [[{row: 0, column: 0}, {row: 0, column: 3}], + [{row: 1, column: 0}, {row: 1, column: 5}], + [{row: 1, column: 6}, {row: 1, column: 11}]]; + // move cursors to the start of each range and set a mark to its end + // without selecting anything + ranges.forEach(function(r) { + editor.pushEmacsMark(r[1]); + sel.addRange(Range.fromPoints(r[0], r[0])); + }); + assert.deepEqual(pluck(ranges, 0), pluck(sel.getAllRanges(), 'cursor'), print(sel.getAllRanges())); + editor.execCommand('exchangePointAndMark'); + assert.deepEqual(pluck(ranges, 1), pluck(sel.getAllRanges(), 'cursor'), "not inverted: " + print(sel.getAllRanges())); + }, + + "test: setMark with multi cursors": function() { + initEditor('foo\nhello world\n123'); + var positions = [{row: 0, column: 0}, + {row: 1, column: 0}, + {row: 1, column: 6}]; + positions.forEach(function(p) { sel.addRange(Range.fromPoints(p,p)); }); + editor.execCommand('setMark'); + assert.deepEqual(positions, editor.session.$emacsMarkRing, print(editor.session.$emacsMarkRing)); + }, + + "test: killLine": function() { + initEditor("foo \n Hello world\n \n 123"); + sel.setRange(new Range(0, 0, 0, 2)); + editor.endOperation(); + editor.execCommand("killLine"); + assert.equal(editor.getValue(),"fo\n Hello world\n \n 123"); + editor.execCommand("killLine"); + assert.equal(editor.getValue(),"fo Hello world\n \n 123"); + editor.execCommand("killLine"); + assert.equal(editor.getValue(),"fo\n \n 123"); + editor.execCommand("killLine"); + assert.equal(editor.getValue(),"fo\n 123"); + editor.execCommand("killLine"); + assert.equal(editor.getValue(),"fo 123"); + editor.execCommand("killLine"); + assert.equal(editor.getValue(),"fo"); + editor.execCommand("killLine"); + editor.execCommand("yank"); + assert.equal(editor.getValue(),"foo \n Hello world\n \n 123"); + } + +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/keyboard/hash_handler.js b/plugins/node_modules/ace/lib/ace/keyboard/hash_handler.js new file mode 100644 index 00000000..1074fc26 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/hash_handler.js @@ -0,0 +1,256 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var keyUtil = require("../lib/keys"); +var useragent = require("../lib/useragent"); +var KEY_MODS = keyUtil.KEY_MODS; + +function HashHandler(config, platform) { + this.platform = platform || (useragent.isMac ? "mac" : "win"); + this.commands = {}; + this.commandKeyBinding = {}; + this.addCommands(config); + this.$singleCommand = true; +} + +function MultiHashHandler(config, platform) { + HashHandler.call(this, config, platform); + this.$singleCommand = false; +} + +MultiHashHandler.prototype = HashHandler.prototype; + +(function() { + + + this.addCommand = function(command) { + if (this.commands[command.name]) + this.removeCommand(command); + + this.commands[command.name] = command; + + if (command.bindKey) + this._buildKeyHash(command); + }; + + this.removeCommand = function(command, keepCommand) { + var name = command && (typeof command === 'string' ? command : command.name); + command = this.commands[name]; + if (!keepCommand) + delete this.commands[name]; + + // exhaustive search is brute force but since removeCommand is + // not a performance critical operation this should be OK + var ckb = this.commandKeyBinding; + for (var keyId in ckb) { + var cmdGroup = ckb[keyId]; + if (cmdGroup == command) { + delete ckb[keyId]; + } else if (Array.isArray(cmdGroup)) { + var i = cmdGroup.indexOf(command); + if (i != -1) { + cmdGroup.splice(i, 1); + if (cmdGroup.length == 1) + ckb[keyId] = cmdGroup[0]; + } + } + } + }; + + this.bindKey = function(key, command, position) { + if (typeof key == "object" && key) { + if (position == undefined) + position = key.position; + key = key[this.platform]; + } + if (!key) + return; + if (typeof command == "function") + return this.addCommand({exec: command, bindKey: key, name: command.name || key}); + + key.split("|").forEach(function(keyPart) { + var chain = ""; + if (keyPart.indexOf(" ") != -1) { + var parts = keyPart.split(/\s+/); + keyPart = parts.pop(); + parts.forEach(function(keyPart) { + var binding = this.parseKeys(keyPart); + var id = KEY_MODS[binding.hashId] + binding.key; + chain += (chain ? " " : "") + id; + this._addCommandToBinding(chain, "chainKeys"); + }, this); + chain += " "; + } + var binding = this.parseKeys(keyPart); + var id = KEY_MODS[binding.hashId] + binding.key; + this._addCommandToBinding(chain + id, command, position); + }, this); + }; + + function getPosition(command) { + return typeof command == "object" && command.bindKey + && command.bindKey.position + || (command.isDefault ? -100 : 0); + } + this._addCommandToBinding = function(keyId, command, position) { + var ckb = this.commandKeyBinding, i; + if (!command) { + delete ckb[keyId]; + } else if (!ckb[keyId] || this.$singleCommand) { + ckb[keyId] = command; + } else { + if (!Array.isArray(ckb[keyId])) { + ckb[keyId] = [ckb[keyId]]; + } else if ((i = ckb[keyId].indexOf(command)) != -1) { + ckb[keyId].splice(i, 1); + } + + if (typeof position != "number") { + position = getPosition(command); + } + + var commands = ckb[keyId]; + for (i = 0; i < commands.length; i++) { + var other = commands[i]; + var otherPos = getPosition(other); + if (otherPos > position) + break; + } + commands.splice(i, 0, command); + } + }; + + this.addCommands = function(commands) { + commands && Object.keys(commands).forEach(function(name) { + var command = commands[name]; + if (!command) + return; + + if (typeof command === "string") + return this.bindKey(command, name); + + if (typeof command === "function") + command = { exec: command }; + + if (typeof command !== "object") + return; + + if (!command.name) + command.name = name; + + this.addCommand(command); + }, this); + }; + + this.removeCommands = function(commands) { + Object.keys(commands).forEach(function(name) { + this.removeCommand(commands[name]); + }, this); + }; + + this.bindKeys = function(keyList) { + Object.keys(keyList).forEach(function(key) { + this.bindKey(key, keyList[key]); + }, this); + }; + + this._buildKeyHash = function(command) { + this.bindKey(command.bindKey, command); + }; + + // accepts keys in the form ctrl+Enter or ctrl-Enter + // keys without modifiers or shift only + this.parseKeys = function(keys) { + var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(x){return x;}); + var key = parts.pop(); + + var keyCode = keyUtil[key]; + if (keyUtil.FUNCTION_KEYS[keyCode]) + key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); + else if (!parts.length) + return {key: key, hashId: -1}; + else if (parts.length == 1 && parts[0] == "shift") + return {key: key.toUpperCase(), hashId: -1}; + + var hashId = 0; + for (var i = parts.length; i--;) { + var modifier = keyUtil.KEY_MODS[parts[i]]; + if (modifier == null) { + if (typeof console != "undefined") + console.error("invalid modifier " + parts[i] + " in " + keys); + return false; + } + hashId |= modifier; + } + return {key: key, hashId: hashId}; + }; + + this.findKeyCommand = function findKeyCommand(hashId, keyString) { + var key = KEY_MODS[hashId] + keyString; + return this.commandKeyBinding[key]; + }; + + this.handleKeyboard = function(data, hashId, keyString, keyCode) { + if (keyCode < 0) return; + var key = KEY_MODS[hashId] + keyString; + var command = this.commandKeyBinding[key]; + if (data.$keyChain) { + data.$keyChain += " " + key; + command = this.commandKeyBinding[data.$keyChain] || command; + } + + if (command) { + if (command == "chainKeys" || command[command.length - 1] == "chainKeys") { + data.$keyChain = data.$keyChain || key; + return {command: "null"}; + } + } + + if (data.$keyChain) { + if ((!hashId || hashId == 4) && keyString.length == 1) + data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input + else if (hashId == -1 || keyCode > 0) + data.$keyChain = ""; // reset keyChain + } + return {command: command}; + }; + + this.getStatusText = function(editor, data) { + return data.$keyChain || ""; + }; + +}).call(HashHandler.prototype); + +exports.HashHandler = HashHandler; +exports.MultiHashHandler = MultiHashHandler; +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/keybinding.js b/plugins/node_modules/ace/lib/ace/keyboard/keybinding.js new file mode 100644 index 00000000..4879a3b9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/keybinding.js @@ -0,0 +1,152 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var keyUtil = require("../lib/keys"); +var event = require("../lib/event"); + +var KeyBinding = function(editor) { + this.$editor = editor; + this.$data = {editor: editor}; + this.$handlers = []; + this.setDefaultHandler(editor.commands); +}; + +(function() { + this.setDefaultHandler = function(kb) { + this.removeKeyboardHandler(this.$defaultHandler); + this.$defaultHandler = kb; + this.addKeyboardHandler(kb, 0); + }; + + this.setKeyboardHandler = function(kb) { + var h = this.$handlers; + if (h[h.length - 1] == kb) + return; + + while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler) + this.removeKeyboardHandler(h[h.length - 1]); + + this.addKeyboardHandler(kb, 1); + }; + + this.addKeyboardHandler = function(kb, pos) { + if (!kb) + return; + if (typeof kb == "function" && !kb.handleKeyboard) + kb.handleKeyboard = kb; + var i = this.$handlers.indexOf(kb); + if (i != -1) + this.$handlers.splice(i, 1); + + if (pos == undefined) + this.$handlers.push(kb); + else + this.$handlers.splice(pos, 0, kb); + + if (i == -1 && kb.attach) + kb.attach(this.$editor); + }; + + this.removeKeyboardHandler = function(kb) { + var i = this.$handlers.indexOf(kb); + if (i == -1) + return false; + this.$handlers.splice(i, 1); + kb.detach && kb.detach(this.$editor); + return true; + }; + + this.getKeyboardHandler = function() { + return this.$handlers[this.$handlers.length - 1]; + }; + + this.getStatusText = function() { + var data = this.$data; + var editor = data.editor; + return this.$handlers.map(function(h) { + return h.getStatusText && h.getStatusText(editor, data) || ""; + }).filter(Boolean).join(" "); + }; + + this.$callKeyboardHandlers = function(hashId, keyString, keyCode, e) { + var toExecute; + var success = false; + var commands = this.$editor.commands; + + for (var i = this.$handlers.length; i--;) { + toExecute = this.$handlers[i].handleKeyboard( + this.$data, hashId, keyString, keyCode, e + ); + if (!toExecute || !toExecute.command) + continue; + + // allow keyboardHandler to consume keys + if (toExecute.command == "null") { + success = true; + } else { + success = commands.exec(toExecute.command, this.$editor, toExecute.args, e); + } + // do not stop input events to not break repeating + if (success && e && hashId != -1 && + toExecute.passEvent != true && toExecute.command.passEvent != true + ) { + event.stopEvent(e); + } + if (success) + break; + } + + if (!success && hashId == -1) { + toExecute = {command: "insertstring"}; + success = commands.exec("insertstring", this.$editor, keyString); + } + + if (success && this.$editor._signal) + this.$editor._signal("keyboardActivity", toExecute); + + return success; + }; + + this.onCommandKey = function(e, hashId, keyCode) { + var keyString = keyUtil.keyCodeToString(keyCode); + this.$callKeyboardHandlers(hashId, keyString, keyCode, e); + }; + + this.onTextInput = function(text) { + this.$callKeyboardHandlers(-1, text); + }; + +}).call(KeyBinding.prototype); + +exports.KeyBinding = KeyBinding; +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/keybinding_test.js b/plugins/node_modules/ace/lib/ace/keyboard/keybinding_test.js new file mode 100644 index 00000000..eee6d599 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/keybinding_test.js @@ -0,0 +1,69 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./../edit_session").EditSession, + Editor = require("./../editor").Editor, + MockRenderer = require("./../test/mockrenderer").MockRenderer, + assert = require("./../test/assertions"), + HashHandler = require('./hash_handler').HashHandler, + keys = require('../lib/keys'), + editor; + +function initEditor(docString) { + var doc = new EditSession(docString.split("\n")); + editor = new Editor(new MockRenderer(), doc); +} + +module.exports = { + + "test: adding a new keyboard handler does not remove the default handler": function() { + initEditor('abc'); + var handler = new HashHandler({'del': 'f1'}); + editor.keyBinding.setKeyboardHandler(handler); + editor.onCommandKey({}, 0, keys['f1']); + assert.equal('bc', editor.getValue(), "binding of new handler"); + editor.onCommandKey({}, 0, keys['delete']); + assert.equal('c', editor.getValue(), "bindings of the old handler should still work"); + } + +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/keyboard/state_handler.js b/plugins/node_modules/ace/lib/ace/keyboard/state_handler.js new file mode 100644 index 00000000..6859e743 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/state_handler.js @@ -0,0 +1,249 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +// If you're developing a new keymapping and want to get an idea what's going +// on, then enable debugging. +var DEBUG = false; + +function StateHandler(keymapping) { + this.keymapping = this.$buildKeymappingRegex(keymapping); +} + +StateHandler.prototype = { + /* + * Build the RegExp from the keymapping as RegExp can't stored directly + * in the metadata JSON and as the RegExp used to match the keys/buffer + * need to be adapted. + */ + $buildKeymappingRegex: function(keymapping) { + for (var state in keymapping) { + this.$buildBindingsRegex(keymapping[state]); + } + return keymapping; + }, + + $buildBindingsRegex: function(bindings) { + // Escape a given Regex string. + bindings.forEach(function(binding) { + if (binding.key) { + binding.key = new RegExp('^' + binding.key + '$'); + } else if (Array.isArray(binding.regex)) { + if (!('key' in binding)) + binding.key = new RegExp('^' + binding.regex[1] + '$'); + binding.regex = new RegExp(binding.regex.join('') + '$'); + } else if (binding.regex) { + binding.regex = new RegExp(binding.regex + '$'); + } + }); + }, + + $composeBuffer: function(data, hashId, key, e) { + // Initialize the data object. + if (data.state == null || data.buffer == null) { + data.state = "start"; + data.buffer = ""; + } + + var keyArray = []; + if (hashId & 1) keyArray.push("ctrl"); + if (hashId & 8) keyArray.push("command"); + if (hashId & 2) keyArray.push("option"); + if (hashId & 4) keyArray.push("shift"); + if (key) keyArray.push(key); + + var symbolicName = keyArray.join("-"); + var bufferToUse = data.buffer + symbolicName; + + // Don't add the symbolic name to the key buffer if the alt_ key is + // part of the symbolic name. If it starts with alt_, this means + // that the user hit an alt keycombo and there will be a single, + // new character detected after this event, which then will be + // added to the buffer (e.g. alt_j will result in ∆). + // + // We test for 2 and not for & 2 as we only want to exclude the case where + // the option key is pressed alone. + if (hashId != 2) { + data.buffer = bufferToUse; + } + + var bufferObj = { + bufferToUse: bufferToUse, + symbolicName: symbolicName + }; + + if (e) { + bufferObj.keyIdentifier = e.keyIdentifier; + } + + return bufferObj; + }, + + $find: function(data, buffer, symbolicName, hashId, key, keyIdentifier) { + // Holds the command to execute and the args if a command matched. + var result = {}; + + // Loop over all the bindings of the keymap until a match is found. + this.keymapping[data.state].some(function(binding) { + var match; + + // Check if the key matches. + if (binding.key && !binding.key.test(symbolicName)) { + return false; + } + + // Check if the regex matches. + if (binding.regex && !(match = binding.regex.exec(buffer))) { + return false; + } + + // Check if the match function matches. + if (binding.match && !binding.match(buffer, hashId, key, symbolicName, keyIdentifier)) { + return false; + } + + // Check for disallowed matches. + if (binding.disallowMatches) { + for (var i = 0; i < binding.disallowMatches.length; i++) { + if (!!match[binding.disallowMatches[i]]) { + return false; + } + } + } + + // If there is a command to execute, then figure out the + // command and the arguments. + if (binding.exec) { + result.command = binding.exec; + + // Build the arguments. + if (binding.params) { + var value; + result.args = {}; + binding.params.forEach(function(param) { + if (param.match != null && match != null) { + value = match[param.match] || param.defaultValue; + } else { + value = param.defaultValue; + } + + if (param.type === 'number') { + value = parseInt(value); + } + + result.args[param.name] = value; + }); + } + data.buffer = ""; + } + + // Handle the 'then' property. + if (binding.then) { + data.state = binding.then; + data.buffer = ""; + } + + // If no command is set, then execute the "null" fake command. + if (result.command == null) { + result.command = "null"; + } + + if (DEBUG) { + console.log("KeyboardStateMapper#find", binding); + } + return true; + }); + + if (result.command) { + return result; + } else { + data.buffer = ""; + return false; + } + }, + + /* + * This function is called by keyBinding. + */ + handleKeyboard: function(data, hashId, key, keyCode, e) { + if (hashId == -1) + hashId = 0; + // If we pressed any command key but no other key, then ignore the input. + // Otherwise "shift-" is added to the buffer, and later on "shift-g" + // which results in "shift-shift-g" which doesn't make sense. + if (hashId != 0 && (key == "" || key == String.fromCharCode(0))) { + return null; + } + + // Compute the current value of the keyboard input buffer. + var r = this.$composeBuffer(data, hashId, key, e); + var buffer = r.bufferToUse; + var symbolicName = r.symbolicName; + var keyId = r.keyIdentifier; + + r = this.$find(data, buffer, symbolicName, hashId, key, keyId); + if (DEBUG) { + console.log("KeyboardStateMapper#match", buffer, symbolicName, r); + } + + return r; + } +}; + +/* + * This is a useful matching function and therefore is defined here so that + * users of KeyboardStateMapper can use it. + * + * @return {Boolean} If no command key (Command|Option|Shift|Ctrl) is pressed, it + * returns true. If the only the Shift key is pressed + a character + * true is returned as well. Otherwise, false is returned. + * Summing up, the function returns true whenever the user typed + * a normal character on the keyboard and no shortcut. + */ +exports.matchCharacterOnly = function(buffer, hashId, key, symbolicName) { + // If no command keys are pressed, then catch the input. + if (hashId == 0) { + return true; + } + // If only the shift key is pressed and a character key, then + // catch that input as well. + else if ((hashId == 4) && key.length == 1) { + return true; + } + // Otherwise, we let the input got through. + else { + return false; + } +}; + +exports.StateHandler = StateHandler; +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/sublime.js b/plugins/node_modules/ace/lib/ace/keyboard/sublime.js new file mode 100644 index 00000000..88b81871 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/sublime.js @@ -0,0 +1,465 @@ +// DO NOT COMMIT TO OPEN SOURCE ACE! + +define(function(require, exports, module) { +"use strict"; + +var keyUtil = require("../lib/keys"); +var oop = require("../lib/oop"); +var useragent = require("../lib/useragent"); +var HashHandler = require("../keyboard/hash_handler").HashHandler; + + +var keyMods = (function() { + var keyMods = []; + var mods = ["meta", "ctrl", "alt", "shift"]; + for (var i = mods.length; i--;) { + keyMods[i] = mods.filter(function(x) { + return i & keyUtil.KEY_MODS[x]; + }).join("-") + "-"; + } + return keyMods; +})(); + +var commandMap = { + "auto_complete" : "complete", + "build" : "build", + "clear_bookmarks" : false, + "clear_fields" : false, + "close" : false, + "close_file" : "closetab", + "close_pane" : "closepane", + "close_tag" : false, + "close_window" : "closealltabs", + "commit_completion": false, + "context_menu" : false, + "decrease_font_size" : "smallerfont", + "increase_font_size" : "largerfont" + // "copy" + // "cut" + // "delete_to_mark" + // "delete_word" : + // "duplicate_line" : "duplicate" + // "exec" + // "expand_selection" + // "find_all" + // "find_all_under" + // "find_next" + // "find_prev" + // "find_under" + // "find_under_expand" + // "find_under_expand_skip" + // "find_under_prev" + // "focus_group" + // "focus_neighboring_group" + // "focus_side_bar" + // "fold" + // "fold_by_level" + // "fold_tag_attributes" + // "goto_definition" + // "goto_symbol_in_project" + // "hide_auto_complete" + // "hide_overlay" + // "hide_panel" + // "indent" + // "insert" + // "insert_best_completion" + // "insert_snippet" + // "join_lines" + // "jump_back" + // "jump_forward" + // "left_delete" + // "lower_case" + // "move" + // "move_to" + // "move_to_group" + // "move_to_neighboring_group" + // "new_file" + // "new_pane" + // "new_window" + // "next_bookmark" + // "next_field" + // "next_misspelling" + // "next_result" + // "next_view" + // "next_view_in_stack" + // "paste" + // "paste_and_indent" + // "paste_from_history" + // "prev_bookmark" + // "prev_field" + // "prev_misspelling" + // "prev_result" + // "prev_view" + // "prev_view_in_stack" + // "prompt_open_file" + // "prompt_save_as" + // "prompt_select_workspace" + // "redo" + // "redo_or_repeat" + // "reindent" + // "reopen_last_file" + // "replace_all" + // "replace_completion_with_auto_complete" + // "replace_completion_with_next_completion" + // "replace_next" + // "right_delete" + // "run_macro" + // "run_macro_file" + // "save" + // "scroll_lines" + // "select_all" + // "select_all_bookmarks" + // "select_by_index" + // "select_lines" + // "select_to_mark" + // "set_layout" + // "set_mark" + // "show_at_center" + // "show_overlay" + // "show_panel" + // "show_scope_name" + // "single_selection" + // "slurp_find_string" + // "slurp_replace_string" + // "soft_redo" + // "soft_undo" + // "sort_lines" + // "split_selection_into_lines" + // "swap_line_down" + // "swap_line_up" + // "swap_with_mark" + // "switch_file" + // "toggle_bookmark" + // "toggle_case_sensitive" + // "toggle_comment" + // "toggle_distraction_free" + // "toggle_full_screen" + // "toggle_overwrite" + // "toggle_preserve_case" + // "toggle_record_macro" + // "toggle_regex" + // "toggle_setting" + // "toggle_side_bar" + // "toggle_whole_word" + // "transpose" + // "undo" + // "unfold" + // "unfold_all" + // "unindent" + // "upper_case" + // "wrap_block" + // "wrap_lines" + // "yank" +}; + +function getKeyValue(key, ace) { + switch (key) { + case "auto_complete_visible": + // Returns true if the autocomplete list is visible. + break; + case "has_next_field": + // Returns true if a next snippet field is available. + break; + case "has_prev_field": + // Returns true if a previous snippet field is available. + break; + case "num_selections": + // Returns the number of selections. + return ace.selection.ranges.length || 1; + break; + case "overlay_visible": + // Returns true if any overlay is visible. + break; + case "panel_visible": + // Returns true if any panel is visible. + break; + case "following_text": + // Restricts the test just to the text following the caret. + var pos = ace.getCursorPosition(); + return ace.session.getLine(pos.row).substr(pos.column); + break; + case "preceding_text": + // Restricts the test just to the text preceding the caret. + pos = ace.getCursorPosition(); + return ace.session.getLine(pos.row).substr(pos.column); + break; + case "selection_empty": + // Returns true if the selection is an empty region. + break; + case "text": + // Restricts the test just to the selected text. + return ace.getSelectedText(); + break; + case "selector": + // Returns the current scope. + break; + case "panel_has_focus": + // Returns true if the current focus is on a panel. + break; + case "panel": + // Returns true if the panel given as operand is visible. + break; + default: + // case "setting.x": + // Returns the value of the x setting. x can be any string. + } +} + +var operators = { + isTrue: function(a){return !!a}, + equal: function(a,b){return a === b}, + not_equal: function(a,b){return a !== b}, + regex_match: function(a,b){ return typeof a == "string" && a.match(b) }, + not_regex_match: function(a,b){return typeof a == "string" && !a.match(b)}, + regex_contains: function(a,b){return typeof a == "string" && a.search(b) !== -1}, + not_regex_contains: function(a,b){return typeof a == "string" && a.search(b) === -1} +}; + +function testIsAvailable(editor, args, e) { + if (!this.context) + return true; + return this.context.some(function(ctx) { + if (!ctx.key) + return; + if (ctx.operator && ctx.operator.indexOf("regex") != -1) { + if (ctx.operand && typeof ctx.operand == "string") + ctx.operand = new RegExp(ctx.operand); + } + var op = operators[ctx.operator] || ( + ctx.operand ? operators.equal : operators.isTrue); + + var key = getKeyValue(ctx.key, editor, args, e); + return op(key, ctx.operand); + }); +} + +function SublimeHandler() { + this.commands = {}; + this.commandKeyBinding = {}; +} + +(function() { + oop.implement(this, HashHandler.prototype); + + var sublimeToAceKey = { + keypad0: "numpad0", + keypad1: "numpad1", + keypad2: "numpad2", + keypad3: "numpad3", + keypad4: "numpad4", + keypad5: "numpad5", + keypad6: "numpad6", + keypad7: "numpad7", + keypad8: "numpad8", + keypad9: "numpad9", + keypad_period: ".", + keypad_divide: "/", + keypad_multiply: "*", + keypad_minus: "-", + keypad_plus: "+", + keypad_enter: "numpadEnter", + equals: "=", + plus: "+" + }; + + this.setKeyMap = function(keyMap) { + var prev + var all = keyMap.map(function(cm) { + return cm.context && cm.context.operator + }).sort().filter(function(x) { + if (x == prev) + return false; + prev = x; + return true; + }); + console.log(all) + ace.setValue(JSON.stringify(all)) + }; + + this.addCommand = function(command) { + if (this.commands[command.name]) + this.removeCommand(command); + + this.commands[command.name] = command; + + if (command.bindKey) + this._buildKeyHash(command); + }; + + this.removeCommand = function(command) { + var name = (typeof command === 'string' ? command : command.name); + command = this.commands[name]; + delete this.commands[name]; + + // exhaustive search is brute force but since removeCommand is + // not a performance critical operation this should be OK + var ckb = this.commandKeyBinding; + for (var hashId in ckb) { + for (var key in ckb[hashId]) { + if (ckb[hashId][key] == command) + delete ckb[hashId][key]; + } + } + }; + + this.bindKey = function(key, command) { + if(!key) + return; + if (typeof command == "function") { + this.addCommand({exec: command, bindKey: key, name: command.name || key}); + return; + } + + var ckb = this.commandKeyBinding; + key.split("|").forEach(function(keyPart) { + var binding = this.parseKeys(keyPart, command); + var hashId = binding.hashId; + (ckb[hashId] || (ckb[hashId] = {}))[binding.key] = command; + }, this); + }; + + this.addCommands = function(commands) { + commands && Object.keys(commands).forEach(function(name) { + var command = commands[name]; + if (!command) + return; + + if (typeof command === "string") + return this.bindKey(command, name); + + if (typeof command === "function") + command = { exec: command }; + + if (typeof command !== "object") + return; + + if (!command.name) + command.name = name; + + this.addCommand(command); + }, this); + }; + + this.removeCommands = function(commands) { + Object.keys(commands).forEach(function(name) { + this.removeCommand(commands[name]); + }, this); + }; + + this.bindKeys = function(keyList) { + Object.keys(keyList).forEach(function(key) { + this.bindKey(key, keyList[key]); + }, this); + }; + + this._buildKeyHash = function(command) { + var binding = command.bindKey; + if (!binding) + return; + + var key = typeof binding == "string" ? binding: binding[this.platform]; + this.bindKey(key, command); + }; + + // accepts keys in the form ctrl+Enter or ctrl-Enter + // keys without modifiers or shift only + this.parseKeys = function(keys) { + // todo support keychains + if (keys.indexOf(" ") != -1) + keys = keys.split(/\s+/).pop(); + + var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(x){return x}); + var key = parts.pop(); + + var keyCode = keyUtil[key]; + if (keyUtil.FUNCTION_KEYS[keyCode]) + key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); + else if (!parts.length) + return {key: key, hashId: -1}; + else if (parts.length == 1 && parts[0] == "shift") + return {key: key.toUpperCase(), hashId: -1}; + + var hashId = 0; + for (var i = parts.length; i--;) { + var modifier = keyUtil.KEY_MODS[parts[i]]; + if (modifier == null) { + if (typeof console != "undefined") + console.error("invalid modifier " + parts[i] + " in " + keys); + return false; + } + hashId |= modifier; + } + return {key: key, hashId: hashId}; + }; + + this.bindKey = function(key, command) { + if (!key) + return; + + var ckb = this.commandKeyBinding; + key.split("|").forEach(function(keyPart) { + keyPart = keyPart.toLowerCase(); + ckb[keyPart] = command; + // register all partial key combos as null commands + // to be able to activate key combos with arbitrary length + // Example: if keyPart is "C-c C-l t" then "C-c C-l t" will + // get command assigned and "C-c" and "C-c C-l" will get + // a null command assigned in this.commandKeyBinding. For + // the lookup logic see handleKeyboard() + var keyParts = keyPart.split(" ").slice(0,-1); + keyParts.reduce(function(keyMapKeys, keyPart, i) { + var prefix = keyMapKeys[i-1] ? keyMapKeys[i-1] + ' ' : ''; + return keyMapKeys.concat([prefix + keyPart]); + }, []).forEach(function(keyPart) { + if (!ckb[keyPart]) ckb[keyPart] = "null"; + }); + }, this); + }; + + this.handleKeyboard = function(data, hashId, key, keyCode) { + var editor = data.editor; + // insertstring data.count times + if (hashId == -1) { + editor.pushEmacsMark(); + if (data.count) { + var str = new Array(data.count + 1).join(key); + data.count = null; + return {command: "insertstring", args: str}; + } + } + + if (key == "\x00") return undefined; + + var modifier = keyMods[hashId]; + + if (modifier) key = modifier + key; + + // Key combos like CTRL+X H build up the data.keyChain + if (data.keyChain) key = data.keyChain += " " + key; + + // Key combo prefixes get stored as "null" (String!) in this + // this.commandKeyBinding. When encountered no command is invoked but we + // buld up data.keyChain + var command = this.commandKeyBinding[key]; + data.keyChain = command == "null" ? key : ""; + + // there really is no command + if (!command) return undefined; + + // we pass b/c of key combo + if (command === "null") return {command: "null"}; + + + + return {command: command, args: command.args}; + }; + + +}).call(SublimeHandler.prototype); + + +exports.handler = new SublimeHandler(); +var keyMap = require("../requirejs/text!./sublime/windows.sublime-keymap"); +exports.handler.setKeyMap(eval("(" + keyMap + ")")) + +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/textarea.js b/plugins/node_modules/ace/lib/ace/keyboard/textarea.js new file mode 100644 index 00000000..d0e2088e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/textarea.js @@ -0,0 +1,88 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var HashHandler = require("./hash_handler").HashHandler; +exports.handler = new HashHandler(); + +[{ + bindKey: "Shift-Tab|Tab", + command: "passKeysToBrowser" +}, { + bindKey: {win: "Ctrl-L", mac: "Cmd-L"}, + command: "passKeysToBrowser" +}, { + bindKey: {win: "Ctrl-G", mac: "Cmd-G"}, + command: "gotoline" +}, { + bindKey: {win: "Ctrl-T|Ctrl-Shift-T|Ctrl-K", mac: "Cmd-T|Cmd-Shift-T"}, + // TODO can't used shared passKeysToBrowser command since passEvent from it is ignored + command: { + name: "passKeysToBrowser", + exec: function() {}, + passEvent: true, + readOnly: true + } +}, { + bindKey: {win: "Ctrl-G", mac: "Cmd-G"}, + command: "passKeysToBrowser" +}, { + bindKey: {win: "Ctrl-G", mac: "Cmd-G"}, + command: "passKeysToBrowser" +}, { + command: "golineup", + bindKey: {win: null, mac: "Ctrl-P"} +}, { + command: "golinedown", + bindKey: {win: null, mac: "Ctrl-N"} +}, { + command: "gotoleft", + bindKey: {win: null, mac: "Ctrl-B"} +}, { + command: "gotoright", + bindKey: {win: null, mac: "Ctrl-F"} +}, { + command: "gotolineend", + bindKey: {win: null, mac: "Ctrl-E"} +}, { + command: "gotolinestart", + bindKey: {win: null, mac: "Ctrl-A"} +} +].forEach(function(k) { + var bindKey = k.bindKey; + if (typeof bindKey == "object") + bindKey = bindKey[exports.handler.platform]; + exports.handler.bindKey(bindKey, k.command); +}); +exports.handler.$id = "ace/keyboard/textarea"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/textinput.js b/plugins/node_modules/ace/lib/ace/keyboard/textinput.js new file mode 100644 index 00000000..f9496a25 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/textinput.js @@ -0,0 +1,501 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var BROKEN_SETDATA = useragent.isChrome < 18; +var USE_IE_MIME_TYPE = useragent.isIE; +var HAS_FOCUS_ARGS = useragent.isChrome > 63; + +var TextInputIOS = require("./textinput_ios").TextInput; +var TextInput = function(parentNode, host) { + if (useragent.isIOS) + return TextInputIOS.call(this, parentNode, host); + + var text = dom.createElement("textarea"); + text.className = "ace_text-input"; + + text.setAttribute("wrap", "off"); + text.setAttribute("autocorrect", "off"); + text.setAttribute("autocapitalize", "off"); + text.setAttribute("spellcheck", false); + + text.style.opacity = "0"; + parentNode.insertBefore(text, parentNode.firstChild); + + var PLACEHOLDER = "\u2028\u2028"; + + var copied = false; + var pasted = false; + var inComposition = false; + var tempStyle = ''; + var isSelectionEmpty = true; + var copyWithEmptySelection = false; + + // FOCUS + // ie9 throws error if document.activeElement is accessed too soon + try { var isFocused = document.activeElement === text; } catch(e) {} + + event.addListener(text, "blur", function(e) { + host.onBlur(e); + isFocused = false; + }); + event.addListener(text, "focus", function(e) { + isFocused = true; + host.onFocus(e); + resetSelection(); + }); + this.$focusScroll = false; + this.focus = function() { + if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser") + return text.focus({ preventScroll: true }); + var top = text.style.top; + text.style.position = "fixed"; + text.style.top = "0px"; + var isTransformed = text.getBoundingClientRect().top != 0; + var ancestors = []; + if (isTransformed) { + var t = text.parentElement; + while (t) { + ancestors.push(t); + t.setAttribute("ace_nocontext", true); + t = t.parentElement; + } + } + text.focus({ preventScroll: true }); + if (isTransformed) { + ancestors.forEach(function(p) { + p.removeAttribute("ace_nocontext"); + }); + } + setTimeout(function() { + text.style.position = ""; + if (text.style.top == "0px") + text.style.top = top; + }, 0); + }; + this.blur = function() { + text.blur(); + }; + this.isFocused = function() { + return isFocused; + }; + + // modifying selection of blured textarea can focus it (chrome mac/linux) + var syncSelection = lang.delayedCall(function() { + isFocused && resetSelection(isSelectionEmpty); + }); + var syncValue = lang.delayedCall(function() { + if (!inComposition) { + text.value = PLACEHOLDER; + isFocused && resetSelection(); + } + }); + + function resetSelection(isEmpty) { + isEmpty = copyWithEmptySelection ? false : isEmpty; + if (inComposition) + return; + + // this prevents infinite recursion on safari 8 + // see https://github.com/ajaxorg/ace/issues/2114 + inComposition = true; + + if (inputHandler) { + var selectionStart = 0; + var selectionEnd = isEmpty ? 0 : text.value.length - 1; + } else { + var selectionStart = isEmpty ? 2 : 1; + var selectionEnd = 2; + } + // on firefox this throws if textarea is hidden + try { + text.setSelectionRange(selectionStart, selectionEnd); + } catch(e){} + + inComposition = false; + } + + function resetValue() { + if (inComposition) + return; + text.value = PLACEHOLDER; + //http://code.google.com/p/chromium/issues/detail?id=76516 + if (useragent.isWebKit) + syncValue.schedule(); + } + + useragent.isWebKit || host.addEventListener('changeSelection', function() { + if (host.selection.isEmpty() != isSelectionEmpty) { + isSelectionEmpty = !isSelectionEmpty; + syncSelection.schedule(); + } + }); + + resetValue(); + if (isFocused) + host.onFocus(); + + + var isAllSelected = function(text) { + return text.selectionStart === 0 && text.selectionEnd === text.value.length; + }; + + var onSelect = function(e) { + if (copied) { + copied = false; + } else if (isAllSelected(text)) { + host.selectAll(); + resetSelection(); + } else if (inputHandler) { + resetSelection(host.selection.isEmpty()); + } + }; + + var inputHandler = null; + this.setInputHandler = function(cb) {inputHandler = cb;}; + this.getInputHandler = function() {return inputHandler;}; + var afterContextMenu = false; + + var sendText = function(data) { + if (inputHandler) { + data = inputHandler(data); + inputHandler = null; + } + if (pasted) { + resetSelection(); + if (data) + host.onPaste(data); + pasted = false; + } else if (data == PLACEHOLDER.charAt(0)) { + if (afterContextMenu) + host.execCommand("del", {source: "ace"}); + else // some versions of android do not fire keydown when pressing backspace + host.execCommand("backspace", {source: "ace"}); + } else { + if (data.substring(0, 2) == PLACEHOLDER) + data = data.substr(2); + else if (data.charAt(0) == PLACEHOLDER.charAt(0)) + data = data.substr(1); + else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) + data = data.slice(0, -1); + // can happen if undo in textarea isn't stopped + if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) + data = data.slice(0, -1); + + if (data) + host.onTextInput(data); + } + if (afterContextMenu) + afterContextMenu = false; + }; + var onInput = function(e) { + // console.log("onInput", inComposition) + if (inComposition) + return; + var data = text.value; + sendText(data); + resetValue(); + }; + + var handleClipboardData = function(e, data, forceIEMime) { + var clipboardData = e.clipboardData || window.clipboardData; + if (!clipboardData || BROKEN_SETDATA) + return; + // using "Text" doesn't work on old webkit but ie needs it + var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; + try { + if (data) { + // Safari 5 has clipboardData object, but does not handle setData() + return clipboardData.setData(mime, data) !== false; + } else { + return clipboardData.getData(mime); + } + } catch(e) { + if (!forceIEMime) + return handleClipboardData(e, data, true); + } + }; + + var doCopy = function(e, isCut) { + var data = host.getCopyText(); + if (!data) + return event.preventDefault(e); + + if (handleClipboardData(e, data)) { + isCut ? host.onCut() : host.onCopy(); + event.preventDefault(e); + } else { + copied = true; + text.value = data; + text.select(); + setTimeout(function(){ + copied = false; + resetValue(); + resetSelection(); + isCut ? host.onCut() : host.onCopy(); + }); + } + }; + + var onCut = function(e) { + doCopy(e, true); + }; + + var onCopy = function(e) { + doCopy(e, false); + }; + + var onPaste = function(e) { + var data = handleClipboardData(e); + if (typeof data == "string") { + if (data) + host.onPaste(data, e); + if (useragent.isIE) + setTimeout(resetSelection); + event.preventDefault(e); + } + else { + text.value = ""; + pasted = true; + } + }; + + event.addCommandKeyListener(text, host.onCommandKey.bind(host)); + + event.addListener(text, "select", onSelect); + + event.addListener(text, "input", onInput); + + event.addListener(text, "cut", onCut); + event.addListener(text, "copy", onCopy); + event.addListener(text, "paste", onPaste); + + + // Opera has no clipboard events + if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) { + event.addListener(parentNode, "keydown", function(e) { + if ((useragent.isMac && !e.metaKey) || !e.ctrlKey) + return; + + switch (e.keyCode) { + case 67: + onCopy(e); + break; + case 86: + onPaste(e); + break; + case 88: + onCut(e); + break; + } + }); + } + + + // COMPOSITION + var onCompositionStart = function(e) { + if (inComposition || !host.onCompositionStart || host.$readOnly) + return; + // console.log("onCompositionStart", inComposition) + inComposition = {}; + inComposition.canUndo = host.session.$undoManager; + host.onCompositionStart(); + setTimeout(onCompositionUpdate, 0); + host.on("mousedown", onCompositionEnd); + if (inComposition.canUndo && !host.selection.isEmpty()) { + host.insert(""); + host.session.markUndoGroup(); + host.selection.clearSelection(); + } + host.session.markUndoGroup(); + }; + + var onCompositionUpdate = function() { + // console.log("onCompositionUpdate", inComposition && JSON.stringify(text.value)) + if (!inComposition || !host.onCompositionUpdate || host.$readOnly) + return; + var val = text.value.replace(/\u2028/g, ""); + if (inComposition.lastValue === val) return; + + host.onCompositionUpdate(val); + if (inComposition.lastValue) + host.undo(); + if (inComposition.canUndo) + inComposition.lastValue = val; + if (inComposition.lastValue) { + var r = host.selection.getRange(); + host.insert(inComposition.lastValue); + host.session.markUndoGroup(); + inComposition.range = host.selection.getRange(); + host.selection.setRange(r); + host.selection.clearSelection(); + } + }; + + var onCompositionEnd = function(e) { + if (!host.onCompositionEnd || host.$readOnly) return; + // console.log("onCompositionEnd", inComposition &&inComposition.lastValue) + var c = inComposition; + inComposition = false; + var timer = setTimeout(function() { + timer = null; + var str = text.value.replace(/\u2028/g, ""); + // console.log(str, c.lastValue) + if (inComposition) + return; + else if (str == c.lastValue) + resetValue(); + else if (!c.lastValue && str) { + resetValue(); + sendText(str); + } + }); + inputHandler = function compositionInputHandler(str) { + // console.log("onCompositionEnd", str, c.lastValue) + if (timer) + clearTimeout(timer); + str = str.replace(/\u2028/g, ""); + if (str == c.lastValue) + return ""; + if (c.lastValue && timer) + host.undo(); + return str; + }; + host.onCompositionEnd(); + host.removeListener("mousedown", onCompositionEnd); + if (e.type == "compositionend" && c.range) { + host.selection.setRange(c.range); + } + // Workaround for #3027, #3045, #3097, #3100, #3249 + var needsOnInput = useragent.isIE || + (useragent.isChrome && useragent.isChrome >= 53) || + (useragent.isWebKit && useragent.isWebKit >= 603); + + if (needsOnInput) { + onInput(); + } + }; + + + + var syncComposition = lang.delayedCall(onCompositionUpdate, 50); + + event.addListener(text, "compositionstart", onCompositionStart); + event.addListener(text, "compositionupdate", function(){syncComposition.schedule();}); + event.addListener(text, "keyup", function(){syncComposition.schedule();}); + event.addListener(text, "keydown", function(){syncComposition.schedule();}); + event.addListener(text, "compositionend", onCompositionEnd); + + this.getElement = function() { + return text; + }; + + this.setReadOnly = function(readOnly) { + text.readOnly = readOnly; + }; + + this.setCopyWithEmptySelection = function(value) { + copyWithEmptySelection = value; + }; + + this.onContextMenu = function(e) { + afterContextMenu = true; + resetSelection(host.selection.isEmpty()); + host._emit("nativecontextmenu", {target: host, domEvent: e}); + this.moveToMouse(e, true); + }; + + this.moveToMouse = function(e, bringToFront) { + if (!tempStyle) + tempStyle = text.style.cssText; + text.style.cssText = (bringToFront ? "z-index:100000;" : "") + + "height:" + text.style.height + ";" + + (useragent.isIE ? "opacity:0.1;" : ""); + + var rect = host.container.getBoundingClientRect(); + var style = dom.computedStyle(host.container); + var top = rect.top + (parseInt(style.borderTopWidth) || 0); + var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); + var maxTop = rect.bottom - top - text.clientHeight -2; + var move = function(e) { + text.style.left = e.clientX - left - 2 + "px"; + text.style.top = Math.min(e.clientY - top - 2, maxTop) + "px"; + }; + move(e); + + if (e.type != "mousedown") + return; + + if (host.renderer.$keepTextAreaAtCursor) + host.renderer.$keepTextAreaAtCursor = null; + + clearTimeout(closeTimeout); + // on windows context menu is opened after mouseup + if (useragent.isWin) + event.capture(host.container, move, onContextMenuClose); + }; + + this.onContextMenuClose = onContextMenuClose; + var closeTimeout; + function onContextMenuClose() { + clearTimeout(closeTimeout); + closeTimeout = setTimeout(function () { + if (tempStyle) { + text.style.cssText = tempStyle; + tempStyle = ''; + } + if (host.renderer.$keepTextAreaAtCursor == null) { + host.renderer.$keepTextAreaAtCursor = true; + host.renderer.$moveTextAreaToCursor(); + } + }, 0); + } + + var onContextMenu = function(e) { + host.textInput.onContextMenu(e); + onContextMenuClose(); + }; + event.addListener(text, "mouseup", onContextMenu); + event.addListener(text, "mousedown", function(e) { + e.preventDefault(); + onContextMenuClose(); + }); + event.addListener(host.renderer.scroller, "contextmenu", onContextMenu); + event.addListener(text, "contextmenu", onContextMenu); +}; + +exports.TextInput = TextInput; +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/textinput_ios.js b/plugins/node_modules/ace/lib/ace/keyboard/textinput_ios.js new file mode 100644 index 00000000..12f6aceb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/textinput_ios.js @@ -0,0 +1,527 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var KEYS = require("../lib/keys"); +var MODS = KEYS.KEY_MODS; +var BROKEN_SETDATA = useragent.isChrome < 18; +var USE_IE_MIME_TYPE = useragent.isIE; + +var TextInput = function(parentNode, host) { + var self = this; + var text = dom.createElement("textarea"); + text.className = useragent.isIOS ? "ace_text-input ace_text-input-ios" : "ace_text-input"; + + if (useragent.isTouchPad) + text.setAttribute("x-palm-disable-auto-cap", true); + + text.setAttribute("wrap", "off"); + text.setAttribute("autocorrect", "off"); + text.setAttribute("autocapitalize", "off"); + text.setAttribute("spellcheck", false); + + text.style.opacity = "0"; + parentNode.insertBefore(text, parentNode.firstChild); + + var PLACEHOLDER = "\n aaaa a\n"; + + var copied = false; + var cut = false; + var pasted = false; + var inComposition = false; + var tempStyle = ''; + var isSelectionEmpty = true; + + // FOCUS + // ie9 throws error if document.activeElement is accessed too soon + try { var isFocused = document.activeElement === text; } catch(e) {} + + event.addListener(text, "blur", function(e) { + host.onBlur(e); + isFocused = false; + }); + event.addListener(text, "focus", function(e) { + isFocused = true; + host.onFocus(e); + resetSelection(); + }); + this.focus = function() { + if (tempStyle) return text.focus(); + text.style.position = "fixed"; + text.focus(); + }; + this.blur = function() { + text.blur(); + }; + this.isFocused = function() { + return isFocused; + }; + + // modifying selection of blured textarea can focus it (chrome mac/linux) + var syncSelection = lang.delayedCall(function() { + isFocused && resetSelection(isSelectionEmpty); + }); + var syncValue = lang.delayedCall(function() { + if (!inComposition) { + text.value = PLACEHOLDER; + isFocused && resetSelection(); + } + }); + + function resetSelection(isEmpty) { + if (inComposition) + return; + + // this prevents infinite recursion on safari 8 + // see https://github.com/ajaxorg/ace/issues/2114 + inComposition = true; + + if (inputHandler) { + selectionStart = 0; + selectionEnd = isEmpty ? 0 : text.value.length - 1; + } else { + var selectionStart = 4; + var selectionEnd = 5; + } + // on firefox this throws if textarea is hidden + try { + text.setSelectionRange(selectionStart, selectionEnd); + } catch(e) {} + + inComposition = false; + } + + function resetValue() { + if (inComposition) + return; + text.value = PLACEHOLDER; + //http://code.google.com/p/chromium/issues/detail?id=76516 + if (useragent.isWebKit) + syncValue.schedule(); + } + + useragent.isWebKit || host.addEventListener('changeSelection', function() { + if (host.selection.isEmpty() != isSelectionEmpty) { + isSelectionEmpty = !isSelectionEmpty; + syncSelection.schedule(); + } + }); + + resetValue(); + if (isFocused) + host.onFocus(); + + + var isAllSelected = function(text) { + return text.selectionStart === 0 && text.selectionEnd === text.value.length; + }; + + var onSelect = function(e) { + if (isAllSelected(text)) { + host.selectAll(); + resetSelection(); + } else if (inputHandler) { + resetSelection(host.selection.isEmpty()); + } + }; + + var inputHandler = null; + this.setInputHandler = function(cb) {inputHandler = cb;}; + this.getInputHandler = function() {return inputHandler;}; + var afterContextMenu = false; + + var sendText = function(data) { + if (text.selectionStart === 4 && text.selectionEnd === 5) { + return; + } + if (inputHandler) { + data = inputHandler(data); + inputHandler = null; + } + if (pasted) { + resetSelection(); + if (data) + host.onPaste(data); + pasted = false; + } else if (data == PLACEHOLDER.substr(0) && text.selectionStart === 4) { + if (afterContextMenu) + host.execCommand("del", {source: "ace"}); + else // some versions of android do not fire keydown when pressing backspace + host.execCommand("backspace", {source: "ace"}); + } else if (!copied) { + if (data.substring(0, 9) == PLACEHOLDER && data.length > PLACEHOLDER.length) + data = data.substr(9); + else if (data.substr(0, 4) == PLACEHOLDER.substr(0, 4)) + data = data.substr(4, data.length - PLACEHOLDER.length + 1); + else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) + data = data.slice(0, -1); + // can happen if undo in textarea isn't stopped + if (data == PLACEHOLDER.charAt(0)) { + // Do nothing + } else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) + data = data.slice(0, -1); + + if (data) + host.onTextInput(data); + } + if (copied) { + copied = false; + } + if (afterContextMenu) + afterContextMenu = false; + }; + var onInput = function(e) { + // console.log("onInput", inComposition) + if (inComposition) + return; + var data = text.value; + sendText(data); + resetValue(); + }; + + var handleClipboardData = function(e, data, forceIEMime) { + var clipboardData = e.clipboardData || window.clipboardData; + if (!clipboardData || BROKEN_SETDATA) + return; + // using "Text" doesn't work on old webkit but ie needs it + var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; + try { + if (data) { + // Safari 5 has clipboardData object, but does not handle setData() + return clipboardData.setData(mime, data) !== false; + } else { + return clipboardData.getData(mime); + } + } catch(e) { + if (!forceIEMime) + return handleClipboardData(e, data, true); + } + }; + + var doCopy = function(e, isCut) { + var data = host.getCopyText(); + if (!data) + return event.preventDefault(e); + + if (handleClipboardData(e, data)) { + if (useragent.isIOS) { + cut = isCut; + text.value = "\n aa" + data + "a a\n"; + text.setSelectionRange(4, 4 + data.length); + copied = { + value: data + }; + } + isCut ? host.onCut() : host.onCopy(); + if (!useragent.isIOS) event.preventDefault(e); + } else { + copied = true; + text.value = data; + text.select(); + setTimeout(function(){ + copied = false; + resetValue(); + resetSelection(); + isCut ? host.onCut() : host.onCopy(); + }); + } + }; + + var onCut = function(e) { + doCopy(e, true); + }; + + var onCopy = function(e) { + doCopy(e, false); + }; + + var onPaste = function(e) { + var data = handleClipboardData(e); + if (typeof data == "string") { + if (data) + host.onPaste(data, e); + if (useragent.isIE) + setTimeout(resetSelection); + event.preventDefault(e); + } + else { + text.value = ""; + pasted = true; + } + }; + + event.addCommandKeyListener(text, host.onCommandKey.bind(host)); + + event.addListener(text, "select", onSelect); + + event.addListener(text, "input", onInput); + + event.addListener(text, "cut", onCut); + event.addListener(text, "copy", onCopy); + event.addListener(text, "paste", onPaste); + + + // COMPOSITION + var onCompositionStart = function(e) { + if (inComposition || !host.onCompositionStart || host.$readOnly) + return; + // console.log("onCompositionStart", inComposition) + inComposition = {}; + inComposition.canUndo = host.session.$undoManager; + host.onCompositionStart(); + setTimeout(onCompositionUpdate, 0); + host.on("mousedown", onCompositionEnd); + if (inComposition.canUndo && !host.selection.isEmpty()) { + host.insert(""); + host.session.markUndoGroup(); + host.selection.clearSelection(); + } + host.session.markUndoGroup(); + }; + + var onCompositionUpdate = function() { + // console.log("onCompositionUpdate", inComposition && JSON.stringify(text.value)) + if (!inComposition || !host.onCompositionUpdate || host.$readOnly) + return; + var val = text.value.replace(/\x01/g, ""); + if (inComposition.lastValue === val) return; + + host.onCompositionUpdate(val); + if (inComposition.lastValue) + host.undo(); + if (inComposition.canUndo) + inComposition.lastValue = val; + if (inComposition.lastValue) { + var r = host.selection.getRange(); + host.insert(inComposition.lastValue); + host.session.markUndoGroup(); + inComposition.range = host.selection.getRange(); + host.selection.setRange(r); + host.selection.clearSelection(); + } + }; + + var onCompositionEnd = function(e) { + if (!host.onCompositionEnd || host.$readOnly) return; + // console.log("onCompositionEnd", inComposition &&inComposition.lastValue) + var c = inComposition; + inComposition = false; + var timer = setTimeout(function() { + timer = null; + var str = text.value.replace(/\x01/g, ""); + // console.log(str, c.lastValue) + if (inComposition) + return; + else if (str == c.lastValue) + resetValue(); + else if (!c.lastValue && str) { + resetValue(); + sendText(str); + } + }); + inputHandler = function compositionInputHandler(str) { + // console.log("onCompositionEnd", str, c.lastValue) + if (timer) + clearTimeout(timer); + str = str.replace(/\x01/g, ""); + if (str == c.lastValue) + return ""; + if (c.lastValue && timer) + host.undo(); + return str; + }; + host.onCompositionEnd(); + host.removeListener("mousedown", onCompositionEnd); + if (e.type == "compositionend" && c.range) { + host.selection.setRange(c.range); + } + // Workaround for #3027, #3045, #3097, #3100, #3249 + var needsOnInput = + (!!useragent.isChrome && useragent.isChrome >= 53) || + (!!useragent.isWebKit && useragent.isWebKit >= 603); + + if (needsOnInput) { + onInput(); + } + }; + + + + var syncComposition = lang.delayedCall(onCompositionUpdate, 50); + + event.addListener(text, "compositionstart", onCompositionStart); + event.addListener(text, "compositionupdate", function(){syncComposition.schedule();}); + event.addListener(text, "keyup", function(){syncComposition.schedule();}); + event.addListener(text, "keydown", function(){syncComposition.schedule();}); + event.addListener(text, "compositionend", onCompositionEnd); + + this.getElement = function() { + return text; + }; + + this.setReadOnly = function(readOnly) { + text.readOnly = readOnly; + }; + + this.onContextMenu = function(e) { + afterContextMenu = true; + resetSelection(host.selection.isEmpty()); + host._emit("nativecontextmenu", {target: host, domEvent: e}); + this.moveToMouse(e, true); + }; + + this.moveToMouse = function(e, bringToFront) { + if (!tempStyle) + tempStyle = text.style.cssText; + text.style.cssText = (bringToFront ? "z-index:100000;" : "") + + "height:" + text.style.height + ";" + + (useragent.isIE ? "opacity:0.1;" : ""); + + var rect = host.container.getBoundingClientRect(); + var style = dom.computedStyle(host.container); + var top = rect.top + (parseInt(style.borderTopWidth) || 0); + var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); + var maxTop = rect.bottom - top - text.clientHeight -2; + var move = function(e) { + text.style.left = e.clientX - left - 2 + "px"; + text.style.top = Math.min(e.clientY - top - 2, maxTop) + "px"; + }; + move(e); + + if (e.type != "mousedown") + return; + + if (host.renderer.$keepTextAreaAtCursor) + host.renderer.$keepTextAreaAtCursor = null; + + clearTimeout(closeTimeout); + // on windows context menu is opened after mouseup + if (useragent.isWin) + event.capture(host.container, move, onContextMenuClose); + }; + + this.onContextMenuClose = onContextMenuClose; + var closeTimeout; + function onContextMenuClose() { + clearTimeout(closeTimeout); + closeTimeout = setTimeout(function () { + if (tempStyle) { + text.style.cssText = tempStyle; + tempStyle = ''; + } + if (host.renderer.$keepTextAreaAtCursor == null) { + host.renderer.$keepTextAreaAtCursor = true; + host.renderer.$moveTextAreaToCursor(); + } + }, 0); + } + + var onContextMenu = function(e) { + host.textInput.onContextMenu(e); + onContextMenuClose(); + }; + event.addListener(text, "mouseup", onContextMenu); + event.addListener(text, "mousedown", function(e) { + e.preventDefault(); + onContextMenuClose(); + }); + event.addListener(host.renderer.scroller, "contextmenu", onContextMenu); + event.addListener(text, "contextmenu", onContextMenu); + + if (useragent.isIOS) { + var typingResetTimeout = null; + var typing = false; + + parentNode.addEventListener("keydown", function (e) { + if (typingResetTimeout) clearTimeout(typingResetTimeout); + typing = true; + }); + + parentNode.addEventListener("keyup", function (e) { + typingResetTimeout = setTimeout(function () { + typing = false; + }, 100); + }); + + // IOS doesn't fire events for arrow keys, but this unique hack changes everything! + var detectArrowKeys = function(e) { + if (document.activeElement !== text) return; + if (typing) return; + + if (cut) { + return setTimeout(function () { + cut = false; + }, 100); + } + var selectionStart = text.selectionStart; + var selectionEnd = text.selectionEnd; + text.setSelectionRange(4, 5); + if (selectionStart == selectionEnd) { + switch (selectionStart) { + case 0: host.onCommandKey(null, 0, KEYS.up); break; + case 1: host.onCommandKey(null, 0, KEYS.home); break; + case 2: host.onCommandKey(null, MODS.option, KEYS.left); break; + case 4: host.onCommandKey(null, 0, KEYS.left); break; + case 5: host.onCommandKey(null, 0, KEYS.right); break; + case 7: host.onCommandKey(null, MODS.option, KEYS.right); break; + case 8: host.onCommandKey(null, 0, KEYS.end); break; + case 9: host.onCommandKey(null, 0, KEYS.down); break; + } + } else { + switch (selectionEnd) { + case 6: host.onCommandKey(null, MODS.shift, KEYS.right); break; + case 7: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.right); break; + case 8: host.onCommandKey(null, MODS.shift, KEYS.end); break; + case 9: host.onCommandKey(null, MODS.shift, KEYS.down); break; + } + switch (selectionStart) { + case 0: host.onCommandKey(null, MODS.shift, KEYS.up); break; + case 1: host.onCommandKey(null, MODS.shift, KEYS.home); break; + case 2: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.left); break; + case 3: host.onCommandKey(null, MODS.shift, KEYS.left); break; + } + } + }; + // On iOS, "selectionchange" can only be attached to the document object... + document.addEventListener("selectionchange", detectArrowKeys); + host.on("destroy", function() { + document.removeEventListener("selectionchange", detectArrowKeys); + }); + } +}; + +exports.TextInput = TextInput; +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/vim.js b/plugins/node_modules/ace/lib/ace/keyboard/vim.js new file mode 100644 index 00000000..eebabc5a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/vim.js @@ -0,0 +1,6263 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** + * Supported keybindings: + * Too many to list. Refer to defaultKeyMap below. + * + * Supported Ex commands: + * Refer to defaultExCommandMap below. + * + * Registers: unnamed, -, a-z, A-Z, 0-9 + * (Does not respect the special case for number registers when delete + * operator is made with these commands: %, (, ), , /, ?, n, N, {, } ) + * TODO: Implement the remaining registers. + * + * Marks: a-z, A-Z, and 0-9 + * TODO: Implement the remaining special marks. They have more complex + * behavior. + * + * Events: + * 'vim-mode-change' - raised on the editor anytime the current mode changes, + * Event object: {mode: "visual", subMode: "linewise"} + * + * Code structure: + * 1. Default keymap + * 2. Variable declarations and short basic helpers + * 3. Instance (External API) implementation + * 4. Internal state tracking objects (input state, counter) implementation + * and instanstiation + * 5. Key handler (the main command dispatcher) implementation + * 6. Motion, operator, and action implementations + * 7. Helper functions for the key handler, motions, operators, and actions + * 8. Set up Vim to work as a keymap for CodeMirror. + * 9. Ex command implementations. + */ + +define(function(require, exports, module) { + 'use strict'; + + function log() { + var d = ""; + function format(p) { + if (typeof p != "object") + return p + ""; + if ("line" in p) { + return p.line + ":" + p.ch; + } + if ("anchor" in p) { + return format(p.anchor) + "->" + format(p.head); + } + if (Array.isArray(p)) + return "[" + p.map(function(x) { + return format(x); + }) + "]"; + return JSON.stringify(p); + } + for (var i = 0; i < arguments.length; i++) { + var p = arguments[i]; + var f = format(p); + d += f + " "; + } + console.log(d); + } + var Range = require("../range").Range; + var EventEmitter = require("../lib/event_emitter").EventEmitter; + var dom = require("../lib/dom"); + var oop = require("../lib/oop"); + var KEYS = require("../lib/keys"); + var event = require("../lib/event"); + var Search = require("../search").Search; + var useragent = require("../lib/useragent"); + var SearchHighlight = require("../search_highlight").SearchHighlight; + var multiSelectCommands = require("../commands/multi_select_commands"); + var TextModeTokenRe = require("../mode/text").Mode.prototype.tokenRe; + require("../multi_select"); + + var CodeMirror = function(ace) { + this.ace = ace; + this.state = {}; + this.marks = {}; + this.$uid = 0; + this.onChange = this.onChange.bind(this); + this.onSelectionChange = this.onSelectionChange.bind(this); + this.onBeforeEndOperation = this.onBeforeEndOperation.bind(this); + this.ace.on('change', this.onChange); + this.ace.on('changeSelection', this.onSelectionChange); + this.ace.on('beforeEndOperation', this.onBeforeEndOperation); + }; + CodeMirror.Pos = function(line, ch) { + if (!(this instanceof Pos)) return new Pos(line, ch); + this.line = line; this.ch = ch; + }; + CodeMirror.defineOption = function(name, val, setter) {}; + CodeMirror.commands = { + redo: function(cm) { cm.ace.redo(); }, + undo: function(cm) { cm.ace.undo(); }, + newlineAndIndent: function(cm) { cm.ace.insert("\n"); } + }; + CodeMirror.keyMap = {}; + CodeMirror.addClass = CodeMirror.rmClass = + CodeMirror.e_stop = function() {}; + CodeMirror.keyName = function(e) { + if (e.key) return e.key; + var key = (KEYS[e.keyCode] || ""); + if (key.length == 1) key = key.toUpperCase(); + key = event.getModifierString(e).replace(/(^|-)\w/g, function(m) { + return m.toUpperCase(); + }) + key; + return key; + }; + CodeMirror.keyMap['default'] = function(key) { + return function(cm) { + var cmd = cm.ace.commands.commandKeyBinding[key.toLowerCase()]; + return cmd && cm.ace.execCommand(cmd) !== false; + }; + }; + CodeMirror.lookupKey = function lookupKey(key, map, handle) { + if (typeof map == "string") + map = CodeMirror.keyMap[map]; + var found = typeof map == "function" ? map(key) : map[key]; + if (found === false) return "nothing"; + if (found === "...") return "multi"; + if (found != null && handle(found)) return "handled"; + + if (map.fallthrough) { + if (!Array.isArray(map.fallthrough)) + return lookupKey(key, map.fallthrough, handle); + for (var i = 0; i < map.fallthrough.length; i++) { + var result = lookupKey(key, map.fallthrough[i], handle); + if (result) return result; + } + } + }; + + CodeMirror.signal = function(o, name, e) { return o._signal(name, e) }; + CodeMirror.on = event.addListener; + CodeMirror.off = event.removeListener; + CodeMirror.isWordChar = function(ch) { + if (ch < "\x7f") return /^\w$/.test(ch); + TextModeTokenRe.lastIndex = 0; + return TextModeTokenRe.test(ch); + }; + +(function() { + oop.implement(CodeMirror.prototype, EventEmitter); + + this.destroy = function() { + this.ace.off('change', this.onChange); + this.ace.off('changeSelection', this.onSelectionChange); + this.ace.off('beforeEndOperation', this.onBeforeEndOperation); + this.removeOverlay(); + }; + this.virtualSelectionMode = function() { + return this.ace.inVirtualSelectionMode && this.ace.selection.index; + }; + this.onChange = function(delta) { + var change = { text: delta.action[0] == 'i' ? delta.lines : [] }; + var curOp = this.curOp = this.curOp || {}; + if (!curOp.changeHandlers) + curOp.changeHandlers = this._eventRegistry["change"] && this._eventRegistry["change"].slice(); + if (this.virtualSelectionMode()) return; + if (!curOp.lastChange) { + curOp.lastChange = curOp.change = change; + } else { + curOp.lastChange.next = curOp.lastChange = change; + } + this.$updateMarkers(delta); + }; + this.onSelectionChange = function() { + var curOp = this.curOp = this.curOp || {}; + if (!curOp.cursorActivityHandlers) + curOp.cursorActivityHandlers = this._eventRegistry["cursorActivity"] && this._eventRegistry["cursorActivity"].slice(); + this.curOp.cursorActivity = true; + if (this.ace.inMultiSelectMode) { + this.ace.keyBinding.removeKeyboardHandler(multiSelectCommands.keyboardHandler); + } + }; + this.operation = function(fn, force) { + if (!force && this.curOp || force && this.curOp && this.curOp.force) { + return fn(); + } + if (force || !this.ace.curOp) { + if (this.curOp) + this.onBeforeEndOperation(); + } + if (!this.ace.curOp) { + var prevOp = this.ace.prevOp; + this.ace.startOperation({ + command: { name: "vim", scrollIntoView: "cursor" } + }); + } + var curOp = this.curOp = this.curOp || {}; + this.curOp.force = force; + var result = fn(); + if (this.ace.curOp && this.ace.curOp.command.name == "vim") { + this.ace.endOperation(); + if (!curOp.cursorActivity && !curOp.lastChange && prevOp) + this.ace.prevOp = prevOp; + } + if (force || !this.ace.curOp) { + if (this.curOp) + this.onBeforeEndOperation(); + } + return result; + }; + this.onBeforeEndOperation = function() { + var op = this.curOp; + if (op) { + if (op.change) { this.signal("change", op.change, op); } + if (op && op.cursorActivity) { this.signal("cursorActivity", null, op); } + this.curOp = null; + } + }; + + this.signal = function(eventName, e, handlers) { + var listeners = handlers ? handlers[eventName + "Handlers"] + : (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i=0; i 0) { + point.row += rowShift; + point.column += point.row == end.row ? colShift : 0; + continue; + } + if (!isInsert && cmp2 <= 0) { + point.row = start.row; + point.column = start.column; + if (cmp2 === 0) + point.bias = 1; + } + } + }; + var Marker = function(cm, id, row, column) { + this.cm = cm; + this.id = id; + this.row = row; + this.column = column; + cm.marks[this.id] = this; + }; + Marker.prototype.clear = function() { delete this.cm.marks[this.id] }; + Marker.prototype.find = function() { return toCmPos(this) }; + this.setBookmark = function(cursor, options) { + var bm = new Marker(this, this.$uid++, cursor.line, cursor.ch); + if (!options || !options.insertLeft) + bm.$insertRight = true; + this.marks[bm.id] = bm; + return bm; + }; + this.moveH = function(increment, unit) { + if (unit == 'char') { + var sel = this.ace.selection; + sel.clearSelection(); + sel.moveCursorBy(0, increment); + } + }; + this.findPosV = function(start, amount, unit, goalColumn) { + if (unit == 'page') { + var renderer = this.ace.renderer; + var config = renderer.layerConfig; + amount = amount * Math.floor(config.height / config.lineHeight); + unit = 'line'; + } + if (unit == 'line') { + var screenPos = this.ace.session.documentToScreenPosition(start.line, start.ch); + if (goalColumn != null) + screenPos.column = goalColumn; + screenPos.row += amount; + // not what codemirror does but vim mode needs only this + screenPos.row = Math.min(Math.max(0, screenPos.row), this.ace.session.getScreenLength() - 1); + var pos = this.ace.session.screenToDocumentPosition(screenPos.row, screenPos.column); + return toCmPos(pos); + } else { + debugger; + } + }; + this.charCoords = function(pos, mode) { + if (mode == 'div' || !mode) { + var sc = this.ace.session.documentToScreenPosition(pos.line, pos.ch); + return {left: sc.column, top: sc.row}; + }if (mode == 'local') { + var renderer = this.ace.renderer; + var sc = this.ace.session.documentToScreenPosition(pos.line, pos.ch); + var lh = renderer.layerConfig.lineHeight; + var cw = renderer.layerConfig.characterWidth; + var top = lh * sc.row; + return {left: sc.column * cw, top: top, bottom: top + lh}; + } + }; + this.coordsChar = function(pos, mode) { + var renderer = this.ace.renderer; + if (mode == 'local') { + var row = Math.max(0, Math.floor(pos.top / renderer.lineHeight)); + var col = Math.max(0, Math.floor(pos.left / renderer.characterWidth)); + var ch = renderer.session.screenToDocumentPosition(row, col); + return toCmPos(ch); + } else if (mode == 'div') { + throw "not implemented"; + } + }; + this.getSearchCursor = function(query, pos, caseFold) { + var caseSensitive = false; + var isRegexp = false; + if (query instanceof RegExp && !query.global) { + caseSensitive = !query.ignoreCase; + query = query.source; + isRegexp = true; + } + var search = new Search(); + if (pos.ch == undefined) pos.ch = Number.MAX_VALUE; + var acePos = {row: pos.line, column: pos.ch}; + var cm = this; + var last = null; + return { + findNext: function() { return this.find(false) }, + findPrevious: function() {return this.find(true) }, + find: function(back) { + search.setOptions({ + needle: query, + caseSensitive: caseSensitive, + wrap: false, + backwards: back, + regExp: isRegexp, + start: last || acePos + }); + var range = search.find(cm.ace.session); + if (range && range.isEmpty()) { + if (cm.getLine(range.start.row).length == range.start.column) { + search.$options.start = range; + range = search.find(cm.ace.session); + } + } + last = range; + return last; + }, + from: function() { return last && toCmPos(last.start) }, + to: function() { return last && toCmPos(last.end) }, + replace: function(text) { + if (last) { + last.end = cm.ace.session.doc.replace(last, text); + } + } + }; + }; + this.scrollTo = function(x, y) { + var renderer = this.ace.renderer; + var config = renderer.layerConfig; + var maxHeight = config.maxHeight; + maxHeight -= (renderer.$size.scrollerHeight - renderer.lineHeight) * renderer.$scrollPastEnd; + if (y != null) this.ace.session.setScrollTop(Math.max(0, Math.min(y, maxHeight))); + if (x != null) this.ace.session.setScrollLeft(Math.max(0, Math.min(x, config.width))); + }; + this.scrollInfo = function() { return 0; }; + this.scrollIntoView = function(pos, margin) { + if (pos) { + var renderer = this.ace.renderer; + var viewMargin = { "top": 0, "bottom": margin }; + renderer.scrollCursorIntoView(toAcePos(pos), + (renderer.lineHeight * 2) / renderer.$size.scrollerHeight, viewMargin); + } + }; + this.getLine = function(row) { return this.ace.session.getLine(row) }; + this.getRange = function(s, e) { + return this.ace.session.getTextRange(new Range(s.line, s.ch, e.line, e.ch)); + }; + this.replaceRange = function(text, s, e) { + if (!e) e = s; + return this.ace.session.replace(new Range(s.line, s.ch, e.line, e.ch), text); + }; + this.replaceSelections = function(p) { + var sel = this.ace.selection; + if (this.ace.inVirtualSelectionMode) { + this.ace.session.replace(sel.getRange(), p[0] || ""); + return; + } + sel.inVirtualSelectionMode = true; + var ranges = sel.rangeList.ranges; + if (!ranges.length) ranges = [this.ace.multiSelect.getRange()]; + for (var i = ranges.length; i--;) + this.ace.session.replace(ranges[i], p[i] || ""); + sel.inVirtualSelectionMode = false; + }; + this.getSelection = function() { + return this.ace.getSelectedText(); + }; + this.getSelections = function() { + return this.listSelections().map(function(x) { + return this.getRange(x.anchor, x.head); + }, this); + }; + this.getInputField = function() { + return this.ace.textInput.getElement(); + }; + this.getWrapperElement = function() { + return this.ace.containter; + }; + var optMap = { + indentWithTabs: "useSoftTabs", + indentUnit: "tabSize", + tabSize: "tabSize", + firstLineNumber: "firstLineNumber", + readOnly: "readOnly" + }; + this.setOption = function(name, val) { + this.state[name] = val; + switch (name) { + case 'indentWithTabs': + name = optMap[name]; + val = !val; + break; + default: + name = optMap[name]; + } + if (name) + this.ace.setOption(name, val); + }; + this.getOption = function(name, val) { + var aceOpt = optMap[name]; + if (aceOpt) + val = this.ace.getOption(aceOpt); + switch (name) { + case 'indentWithTabs': + name = optMap[name]; + return !val; + } + return aceOpt ? val : this.state[name]; + }; + this.toggleOverwrite = function(on) { + this.state.overwrite = on; + return this.ace.setOverwrite(on); + }; + this.addOverlay = function(o) { + if (!this.$searchHighlight || !this.$searchHighlight.session) { + var highlight = new SearchHighlight(null, "ace_highlight-marker", "text"); + var marker = this.ace.session.addDynamicMarker(highlight); + highlight.id = marker.id; + highlight.session = this.ace.session; + highlight.destroy = function(o) { + highlight.session.off("change", highlight.updateOnChange); + highlight.session.off("changeEditor", highlight.destroy); + highlight.session.removeMarker(highlight.id); + highlight.session = null; + }; + highlight.updateOnChange = function(delta) { + var row = delta.start.row; + if (row == delta.end.row) highlight.cache[row] = undefined; + else highlight.cache.splice(row, highlight.cache.length); + }; + highlight.session.on("changeEditor", highlight.destroy); + highlight.session.on("change", highlight.updateOnChange); + } + var re = new RegExp(o.query.source, "gm" + (o.query.ignoreCase ? "i" : "")); + this.$searchHighlight = o.highlight = highlight; + this.$searchHighlight.setRegexp(re); + this.ace.renderer.updateBackMarkers(); + }; + this.removeOverlay = function(o) { + if (this.$searchHighlight && this.$searchHighlight.session) { + this.$searchHighlight.destroy(); + } + }; + this.getScrollInfo = function() { + var renderer = this.ace.renderer; + var config = renderer.layerConfig; + return { + left: renderer.scrollLeft, + top: renderer.scrollTop, + height: config.maxHeight, + width: config.width, + clientHeight: config.height, + clientWidth: config.width + }; + }; + this.getValue = function() { + return this.ace.getValue(); + }; + this.setValue = function(v) { + return this.ace.setValue(v); + }; + this.getTokenTypeAt = function(pos) { + var token = this.ace.session.getTokenAt(pos.line, pos.ch); + return token && /comment|string/.test(token.type) ? "string" : ""; + }; + this.findMatchingBracket = function(pos) { + var m = this.ace.session.findMatchingBracket(toAcePos(pos)); + return {to: m && toCmPos(m)}; + }; + this.indentLine = function(line, method) { + if (method === true) + this.ace.session.indentRows(line, line, "\t"); + else if (method === false) + this.ace.session.outdentRows(new Range(line, 0, line, 0)); + }; + this.indexFromPos = function(pos) { + return this.ace.session.doc.positionToIndex(toAcePos(pos)); + }; + this.posFromIndex = function(index) { + return toCmPos(this.ace.session.doc.indexToPosition(index)); + }; + this.focus = function(index) { + return this.ace.focus(); + }; + this.blur = function(index) { + return this.ace.blur(); + }; + this.defaultTextHeight = function(index) { + return this.ace.renderer.layerConfig.lineHeight; + }; + this.scanForBracket = function(pos, dir, _, options) { + var re = options.bracketRegex.source; + if (dir == 1) { + var m = this.ace.session.$findClosingBracket(re.slice(1, 2), toAcePos(pos), /paren|text/); + } else { + var m = this.ace.session.$findOpeningBracket(re.slice(-2, -1), {row: pos.line, column: pos.ch + 1}, /paren|text/); + } + return m && {pos: toCmPos(m)}; + }; + this.refresh = function() { + return this.ace.resize(true); + }; + this.getMode = function() { + return { name : this.getOption("mode") }; + } +}).call(CodeMirror.prototype); + function toAcePos(cmPos) { + return {row: cmPos.line, column: cmPos.ch}; + } + function toCmPos(acePos) { + return new Pos(acePos.row, acePos.column); + } + + var StringStream = CodeMirror.StringStream = function(string, tabSize) { + this.pos = this.start = 0; + this.string = string; + this.tabSize = tabSize || 8; + this.lastColumnPos = this.lastColumnValue = 0; + this.lineStart = 0; + }; + + StringStream.prototype = { + eol: function() {return this.pos >= this.string.length;}, + sol: function() {return this.pos == this.lineStart;}, + peek: function() {return this.string.charAt(this.pos) || undefined;}, + next: function() { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++); + }, + eat: function(match) { + var ch = this.string.charAt(this.pos); + if (typeof match == "string") var ok = ch == match; + else var ok = ch && (match.test ? match.test(ch) : match(ch)); + if (ok) {++this.pos; return ch;} + }, + eatWhile: function(match) { + var start = this.pos; + while (this.eat(match)){} + return this.pos > start; + }, + eatSpace: function() { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; + return this.pos > start; + }, + skipToEnd: function() {this.pos = this.string.length;}, + skipTo: function(ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true;} + }, + backUp: function(n) {this.pos -= n;}, + column: function() { + throw "not implemented"; + }, + indentation: function() { + throw "not implemented"; + }, + match: function(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; + var substr = this.string.substr(this.pos, pattern.length); + if (cased(substr) == cased(pattern)) { + if (consume !== false) this.pos += pattern.length; + return true; + } + } else { + var match = this.string.slice(this.pos).match(pattern); + if (match && match.index > 0) return null; + if (match && consume !== false) this.pos += match[0].length; + return match; + } + }, + current: function(){return this.string.slice(this.start, this.pos);}, + hideFirstChars: function(n, inner) { + this.lineStart += n; + try { return inner(); } + finally { this.lineStart -= n; } + } + }; + +// todo replace with showCommandLine +CodeMirror.defineExtension = function(name, fn) { + CodeMirror.prototype[name] = fn; +}; +dom.importCssString(".normal-mode .ace_cursor{\ + border: 1px solid red;\ + background-color: red;\ + opacity: 0.5;\ +}\ +.normal-mode .ace_hidden-cursors .ace_cursor{\ + background-color: transparent;\ +}\ +.ace_dialog {\ + position: absolute;\ + left: 0; right: 0;\ + background: white;\ + z-index: 15;\ + padding: .1em .8em;\ + overflow: hidden;\ + color: #333;\ +}\ +.ace_dialog-top {\ + border-bottom: 1px solid #eee;\ + top: 0;\ +}\ +.ace_dialog-bottom {\ + border-top: 1px solid #eee;\ + bottom: 0;\ +}\ +.ace_dialog input {\ + border: none;\ + outline: none;\ + background: transparent;\ + width: 20em;\ + color: inherit;\ + font-family: monospace;\ +}", "vimMode"); +(function() { + function closeNotification(cm, newVal) { + if (cm.state.currentNotificationClose) + cm.state.currentNotificationClose(); + cm.state.currentNotificationClose = newVal; + } + + CodeMirror.defineExtension("openDialog", function(template, callback, options) { + if (this.virtualSelectionMode()) return; + if (!options) options = {}; + + closeNotification(this, null); + + if (!options.onKeyDown && !options.onKeyUp) { + return this.openNotification(template, {}); + } + + var closed = false, me = this; + function close(newVal) { + if (typeof newVal == 'string') { + ace.cmdLine.setValue(prefix + newVal, 1); + } else { + if (closed) return; + closed = true; + me.focus(); + + CodeMirror.off(inp, "keyup", onKeyup); + ace.cmdLine.container.removeEventListener("keydown", onKeyDown, true); + CodeMirror.off(inp, "blur", onBlur); + + ace.cmdLine.setValue(""); + } + } + + var ace = this.ace; + var cm = this; + var prefix = template; + if (prefix == ":") + return; + ace.showCommandLine(prefix, { + focus: true + }); + + if (options.value) { + var start = ace.cmdLine.getCursorPosition(); + var end = ace.cmdLine.session.insert(options.value); + ace.cmdLine.selection.setRange(Range.fromPoints(start, end)); + } + + function getVal() { + return ace.cmdLine.getValue().substring(prefix.length); + } + var inp = ace.cmdLine.textInput.getElement(); + var onKeyup = function(e) { + cm.operation(function() { + options.onKeyUp(e, getVal(), close); + if (!ace.cmdLine.getValue()) + close(); + }); + }; + var onKeyDown = function(e) { + cm.operation(function() { + var val = getVal(); + if (options && options.onKeyDown && options.onKeyDown(e, val, close)) { return; } + if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) { + CodeMirror.e_stop(e); + close(); + } + if (e.keyCode == 13) callback(val); + }); + }; + var onBlur = close; + if (options.onKeyUp) + CodeMirror.on(inp, "keyup", onKeyup); + ace.cmdLine.container.addEventListener("keydown", onKeyDown, true); + if (options.closeOnBlur !== false) + CodeMirror.on(inp, "blur", onBlur); + + + return close; + }); + + CodeMirror.defineExtension("openNotification", function(template, options) { + if (this.virtualSelectionMode()) return; + closeNotification(this, close); + var ace = this.ace; + ace.showCommandLine(undefined, { + timeout: options.duration, + message: template.replace(/<[^>]+>/g, ""), + focus: false + }); + var closed = false; + + function close() { + if (closed || !ace.cmdLine) return; + closed = true; + ace.cmdLine.setMessage(""); + } + return close; + }); +})(); + + + var defaultKeymap = [ + // Key to key mapping. This goes first to make it possible to override + // existing mappings. + { keys: '', type: 'keyToKey', toKeys: 'h' }, + { keys: '', type: 'keyToKey', toKeys: 'l' }, + { keys: '', type: 'keyToKey', toKeys: 'k' }, + { keys: '', type: 'keyToKey', toKeys: 'j' }, + { keys: '', type: 'keyToKey', toKeys: 'l' }, + { keys: '', type: 'keyToKey', toKeys: 'h', context: 'normal'}, + { keys: '', type: 'keyToKey', toKeys: 'W' }, + { keys: '', type: 'keyToKey', toKeys: 'B', context: 'normal' }, + { keys: '', type: 'keyToKey', toKeys: 'w' }, + { keys: '', type: 'keyToKey', toKeys: 'b', context: 'normal' }, + { keys: '', type: 'keyToKey', toKeys: 'j' }, + { keys: '', type: 'keyToKey', toKeys: 'k' }, + { keys: '', type: 'keyToKey', toKeys: '' }, + { keys: '', type: 'keyToKey', toKeys: '' }, + { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, + { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, + { keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' }, + { keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'}, + { keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' }, + { keys: 'S', type: 'keyToKey', toKeys: 'VdO', context: 'visual' }, + { keys: '', type: 'keyToKey', toKeys: '0' }, + { keys: '', type: 'keyToKey', toKeys: '$' }, + { keys: '', type: 'keyToKey', toKeys: '' }, + { keys: '', type: 'keyToKey', toKeys: '' }, + { keys: '', type: 'keyToKey', toKeys: 'j^', context: 'normal' }, + // Motions + { keys: 'H', type: 'motion', motion: 'moveToTopLine', motionArgs: { linewise: true, toJumplist: true }}, + { keys: 'M', type: 'motion', motion: 'moveToMiddleLine', motionArgs: { linewise: true, toJumplist: true }}, + { keys: 'L', type: 'motion', motion: 'moveToBottomLine', motionArgs: { linewise: true, toJumplist: true }}, + { keys: 'h', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: false }}, + { keys: 'l', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: true }}, + { keys: 'j', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, linewise: true }}, + { keys: 'k', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, linewise: true }}, + { keys: 'gj', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: true }}, + { keys: 'gk', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: false }}, + { keys: 'w', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false }}, + { keys: 'W', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false, bigWord: true }}, + { keys: 'e', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, inclusive: true }}, + { keys: 'E', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, bigWord: true, inclusive: true }}, + { keys: 'b', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }}, + { keys: 'B', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false, bigWord: true }}, + { keys: 'ge', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, inclusive: true }}, + { keys: 'gE', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, bigWord: true, inclusive: true }}, + { keys: '{', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: false, toJumplist: true }}, + { keys: '}', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: true, toJumplist: true }}, + { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: true }}, + { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: false }}, + { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: true, explicitRepeat: true }}, + { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: false, explicitRepeat: true }}, + { keys: 'gg', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: false, explicitRepeat: true, linewise: true, toJumplist: true }}, + { keys: 'G', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: true, explicitRepeat: true, linewise: true, toJumplist: true }}, + { keys: '0', type: 'motion', motion: 'moveToStartOfLine' }, + { keys: '^', type: 'motion', motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: '+', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true }}, + { keys: '-', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, toFirstChar:true }}, + { keys: '_', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true, repeatOffset:-1 }}, + { keys: '$', type: 'motion', motion: 'moveToEol', motionArgs: { inclusive: true }}, + { keys: '%', type: 'motion', motion: 'moveToMatchedSymbol', motionArgs: { inclusive: true, toJumplist: true }}, + { keys: 'f', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: true , inclusive: true }}, + { keys: 'F', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: false }}, + { keys: 't', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: true, inclusive: true }}, + { keys: 'T', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: false }}, + { keys: ';', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: true }}, + { keys: ',', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: false }}, + { keys: '\'', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true, linewise: true}}, + { keys: '`', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true}}, + { keys: ']`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true } }, + { keys: '[`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false } }, + { keys: ']\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true, linewise: true } }, + { keys: '[\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false, linewise: true } }, + // the next two aren't motions but must come before more general motion declarations + { keys: ']p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true, matchIndent: true}}, + { keys: '[p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true, matchIndent: true}}, + { keys: ']', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: true, toJumplist: true}}, + { keys: '[', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: false, toJumplist: true}}, + { keys: '|', type: 'motion', motion: 'moveToColumn'}, + { keys: 'o', type: 'motion', motion: 'moveToOtherHighlightedEnd', context:'visual'}, + { keys: 'O', type: 'motion', motion: 'moveToOtherHighlightedEnd', motionArgs: {sameLine: true}, context:'visual'}, + // Operators + { keys: 'd', type: 'operator', operator: 'delete' }, + { keys: 'y', type: 'operator', operator: 'yank' }, + { keys: 'c', type: 'operator', operator: 'change' }, + { keys: '>', type: 'operator', operator: 'indent', operatorArgs: { indentRight: true }}, + { keys: '<', type: 'operator', operator: 'indent', operatorArgs: { indentRight: false }}, + { keys: 'g~', type: 'operator', operator: 'changeCase' }, + { keys: 'gu', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, isEdit: true }, + { keys: 'gU', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, isEdit: true }, + { keys: 'n', type: 'motion', motion: 'findNext', motionArgs: { forward: true, toJumplist: true }}, + { keys: 'N', type: 'motion', motion: 'findNext', motionArgs: { forward: false, toJumplist: true }}, + // Operator-Motion dual commands + { keys: 'x', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorMotionArgs: { visualLine: false }}, + { keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }}, + { keys: 'D', type: 'operatorMotion', operator: 'delete', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, + { keys: 'D', type: 'operator', operator: 'delete', operatorArgs: { linewise: true }, context: 'visual'}, + { keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, + { keys: 'Y', type: 'operator', operator: 'yank', operatorArgs: { linewise: true }, context: 'visual'}, + { keys: 'C', type: 'operatorMotion', operator: 'change', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, + { keys: 'C', type: 'operator', operator: 'change', operatorArgs: { linewise: true }, context: 'visual'}, + { keys: '~', type: 'operatorMotion', operator: 'changeCase', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorArgs: { shouldMoveCursor: true }, context: 'normal'}, + { keys: '~', type: 'operator', operator: 'changeCase', context: 'visual'}, + { keys: '', type: 'operatorMotion', operator: 'delete', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }, context: 'insert' }, + // Actions + { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: true }}, + { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: false }}, + { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: true, linewise: true }}, + { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: false, linewise: true }}, + { keys: 'a', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'charAfter' }, context: 'normal' }, + { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'eol' }, context: 'normal' }, + { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'endOfSelectedArea' }, context: 'visual' }, + { keys: 'i', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'inplace' }, context: 'normal' }, + { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'firstNonBlank'}, context: 'normal' }, + { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'startOfSelectedArea' }, context: 'visual' }, + { keys: 'o', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: true }, context: 'normal' }, + { keys: 'O', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: false }, context: 'normal' }, + { keys: 'v', type: 'action', action: 'toggleVisualMode' }, + { keys: 'V', type: 'action', action: 'toggleVisualMode', actionArgs: { linewise: true }}, + { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, + { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, + { keys: 'gv', type: 'action', action: 'reselectLastSelection' }, + { keys: 'J', type: 'action', action: 'joinLines', isEdit: true }, + { keys: 'p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true }}, + { keys: 'P', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true }}, + { keys: 'r', type: 'action', action: 'replace', isEdit: true }, + { keys: '@', type: 'action', action: 'replayMacro' }, + { keys: 'q', type: 'action', action: 'enterMacroRecordMode' }, + // Handle Replace-mode as a special case of insert mode. + { keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }}, + { keys: 'u', type: 'action', action: 'undo', context: 'normal' }, + { keys: 'u', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, context: 'visual', isEdit: true }, + { keys: 'U', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, context: 'visual', isEdit: true }, + { keys: '', type: 'action', action: 'redo' }, + { keys: 'm', type: 'action', action: 'setMark' }, + { keys: '"', type: 'action', action: 'setRegister' }, + { keys: 'zz', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }}, + { keys: 'z.', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: 'zt', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }}, + { keys: 'z', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: 'z-', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }}, + { keys: 'zb', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: '.', type: 'action', action: 'repeatLastEdit' }, + { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: true, backtrack: false}}, + { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: false, backtrack: false}}, + // Text object motions + { keys: 'a', type: 'motion', motion: 'textObjectManipulation' }, + { keys: 'i', type: 'motion', motion: 'textObjectManipulation', motionArgs: { textObjectInner: true }}, + // Search + { keys: '/', type: 'search', searchArgs: { forward: true, querySrc: 'prompt', toJumplist: true }}, + { keys: '?', type: 'search', searchArgs: { forward: false, querySrc: 'prompt', toJumplist: true }}, + { keys: '*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, + { keys: '#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, + { keys: 'g*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', toJumplist: true }}, + { keys: 'g#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true }}, + // Ex command + { keys: ':', type: 'ex' } + ]; + + /** + * Ex commands + * Care must be taken when adding to the default Ex command map. For any + * pair of commands that have a shared prefix, at least one of their + * shortNames must not match the prefix of the other command. + */ + var defaultExCommandMap = [ + { name: 'colorscheme', shortName: 'colo' }, + { name: 'map' }, + { name: 'imap', shortName: 'im' }, + { name: 'nmap', shortName: 'nm' }, + { name: 'vmap', shortName: 'vm' }, + { name: 'unmap' }, + { name: 'write', shortName: 'w' }, + { name: 'undo', shortName: 'u' }, + { name: 'redo', shortName: 'red' }, + { name: 'set', shortName: 'se' }, + { name: 'set', shortName: 'se' }, + { name: 'setlocal', shortName: 'setl' }, + { name: 'setglobal', shortName: 'setg' }, + { name: 'sort', shortName: 'sor' }, + { name: 'substitute', shortName: 's', possiblyAsync: true }, + { name: 'nohlsearch', shortName: 'noh' }, + { name: 'delmarks', shortName: 'delm' }, + { name: 'registers', shortName: 'reg', excludeFromCommandHistory: true }, + { name: 'global', shortName: 'g' } + ]; + + var Pos = CodeMirror.Pos; + + var Vim = function() { return vimApi; } //{ + function enterVimMode(cm) { + cm.setOption('disableInput', true); + cm.setOption('showCursorWhenSelecting', false); + CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); + cm.on('cursorActivity', onCursorActivity); + maybeInitVimState(cm); + CodeMirror.on(cm.getInputField(), 'paste', getOnPasteFn(cm)); + } + + function leaveVimMode(cm) { + cm.setOption('disableInput', false); + cm.off('cursorActivity', onCursorActivity); + CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm)); + cm.state.vim = null; + } + + function detachVimMap(cm, next) { + if (this == CodeMirror.keyMap.vim) + CodeMirror.rmClass(cm.getWrapperElement(), "cm-fat-cursor"); + + if (!next || next.attach != attachVimMap) + leaveVimMode(cm); + } + function attachVimMap(cm, prev) { + if (this == CodeMirror.keyMap.vim) + CodeMirror.addClass(cm.getWrapperElement(), "cm-fat-cursor"); + + if (!prev || prev.attach != attachVimMap) + enterVimMode(cm); + } + + // Deprecated, simply setting the keymap works again. + CodeMirror.defineOption('vimMode', false, function(cm, val, prev) { + if (val && cm.getOption("keyMap") != "vim") + cm.setOption("keyMap", "vim"); + else if (!val && prev != CodeMirror.Init && /^vim/.test(cm.getOption("keyMap"))) + cm.setOption("keyMap", "default"); + }); + + function cmKey(key, cm) { + if (!cm) { return undefined; } + var vimKey = cmKeyToVimKey(key); + if (!vimKey) { + return false; + } + var cmd = CodeMirror.Vim.findKey(cm, vimKey); + if (typeof cmd == 'function') { + CodeMirror.signal(cm, 'vim-keypress', vimKey); + } + return cmd; + } + + var modifiers = {'Shift': 'S', 'Ctrl': 'C', 'Alt': 'A', 'Cmd': 'D', 'Mod': 'A'}; + var specialKeys = {Enter:'CR',Backspace:'BS',Delete:'Del'}; + function cmKeyToVimKey(key) { + if (key.charAt(0) == '\'') { + // Keypress character binding of format "'a'" + return key.charAt(1); + } + var pieces = key.split(/-(?!$)/); + var lastPiece = pieces[pieces.length - 1]; + if (pieces.length == 1 && pieces[0].length == 1) { + // No-modifier bindings use literal character bindings above. Skip. + return false; + } else if (pieces.length == 2 && pieces[0] == 'Shift' && lastPiece.length == 1) { + // Ignore Shift+char bindings as they should be handled by literal character. + return false; + } + var hasCharacter = false; + for (var i = 0; i < pieces.length; i++) { + var piece = pieces[i]; + if (piece in modifiers) { pieces[i] = modifiers[piece]; } + else { hasCharacter = true; } + if (piece in specialKeys) { pieces[i] = specialKeys[piece]; } + } + if (!hasCharacter) { + // Vim does not support modifier only keys. + return false; + } + // TODO: Current bindings expect the character to be lower case, but + // it looks like vim key notation uses upper case. + if (isUpperCase(lastPiece)) { + pieces[pieces.length - 1] = lastPiece.toLowerCase(); + } + return '<' + pieces.join('-') + '>'; + } + + function getOnPasteFn(cm) { + var vim = cm.state.vim; + if (!vim.onPasteFn) { + vim.onPasteFn = function() { + if (!vim.insertMode) { + cm.setCursor(offsetCursor(cm.getCursor(), 0, 1)); + actions.enterInsertMode(cm, {}, vim); + } + }; + } + return vim.onPasteFn; + } + + var numberRegex = /[\d]/; + var wordCharTest = [CodeMirror.isWordChar, function(ch) { + return ch && !CodeMirror.isWordChar(ch) && !/\s/.test(ch); + }], bigWordCharTest = [function(ch) { + return /\S/.test(ch); + }]; + function makeKeyRange(start, size) { + var keys = []; + for (var i = start; i < start + size; i++) { + keys.push(String.fromCharCode(i)); + } + return keys; + } + var upperCaseAlphabet = makeKeyRange(65, 26); + var lowerCaseAlphabet = makeKeyRange(97, 26); + var numbers = makeKeyRange(48, 10); + var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']); + var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '"', '.', ':', '/']); + + function isLine(cm, line) { + return line >= cm.firstLine() && line <= cm.lastLine(); + } + function isLowerCase(k) { + return (/^[a-z]$/).test(k); + } + function isMatchableSymbol(k) { + return '()[]{}'.indexOf(k) != -1; + } + function isNumber(k) { + return numberRegex.test(k); + } + function isUpperCase(k) { + return (/^[A-Z]$/).test(k); + } + function isWhiteSpaceString(k) { + return (/^\s*$/).test(k); + } + function inArray(val, arr) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] == val) { + return true; + } + } + return false; + } + + var options = {}; + function defineOption(name, defaultValue, type, aliases, callback) { + if (defaultValue === undefined && !callback) { + throw Error('defaultValue is required unless callback is provided'); + } + if (!type) { type = 'string'; } + options[name] = { + type: type, + defaultValue: defaultValue, + callback: callback + }; + if (aliases) { + for (var i = 0; i < aliases.length; i++) { + options[aliases[i]] = options[name]; + } + } + if (defaultValue) { + setOption(name, defaultValue); + } + } + + function setOption(name, value, cm, cfg) { + var option = options[name]; + cfg = cfg || {}; + var scope = cfg.scope; + if (!option) { + throw Error('Unknown option: ' + name); + } + if (option.type == 'boolean') { + if (value && value !== true) { + throw Error('Invalid argument: ' + name + '=' + value); + } else if (value !== false) { + // Boolean options are set to true if value is not defined. + value = true; + } + } + if (option.callback) { + if (scope !== 'local') { + option.callback(value, undefined); + } + if (scope !== 'global' && cm) { + option.callback(value, cm); + } + } else { + if (scope !== 'local') { + option.value = option.type == 'boolean' ? !!value : value; + } + if (scope !== 'global' && cm) { + cm.state.vim.options[name] = {value: value}; + } + } + } + + function getOption(name, cm, cfg) { + var option = options[name]; + cfg = cfg || {}; + var scope = cfg.scope; + if (!option) { + throw Error('Unknown option: ' + name); + } + if (option.callback) { + var local = cm && option.callback(undefined, cm); + if (scope !== 'global' && local !== undefined) { + return local; + } + if (scope !== 'local') { + return option.callback(); + } + return; + } else { + var local = (scope !== 'global') && (cm && cm.state.vim.options[name]); + return (local || (scope !== 'local') && option || {}).value; + } + } + + defineOption('filetype', undefined, 'string', ['ft'], function(name, cm) { + // Option is local. Do nothing for global. + if (cm === undefined) { + return; + } + // The 'filetype' option proxies to the CodeMirror 'mode' option. + if (name === undefined) { + var mode = cm.getOption('mode'); + return mode == 'null' ? '' : mode; + } else { + var mode = name == '' ? 'null' : name; + cm.setOption('mode', mode); + } + }); + + var createCircularJumpList = function() { + var size = 100; + var pointer = -1; + var head = 0; + var tail = 0; + var buffer = new Array(size); + function add(cm, oldCur, newCur) { + var current = pointer % size; + var curMark = buffer[current]; + function useNextSlot(cursor) { + var next = ++pointer % size; + var trashMark = buffer[next]; + if (trashMark) { + trashMark.clear(); + } + buffer[next] = cm.setBookmark(cursor); + } + if (curMark) { + var markPos = curMark.find(); + // avoid recording redundant cursor position + if (markPos && !cursorEqual(markPos, oldCur)) { + useNextSlot(oldCur); + } + } else { + useNextSlot(oldCur); + } + useNextSlot(newCur); + head = pointer; + tail = pointer - size + 1; + if (tail < 0) { + tail = 0; + } + } + function move(cm, offset) { + pointer += offset; + if (pointer > head) { + pointer = head; + } else if (pointer < tail) { + pointer = tail; + } + var mark = buffer[(size + pointer) % size]; + // skip marks that are temporarily removed from text buffer + if (mark && !mark.find()) { + var inc = offset > 0 ? 1 : -1; + var newCur; + var oldCur = cm.getCursor(); + do { + pointer += inc; + mark = buffer[(size + pointer) % size]; + // skip marks that are the same as current position + if (mark && + (newCur = mark.find()) && + !cursorEqual(oldCur, newCur)) { + break; + } + } while (pointer < head && pointer > tail); + } + return mark; + } + return { + cachedCursor: undefined, //used for # and * jumps + add: add, + move: move + }; + }; + + // Returns an object to track the changes associated insert mode. It + // clones the object that is passed in, or creates an empty object one if + // none is provided. + var createInsertModeChanges = function(c) { + if (c) { + // Copy construction + return { + changes: c.changes, + expectCursorActivityForChange: c.expectCursorActivityForChange + }; + } + return { + // Change list + changes: [], + // Set to true on change, false on cursorActivity. + expectCursorActivityForChange: false + }; + }; + + function MacroModeState() { + this.latestRegister = undefined; + this.isPlaying = false; + this.isRecording = false; + this.replaySearchQueries = []; + this.onRecordingDone = undefined; + this.lastInsertModeChanges = createInsertModeChanges(); + } + MacroModeState.prototype = { + exitMacroRecordMode: function() { + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.onRecordingDone) { + macroModeState.onRecordingDone(); // close dialog + } + macroModeState.onRecordingDone = undefined; + macroModeState.isRecording = false; + }, + enterMacroRecordMode: function(cm, registerName) { + var register = + vimGlobalState.registerController.getRegister(registerName); + if (register) { + register.clear(); + this.latestRegister = registerName; + if (cm.openDialog) { + this.onRecordingDone = cm.openDialog( + '(recording)['+registerName+']', null, {bottom:true}); + } + this.isRecording = true; + } + } + }; + + function maybeInitVimState(cm) { + if (!cm.state.vim) { + // Store instance state in the CodeMirror object. + cm.state.vim = { + inputState: new InputState(), + // Vim's input state that triggered the last edit, used to repeat + // motions and operators with '.'. + lastEditInputState: undefined, + // Vim's action command before the last edit, used to repeat actions + // with '.' and insert mode repeat. + lastEditActionCommand: undefined, + // When using jk for navigation, if you move from a longer line to a + // shorter line, the cursor may clip to the end of the shorter line. + // If j is pressed again and cursor goes to the next line, the + // cursor should go back to its horizontal position on the longer + // line if it can. This is to keep track of the horizontal position. + lastHPos: -1, + // Doing the same with screen-position for gj/gk + lastHSPos: -1, + // The last motion command run. Cleared if a non-motion command gets + // executed in between. + lastMotion: null, + marks: {}, + // Mark for rendering fake cursor for visual mode. + fakeCursor: null, + insertMode: false, + // Repeat count for changes made in insert mode, triggered by key + // sequences like 3,i. Only exists when insertMode is true. + insertModeRepeat: undefined, + visualMode: false, + // If we are in visual line mode. No effect if visualMode is false. + visualLine: false, + visualBlock: false, + lastSelection: null, + lastPastedText: null, + sel: {}, + // Buffer-local/window-local values of vim options. + options: {} + }; + } + return cm.state.vim; + } + var vimGlobalState; + function resetVimGlobalState() { + vimGlobalState = { + // The current search query. + searchQuery: null, + // Whether we are searching backwards. + searchIsReversed: false, + // Replace part of the last substituted pattern + lastSubstituteReplacePart: undefined, + jumpList: createCircularJumpList(), + macroModeState: new MacroModeState, + // Recording latest f, t, F or T motion command. + lastChararacterSearch: {increment:0, forward:true, selectedCharacter:''}, + registerController: new RegisterController({}), + // search history buffer + searchHistoryController: new HistoryController(), + // ex Command history buffer + exCommandHistoryController : new HistoryController() + }; + for (var optionName in options) { + var option = options[optionName]; + option.value = option.defaultValue; + } + } + + var lastInsertModeKeyTimer; + var vimApi= { + buildKeyMap: function() { + // TODO: Convert keymap into dictionary format for fast lookup. + }, + // Testing hook, though it might be useful to expose the register + // controller anyways. + getRegisterController: function() { + return vimGlobalState.registerController; + }, + // Testing hook. + resetVimGlobalState_: resetVimGlobalState, + + // Testing hook. + getVimGlobalState_: function() { + return vimGlobalState; + }, + + // Testing hook. + maybeInitVimState_: maybeInitVimState, + + suppressErrorLogging: false, + + InsertModeKey: InsertModeKey, + map: function(lhs, rhs, ctx) { + // Add user defined key bindings. + exCommandDispatcher.map(lhs, rhs, ctx); + }, + unmap: function(lhs, ctx) { + exCommandDispatcher.unmap(lhs, ctx); + }, + // TODO: Expose setOption and getOption as instance methods. Need to decide how to namespace + // them, or somehow make them work with the existing CodeMirror setOption/getOption API. + setOption: setOption, + getOption: getOption, + defineOption: defineOption, + defineEx: function(name, prefix, func){ + if (!prefix) { + prefix = name; + } else if (name.indexOf(prefix) !== 0) { + throw new Error('(Vim.defineEx) "'+prefix+'" is not a prefix of "'+name+'", command not registered'); + } + exCommands[name]=func; + exCommandDispatcher.commandMap_[prefix]={name:name, shortName:prefix, type:'api'}; + }, + handleKey: function (cm, key, origin) { + var command = this.findKey(cm, key, origin); + if (typeof command === 'function') { + return command(); + } + }, + /** + * This is the outermost function called by CodeMirror, after keys have + * been mapped to their Vim equivalents. + * + * Finds a command based on the key (and cached keys if there is a + * multi-key sequence). Returns `undefined` if no key is matched, a noop + * function if a partial match is found (multi-key), and a function to + * execute the bound command if a a key is matched. The function always + * returns true. + */ + findKey: function(cm, key, origin) { + var vim = maybeInitVimState(cm); + function handleMacroRecording() { + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isRecording) { + if (key == 'q') { + macroModeState.exitMacroRecordMode(); + clearInputState(cm); + return true; + } + if (origin != 'mapping') { + logKey(macroModeState, key); + } + } + } + function handleEsc() { + if (key == '') { + // Clear input state and get back to normal mode. + clearInputState(cm); + if (vim.visualMode) { + exitVisualMode(cm); + } else if (vim.insertMode) { + exitInsertMode(cm); + } + return true; + } + } + function doKeyToKey(keys) { + // TODO: prevent infinite recursion. + var match; + while (keys) { + // Pull off one command key, which is either a single character + // or a special sequence wrapped in '<' and '>', e.g. ''. + match = (/<\w+-.+?>|<\w+>|./).exec(keys); + key = match[0]; + keys = keys.substring(match.index + key.length); + CodeMirror.Vim.handleKey(cm, key, 'mapping'); + } + } + + function handleKeyInsertMode() { + if (handleEsc()) { return true; } + var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; + var keysAreChars = key.length == 1; + var match = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); + // Need to check all key substrings in insert mode. + while (keys.length > 1 && match.type != 'full') { + var keys = vim.inputState.keyBuffer = keys.slice(1); + var thisMatch = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); + if (thisMatch.type != 'none') { match = thisMatch; } + } + if (match.type == 'none') { clearInputState(cm); return false; } + else if (match.type == 'partial') { + if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } + lastInsertModeKeyTimer = window.setTimeout( + function() { if (vim.insertMode && vim.inputState.keyBuffer) { clearInputState(cm); } }, + getOption('insertModeEscKeysTimeout')); + return !keysAreChars; + } + + if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } + if (keysAreChars) { + var selections = cm.listSelections(); + for (var i = 0; i < selections.length; i++) { + var here = selections[i].head; + cm.replaceRange('', offsetCursor(here, 0, -(keys.length - 1)), here, '+input'); + } + vimGlobalState.macroModeState.lastInsertModeChanges.changes.pop(); + } + clearInputState(cm); + return match.command; + } + + function handleKeyNonInsertMode() { + if (handleMacroRecording() || handleEsc()) { return true; }; + + var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; + if (/^[1-9]\d*$/.test(keys)) { return true; } + + var keysMatcher = /^(\d*)(.*)$/.exec(keys); + if (!keysMatcher) { clearInputState(cm); return false; } + var context = vim.visualMode ? 'visual' : + 'normal'; + var match = commandDispatcher.matchCommand(keysMatcher[2] || keysMatcher[1], defaultKeymap, vim.inputState, context); + if (match.type == 'none') { clearInputState(cm); return false; } + else if (match.type == 'partial') { return true; } + + vim.inputState.keyBuffer = ''; + var keysMatcher = /^(\d*)(.*)$/.exec(keys); + if (keysMatcher[1] && keysMatcher[1] != '0') { + vim.inputState.pushRepeatDigit(keysMatcher[1]); + } + return match.command; + } + + var command; + if (vim.insertMode) { command = handleKeyInsertMode(); } + else { command = handleKeyNonInsertMode(); } + if (command === false) { + return undefined; + } else if (command === true) { + // TODO: Look into using CodeMirror's multi-key handling. + // Return no-op since we are caching the key. Counts as handled, but + // don't want act on it just yet. + return function() { return true; }; + } else { + return function() { + if ((command.operator || command.isEdit) && cm.getOption('readOnly')) + return; // ace_patch + return cm.operation(function() { + cm.curOp.isVimOp = true; + try { + if (command.type == 'keyToKey') { + doKeyToKey(command.toKeys); + } else { + commandDispatcher.processCommand(cm, vim, command); + } + } catch (e) { + // clear VIM state in case it's in a bad state. + cm.state.vim = undefined; + maybeInitVimState(cm); + if (!CodeMirror.Vim.suppressErrorLogging) { + console['log'](e); + } + throw e; + } + return true; + }); + }; + } + }, + handleEx: function(cm, input) { + exCommandDispatcher.processCommand(cm, input); + }, + + defineMotion: defineMotion, + defineAction: defineAction, + defineOperator: defineOperator, + mapCommand: mapCommand, + _mapCommand: _mapCommand, + + defineRegister: defineRegister, + + exitVisualMode: exitVisualMode, + exitInsertMode: exitInsertMode + }; + + // Represents the current input state. + function InputState() { + this.prefixRepeat = []; + this.motionRepeat = []; + + this.operator = null; + this.operatorArgs = null; + this.motion = null; + this.motionArgs = null; + this.keyBuffer = []; // For matching multi-key commands. + this.registerName = null; // Defaults to the unnamed register. + } + InputState.prototype.pushRepeatDigit = function(n) { + if (!this.operator) { + this.prefixRepeat = this.prefixRepeat.concat(n); + } else { + this.motionRepeat = this.motionRepeat.concat(n); + } + }; + InputState.prototype.getRepeat = function() { + var repeat = 0; + if (this.prefixRepeat.length > 0 || this.motionRepeat.length > 0) { + repeat = 1; + if (this.prefixRepeat.length > 0) { + repeat *= parseInt(this.prefixRepeat.join(''), 10); + } + if (this.motionRepeat.length > 0) { + repeat *= parseInt(this.motionRepeat.join(''), 10); + } + } + return repeat; + }; + + function clearInputState(cm, reason) { + cm.state.vim.inputState = new InputState(); + CodeMirror.signal(cm, 'vim-command-done', reason); + } + + /* + * Register stores information about copy and paste registers. Besides + * text, a register must store whether it is linewise (i.e., when it is + * pasted, should it insert itself into a new line, or should the text be + * inserted at the cursor position.) + */ + function Register(text, linewise, blockwise) { + this.clear(); + this.keyBuffer = [text || '']; + this.insertModeChanges = []; + this.searchQueries = []; + this.linewise = !!linewise; + this.blockwise = !!blockwise; + } + Register.prototype = { + setText: function(text, linewise, blockwise) { + this.keyBuffer = [text || '']; + this.linewise = !!linewise; + this.blockwise = !!blockwise; + }, + pushText: function(text, linewise) { + // if this register has ever been set to linewise, use linewise. + if (linewise) { + if (!this.linewise) { + this.keyBuffer.push('\n'); + } + this.linewise = true; + } + this.keyBuffer.push(text); + }, + pushInsertModeChanges: function(changes) { + this.insertModeChanges.push(createInsertModeChanges(changes)); + }, + pushSearchQuery: function(query) { + this.searchQueries.push(query); + }, + clear: function() { + this.keyBuffer = []; + this.insertModeChanges = []; + this.searchQueries = []; + this.linewise = false; + }, + toString: function() { + return this.keyBuffer.join(''); + } + }; + + /** + * Defines an external register. + * + * The name should be a single character that will be used to reference the register. + * The register should support setText, pushText, clear, and toString(). See Register + * for a reference implementation. + */ + function defineRegister(name, register) { + var registers = vimGlobalState.registerController.registers[name]; + if (!name || name.length != 1) { + throw Error('Register name must be 1 character'); + } + // ace_patch + registers[name] = register; + validRegisters.push(name); + } + + /* + * vim registers allow you to keep many independent copy and paste buffers. + * See http://usevim.com/2012/04/13/registers/ for an introduction. + * + * RegisterController keeps the state of all the registers. An initial + * state may be passed in. The unnamed register '"' will always be + * overridden. + */ + function RegisterController(registers) { + this.registers = registers; + this.unnamedRegister = registers['"'] = new Register(); + registers['.'] = new Register(); + registers[':'] = new Register(); + registers['/'] = new Register(); + } + RegisterController.prototype = { + pushText: function(registerName, operator, text, linewise, blockwise) { + if (linewise && text.charAt(0) == '\n') { + text = text.slice(1) + '\n'; + } + if (linewise && text.charAt(text.length - 1) !== '\n'){ + text += '\n'; + } + // Lowercase and uppercase registers refer to the same register. + // Uppercase just means append. + var register = this.isValidRegister(registerName) ? + this.getRegister(registerName) : null; + // if no register/an invalid register was specified, things go to the + // default registers + if (!register) { + switch (operator) { + case 'yank': + // The 0 register contains the text from the most recent yank. + this.registers['0'] = new Register(text, linewise, blockwise); + break; + case 'delete': + case 'change': + if (text.indexOf('\n') == -1) { + // Delete less than 1 line. Update the small delete register. + this.registers['-'] = new Register(text, linewise); + } else { + // Shift down the contents of the numbered registers and put the + // deleted text into register 1. + this.shiftNumericRegisters_(); + this.registers['1'] = new Register(text, linewise); + } + break; + } + // Make sure the unnamed register is set to what just happened + this.unnamedRegister.setText(text, linewise, blockwise); + return; + } + + // If we've gotten to this point, we've actually specified a register + var append = isUpperCase(registerName); + if (append) { + register.pushText(text, linewise); + } else { + register.setText(text, linewise, blockwise); + } + // The unnamed register always has the same value as the last used + // register. + this.unnamedRegister.setText(register.toString(), linewise); + }, + // Gets the register named @name. If one of @name doesn't already exist, + // create it. If @name is invalid, return the unnamedRegister. + getRegister: function(name) { + if (!this.isValidRegister(name)) { + return this.unnamedRegister; + } + name = name.toLowerCase(); + if (!this.registers[name]) { + this.registers[name] = new Register(); + } + return this.registers[name]; + }, + isValidRegister: function(name) { + return name && inArray(name, validRegisters); + }, + shiftNumericRegisters_: function() { + for (var i = 9; i >= 2; i--) { + this.registers[i] = this.getRegister('' + (i - 1)); + } + } + }; + function HistoryController() { + this.historyBuffer = []; + this.iterator; + this.initialPrefix = null; + } + HistoryController.prototype = { + // the input argument here acts a user entered prefix for a small time + // until we start autocompletion in which case it is the autocompleted. + nextMatch: function (input, up) { + var historyBuffer = this.historyBuffer; + var dir = up ? -1 : 1; + if (this.initialPrefix === null) this.initialPrefix = input; + for (var i = this.iterator + dir; up ? i >= 0 : i < historyBuffer.length; i+= dir) { + var element = historyBuffer[i]; + for (var j = 0; j <= element.length; j++) { + if (this.initialPrefix == element.substring(0, j)) { + this.iterator = i; + return element; + } + } + } + // should return the user input in case we reach the end of buffer. + if (i >= historyBuffer.length) { + this.iterator = historyBuffer.length; + return this.initialPrefix; + } + // return the last autocompleted query or exCommand as it is. + if (i < 0 ) return input; + }, + pushInput: function(input) { + var index = this.historyBuffer.indexOf(input); + if (index > -1) this.historyBuffer.splice(index, 1); + if (input.length) this.historyBuffer.push(input); + }, + reset: function() { + this.initialPrefix = null; + this.iterator = this.historyBuffer.length; + } + }; + var commandDispatcher = { + matchCommand: function(keys, keyMap, inputState, context) { + var matches = commandMatches(keys, keyMap, context, inputState); + if (!matches.full && !matches.partial) { + return {type: 'none'}; + } else if (!matches.full && matches.partial) { + return {type: 'partial'}; + } + + var bestMatch; + for (var i = 0; i < matches.full.length; i++) { + var match = matches.full[i]; + if (!bestMatch) { + bestMatch = match; + } + } + if (bestMatch.keys.slice(-11) == '') { + var character = lastChar(keys); + if (//.test(character)) return {type: 'none'}; + inputState.selectedCharacter = character; + } + return {type: 'full', command: bestMatch}; + }, + processCommand: function(cm, vim, command) { + vim.inputState.repeatOverride = command.repeatOverride; + switch (command.type) { + case 'motion': + this.processMotion(cm, vim, command); + break; + case 'operator': + this.processOperator(cm, vim, command); + break; + case 'operatorMotion': + this.processOperatorMotion(cm, vim, command); + break; + case 'action': + this.processAction(cm, vim, command); + break; + case 'search': + this.processSearch(cm, vim, command); + break; + case 'ex': + case 'keyToEx': + this.processEx(cm, vim, command); + break; + default: + break; + } + }, + processMotion: function(cm, vim, command) { + vim.inputState.motion = command.motion; + vim.inputState.motionArgs = copyArgs(command.motionArgs); + this.evalInput(cm, vim); + }, + processOperator: function(cm, vim, command) { + var inputState = vim.inputState; + if (inputState.operator) { + if (inputState.operator == command.operator) { + // Typing an operator twice like 'dd' makes the operator operate + // linewise + inputState.motion = 'expandToLine'; + inputState.motionArgs = { linewise: true }; + this.evalInput(cm, vim); + return; + } else { + // 2 different operators in a row doesn't make sense. + clearInputState(cm); + } + } + inputState.operator = command.operator; + inputState.operatorArgs = copyArgs(command.operatorArgs); + if (vim.visualMode) { + // Operating on a selection in visual mode. We don't need a motion. + this.evalInput(cm, vim); + } + }, + processOperatorMotion: function(cm, vim, command) { + var visualMode = vim.visualMode; + var operatorMotionArgs = copyArgs(command.operatorMotionArgs); + if (operatorMotionArgs) { + // Operator motions may have special behavior in visual mode. + if (visualMode && operatorMotionArgs.visualLine) { + vim.visualLine = true; + } + } + this.processOperator(cm, vim, command); + if (!visualMode) { + this.processMotion(cm, vim, command); + } + }, + processAction: function(cm, vim, command) { + var inputState = vim.inputState; + var repeat = inputState.getRepeat(); + var repeatIsExplicit = !!repeat; + var actionArgs = copyArgs(command.actionArgs) || {}; + if (inputState.selectedCharacter) { + actionArgs.selectedCharacter = inputState.selectedCharacter; + } + // Actions may or may not have motions and operators. Do these first. + if (command.operator) { + this.processOperator(cm, vim, command); + } + if (command.motion) { + this.processMotion(cm, vim, command); + } + if (command.motion || command.operator) { + this.evalInput(cm, vim); + } + actionArgs.repeat = repeat || 1; + actionArgs.repeatIsExplicit = repeatIsExplicit; + actionArgs.registerName = inputState.registerName; + clearInputState(cm); + vim.lastMotion = null; + if (command.isEdit) { + this.recordLastEdit(vim, inputState, command); + } + actions[command.action](cm, actionArgs, vim); + }, + processSearch: function(cm, vim, command) { + if (!cm.getSearchCursor) { + // Search depends on SearchCursor. + return; + } + var forward = command.searchArgs.forward; + var wholeWordOnly = command.searchArgs.wholeWordOnly; + getSearchState(cm).setReversed(!forward); + var promptPrefix = (forward) ? '/' : '?'; + var originalQuery = getSearchState(cm).getQuery(); + var originalScrollPos = cm.getScrollInfo(); + originalScrollPos.cursor = cm.getCursor(); + if (getSearchState(cm).clearHighlight) // ace patch clear highlight after n + getSearchState(cm).clearHighlight(); + function handleQuery(query, ignoreCase, smartCase) { + vimGlobalState.searchHistoryController.pushInput(query); + vimGlobalState.searchHistoryController.reset(); + try { + updateSearchQuery(cm, query, ignoreCase, smartCase); + } catch (e) { + showConfirm(cm, 'Invalid regex: ' + query); + clearInputState(cm); + return; + } + commandDispatcher.processMotion(cm, vim, { + type: 'motion', + motion: 'findNext', + motionArgs: { forward: true, toJumplist: command.searchArgs.toJumplist } + }); + getSearchState(cm).clearHighlight = function clear() { + cm.off("cursorActivity", clear); + clearSearchHighlight(cm); + }; + cm.on("cursorActivity", getSearchState(cm).clearHighlight); + } + function onPromptClose(query) { + cm.scrollTo(originalScrollPos.left, originalScrollPos.top); + cm.setCursor(originalScrollPos.cursor); // ace patch TODO find a way to record motion without calling handleQuery + handleQuery(query, false /** ignoreCase */, false /** smartCase */); // ace patch TODO make smartcase an option + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isRecording) { + logSearchQuery(macroModeState, query); + } + clearSearchHighlight(cm); + } + function onPromptKeyUp(e, query, close) { + var keyName = CodeMirror.keyName(e), up; + if (keyName == 'Up' || keyName == 'Down') { + up = keyName == 'Up' ? true : false; + query = vimGlobalState.searchHistoryController.nextMatch(query, up) || ''; + close(query); + } else { + if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') + vimGlobalState.searchHistoryController.reset(); + } + var parsedQuery; + try { + parsedQuery = updateSearchQuery(cm, query, + false /** ignoreCase */, false /** smartCase */); + } catch (e) { + // Swallow bad regexes for incremental search. + } + if (parsedQuery) { + cm.scrollIntoView(findNext(cm, !forward, parsedQuery, undefined, originalScrollPos.cursor), 30); + } else { + cm.scrollIntoView(originalScrollPos.cursor); + clearSearchHighlight(cm); + cm.scrollTo(originalScrollPos.left, originalScrollPos.top); + cm.ace.curOp.command.scrollIntoView = "animate"; + } + } + function onPromptKeyDown(e, query, close) { + var keyName = CodeMirror.keyName(e); + if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || + (keyName == 'Backspace' && query == '')) { + vimGlobalState.searchHistoryController.pushInput(query); + vimGlobalState.searchHistoryController.reset(); + updateSearchQuery(cm, originalQuery); + clearSearchHighlight(cm); + cm.scrollTo(originalScrollPos.left, originalScrollPos.top); + CodeMirror.e_stop(e); + clearInputState(cm); + close(); + cm.focus(); + } else if (keyName == 'Ctrl-U') { + // Ctrl-U clears input. + CodeMirror.e_stop(e); + close(''); + } + } + switch (command.searchArgs.querySrc) { + case 'prompt': + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isPlaying) { + var query = macroModeState.replaySearchQueries.shift(); + handleQuery(query, true /** ignoreCase */, false /** smartCase */); + } else { + showPrompt(cm, { + onClose: onPromptClose, + prefix: promptPrefix, + desc: searchPromptDesc, + onKeyUp: onPromptKeyUp, + onKeyDown: onPromptKeyDown + }); + } + break; + case 'wordUnderCursor': + var word = expandWordUnderCursor(cm, false /** inclusive */, + true /** forward */, false /** bigWord */, + true /** noSymbol */); + var isKeyword = true; + if (!word) { + word = expandWordUnderCursor(cm, false /** inclusive */, + true /** forward */, false /** bigWord */, + false /** noSymbol */); + isKeyword = false; + } + if (!word) { + return; + } + var query = cm.getLine(word.start.line).substring(word.start.ch, + word.end.ch); + if (isKeyword && wholeWordOnly) { + query = '\\b' + query + '\\b'; + } else { + query = escapeRegex(query); + } + + // cachedCursor is used to save the old position of the cursor + // when * or # causes vim to seek for the nearest word and shift + // the cursor before entering the motion. + vimGlobalState.jumpList.cachedCursor = cm.getCursor(); + cm.setCursor(word.start); + + handleQuery(query, true /** ignoreCase */, false /** smartCase */); + break; + } + }, + processEx: function(cm, vim, command) { + function onPromptClose(input) { + // Give the prompt some time to close so that if processCommand shows + // an error, the elements don't overlap. + vimGlobalState.exCommandHistoryController.pushInput(input); + vimGlobalState.exCommandHistoryController.reset(); + exCommandDispatcher.processCommand(cm, input); + } + function onPromptKeyDown(e, input, close) { + var keyName = CodeMirror.keyName(e), up; + if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || + (keyName == 'Backspace' && input == '')) { + vimGlobalState.exCommandHistoryController.pushInput(input); + vimGlobalState.exCommandHistoryController.reset(); + CodeMirror.e_stop(e); + clearInputState(cm); + close(); + cm.focus(); + } + if (keyName == 'Up' || keyName == 'Down') { + up = keyName == 'Up' ? true : false; + input = vimGlobalState.exCommandHistoryController.nextMatch(input, up) || ''; + close(input); + } else if (keyName == 'Ctrl-U') { + // Ctrl-U clears input. + CodeMirror.e_stop(e); + close(''); + } else { + if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') + vimGlobalState.exCommandHistoryController.reset(); + } + } + if (command.type == 'keyToEx') { + // Handle user defined Ex to Ex mappings + exCommandDispatcher.processCommand(cm, command.exArgs.input); + } else { + if (vim.visualMode) { + showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>', + onKeyDown: onPromptKeyDown}); + } else { + showPrompt(cm, { onClose: onPromptClose, prefix: ':', + onKeyDown: onPromptKeyDown}); + } + } + }, + evalInput: function(cm, vim) { + // If the motion comand is set, execute both the operator and motion. + // Otherwise return. + var inputState = vim.inputState; + var motion = inputState.motion; + var motionArgs = inputState.motionArgs || {}; + var operator = inputState.operator; + var operatorArgs = inputState.operatorArgs || {}; + var registerName = inputState.registerName; + var sel = vim.sel; + // TODO: Make sure cm and vim selections are identical outside visual mode. + var origHead = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.head): cm.getCursor('head')); + var origAnchor = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.anchor) : cm.getCursor('anchor')); + var oldHead = copyCursor(origHead); + var oldAnchor = copyCursor(origAnchor); + var newHead, newAnchor; + var repeat; + if (operator) { + this.recordLastEdit(vim, inputState); + } + if (inputState.repeatOverride !== undefined) { + // If repeatOverride is specified, that takes precedence over the + // input state's repeat. Used by Ex mode and can be user defined. + repeat = inputState.repeatOverride; + } else { + repeat = inputState.getRepeat(); + } + if (repeat > 0 && motionArgs.explicitRepeat) { + motionArgs.repeatIsExplicit = true; + } else if (motionArgs.noRepeat || + (!motionArgs.explicitRepeat && repeat === 0)) { + repeat = 1; + motionArgs.repeatIsExplicit = false; + } + if (inputState.selectedCharacter) { + // If there is a character input, stick it in all of the arg arrays. + motionArgs.selectedCharacter = operatorArgs.selectedCharacter = + inputState.selectedCharacter; + } + motionArgs.repeat = repeat; + clearInputState(cm); + if (motion) { + var motionResult = motions[motion](cm, origHead, motionArgs, vim); + vim.lastMotion = motions[motion]; + if (!motionResult) { + return; + } + if (motionArgs.toJumplist) { + if (!operator && cm.ace.curOp != null) + cm.ace.curOp.command.scrollIntoView = "center-animate"; // ace_patch + var jumpList = vimGlobalState.jumpList; + // if the current motion is # or *, use cachedCursor + var cachedCursor = jumpList.cachedCursor; + if (cachedCursor) { + recordJumpPosition(cm, cachedCursor, motionResult); + delete jumpList.cachedCursor; + } else { + recordJumpPosition(cm, origHead, motionResult); + } + } + if (motionResult instanceof Array) { + newAnchor = motionResult[0]; + newHead = motionResult[1]; + } else { + newHead = motionResult; + } + // TODO: Handle null returns from motion commands better. + if (!newHead) { + newHead = copyCursor(origHead); + } + if (vim.visualMode) { + if (!(vim.visualBlock && newHead.ch === Infinity)) { + newHead = clipCursorToContent(cm, newHead, vim.visualBlock); + } + if (newAnchor) { + newAnchor = clipCursorToContent(cm, newAnchor, true); + } + newAnchor = newAnchor || oldAnchor; + sel.anchor = newAnchor; + sel.head = newHead; + updateCmSelection(cm); + updateMark(cm, vim, '<', + cursorIsBefore(newAnchor, newHead) ? newAnchor + : newHead); + updateMark(cm, vim, '>', + cursorIsBefore(newAnchor, newHead) ? newHead + : newAnchor); + } else if (!operator) { + newHead = clipCursorToContent(cm, newHead); + cm.setCursor(newHead.line, newHead.ch); + } + } + if (operator) { + if (operatorArgs.lastSel) { + // Replaying a visual mode operation + newAnchor = oldAnchor; + var lastSel = operatorArgs.lastSel; + var lineOffset = Math.abs(lastSel.head.line - lastSel.anchor.line); + var chOffset = Math.abs(lastSel.head.ch - lastSel.anchor.ch); + if (lastSel.visualLine) { + // Linewise Visual mode: The same number of lines. + newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); + } else if (lastSel.visualBlock) { + // Blockwise Visual mode: The same number of lines and columns. + newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch + chOffset); + } else if (lastSel.head.line == lastSel.anchor.line) { + // Normal Visual mode within one line: The same number of characters. + newHead = Pos(oldAnchor.line, oldAnchor.ch + chOffset); + } else { + // Normal Visual mode with several lines: The same number of lines, in the + // last line the same number of characters as in the last line the last time. + newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); + } + vim.visualMode = true; + vim.visualLine = lastSel.visualLine; + vim.visualBlock = lastSel.visualBlock; + sel = vim.sel = { + anchor: newAnchor, + head: newHead + }; + updateCmSelection(cm); + } else if (vim.visualMode) { + operatorArgs.lastSel = { + anchor: copyCursor(sel.anchor), + head: copyCursor(sel.head), + visualBlock: vim.visualBlock, + visualLine: vim.visualLine + }; + } + var curStart, curEnd, linewise, mode; + var cmSel; + if (vim.visualMode) { + // Init visual op + curStart = cursorMin(sel.head, sel.anchor); + curEnd = cursorMax(sel.head, sel.anchor); + linewise = vim.visualLine || operatorArgs.linewise; + mode = vim.visualBlock ? 'block' : + linewise ? 'line' : + 'char'; + cmSel = makeCmSelection(cm, { + anchor: curStart, + head: curEnd + }, mode); + if (linewise) { + var ranges = cmSel.ranges; + if (mode == 'block') { + // Linewise operators in visual block mode extend to end of line + for (var i = 0; i < ranges.length; i++) { + ranges[i].head.ch = lineLength(cm, ranges[i].head.line); + } + } else if (mode == 'line') { + ranges[0].head = Pos(ranges[0].head.line + 1, 0); + } + } + } else { + // Init motion op + curStart = copyCursor(newAnchor || oldAnchor); + curEnd = copyCursor(newHead || oldHead); + if (cursorIsBefore(curEnd, curStart)) { + var tmp = curStart; + curStart = curEnd; + curEnd = tmp; + } + linewise = motionArgs.linewise || operatorArgs.linewise; + if (linewise) { + // Expand selection to entire line. + expandSelectionToLine(cm, curStart, curEnd); + } else if (motionArgs.forward) { + // Clip to trailing newlines only if the motion goes forward. + clipToLine(cm, curStart, curEnd); + } + mode = 'char'; + var exclusive = !motionArgs.inclusive || linewise; + cmSel = makeCmSelection(cm, { + anchor: curStart, + head: curEnd + }, mode, exclusive); + } + cm.setSelections(cmSel.ranges, cmSel.primary); + vim.lastMotion = null; + operatorArgs.repeat = repeat; // For indent in visual mode. + operatorArgs.registerName = registerName; + // Keep track of linewise as it affects how paste and change behave. + operatorArgs.linewise = linewise; + var operatorMoveTo = operators[operator]( + cm, operatorArgs, cmSel.ranges, oldAnchor, newHead); + if (vim.visualMode) { + exitVisualMode(cm, operatorMoveTo != null); + } + if (operatorMoveTo) { + cm.setCursor(operatorMoveTo); + } + } + }, + recordLastEdit: function(vim, inputState, actionCommand) { + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isPlaying) { return; } + vim.lastEditInputState = inputState; + vim.lastEditActionCommand = actionCommand; + macroModeState.lastInsertModeChanges.changes = []; + macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false; + } + }; + + /** + * typedef {Object{line:number,ch:number}} Cursor An object containing the + * position of the cursor. + */ + // All of the functions below return Cursor objects. + var motions = { + moveToTopLine: function(cm, _head, motionArgs) { + var line = getUserVisibleLines(cm).top + motionArgs.repeat -1; + return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + moveToMiddleLine: function(cm) { + var range = getUserVisibleLines(cm); + var line = Math.floor((range.top + range.bottom) * 0.5); + return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + moveToBottomLine: function(cm, _head, motionArgs) { + var line = getUserVisibleLines(cm).bottom - motionArgs.repeat +1; + return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + expandToLine: function(_cm, head, motionArgs) { + // Expands forward to end of line, and then to next line if repeat is + // >1. Does not handle backward motion! + var cur = head; + return Pos(cur.line + motionArgs.repeat - 1, Infinity); + }, + findNext: function(cm, _head, motionArgs) { + var state = getSearchState(cm); + var query = state.getQuery(); + if (!query) { + return; + } + var prev = !motionArgs.forward; + // If search is initiated with ? instead of /, negate direction. + prev = (state.isReversed()) ? !prev : prev; + highlightSearchMatches(cm, query); + return findNext(cm, prev/** prev */, query, motionArgs.repeat); + }, + goToMark: function(cm, _head, motionArgs, vim) { + var mark = vim.marks[motionArgs.selectedCharacter]; + if (mark) { + var pos = mark.find(); + return motionArgs.linewise ? { line: pos.line, ch: findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line)) } : pos; + } + return null; + }, + moveToOtherHighlightedEnd: function(cm, _head, motionArgs, vim) { + if (vim.visualBlock && motionArgs.sameLine) { + var sel = vim.sel; + return [ + clipCursorToContent(cm, Pos(sel.anchor.line, sel.head.ch)), + clipCursorToContent(cm, Pos(sel.head.line, sel.anchor.ch)) + ]; + } else { + return ([vim.sel.head, vim.sel.anchor]); + } + }, + jumpToMark: function(cm, head, motionArgs, vim) { + var best = head; + for (var i = 0; i < motionArgs.repeat; i++) { + var cursor = best; + for (var key in vim.marks) { + if (!isLowerCase(key)) { + continue; + } + var mark = vim.marks[key].find(); + var isWrongDirection = (motionArgs.forward) ? + cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark); + + if (isWrongDirection) { + continue; + } + if (motionArgs.linewise && (mark.line == cursor.line)) { + continue; + } + + var equal = cursorEqual(cursor, best); + var between = (motionArgs.forward) ? + cursorIsBetween(cursor, mark, best) : + cursorIsBetween(best, mark, cursor); + + if (equal || between) { + best = mark; + } + } + } + + if (motionArgs.linewise) { + // Vim places the cursor on the first non-whitespace character of + // the line if there is one, else it places the cursor at the end + // of the line, regardless of whether a mark was found. + best = Pos(best.line, findFirstNonWhiteSpaceCharacter(cm.getLine(best.line))); + } + return best; + }, + moveByCharacters: function(_cm, head, motionArgs) { + var cur = head; + var repeat = motionArgs.repeat; + var ch = motionArgs.forward ? cur.ch + repeat : cur.ch - repeat; + return Pos(cur.line, ch); + }, + moveByLines: function(cm, head, motionArgs, vim) { + var cur = head; + var endCh = cur.ch; + // Depending what our last motion was, we may want to do different + // things. If our last motion was moving vertically, we want to + // preserve the HPos from our last horizontal move. If our last motion + // was going to the end of a line, moving vertically we should go to + // the end of the line, etc. + switch (vim.lastMotion) { + case this.moveByLines: + case this.moveByDisplayLines: + case this.moveByScroll: + case this.moveToColumn: + case this.moveToEol: + endCh = vim.lastHPos; + break; + default: + vim.lastHPos = endCh; + } + var repeat = motionArgs.repeat+(motionArgs.repeatOffset||0); + var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat; + var first = cm.firstLine(); + var last = cm.lastLine(); + // Vim cancels linewise motions that start on an edge and move beyond + // that edge. It does not cancel motions that do not start on an edge. + if ((line < first && cur.line == first) || + (line > last && cur.line == last)) { + return; + } + // ace_patch{ + var fold = cm.ace.session.getFoldLine(line); + if (fold) { + if (motionArgs.forward) { + if (line > fold.start.row) + line = fold.end.row + 1; + } else { + line = fold.start.row; + } + } + // ace_patch} + if (motionArgs.toFirstChar){ + endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line)); + vim.lastHPos = endCh; + } + vim.lastHSPos = cm.charCoords(Pos(line, endCh),'div').left; + return Pos(line, endCh); + }, + moveByDisplayLines: function(cm, head, motionArgs, vim) { + var cur = head; + switch (vim.lastMotion) { + case this.moveByDisplayLines: + case this.moveByScroll: + case this.moveByLines: + case this.moveToColumn: + case this.moveToEol: + break; + default: + vim.lastHSPos = cm.charCoords(cur,'div').left; + } + var repeat = motionArgs.repeat; + var res=cm.findPosV(cur,(motionArgs.forward ? repeat : -repeat),'line',vim.lastHSPos); + if (res.hitSide) { + if (motionArgs.forward) { + var lastCharCoords = cm.charCoords(res, 'div'); + var goalCoords = { top: lastCharCoords.top + 8, left: vim.lastHSPos }; + var res = cm.coordsChar(goalCoords, 'div'); + } else { + var resCoords = cm.charCoords(Pos(cm.firstLine(), 0), 'div'); + resCoords.left = vim.lastHSPos; + res = cm.coordsChar(resCoords, 'div'); + } + } + vim.lastHPos = res.ch; + return res; + }, + moveByPage: function(cm, head, motionArgs) { + // CodeMirror only exposes functions that move the cursor page down, so + // doing this bad hack to move the cursor and move it back. evalInput + // will move the cursor to where it should be in the end. + var curStart = head; + var repeat = motionArgs.repeat; + return cm.findPosV(curStart, (motionArgs.forward ? repeat : -repeat), 'page'); + }, + moveByParagraph: function(cm, head, motionArgs) { + var dir = motionArgs.forward ? 1 : -1; + return findParagraph(cm, head, motionArgs.repeat, dir); + }, + moveByScroll: function(cm, head, motionArgs, vim) { + var scrollbox = cm.getScrollInfo(); + var curEnd = null; + var repeat = motionArgs.repeat; + if (!repeat) { + repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight()); + } + var orig = cm.charCoords(head, 'local'); + motionArgs.repeat = repeat; + var curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim); + if (!curEnd) { + return null; + } + var dest = cm.charCoords(curEnd, 'local'); + cm.scrollTo(null, scrollbox.top + dest.top - orig.top); + return curEnd; + }, + moveByWords: function(cm, head, motionArgs) { + return moveToWord(cm, head, motionArgs.repeat, !!motionArgs.forward, + !!motionArgs.wordEnd, !!motionArgs.bigWord); + }, + moveTillCharacter: function(cm, _head, motionArgs) { + var repeat = motionArgs.repeat; + var curEnd = moveToCharacter(cm, repeat, motionArgs.forward, + motionArgs.selectedCharacter); + var increment = motionArgs.forward ? -1 : 1; + recordLastCharacterSearch(increment, motionArgs); + if (!curEnd) return null; + curEnd.ch += increment; + return curEnd; + }, + moveToCharacter: function(cm, head, motionArgs) { + var repeat = motionArgs.repeat; + recordLastCharacterSearch(0, motionArgs); + return moveToCharacter(cm, repeat, motionArgs.forward, + motionArgs.selectedCharacter) || head; + }, + moveToSymbol: function(cm, head, motionArgs) { + var repeat = motionArgs.repeat; + return findSymbol(cm, repeat, motionArgs.forward, + motionArgs.selectedCharacter) || head; + }, + moveToColumn: function(cm, head, motionArgs, vim) { + var repeat = motionArgs.repeat; + // repeat is equivalent to which column we want to move to! + vim.lastHPos = repeat - 1; + vim.lastHSPos = cm.charCoords(head,'div').left; + return moveToColumn(cm, repeat); + }, + moveToEol: function(cm, head, motionArgs, vim) { + var cur = head; + vim.lastHPos = Infinity; + var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity); + var end=cm.clipPos(retval); + end.ch--; + vim.lastHSPos = cm.charCoords(end,'div').left; + return retval; + }, + moveToFirstNonWhiteSpaceCharacter: function(cm, head) { + // Go to the start of the line where the text begins, or the end for + // whitespace-only lines + var cursor = head; + return Pos(cursor.line, + findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line))); + }, + moveToMatchedSymbol: function(cm, head) { + var cursor = head; + var line = cursor.line; + var ch = cursor.ch; + var lineText = cm.getLine(line); + var symbol; + do { + symbol = lineText.charAt(ch++); + if (symbol && isMatchableSymbol(symbol)) { + var style = cm.getTokenTypeAt(Pos(line, ch)); + if (style !== "string" && style !== "comment") { + break; + } + } + } while (symbol); + if (symbol) { + var matched = cm.findMatchingBracket(Pos(line, ch)); + return matched.to; + } else { + return cursor; + } + }, + moveToStartOfLine: function(_cm, head) { + return Pos(head.line, 0); + }, + moveToLineOrEdgeOfDocument: function(cm, _head, motionArgs) { + var lineNum = motionArgs.forward ? cm.lastLine() : cm.firstLine(); + if (motionArgs.repeatIsExplicit) { + lineNum = motionArgs.repeat - cm.getOption('firstLineNumber'); + } + return Pos(lineNum, + findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum))); + }, + textObjectManipulation: function(cm, head, motionArgs, vim) { + // TODO: lots of possible exceptions that can be thrown here. Try da( + // outside of a () block. + + // TODO: adding <> >< to this map doesn't work, presumably because + // they're operators + var mirroredPairs = {'(': ')', ')': '(', + '{': '}', '}': '{', + '[': ']', ']': '['}; + var selfPaired = {'\'': true, '"': true}; + + var character = motionArgs.selectedCharacter; + // 'b' refers to '()' block. + // 'B' refers to '{}' block. + if (character == 'b') { + character = '('; + } else if (character == 'B') { + character = '{'; + } + + // Inclusive is the difference between a and i + // TODO: Instead of using the additional text object map to perform text + // object operations, merge the map into the defaultKeyMap and use + // motionArgs to define behavior. Define separate entries for 'aw', + // 'iw', 'a[', 'i[', etc. + var inclusive = !motionArgs.textObjectInner; + + var tmp; + if (mirroredPairs[character]) { + tmp = selectCompanionObject(cm, head, character, inclusive); + } else if (selfPaired[character]) { + tmp = findBeginningAndEnd(cm, head, character, inclusive); + } else if (character === 'W') { + tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, + true /** bigWord */); + } else if (character === 'w') { + tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, + false /** bigWord */); + } else if (character === 'p') { + tmp = findParagraph(cm, head, motionArgs.repeat, 0, inclusive); + motionArgs.linewise = true; + if (vim.visualMode) { + if (!vim.visualLine) { vim.visualLine = true; } + } else { + var operatorArgs = vim.inputState.operatorArgs; + if (operatorArgs) { operatorArgs.linewise = true; } + tmp.end.line--; + } + } else { + // No text object defined for this, don't move. + return null; + } + + if (!cm.state.vim.visualMode) { + return [tmp.start, tmp.end]; + } else { + return expandSelection(cm, tmp.start, tmp.end); + } + }, + + repeatLastCharacterSearch: function(cm, head, motionArgs) { + var lastSearch = vimGlobalState.lastChararacterSearch; + var repeat = motionArgs.repeat; + var forward = motionArgs.forward === lastSearch.forward; + var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1); + cm.moveH(-increment, 'char'); + motionArgs.inclusive = forward ? true : false; + var curEnd = moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter); + if (!curEnd) { + cm.moveH(increment, 'char'); + return head; + } + curEnd.ch += increment; + return curEnd; + } + }; + + function defineMotion(name, fn) { + motions[name] = fn; + } + + function fillArray(val, times) { + var arr = []; + for (var i = 0; i < times; i++) { + arr.push(val); + } + return arr; + } + /** + * An operator acts on a text selection. It receives the list of selections + * as input. The corresponding CodeMirror selection is guaranteed to + * match the input selection. + */ + var operators = { + change: function(cm, args, ranges) { + var finalHead, text; + var vim = cm.state.vim; + vimGlobalState.macroModeState.lastInsertModeChanges.inVisualBlock = vim.visualBlock; + if (!vim.visualMode) { + var anchor = ranges[0].anchor, + head = ranges[0].head; + text = cm.getRange(anchor, head); + var lastState = vim.lastEditInputState || {}; + if (lastState.motion == "moveByWords" && !isWhiteSpaceString(text)) { + // Exclude trailing whitespace if the range is not all whitespace. + var match = (/\s+$/).exec(text); + if (match && lastState.motionArgs && lastState.motionArgs.forward) { + head = offsetCursor(head, 0, - match[0].length); + text = text.slice(0, - match[0].length); + } + } + var prevLineEnd = new Pos(anchor.line - 1, Number.MAX_VALUE); + var wasLastLine = cm.firstLine() == cm.lastLine(); + if (head.line > cm.lastLine() && args.linewise && !wasLastLine) { + cm.replaceRange('', prevLineEnd, head); + } else { + cm.replaceRange('', anchor, head); + } + if (args.linewise) { + // Push the next line back down, if there is a next line. + if (!wasLastLine) { + cm.setCursor(prevLineEnd); + CodeMirror.commands.newlineAndIndent(cm); + } + // make sure cursor ends up at the end of the line. + anchor.ch = Number.MAX_VALUE; + } + finalHead = anchor; + } else { + text = cm.getSelection(); + var replacement = fillArray('', ranges.length); + cm.replaceSelections(replacement); + finalHead = cursorMin(ranges[0].head, ranges[0].anchor); + } + vimGlobalState.registerController.pushText( + args.registerName, 'change', text, + args.linewise, ranges.length > 1); + actions.enterInsertMode(cm, {head: finalHead}, cm.state.vim); + }, + // delete is a javascript keyword. + 'delete': function(cm, args, ranges) { + var finalHead, text; + var vim = cm.state.vim; + if (!vim.visualBlock) { + var anchor = ranges[0].anchor, + head = ranges[0].head; + if (args.linewise && + head.line != cm.firstLine() && + anchor.line == cm.lastLine() && + anchor.line == head.line - 1) { + // Special case for dd on last line (and first line). + if (anchor.line == cm.firstLine()) { + anchor.ch = 0; + } else { + anchor = Pos(anchor.line - 1, lineLength(cm, anchor.line - 1)); + } + } + text = cm.getRange(anchor, head); + cm.replaceRange('', anchor, head); + finalHead = anchor; + if (args.linewise) { + finalHead = motions.moveToFirstNonWhiteSpaceCharacter(cm, anchor); + } + } else { + text = cm.getSelection(); + var replacement = fillArray('', ranges.length); + cm.replaceSelections(replacement); + finalHead = ranges[0].anchor; + } + vimGlobalState.registerController.pushText( + args.registerName, 'delete', text, + args.linewise, vim.visualBlock); + return clipCursorToContent(cm, finalHead); + }, + indent: function(cm, args, ranges) { + var vim = cm.state.vim; + var startLine = ranges[0].anchor.line; + var endLine = vim.visualBlock ? + ranges[ranges.length - 1].anchor.line : + ranges[0].head.line; + // In visual mode, n> shifts the selection right n times, instead of + // shifting n lines right once. + var repeat = (vim.visualMode) ? args.repeat : 1; + if (args.linewise) { + // The only way to delete a newline is to delete until the start of + // the next line, so in linewise mode evalInput will include the next + // line. We don't want this in indent, so we go back a line. + endLine--; + } + for (var i = startLine; i <= endLine; i++) { + for (var j = 0; j < repeat; j++) { + cm.indentLine(i, args.indentRight); + } + } + return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor); + }, + changeCase: function(cm, args, ranges, oldAnchor, newHead) { + var selections = cm.getSelections(); + var swapped = []; + var toLower = args.toLower; + for (var j = 0; j < selections.length; j++) { + var toSwap = selections[j]; + var text = ''; + if (toLower === true) { + text = toSwap.toLowerCase(); + } else if (toLower === false) { + text = toSwap.toUpperCase(); + } else { + for (var i = 0; i < toSwap.length; i++) { + var character = toSwap.charAt(i); + text += isUpperCase(character) ? character.toLowerCase() : + character.toUpperCase(); + } + } + swapped.push(text); + } + cm.replaceSelections(swapped); + if (args.shouldMoveCursor){ + return newHead; + } else if (!cm.state.vim.visualMode && args.linewise && ranges[0].anchor.line + 1 == ranges[0].head.line) { + return motions.moveToFirstNonWhiteSpaceCharacter(cm, oldAnchor); + } else if (args.linewise){ + return oldAnchor; + } else { + return cursorMin(ranges[0].anchor, ranges[0].head); + } + }, + yank: function(cm, args, ranges, oldAnchor) { + var vim = cm.state.vim; + var text = cm.getSelection(); + var endPos = vim.visualMode + ? cursorMin(vim.sel.anchor, vim.sel.head, ranges[0].head, ranges[0].anchor) + : oldAnchor; + vimGlobalState.registerController.pushText( + args.registerName, 'yank', + text, args.linewise, vim.visualBlock); + return endPos; + } + }; + + function defineOperator(name, fn) { + operators[name] = fn; + } + + var actions = { + jumpListWalk: function(cm, actionArgs, vim) { + if (vim.visualMode) { + return; + } + var repeat = actionArgs.repeat; + var forward = actionArgs.forward; + var jumpList = vimGlobalState.jumpList; + + var mark = jumpList.move(cm, forward ? repeat : -repeat); + var markPos = mark ? mark.find() : undefined; + markPos = markPos ? markPos : cm.getCursor(); + cm.setCursor(markPos); + cm.ace.curOp.command.scrollIntoView = "center-animate"; // ace_patch + }, + scroll: function(cm, actionArgs, vim) { + if (vim.visualMode) { + return; + } + var repeat = actionArgs.repeat || 1; + var lineHeight = cm.defaultTextHeight(); + var top = cm.getScrollInfo().top; + var delta = lineHeight * repeat; + var newPos = actionArgs.forward ? top + delta : top - delta; + var cursor = copyCursor(cm.getCursor()); + var cursorCoords = cm.charCoords(cursor, 'local'); + if (actionArgs.forward) { + if (newPos > cursorCoords.top) { + cursor.line += (newPos - cursorCoords.top) / lineHeight; + cursor.line = Math.ceil(cursor.line); + cm.setCursor(cursor); + cursorCoords = cm.charCoords(cursor, 'local'); + cm.scrollTo(null, cursorCoords.top); + } else { + // Cursor stays within bounds. Just reposition the scroll window. + cm.scrollTo(null, newPos); + } + } else { + var newBottom = newPos + cm.getScrollInfo().clientHeight; + if (newBottom < cursorCoords.bottom) { + cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight; + cursor.line = Math.floor(cursor.line); + cm.setCursor(cursor); + cursorCoords = cm.charCoords(cursor, 'local'); + cm.scrollTo( + null, cursorCoords.bottom - cm.getScrollInfo().clientHeight); + } else { + // Cursor stays within bounds. Just reposition the scroll window. + cm.scrollTo(null, newPos); + } + } + }, + scrollToCursor: function(cm, actionArgs) { + var lineNum = cm.getCursor().line; + var charCoords = cm.charCoords(Pos(lineNum, 0), 'local'); + var height = cm.getScrollInfo().clientHeight; + var y = charCoords.top; + var lineHeight = charCoords.bottom - y; + switch (actionArgs.position) { + case 'center': y = y - (height / 2) + lineHeight; + break; + case 'bottom': y = y - height + lineHeight*1.4; + break; + case 'top': y = y + lineHeight*0.4; + break; + } + cm.scrollTo(null, y); + }, + replayMacro: function(cm, actionArgs, vim) { + var registerName = actionArgs.selectedCharacter; + var repeat = actionArgs.repeat; + var macroModeState = vimGlobalState.macroModeState; + if (registerName == '@') { + registerName = macroModeState.latestRegister; + } + while(repeat--){ + executeMacroRegister(cm, vim, macroModeState, registerName); + } + }, + enterMacroRecordMode: function(cm, actionArgs) { + var macroModeState = vimGlobalState.macroModeState; + var registerName = actionArgs.selectedCharacter; + macroModeState.enterMacroRecordMode(cm, registerName); + }, + enterInsertMode: function(cm, actionArgs, vim) { + if (cm.getOption('readOnly')) { return; } + vim.insertMode = true; + vim.insertModeRepeat = actionArgs && actionArgs.repeat || 1; + var insertAt = (actionArgs) ? actionArgs.insertAt : null; + var sel = vim.sel; + var head = actionArgs.head || cm.getCursor('head'); + var height = cm.listSelections().length; + if (insertAt == 'eol') { + head = Pos(head.line, lineLength(cm, head.line)); + } else if (insertAt == 'charAfter') { + head = offsetCursor(head, 0, 1); + } else if (insertAt == 'firstNonBlank') { + head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head); + } else if (insertAt == 'startOfSelectedArea') { + if (!vim.visualBlock) { + if (sel.head.line < sel.anchor.line) { + head = sel.head; + } else { + head = Pos(sel.anchor.line, 0); + } + } else { + head = Pos( + Math.min(sel.head.line, sel.anchor.line), + Math.min(sel.head.ch, sel.anchor.ch)); + height = Math.abs(sel.head.line - sel.anchor.line) + 1; + } + } else if (insertAt == 'endOfSelectedArea') { + if (!vim.visualBlock) { + if (sel.head.line >= sel.anchor.line) { + head = offsetCursor(sel.head, 0, 1); + } else { + head = Pos(sel.anchor.line, 0); + } + } else { + head = Pos( + Math.min(sel.head.line, sel.anchor.line), + Math.max(sel.head.ch + 1, sel.anchor.ch)); + height = Math.abs(sel.head.line - sel.anchor.line) + 1; + } + } else if (insertAt == 'inplace') { + if (vim.visualMode){ + return; + } + } + cm.setOption('keyMap', 'vim-insert'); + cm.setOption('disableInput', false); + if (actionArgs && actionArgs.replace) { + // Handle Replace-mode as a special case of insert mode. + cm.toggleOverwrite(true); + cm.setOption('keyMap', 'vim-replace'); + CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"}); + } else { + cm.setOption('keyMap', 'vim-insert'); + CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"}); + } + if (!vimGlobalState.macroModeState.isPlaying) { + // Only record if not replaying. + cm.on('change', onChange); + CodeMirror.on(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); + } + if (vim.visualMode) { + exitVisualMode(cm); + } + selectForInsert(cm, head, height); + }, + toggleVisualMode: function(cm, actionArgs, vim) { + var repeat = actionArgs.repeat; + var anchor = cm.getCursor(); + var head; + // TODO: The repeat should actually select number of characters/lines + // equal to the repeat times the size of the previous visual + // operation. + if (!vim.visualMode) { + // Entering visual mode + vim.visualMode = true; + vim.visualLine = !!actionArgs.linewise; + vim.visualBlock = !!actionArgs.blockwise; + head = clipCursorToContent( + cm, Pos(anchor.line, anchor.ch + repeat - 1), + true /** includeLineBreak */); + vim.sel = { + anchor: anchor, + head: head + }; + CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); + updateCmSelection(cm); + updateMark(cm, vim, '<', cursorMin(anchor, head)); + updateMark(cm, vim, '>', cursorMax(anchor, head)); + } else if (vim.visualLine ^ actionArgs.linewise || + vim.visualBlock ^ actionArgs.blockwise) { + // Toggling between modes + vim.visualLine = !!actionArgs.linewise; + vim.visualBlock = !!actionArgs.blockwise; + CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); + updateCmSelection(cm); + } else { + exitVisualMode(cm); + } + }, + reselectLastSelection: function(cm, _actionArgs, vim) { + var lastSelection = vim.lastSelection; + if (vim.visualMode) { + updateLastSelection(cm, vim); + } + if (lastSelection) { + var anchor = lastSelection.anchorMark.find(); + var head = lastSelection.headMark.find(); + if (!anchor || !head) { + // If the marks have been destroyed due to edits, do nothing. + return; + } + vim.sel = { + anchor: anchor, + head: head + }; + vim.visualMode = true; + vim.visualLine = lastSelection.visualLine; + vim.visualBlock = lastSelection.visualBlock; + updateCmSelection(cm); + updateMark(cm, vim, '<', cursorMin(anchor, head)); + updateMark(cm, vim, '>', cursorMax(anchor, head)); + CodeMirror.signal(cm, 'vim-mode-change', { + mode: 'visual', + subMode: vim.visualLine ? 'linewise' : + vim.visualBlock ? 'blockwise' : ''}); + } + }, + joinLines: function(cm, actionArgs, vim) { + var curStart, curEnd; + if (vim.visualMode) { + curStart = cm.getCursor('anchor'); + curEnd = cm.getCursor('head'); + if (cursorIsBefore(curEnd, curStart)) { + var tmp = curEnd; + curEnd = curStart; + curStart = tmp; + } + curEnd.ch = lineLength(cm, curEnd.line) - 1; + } else { + // Repeat is the number of lines to join. Minimum 2 lines. + var repeat = Math.max(actionArgs.repeat, 2); + curStart = cm.getCursor(); + curEnd = clipCursorToContent(cm, Pos(curStart.line + repeat - 1, + Infinity)); + } + var finalCh = 0; + for (var i = curStart.line; i < curEnd.line; i++) { + finalCh = lineLength(cm, curStart.line); + var tmp = Pos(curStart.line + 1, + lineLength(cm, curStart.line + 1)); + var text = cm.getRange(curStart, tmp); + text = text.replace(/\n\s*/g, ' '); + cm.replaceRange(text, curStart, tmp); + } + var curFinalPos = Pos(curStart.line, finalCh); + if (vim.visualMode) { + exitVisualMode(cm, false); + } + cm.setCursor(curFinalPos); + }, + newLineAndEnterInsertMode: function(cm, actionArgs, vim) { + vim.insertMode = true; + var insertAt = copyCursor(cm.getCursor()); + if (insertAt.line === cm.firstLine() && !actionArgs.after) { + // Special case for inserting newline before start of document. + cm.replaceRange('\n', Pos(cm.firstLine(), 0)); + cm.setCursor(cm.firstLine(), 0); + } else { + insertAt.line = (actionArgs.after) ? insertAt.line : + insertAt.line - 1; + insertAt.ch = lineLength(cm, insertAt.line); + cm.setCursor(insertAt); + var newlineFn = CodeMirror.commands.newlineAndIndentContinueComment || + CodeMirror.commands.newlineAndIndent; + newlineFn(cm); + } + this.enterInsertMode(cm, { repeat: actionArgs.repeat }, vim); + }, + paste: function(cm, actionArgs, vim) { + var cur = copyCursor(cm.getCursor()); + var register = vimGlobalState.registerController.getRegister( + actionArgs.registerName); + var text = register.toString(); + if (!text) { + return; + } + if (actionArgs.matchIndent) { + var tabSize = cm.getOption("tabSize"); + // length that considers tabs and tabSize + var whitespaceLength = function(str) { + var tabs = (str.split("\t").length - 1); + var spaces = (str.split(" ").length - 1); + return tabs * tabSize + spaces * 1; + }; + var currentLine = cm.getLine(cm.getCursor().line); + var indent = whitespaceLength(currentLine.match(/^\s*/)[0]); + // chomp last newline b/c don't want it to match /^\s*/gm + var chompedText = text.replace(/\n$/, ''); + var wasChomped = text !== chompedText; + var firstIndent = whitespaceLength(text.match(/^\s*/)[0]); + var text = chompedText.replace(/^\s*/gm, function(wspace) { + var newIndent = indent + (whitespaceLength(wspace) - firstIndent); + if (newIndent < 0) { + return ""; + } + else if (cm.getOption("indentWithTabs")) { + var quotient = Math.floor(newIndent / tabSize); + return Array(quotient + 1).join('\t'); + } + else { + return Array(newIndent + 1).join(' '); + } + }); + text += wasChomped ? "\n" : ""; + } + if (actionArgs.repeat > 1) { + var text = Array(actionArgs.repeat + 1).join(text); + } + var linewise = register.linewise; + var blockwise = register.blockwise; + if (linewise && !blockwise) { + if(vim.visualMode) { + text = vim.visualLine ? text.slice(0, -1) : '\n' + text.slice(0, text.length - 1) + '\n'; + } else if (actionArgs.after) { + // Move the newline at the end to the start instead, and paste just + // before the newline character of the line we are on right now. + text = '\n' + text.slice(0, text.length - 1); + cur.ch = lineLength(cm, cur.line); + } else { + cur.ch = 0; + } + } else { + if (blockwise) { + text = text.split('\n'); + for (var i = 0; i < text.length; i++) { + text[i] = (text[i] == '') ? ' ' : text[i]; + } + } + cur.ch += actionArgs.after ? 1 : 0; + } + var curPosFinal; + var idx; + if (vim.visualMode) { + // save the pasted text for reselection if the need arises + vim.lastPastedText = text; + var lastSelectionCurEnd; + var selectedArea = getSelectedAreaRange(cm, vim); + var selectionStart = selectedArea[0]; + var selectionEnd = selectedArea[1]; + var selectedText = cm.getSelection(); + var selections = cm.listSelections(); + var emptyStrings = new Array(selections.length).join('1').split('1'); + // save the curEnd marker before it get cleared due to cm.replaceRange. + if (vim.lastSelection) { + lastSelectionCurEnd = vim.lastSelection.headMark.find(); + } + // push the previously selected text to unnamed register + vimGlobalState.registerController.unnamedRegister.setText(selectedText); + if (blockwise) { + // first delete the selected text + cm.replaceSelections(emptyStrings); + // Set new selections as per the block length of the yanked text + selectionEnd = Pos(selectionStart.line + text.length-1, selectionStart.ch); + cm.setCursor(selectionStart); + selectBlock(cm, selectionEnd); + cm.replaceSelections(text); + curPosFinal = selectionStart; + } else if (vim.visualBlock) { + cm.replaceSelections(emptyStrings); + cm.setCursor(selectionStart); + cm.replaceRange(text, selectionStart, selectionStart); + curPosFinal = selectionStart; + } else { + cm.replaceRange(text, selectionStart, selectionEnd); + curPosFinal = cm.posFromIndex(cm.indexFromPos(selectionStart) + text.length - 1); + } + // restore the the curEnd marker + if(lastSelectionCurEnd) { + vim.lastSelection.headMark = cm.setBookmark(lastSelectionCurEnd); + } + if (linewise) { + curPosFinal.ch=0; + } + } else { + if (blockwise) { + cm.setCursor(cur); + for (var i = 0; i < text.length; i++) { + var line = cur.line+i; + if (line > cm.lastLine()) { + cm.replaceRange('\n', Pos(line, 0)); + } + var lastCh = lineLength(cm, line); + if (lastCh < cur.ch) { + extendLineToColumn(cm, line, cur.ch); + } + } + cm.setCursor(cur); + selectBlock(cm, Pos(cur.line + text.length-1, cur.ch)); + cm.replaceSelections(text); + curPosFinal = cur; + } else { + cm.replaceRange(text, cur); + // Now fine tune the cursor to where we want it. + if (linewise && actionArgs.after) { + curPosFinal = Pos( + cur.line + 1, + findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line + 1))); + } else if (linewise && !actionArgs.after) { + curPosFinal = Pos( + cur.line, + findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line))); + } else if (!linewise && actionArgs.after) { + idx = cm.indexFromPos(cur); + curPosFinal = cm.posFromIndex(idx + text.length - 1); + } else { + idx = cm.indexFromPos(cur); + curPosFinal = cm.posFromIndex(idx + text.length); + } + } + } + if (vim.visualMode) { + exitVisualMode(cm, false); + } + cm.setCursor(curPosFinal); + }, + undo: function(cm, actionArgs) { + cm.operation(function() { + repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)(); + cm.setCursor(cm.getCursor('anchor')); + }); + }, + redo: function(cm, actionArgs) { + repeatFn(cm, CodeMirror.commands.redo, actionArgs.repeat)(); + }, + setRegister: function(_cm, actionArgs, vim) { + vim.inputState.registerName = actionArgs.selectedCharacter; + }, + setMark: function(cm, actionArgs, vim) { + var markName = actionArgs.selectedCharacter; + updateMark(cm, vim, markName, cm.getCursor()); + }, + replace: function(cm, actionArgs, vim) { + var replaceWith = actionArgs.selectedCharacter; + var curStart = cm.getCursor(); + var replaceTo; + var curEnd; + var selections = cm.listSelections(); + if (vim.visualMode) { + curStart = cm.getCursor('start'); + curEnd = cm.getCursor('end'); + } else { + var line = cm.getLine(curStart.line); + replaceTo = curStart.ch + actionArgs.repeat; + if (replaceTo > line.length) { + replaceTo=line.length; + } + curEnd = Pos(curStart.line, replaceTo); + } + if (replaceWith=='\n') { + if (!vim.visualMode) cm.replaceRange('', curStart, curEnd); + // special case, where vim help says to replace by just one line-break + (CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent)(cm); + } else { + var replaceWithStr = cm.getRange(curStart, curEnd); + //replace all characters in range by selected, but keep linebreaks + replaceWithStr = replaceWithStr.replace(/[^\n]/g, replaceWith); + if (vim.visualBlock) { + // Tabs are split in visua block before replacing + var spaces = new Array(cm.getOption("tabSize")+1).join(' '); + replaceWithStr = cm.getSelection(); + replaceWithStr = replaceWithStr.replace(/\t/g, spaces).replace(/[^\n]/g, replaceWith).split('\n'); + cm.replaceSelections(replaceWithStr); + } else { + cm.replaceRange(replaceWithStr, curStart, curEnd); + } + if (vim.visualMode) { + curStart = cursorIsBefore(selections[0].anchor, selections[0].head) ? + selections[0].anchor : selections[0].head; + cm.setCursor(curStart); + exitVisualMode(cm, false); + } else { + cm.setCursor(offsetCursor(curEnd, 0, -1)); + } + } + }, + incrementNumberToken: function(cm, actionArgs) { + var cur = cm.getCursor(); + var lineStr = cm.getLine(cur.line); + var re = /-?\d+/g; + var match; + var start; + var end; + var numberStr; + var token; + while ((match = re.exec(lineStr)) !== null) { + token = match[0]; + start = match.index; + end = start + token.length; + if (cur.ch < end)break; + } + if (!actionArgs.backtrack && (end <= cur.ch))return; + if (token) { + var increment = actionArgs.increase ? 1 : -1; + var number = parseInt(token) + (increment * actionArgs.repeat); + var from = Pos(cur.line, start); + var to = Pos(cur.line, end); + numberStr = number.toString(); + cm.replaceRange(numberStr, from, to); + } else { + return; + } + cm.setCursor(Pos(cur.line, start + numberStr.length - 1)); + }, + repeatLastEdit: function(cm, actionArgs, vim) { + var lastEditInputState = vim.lastEditInputState; + if (!lastEditInputState) { return; } + var repeat = actionArgs.repeat; + if (repeat && actionArgs.repeatIsExplicit) { + vim.lastEditInputState.repeatOverride = repeat; + } else { + repeat = vim.lastEditInputState.repeatOverride || repeat; + } + repeatLastEdit(cm, vim, repeat, false /** repeatForInsert */); + }, + exitInsertMode: exitInsertMode + }; + + function defineAction(name, fn) { + actions[name] = fn; + } + + /* + * Below are miscellaneous utility functions used by vim.js + */ + + /** + * Clips cursor to ensure that line is within the buffer's range + * If includeLineBreak is true, then allow cur.ch == lineLength. + */ + function clipCursorToContent(cm, cur, includeLineBreak) { + var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine() ); + var maxCh = lineLength(cm, line) - 1; + maxCh = (includeLineBreak) ? maxCh + 1 : maxCh; + var ch = Math.min(Math.max(0, cur.ch), maxCh); + return Pos(line, ch); + } + function copyArgs(args) { + var ret = {}; + for (var prop in args) { + if (args.hasOwnProperty(prop)) { + ret[prop] = args[prop]; + } + } + return ret; + } + function offsetCursor(cur, offsetLine, offsetCh) { + if (typeof offsetLine === 'object') { + offsetCh = offsetLine.ch; + offsetLine = offsetLine.line; + } + return Pos(cur.line + offsetLine, cur.ch + offsetCh); + } + function getOffset(anchor, head) { + return { + line: head.line - anchor.line, + ch: head.line - anchor.line + }; + } + function commandMatches(keys, keyMap, context, inputState) { + // Partial matches are not applied. They inform the key handler + // that the current key sequence is a subsequence of a valid key + // sequence, so that the key buffer is not cleared. + var match, partial = [], full = []; + for (var i = 0; i < keyMap.length; i++) { + var command = keyMap[i]; + if (context == 'insert' && command.context != 'insert' || + command.context && command.context != context || + inputState.operator && command.type == 'action' || + !(match = commandMatch(keys, command.keys))) { continue; } + if (match == 'partial') { partial.push(command); } + if (match == 'full') { full.push(command); } + } + return { + partial: partial.length && partial, + full: full.length && full + }; + } + function commandMatch(pressed, mapped) { + if (mapped.slice(-11) == '') { + // Last character matches anything. + var prefixLen = mapped.length - 11; + var pressedPrefix = pressed.slice(0, prefixLen); + var mappedPrefix = mapped.slice(0, prefixLen); + return pressedPrefix == mappedPrefix && pressed.length > prefixLen ? 'full' : + mappedPrefix.indexOf(pressedPrefix) == 0 ? 'partial' : false; + } else { + return pressed == mapped ? 'full' : + mapped.indexOf(pressed) == 0 ? 'partial' : false; + } + } + function lastChar(keys) { + var match = /^.*(<[\w\-]+>)$/.exec(keys); + var selectedCharacter = match ? match[1] : keys.slice(-1); + if (selectedCharacter.length > 1){ + switch(selectedCharacter){ + case '': + selectedCharacter='\n'; + break; + case '': + selectedCharacter=' '; + break; + default: + break; + } + } + return selectedCharacter; + } + function repeatFn(cm, fn, repeat) { + return function() { + for (var i = 0; i < repeat; i++) { + fn(cm); + } + }; + } + function copyCursor(cur) { + return Pos(cur.line, cur.ch); + } + function cursorEqual(cur1, cur2) { + return cur1.ch == cur2.ch && cur1.line == cur2.line; + } + function cursorIsBefore(cur1, cur2) { + if (cur1.line < cur2.line) { + return true; + } + if (cur1.line == cur2.line && cur1.ch < cur2.ch) { + return true; + } + return false; + } + function cursorMin(cur1, cur2) { + if (arguments.length > 2) { + cur2 = cursorMin.apply(undefined, Array.prototype.slice.call(arguments, 1)); + } + return cursorIsBefore(cur1, cur2) ? cur1 : cur2; + } + function cursorMax(cur1, cur2) { + if (arguments.length > 2) { + cur2 = cursorMax.apply(undefined, Array.prototype.slice.call(arguments, 1)); + } + return cursorIsBefore(cur1, cur2) ? cur2 : cur1; + } + function cursorIsBetween(cur1, cur2, cur3) { + // returns true if cur2 is between cur1 and cur3. + var cur1before2 = cursorIsBefore(cur1, cur2); + var cur2before3 = cursorIsBefore(cur2, cur3); + return cur1before2 && cur2before3; + } + function lineLength(cm, lineNum) { + return cm.getLine(lineNum).length; + } + function trim(s) { + if (s.trim) { + return s.trim(); + } + return s.replace(/^\s+|\s+$/g, ''); + } + function escapeRegex(s) { + return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g, '\\$1'); + } + function extendLineToColumn(cm, lineNum, column) { + var endCh = lineLength(cm, lineNum); + var spaces = new Array(column-endCh+1).join(' '); + cm.setCursor(Pos(lineNum, endCh)); + cm.replaceRange(spaces, cm.getCursor()); + } + // This functions selects a rectangular block + // of text with selectionEnd as any of its corner + // Height of block: + // Difference in selectionEnd.line and first/last selection.line + // Width of the block: + // Distance between selectionEnd.ch and any(first considered here) selection.ch + function selectBlock(cm, selectionEnd) { + var selections = [], ranges = cm.listSelections(); + var head = copyCursor(cm.clipPos(selectionEnd)); + var isClipped = !cursorEqual(selectionEnd, head); + var curHead = cm.getCursor('head'); + var primIndex = getIndex(ranges, curHead); + var wasClipped = cursorEqual(ranges[primIndex].head, ranges[primIndex].anchor); + var max = ranges.length - 1; + var index = max - primIndex > primIndex ? max : 0; + var base = ranges[index].anchor; + + var firstLine = Math.min(base.line, head.line); + var lastLine = Math.max(base.line, head.line); + var baseCh = base.ch, headCh = head.ch; + + var dir = ranges[index].head.ch - baseCh; + var newDir = headCh - baseCh; + if (dir > 0 && newDir <= 0) { + baseCh++; + if (!isClipped) { headCh--; } + } else if (dir < 0 && newDir >= 0) { + baseCh--; + if (!wasClipped) { headCh++; } + } else if (dir < 0 && newDir == -1) { + baseCh--; + headCh++; + } + for (var line = firstLine; line <= lastLine; line++) { + var range = {anchor: new Pos(line, baseCh), head: new Pos(line, headCh)}; + selections.push(range); + } + primIndex = head.line == lastLine ? selections.length - 1 : 0; + cm.setSelections(selections); + selectionEnd.ch = headCh; + base.ch = baseCh; + return base; + } + function selectForInsert(cm, head, height) { + var sel = []; + for (var i = 0; i < height; i++) { + var lineHead = offsetCursor(head, i, 0); + sel.push({anchor: lineHead, head: lineHead}); + } + cm.setSelections(sel, 0); + } + // getIndex returns the index of the cursor in the selections. + function getIndex(ranges, cursor, end) { + for (var i = 0; i < ranges.length; i++) { + var atAnchor = end != 'head' && cursorEqual(ranges[i].anchor, cursor); + var atHead = end != 'anchor' && cursorEqual(ranges[i].head, cursor); + if (atAnchor || atHead) { + return i; + } + } + return -1; + } + function getSelectedAreaRange(cm, vim) { + var lastSelection = vim.lastSelection; + var getCurrentSelectedAreaRange = function() { + var selections = cm.listSelections(); + var start = selections[0]; + var end = selections[selections.length-1]; + var selectionStart = cursorIsBefore(start.anchor, start.head) ? start.anchor : start.head; + var selectionEnd = cursorIsBefore(end.anchor, end.head) ? end.head : end.anchor; + return [selectionStart, selectionEnd]; + }; + var getLastSelectedAreaRange = function() { + var selectionStart = cm.getCursor(); + var selectionEnd = cm.getCursor(); + var block = lastSelection.visualBlock; + if (block) { + var width = block.width; + var height = block.height; + selectionEnd = Pos(selectionStart.line + height, selectionStart.ch + width); + var selections = []; + // selectBlock creates a 'proper' rectangular block. + // We do not want that in all cases, so we manually set selections. + for (var i = selectionStart.line; i < selectionEnd.line; i++) { + var anchor = Pos(i, selectionStart.ch); + var head = Pos(i, selectionEnd.ch); + var range = {anchor: anchor, head: head}; + selections.push(range); + } + cm.setSelections(selections); + } else { + var start = lastSelection.anchorMark.find(); + var end = lastSelection.headMark.find(); + var line = end.line - start.line; + var ch = end.ch - start.ch; + selectionEnd = {line: selectionEnd.line + line, ch: line ? selectionEnd.ch : ch + selectionEnd.ch}; + if (lastSelection.visualLine) { + selectionStart = Pos(selectionStart.line, 0); + selectionEnd = Pos(selectionEnd.line, lineLength(cm, selectionEnd.line)); + } + cm.setSelection(selectionStart, selectionEnd); + } + return [selectionStart, selectionEnd]; + }; + if (!vim.visualMode) { + // In case of replaying the action. + return getLastSelectedAreaRange(); + } else { + return getCurrentSelectedAreaRange(); + } + } + // Updates the previous selection with the current selection's values. This + // should only be called in visual mode. + function updateLastSelection(cm, vim) { + var anchor = vim.sel.anchor; + var head = vim.sel.head; + // To accommodate the effect of lastPastedText in the last selection + if (vim.lastPastedText) { + head = cm.posFromIndex(cm.indexFromPos(anchor) + vim.lastPastedText.length); + vim.lastPastedText = null; + } + vim.lastSelection = {'anchorMark': cm.setBookmark(anchor), + 'headMark': cm.setBookmark(head), + 'anchor': copyCursor(anchor), + 'head': copyCursor(head), + 'visualMode': vim.visualMode, + 'visualLine': vim.visualLine, + 'visualBlock': vim.visualBlock}; + } + function expandSelection(cm, start, end) { + var sel = cm.state.vim.sel; + var head = sel.head; + var anchor = sel.anchor; + var tmp; + if (cursorIsBefore(end, start)) { + tmp = end; + end = start; + start = tmp; + } + if (cursorIsBefore(head, anchor)) { + head = cursorMin(start, head); + anchor = cursorMax(anchor, end); + } else { + anchor = cursorMin(start, anchor); + head = cursorMax(head, end); + head = offsetCursor(head, 0, -1); + if (head.ch == -1 && head.line != cm.firstLine()) { + head = Pos(head.line - 1, lineLength(cm, head.line - 1)); + } + } + return [anchor, head]; + } + /** + * Updates the CodeMirror selection to match the provided vim selection. + * If no arguments are given, it uses the current vim selection state. + */ + function updateCmSelection(cm, sel, mode) { + var vim = cm.state.vim; + sel = sel || vim.sel; + var mode = mode || + vim.visualLine ? 'line' : vim.visualBlock ? 'block' : 'char'; + var cmSel = makeCmSelection(cm, sel, mode); + cm.setSelections(cmSel.ranges, cmSel.primary); + updateFakeCursor(cm); + } + function makeCmSelection(cm, sel, mode, exclusive) { + var head = copyCursor(sel.head); + var anchor = copyCursor(sel.anchor); + if (mode == 'char') { + var headOffset = !exclusive && !cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; + var anchorOffset = cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; + head = offsetCursor(sel.head, 0, headOffset); + anchor = offsetCursor(sel.anchor, 0, anchorOffset); + return { + ranges: [{anchor: anchor, head: head}], + primary: 0 + }; + } else if (mode == 'line') { + if (!cursorIsBefore(sel.head, sel.anchor)) { + anchor.ch = 0; + + var lastLine = cm.lastLine(); + if (head.line > lastLine) { + head.line = lastLine; + } + head.ch = lineLength(cm, head.line); + } else { + head.ch = 0; + anchor.ch = lineLength(cm, anchor.line); + } + return { + ranges: [{anchor: anchor, head: head}], + primary: 0 + }; + } else if (mode == 'block') { + var top = Math.min(anchor.line, head.line), + left = Math.min(anchor.ch, head.ch), + bottom = Math.max(anchor.line, head.line), + right = Math.max(anchor.ch, head.ch) + 1; + var height = bottom - top + 1; + var primary = head.line == top ? 0 : height - 1; + var ranges = []; + for (var i = 0; i < height; i++) { + ranges.push({ + anchor: Pos(top + i, left), + head: Pos(top + i, right) + }); + } + return { + ranges: ranges, + primary: primary + }; + } + } + function getHead(cm) { + var cur = cm.getCursor('head'); + if (cm.getSelection().length == 1) { + // Small corner case when only 1 character is selected. The "real" + // head is the left of head and anchor. + cur = cursorMin(cur, cm.getCursor('anchor')); + } + return cur; + } + + /** + * If moveHead is set to false, the CodeMirror selection will not be + * touched. The caller assumes the responsibility of putting the cursor + * in the right place. + */ + function exitVisualMode(cm, moveHead) { + var vim = cm.state.vim; + if (moveHead !== false) { + cm.setCursor(clipCursorToContent(cm, vim.sel.head)); + } + updateLastSelection(cm, vim); + vim.visualMode = false; + vim.visualLine = false; + vim.visualBlock = false; + CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); + if (vim.fakeCursor) { + vim.fakeCursor.clear(); + } + } + + // Remove any trailing newlines from the selection. For + // example, with the caret at the start of the last word on the line, + // 'dw' should word, but not the newline, while 'w' should advance the + // caret to the first character of the next line. + function clipToLine(cm, curStart, curEnd) { + var selection = cm.getRange(curStart, curEnd); + // Only clip if the selection ends with trailing newline + whitespace + if (/\n\s*$/.test(selection)) { + var lines = selection.split('\n'); + // We know this is all whitepsace. + lines.pop(); + + // Cases: + // 1. Last word is an empty line - do not clip the trailing '\n' + // 2. Last word is not an empty line - clip the trailing '\n' + var line; + // Find the line containing the last word, and clip all whitespace up + // to it. + for (var line = lines.pop(); lines.length > 0 && line && isWhiteSpaceString(line); line = lines.pop()) { + curEnd.line--; + curEnd.ch = 0; + } + // If the last word is not an empty line, clip an additional newline + if (line) { + curEnd.line--; + curEnd.ch = lineLength(cm, curEnd.line); + } else { + curEnd.ch = 0; + } + } + } + + // Expand the selection to line ends. + function expandSelectionToLine(_cm, curStart, curEnd) { + curStart.ch = 0; + curEnd.ch = 0; + curEnd.line++; + } + + function findFirstNonWhiteSpaceCharacter(text) { + if (!text) { + return 0; + } + var firstNonWS = text.search(/\S/); + return firstNonWS == -1 ? text.length : firstNonWS; + } + + function expandWordUnderCursor(cm, inclusive, _forward, bigWord, noSymbol) { + var cur = getHead(cm); + var line = cm.getLine(cur.line); + var idx = cur.ch; + + // Seek to first word or non-whitespace character, depending on if + // noSymbol is true. + var test = noSymbol ? wordCharTest[0] : bigWordCharTest [0]; + while (!test(line.charAt(idx))) { + idx++; + if (idx >= line.length) { return null; } + } + + if (bigWord) { + test = bigWordCharTest[0]; + } else { + test = wordCharTest[0]; + if (!test(line.charAt(idx))) { + test = wordCharTest[1]; + } + } + + var end = idx, start = idx; + while (test(line.charAt(end)) && end < line.length) { end++; } + while (test(line.charAt(start)) && start >= 0) { start--; } + start++; + + if (inclusive) { + // If present, include all whitespace after word. + // Otherwise, include all whitespace before word, except indentation. + var wordEnd = end; + while (/\s/.test(line.charAt(end)) && end < line.length) { end++; } + if (wordEnd == end) { + var wordStart = start; + while (/\s/.test(line.charAt(start - 1)) && start > 0) { start--; } + if (!start) { start = wordStart; } + } + } + return { start: Pos(cur.line, start), end: Pos(cur.line, end) }; + } + + function recordJumpPosition(cm, oldCur, newCur) { + if (!cursorEqual(oldCur, newCur)) { + vimGlobalState.jumpList.add(cm, oldCur, newCur); + } + } + + function recordLastCharacterSearch(increment, args) { + vimGlobalState.lastChararacterSearch.increment = increment; + vimGlobalState.lastChararacterSearch.forward = args.forward; + vimGlobalState.lastChararacterSearch.selectedCharacter = args.selectedCharacter; + } + + var symbolToMode = { + '(': 'bracket', ')': 'bracket', '{': 'bracket', '}': 'bracket', + '[': 'section', ']': 'section', + '*': 'comment', '/': 'comment', + 'm': 'method', 'M': 'method', + '#': 'preprocess' + }; + var findSymbolModes = { + bracket: { + isComplete: function(state) { + if (state.nextCh === state.symb) { + state.depth++; + if (state.depth >= 1)return true; + } else if (state.nextCh === state.reverseSymb) { + state.depth--; + } + return false; + } + }, + section: { + init: function(state) { + state.curMoveThrough = true; + state.symb = (state.forward ? ']' : '[') === state.symb ? '{' : '}'; + }, + isComplete: function(state) { + return state.index === 0 && state.nextCh === state.symb; + } + }, + comment: { + isComplete: function(state) { + var found = state.lastCh === '*' && state.nextCh === '/'; + state.lastCh = state.nextCh; + return found; + } + }, + // TODO: The original Vim implementation only operates on level 1 and 2. + // The current implementation doesn't check for code block level and + // therefore it operates on any levels. + method: { + init: function(state) { + state.symb = (state.symb === 'm' ? '{' : '}'); + state.reverseSymb = state.symb === '{' ? '}' : '{'; + }, + isComplete: function(state) { + if (state.nextCh === state.symb)return true; + return false; + } + }, + preprocess: { + init: function(state) { + state.index = 0; + }, + isComplete: function(state) { + if (state.nextCh === '#') { + var token = state.lineText.match(/#(\w+)/)[1]; + if (token === 'endif') { + if (state.forward && state.depth === 0) { + return true; + } + state.depth++; + } else if (token === 'if') { + if (!state.forward && state.depth === 0) { + return true; + } + state.depth--; + } + if (token === 'else' && state.depth === 0)return true; + } + return false; + } + } + }; + function findSymbol(cm, repeat, forward, symb) { + var cur = copyCursor(cm.getCursor()); + var increment = forward ? 1 : -1; + var endLine = forward ? cm.lineCount() : -1; + var curCh = cur.ch; + var line = cur.line; + var lineText = cm.getLine(line); + var state = { + lineText: lineText, + nextCh: lineText.charAt(curCh), + lastCh: null, + index: curCh, + symb: symb, + reverseSymb: (forward ? { ')': '(', '}': '{' } : { '(': ')', '{': '}' })[symb], + forward: forward, + depth: 0, + curMoveThrough: false + }; + var mode = symbolToMode[symb]; + if (!mode)return cur; + var init = findSymbolModes[mode].init; + var isComplete = findSymbolModes[mode].isComplete; + if (init) { init(state); } + while (line !== endLine && repeat) { + state.index += increment; + state.nextCh = state.lineText.charAt(state.index); + if (!state.nextCh) { + line += increment; + state.lineText = cm.getLine(line) || ''; + if (increment > 0) { + state.index = 0; + } else { + var lineLen = state.lineText.length; + state.index = (lineLen > 0) ? (lineLen-1) : 0; + } + state.nextCh = state.lineText.charAt(state.index); + } + if (isComplete(state)) { + cur.line = line; + cur.ch = state.index; + repeat--; + } + } + if (state.nextCh || state.curMoveThrough) { + return Pos(line, state.index); + } + return cur; + } + + /** + * Returns the boundaries of the next word. If the cursor in the middle of + * the word, then returns the boundaries of the current word, starting at + * the cursor. If the cursor is at the start/end of a word, and we are going + * forward/backward, respectively, find the boundaries of the next word. + * + * @param {CodeMirror} cm CodeMirror object. + * @param {Cursor} cur The cursor position. + * @param {boolean} forward True to search forward. False to search + * backward. + * @param {boolean} bigWord True if punctuation count as part of the word. + * False if only [a-zA-Z0-9] characters count as part of the word. + * @param {boolean} emptyLineIsWord True if empty lines should be treated + * as words. + * @return {Object{from:number, to:number, line: number}} The boundaries of + * the word, or null if there are no more words. + */ + function findWord(cm, cur, forward, bigWord, emptyLineIsWord) { + var lineNum = cur.line; + var pos = cur.ch; + var line = cm.getLine(lineNum); + var dir = forward ? 1 : -1; + var charTests = bigWord ? bigWordCharTest: wordCharTest; + + if (emptyLineIsWord && line == '') { + lineNum += dir; + line = cm.getLine(lineNum); + if (!isLine(cm, lineNum)) { + return null; + } + pos = (forward) ? 0 : line.length; + } + + while (true) { + if (emptyLineIsWord && line == '') { + return { from: 0, to: 0, line: lineNum }; + } + var stop = (dir > 0) ? line.length : -1; + var wordStart = stop, wordEnd = stop; + // Find bounds of next word. + while (pos != stop) { + var foundWord = false; + for (var i = 0; i < charTests.length && !foundWord; ++i) { + if (charTests[i](line.charAt(pos))) { + wordStart = pos; + // Advance to end of word. + while (pos != stop && charTests[i](line.charAt(pos))) { + pos += dir; + } + wordEnd = pos; + foundWord = wordStart != wordEnd; + if (wordStart == cur.ch && lineNum == cur.line && + wordEnd == wordStart + dir) { + // We started at the end of a word. Find the next one. + continue; + } else { + return { + from: Math.min(wordStart, wordEnd + 1), + to: Math.max(wordStart, wordEnd), + line: lineNum }; + } + } + } + if (!foundWord) { + pos += dir; + } + } + // Advance to next/prev line. + lineNum += dir; + if (!isLine(cm, lineNum)) { + return null; + } + line = cm.getLine(lineNum); + pos = (dir > 0) ? 0 : line.length; + } + // Should never get here. + throw new Error('The impossible happened.'); + } + + /** + * @param {CodeMirror} cm CodeMirror object. + * @param {Pos} cur The position to start from. + * @param {int} repeat Number of words to move past. + * @param {boolean} forward True to search forward. False to search + * backward. + * @param {boolean} wordEnd True to move to end of word. False to move to + * beginning of word. + * @param {boolean} bigWord True if punctuation count as part of the word. + * False if only alphabet characters count as part of the word. + * @return {Cursor} The position the cursor should move to. + */ + function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) { + var curStart = copyCursor(cur); + var words = []; + if (forward && !wordEnd || !forward && wordEnd) { + repeat++; + } + // For 'e', empty lines are not considered words, go figure. + var emptyLineIsWord = !(forward && wordEnd); + for (var i = 0; i < repeat; i++) { + var word = findWord(cm, cur, forward, bigWord, emptyLineIsWord); + if (!word) { + var eodCh = lineLength(cm, cm.lastLine()); + words.push(forward + ? {line: cm.lastLine(), from: eodCh, to: eodCh} + : {line: 0, from: 0, to: 0}); + break; + } + words.push(word); + cur = Pos(word.line, forward ? (word.to - 1) : word.from); + } + var shortCircuit = words.length != repeat; + var firstWord = words[0]; + var lastWord = words.pop(); + if (forward && !wordEnd) { + // w + if (!shortCircuit && (firstWord.from != curStart.ch || firstWord.line != curStart.line)) { + // We did not start in the middle of a word. Discard the extra word at the end. + lastWord = words.pop(); + } + return Pos(lastWord.line, lastWord.from); + } else if (forward && wordEnd) { + return Pos(lastWord.line, lastWord.to - 1); + } else if (!forward && wordEnd) { + // ge + if (!shortCircuit && (firstWord.to != curStart.ch || firstWord.line != curStart.line)) { + // We did not start in the middle of a word. Discard the extra word at the end. + lastWord = words.pop(); + } + return Pos(lastWord.line, lastWord.to); + } else { + // b + return Pos(lastWord.line, lastWord.from); + } + } + + function moveToCharacter(cm, repeat, forward, character) { + var cur = cm.getCursor(); + var start = cur.ch; + var idx; + for (var i = 0; i < repeat; i ++) { + var line = cm.getLine(cur.line); + idx = charIdxInLine(start, line, character, forward, true); + if (idx == -1) { + return null; + } + start = idx; + } + return Pos(cm.getCursor().line, idx); + } + + function moveToColumn(cm, repeat) { + // repeat is always >= 1, so repeat - 1 always corresponds + // to the column we want to go to. + var line = cm.getCursor().line; + return clipCursorToContent(cm, Pos(line, repeat - 1)); + } + + function updateMark(cm, vim, markName, pos) { + if (!inArray(markName, validMarks)) { + return; + } + if (vim.marks[markName]) { + vim.marks[markName].clear(); + } + vim.marks[markName] = cm.setBookmark(pos); + } + + function charIdxInLine(start, line, character, forward, includeChar) { + // Search for char in line. + // motion_options: {forward, includeChar} + // If includeChar = true, include it too. + // If forward = true, search forward, else search backwards. + // If char is not found on this line, do nothing + var idx; + if (forward) { + idx = line.indexOf(character, start + 1); + if (idx != -1 && !includeChar) { + idx -= 1; + } + } else { + idx = line.lastIndexOf(character, start - 1); + if (idx != -1 && !includeChar) { + idx += 1; + } + } + return idx; + } + + function findParagraph(cm, head, repeat, dir, inclusive) { + var line = head.line; + var min = cm.firstLine(); + var max = cm.lastLine(); + var start, end, i = line; + function isEmpty(i) { return !/\S/.test(cm.getLine(i)); } // ace_patch + function isBoundary(i, dir, any) { + if (any) { return isEmpty(i) != isEmpty(i + dir); } + return !isEmpty(i) && isEmpty(i + dir); + } + function skipFold(i) { + dir = dir > 0 ? 1 : -1; + var foldLine = cm.ace.session.getFoldLine(i); + if (foldLine) { + if (i + dir > foldLine.start.row && i + dir < foldLine.end.row) + dir = (dir > 0 ? foldLine.end.row : foldLine.start.row) - i; + } + } + if (dir) { + while (min <= i && i <= max && repeat > 0) { + skipFold(i); + if (isBoundary(i, dir)) { repeat--; } + i += dir; + } + return new Pos(i, 0); + } + + var vim = cm.state.vim; + if (vim.visualLine && isBoundary(line, 1, true)) { + var anchor = vim.sel.anchor; + if (isBoundary(anchor.line, -1, true)) { + if (!inclusive || anchor.line != line) { + line += 1; + } + } + } + var startState = isEmpty(line); + for (i = line; i <= max && repeat; i++) { + if (isBoundary(i, 1, true)) { + if (!inclusive || isEmpty(i) != startState) { + repeat--; + } + } + } + end = new Pos(i, 0); + // select boundary before paragraph for the last one + if (i > max && !startState) { startState = true; } + else { inclusive = false; } + for (i = line; i > min; i--) { + if (!inclusive || isEmpty(i) == startState || i == line) { + if (isBoundary(i, -1, true)) { break; } + } + } + start = new Pos(i, 0); + return { start: start, end: end }; + } + + // TODO: perhaps this finagling of start and end positions belonds + // in codmirror/replaceRange? + function selectCompanionObject(cm, head, symb, inclusive) { + var cur = head, start, end; + + var bracketRegexp = ({ + '(': /[()]/, ')': /[()]/, + '[': /[[\]]/, ']': /[[\]]/, + '{': /[{}]/, '}': /[{}]/})[symb]; + var openSym = ({ + '(': '(', ')': '(', + '[': '[', ']': '[', + '{': '{', '}': '{'})[symb]; + var curChar = cm.getLine(cur.line).charAt(cur.ch); + // Due to the behavior of scanForBracket, we need to add an offset if the + // cursor is on a matching open bracket. + var offset = curChar === openSym ? 1 : 0; + + start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1, null, {'bracketRegex': bracketRegexp}); + end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, null, {'bracketRegex': bracketRegexp}); + + if (!start || !end) { + return { start: cur, end: cur }; + } + + start = start.pos; + end = end.pos; + + if ((start.line == end.line && start.ch > end.ch) + || (start.line > end.line)) { + var tmp = start; + start = end; + end = tmp; + } + + if (inclusive) { + end.ch += 1; + } else { + start.ch += 1; + } + + return { start: start, end: end }; + } + + // Takes in a symbol and a cursor and tries to simulate text objects that + // have identical opening and closing symbols + // TODO support across multiple lines + function findBeginningAndEnd(cm, head, symb, inclusive) { + var cur = copyCursor(head); + var line = cm.getLine(cur.line); + var chars = line.split(''); + var start, end, i, len; + var firstIndex = chars.indexOf(symb); + + // the decision tree is to always look backwards for the beginning first, + // but if the cursor is in front of the first instance of the symb, + // then move the cursor forward + if (cur.ch < firstIndex) { + cur.ch = firstIndex; + // Why is this line even here??? + // cm.setCursor(cur.line, firstIndex+1); + } + // otherwise if the cursor is currently on the closing symbol + else if (firstIndex < cur.ch && chars[cur.ch] == symb) { + end = cur.ch; // assign end to the current cursor + --cur.ch; // make sure to look backwards + } + + // if we're currently on the symbol, we've got a start + if (chars[cur.ch] == symb && !end) { + start = cur.ch + 1; // assign start to ahead of the cursor + } else { + // go backwards to find the start + for (i = cur.ch; i > -1 && !start; i--) { + if (chars[i] == symb) { + start = i + 1; + } + } + } + + // look forwards for the end symbol + if (start && !end) { + for (i = start, len = chars.length; i < len && !end; i++) { + if (chars[i] == symb) { + end = i; + } + } + } + + // nothing found + if (!start || !end) { + return { start: cur, end: cur }; + } + + // include the symbols + if (inclusive) { + --start; ++end; + } + + return { + start: Pos(cur.line, start), + end: Pos(cur.line, end) + }; + } + + // Search functions + defineOption('pcre', true, 'boolean'); + function SearchState() {} + SearchState.prototype = { + getQuery: function() { + return vimGlobalState.query; + }, + setQuery: function(query) { + vimGlobalState.query = query; + }, + getOverlay: function() { + return this.searchOverlay; + }, + setOverlay: function(overlay) { + this.searchOverlay = overlay; + }, + isReversed: function() { + return vimGlobalState.isReversed; + }, + setReversed: function(reversed) { + vimGlobalState.isReversed = reversed; + }, + getScrollbarAnnotate: function() { + return this.annotate; + }, + setScrollbarAnnotate: function(annotate) { + this.annotate = annotate; + } + }; + function getSearchState(cm) { + var vim = cm.state.vim; + return vim.searchState_ || (vim.searchState_ = new SearchState()); + } + function dialog(cm, template, shortText, onClose, options) { + if (cm.openDialog) { + cm.openDialog(template, onClose, { bottom: true, value: options.value, + onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp, + selectValueOnOpen: false}); + } + else { + onClose(prompt(shortText, '')); + } + } + + function splitBySlash(argString) { + return splitBySeparator(argString, '/'); + } + + function findUnescapedSlashes(argString) { + return findUnescapedSeparators(argString, '/'); + } + + function splitBySeparator(argString, separator) { + var slashes = findUnescapedSeparators(argString, separator) || []; + if (!slashes.length) return []; + var tokens = []; + // in case of strings like foo/bar + if (slashes[0] !== 0) return; + for (var i = 0; i < slashes.length; i++) { + if (typeof slashes[i] == 'number') + tokens.push(argString.substring(slashes[i] + 1, slashes[i+1])); + } + return tokens; + } + + function findUnescapedSeparators(str, separator) { + if (!separator) + separator = '/'; + + var escapeNextChar = false; + var slashes = []; + for (var i = 0; i < str.length; i++) { + var c = str.charAt(i); + if (!escapeNextChar && c == separator) { + slashes.push(i); + } + escapeNextChar = !escapeNextChar && (c == '\\'); + } + return slashes; + } + + // Translates a search string from ex (vim) syntax into javascript form. + function translateRegex(str) { + // When these match, add a '\' if unescaped or remove one if escaped. + var specials = '|(){'; + // Remove, but never add, a '\' for these. + var unescape = '}'; + var escapeNextChar = false; + var out = []; + for (var i = -1; i < str.length; i++) { + var c = str.charAt(i) || ''; + var n = str.charAt(i+1) || ''; + var specialComesNext = (n && specials.indexOf(n) != -1); + if (escapeNextChar) { + if (c !== '\\' || !specialComesNext) { + out.push(c); + } + escapeNextChar = false; + } else { + if (c === '\\') { + escapeNextChar = true; + // Treat the unescape list as special for removing, but not adding '\'. + if (n && unescape.indexOf(n) != -1) { + specialComesNext = true; + } + // Not passing this test means removing a '\'. + if (!specialComesNext || n === '\\') { + out.push(c); + } + } else { + out.push(c); + if (specialComesNext && n !== '\\') { + out.push('\\'); + } + } + } + } + return out.join(''); + } + + // Translates the replace part of a search and replace from ex (vim) syntax into + // javascript form. Similar to translateRegex, but additionally fixes back references + // (translates '\[0..9]' to '$[0..9]') and follows different rules for escaping '$'. + var charUnescapes = {'\\n': '\n', '\\r': '\r', '\\t': '\t'}; + function translateRegexReplace(str) { + var escapeNextChar = false; + var out = []; + for (var i = -1; i < str.length; i++) { + var c = str.charAt(i) || ''; + var n = str.charAt(i+1) || ''; + if (charUnescapes[c + n]) { + out.push(charUnescapes[c+n]); + i++; + } else if (escapeNextChar) { + // At any point in the loop, escapeNextChar is true if the previous + // character was a '\' and was not escaped. + out.push(c); + escapeNextChar = false; + } else { + if (c === '\\') { + escapeNextChar = true; + if ((isNumber(n) || n === '$')) { + out.push('$'); + } else if (n !== '/' && n !== '\\') { + out.push('\\'); + } + } else { + if (c === '$') { + out.push('$'); + } + out.push(c); + if (n === '/') { + out.push('\\'); + } + } + } + } + return out.join(''); + } + + // Unescape \ and / in the replace part, for PCRE mode. + var unescapes = {'\\/': '/', '\\\\': '\\', '\\n': '\n', '\\r': '\r', '\\t': '\t'}; + function unescapeRegexReplace(str) { + var stream = new CodeMirror.StringStream(str); + var output = []; + while (!stream.eol()) { + // Search for \. + while (stream.peek() && stream.peek() != '\\') { + output.push(stream.next()); + } + var matched = false; + for (var matcher in unescapes) { + if (stream.match(matcher, true)) { + matched = true; + output.push(unescapes[matcher]); + break; + } + } + if (!matched) { + // Don't change anything + output.push(stream.next()); + } + } + return output.join(''); + } + + /** + * Extract the regular expression from the query and return a Regexp object. + * Returns null if the query is blank. + * If ignoreCase is passed in, the Regexp object will have the 'i' flag set. + * If smartCase is passed in, and the query contains upper case letters, + * then ignoreCase is overridden, and the 'i' flag will not be set. + * If the query contains the /i in the flag part of the regular expression, + * then both ignoreCase and smartCase are ignored, and 'i' will be passed + * through to the Regex object. + */ + function parseQuery(query, ignoreCase, smartCase) { + // First update the last search register + var lastSearchRegister = vimGlobalState.registerController.getRegister('/'); + lastSearchRegister.setText(query); + // Check if the query is already a regex. + if (query instanceof RegExp) { return query; } + // First try to extract regex + flags from the input. If no flags found, + // extract just the regex. IE does not accept flags directly defined in + // the regex string in the form /regex/flags + var slashes = findUnescapedSlashes(query); + var regexPart; + var forceIgnoreCase; + if (!slashes.length) { + // Query looks like 'regexp' + regexPart = query; + } else { + // Query looks like 'regexp/...' + regexPart = query.substring(0, slashes[0]); + var flagsPart = query.substring(slashes[0]); + forceIgnoreCase = (flagsPart.indexOf('i') != -1); + } + if (!regexPart) { + return null; + } + if (!getOption('pcre')) { + regexPart = translateRegex(regexPart); + } + if (smartCase) { + ignoreCase = (/^[^A-Z]*$/).test(regexPart); + } + var regexp = new RegExp(regexPart, + (ignoreCase || forceIgnoreCase) ? 'i' : undefined); + return regexp; + } + function showConfirm(cm, text) { + if (cm.openNotification) { + cm.openNotification('' + text + '', + {bottom: true, duration: 5000}); + } else { + alert(text); + } + } + function makePrompt(prefix, desc) { + return prefix; + } + var searchPromptDesc = '(Javascript regexp)'; + function showPrompt(cm, options) { + var shortText = (options.prefix || '') + ' ' + (options.desc || ''); + var prompt = makePrompt(options.prefix, options.desc); + dialog(cm, prompt, shortText, options.onClose, options); + } + function regexEqual(r1, r2) { + if (r1 instanceof RegExp && r2 instanceof RegExp) { + var props = ['global', 'multiline', 'ignoreCase', 'source']; + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + if (r1[prop] !== r2[prop]) { + return false; + } + } + return true; + } + return false; + } + // Returns true if the query is valid. + function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) { + if (!rawQuery) { + return; + } + var state = getSearchState(cm); + var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase); + if (!query) { + return; + } + highlightSearchMatches(cm, query); + if (regexEqual(query, state.getQuery())) { + return query; + } + state.setQuery(query); + return query; + } + function searchOverlay(query) { + if (query.source.charAt(0) == '^') { + var matchSol = true; + } + return { + token: function(stream) { + if (matchSol && !stream.sol()) { + stream.skipToEnd(); + return; + } + var match = stream.match(query, false); + if (match) { + if (match[0].length == 0) { + // Matched empty string, skip to next. + stream.next(); + return 'searching'; + } + if (!stream.sol()) { + // Backtrack 1 to match \b + stream.backUp(1); + if (!query.exec(stream.next() + match[0])) { + stream.next(); + return null; + } + } + stream.match(query); + return 'searching'; + } + while (!stream.eol()) { + stream.next(); + if (stream.match(query, false)) break; + } + }, + query: query + }; + } + function highlightSearchMatches(cm, query) { + var searchState = getSearchState(cm); + var overlay = searchState.getOverlay(); + if (!overlay || query != overlay.query) { + if (overlay) { + cm.removeOverlay(overlay); + } + overlay = searchOverlay(query); + cm.addOverlay(overlay); + if (cm.showMatchesOnScrollbar) { + if (searchState.getScrollbarAnnotate()) { + searchState.getScrollbarAnnotate().clear(); + } + searchState.setScrollbarAnnotate(cm.showMatchesOnScrollbar(query)); + } + searchState.setOverlay(overlay); + } + } + function findNext(cm, prev, query, repeat, startPos) { + if (repeat === undefined) { repeat = 1; } + return cm.operation(function() { + var pos = startPos || cm.getCursor(); + var cursor = cm.getSearchCursor(query, pos); + for (var i = 0; i < repeat; i++) { + var found = cursor.find(prev); + if (i == 0 && found && cursorEqual(cursor.from(), pos)) { found = cursor.find(prev); } + if (!found) { + // SearchCursor may have returned null because it hit EOF, wrap + // around and try again. + cursor = cm.getSearchCursor(query, + (prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) ); + if (!cursor.find(prev)) { + return; + } + } + } + return cursor.from(); + }); + } + function clearSearchHighlight(cm) { + var state = getSearchState(cm); + cm.removeOverlay(getSearchState(cm).getOverlay()); + state.setOverlay(null); + if (state.getScrollbarAnnotate()) { + state.getScrollbarAnnotate().clear(); + state.setScrollbarAnnotate(null); + } + } + /** + * Check if pos is in the specified range, INCLUSIVE. + * Range can be specified with 1 or 2 arguments. + * If the first range argument is an array, treat it as an array of line + * numbers. Match pos against any of the lines. + * If the first range argument is a number, + * if there is only 1 range argument, check if pos has the same line + * number + * if there are 2 range arguments, then check if pos is in between the two + * range arguments. + */ + function isInRange(pos, start, end) { + if (typeof pos != 'number') { + // Assume it is a cursor position. Get the line number. + pos = pos.line; + } + if (start instanceof Array) { + return inArray(pos, start); + } else { + if (end) { + return (pos >= start && pos <= end); + } else { + return pos == start; + } + } + } + function getUserVisibleLines(cm) { + // ace_patch{ + var renderer = cm.ace.renderer; + return { + top: renderer.getFirstFullyVisibleRow(), + bottom: renderer.getLastFullyVisibleRow() + } + // ace_patch} + } + + var ExCommandDispatcher = function() { + this.buildCommandMap_(); + }; + ExCommandDispatcher.prototype = { + processCommand: function(cm, input, opt_params) { + var that = this; + cm.operation(function () { + cm.curOp.isVimOp = true; + that._processCommand(cm, input, opt_params); + }); + }, + _processCommand: function(cm, input, opt_params) { + var vim = cm.state.vim; + var commandHistoryRegister = vimGlobalState.registerController.getRegister(':'); + var previousCommand = commandHistoryRegister.toString(); + if (vim.visualMode) { + exitVisualMode(cm); + } + var inputStream = new CodeMirror.StringStream(input); + // update ": with the latest command whether valid or invalid + commandHistoryRegister.setText(input); + var params = opt_params || {}; + params.input = input; + try { + this.parseInput_(cm, inputStream, params); + } catch(e) { + showConfirm(cm, e); + throw e; + } + var command; + var commandName; + if (!params.commandName) { + // If only a line range is defined, move to the line. + if (params.line !== undefined) { + commandName = 'move'; + } + } else { + command = this.matchCommand_(params.commandName); + if (command) { + commandName = command.name; + if (command.excludeFromCommandHistory) { + commandHistoryRegister.setText(previousCommand); + } + this.parseCommandArgs_(inputStream, params, command); + if (command.type == 'exToKey') { + // Handle Ex to Key mapping. + for (var i = 0; i < command.toKeys.length; i++) { + CodeMirror.Vim.handleKey(cm, command.toKeys[i], 'mapping'); + } + return; + } else if (command.type == 'exToEx') { + // Handle Ex to Ex mapping. + this.processCommand(cm, command.toInput); + return; + } + } + } + if (!commandName) { + showConfirm(cm, 'Not an editor command ":' + input + '"'); + return; + } + try { + exCommands[commandName](cm, params); + // Possibly asynchronous commands (e.g. substitute, which might have a + // user confirmation), are responsible for calling the callback when + // done. All others have it taken care of for them here. + if ((!command || !command.possiblyAsync) && params.callback) { + params.callback(); + } + } catch(e) { + showConfirm(cm, e); + throw e; + } + }, + parseInput_: function(cm, inputStream, result) { + inputStream.eatWhile(':'); + // Parse range. + if (inputStream.eat('%')) { + result.line = cm.firstLine(); + result.lineEnd = cm.lastLine(); + } else { + result.line = this.parseLineSpec_(cm, inputStream); + if (result.line !== undefined && inputStream.eat(',')) { + result.lineEnd = this.parseLineSpec_(cm, inputStream, result.line); + } + } + + // Parse command name. + var commandMatch = inputStream.match(/^(\w+)/); + if (commandMatch) { + result.commandName = commandMatch[1]; + } else { + result.commandName = inputStream.match(/.*/)[0]; + } + + return result; + }, + parseLineSpec_: function(cm, inputStream, prevLine) { + var numberMatch = inputStream.match(/^(\d+)/); + if (numberMatch) { + return parseInt(numberMatch[1], 10) - 1; + } + switch (inputStream.next()) { + case '.': + return cm.getCursor().line; + case '$': + return cm.lastLine(); + case '\'': + var mark = cm.state.vim.marks[inputStream.next()]; + if (mark && mark.find()) { + return mark.find().line; + } + throw new Error('Mark not set'); + case '+': + if (prevLine) { + var match = inputStream.match(/^\d+/); + if (match) { + return prevLine + parseInt(match[0], 10); + } + } + throw new Error('Require prevLine'); + default: + inputStream.backUp(1); + return undefined; + } + }, + parseCommandArgs_: function(inputStream, params, command) { + if (inputStream.eol()) { + return; + } + params.argString = inputStream.match(/.*/)[0]; + // Parse command-line arguments + var delim = command.argDelimiter || /\s+/; + var args = trim(params.argString).split(delim); + if (args.length && args[0]) { + params.args = args; + } + }, + matchCommand_: function(commandName) { + // Return the command in the command map that matches the shortest + // prefix of the passed in command name. The match is guaranteed to be + // unambiguous if the defaultExCommandMap's shortNames are set up + // correctly. (see @code{defaultExCommandMap}). + for (var i = commandName.length; i > 0; i--) { + var prefix = commandName.substring(0, i); + if (this.commandMap_[prefix]) { + var command = this.commandMap_[prefix]; + if (command.name.indexOf(commandName) === 0) { + return command; + } + } + } + return null; + }, + buildCommandMap_: function() { + this.commandMap_ = {}; + for (var i = 0; i < defaultExCommandMap.length; i++) { + var command = defaultExCommandMap[i]; + var key = command.shortName || command.name; + this.commandMap_[key] = command; + } + }, + map: function(lhs, rhs, ctx) { + if (lhs != ':' && lhs.charAt(0) == ':') { + if (ctx) { throw Error('Mode not supported for ex mappings'); } + var commandName = lhs.substring(1); + if (rhs != ':' && rhs.charAt(0) == ':') { + // Ex to Ex mapping + this.commandMap_[commandName] = { + name: commandName, + type: 'exToEx', + toInput: rhs.substring(1), + user: true + }; + } else { + // Ex to key mapping + this.commandMap_[commandName] = { + name: commandName, + type: 'exToKey', + toKeys: rhs, + user: true + }; + } + } else { + if (rhs != ':' && rhs.charAt(0) == ':') { + // Key to Ex mapping. + var mapping = { + keys: lhs, + type: 'keyToEx', + exArgs: { input: rhs.substring(1) }, + user: true}; + if (ctx) { mapping.context = ctx; } + defaultKeymap.unshift(mapping); + } else { + // Key to key mapping + var mapping = { + keys: lhs, + type: 'keyToKey', + toKeys: rhs, + user: true + }; + if (ctx) { mapping.context = ctx; } + defaultKeymap.unshift(mapping); + } + } + }, + unmap: function(lhs, ctx) { + if (lhs != ':' && lhs.charAt(0) == ':') { + // Ex to Ex or Ex to key mapping + if (ctx) { throw Error('Mode not supported for ex mappings'); } + var commandName = lhs.substring(1); + if (this.commandMap_[commandName] && this.commandMap_[commandName].user) { + delete this.commandMap_[commandName]; + return; + } + } else { + // Key to Ex or key to key mapping + var keys = lhs; + for (var i = 0; i < defaultKeymap.length; i++) { + if (keys == defaultKeymap[i].keys + && defaultKeymap[i].context === ctx + && defaultKeymap[i].user) { + defaultKeymap.splice(i, 1); + return; + } + } + } + // throw Error('No such mapping.'); + } + }; + + var exCommands = { + colorscheme: function(cm, params) { + if (!params.args || params.args.length < 1) { + showConfirm(cm, cm.getOption('theme')); + return; + } + cm.setOption('theme', params.args[0]); + }, + map: function(cm, params, ctx) { + var mapArgs = params.args; + if (!mapArgs || mapArgs.length < 2) { + if (cm) { + showConfirm(cm, 'Invalid mapping: ' + params.input); + } + return; + } + exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx); + }, + imap: function(cm, params) { this.map(cm, params, 'insert'); }, + nmap: function(cm, params) { this.map(cm, params, 'normal'); }, + vmap: function(cm, params) { this.map(cm, params, 'visual'); }, + unmap: function(cm, params, ctx) { + var mapArgs = params.args; + if (!mapArgs || mapArgs.length < 1) { + if (cm) { + showConfirm(cm, 'No such mapping: ' + params.input); + } + return; + } + exCommandDispatcher.unmap(mapArgs[0], ctx); + }, + move: function(cm, params) { + commandDispatcher.processCommand(cm, cm.state.vim, { + type: 'motion', + motion: 'moveToLineOrEdgeOfDocument', + motionArgs: { forward: false, explicitRepeat: true, + linewise: true }, + repeatOverride: params.line+1}); + }, + set: function(cm, params) { + var setArgs = params.args; + // Options passed through to the setOption/getOption calls. May be passed in by the + // local/global versions of the set command + var setCfg = params.setCfg || {}; + if (!setArgs || setArgs.length < 1) { + if (cm) { + showConfirm(cm, 'Invalid mapping: ' + params.input); + } + return; + } + var expr = setArgs[0].split('='); + var optionName = expr[0]; + var value = expr[1]; + var forceGet = false; + + if (optionName.charAt(optionName.length - 1) == '?') { + // If post-fixed with ?, then the set is actually a get. + if (value) { throw Error('Trailing characters: ' + params.argString); } + optionName = optionName.substring(0, optionName.length - 1); + forceGet = true; + } + if (value === undefined && optionName.substring(0, 2) == 'no') { + // To set boolean options to false, the option name is prefixed with + // 'no'. + optionName = optionName.substring(2); + value = false; + } + + var optionIsBoolean = options[optionName] && options[optionName].type == 'boolean'; + if (optionIsBoolean && value == undefined) { + // Calling set with a boolean option sets it to true. + value = true; + } + // If no value is provided, then we assume this is a get. + if (!optionIsBoolean && value === undefined || forceGet) { + var oldValue = getOption(optionName, cm, setCfg); + if (oldValue === true || oldValue === false) { + showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName); + } else { + showConfirm(cm, ' ' + optionName + '=' + oldValue); + } + } else { + setOption(optionName, value, cm, setCfg); + } + }, + setlocal: function (cm, params) { + // setCfg is passed through to setOption + params.setCfg = {scope: 'local'}; + this.set(cm, params); + }, + setglobal: function (cm, params) { + // setCfg is passed through to setOption + params.setCfg = {scope: 'global'}; + this.set(cm, params); + }, + registers: function(cm, params) { + var regArgs = params.args; + var registers = vimGlobalState.registerController.registers; + var regInfo = '----------Registers----------

    '; + if (!regArgs) { + for (var registerName in registers) { + var text = registers[registerName].toString(); + if (text.length) { + regInfo += '"' + registerName + ' ' + text + '
    '; + } + } + } else { + var registerName; + regArgs = regArgs.join(''); + for (var i = 0; i < regArgs.length; i++) { + registerName = regArgs.charAt(i); + if (!vimGlobalState.registerController.isValidRegister(registerName)) { + continue; + } + var register = registers[registerName] || new Register(); + regInfo += '"' + registerName + ' ' + register.toString() + '
    '; + } + } + showConfirm(cm, regInfo); + }, + sort: function(cm, params) { + var reverse, ignoreCase, unique, number; + function parseArgs() { + if (params.argString) { + var args = new CodeMirror.StringStream(params.argString); + if (args.eat('!')) { reverse = true; } + if (args.eol()) { return; } + if (!args.eatSpace()) { return 'Invalid arguments'; } + var opts = args.match(/[a-z]+/); + if (opts) { + opts = opts[0]; + ignoreCase = opts.indexOf('i') != -1; + unique = opts.indexOf('u') != -1; + var decimal = opts.indexOf('d') != -1 && 1; + var hex = opts.indexOf('x') != -1 && 1; + var octal = opts.indexOf('o') != -1 && 1; + if (decimal + hex + octal > 1) { return 'Invalid arguments'; } + number = decimal && 'decimal' || hex && 'hex' || octal && 'octal'; + } + if (args.match(/\/.*\//)) { return 'patterns not supported'; } + } + } + var err = parseArgs(); + if (err) { + showConfirm(cm, err + ': ' + params.argString); + return; + } + var lineStart = params.line || cm.firstLine(); + var lineEnd = params.lineEnd || params.line || cm.lastLine(); + if (lineStart == lineEnd) { return; } + var curStart = Pos(lineStart, 0); + var curEnd = Pos(lineEnd, lineLength(cm, lineEnd)); + var text = cm.getRange(curStart, curEnd).split('\n'); + var numberRegex = (number == 'decimal') ? /(-?)([\d]+)/ : + (number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i : + (number == 'octal') ? /([0-7]+)/ : null; + var radix = (number == 'decimal') ? 10 : (number == 'hex') ? 16 : (number == 'octal') ? 8 : null; + var numPart = [], textPart = []; + if (number) { + for (var i = 0; i < text.length; i++) { + if (numberRegex.exec(text[i])) { + numPart.push(text[i]); + } else { + textPart.push(text[i]); + } + } + } else { + textPart = text; + } + function compareFn(a, b) { + if (reverse) { var tmp; tmp = a; a = b; b = tmp; } + if (ignoreCase) { a = a.toLowerCase(); b = b.toLowerCase(); } + var anum = number && numberRegex.exec(a); + var bnum = number && numberRegex.exec(b); + if (!anum) { return a < b ? -1 : 1; } + anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix); + bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix); + return anum - bnum; + } + numPart.sort(compareFn); + textPart.sort(compareFn); + text = (!reverse) ? textPart.concat(numPart) : numPart.concat(textPart); + if (unique) { // Remove duplicate lines + var textOld = text; + var lastLine; + text = []; + for (var i = 0; i < textOld.length; i++) { + if (textOld[i] != lastLine) { + text.push(textOld[i]); + } + lastLine = textOld[i]; + } + } + cm.replaceRange(text.join('\n'), curStart, curEnd); + }, + global: function(cm, params) { + // a global command is of the form + // :[range]g/pattern/[cmd] + // argString holds the string /pattern/[cmd] + var argString = params.argString; + if (!argString) { + showConfirm(cm, 'Regular Expression missing from global'); + return; + } + // range is specified here + var lineStart = (params.line !== undefined) ? params.line : cm.firstLine(); + var lineEnd = params.lineEnd || params.line || cm.lastLine(); + // get the tokens from argString + var tokens = splitBySlash(argString); + var regexPart = argString, cmd; + if (tokens.length) { + regexPart = tokens[0]; + cmd = tokens.slice(1, tokens.length).join('/'); + } + if (regexPart) { + // If regex part is empty, then use the previous query. Otherwise + // use the regex part as the new query. + try { + updateSearchQuery(cm, regexPart, true /** ignoreCase */, + true /** smartCase */); + } catch (e) { + showConfirm(cm, 'Invalid regex: ' + regexPart); + return; + } + } + // now that we have the regexPart, search for regex matches in the + // specified range of lines + var query = getSearchState(cm).getQuery(); + var matchedLines = [], content = ''; + for (var i = lineStart; i <= lineEnd; i++) { + var matched = query.test(cm.getLine(i)); + if (matched) { + matchedLines.push(i+1); + content+= cm.getLine(i) + '
    '; + } + } + // if there is no [cmd], just display the list of matched lines + if (!cmd) { + showConfirm(cm, content); + return; + } + var index = 0; + var nextCommand = function() { + if (index < matchedLines.length) { + var command = matchedLines[index] + cmd; + exCommandDispatcher.processCommand(cm, command, { + callback: nextCommand + }); + } + index++; + }; + nextCommand(); + }, + substitute: function(cm, params) { + if (!cm.getSearchCursor) { + throw new Error('Search feature not available. Requires searchcursor.js or ' + + 'any other getSearchCursor implementation.'); + } + var argString = params.argString; + var tokens = argString ? splitBySeparator(argString, argString[0]) : []; + var regexPart, replacePart = '', trailing, flagsPart, count; + var confirm = false; // Whether to confirm each replace. + var global = false; // True to replace all instances on a line, false to replace only 1. + if (tokens.length) { + regexPart = tokens[0]; + replacePart = tokens[1]; + if (replacePart !== undefined) { + if (getOption('pcre')) { + replacePart = unescapeRegexReplace(replacePart); + } else { + replacePart = translateRegexReplace(replacePart); + } + vimGlobalState.lastSubstituteReplacePart = replacePart; + } + trailing = tokens[2] ? tokens[2].split(' ') : []; + } else { + // either the argString is empty or its of the form ' hello/world' + // actually splitBySlash returns a list of tokens + // only if the string starts with a '/' + if (argString && argString.length) { + showConfirm(cm, 'Substitutions should be of the form ' + + ':s/pattern/replace/'); + return; + } + } + // After the 3rd slash, we can have flags followed by a space followed + // by count. + if (trailing) { + flagsPart = trailing[0]; + count = parseInt(trailing[1]); + if (flagsPart) { + if (flagsPart.indexOf('c') != -1) { + confirm = true; + flagsPart.replace('c', ''); + } + if (flagsPart.indexOf('g') != -1) { + global = true; + flagsPart.replace('g', ''); + } + regexPart = regexPart + '/' + flagsPart; + } + } + if (regexPart) { + // If regex part is empty, then use the previous query. Otherwise use + // the regex part as the new query. + try { + updateSearchQuery(cm, regexPart, true /** ignoreCase */, + true /** smartCase */); + } catch (e) { + showConfirm(cm, 'Invalid regex: ' + regexPart); + return; + } + } + replacePart = replacePart || vimGlobalState.lastSubstituteReplacePart; + if (replacePart === undefined) { + showConfirm(cm, 'No previous substitute regular expression'); + return; + } + var state = getSearchState(cm); + var query = state.getQuery(); + var lineStart = (params.line !== undefined) ? params.line : cm.getCursor().line; + var lineEnd = params.lineEnd || lineStart; + if (lineStart == cm.firstLine() && lineEnd == cm.lastLine()) { + lineEnd = Infinity; + } + if (count) { + lineStart = lineEnd; + lineEnd = lineStart + count - 1; + } + var startPos = clipCursorToContent(cm, Pos(lineStart, 0)); + var cursor = cm.getSearchCursor(query, startPos); + doReplace(cm, confirm, global, lineStart, lineEnd, cursor, query, replacePart, params.callback); + }, + redo: CodeMirror.commands.redo, + undo: CodeMirror.commands.undo, + write: function(cm) { + if (CodeMirror.commands.save) { + // If a save command is defined, call it. + CodeMirror.commands.save(cm); + } else { + // Saves to text area if no save command is defined. + cm.save(); + } + }, + nohlsearch: function(cm) { + clearSearchHighlight(cm); + }, + delmarks: function(cm, params) { + if (!params.argString || !trim(params.argString)) { + showConfirm(cm, 'Argument required'); + return; + } + + var state = cm.state.vim; + var stream = new CodeMirror.StringStream(trim(params.argString)); + while (!stream.eol()) { + stream.eatSpace(); + + // Record the streams position at the beginning of the loop for use + // in error messages. + var count = stream.pos; + + if (!stream.match(/[a-zA-Z]/, false)) { + showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); + return; + } + + var sym = stream.next(); + // Check if this symbol is part of a range + if (stream.match('-', true)) { + // This symbol is part of a range. + + // The range must terminate at an alphabetic character. + if (!stream.match(/[a-zA-Z]/, false)) { + showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); + return; + } + + var startMark = sym; + var finishMark = stream.next(); + // The range must terminate at an alphabetic character which + // shares the same case as the start of the range. + if (isLowerCase(startMark) && isLowerCase(finishMark) || + isUpperCase(startMark) && isUpperCase(finishMark)) { + var start = startMark.charCodeAt(0); + var finish = finishMark.charCodeAt(0); + if (start >= finish) { + showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); + return; + } + + // Because marks are always ASCII values, and we have + // determined that they are the same case, we can use + // their char codes to iterate through the defined range. + for (var j = 0; j <= finish - start; j++) { + var mark = String.fromCharCode(start + j); + delete state.marks[mark]; + } + } else { + showConfirm(cm, 'Invalid argument: ' + startMark + '-'); + return; + } + } else { + // This symbol is a valid mark, and is not part of a range. + delete state.marks[sym]; + } + } + } + }; + + var exCommandDispatcher = new ExCommandDispatcher(); + + /** + * @param {CodeMirror} cm CodeMirror instance we are in. + * @param {boolean} confirm Whether to confirm each replace. + * @param {Cursor} lineStart Line to start replacing from. + * @param {Cursor} lineEnd Line to stop replacing at. + * @param {RegExp} query Query for performing matches with. + * @param {string} replaceWith Text to replace matches with. May contain $1, + * $2, etc for replacing captured groups using Javascript replace. + * @param {function()} callback A callback for when the replace is done. + */ + function doReplace(cm, confirm, global, lineStart, lineEnd, searchCursor, query, + replaceWith, callback) { + // Set up all the functions. + cm.state.vim.exMode = true; + var done = false; + var lastPos = searchCursor.from(); + function replaceAll() { + cm.operation(function() { + while (!done) { + replace(); + next(); + } + stop(); + }); + } + function replace() { + var text = cm.getRange(searchCursor.from(), searchCursor.to()); + var newText = text.replace(query, replaceWith); + searchCursor.replace(newText); + } + function next() { + // The below only loops to skip over multiple occurrences on the same + // line when 'global' is not true. + while(searchCursor.findNext() && + isInRange(searchCursor.from(), lineStart, lineEnd)) { + if (!global && lastPos && searchCursor.from().line == lastPos.line) { + continue; + } + cm.scrollIntoView(searchCursor.from(), 30); + cm.setSelection(searchCursor.from(), searchCursor.to()); + lastPos = searchCursor.from(); + done = false; + return; + } + done = true; + } + function stop(close) { + if (close) { close(); } + cm.focus(); + if (lastPos) { + cm.setCursor(lastPos); + var vim = cm.state.vim; + vim.exMode = false; + vim.lastHPos = vim.lastHSPos = lastPos.ch; + } + if (callback) { callback(); } + } + function onPromptKeyDown(e, _value, close) { + // Swallow all keys. + CodeMirror.e_stop(e); + var keyName = CodeMirror.keyName(e); + switch (keyName) { + case 'Y': + replace(); next(); break; + case 'N': + next(); break; + case 'A': + // replaceAll contains a call to close of its own. We don't want it + // to fire too early or multiple times. + var savedCallback = callback; + callback = undefined; + cm.operation(replaceAll); + callback = savedCallback; + break; + case 'L': + replace(); + // fall through and exit. + case 'Q': + case 'Esc': + case 'Ctrl-C': + case 'Ctrl-[': + stop(close); + break; + } + if (done) { stop(close); } + return true; + } + + // Actually do replace. + next(); + if (done) { + showConfirm(cm, 'No matches for ' + query.source); + return; + } + if (!confirm) { + replaceAll(); + if (callback) { callback(); }; + return; + } + showPrompt(cm, { + prefix: 'replace with ' + replaceWith + ' (y/n/a/q/l)', + onKeyDown: onPromptKeyDown + }); + } + + CodeMirror.keyMap.vim = { + attach: attachVimMap, + detach: detachVimMap, + call: cmKey + }; + + function exitInsertMode(cm) { + var vim = cm.state.vim; + var macroModeState = vimGlobalState.macroModeState; + var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.'); + var isPlaying = macroModeState.isPlaying; + var lastChange = macroModeState.lastInsertModeChanges; + // In case of visual block, the insertModeChanges are not saved as a + // single word, so we convert them to a single word + // so as to update the ". register as expected in real vim. + var text = []; + if (!isPlaying) { + var selLength = lastChange.inVisualBlock ? vim.lastSelection.visualBlock.height : 1; + var changes = lastChange.changes; + var text = []; + var i = 0; + // In case of multiple selections in blockwise visual, + // the inserted text, for example: 'foo', is stored as + // 'f', 'f', InsertModeKey 'o', 'o', 'o', 'o'. (if you have a block with 2 lines). + // We push the contents of the changes array as per the following: + // 1. In case of InsertModeKey, just increment by 1. + // 2. In case of a character, jump by selLength (2 in the example). + while (i < changes.length) { + // This loop will convert 'ffoooo' to 'foo'. + text.push(changes[i]); + if (changes[i] instanceof InsertModeKey) { + i++; + } else { + i+= selLength; + } + } + lastChange.changes = text; + cm.off('change', onChange); + CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); + } + if (!isPlaying && vim.insertModeRepeat > 1) { + // Perform insert mode repeat for commands like 3,a and 3,o. + repeatLastEdit(cm, vim, vim.insertModeRepeat - 1, + true /** repeatForInsert */); + vim.lastEditInputState.repeatOverride = vim.insertModeRepeat; + } + delete vim.insertModeRepeat; + vim.insertMode = false; + cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1); + cm.setOption('keyMap', 'vim'); + cm.setOption('disableInput', true); + + lastChange.overwrite = cm.state.overwrite; + cm.toggleOverwrite(false); // exit replace mode if we were in it. + // update the ". register before exiting insert mode + insertModeChangeRegister.setText(lastChange.changes.join('')); + CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); + if (macroModeState.isRecording) { + logInsertModeChange(macroModeState); + } + } + + function _mapCommand(command) { + defaultKeymap.unshift(command); + } + + function mapCommand(keys, type, name, args, extra) { + var command = {keys: keys, type: type}; + command[type] = name; + command[type + "Args"] = args; + for (var key in extra) + command[key] = extra[key]; + _mapCommand(command); + } + + // The timeout in milliseconds for the two-character ESC keymap should be + // adjusted according to your typing speed to prevent false positives. + defineOption('insertModeEscKeysTimeout', 200, 'number'); + + CodeMirror.keyMap['vim-insert'] = { + // TODO: override navigation keys so that Esc will cancel automatic + // indentation from o, O, i_ + 'Ctrl-N': 'autocomplete', + 'Ctrl-P': 'autocomplete', + 'Enter': function(cm) { + var fn = CodeMirror.commands.newlineAndIndentContinueComment || + CodeMirror.commands.newlineAndIndent; + fn(cm); + }, + fallthrough: ['default'], + attach: attachVimMap, + detach: detachVimMap, + call: cmKey + }; + + CodeMirror.keyMap['vim-replace'] = { + 'Backspace': 'goCharLeft', + fallthrough: ['vim-insert'], + attach: attachVimMap, + detach: detachVimMap, + call: cmKey + }; + + function executeMacroRegister(cm, vim, macroModeState, registerName) { + var register = vimGlobalState.registerController.getRegister(registerName); + if (registerName == ':') { + // Read-only register containing last Ex command. + if (register.keyBuffer[0]) { + exCommandDispatcher.processCommand(cm, register.keyBuffer[0]); + } + macroModeState.isPlaying = false; + return; + } + var keyBuffer = register.keyBuffer; + var imc = 0; + macroModeState.isPlaying = true; + macroModeState.replaySearchQueries = register.searchQueries.slice(0); + for (var i = 0; i < keyBuffer.length; i++) { + var text = keyBuffer[i]; + var match, key; + while (text) { + // Pull off one command key, which is either a single character + // or a special sequence wrapped in '<' and '>', e.g. ''. + match = (/<\w+-.+?>|<\w+>|./).exec(text); + key = match[0]; + text = text.substring(match.index + key.length); + CodeMirror.Vim.handleKey(cm, key, 'macro'); + if (vim.insertMode) { + var changes = register.insertModeChanges[imc++].changes; + vimGlobalState.macroModeState.lastInsertModeChanges.changes = + changes; + repeatInsertModeChanges(cm, changes, 1); + exitInsertMode(cm); + } + } + }; + macroModeState.isPlaying = false; + } + + function logKey(macroModeState, key) { + if (macroModeState.isPlaying) { return; } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register) { + register.pushText(key); + } + } + + function logInsertModeChange(macroModeState) { + if (macroModeState.isPlaying) { return; } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register && register.pushInsertModeChanges) { + register.pushInsertModeChanges(macroModeState.lastInsertModeChanges); + } + } + + function logSearchQuery(macroModeState, query) { + if (macroModeState.isPlaying) { return; } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register && register.pushSearchQuery) { + register.pushSearchQuery(query); + } + } + + /** + * Listens for changes made in insert mode. + * Should only be active in insert mode. + */ + function onChange(_cm, changeObj) { + var macroModeState = vimGlobalState.macroModeState; + var lastChange = macroModeState.lastInsertModeChanges; + if (!macroModeState.isPlaying) { + while(changeObj) { + lastChange.expectCursorActivityForChange = true; + if (changeObj.origin == '+input' || changeObj.origin == 'paste' + || changeObj.origin === undefined /* only in testing */) { + var text = changeObj.text.join('\n'); + if (lastChange.maybeReset) { + lastChange.changes = []; + lastChange.maybeReset = false; + } + lastChange.changes.push(text); + } + // Change objects may be chained with next. + changeObj = changeObj.next; + } + } + } + + /** + * Listens for any kind of cursor activity on CodeMirror. + */ + function onCursorActivity(cm) { + var vim = cm.state.vim; + if (vim.insertMode) { + // Tracking cursor activity in insert mode (for macro support). + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isPlaying) { return; } + var lastChange = macroModeState.lastInsertModeChanges; + if (lastChange.expectCursorActivityForChange) { + lastChange.expectCursorActivityForChange = false; + } else { + // Cursor moved outside the context of an edit. Reset the change. + lastChange.maybeReset = true; + } + } else if (!cm.curOp.isVimOp) { + handleExternalSelection(cm, vim); + } + if (vim.visualMode) { + updateFakeCursor(cm); + } + } + function updateFakeCursor(cm) { + var vim = cm.state.vim; + var from = clipCursorToContent(cm, copyCursor(vim.sel.head)); + var to = offsetCursor(from, 0, 1); + if (vim.fakeCursor) { + vim.fakeCursor.clear(); + } + vim.fakeCursor = cm.markText(from, to, {className: 'cm-animate-fat-cursor'}); + } + function handleExternalSelection(cm, vim) { + var anchor = cm.getCursor('anchor'); + var head = cm.getCursor('head'); + // Enter or exit visual mode to match mouse selection. + if (vim.visualMode && !cm.somethingSelected()) { + exitVisualMode(cm, false); + } else if (!vim.visualMode && !vim.insertMode && cm.somethingSelected()) { + vim.visualMode = true; + vim.visualLine = false; + CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); + } + if (vim.visualMode) { + // Bind CodeMirror selection model to vim selection model. + // Mouse selections are considered visual characterwise. + var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; + var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; + head = offsetCursor(head, 0, headOffset); + anchor = offsetCursor(anchor, 0, anchorOffset); + vim.sel = { + anchor: anchor, + head: head + }; + updateMark(cm, vim, '<', cursorMin(head, anchor)); + updateMark(cm, vim, '>', cursorMax(head, anchor)); + } else if (!vim.insertMode) { + // Reset lastHPos if selection was modified by something outside of vim mode e.g. by mouse. + vim.lastHPos = cm.getCursor().ch; + } + } + + /** Wrapper for special keys pressed in insert mode */ + function InsertModeKey(keyName) { + this.keyName = keyName; + } + + /** + * Handles raw key down events from the text area. + * - Should only be active in insert mode. + * - For recording deletes in insert mode. + */ + function onKeyEventTargetKeyDown(e) { + var macroModeState = vimGlobalState.macroModeState; + var lastChange = macroModeState.lastInsertModeChanges; + var keyName = CodeMirror.keyName(e); + if (!keyName) { return; } + function onKeyFound() { + if (lastChange.maybeReset) { + lastChange.changes = []; + lastChange.maybeReset = false; + } + lastChange.changes.push(new InsertModeKey(keyName)); + return true; + } + if (keyName.indexOf('Delete') != -1 || keyName.indexOf('Backspace') != -1) { + CodeMirror.lookupKey(keyName, 'vim-insert', onKeyFound); + } + } + + /** + * Repeats the last edit, which includes exactly 1 command and at most 1 + * insert. Operator and motion commands are read from lastEditInputState, + * while action commands are read from lastEditActionCommand. + * + * If repeatForInsert is true, then the function was called by + * exitInsertMode to repeat the insert mode changes the user just made. The + * corresponding enterInsertMode call was made with a count. + */ + function repeatLastEdit(cm, vim, repeat, repeatForInsert) { + var macroModeState = vimGlobalState.macroModeState; + macroModeState.isPlaying = true; + var isAction = !!vim.lastEditActionCommand; + var cachedInputState = vim.inputState; + function repeatCommand() { + if (isAction) { + commandDispatcher.processAction(cm, vim, vim.lastEditActionCommand); + } else { + commandDispatcher.evalInput(cm, vim); + } + } + function repeatInsert(repeat) { + if (macroModeState.lastInsertModeChanges.changes.length > 0) { + // For some reason, repeat cw in desktop VIM does not repeat + // insert mode changes. Will conform to that behavior. + repeat = !vim.lastEditActionCommand ? 1 : repeat; + var changeObject = macroModeState.lastInsertModeChanges; + repeatInsertModeChanges(cm, changeObject.changes, repeat, changeObject.overwrite); + } + } + vim.inputState = vim.lastEditInputState; + if (isAction && vim.lastEditActionCommand.interlaceInsertRepeat) { + // o and O repeat have to be interlaced with insert repeats so that the + // insertions appear on separate lines instead of the last line. + for (var i = 0; i < repeat; i++) { + repeatCommand(); + repeatInsert(1); + } + } else { + if (!repeatForInsert) { + // Hack to get the cursor to end up at the right place. If I is + // repeated in insert mode repeat, cursor will be 1 insert + // change set left of where it should be. + repeatCommand(); + } + repeatInsert(repeat); + } + vim.inputState = cachedInputState; + if (vim.insertMode && !repeatForInsert) { + // Don't exit insert mode twice. If repeatForInsert is set, then we + // were called by an exitInsertMode call lower on the stack. + exitInsertMode(cm); + } + macroModeState.isPlaying = false; + }; + + function repeatInsertModeChanges(cm, changes, repeat, overwrite) { + function keyHandler(binding) { + if (typeof binding == 'string') { + CodeMirror.commands[binding](cm); + } else { + binding(cm); + } + return true; + } + var head = cm.getCursor('head'); + var inVisualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.inVisualBlock; + if (inVisualBlock) { + // Set up block selection again for repeating the changes. + var vim = cm.state.vim; + var lastSel = vim.lastSelection; + var offset = getOffset(lastSel.anchor, lastSel.head); + selectForInsert(cm, head, offset.line + 1); + repeat = cm.listSelections().length; + cm.setCursor(head); + } + for (var i = 0; i < repeat; i++) { + if (inVisualBlock) { + cm.setCursor(offsetCursor(head, i, 0)); + } + for (var j = 0; j < changes.length; j++) { + var change = changes[j]; + if (change instanceof InsertModeKey) { + CodeMirror.lookupKey(change.keyName, 'vim-insert', keyHandler); + } else { + var cur = cm.getCursor(); + var end = cur; + if (overwrite && !/\n/.test(change)) { + end = offsetCursor(cur, 0, change.length); + } + cm.replaceRange(change, cur, end); + } + } + } + if (inVisualBlock) { + cm.setCursor(offsetCursor(head, 0, 1)); + } + } + + resetVimGlobalState(); + //}; + // Initialize Vim and make it available as an API. + CodeMirror.Vim = Vim(); + + Vim = CodeMirror.Vim; + + var specialKey = {'return':'CR',backspace:'BS','delete':'Del',esc:'Esc', + left:'Left',right:'Right',up:'Up',down:'Down',space: 'Space', + home:'Home',end:'End',pageup:'PageUp',pagedown:'PageDown', enter: 'CR' + }; + function lookupKey(hashId, key, e) { + if (key.length > 1 && key[0] == "n") { + key = key.replace("numpad", ""); + } + key = specialKey[key] || key; + var name = ''; + if (e.ctrlKey) { name += 'C-'; } + if (e.altKey) { name += 'A-'; } + if (e.shiftKey) { name += 'S-'; } + + name += key; + if (name.length > 1) { name = '<' + name + '>'; } + return name; + } + var handleKey = Vim.handleKey.bind(Vim); + Vim.handleKey = function(cm, key, origin) { + return cm.operation(function() { + return handleKey(cm, key, origin); + }, true); + } + function cloneVimState(state) { + var n = new state.constructor(); + Object.keys(state).forEach(function(key) { + var o = state[key]; + if (Array.isArray(o)) + o = o.slice(); + else if (o && typeof o == "object" && o.constructor != Object) + o = cloneVimState(o); + n[key] = o; + }); + if (state.sel) { + n.sel = { + head: state.sel.head && copyCursor(state.sel.head), + anchor: state.sel.anchor && copyCursor(state.sel.anchor) + }; + } + return n; + } + function multiSelectHandleKey(cm, key, origin) { + var isHandled = false; + var vim = Vim.maybeInitVimState_(cm); + var visualBlock = vim.visualBlock || vim.wasInVisualBlock; + if (vim.wasInVisualBlock && !cm.ace.inMultiSelectMode) { + vim.wasInVisualBlock = false; + } else if (cm.ace.inMultiSelectMode && vim.visualBlock) { + vim.wasInVisualBlock = true; + } + + if (key == '' && !vim.insertMode && !vim.visualMode && cm.ace.inMultiSelectMode) { + cm.ace.exitMultiSelectMode(); + } else if (visualBlock || !cm.ace.inMultiSelectMode || cm.ace.inVirtualSelectionMode) { + isHandled = Vim.handleKey(cm, key, origin); + } else { + var old = cloneVimState(vim); + cm.operation(function() { + cm.ace.forEachSelection(function() { + var sel = cm.ace.selection; + cm.state.vim.lastHPos = sel.$desiredColumn == null ? sel.lead.column : sel.$desiredColumn; + var head = cm.getCursor("head"); + var anchor = cm.getCursor("anchor"); + var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; + var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; + head = offsetCursor(head, 0, headOffset); + anchor = offsetCursor(anchor, 0, anchorOffset); + cm.state.vim.sel.head = head; + cm.state.vim.sel.anchor = anchor; + + isHandled = handleKey(cm, key, origin); + sel.$desiredColumn = cm.state.vim.lastHPos == -1 ? null : cm.state.vim.lastHPos; + if (cm.virtualSelectionMode()) { + cm.state.vim = cloneVimState(old); + } + }); + if (cm.curOp.cursorActivity && !isHandled) + cm.curOp.cursorActivity = false; + }, true); + } + return isHandled; + } + exports.CodeMirror = CodeMirror; + var getVim = Vim.maybeInitVimState_; + exports.handler = { + $id: "ace/keyboard/vim", + drawCursor: function(style, pixelPos, config, sel, session) { + var vim = this.state.vim || {}; + var w = config.characterWidth; + var h = config.lineHeight; + var top = pixelPos.top; + var left = pixelPos.left; + if (!vim.insertMode) { + var isbackwards = !sel.cursor + ? session.selection.isBackwards() || session.selection.isEmpty() + : Range.comparePoints(sel.cursor, sel.start) <= 0; + if (!isbackwards && left > w) + left -= w; + } + if (!vim.insertMode && vim.status) { + h = h / 2; + top += h; + } + style.left = left + "px"; + style.top = top + "px"; + style.width = w + "px"; + style.height = h + "px"; + }, + handleKeyboard: function(data, hashId, key, keyCode, e) { + var editor = data.editor; + var cm = editor.state.cm; + var vim = getVim(cm); + if (keyCode == -1) return; + + if (key == "c" && hashId == 1) { // key == "ctrl-c" + if (!useragent.isMac && editor.getCopyText()) { + editor.once("copy", function() { + editor.selection.clearSelection(); + }); + return {command: "null", passEvent: true}; + } + } else if (!vim.insertMode) { + if (useragent.isMac && this.handleMacRepeat(data, hashId, key)) { + hashId = -1; + key = data.inputChar; + } + } + + if (hashId == -1 || hashId & 1 || hashId === 0 && key.length > 1) { + var insertMode = vim.insertMode; + var name = lookupKey(hashId, key, e || {}); + if (vim.status == null) + vim.status = ""; + var isHandled = multiSelectHandleKey(cm, name, 'user'); + vim = getVim(cm); // may be changed by multiSelectHandleKey + if (isHandled && vim.status != null) + vim.status += name; + else if (vim.status == null) + vim.status = ""; + cm._signal("changeStatus"); + if (!isHandled && (hashId != -1 || insertMode)) + return; + return {command: "null", passEvent: !isHandled}; + } + }, + attach: function(editor) { + if (!editor.state) editor.state = {}; + var cm = new CodeMirror(editor); + editor.state.cm = cm; + editor.$vimModeHandler = this; + CodeMirror.keyMap.vim.attach(cm); + getVim(cm).status = null; + cm.on('vim-command-done', function() { + if (cm.virtualSelectionMode()) return; + getVim(cm).status = null; + cm.ace._signal("changeStatus"); + cm.ace.session.markUndoGroup(); + }); + cm.on("changeStatus", function() { + cm.ace.renderer.updateCursor(); + cm.ace._signal("changeStatus"); + }); + cm.on("vim-mode-change", function() { + if (cm.virtualSelectionMode()) return; + cm.ace.renderer.setStyle("normal-mode", !getVim(cm).insertMode); + cm._signal("changeStatus"); + }); + cm.ace.renderer.setStyle("normal-mode", !getVim(cm).insertMode); + editor.renderer.$cursorLayer.drawCursor = this.drawCursor.bind(cm); + // renderVirtualNumbers.attach(editor); + this.updateMacCompositionHandlers(editor, true); + }, + detach: function(editor) { + var cm = editor.state.cm; + CodeMirror.keyMap.vim.detach(cm); + cm.destroy(); + editor.state.cm = null; + editor.$vimModeHandler = null; + editor.renderer.$cursorLayer.drawCursor = null; + editor.renderer.setStyle("normal-mode", false); + // renderVirtualNumbers.detach(editor); + this.updateMacCompositionHandlers(editor, false); + }, + getStatusText: function(editor) { + var cm = editor.state.cm; + var vim = getVim(cm); + if (vim.insertMode) + return "INSERT"; + var status = ""; + if (vim.visualMode) { + status += "VISUAL"; + if (vim.visualLine) + status += " LINE"; + if (vim.visualBlock) + status += " BLOCK"; + } + if (vim.status) + status += (status ? " " : "") + vim.status; + return status; + }, + // workaround for j not repeating with `defaults write -g ApplePressAndHoldEnabled -bool true` + handleMacRepeat: function(data, hashId, key) { + if (hashId == -1) { + // record key + data.inputChar = key; + data.lastEvent = "input"; + } else if (data.inputChar && data.$lastHash == hashId && data.$lastKey == key) { + // check for repeated keypress + if (data.lastEvent == "input") { + data.lastEvent = "input1"; + } else if (data.lastEvent == "input1") { + // simulate textinput + return true; + } + } else { + // reset + data.$lastHash = hashId; + data.$lastKey = key; + data.lastEvent = "keypress"; + } + }, + // on mac, with some keyboard layouts (e.g swedish) ^ starts composition, we don't need it in normal mode + updateMacCompositionHandlers: function(editor, enable) { + var onCompositionUpdateOverride = function(text) { + var cm = editor.state.cm; + var vim = getVim(cm); + if (!vim.insertMode) { + var el = this.textInput.getElement(); + el.blur(); + el.focus(); + el.value = text; + } else { + this.onCompositionUpdateOrig(text); + } + }; + var onCompositionStartOverride = function(text) { + var cm = editor.state.cm; + var vim = getVim(cm); + if (!vim.insertMode) { + this.onCompositionStartOrig(text); + } + }; + if (enable) { + if (!editor.onCompositionUpdateOrig) { + editor.onCompositionUpdateOrig = editor.onCompositionUpdate; + editor.onCompositionUpdate = onCompositionUpdateOverride; + editor.onCompositionStartOrig = editor.onCompositionStart; + editor.onCompositionStart = onCompositionStartOverride; + } + } else { + if (editor.onCompositionUpdateOrig) { + editor.onCompositionUpdate = editor.onCompositionUpdateOrig; + editor.onCompositionUpdateOrig = null; + editor.onCompositionStart = editor.onCompositionStartOrig; + editor.onCompositionStartOrig = null; + } + } + } + }; + var renderVirtualNumbers = { + getText: function(session, row) { + return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9? "\xb7" : "" ))) + ""; + }, + getWidth: function(session, lastLineNumber, config) { + return session.getLength().toString().length * config.characterWidth; + }, + update: function(e, editor) { + editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER); + }, + attach: function(editor) { + editor.renderer.$gutterLayer.$renderer = this; + editor.on("changeSelection", this.update); + }, + detach: function(editor) { + editor.renderer.$gutterLayer.$renderer = null; + editor.off("changeSelection", this.update); + } + }; + Vim.defineOption({ + name: "wrap", + set: function(value, cm) { + if (cm) {cm.ace.setOption("wrap", value)} + }, + type: "boolean" + }, false); + Vim.defineEx('write', 'w', function() { + console.log(':write is not implemented') + }); + defaultKeymap.push( + { keys: 'zc', type: 'action', action: 'fold', actionArgs: { open: false } }, + { keys: 'zC', type: 'action', action: 'fold', actionArgs: { open: false, all: true } }, + { keys: 'zo', type: 'action', action: 'fold', actionArgs: { open: true } }, + { keys: 'zO', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, + { keys: 'za', type: 'action', action: 'fold', actionArgs: { toggle: true } }, + { keys: 'zA', type: 'action', action: 'fold', actionArgs: { toggle: true, all: true } }, + { keys: 'zf', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, + { keys: 'zd', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, + + { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorAbove" } }, + { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorBelow" } }, + { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorAboveSkipCurrent" } }, + { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorBelowSkipCurrent" } }, + { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectMoreBefore" } }, + { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectMoreAfter" } }, + { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectNextBefore" } }, + { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectNextAfter" } } + ); + actions.aceCommand = function(cm, actionArgs, vim) { + cm.vimCmd = actionArgs; + if (cm.ace.inVirtualSelectionMode) + cm.ace.on("beforeEndOperation", delayedExecAceCommand); + else + delayedExecAceCommand(null, cm.ace); + }; + function delayedExecAceCommand(op, ace) { + ace.off("beforeEndOperation", delayedExecAceCommand); + var cmd = ace.state.cm.vimCmd; + if (cmd) { + ace.execCommand(cmd.exec ? cmd : cmd.name, cmd.args); + } + ace.curOp = ace.prevOp; + } + actions.fold = function(cm, actionArgs, vim) { + cm.ace.execCommand(['toggleFoldWidget', 'toggleFoldWidget', 'foldOther', 'unfoldall' + ][(actionArgs.all ? 2 : 0) + (actionArgs.open ? 1 : 0)]); + }; + + exports.handler.defaultKeymap = defaultKeymap; + exports.handler.actions = actions; + exports.Vim = Vim; + + Vim.map("Y", "yy", "normal"); +}); diff --git a/plugins/node_modules/ace/lib/ace/keyboard/vim_test.js b/plugins/node_modules/ace/lib/ace/keyboard/vim_test.js new file mode 100644 index 00000000..0791d65e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/keyboard/vim_test.js @@ -0,0 +1,4122 @@ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { + +var EditSession = require("./../edit_session").EditSession; +var Editor = require("./../editor").Editor; +var UndoManager = require("./../undomanager").UndoManager; +var MockRenderer = require("./../test/mockrenderer").MockRenderer; +var JavaScriptMode = require("./../mode/javascript").Mode; +var VirtualRenderer = require("./../virtual_renderer").VirtualRenderer; +var assert = require("./../test/assertions"); +var keys = require("./../lib/keys"); +var vim = require("./vim"); + +var el = document.createElement("div"); +el.style.position = "fixed"; +el.style.left = "20px"; +el.style.top = "30px"; +el.style.width = "500px"; +el.style.height = "300px"; +document.body.appendChild(el); + +if (window.name == "nodejs") + return console.log("Skipping test: This test only runs in the browser"); + +var renderer = new VirtualRenderer(el); +editor = new Editor(renderer);//(new MockRenderer()); +editor.session.setUndoManager(new UndoManager()); +editor.session.setUseWorker(false); +editor.session.setMode(new JavaScriptMode()); +function CodeMirror(place, opts) { + if (opts.value != null) + editor.session.setValue(opts.value); + editor.setOption("indentedSoftWrap", false); + editor.setOption("wrap", opts.lineWrapping); + editor.setOption("useSoftTabs", !opts.indentWithTabs); + editor.setKeyboardHandler(null); + editor.setKeyboardHandler(vim.handler); + var cm = editor.state.cm; + cm.setOption("tabSize", opts.tabSize || 4); + cm.setOption("indentUnit", opts.indentUnit || 2); + + cm.setSize = function(w, h) { + var changed = false; + if (w && editor.w != w) { + changed = true; + el.style.width = (editor.w = w) + "px"; + } + if (h && editor.h != h) { + changed = true; + el.style.height = (editor.h = h) + "px"; + } + if (changed) + editor.resize(true); + }; + cm.setSize(500, 300); + return cm; +} +CodeMirror.defineMode = function() {} +for (var key in vim.CodeMirror) + CodeMirror[key] = vim.CodeMirror[key]; +var editor; +var i = 0; +function test(name, fn) { + // if (name != 'vim_search_history') return + // for (i = 0; i < 1000; i++) + // exports["test " + name + i] = fn; // vim_ex_global_confirm + if (i++ < 0 || /- /.test(name)) + exports["test " + name] = function() {}; + else + exports["test " + name] = fn; +} +function expectFail(fn) { + try { + fn(); + } catch(expected) {}; + throw new Error("Expected to throw an error"); +} + +vim.CodeMirror.Vim.unmap("Y"); +vim.CodeMirror.Vim.defineEx('write', 'w', function(cm) { + CodeMirror.commands.save(cm); +}); + + + +// cm.setBookmark({ch: 5, line: 0}) +// cm.setBookmark({ch: 4, line: 0}) +// cm.replaceRange("x-", {ch: 4, line: 0}, {ch: 5, line: 0}); [editor.$vimModeHandler.cm.marks[0].find(),editor.$vimModeHandler.cm.marks[1].find()] + +var lineText, verbose, phantom; +var Pos = CodeMirror.Pos; +var place = document.createElement("div"); +var eqPos = assert.deepEqual; +var eq = assert.equal; +var is = assert.ok; + +CodeMirror.Vim.suppressErrorLogging = true; + +var code = '' + +' wOrd1 (#%\n' + +' word3] \n' + +'aopop pop 0 1 2 3 4\n' + +' (a) [b] {c} \n' + +'int getchar(void) {\n' + +' static char buf[BUFSIZ];\n' + +' static char *bufp = buf;\n' + +' if (n == 0) { /* buffer is empty */\n' + +' n = read(0, buf, sizeof buf);\n' + +' bufp = buf;\n' + +' }\n' + +'\n' + +' return (--n >= 0) ? (unsigned char) *bufp++ : EOF;\n' + +' \n' + +'}\n'; + +var lines = (function() { + lineText = code.split('\n'); + var ret = []; + for (var i = 0; i < lineText.length; i++) { + ret[i] = { + line: i, + length: lineText[i].length, + lineText: lineText[i], + textStart: /^\s*/.exec(lineText[i])[0].length + }; + } + return ret; +})(); +var endOfDocument = makeCursor(lines.length - 1, + lines[lines.length - 1].length); +var wordLine = lines[0]; +var bigWordLine = lines[1]; +var charLine = lines[2]; +var bracesLine = lines[3]; +var seekBraceLine = lines[4]; + +var word1 = { + start: { line: wordLine.line, ch: 1 }, + end: { line: wordLine.line, ch: 5 } +}; +var word2 = { + start: { line: wordLine.line, ch: word1.end.ch + 2 }, + end: { line: wordLine.line, ch: word1.end.ch + 4 } +}; +var word3 = { + start: { line: bigWordLine.line, ch: 1 }, + end: { line: bigWordLine.line, ch: 5 } +}; +var bigWord1 = word1; +var bigWord2 = word2; +var bigWord3 = { + start: { line: bigWordLine.line, ch: 1 }, + end: { line: bigWordLine.line, ch: 7 } +}; +var bigWord4 = { + start: { line: bigWordLine.line, ch: bigWord1.end.ch + 3 }, + end: { line: bigWordLine.line, ch: bigWord1.end.ch + 7 } +}; + +var oChars = [ { line: charLine.line, ch: 1 }, + { line: charLine.line, ch: 3 }, + { line: charLine.line, ch: 7 } ]; +var pChars = [ { line: charLine.line, ch: 2 }, + { line: charLine.line, ch: 4 }, + { line: charLine.line, ch: 6 }, + { line: charLine.line, ch: 8 } ]; +var numChars = [ { line: charLine.line, ch: 10 }, + { line: charLine.line, ch: 12 }, + { line: charLine.line, ch: 14 }, + { line: charLine.line, ch: 16 }, + { line: charLine.line, ch: 18 }]; +var parens1 = { + start: { line: bracesLine.line, ch: 1 }, + end: { line: bracesLine.line, ch: 3 } +}; +var squares1 = { + start: { line: bracesLine.line, ch: 5 }, + end: { line: bracesLine.line, ch: 7 } +}; +var curlys1 = { + start: { line: bracesLine.line, ch: 9 }, + end: { line: bracesLine.line, ch: 11 } +}; +var seekOutside = { + start: { line: seekBraceLine.line, ch: 1 }, + end: { line: seekBraceLine.line, ch: 16 } +}; +var seekInside = { + start: { line: seekBraceLine.line, ch: 14 }, + end: { line: seekBraceLine.line, ch: 11 } +}; + +function copyCursor(cur) { + return { ch: cur.ch, line: cur.line }; +} + +function forEach(arr, func) { + for (var i = 0; i < arr.length; i++) { + func(arr[i], i, arr); + } +} + +function testVim(name, run, opts, expectedFail) { + var vimOpts = { + lineNumbers: true, + vimMode: true, + showCursorWhenSelecting: true, + value: code + }; + for (var prop in opts) { + if (opts.hasOwnProperty(prop)) { + vimOpts[prop] = opts[prop]; + } + } + return test('vim_' + name, function() { + var place = document.getElementById("testground"); + var cm = CodeMirror(place, vimOpts); + var vim = CodeMirror.Vim.maybeInitVimState_(cm); + + function doKeysFn(cm) { + return function(args) { + if (args instanceof Array) { + arguments = args; + } + for (var i = 0; i < arguments.length; i++) { + var result = CodeMirror.Vim.handleKey(cm, arguments[i]); + if (!result && cm.state.vim.insertMode) { + cm.replaceSelections(fillArray(arguments[i], cm.listSelections().length)); + } + } + } + } + function doInsertModeKeysFn(cm) { + return function(args) { + if (args instanceof Array) { arguments = args; } + function executeHandler(handler) { + if (typeof handler == 'string') { + CodeMirror.commands[handler](cm); + } else { + handler(cm); + } + return true; + } + for (var i = 0; i < arguments.length; i++) { + var key = arguments[i]; + // Find key in keymap and handle. + var handled = CodeMirror.lookupKey(key, 'vim-insert', executeHandler); + // Record for insert mode. + if (handled == "handled" && cm.state.vim.insertMode && arguments[i] != 'Esc') { + var lastChange = CodeMirror.Vim.getVimGlobalState_().macroModeState.lastInsertModeChanges; + if (lastChange && (key.indexOf('Delete') != -1 || key.indexOf('Backspace') != -1)) { + lastChange.changes.push(new CodeMirror.Vim.InsertModeKey(key)); + } + } + } + } + } + function doExFn(cm) { + return function(command) { + cm.openDialog = helpers.fakeOpenDialog(command); + helpers.doKeys(':'); + } + } + function assertCursorAtFn(cm) { + return function(line, ch) { + var pos; + if (ch == null && typeof line.line == 'number') { + pos = line; + } else { + pos = makeCursor(line, ch); + } + eqPos(pos, cm.getCursor()); + } + } + function fakeOpenDialog(result) { + return function(text, callback) { + return callback(result); + } + } + function fakeOpenNotification(matcher) { + return function(text) { + matcher(text); + } + } + var helpers = { + doKeys: doKeysFn(cm), + // Warning: Only emulates keymap events, not character insertions. Use + // replaceRange to simulate character insertions. + // Keys are in CodeMirror format, NOT vim format. + doInsertModeKeys: doInsertModeKeysFn(cm), + doEx: doExFn(cm), + assertCursorAt: assertCursorAtFn(cm), + fakeOpenDialog: fakeOpenDialog, + fakeOpenNotification: fakeOpenNotification, + getRegisterController: function() { + return CodeMirror.Vim.getRegisterController(); + } + } + CodeMirror.Vim.resetVimGlobalState_(); + var successful = false; + var savedOpenNotification = cm.openNotification; + var savedOpenDialog = cm.openDialog; + try { + run(cm, vim, helpers); + successful = true; + } finally { + cm.openNotification = savedOpenNotification; + cm.openDialog = savedOpenDialog; + // ace_patch + } + }); +} +testVim('qq@q', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'q', 'l', 'l', 'q'); + helpers.assertCursorAt(0,2); + helpers.doKeys('@', 'q'); + helpers.assertCursorAt(0,4); +}, { value: ' '}); +testVim('@@', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'q', 'l', 'l', 'q'); + helpers.assertCursorAt(0,2); + helpers.doKeys('@', 'q'); + helpers.assertCursorAt(0,4); + helpers.doKeys('@', '@'); + helpers.assertCursorAt(0,6); +}, { value: ' '}); +var jumplistScene = ''+ + 'word\n'+ + '(word)\n'+ + '{word\n'+ + 'word.\n'+ + '\n'+ + 'word search\n'+ + '}word\n'+ + 'word\n'+ + 'word\n'; +function testJumplist(name, keys, endPos, startPos, dialog) { + endPos = makeCursor(endPos[0], endPos[1]); + startPos = makeCursor(startPos[0], startPos[1]); + testVim(name, function(cm, vim, helpers) { + CodeMirror.Vim.resetVimGlobalState_(); + if(dialog)cm.openDialog = helpers.fakeOpenDialog('word'); + cm.setCursor(startPos); + helpers.doKeys.apply(null, keys); + helpers.assertCursorAt(endPos); + }, {value: jumplistScene}); +} +testJumplist('jumplist_H', ['H', ''], [5,2], [5,2]); +testJumplist('jumplist_M', ['M', ''], [2,2], [2,2]); +testJumplist('jumplist_L', ['L', ''], [2,2], [2,2]); +testJumplist('jumplist_[[', ['[', '[', ''], [5,2], [5,2]); +testJumplist('jumplist_]]', [']', ']', ''], [2,2], [2,2]); +testJumplist('jumplist_G', ['G', ''], [5,2], [5,2]); +testJumplist('jumplist_gg', ['g', 'g', ''], [5,2], [5,2]); +testJumplist('jumplist_%', ['%', ''], [1,5], [1,5]); +testJumplist('jumplist_{', ['{', ''], [1,5], [1,5]); +testJumplist('jumplist_}', ['}', ''], [1,5], [1,5]); +testJumplist('jumplist_\'', ['m', 'a', 'h', '\'', 'a', 'h', ''], [1,0], [1,5]); +testJumplist('jumplist_`', ['m', 'a', 'h', '`', 'a', 'h', ''], [1,5], [1,5]); +testJumplist('jumplist_*_cachedCursor', ['*', ''], [1,3], [1,3]); +testJumplist('jumplist_#_cachedCursor', ['#', ''], [1,3], [1,3]); +testJumplist('jumplist_n', ['#', 'n', ''], [1,1], [2,3]); +testJumplist('jumplist_N', ['#', 'N', ''], [1,1], [2,3]); +testJumplist('jumplist_repeat_', ['*', '*', '*', '3', ''], [2,3], [2,3]); +testJumplist('jumplist_repeat_', ['*', '*', '*', '3', '', '2', ''], [5,0], [2,3]); +testJumplist('jumplist_repeated_motion', ['3', '*', ''], [2,3], [2,3]); +testJumplist('jumplist_/', ['/', ''], [2,3], [2,3], 'dialog'); +testJumplist('jumplist_?', ['?', ''], [2,3], [2,3], 'dialog'); +testJumplist('jumplist_skip_delted_mark', + ['*', 'n', 'n', 'k', 'd', 'k', '', '', ''], + [0,2], [0,2]); +testJumplist('jumplist_skip_delted_mark', + ['*', 'n', 'n', 'k', 'd', 'k', '', '', ''], + [1,0], [0,2]); + +/** + * @param name Name of the test + * @param keys An array of keys or a string with a single key to simulate. + * @param endPos The expected end position of the cursor. + * @param startPos The position the cursor should start at, defaults to 0, 0. + */ +function testMotion(name, keys, endPos, startPos) { + testVim(name, function(cm, vim, helpers) { + if (!startPos) { + startPos = { line: 0, ch: 0 }; + } + cm.setCursor(startPos); + helpers.doKeys(keys); + helpers.assertCursorAt(endPos); + }); +} + +function makeCursor(line, ch) { + return { line: line, ch: ch }; +} + +function offsetCursor(cur, offsetLine, offsetCh) { + return { line: cur.line + offsetLine, ch: cur.ch + offsetCh }; +} + +// Motion tests +testMotion('|', '|', makeCursor(0, 0), makeCursor(0,4)); +testMotion('|_repeat', ['3', '|'], makeCursor(0, 2), makeCursor(0,4)); +testMotion('h', 'h', makeCursor(0, 0), word1.start); +testMotion('h_repeat', ['3', 'h'], offsetCursor(word1.end, 0, -3), word1.end); +testMotion('l', 'l', makeCursor(0, 1)); +testMotion('l_repeat', ['2', 'l'], makeCursor(0, 2)); +testMotion('j', 'j', offsetCursor(word1.end, 1, 0), word1.end); +testMotion('j_repeat', ['2', 'j'], offsetCursor(word1.end, 2, 0), word1.end); +testMotion('j_repeat_clip', ['1000', 'j'], endOfDocument); +testMotion('k', 'k', offsetCursor(word3.end, -1, 0), word3.end); +testMotion('k_repeat', ['2', 'k'], makeCursor(0, 4), makeCursor(2, 4)); +testMotion('k_repeat_clip', ['1000', 'k'], makeCursor(0, 4), makeCursor(2, 4)); +testMotion('w', 'w', word1.start); +testMotion('w_multiple_newlines_no_space', 'w', makeCursor(12, 2), makeCursor(11, 2)); +testMotion('w_multiple_newlines_with_space', 'w', makeCursor(14, 0), makeCursor(12, 51)); +testMotion('w_repeat', ['2', 'w'], word2.start); +testMotion('w_wrap', ['w'], word3.start, word2.start); +testMotion('w_endOfDocument', 'w', endOfDocument, endOfDocument); +testMotion('w_start_to_end', ['1000', 'w'], endOfDocument, makeCursor(0, 0)); +testMotion('W', 'W', bigWord1.start); +testMotion('W_repeat', ['2', 'W'], bigWord3.start, bigWord1.start); +testMotion('e', 'e', word1.end); +testMotion('e_repeat', ['2', 'e'], word2.end); +testMotion('e_wrap', 'e', word3.end, word2.end); +testMotion('e_endOfDocument', 'e', endOfDocument, endOfDocument); +testMotion('e_start_to_end', ['1000', 'e'], endOfDocument, makeCursor(0, 0)); +testMotion('b', 'b', word3.start, word3.end); +testMotion('b_repeat', ['2', 'b'], word2.start, word3.end); +testMotion('b_wrap', 'b', word2.start, word3.start); +testMotion('b_startOfDocument', 'b', makeCursor(0, 0), makeCursor(0, 0)); +testMotion('b_end_to_start', ['1000', 'b'], makeCursor(0, 0), endOfDocument); +testMotion('ge', ['g', 'e'], word2.end, word3.end); +testMotion('ge_repeat', ['2', 'g', 'e'], word1.end, word3.start); +testMotion('ge_wrap', ['g', 'e'], word2.end, word3.start); +testMotion('ge_startOfDocument', ['g', 'e'], makeCursor(0, 0), + makeCursor(0, 0)); +testMotion('ge_end_to_start', ['1000', 'g', 'e'], makeCursor(0, 0), endOfDocument); +testMotion('gg', ['g', 'g'], makeCursor(lines[0].line, lines[0].textStart), + makeCursor(3, 1)); +testMotion('gg_repeat', ['3', 'g', 'g'], + makeCursor(lines[2].line, lines[2].textStart)); +testMotion('G', 'G', + makeCursor(lines[lines.length - 1].line, lines[lines.length - 1].textStart), + makeCursor(3, 1)); +testMotion('G_repeat', ['3', 'G'], makeCursor(lines[2].line, + lines[2].textStart)); +// TODO: Make the test code long enough to test Ctrl-F and Ctrl-B. +testMotion('0', '0', makeCursor(0, 0), makeCursor(0, 8)); +testMotion('^', '^', makeCursor(0, lines[0].textStart), makeCursor(0, 8)); +testMotion('+', '+', makeCursor(1, lines[1].textStart), makeCursor(0, 8)); +testMotion('-', '-', makeCursor(0, lines[0].textStart), makeCursor(1, 4)); +testMotion('_', ['6','_'], makeCursor(5, lines[5].textStart), makeCursor(0, 8)); +testMotion('$', '$', makeCursor(0, lines[0].length - 1), makeCursor(0, 1)); +testMotion('$_repeat', ['2', '$'], makeCursor(1, lines[1].length - 1), + makeCursor(0, 3)); +testMotion('f', ['f', 'p'], pChars[0], makeCursor(charLine.line, 0)); +testMotion('f_repeat', ['2', 'f', 'p'], pChars[2], pChars[0]); +testMotion('f_num', ['f', '2'], numChars[2], makeCursor(charLine.line, 0)); +testMotion('t', ['t','p'], offsetCursor(pChars[0], 0, -1), + makeCursor(charLine.line, 0)); +testMotion('t_repeat', ['2', 't', 'p'], offsetCursor(pChars[2], 0, -1), + pChars[0]); +testMotion('F', ['F', 'p'], pChars[0], pChars[1]); +testMotion('F_repeat', ['2', 'F', 'p'], pChars[0], pChars[2]); +testMotion('T', ['T', 'p'], offsetCursor(pChars[0], 0, 1), pChars[1]); +testMotion('T_repeat', ['2', 'T', 'p'], offsetCursor(pChars[0], 0, 1), pChars[2]); +testMotion('%_parens', ['%'], parens1.end, parens1.start); +testMotion('%_squares', ['%'], squares1.end, squares1.start); +testMotion('%_braces', ['%'], curlys1.end, curlys1.start); +testMotion('%_seek_outside', ['%'], seekOutside.end, seekOutside.start); +testMotion('%_seek_inside', ['%'], seekInside.end, seekInside.start); +testVim('%_seek_skip', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,9); +}, {value:'01234"("()'}); +testVim('%_skip_string', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,4); + cm.setCursor(0,2); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,0); +}, {value:'(")")'}); +testVim('%_skip_comment', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,6); + cm.setCursor(0,3); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,0); +}, {value:'(/*)*/)'}); +// Make sure that moving down after going to the end of a line always leaves you +// at the end of a line, but preserves the offset in other cases +testVim('Changing lines after Eol operation', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys(['$']); + helpers.doKeys(['j']); + // After moving to Eol and then down, we should be at Eol of line 2 + helpers.assertCursorAt({ line: 1, ch: lines[1].length - 1 }); + helpers.doKeys(['j']); + // After moving down, we should be at Eol of line 3 + helpers.assertCursorAt({ line: 2, ch: lines[2].length - 1 }); + helpers.doKeys(['h']); + helpers.doKeys(['j']); + // After moving back one space and then down, since line 4 is shorter than line 2, we should + // be at Eol of line 2 - 1 + helpers.assertCursorAt({ line: 3, ch: lines[3].length - 1 }); + helpers.doKeys(['j']); + helpers.doKeys(['j']); + // After moving down again, since line 3 has enough characters, we should be back to the + // same place we were at on line 1 + helpers.assertCursorAt({ line: 5, ch: lines[2].length - 2 }); +}); +//making sure gj and gk recover from clipping +testVim('gj_gk_clipping', function(cm,vim,helpers){ + cm.setCursor(0, 1); + helpers.doKeys('g','j','g','j'); + helpers.assertCursorAt(2, 1); + helpers.doKeys('g','k','g','k'); + helpers.assertCursorAt(0, 1); +},{value: 'line 1\n\nline 2'}); +//testing a mix of j/k and gj/gk +testVim('j_k_and_gj_gk', function(cm,vim,helpers){ + cm.setSize(120); + cm.setCursor(0, 0); + //go to the last character on the first line + helpers.doKeys('$'); + //move up/down on the column within the wrapped line + //side-effect: cursor is not locked to eol anymore + helpers.doKeys('g','k'); + var cur=cm.getCursor(); + eq(cur.line,0); + is((cur.ch<176),'gk didn\'t move cursor back (1)'); + helpers.doKeys('g','j'); + helpers.assertCursorAt(0, 176); + //should move to character 177 on line 2 (j/k preserve character index within line) + helpers.doKeys('j'); + //due to different line wrapping, the cursor can be on a different screen-x now + //gj and gk preserve screen-x on movement, much like moveV + helpers.doKeys('3','g','k'); + cur=cm.getCursor(); + eq(cur.line,1); + is((cur.ch<176),'gk didn\'t move cursor back (2)'); + helpers.doKeys('g','j','2','g','j'); + //should return to the same character-index + helpers.doKeys('k'); + helpers.assertCursorAt(0, 176); +},{ lineWrapping:true, value: 'This line is intentially long to test movement of gj and gk over wrapped lines. I will start on the end of this line, then make a step up and back to set the origin for j and k.\nThis line is supposed to be even longer than the previous. I will jump here and make another wiggle with gj and gk, before I jump back to the line above. Both wiggles should not change my cursor\'s target character but both j/k and gj/gk change each other\'s reference position.'}); +testVim('gj_gk', function(cm, vim, helpers) { + if (phantom) return; + cm.setSize(120); + // Test top of document edge case. + cm.setCursor(0, 4); + helpers.doKeys('g', 'j'); + helpers.doKeys('10', 'g', 'k'); + helpers.assertCursorAt(0, 4); + + // Test moving down preserves column position. + helpers.doKeys('g', 'j'); + var pos1 = cm.getCursor(); + var expectedPos2 = { line: 0, ch: (pos1.ch - 4) * 2 + 4}; + helpers.doKeys('g', 'j'); + helpers.assertCursorAt(expectedPos2); + + // Move to the last character + cm.setCursor(0, 0); + // Move left to reset HSPos + helpers.doKeys('h'); + // Test bottom of document edge case. + helpers.doKeys('100', 'g', 'j'); + var endingPos = cm.getCursor(); + is(endingPos != 0, 'gj should not be on wrapped line 0'); + var topLeftCharCoords = cm.charCoords(makeCursor(0, 0)); + var endingCharCoords = cm.charCoords(endingPos); + is(topLeftCharCoords.left == endingCharCoords.left, 'gj should end up on column 0'); +},{ lineNumbers: false, lineWrapping:true, value: 'Thislineisintentiallylongtotestmovementofgjandgkoverwrappedlines.' }); +testVim('}', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('}'); + helpers.assertCursorAt(1, 0); + cm.setCursor(0, 0); + helpers.doKeys('2', '}'); + helpers.assertCursorAt(4, 0); + cm.setCursor(0, 0); + helpers.doKeys('6', '}'); + helpers.assertCursorAt(5, 0); +}, { value: 'a\n\nb\nc\n\nd' }); +testVim('{', function(cm, vim, helpers) { + cm.setCursor(5, 0); + helpers.doKeys('{'); + helpers.assertCursorAt(4, 0); + cm.setCursor(5, 0); + helpers.doKeys('2', '{'); + helpers.assertCursorAt(1, 0); + cm.setCursor(5, 0); + helpers.doKeys('6', '{'); + helpers.assertCursorAt(0, 0); +}, { value: 'a\n\nb\nc\n\nd' }); +testVim('paragraph_motions', function(cm, vim, helpers) { + cm.setCursor(10, 0); + helpers.doKeys('{'); + helpers.assertCursorAt(4, 0); + helpers.doKeys('{'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('2', '}'); + helpers.assertCursorAt(7, 0); + helpers.doKeys('2', '}'); + helpers.assertCursorAt(16, 0); + + cm.setCursor(9, 0); + helpers.doKeys('}'); + helpers.assertCursorAt(14, 0); + + cm.setCursor(6, 0); + helpers.doKeys('}'); + helpers.assertCursorAt(7, 0); + + // ip inside empty space + cm.setCursor(10, 0); + helpers.doKeys('v', 'i', 'p'); + eqPos(Pos(7, 0), cm.getCursor('anchor')); + eqPos(Pos(12, 0), cm.getCursor('head')); + helpers.doKeys('i', 'p'); + eqPos(Pos(7, 0), cm.getCursor('anchor')); + eqPos(Pos(13, 1), cm.getCursor('head')); + helpers.doKeys('2', 'i', 'p'); + eqPos(Pos(7, 0), cm.getCursor('anchor')); + eqPos(Pos(16, 1), cm.getCursor('head')); + + // should switch to visualLine mode + cm.setCursor(14, 0); + helpers.doKeys('', 'v', 'i', 'p'); + helpers.assertCursorAt(14, 0); + + cm.setCursor(14, 0); + helpers.doKeys('', 'V', 'i', 'p'); + eqPos(Pos(16, 1), cm.getCursor('head')); + + // ap inside empty space + cm.setCursor(10, 0); + helpers.doKeys('', 'v', 'a', 'p'); + eqPos(Pos(7, 0), cm.getCursor('anchor')); + eqPos(Pos(13, 1), cm.getCursor('head')); + helpers.doKeys('a', 'p'); + eqPos(Pos(7, 0), cm.getCursor('anchor')); + eqPos(Pos(16, 1), cm.getCursor('head')); + + cm.setCursor(13, 0); + helpers.doKeys('v', 'a', 'p'); + eqPos(Pos(13, 0), cm.getCursor('anchor')); + eqPos(Pos(14, 0), cm.getCursor('head')); + + cm.setCursor(16, 0); + helpers.doKeys('v', 'a', 'p'); + eqPos(Pos(14, 0), cm.getCursor('anchor')); + eqPos(Pos(16, 1), cm.getCursor('head')); + + cm.setCursor(0, 0); + helpers.doKeys('v', 'a', 'p'); + eqPos(Pos(0, 0), cm.getCursor('anchor')); + eqPos(Pos(4, 0), cm.getCursor('head')); + + cm.setCursor(0, 0); + helpers.doKeys('d', 'i', 'p'); + var register = helpers.getRegisterController().getRegister(); + eq('a\na\n', register.toString()); + is(register.linewise); + helpers.doKeys('3', 'j', 'p'); + helpers.doKeys('y', 'i', 'p'); + is(register.linewise); + eq('b\na\na\nc\n', register.toString()); +}, { value: 'a\na\n\n\n\nb\nc\n\n\n\n\n\n\nd\n\ne\nf' }); + +// Operator tests +testVim('dl', function(cm, vim, helpers) { + var curStart = makeCursor(0, 0); + cm.setCursor(curStart); + helpers.doKeys('d', 'l'); + eq('word1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' ', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); +}, { value: ' word1 ' }); +testVim('dl_eol', function(cm, vim, helpers) { + cm.setCursor(0, 6); + helpers.doKeys('d', 'l'); + eq(' word1', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' ', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 5); +}, { value: ' word1 ' }); +testVim('dl_repeat', function(cm, vim, helpers) { + var curStart = makeCursor(0, 0); + cm.setCursor(curStart); + helpers.doKeys('2', 'd', 'l'); + eq('ord1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' w', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); +}, { value: ' word1 ' }); +testVim('dh', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'h'); + eq(' wrd1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('o', register.toString()); + is(!register.linewise); + eqPos(offsetCursor(curStart, 0 , -1), cm.getCursor()); +}, { value: ' word1 ' }); +testVim('dj', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'j'); + eq(' word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' word1\nword2\n', register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\nword2\n word3' }); +testVim('dj_end_of_document', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'j'); + eq(' word1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 3); +}, { value: ' word1 ' }); +testVim('dk', function(cm, vim, helpers) { + var curStart = makeCursor(1, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'k'); + eq(' word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' word1\nword2\n', register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\nword2\n word3' }); +testVim('dk_start_of_document', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'k'); + eq(' word1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 3); +}, { value: ' word1 ' }); +testVim('dw_space', function(cm, vim, helpers) { + var curStart = makeCursor(0, 0); + cm.setCursor(curStart); + helpers.doKeys('d', 'w'); + eq('word1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' ', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); +}, { value: ' word1 ' }); +testVim('dw_word', function(cm, vim, helpers) { + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('d', 'w'); + eq(' word2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1 ', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); +}, { value: ' word1 word2' }); +testVim('dw_unicode_word', function(cm, vim, helpers) { + helpers.doKeys('d', 'w'); + eq(cm.getValue().length, 10); + helpers.doKeys('d', 'w'); + eq(cm.getValue().length, 6); + helpers.doKeys('d', 'w'); + eq(cm.getValue().length, 5); + helpers.doKeys('d', 'e'); + eq(cm.getValue().length, 2); +}, { value: ' \u0562\u0561\u0580\u0587\xbbe\xb5g ' }); +testVim('dw_only_word', function(cm, vim, helpers) { + // Test that if there is only 1 word left, dw deletes till the end of the + // line. + cm.setCursor(0, 1); + helpers.doKeys('d', 'w'); + eq(' ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1 ', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1 ' }); +testVim('dw_eol', function(cm, vim, helpers) { + // Assert that dw does not delete the newline if last word to delete is at end + // of line. + cm.setCursor(0, 1); + helpers.doKeys('d', 'w'); + eq(' \nword2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1\nword2' }); +testVim('dw_eol_with_multiple_newlines', function(cm, vim, helpers) { + // Assert that dw does not delete the newline if last word to delete is at end + // of line and it is followed by multiple newlines. + cm.setCursor(0, 1); + helpers.doKeys('d', 'w'); + eq(' \n\nword2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1\n\nword2' }); +testVim('dw_empty_line_followed_by_whitespace', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq(' \nword', cm.getValue()); +}, { value: '\n \nword' }); +testVim('dw_empty_line_followed_by_word', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('word', cm.getValue()); +}, { value: '\nword' }); +testVim('dw_empty_line_followed_by_empty_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('\n', cm.getValue()); +}, { value: '\n\n' }); +testVim('dw_whitespace_followed_by_whitespace', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('\n \n', cm.getValue()); +}, { value: ' \n \n' }); +testVim('dw_whitespace_followed_by_empty_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('\n\n', cm.getValue()); +}, { value: ' \n\n' }); +testVim('dw_word_whitespace_word', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('\n \nword2', cm.getValue()); +}, { value: 'word1\n \nword2'}) +testVim('dw_end_of_document', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('d', 'w'); + eq('\nab', cm.getValue()); +}, { value: '\nabc' }); +testVim('dw_repeat', function(cm, vim, helpers) { + // Assert that dw does delete newline if it should go to the next line, and + // that repeat works properly. + cm.setCursor(0, 1); + helpers.doKeys('d', '2', 'w'); + eq(' ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1\nword2', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1\nword2' }); +testVim('de_word_start_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'e'); + eq('\n\n', cm.getValue()); +}, { value: 'word\n\n' }); +testVim('de_word_end_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(0, 3); + helpers.doKeys('d', 'e'); + eq('wor', cm.getValue()); +}, { value: 'word\n\n\n' }); +testVim('de_whitespace_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'e'); + eq('', cm.getValue()); +}, { value: ' \n\n\n' }); +testVim('de_end_of_document', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('d', 'e'); + eq('\nab', cm.getValue()); +}, { value: '\nabc' }); +testVim('db_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('d', 'b'); + eq('\n\n', cm.getValue()); +}, { value: '\n\n\n' }); +testVim('db_word_start_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('d', 'b'); + eq('\nword', cm.getValue()); +}, { value: '\n\nword' }); +testVim('db_word_end_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 3); + helpers.doKeys('d', 'b'); + eq('\n\nd', cm.getValue()); +}, { value: '\n\nword' }); +testVim('db_whitespace_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('d', 'b'); + eq('', cm.getValue()); +}, { value: '\n \n' }); +testVim('db_start_of_document', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'b'); + eq('abc\n', cm.getValue()); +}, { value: 'abc\n' }); +testVim('dge_empty_lines', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doKeys('d', 'g', 'e'); + // Note: In real VIM the result should be '', but it's not quite consistent, + // since 2 newlines are deleted. But in the similar case of word\n\n, only + // 1 newline is deleted. We'll diverge from VIM's behavior since it's much + // easier this way. + eq('\n', cm.getValue()); +}, { value: '\n\n' }); +testVim('dge_word_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doKeys('d', 'g', 'e'); + eq('wor\n', cm.getValue()); +}, { value: 'word\n\n'}); +testVim('dge_whitespace_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('d', 'g', 'e'); + eq('', cm.getValue()); +}, { value: '\n \n' }); +testVim('dge_start_of_document', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'g', 'e'); + eq('bc\n', cm.getValue()); +}, { value: 'abc\n' }); +testVim('d_inclusive', function(cm, vim, helpers) { + // Assert that when inclusive is set, the character the cursor is on gets + // deleted too. + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('d', 'e'); + eq(' ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); +}, { value: ' word1 ' }); +testVim('d_reverse', function(cm, vim, helpers) { + // Test that deleting in reverse works. + cm.setCursor(1, 0); + helpers.doKeys('d', 'b'); + eq(' word2 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1\n', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\nword2 ' }); +testVim('dd', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange({ line: 0, ch: 0 }, + { line: 1, ch: 0 }); + var expectedLineCount = cm.lineCount() - 1; + helpers.doKeys('d', 'd'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, lines[1].textStart); +}); +testVim('dd_prefix_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange({ line: 0, ch: 0 }, + { line: 2, ch: 0 }); + var expectedLineCount = cm.lineCount() - 2; + helpers.doKeys('2', 'd', 'd'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, lines[2].textStart); +}); +testVim('dd_motion_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange({ line: 0, ch: 0 }, + { line: 2, ch: 0 }); + var expectedLineCount = cm.lineCount() - 2; + helpers.doKeys('d', '2', 'd'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, lines[2].textStart); +}); +testVim('dd_multiply_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange({ line: 0, ch: 0 }, + { line: 6, ch: 0 }); + var expectedLineCount = cm.lineCount() - 6; + helpers.doKeys('2', 'd', '3', 'd'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, lines[6].textStart); +}); +testVim('dd_lastline', function(cm, vim, helpers) { + cm.setCursor(cm.lineCount(), 0); + var expectedLineCount = cm.lineCount() - 1; + helpers.doKeys('d', 'd'); + eq(expectedLineCount, cm.lineCount()); + helpers.assertCursorAt(cm.lineCount() - 1, 0); +}); +testVim('dd_only_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + var expectedRegister = cm.getValue() + "\n"; + helpers.doKeys('d','d'); + eq(1, cm.lineCount()); + eq('', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedRegister, register.toString()); +}, { value: "thisistheonlyline" }); +// Yank commands should behave the exact same as d commands, expect that nothing +// gets deleted. +testVim('yw_repeat', function(cm, vim, helpers) { + // Assert that yw does yank newline if it should go to the next line, and + // that repeat works properly. + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('y', '2', 'w'); + eq(' word1\nword2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1\nword2', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); +}, { value: ' word1\nword2' }); +testVim('yy_multiply_repeat', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + var expectedBuffer = cm.getRange({ line: 0, ch: 0 }, + { line: 6, ch: 0 }); + var expectedLineCount = cm.lineCount(); + helpers.doKeys('2', 'y', '3', 'y'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + eqPos(curStart, cm.getCursor()); +}); +// Change commands behave like d commands except that it also enters insert +// mode. In addition, when the change is linewise, an additional newline is +// inserted so that insert mode starts on that line. +testVim('cw', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('c', '2', 'w'); + eq(' word3', cm.getValue()); + helpers.assertCursorAt(0, 0); +}, { value: 'word1 word2 word3'}); +testVim('cw_repeat', function(cm, vim, helpers) { + // Assert that cw does delete newline if it should go to the next line, and + // that repeat works properly. + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('c', '2', 'w'); + eq(' ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1\nword2', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: ' word1\nword2' }); +testVim('cc_multiply_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange({ line: 0, ch: 0 }, + { line: 6, ch: 0 }); + var expectedLineCount = cm.lineCount() - 5; + helpers.doKeys('2', 'c', '3', 'c'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('ct', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('c', 't', 'w'); + eq(' word1 word3', cm.getValue()); + helpers.doKeys('', 'c', '|'); + eq(' word3', cm.getValue()); + helpers.assertCursorAt(0, 0); + helpers.doKeys('', '2', 'u', 'w', 'h'); + helpers.doKeys('c', '2', 'g', 'e'); + eq(' wordword3', cm.getValue()); +}, { value: ' word1 word2 word3'}); +testVim('cc_should_not_append_to_document', function(cm, vim, helpers) { + var expectedLineCount = cm.lineCount(); + cm.setCursor(cm.lastLine(), 0); + helpers.doKeys('c', 'c'); + eq(expectedLineCount, cm.lineCount()); +}); +function fillArray(val, times) { + var arr = []; + for (var i = 0; i < times; i++) { + arr.push(val); + } + return arr; +} +testVim('c_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'l', 'l', 'c'); + var replacement = fillArray('hello', 3); + cm.replaceSelections(replacement); + eq('1hello\n5hello\nahellofg', cm.getValue()); + helpers.doKeys(''); + cm.setCursor(2, 3); + helpers.doKeys('', '2', 'k', 'h', 'C'); + replacement = fillArray('world', 3); + cm.replaceSelections(replacement); + eq('1hworld\n5hworld\nahworld', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); +testVim('c_visual_block_replay', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'c'); + var replacement = fillArray('fo', 3); + cm.replaceSelections(replacement); + eq('1fo4\n5fo8\nafodefg', cm.getValue()); + helpers.doKeys(''); + cm.setCursor(0, 0); + helpers.doKeys('.'); + eq('foo4\nfoo8\nfoodefg', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); + +testVim('d_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'l', 'l', 'd'); + eq('1\n5\nafg', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); +testVim('D_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'D'); + eq('1\n5\na', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); + +testVim('s_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'l', 'l', 's'); + var replacement = fillArray('hello{', 3); + cm.replaceSelections(replacement); + eq('1hello{\n5hello{\nahello{fg\n', cm.getValue()); + helpers.doKeys(''); + cm.setCursor(2, 3); + helpers.doKeys('', '1', 'k', 'h', 'S'); + replacement = fillArray('world', 1); + cm.replaceSelections(replacement); + eq('1hello{\n world\n', cm.getValue()); +}, {value: '1234\n5678\nabcdefg\n'}); + +// Swapcase commands edit in place and do not modify registers. +testVim('g~w_repeat', function(cm, vim, helpers) { + // Assert that dw does delete newline if it should go to the next line, and + // that repeat works properly. + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('g', '~', '2', 'w'); + eq(' WORD1\nWORD2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); +}, { value: ' word1\nword2' }); +testVim('g~g~', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + var expectedLineCount = cm.lineCount(); + var expectedValue = cm.getValue().toUpperCase(); + helpers.doKeys('2', 'g', '~', '3', 'g', '~'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); +}, { value: ' word1\nword2\nword3\nword4\nword5\nword6' }); +testVim('gu_and_gU', function(cm, vim, helpers) { + var curStart = makeCursor(0, 7); + var value = cm.getValue(); + cm.setCursor(curStart); + helpers.doKeys('2', 'g', 'U', 'w'); + eq(cm.getValue(), 'wa wb xX WC wd'); + eqPos(curStart, cm.getCursor()); + helpers.doKeys('2', 'g', 'u', 'w'); + eq(cm.getValue(), value); + + helpers.doKeys('2', 'g', 'U', 'B'); + eq(cm.getValue(), 'wa WB Xx wc wd'); + eqPos(makeCursor(0, 3), cm.getCursor()); + + cm.setCursor(makeCursor(0, 4)); + helpers.doKeys('g', 'u', 'i', 'w'); + eq(cm.getValue(), 'wa wb Xx wc wd'); + eqPos(makeCursor(0, 3), cm.getCursor()); + + // TODO: support gUgU guu + // eqPos(makeCursor(0, 0), cm.getCursor()); + + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); +}, { value: 'wa wb xx wc wd' }); +testVim('visual_block_~', function(cm, vim, helpers) { + cm.setCursor(1, 1); + helpers.doKeys('', 'l', 'l', 'j', '~'); + helpers.assertCursorAt(1, 1); + eq('hello\nwoRLd\naBCDe', cm.getValue()); + cm.setCursor(2, 0); + helpers.doKeys('v', 'l', 'l', '~'); + helpers.assertCursorAt(2, 0); + eq('hello\nwoRLd\nAbcDe', cm.getValue()); +},{value: 'hello\nwOrld\nabcde' }); +testVim('._swapCase_visualBlock', function(cm, vim, helpers) { + helpers.doKeys('', 'j', 'j', 'l', '~'); + cm.setCursor(0, 3); + helpers.doKeys('.'); + eq('HelLO\nWorLd\nAbcdE', cm.getValue()); +},{value: 'hEllo\nwOrlD\naBcDe' }); +testVim('._delete_visualBlock', function(cm, vim, helpers) { + helpers.doKeys('', 'j', 'x'); + eq('ive\ne\nsome\nsugar', cm.getValue()); + helpers.doKeys('.'); + eq('ve\n\nsome\nsugar', cm.getValue()); + helpers.doKeys('j', 'j', '.'); + eq('ve\n\nome\nugar', cm.getValue()); + helpers.doKeys('u', '', '.'); + eq('ve\n\nme\ngar', cm.getValue()); +},{value: 'give\nme\nsome\nsugar' }); +testVim('>{motion}', function(cm, vim, helpers) { + cm.setCursor(1, 3); + var expectedLineCount = cm.lineCount(); + var expectedValue = ' word1\n word2\nword3 '; + helpers.doKeys('>', 'k'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 3); +}, { value: ' word1\nword2\nword3 ', indentUnit: 2 }); +testVim('>>', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedLineCount = cm.lineCount(); + var expectedValue = ' word1\n word2\nword3 '; + helpers.doKeys('2', '>', '>'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 3); +}, { value: ' word1\nword2\nword3 ', indentUnit: 2 }); +testVim('<{motion}', function(cm, vim, helpers) { + cm.setCursor(1, 3); + var expectedLineCount = cm.lineCount(); + var expectedValue = ' word1\nword2\nword3 '; + helpers.doKeys('<', 'k'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\n word2\nword3 ', indentUnit: 2 }); +testVim('<<', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedLineCount = cm.lineCount(); + var expectedValue = ' word1\nword2\nword3 '; + helpers.doKeys('2', '<', '<'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\n word2\nword3 ', indentUnit: 2 }); + +// Edit tests +function testEdit(name, before, pos, edit, after) { + return testVim(name, function(cm, vim, helpers) { + var ch = before.search(pos) + var line = before.substring(0, ch).split('\n').length - 1; + if (line) { + ch = before.substring(0, ch).split('\n').pop().length; + } + cm.setCursor(line, ch); + helpers.doKeys.apply(this, edit.split('')); + eq(after, cm.getValue()); + }, {value: before}); +} + +// These Delete tests effectively cover word-wise Change, Visual & Yank. +// Tabs are used as differentiated whitespace to catch edge cases. +// Normal word: +testEdit('diw_mid_spc', 'foo \tbAr\t baz', /A/, 'diw', 'foo \t\t baz'); +testEdit('daw_mid_spc', 'foo \tbAr\t baz', /A/, 'daw', 'foo \tbaz'); +testEdit('diw_mid_punct', 'foo \tbAr.\t baz', /A/, 'diw', 'foo \t.\t baz'); +testEdit('daw_mid_punct', 'foo \tbAr.\t baz', /A/, 'daw', 'foo.\t baz'); +testEdit('diw_mid_punct2', 'foo \t,bAr.\t baz', /A/, 'diw', 'foo \t,.\t baz'); +testEdit('daw_mid_punct2', 'foo \t,bAr.\t baz', /A/, 'daw', 'foo \t,.\t baz'); +testEdit('diw_start_spc', 'bAr \tbaz', /A/, 'diw', ' \tbaz'); +testEdit('daw_start_spc', 'bAr \tbaz', /A/, 'daw', 'baz'); +testEdit('diw_start_punct', 'bAr. \tbaz', /A/, 'diw', '. \tbaz'); +testEdit('daw_start_punct', 'bAr. \tbaz', /A/, 'daw', '. \tbaz'); +testEdit('diw_end_spc', 'foo \tbAr', /A/, 'diw', 'foo \t'); +testEdit('daw_end_spc', 'foo \tbAr', /A/, 'daw', 'foo'); +testEdit('diw_end_punct', 'foo \tbAr.', /A/, 'diw', 'foo \t.'); +testEdit('daw_end_punct', 'foo \tbAr.', /A/, 'daw', 'foo.'); +// Big word: +testEdit('diW_mid_spc', 'foo \tbAr\t baz', /A/, 'diW', 'foo \t\t baz'); +testEdit('daW_mid_spc', 'foo \tbAr\t baz', /A/, 'daW', 'foo \tbaz'); +testEdit('diW_mid_punct', 'foo \tbAr.\t baz', /A/, 'diW', 'foo \t\t baz'); +testEdit('daW_mid_punct', 'foo \tbAr.\t baz', /A/, 'daW', 'foo \tbaz'); +testEdit('diW_mid_punct2', 'foo \t,bAr.\t baz', /A/, 'diW', 'foo \t\t baz'); +testEdit('daW_mid_punct2', 'foo \t,bAr.\t baz', /A/, 'daW', 'foo \tbaz'); +testEdit('diW_start_spc', 'bAr\t baz', /A/, 'diW', '\t baz'); +testEdit('daW_start_spc', 'bAr\t baz', /A/, 'daW', 'baz'); +testEdit('diW_start_punct', 'bAr.\t baz', /A/, 'diW', '\t baz'); +testEdit('daW_start_punct', 'bAr.\t baz', /A/, 'daW', 'baz'); +testEdit('diW_end_spc', 'foo \tbAr', /A/, 'diW', 'foo \t'); +testEdit('daW_end_spc', 'foo \tbAr', /A/, 'daW', 'foo'); +testEdit('diW_end_punct', 'foo \tbAr.', /A/, 'diW', 'foo \t'); +testEdit('daW_end_punct', 'foo \tbAr.', /A/, 'daW', 'foo'); +// Deleting text objects +// Open and close on same line +testEdit('di(_open_spc', 'foo (bAr) baz', /\(/, 'di(', 'foo () baz'); +testEdit('di)_open_spc', 'foo (bAr) baz', /\(/, 'di)', 'foo () baz'); +testEdit('dib_open_spc', 'foo (bAr) baz', /\(/, 'dib', 'foo () baz'); +testEdit('da(_open_spc', 'foo (bAr) baz', /\(/, 'da(', 'foo baz'); +testEdit('da)_open_spc', 'foo (bAr) baz', /\(/, 'da)', 'foo baz'); + +testEdit('di(_middle_spc', 'foo (bAr) baz', /A/, 'di(', 'foo () baz'); +testEdit('di)_middle_spc', 'foo (bAr) baz', /A/, 'di)', 'foo () baz'); +testEdit('da(_middle_spc', 'foo (bAr) baz', /A/, 'da(', 'foo baz'); +testEdit('da)_middle_spc', 'foo (bAr) baz', /A/, 'da)', 'foo baz'); + +testEdit('di(_close_spc', 'foo (bAr) baz', /\)/, 'di(', 'foo () baz'); +testEdit('di)_close_spc', 'foo (bAr) baz', /\)/, 'di)', 'foo () baz'); +testEdit('da(_close_spc', 'foo (bAr) baz', /\)/, 'da(', 'foo baz'); +testEdit('da)_close_spc', 'foo (bAr) baz', /\)/, 'da)', 'foo baz'); + +// delete around and inner b. +testEdit('dab_on_(_should_delete_around_()block', 'o( in(abc) )', /\(a/, 'dab', 'o( in )'); + +// delete around and inner B. +testEdit('daB_on_{_should_delete_around_{}block', 'o{ in{abc} }', /{a/, 'daB', 'o{ in }'); +testEdit('diB_on_{_should_delete_inner_{}block', 'o{ in{abc} }', /{a/, 'diB', 'o{ in{} }'); + +testEdit('da{_on_{_should_delete_inner_block', 'o{ in{abc} }', /{a/, 'da{', 'o{ in }'); +testEdit('di[_on_(_should_not_delete', 'foo (bAr) baz', /\(/, 'di[', 'foo (bAr) baz'); +testEdit('di[_on_)_should_not_delete', 'foo (bAr) baz', /\)/, 'di[', 'foo (bAr) baz'); +testEdit('da[_on_(_should_not_delete', 'foo (bAr) baz', /\(/, 'da[', 'foo (bAr) baz'); +testEdit('da[_on_)_should_not_delete', 'foo (bAr) baz', /\)/, 'da[', 'foo (bAr) baz'); +testMotion('di(_outside_should_stay', ['d', 'i', '('], { line: 0, ch: 0}, { line: 0, ch: 0}); + +// Open and close on different lines, equally indented +testEdit('di{_middle_spc', 'a{\n\tbar\n}b', /r/, 'di{', 'a{}b'); +testEdit('di}_middle_spc', 'a{\n\tbar\n}b', /r/, 'di}', 'a{}b'); +testEdit('da{_middle_spc', 'a{\n\tbar\n}b', /r/, 'da{', 'ab'); +testEdit('da}_middle_spc', 'a{\n\tbar\n}b', /r/, 'da}', 'ab'); +testEdit('daB_middle_spc', 'a{\n\tbar\n}b', /r/, 'daB', 'ab'); + +// open and close on diff lines, open indented less than close +testEdit('di{_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'di{', 'a{}b'); +testEdit('di}_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'di}', 'a{}b'); +testEdit('da{_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'da{', 'ab'); +testEdit('da}_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'da}', 'ab'); + +// open and close on diff lines, open indented more than close +testEdit('di[_middle_spc', 'a\t[\n\tbar\n]b', /r/, 'di[', 'a\t[]b'); +testEdit('di]_middle_spc', 'a\t[\n\tbar\n]b', /r/, 'di]', 'a\t[]b'); +testEdit('da[_middle_spc', 'a\t[\n\tbar\n]b', /r/, 'da[', 'a\tb'); +testEdit('da]_middle_spc', 'a\t[\n\tbar\n]b', /r/, 'da]', 'a\tb'); + +function testSelection(name, before, pos, keys, sel) { + return testVim(name, function(cm, vim, helpers) { + var ch = before.search(pos) + var line = before.substring(0, ch).split('\n').length - 1; + if (line) { + ch = before.substring(0, ch).split('\n').pop().length; + } + cm.setCursor(line, ch); + helpers.doKeys.apply(this, keys.split('')); + eq(sel, cm.getSelection()); + }, {value: before}); +} +testSelection('viw_middle_spc', 'foo \tbAr\t baz', /A/, 'viw', 'bAr'); +testSelection('vaw_middle_spc', 'foo \tbAr\t baz', /A/, 'vaw', 'bAr\t '); +testSelection('viw_middle_punct', 'foo \tbAr,\t baz', /A/, 'viw', 'bAr'); +testSelection('vaW_middle_punct', 'foo \tbAr,\t baz', /A/, 'vaW', 'bAr,\t '); +testSelection('viw_start_spc', 'foo \tbAr\t baz', /b/, 'viw', 'bAr'); +testSelection('viw_end_spc', 'foo \tbAr\t baz', /r/, 'viw', 'bAr'); +testSelection('viw_eol', 'foo \tbAr', /r/, 'viw', 'bAr'); +testSelection('vi{_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'vi{', '\n\tbar\n\t'); +testSelection('va{_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'va{', '{\n\tbar\n\t}'); + +testVim('mouse_select', function(cm, vim, helpers) { + cm.setSelection(Pos(0, 2), Pos(0, 4), {origin: '*mouse'}); + is(cm.state.vim.visualMode); + is(!cm.state.vim.visualLine); + is(!cm.state.vim.visualBlock); + helpers.doKeys(''); + is(!cm.somethingSelected()); + helpers.doKeys('g', 'v'); + eq('cd', cm.getSelection()); +}, {value: 'abcdef'}); + +// Operator-motion tests +testVim('D', function(cm, vim, helpers) { + cm.setCursor(0, 3); + helpers.doKeys('D'); + eq(' wo\nword2\n word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('rd1', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 2); +}, { value: ' word1\nword2\n word3' }); +testVim('C', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('C'); + eq(' wo\nword2\n word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('rd1', register.toString()); + is(!register.linewise); + eqPos(curStart, cm.getCursor()); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: ' word1\nword2\n word3' }); +testVim('Y', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('Y'); + eq(' word1\nword2\n word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('rd1', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 3); +}, { value: ' word1\nword2\n word3' }); +testVim('~', function(cm, vim, helpers) { + helpers.doKeys('3', '~'); + eq('ABCdefg', cm.getValue()); + helpers.assertCursorAt(0, 3); +}, { value: 'abcdefg' }); + +// Action tests +testVim('ctrl-a', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys(''); + eq('-9', cm.getValue()); + helpers.assertCursorAt(0, 1); + helpers.doKeys('2',''); + eq('-7', cm.getValue()); +}, {value: '-10'}); +testVim('ctrl-x', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys(''); + eq('-1', cm.getValue()); + helpers.assertCursorAt(0, 1); + helpers.doKeys('2',''); + eq('-3', cm.getValue()); +}, {value: '0'}); +testVim('/ search forward', function(cm, vim, helpers) { + forEach(['', ''], function(key) { + cm.setCursor(0, 0); + helpers.doKeys(key); + helpers.assertCursorAt(0, 5); + helpers.doKeys('l'); + helpers.doKeys(key); + helpers.assertCursorAt(0, 10); + cm.setCursor(0, 11); + helpers.doKeys(key); + helpers.assertCursorAt(0, 11); + }); +}, {value: '__jmp1 jmp2 jmp'}); +testVim('a', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('a'); + helpers.assertCursorAt(0, 2); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('a_eol', function(cm, vim, helpers) { + cm.setCursor(0, lines[0].length - 1); + helpers.doKeys('a'); + helpers.assertCursorAt(0, lines[0].length); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('A_endOfSelectedArea', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('v', 'j', 'l'); + helpers.doKeys('A'); + helpers.assertCursorAt(1, 2); + eq('vim-insert', cm.getOption('keyMap')); +}, {value: 'foo\nbar'}); +testVim('i', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('i'); + helpers.assertCursorAt(0, 1); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('i_repeat', function(cm, vim, helpers) { + helpers.doKeys('3', 'i'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + eq('testtesttest', cm.getValue()); + helpers.assertCursorAt(0, 11); +}, { value: '' }); +testVim('i_repeat_delete', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('2', 'i'); + cm.replaceRange('z', cm.getCursor()); + helpers.doInsertModeKeys('Backspace', 'Backspace'); + helpers.doKeys(''); + eq('abe', cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: 'abcde' }); +testVim('A', function(cm, vim, helpers) { + helpers.doKeys('A'); + helpers.assertCursorAt(0, lines[0].length); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('A_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'l', 'A'); + var replacement = new Array(cm.listSelections().length+1).join('hello ').split(' '); + replacement.pop(); + cm.replaceSelections(replacement); + eq('testhello\nmehello\npleahellose', cm.getValue()); + helpers.doKeys(''); + cm.setCursor(0, 0); + helpers.doKeys('.'); + // TODO this doesn't work yet + // eq('teshellothello\nme hello hello\nplehelloahellose', cm.getValue()); +}, {value: 'test\nme\nplease'}); +testVim('I', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('I'); + helpers.assertCursorAt(0, lines[0].textStart); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('I_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('3', 'I'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + eq('testtesttestblah', cm.getValue()); + helpers.assertCursorAt(0, 11); +}, { value: 'blah' }); +testVim('I_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '2', 'j', 'l', 'l', 'I'); + var replacement = new Array(cm.listSelections().length+1).join('hello ').split(' '); + replacement.pop(); + cm.replaceSelections(replacement); + eq('hellotest\nhellome\nhelloplease', cm.getValue()); +}, {value: 'test\nme\nplease'}); +testVim('o', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('o'); + eq('word1\n\nword2', cm.getValue()); + helpers.assertCursorAt(1, 0); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: 'word1\nword2' }); +testVim('o_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('3', 'o'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + eq('\ntest\ntest\ntest', cm.getValue()); + helpers.assertCursorAt(3, 3); +}, { value: '' }); +testVim('O', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('O'); + eq('\nword1\nword2', cm.getValue()); + helpers.assertCursorAt(0, 0); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: 'word1\nword2' }); +testVim('J', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('J'); + var expectedValue = 'word1 word2\nword3\n word4'; + eq(expectedValue, cm.getValue()); + helpers.assertCursorAt(0, expectedValue.indexOf('word2') - 1); +}, { value: 'word1 \n word2\nword3\n word4' }); +testVim('J_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('3', 'J'); + var expectedValue = 'word1 word2 word3\n word4'; + eq(expectedValue, cm.getValue()); + helpers.assertCursorAt(0, expectedValue.indexOf('word3') - 1); +}, { value: 'word1 \n word2\nword3\n word4' }); +testVim('p', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', 'abc\ndef', false); + helpers.doKeys('p'); + eq('__abc\ndef_', cm.getValue()); + helpers.assertCursorAt(1, 2); +}, { value: '___' }); +testVim('p_register', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().getRegister('a').setText('abc\ndef', false); + helpers.doKeys('"', 'a', 'p'); + eq('__abc\ndef_', cm.getValue()); + helpers.assertCursorAt(1, 2); +}, { value: '___' }); +testVim('p_wrong_register', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().getRegister('a').setText('abc\ndef', false); + helpers.doKeys('p'); + eq('___', cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: '___' }); +testVim('p_line', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', ' a\nd\n', true); + helpers.doKeys('2', 'p'); + eq('___\n a\nd\n a\nd', cm.getValue()); + helpers.assertCursorAt(1, 2); +}, { value: '___' }); +testVim('p_lastline', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', ' a\nd', true); + helpers.doKeys('2', 'p'); + eq('___\n a\nd\n a\nd', cm.getValue()); + helpers.assertCursorAt(1, 2); +}, { value: '___' }); +testVim(']p_first_indent_is_smaller', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', ' abc\n def\n', true); + helpers.doKeys(']', 'p'); + eq(' ___\n abc\n def', cm.getValue()); +}, { value: ' ___' }); +testVim(']p_first_indent_is_larger', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', ' abc\n def\n', true); + helpers.doKeys(']', 'p'); + eq(' ___\n abc\ndef', cm.getValue()); +}, { value: ' ___' }); +testVim(']p_with_tab_indents', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', '\t\tabc\n\t\t\tdef\n', true); + helpers.doKeys(']', 'p'); + eq('\t___\n\tabc\n\t\tdef', cm.getValue()); +}, { value: '\t___', indentWithTabs: true}); +testVim(']p_with_spaces_translated_to_tabs', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', ' abc\n def\n', true); + helpers.doKeys(']', 'p'); + eq('\t___\n\tabc\n\t\tdef', cm.getValue()); +}, { value: '\t___', indentWithTabs: true, tabSize: 2 }); +testVim('[p', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', ' abc\n def\n', true); + helpers.doKeys('[', 'p'); + eq(' abc\n def\n ___', cm.getValue()); +}, { value: ' ___' }); +testVim('P', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', 'abc\ndef', false); + helpers.doKeys('P'); + eq('_abc\ndef__', cm.getValue()); + helpers.assertCursorAt(1, 3); +}, { value: '___' }); +testVim('P_line', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', ' a\nd\n', true); + helpers.doKeys('2', 'P'); + eq(' a\nd\n a\nd\n___', cm.getValue()); + helpers.assertCursorAt(0, 2); +}, { value: '___' }); +testVim('r', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('3', 'r', 'u'); + eq('wuuuet\nanother', cm.getValue(),'3r failed'); + helpers.assertCursorAt(0, 3); + cm.setCursor(0, 4); + helpers.doKeys('v', 'j', 'h', 'r', ''); + eq('wuuu \n her', cm.getValue(),'Replacing selection by space-characters failed'); +}, { value: 'wordet\nanother' }); +testVim('r_visual_block', function(cm, vim, helpers) { + cm.setCursor(2, 3); + helpers.doKeys('', 'k', 'k', 'h', 'h', 'r', 'l'); + eq('1lll\n5lll\nalllefg', cm.getValue()); + helpers.doKeys('', 'l', 'j', 'r', ''); + eq('1 l\n5 l\nalllefg', cm.getValue()); + cm.setCursor(2, 0); + helpers.doKeys('o'); + helpers.doKeys(''); + cm.replaceRange('\t\t', cm.getCursor()); + helpers.doKeys('', 'h', 'h', 'r', 'r'); + eq('1 l\n5 l\nalllefg\nrrrrrrrr', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); +testVim('R', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('R'); + helpers.assertCursorAt(0, 1); + eq('vim-replace', cm.getOption('keyMap')); + is(cm.state.overwrite, 'Setting overwrite state failed'); +}); +testVim('mark', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(0, 0); + helpers.doKeys('`', 't'); + helpers.assertCursorAt(2, 2); + cm.setCursor(2, 0); + cm.replaceRange(' h', cm.getCursor()); + cm.setCursor(0, 0); + helpers.doKeys('\'', 't'); + helpers.assertCursorAt(2, 3); +}); +testVim('jumpToMark_next', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(0, 0); + helpers.doKeys(']', '`'); + helpers.assertCursorAt(2, 2); + cm.setCursor(0, 0); + helpers.doKeys(']', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_next_repeat', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(0, 0); + helpers.doKeys('2', ']', '`'); + helpers.assertCursorAt(3, 2); + cm.setCursor(0, 0); + helpers.doKeys('2', ']', '\''); + helpers.assertCursorAt(3, 1); +}); +testVim('jumpToMark_next_sameline', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 4); + helpers.doKeys('m', 'b'); + cm.setCursor(2, 2); + helpers.doKeys(']', '`'); + helpers.assertCursorAt(2, 4); +}); +testVim('jumpToMark_next_onlyprev', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('m', 'a'); + cm.setCursor(4, 0); + helpers.doKeys(']', '`'); + helpers.assertCursorAt(4, 0); +}); +testVim('jumpToMark_next_nomark', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys(']', '`'); + helpers.assertCursorAt(2, 2); + helpers.doKeys(']', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_next_linewise_over', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(3, 4); + helpers.doKeys('m', 'b'); + cm.setCursor(2, 1); + helpers.doKeys(']', '\''); + helpers.assertCursorAt(3, 1); +}); +testVim('jumpToMark_next_action', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(0, 0); + helpers.doKeys('d', ']', '`'); + helpers.assertCursorAt(0, 0); + var actual = cm.getLine(0); + var expected = 'pop pop 0 1 2 3 4'; + eq(actual, expected, "Deleting while jumping to the next mark failed."); +}); +testVim('jumpToMark_next_line_action', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(0, 0); + helpers.doKeys('d', ']', '\''); + helpers.assertCursorAt(0, 1); + var actual = cm.getLine(0); + var expected = ' (a) [b] {c} ' + eq(actual, expected, "Deleting while jumping to the next mark line failed."); +}); +testVim('jumpToMark_prev', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(4, 0); + helpers.doKeys('[', '`'); + helpers.assertCursorAt(2, 2); + cm.setCursor(4, 0); + helpers.doKeys('[', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_prev_repeat', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(5, 0); + helpers.doKeys('2', '[', '`'); + helpers.assertCursorAt(3, 2); + cm.setCursor(5, 0); + helpers.doKeys('2', '[', '\''); + helpers.assertCursorAt(3, 1); +}); +testVim('jumpToMark_prev_sameline', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 4); + helpers.doKeys('m', 'b'); + cm.setCursor(2, 2); + helpers.doKeys('[', '`'); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_prev_onlynext', function(cm, vim, helpers) { + cm.setCursor(4, 4); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 0); + helpers.doKeys('[', '`'); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_prev_nomark', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('[', '`'); + helpers.assertCursorAt(2, 2); + helpers.doKeys('[', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_prev_linewise_over', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(3, 4); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 6); + helpers.doKeys('[', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('delmark_single', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 't'); + helpers.doEx('delmarks t'); + cm.setCursor(0, 0); + helpers.doKeys('`', 't'); + helpers.assertCursorAt(0, 0); +}); +testVim('delmark_range', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'd'); + cm.setCursor(5, 2); + helpers.doKeys('m', 'e'); + helpers.doEx('delmarks b-d'); + cm.setCursor(0, 0); + helpers.doKeys('`', 'a'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'b'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'c'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'd'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'e'); + helpers.assertCursorAt(5, 2); +}); +testVim('delmark_multi', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'd'); + cm.setCursor(5, 2); + helpers.doKeys('m', 'e'); + helpers.doEx('delmarks bcd'); + cm.setCursor(0, 0); + helpers.doKeys('`', 'a'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'b'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'c'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'd'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'e'); + helpers.assertCursorAt(5, 2); +}); +testVim('delmark_multi_space', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'd'); + cm.setCursor(5, 2); + helpers.doKeys('m', 'e'); + helpers.doEx('delmarks b c d'); + cm.setCursor(0, 0); + helpers.doKeys('`', 'a'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'b'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'c'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'd'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'e'); + helpers.assertCursorAt(5, 2); +}); +testVim('delmark_all', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'd'); + cm.setCursor(5, 2); + helpers.doKeys('m', 'e'); + helpers.doEx('delmarks a b-de'); + cm.setCursor(0, 0); + helpers.doKeys('`', 'a'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('`', 'b'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('`', 'c'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('`', 'd'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('`', 'e'); + helpers.assertCursorAt(0, 0); +}); +testVim('visual', function(cm, vim, helpers) { + helpers.doKeys('l', 'v', 'l', 'l'); + helpers.assertCursorAt(0, 4); + eqPos(makeCursor(0, 1), cm.getCursor('anchor')); + helpers.doKeys('d'); + eq('15', cm.getValue()); +}, { value: '12345' }); +testVim('visual_yank', function(cm, vim, helpers) { + helpers.doKeys('v', '3', 'l', 'y'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('p'); + eq('aa te test for yank', cm.getValue()); +}, { value: 'a test for yank' }) +testVim('visual_w', function(cm, vim, helpers) { + helpers.doKeys('v', 'w'); + eq(cm.getSelection(), 'motion t'); +}, { value: 'motion test'}); +testVim('visual_initial_selection', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('v'); + cm.getSelection('n'); +}, { value: 'init'}); +testVim('visual_crossover_left', function(cm, vim, helpers) { + cm.setCursor(0, 2); + helpers.doKeys('v', 'l', 'h', 'h'); + cm.getSelection('ro'); +}, { value: 'cross'}); +testVim('visual_crossover_left', function(cm, vim, helpers) { + cm.setCursor(0, 2); + helpers.doKeys('v', 'h', 'l', 'l'); + cm.getSelection('os'); +}, { value: 'cross'}); +testVim('visual_crossover_up', function(cm, vim, helpers) { + cm.setCursor(3, 2); + helpers.doKeys('v', 'j', 'k', 'k'); + eqPos(Pos(2, 2), cm.getCursor('head')); + eqPos(Pos(3, 3), cm.getCursor('anchor')); + helpers.doKeys('k'); + eqPos(Pos(1, 2), cm.getCursor('head')); + eqPos(Pos(3, 3), cm.getCursor('anchor')); +}, { value: 'cross\ncross\ncross\ncross\ncross\n'}); +testVim('visual_crossover_down', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('v', 'k', 'j', 'j'); + eqPos(Pos(2, 3), cm.getCursor('head')); + eqPos(Pos(1, 2), cm.getCursor('anchor')); + helpers.doKeys('j'); + eqPos(Pos(3, 3), cm.getCursor('head')); + eqPos(Pos(1, 2), cm.getCursor('anchor')); +}, { value: 'cross\ncross\ncross\ncross\ncross\n'}); +testVim('visual_exit', function(cm, vim, helpers) { + helpers.doKeys('', 'l', 'j', 'j', ''); + eqPos(cm.getCursor('anchor'), cm.getCursor('head')); + eq(vim.visualMode, false); +}, { value: 'hello\nworld\nfoo' }); +testVim('visual_line', function(cm, vim, helpers) { + helpers.doKeys('l', 'V', 'l', 'j', 'j', 'd'); + eq(' 4\n 5', cm.getValue()); +}, { value: ' 1\n 2\n 3\n 4\n 5' }); +testVim('visual_block_move_to_eol', function(cm, vim, helpers) { + // moveToEol should move all block cursors to end of line + cm.setCursor(0, 0); + helpers.doKeys('', 'G', '$'); + var selections = cm.getSelections().join(); + eq('123,45,6', selections); + // Checks that with cursor at Infinity, finding words backwards still works. + helpers.doKeys('2', 'k', 'b'); + selections = cm.getSelections().join(); + eq('1', selections); +}, {value: '123\n45\n6'}); +testVim('visual_block_different_line_lengths', function(cm, vim, helpers) { + // test the block selection with lines of different length + // i.e. extending the selection + // till the end of the longest line. + helpers.doKeys('', 'l', 'j', 'j', '6', 'l', 'd'); + helpers.doKeys('d', 'd', 'd', 'd'); + eq('', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); +testVim('visual_block_truncate_on_short_line', function(cm, vim, helpers) { + // check for left side selection in case + // of moving up to a shorter line. + cm.replaceRange('', cm.getCursor()); + cm.setCursor(3, 4); + helpers.doKeys('', 'l', 'k', 'k', 'd'); + eq('hello world\n{\ntis\nsa!', cm.getValue()); +}, {value: 'hello world\n{\nthis is\nsparta!'}); +testVim('visual_block_corners', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('', '2', 'l', 'k'); + // circle around the anchor + // and check the selections + var selections = cm.getSelections(); + eq('345891', selections.join('')); + helpers.doKeys('4', 'h'); + selections = cm.getSelections(); + eq('123678', selections.join('')); + helpers.doKeys('j', 'j'); + selections = cm.getSelections(); + eq('678abc', selections.join('')); + helpers.doKeys('4', 'l'); + selections = cm.getSelections(); + eq('891cde', selections.join('')); +}, {value: '12345\n67891\nabcde'}); +testVim('visual_block_mode_switch', function(cm, vim, helpers) { + // switch between visual modes + cm.setCursor(1, 1); + // blockwise to characterwise visual + helpers.doKeys('', 'j', 'l', 'v'); + var selections = cm.getSelections(); + eq('7891\nabc', selections.join('')); + // characterwise to blockwise + helpers.doKeys(''); + selections = cm.getSelections(); + eq('78bc', selections.join('')); + // blockwise to linewise visual + helpers.doKeys('V'); + selections = cm.getSelections(); + eq('67891\nabcde', selections.join('')); +}, {value: '12345\n67891\nabcde'}); +testVim('visual_block_crossing_short_line', function(cm, vim, helpers) { + // visual block with long and short lines + cm.setCursor(0, 3); + helpers.doKeys('', 'j', 'j', 'j'); + var selections = cm.getSelections().join(); + eq('4,,d,b', selections); + helpers.doKeys('3', 'k'); + selections = cm.getSelections().join(); + eq('4', selections); + helpers.doKeys('5', 'j', 'k'); + selections = cm.getSelections().join(""); + eq(10, selections.length); +}, {value: '123456\n78\nabcdefg\nfoobar\n}\n'}); +testVim('visual_block_curPos_on_exit', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '3' , 'l', ''); + eqPos(makeCursor(0, 3), cm.getCursor()); + helpers.doKeys('h', '', '2' , 'j' ,'3' , 'l'); + eq(cm.getSelections().join(), "3456,,cdef"); + helpers.doKeys('4' , 'h'); + eq(cm.getSelections().join(), "23,8,bc"); + helpers.doKeys('2' , 'l'); + eq(cm.getSelections().join(), "34,,cd"); +}, {value: '123456\n78\nabcdefg\nfoobar'}); + +testVim('visual_marks', function(cm, vim, helpers) { + helpers.doKeys('l', 'v', 'l', 'l', 'j', 'j', 'v'); + // Test visual mode marks + cm.setCursor(2, 1); + helpers.doKeys('\'', '<'); + helpers.assertCursorAt(0, 1); + helpers.doKeys('\'', '>'); + helpers.assertCursorAt(2, 0); +}); +testVim('visual_join', function(cm, vim, helpers) { + helpers.doKeys('l', 'V', 'l', 'j', 'j', 'J'); + eq(' 1 2 3\n 4\n 5', cm.getValue()); + is(!vim.visualMode); +}, { value: ' 1\n 2\n 3\n 4\n 5' }); +testVim('visual_join_2', function(cm, vim, helpers) { + helpers.doKeys('G', 'V', 'g', 'g', 'J'); + eq('1 2 3 4 5 6 ', cm.getValue()); + is(!vim.visualMode); +}, { value: '1\n2\n3\n4\n5\n6\n'}); +testVim('visual_blank', function(cm, vim, helpers) { + helpers.doKeys('v', 'k'); + eq(vim.visualMode, true); +}, { value: '\n' }); +testVim('reselect_visual', function(cm, vim, helpers) { + helpers.doKeys('l', 'v', 'l', 'l', 'l', 'y', 'g', 'v'); + helpers.assertCursorAt(0, 5); + eqPos(makeCursor(0, 1), cm.getCursor('anchor')); + helpers.doKeys('v'); + cm.setCursor(1, 0); + helpers.doKeys('v', 'l', 'l', 'p'); + eq('123456\n2345\nbar', cm.getValue()); + cm.setCursor(0, 0); + helpers.doKeys('g', 'v'); + // here the fake cursor is at (1, 3) + helpers.assertCursorAt(1, 4); + eqPos(makeCursor(1, 0), cm.getCursor('anchor')); + helpers.doKeys('v'); + cm.setCursor(2, 0); + helpers.doKeys('v', 'l', 'l', 'g', 'v'); + helpers.assertCursorAt(1, 4); + eqPos(makeCursor(1, 0), cm.getCursor('anchor')); + helpers.doKeys('g', 'v'); + helpers.assertCursorAt(2, 3); + eqPos(makeCursor(2, 0), cm.getCursor('anchor')); + eq('123456\n2345\nbar', cm.getValue()); +}, { value: '123456\nfoo\nbar' }); +testVim('reselect_visual_line', function(cm, vim, helpers) { + helpers.doKeys('l', 'V', 'j', 'j', 'V', 'g', 'v', 'd'); + eq('foo\nand\nbar', cm.getValue()); + cm.setCursor(1, 0); + helpers.doKeys('V', 'y', 'j'); + helpers.doKeys('V', 'p' , 'g', 'v', 'd'); + eq('foo\nand', cm.getValue()); +}, { value: 'hello\nthis\nis\nfoo\nand\nbar' }); +testVim('reselect_visual_block', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('', 'k', 'h', ''); + cm.setCursor(2, 1); + helpers.doKeys('v', 'l', 'g', 'v'); + eqPos(Pos(1, 2), vim.sel.anchor); + eqPos(Pos(0, 1), vim.sel.head); + // Ensure selection is done with visual block mode rather than one + // continuous range. + eq(cm.getSelections().join(''), '23oo') + helpers.doKeys('g', 'v'); + eqPos(Pos(2, 1), vim.sel.anchor); + eqPos(Pos(2, 2), vim.sel.head); + helpers.doKeys(''); + // Ensure selection of deleted range + cm.setCursor(1, 1); + helpers.doKeys('v', '', 'j', 'd', 'g', 'v'); + eq(cm.getSelections().join(''), 'or'); +}, { value: '123456\nfoo\nbar' }); +testVim('s_normal', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('s'); + helpers.doKeys(''); + eq('ac', cm.getValue()); +}, { value: 'abc'}); +testVim('s_visual', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('v', 's'); + helpers.doKeys(''); + helpers.assertCursorAt(0, 0); + eq('ac', cm.getValue()); +}, { value: 'abc'}); +testVim('o_visual', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys('v','l','l','l','o'); + helpers.assertCursorAt(0,0); + helpers.doKeys('v','v','j','j','j','o'); + helpers.assertCursorAt(0,0); + helpers.doKeys('O'); + helpers.doKeys('l','l') + helpers.assertCursorAt(3, 3); + helpers.doKeys('d'); + eq('p',cm.getValue()); +}, { value: 'abcd\nefgh\nijkl\nmnop'}); +testVim('o_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('','3','j','l','l', 'o'); + eqPos(Pos(3, 3), vim.sel.anchor); + eqPos(Pos(0, 1), vim.sel.head); + helpers.doKeys('O'); + eqPos(Pos(3, 1), vim.sel.anchor); + eqPos(Pos(0, 3), vim.sel.head); + helpers.doKeys('o'); + eqPos(Pos(0, 3), vim.sel.anchor); + eqPos(Pos(3, 1), vim.sel.head); +}, { value: 'abcd\nefgh\nijkl\nmnop'}); +testVim('changeCase_visual', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('v', 'l', 'l'); + helpers.doKeys('U'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('v', 'l', 'l'); + helpers.doKeys('u'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('l', 'l', 'l', '.'); + helpers.assertCursorAt(0, 3); + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', 'v', 'j', 'U', 'q'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('j', '@', 'a'); + helpers.assertCursorAt(1, 0); + cm.setCursor(3, 0); + helpers.doKeys('V', 'U', 'j', '.'); + eq('ABCDEF\nGHIJKL\nMnopq\nSHORT LINE\nLONG LINE OF TEXT', cm.getValue()); +}, { value: 'abcdef\nghijkl\nmnopq\nshort line\nlong line of text'}); +testVim('changeCase_visual_block', function(cm, vim, helpers) { + cm.setCursor(2, 1); + helpers.doKeys('', 'k', 'k', 'h', 'U'); + eq('ABcdef\nGHijkl\nMNopq\nfoo', cm.getValue()); + cm.setCursor(0, 2); + helpers.doKeys('.'); + eq('ABCDef\nGHIJkl\nMNOPq\nfoo', cm.getValue()); + // check when last line is shorter. + cm.setCursor(2, 2); + helpers.doKeys('.'); + eq('ABCDef\nGHIJkl\nMNOPq\nfoO', cm.getValue()); +}, { value: 'abcdef\nghijkl\nmnopq\nfoo'}); +testVim('visual_paste', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('v', 'l', 'l', 'y'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('3', 'l', 'j', 'v', 'l', 'p'); + helpers.assertCursorAt(1, 5); + eq('this is a\nunithitest for visual paste', cm.getValue()); + cm.setCursor(0, 0); + // in case of pasting whole line + helpers.doKeys('y', 'y'); + cm.setCursor(1, 6); + helpers.doKeys('v', 'l', 'l', 'l', 'p'); + helpers.assertCursorAt(2, 0); + eq('this is a\nunithi\nthis is a\n for visual paste', cm.getValue()); +}, { value: 'this is a\nunit test for visual paste'}); + +// This checks the contents of the register used to paste the text +testVim('v_paste_from_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'w'); + cm.setCursor(1, 0); + helpers.doKeys('v', 'p'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+register/.test(text)); + }); +}, { value: 'register contents\nare not erased'}); +testVim('S_normal', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('j', 'S'); + helpers.doKeys(''); + helpers.assertCursorAt(1, 1); + eq('aa{\n \ncc', cm.getValue()); + helpers.doKeys('j', 'S'); + eq('aa{\n \n ', cm.getValue()); + helpers.assertCursorAt(2, 2); + helpers.doKeys(''); + helpers.doKeys('d', 'd', 'd', 'd'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('S'); + is(vim.insertMode); + eq('', cm.getValue()); +}, { value: 'aa{\nbb\ncc'}); +testVim('blockwise_paste', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '3', 'j', 'l', 'y'); + cm.setCursor(0, 2); + // paste one char after the current cursor position + helpers.doKeys('p'); + eq('helhelo\nworwold\nfoofo\nbarba', cm.getValue()); + cm.setCursor(0, 0); + helpers.doKeys('v', '4', 'l', 'y'); + cm.setCursor(0, 0); + helpers.doKeys('', '3', 'j', 'p'); + eq('helheelhelo\norwold\noofo\narba', cm.getValue()); +}, { value: 'hello\nworld\nfoo\nbar'}); +testVim('blockwise_paste_long/short_line', function(cm, vim, helpers) { + // extend short lines in case of different line lengths. + cm.setCursor(0, 0); + helpers.doKeys('', 'j', 'j', 'y'); + cm.setCursor(0, 3); + helpers.doKeys('p'); + eq('hellho\nfoo f\nbar b', cm.getValue()); +}, { value: 'hello\nfoo\nbar'}); +testVim('blockwise_paste_cut_paste', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '2', 'j', 'x'); + cm.setCursor(0, 0); + helpers.doKeys('P'); + eq('cut\nand\npaste\nme', cm.getValue()); +}, { value: 'cut\nand\npaste\nme'}); +testVim('blockwise_paste_from_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '2', 'j', '"', 'a', 'y'); + cm.setCursor(0, 3); + helpers.doKeys('"', 'a', 'p'); + eq('foobfar\nhellho\nworlwd', cm.getValue()); +}, { value: 'foobar\nhello\nworld'}); +testVim('blockwise_paste_last_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '2', 'j', 'l', 'y'); + cm.setCursor(3, 0); + helpers.doKeys('p'); + eq('cut\nand\npaste\nmcue\n an\n pa', cm.getValue()); +}, { value: 'cut\nand\npaste\nme'}); + +testVim('S_visual', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('v', 'j', 'S'); + helpers.doKeys(''); + helpers.assertCursorAt(0, 0); + eq('\ncc', cm.getValue()); +}, { value: 'aa\nbb\ncc'}); + +testVim('d_/', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('match'); + helpers.doKeys('2', 'd', '/'); + helpers.assertCursorAt(0, 0); + eq('match \n next', cm.getValue()); + cm.openDialog = helpers.fakeOpenDialog('2'); + helpers.doKeys('d', ':'); + // TODO eq(' next', cm.getValue()); +}, { value: 'text match match \n next' }); +testVim('/ and n/N', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('match'); + helpers.doKeys('/'); + helpers.assertCursorAt(0, 11); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 6); + helpers.doKeys('N'); + helpers.assertCursorAt(0, 11); + + cm.setCursor(0, 0); + helpers.doKeys('2', '/'); + helpers.assertCursorAt(1, 6); +}, { value: 'match nope match \n nope Match' }); +testVim('/_case', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('Match'); + helpers.doKeys('/'); + helpers.assertCursorAt(1, 6); +}, { value: 'match nope match \n nope Match' }); +testVim('/_2_pcre', function(cm, vim, helpers) { + CodeMirror.Vim.setOption('pcre', true); + cm.openDialog = helpers.fakeOpenDialog('(word){2}'); + helpers.doKeys('/'); + helpers.assertCursorAt(1, 9); + helpers.doKeys('n'); + helpers.assertCursorAt(2, 1); +}, { value: 'word\n another wordword\n wordwordword\n' }); +testVim('/_2_nopcre', function(cm, vim, helpers) { + CodeMirror.Vim.setOption('pcre', false); + cm.openDialog = helpers.fakeOpenDialog('\\(word\\)\\{2}'); + helpers.doKeys('/'); + helpers.assertCursorAt(1, 9); + helpers.doKeys('n'); + helpers.assertCursorAt(2, 1); +}, { value: 'word\n another wordword\n wordwordword\n' }); +testVim('/_nongreedy', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('aa'); + helpers.doKeys('/'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa \n a aa'}); +testVim('?_nongreedy', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('aa'); + helpers.doKeys('?'); + helpers.assertCursorAt(1, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa \n a aa'}); +testVim('/_greedy', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('a+'); + helpers.doKeys('/'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 1); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa \n a aa'}); +testVim('?_greedy', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('a+'); + helpers.doKeys('?'); + helpers.assertCursorAt(1, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 1); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa \n a aa'}); +testVim('/_greedy_0_or_more', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('a*'); + helpers.doKeys('/'); + helpers.assertCursorAt(0, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 5); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 0); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 1); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa\n aa'}); +testVim('?_greedy_0_or_more', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('a*'); + helpers.doKeys('?'); + helpers.assertCursorAt(1, 1); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 0); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 5); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa\n aa'}); +testVim('? and n/N', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('match'); + helpers.doKeys('?'); + helpers.assertCursorAt(1, 6); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 11); + helpers.doKeys('N'); + helpers.assertCursorAt(1, 6); + + cm.setCursor(0, 0); + helpers.doKeys('2', '?'); + helpers.assertCursorAt(0, 11); +}, { value: 'match nope match \n nope Match' }); +testVim('*', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('*'); + helpers.assertCursorAt(0, 22); + + cm.setCursor(0, 9); + helpers.doKeys('2', '*'); + helpers.assertCursorAt(1, 8); +}, { value: 'nomatch match nomatch match \nnomatch Match' }); +testVim('*_no_word', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('*'); + helpers.assertCursorAt(0, 0); +}, { value: ' \n match \n' }); +testVim('*_symbol', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('*'); + helpers.assertCursorAt(1, 0); +}, { value: ' /}\n/} match \n' }); +testVim('#', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('#'); + helpers.assertCursorAt(1, 8); + + cm.setCursor(0, 9); + helpers.doKeys('2', '#'); + helpers.assertCursorAt(0, 22); +}, { value: 'nomatch match nomatch match \nnomatch Match' }); +testVim('*_seek', function(cm, vim, helpers) { + // Should skip over space and symbols. + cm.setCursor(0, 3); + helpers.doKeys('*'); + helpers.assertCursorAt(0, 22); +}, { value: ' := match nomatch match \nnomatch Match' }); +testVim('#', function(cm, vim, helpers) { + // Should skip over space and symbols. + cm.setCursor(0, 3); + helpers.doKeys('#'); + helpers.assertCursorAt(1, 8); +}, { value: ' := match nomatch match \nnomatch Match' }); +testVim('g*', function(cm, vim, helpers) { + cm.setCursor(0, 8); + helpers.doKeys('g', '*'); + helpers.assertCursorAt(0, 18); + cm.setCursor(0, 8); + helpers.doKeys('3', 'g', '*'); + helpers.assertCursorAt(1, 8); +}, { value: 'matches match alsoMatch\nmatchme matching' }); +testVim('g#', function(cm, vim, helpers) { + cm.setCursor(0, 8); + helpers.doKeys('g', '#'); + helpers.assertCursorAt(0, 0); + cm.setCursor(0, 8); + helpers.doKeys('3', 'g', '#'); + helpers.assertCursorAt(1, 0); +}, { value: 'matches match alsoMatch\nmatchme matching' }); +testVim('macro_insert', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', '0', 'i'); + cm.replaceRange('foo', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q', '@', 'a'); + eq('foofoo', cm.getValue()); +}, { value: ''}); +testVim('macro_insert_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', '$', 'a'); + cm.replaceRange('larry.', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('a'); + cm.replaceRange('curly.', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('a'); + cm.replaceRange('moe.', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('@', 'a'); + // At this point, the most recent edit should be the 2nd insert change + // inside the macro, i.e. "curly.". + helpers.doKeys('.'); + eq('larry.curly.moe.larry.curly.curly.', cm.getValue()); +}, { value: ''}); +testVim('macro_space', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', ''); + helpers.assertCursorAt(0, 2); + helpers.doKeys('q', 'a', '', '', 'q'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('@', 'a'); + helpers.assertCursorAt(0, 6); + helpers.doKeys('@', 'a'); + helpers.assertCursorAt(0, 8); +}, { value: 'one line of text.'}); +testVim('macro_t_search', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', 't', 'e', 'q'); + helpers.assertCursorAt(0, 1); + helpers.doKeys('l', '@', 'a'); + helpers.assertCursorAt(0, 6); + helpers.doKeys('l', ';'); + helpers.assertCursorAt(0, 12); +}, { value: 'one line of text.'}); +testVim('macro_f_search', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'b', 'f', 'e', 'q'); + helpers.assertCursorAt(0, 2); + helpers.doKeys('@', 'b'); + helpers.assertCursorAt(0, 7); + helpers.doKeys(';'); + helpers.assertCursorAt(0, 13); +}, { value: 'one line of text.'}); +testVim('macro_slash_search', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'c'); + cm.openDialog = helpers.fakeOpenDialog('e'); + helpers.doKeys('/', 'q'); + helpers.assertCursorAt(0, 2); + helpers.doKeys('@', 'c'); + helpers.assertCursorAt(0, 7); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 13); +}, { value: 'one line of text.'}); +testVim('macro_multislash_search', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'd'); + cm.openDialog = helpers.fakeOpenDialog('e'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('t'); + helpers.doKeys('/', 'q'); + helpers.assertCursorAt(0, 12); + helpers.doKeys('@', 'd'); + helpers.assertCursorAt(0, 15); +}, { value: 'one line of text to rule them all.'}); +testVim('macro_last_ex_command_register', function (cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doEx('s/a/b'); + helpers.doKeys('2', '@', ':'); + eq('bbbaa', cm.getValue()); + helpers.assertCursorAt(0, 2); +}, { value: 'aaaaa'}); +testVim('macro_parens', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'z', 'i'); + cm.replaceRange('(', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('e', 'a'); + cm.replaceRange(')', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('w', '@', 'z'); + helpers.doKeys('w', '@', 'z'); + eq('(see) (spot) (run)', cm.getValue()); +}, { value: 'see spot run'}); +testVim('macro_overwrite', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'z', '0', 'i'); + cm.replaceRange('I ', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('e'); + // Now replace the macro with something else. + helpers.doKeys('q', 'z', 'a'); + cm.replaceRange('.', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('e', '@', 'z'); + helpers.doKeys('e', '@', 'z'); + eq('I see. spot. run.', cm.getValue()); +}, { value: 'see spot run'}); +testVim('macro_search_f', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', 'f', ' '); + helpers.assertCursorAt(0,3); + helpers.doKeys('q', '0'); + helpers.assertCursorAt(0,0); + helpers.doKeys('@', 'a'); + helpers.assertCursorAt(0,3); +}, { value: 'The quick brown fox jumped over the lazy dog.'}); +testVim('macro_search_2f', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', '2', 'f', ' '); + helpers.assertCursorAt(0,9); + helpers.doKeys('q', '0'); + helpers.assertCursorAt(0,0); + helpers.doKeys('@', 'a'); + helpers.assertCursorAt(0,9); +}, { value: 'The quick brown fox jumped over the lazy dog.'}); +testVim('yank_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'y'); + helpers.doKeys('j', '"', 'b', 'y', 'y'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foo/.test(text)); + is(/b\s+bar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', 'l', 'j', '"', 'a', 'y'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+oo\nar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_append_line_to_line_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'y'); + helpers.doKeys('j', '"', 'A', 'y', 'y'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foo\nbar/.test(text)); + is(/"\s+foo\nbar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_append_word_to_word_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'w'); + helpers.doKeys('j', '"', 'A', 'y', 'w'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foobar/.test(text)); + is(/"\s+foobar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_append_line_to_word_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'w'); + helpers.doKeys('j', '"', 'A', 'y', 'y'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foo\nbar/.test(text)); + is(/"\s+foo\nbar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_append_word_to_line_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'y'); + helpers.doKeys('j', '"', 'A', 'y', 'w'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foo\nbar/.test(text)); + is(/"\s+foo\nbar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('macro_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', 'i'); + cm.replaceRange('gangnam', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('q', 'b', 'o'); + cm.replaceRange('style', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+i/.test(text)); + is(/b\s+o/.test(text)); + }); + helpers.doKeys(':'); +}, { value: ''}); +testVim('._register', function(cm,vim,helpers) { + cm.setCursor(0,0); + helpers.doKeys('i'); + cm.replaceRange('foo',cm.getCursor()); + helpers.doKeys(''); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/\.\s+foo/.test(text)); + }); + helpers.doKeys(':'); +}, {value: ''}); +testVim(':_register', function(cm,vim,helpers) { + helpers.doEx('bar'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/:\s+bar/.test(text)); + }); + helpers.doKeys(':'); +}, {value: ''}); +testVim('search_register_escape', function(cm, vim, helpers) { + // Check that the register is restored if the user escapes rather than confirms. + cm.openDialog = helpers.fakeOpenDialog('waldo'); + helpers.doKeys('/'); + var onKeyDown; + var onKeyUp; + var KEYCODES = { + f: 70, + o: 79, + Esc: 27 + }; + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + onKeyUp = options.onKeyUp; + }; + var close = function() {}; + helpers.doKeys('/'); + // Fake some keyboard events coming in. + onKeyDown({keyCode: KEYCODES.f}, '', close); + onKeyUp({keyCode: KEYCODES.f}, '', close); + onKeyDown({keyCode: KEYCODES.o}, 'f', close); + onKeyUp({keyCode: KEYCODES.o}, 'f', close); + onKeyDown({keyCode: KEYCODES.o}, 'fo', close); + onKeyUp({keyCode: KEYCODES.o}, 'fo', close); + onKeyDown({keyCode: KEYCODES.Esc}, 'foo', close); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/waldo/.test(text)); + is(!/foo/.test(text)); + }); + helpers.doKeys(':'); +}, {value: ''}); +testVim('search_register', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('foo'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/\/\s+foo/.test(text)); + }); + helpers.doKeys(':'); +}, {value: ''}); +testVim('search_history', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('this'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('checks'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('search'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('history'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('checks'); + helpers.doKeys('/'); + var onKeyDown; + var onKeyUp; + var query = ''; + var keyCodes = { + Up: 38, + Down: 40 + }; + cm.openDialog = function(template, callback, options) { + onKeyUp = options.onKeyUp; + onKeyDown = options.onKeyDown; + }; + var close = function(newVal) { + if (typeof newVal == 'string') query = newVal; + } + helpers.doKeys('/'); + onKeyDown({keyCode: keyCodes.Up}, query, close); + onKeyUp({keyCode: keyCodes.Up}, query, close); + eq(query, 'checks'); + onKeyDown({keyCode: keyCodes.Up}, query, close); + onKeyUp({keyCode: keyCodes.Up}, query, close); + eq(query, 'history'); + onKeyDown({keyCode: keyCodes.Up}, query, close); + onKeyUp({keyCode: keyCodes.Up}, query, close); + eq(query, 'search'); + onKeyDown({keyCode: keyCodes.Up}, query, close); + onKeyUp({keyCode: keyCodes.Up}, query, close); + eq(query, 'this'); + onKeyDown({keyCode: keyCodes.Down}, query, close); + onKeyUp({keyCode: keyCodes.Down}, query, close); + eq(query, 'search'); +}, {value: ''}); +testVim('exCommand_history', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('registers'); + helpers.doKeys(':'); + cm.openDialog = helpers.fakeOpenDialog('sort'); + helpers.doKeys(':'); + cm.openDialog = helpers.fakeOpenDialog('map'); + helpers.doKeys(':'); + cm.openDialog = helpers.fakeOpenDialog('invalid'); + helpers.doKeys(':'); + var onKeyDown; + var onKeyUp; + var input = ''; + var keyCodes = { + Up: 38, + Down: 40, + s: 115 + }; + cm.openDialog = function(template, callback, options) { + onKeyUp = options.onKeyUp; + onKeyDown = options.onKeyDown; + }; + var close = function(newVal) { + if (typeof newVal == 'string') input = newVal; + } + helpers.doKeys(':'); + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'invalid'); + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'map'); + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'sort'); + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'registers'); + onKeyDown({keyCode: keyCodes.s}, '', close); + input = 's'; + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'sort'); +}, {value: ''}); +testVim('search_clear', function(cm, vim, helpers) { + var onKeyDown; + var input = ''; + var keyCodes = { + Ctrl: 17, + u: 85 + }; + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + }; + var close = function(newVal) { + if (typeof newVal == 'string') input = newVal; + } + helpers.doKeys('/'); + input = 'foo'; + onKeyDown({keyCode: keyCodes.Ctrl}, input, close); + onKeyDown({keyCode: keyCodes.u, ctrlKey: true}, input, close); + eq(input, ''); +}); +testVim('exCommand_clear', function(cm, vim, helpers) { + var onKeyDown; + var input = ''; + var keyCodes = { + Ctrl: 17, + u: 85 + }; + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + }; + var close = function(newVal) { + if (typeof newVal == 'string') input = newVal; + } + helpers.doKeys(':'); + input = 'foo'; + onKeyDown({keyCode: keyCodes.Ctrl}, input, close); + onKeyDown({keyCode: keyCodes.u, ctrlKey: true}, input, close); + eq(input, ''); +}); +testVim('.', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('2', 'd', 'w'); + helpers.doKeys('.'); + eq('5 6', cm.getValue()); +}, { value: '1 2 3 4 5 6'}); +testVim('._repeat', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('2', 'd', 'w'); + helpers.doKeys('3', '.'); + eq('6', cm.getValue()); +}, { value: '1 2 3 4 5 6'}); +testVim('._insert', function(cm, vim, helpers) { + helpers.doKeys('i'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('testestt', cm.getValue()); + helpers.assertCursorAt(0, 6); + helpers.doKeys('O'); + cm.replaceRange('xyz', cm.getCursor()); + helpers.doInsertModeKeys('Backspace'); + helpers.doInsertModeKeys('Down'); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('xy\nxy\ntestestt', cm.getValue()); + helpers.assertCursorAt(1, 1); +}, { value: ''}); +testVim('._insert_repeat', function(cm, vim, helpers) { + helpers.doKeys('i'); + cm.replaceRange('test', cm.getCursor()); + cm.setCursor(0, 4); + helpers.doKeys(''); + helpers.doKeys('2', '.'); + eq('testesttestt', cm.getValue()); + helpers.assertCursorAt(0, 10); +}, { value: ''}); +testVim('._repeat_insert', function(cm, vim, helpers) { + helpers.doKeys('3', 'i'); + cm.replaceRange('te', cm.getCursor()); + cm.setCursor(0, 2); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('tetettetetee', cm.getValue()); + helpers.assertCursorAt(0, 10); +}, { value: ''}); +testVim('._insert_o', function(cm, vim, helpers) { + helpers.doKeys('o'); + cm.replaceRange('z', cm.getCursor()); + cm.setCursor(1, 1); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('\nz\nz', cm.getValue()); + helpers.assertCursorAt(2, 0); +}, { value: ''}); +testVim('._insert_o_repeat', function(cm, vim, helpers) { + helpers.doKeys('o'); + cm.replaceRange('z', cm.getCursor()); + helpers.doKeys(''); + cm.setCursor(1, 0); + helpers.doKeys('2', '.'); + eq('\nz\nz\nz', cm.getValue()); + helpers.assertCursorAt(3, 0); +}, { value: ''}); +testVim('._insert_o_indent', function(cm, vim, helpers) { + helpers.doKeys('o'); + cm.replaceRange('z', cm.getCursor()); + helpers.doKeys(''); + cm.setCursor(1, 2); + helpers.doKeys('.'); + eq('{\n z\n z', cm.getValue()); + helpers.assertCursorAt(2, 2); +}, { value: '{'}); +testVim('._insert_cw', function(cm, vim, helpers) { + helpers.doKeys('c', 'w'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + cm.setCursor(0, 3); + helpers.doKeys('2', 'l'); + helpers.doKeys('.'); + eq('test test word3', cm.getValue()); + helpers.assertCursorAt(0, 8); +}, { value: 'word1 word2 word3' }); +testVim('._insert_cw_repeat', function(cm, vim, helpers) { + // For some reason, repeat cw in desktop VIM will does not repeat insert mode + // changes. Will conform to that behavior. + helpers.doKeys('c', 'w'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + cm.setCursor(0, 4); + helpers.doKeys('l'); + helpers.doKeys('2', '.'); + eq('test test', cm.getValue()); + helpers.assertCursorAt(0, 8); +}, { value: 'word1 word2 word3' }); +testVim('._delete', function(cm, vim, helpers) { + cm.setCursor(0, 5); + helpers.doKeys('i'); + helpers.doInsertModeKeys('Backspace'); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('zace', cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: 'zabcde'}); +testVim('._delete_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 6); + helpers.doKeys('i'); + helpers.doInsertModeKeys('Backspace'); + helpers.doKeys(''); + helpers.doKeys('2', '.'); + eq('zzce', cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: 'zzabcde'}); +testVim('._visual_>', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('V', 'j', '>'); + cm.setCursor(2, 0) + helpers.doKeys('.'); + eq(' 1\n 2\n 3\n 4', cm.getValue()); + helpers.assertCursorAt(2, 2); +}, { value: '1\n2\n3\n4'}); +testVim('f;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('f', 'x'); + helpers.doKeys(';'); + helpers.doKeys('2', ';'); + eq(9, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('F;', function(cm, vim, helpers) { + cm.setCursor(0, 8); + helpers.doKeys('F', 'x'); + helpers.doKeys(';'); + helpers.doKeys('2', ';'); + eq(2, cm.getCursor().ch); +}, { value: '01x3xx6x8x'}); +testVim('t;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('t', 'x'); + helpers.doKeys(';'); + helpers.doKeys('2', ';'); + eq(8, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('T;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('T', 'x'); + helpers.doKeys(';'); + helpers.doKeys('2', ';'); + eq(2, cm.getCursor().ch); +}, { value: '0xx3xx678x'}); +testVim('f,', function(cm, vim, helpers) { + cm.setCursor(0, 6); + helpers.doKeys('f', 'x'); + helpers.doKeys(','); + helpers.doKeys('2', ','); + eq(2, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('F,', function(cm, vim, helpers) { + cm.setCursor(0, 3); + helpers.doKeys('F', 'x'); + helpers.doKeys(','); + helpers.doKeys('2', ','); + eq(9, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('t,', function(cm, vim, helpers) { + cm.setCursor(0, 6); + helpers.doKeys('t', 'x'); + helpers.doKeys(','); + helpers.doKeys('2', ','); + eq(3, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('T,', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('T', 'x'); + helpers.doKeys(','); + helpers.doKeys('2', ','); + eq(8, cm.getCursor().ch); +}, { value: '01x3xx67xx'}); +testVim('fd,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('f', '4'); + cm.setCursor(0, 0); + helpers.doKeys('d', ';'); + eq('56789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('d', ','); + eq('01239', cm.getValue()); +}, { value: '0123456789'}); +testVim('Fd,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('F', '4'); + cm.setCursor(0, 9); + helpers.doKeys('d', ';'); + eq('01239', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('d', ','); + eq('56789', cm.getValue()); +}, { value: '0123456789'}); +testVim('td,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('t', '4'); + cm.setCursor(0, 0); + helpers.doKeys('d', ';'); + eq('456789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('d', ','); + eq('012349', cm.getValue()); +}, { value: '0123456789'}); +testVim('Td,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('T', '4'); + cm.setCursor(0, 9); + helpers.doKeys('d', ';'); + eq('012349', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('d', ','); + eq('456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('fc,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('f', '4'); + cm.setCursor(0, 0); + helpers.doKeys('c', ';', ''); + eq('56789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('c', ','); + eq('01239', cm.getValue()); +}, { value: '0123456789'}); +testVim('Fc,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('F', '4'); + cm.setCursor(0, 9); + helpers.doKeys('c', ';', ''); + eq('01239', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('c', ','); + eq('56789', cm.getValue()); +}, { value: '0123456789'}); +testVim('tc,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('t', '4'); + cm.setCursor(0, 0); + helpers.doKeys('c', ';', ''); + eq('456789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('c', ','); + eq('012349', cm.getValue()); +}, { value: '0123456789'}); +testVim('Tc,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('T', '4'); + cm.setCursor(0, 9); + helpers.doKeys('c', ';', ''); + eq('012349', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('c', ','); + eq('456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('fy,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('f', '4'); + cm.setCursor(0, 0); + helpers.doKeys('y', ';', 'P'); + eq('012340123456789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('y', ',', 'P'); + eq('012345678456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('Fy,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('F', '4'); + cm.setCursor(0, 9); + helpers.doKeys('y', ';', 'p'); + eq('012345678945678', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('y', ',', 'P'); + eq('012340123456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('ty,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('t', '4'); + cm.setCursor(0, 0); + helpers.doKeys('y', ';', 'P'); + eq('01230123456789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('y', ',', 'p'); + eq('01234567895678', cm.getValue()); +}, { value: '0123456789'}); +testVim('Ty,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('T', '4'); + cm.setCursor(0, 9); + helpers.doKeys('y', ';', 'p'); + eq('01234567895678', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('y', ',', 'P'); + eq('01230123456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('HML', function(cm, vim, helpers) { + var lines = 35; + var textHeight = cm.defaultTextHeight(); + cm.setSize(600, lines*textHeight); + cm.setCursor(120, 0); + cm.refresh(); //ace_patch + helpers.doKeys('H'); + helpers.assertCursorAt(86, 2); + helpers.doKeys('L'); + helpers.assertCursorAt(120, 4); + helpers.doKeys('M'); + helpers.assertCursorAt(103,4); +}, { value: (function(){ + var lines = new Array(100); + var upper = ' xx\n'; + var lower = ' xx\n'; + upper = lines.join(upper); + lower = lines.join(lower); + return upper + lower; +})()}); + +var zVals = []; +forEach(['zb','zz','zt','z-','z.','z'], function(e, idx){ + var lineNum = 250; + var lines = 35; + testVim(e, function(cm, vim, helpers) { + var k1 = e[0]; + var k2 = e.substring(1); + var textHeight = cm.defaultTextHeight(); + cm.setSize(600, lines*textHeight); + cm.setCursor(lineNum, 0); + helpers.doKeys(k1, k2); + zVals[idx] = cm.getScrollInfo().top; + }, { value: (function(){ + return new Array(500).join('\n'); + })()}); +}); +testVim('zb_to_bottom', function(cm, vim, helpers){ + var lineNum = 250; + cm.setSize(600, 35*cm.defaultTextHeight()); + cm.setCursor(lineNum, 0); + helpers.doKeys('z', 'b'); + var scrollInfo = cm.getScrollInfo(); + eq(scrollInfo.top + scrollInfo.clientHeight, cm.charCoords(Pos(lineNum, 0), 'local').bottom); +}, { value: (function(){ + return new Array(500).join('\n'); +})()}); +testVim('zt_to_top', function(cm, vim, helpers){ + var lineNum = 250; + cm.setSize(600, 35*cm.defaultTextHeight()); + cm.setCursor(lineNum, 0); + helpers.doKeys('z', 't'); + eq(cm.getScrollInfo().top, cm.charCoords(Pos(lineNum, 0), 'local').top); +}, { value: (function(){ + return new Array(500).join('\n'); +})()}); +testVim('zb', function(cm, vim, helpers){ + eq(zVals[2], zVals[5]); +}); + +var moveTillCharacterSandbox = + 'The quick brown fox \n'; +testVim('moveTillCharacter', function(cm, vim, helpers){ + cm.setCursor(0, 0); + // Search for the 'q'. + cm.openDialog = helpers.fakeOpenDialog('q'); + helpers.doKeys('/'); + eq(4, cm.getCursor().ch); + // Jump to just before the first o in the list. + helpers.doKeys('t'); + helpers.doKeys('o'); + eq('The quick brown fox \n', cm.getValue()); + // Delete that one character. + helpers.doKeys('d'); + helpers.doKeys('t'); + helpers.doKeys('o'); + eq('The quick bown fox \n', cm.getValue()); + // Delete everything until the next 'o'. + helpers.doKeys('.'); + eq('The quick box \n', cm.getValue()); + // An unmatched character should have no effect. + helpers.doKeys('d'); + helpers.doKeys('t'); + helpers.doKeys('q'); + eq('The quick box \n', cm.getValue()); + // Matches should only be possible on single lines. + helpers.doKeys('d'); + helpers.doKeys('t'); + helpers.doKeys('z'); + eq('The quick box \n', cm.getValue()); + // After all that, the search for 'q' should still be active, so the 'N' command + // can run it again in reverse. Use that to delete everything back to the 'q'. + helpers.doKeys('d'); + helpers.doKeys('N'); + eq('The ox \n', cm.getValue()); + eq(4, cm.getCursor().ch); +}, { value: moveTillCharacterSandbox}); +testVim('searchForPipe', function(cm, vim, helpers){ + CodeMirror.Vim.setOption('pcre', false); + cm.setCursor(0, 0); + // Search for the '|'. + cm.openDialog = helpers.fakeOpenDialog('|'); + helpers.doKeys('/'); + eq(4, cm.getCursor().ch); +}, { value: 'this|that'}); + + +var scrollMotionSandbox = + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'; +testVim('scrollMotion', function(cm, vim, helpers){ + var prevCursor, prevScrollInfo; + cm.setCursor(0, 0); + // ctrl-y at the top of the file should have no effect. + helpers.doKeys(''); + eq(0, cm.getCursor().line); + prevScrollInfo = cm.getScrollInfo(); + helpers.doKeys(''); + eq(1, cm.getCursor().line); + is(prevScrollInfo.top < cm.getScrollInfo().top); + // Jump to the end of the sandbox. + cm.setCursor(1000, 0); + cm.refresh(); //ace_patch + prevCursor = cm.getCursor(); + // ctrl-e at the bottom of the file should have no effect. + helpers.doKeys(''); + eq(prevCursor.line, cm.getCursor().line); + cm.refresh(); //ace_patch + prevScrollInfo = cm.getScrollInfo(); + helpers.doKeys(''); + eq(prevCursor.line - 1, cm.getCursor().line, "Y"); + is(prevScrollInfo.top > cm.getScrollInfo().top); +}, { value: scrollMotionSandbox}); + +var squareBracketMotionSandbox = ''+ + '({\n'+//0 + ' ({\n'+//11 + ' /*comment {\n'+//2 + ' */(\n'+//3 + '#else \n'+//4 + ' /* )\n'+//5 + '#if }\n'+//6 + ' )}*/\n'+//7 + ')}\n'+//8 + '{}\n'+//9 + '#else {{\n'+//10 + '{}\n'+//11 + '}\n'+//12 + '{\n'+//13 + '#endif\n'+//14 + '}\n'+//15 + '}\n'+//16 + '#else';//17 +testVim('[[, ]]', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys(']', ']'); + helpers.assertCursorAt(9,0); + helpers.doKeys('2', ']', ']'); + helpers.assertCursorAt(13,0); + helpers.doKeys(']', ']'); + helpers.assertCursorAt(17,0); + helpers.doKeys('[', '['); + helpers.assertCursorAt(13,0); + helpers.doKeys('2', '[', '['); + helpers.assertCursorAt(9,0); + helpers.doKeys('[', '['); + helpers.assertCursorAt(0,0); +}, { value: squareBracketMotionSandbox}); +testVim('[], ][', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys(']', '['); + helpers.assertCursorAt(12,0); + helpers.doKeys('2', ']', '['); + helpers.assertCursorAt(16,0); + helpers.doKeys(']', '['); + helpers.assertCursorAt(17,0); + helpers.doKeys('[', ']'); + helpers.assertCursorAt(16,0); + helpers.doKeys('2', '[', ']'); + helpers.assertCursorAt(12,0); + helpers.doKeys('[', ']'); + helpers.assertCursorAt(0,0); +}, { value: squareBracketMotionSandbox}); +testVim('[{, ]}', function(cm, vim, helpers) { + cm.setCursor(4, 10); + helpers.doKeys('[', '{'); + helpers.assertCursorAt(2,12); + helpers.doKeys('2', '[', '{'); + helpers.assertCursorAt(0,1); + cm.setCursor(4, 10); + helpers.doKeys(']', '}'); + helpers.assertCursorAt(6,11); + helpers.doKeys('2', ']', '}'); + helpers.assertCursorAt(8,1); + cm.setCursor(0,1); + helpers.doKeys(']', '}'); + helpers.assertCursorAt(8,1); + helpers.doKeys('[', '{'); + helpers.assertCursorAt(0,1); +}, { value: squareBracketMotionSandbox}); +testVim('[(, ])', function(cm, vim, helpers) { + cm.setCursor(4, 10); + helpers.doKeys('[', '('); + helpers.assertCursorAt(3,14); + helpers.doKeys('2', '[', '('); + helpers.assertCursorAt(0,0); + cm.setCursor(4, 10); + helpers.doKeys(']', ')'); + helpers.assertCursorAt(5,11); + helpers.doKeys('2', ']', ')'); + helpers.assertCursorAt(8,0); + helpers.doKeys('[', '('); + helpers.assertCursorAt(0,0); + helpers.doKeys(']', ')'); + helpers.assertCursorAt(8,0); +}, { value: squareBracketMotionSandbox}); +testVim('[*, ]*, [/, ]/', function(cm, vim, helpers) { + forEach(['*', '/'], function(key){ + cm.setCursor(7, 0); + helpers.doKeys('2', '[', key); + helpers.assertCursorAt(2,2); + helpers.doKeys('2', ']', key); + helpers.assertCursorAt(7,5); + }); +}, { value: squareBracketMotionSandbox}); +testVim('[#, ]#', function(cm, vim, helpers) { + cm.setCursor(10, 3); + helpers.doKeys('2', '[', '#'); + helpers.assertCursorAt(4,0); + helpers.doKeys('5', ']', '#'); + helpers.assertCursorAt(17,0); + cm.setCursor(10, 3); + helpers.doKeys(']', '#'); + helpers.assertCursorAt(14,0); +}, { value: squareBracketMotionSandbox}); +testVim('[m, ]m, [M, ]M', function(cm, vim, helpers) { + cm.setCursor(11, 0); + helpers.doKeys('[', 'm'); + helpers.assertCursorAt(10,7); + helpers.doKeys('4', '[', 'm'); + helpers.assertCursorAt(1,3); + helpers.doKeys('5', ']', 'm'); + helpers.assertCursorAt(11,0); + helpers.doKeys('[', 'M'); + helpers.assertCursorAt(9,1); + helpers.doKeys('3', ']', 'M'); + helpers.assertCursorAt(15,0); + helpers.doKeys('5', '[', 'M'); + helpers.assertCursorAt(7,3); +}, { value: squareBracketMotionSandbox}); + +// Ex mode tests +testVim('ex_go_to_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doEx('4'); + helpers.assertCursorAt(3, 0); +}, { value: 'a\nb\nc\nd\ne\n'}); +testVim('ex_write', function(cm, vim, helpers) { + var tmp = CodeMirror.commands.save; + var written; + var actualCm; + CodeMirror.commands.save = function(cm) { + written = true; + actualCm = cm; + }; + // Test that w, wr, wri ... write all trigger :write. + var command = 'write'; + for (var i = 1; i < command.length; i++) { + written = false; + actualCm = null; + helpers.doEx(command.substring(0, i)); + eq(written, true); + eq(actualCm, cm); + } + CodeMirror.commands.save = tmp; +}); +testVim('ex_sort', function(cm, vim, helpers) { + helpers.doEx('sort'); + eq('Z\na\nb\nc\nd', cm.getValue()); +}, { value: 'b\nZ\nd\nc\na'}); +testVim('ex_sort_reverse', function(cm, vim, helpers) { + helpers.doEx('sort!'); + eq('d\nc\nb\na', cm.getValue()); +}, { value: 'b\nd\nc\na'}); +testVim('ex_sort_range', function(cm, vim, helpers) { + helpers.doEx('2,3sort'); + eq('b\nc\nd\na', cm.getValue()); +}, { value: 'b\nd\nc\na'}); +testVim('ex_sort_oneline', function(cm, vim, helpers) { + helpers.doEx('2sort'); + // Expect no change. + eq('b\nd\nc\na', cm.getValue()); +}, { value: 'b\nd\nc\na'}); +testVim('ex_sort_ignoreCase', function(cm, vim, helpers) { + helpers.doEx('sort i'); + eq('a\nb\nc\nd\nZ', cm.getValue()); +}, { value: 'b\nZ\nd\nc\na'}); +testVim('ex_sort_unique', function(cm, vim, helpers) { + helpers.doEx('sort u'); + eq('Z\na\nb\nc\nd', cm.getValue()); +}, { value: 'b\nZ\na\na\nd\na\nc\na'}); +testVim('ex_sort_decimal', function(cm, vim, helpers) { + helpers.doEx('sort d'); + eq('d3\n s5\n6\n.9', cm.getValue()); +}, { value: '6\nd3\n s5\n.9'}); +testVim('ex_sort_decimal_negative', function(cm, vim, helpers) { + helpers.doEx('sort d'); + eq('z-9\nd3\n s5\n6\n.9', cm.getValue()); +}, { value: '6\nd3\n s5\n.9\nz-9'}); +testVim('ex_sort_decimal_reverse', function(cm, vim, helpers) { + helpers.doEx('sort! d'); + eq('.9\n6\n s5\nd3', cm.getValue()); +}, { value: '6\nd3\n s5\n.9'}); +testVim('ex_sort_hex', function(cm, vim, helpers) { + helpers.doEx('sort x'); + eq(' s5\n6\n.9\n&0xB\nd3', cm.getValue()); +}, { value: '6\nd3\n s5\n&0xB\n.9'}); +testVim('ex_sort_octal', function(cm, vim, helpers) { + helpers.doEx('sort o'); + eq('.8\n.9\nd3\n s5\n6', cm.getValue()); +}, { value: '6\nd3\n s5\n.9\n.8'}); +testVim('ex_sort_decimal_mixed', function(cm, vim, helpers) { + helpers.doEx('sort d'); + eq('y\nz\nc1\nb2\na3', cm.getValue()); +}, { value: 'a3\nz\nc1\ny\nb2'}); +testVim('ex_sort_decimal_mixed_reverse', function(cm, vim, helpers) { + helpers.doEx('sort! d'); + eq('a3\nb2\nc1\nz\ny', cm.getValue()); +}, { value: 'a3\nz\nc1\ny\nb2'}); +testVim('ex_sort_patterns_not_supported', function(cm, vim, helpers) { + var notified = false; + cm.openNotification = helpers.fakeOpenNotification(function(text) { + notified = /patterns not supported/.test(text); + }); + helpers.doEx('sort /abc/'); + is(notified, 'No notification.'); +}); +// test for :global command +testVim('ex_global', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doEx('g/one/s//two'); + eq('two two\n two two\n two two', cm.getValue()); + helpers.doEx('1,2g/two/s//one'); + eq('one one\n one one\n two two', cm.getValue()); +}, {value: 'one one\n one one\n one one'}); +testVim('ex_global_confirm', function(cm, vim, helpers) { + cm.setCursor(0, 0); + var onKeyDown; + var openDialogSave = cm.openDialog; + var KEYCODES = { + a: 65, + n: 78, + q: 81, + y: 89 + }; + // Intercept the ex command, 'global' + cm.openDialog = function(template, callback, options) { + // Intercept the prompt for the embedded ex command, 'substitute' + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + }; + callback('g/one/s//two/gc'); + }; + helpers.doKeys(':'); + var close = function() {}; + onKeyDown({keyCode: KEYCODES.n}, '', close); + onKeyDown({keyCode: KEYCODES.y}, '', close); + onKeyDown({keyCode: KEYCODES.a}, '', close); + onKeyDown({keyCode: KEYCODES.q}, '', close); + onKeyDown({keyCode: KEYCODES.y}, '', close); + eq('one two\n two two\n one one\n two one\n one one', cm.getValue()); +}, {value: 'one one\n one one\n one one\n one one\n one one'}); +// Basic substitute tests. +testVim('ex_substitute_same_line', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doEx('s/one/two/g'); + eq('one one\n two two', cm.getValue()); +}, { value: 'one one\n one one'}); +testVim('ex_substitute_full_file', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doEx('%s/one/two/g'); + eq('two two\n two two', cm.getValue()); +}, { value: 'one one\n one one'}); +testVim('ex_substitute_input_range', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doEx('1,3s/\\d/0/g'); + eq('0\n0\n0\n4', cm.getValue()); +}, { value: '1\n2\n3\n4' }); +testVim('ex_substitute_visual_range', function(cm, vim, helpers) { + cm.setCursor(1, 0); + // Set last visual mode selection marks '< and '> at lines 2 and 4 + helpers.doKeys('V', '2', 'j', 'v'); + helpers.doEx('\'<,\'>s/\\d/0/g'); + eq('1\n0\n0\n0\n5', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_empty_query', function(cm, vim, helpers) { + // If the query is empty, use last query. + cm.setCursor(1, 0); + cm.openDialog = helpers.fakeOpenDialog('1'); + helpers.doKeys('/'); + helpers.doEx('s//b/g'); + eq('abb ab2 ab3', cm.getValue()); +}, { value: 'a11 a12 a13' }); +testVim('ex_substitute_javascript', function(cm, vim, helpers) { + CodeMirror.Vim.setOption('pcre', false); + cm.setCursor(1, 0); + // Throw all the things that javascript likes to treat as special values + // into the replace part. All should be literal (this is VIM). + helpers.doEx('s/\\(\\d+\\)/$$ $\' $` $& \\1/g') + eq('a $$ $\' $` $& 0 b', cm.getValue()); +}, { value: 'a 0 b' }); +testVim('ex_substitute_empty_arguments', function(cm,vim,helpers) { + cm.setCursor(0, 0); + helpers.doEx('s/a/b/g'); + cm.setCursor(1, 0); + helpers.doEx('s'); + eq('b b\nb a', cm.getValue()); +}, {value: 'a a\na a'}); + +// More complex substitute tests that test both pcre and nopcre options. +function testSubstitute(name, options) { + testVim(name + '_pcre', function(cm, vim, helpers) { + cm.setCursor(1, 0); + CodeMirror.Vim.setOption('pcre', true); + helpers.doEx(options.expr); + eq(options.expectedValue, cm.getValue()); + }, options); + // If no noPcreExpr is defined, assume that it's the same as the expr. + var noPcreExpr = options.noPcreExpr ? options.noPcreExpr : options.expr; + testVim(name + '_nopcre', function(cm, vim, helpers) { + cm.setCursor(1, 0); + CodeMirror.Vim.setOption('pcre', false); + helpers.doEx(noPcreExpr); + eq(options.expectedValue, cm.getValue()); + }, options); +} +testSubstitute('ex_substitute_capture', { + value: 'a11 a12 a13', + expectedValue: 'a1111 a1212 a1313', + // $n is a backreference + expr: 's/(\\d+)/$1$1/g', + // \n is a backreference. + noPcreExpr: 's/\\(\\d+\\)/\\1\\1/g'}); +testSubstitute('ex_substitute_capture2', { + value: 'a 0 b', + expectedValue: 'a $00 b', + expr: 's/(\\d+)/$$$1$1/g', + noPcreExpr: 's/\\(\\d+\\)/$\\1\\1/g'}); +testSubstitute('ex_substitute_nocapture', { + value: 'a11 a12 a13', + expectedValue: 'a$1$1 a$1$1 a$1$1', + expr: 's/(\\d+)/$$1$$1/g', + noPcreExpr: 's/\\(\\d+\\)/$1$1/g'}); +testSubstitute('ex_substitute_nocapture2', { + value: 'a 0 b', + expectedValue: 'a $10 b', + expr: 's/(\\d+)/$$1$1/g', + noPcreExpr: 's/\\(\\d+\\)/\\$1\\1/g'}); +testSubstitute('ex_substitute_nocapture', { + value: 'a b c', + expectedValue: 'a $ c', + expr: 's/b/$$/', + noPcreExpr: 's/b/$/'}); +testSubstitute('ex_substitute_slash_regex', { + value: 'one/two \n three/four', + expectedValue: 'one|two \n three|four', + expr: '%s/\\//|'}); +testSubstitute('ex_substitute_pipe_regex', { + value: 'one|two \n three|four', + expectedValue: 'one,two \n three,four', + expr: '%s/\\|/,/', + noPcreExpr: '%s/|/,/'}); +testSubstitute('ex_substitute_or_regex', { + value: 'one|two \n three|four', + expectedValue: 'ana|twa \n thraa|faar', + expr: '%s/o|e|u/a/g', + noPcreExpr: '%s/o\\|e\\|u/a/g'}); +testSubstitute('ex_substitute_or_word_regex', { + value: 'one|two \n three|four', + expectedValue: 'five|five \n three|four', + expr: '%s/(one|two)/five/g', + noPcreExpr: '%s/\\(one\\|two\\)/five/g'}); +testSubstitute('ex_substitute_backslashslash_regex', { + value: 'one\\two \n three\\four', + expectedValue: 'one,two \n three,four', + expr: '%s/\\\\/,'}); +testSubstitute('ex_substitute_slash_replacement', { + value: 'one,two \n three,four', + expectedValue: 'one/two \n three/four', + expr: '%s/,/\\/'}); +testSubstitute('ex_substitute_backslash_replacement', { + value: 'one,two \n three,four', + expectedValue: 'one\\two \n three\\four', + expr: '%s/,/\\\\/g'}); +testSubstitute('ex_substitute_multibackslash_replacement', { + value: 'one,two \n three,four', + expectedValue: 'one\\\\\\\\two \n three\\\\\\\\four', // 2*8 backslashes. + expr: '%s/,/\\\\\\\\\\\\\\\\/g'}); // 16 backslashes. +testSubstitute('ex_substitute_newline_replacement', { + value: 'one,two \n three,four', + expectedValue: 'one\ntwo \n three\nfour', + expr: '%s/,/\\n/g'}); +testSubstitute('ex_substitute_braces_word', { + value: 'ababab abb ab{2}', + expectedValue: 'ab abb ab{2}', + expr: '%s/(ab){2}//g', + noPcreExpr: '%s/\\(ab\\)\\{2\\}//g'}); +testSubstitute('ex_substitute_braces_range', { + value: 'a aa aaa aaaa', + expectedValue: 'a a', + expr: '%s/a{2,3}//g', + noPcreExpr: '%s/a\\{2,3\\}//g'}); +testSubstitute('ex_substitute_braces_literal', { + value: 'ababab abb ab{2}', + expectedValue: 'ababab abb ', + expr: '%s/ab\\{2\\}//g', + noPcreExpr: '%s/ab{2}//g'}); +testSubstitute('ex_substitute_braces_char', { + value: 'ababab abb ab{2}', + expectedValue: 'ababab ab{2}', + expr: '%s/ab{2}//g', + noPcreExpr: '%s/ab\\{2\\}//g'}); +testSubstitute('ex_substitute_braces_no_escape', { + value: 'ababab abb ab{2}', + expectedValue: 'ababab ab{2}', + expr: '%s/ab{2}//g', + noPcreExpr: '%s/ab\\{2}//g'}); +testSubstitute('ex_substitute_count', { + value: '1\n2\n3\n4', + expectedValue: '1\n0\n0\n4', + expr: 's/\\d/0/i 2'}); +testSubstitute('ex_substitute_count_with_range', { + value: '1\n2\n3\n4', + expectedValue: '1\n2\n0\n0', + expr: '1,3s/\\d/0/ 3'}); +testSubstitute('ex_substitute_not_global', { + value: 'aaa\nbaa\ncaa', + expectedValue: 'xaa\nbxa\ncxa', + expr: '%s/a/x/'}); +function testSubstituteConfirm(name, command, initialValue, expectedValue, keys, finalPos) { + testVim(name, function(cm, vim, helpers) { + var savedOpenDialog = cm.openDialog; + var savedKeyName = CodeMirror.keyName; + var onKeyDown; + var recordedCallback; + var closed = true; // Start out closed, set false on second openDialog. + function close() { + closed = true; + } + // First openDialog should save callback. + cm.openDialog = function(template, callback, options) { + recordedCallback = callback; + } + // Do first openDialog. + helpers.doKeys(':'); + // Second openDialog should save keyDown handler. + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + closed = false; + }; + // Return the command to Vim and trigger second openDialog. + recordedCallback(command); + // The event should really use keyCode, but here just mock it out and use + // key and replace keyName to just return key. + CodeMirror.keyName = function (e) { return e.key; } + keys = keys.toUpperCase(); + for (var i = 0; i < keys.length; i++) { + is(!closed); + onKeyDown({ key: keys.charAt(i) }, '', close); + } + try { + eq(expectedValue, cm.getValue()); + helpers.assertCursorAt(finalPos); + is(closed); + } catch(e) { + throw e + } finally { + // Restore overriden functions. + CodeMirror.keyName = savedKeyName; + cm.openDialog = savedOpenDialog; + } + }, { value: initialValue }); +} +testSubstituteConfirm('ex_substitute_confirm_emptydoc', + '%s/x/b/c', '', '', '', makeCursor(0, 0)); +testSubstituteConfirm('ex_substitute_confirm_nomatch', + '%s/x/b/c', 'ba a\nbab', 'ba a\nbab', '', makeCursor(0, 0)); +testSubstituteConfirm('ex_substitute_confirm_accept', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbbb', 'yyy', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_random_keys', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbbb', 'ysdkywerty', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_some', + '%s/a/b/cg', 'ba a\nbab', 'bb a\nbbb', 'yny', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_all', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbbb', 'a', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_accept_then_all', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbbb', 'ya', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_quit', + '%s/a/b/cg', 'ba a\nbab', 'bb a\nbab', 'yq', makeCursor(0, 3)); +testSubstituteConfirm('ex_substitute_confirm_last', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbab', 'yl', makeCursor(0, 3)); +testSubstituteConfirm('ex_substitute_confirm_oneline', + '1s/a/b/cg', 'ba a\nbab', 'bb b\nbab', 'yl', makeCursor(0, 3)); +testSubstituteConfirm('ex_substitute_confirm_range_accept', + '1,2s/a/b/cg', 'aa\na \na\na', 'bb\nb \na\na', 'yyy', makeCursor(1, 0)); +testSubstituteConfirm('ex_substitute_confirm_range_some', + '1,3s/a/b/cg', 'aa\na \na\na', 'ba\nb \nb\na', 'ynyy', makeCursor(2, 0)); +testSubstituteConfirm('ex_substitute_confirm_range_all', + '1,3s/a/b/cg', 'aa\na \na\na', 'bb\nb \nb\na', 'a', makeCursor(2, 0)); +testSubstituteConfirm('ex_substitute_confirm_range_last', + '1,3s/a/b/cg', 'aa\na \na\na', 'bb\nb \na\na', 'yyl', makeCursor(1, 0)); +//:noh should clear highlighting of search-results but allow to resume search through n +testVim('ex_noh_clearSearchHighlight', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('match'); + helpers.doKeys('?'); + helpers.doEx('noh'); + eq(vim.searchState_.getOverlay(),null,'match-highlighting wasn\'t cleared'); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 11,'can\'t resume search after clearing highlighting'); +}, { value: 'match nope match \n nope Match' }); +testVim('set_boolean', function(cm, vim, helpers) { + CodeMirror.Vim.defineOption('testoption', true, 'boolean'); + // Test default value is set. + is(CodeMirror.Vim.getOption('testoption')); + expectFail(function() { + // Test fail to set to non-boolean + CodeMirror.Vim.setOption('testoption', '5'); + }); + // Test setOption + CodeMirror.Vim.setOption('testoption', false); + is(!CodeMirror.Vim.getOption('testoption')); +}); +testVim('ex_set_boolean', function(cm, vim, helpers) { + CodeMirror.Vim.defineOption('testoption', true, 'boolean'); + // Test default value is set. + is(CodeMirror.Vim.getOption('testoption')); + expectFail(function() { + // Test fail to set to non-boolean + helpers.doEx('set testoption=22'); + }); + // Test setOption + helpers.doEx('set notestoption'); + is(!CodeMirror.Vim.getOption('testoption')); +}); +testVim('set_string', function(cm, vim, helpers) { + CodeMirror.Vim.defineOption('testoption', 'a', 'string'); + // Test default value is set. + eq('a', CodeMirror.Vim.getOption('testoption')); + expectFail(function() { + // Test fail to set non-string. + CodeMirror.Vim.setOption('testoption', true); + }); + expectFail(function() { + // Test fail to set 'notestoption' + CodeMirror.Vim.setOption('notestoption', 'b'); + }); + // Test setOption + CodeMirror.Vim.setOption('testoption', 'c'); + eq('c', CodeMirror.Vim.getOption('testoption')); +}); +testVim('ex_set_string', function(cm, vim, helpers) { + CodeMirror.Vim.defineOption('testopt', 'a', 'string'); + // Test default value is set. + eq('a', CodeMirror.Vim.getOption('testopt')); + expectFail(function() { + // Test fail to set 'notestopt' + helpers.doEx('set notestopt=b'); + }); + // Test setOption + helpers.doEx('set testopt=c') + eq('c', CodeMirror.Vim.getOption('testopt')); + helpers.doEx('set testopt=c') + eq('c', CodeMirror.Vim.getOption('testopt', cm)); //local || global + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); // local + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); // global + eq('c', CodeMirror.Vim.getOption('testopt')); // global + // Test setOption global + helpers.doEx('setg testopt=d') + eq('c', CodeMirror.Vim.getOption('testopt', cm)); + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); + eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); + eq('d', CodeMirror.Vim.getOption('testopt')); + // Test setOption local + helpers.doEx('setl testopt=e') + eq('e', CodeMirror.Vim.getOption('testopt', cm)); + eq('e', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); + eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); + eq('d', CodeMirror.Vim.getOption('testopt')); +}); +testVim('ex_set_callback', function(cm, vim, helpers) { + var global; + + function cb(val, cm, cfg) { + if (val === undefined) { + // Getter + if (cm) { + return cm._local; + } else { + return global; + } + } else { + // Setter + if (cm) { + cm._local = val; + } else { + global = val; + } + } + } + + CodeMirror.Vim.defineOption('testopt', 'a', 'string', cb); + // Test default value is set. + eq('a', CodeMirror.Vim.getOption('testopt')); + expectFail(function() { + // Test fail to set 'notestopt' + helpers.doEx('set notestopt=b'); + }); + // Test setOption (Identical to the string tests, but via callback instead) + helpers.doEx('set testopt=c') + eq('c', CodeMirror.Vim.getOption('testopt', cm)); //local || global + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); // local + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); // global + eq('c', CodeMirror.Vim.getOption('testopt')); // global + // Test setOption global + helpers.doEx('setg testopt=d') + eq('c', CodeMirror.Vim.getOption('testopt', cm)); + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); + eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); + eq('d', CodeMirror.Vim.getOption('testopt')); + // Test setOption local + helpers.doEx('setl testopt=e') + eq('e', CodeMirror.Vim.getOption('testopt', cm)); + eq('e', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); + eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); + eq('d', CodeMirror.Vim.getOption('testopt')); +}) +testVim('ex_set_filetype', function(cm, vim, helpers) { + CodeMirror.defineMode('test_mode', function() { + return {token: function(stream) { + stream.match(/^\s+|^\S+/); + }}; + }); + CodeMirror.defineMode('test_mode_2', function() { + return {token: function(stream) { + stream.match(/^\s+|^\S+/); + }}; + }); + // Test mode is set. + helpers.doEx('set filetype=test_mode'); + eq('test_mode', cm.getMode().name); + // Test 'ft' alias also sets mode. + helpers.doEx('set ft=test_mode_2'); + eq('test_mode_2', cm.getMode().name); +}); +testVim('ex_set_filetype_null', function(cm, vim, helpers) { + CodeMirror.defineMode('test_mode', function() { + return {token: function(stream) { + stream.match(/^\s+|^\S+/); + }}; + }); + cm.setOption('mode', 'test_mode'); + // Test mode is set to null. + helpers.doEx('set filetype='); + eq('null', cm.getMode().name); +}); +// TODO: Reset key maps after each test. +testVim('ex_map_key2key', function(cm, vim, helpers) { + helpers.doEx('map a x'); + helpers.doKeys('a'); + helpers.assertCursorAt(0, 0); + eq('bc', cm.getValue()); +}, { value: 'abc' }); +testVim('ex_unmap_key2key', function(cm, vim, helpers) { + helpers.doEx('unmap a'); + helpers.doKeys('a'); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: 'abc' }); +testVim('ex_unmap_key2key_does_not_remove_default', function(cm, vim, helpers) { + expectFail(function() { + helpers.doEx('unmap a'); + }); + helpers.doKeys('a'); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: 'abc' }); +testVim('ex_map_key2key_to_colon', function(cm, vim, helpers) { + helpers.doEx('map ; :'); + var dialogOpened = false; + cm.openDialog = function() { + dialogOpened = true; + } + helpers.doKeys(';'); + eq(dialogOpened, true); +}); +testVim('ex_map_ex2key:', function(cm, vim, helpers) { + helpers.doEx('map :del x'); + helpers.doEx('del'); + helpers.assertCursorAt(0, 0); + eq('bc', cm.getValue()); +}, { value: 'abc' }); +testVim('ex_map_ex2ex', function(cm, vim, helpers) { + helpers.doEx('map :del :w'); + var tmp = CodeMirror.commands.save; + var written = false; + var actualCm; + CodeMirror.commands.save = function(cm) { + written = true; + actualCm = cm; + }; + helpers.doEx('del'); + CodeMirror.commands.save = tmp; + eq(written, true); + eq(actualCm, cm); +}); +testVim('ex_map_key2ex', function(cm, vim, helpers) { + helpers.doEx('map a :w'); + var tmp = CodeMirror.commands.save; + var written = false; + var actualCm; + CodeMirror.commands.save = function(cm) { + written = true; + actualCm = cm; + }; + helpers.doKeys('a'); + CodeMirror.commands.save = tmp; + eq(written, true); + eq(actualCm, cm); +}); +testVim('ex_map_key2key_visual_api', function(cm, vim, helpers) { + CodeMirror.Vim.map('b', ':w', 'visual'); + var tmp = CodeMirror.commands.save; + var written = false; + var actualCm; + CodeMirror.commands.save = function(cm) { + written = true; + actualCm = cm; + }; + // Mapping should not work in normal mode. + helpers.doKeys('b'); + eq(written, false); + // Mapping should work in visual mode. + helpers.doKeys('v', 'b'); + eq(written, true); + eq(actualCm, cm); + + CodeMirror.commands.save = tmp; +}); +testVim('ex_imap', function(cm, vim, helpers) { + CodeMirror.Vim.map('jk', '', 'insert'); + helpers.doKeys('i'); + is(vim.insertMode); + helpers.doKeys('j', 'k'); + is(!vim.insertMode); + cm.setCursor(0, 1); + CodeMirror.Vim.map('jj', '', 'insert'); + helpers.doKeys('', '2', 'j', 'l', 'c'); + var replacement = fillArray('fo', 3); + cm.replaceSelections(replacement); + eq('1fo4\n5fo8\nafodefg', cm.getValue()); + helpers.doKeys('j', 'j'); + cm.setCursor(0, 0); + helpers.doKeys('.'); + eq('foo4\nfoo8\nfoodefg', cm.getValue()); +}, { value: '1234\n5678\nabcdefg' }); +testVim('ex_unmap_api', function(cm, vim, helpers) { + CodeMirror.Vim.map('', 'gg', 'normal'); + is(CodeMirror.Vim.handleKey(cm, "", "normal"), "Alt-X key is mapped"); + CodeMirror.Vim.unmap("", "normal"); + is(!CodeMirror.Vim.handleKey(cm, "", "normal"), "Alt-X key is unmapped"); +}); + +// Testing registration of functions as ex-commands and mapping to -keys +testVim('ex_api_test', function(cm, vim, helpers) { + var res=false; + var val='from'; + CodeMirror.Vim.defineEx('extest','ext',function(cm,params){ + if(params.args)val=params.args[0]; + else res=true; + }); + helpers.doEx(':ext to'); + eq(val,'to','Defining ex-command failed'); + CodeMirror.Vim.map('',':ext'); + helpers.doKeys('',''); + is(res,'Mapping to key failed'); +}); +// For now, this test needs to be last because it messes up : for future tests. +testVim('ex_map_key2key_from_colon', function(cm, vim, helpers) { + helpers.doEx('map : x'); + helpers.doKeys(':'); + helpers.assertCursorAt(0, 0); + eq('bc', cm.getValue()); +}, { value: 'abc' }); + +// Test event handlers +testVim('beforeSelectionChange', function(cm, vim, helpers) { + cm.setCursor(0, 100); + eqPos(cm.getCursor('head'), cm.getCursor('anchor')); +}, { value: 'abc' }); + + +}); + + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/layer/cursor.js b/plugins/node_modules/ace/lib/ace/layer/cursor.js new file mode 100644 index 00000000..14edaebb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/layer/cursor.js @@ -0,0 +1,243 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("../lib/dom"); +var isIE8; + +var Cursor = function(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_cursor-layer"; + parentEl.appendChild(this.element); + + if (isIE8 === undefined) + isIE8 = !("opacity" in this.element.style); + + this.isVisible = false; + this.isBlinking = true; + this.blinkInterval = 1000; + this.smoothBlinking = false; + + this.cursors = []; + this.cursor = this.addCursor(); + dom.addCssClass(this.element, "ace_hidden-cursors"); + this.$updateCursors = (isIE8 + ? this.$updateVisibility + : this.$updateOpacity).bind(this); +}; + +(function() { + + this.$updateVisibility = function(val) { + var cursors = this.cursors; + for (var i = cursors.length; i--; ) + cursors[i].style.visibility = val ? "" : "hidden"; + }; + this.$updateOpacity = function(val) { + var cursors = this.cursors; + for (var i = cursors.length; i--; ) + cursors[i].style.opacity = val ? "" : "0"; + }; + + + this.$padding = 0; + this.setPadding = function(padding) { + this.$padding = padding; + }; + + this.setSession = function(session) { + this.session = session; + }; + + this.setBlinking = function(blinking) { + if (blinking != this.isBlinking){ + this.isBlinking = blinking; + this.restartTimer(); + } + }; + + this.setBlinkInterval = function(blinkInterval) { + if (blinkInterval != this.blinkInterval){ + this.blinkInterval = blinkInterval; + this.restartTimer(); + } + }; + + this.setSmoothBlinking = function(smoothBlinking) { + if (smoothBlinking != this.smoothBlinking && !isIE8) { + this.smoothBlinking = smoothBlinking; + dom.setCssClass(this.element, "ace_smooth-blinking", smoothBlinking); + this.$updateCursors(true); + this.$updateCursors = (this.$updateOpacity).bind(this); + this.restartTimer(); + } + }; + + this.addCursor = function() { + var el = dom.createElement("div"); + el.className = "ace_cursor"; + this.element.appendChild(el); + this.cursors.push(el); + return el; + }; + + this.removeCursor = function() { + if (this.cursors.length > 1) { + var el = this.cursors.pop(); + el.parentNode.removeChild(el); + return el; + } + }; + + this.hideCursor = function() { + this.isVisible = false; + dom.addCssClass(this.element, "ace_hidden-cursors"); + this.restartTimer(); + }; + + this.showCursor = function() { + this.isVisible = true; + dom.removeCssClass(this.element, "ace_hidden-cursors"); + this.restartTimer(); + }; + + this.restartTimer = function() { + var update = this.$updateCursors; + clearInterval(this.intervalId); + clearTimeout(this.timeoutId); + if (this.smoothBlinking) { + dom.removeCssClass(this.element, "ace_smooth-blinking"); + } + + update(true); + + if (!this.isBlinking || !this.blinkInterval || !this.isVisible) + return; + + if (this.smoothBlinking) { + setTimeout(function(){ + dom.addCssClass(this.element, "ace_smooth-blinking"); + }.bind(this)); + } + + var blink = function(){ + this.timeoutId = setTimeout(function() { + update(false); + }, 0.6 * this.blinkInterval); + }.bind(this); + + this.intervalId = setInterval(function() { + update(true); + blink(); + }, this.blinkInterval); + + blink(); + }; + + this.getPixelPosition = function(position, onScreen) { + if (!this.config || !this.session) + return {left : 0, top : 0}; + + if (!position) + position = this.session.selection.getCursor(); + var pos = this.session.documentToScreenPosition(position); + var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row) + ? this.session.$bidiHandler.getPosLeft(pos.column) + : pos.column * this.config.characterWidth); + + var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * + this.config.lineHeight; + + return {left : cursorLeft, top : cursorTop}; + }; + + this.update = function(config) { + this.config = config; + + var selections = this.session.$selectionMarkers; + var i = 0, cursorIndex = 0; + + if (selections === undefined || selections.length === 0){ + selections = [{cursor: null}]; + } + + for (var i = 0, n = selections.length; i < n; i++) { + var pixelPos = this.getPixelPosition(selections[i].cursor, true); + if ((pixelPos.top > config.height + config.offset || + pixelPos.top < 0) && i > 1) { + continue; + } + + var style = (this.cursors[cursorIndex++] || this.addCursor()).style; + + if (!this.drawCursor) { + style.left = pixelPos.left + "px"; + style.top = pixelPos.top + "px"; + style.width = config.characterWidth + "px"; + style.height = config.lineHeight + "px"; + } else { + this.drawCursor(style, pixelPos, config, selections[i], this.session); + } + } + while (this.cursors.length > cursorIndex) + this.removeCursor(); + + var overwrite = this.session.getOverwrite(); + this.$setOverwrite(overwrite); + + // cache for textarea and gutter highlight + this.$pixelPos = pixelPos; + this.restartTimer(); + }; + + this.drawCursor = null; + + this.$setOverwrite = function(overwrite) { + if (overwrite != this.overwrite) { + this.overwrite = overwrite; + if (overwrite) + dom.addCssClass(this.element, "ace_overwrite-cursors"); + else + dom.removeCssClass(this.element, "ace_overwrite-cursors"); + } + }; + + this.destroy = function() { + clearInterval(this.intervalId); + clearTimeout(this.timeoutId); + }; + +}).call(Cursor.prototype); + +exports.Cursor = Cursor; + +}); diff --git a/plugins/node_modules/ace/lib/ace/layer/font_metrics.js b/plugins/node_modules/ace/lib/ace/layer/font_metrics.js new file mode 100644 index 00000000..badebe92 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/layer/font_metrics.js @@ -0,0 +1,168 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var useragent = require("../lib/useragent"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; + +var CHAR_COUNT = 256; +var USE_OBSERVER = typeof ResizeObserver == "function"; + +var FontMetrics = exports.FontMetrics = function(parentEl) { + this.el = dom.createElement("div"); + this.$setMeasureNodeStyles(this.el.style, true); + + this.$main = dom.createElement("div"); + this.$setMeasureNodeStyles(this.$main.style); + + this.$measureNode = dom.createElement("div"); + this.$setMeasureNodeStyles(this.$measureNode.style); + + + this.el.appendChild(this.$main); + this.el.appendChild(this.$measureNode); + parentEl.appendChild(this.el); + + this.$measureNode.innerHTML = lang.stringRepeat("X", CHAR_COUNT); + + this.$characterSize = {width: 0, height: 0}; + + + if (USE_OBSERVER) + this.$addObserver(); + else + this.checkForSizeChanges(); +}; + +(function() { + + oop.implement(this, EventEmitter); + + this.$characterSize = {width: 0, height: 0}; + + this.$setMeasureNodeStyles = function(style, isRoot) { + style.width = style.height = "auto"; + style.left = style.top = "0px"; + style.visibility = "hidden"; + style.position = "absolute"; + style.whiteSpace = "pre"; + + if (useragent.isIE < 8) { + style["font-family"] = "inherit"; + } else { + style.font = "inherit"; + } + style.overflow = isRoot ? "hidden" : "visible"; + }; + + this.checkForSizeChanges = function(size) { + if (size === undefined) + size = this.$measureSizes(); + if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) { + this.$measureNode.style.fontWeight = "bold"; + var boldSize = this.$measureSizes(); + this.$measureNode.style.fontWeight = ""; + this.$characterSize = size; + this.charSizes = Object.create(null); + this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height; + this._emit("changeCharacterSize", {data: size}); + } + }; + + this.$addObserver = function() { + var self = this; + this.$observer = new window.ResizeObserver(function(e) { + var rect = e[0].contentRect; + self.checkForSizeChanges({ + height: rect.height, + width: rect.width / CHAR_COUNT + }); + }); + this.$observer.observe(this.$measureNode); + }; + + this.$pollSizeChanges = function() { + if (this.$pollSizeChangesTimer || this.$observer) + return this.$pollSizeChangesTimer; + var self = this; + return this.$pollSizeChangesTimer = setInterval(function() { + self.checkForSizeChanges(); + }, 500); + }; + + this.setPolling = function(val) { + if (val) { + this.$pollSizeChanges(); + } else if (this.$pollSizeChangesTimer) { + clearInterval(this.$pollSizeChangesTimer); + this.$pollSizeChangesTimer = 0; + } + }; + + this.$measureSizes = function(node) { + var size = { + height: (node || this.$measureNode).clientHeight, + width: (node || this.$measureNode).clientWidth / CHAR_COUNT + }; + + // Size and width can be null if the editor is not visible or + // detached from the document + if (size.width === 0 || size.height === 0) + return null; + return size; + }; + + this.$measureCharWidth = function(ch) { + this.$main.innerHTML = lang.stringRepeat(ch, CHAR_COUNT); + var rect = this.$main.getBoundingClientRect(); + return rect.width / CHAR_COUNT; + }; + + this.getCharacterWidth = function(ch) { + var w = this.charSizes[ch]; + if (w === undefined) { + w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width; + } + return w; + }; + + this.destroy = function() { + clearInterval(this.$pollSizeChangesTimer); + if (this.el && this.el.parentNode) + this.el.parentNode.removeChild(this.el); + }; + +}).call(FontMetrics.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/layer/gutter.js b/plugins/node_modules/ace/lib/ace/layer/gutter.js new file mode 100644 index 00000000..18fe3358 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/layer/gutter.js @@ -0,0 +1,285 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; + +var Gutter = function(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_gutter-layer"; + parentEl.appendChild(this.element); + this.setShowFoldWidgets(this.$showFoldWidgets); + + this.gutterWidth = 0; + + this.$annotations = []; + this.$updateAnnotations = this.$updateAnnotations.bind(this); + + this.$cells = []; +}; + +(function() { + + oop.implement(this, EventEmitter); + + this.setSession = function(session) { + if (this.session) + this.session.removeEventListener("change", this.$updateAnnotations); + this.session = session; + if (session) + session.on("change", this.$updateAnnotations); + }; + + this.addGutterDecoration = function(row, className){ + if (window.console) + console.warn && console.warn("deprecated use session.addGutterDecoration"); + this.session.addGutterDecoration(row, className); + }; + + this.removeGutterDecoration = function(row, className){ + if (window.console) + console.warn && console.warn("deprecated use session.removeGutterDecoration"); + this.session.removeGutterDecoration(row, className); + }; + + this.setAnnotations = function(annotations) { + // iterate over sparse array + this.$annotations = []; + for (var i = 0; i < annotations.length; i++) { + var annotation = annotations[i]; + var row = annotation.row; + var rowInfo = this.$annotations[row]; + if (!rowInfo) + rowInfo = this.$annotations[row] = {text: []}; + + var annoText = annotation.text; + annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || ""; + + if (rowInfo.text.indexOf(annoText) === -1) + rowInfo.text.push(annoText); + + var type = annotation.type; + if (type == "error") + rowInfo.className = " ace_error"; + else if (type == "warning" && rowInfo.className != " ace_error") + rowInfo.className = " ace_warning"; + else if (type == "info" && (!rowInfo.className)) + rowInfo.className = " ace_info"; + } + }; + + this.$updateAnnotations = function (delta) { + if (!this.$annotations.length) + return; + var firstRow = delta.start.row; + var len = delta.end.row - firstRow; + if (len === 0) { + // do nothing + } else if (delta.action == 'remove') { + this.$annotations.splice(firstRow, len + 1, null); + } else { + var args = new Array(len + 1); + args.unshift(firstRow, 1); + this.$annotations.splice.apply(this.$annotations, args); + } + }; + + this.update = function(config) { + var session = this.session; + var firstRow = config.firstRow; + var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar + session.getLength() - 1); + var fold = session.getNextFoldLine(firstRow); + var foldStart = fold ? fold.start.row : Infinity; + var foldWidgets = this.$showFoldWidgets && session.foldWidgets; + var breakpoints = session.$breakpoints; + var decorations = session.$decorations; + var firstLineNumber = session.$firstLineNumber; + var lastLineNumber = 0; + + var gutterRenderer = session.gutterRenderer || this.$renderer; + + var cell = null; + var index = -1; + var row = firstRow; + while (true) { + if (row > foldStart) { + row = fold.end.row + 1; + fold = session.getNextFoldLine(row, fold); + foldStart = fold ? fold.start.row : Infinity; + } + if (row > lastRow) { + while (this.$cells.length > index + 1) { + cell = this.$cells.pop(); + this.element.removeChild(cell.element); + } + break; + } + + cell = this.$cells[++index]; + if (!cell) { + cell = {element: null, textNode: null, foldWidget: null}; + cell.element = dom.createElement("div"); + cell.textNode = document.createTextNode(''); + cell.element.appendChild(cell.textNode); + this.element.appendChild(cell.element); + this.$cells[index] = cell; + } + + var className = "ace_gutter-cell "; + if (breakpoints[row]) + className += breakpoints[row]; + if (decorations[row]) + className += decorations[row]; + if (this.$annotations[row]) + className += this.$annotations[row].className; + if (cell.element.className != className) + cell.element.className = className; + + var height = session.getRowLength(row) * config.lineHeight + "px"; + if (height != cell.element.style.height) + cell.element.style.height = height; + + if (foldWidgets) { + var c = foldWidgets[row]; + // check if cached value is invalidated and we need to recompute + if (c == null) + c = foldWidgets[row] = session.getFoldWidget(row); + } + + if (c) { + if (!cell.foldWidget) { + cell.foldWidget = dom.createElement("span"); + cell.element.appendChild(cell.foldWidget); + } + var className = "ace_fold-widget ace_" + c; + if (c == "start" && row == foldStart && row < fold.end.row) + className += " ace_closed"; + else + className += " ace_open"; + if (cell.foldWidget.className != className) + cell.foldWidget.className = className; + + var height = config.lineHeight + "px"; + if (cell.foldWidget.style.height != height) + cell.foldWidget.style.height = height; + } else { + if (cell.foldWidget) { + cell.element.removeChild(cell.foldWidget); + cell.foldWidget = null; + } + } + + var text = lastLineNumber = gutterRenderer + ? gutterRenderer.getText(session, row) + : row + firstLineNumber; + if (text !== cell.textNode.data) + cell.textNode.data = text; + + row++; + } + + this.element.style.height = config.minHeight + "px"; + + if (this.$fixedWidth || session.$useWrapMode) + lastLineNumber = session.getLength() + firstLineNumber; + + var gutterWidth = gutterRenderer + ? gutterRenderer.getWidth(session, lastLineNumber, config) + : lastLineNumber.toString().length * config.characterWidth; + + var padding = this.$padding || this.$computePadding(); + gutterWidth += padding.left + padding.right; + if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) { + this.gutterWidth = gutterWidth; + this.element.style.width = Math.ceil(this.gutterWidth) + "px"; + this._emit("changeGutterWidth", gutterWidth); + } + }; + + this.$fixedWidth = false; + + this.$showLineNumbers = true; + this.$renderer = ""; + this.setShowLineNumbers = function(show) { + this.$renderer = !show && { + getWidth: function() {return "";}, + getText: function() {return "";} + }; + }; + + this.getShowLineNumbers = function() { + return this.$showLineNumbers; + }; + + this.$showFoldWidgets = true; + this.setShowFoldWidgets = function(show) { + if (show) + dom.addCssClass(this.element, "ace_folding-enabled"); + else + dom.removeCssClass(this.element, "ace_folding-enabled"); + + this.$showFoldWidgets = show; + this.$padding = null; + }; + + this.getShowFoldWidgets = function() { + return this.$showFoldWidgets; + }; + + this.$computePadding = function() { + if (!this.element.firstChild) + return {left: 0, right: 0}; + var style = dom.computedStyle(this.element.firstChild); + this.$padding = {}; + this.$padding.left = parseInt(style.paddingLeft) + 1 || 0; + this.$padding.right = parseInt(style.paddingRight) || 0; + return this.$padding; + }; + + this.getRegion = function(point) { + var padding = this.$padding || this.$computePadding(); + var rect = this.element.getBoundingClientRect(); + if (point.x < padding.left + rect.left) + return "markers"; + if (this.$showFoldWidgets && point.x > rect.right - padding.right) + return "foldWidgets"; + }; + +}).call(Gutter.prototype); + +exports.Gutter = Gutter; + +}); diff --git a/plugins/node_modules/ace/lib/ace/layer/marker.js b/plugins/node_modules/ace/lib/ace/layer/marker.js new file mode 100644 index 00000000..6abed353 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/layer/marker.js @@ -0,0 +1,262 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("../range").Range; +var dom = require("../lib/dom"); + +var Marker = function(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_marker-layer"; + parentEl.appendChild(this.element); +}; + +(function() { + + this.$padding = 0; + + this.setPadding = function(padding) { + this.$padding = padding; + }; + this.setSession = function(session) { + this.session = session; + }; + + this.setMarkers = function(markers) { + this.markers = markers; + }; + + this.update = function(config) { + if (!config) return; + + this.config = config; + + + var html = []; + for (var key in this.markers) { + var marker = this.markers[key]; + + if (!marker.range) { + marker.update(html, this, this.session, config); + continue; + } + + var range = marker.range.clipRows(config.firstRow, config.lastRow); + if (range.isEmpty()) continue; + + range = range.toScreenRange(this.session); + if (marker.renderer) { + var top = this.$getTop(range.start.row, config); + var left = this.$padding + (this.session.$bidiHandler.isBidiRow(range.start.row) + ? this.session.$bidiHandler.getPosLeft(range.start.column) + : range.start.column * config.characterWidth); + marker.renderer(html, range, left, top, config); + } else if (marker.type == "fullLine") { + this.drawFullLineMarker(html, range, marker.clazz, config); + } else if (marker.type == "screenLine") { + this.drawScreenLineMarker(html, range, marker.clazz, config); + } else if (range.isMultiLine()) { + if (marker.type == "text") + this.drawTextMarker(html, range, marker.clazz, config); + else + this.drawMultiLineMarker(html, range, marker.clazz, config); + } else { + if (this.session.$bidiHandler.isBidiRow(range.start.row)) { + this.drawBidiSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); + } else { + this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); + } + } + } + this.element.innerHTML = html.join(""); + }; + + this.$getTop = function(row, layerConfig) { + return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight; + }; + + function getBorderClass(tl, tr, br, bl) { + return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0); + } + // Draws a marker, which spans a range of text on multiple lines + this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) { + var session = this.session; + var start = range.start.row; + var end = range.end.row; + var row = start; + var prev = 0; + var curr = 0; + var next = session.getScreenLastRowColumn(row); + var clazzModified = null; + var lineRange = new Range(row, range.start.column, row, curr); + for (; row <= end; row++) { + lineRange.start.row = lineRange.end.row = row; + lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row); + lineRange.end.column = next; + prev = curr; + curr = next; + next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column; + clazzModified = clazz + (row == start ? " ace_start" : "") + " ace_br" + + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end); + + if (this.session.$bidiHandler.isBidiRow(row)) { + this.drawBidiSingleLineMarker(stringBuilder, lineRange, clazzModified, + layerConfig, row == end ? 0 : 1, extraStyle); + } else { + this.drawSingleLineMarker(stringBuilder, lineRange, clazzModified, + layerConfig, row == end ? 0 : 1, extraStyle); + } + } + }; + + // Draws a multi line marker, where lines span the full width + this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { + // from selection start to the end of the line + var padding = this.$padding; + var height, top, left; + extraStyle = extraStyle || ""; + if (this.session.$bidiHandler.isBidiRow(range.start.row)) { + var range1 = range.clone(); + range1.end.row = range1.start.row; + range1.end.column = this.session.getLine(range1.start.row).length; + this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br1 ace_start", config, null, extraStyle); + } else { + height = config.lineHeight; + top = this.$getTop(range.start.row, config); + left = padding + range.start.column * config.characterWidth; + stringBuilder.push( + "
    " + ); + } + // from start of the last line to the selection end + if (this.session.$bidiHandler.isBidiRow(range.end.row)) { + var range1 = range.clone(); + range1.start.row = range1.end.row; + range1.start.column = 0; + this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br12", config, null, extraStyle); + } else { + var width = range.end.column * config.characterWidth; + height = config.lineHeight; + top = this.$getTop(range.end.row, config); + stringBuilder.push( + "
    " + ); + } + // all the complete lines + height = (range.end.row - range.start.row - 1) * config.lineHeight; + if (height <= 0) + return; + top = this.$getTop(range.start.row + 1, config); + + var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8); + + stringBuilder.push( + "
    " + ); + }; + + // Draws a marker which covers part or whole width of a single screen line + this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) { + var height = config.lineHeight; + var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth; + + var top = this.$getTop(range.start.row, config); + var left = this.$padding + range.start.column * config.characterWidth; + + stringBuilder.push( + "
    " + ); + }; + + // Draws Bidi marker which covers part or whole width of a single screen line + this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) { + var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding; + var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column); + + selections.forEach(function(selection) { + stringBuilder.push( + "
    " + ); + }); + }; + + this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { + var top = this.$getTop(range.start.row, config); + var height = config.lineHeight; + if (range.start.row != range.end.row) + height += this.$getTop(range.end.row, config) - top; + + stringBuilder.push( + "
    " + ); + }; + + this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { + var top = this.$getTop(range.start.row, config); + var height = config.lineHeight; + + stringBuilder.push( + "
    " + ); + }; + +}).call(Marker.prototype); + +exports.Marker = Marker; + +}); diff --git a/plugins/node_modules/ace/lib/ace/layer/text.js b/plugins/node_modules/ace/lib/ace/layer/text.js new file mode 100644 index 00000000..8f989726 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/layer/text.js @@ -0,0 +1,590 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var useragent = require("../lib/useragent"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; + +var Text = function(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_text-layer"; + parentEl.appendChild(this.element); + this.$updateEolChar = this.$updateEolChar.bind(this); +}; + +(function() { + + oop.implement(this, EventEmitter); + + this.EOF_CHAR = "\xB6"; + this.EOL_CHAR_LF = "\xAC"; + this.EOL_CHAR_CRLF = "\xa4"; + this.EOL_CHAR = this.EOL_CHAR_LF; + this.TAB_CHAR = "\u2014"; //"\u21E5"; + this.SPACE_CHAR = "\xB7"; + this.$padding = 0; + this.MAX_LINE_LENGTH = 10000; + + this.$updateEolChar = function() { + var doc = this.session.doc; + var unixMode = doc.getNewLineCharacter() == "\n" && doc.getNewLineMode() != "windows"; + var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF; + if (this.EOL_CHAR != EOL_CHAR) { + this.EOL_CHAR = EOL_CHAR; + return true; + } + }; + + this.setPadding = function(padding) { + this.$padding = padding; + this.element.style.padding = "0 " + padding + "px"; + }; + + this.getLineHeight = function() { + return this.$fontMetrics.$characterSize.height || 0; + }; + + this.getCharacterWidth = function() { + return this.$fontMetrics.$characterSize.width || 0; + }; + + this.$setFontMetrics = function(measure) { + this.$fontMetrics = measure; + this.$fontMetrics.on("changeCharacterSize", function(e) { + this._signal("changeCharacterSize", e); + }.bind(this)); + this.$pollSizeChanges(); + }; + + this.checkForSizeChanges = function() { + this.$fontMetrics.checkForSizeChanges(); + }; + this.$pollSizeChanges = function() { + return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges(); + }; + this.setSession = function(session) { + this.session = session; + if (session) + this.$computeTabString(); + }; + + this.showInvisibles = false; + this.setShowInvisibles = function(showInvisibles) { + if (this.showInvisibles == showInvisibles) + return false; + + this.showInvisibles = showInvisibles; + this.$computeTabString(); + return true; + }; + + this.displayIndentGuides = true; + this.setDisplayIndentGuides = function(display) { + if (this.displayIndentGuides == display) + return false; + + this.displayIndentGuides = display; + this.$computeTabString(); + return true; + }; + + this.$tabStrings = []; + this.onChangeTabSize = + this.$computeTabString = function() { + var tabSize = this.session.getTabSize(); + this.tabSize = tabSize; + var tabStr = this.$tabStrings = [0]; + for (var i = 1; i < tabSize + 1; i++) { + if (this.showInvisibles) { + tabStr.push("" + + lang.stringRepeat(this.TAB_CHAR, i) + + ""); + } else { + tabStr.push(lang.stringRepeat(" ", i)); + } + } + if (this.displayIndentGuides) { + this.$indentGuideRe = /\s\S| \t|\t |\s$/; + var className = "ace_indent-guide"; + var spaceClass = ""; + var tabClass = ""; + if (this.showInvisibles) { + className += " ace_invisible"; + spaceClass = " ace_invisible_space"; + tabClass = " ace_invisible_tab"; + var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize); + var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize); + } else{ + var spaceContent = lang.stringRepeat(" ", this.tabSize); + var tabContent = spaceContent; + } + + this.$tabStrings[" "] = "" + spaceContent + ""; + this.$tabStrings["\t"] = "" + tabContent + ""; + } + }; + + this.updateLines = function(config, firstRow, lastRow) { + // Due to wrap line changes there can be new lines if e.g. + // the line to updated wrapped in the meantime. + if (this.config.lastRow != config.lastRow || + this.config.firstRow != config.firstRow) { + this.scrollLines(config); + } + this.config = config; + + var first = Math.max(firstRow, config.firstRow); + var last = Math.min(lastRow, config.lastRow); + + var lineElements = this.element.childNodes; + var lineElementsIdx = 0; + + for (var row = config.firstRow; row < first; row++) { + var foldLine = this.session.getFoldLine(row); + if (foldLine) { + if (foldLine.containsRow(first)) { + first = foldLine.start.row; + break; + } else { + row = foldLine.end.row; + } + } + lineElementsIdx ++; + } + + var row = first; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + + while (true) { + if (row > foldStart) { + row = foldLine.end.row+1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row :Infinity; + } + if (row > last) + break; + + var lineElement = lineElements[lineElementsIdx++]; + if (lineElement) { + var html = []; + this.$renderLine( + html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false + ); + lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + "px"; + lineElement.innerHTML = html.join(""); + } + row++; + } + }; + + this.scrollLines = function(config) { + var oldConfig = this.config; + this.config = config; + + if (!oldConfig || oldConfig.lastRow < config.firstRow) + return this.update(config); + + if (config.lastRow < oldConfig.firstRow) + return this.update(config); + + var el = this.element; + if (oldConfig.firstRow < config.firstRow) + for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--) + el.removeChild(el.firstChild); + + if (oldConfig.lastRow > config.lastRow) + for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--) + el.removeChild(el.lastChild); + + if (config.firstRow < oldConfig.firstRow) { + var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1); + if (el.firstChild) + el.insertBefore(fragment, el.firstChild); + else + el.appendChild(fragment); + } + + if (config.lastRow > oldConfig.lastRow) { + var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow); + el.appendChild(fragment); + } + }; + + this.$renderLinesFragment = function(config, firstRow, lastRow) { + var fragment = this.element.ownerDocument.createDocumentFragment(); + var row = firstRow; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + + while (true) { + if (row > foldStart) { + row = foldLine.end.row+1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (row > lastRow) + break; + + var container = dom.createElement("div"); + + var html = []; + // Get the tokens per line as there might be some lines in between + // beeing folded. + this.$renderLine(html, row, false, row == foldStart ? foldLine : false); + + // don't use setInnerHtml since we are working with an empty DIV + container.innerHTML = html.join(""); + if (this.$useLineGroups()) { + container.className = 'ace_line_group'; + fragment.appendChild(container); + container.style.height = config.lineHeight * this.session.getRowLength(row) + "px"; + + } else { + while(container.firstChild) + fragment.appendChild(container.firstChild); + } + + row++; + } + return fragment; + }; + + this.update = function(config) { + this.config = config; + + var html = []; + var firstRow = config.firstRow, lastRow = config.lastRow; + + var row = firstRow; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + + while (true) { + if (row > foldStart) { + row = foldLine.end.row+1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row :Infinity; + } + if (row > lastRow) + break; + + if (this.$useLineGroups()) + html.push("
    "); + + this.$renderLine(html, row, false, row == foldStart ? foldLine : false); + + if (this.$useLineGroups()) + html.push("
    "); // end the line group + + row++; + } + this.element.innerHTML = html.join(""); + }; + + this.$textToken = { + "text": true, + "rparen": true, + "lparen": true + }; + + this.$renderToken = function(stringBuilder, screenColumn, token, value) { + var self = this; + var replaceReg = /\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var replaceFunc = function(c, a, b, tabIdx, idx4) { + if (a) { + return self.showInvisibles + ? "" + lang.stringRepeat(self.SPACE_CHAR, c.length) + "" + : c; + } else if (c == "&") { + return "&"; + } else if (c == "<") { + return "<"; + } else if (c == ">") { + // normally escaping this is not needed, but xml documents throw error when setting innerHTML to ]]> + return ">"; + } else if (c == "\t") { + var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx); + screenColumn += tabSize - 1; + return self.$tabStrings[tabSize]; + } else if (c == "\u3000") { + // U+3000 is both invisible AND full-width, so must be handled uniquely + var classToUse = self.showInvisibles ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk"; + var space = self.showInvisibles ? self.SPACE_CHAR : ""; + screenColumn += 1; + return "" + space + ""; + } else if (b) { + return "" + self.SPACE_CHAR + ""; + } else { + screenColumn += 1; + return "" + c + ""; + } + }; + + var output = value.replace(replaceReg, replaceFunc); + + if (!this.$textToken[token.type]) { + var classes = "ace_" + token.type.replace(/\./g, " ace_"); + var style = ""; + if (token.type == "fold") + style = " style='width:" + (token.value.length * this.config.characterWidth) + "px;' "; + stringBuilder.push("", output, ""); + } + else { + stringBuilder.push(output); + } + return screenColumn + value.length; + }; + + this.renderIndentGuide = function(stringBuilder, value, max) { + var cols = value.search(this.$indentGuideRe); + if (cols <= 0 || cols >= max) + return value; + if (value[0] == " ") { + cols -= cols % this.tabSize; + stringBuilder.push(lang.stringRepeat(this.$tabStrings[" "], cols/this.tabSize)); + return value.substr(cols); + } else if (value[0] == "\t") { + stringBuilder.push(lang.stringRepeat(this.$tabStrings["\t"], cols)); + return value.substr(cols); + } + return value; + }; + + this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) { + var chars = 0; + var split = 0; + var splitChars = splits[0]; + var screenColumn = 0; + + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + var value = token.value; + if (i == 0 && this.displayIndentGuides) { + chars = value.length; + value = this.renderIndentGuide(stringBuilder, value, splitChars); + if (!value) + continue; + chars -= value.length; + } + + if (chars + value.length < splitChars) { + screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); + chars += value.length; + } else { + while (chars + value.length >= splitChars) { + screenColumn = this.$renderToken( + stringBuilder, screenColumn, + token, value.substring(0, splitChars - chars) + ); + value = value.substring(splitChars - chars); + chars = splitChars; + + if (!onlyContents) { + stringBuilder.push("
    ", + "
    " + ); + } + + stringBuilder.push(lang.stringRepeat("\xa0", splits.indent)); + + split ++; + screenColumn = 0; + splitChars = splits[split] || Number.MAX_VALUE; + } + if (value.length != 0) { + chars += value.length; + screenColumn = this.$renderToken( + stringBuilder, screenColumn, token, value + ); + } + } + } + }; + + this.$renderSimpleLine = function(stringBuilder, tokens) { + var screenColumn = 0; + var token = tokens[0]; + var value = token.value; + if (this.displayIndentGuides) + value = this.renderIndentGuide(stringBuilder, value); + if (value) + screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); + for (var i = 1; i < tokens.length; i++) { + token = tokens[i]; + value = token.value; + if (screenColumn + value.length > this.MAX_LINE_LENGTH) + return this.$renderOverflowMessage(stringBuilder, screenColumn, token, value); + screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); + } + }; + + this.$renderOverflowMessage = function(stringBuilder, screenColumn, token, value) { + this.$renderToken(stringBuilder, screenColumn, token, + value.slice(0, this.MAX_LINE_LENGTH - screenColumn)); + stringBuilder.push( + "<click to see more...>" + ); + }; + + // row is either first row of foldline or not in fold + this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) { + if (!foldLine && foldLine != false) + foldLine = this.session.getFoldLine(row); + + if (foldLine) + var tokens = this.$getFoldLineTokens(row, foldLine); + else + var tokens = this.session.getTokens(row); + + + if (!onlyContents) { + stringBuilder.push( + "
    " + ); + } + + if (tokens.length) { + var splits = this.session.getRowSplitData(row); + if (splits && splits.length) + this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents); + else + this.$renderSimpleLine(stringBuilder, tokens); + } + + if (this.showInvisibles) { + if (foldLine) + row = foldLine.end.row; + + stringBuilder.push( + "", + row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR, + "" + ); + } + if (!onlyContents) + stringBuilder.push("
    "); + }; + + this.$getFoldLineTokens = function(row, foldLine) { + var session = this.session; + var renderTokens = []; + + function addTokens(tokens, from, to) { + var idx = 0, col = 0; + while ((col + tokens[idx].value.length) < from) { + col += tokens[idx].value.length; + idx++; + + if (idx == tokens.length) + return; + } + if (col != from) { + var value = tokens[idx].value.substring(from - col); + // Check if the token value is longer then the from...to spacing. + if (value.length > (to - from)) + value = value.substring(0, to - from); + + renderTokens.push({ + type: tokens[idx].type, + value: value + }); + + col = from + value.length; + idx += 1; + } + + while (col < to && idx < tokens.length) { + var value = tokens[idx].value; + if (value.length + col > to) { + renderTokens.push({ + type: tokens[idx].type, + value: value.substring(0, to - col) + }); + } else + renderTokens.push(tokens[idx]); + col += value.length; + idx += 1; + } + } + + var tokens = session.getTokens(row); + foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) { + if (placeholder != null) { + renderTokens.push({ + type: "fold", + value: placeholder + }); + } else { + if (isNewRow) + tokens = session.getTokens(row); + + if (tokens.length) + addTokens(tokens, lastColumn, column); + } + }, foldLine.end.row, this.session.getLine(foldLine.end.row).length); + + return renderTokens; + }; + + this.$useLineGroups = function() { + // For the updateLines function to work correctly, it's important that the + // child nodes of this.element correspond on a 1-to-1 basis to rows in the + // document (as distinct from lines on the screen). For sessions that are + // wrapped, this means we need to add a layer to the node hierarchy (tagged + // with the class name ace_line_group). + return this.session.getUseWrapMode(); + }; + + this.destroy = function() { + clearInterval(this.$pollSizeChangesTimer); + if (this.$measureNode) + this.$measureNode.parentNode.removeChild(this.$measureNode); + delete this.$measureNode; + }; + +}).call(Text.prototype); + +exports.Text = Text; + +}); diff --git a/plugins/node_modules/ace/lib/ace/layer/text_test.js b/plugins/node_modules/ace/lib/ace/layer/text_test.js new file mode 100644 index 00000000..b7dbcc0e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/layer/text_test.js @@ -0,0 +1,126 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("../test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var assert = require("../test/assertions"); +var EditSession = require("../edit_session").EditSession; +var TextLayer = require("./text").Text; +var JavaScriptMode = require("../mode/javascript").Mode; + +module.exports = { + + setUp: function(next) { + this.session = new EditSession(""); + this.session.setMode(new JavaScriptMode()); + this.textLayer = new TextLayer(document.createElement("div")); + this.textLayer.setSession(this.session); + this.textLayer.config = { + characterWidth: 10, + lineHeight: 20 + }; + next(); + }, + + "test: render line with hard tabs should render the same as lines with soft tabs" : function() { + this.session.setValue("a\ta\ta\t\na a a \n"); + this.textLayer.$computeTabString(); + + // row with hard tabs + var stringBuilder = []; + this.textLayer.$renderLine(stringBuilder, 0); + + // row with soft tabs + var stringBuilder2 = []; + this.textLayer.$renderLine(stringBuilder2, 1); + assert.equal(stringBuilder.join(""), stringBuilder2.join("")); + }, + + "test rendering width of ideographic space (U+3000)" : function() { + this.session.setValue("\u3000"); + + var stringBuilder = []; + this.textLayer.$renderLine(stringBuilder, 0, true); + assert.equal(stringBuilder.join(""), ""); + + this.textLayer.setShowInvisibles(true); + var stringBuilder = []; + this.textLayer.$renderLine(stringBuilder, 0, true); + assert.equal( + stringBuilder.join(""), + "" + this.textLayer.SPACE_CHAR + "" + + "\xB6" + ); + }, + + "test rendering of indent guides" : function() { + var textLayer = this.textLayer; + var EOL = "" + textLayer.EOL_CHAR + ""; + var SPACE = function(i) {return Array(i+1).join(" ");}; + var DOT = function(i) {return Array(i+1).join(textLayer.SPACE_CHAR);}; + var TAB = function(i) {return Array(i+1).join(textLayer.TAB_CHAR);}; + function testRender(results) { + for (var i = results.length; i--; ) { + var stringBuilder = []; + textLayer.$renderLine(stringBuilder, i, true); + assert.equal(stringBuilder.join(""), results[i]); + } + } + + this.session.setValue(" \n\t\tf\n "); + testRender([ + "" + SPACE(4) + "" + SPACE(2), + "" + SPACE(4) + "" + SPACE(4) + "f", + SPACE(3) + ]); + this.textLayer.setShowInvisibles(true); + testRender([ + "" + DOT(4) + "" + DOT(2) + "" + EOL, + "" + TAB(4) + "" + TAB(4) + "f" + EOL + ]); + this.textLayer.setDisplayIndentGuides(false); + testRender([ + "" + DOT(6) + "" + EOL, + "" + TAB(4) + "" + TAB(4) + "f" + EOL + ]); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/lib/app_config.js b/plugins/node_modules/ace/lib/ace/lib/app_config.js new file mode 100644 index 00000000..c674a8b4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/lib/app_config.js @@ -0,0 +1,160 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"no use strict"; + +var oop = require("./oop"); +var EventEmitter = require("./event_emitter").EventEmitter; + +var optionsProvider = { + setOptions: function(optList) { + Object.keys(optList).forEach(function(key) { + this.setOption(key, optList[key]); + }, this); + }, + getOptions: function(optionNames) { + var result = {}; + if (!optionNames) { + var options = this.$options; + optionNames = Object.keys(options).filter(function(key) { + return !options[key].hidden; + }); + } else if (!Array.isArray(optionNames)) { + result = optionNames; + optionNames = Object.keys(result); + } + optionNames.forEach(function(key) { + result[key] = this.getOption(key); + }, this); + return result; + }, + setOption: function(name, value) { + if (this["$" + name] === value) + return; + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value); + + if (!opt.handlesSet) + this["$" + name] = value; + if (opt && opt.set) + opt.set.call(this, value); + }, + getOption: function(name) { + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].getOption(name); + return opt && opt.get ? opt.get.call(this) : this["$" + name]; + } +}; + +function warn(message) { + if (typeof console != "undefined" && console.warn) + console.warn.apply(console, arguments); +} + +function reportError(msg, data) { + var e = new Error(msg); + e.data = data; + if (typeof console == "object" && console.error) + console.error(e); + setTimeout(function() { throw e; }); +} + +var AppConfig = function() { + this.$defaultOptions = {}; +}; + +(function() { + // module loading + oop.implement(this, EventEmitter); + /* + * option {name, value, initialValue, setterName, set, get } + */ + this.defineOptions = function(obj, path, options) { + if (!obj.$options) + this.$defaultOptions[path] = obj.$options = {}; + + Object.keys(options).forEach(function(key) { + var opt = options[key]; + if (typeof opt == "string") + opt = {forwardTo: opt}; + + opt.name || (opt.name = key); + obj.$options[opt.name] = opt; + if ("initialValue" in opt) + obj["$" + opt.name] = opt.initialValue; + }); + + // implement option provider interface + oop.implement(obj, optionsProvider); + + return this; + }; + + this.resetOptions = function(obj) { + Object.keys(obj.$options).forEach(function(key) { + var opt = obj.$options[key]; + if ("value" in opt) + obj.setOption(key, opt.value); + }); + }; + + this.setDefaultValue = function(path, name, value) { + var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {}); + if (opts[name]) { + if (opts.forwardTo) + this.setDefaultValue(opts.forwardTo, name, value); + else + opts[name].value = value; + } + }; + + this.setDefaultValues = function(path, optionHash) { + Object.keys(optionHash).forEach(function(key) { + this.setDefaultValue(path, key, optionHash[key]); + }, this); + }; + + this.warn = warn; + this.reportError = reportError; + +}).call(AppConfig.prototype); + +exports.AppConfig = AppConfig; + +}); diff --git a/plugins/node_modules/ace/lib/ace/lib/bidiutil.js b/plugins/node_modules/ace/lib/ace/lib/bidiutil.js new file mode 100644 index 00000000..522a8df5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/lib/bidiutil.js @@ -0,0 +1,406 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641']; +var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a']; +var dir = 0, hiLevel = 0; +var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false; + +var impTab_LTR = [ + /* L, R, EN, AN, N, IL, Cond */ +/* 0 LTR text */ [ 0, 3, 0, 1, 0, 0, 0 ], +/* 1 LTR+AN */ [ 0, 3, 0, 1, 2, 2, 0 ], +/* 2 LTR+AN+N */ [ 0, 3, 0, 0x11, 2, 0, 1 ], +/* 3 RTL text */ [ 0, 3, 5, 5, 4, 1, 0 ], +/* 4 RTL cont */ [ 0, 3, 0x15, 0x15, 4, 0, 1 ], +/* 5 RTL+EN/AN */ [ 0, 3, 5, 5, 4, 2, 0 ] +]; + +var impTab_RTL = [ + /* L, R, EN, AN, N, IL, Cond */ +/* 0 RTL text */ [ 2, 0, 1, 1, 0, 1, 0 ], +/* 1 RTL+EN/AN */ [ 2, 0, 1, 1, 0, 2, 0 ], +/* 2 LTR text */ [ 2, 0, 2, 1, 3, 2, 0 ], +/* 3 LTR+cont */ [ 2, 0, 2, 0x21, 3, 1, 1 ] +]; + +var LTR = 0, RTL = 1; + +var L = 0; /* left to right */ +var R = 1; /* right to left */ +var EN = 2; /* European digit */ +var AN = 3; /* Arabic-Indic digit */ +var ON = 4; /* neutral */ +var B = 5; /* block separator */ +var S = 6; /* segment separator */ +var AL = 7; /* Arabic Letter */ +var WS = 8; /* white space */ +var CS = 9; /* common digit separator */ +var ES = 10; /* European digit separator */ +var ET = 11; /* European digit terminator */ +var NSM = 12; /* Non Spacing Mark */ +var LRE = 13; /* LRE */ +var RLE = 14; /* RLE */ +var PDF = 15; /* PDF */ +var LRO = 16; /* LRO */ +var RLO = 17; /* RLO */ +var BN = 18; /* Boundary Neutral */ + +var UnicodeTBL00 = [ +BN,BN,BN,BN,BN,BN,BN,BN,BN,S,B,S,WS,B,BN,BN, +BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,B,B,B,S, +WS,ON,ON,ET,ET,ET,ON,ON,ON,ON,ON,ES,CS,ES,CS,CS, +EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,CS,ON,ON,ON,ON,ON, +ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L, +L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON, +ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L, +L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,BN, +BN,BN,BN,BN,BN,B,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN, +BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN, +CS,ON,ET,ET,ET,ET,ON,ON,ON,ON,L,ON,ON,BN,ON,ON, +ET,ET,EN,EN,ON,L,ON,ON,ON,EN,L,ON,ON,ON,ON,ON +]; + +var UnicodeTBL20 = [ +WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,BN,BN,BN,L,R , +ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON, +ON,ON,ON,ON,ON,ON,ON,ON,WS,B,LRE,RLE,PDF,LRO,RLO,CS, +ET,ET,ET,ET,ET,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON, +ON,ON,ON,ON,CS,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON, +ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,WS +]; + +function _computeLevels(chars, levels, len, charTypes) { + var impTab = dir ? impTab_RTL : impTab_LTR + , prevState = null, newClass = null, newLevel = null, newState = 0 + , action = null, cond = null, condPos = -1, i = null, ix = null, classes = []; + + if (!charTypes) { + for (i = 0, charTypes = []; i < len; i++) { + charTypes[i] = _getCharacterType(chars[i]); + } + } + hiLevel = dir; + lastArabic = false; + hasUBAT_AL = false; + hasUBAT_B = false; + hasUBAT_S = false; + for (ix = 0; ix < len; ix++){ + prevState = newState; + classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix); + newState = impTab[prevState][newClass]; + action = newState & 0xF0; + newState &= 0x0F; + levels[ix] = newLevel = impTab[newState][5]; + if (action > 0){ + if (action == 0x10){ + for(i = condPos; i < ix; i++){ + levels[i] = 1; + } + condPos = -1; + } else { + condPos = -1; + } + } + cond = impTab[newState][6]; + if (cond){ + if(condPos == -1){ + condPos = ix; + } + }else{ + if (condPos > -1){ + for(i = condPos; i < ix; i++){ + levels[i] = newLevel; + } + condPos = -1; + } + } + if (charTypes[ix] == B){ + levels[ix] = 0; + } + hiLevel |= newLevel; + } + if (hasUBAT_S){ + for(i = 0; i < len; i++){ + if(charTypes[i] == S){ + levels[i] = dir; + for(var j = i - 1; j >= 0; j--){ + if(charTypes[j] == WS){ + levels[j] = dir; + }else{ + break; + } + } + } + } + } +} + +function _invertLevel(lev, levels, _array) { + if (hiLevel < lev){ + return; + } + if (lev == 1 && dir == RTL && !hasUBAT_B){ + _array.reverse(); + return; + } + var len = _array.length, start = 0, end, lo, hi, tmp; + while(start < len){ + if (levels[start] >= lev){ + end = start + 1; + while(end < len && levels[end] >= lev){ + end++; + } + for(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){ + tmp = _array[lo]; + _array[lo] = _array[hi]; + _array[hi] = tmp; + } + start = end; + } + start++; + } +} + +function _getCharClass(chars, types, classes, ix) { + var cType = types[ix], wType, nType, len, i; + switch(cType){ + case L: + case R: + lastArabic = false; + case ON: + case AN: + return cType; + case EN: + return lastArabic ? AN : EN; + case AL: + lastArabic = true; + hasUBAT_AL = true; + return R; + case WS: + return ON; + case CS: + if (ix < 1 || (ix + 1) >= types.length || + ((wType = classes[ix - 1]) != EN && wType != AN) || + ((nType = types[ix + 1]) != EN && nType != AN)){ + return ON; + } + if (lastArabic){nType = AN;} + return nType == wType ? nType : ON; + case ES: + wType = ix > 0 ? classes[ix - 1] : B; + if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){ + return EN; + } + return ON; + case ET: + if (ix > 0 && classes[ix - 1] == EN){ + return EN; + } + if (lastArabic){ + return ON; + } + i = ix + 1; + len = types.length; + while (i < len && types[i] == ET){ + i++; + } + if (i < len && types[i] == EN){ + return EN; + } + return ON; + case NSM: + len = types.length; + i = ix + 1; + while (i < len && types[i] == NSM){ + i++; + } + if (i < len){ + var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E; + + wType = types[i]; + if (rtlCandidate && (wType == R || wType == AL)){ + return R; + } + } + + if (ix < 1 || (wType = types[ix - 1]) == B){ + return ON; + } + return classes[ix - 1]; + case B: + lastArabic = false; + hasUBAT_B = true; + return dir; + case S: + hasUBAT_S = true; + return ON; + case LRE: + case RLE: + case LRO: + case RLO: + case PDF: + lastArabic = false; + case BN: + return ON; + } +} + +function _getCharacterType( ch ) { + var uc = ch.charCodeAt(0), hi = uc >> 8; + + if (hi == 0) { + return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]); + } else if (hi == 5) { + return (/[\u0591-\u05f4]/.test(ch) ? R : L); + } else if (hi == 6) { + if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch)) + return NSM; + else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch)) + return AN; + else if (uc == 0x066A) + return ET; + else if (/[\u06f0-\u06f9]/.test(ch)) + return EN; + else + return AL; + } else if (hi == 0x20 && uc <= 0x205F) { + return UnicodeTBL20[uc & 0xFF]; + } else if (hi == 0xFE) { + return (uc >= 0xFE70 ? AL : ON); + } + return ON; +} + +function _isArabicDiacritics( ch ) { + return (ch >= '\u064b' && ch <= '\u0655'); +} + +/* Strong LTR character (0 - even), regular width */ +exports.L = L; +/* Strong RTL character (1 - odd), Bidi width */ +exports.R = R; +/* European digit (2 - even), regular width */ +exports.EN = EN; +/* Neutral RTL-by-context character (3 - odd), regular width */ +exports.ON_R = 3; +/* Hindi (Arabic) digit (4 - even), Bidi width */ +exports.AN = 4; +/* Arabic LamAlef (5 - odd), Half Bidi width */ +exports.R_H = 5; +/* invisible EOL (6 - even), zero width */ +exports.B = 6; + +exports.DOT = "\xB7"; + +/** + * Performs text reordering by implementing Unicode Bidi algorithm + * with aim to produce logical<->visual map and Bidi levels + * @param {String} text string to be reordered + * @param {Array} unicode character types produced by call to 'hasBidiCharacters' + * @param {Boolean} 'true' for right-to-left text direction, otherwise 'false' + * + * @return {Object} An object containing logicalFromVisual map and Bidi levels + **/ +exports.doBidiReorder = function(text, textCharTypes, isRtl) { + if (text.length < 2) + return {}; + + var chars = text.split(""), logicalFromVisual = new Array(chars.length), + bidiLevels = new Array(chars.length), levels = []; + + dir = isRtl ? RTL : LTR; + + _computeLevels(chars, levels, chars.length, textCharTypes); + + for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++); + + _invertLevel(2, levels, logicalFromVisual); + _invertLevel(1, levels, logicalFromVisual); + + for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width + if (textCharTypes[i] === AN) { + levels[i] = exports.AN; + } else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) + || textCharTypes[i] === ON || textCharTypes[i] === BN)) { + levels[i] = exports.ON_R; + } else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) { + levels[i - 1] = levels[i] = exports.R_H; + i++; + } + } + /* fix level to mark zero length EOL */ + if (chars[chars.length - 1] === exports.DOT) + levels[chars.length - 1] = exports.B; + + for (var i = 0; i < logicalFromVisual.length; i++) { + bidiLevels[i] = levels[logicalFromVisual[i]]; + } + + return {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels}; +}; + +/** + * Performs character classification, to be used in Unicode Bidi algorithm. + * @param {String} text string to be reordered + * @param {Array} unicode character types (to be filled by this method) + * + * @return {Boolean} 'true' if text contains Bidi characters, otherwise 'false' + **/ +exports.hasBidiCharacters = function(text, textCharTypes){ + var ret = false; + for (var i = 0; i < text.length; i++){ + textCharTypes[i] = _getCharacterType(text.charAt(i)); + if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL)) + ret = true; + } + return ret; +}; + +/** + * Returns visual index corresponding to logical index basing on logicalFromvisual + * map provided by Unicode Bidi algorithm. + * @param {int} logical index of character in text buffer + * @param {Object} object containing logicalFromVisual map + * + * @return {int} visual index (on display) corresponding to logical index + **/ +exports.getVisualFromLogicalIdx = function(logIdx, rowMap) { + for (var i = 0; i < rowMap.logicalFromVisual.length; i++) { + if (rowMap.logicalFromVisual[i] == logIdx) + return i; + } + return 0; +}; + +}); diff --git a/plugins/node_modules/ace/lib/ace/lib/dom.js b/plugins/node_modules/ace/lib/ace/lib/dom.js new file mode 100644 index 00000000..69c4cb94 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/lib/dom.js @@ -0,0 +1,286 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var XHTML_NS = "http://www.w3.org/1999/xhtml"; + +exports.getDocumentHead = function(doc) { + if (!doc) + doc = document; + return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; +}; + +exports.createElement = function(tag, ns) { + return document.createElementNS ? + document.createElementNS(ns || XHTML_NS, tag) : + document.createElement(tag); +}; + +exports.hasCssClass = function(el, name) { + var classes = (el.className + "").split(/\s+/g); + return classes.indexOf(name) !== -1; +}; + +/* +* Add a CSS class to the list of classes on the given node +*/ +exports.addCssClass = function(el, name) { + if (!exports.hasCssClass(el, name)) { + el.className += " " + name; + } +}; + +/* +* Remove a CSS class from the list of classes on the given node +*/ +exports.removeCssClass = function(el, name) { + var classes = el.className.split(/\s+/g); + while (true) { + var index = classes.indexOf(name); + if (index == -1) { + break; + } + classes.splice(index, 1); + } + el.className = classes.join(" "); +}; + +exports.toggleCssClass = function(el, name) { + var classes = el.className.split(/\s+/g), add = true; + while (true) { + var index = classes.indexOf(name); + if (index == -1) { + break; + } + add = false; + classes.splice(index, 1); + } + if (add) + classes.push(name); + + el.className = classes.join(" "); + return add; +}; + + +/* + * Add or remove a CSS class from the list of classes on the given node + * depending on the value of include + */ +exports.setCssClass = function(node, className, include) { + if (include) { + exports.addCssClass(node, className); + } else { + exports.removeCssClass(node, className); + } +}; + +exports.hasCssString = function(id, doc) { + var index = 0, sheets; + doc = doc || document; + + if (doc.createStyleSheet && (sheets = doc.styleSheets)) { + while (index < sheets.length) + if (sheets[index++].owningElement.id === id) return true; + } else if ((sheets = doc.getElementsByTagName("style"))) { + while (index < sheets.length) + if (sheets[index++].id === id) return true; + } + + return false; +}; + +exports.importCssString = function importCssString(cssText, id, doc) { + doc = doc || document; + // If style is already imported return immediately. + if (id && exports.hasCssString(id, doc)) + return null; + + var style; + + if (id) + cssText += "\n/*# sourceURL=ace/css/" + id + " */"; + + if (doc.createStyleSheet) { + style = doc.createStyleSheet(); + style.cssText = cssText; + if (id) + style.owningElement.id = id; + } else { + style = exports.createElement("style"); + style.appendChild(doc.createTextNode(cssText)); + if (id) + style.id = id; + + exports.getDocumentHead(doc).appendChild(style); + } +}; + +exports.importCssStylsheet = function(uri, doc) { + if (doc.createStyleSheet) { + doc.createStyleSheet(uri); + } else { + var link = exports.createElement('link'); + link.rel = 'stylesheet'; + link.href = uri; + + exports.getDocumentHead(doc).appendChild(link); + } +}; + +exports.getInnerWidth = function(element) { + return ( + parseInt(exports.computedStyle(element, "paddingLeft"), 10) + + parseInt(exports.computedStyle(element, "paddingRight"), 10) + + element.clientWidth + ); +}; + +exports.getInnerHeight = function(element) { + return ( + parseInt(exports.computedStyle(element, "paddingTop"), 10) + + parseInt(exports.computedStyle(element, "paddingBottom"), 10) + + element.clientHeight + ); +}; + +exports.scrollbarWidth = function(document) { + var inner = exports.createElement("ace_inner"); + inner.style.width = "100%"; + inner.style.minWidth = "0px"; + inner.style.height = "200px"; + inner.style.display = "block"; + + var outer = exports.createElement("ace_outer"); + var style = outer.style; + + style.position = "absolute"; + style.left = "-10000px"; + style.overflow = "hidden"; + style.width = "200px"; + style.minWidth = "0px"; + style.height = "150px"; + style.display = "block"; + + outer.appendChild(inner); + + var body = document.documentElement; + body.appendChild(outer); + + var noScrollbar = inner.offsetWidth; + + style.overflow = "scroll"; + var withScrollbar = inner.offsetWidth; + + if (noScrollbar == withScrollbar) { + withScrollbar = outer.clientWidth; + } + + body.removeChild(outer); + + return noScrollbar-withScrollbar; +}; + +if (typeof document == "undefined") { + exports.importCssString = function() {}; + return; +} + +if (window.pageYOffset !== undefined) { + exports.getPageScrollTop = function() { + return window.pageYOffset; + }; + + exports.getPageScrollLeft = function() { + return window.pageXOffset; + }; +} +else { + exports.getPageScrollTop = function() { + return document.body.scrollTop; + }; + + exports.getPageScrollLeft = function() { + return document.body.scrollLeft; + }; +} + +if (window.getComputedStyle) + exports.computedStyle = function(element, style) { + if (style) + return (window.getComputedStyle(element, "") || {})[style] || ""; + return window.getComputedStyle(element, "") || {}; + }; +else + exports.computedStyle = function(element, style) { + if (style) + return element.currentStyle[style]; + return element.currentStyle; + }; + +/* + * Optimized set innerHTML. This is faster than plain innerHTML if the element + * already contains a lot of child elements. + * + * See http://blog.stevenlevithan.com/archives/faster-than-innerhtml for details + */ +exports.setInnerHtml = function(el, innerHtml) { + var element = el.cloneNode(false);//document.createElement("div"); + element.innerHTML = innerHtml; + el.parentNode.replaceChild(element, el); + return element; +}; + +if ("textContent" in document.documentElement) { + exports.setInnerText = function(el, innerText) { + el.textContent = innerText; + }; + + exports.getInnerText = function(el) { + return el.textContent; + }; +} +else { + exports.setInnerText = function(el, innerText) { + el.innerText = innerText; + }; + + exports.getInnerText = function(el) { + return el.innerText; + }; +} + +exports.getParentWindow = function(document) { + return document.defaultView || document.parentWindow; +}; + +}); diff --git a/plugins/node_modules/ace/lib/ace/lib/es6-shim.js b/plugins/node_modules/ace/lib/ace/lib/es6-shim.js new file mode 100644 index 00000000..e81d3d63 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/lib/es6-shim.js @@ -0,0 +1,66 @@ +define(function(require, exports, module) { + function defineProp(obj, name, val) { + Object.defineProperty(obj, name, { + value: val, + enumerable: false, + writable: true, + configurable: true, + }); + } + if (!String.prototype.startsWith) { + defineProp(String.prototype, "startsWith", function(searchString, position) { + position = position || 0; + return this.lastIndexOf(searchString, position) === position; + }); + } + if (!String.prototype.endsWith) { + // Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + defineProp(String.prototype, "endsWith", function(searchString, position) { + var subjectString = this; + if (position === undefined || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }); + } + if (!String.prototype.repeat) { + defineProp(String.prototype, "repeat", function(count) { + var result = ""; + var string = this; + while (count > 0) { + if (count & 1) + result += string; + + if (count >>= 1) + string += string; + } + return result; + }); + } + if (!String.prototype.includes) { + defineProp(String.prototype, "includes", function(str, position) { + return this.indexOf(str, position != -1); + }); + } + if (!Object.assign) { + Object.assign = function (target) { + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + if (source !== undefined && source !== null) { + Object.keys(source).forEach(function(key) { + output[key] = source[key]; + }); + } + } + return output; + }; + } + +}); diff --git a/plugins/node_modules/ace/lib/ace/lib/event.js b/plugins/node_modules/ace/lib/ace/lib/event.js new file mode 100644 index 00000000..fbbf7f7c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/lib/event.js @@ -0,0 +1,400 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var keys = require("./keys"); +var useragent = require("./useragent"); + +var pressedKeys = null; +var ts = 0; + +exports.addListener = function(elem, type, callback) { + if (elem.addEventListener) { + return elem.addEventListener(type, callback, false); + } + if (elem.attachEvent) { + var wrapper = function() { + callback.call(elem, window.event); + }; + callback._wrapper = wrapper; + elem.attachEvent("on" + type, wrapper); + } +}; + +exports.removeListener = function(elem, type, callback) { + if (elem.removeEventListener) { + return elem.removeEventListener(type, callback, false); + } + if (elem.detachEvent) { + elem.detachEvent("on" + type, callback._wrapper || callback); + } +}; + +/* +* Prevents propagation and clobbers the default action of the passed event +*/ +exports.stopEvent = function(e) { + exports.stopPropagation(e); + exports.preventDefault(e); + return false; +}; + +exports.stopPropagation = function(e) { + if (e.stopPropagation) + e.stopPropagation(); + else + e.cancelBubble = true; +}; + +exports.preventDefault = function(e) { + if (e.preventDefault) + e.preventDefault(); + else + e.returnValue = false; +}; + +/* + * @return {Number} 0 for left button, 1 for middle button, 2 for right button + */ +exports.getButton = function(e) { + if (e.type == "dblclick") + return 0; + if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey))) + return 2; + + // DOM Event + if (e.preventDefault) { + return e.button; + } + // old IE + else { + return {1:0, 2:2, 4:1}[e.button]; + } +}; + +exports.capture = function(el, eventHandler, releaseCaptureHandler) { + function onMouseUp(e) { + eventHandler && eventHandler(e); + releaseCaptureHandler && releaseCaptureHandler(e); + + exports.removeListener(document, "mousemove", eventHandler, true); + exports.removeListener(document, "mouseup", onMouseUp, true); + exports.removeListener(document, "dragstart", onMouseUp, true); + } + + exports.addListener(document, "mousemove", eventHandler, true); + exports.addListener(document, "mouseup", onMouseUp, true); + exports.addListener(document, "dragstart", onMouseUp, true); + + return onMouseUp; +}; + +exports.addTouchMoveListener = function (el, callback) { + var startx, starty; + exports.addListener(el, "touchstart", function (e) { + var touches = e.touches; + var touchObj = touches[0]; + startx = touchObj.clientX; + starty = touchObj.clientY; + }); + exports.addListener(el, "touchmove", function (e) { + var touches = e.touches; + if (touches.length > 1) return; + + var touchObj = touches[0]; + + e.wheelX = startx - touchObj.clientX; + e.wheelY = starty - touchObj.clientY; + + startx = touchObj.clientX; + starty = touchObj.clientY; + + callback(e); + }); +}; + +exports.addMouseWheelListener = function(el, callback) { + if ("onmousewheel" in el) { + exports.addListener(el, "mousewheel", function(e) { + var factor = 8; + if (e.wheelDeltaX !== undefined) { + e.wheelX = -e.wheelDeltaX / factor; + e.wheelY = -e.wheelDeltaY / factor; + } else { + e.wheelX = 0; + e.wheelY = -e.wheelDelta / factor; + } + callback(e); + }); + } else if ("onwheel" in el) { + exports.addListener(el, "wheel", function(e) { + var factor = 0.35; + switch (e.deltaMode) { + case e.DOM_DELTA_PIXEL: + e.wheelX = e.deltaX * factor || 0; + e.wheelY = e.deltaY * factor || 0; + break; + case e.DOM_DELTA_LINE: + case e.DOM_DELTA_PAGE: + e.wheelX = (e.deltaX || 0) * 5; + e.wheelY = (e.deltaY || 0) * 5; + break; + } + + callback(e); + }); + } else { + exports.addListener(el, "DOMMouseScroll", function(e) { + if (e.axis && e.axis == e.HORIZONTAL_AXIS) { + e.wheelX = (e.detail || 0) * 5; + e.wheelY = 0; + } else { + e.wheelX = 0; + e.wheelY = (e.detail || 0) * 5; + } + callback(e); + }); + } +}; + +exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) { + var clicks = 0; + var startX, startY, timer; + var eventNames = { + 2: "dblclick", + 3: "tripleclick", + 4: "quadclick" + }; + + function onMousedown(e) { + if (exports.getButton(e) !== 0) { + clicks = 0; + } else if (e.detail > 1) { + clicks++; + if (clicks > 4) + clicks = 1; + } else { + clicks = 1; + } + if (useragent.isIE) { + var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5; + if (!timer || isNewClick) + clicks = 1; + if (timer) + clearTimeout(timer); + timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600); + + if (clicks == 1) { + startX = e.clientX; + startY = e.clientY; + } + } + + e._clicks = clicks; + + eventHandler[callbackName]("mousedown", e); + + if (clicks > 4) + clicks = 0; + else if (clicks > 1) + return eventHandler[callbackName](eventNames[clicks], e); + } + function onDblclick(e) { + clicks = 2; + if (timer) + clearTimeout(timer); + timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600); + eventHandler[callbackName]("mousedown", e); + eventHandler[callbackName](eventNames[clicks], e); + } + if (!Array.isArray(elements)) + elements = [elements]; + elements.forEach(function(el) { + exports.addListener(el, "mousedown", onMousedown); + if (useragent.isOldIE) + exports.addListener(el, "dblclick", onDblclick); + }); +}; + +var getModifierHash = useragent.isMac && useragent.isOpera && !("KeyboardEvent" in window) + ? function(e) { + return 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0); + } + : function(e) { + return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); + }; + +exports.getModifierString = function(e) { + return keys.KEY_MODS[getModifierHash(e)]; +}; + +function normalizeCommandKeys(callback, e, keyCode) { + var hashId = getModifierHash(e); + + if (!useragent.isMac && pressedKeys) { + if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win"))) + hashId |= 8; + if (pressedKeys.altGr) { + if ((3 & hashId) != 3) + pressedKeys.altGr = 0; + else + return; + } + if (keyCode === 18 || keyCode === 17) { + var location = "location" in e ? e.location : e.keyLocation; + if (keyCode === 17 && location === 1) { + if (pressedKeys[keyCode] == 1) + ts = e.timeStamp; + } else if (keyCode === 18 && hashId === 3 && location === 2) { + var dt = e.timeStamp - ts; + if (dt < 50) + pressedKeys.altGr = true; + } + } + } + + if (keyCode in keys.MODIFIER_KEYS) { + keyCode = -1; + } + + // keyCode of right command is 93 on mac and 92 on windows. + // keyCode of left command key is 91 + if (hashId & 8 && (keyCode >= 91 && keyCode <= 93)) { + keyCode = -1; + } + + if (!hashId && keyCode === 13) { + var location = "location" in e ? e.location : e.keyLocation; + if (location === 3) { + callback(e, hashId, -keyCode); + if (e.defaultPrevented) + return; + } + } + + if (useragent.isChromeOS && hashId & 8) { + callback(e, hashId, keyCode); + if (e.defaultPrevented) + return; + else + hashId &= ~8; + } + + // If there is no hashId and the keyCode is not a function key, then + // we don't call the callback as we don't handle a command key here + // (it's a normal key/character input). + if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { + return false; + } + + return callback(e, hashId, keyCode); +} + + +exports.addCommandKeyListener = function(el, callback) { + var addListener = exports.addListener; + if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { + // Old versions of Gecko aka. Firefox < 4.0 didn't repeat the keydown + // event if the user pressed the key for a longer time. Instead, the + // keydown event was fired once and later on only the keypress event. + // To emulate the 'right' keydown behavior, the keyCode of the initial + // keyDown event is stored and in the following keypress events the + // stores keyCode is used to emulate a keyDown event. + var lastKeyDownKeyCode = null; + addListener(el, "keydown", function(e) { + lastKeyDownKeyCode = e.keyCode; + }); + addListener(el, "keypress", function(e) { + return normalizeCommandKeys(callback, e, lastKeyDownKeyCode); + }); + } else { + var lastDefaultPrevented = null; + + addListener(el, "keydown", function(e) { + pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; + var result = normalizeCommandKeys(callback, e, e.keyCode); + lastDefaultPrevented = e.defaultPrevented; + return result; + }); + + addListener(el, "keypress", function(e) { + if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { + exports.stopEvent(e); + lastDefaultPrevented = null; + } + }); + + addListener(el, "keyup", function(e) { + pressedKeys[e.keyCode] = null; + }); + + if (!pressedKeys) { + resetPressedKeys(); + addListener(window, "focus", resetPressedKeys); + } + } +}; +function resetPressedKeys() { + // console.log("resetting") + pressedKeys = Object.create(null); +} + +if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { + var postMessageId = 1; + exports.nextTick = function(callback, win) { + win = win || window; + var messageName = "zero-timeout-message-" + postMessageId; + exports.addListener(win, "message", function listener(e) { + if (e.data == messageName) { + exports.stopPropagation(e); + exports.removeListener(win, "message", listener); + callback(); + } + }); + win.postMessage(messageName, "*"); + }; +} + + +exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || window.oRequestAnimationFrame); + +if (exports.nextFrame) + exports.nextFrame = exports.nextFrame.bind(window); +else + exports.nextFrame = function(callback) { + setTimeout(callback, 17); + }; +}); diff --git a/plugins/node_modules/ace/lib/ace/lib/event_emitter.js b/plugins/node_modules/ace/lib/ace/lib/event_emitter.js new file mode 100644 index 00000000..4412e2be --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/lib/event_emitter.js @@ -0,0 +1,155 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var EventEmitter = {}; +var stopPropagation = function() { this.propagationStopped = true; }; +var preventDefault = function() { this.defaultPrevented = true; }; + +EventEmitter._emit = +EventEmitter._dispatchEvent = function(eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + + if (typeof e != "object" || !e) + e = {}; + + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + + listeners = listeners.slice(); + for (var i=0; i 0) { + if (count & 1) + result += string; + + if (count >>= 1) + string += string; + } + return result; +}; + +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; + +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; + +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; + +exports.copyObject = function(obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; + +exports.copyArray = function(array){ + var copy = []; + for (var i=0, l=array.length; i= 0) + ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]) + : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]); // for ie + +exports.isOldIE = exports.isIE && exports.isIE < 9; + +// Is this Firefox or related? +exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/); + +// Is this Opera +exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]"; + +// Is the user using a browser that identifies itself as WebKit +exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; + +exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; + +exports.isAIR = ua.indexOf("AdobeAIR") >= 0; + +exports.isIPad = ua.indexOf("iPad") >= 0; + +exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; + +exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream; + +if (exports.isIOS) exports.isMac = true; + +}); diff --git a/plugins/node_modules/ace/lib/ace/line_widgets.js b/plugins/node_modules/ace/lib/ace/line_widgets.js new file mode 100644 index 00000000..a7ba708a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/line_widgets.js @@ -0,0 +1,386 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var Range = require("./range").Range; + + +function LineWidgets(session) { + this.session = session; + this.session.widgetManager = this; + this.session.getRowLength = this.getRowLength; + this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; + this.updateOnChange = this.updateOnChange.bind(this); + this.renderWidgets = this.renderWidgets.bind(this); + this.measureWidgets = this.measureWidgets.bind(this); + this.session._changedWidgets = []; + this.$onChangeEditor = this.$onChangeEditor.bind(this); + + this.session.on("change", this.updateOnChange); + this.session.on("changeFold", this.updateOnFold); + this.session.on("changeEditor", this.$onChangeEditor); +} + +(function() { + this.getRowLength = function(row) { + var h; + if (this.lineWidgets) + h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; + else + h = 0; + if (!this.$useWrapMode || !this.$wrapData[row]) { + return 1 + h; + } else { + return this.$wrapData[row].length + 1 + h; + } + }; + + this.$getWidgetScreenLength = function() { + var screenRows = 0; + this.lineWidgets.forEach(function(w){ + if (w && w.rowCount && !w.hidden) + screenRows += w.rowCount; + }); + return screenRows; + }; + + this.$onChangeEditor = function(e) { + this.attach(e.editor); + }; + + this.attach = function(editor) { + if (editor && editor.widgetManager && editor.widgetManager != this) + editor.widgetManager.detach(); + + if (this.editor == editor) + return; + + this.detach(); + this.editor = editor; + + if (editor) { + editor.widgetManager = this; + editor.renderer.on("beforeRender", this.measureWidgets); + editor.renderer.on("afterRender", this.renderWidgets); + } + }; + this.detach = function(e) { + var editor = this.editor; + if (!editor) + return; + + this.editor = null; + editor.widgetManager = null; + + editor.renderer.off("beforeRender", this.measureWidgets); + editor.renderer.off("afterRender", this.renderWidgets); + var lineWidgets = this.session.lineWidgets; + lineWidgets && lineWidgets.forEach(function(w) { + if (w && w.el && w.el.parentNode) { + w._inDocument = false; + w.el.parentNode.removeChild(w.el); + } + }); + }; + + this.updateOnFold = function(e, session) { + var lineWidgets = session.lineWidgets; + if (!lineWidgets || !e.action) + return; + var fold = e.data; + var start = fold.start.row; + var end = fold.end.row; + var hide = e.action == "add"; + for (var i = start + 1; i < end; i++) { + if (lineWidgets[i]) + lineWidgets[i].hidden = hide; + } + if (lineWidgets[end]) { + if (hide) { + if (!lineWidgets[start]) + lineWidgets[start] = lineWidgets[end]; + else + lineWidgets[end].hidden = hide; + } else { + if (lineWidgets[start] == lineWidgets[end]) + lineWidgets[start] = undefined; + lineWidgets[end].hidden = hide; + } + } + }; + + this.updateOnChange = function(delta) { + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) return; + + var startRow = delta.start.row; + var len = delta.end.row - startRow; + + if (len === 0) { + // return + } else if (delta.action == 'remove') { + var removed = lineWidgets.splice(startRow + 1, len); + removed.forEach(function(w) { + w && this.removeLineWidget(w); + }, this); + this.$updateRows(); + } else { + var args = new Array(len); + args.unshift(startRow, 0); + lineWidgets.splice.apply(lineWidgets, args); + this.$updateRows(); + } + }; + + this.$updateRows = function() { + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) return; + var noWidgets = true; + lineWidgets.forEach(function(w, i) { + if (w) { + noWidgets = false; + w.row = i; + while (w.$oldWidget) { + w.$oldWidget.row = i; + w = w.$oldWidget; + } + } + }); + if (noWidgets) + this.session.lineWidgets = null; + }; + + this.addLineWidget = function(w) { + if (!this.session.lineWidgets) + this.session.lineWidgets = new Array(this.session.getLength()); + + var old = this.session.lineWidgets[w.row]; + if (old) { + w.$oldWidget = old; + if (old.el && old.el.parentNode) { + old.el.parentNode.removeChild(old.el); + old._inDocument = false; + } + } + + this.session.lineWidgets[w.row] = w; + + w.session = this.session; + + var renderer = this.editor.renderer; + if (w.html && !w.el) { + w.el = dom.createElement("div"); + w.el.innerHTML = w.html; + } + if (w.el) { + dom.addCssClass(w.el, "ace_lineWidgetContainer"); + w.el.style.position = "absolute"; + w.el.style.zIndex = 5; + renderer.container.appendChild(w.el); + w._inDocument = true; + } + + if (!w.coverGutter) { + w.el.style.zIndex = 3; + } + if (w.pixelHeight == null) { + w.pixelHeight = w.el.offsetHeight; + } + if (w.rowCount == null) { + w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; + } + + var fold = this.session.getFoldAt(w.row, 0); + w.$fold = fold; + if (fold) { + var lineWidgets = this.session.lineWidgets; + if (w.row == fold.end.row && !lineWidgets[fold.start.row]) + lineWidgets[fold.start.row] = w; + else + w.hidden = true; + } + + this.session._emit("changeFold", {data:{start:{row: w.row}}}); + + this.$updateRows(); + this.renderWidgets(null, renderer); + this.onWidgetChanged(w); + return w; + }; + + this.removeLineWidget = function(w) { + w._inDocument = false; + w.session = null; + if (w.el && w.el.parentNode) + w.el.parentNode.removeChild(w.el); + if (w.editor && w.editor.destroy) try { + w.editor.destroy(); + } catch(e){} + if (this.session.lineWidgets) { + var w1 = this.session.lineWidgets[w.row]; + if (w1 == w) { + this.session.lineWidgets[w.row] = w.$oldWidget; + if (w.$oldWidget) + this.onWidgetChanged(w.$oldWidget); + } else { + while (w1) { + if (w1.$oldWidget == w) { + w1.$oldWidget = w.$oldWidget; + break; + } + w1 = w1.$oldWidget; + } + } + } + this.session._emit("changeFold", {data:{start:{row: w.row}}}); + this.$updateRows(); + }; + + this.getWidgetsAtRow = function(row) { + var lineWidgets = this.session.lineWidgets; + var w = lineWidgets && lineWidgets[row]; + var list = []; + while (w) { + list.push(w); + w = w.$oldWidget; + } + return list; + }; + + this.onWidgetChanged = function(w) { + this.session._changedWidgets.push(w); + this.editor && this.editor.renderer.updateFull(); + }; + + this.measureWidgets = function(e, renderer) { + var changedWidgets = this.session._changedWidgets; + var config = renderer.layerConfig; + + if (!changedWidgets || !changedWidgets.length) return; + var min = Infinity; + for (var i = 0; i < changedWidgets.length; i++) { + var w = changedWidgets[i]; + if (!w || !w.el) continue; + if (w.session != this.session) continue; + if (!w._inDocument) { + if (this.session.lineWidgets[w.row] != w) + continue; + w._inDocument = true; + renderer.container.appendChild(w.el); + } + + w.h = w.el.offsetHeight; + + if (!w.fixedWidth) { + w.w = w.el.offsetWidth; + w.screenWidth = Math.ceil(w.w / config.characterWidth); + } + + var rowCount = w.h / config.lineHeight; + if (w.coverLine) { + rowCount -= this.session.getRowLineCount(w.row); + if (rowCount < 0) + rowCount = 0; + } + if (w.rowCount != rowCount) { + w.rowCount = rowCount; + if (w.row < min) + min = w.row; + } + } + if (min != Infinity) { + this.session._emit("changeFold", {data:{start:{row: min}}}); + this.session.lineWidgetWidth = null; + } + this.session._changedWidgets = []; + }; + + this.renderWidgets = function(e, renderer) { + var config = renderer.layerConfig; + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var first = Math.min(this.firstRow, config.firstRow); + var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); + + while (first > 0 && !lineWidgets[first]) + first--; + + this.firstRow = config.firstRow; + this.lastRow = config.lastRow; + + renderer.$cursorLayer.config = config; + for (var i = first; i <= last; i++) { + var w = lineWidgets[i]; + if (!w || !w.el) continue; + if (w.hidden) { + w.el.style.top = -100 - (w.pixelHeight || 0) + "px"; + continue; + } + if (!w._inDocument) { + w._inDocument = true; + renderer.container.appendChild(w.el); + } + var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top; + if (!w.coverLine) + top += config.lineHeight * this.session.getRowLineCount(w.row); + w.el.style.top = top - config.offset + "px"; + + var left = w.coverGutter ? 0 : renderer.gutterWidth; + if (!w.fixedWidth) + left -= renderer.scrollLeft; + w.el.style.left = left + "px"; + + if (w.fullWidth && w.screenWidth) { + w.el.style.minWidth = config.width + 2 * config.padding + "px"; + } + + if (w.fixedWidth) { + w.el.style.right = renderer.scrollBar.getWidth() + "px"; + } else { + w.el.style.right = ""; + } + } + }; + +}).call(LineWidgets.prototype); + + +exports.LineWidgets = LineWidgets; + +}); + + + + diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/highlight_rules_test.js b/plugins/node_modules/ace/lib/ace/mode/_test/highlight_rules_test.js new file mode 100644 index 00000000..d9d4a359 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/highlight_rules_test.js @@ -0,0 +1,250 @@ +var fs = require("fs"); +var path = require("path"); +if (!fs.existsSync) + fs.existsSync = path.existsSync; + +require("amd-loader"); + +var cwd = __dirname + "/"; +var root = path.normalize(cwd + Array(5).join("../")); + +function jsFileList(path, filter) { + if (!filter) filter = /_test/; + return fs.readdirSync(path).map(function(x) { + if (x.slice(-3) == ".js" && !filter.test(x) && !/\s/.test(x)) + return x.slice(0, -3); + }).filter(Boolean); +} + +function modeList() { + return jsFileList(cwd + "../", /_highlight_rules|_test|_worker|xml_util|_outdent|behaviour|completions/); +} + +function checkModes() { + modeList().forEach(function(modeName, i) { + console.log(padNumber(i+1, 3) + ") check: \u001b[33m" + modeName + "\u001b[0m"); + try { + var Mode = require("../" + modeName).Mode; + } catch(e) { + console.warn("Can't load mode :" + modeName, e); + return; + } + var m = new Mode(); + if (!("lineCommentStart" in m) && !("blockComment" in m)) + console.warn("missing comment in " + modeName); + if (!m.$id) + console.warn("missing id in " + modeName); + var tokenizer = (new Mode).getTokenizer(); + + testComments(m.lineCommentStart, testLineComment, tokenizer, modeName); + testComments(m.blockComment, testBlockComment, tokenizer, modeName); + }); + + function testComments(desc, fn, tokenizer, modeName) { + if (desc) { + if (Array.isArray(desc)) { + desc.forEach(function(x) { + fn(tokenizer, x, modeName); + }); + } else { + fn(tokenizer, desc, modeName); + } + } + } + + function testBlockComment(tokenizer, blockComment, modeName) { + if (blockComment.lineStartOnly) + return; // TODO test + var str = blockComment.start + " " + blockComment.end; + str = blockComment.start + str; + if (blockComment.nestable) + str += blockComment.end; + var data = tokenizer.getLineTokens(str, "start"); + var isBroken = data.tokens.some(function(t) { return !/comment/.test(t.type); }); + if (isBroken) + console.warn("broken blockComment in " + modeName, data); + if (!/start/.test(data.state)) + console.warn("broken state after blockComment in " + modeName, data); + } + + function testLineComment(tokenizer, commentStart, modeName) { + var tokens = tokenizer.getLineTokens(commentStart + " ", "start").tokens; + if (!/comment/.test(tokens[0].type)) + console.warn("broken lineCommentStart in " + modeName); + } +} + +function generateTestData(names, force) { + var docRoot = root + "/demo/kitchen-sink/docs"; + var docs = fs.readdirSync(docRoot); + var specialDocs = fs.readdirSync(cwd); + var modes = modeList(); + + // console.log("Docs:", docs); + // console.log("Modes:", modes); + + docs.forEach(function(docName) { + var p = docName.toLowerCase().split("."); + if (!p[1]) + return; + var modeName; + if (modes.indexOf(p[0]) != -1) + modeName = p[0]; + else if (modes.indexOf(p[1]) != -1) + modeName = p[1]; + else + modeName = {"txt": "text", cpp: "c_cpp"}[p[1]]; + + if (names && names.length && names.indexOf(modeName) == -1) + return; + + var outputPath = cwd + "tokens_" + modeName + ".json"; + try { + var oldOutput = require(outputPath); + } catch(e) {} + if (oldOutput && !force) { + var oldText = oldOutput.map(function(x) { + if (x.length > 1 && typeof x[x.length - 1] == "string") + return x[x.length - 1]; + return x.slice(1).map(function(tok) { + return tok[1]; + }).join(""); + }).join("\n"); + } + + var filePath = "text_" + modeName + ".txt"; + if (specialDocs.indexOf(filePath) !== -1) { + filePath = cwd + filePath; + } else { + filePath = docRoot + "/" + docName; + // oldText = ""; + } + var text = oldText ||fs.readFileSync(filePath, "utf8"); + + try { + var Mode = require("../" + modeName).Mode; + } catch(e) { + console.warn("Can't load mode :" + modeName, p, e); + return; + } + console.log(modeName); + var tokenizer = new Mode().getTokenizer(); + + var state = "start"; + var data = text.split(/\r\n|\r|\n/).map(function(line) { + var data = tokenizer.getLineTokens(line, state); + var tmp = []; + tmp.push(JSON.stringify(data.state)); + var tokenizedLine = ""; + data.tokens.forEach(function(x) { + tokenizedLine += x.value; + tmp.push(JSON.stringify([x.type, x.value])); + }); + if (tokenizedLine != line) + tmp.push(JSON.stringify(line)); + state = data.state; + return tmp.join(",\n "); + }); + + var jsonStr = "[[\n " + data.join("\n],[\n ") + "\n]]"; + + if (oldOutput && JSON.stringify(JSON.parse(jsonStr)) == JSON.stringify(oldOutput)) + return; + + fs.writeFileSync(outputPath, jsonStr, "utf8"); + }); +} + +function test(startAt) { + var modes = fs.readdirSync(cwd).map(function(x) { + return (x.match(/tokens_(.*).json/) || {})[1]; + }).filter(function(x){return !!x;}); + + for (var i = Math.max(0, startAt||0); i < modes.length; i++) + testMode(modes[i], i); + + console.log("\u001b[32m" + "all ok" + "\u001b[0m"); +} +function testMode(modeName, i) { + console.log(padNumber(i+1, 3) + ") testing: \u001b[33m" + modeName + "\u001b[0m"); + + var text = fs.readFileSync(cwd + "tokens_" + modeName + ".json", "utf8"); + var data = JSON.parse(text); + var Mode = require("../" + modeName).Mode; + var tokenizer = new Mode().getTokenizer(); + + var state = "start"; + data.forEach(function(lineData) { + lineData.values = []; + lineData.types = []; + lineData.state = lineData.shift(); + var line = null; + if (typeof lineData[lineData.length - 1] == "string") + line = lineData.pop(); + lineData.forEach(function(x) { + lineData.types.push(x[0]); + lineData.values.push(x[1]); + }); + if (typeof line != "string") + line = lineData.values.join(""); + + var tokens = tokenizer.getLineTokens(line, state); + var values = tokens.tokens.map(function(x) {return x.value;}); + var types = tokens.tokens.map(function(x) {return x.type;}); + + var err = testEqual([ + JSON.stringify(lineData.state), JSON.stringify(tokens.state), + lineData.types, types, + lineData.values, values]); + + if (err) { + console.log(line); + throw "error"; + } + + state = tokens.state; + }); +} +function testEqual(a) { + var err; + if (a[0] + "" !== a[1] + "") { + console.log(a[0],a[1]); + err = 1; + } + + if ( a[2] + "" !== a[3] + "" || a[4] + "" !== a[5] + "") { + arrayDiff(a[2],a[3]); + arrayDiff(a[4],a[5]); + err = 1; + } + return err; +} +function arrayDiff(a1, a2) { + var l = Math.max(a1.length, a2.length); + var out = []; + for (var i = 0; i < l; i++) { + out.push("\n", padNumber(i+1, 3), ") "); + if (a1[i] !== a2[i]) + out.push("\u001b[31m", a1[i], "\u001b[0m != \u001b[32m", a2[i], "\u001b[0m"); + else + out.push(a1[i]); + } + console.log(out.join("")); +} +function padNumber(num, digits) { + return (" " + num).slice(-digits); +} + +// cli +var arg = process.argv[2]; +if (!arg) { + test(); + checkModes(); +} else if (/--?g(en)?/.test(arg)) + generateTestData(process.argv.splice(3)); +else if (/--?c(heck)?/.test(arg)) + checkModes(); +else if (/\d+/.test(arg)) + test(parseInt(process.argv[2],10) || 0); +else + testMode(arg, -1); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/package.json b/plugins/node_modules/ace/lib/ace/mode/_test/package.json new file mode 100644 index 00000000..3fdc706d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/package.json @@ -0,0 +1,8 @@ +{ + "name": "ace-mode-creator", + "version": "0.1.0", + "dependencies": { + "connect": "", + "socket.io": "" + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_asciidoc.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_asciidoc.txt new file mode 100644 index 00000000..af7eaecc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_asciidoc.txt @@ -0,0 +1,111 @@ +------------------------------------ +----------------------------------- +_ita_lic_, *bo*ld*, +mo+no+, normal. +``double quoted'', `single quoted'. + normal, ^super^, ~sub~. + +'''' +Escaped: +\_italic_, +++_italic_+++, +t\__e__st, +++t__e__st+++, ++++bold+++, $$normal$$ +\¶ ¶ +\`not single quoted' +\`\`not double quoted'' + + +[fffff] ++++++++++++++++++++++++++++++++++++++ +(C) {ss} ss ++++++++++++++++++++++++++++++++++++++ + +............. +callout <1> +.............. + +> 1 +1> 2 +<2> 3 + +Escaped: +\_italic_, +t\__e__st, o__ + +.optional title +............. +callout <1> +.............. + + +:macro: dddd + +.lists +. 1 +.. 2 +... d +..... big ++ +continue + +next line +xi) no ++la+tin++ + +xi) la++tin++ +2. num__ber__ [red]#red# +-- + 5. f <> {macro} +-- +image::path[beauty] ->--<= -- replacements + + image::s +sssss +sss +sssss + + +== 1 + heading +=== not a heading +==================================== + +================================== +====4 +NOTE: above + +NOTE: above + +[[x6]] +WARNING: + +[options[]] +--------------------------- +literal +--------------------------- + + += Tables +|==================================== +| _italic_ | *bold* | text | (R) + +|==================================== + + +[more, options] +/////////// +comment +/////////// +// one line comment + + + +[red]#red text# [yellow-background]#on yellow# +[big]#large# [red yellow-background big]*all bold* + + +https://site text callto:ace http://ace.ajaxorg.com[awesome] + .still normal text +.break out thoug should not +--------------------------- +/////////////////////////// +--------------------------- + + diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_coffee.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_coffee.txt new file mode 100644 index 00000000..2d9ba5ad --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_coffee.txt @@ -0,0 +1,57 @@ +#test: tokenize keyword + for (i 1..2) +#test: tokenize regexp +/"[a]/ +#test: tokenize functions +foo = ({args}) -> + foo = ({a1, a2}) -> + foo = ({@a1, a2}) -> + foo : ({args}) -> + foo = ({args}) -> + foo = ({0abc}) -> + foo = ({/abc}) => + foo = ({abc/}) -> + foo = ({#abc}) -> + foo = ({abc#}) -> + foo = ({)abc}) -> + foo = ({abc)}) -> + foo = ({a{bc}) -> + foo = ({}) -> + foo = ({ }) -> + foo : ({}) -> + foo = (args) -> + foo = (arg1, arg2) -> + foo = (arg1 = 1, arg2 = 'name') -> + foo = (@arg1 = /abc/, arg2 = 'name') -> + #test: tokenize function: invalid case: + foo=(/args) -> + foo = () -> + foo = ( ) -> + foo : ( ) -> + window.foo = (args) -> + foo = -> + foo = -> + foo : -> + #test: tokenize callback function + foo bar: 1, (args) -> + foo = (1, 2 (x) -> +#test: tokenize class +class Foo +class Foo extends Bar +#test: tokenize illegal name property +foo.static.function +#!test tokenize string with interpolation +a = "#{ 22 / 7 + {x: "#{a + b}"} + 2}" +" #{ "" + {} } )" +"""heredoc + """ +do -> + ### + herecomment + ### + re = /regex/imgy.test /// + heregex # comment + ///imgy + this isnt: `just + JavaScript` + undefined diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_coldfusion.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_coldfusion.txt new file mode 100644 index 00000000..9dd432bc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_coldfusion.txt @@ -0,0 +1,8 @@ + + + z ---> welcome="Hello World!"> + z --> +#welcome# + + Dateformat(now()) + \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_curly.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_curly.txt new file mode 100644 index 00000000..1be54b59 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_curly.txt @@ -0,0 +1,9 @@ +tokenize Curly template{{test}} +tokenize embedded script +'123' +tokenize multiline attribute value with double quotes + +tokenize multiline attribute value with single quotes + diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_ejs.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_ejs.txt new file mode 100644 index 00000000..0c6c8c3c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_ejs.txt @@ -0,0 +1,39 @@ + + + + Cloud9 Rocks! + + + + + + + + + <% if (!isRoot) { %> + + + + + <% } %> + <% entries.forEach(function(entry) { %> + + + + + <% }) %> +
    NameSize
    ..
    + + <%= entry.name %> + <%= entry.size %>
    + +value="<%=window%>" +<% + } +%> + /> + + \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_gobstones.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_gobstones.txt new file mode 100644 index 00000000..4768d5f9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_gobstones.txt @@ -0,0 +1,19 @@ +program { + /* + * A gobstons multiline comment + * Taken from: + * http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/" + */ + sumar(2, 3) + } + function sumar(a, b) { + r := a + b + } + // unreachable code + -- unreachable code + # unreachable code + procedure hacerAlgo() { + Mover(Este) + Poner(Rojo) + Sacar(Azul) + } \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_html.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_html.txt new file mode 100644 index 00000000..d2ce8aaa --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_html.txt @@ -0,0 +1,10 @@ + + +'123' + +
    + + + \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_javascript.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_javascript.txt new file mode 100644 index 00000000..390709ca --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_javascript.txt @@ -0,0 +1,100 @@ +//test: tokenize 'standard' functions +string.charCodeAt(23); document.getElementById('test'); console.log('Here it is');"; +test: /**tokenize doc*/ comment +/**tokenize doc comment with @tag {}*/ +//test: tokenize parens + var $line$ = "[{( )}]"; +//test tokenize arithmetic expression which looks like a regexp +a/b/c +a/=b/c +//test tokenize reg exps +a=/b/g +a+/b/g +a = 1 + /2 + 1/gimyxk +a=/a/ / /a/ +case /a/.test(c) +//test tokenize multi-line comment containing a single line comment +noRegex +/* foo // bar */ +canBeRegex; +/* foo // bar */ +// test tokenize identifier with umlauts +fu?e +// test // is not a regexp +{ // 123 +//test skipping escaped chars +'Meh\\nNeh' +console.log('\\u1232Feh' +"test multiline\ + strings" +a=' +b="\ +still a string + + +function foo(items, nada) { + for (var i=0; i>=t<>r>>>s>=0b1 + +foo.protoype.d = function(a, b, + c, d) +foo.d =function(a, b) +foo.d =function(a, /*****/ d"string" + +
    {2} + }> +1 { ++x } +
    + +var o = { + t:`${[].map(x => { + return x + })}` +}; diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_livescript.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_livescript.txt new file mode 100644 index 00000000..308ec1db --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_livescript.txt @@ -0,0 +1 @@ +# comment diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_lucene.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_lucene.txt new file mode 100644 index 00000000..c71f2680 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_lucene.txt @@ -0,0 +1,16 @@ +test: recognises AND as keyword +test: recognises OR as keyword +test: recognises NOT as keyword +test: recognises "hello this is dog" as string +test: recognises -"hello this is dog" as negation with string +test: recognises ~100 as text with proximity +test: recognises "hello this is dog"~100 as string with proximity +test: recognises raw:"hello this is dog" as keyword +test: recognises raw:foo as"keyword' +test: recognises "(" as opening parenthesis +test: recognises ")" as closing parenthesis +test: recognises foo* as text with asterisk +test: recognises foo? as text with interro +test: recognises single word as text + foo + \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_markdown.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_markdown.txt new file mode 100644 index 00000000..0450c820 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_markdown.txt @@ -0,0 +1,22 @@ +test: header 1 +#f +test: header 2 +## foo +test: header ends with ' #' +# # # +test: header ends with '#' +#foo# +test: 6+ #s is not a valid header +####### foo +test: # followed be only space is not a valid header +# +test: only space between #s is not a valid header +# # + +# test links [Cloud9 IDE](http://www.c9.io/) # +* [demo](http://ajaxorg.github.com/ace/) [+](escape(\) ) [+](a "title") [+](a "space" ) +* usually *work* fine (_em_) +in lists + +in plain text http://ace.ajaxorg.com + diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_php.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_php.txt new file mode 100644 index 00000000..b76aa8a5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_php.txt @@ -0,0 +1,24 @@ + not &js; diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_ruby.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_ruby.txt new file mode 100644 index 00000000..c16ff7c5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_ruby.txt @@ -0,0 +1,34 @@ + #test: symbol tokenizer + [:@thing, :$thing, :_thing, :thing, :Thing, :thing1, :thing_a, + :THING, :thing!, :thing=, :thing?, :t?, + :, :@, :$, :1, :1thing, :th?ing, :thi=ng, :1thing, + :th!ing, :thing# + ] + + #test: namespaces aren't symbols" : function() { + Namespaced::Class + #test: hex tokenizer + 0x9a, 0XA1, 0x9_a, 0x, 0x_9a, 0x9a_, + #test: float tokenizer + [1, +1, -1, 12_345, 0.000_1, + _, 3_1, 1_2, 1_.0, 0._1]; + +{:id => ?", :key => "value", anotherKey: [x, y?]} + +=begin +=end + +=begin x +=end- +=end x + + herDocs = [<<'FOO', <(vector: &[T], function: &fn(v: &T) -> U) -> ~[U] { + let mut accumulator = ~[]; + for vec::each(vector) |element| { + accumulator.push(function(element)); + } + return accumulator; +} + + +// numbers +14E-111_f64; 45isize 0x1i32 0o777u32 0b01 14f32 1_2.78f32 1_2.3E+7f32 + +// not numbers +14._E-111_f64; 0xi32; 0b777u + +// identifiers ending in constant.numeric +foo1; foo1u32; foo1f32; foo0xF; foo1.0 diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_wollok.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_wollok.txt new file mode 100644 index 00000000..6c7a0a7c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_wollok.txt @@ -0,0 +1,28 @@ +class Actividad { + method calcularMejora() +} + +class EstudiarMateria inherits Actividad { + var materia + var puntos = 0 + + new(m, p) { + materia = m + puntos = p + } + + override method calcularMejora() = puntos +} + +class EjercitarEnSimulador inherits Actividad { + var horas = 0 + new(h) { horas = h } + override method calcularMejora() = 10 * horas +} + +object pepita { + var energia = 100 + method volar(m) { + energia -= m + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/text_xml.txt b/plugins/node_modules/ace/lib/ace/mode/_test/text_xml.txt new file mode 100644 index 00000000..01f7b8a6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/text_xml.txt @@ -0,0 +1,7 @@ +//Juhu Kinners +test: two tags in the same lines should be in separate tokens" + +test: multiline attributes" + \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_abap.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_abap.json new file mode 100644 index 00000000..2afe165d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_abap.json @@ -0,0 +1,213 @@ +[[ + "start", + ["doc.comment","***************************************"] +],[ + "start", + ["doc.comment","** Program: EXAMPLE **"] +],[ + "start", + ["doc.comment","** Author: Joe Byte, 07-Jul-2007 **"] +],[ + "start", + ["doc.comment","***************************************"] +],[ + "start", + ["text"," "] +],[ + "start", + ["keyword","REPORT"], + ["text"," BOOKINGS"], + ["keyword.operator","."] +],[ + "start", + ["text"," "] +],[ + "start", + ["doc.comment","* Read flight bookings from the database"] +],[ + "start", + ["keyword","SELECT"], + ["keyword.operator"," * "], + ["keyword","FROM"], + ["text"," FLIGHTINFO"] +],[ + "start", + ["text"," "], + ["keyword","WHERE"], + ["text"," "], + ["keyword","CLASS"], + ["keyword.operator"," = "], + ["string","'Y'"], + ["text"," "], + ["comment","\"Y = economy"] +],[ + "start", + ["text"," "], + ["keyword","OR"], + ["text"," "], + ["keyword","CLASS"], + ["keyword.operator"," = "], + ["string","'C'"], + ["keyword.operator","."], + ["text"," "], + ["comment","\"C = business"] +],[ + "start", + ["paren.lparen","("], + ["invalid","..."], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["keyword","REPORT"], + ["text"," TEST"], + ["keyword.operator","."] +],[ + "start", + ["keyword","WRITE"], + ["text"," "], + ["string","'Hello World'"], + ["keyword.operator","."] +],[ + "start" +],[ + "start", + ["text","USERPROMPT"], + ["keyword.operator"," = "], + ["string","'Please double-click on a line in the output list '"], + ["text"," "], + ["keyword.operator","&"] +],[ + "start", + ["text"," "], + ["string","'to see the complete details of the transaction.'"], + ["keyword.operator","."] +],[ + "start" +],[ + "start" +],[ + "start", + ["keyword","DATA"], + ["text"," LAST_EOM "], + ["keyword","TYPE"], + ["text"," "], + ["support.type","D"], + ["keyword.operator","."], + ["text"," "], + ["comment","\"last end-of-month date"] +],[ + "start", + ["text"," "] +],[ + "start", + ["doc.comment","* Start from today's date"] +],[ + "start", + ["text"," LAST_EOM"], + ["keyword.operator"," = "], + ["variable.parameter","SY"], + ["keyword.operator","-"], + ["text","DATUM"], + ["keyword.operator","."] +],[ + "start", + ["doc.comment","* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to \"01\","] +],[ + "start", + ["doc.comment","* giving the first day of the current month"] +],[ + "start", + ["text"," LAST_EOM"], + ["constant.numeric","+6"], + ["paren.lparen","("], + ["constant.numeric","2"], + ["paren.rparen",")"], + ["keyword.operator"," = "], + ["string","'01'"], + ["keyword.operator","."] +],[ + "start", + ["doc.comment","* Subtract one day"] +],[ + "start", + ["text"," LAST_EOM"], + ["keyword.operator"," = "], + ["text","LAST_EOM"], + ["keyword.operator"," - "], + ["constant.numeric","1"], + ["keyword.operator","."] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","WRITE"], + ["keyword.operator",":"], + ["text"," "], + ["string","'Last day of previous month was'"], + ["keyword.operator",","], + ["text"," LAST_EOM"], + ["keyword.operator","."] +],[ + "start", + ["text"," "] +],[ + "start", + ["keyword","DATA"], + ["text"," "], + ["keyword.operator",":"], + ["text"," "], + ["keyword","BEGIN OF"], + ["text"," I_VBRK "], + ["keyword","OCCURS"], + ["text"," "], + ["constant.numeric","0"], + ["keyword.operator",","] +],[ + "start", + ["text"," VBELN "], + ["keyword","LIKE"], + ["text"," "], + ["variable.parameter","VBRK-VBELN"], + ["keyword.operator",","] +],[ + "start", + ["text"," ZUONR "], + ["keyword","LIKE"], + ["text"," "], + ["variable.parameter","VBRK-ZUONR"], + ["keyword.operator",","] +],[ + "start", + ["text"," "], + ["keyword","END OF"], + ["text"," I_VBRK"], + ["keyword.operator","."] +],[ + "start" +],[ + "start", + ["keyword","SORT"], + ["text"," i_vbrk "], + ["keyword","BY"], + ["text"," vbeln "], + ["keyword","ASCENDING"], + ["keyword.operator","."] +],[ + "start", + ["keyword","SORT"], + ["text"," i_vbrk "], + ["keyword","BY"], + ["text"," vbeln "], + ["keyword","DESCENDING"], + ["keyword.operator","."] +],[ + "start" +],[ + "start", + ["keyword","RETURN"], + ["keyword.operator","."] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_abc.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_abc.json new file mode 100644 index 00000000..c65ae2a5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_abc.json @@ -0,0 +1,2207 @@ +[[ + "start", + ["comment.line.percentage","%abc-2.1"] +],[ + "start", + ["information.keyword","H:"], + ["information.argument.string.unquoted","This file contains some example English tunes"] +],[ + "start", + ["comment.line.percentage","% note that the comments (like this one) are to highlight usages"] +],[ + "start", + ["comment.line.percentage","% and would not normally be included in such detail"] +],[ + "start", + ["information.keyword","O:"], + ["information.argument.string.unquoted","England "], + ["comment.line.percentage","% the origin of all tunes is England"] +],[ + "start" +],[ + "start", + ["information.keyword","X:"], + ["information.argument.string.unquoted","1 "], + ["comment.line.percentage","% tune no 1"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","Dusty Miller, The "], + ["comment.line.percentage","% title"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","Binny's Jig "], + ["comment.line.percentage","% an alternative title"] +],[ + "start", + ["information.keyword","C:"], + ["information.argument.string.unquoted","Trad. "], + ["comment.line.percentage","% traditional"] +],[ + "start", + ["information.keyword","R:"], + ["information.argument.string.unquoted","DH "], + ["comment.line.percentage","% double hornpipe"] +],[ + "start", + ["information.keyword","M:"], + ["information.argument.string.unquoted","3/4 "], + ["comment.line.percentage","% meter"] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","G "], + ["comment.line.percentage","% key"] +],[ + "start", + ["pitch.constant.numeric","B"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","D"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator",":|"] +],[ + "start", + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","g"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","a"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator",":|"] +],[ + "start", + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","/2"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","/2"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","/2"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","/2"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","D"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator",":|"] +],[ + "start", + ["information.keyword","W:"], + ["information.argument.string.unquoted","Hey, the dusty miller, and his dusty coat;"] +],[ + "start", + ["information.keyword","W:"], + ["information.argument.string.unquoted","He will win a shilling, or he spend a groat."] +],[ + "start", + ["information.keyword","W:"], + ["information.argument.string.unquoted","Dusty was the coat, dusty was the colour;"] +],[ + "start", + ["information.keyword","W:"], + ["information.argument.string.unquoted","Dusty was the kiss, that I got frae the miller."] +],[ + "start" +],[ + "start", + ["information.keyword","X:"], + ["information.argument.string.unquoted","2"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","Old Sir Simon the King"] +],[ + "start", + ["information.keyword","C:"], + ["information.argument.string.unquoted","Trad."] +],[ + "start", + ["information.keyword","S:"], + ["information.argument.string.unquoted","Offord MSS "], + ["comment.line.percentage","% from Offord manuscript"] +],[ + "start", + ["information.keyword","N:"], + ["information.argument.string.unquoted","see also Playford "], + ["comment.line.percentage","% reference note"] +],[ + "start", + ["information.keyword","M:"], + ["information.argument.string.unquoted","9/8"] +],[ + "start", + ["information.keyword","R:"], + ["information.argument.string.unquoted","SJ "], + ["comment.line.percentage","% slip jig"] +],[ + "start", + ["information.keyword","N:"], + ["information.argument.string.unquoted","originally in C "], + ["comment.line.percentage","% transcription note"] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","G"] +],[ + "start", + ["pitch.constant.numeric","D"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","D"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","D"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","D"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|"] +],[ + "start", + ["pitch.constant.numeric","D"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","D"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","D"], + ["barline.keyword.operator","|[1"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["text","["], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","G"], + ["text","] "], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","D"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|"], + ["text","\\ "], + ["comment.line.percentage","% no line-break in score"] +],[ + "start", + ["information.keyword","M:"], + ["information.argument.string.unquoted","12/8 "], + ["comment.line.percentage","% change of meter"] +],[ + "start", + ["barline.keyword.operator","[2"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["text","\\ "], + ["comment.line.percentage","% no line-break in score"] +],[ + "start", + ["information.keyword","M:"], + ["information.argument.string.unquoted","9/8 "], + ["comment.line.percentage","% change of meter"] +],[ + "start", + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["pitch.constant.numeric","D"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|]"] +],[ + "start" +],[ + "start", + ["information.keyword","X:"], + ["information.argument.string.unquoted","3"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","William and Nancy"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","New Mown Hay"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","Legacy, The"] +],[ + "start", + ["information.keyword","C:"], + ["information.argument.string.unquoted","Trad."] +],[ + "start", + ["information.keyword","O:"], + ["information.argument.string.unquoted","England; Gloucs; Bledington "], + ["comment.line.percentage","% place of origin"] +],[ + "start", + ["information.keyword","B:"], + ["information.argument.string.unquoted","Sussex Tune Book "], + ["comment.line.percentage","% can be found in these books"] +],[ + "start", + ["information.keyword","B:"], + ["information.argument.string.unquoted","Mally's Cotswold Morris vol.1 2"] +],[ + "start", + ["information.keyword","D:"], + ["information.argument.string.unquoted","Morris On "], + ["comment.line.percentage","% can be heard on this record"] +],[ + "start", + ["information.keyword","P:"], + ["information.argument.string.unquoted","(AB)2(AC)2A "], + ["comment.line.percentage","% play the parts in this order"] +],[ + "start", + ["information.keyword","M:"], + ["information.argument.string.unquoted","6/8"] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","G "] +],[ + "start", + ["information.keyword.embedded","[P:"], + ["information.argument.string.unquoted","A]"], + ["text"," "], + ["pitch.constant.numeric","D"], + ["barline.keyword.operator","|"], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","2"], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","F"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|"] +],[ + "start", + ["information.keyword.embedded","[P:"], + ["information.argument.string.unquoted","B]"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","e"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","e"], + ["text"," "], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","c"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","2"], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","F"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|"] +],[ + "start", + ["comment.line.percentage","% changes of meter, using inline fields"] +],[ + "start", + ["information.keyword.embedded","[T:"], + ["information.argument.string.unquoted","Slows]"], + ["information.keyword.embedded","[M:"], + ["information.argument.string.unquoted","4/4]"], + ["information.keyword.embedded","[L:"], + ["information.argument.string.unquoted","1/4]"], + ["information.keyword.embedded","[P:"], + ["information.argument.string.unquoted","C]"], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["string.quoted","\"Em\""], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text"," "], + ["string.quoted","\"A7\""], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["text","\\"] +],[ + "start", + ["text"," "], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["information.keyword.embedded","[M:"], + ["information.argument.string.unquoted","3/8]"], + ["information.keyword.embedded","[L:"], + ["information.argument.string.unquoted","1/8]"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["text"," "], + ["barline.keyword.operator","|"], + ["information.keyword.embedded","[M:"], + ["information.argument.string.unquoted","6/8]"], + ["text"," "], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","e"], + ["text"," "], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","c"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["string.quoted","\"C\""], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","2"], + ["string.quoted","\"D7\""], + ["pitch.constant.numeric","F"], + ["text"," "], + ["string.quoted","\"G\""], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|"] +],[ + "start" +],[ + "start", + ["information.keyword","X:"], + ["information.argument.string.unquoted","4"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","South Downs Jig"] +],[ + "start", + ["information.keyword","R:"], + ["information.argument.string.unquoted","jig"] +],[ + "start", + ["information.keyword","S:"], + ["information.argument.string.unquoted","Robert Harbron"] +],[ + "start", + ["information.keyword","M:"], + ["information.argument.string.unquoted","6/8"] +],[ + "start", + ["information.keyword","L:"], + ["information.argument.string.unquoted","1/8"] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","G"] +],[ + "start", + ["barline.keyword.operator","|:"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","3"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","D"], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","e"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["barline.keyword.operator","|"] +],[ + "start", + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","3"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","D"], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["text"," "], + ["barline.keyword.operator",":|"] +],[ + "start", + ["pitch.constant.numeric","B"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["information.keyword.embedded","[M:"], + ["information.argument.string.unquoted","9/8]"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","3"], + ["text"," "], + ["barline.keyword.operator","|"] +],[ + "start", + ["information.keyword.embedded","[M:"], + ["information.argument.string.unquoted","6/8]"], + ["pitch.constant.numeric","D"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","3"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","D"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text"," "], + ["pitch.constant.numeric","D"], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["barline.keyword.operator","|1"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["text"," "], + ["barline.keyword.operator",":|2"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","3"], + ["text"," "], + ["barline.keyword.operator","|]"] +],[ + "start" +],[ + "start", + ["information.keyword","X:"], + ["information.argument.string.unquoted","5"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","Atholl Brose"] +],[ + "start", + ["comment.line.percentage","% in this example, which reproduces Highland Bagpipe gracing,"] +],[ + "start", + ["comment.line.percentage","% the large number of grace notes mean that it is more convenient to be specific about"] +],[ + "start", + ["comment.line.percentage","% score line-breaks (using the $ symbol), rather than using code line breaks to indicate them"] +],[ + "start", + ["information.keyword","I:"], + ["information.argument.string.unquoted","linebreak $"] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","D"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["text","{"], + ["pitch.constant.numeric","e"], + ["text","}"], + ["pitch.constant.numeric","A"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text","}"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","A"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text","}"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["text","{"], + ["pitch.constant.numeric","e"], + ["text","}"], + ["pitch.constant.numeric","A"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text","}"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","f"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["text","{"], + ["pitch.constant.numeric","e"], + ["text","}"], + ["pitch.constant.numeric","A"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text","}"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","A"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text","}"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric",">"], + ["text","{"], + ["pitch.constant.numeric","d"], + ["text","}"], + ["pitch.constant.numeric","B"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","G"], + ["text"," {"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["text","}"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator",":|"], + ["text","$"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric","2"], + ["text"," {"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","G"], + ["text","}"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","f"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","d"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","d"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","d"], + ["text","}"], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","<"], + ["text","{"], + ["pitch.constant.numeric","e"], + ["text","}"], + ["pitch.constant.numeric","G"], + ["text"," {"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["text","}"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric","2"], + ["text"," {"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","G"], + ["text","}"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","<"], + ["text","{"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","G"], + ["text","}"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","a"], + ["text"," {"], + ["pitch.constant.numeric","f"], + ["text","}"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","e"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","f"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"] +],[ + "start", + ["text","{"], + ["pitch.constant.numeric","g"], + ["text","}"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","f"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","g"], + ["text"," {"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["text","}"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","c"], + ["text"," {"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","d"], + ["text","}"], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","<"], + ["text","{"], + ["pitch.constant.numeric","e"], + ["text","}"], + ["pitch.constant.numeric","G"], + ["text"," {"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["text","}"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|]"] +],[ + "start" +],[ + "start", + ["information.keyword","X:"], + ["information.argument.string.unquoted","6"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","Untitled Reel"] +],[ + "start", + ["information.keyword","C:"], + ["information.argument.string.unquoted","Trad."] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","D"] +],[ + "start", + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","g"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","b"], + ["text"," "], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","g"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","b"], + ["pitch.constant.numeric","g"], + ["text"," "], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","f"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|"], + ["text","\\"] +],[ + "start", + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|"] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","G"] +],[ + "start", + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|"] +],[ + "start" +],[ + "start", + ["information.keyword","X:"], + ["information.argument.string.unquoted","7"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted","Kitchen Girl"] +],[ + "start", + ["information.keyword","C:"], + ["information.argument.string.unquoted","Trad."] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","D"] +],[ + "start", + ["text","["], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","4"], + ["pitch.constant.numeric","a"], + ["duration.constant.numeric","4"], + ["text","] ["], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","4"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric","4"], + ["text","]"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","f"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","g"], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","b"], + ["pitch.constant.numeric","a"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","g"], + ["barline.keyword.operator","|"] +],[ + "start", + ["pitch.constant.numeric","a"], + ["duration.constant.numeric","4"], + ["text"," "], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric","4"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","d"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","4"], + ["barline.keyword.operator",":|"] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted","G"] +],[ + "start", + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","D"], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","3"], + ["pitch.constant.numeric","f"], + ["text"," "], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"] +],[ + "start", + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["text"," "], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","4"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","4"], + ["barline.keyword.operator",":|"] +],[ + "start" +],[ + "start", + ["comment.line.percentage","%abc-2.1"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","pagewidth 21cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","pageheight 29.7cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","topspace 0.5cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","topmargin 1cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","botmargin 0cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","leftmargin 1cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","rightmargin 1cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","titlespace 0cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","titlefont Times-Bold 32"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","subtitlefont Times-Bold 24"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","composerfont Times 16"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","vocalfont Times-Roman 14"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","staffsep 60pt"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","sysstaffsep 20pt"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","musicspace 1cm"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","vocalspace 5pt"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","measurenb 0"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","barsperstaff 5"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","scale 0.7"] +],[ + "start", + ["information.keyword","X:"], + ["information.argument.string.unquoted"," 1"] +],[ + "start", + ["information.keyword","T:"], + ["information.argument.string.unquoted"," Canzonetta a tre voci"] +],[ + "start", + ["information.keyword","C:"], + ["information.argument.string.unquoted"," Claudio Monteverdi (1567-1643)"] +],[ + "start", + ["information.keyword","M:"], + ["information.argument.string.unquoted"," C"] +],[ + "start", + ["information.keyword","L:"], + ["information.argument.string.unquoted"," 1/4"] +],[ + "start", + ["information.keyword","Q:"], + ["information.argument.string.unquoted"," \"Andante mosso\" 1/4 = 110"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","score [1 2 3]"] +],[ + "start", + ["information.keyword","V:"], + ["information.argument.string.unquoted"," 1 clef=treble name=\"Soprano\"sname=\"A\""] +],[ + "start", + ["information.keyword","V:"], + ["information.argument.string.unquoted"," 2 clef=treble name=\"Alto\" sname=\"T\""] +],[ + "start", + ["information.keyword","V:"], + ["information.argument.string.unquoted"," 3 clef=bass middle=d name=\"Tenor\" sname=\"B\""] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","MIDI program 1 75 % recorder"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","MIDI program 2 75"] +],[ + "start", + ["information.comment.line.percentage","%%"], + ["information.keyword.embedded","MIDI program 3 75"] +],[ + "start", + ["information.keyword","K:"], + ["information.argument.string.unquoted"," Eb"] +],[ + "start", + ["comment.line.percentage","% 1 - 4"] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 1]"], + ["text"," "], + ["barline.keyword.operator","|:"], + ["pitch.constant.numeric","z"], + ["duration.constant.numeric","4"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","z"], + ["duration.constant.numeric","4"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","f"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["barline.keyword.operator","|"], + ["accent.constant.language","_"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["barline.keyword.operator","|"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," Son que-sti~i cre-spi cri-ni~e"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," Que-sti son gli~oc-chi che mi-"] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 2]"], + ["text"," "], + ["barline.keyword.operator","|:"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","c"], + ["barline.keyword.operator","|"], + ["text","("], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","/"], + ["text",")"], + ["pitch.constant.numeric","c"], + ["accent.constant.language","="], + ["pitch.constant.numeric","A"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["barline.keyword.operator","|"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," Son que-sti~i cre-spi cri-ni~e que - - - - sto~il vi-so e"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," Que-sti son~gli oc-chi che mi-ran - - - - do fi-so mi-"] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 3]"], + ["text"," "], + ["barline.keyword.operator","|:"], + ["pitch.constant.numeric","z"], + ["duration.constant.numeric","4"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","f"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","c"], + ["barline.keyword.operator","|"], + ["accent.constant.language","_"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","f"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text","("], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","/"], + ["accent.constant.language","_"], + ["pitch.constant.numeric","d"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","/"], + ["text",")"], + ["pitch.constant.numeric","f"], + ["pitch.constant.numeric","f"], + ["barline.keyword.operator","|"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," Son que-sti~i cre-spi cri-ni~e que - - - - sto~il"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," Que-sti son~gli oc-chi che mi-ran - - - - do"] +],[ + "start", + ["comment.line.percentage","% 5 - 9"] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 1]"], + ["text"," "], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","3"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["string.quoted","!fermata!"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","z"], + ["text"," "], + ["barline.keyword.operator","::"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","4"], + ["barline.keyword.operator","|"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," que-sto~il vi-so ond' io ri-man-go~uc-ci-so. Deh,"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," ran-do fi-so, tut-to re-stai con-qui-so."] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 2]"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","3"], + ["pitch.constant.numeric","F"], + ["barline.keyword.operator","|"], + ["accent.constant.language","="], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","2"], + ["string.quoted","!fermata!"], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","z"], + ["barline.keyword.operator","::"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","4"], + ["barline.keyword.operator","|"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," que-sto~il vi-so ond' io ri-man-go~uc-ci-so. Deh,"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," ran-do fi-so tut-to re-stai con-qui-so."] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 3]"], + ["text"," ("], + ["pitch.constant.numeric","a"], + ["pitch.constant.numeric","g"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","f"], + ["duration.constant.numeric","/"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["text",")"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["accent.constant.language","_"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","3"], + ["pitch.constant.numeric","B"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["string.quoted","!fermata!"], + ["pitch.constant.numeric","c"], + ["pitch.constant.numeric","z"], + ["text"," "], + ["barline.keyword.operator","::"], + ["pitch.constant.numeric","A"], + ["duration.constant.numeric","4"], + ["barline.keyword.operator","|"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," vi - - - so ond' io ti-man-go~uc-ci-so. Deh,"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," fi - - - so tut-to re-stai con-qui-so."] +],[ + "start", + ["comment.line.percentage","% 10 - 15"] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 1]"], + ["text"," "], + ["pitch.constant.numeric","f"], + ["accent.constant.language","_"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","e"], + ["pitch.constant.numeric","c"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","B"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","z"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text","\\"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," dim-me-lo ben mi-o, che que-sto"], + ["text","\\"] +],[ + "start", + ["accent.constant.language","="], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["text"," "], + ["barline.keyword.operator","|1"], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","z"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|2"], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","8"], + ["barline.keyword.operator","|]"], + ["text"," "], + ["comment.line.percentage","% more notes"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," sol de-si-o_. "], + ["comment.line.percentage","% more lyrics"] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 2]"], + ["text"," "], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","A"], + ["text"," "], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","G"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","A"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","F"], + ["accent.constant.language","="], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["text"," "], + ["barline.keyword.operator","|"], + ["text","("], + ["pitch.constant.numeric","G"], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","3/2"], + ["accent.constant.language","="], + ["pitch.constant.numeric","E"], + ["duration.constant.numeric","//"], + ["pitch.constant.numeric","D"], + ["duration.constant.numeric","//"], + ["pitch.constant.numeric","E"], + ["text",")"], + ["barline.keyword.operator","|1"], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","z"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|2"], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","8"], + ["barline.keyword.operator","|]"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," dim-me-lo ben mi-o, che que-sto sol de-si - - - - o_."] +],[ + "start", + ["information.keyword.embedded","[V:"], + ["information.argument.string.unquoted"," 3]"], + ["text"," "], + ["accent.constant.language","_"], + ["pitch.constant.numeric","d"], + ["pitch.constant.numeric","B"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric",">"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","e"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","A"], + ["pitch.constant.numeric","F"], + ["barline.keyword.operator","|"], + ["accent.constant.language","="], + ["pitch.constant.numeric","E"], + ["pitch.constant.numeric","F"], + ["pitch.constant.numeric","c"], + ["accent.constant.language","_"], + ["pitch.constant.numeric","d"], + ["barline.keyword.operator","|"], + ["pitch.constant.numeric","c"], + ["duration.constant.numeric","4"], + ["text"," "], + ["barline.keyword.operator","|1"], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","2"], + ["pitch.constant.numeric","z"], + ["duration.constant.numeric","2"], + ["barline.keyword.operator",":|2"], + ["pitch.constant.numeric","F"], + ["duration.constant.numeric","8"], + ["barline.keyword.operator","|]"] +],[ + "start", + ["information.keyword","w:"], + ["information.argument.string.unquoted"," dim-me-lo ben mi-o, che que-sto sol de-si-o_."] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_actionscript.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_actionscript.json new file mode 100644 index 00000000..e3fad38f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_actionscript.json @@ -0,0 +1,263 @@ +[[ + "start", + ["text","package code"] +],[ + "start", + ["text","{"] +],[ + "punctuation.definition.comment.actionscript.2", + ["text"," "], + ["punctuation.definition.comment.actionscript.2","/*"], + ["comment.block.actionscript.2","****************************************"] +],[ + "punctuation.definition.comment.actionscript.2", + ["comment.block.actionscript.2","\t * based on textmate actionscript bundle"] +],[ + "start", + ["comment.block.actionscript.2","\t ***************************************"], + ["punctuation.definition.comment.actionscript.2","*/"] +],[ + "start", + ["text","\t "] +],[ + "start", + ["text","\t"], + ["keyword.control.actionscript.2","import"], + ["text"," fl.events.SliderEvent;"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["text","\t"], + ["keyword.control.actionscript.2","public"], + ["text"," "], + ["storage.type.class.actionscript.2","class"], + ["meta.class.actionscript.2"," "], + ["entity.name.type.class.actionscript.2","Foo"], + ["meta.class.actionscript.2"," "], + ["storage.modifier.extends.actionscript.2","extends"], + ["meta.class.actionscript.2"," "], + ["entity.other.inherited-class.actionscript.2","MovieClip"] +],[ + "start", + ["text","\t{"] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.actionscript.2","//*************************"] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.actionscript.2","// Properties:"] +],[ + "start", + ["text","\t\t"] +],[ + "start", + ["text","\t\t"], + ["keyword.control.actionscript.2","public"], + ["text"," "], + ["keyword.control.actionscript.2","var"], + ["text"," activeSwatch"], + ["keyword.operator.symbolic.actionscript.2",":"], + ["support.class.actionscript.2","MovieClip"], + ["text",";"] +],[ + "start", + ["text","\t\t"] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.actionscript.2","// Color offsets"] +],[ + "start", + ["text","\t\t"], + ["keyword.control.actionscript.2","public"], + ["text"," "], + ["keyword.control.actionscript.2","var"], + ["text"," c1"], + ["keyword.operator.symbolic.actionscript.2",":"], + ["storage.type.actionscript.2","Number"], + ["text"," "], + ["keyword.operator.symbolic.actionscript.2","="], + ["text"," "], + ["constant.numeric.actionscript.2","0"], + ["text",";\t"], + ["punctuation.definition.comment.actionscript.2","// R"] +],[ + "start", + ["text","\t\t"] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.actionscript.2","//*************************"] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.actionscript.2","// Constructor:"] +],[ + "start", + ["text","\t\t"] +],[ + "start", + ["text","\t\t"], + ["keyword.control.actionscript.2","public"], + ["text"," "], + ["storage.type.function.actionscript.2","function"], + ["meta.function.actionscript.2"," "], + ["entity.name.function.actionscript.2","Foo"], + ["punctuation.definition.parameters.begin.actionscript.2","("], + ["punctuation.definition.parameters.end.actionscript.2",")"] +],[ + "start", + ["text","\t\t{"] +],[ + "start", + ["text","\t\t\t"], + ["punctuation.definition.comment.actionscript.2","// Respond to mouse events"] +],[ + "start", + ["text","\t\t\tswatch1_btn."], + ["support.function.actionscript.2","addEventListener"], + ["text","(MouseEvent.CLICK,swatchHandler,"], + ["constant.language.actionscript.2","false"], + ["text",","], + ["constant.numeric.actionscript.2","0"], + ["text",","], + ["constant.language.actionscript.2","false"], + ["text",");"] +],[ + "start", + ["text","\t\t\tpreviewBox_btn."], + ["support.function.actionscript.2","addEventListener"], + ["text","(MouseEvent.MOUSE_DOWN,dragPressHandler);"] +],[ + "start", + ["text","\t\t\t"] +],[ + "start", + ["text","\t\t\t"], + ["punctuation.definition.comment.actionscript.2","// Respond to drag events"] +],[ + "start", + ["text","\t\t\tred_slider."], + ["support.function.actionscript.2","addEventListener"], + ["text","(SliderEvent.THUMB_DRAG,sliderHandler);"] +],[ + "start", + ["text","\t\t\t"] +],[ + "start", + ["text","\t\t\t"], + ["punctuation.definition.comment.actionscript.2","// Draw a frame later"] +],[ + "start", + ["text","\t\t\t"], + ["support.function.actionscript.2","addEventListener"], + ["text","(Event.ENTER_FRAME,"], + ["support.function.actionscript.2","draw"], + ["text",");"] +],[ + "start", + ["text","\t\t}"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text","\t\tprotected "], + ["storage.type.function.actionscript.2","function"], + ["meta.function.actionscript.2"," "], + ["entity.name.function.actionscript.2","clickHandler"], + ["punctuation.definition.parameters.begin.actionscript.2","("], + ["variable.parameter.function.actionscript.2","event:MouseEvent"], + ["punctuation.definition.parameters.end.actionscript.2",")"], + ["keyword.operator.symbolic.actionscript.2",":"], + ["support.function.actionscript.2","void"] +],[ + "start", + ["text","\t\t{"] +],[ + "start", + ["text","\t\t\tcar.transform.colorTransform "], + ["keyword.operator.symbolic.actionscript.2","="], + ["text"," "], + ["keyword.control.actionscript.2","new"], + ["text"," ColorTransform("], + ["constant.numeric.actionscript.2","0"], + ["text",","], + ["constant.numeric.actionscript.2","0"], + ["text",","], + ["constant.numeric.actionscript.2","0"], + ["text",","], + ["constant.numeric.actionscript.2","1"], + ["text",",c1,c2,c3);"] +],[ + "start", + ["text","\t\t}"] +],[ + "start", + ["text","\t\t"] +],[ + "start", + ["text","\t\tprotected "], + ["storage.type.function.actionscript.2","function"], + ["meta.function.actionscript.2"," "], + ["entity.name.function.actionscript.2","changeRGBHandler"], + ["punctuation.definition.parameters.begin.actionscript.2","("], + ["variable.parameter.function.actionscript.2","event:Event"], + ["punctuation.definition.parameters.end.actionscript.2",")"], + ["keyword.operator.symbolic.actionscript.2",":"], + ["support.function.actionscript.2","void"] +],[ + "start", + ["text","\t\t{"] +],[ + "start", + ["text","\t\t\tc1 "], + ["keyword.operator.symbolic.actionscript.2","="], + ["text"," "], + ["storage.type.actionscript.2","Number"], + ["text","(c1_txt."], + ["support.function.actionscript.2","text"], + ["text",");"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text","\t\t\t"], + ["keyword.control.actionscript.2","if"], + ["text","("], + ["keyword.operator.symbolic.actionscript.2","!"], + ["text","(c1>"], + ["keyword.operator.symbolic.actionscript.2","="], + ["constant.numeric.actionscript.2","0"], + ["text",")){"] +],[ + "start", + ["text","\t\t\t\tc1 "], + ["keyword.operator.symbolic.actionscript.2","="], + ["text"," "], + ["constant.numeric.actionscript.2","0"], + ["text",";"] +],[ + "start", + ["text","\t\t\t}\t\t\t"] +],[ + "start", + ["text","\t\t\t"] +],[ + "start", + ["text","\t\t\tupdateSliders();"] +],[ + "start", + ["text","\t\t}"] +],[ + "start", + ["text","\t}"] +],[ + "start", + ["text","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ada.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ada.json new file mode 100644 index 00000000..bdef7256 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ada.json @@ -0,0 +1,39 @@ +[[ + "start", + ["keyword","with"], + ["text"," "], + ["identifier","Ada"], + ["text","."], + ["identifier","Text_IO"], + ["text","; "], + ["keyword","use"], + ["text"," "], + ["identifier","Ada"], + ["text","."], + ["identifier","Text_IO"], + ["text",";"] +],[ + "start", + ["keyword","procedure"], + ["text"," "], + ["identifier","Hello"], + ["text"," "], + ["keyword","is"] +],[ + "start", + ["keyword","begin"] +],[ + "start", + ["text"," "], + ["identifier","Put_Line"], + ["paren.lparen","("], + ["string","\"Hello, world!\""], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["keyword","end"], + ["text"," "], + ["identifier","Hello"], + ["text",";"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_asciidoc.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_asciidoc.json new file mode 100644 index 00000000..f54c355e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_asciidoc.json @@ -0,0 +1,422 @@ +[[ + "literalBlock", + ["support.function","------------------------------------"] +],[ + "dissallowDelimitedBlock", + ["support.function","-----------------------------------"] +],[ + "text", + ["string.italic","_ita_lic_"], + ["text",", "], + ["keyword.bold","*bo*ld*"], + ["text",", "], + ["support.function","+mo+no+"], + ["text",", normal. "] +],[ + "text", + ["keyword","``"], + ["text","double quoted"], + ["keyword","''"], + ["text",", `single quoted'."] +],[ + "text", + ["text"," normal, ^super^, "], + ["keyword","~sub~"], + ["text","."] +],[ + "start" +],[ + "text", + ["text","''''"] +],[ + "text", + ["text","Escaped:"] +],[ + "text", + ["constant.language.escape","\\_"], + ["text","italic_, "], + ["support.function","+++"], + ["text","_italic_"], + ["support.function","+++"], + ["text",","] +],[ + "smallPassthrough", + ["text","t"], + ["constant.language.escape","\\_"], + ["text","_e"], + ["string.italic","__st, +++t__"], + ["text","e__st"], + ["support.function","+++"], + ["text",","] +],[ + "smallPassthrough", + ["support.function","+++"], + ["text","bold"], + ["support.function","+++"], + ["text",", $$<"], + ["support.function","b"], + ["text",">"], + ["support.function","normal"], + ["text","$$"] +],[ + "smallPassthrough", + ["text","\\&#"], + ["support.function","182"], + ["text","; &#"], + ["support.function","182"], + ["text",";"] +],[ + "smallPassthrough", + ["text","\\`"], + ["support.function","not"], + ["text"," "], + ["support.function","single"], + ["text"," "], + ["support.function","quoted"], + ["text","'"] +],[ + "smallPassthrough", + ["text","\\`\\`"], + ["support.function","not"], + ["text"," "], + ["support.function","double"], + ["text"," "], + ["support.function","quoted"], + ["text","''"] +],[ + "dissallowDelimitedBlock" +],[ + "text" +],[ + "start", + ["string.regexp","[fffff]"] +],[ + "passthroughBlock", + ["string","+++++++++++++++++++++++++++++++++++++"] +],[ + "passthroughBlock", + ["support.function","(C) "], + ["constant.character","{ss}"], + ["support.function"," ss"] +],[ + "dissallowDelimitedBlock", + ["support.function","+++++++++++++++++++++++++++++++++++++"] +],[ + "text" +],[ + "listingBlock", + ["support.function","............."] +],[ + "listingBlock", + ["support.function","callout "], + ["constant.numeric","<1>"] +],[ + "dissallowDelimitedBlock", + ["support.function",".............."] +],[ + "text" +],[ + "text", + ["text","> 1"] +],[ + "text", + ["text","1> 2"] +],[ + "text", + ["text","<2> 3"] +],[ + "start" +],[ + "text", + ["text","Escaped:"] +],[ + "text", + ["constant.language.escape","\\_"], + ["text","italic_,"] +],[ + "text", + ["text","t"], + ["constant.language.escape","\\_"], + ["text","_e"], + ["string.italic","__st, o__"] +],[ + "start" +],[ + "start", + ["constant.numeric",".optional title"] +],[ + "listingBlock", + ["support.function","............."] +],[ + "listingBlock", + ["support.function","callout "], + ["constant.numeric","<1>"] +],[ + "dissallowDelimitedBlock", + ["support.function",".............."] +],[ + "text" +],[ + "start" +],[ + "text", + ["keyword",":macro:"], + ["text"," dddd"] +],[ + "start" +],[ + "start", + ["constant.numeric",".lists"] +],[ + "listText", + ["keyword",". "], + ["text","1"] +],[ + "listText", + ["keyword",".. "], + ["text","2"] +],[ + "listText", + ["keyword","... "], + ["text","d"] +],[ + "listText", + ["keyword","..... "], + ["text","big"] +],[ + "start", + ["keyword","+"] +],[ + "text", + ["text","continue"], + ["keyword"," +"] +],[ + "text", + ["text","next line"] +],[ + "text", + ["text","xi) no "], + ["support.function","++la+tin++"] +],[ + "start" +],[ + "listText", + ["keyword","xi) "], + ["text","la"], + ["support.function","++tin++"] +],[ + "listText", + ["keyword","2. "], + ["text","num"], + ["string.italic","__ber__"], + ["text"," [red]"], + ["keyword","#"], + ["text","red"], + ["keyword","#"] +],[ + "start", + ["keyword","--"] +],[ + "listText", + ["keyword"," 5. "], + ["text","f "], + ["keyword","<>"], + ["text"," "], + ["constant.character","{macro}"] +],[ + "start", + ["keyword","--"] +],[ + "text", + ["markup.list.macro","image::"], + ["keyword","path"], + ["string","[beauty]"], + ["text"," "], + ["constant.language.escape","->"], + ["text","--"], + ["constant.language.escape","<= --"], + ["text"," replacements"] +],[ + "start" +],[ + "indentedBlock", + ["support.function"," image::s"] +],[ + "indentedBlock", + ["support.function","sssss"] +],[ + "indentedBlock", + ["support.function","sss "] +],[ + "indentedBlock", + ["support.function","sssss"] +],[ + "start" +],[ + "start" +],[ + "start", + ["markup.heading","== 1"] +],[ + "indentedBlock", + ["support.function"," heading"] +],[ + "start", + ["markup.heading","=== not a heading"] +],[ + "start", + ["keyword","===================================="] +],[ + "start" +],[ + "start", + ["keyword","=================================="] +],[ + "text", + ["text","====4 "] +],[ + "text", + ["text","NOTE: above"] +],[ + "start" +],[ + "text", + ["keyword","NOTE:"], + ["text"," above"] +],[ + "start" +],[ + "start", + ["string.regexp","[[x6]]"] +],[ + "text", + ["keyword","WARNING:"], + ["text"," "] +],[ + "start" +],[ + "start", + ["string.regexp","[options[]]"] +],[ + "literalBlock", + ["support.function","---------------------------"] +],[ + "literalBlock", + ["support.function","literal"] +],[ + "dissallowDelimitedBlock", + ["support.function","---------------------------"] +],[ + "text" +],[ + "start" +],[ + "start", + ["markup.heading","= Tables"] +],[ + "tableBlock", + ["doc.comment","|===================================="] +],[ + "tableBlock", + ["doc.comment","|"], + ["text"," "], + ["string.italic","_italic_"], + ["text"," "], + ["doc.comment","|"], + ["text"," "], + ["keyword.bold","*bold*"], + ["text"," "], + ["doc.comment","|"], + ["text"," text "], + ["doc.comment","|"], + ["text"," "], + ["constant.language.escape","(R)"] +],[ + "tableBlock" +],[ + "dissallowDelimitedBlock", + ["doc.comment","|===================================="] +],[ + "text" +],[ + "start" +],[ + "start", + ["string.regexp","[more, options]"] +],[ + "commentBlock", + ["doc.comment","///////////"] +],[ + "commentBlock", + ["doc.comment","comment"] +],[ + "dissallowDelimitedBlock", + ["doc.comment","///////////"] +],[ + "text", + ["comment","// one line comment"] +],[ + "start" +],[ + "start" +],[ + "start" +],[ + "text", + ["text","[red]"], + ["keyword","#"], + ["text","red text"], + ["keyword","#"], + ["text"," [yellow-background]"], + ["keyword","#"], + ["text","on yellow"], + ["keyword","#"] +],[ + "text", + ["text","[big]"], + ["keyword","#"], + ["text","large"], + ["keyword","#"], + ["text"," [red yellow-background big]"], + ["keyword.bold","*all bold*"] +],[ + "start" +],[ + "start", + ["text","\t"] +],[ + "text", + ["markup.underline.list","https://site"], + ["text"," text <"], + ["markup.underline.list","mail@i.am"], + ["text","> "], + ["markup.underline.list","callto:ace"], + ["text"," "], + ["link","http://ace.ajaxorg.com"], + ["variable.language","[awesome]"] +],[ + "text", + ["text"," .still normal text"] +],[ + "start", + ["constant.numeric",".break out thoug should not"] +],[ + "literalBlock", + ["support.function","---------------------------"] +],[ + "literalBlock", + ["support.function","///////////////////////////"] +],[ + "dissallowDelimitedBlock", + ["support.function","---------------------------"] +],[ + "text" +],[ + "start" +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_assembly_x86.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_assembly_x86.json new file mode 100644 index 00000000..5da0470e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_assembly_x86.json @@ -0,0 +1,114 @@ +[[ + "start", + ["support.function.directive.assembly","section"], + ["text","\t.text"] +],[ + "start", + ["text"," "], + ["support.function.directive.assembly","global"], + ["text"," "], + ["entity.name.function.assembly","main"], + ["text"," "], + ["comment.assembly",";must be declared for using gcc"] +],[ + "start" +],[ + "start", + ["entity.name.function.assembly","main:"], + ["text","\t "], + ["comment.assembly",";tell linker entry point"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["keyword.control.assembly","mov"], + ["text","\t"], + ["variable.parameter.register.assembly","edx"], + ["text",", len\t "], + ["comment.assembly",";message length"] +],[ + "start", + ["text","\t"], + ["keyword.control.assembly","mov"], + ["text","\t"], + ["variable.parameter.register.assembly","ecx"], + ["text",", msg\t "], + ["comment.assembly",";message to write"] +],[ + "start", + ["text","\t"], + ["keyword.control.assembly","mov"], + ["text","\t"], + ["variable.parameter.register.assembly","ebx"], + ["text",", "], + ["constant.character.decimal.assembly","1"], + ["text","\t "], + ["comment.assembly",";file descriptor (stdout)"] +],[ + "start", + ["text","\t"], + ["keyword.control.assembly","mov"], + ["text","\t"], + ["variable.parameter.register.assembly","eax"], + ["text",", "], + ["constant.character.decimal.assembly","4"], + ["text","\t "], + ["comment.assembly",";system call number (sys_write)"] +],[ + "start", + ["text","\t"], + ["keyword.control.assembly","int"], + ["text","\t"], + ["constant.character.hexadecimal.assembly","0x80"], + ["text","\t "], + ["comment.assembly",";call kernel"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["keyword.control.assembly","mov"], + ["text","\t"], + ["variable.parameter.register.assembly","eax"], + ["text",", "], + ["constant.character.decimal.assembly","1"], + ["text","\t "], + ["comment.assembly",";system call number (sys_exit)"] +],[ + "start", + ["text","\t"], + ["keyword.control.assembly","int"], + ["text","\t"], + ["constant.character.hexadecimal.assembly","0x80"], + ["text","\t "], + ["comment.assembly",";call kernel"] +],[ + "start" +],[ + "start", + ["support.function.directive.assembly","section"], + ["text","\t.data"] +],[ + "start" +],[ + "start", + ["entity.name.function.assembly","msg"], + ["text","\t"], + ["support.function.directive.assembly","db"], + ["text","\t"], + ["string.assembly","'Hello, world!'"], + ["text",","], + ["constant.character.hexadecimal.assembly","0xa"], + ["text","\t"], + ["comment.assembly",";our dear string"] +],[ + "start", + ["entity.name.function.assembly","len"], + ["text","\t"], + ["support.function.directive.assembly","equ"], + ["text","\t$ - msg\t\t\t"], + ["comment.assembly",";length of our dear string"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_autohotkey.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_autohotkey.json new file mode 100644 index 00000000..374310fb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_autohotkey.json @@ -0,0 +1,261 @@ +[[ + "start", + ["punctuation.ahk","#"], + ["keyword.command.ahk","NoEnv"] +],[ + "start", + ["keyword.command.ahk","SetBatchLines"], + ["text"," "], + ["constant.numeric","-1"] +],[ + "start" +],[ + "start", + ["keyword.command.ahk","CoordMode"], + ["text"," "], + ["variable.parameter","Mouse"], + ["punctuation.ahk",","], + ["text"," "], + ["variable.parameter","Screen"] +],[ + "start", + ["keyword.command.ahk","OnExit"], + ["text"," "], + ["variable.parameter","GuiClose"] +],[ + "start" +],[ + "start", + ["text","zoom "], + ["keyword.operator.ahk",":="], + ["text"," 9"] +],[ + "start" +],[ + "start", + ["text","computeSize"], + ["punctuation.ahk","(){"] +],[ + "start", + ["text","\t"], + ["keyword.control.ahk","global"], + ["text"," as_x"] +],[ + "start", + ["text","\tas_x "], + ["keyword.operator.ahk",":="], + ["text"," "], + ["support.function.ahk","Round"], + ["punctuation.ahk","("], + ["text","ws_x"], + ["keyword.operator.ahk","/"], + ["text","zoom"], + ["keyword.operator.ahk","/"], + ["text","2 "], + ["keyword.operator.ahk","-"], + ["text"," 0.5"], + ["punctuation.ahk",")"] +],[ + "start", + ["text","\t"], + ["keyword.control.ahk","if"], + ["text"," "], + ["punctuation.ahk","("], + ["text","zoom"], + ["keyword.operator.ahk",">"], + ["text","1"], + ["punctuation.ahk",")"], + ["text"," "], + ["punctuation.ahk","{"] +],[ + "start", + ["text","\t\tpix "], + ["keyword.operator.ahk",":="], + ["text"," "], + ["support.function.ahk","Round"], + ["punctuation.ahk","("], + ["text","zoom"], + ["punctuation.ahk",")"] +],[ + "start", + ["text","\t"], + ["punctuation.ahk","}"], + ["text"," ele "], + ["punctuation.ahk","{"] +],[ + "start", + ["text","\t\tpix "], + ["keyword.operator.ahk",":="], + ["text"," 1"] +],[ + "start", + ["text","\t"], + ["punctuation.ahk","}"] +],[ + "start", + ["text"," "], + ["keyword.command.ahk","ToolTip"], + ["text"," Message "], + ["punctuation.ahk","%"], + ["text","as_x"], + ["punctuation.ahk","%"], + ["text"," "], + ["punctuation.ahk","%"], + ["text","zoom"], + ["punctuation.ahk","%"], + ["text"," "], + ["punctuation.ahk","%"], + ["text","ws_x"], + ["punctuation.ahk","%"], + ["text"," "], + ["punctuation.ahk","%"], + ["text","hws_x"], + ["punctuation.ahk","%"], + ["text"," "] +],[ + "start", + ["punctuation.ahk","}"] +],[ + "start" +],[ + "start", + ["text","hdc_frame "], + ["keyword.operator.ahk",":="], + ["text"," "], + ["support.function.ahk","DllCall"], + ["punctuation.ahk","("], + ["punctuation.quote.double","\""], + ["string.quoted.ahk","GetDC"], + ["punctuation.quote.double","\""], + ["punctuation.ahk",","], + ["text"," UInt"], + ["punctuation.ahk",","], + ["text"," MagnifierID"], + ["punctuation.ahk",")"] +],[ + "start" +],[ + "start", + ["comment.line.ahk","; comment"] +],[ + "start", + ["text","DrawCross"], + ["punctuation.ahk","("], + ["keyword.control.ahk","byRef"], + ["text"," x"], + ["keyword.operator.ahk","="], + ["punctuation.quote.double","\""], + ["punctuation.quote.double","\""], + ["punctuation.ahk",","], + ["text"," rX"], + ["punctuation.ahk",","], + ["text","rY"], + ["punctuation.ahk",","], + ["text","z"], + ["punctuation.ahk",","], + ["text"," dc"], + ["punctuation.ahk","){"] +],[ + "start", + ["text"," "], + ["comment.line.ahk"," ;specify the style, thickness and color of the cross lines"] +],[ + "start", + ["text"," h_pen "], + ["keyword.operator.ahk",":="], + ["text"," "], + ["support.function.ahk","DllCall"], + ["punctuation.ahk","("], + ["text"," "], + ["punctuation.quote.double","\""], + ["string.quoted.ahk","gdi32.dll\\CreatePen"], + ["punctuation.quote.double","\""], + ["punctuation.ahk",","], + ["text"," "], + ["constant.language","Int"], + ["punctuation.ahk",","], + ["text"," 0"], + ["punctuation.ahk",","], + ["text"," "], + ["constant.language","Int"], + ["punctuation.ahk",","], + ["text"," 1"], + ["punctuation.ahk",","], + ["text"," UInt"], + ["punctuation.ahk",","], + ["text"," 0x0000FF"], + ["punctuation.ahk",")"] +],[ + "start", + ["punctuation.ahk","}"] +],[ + "start" +],[ + "start", + ["comment.line.ahk",";Ctrl ^; Shift +; Win #; Alt !"] +],[ + "start", + ["text","^"], + ["support.constant.ahk","NumPadAdd"], + ["keyword.operator.ahk","::"] +],[ + "start", + ["text","^"], + ["support.constant.ahk","WheelUp"], + ["keyword.operator.ahk","::"], + ["text"," "] +],[ + "start", + ["text","^;"], + ["keyword.operator.ahk","::"], + ["text"," "], + ["comment.line.ahk"," ;comment"] +],[ + "start", + ["text"," "], + ["keyword.control.ahk","If"], + ["punctuation.ahk","("], + ["text","zoom "], + ["keyword.operator.ahk","<"], + ["text"," ws_x "], + ["variable.parameter","and"], + ["text"," "], + ["punctuation.ahk","("], + ["text"," "], + ["variable.predefined.ahk","A_ThisHotKey"], + ["text"," "], + ["keyword.operator.ahk","="], + ["text"," "], + ["punctuation.quote.double","\""], + ["string.quoted.ahk","^WheelUp"], + ["punctuation.quote.double","\""], + ["text"," "], + ["variable.parameter","or"], + ["text"," "], + ["variable.predefined.ahk","A_ThisHotKey"], + ["text"," "], + ["keyword.operator.ahk","="], + ["punctuation.quote.double","\""], + ["string.quoted.ahk","^NumPadAdd"], + ["punctuation.quote.double","\""], + ["punctuation.ahk",")"], + ["text"," "], + ["punctuation.ahk",")"] +],[ + "start", + ["text","\t\tzoom "], + ["keyword.operator.ahk","*="], + ["text"," 1.189207115 "], + ["comment.line.ahk"," ; sqrt(sqrt(2))"] +],[ + "start", + ["text","\t"], + ["keyword.command.ahk","Gosub"], + ["punctuation.ahk",","], + ["text","setZoom"] +],[ + "start", + ["keyword.control.ahk","return"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_batchfile.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_batchfile.json new file mode 100644 index 00000000..0f1f138c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_batchfile.json @@ -0,0 +1,70 @@ +[[ + "start", + ["comment.line.colons.dosbatch",":: batch file highlighting in Ace!"] +],[ + "start", + ["text","@"], + ["keyword.command.dosbatch","echo"], + ["text"," off"] +],[ + "start" +],[ + "start", + ["keyword.control.statement.dosbatch","CALL"], + ["text"," "], + ["keyword.command.dosbatch","set"], + ["text"," var1="], + ["constant.numeric","%cd%"] +],[ + "start", + ["keyword.command.dosbatch","echo"], + ["text"," unhide everything in "], + ["constant.numeric","%var1%"], + ["text","!"] +],[ + "start" +],[ + "start", + ["comment.line.colons.dosbatch",":: FOR loop in bat is super strange!"] +],[ + "start", + ["keyword.control.repeat.dosbatch","FOR"], + ["text"," /f "], + ["punctuation.definition.string.begin.shell","\""], + ["string.quoted.double.dosbatch","tokens=*"], + ["punctuation.definition.string.end.shell","\""], + ["text"," "], + ["constant.numeric","%%G"], + ["text"," IN ('"], + ["keyword.command.dosbatch","dir"], + ["text"," /A:D /b') DO ("] +],[ + "start", + ["keyword.command.dosbatch","echo"], + ["text"," "], + ["constant.numeric","%var1%%%G"] +],[ + "start", + ["keyword.command.dosbatch","attrib"], + ["text"," -r -a -h -s "], + ["punctuation.definition.string.begin.shell","\""], + ["constant.numeric","%var1%%%G"], + ["punctuation.definition.string.end.shell","\""], + ["text"," /D /S"] +],[ + "start", + ["text",")"] +],[ + "start" +],[ + "start", + ["keyword.command.dosbatch","pause"] +],[ + "start" +],[ + "start", + ["doc.comment","REM"], + ["comment"," that's all"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_bro.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_bro.json new file mode 100644 index 00000000..b0f42015 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_bro.json @@ -0,0 +1,106 @@ +[[ + "start", + ["punctuation.definition.comment.bro","#"], + ["comment.line.number-sign.bro","#! Add countries for the originator and responder of a connection"] +],[ + "start", + ["punctuation.definition.comment.bro","#"], + ["comment.line.number-sign.bro","#! to the connection logs."] +],[ + "start" +],[ + "start", + ["text","module Conn;"] +],[ + "start" +],[ + "start", + ["text","export {"] +],[ + "start", + ["text","\t"], + ["storage.modifier.bro","redef"], + ["text"," "], + ["storage.type.bro","record"], + ["text"," Conn::Info += {"] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.bro","#"], + ["comment.line.number-sign.bro","# Country code for the originator of the connection based "] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.bro","#"], + ["comment.line.number-sign.bro","# on a GeoIP lookup."] +],[ + "start", + ["text","\t\torig_cc: "], + ["storage.type.bro","string"], + ["text"," &optional &log;"] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.bro","#"], + ["comment.line.number-sign.bro","# Country code for the responser of the connection based "] +],[ + "start", + ["text","\t\t"], + ["punctuation.definition.comment.bro","#"], + ["comment.line.number-sign.bro","# on a GeoIP lookup."] +],[ + "start", + ["text","\t\tresp_cc: "], + ["storage.type.bro","string"], + ["text"," &optional &log;"] +],[ + "start", + ["text","\t};"] +],[ + "start", + ["text","}"] +],[ + "start" +],[ + "start", + ["meta.function.bro"," "], + ["storage.type.bro","connection_state_remove"], + ["meta.function.bro","("], + ["entity.name.function.bro","c: connection"], + ["meta.function.bro",") "], + "event connection_state_remove(c: connection) " +],[ + "start", + ["text","\t{"] +],[ + "start", + ["text","\t"], + ["storage.modifier.bro","local"], + ["text"," orig_loc = lookup_location(c$id$orig_h);"] +],[ + "start", + ["text","\t"], + ["keyword.control.bro","if"], + ["text"," ( orig_loc?$country_code )"] +],[ + "start", + ["text","\t\tc$conn$orig_cc = orig_loc$country_code;"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["storage.modifier.bro","local"], + ["text"," resp_loc = lookup_location(c$id$resp_h);"] +],[ + "start", + ["text","\t"], + ["keyword.control.bro","if"], + ["text"," ( resp_loc?$country_code )"] +],[ + "start", + ["text","\t\tc$conn$resp_cc = resp_loc$country_code;"] +],[ + "start", + ["text","\t}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_c9search.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_c9search.json new file mode 100644 index 00000000..902d8dce --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_c9search.json @@ -0,0 +1,131 @@ +[[ + ["start",{}], + ["text","Searching for '"], + ["text","var"], + ["text","' in"], + ["text"," /.c9/metadata/workspace/plugins "], + ["text","(regexp, case sensitive, whole word)"], + "Searching for \u0001var\u0001 in\u0001/.c9/metadata/workspace/plugins\u0001\u0001regexp, case sensitive, whole word\u0001" +],[ + ["start",{}] +],[ + ["start",{}], + ["string","configs/default.js"], + ["text",":"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric"," 1"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," fs = require(\"fs\");"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t2"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," argv = require('optimist').argv;"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t3"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," path = require(\"path\");"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t5"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," clientExtensions = {};"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t6"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," clientDirs = fs.readdirSync(__dirname + \"/../plugins-client\");"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t7"], + ["c9searchresults.text",": "], + ["c9searchresults.text","for ("], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," i = 0; i < clientDirs.length; i++) {"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t8"], + ["c9searchresults.text",": "], + ["c9searchresults.text"," "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," dir = clientDirs[i];"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t12"], + ["c9searchresults.text",": "], + ["c9searchresults.text"," "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," name = dir.split(\".\")[1];"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t16"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," projectDir = (argv.w && path.resolve(process.cwd(), argv.w)) || process.cwd();"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t17"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," fsUrl = \"/workspace\";"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t19"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," port = argv.p || process.env.PORT || 3131;"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t20"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," host = argv.l || \"localhost\";"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t22"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," config = {"] +],[ + ["start",{}] +],[ + ["start",{}], + ["string","configs/local.js"], + ["text",":"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t2"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," config = require(\"./default\");"] +],[ + ["start",{}] +],[ + ["start",{}], + ["string","configs/packed.js"], + ["text",":"] +],[ + ["start",{}], + ["c9searchresults.constant.numeric","\t1"], + ["c9searchresults.text",": "], + ["c9searchresults.keyword","var"], + ["c9searchresults.text"," config = require(\"./default\");"] +],[ + ["start",{}] +],[ + ["start",{}] +],[ + ["start",{}], + ["text","Found "], + ["constant.numeric","15"], + ["text"," matches in "], + ["constant.numeric","3"], + ["text"," files"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_c_cpp.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_c_cpp.json new file mode 100644 index 00000000..2442a781 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_c_cpp.json @@ -0,0 +1,201 @@ +[[ + "start", + ["comment","// compound assignment operators"] +],[ + "start" +],[ + "start", + ["keyword","#include"], + ["constant.other"," "] +],[ + "start" +],[ + "directive", + ["keyword","#include"], + ["constant.other.multiline"," \\"] +],[ + "start", + ["constant.other"," "] +],[ + "start" +],[ + "directive", + ["keyword","#include"], + ["constant.other.multiline"," \\"] +],[ + "directive", + ["constant.other.multiline"," \\"] +],[ + "start", + ["constant.other"," "] +],[ + "start" +],[ + "directive", + ["keyword","#include"], + ["constant.other.multiline"," \\"] +],[ + "directive", + ["constant.other.multiline"," \\"] +],[ + "start", + ["constant.other"," \"iostream\""] +],[ + "start" +],[ + "start", + ["keyword","#include"], + ["constant.other"," "] +],[ + "start", + ["keyword","#include"], + ["constant.other"," \"boost/asio/io_service.hpp\""] +],[ + "start" +],[ + "directive", + ["keyword","#include"], + ["constant.other.multiline"," \\"] +],[ + "directive", + ["constant.other.multiline"," \\"] +],[ + "directive", + ["constant.other.multiline"," \"iostream\" \\"] +],[ + "directive", + ["constant.other.multiline"," \"string\" \\"] +],[ + "start", + ["constant.other"," "] +],[ + "start", + ["text"," "] +],[ + "start", + ["keyword.control","using"], + ["text"," "], + ["keyword.operator","namespace"], + ["text"," "], + ["identifier","std"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["comment","//"] +],[ + "start", + ["storage.type","int"], + ["text"," "], + ["identifier","main"], + ["text"," "], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["storage.type","int"], + ["text"," "], + ["identifier","a"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","b"], + ["keyword.operator","="], + ["constant.numeric","3"], + ["punctuation.operator",";"], + ["text"," "], + ["comment","/* foobar */"] +],[ + "singleLineComment", + ["text"," "], + ["identifier","a"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","b"], + ["punctuation.operator",";"], + ["text"," "], + ["comment","// single line comment\\"] +],[ + "start", + ["comment"," continued"] +],[ + "start", + ["text"," "], + ["identifier","a"], + ["keyword.operator","+="], + ["constant.numeric","2"], + ["punctuation.operator",";"], + ["text"," "], + ["comment","// equivalent to a=a+2"] +],[ + "start", + ["text"," "], + ["identifier","cout"], + ["text"," "], + ["keyword.operator","<<"], + ["text"," "], + ["identifier","a"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","#if"], + ["text"," "], + ["identifier","VERBOSE"], + ["text"," "], + ["keyword.operator",">="], + ["text"," "], + ["constant.numeric","2"] +],[ + "start", + ["text"," "], + ["identifier","prints"], + ["paren.lparen","("], + ["string.start","\""], + ["string","trace message"], + ["constant.language.escape","\\n"], + ["string.end","\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","#endif"] +],[ + "start", + ["text"," "], + ["keyword.control","return"], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["comment","/* Print an error message and get out */"] +],[ + "directive", + ["keyword","#define"], + ["constant.other.multiline"," ABORT \\"] +],[ + "directive", + ["constant.other.multiline"," do { \\"] +],[ + "directive", + ["constant.other.multiline"," print( \"Abort\\n\" ); \\"] +],[ + "directive", + ["constant.other.multiline"," exit(8); \\"] +],[ + "start", + ["constant.other","} while (0) "], + ["comment","/* Note: No semicolon */"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_cirru.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_cirru.json new file mode 100644 index 00000000..de4852e6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_cirru.json @@ -0,0 +1,267 @@ +[[ + "start", + ["comment.line.double-dash","-- https://github.com/Cirru/cirru-gopher/blob/master/code/scope.cr,"] +],[ + "start" +],[ + "line", + ["support.function","set"], + ["text"," "], + ["variable.parameter","a"], + ["text"," "], + ["storage.modifier","("], + ["support.function","int"], + ["text"," "], + ["constant.numeric","2"], + ["storage.modifier",")"] +],[ + "start" +],[ + "line", + ["support.function","print"], + ["text"," "], + ["storage.modifier","("], + ["support.function","self"], + ["storage.modifier",")"] +],[ + "start" +],[ + "line", + ["support.function","set"], + ["text"," "], + ["variable.parameter","c"], + ["text"," "], + ["storage.modifier","("], + ["support.function","child"], + ["storage.modifier",")"] +],[ + "start" +],[ + "line", + ["support.function","under"], + ["text"," "], + ["variable.parameter","c"] +],[ + "line", + ["markup.raw"," "], + ["support.function","under"], + ["text"," "], + ["variable.parameter","parent"] +],[ + "line", + ["markup.raw"," "], + ["support.function","print"], + ["text"," "], + ["variable.parameter","a"] +],[ + "start" +],[ + "line", + ["support.function","print"], + ["text"," "], + ["storage.modifier","$"], + ["text"," "], + ["support.function","get"], + ["text"," "], + ["variable.parameter","c"], + ["text"," "], + ["variable.parameter","a"] +],[ + "start" +],[ + "line", + ["support.function","set"], + ["text"," "], + ["variable.parameter","c"], + ["text"," "], + ["variable.parameter","x"], + ["text"," "], + ["storage.modifier","("], + ["support.function","int"], + ["text"," "], + ["constant.numeric","3"], + ["storage.modifier",")"] +],[ + "line", + ["support.function","print"], + ["text"," "], + ["storage.modifier","$"], + ["text"," "], + ["support.function","get"], + ["text"," "], + ["variable.parameter","c"], + ["text"," "], + ["variable.parameter","x"] +],[ + "start" +],[ + "line", + ["support.function","set"], + ["text"," "], + ["variable.parameter","just-print"], + ["text"," "], + ["storage.modifier","$"], + ["text"," "], + ["support.function","code"] +],[ + "line", + ["markup.raw"," "], + ["support.function","print"], + ["text"," "], + ["variable.parameter","a"] +],[ + "start" +],[ + "line", + ["support.function","print"], + ["text"," "], + ["variable.parameter","just-print"] +],[ + "start" +],[ + "line", + ["support.function","eval"], + ["text"," "], + ["storage.modifier","("], + ["support.function","self"], + ["storage.modifier",")"], + ["text"," "], + ["variable.parameter","just-print"] +],[ + "line", + ["support.function","eval"], + ["text"," "], + ["variable.parameter","just-print"] +],[ + "start" +],[ + "line", + ["support.function","print"], + ["text"," "], + ["storage.modifier","("], + ["support.function","string"], + ["text"," "], + ["string.quoted.double","\"string with space\""], + ["storage.modifier",")"] +],[ + "line", + ["support.function","print"], + ["text"," "], + ["storage.modifier","("], + ["support.function","string"], + ["text"," "], + ["string.quoted.double","\"escapes "], + ["constant.character.escape","\\n"], + ["string.quoted.double"," "], + ["constant.character.escape","\\\"\\\\"], + ["string.quoted.double","\""], + ["storage.modifier",")"] +],[ + "start" +],[ + "start", + ["support.function","brackets"], + ["text"," "], + ["storage.modifier","((((()))))"] +],[ + "start" +],[ + "line", + ["string.quoted.double","\"eval\""], + ["text"," "], + ["storage.modifier","$"], + ["text"," "], + ["support.function","string"], + ["text"," "], + ["string.quoted.double","\"eval\""] +],[ + "start" +],[ + "line", + ["support.function","print"], + ["text"," "], + ["storage.modifier","("], + ["support.function","add"], + ["text"," "], + ["storage.modifier","$"], + ["text"," "], + ["storage.modifier","("], + ["support.function","int"], + ["text"," "], + ["constant.numeric","1"], + ["storage.modifier",")"], + ["text"," "], + ["storage.modifier","("], + ["support.function","int"], + ["text"," "], + ["constant.numeric","2"], + ["storage.modifier","))"] +],[ + "start" +],[ + "start", + ["support.function","print"], + ["text"," "], + ["storage.modifier","$"], + ["text"," "], + ["support.function","unwrap"], + ["text"," "], + ["storage.modifier","$"] +],[ + "line", + ["text"," "], + ["support.function","map"], + ["text"," "], + ["storage.modifier","("], + ["support.function","a"], + ["text"," "], + ["storage.modifier","$"], + ["text"," "], + ["support.function","int"], + ["text"," "], + ["constant.numeric","1"], + ["storage.modifier",")"], + ["text"," "], + ["storage.modifier","("], + ["support.function","b"], + ["text"," "], + ["storage.modifier","$"], + ["text"," "], + ["support.function","int"], + ["text"," "], + ["constant.numeric","2"], + ["storage.modifier",")"] +],[ + "start" +],[ + "line", + ["support.function","print"], + ["text"," "], + ["variable.parameter","a"] +],[ + "line", + ["markup.raw"," "], + ["support.function","int"], + ["text"," "], + ["constant.numeric","1"] +],[ + "line", + ["markup.raw"," "], + ["storage.modifier",","], + ["text"," "], + ["variable.parameter","b"], + ["text"," "], + ["variable.parameter","c"] +],[ + "line", + ["markup.raw"," "], + ["support.function","int"], + ["text"," "], + ["constant.numeric","2"] +],[ + "line", + ["markup.raw"," "], + ["storage.modifier",","], + ["text"," "], + ["variable.parameter","d"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_clojure.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_clojure.json new file mode 100644 index 00000000..824cba59 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_clojure.json @@ -0,0 +1,162 @@ +[[ + "start", + ["keyword","("], + ["support.function","defn"], + ["text"," "], + ["identifier","parting"] +],[ + "start", + ["text"," "], + ["string","\"returns a String parting in a given language\""] +],[ + "start", + ["text"," "], + ["keyword","([]"], + ["text"," "], + ["keyword","("], + ["identifier","parting"], + ["text"," "], + ["string","\"World\""], + ["keyword","))"] +],[ + "start", + ["text"," "], + ["keyword","(["], + ["support.function","name"], + ["keyword","]"], + ["text"," "], + ["keyword","("], + ["identifier","parting"], + ["text"," "], + ["support.function","name"], + ["text"," "], + ["string","\"en\""], + ["keyword","))"] +],[ + "start", + ["text"," "], + ["keyword","(["], + ["support.function","name"], + ["text"," "], + ["identifier","language"], + ["keyword","]"] +],[ + "start", + ["text"," "], + ["comment","; condp is similar to a case statement in other languages."] +],[ + "start", + ["text"," "], + ["comment","; It is described in more detail later."] +],[ + "start", + ["text"," "], + ["comment","; It is used here to take different actions based on whether the"] +],[ + "start", + ["text"," "], + ["comment","; parameter \"language\" is set to \"en\", \"es\" or something else."] +],[ + "start", + ["text"," "], + ["keyword","("], + ["support.function","condp"], + ["text"," "], + ["constant.language","="], + ["text"," "], + ["identifier","language"] +],[ + "start", + ["text"," "], + ["string","\"en\""], + ["text"," "], + ["keyword","("], + ["support.function","str"], + ["text"," "], + ["string","\"Goodbye, \""], + ["text"," "], + ["support.function","name"], + ["keyword",")"] +],[ + "start", + ["text"," "], + ["string","\"es\""], + ["text"," "], + ["keyword","("], + ["support.function","str"], + ["text"," "], + ["string","\"Adios, \""], + ["text"," "], + ["support.function","name"], + ["keyword",")"] +],[ + "start", + ["text"," "], + ["keyword","(throw"], + ["text"," "], + ["keyword","("], + ["identifier","IllegalArgumentException"], + ["text","."] +],[ + "start", + ["text"," "], + ["keyword","("], + ["support.function","str"], + ["text"," "], + ["string","\"unsupported language \""], + ["text"," "], + ["identifier","language"], + ["keyword","))))))"] +],[ + "start" +],[ + "start", + ["keyword","("], + ["support.function","println"], + ["text"," "], + ["keyword","("], + ["identifier","parting"], + ["keyword","))"], + ["text"," "], + ["comment","; -> Goodbye, World"] +],[ + "start", + ["keyword","("], + ["support.function","println"], + ["text"," "], + ["keyword","("], + ["identifier","parting"], + ["text"," "], + ["string","\"Mark\""], + ["keyword","))"], + ["text"," "], + ["comment","; -> Goodbye, Mark"] +],[ + "start", + ["keyword","("], + ["support.function","println"], + ["text"," "], + ["keyword","("], + ["identifier","parting"], + ["text"," "], + ["string","\"Mark\""], + ["text"," "], + ["string","\"es\""], + ["keyword","))"], + ["text"," "], + ["comment","; -> Adios, Mark"] +],[ + "start", + ["keyword","("], + ["support.function","println"], + ["text"," "], + ["keyword","("], + ["identifier","parting"], + ["text"," "], + ["string","\"Mark\""], + ["text",", "], + ["string","\"xy\""], + ["keyword","))"], + ["text"," "], + ["comment","; -> java.lang.IllegalArgumentException: unsupported language xy"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_cobol.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_cobol.json new file mode 100644 index 00000000..9909eadd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_cobol.json @@ -0,0 +1,4 @@ +[[ + "start", + ["identifier","TODO"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_coffee.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_coffee.json new file mode 100644 index 00000000..cf024632 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_coffee.json @@ -0,0 +1,545 @@ +[[ + "start", + ["comment","#test: tokenize keyword"] +],[ + "start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["paren.lparen","("], + ["identifier","i"], + ["text"," "], + ["constant.numeric","1"], + ["punctuation.operator",".."], + ["constant.numeric","2"], + ["paren.rparen",")"] +],[ + "start", + ["comment","#test: tokenize regexp"] +],[ + "start", + ["string.regex","/\"[a]/"] +],[ + "start", + ["comment","#test: tokenize functions"] +],[ + "start", + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{args}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{a1, a2}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{@a1, a2}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator",":"], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{args}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{args}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{0abc}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["identifier","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["paren","{"], + ["keyword.operator","/"], + ["identifier","abc"], + ["paren","}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","=>"] +],[ + "start", + ["text"," "], + ["identifier","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["paren","{"], + ["identifier","abc"], + ["keyword.operator","/"], + ["paren","}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{#abc}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{abc#}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["identifier","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["paren","{"], + ["paren.rparen",")"], + ["identifier","abc"], + ["paren","}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["identifier","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["paren","{"], + ["identifier","abc"], + ["paren.rparen",")"], + ["paren","}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{a{bc}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{ }"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator",":"], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","{}"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","args"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","arg1, arg2"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","arg1 = 1, arg2 = 'name'"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","@arg1 = /abc/, arg2 = 'name'"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["comment","#test: tokenize function: invalid case:"] +],[ + "start", + ["text"," "], + ["identifier","foo"], + ["keyword.operator","="], + ["paren.lparen","("], + ["keyword.operator","/"], + ["identifier","args"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter"," "], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator",":"], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter"," "], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["variable.language","window"], + ["punctuation.operator","."], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","args"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["entity.name.function","foo"], + ["text"," "], + ["keyword.operator",":"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["comment","#test: tokenize callback function"] +],[ + "start", + ["text"," "], + ["identifier","foo"], + ["text"," "], + ["identifier","bar"], + ["keyword.operator",":"], + ["text"," "], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","args"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["text"," "], + ["identifier","foo"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter","x"], + ["paren.rparen",")"], + ["text"," "], + ["storage.type","->"] +],[ + "start", + ["comment","#test: tokenize class"] +],[ + "start", + ["keyword","class"], + ["text"," "], + ["language.support.class","Foo"] +],[ + "start", + ["keyword","class"], + ["text"," "], + ["language.support.class","Foo"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["language.support.class","Bar"] +],[ + "start", + ["comment","#test: tokenize illegal name property"] +],[ + "start", + ["identifier","foo"], + ["punctuation.operator","."], + ["identifier","static"], + ["punctuation.operator","."], + ["identifier","function"] +],[ + "start", + ["comment","#!test tokenize string with interpolation"] +],[ + "start", + ["identifier","a"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.start","\""], + ["paren.string","#{"], + ["text"," "], + ["constant.numeric","22"], + ["text"," "], + ["keyword.operator","/"], + ["text"," "], + ["constant.numeric","7"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["paren","{"], + ["identifier","x"], + ["keyword.operator",":"], + ["text"," "], + ["string.start","\""], + ["paren.string","#{"], + ["identifier","a"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["identifier","b"], + ["paren.string","}"], + ["string.end","\""], + ["paren","}"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","2"], + ["paren.string","}"], + ["string.end","\""] +],[ + "start", + ["string.start","\""], + ["string"," "], + ["paren.string","#{"], + ["text"," "], + ["string.start","\""], + ["string.end","\""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["paren","{}"], + ["text"," "], + ["paren.string","}"], + ["string"," )"], + ["string.end","\""], + ["text"," "] +],[ + "qqdoc", + ["string","\"\"\"heredoc"] +],[ + "start", + ["string"," \"\"\""] +],[ + "start", + ["keyword","do"], + ["text"," "], + ["storage.type","->"] +],[ + "comment", + ["text"," "], + ["comment","###"] +],[ + "comment", + ["comment"," herecomment"] +],[ + "start", + ["comment"," ###"] +],[ + "heregex", + ["text"," "], + ["identifier","re"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.regex","/regex/imgy"], + ["punctuation.operator","."], + ["identifier","test"], + ["text"," "], + ["string.regex","///"] +],[ + "heregex", + ["comment.regex"," "], + ["string.regex","heregex"], + ["comment.regex"," # comment"] +],[ + "start", + ["string.regex"," ///imgy"] +],[ + "js", + ["text"," "], + ["keyword","this"], + ["text"," "], + ["keyword","isnt"], + ["keyword.operator",":"], + ["text"," "], + ["string","`just "] +],[ + "start", + ["string"," JavaScript`"] +],[ + "start", + ["text"," "], + ["constant.language","undefined"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_coldfusion.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_coldfusion.json new file mode 100644 index 00000000..d20d8f3a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_coldfusion.json @@ -0,0 +1,61 @@ +[[ + "start", + ["comment.start",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["keyword.tag-name.xml","cfset"], + ["text.tag-whitespace.xml"," "], + ["comment.start",""], + ["comment"," z "], + ["comment.end","--->"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","welcome"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"Hello World!\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["comment.start.xml",""], + ["comment.xml"," z "], + ["comment.end.xml","-->"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["keyword.tag-name.xml","cfoutput"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","#welcome#"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "cfjs-start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.cfscript.tag-name.xml","cfscript"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "cfjs-no_regex", + ["text"," "], + ["identifier","Dateformat"], + ["paren.lparen","("], + ["identifier","now"], + ["paren.lparen","("], + ["paren.rparen","))"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csharp.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csharp.json new file mode 100644 index 00000000..dcc6d0e9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csharp.json @@ -0,0 +1,31 @@ +[[ + "start", + ["keyword","public"], + ["text"," "], + ["keyword","void"], + ["text"," "], + ["identifier","HelloWorld"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["comment","//Say Hello!"] +],[ + "start", + ["text"," "], + ["identifier","Console"], + ["punctuation.operator","."], + ["identifier","WriteLine"], + ["paren.lparen","("], + ["string.start","\""], + ["string","Hello World"], + ["string.end","\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_document.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_document.json new file mode 100644 index 00000000..1baf49d4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_document.json @@ -0,0 +1,92 @@ +[[ + "start", + ["text.csound-document","/*"] +],[ + "start", + ["text.csound-document"," * comment"] +],[ + "start", + ["text.csound-document"," */"] +],[ + "start", + ["text.csound-document","; comment"] +],[ + "start", + ["text.csound-document","// comment"] +],[ + "start", + ["text.csound-document","/"] +],[ + "synthesizer", + ["meta.tag.punctuation.tag-open.csound-document","<"], + ["entity.name.tag.begin.csound-document","CsoundSynthesizer"], + ["meta.tag.punctuation.tag-close.csound-document",">"] +],[ + "csound-start", + ["meta.tag.punctuation.tag-open.csound-document","<"], + ["entity.name.tag.begin.csound-document","CsInstruments"], + ["meta.tag.punctuation.tag-close.csound-document",">"] +],[ + "csound-start", + ["variable.language.csound","0dbfs"], + ["text"," "], + ["keyword.operator.csound","="], + ["text"," "], + ["constant.numeric.integer.decimal.csound","1"] +],[ + "csound-start", + ["support.function.csound","prints"], + ["text"," "], + ["punctuation.definition.string.begin.csound","\""], + ["string.quoted.csound","hello, world"], + ["constant.character.escape.csound","\\n"], + ["punctuation.definition.string.end.csound","\""] +],[ + "synthesizer", + ["meta.tag.punctuation.end-tag-open.csound-document",""] +],[ + "csound-score-start", + ["meta.tag.punctuation.tag-open.csound-document","<"], + ["entity.name.tag.begin.csound-document","CsScore"], + ["meta.tag.punctuation.tag-close.csound-document",">"] +],[ + "csound-score-start", + ["keyword.control.csound-score","i"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","1"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"] +],[ + "synthesizer", + ["meta.tag.punctuation.end-tag-open.csound-document",""] +],[ + "html-start", + ["meta.tag.punctuation.tag-open.csound-document","<"], + ["entity.name.tag.begin.csound-document","html"], + ["meta.tag.punctuation.tag-close.csound-document",">"] +],[ + "html-start", + ["xml-pe.doctype.xml",""] +],[ + "synthesizer", + ["meta.tag.punctuation.end-tag-open.csound-document",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.csound-document",""] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_orchestra.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_orchestra.json new file mode 100644 index 00000000..410bbc78 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_orchestra.json @@ -0,0 +1,514 @@ +[[ + "punctuation.definition.comment.begin.csound", + ["punctuation.definition.comment.begin.csound","/*"] +],[ + "punctuation.definition.comment.begin.csound", + ["comment.block.csound"," * comment"] +],[ + "start", + ["comment.block.csound"," "], + ["punctuation.definition.comment.end.csound","*/"] +],[ + "start", + ["comment.line.semicolon.csound","; comment"] +],[ + "start", + ["comment.line.double-slash.csound","// comment"] +],[ + "start" +],[ + "start", + ["keyword.function.csound","instr"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["entity.name.function.csound","1"], + ["text",","], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["entity.name.function.csound","N_a_M_e_"], + ["text",","], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["text","+"], + ["entity.name.function.csound","Name"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["comment.line.double-slash.csound","//"] +],[ + "start", + ["text"," "], + ["text.csound","iDuration"], + ["text"," "], + ["keyword.operator.csound","="], + ["text"," "], + ["support.variable.csound","p3"] +],[ + "start", + ["text"," "], + ["support.function.csound","outc"], + ["punctuation.type-annotation.csound",":"], + ["type-annotation.storage.type.csound","a"], + ["text","("], + ["text.csound","aSignal"], + ["text",")"] +],[ + "start", + ["keyword.other.csound","endin"] +],[ + "start" +],[ + "start", + ["keyword.function.csound","opcode"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["entity.name.function.opcode.csound","aUDO"], + ["text",","], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["storage.type.csound","i[]"], + ["text",","], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["storage.type.csound","aik"], + ["comment.line.double-slash.csound","//"] +],[ + "start", + ["text"," "], + ["text.csound","aUDO"] +],[ + "start", + ["keyword.other.csound","endop"] +],[ + "start" +],[ + "start", + ["constant.numeric.integer.decimal.csound","123"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0123456789"] +],[ + "start", + ["storage.type.number.csound","0x"], + ["constant.numeric.integer.hexadecimal.csound","abcdef0123456789"], + ["text"," "], + ["storage.type.number.csound","0X"], + ["constant.numeric.integer.hexadecimal.csound","ABCDEF"] +],[ + "start", + ["constant.numeric.float.csound","1e2"], + ["text"," "], + ["constant.numeric.float.csound","3e+4"], + ["text"," "], + ["constant.numeric.float.csound","5e-6"], + ["text"," "], + ["constant.numeric.float.csound","7E8"], + ["text"," "], + ["constant.numeric.float.csound","9E+0"], + ["text"," "], + ["constant.numeric.float.csound","1E-2"], + ["text"," "], + ["constant.numeric.float.csound","3."], + ["text"," "], + ["constant.numeric.float.csound","4.56"], + ["text"," "], + ["constant.numeric.float.csound",".789"] +],[ + "start" +],[ + "start", + ["punctuation.definition.string.begin.csound","\""], + ["string.quoted.csound","characters"], + ["entity.name.function.preprocessor.csound","$MACRO."], + ["punctuation.definition.string.end.csound","\""] +],[ + "start", + ["punctuation.definition.string.begin.csound","\""], + ["constant.character.escape.csound","\\\\\\a\\b\\n\\r\\t\\012\\345\\67\\\""], + ["punctuation.definition.string.end.csound","\""] +],[ + "start" +],[ + ["#tmp","braced string","start","braced string"], + ["punctuation.definition.string.begin.csound","{{"] +],[ + ["#tmp","braced string","start","braced string"], + ["string.braced.csound","characters$MACRO."] +],[ + "start", + ["punctuation.definition.string.end.csound","}}"] +],[ + "start", + ["punctuation.definition.string.begin.csound","{{"], + ["constant.character.escape.csound","\\\\\\a\\b\\n\\r\\t\\\"\\012\\345\\67"], + ["punctuation.definition.string.end.csound","}}"] +],[ + "start" +],[ + "start", + ["keyword.operator.csound","+"], + ["text"," "], + ["keyword.operator.csound","-"], + ["text"," "], + ["keyword.operator.csound","~"], + ["text"," "], + ["keyword.operator.csound","¬"], + ["text"," "], + ["keyword.operator.csound","!"], + ["text"," "], + ["keyword.operator.csound","*"], + ["text"," "], + ["keyword.operator.csound","/"], + ["text"," "], + ["keyword.operator.csound","^"], + ["text"," "], + ["keyword.operator.csound","%"], + ["text"," "], + ["keyword.operator.csound","<<"], + ["text"," "], + ["keyword.operator.csound",">>"], + ["text"," "], + ["keyword.operator.csound","<"], + ["text"," "], + ["keyword.operator.csound",">"], + ["text"," "], + ["keyword.operator.csound","<="], + ["text"," "], + ["keyword.operator.csound",">="], + ["text"," "], + ["keyword.operator.csound","=="], + ["text"," "], + ["keyword.operator.csound","!="], + ["text"," "], + ["keyword.operator.csound","&"], + ["text"," "], + ["keyword.operator.csound","#"], + ["text"," "], + ["keyword.operator.csound","|"], + ["text"," "], + ["keyword.operator.csound","&&"], + ["text"," "], + ["keyword.operator.csound","||"], + ["text"," "], + ["keyword.operator.csound","?"], + ["text"," "], + ["keyword.operator.csound",":"], + ["text"," "], + ["keyword.operator.csound","+="], + ["text"," "], + ["keyword.operator.csound","-="], + ["text"," "], + ["keyword.operator.csound","*="], + ["text"," "], + ["keyword.operator.csound","/="] +],[ + "start" +],[ + "start", + ["variable.language.csound","0dbfs"], + ["text"," "], + ["variable.language.csound","A4"], + ["text"," "], + ["variable.language.csound","kr"], + ["text"," "], + ["variable.language.csound","ksmps"], + ["text"," "], + ["variable.language.csound","nchnls"], + ["text"," "], + ["variable.language.csound","nchnls_i"], + ["text"," "], + ["variable.language.csound","sr"] +],[ + "start" +],[ + "start", + ["keyword.control.csound","do"], + ["text"," "], + ["keyword.control.csound","else"], + ["text"," "], + ["keyword.control.csound","elseif"], + ["text"," "], + ["keyword.control.csound","endif"], + ["text"," "], + ["keyword.control.csound","enduntil"], + ["text"," "], + ["keyword.control.csound","fi"], + ["text"," "], + ["keyword.control.csound","if"], + ["text"," "], + ["keyword.control.csound","ithen"], + ["text"," "], + ["keyword.control.csound","kthen"], + ["text"," "], + ["keyword.control.csound","od"], + ["text"," "], + ["keyword.control.csound","then"], + ["text"," "], + ["keyword.control.csound","until"], + ["text"," "], + ["keyword.control.csound","while"] +],[ + "start", + ["keyword.control.csound","return"], + ["text"," "], + ["keyword.control.csound","rireturn"] +],[ + "start" +],[ + "start", + ["entity.name.label.csound","aLabel"], + ["entity.punctuation.label.csound",":"] +],[ + "start", + ["text.csound"," "], + ["entity.name.label.csound","label2"], + ["entity.punctuation.label.csound",":"] +],[ + "start" +],[ + "start", + ["keyword.control.csound","goto"], + ["text.csound"," "], + ["entity.name.label.csound","aLabel"] +],[ + "start", + ["keyword.control.csound","reinit"], + ["text.csound"," "], + ["entity.name.label.csound","aLabel"] +],[ + "start", + ["keyword.control.csound","cggoto"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","1"], + ["keyword.operator.csound","=="], + ["constant.numeric.integer.decimal.csound","0"], + ["text.csound",", "], + ["entity.name.label.csound","aLabel"] +],[ + "start", + ["keyword.control.csound","timout"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"], + ["text.csound",","], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"], + ["text.csound",", "], + ["entity.name.label.csound","aLabel"] +],[ + "start", + ["keyword.control.csound","loop_ge"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"], + ["text.csound",","], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"], + ["text.csound",","], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"], + ["text.csound",", "], + ["entity.name.label.csound","aLabel"] +],[ + "start" +],[ + ["#tmp","csound-score-start","start","Csound score opcode"], + ["support.function.csound","readscore"], + ["text"," "], + ["punctuation.definition.string.begin.csound","{{"] +],[ + ["#tmp","csound-score-start","start","Csound score opcode"], + ["keyword.control.csound-score","i"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","1"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0"] +],[ + "start", + ["punctuation.definition.string.end.csound","}}"] +],[ + ["#tmp","python-start","start","Python opcode"], + ["support.function.csound","pyrun"], + ["text"," "], + ["punctuation.definition.string.begin.csound","{{"] +],[ + ["#tmp","python-start","start","Python opcode"], + ["comment","# Python"] +],[ + "start", + ["punctuation.definition.string.end.csound","}}"] +],[ + ["#tmp","lua-start","start","Lua opcode"], + ["support.function.csound","lua_exec"], + ["text"," "], + ["punctuation.definition.string.begin.csound","{{"] +],[ + ["#tmp","lua-start","start","Lua opcode"], + ["comment","-- Lua"] +],[ + "start", + ["punctuation.definition.string.end.csound","}}"] +],[ + "start" +],[ + "start", + ["keyword.preprocessor.csound","#include"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["string.csound","\"file.udo\""] +],[ + "start", + ["keyword.preprocessor.csound","#include"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["string.csound","|file.udo|"] +],[ + "start" +],[ + "start", + ["keyword.preprocessor.csound","#ifdef"], + ["text"," "], + ["entity.name.function.preprocessor.csound","MACRO"] +],[ + "start", + ["keyword.preprocessor.csound","#else"] +],[ + "start", + ["keyword.preprocessor.csound","#ifndef"], + ["text"," "], + ["entity.name.function.preprocessor.csound","MACRO"] +],[ + "start", + ["keyword.preprocessor.csound","#endif"] +],[ + "start", + ["keyword.preprocessor.csound","#undef"], + ["text"," "], + ["entity.name.function.preprocessor.csound","MACRO"] +],[ + "start" +],[ + "start", + ["keyword.preprocessor.csound","# define"], + ["text"," "], + ["entity.name.function.preprocessor.csound","MACRO"], + ["punctuation.definition.macro.begin.csound","#"], + ["text.csound","macro_body"], + ["punctuation.definition.macro.end.csound","#"] +],[ + "define directive", + ["keyword.preprocessor.csound","#define"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"] +],[ + "define directive", + ["entity.name.function.preprocessor.csound","MACRO"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"] +],[ + "macro body", + ["punctuation.definition.macro.begin.csound","#"], + ["constant.character.escape.csound","\\#"], + ["text.csound","macro"] +],[ + "start", + ["text.csound","body"], + ["constant.character.escape.csound","\\#"], + ["punctuation.definition.macro.end.csound","#"] +],[ + "start" +],[ + "start", + ["keyword.preprocessor.csound","#define"], + ["text"," "], + ["entity.name.function.preprocessor.csound","MACRO"], + ["punctuation.definition.macro-parameter-name-list.begin.csound","("], + ["variable.parameter.preprocessor.csound","ARG1"], + ["text","#"], + ["variable.parameter.preprocessor.csound","ARG2"], + ["punctuation.definition.macro-parameter-name-list.end.csound",")"], + ["text"," "], + ["punctuation.definition.macro.begin.csound","#"], + ["text.csound","macro_body"], + ["punctuation.definition.macro.end.csound","#"] +],[ + "define directive", + ["keyword.preprocessor.csound","#define"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"] +],[ + "define directive", + ["entity.name.function.preprocessor.csound","MACRO"], + ["punctuation.definition.macro-parameter-name-list.begin.csound","("], + ["variable.parameter.preprocessor.csound","ARG1"], + ["text","'"], + ["variable.parameter.preprocessor.csound","ARG2"], + ["text","'"], + ["variable.parameter.preprocessor.csound","ARG3"], + ["punctuation.definition.macro-parameter-name-list.end.csound",")"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"] +],[ + "macro body", + ["punctuation.definition.macro.begin.csound","#"], + ["constant.character.escape.csound","\\#"], + ["text.csound","macro"] +],[ + "start", + ["text.csound","body"], + ["constant.character.escape.csound","\\#"], + ["punctuation.definition.macro.end.csound","#"] +],[ + "start" +],[ + "start", + ["entity.name.function.preprocessor.csound","$MACRO"], + ["text"," "], + ["entity.name.function.preprocessor.csound","$MACRO."] +],[ + "start", + ["entity.name.function.preprocessor.csound","$MACRO"], + ["punctuation.definition.macro-parameter-value-list.begin.csound","("], + ["text","x"], + ["punctuation.definition.macro-parameter-value-list.end.csound",")"] +],[ + "start", + ["keyword.preprocessor.csound","@0"] +],[ + "start", + ["keyword.preprocessor.csound","@@ 1"] +],[ + "start", + ["entity.name.function.preprocessor.csound","$MACRO."], + ["punctuation.definition.macro-parameter-value-list.begin.csound","("], + ["punctuation.macro-parameter-value-parenthetical.begin.csound","(("], + ["text.csound","x"], + ["keyword.operator.csound","#"], + ["text.csound","y"], + ["constant.character.escape.csound","\\)"], + ["punctuation.macro-parameter-value-parenthetical.end.csound","))"], + ["punctuation.macro-parameter-value-separator.csound","'"], + ["text"," "], + ["punctuation.definition.string.begin.csound","\""], + ["invalid.illegal.csound","(#'"], + ["string.quoted.csound","x"], + ["invalid.illegal.csound",")"], + ["constant.character.escape.csound","\\)"], + ["string.quoted.csound","x"], + ["constant.character.escape.csound","\\)"], + ["invalid.illegal.csound",")"], + ["punctuation.definition.string.end.csound","\""], + ["punctuation.macro-parameter-value-separator.csound","#"], + ["text"," "], + ["punctuation.definition.string.begin.csound","{{"], + ["string.braced.csound","x"], + ["constant.character.escape.csound","\\)"], + ["invalid.illegal.csound.csound",")"], + ["string.braced.csound","x"], + ["invalid.illegal.csound.csound",")"], + ["constant.character.escape.csound","\\)"], + ["invalid.illegal.csound.csound","(#'"], + ["punctuation.definition.string.end.csound","}}"], + ["punctuation.definition.macro-parameter-value-list.end.csound",")"], + ["comment.line.semicolon.csound",";"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_score.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_score.json new file mode 100644 index 00000000..6de013ae --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_csound_score.json @@ -0,0 +1,158 @@ +[[ + "punctuation.definition.comment.begin.csound", + ["punctuation.definition.comment.begin.csound","/*"] +],[ + "punctuation.definition.comment.begin.csound", + ["comment.block.csound"," * comment"] +],[ + "start", + ["comment.block.csound"," "], + ["punctuation.definition.comment.end.csound","*/"] +],[ + "start", + ["comment.line.semicolon.csound","; comment"] +],[ + "start", + ["comment.line.double-slash.csound","// comment"] +],[ + "start", + ["keyword.control.csound-score","a"], + ["text"," "], + ["keyword.control.csound-score","b"], + ["text"," "], + ["keyword.control.csound-score","C"], + ["text"," "], + ["keyword.control.csound-score","d"], + ["text"," "], + ["keyword.control.csound-score","e"], + ["text"," "], + ["keyword.control.csound-score","f"], + ["text"," "], + ["keyword.control.csound-score","i"], + ["text"," "], + ["keyword.control.csound-score","q"], + ["text"," "], + ["keyword.control.csound-score","s"], + ["text"," "], + ["keyword.control.csound-score","t"], + ["text"," "], + ["keyword.control.csound-score","v"], + ["text"," "], + ["keyword.control.csound-score","x"], + ["text"," "], + ["keyword.control.csound-score","y"] +],[ + "start", + ["constant.numeric.language.csound-score","z"] +],[ + "start", + ["keyword.control.csound-score","np"], + ["constant.numeric.integer.decimal.csound-score","0"], + ["text"," "], + ["keyword.control.csound-score","nP"], + ["constant.numeric.integer.decimal.csound-score","1"], + ["text"," "], + ["keyword.control.csound-score","Np"], + ["constant.numeric.integer.decimal.csound-score","2"], + ["text"," "], + ["keyword.control.csound-score","NP"], + ["constant.numeric.integer.decimal.csound-score","3"] +],[ + "start", + ["keyword.other.csound-score","m"], + ["punctuation.definition.comment.begin.csound","/*"], + ["punctuation.definition.comment.end.csound","*/"], + ["entity.name.label.csound-score","label"], + ["comment.line.semicolon.csound",";"] +],[ + "start", + ["keyword.other.csound-score","n"], + ["text"," "], + ["entity.name.label.csound-score","label"] +],[ + "start", + ["constant.numeric.integer.decimal.csound","123"], + ["text"," "], + ["constant.numeric.integer.decimal.csound","0123456789"] +],[ + "start", + ["storage.type.number.csound","0x"], + ["constant.numeric.integer.hexadecimal.csound","abcdef0123456789"], + ["text"," "], + ["storage.type.number.csound","0X"], + ["constant.numeric.integer.hexadecimal.csound","ABCDEF"] +],[ + "start", + ["constant.numeric.float.csound","1e2"], + ["text"," "], + ["constant.numeric.float.csound","3e+4"], + ["text"," "], + ["constant.numeric.float.csound","5e-6"], + ["text"," "], + ["constant.numeric.float.csound","7E8"], + ["text"," "], + ["constant.numeric.float.csound","9E+0"], + ["text"," "], + ["constant.numeric.float.csound","1E-2"], + ["text"," "], + ["constant.numeric.float.csound","3."], + ["text"," "], + ["constant.numeric.float.csound","4.56"], + ["text"," "], + ["constant.numeric.float.csound",".789"] +],[ + "start", + ["punctuation.definition.string.begin.csound-score","\""], + ["string.quoted.csound-score","characters"], + ["entity.name.function.preprocessor.csound","$MACRO."], + ["punctuation.definition.string.end.csound-score","\""] +],[ + ["#tmp","loop after macro name","start","loop after macro name"], + ["punctuation.braced-loop.begin.csound-score","{"], + ["text"," "], + ["constant.numeric.integer.decimal.csound-score","1"], + ["text"," "], + ["entity.name.function.preprocessor.csound-score","I"] +],[ + ["#tmp","loop after macro name","start","loop after macro name","loop after macro name"], + ["text"," "], + ["punctuation.braced-loop.begin.csound-score","{"], + ["text"," "], + ["constant.numeric.integer.decimal.csound-score","2"], + ["text"," "], + ["entity.name.function.preprocessor.csound-score","J"] +],[ + ["#tmp","loop after macro name","start","loop after macro name","loop after macro name","loop after macro name"], + ["text"," "], + ["punctuation.braced-loop.begin.csound-score","{"], + ["text"," "], + ["constant.numeric.integer.decimal.csound-score","3"], + ["text"," "], + ["entity.name.function.preprocessor.csound-score","K"] +],[ + ["#tmp","loop after macro name","start","loop after macro name","loop after macro name","loop after macro name"], + ["text"," "], + ["entity.name.function.preprocessor.csound","$I"], + ["text"," "], + ["entity.name.function.preprocessor.csound","$J"], + ["text"," "], + ["entity.name.function.preprocessor.csound","$K"] +],[ + ["#tmp","loop after macro name","start","loop after macro name","loop after macro name"], + ["text"," "], + ["punctuation.braced-loop.end.csound-score","}"] +],[ + ["#tmp","loop after macro name","start","loop after macro name"], + ["text"," "], + ["punctuation.braced-loop.end.csound-score","}"] +],[ + "start", + ["punctuation.braced-loop.end.csound-score","}"] +],[ + "start", + ["keyword.preprocessor.csound","#include"], + ["text"," "], + ["string.csound","\"score.sco\""] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_css.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_css.json new file mode 100644 index 00000000..e735de98 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_css.json @@ -0,0 +1,221 @@ +[[ + "ruleset", + ["variable",".text-layer"], + ["text"," "], + ["paren.lparen","{"] +],[ + "ruleset", + ["text"," "], + ["support.type","font"], + ["text",": "], + ["constant.numeric","12"], + ["keyword","px"], + ["text"," Monaco, "], + ["string.start","\""], + ["string","Courier New"], + ["string.end","\""], + ["text",", "], + ["support.constant.fonts","monospace"], + ["text",";"] +],[ + "ruleset", + ["text"," "], + ["support.type","cursor"], + ["text",": "], + ["support.constant","text"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "ruleset", + ["variable",".blinker"], + ["text"," "], + ["paren.lparen","{"] +],[ + "ruleset", + ["text"," "], + ["support.type","animation"], + ["text",": blink "], + ["constant.numeric","1"], + ["keyword","s"], + ["text"," "], + ["support.constant","linear"], + ["text"," infinite alternate;"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["string","@"], + ["keyword","keyframes"], + ["text"," blink "], + ["paren.lparen","{"] +],[ + "ruleset", + ["text"," "], + ["constant.numeric","0"], + ["keyword","%"], + ["text",", "], + ["constant.numeric","40"], + ["keyword","%"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["comment","ruleset"], + ["text"," "], + ["support.type","opacity"], + ["text",": "], + ["constant.numeric","0"], + ["text","; "], + ["comment","/*"] +],[ + "ruleset", + ["comment"," */"] +],[ + "ruleset", + ["text"," "], + ["support.type","opacity"], + ["text",": "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "ruleset", + ["text"," "], + ["constant.numeric","40.5"], + ["keyword","%"], + ["text",", "], + ["constant.numeric","100"], + ["keyword","%"], + ["text"," "], + ["paren.lparen","{"] +],[ + "ruleset", + ["text"," "], + ["support.type","opacity"], + ["text",": "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "media", + ["string","@"], + ["keyword","document"], + ["text"," "], + ["support.function","url("], + ["string","http://c9.io/"], + ["support.function",")"], + ["text",", "], + ["support.function","url-prefix("], + ["string","http://ace.c9.io/build/"], + ["support.function",")"], + ["text",","] +],[ + "media", + ["text"," "], + ["support.function","domain("], + ["string","c9.io"], + ["support.function",")"], + ["text",", "], + ["support.function","regexp("], + ["string","\"https:.*\""], + ["support.function",")"], + ["text"," "], + ["comment","/**/"] +],[ + "start", + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["comment","/**/"] +],[ + "start", + ["text"," "], + ["constant","img"], + ["text","["], + ["constant","title"], + ["text","]"], + ["string",":before"], + ["text"," "] +],[ + "ruleset", + ["text"," "], + ["paren.lparen","{"] +],[ + ["string.start0","ruleset"], + ["text"," "], + ["support.type","content"], + ["text",": "], + ["support.function","attr"], + ["text","(title) "], + ["string.start","\""], + ["constant.language.escape","\\A"], + ["string","Image "], + ["constant.language.escape","\\"] +],[ + "ruleset", + ["string"," retrieved from"], + ["string.end","\""] +],[ + ["comment","ruleset"], + ["text"," "], + ["support.function","attr"], + ["text","(src); "], + ["comment","/*"] +],[ + "ruleset", + ["comment"," */"] +],[ + "ruleset", + ["text"," "], + ["support.type","white-space"], + ["text",": "], + ["support.constant","pre"], + ["text",";"] +],[ + "ruleset", + ["text"," "], + ["support.type","display"], + ["text",": "], + ["support.constant","block"], + ["text",";"] +],[ + "ruleset", + ["text"," "], + ["support.type","background"], + ["text",": "], + ["support.function","url("], + ["string","asdasd"], + ["support.function",")"], + ["text","; "], + ["string.start","\""], + ["string","err"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_curly.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_curly.json new file mode 100644 index 00000000..d87a627a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_curly.json @@ -0,0 +1,56 @@ +[[ + "start", + ["text.xml","tokenize Curly template"], + ["variable","{{"], + ["text","test"], + ["variable","}}"] +],[ + "start", + ["text.xml","tokenize embedded script"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.script.tag-name.xml","script"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","a"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","'a'"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["storage.type","var"], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml","'123'"] +],[ + "start", + ["text.xml","tokenize multiline attribute value with double quotes"] +],[ + ["string.attribute-value.xml0","tag_stuff"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"abc{{xyz}}"] +],[ + "start", + ["string.attribute-value.xml","def\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml","tokenize multiline attribute value with single quotes"] +],[ + ["string.attribute-value.xml","tag_stuff"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","'abc"] +],[ + "start", + ["string.attribute-value.xml","def\\\"'"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_d.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_d.json new file mode 100644 index 00000000..85831cc3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_d.json @@ -0,0 +1,111 @@ +[[ + "start", + ["comment.shebang","#!/usr/bin/env rdmd"] +],[ + "start", + ["comment","// Computes average line length for standard input."] +],[ + "start", + ["keyword","import"], + ["text"," "], + ["variable.module","std.stdio"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["keyword.type","void"], + ["text"," "], + ["identifier","main"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.type","ulong"], + ["text"," "], + ["identifier","lines"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.type","double"], + ["text"," "], + ["identifier","sumLength"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.control","foreach"], + ["text"," "], + ["paren.lparen","("], + ["identifier","line"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","stdin"], + ["punctuation.operator","."], + ["identifier","byLine"], + ["paren.lparen","("], + ["paren.rparen","))"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.operator","++"], + ["identifier","lines"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["identifier","sumLength"], + ["text"," "], + ["keyword.operator","+="], + ["text"," "], + ["identifier","line"], + ["punctuation.operator","."], + ["identifier","length"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["identifier","writeln"], + ["paren.lparen","("], + ["string","\"Average line length: \""], + ["punctuation.operator",","] +],[ + "start", + ["text"," "], + ["identifier","lines"], + ["text"," "], + ["keyword.operator","?"], + ["text"," "], + ["identifier","sumLength"], + ["text"," "], + ["keyword.operator","/"], + ["text"," "], + ["identifier","lines"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_dart.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_dart.json new file mode 100644 index 00000000..37cdc323 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_dart.json @@ -0,0 +1,368 @@ +[[ + "start", + ["identifier","main"], + ["text","() {"] +],[ + "start", + ["text"," "], + ["identifier","print"], + ["text","("], + ["string","'Hello World!'"], + ["text",");"] +],[ + "start", + ["text","}"] +],[ + "start" +],[ + "start" +],[ + "start", + ["storage.type.primitive.dart","int"], + ["text"," "], + ["identifier","fib"], + ["text","("], + ["storage.type.primitive.dart","int"], + ["text"," "], + ["identifier","n"], + ["text",") "], + ["keyword.operator.assignment.dart","="], + ["keyword.operator.comparison.dart",">"], + ["text"," ("], + ["identifier","n"], + ["text"," "], + ["keyword.operator.comparison.dart",">"], + ["text"," "], + ["constant.numeric","1"], + ["text",") "], + ["keyword.control.ternary.dart","?"], + ["text"," ("], + ["identifier","fib"], + ["text","("], + ["identifier","n"], + ["text"," "], + ["keyword.operator.arithmetic.dart","-"], + ["text"," "], + ["constant.numeric","1"], + ["text",") "], + ["keyword.operator.arithmetic.dart","+"], + ["text"," "], + ["identifier","fib"], + ["text","("], + ["identifier","n"], + ["text"," "], + ["keyword.operator.arithmetic.dart","-"], + ["text"," "], + ["constant.numeric","2"], + ["text",")) "], + ["keyword.control.ternary.dart",":"], + ["text"," "], + ["identifier","n"], + ["text",";"] +],[ + "start", + ["identifier","main"], + ["text","() {"] +],[ + "start", + ["text"," "], + ["identifier","print"], + ["text","("], + ["string","'fib(20) = ${fib(20)}'"], + ["text",");"] +],[ + "start", + ["text","}"] +],[ + "comment", + ["comment","/*asd"] +],[ + "comment", + ["comment","asdad"] +],[ + "start", + ["comment","*/"] +],[ + "start", + ["constant.numeric","0.67"] +],[ + "start", + ["constant.numeric","77"] +],[ + "start", + ["text","."], + ["constant.numeric","86"] +],[ + "start" +],[ + "start", + ["keyword.other.import.dart","import"], + ["text","("], + ["string","\"http://dartwatch.com/myOtherLibrary.dart\""], + ["text",");"] +],[ + "start", + ["keyword.other.import.dart","import"], + ["text","("], + ["string","\"myOtherLibrary.dart\""], + ["text",", "], + ["keyword.other.import.dart","prefix"], + ["text",":"], + ["string","\"lib1\""], + ["text",");"] +],[ + "start" +],[ + "qqdoc", + ["string","\"\"\"asdasdads"] +],[ + "qqdoc", + ["string","asdadsadsasd"] +],[ + "start", + ["string","asdasdasdad\"\"\""] +],[ + "start", + ["text"," "] +],[ + "start", + ["string","'23424'"] +],[ + "start" +],[ + "start", + ["constant.numeric","0x234"] +],[ + "start" +],[ + "start", + ["identifier","foo"], + ["text"," "], + ["keyword.operator.dart","is"], + ["text"," "], + ["identifier","bar"] +],[ + "start" +],[ + "start", + ["storage.type.primitive.dart","int"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator.assignment.dart","="], + ["text"," "], + ["constant.numeric","4"], + ["text"," "], + ["keyword.operator.bitwise.dart","<<"], + ["text"," "], + ["constant.numeric","10"], + ["text"," "] +],[ + "start", + ["comment","// Create a class for Point."] +],[ + "start", + ["keyword.declaration.dart","class"], + ["text"," "], + ["identifier","Point"], + ["text"," {"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["comment","// Final variables cannot be changed once they are assigned."] +],[ + "start", + ["text"," "], + ["comment","// Create two instance variables."] +],[ + "start", + ["text"," "], + ["storage.modifier.dart","final"], + ["text"," "], + ["storage.type.primitive.dart","num"], + ["text"," "], + ["identifier","x"], + ["text",", "], + ["identifier","y"], + ["text",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["comment","// A constructor, with syntactic sugar for setting instance variables."] +],[ + "start", + ["text"," "], + ["identifier","Point"], + ["text","("], + ["variable.language.dart","this"], + ["text","."], + ["identifier","x"], + ["text",", "], + ["variable.language.dart","this"], + ["text","."], + ["identifier","y"], + ["text",");"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["comment","// A named constructor with an initializer list."] +],[ + "start", + ["text"," "], + ["identifier","Point"], + ["text","."], + ["identifier","origin"], + ["text","() "], + ["keyword.control.ternary.dart",":"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator.assignment.dart","="], + ["text"," "], + ["constant.numeric","0"], + ["text",", "], + ["identifier","y"], + ["text"," "], + ["keyword.operator.assignment.dart","="], + ["text"," "], + ["constant.numeric","0"], + ["text",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["comment","// A method."] +],[ + "start", + ["text"," "], + ["storage.type.primitive.dart","num"], + ["text"," "], + ["identifier","distanceTo"], + ["text","("], + ["identifier","Point"], + ["text"," "], + ["identifier","other"], + ["text",") {"] +],[ + "start", + ["text"," "], + ["storage.type.primitive.dart","var"], + ["text"," "], + ["identifier","dx"], + ["text"," "], + ["keyword.operator.assignment.dart","="], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator.arithmetic.dart","-"], + ["text"," "], + ["identifier","other"], + ["text","."], + ["identifier","x"], + ["text",";"] +],[ + "start", + ["text"," "], + ["storage.type.primitive.dart","var"], + ["text"," "], + ["identifier","dy"], + ["text"," "], + ["keyword.operator.assignment.dart","="], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["keyword.operator.arithmetic.dart","-"], + ["text"," "], + ["identifier","other"], + ["text","."], + ["identifier","y"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword.control.dart","return"], + ["text"," "], + ["identifier","sqrt"], + ["text","("], + ["identifier","dx"], + ["text"," "], + ["keyword.operator.arithmetic.dart","*"], + ["text"," "], + ["identifier","dx"], + ["text"," "], + ["keyword.operator.arithmetic.dart","+"], + ["text"," "], + ["identifier","dy"], + ["text"," "], + ["keyword.operator.arithmetic.dart","*"], + ["text"," "], + ["identifier","dy"], + ["text",");"] +],[ + "start", + ["text"," }"] +],[ + "start", + ["text","}"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["comment","// Check for null."] +],[ + "start", + ["storage.type.primitive.dart","var"], + ["text"," "], + ["identifier","unicorn"], + ["text",";"] +],[ + "start", + ["keyword.control.dart","assert"], + ["text","("], + ["identifier","unicorn"], + ["text"," "], + ["keyword.operator.comparison.dart","=="], + ["text"," "], + ["constant.language.dart","null"], + ["text",");"] +],[ + "start" +],[ + "start", + ["comment","// Check for NaN."] +],[ + "start", + ["storage.type.primitive.dart","var"], + ["text"," "], + ["identifier","iMeantToDoThis"], + ["text"," "], + ["keyword.operator.assignment.dart","="], + ["text"," "], + ["constant.numeric","0"], + ["keyword.operator.arithmetic.dart","/"], + ["constant.numeric","0"], + ["text",";"] +],[ + "start", + ["keyword.control.dart","assert"], + ["text","("], + ["identifier","iMeantToDoThis"], + ["text","."], + ["identifier","isNaN"], + ["text","());"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_diff.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_diff.json new file mode 100644 index 00000000..6c36f5fa --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_diff.json @@ -0,0 +1,262 @@ +[[ + "start", + ["variable","diff"], + ["variable"," --git"], + ["keyword"," a/lib/ace/edit_session.js"], + ["variable"," b/lib/ace/edit_session.js"] +],[ + "start", + ["variable","index 23fc3fc..ed3b273 100644"] +],[ + "start", + ["constant.numeric","---"], + ["meta.tag"," a/lib/ace/edit_session.js"] +],[ + "start", + ["constant.numeric","+++"], + ["meta.tag"," b/lib/ace/edit_session.js"] +],[ + "start", + ["constant","@@"], + ["constant.numeric"," -51,6 +51,7 "], + ["constant","@@"], + ["comment.doc.tag"," var TextMode = require(\"./mode/text\").Mode;"] +],[ + "start", + ["invisible"," var Range = require(\"./range\").Range;"] +],[ + "start", + ["invisible"," var Document = require(\"./document\").Document;"] +],[ + "start", + ["invisible"," var BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;"] +],[ + "start", + ["support.constant","+"], + ["text","var SearchHighlight = require(\"./search_highlight\").SearchHighlight;"] +],[ + "start", + ["text"," "] +],[ + "start", + ["invisible"," /**"] +],[ + "start", + ["invisible"," * class EditSession"] +],[ + "start", + ["constant","@@"], + ["constant.numeric"," -307,6 +308,13 "], + ["constant","@@"], + ["comment.doc.tag"," var EditSession = function(text, mode) {"] +],[ + "start", + ["invisible"," return token;"] +],[ + "start", + ["invisible"," };"] +],[ + "start", + ["text"," "] +],[ + "start", + ["support.constant","+"], + ["text"," this.highlight = function(re) {"] +],[ + "start", + ["support.constant","+"], + ["text"," if (!this.$searchHighlight) {"] +],[ + "start", + ["support.constant","+"], + ["text"," var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");"] +],[ + "start", + ["support.constant","+"], + ["text"," this.$searchHighlight = this.addDynamicMarker(highlight);"] +],[ + "start", + ["support.constant","+"], + ["text"," }"] +],[ + "start", + ["support.constant","+"], + ["text"," this.$searchHighlight.setRegexp(re);"] +],[ + "start", + ["support.constant","+"], + ["text"," }"] +],[ + "start", + ["invisible"," /**"] +],[ + "start", + ["invisible"," * EditSession.setUndoManager(undoManager)"] +],[ + "start", + ["invisible"," * - undoManager (UndoManager): The new undo manager"] +],[ + "start", + ["constant","@@"], + ["constant.numeric"," -556,7 +564,8 "], + ["constant","@@"], + ["comment.doc.tag"," var EditSession = function(text, mode) {"] +],[ + "start", + ["invisible"," type : type || \"line\","] +],[ + "start", + ["invisible"," renderer: typeof type == \"function\" ? type : null,"] +],[ + "start", + ["invisible"," clazz : clazz,"] +],[ + "start", + ["support.function","-"], + ["string"," inFront: !!inFront"] +],[ + "start", + ["support.constant","+"], + ["text"," inFront: !!inFront,"] +],[ + "start", + ["support.constant","+"], + ["text"," id: id"] +],[ + "start", + ["invisible"," }"] +],[ + "start", + ["text"," "] +],[ + "start", + ["invisible"," if (inFront) {"] +],[ + "start", + ["variable","diff"], + ["variable"," --git"], + ["keyword"," a/lib/ace/editor.js"], + ["variable"," b/lib/ace/editor.js"] +],[ + "start", + ["variable","index 834e603..b27ec73 100644"] +],[ + "start", + ["constant.numeric","---"], + ["meta.tag"," a/lib/ace/editor.js"] +],[ + "start", + ["constant.numeric","+++"], + ["meta.tag"," b/lib/ace/editor.js"] +],[ + "start", + ["constant","@@"], + ["constant.numeric"," -494,7 +494,7 "], + ["constant","@@"], + ["comment.doc.tag"," var Editor = function(renderer, session) {"] +],[ + "start", + ["invisible"," * Emitted when a selection has changed."] +],[ + "start", + ["invisible"," **/"] +],[ + "start", + ["invisible"," this.onSelectionChange = function(e) {"] +],[ + "start", + ["support.function","-"], + ["string"," var session = this.getSession();"] +],[ + "start", + ["support.constant","+"], + ["text"," var session = this.session;"] +],[ + "start", + ["text"," "] +],[ + "start", + ["invisible"," if (session.$selectionMarker) {"] +],[ + "start", + ["invisible"," session.removeMarker(session.$selectionMarker);"] +],[ + "start", + ["constant","@@"], + ["constant.numeric"," -509,12 +509,40 "], + ["constant","@@"], + ["comment.doc.tag"," var Editor = function(renderer, session) {"] +],[ + "start", + ["invisible"," this.$updateHighlightActiveLine();"] +],[ + "start", + ["invisible"," }"] +],[ + "start", + ["text"," "] +],[ + "start", + ["support.function","-"], + ["string"," var self = this;"] +],[ + "start", + ["support.function","-"], + ["string"," if (this.$highlightSelectedWord && !this.$wordHighlightTimer)"] +],[ + "start", + ["support.function","-"], + ["string"," this.$wordHighlightTimer = setTimeout(function() {"] +],[ + "start", + ["support.function","-"], + ["string"," self.session.$mode.highlightSelection(self);"] +],[ + "start", + ["support.function","-"], + ["string"," self.$wordHighlightTimer = null;"] +],[ + "start", + ["support.function","-"], + ["string"," }, 30, this);"] +],[ + "start", + ["support.constant","+"], + ["text"," var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp()"] +],[ + "start", + ["invisible"," };"] +],[ + "start", + ["variable","diff"], + ["variable"," --git"], + ["keyword"," a/lib/ace/search_highlight.js"], + ["variable"," b/lib/ace/search_highlight.js"] +],[ + "start", + ["invisible","new file mode 100644"] +],[ + "start", + ["variable","index 0000000..b2df779"] +],[ + "start", + ["constant.numeric","---"], + ["meta.tag"," /dev/null"] +],[ + "start", + ["constant.numeric","+++"], + ["meta.tag"," b/lib/ace/search_highlight.js"] +],[ + "start", + ["constant","@@"], + ["constant.numeric"," -0,0 +1,3 "], + ["constant","@@"] +],[ + "start", + ["support.constant","+"], + ["text","new"] +],[ + "start", + ["support.constant","+"], + ["text","empty file"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_dot.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_dot.json new file mode 100644 index 00000000..fec8b969 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_dot.json @@ -0,0 +1,2254 @@ +[[ + "start", + ["comment","// Original source: http://www.graphviz.org/content/lion_share"] +],[ + "start", + ["comment","##\"A few people in the field of genetics are using dot to draw \"marriage node diagram\" pedigree drawings. Here is one I have done of a test pedigree from the FTREE pedigree drawing package (Lion Share was a racehorse).\" Contributed by David Duffy."] +],[ + "start" +],[ + "start", + ["comment","##Command to get the layout: \"dot -Tpng thisfile > thisfile.png\""] +],[ + "start" +],[ + "start", + ["keyword","digraph"], + ["text"," Ped_Lion_Share "], + ["paren.lparen","{"] +],[ + "start", + ["comment","# page = \"8.2677165,11.692913\" ;"] +],[ + "start", + ["variable","ratio"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"auto\""], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["text","mincross "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","2.0"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["variable","label"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"Pedigree Lion_Share\""], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["string","\"001\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"002\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"003\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"004\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"005\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"006\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"007\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"009\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"014\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"015\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"016\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"ZZ01\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"ZZ02\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"017\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"012\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"008\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"011\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"013\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"010\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"023\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"020\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"021\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"018\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"025\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"019\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"022\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"024\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"027\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","circle "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"026\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","white "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"028\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","box "], + ["punctuation.operator",","], + ["text"," "], + ["variable","regular"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","fillcolor"], + ["keyword.operator","="], + ["text","grey "], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0001\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"001\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0001\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"007\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0001\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0001\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"017\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0002\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"001\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0002\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"ZZ02\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0002\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0002\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"012\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0003\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"002\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0003\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"003\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0003\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0003\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"008\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0004\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"002\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0004\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"006\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0004\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0004\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"011\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0005\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"002\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0005\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"ZZ01\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0005\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0005\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"013\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0006\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"004\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0006\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"009\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0006\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0006\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"010\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0007\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"005\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0007\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"015\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0007\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0007\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"023\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0008\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"005\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0008\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"016\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0008\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0008\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"020\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0009\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"005\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0009\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"012\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0009\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0009\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"021\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0010\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"008\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0010\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"017\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0010\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0010\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"018\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0011\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"011\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0011\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"023\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0011\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0011\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"025\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0012\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"013\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0012\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"014\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0012\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0012\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"019\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0013\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"010\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0013\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"021\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0013\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0013\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"022\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0014\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"019\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0014\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"020\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0014\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0014\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"024\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0015\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"022\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0015\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"025\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0015\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0015\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"027\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0016\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"024\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0016\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"018\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0016\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0016\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"026\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0017\""], + ["text"," "], + ["paren.lparen","["], + ["variable","shape"], + ["keyword.operator","="], + ["text","diamond"], + ["punctuation.operator",","], + ["variable","style"], + ["keyword.operator","="], + ["text","filled"], + ["punctuation.operator",","], + ["variable","label"], + ["keyword.operator","="], + ["string","\"\""], + ["punctuation.operator",","], + ["variable","height"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["variable","width"], + ["keyword.operator","="], + ["text","."], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"026\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0017\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"027\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"marr0017\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["string","\"marr0017\""], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["string","\"028\""], + ["text"," "], + ["paren.lparen","["], + ["variable","dir"], + ["keyword.operator","="], + ["text","none"], + ["punctuation.operator",","], + ["text"," "], + ["variable","weight"], + ["keyword.operator","="], + ["constant.numeric","2"], + ["paren.rparen","]"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_drools.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_drools.json new file mode 100644 index 00000000..8df67565 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_drools.json @@ -0,0 +1,935 @@ +[[ + "block.comment", + ["comment","/*"] +],[ + "block.comment", + ["comment.block"," * Copyright 2010 JBoss Inc"] +],[ + "block.comment", + ["comment.block"," *"] +],[ + "block.comment", + ["comment.block"," * Licensed under the Apache License, Version 2.0 (the \"License\");"] +],[ + "block.comment", + ["comment.block"," * you may not use this file except in compliance with the License."] +],[ + "block.comment", + ["comment.block"," * You may obtain a copy of the License at"] +],[ + "block.comment", + ["comment.block"," *"] +],[ + "block.comment", + ["comment.block"," * http://www.apache.org/licenses/LICENSE-2.0"] +],[ + "block.comment", + ["comment.block"," *"] +],[ + "block.comment", + ["comment.block"," * Unless required by applicable law or agreed to in writing, software"] +],[ + "block.comment", + ["comment.block"," * distributed under the License is distributed on an \"AS IS\" BASIS,"] +],[ + "block.comment", + ["comment.block"," * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied."] +],[ + "block.comment", + ["comment.block"," * See the License for the specific language governing permissions and"] +],[ + "block.comment", + ["comment.block"," * limitations under the License."] +],[ + "start", + ["comment.block"," */"] +],[ + "start" +],[ + "block.comment", + ["comment","/*"] +],[ + "block.comment", + ["comment.block"," Original source"] +],[ + "block.comment", + ["comment.block"," https://github.com/droolsjbpm/drools/blob/master/drools-examples/"] +],[ + "block.comment", + ["comment.block"," http://docs.jboss.org/drools/"] +],[ + "start", + ["comment.block","*/"] +],[ + "start", + ["keyword","package"], + ["text"," "], + ["entity.name.type","com.example.ace"] +],[ + "start" +],[ + "start", + ["keyword","import"], + ["text"," "], + ["entity.name.type","java.math.BigDecimal"] +],[ + "start", + ["keyword","import"], + ["text"," "], + ["keyword","function"], + ["text"," "], + ["entity.name.type","my.package.Foo.hello"] +],[ + "start" +],[ + "start", + ["keyword","declare"], + ["text"," "], + ["entity.name.type","FactType"] +],[ + "start", + ["text"," "], + ["entity.name.type","@author"], + ["paren.lparen","("], + ["text"," "], + ["identifier","Bob"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["variable.other","id"], + ["text"," "], + ["text",":"], + ["text"," "], + ["support.class","String"] +],[ + "start", + ["text"," "], + ["variable.other","name"], + ["text"," "], + ["text",":"], + ["text"," "], + ["support.class","String"], + ["text"," "], + ["entity.name.type","@maxLength"], + ["paren.lparen","("], + ["constant.numeric","100"], + ["paren.rparen",")"], + ["text"," "], + ["entity.name.type","@notnull"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable.other","value"], + ["text"," "], + ["text",":"], + ["text"," "], + ["identifier","BigDecimal"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","declare"], + ["text"," "], + ["entity.name.type","FactType2"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["entity.name.type","AnotherType"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","declare"], + ["text"," "], + ["keyword","trait"], + ["text"," "], + ["entity.name.type","TraitType"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["entity.name.type","com.package.AnotherType"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start" +],[ + "start", + ["keyword","declare"], + ["text"," "], + ["keyword","trait"], + ["text"," "], + ["entity.name.type","GoldenCustomer"] +],[ + "start", + ["text"," "], + ["variable.other","balance"], + ["text"," "], + ["text",":"], + ["text"," "], + ["keyword","long"], + ["text"," "], + ["entity.name.type","@Alias"], + ["paren.lparen","("], + ["text"," "], + ["string","\"org.acme.foo.accountBalance\""], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","global"], + ["text"," "], + ["entity.name.type","org.slf4j.Logger"], + ["text"," "], + ["variable","logger"] +],[ + "start" +],[ + "doc-start", + ["comment.doc","/**"] +],[ + "doc-start", + ["comment.doc"," * "], + ["comment.doc.tag","@param"], + ["comment.doc"," name who we'll salute?"] +],[ + "start", + ["comment.doc"," */"] +],[ + "start", + ["keyword","function"], + ["text"," "], + ["support.class","String"], + ["text"," "], + ["identifier","hello"], + ["paren.lparen","("], + ["support.class","String"], + ["text"," "], + ["identifier","name"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["string","\"Hello \""], + ["keyword.operator","+"], + ["identifier","name"], + ["keyword.operator","+"], + ["string","\"!\""], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","rule"], + ["text"," "], + ["entity.name","\"Trim all strings\""] +],[ + "start", + ["text"," "], + ["keyword","dialect"], + ["text"," "], + ["string","\"java\""] +],[ + "start", + ["text"," "], + ["keyword","no"], + ["keyword.operator","-"], + ["keyword","loop"] +],[ + "start", + ["keyword","when"], + ["text"," "], + ["comment","// fdsfds"] +],[ + "start", + ["text"," "], + ["variable.other","$s"], + ["text"," "], + ["text",":"], + ["text"," "], + ["support.class","String"], + ["paren.lparen","("], + ["identifier","a"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["constant.language","null"], + ["text"," "], + ["keyword.operator","||"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["string","\"empty\""], + ["text",", "], + ["variable.other","$g"], + ["text"," "], + ["text",":"], + ["text"," "], + ["identifier","size"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","Cheese"], + ["paren.lparen","("], + ["text"," "], + ["identifier","name"], + ["text"," "], + ["keyword","matches"], + ["text"," "], + ["string","\"(Buffalo)?\\\\S*Mozarella\""], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","CheeseCounter"], + ["paren.lparen","("], + ["text"," "], + ["identifier","cheeses"], + ["text"," "], + ["keyword","contains"], + ["text"," "], + ["identifier","$var"], + ["text"," "], + ["paren.rparen",")"], + ["text"," "], + ["comment","// contains with a variable"] +],[ + "start", + ["text"," "], + ["identifier","CheeseCounter"], + ["paren.lparen","("], + ["text"," "], + ["identifier","cheese"], + ["text"," "], + ["keyword","memberof"], + ["text"," "], + ["identifier","$matureCheeses"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","Cheese"], + ["paren.lparen","("], + ["text"," "], + ["identifier","name"], + ["text"," "], + ["keyword","soundslike"], + ["text"," "], + ["string","'foobar'"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","Message"], + ["paren.lparen","("], + ["text"," "], + ["identifier","routingValue"], + ["text"," "], + ["keyword","str"], + ["paren.lparen","["], + ["identifier","startsWith"], + ["paren.rparen","]"], + ["text"," "], + ["string","\"R1\""], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","Cheese"], + ["paren.lparen","("], + ["text"," "], + ["identifier","name"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["paren.lparen","("], + ["text"," "], + ["string","\"stilton\""], + ["text",", "], + ["string","\"cheddar\""], + ["text",", "], + ["identifier","$cheese"], + ["text"," "], + ["paren.rparen",")"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","Person"], + ["paren.lparen","("], + ["text"," "], + ["keyword","eval"], + ["paren.lparen","("], + ["text"," "], + ["identifier","age"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","girlAge"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["paren.rparen",")"], + ["text",", "], + ["identifier","sex"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","'M'"], + ["text"," "], + ["paren.rparen",")"] +],[ + "java-start", + ["keyword","then"] +],[ + "java-doc-start", + ["text"," "], + ["comment.doc","/**"] +],[ + "java-doc-start", + ["comment.doc"," * "], + ["comment.doc.tag.storage.type","TODO"], + ["comment.doc"," There mus be better way"] +],[ + "java-start", + ["comment.doc"," */"] +],[ + "java-start", + ["text"," "], + ["support.function","retract"], + ["lparen","("], + ["identifier","$s"], + ["rparen",")"], + ["text",";"] +],[ + "java-start", + ["text"," "], + ["support.function","String"], + ["text"," "], + ["identifier","a"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"fd\""], + ["text",";"] +],[ + "java-start", + ["text"," "], + ["identifier","a"], + ["text","."], + ["identifier","toString"], + ["lparen","("], + ["rparen",")"], + ["text",";"] +],[ + "java-start" +],[ + "java-start", + ["text"," "], + ["support.function","insert"], + ["lparen","("], + ["identifier","$s"], + ["text","."], + ["identifier","trim"], + ["lparen","("], + ["rparen","))"], + ["text",";"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","query"], + ["text"," "], + ["entity.name","isContainedIn"], + ["paren.lparen","("], + ["text"," "], + ["support.class","String"], + ["text"," "], + ["identifier","x"], + ["text",", "], + ["support.class","String"], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","Location"], + ["paren.lparen","("], + ["text"," "], + ["identifier","x"], + ["text",", "], + ["identifier","y"], + ["text","; "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","or"] +],[ + "start", + ["text"," "], + ["paren.lparen","("], + ["text"," "], + ["identifier","Location"], + ["paren.lparen","("], + ["text"," "], + ["identifier","z"], + ["text",", "], + ["identifier","y"], + ["text","; "], + ["paren.rparen",")"], + ["text"," "], + ["keyword","and"], + ["text"," "], + ["identifier","isContainedIn"], + ["paren.lparen","("], + ["text"," "], + ["identifier","x"], + ["text",", "], + ["identifier","z"], + ["text","; "], + ["paren.rparen",")"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","rule"], + ["text"," "], + ["entity.name","\"go\""], + ["text"," "], + ["keyword","salience"], + ["text"," "], + ["constant.numeric","10"] +],[ + "start", + ["keyword","when"] +],[ + "start", + ["text"," "], + ["variable.other","$s"], + ["text"," "], + ["text",":"], + ["text"," "], + ["support.class","String"], + ["paren.lparen","("], + ["text"," "], + ["paren.rparen",")"] +],[ + "java-start", + ["keyword","then"] +],[ + "java-start", + ["text"," "], + ["support.function","System"], + ["text","."], + ["identifier","out"], + ["text","."], + ["identifier","println"], + ["lparen","("], + ["text"," "], + ["identifier","$s"], + ["text"," "], + ["rparen",")"], + ["text",";"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","rule"], + ["text"," "], + ["entity.name","\"When all English buses are not red\""] +],[ + "start", + ["keyword","when"] +],[ + "start", + ["text"," "], + ["keyword","not"], + ["paren.lparen","("], + ["keyword","forall"], + ["paren.lparen","("], + ["text"," "], + ["variable.other","$bus"], + ["text"," "], + ["text",":"], + ["text"," "], + ["identifier","Bus"], + ["paren.lparen","("], + ["text"," "], + ["identifier","nationality"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["string","'english'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","Bus"], + ["paren.lparen","("], + ["text"," "], + ["keyword","this"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","$bus"], + ["text",", "], + ["identifier","color"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","'red'"], + ["text"," "], + ["paren.rparen",")"], + ["text"," "], + ["paren.rparen","))"] +],[ + "java-start", + ["keyword","then"] +],[ + "java-start", + ["text"," "], + ["comment","// What if all english buses are not red?"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","rule"], + ["text"," "], + ["entity.name","\"go1\""] +],[ + "start", + ["keyword","when"] +],[ + "start", + ["text"," "], + ["support.class","String"], + ["paren.lparen","("], + ["text"," "], + ["keyword","this"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["string","\"go1\""], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","isContainedIn"], + ["paren.lparen","("], + ["string","\"Office\""], + ["text",", "], + ["string","\"House\""], + ["text","; "], + ["paren.rparen",")"] +],[ + "java-start", + ["keyword","then"] +],[ + "java-start", + ["text"," "], + ["support.function","System"], + ["text","."], + ["identifier","out"], + ["text","."], + ["identifier","println"], + ["lparen","("], + ["text"," "], + ["string","\"office is in the house\""], + ["text"," "], + ["rparen",")"], + ["text",";"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","rule"], + ["text"," "], + ["entity.name","\"go2\""] +],[ + "start", + ["keyword","when"] +],[ + "start", + ["text"," "], + ["support.class","String"], + ["paren.lparen","("], + ["text"," "], + ["keyword","this"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["string","\"go2\""], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","isContainedIn"], + ["paren.lparen","("], + ["string","\"Draw\""], + ["text",", "], + ["string","\"House\""], + ["text","; "], + ["paren.rparen",")"] +],[ + "java-start", + ["keyword","then"] +],[ + "java-start", + ["text"," "], + ["support.function","System"], + ["text","."], + ["identifier","out"], + ["text","."], + ["identifier","println"], + ["lparen","("], + ["text"," "], + ["string","\"Draw in the House\""], + ["text"," "], + ["rparen",")"], + ["text",";"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "doc-start", + ["comment.doc","/**"] +],[ + "doc-start", + ["comment.doc"," * Go Right"] +],[ + "start", + ["comment.doc"," */"] +],[ + "start", + ["keyword","rule"], + ["text"," "], + ["entity.name","GoRight"], + ["text"," "], + ["keyword","dialect"], + ["text"," "], + ["string","\"mvel\""], + ["text"," "], + ["keyword","salience"], + ["text"," "], + ["paren.lparen","("], + ["support.class","Math"], + ["text","."], + ["identifier","abs"], + ["paren.lparen","("], + ["text"," "], + ["identifier","$df"], + ["text","."], + ["identifier","colDiff"], + ["text"," "], + ["paren.rparen","))"], + ["text"," "], + ["keyword","when"] +],[ + "start", + ["text"," "], + ["variable.other","$df"], + ["text"," "], + ["text",":"], + ["text"," "], + ["identifier","DirectionDiff"], + ["paren.lparen","("], + ["identifier","colDiff"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["variable.other","$target"], + ["text"," "], + ["text",":"], + ["text"," "], + ["identifier","Cell"], + ["paren.lparen","("], + ["text"," "], + ["identifier","row"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","$df"], + ["text","."], + ["identifier","row"], + ["text",", "], + ["identifier","col"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["paren.lparen","("], + ["identifier","$df"], + ["text","."], + ["identifier","col"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"], + ["paren.rparen",")"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","CellContents"], + ["paren.lparen","("], + ["text"," "], + ["identifier","cell"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","$target"], + ["text",", "], + ["identifier","cellType"], + ["text"," "], + ["keyword.operator","!="], + ["text"," "], + ["identifier","CellType"], + ["text","."], + ["identifier","WALL"], + ["text"," "], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","not"], + ["text"," "], + ["identifier","Direction"], + ["paren.lparen","("], + ["identifier","character"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","$df"], + ["text","."], + ["identifier","fromChar"], + ["text",", "], + ["identifier","horizontal"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","Direction"], + ["text","."], + ["identifier","RIGHT"], + ["text"," "], + ["paren.rparen",")"] +],[ + "java-start", + ["keyword","then"] +],[ + "java-start", + ["text"," "], + ["support.function","System"], + ["text","."], + ["identifier","out"], + ["text","."], + ["identifier","println"], + ["lparen","("], + ["text"," "], + ["string","\"monster right\""], + ["text"," "], + ["rparen",")"], + ["text",";"] +],[ + "java-start", + ["text"," "], + ["support.function","retract"], + ["lparen","("], + ["text"," "], + ["identifier","$df"], + ["text"," "], + ["rparen",")"], + ["text",";"] +],[ + "java-start", + ["text"," "], + ["support.function","insert"], + ["lparen","("], + ["text"," "], + ["keyword","new"], + ["text"," "], + ["identifier","Direction"], + ["lparen","("], + ["identifier","$df"], + ["text","."], + ["identifier","fromChar"], + ["text",", "], + ["identifier","Direction"], + ["text","."], + ["identifier","RIGHT"], + ["text",", "], + ["identifier","Direction"], + ["text","."], + ["identifier","NONE"], + ["text"," "], + ["rparen",")"], + ["text"," "], + ["rparen",")"], + ["text",";"] +],[ + "start", + ["keyword","end"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_eiffel.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_eiffel.json new file mode 100644 index 00000000..344dbc62 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_eiffel.json @@ -0,0 +1,141 @@ +[[ + "start", + ["keyword","note"] +],[ + "start", + ["text","\t"], + ["identifier","description"], + ["keyword.operator",":"], + ["text"," "], + ["string.quoted.double","\"Represents a person.\""] +],[ + "start" +],[ + "start", + ["keyword","class"] +],[ + "start", + ["text","\t"], + ["entity.name.type","PERSON"] +],[ + "start" +],[ + "start", + ["keyword","create"] +],[ + "start", + ["text","\t"], + ["identifier","make"], + ["keyword.operator",","], + ["text"," "], + ["identifier","make_unknown"] +],[ + "start" +],[ + "start", + ["keyword","feature"], + ["text"," "], + ["paren.lparen","{"], + ["entity.name.type","NONE"], + ["paren.rparen","}"], + ["text"," "], + ["comment.line.double-dash","-- Creation"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["identifier","make"], + ["text"," "], + ["paren.lparen","("], + ["identifier","a_name"], + ["keyword.operator",":"], + ["text"," "], + ["keyword","like"], + ["text"," "], + ["identifier","name"], + ["paren.rparen",")"] +],[ + "start", + ["text","\t\t\t"], + ["comment.line.double-dash","-- Create a person with `a_name' as `name'."] +],[ + "start", + ["text","\t\t"], + ["keyword","do"] +],[ + "start", + ["text","\t\t\t"], + ["identifier","name"], + ["text"," "], + ["keyword.operator",":="], + ["text"," "], + ["identifier","a_name"] +],[ + "start", + ["text","\t\t"], + ["keyword","ensure"] +],[ + "start", + ["text","\t\t\t"], + ["identifier","name"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","a_name"] +],[ + "start", + ["text","\t\t"], + ["keyword","end"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["identifier","make_unknown"] +],[ + "start", + ["text","\t\t"], + ["keyword","do"], + ["text"," "], + ["keyword","ensure"] +],[ + "start", + ["text","\t\t\t"], + ["identifier","name"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.language","Void"] +],[ + "start", + ["text","\t\t"], + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","feature"], + ["text"," "], + ["comment.line.double-dash","-- Access"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["identifier","name"], + ["keyword.operator",":"], + ["text"," "], + ["keyword","detachable"], + ["text"," "], + ["entity.name.type","STRING"] +],[ + "start", + ["text","\t\t\t"], + ["comment.line.double-dash","-- Full name or Void if unknown."] +],[ + "start" +],[ + "start", + ["keyword","end"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ejs.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ejs.json new file mode 100644 index 00000000..7e54af91 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ejs.json @@ -0,0 +1,296 @@ +[[ + "start", + ["xml-pe.doctype.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","html"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","head"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Cloud9 Rocks!"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","body"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","table"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","class"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"table\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Name"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Size"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["markup.list.meta.tag","<%"], + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["keyword.operator","!"], + ["identifier","isRoot"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["markup.list.meta.tag","%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"..\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml",".."], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["markup.list.meta.tag","<%"], + ["text"," "], + ["paren.rparen","}"], + ["text"," "], + ["markup.list.meta.tag","%>"] +],[ + "start", + ["text.xml"," "], + ["markup.list.meta.tag","<%"], + ["text"," "], + ["identifier","entries"], + ["punctuation.operator","."], + ["identifier","forEach"], + ["paren.lparen","("], + ["storage.type","function"], + ["paren.lparen","("], + ["identifier","entry"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["markup.list.meta.tag","%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","span"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","class"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"glyphicon "], + ["markup.list.meta.tag","<%="], + ["text"," "], + ["identifier","entry"], + ["punctuation.operator","."], + ["identifier","mime"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["string","'directory'"], + ["text"," "], + ["punctuation.operator","?"], + ["text"," "], + ["string","'folder'"], + ["punctuation.operator",":"], + ["text"," "], + ["string","'file'"], + ["markup.list.meta.tag","%>"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\""], + ["markup.list.meta.tag","<%="], + ["text"," "], + ["identifier","entry"], + ["punctuation.operator","."], + ["identifier","name"], + ["text"," "], + ["markup.list.meta.tag","%>"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["markup.list.meta.tag","<%="], + ["text"," "], + ["identifier","entry"], + ["punctuation.operator","."], + ["identifier","name"], + ["text"," "], + ["markup.list.meta.tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["markup.list.meta.tag","<%="], + ["text"," "], + ["identifier","entry"], + ["punctuation.operator","."], + ["identifier","size"], + ["text"," "], + ["markup.list.meta.tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["markup.list.meta.tag","<%"], + ["text"," "], + ["paren.rparen","})"], + ["text"," "], + ["markup.list.meta.tag","%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_elixir.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_elixir.json new file mode 100644 index 00000000..cbbe1fee --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_elixir.json @@ -0,0 +1,196 @@ +[[ + "start", + ["keyword.control.module.elixir","defmodule"], + ["meta.module.elixir"," "], + ["entity.name.type.module.elixir","HelloModule"], + ["text"," "], + ["keyword.control.elixir","do"] +],[ + "comment.documentation.heredoc", + ["text"," "], + ["comment.documentation.heredoc","@moduledoc \"\"\""] +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," This is supposed to be `markdown`."] +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," __Yes__ this is [mark](http://down.format)"] +],[ + "comment.documentation.heredoc" +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," # Truly"] +],[ + "comment.documentation.heredoc" +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," ## marked"] +],[ + "comment.documentation.heredoc" +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," * with lists"] +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," * more"] +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," * and more"] +],[ + "comment.documentation.heredoc" +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," Even.with(code)"] +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," blocks |> with |> samples"] +],[ + "comment.documentation.heredoc" +],[ + "comment.documentation.heredoc", + ["comment.documentation.heredoc"," _Docs are first class citizens in Elixir_ (Jose Valim)"] +],[ + "start", + ["comment.documentation.heredoc"," \"\"\""] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.elixir","#"], + ["comment.line.number-sign.elixir"," A \"Hello world\" function"] +],[ + "start", + ["text"," "], + ["keyword.control.elixir","def"], + ["text"," some_fun "], + ["keyword.control.elixir","do"] +],[ + "start", + ["text"," "], + ["variable.other.constant.elixir","IO"], + ["punctuation.separator.method.elixir","."], + ["text","puts "], + ["punctuation.definition.string.begin.elixir","\""], + ["string.quoted.double.elixir","Juhu Kinners!"], + ["punctuation.definition.string.end.elixir","\""] +],[ + "start", + ["text"," "], + ["keyword.control.elixir","end"] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.elixir","#"], + ["comment.line.number-sign.elixir"," A private function"] +],[ + "start", + ["text"," "], + ["keyword.control.elixir","defp"], + ["text"," priv "], + ["keyword.control.elixir","do"] +],[ + "punctuation.definition.string.begin.elixir7", + ["text"," is_regex "], + ["punctuation.definition.string.begin.elixir","~r\"\"\""] +],[ + "punctuation.definition.string.begin.elixir7", + ["string.quoted.double.heredoc.elixir"," This is a regex"] +],[ + "punctuation.definition.string.begin.elixir7", + ["string.quoted.double.heredoc.elixir"," spanning several"] +],[ + "punctuation.definition.string.begin.elixir7", + ["string.quoted.double.heredoc.elixir"," lines."] +],[ + "start", + ["punctuation.definition.string.end.elixir"," \"\"\""] +],[ + "start", + ["text"," x "], + ["keyword.operator.assignment.elixir","="], + ["text"," elem"], + ["punctuation.section.function.elixir","("], + ["punctuation.section.scope.elixir","{"], + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","a"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","b"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","c"], + ["text"," "], + ["punctuation.section.scope.elixir","}"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["constant.numeric.elixir","0"], + ["punctuation.section.function.elixir",")"], + ["text"," "], + ["punctuation.definition.comment.elixir","#"], + ["comment.line.number-sign.elixir","=> :a"] +],[ + "start", + ["text"," "], + ["keyword.control.elixir","end"] +],[ + "start", + ["keyword.control.elixir","end"] +],[ + "start" +],[ + "start", + ["text","test_fun "], + ["keyword.operator.assignment.elixir","="], + ["text"," "], + ["keyword.control.elixir","fn"], + ["punctuation.section.function.elixir","("], + ["text","x"], + ["punctuation.section.function.elixir",")"], + ["text"," "], + ["keyword.operator.arithmetic.elixir","-"], + ["keyword.operator.comparison.elixir",">"] +],[ + "start", + ["text"," "], + ["keyword.control.elixir","cond"], + ["text"," "], + ["keyword.control.elixir","do"] +],[ + "start", + ["text"," x "], + ["keyword.operator.comparison.elixir",">"], + ["text"," "], + ["constant.numeric.elixir","10"], + ["text"," "], + ["keyword.operator.arithmetic.elixir","-"], + ["keyword.operator.comparison.elixir",">"] +],[ + "start", + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","greater_than_ten"] +],[ + "start", + ["text"," "], + ["constant.language.elixir","true"], + ["text"," "], + ["keyword.operator.arithmetic.elixir","-"], + ["keyword.operator.comparison.elixir",">"] +],[ + "start", + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","maybe_ten"] +],[ + "start", + ["text"," "], + ["keyword.control.elixir","end"] +],[ + "start", + ["keyword.control.elixir","end"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_elm.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_elm.json new file mode 100644 index 00000000..b39de92f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_elm.json @@ -0,0 +1,198 @@ +[[ + "start", + ["comment.start","{-"], + ["comment"," Ace "], + ["comment.start","{-"], + ["comment"," 4 "], + ["comment.end","-}"], + ["comment"," Elm "], + ["comment.end","-}"] +],[ + "start", + ["constant.language","main"], + ["text"," "], + ["keyword","="], + ["text"," "], + ["identifier","lift"], + ["text"," "], + ["identifier","clock"], + ["text"," "], + ["paren.lparen","("], + ["identifier","every"], + ["text"," "], + ["identifier","second"], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["constant.language","clock"], + ["text"," "], + ["identifier","t"], + ["text"," "], + ["keyword","="], + ["text"," "], + ["identifier","collage"], + ["text"," "], + ["constant.numeric","400"], + ["text"," "], + ["constant.numeric","400"], + ["text"," "], + ["paren.lparen","["], + ["text"," "], + ["identifier","filled"], + ["text"," "], + ["identifier","lightGrey"], + ["text"," "], + ["paren.lparen","("], + ["identifier","ngon"], + ["text"," "], + ["constant.numeric","12"], + ["text"," "], + ["constant.numeric","110"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["operator.punctuation",","], + ["text"," "], + ["identifier","outlined"], + ["text"," "], + ["paren.lparen","("], + ["identifier","solid"], + ["text"," "], + ["identifier","grey"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","("], + ["identifier","ngon"], + ["text"," "], + ["constant.numeric","12"], + ["text"," "], + ["constant.numeric","110"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["operator.punctuation",","], + ["text"," "], + ["identifier","hand"], + ["text"," "], + ["identifier","orange"], + ["text"," "], + ["constant.numeric","100"], + ["text"," "], + ["identifier","t"] +],[ + "start", + ["text"," "], + ["operator.punctuation",","], + ["text"," "], + ["identifier","hand"], + ["text"," "], + ["identifier","charcoal"], + ["text"," "], + ["constant.numeric","100"], + ["text"," "], + ["paren.lparen","("], + ["identifier","t"], + ["keyword.operator","/"], + ["constant.numeric","60"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["operator.punctuation",","], + ["text"," "], + ["identifier","hand"], + ["text"," "], + ["identifier","charcoal"], + ["text"," "], + ["constant.numeric","60"], + ["text"," "], + ["paren.lparen","("], + ["identifier","t"], + ["keyword.operator","/"], + ["constant.numeric","720"], + ["paren.rparen",")"], + ["text"," "], + ["paren.rparen","]"] +],[ + "start" +],[ + "start", + ["constant.language","hand"], + ["text"," "], + ["identifier","clr"], + ["text"," "], + ["identifier","len"], + ["text"," "], + ["identifier","time"], + ["text"," "], + ["keyword","="] +],[ + "start", + ["text"," "], + ["keyword","let"], + ["text"," "], + ["identifier","angle"], + ["text"," "], + ["keyword","="], + ["text"," "], + ["identifier","degrees"], + ["text"," "], + ["paren.lparen","("], + ["constant.numeric","90"], + ["text"," "], + ["keyword.operator","-"], + ["text"," "], + ["constant.numeric","6"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["identifier","inSeconds"], + ["text"," "], + ["identifier","time"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","in"], + ["text"," "], + ["identifier","traced"], + ["text"," "], + ["paren.lparen","("], + ["identifier","solid"], + ["text"," "], + ["identifier","clr"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","<|"], + ["text"," "], + ["identifier","segment"], + ["text"," "], + ["paren.lparen","("], + ["constant.numeric","0"], + ["operator.punctuation",","], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","("], + ["identifier","len"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["identifier","cos"], + ["text"," "], + ["identifier","angle"], + ["operator.punctuation",","], + ["text"," "], + ["identifier","len"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["identifier","sin"], + ["text"," "], + ["identifier","angle"], + ["paren.rparen",")"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_erlang.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_erlang.json new file mode 100644 index 00000000..8a828976 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_erlang.json @@ -0,0 +1,166 @@ +[[ + "start", + ["text"," "], + ["punctuation.definition.comment.erlang","%% A process whose only job is to keep a counter."] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.erlang","%% First version"] +],[ + "start", + ["meta.directive.module.erlang"," "], + ["punctuation.section.directive.begin.erlang","-"], + ["keyword.control.directive.module.erlang","module"], + ["punctuation.definition.parameters.begin.erlang","("], + ["entity.name.type.class.module.definition.erlang","counter"], + ["punctuation.definition.parameters.end.erlang",")"], + ["punctuation.section.directive.end.erlang","."] +],[ + "start", + ["meta.directive.export.erlang"," "], + ["punctuation.section.directive.begin.erlang","-"], + ["keyword.control.directive.export.erlang","export"], + ["punctuation.definition.parameters.begin.erlang","("], + ["punctuation.definition.list.begin.erlang","["], + ["entity.name.function.erlang","start"], + ["punctuation.separator.function-arity.erlang","/"], + ["constant.numeric.integer.decimal.erlang","0"], + ["punctuation.separator.list.erlang",","], + ["meta.structure.list.function.erlang"," "], + ["entity.name.function.erlang","codeswitch"], + ["punctuation.separator.function-arity.erlang","/"], + ["constant.numeric.integer.decimal.erlang","1"], + ["punctuation.definition.list.end.erlang","]"], + ["punctuation.definition.parameters.end.erlang",")"], + ["punctuation.section.directive.end.erlang","."] +],[ + "start", + ["text"," "] +],[ + "start", + ["meta.function.erlang"," "], + ["entity.name.function.definition.erlang","start"], + ["punctuation.section.expression.begin.erlang","("], + ["punctuation.section.expression.end.erlang",")"], + ["text"," "], + ["keyword.operator.symbolic.erlang","->"], + ["text"," "], + ["entity.name.function.erlang","loop"], + ["punctuation.definition.parameters.begin.erlang","("], + ["constant.numeric.integer.decimal.erlang","0"], + ["punctuation.definition.parameters.end.erlang",")"], + ["punctuation.terminator.function.erlang","."] +],[ + "start", + ["text"," "] +],[ + ["text6","meta.function.erlang"], + ["meta.function.erlang"," "], + ["entity.name.function.definition.erlang","loop"], + ["punctuation.section.expression.begin.erlang","("], + ["variable.other.erlang","Sum"], + ["punctuation.section.expression.end.erlang",")"], + ["text"," "], + ["keyword.operator.symbolic.erlang","->"] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["text"," "], + ["keyword.control.receive.erlang","receive"] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["meta.expression.receive.erlang"," "], + ["punctuation.definition.tuple.begin.erlang","{"], + ["constant.other.symbol.unquoted.erlang","increment"], + ["punctuation.separator.tuple.erlang",","], + ["meta.structure.tuple.erlang"," "], + ["variable.other.erlang","Count"], + ["punctuation.definition.tuple.end.erlang","}"], + ["meta.expression.receive.erlang"," "], + ["punctuation.separator.clause-head-body.erlang","->"] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["meta.expression.receive.erlang"," "], + ["entity.name.function.erlang","loop"], + ["punctuation.definition.parameters.begin.erlang","("], + ["variable.other.erlang","Sum"], + ["keyword.operator.symbolic.erlang","+"], + ["variable.other.erlang","Count"], + ["punctuation.definition.parameters.end.erlang",")"], + ["punctuation.separator.clauses.erlang",";"] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["meta.expression.receive.erlang"," "], + ["punctuation.definition.tuple.begin.erlang","{"], + ["constant.other.symbol.unquoted.erlang","counter"], + ["punctuation.separator.tuple.erlang",","], + ["meta.structure.tuple.erlang"," "], + ["variable.other.erlang","Pid"], + ["punctuation.definition.tuple.end.erlang","}"], + ["meta.expression.receive.erlang"," "], + ["punctuation.separator.clause-head-body.erlang","->"] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["meta.expression.receive.erlang"," "], + ["variable.other.erlang","Pid"], + ["meta.expression.receive.erlang"," "], + ["keyword.operator.symbolic.erlang","!"], + ["meta.expression.receive.erlang"," "], + ["punctuation.definition.tuple.begin.erlang","{"], + ["constant.other.symbol.unquoted.erlang","counter"], + ["punctuation.separator.tuple.erlang",","], + ["meta.structure.tuple.erlang"," "], + ["variable.other.erlang","Sum"], + ["punctuation.definition.tuple.end.erlang","}"], + ["punctuation.separator.expressions.erlang",","] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["meta.expression.receive.erlang"," "], + ["entity.name.function.erlang","loop"], + ["punctuation.definition.parameters.begin.erlang","("], + ["variable.other.erlang","Sum"], + ["punctuation.definition.parameters.end.erlang",")"], + ["punctuation.separator.clauses.erlang",";"] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["meta.expression.receive.erlang"," "], + ["constant.other.symbol.unquoted.erlang","code_switch"], + ["meta.expression.receive.erlang"," "], + ["punctuation.separator.clause-head-body.erlang","->"] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["meta.expression.receive.erlang"," "], + ["keyword.operator.macro.erlang","?"], + ["entity.name.function.macro.erlang","MODULE"], + ["meta.expression.receive.erlang",":"], + ["entity.name.function.erlang","codeswitch"], + ["punctuation.definition.parameters.begin.erlang","("], + ["variable.other.erlang","Sum"], + ["punctuation.definition.parameters.end.erlang",")"] +],[ + ["keyword.control.receive.erlang","text6","text6","meta.function.erlang"], + ["meta.expression.receive.erlang"," "], + ["punctuation.definition.comment.erlang","% Force the use of 'codeswitch/1' from the latest MODULE version"] +],[ + "start", + ["meta.expression.receive.erlang"," "], + ["keyword.control.end.erlang","end"], + ["punctuation.terminator.function.erlang","."] +],[ + "start", + ["text"," "] +],[ + "start", + ["meta.function.erlang"," "], + ["entity.name.function.definition.erlang","codeswitch"], + ["punctuation.section.expression.begin.erlang","("], + ["variable.other.erlang","Sum"], + ["punctuation.section.expression.end.erlang",")"], + ["text"," "], + ["keyword.operator.symbolic.erlang","->"], + ["text"," "], + ["entity.name.function.erlang","loop"], + ["punctuation.definition.parameters.begin.erlang","("], + ["variable.other.erlang","Sum"], + ["punctuation.definition.parameters.end.erlang",")"], + ["punctuation.terminator.function.erlang","."] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_forth.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_forth.json new file mode 100644 index 00000000..8c8a007e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_forth.json @@ -0,0 +1,219 @@ +[[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","HELLO"], + ["meta.block.forth"," "], + ["comment.line.parentheses.forth"," ( -- )"], + ["meta.block.forth"," CR "], + ["string.quoted.double.forth",".\" Hello, world!\""], + ["meta.block.forth"," "], + ["keyword.other.compile-only.forth",";"], + ["text"," "] +],[ + "start" +],[ + "start", + ["text","HELLO "] +],[ + "start", + ["text","Hello, world!"] +],[ + "start" +],[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","[CHAR]"], + ["meta.block.forth"," "], + ["keyword.other.non-immediate.forth"," CHAR"], + ["meta.block.forth"," "], + ["keyword.other.compile-only.forth"," POSTPONE"], + ["meta.block.forth"," LITERAL "], + ["keyword.other.compile-only.forth",";"], + ["keyword.other.immediate.forth"," IMMEDIATE"] +],[ + "start" +],[ + "start", + ["constant.numeric.forth","0"], + ["storage.type.forth"," value"], + ["text"," ii "], + ["constant.numeric.forth"," 0"], + ["storage.type.forth"," value"], + ["text"," jj"] +],[ + "start", + ["constant.numeric.forth","0"], + ["storage.type.forth"," value"], + ["text"," KeyAddr "], + ["constant.numeric.forth"," 0"], + ["storage.type.forth"," value"], + ["text"," KeyLen"] +],[ + "start", + ["storage.type.forth","create"], + ["text"," SArray "], + ["constant.numeric.forth"," 256"], + ["text"," allot "], + ["comment.line.backslash.forth"," \\ state array of 256 bytes"] +],[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","KeyArray"], + ["meta.block.forth"," KeyLen mod KeyAddr "], + ["keyword.other.compile-only.forth",";"] +],[ + "start" +],[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","get_byte"], + ["meta.block.forth"," + c@ "], + ["keyword.other.compile-only.forth",";"] +],[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","set_byte"], + ["meta.block.forth"," + c! "], + ["keyword.other.compile-only.forth",";"] +],[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","as_byte"], + ["meta.block.forth"," "], + ["constant.numeric.forth"," 255"], + ["meta.block.forth"," and "], + ["keyword.other.compile-only.forth",";"] +],[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","reset_ij"], + ["meta.block.forth"," "], + ["constant.numeric.forth"," 0"], + ["keyword.other.immediate.forth"," TO"], + ["meta.block.forth"," ii "], + ["constant.numeric.forth"," 0"], + ["keyword.other.immediate.forth"," TO"], + ["meta.block.forth"," jj "], + ["keyword.other.compile-only.forth",";"] +],[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","i_update"], + ["meta.block.forth"," "], + ["constant.numeric.forth"," 1"], + ["meta.block.forth"," + as_byte"], + ["keyword.other.immediate.forth"," TO"], + ["meta.block.forth"," ii "], + ["keyword.other.compile-only.forth",";"] +],[ + "start", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","j_update"], + ["meta.block.forth"," ii SArray get_byte + as_byte"], + ["keyword.other.immediate.forth"," TO"], + ["meta.block.forth"," jj "], + ["keyword.other.compile-only.forth",";"] +],[ + "keyword.other.compile-only.forth", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","swap_s_ij"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," jj SArray get_byte"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," ii SArray get_byte jj SArray set_byte"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," ii SArray set_byte"] +],[ + "start", + ["keyword.other.compile-only.forth",";"] +],[ + "start" +],[ + "keyword.other.compile-only.forth", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","rc4_init"], + ["comment.line.parentheses.forth"," ( KeyAddr KeyLen -- )"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," "], + ["constant.numeric.forth"," 256"], + ["meta.block.forth"," min"], + ["keyword.other.immediate.forth"," TO"], + ["meta.block.forth"," KeyLen "], + ["keyword.other.immediate.forth"," TO"], + ["meta.block.forth"," KeyAddr"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," "], + ["constant.numeric.forth"," 256 0"], + ["keyword.control.compile-only.forth"," DO"], + ["meta.block.forth"," "], + ["variable.language.forth","i"], + ["meta.block.forth"," "], + ["variable.language.forth","i"], + ["meta.block.forth"," SArray set_byte "], + ["keyword.control.compile-only.forth"," LOOP"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," reset_ij"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," "], + ["keyword.control.compile-only.forth"," BEGIN"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," ii KeyArray get_byte jj + j_update"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," swap_s_ij"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," ii"], + ["constant.numeric.forth"," 255"], + ["meta.block.forth"," <"], + ["keyword.control.compile-only.forth"," WHILE"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," ii i_update"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," "], + ["keyword.control.compile-only.forth"," REPEAT"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," reset_ij"] +],[ + "start", + ["keyword.other.compile-only.forth",";"] +],[ + "keyword.other.compile-only.forth", + ["keyword.other.compile-only.forth",":"], + ["meta.block.forth"," "], + ["entity.name.function.forth","rc4_byte"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," ii i_update jj j_update"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," swap_s_ij"] +],[ + "keyword.other.compile-only.forth", + ["meta.block.forth"," ii SArray get_byte jj SArray get_byte + as_byte SArray get_byte xor"] +],[ + "start", + ["keyword.other.compile-only.forth",";"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_fortran.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_fortran.json new file mode 100644 index 00000000..ae287693 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_fortran.json @@ -0,0 +1,219 @@ +[[ + "start", + ["keyword","#include"], + ["text"," "], + ["string","\"globalDefines.h\""] +],[ + "start" +],[ + "start", + ["comment","!========================================================="] +],[ + "start", + ["keyword","program"], + ["text"," "], + ["identifier","main"] +],[ + "start", + ["comment","!========================================================= "] +],[ + "start", + ["text"," "], + ["keyword","use"], + ["text"," "], + ["identifier","params_module"], + ["text",", "], + ["keyword","only"], + ["text"," : "], + ["identifier","nx"], + ["text",", "], + ["identifier","ny"], + ["text",", "], + ["identifier","nz"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","implicit"], + ["text"," "], + ["keyword","none"] +],[ + "start" +],[ + "start", + ["text"," "], + ["storage.type","integer"], + ["text",", "], + ["storage.modifier","parameter"], + ["text"," :: "], + ["identifier","g"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","9.81"] +],[ + "start", + ["text"," "], + ["storage.type","real"], + ["text",", "], + ["storage.modifier","allocatable"], + ["text",", "], + ["storage.modifier","dimension"], + ["paren.lparen","("], + ["text",":,:,:"], + ["paren.rparen",")"], + ["text"," :: "], + ["identifier","array"] +],[ + "start", + ["text"," "], + ["storage.type","integer"], + ["text"," :: "], + ["identifier","a"], + ["text",", "], + ["identifier","b"], + ["text",", "], + ["identifier","c"] +],[ + "start", + ["text"," "], + ["storage.type","real"], + ["keyword.operator","*"], + ["constant.numeric","8"], + ["text"," :: "], + ["identifier","x"], + ["text",", "], + ["identifier","y"], + ["text",", "], + ["identifier","z"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["identifier","b"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","5"] +],[ + "start", + ["text"," "], + ["identifier","c"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","7"] +],[ + "start" +],[ + "start", + ["keyword","#ifdef"], + ["text"," "], + ["identifier","ARRAY_COMP"] +],[ + "start", + ["text"," "], + ["support.function","allocate"], + ["paren.lparen","("], + ["identifier","array"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["text",","], + ["constant.numeric","10"], + ["text",","], + ["constant.numeric","10"], + ["paren.rparen",")"], + ["text",", "], + ["keyword","status"], + ["keyword.operator","="], + ["identifier","a"], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","write"], + ["paren.lparen","("], + ["identifier","c"], + ["text",","], + ["string","'(i5.5)'"], + ["paren.rparen",")"], + ["text"," "], + ["identifier","b"] +],[ + "start", + ["keyword","#endif"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","if"], + ["paren.lparen","("], + ["identifier","x"], + ["text","."], + ["keyword.operator","lt"], + ["constant.numeric",".5.0"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["identifier","array"], + ["paren.lparen","("], + ["text",":,:,:"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","g"] +],[ + "start", + ["text"," "], + ["keyword","else"] +],[ + "start", + ["text"," "], + ["identifier","array"], + ["paren.lparen","("], + ["text",":,:,:"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator","-"], + ["text"," "], + ["identifier","y"] +],[ + "start", + ["text"," "], + ["keyword","endif"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","return"] +],[ + "start", + ["comment","!======================================================== "] +],[ + "start", + ["keyword","end"], + ["text"," "], + ["keyword","program"], + ["text"," "], + ["identifier","main"] +],[ + "start", + ["comment","!========================================================"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ftl.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ftl.json new file mode 100644 index 00000000..75e7a6f1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ftl.json @@ -0,0 +1,341 @@ +[[ + "start", + ["keyword.function","<#ftl"], + ["text"," "], + ["entity.other.attribute-name","encoding"], + ["keyword.operator","="], + ["string","\"utf-8\""], + ["text"," "], + ["keyword","/>"] +],[ + "start", + ["keyword.function","<#setting"], + ["text"," "], + ["entity.other.attribute-name","locale"], + ["keyword.operator","="], + ["string","\"en_US\""], + ["text"," "], + ["keyword","/>"] +],[ + "start", + ["keyword.function","<#import"], + ["text"," "], + ["string","\"library\""], + ["text"," "], + ["keyword.operator","as"], + ["text"," "], + ["variable","lib"], + ["text"," "], + ["keyword","/>"] +],[ + "ftl-dcomment", + ["comment","<#--"] +],[ + "ftl-dcomment", + ["comment"," FreeMarker comment"] +],[ + "ftl-dcomment", + ["comment"," ${abc} <#assign a=12 />"] +],[ + "start", + ["comment","-->"] +],[ + "start" +],[ + "start", + ["xml-pe.doctype.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","html"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","lang"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"en-us\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","head"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","meta"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","charset"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"utf-8\""], + ["text.tag-whitespace.xml"," "], + ["meta.tag.punctuation.tag-close.xml","/>"] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["string.interpolated","${"], + ["variable","title"], + ["keyword.operator","!"], + ["string","\"FreeMarker\""], + ["string.interpolated","}"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","body"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h1"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Hello "], + ["string.interpolated","${"], + ["variable","name"], + ["keyword.operator","!"], + ["string","\"\""], + ["string.interpolated","}"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Today is: "], + ["string.interpolated","${"], + ["language.variable",".now"], + ["support.function","?date"], + ["string.interpolated","}"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["keyword.function","<#assign"], + ["text"," "], + ["variable","x"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","13"], + ["keyword",">"] +],[ + "start", + ["text.xml"," "], + ["keyword.function","<#if"], + ["text"," "], + ["variable","x"], + ["text"," "], + ["constant.character.entity",">"], + ["text"," "], + ["constant.numeric","12"], + ["text"," "], + ["keyword.operator","&&"], + ["text"," "], + ["variable","x"], + ["text"," "], + ["keyword.operator","lt"], + ["text"," "], + ["constant.numeric","14"], + ["keyword",">"], + ["text.xml","x equals 13: "], + ["string.interpolated","${"], + ["variable","x"], + ["string.interpolated","}"], + ["keyword.function",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","ul"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["keyword.function","<#list"], + ["text"," "], + ["variable","items"], + ["text"," "], + ["keyword.operator","as"], + ["text"," "], + ["variable","item"], + ["keyword",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","li"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["string.interpolated","${"], + ["variable","item_index"], + ["string.interpolated","}"], + ["text.xml",": "], + ["string.interpolated","${"], + ["variable","item.name"], + ["keyword.operator","!"], + ["support.function","?split"], + ["paren.lparen","("], + ["string","\""], + ["constant.character.escape","\\n"], + ["string","\""], + ["paren.rparen",")"], + ["paren.lparen","["], + ["constant.numeric","0"], + ["paren.rparen","]"], + ["string.interpolated","}"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["keyword.function",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," User directive: "], + ["keyword.other","<@lib.function"], + ["text"," "], + ["variable","attr1"], + ["keyword.operator","="], + ["constant.language","true"], + ["text"," "], + ["variable","attr2"], + ["keyword.operator","="], + ["string","'value'"], + ["text"," "], + ["variable","attr3"], + ["keyword.operator","="], + ["constant.numeric","-42.12"], + ["keyword",">"], + ["text.xml","Test"], + ["keyword.other",""] +],[ + "start", + ["text.xml"," "], + ["keyword.other","<@anotherOne"], + ["text"," "], + ["keyword","/>"] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["keyword.function","<#if"], + ["text"," "], + ["variable","variable"], + ["support.function.deprecated","?exists"], + ["keyword",">"] +],[ + "start", + ["text.xml"," Deprecated"] +],[ + "start", + ["text.xml"," "], + ["keyword.function","<#elseif"], + ["text"," "], + ["variable","variable"], + ["support.function","??"], + ["keyword",">"] +],[ + "start", + ["text.xml"," Better"] +],[ + "start", + ["text.xml"," "], + ["keyword.function","<#else"], + ["keyword",">"] +],[ + "start", + ["text.xml"," Default"] +],[ + "start", + ["text.xml"," "], + ["keyword.function",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.image.tag-name.xml","img"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","src"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"images/"], + ["string.interpolated","${"], + ["variable","user.id"], + ["string.interpolated","}"], + ["string.attribute-value.xml",".png\""], + ["text.tag-whitespace.xml"," "], + ["meta.tag.punctuation.tag-close.xml","/>"] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gcode.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gcode.json new file mode 100644 index 00000000..d6227473 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gcode.json @@ -0,0 +1,296 @@ +[[ + "start", + ["identifier","O"], + ["constant.numeric","003"], + ["text"," "], + ["comment","(DIAMOND SQUARE)"] +],[ + "start", + ["comment","N2"], + ["text"," "], + ["string","G54"], + ["text"," "], + ["string","G90"], + ["text"," "], + ["string","G49"], + ["text"," "], + ["string","G80"] +],[ + "start", + ["comment","N3"], + ["text"," "], + ["string","M6"], + ["text"," "], + ["identifier","T"], + ["constant.numeric","1"], + ["text"," "], + ["comment","(1.ENDMILL)"] +],[ + "start", + ["comment","N4"], + ["text"," "], + ["string","M3"], + ["text"," "], + ["identifier","S"], + ["constant.numeric","1800"] +],[ + "start", + ["comment","N5"], + ["text"," "], + ["string","G0"], + ["text"," "], + ["identifier","X"], + ["constant.numeric","-.6"], + ["text"," "], + ["identifier","Y"], + ["constant.numeric","2.050"] +],[ + "start", + ["comment","N6"], + ["text"," "], + ["string","G43"], + ["text"," "], + ["identifier","H"], + ["constant.numeric","1"], + ["text"," "], + ["identifier","Z"], + ["constant.numeric",".1"] +],[ + "start", + ["comment","N7"], + ["text"," "], + ["string","G1"], + ["text"," "], + ["identifier","Z"], + ["constant.numeric","-.3"], + ["text"," "], + ["identifier","F"], + ["constant.numeric","50."] +],[ + "start", + ["comment","N8"], + ["text"," "], + ["string","G41"], + ["text"," "], + ["identifier","D"], + ["constant.numeric","1"], + ["text"," "], + ["identifier","Y"], + ["constant.numeric","1.45"] +],[ + "start", + ["comment","N9"], + ["text"," "], + ["string","G1"], + ["text"," "], + ["identifier","X"], + ["constant.numeric","0"], + ["text"," "], + ["identifier","F"], + ["constant.numeric","20."] +],[ + "start", + ["comment","N10"], + ["text"," "], + ["string","G2"], + ["text"," "], + ["identifier","J"], + ["constant.numeric","-1.45"] +],[ + "start", + ["comment","(CUTTER COMP CANCEL)"] +],[ + "start", + ["comment","N11"], + ["text"," "], + ["string","G1"], + ["text"," "], + ["identifier","Z"], + ["constant.numeric","-.2"], + ["text"," "], + ["identifier","F"], + ["constant.numeric","50."] +],[ + "start", + ["comment","N12"], + ["text"," "], + ["identifier","Y"], + ["constant.numeric","-.990"] +],[ + "start", + ["comment","N13"], + ["text"," "], + ["string","G40"] +],[ + "start", + ["comment","N14"], + ["text"," "], + ["string","G0"], + ["text"," "], + ["identifier","X"], + ["constant.numeric","-.6"], + ["text"," "], + ["identifier","Y"], + ["constant.numeric","1.590"] +],[ + "start", + ["comment","N15"], + ["text"," "], + ["string","G0"], + ["text"," "], + ["identifier","Z"], + ["constant.numeric",".1"] +],[ + "start", + ["comment","N16"], + ["text"," "], + ["string","M5"], + ["text"," "], + ["string","G49"], + ["text"," "], + ["string","G28"], + ["text"," "], + ["string","G91"], + ["text"," "], + ["identifier","Z"], + ["constant.numeric","0"] +],[ + "start", + ["comment","N17"], + ["text"," "], + ["identifier","CALL"], + ["text"," "], + ["identifier","O"], + ["constant.numeric","9456"] +],[ + "start", + ["comment","N18"], + ["text"," #"], + ["constant.numeric","500"], + ["text","="], + ["constant.numeric","0.004"] +],[ + "start", + ["comment","N19"], + ["text"," #"], + ["constant.numeric","503"], + ["text","="], + ["paren.lparen","["], + ["text","#"], + ["constant.numeric","500"], + ["text","+#"], + ["constant.numeric","501"], + ["paren.rparen","]"] +],[ + "start", + ["comment","N20"], + ["text"," "], + ["identifier","VC"], + ["constant.numeric","45"], + ["text","="], + ["constant.numeric","0.0006"] +],[ + "start", + ["identifier","VS"], + ["constant.numeric","4"], + ["text","="], + ["constant.numeric","0.0007"] +],[ + "start", + ["comment","N21"], + ["text"," "], + ["string","G90"], + ["text"," "], + ["string","G10"], + ["text"," "], + ["identifier","L"], + ["constant.numeric","20"], + ["text"," "], + ["identifier","P"], + ["constant.numeric","3"], + ["text"," "], + ["identifier","X"], + ["constant.numeric","5."], + ["identifier","Y"], + ["constant.numeric","4."], + ["text"," "], + ["identifier","Z"], + ["constant.numeric","6.567"] +],[ + "start", + ["comment","N22"], + ["text"," "], + ["string","G0"], + ["text"," "], + ["identifier","X"], + ["constant.numeric","5000"] +],[ + "start", + ["comment","N23"], + ["text"," "], + ["identifier","IF"], + ["text"," "], + ["paren.lparen","["], + ["text","#"], + ["constant.numeric","1"], + ["text"," "], + ["identifier","LT"], + ["text"," "], + ["constant.numeric","0.370"], + ["paren.rparen","]"], + ["text"," "], + ["identifier","GOTO"], + ["text"," "], + ["constant.numeric","49"] +],[ + "start", + ["comment","N24"], + ["text"," "], + ["identifier","X"], + ["constant.numeric","-0.678"], + ["text"," "], + ["identifier","Y"], + ["constant.numeric","+.990"] +],[ + "start", + ["comment","N25"], + ["text"," "], + ["string","G84.3"], + ["text"," "], + ["identifier","X"], + ["constant.numeric","-0.1"] +],[ + "start", + ["comment","N26"], + ["text"," #"], + ["constant.numeric","4"], + ["text","=#"], + ["constant.numeric","5"], + ["text","*"], + ["identifier","COS"], + ["paren.lparen","["], + ["constant.numeric","45"], + ["paren.rparen","]"] +],[ + "start", + ["comment","N27"], + ["text"," #"], + ["constant.numeric","4"], + ["text","=#"], + ["constant.numeric","5"], + ["text","*"], + ["identifier","SIN"], + ["paren.lparen","["], + ["constant.numeric","45"], + ["paren.rparen","]"] +],[ + "start", + ["comment","N28"], + ["text"," "], + ["identifier","VZOFZ"], + ["text","="], + ["constant.numeric","652.9658"] +],[ + "start", + ["text","%"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gherkin.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gherkin.json new file mode 100644 index 00000000..fa556b54 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gherkin.json @@ -0,0 +1,142 @@ +[[ + "start", + ["variable.parameter","@these"], + ["text"," "], + ["variable.parameter","@_are_"], + ["text"," "], + ["variable.parameter","@tags"] +],[ + "start", + ["keyword","Feature:"], + ["text"," Serve coffee"] +],[ + "start", + ["text"," Coffee should not be served until paid for"] +],[ + "start", + ["text"," Coffee should not be served until the button has been pressed"] +],[ + "start", + ["text"," If there is no coffee left then money should be refunded"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","Scenario Outline:"], + ["text"," Eating"] +],[ + "start", + ["text"," "], + ["keyword","Given"], + ["text"," there are "], + ["comment",""], + ["text"," cucumbers"] +],[ + "start", + ["text"," "], + ["keyword","When"], + ["text"," I eat "], + ["comment",""], + ["text"," cucumbers"] +],[ + "start", + ["text"," "], + ["keyword","Then"], + ["text"," I should have "], + ["comment",""], + ["text"," cucumbers"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","Examples:"] +],[ + "start", + ["text"," "], + ["comment","|"], + ["string"," start "], + ["comment","|"], + ["string"," eat "], + ["comment","|"], + ["string"," left "], + ["comment","|"] +],[ + "start", + ["text"," "], + ["comment","|"], + ["string"," 12 "], + ["comment","|"], + ["string"," 5 "], + ["comment","|"], + ["string"," 7 "], + ["comment","|"] +],[ + "start", + ["text"," "], + ["comment","|"], + ["string"," @20 "], + ["comment","|"], + ["string"," 5 "], + ["comment","|"], + ["string"," 15 "], + ["comment","|"], + ["string"," "] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","Scenario:"], + ["text"," Buy last coffee"] +],[ + "start", + ["text"," "], + ["keyword","Given"], + ["text"," there are "], + ["constant.numeric","1"], + ["text"," coffees left in the machine"] +],[ + "start", + ["text"," "], + ["keyword","And"], + ["text"," I have deposited "], + ["constant.numeric","1"], + ["text","$ "] +],[ + "start", + ["text"," "], + ["keyword","When"], + ["text"," I press the coffee button"] +],[ + "start", + ["text"," "], + ["keyword","Then"], + ["text"," I should be served a "], + ["string","\"coffee\""] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["comment","# this a comment"] +],[ + "start", + ["text"," "] +],[ + "qqstring3", + ["text"," "], + ["string","\"\"\""] +],[ + "qqstring3", + ["string"," this is a "] +],[ + "qqstring3", + ["string"," pystring"] +],[ + "start", + ["string"," \"\"\""] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gitignore.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gitignore.json new file mode 100644 index 00000000..8689a724 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gitignore.json @@ -0,0 +1,33 @@ +[[ + "start", + ["comment","# A sample .gitignore file."] +],[ + "start" +],[ + "start", + ["text",".buildlog"] +],[ + "start", + ["text",".DS_Store"] +],[ + "start", + ["text",".svn"] +],[ + "start" +],[ + "start", + ["comment","# Negated patterns:"] +],[ + "start", + ["keyword","!foo.bar"] +],[ + "start" +],[ + "start", + ["comment","# Also ignore user settings..."] +],[ + "start", + ["text","/.settings"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_glsl.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_glsl.json new file mode 100644 index 00000000..ce8a4d16 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_glsl.json @@ -0,0 +1,127 @@ +[[ + "start", + ["keyword","uniform"], + ["text"," "], + ["keyword","float"], + ["text"," "], + ["identifier","amplitude"], + ["punctuation.operator",";"] +],[ + "start", + ["keyword","attribute"], + ["text"," "], + ["keyword","float"], + ["text"," "], + ["identifier","displacement"], + ["punctuation.operator",";"] +],[ + "start", + ["keyword","varying"], + ["text"," "], + ["keyword","vec3"], + ["text"," "], + ["identifier","vNormal"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["keyword","void"], + ["text"," "], + ["identifier","main"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start" +],[ + "start", + ["text"," "], + ["identifier","vNormal"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","normal"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["comment","// multiply our displacement by the"] +],[ + "start", + ["text"," "], + ["comment","// amplitude. The amp will get animated"] +],[ + "start", + ["text"," "], + ["comment","// so we'll have animated displacement"] +],[ + "start", + ["text"," "], + ["keyword","vec3"], + ["text"," "], + ["identifier","newPosition"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","position"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "] +],[ + "start", + ["text"," "], + ["identifier","normal"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","vec3"], + ["paren.lparen","("], + ["identifier","displacement"], + ["text"," "], + ["keyword.operator","*"] +],[ + "start", + ["text"," "], + ["identifier","amplitude"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["constant.language","gl_Position"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","projectionMatrix"], + ["text"," "], + ["keyword.operator","*"] +],[ + "start", + ["text"," "], + ["identifier","modelViewMatrix"], + ["text"," "], + ["keyword.operator","*"] +],[ + "start", + ["text"," "], + ["keyword","vec4"], + ["paren.lparen","("], + ["identifier","newPosition"], + ["punctuation.operator",","], + ["constant.numeric","1.0"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gobstones.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gobstones.json new file mode 100644 index 00000000..4ecb2c4b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_gobstones.json @@ -0,0 +1,113 @@ +[[ + "start", + ["keyword","program"], + ["text"," "], + ["lparen","{"] +],[ + "comment", + ["text"," "], + ["comment","/*"] +],[ + "comment", + ["comment"," * A gobstons multiline comment"] +],[ + "comment", + ["comment"," * Taken from:"] +],[ + "comment", + ["comment"," * http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/\""] +],[ + "start", + ["comment"," */"] +],[ + "start", + ["text"," "], + ["identifier","sumar"], + ["lparen","("], + ["constant.numeric","2"], + ["keyword.operator",","], + ["text"," "], + ["constant.numeric","3"], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["rparen","}"] +],[ + "start", + ["text"," "], + ["keyword","function"], + ["text"," "], + ["identifier","sumar"], + ["lparen","("], + ["identifier","a"], + ["keyword.operator",","], + ["text"," "], + ["identifier","b"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","r"], + ["text"," "], + ["keyword.operator",":="], + ["text"," "], + ["identifier","a"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["identifier","b"] +],[ + "start", + ["text"," "], + ["rparen","}"] +],[ + "start", + ["text"," "], + ["comment","// unreachable code"] +],[ + "start", + ["text"," "], + ["comment","-- unreachable code"] +],[ + "start", + ["text"," "], + ["comment","# unreachable code"] +],[ + "start", + ["text"," "], + ["keyword","procedure"], + ["text"," "], + ["identifier","hacerAlgo"], + ["lparen","("], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["support.function","Mover"], + ["lparen","("], + ["support.type","Este"], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["support.function","Poner"], + ["lparen","("], + ["support.type","Rojo"], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["support.function","Sacar"], + ["lparen","("], + ["support.type","Azul"], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_golang.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_golang.json new file mode 100644 index 00000000..7fbd38ef --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_golang.json @@ -0,0 +1,256 @@ +[[ + "start", + ["comment","// Concurrent computation of pi."] +],[ + "start", + ["comment","// See http://goo.gl/ZuTZM."] +],[ + "start", + ["comment","//"] +],[ + "start", + ["comment","// This demonstrates Go's ability to handle"] +],[ + "start", + ["comment","// large numbers of concurrent processes."] +],[ + "start", + ["comment","// It is an unreasonable way to calculate pi."] +],[ + "start", + ["keyword","package"], + ["text"," "], + ["identifier","main"] +],[ + "start" +],[ + "start", + ["keyword","import"], + ["text"," "], + ["paren.lparen","("] +],[ + "start", + ["text"," "], + ["string","\"fmt\""] +],[ + "start", + ["text"," "], + ["string","\"math\""] +],[ + "start", + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["keyword","func"], + ["text"," "], + ["entity.name.function","main"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","fmt"], + ["punctuation.operator","."], + ["support.function","Println"], + ["paren.lparen","("], + ["support.function","pi"], + ["paren.lparen","("], + ["constant.numeric","5000"], + ["paren.rparen","))"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["comment","// pi launches n goroutines to compute an"] +],[ + "start", + ["comment","// approximation of pi."] +],[ + "start", + ["keyword","func"], + ["text"," "], + ["entity.name.function","pi"], + ["paren.lparen","("], + ["identifier","n"], + ["text"," "], + ["support.type","int"], + ["paren.rparen",")"], + ["text"," "], + ["support.type","float64"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","ch"], + ["text"," "], + ["punctuation.operator",":"], + ["keyword.operator","="], + ["text"," "], + ["support.function","make"], + ["paren.lparen","("], + ["keyword","chan"], + ["text"," "], + ["support.type","float64"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["identifier","k"], + ["text"," "], + ["punctuation.operator",":"], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","k"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["identifier","n"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","k"], + ["keyword.operator","++"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","go"], + ["text"," "], + ["support.function","term"], + ["paren.lparen","("], + ["identifier","ch"], + ["punctuation.operator",","], + ["text"," "], + ["support.type","float64"], + ["paren.lparen","("], + ["identifier","k"], + ["paren.rparen","))"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["identifier","f"], + ["text"," "], + ["punctuation.operator",":"], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0.0"] +],[ + "start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["identifier","k"], + ["text"," "], + ["punctuation.operator",":"], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","k"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["identifier","n"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","k"], + ["keyword.operator","++"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","f"], + ["text"," "], + ["keyword.operator","+="], + ["text"," "], + ["keyword.operator","<-"], + ["identifier","ch"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["identifier","f"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","func"], + ["text"," "], + ["entity.name.function","term"], + ["paren.lparen","("], + ["identifier","ch"], + ["text"," "], + ["keyword","chan"], + ["text"," "], + ["support.type","float64"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","k"], + ["text"," "], + ["support.type","float64"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","ch"], + ["text"," "], + ["keyword.operator","<-"], + ["text"," "], + ["constant.numeric","4"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["identifier","math"], + ["punctuation.operator","."], + ["support.function","Pow"], + ["paren.lparen","("], + ["constant.numeric","-1"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","k"], + ["paren.rparen",")"], + ["text"," / "], + ["paren.lparen","("], + ["constant.numeric","2"], + ["keyword.operator","*"], + ["identifier","k"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"], + ["paren.rparen",")"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_graphqlschema.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_graphqlschema.json new file mode 100644 index 00000000..595a0d68 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_graphqlschema.json @@ -0,0 +1,400 @@ +[[ + "start", + ["comment","# Main Schema"] +],[ + "start", + ["keyword","schema"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["identifier","query"], + ["text",": "], + ["identifier","Query"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","scalar"], + ["text"," "], + ["identifier","Date"], + ["text",";"] +],[ + "start" +],[ + "start", + ["comment","# Simple type to contain all scalar types"] +],[ + "start", + ["keyword","type"], + ["text"," "], + ["identifier","AllTypes"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["comment","# Field Description for String"] +],[ + "start", + ["text","\t"], + ["identifier","testString"], + ["text",": "], + ["storage.type","String"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["comment","# Field Description for Int"] +],[ + "start", + ["text","\t"], + ["identifier","testInt"], + ["text",": "], + ["storage.type","Int"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["comment","# Field Description for ID"] +],[ + "start", + ["text","\t"], + ["identifier","testID"], + ["text",": "], + ["storage.type","ID"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["comment","# Field Description for Boolean"] +],[ + "start", + ["text","\t"], + ["identifier","testBoolean"], + ["text",": "], + ["storage.type","Boolean"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["comment","# Field Description for Float"] +],[ + "start", + ["text","\t"], + ["identifier","testFloat"], + ["text",": "], + ["storage.type","Float"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","interface"], + ["text"," "], + ["identifier","ISearchable"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","searchPreview"], + ["text",": "], + ["storage.type","String"], + ["text","!;"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","union"], + ["text"," "], + ["identifier","ProductTypes"], + ["text"," = "], + ["identifier","Movie"], + ["text"," | "], + ["identifier","Book"], + ["text",";"] +],[ + "start" +],[ + "start", + ["comment","# Testing enum"] +],[ + "start", + ["keyword","enum"], + ["text"," "], + ["identifier","MovieGenere"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","ACTION"] +],[ + "start", + ["text"," "], + ["identifier","COMEDY"] +],[ + "start", + ["text"," "], + ["identifier","THRILLER"] +],[ + "start", + ["text"," "], + ["identifier","DRAMA"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["comment","# Testing Input"] +],[ + "start", + ["keyword","input"], + ["text"," "], + ["identifier","SearchByGenere"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["identifier","before"], + ["text",": "], + ["identifier","Date"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","after"], + ["text",": "], + ["identifier","Date"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","genere"], + ["text",": "], + ["identifier","MovieGenere"], + ["text","!;"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["comment","# Testing Interface"] +],[ + "start", + ["keyword","type"], + ["text"," "], + ["identifier","Movie"], + ["text"," "], + ["keyword","implements"], + ["text"," "], + ["identifier","ISearchable"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["identifier","id"], + ["text",": "], + ["storage.type","ID"], + ["text","!;"] +],[ + "start", + ["text","\t"], + ["identifier","searchPreview"], + ["text",": "], + ["storage.type","String"], + ["text","!;"] +],[ + "start", + ["text","\t"], + ["identifier","rentPrice"], + ["text",": "], + ["storage.type","Float"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","publishDate"], + ["text",": "], + ["identifier","Date"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","genere"], + ["text",": "], + ["identifier","MovieGenere"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","cast"], + ["text",": "], + ["paren.lparen","["], + ["storage.type","String"], + ["paren.rparen","]"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["comment","# Testing Interface"] +],[ + "start", + ["keyword","type"], + ["text"," "], + ["identifier","Book"], + ["text"," "], + ["keyword","implements"], + ["text"," "], + ["identifier","ISearchable"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","id"], + ["text",": "], + ["storage.type","ID"], + ["text","!;"] +],[ + "start", + ["text","\t"], + ["identifier","searchPreview"], + ["text",": "], + ["storage.type","String"], + ["text","!;"] +],[ + "start", + ["text","\t"], + ["identifier","price"], + ["text",": "], + ["storage.type","Float"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","publishDate"], + ["text",": "], + ["identifier","Date"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","authors"], + ["text",": "], + ["paren.lparen","["], + ["storage.type","String"], + ["paren.rparen","]"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","type"], + ["text"," "], + ["identifier","Query"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["identifier","testString"], + ["text",": "], + ["storage.type","String"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","testDate"], + ["text","; "], + ["identifier","Date"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","allTypes"], + ["text",": "], + ["identifier","AllTypes"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["identifier","allProducts"], + ["text",": "], + ["paren.lparen","["], + ["identifier","ProductTypes"], + ["paren.rparen","]"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["comment","# searches only movies by genere with sophisticated argument"] +],[ + "start", + ["text","\t"], + ["identifier","searchMovieByGenere"], + ["paren.lparen","("], + ["identifier","searchObject"], + ["text",": "], + ["identifier","SearchByGenere"], + ["text","!"], + ["paren.rparen",")"], + ["text",": "], + ["paren.lparen","["], + ["identifier","Movie"], + ["paren.rparen","]"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["comment","# Searchs all products by text string"] +],[ + "start", + ["text","\t"], + ["identifier","searchProduct"], + ["paren.lparen","("], + ["identifier","text"], + ["text",": "], + ["storage.type","String"], + ["text","!"], + ["paren.rparen",")"], + ["text",": "], + ["paren.lparen","["], + ["identifier","ISearchable"], + ["paren.rparen","]"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_groovy.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_groovy.json new file mode 100644 index 00000000..c7dae6b1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_groovy.json @@ -0,0 +1,410 @@ +[[ + "start", + ["comment","//http://groovy.codehaus.org/Martin+Fowler%27s+closure+examples+in+Groovy"] +],[ + "start" +],[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","Employee"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","def"], + ["text"," "], + ["identifier","name"], + ["text",", "], + ["identifier","salary"] +],[ + "start", + ["text"," "], + ["keyword","boolean"], + ["text"," "], + ["identifier","manager"] +],[ + "start", + ["text"," "], + ["support.function","String"], + ["text"," "], + ["identifier","toString"], + ["lparen","("], + ["rparen",")"], + ["text"," "], + ["lparen","{"], + ["text"," "], + ["keyword","return"], + ["text"," "], + ["identifier","name"], + ["text"," "], + ["rparen","}"] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","def"], + ["text"," "], + ["identifier","emps"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["lparen","["], + ["keyword","new"], + ["text"," "], + ["identifier","Employee"], + ["lparen","("], + ["identifier","name"], + ["text",":"], + ["string","'Guillaume'"], + ["text",", "], + ["identifier","manager"], + ["text",":"], + ["constant.language.boolean","true"], + ["text",", "], + ["identifier","salary"], + ["text",":"], + ["constant.numeric","200"], + ["rparen",")"], + ["text",","] +],[ + "start", + ["text"," "], + ["keyword","new"], + ["text"," "], + ["identifier","Employee"], + ["lparen","("], + ["identifier","name"], + ["text",":"], + ["string","'Graeme'"], + ["text",", "], + ["identifier","manager"], + ["text",":"], + ["constant.language.boolean","true"], + ["text",", "], + ["identifier","salary"], + ["text",":"], + ["constant.numeric","200"], + ["rparen",")"], + ["text",","] +],[ + "start", + ["text"," "], + ["keyword","new"], + ["text"," "], + ["identifier","Employee"], + ["lparen","("], + ["identifier","name"], + ["text",":"], + ["string","'Dierk'"], + ["text",", "], + ["identifier","manager"], + ["text",":"], + ["constant.language.boolean","false"], + ["text",", "], + ["identifier","salary"], + ["text",":"], + ["constant.numeric","151"], + ["rparen",")"], + ["text",","] +],[ + "start", + ["text"," "], + ["keyword","new"], + ["text"," "], + ["identifier","Employee"], + ["lparen","("], + ["identifier","name"], + ["text",":"], + ["string","'Bernd'"], + ["text",", "], + ["identifier","manager"], + ["text",":"], + ["constant.language.boolean","false"], + ["text",", "], + ["identifier","salary"], + ["text",":"], + ["constant.numeric","50"], + ["rparen",")]"] +],[ + "start" +],[ + "start", + ["keyword","def"], + ["text"," "], + ["identifier","managers"], + ["lparen","("], + ["identifier","emps"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","emps"], + ["text","."], + ["identifier","findAll"], + ["text"," "], + ["lparen","{"], + ["text"," "], + ["identifier","e"], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["identifier","e"], + ["text","."], + ["identifier","isManager"], + ["lparen","("], + ["rparen",")"], + ["text"," "], + ["rparen","}"] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","assert"], + ["text"," "], + ["identifier","emps"], + ["lparen","["], + ["constant.numeric","0"], + ["text",".."], + ["constant.numeric","1"], + ["rparen","]"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","managers"], + ["lparen","("], + ["identifier","emps"], + ["rparen",")"], + ["text"," "], + ["comment","// [Guillaume, Graeme]"] +],[ + "start" +],[ + "start", + ["keyword","def"], + ["text"," "], + ["identifier","highPaid"], + ["lparen","("], + ["identifier","emps"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","threshold"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","150"] +],[ + "start", + ["text"," "], + ["identifier","emps"], + ["text","."], + ["identifier","findAll"], + ["text"," "], + ["lparen","{"], + ["text"," "], + ["identifier","e"], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["identifier","e"], + ["text","."], + ["identifier","salary"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["identifier","threshold"], + ["text"," "], + ["rparen","}"] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","assert"], + ["text"," "], + ["identifier","emps"], + ["lparen","["], + ["constant.numeric","0"], + ["text",".."], + ["constant.numeric","2"], + ["rparen","]"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","highPaid"], + ["lparen","("], + ["identifier","emps"], + ["rparen",")"], + ["text"," "], + ["comment","// [Guillaume, Graeme, Dierk]"] +],[ + "start" +],[ + "start", + ["keyword","def"], + ["text"," "], + ["identifier","paidMore"], + ["lparen","("], + ["identifier","amount"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["lparen","{"], + ["text"," "], + ["identifier","e"], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["identifier","e"], + ["text","."], + ["identifier","salary"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["identifier","amount"], + ["rparen","}"] +],[ + "start", + ["rparen","}"] +],[ + "start", + ["keyword","def"], + ["text"," "], + ["identifier","highPaid"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","paidMore"], + ["lparen","("], + ["constant.numeric","150"], + ["rparen",")"] +],[ + "start" +],[ + "start", + ["keyword","assert"], + ["text"," "], + ["identifier","highPaid"], + ["lparen","("], + ["identifier","emps"], + ["lparen","["], + ["constant.numeric","0"], + ["rparen","])"], + ["text"," "], + ["comment","// true"] +],[ + "start", + ["keyword","assert"], + ["text"," "], + ["identifier","emps"], + ["lparen","["], + ["constant.numeric","0"], + ["text",".."], + ["constant.numeric","2"], + ["rparen","]"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","emps"], + ["text","."], + ["identifier","findAll"], + ["lparen","("], + ["identifier","highPaid"], + ["rparen",")"] +],[ + "start" +],[ + "start", + ["keyword","def"], + ["text"," "], + ["identifier","filename"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","'test.txt'"] +],[ + "start", + ["keyword","new"], + ["text"," "], + ["identifier","File"], + ["lparen","("], + ["identifier","filename"], + ["rparen",")"], + ["text","."], + ["identifier","withReader"], + ["lparen","{"], + ["text"," "], + ["identifier","reader"], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["identifier","doSomethingWith"], + ["lparen","("], + ["identifier","reader"], + ["rparen",")"], + ["text"," "], + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","def"], + ["text"," "], + ["identifier","readersText"] +],[ + "start", + ["keyword","def"], + ["text"," "], + ["identifier","doSomethingWith"], + ["lparen","("], + ["identifier","reader"], + ["rparen",")"], + ["text"," "], + ["lparen","{"], + ["text"," "], + ["identifier","readersText"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","reader"], + ["text","."], + ["identifier","text"], + ["text"," "], + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","assert"], + ["text"," "], + ["keyword","new"], + ["text"," "], + ["identifier","File"], + ["lparen","("], + ["identifier","filename"], + ["rparen",")"], + ["text","."], + ["identifier","text"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["identifier","readersText"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haml.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haml.json new file mode 100644 index 00000000..5a22e907 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haml.json @@ -0,0 +1,259 @@ +[[ + "start", + ["keyword.other.doctype","!!!5"] +],[ + "start" +],[ + "embedded_ruby", + ["text","# "] +],[ + "embedded_ruby", + ["text","# "] +],[ + "embedded_ruby", + ["text","# "] +],[ + "embedded_ruby", + ["text","# <"], + ["identifier","html"], + ["text"," "], + ["keyword","class"], + ["text","="], + ["string","\"no-js\""], + ["text"," "], + ["identifier","lang"], + ["text","="], + ["string","\"en\""], + ["text","> "] +],[ + "start" +],[ + "start" +],[ + "start", + ["comment.line","/adasdasdad"] +],[ + "embedded_ruby", + ["meta.tag.haml","%div"], + ["text","{"], + ["constant.other.symbol.ruby",":id"], + ["text"," => "], + ["string","\"#{@item.type}_#{@item.number}\""], + ["text",", :"], + ["keyword","class"], + ["text"," => "], + ["string","'#{@item.type} #{@item.urgency}'"], + ["text",", :"], + ["identifier","phoney"], + ["text"," => "], + ["string","`asdasdasd`"], + ["text","}"] +],[ + "start", + ["comment.line","/ file: app/views/movies/index.html.haml"] +],[ + "start", + ["text","\\d"] +],[ + "embedded_ruby", + ["meta.tag.haml","%ads:"], + ["text","{"], + ["constant.other.symbol.ruby",":bleh"], + ["text"," => "], + ["constant.numeric","33"], + ["text","}"] +],[ + "embedded_ruby", + ["meta.tag.haml","%p"], + ["text","=="], + ["identifier","ddd"], + ["text","=="] +],[ + "start", + ["text"," Date"], + ["comment.line","/Time:"] +],[ + "embedded_ruby", + ["text"," - "], + ["identifier","now"], + ["text"," = "], + ["support.class","DateTime"], + ["text","."], + ["identifier","now"], + ["text"," "] +],[ + "embedded_ruby", + ["text"," "], + ["meta.tag.haml","%strong"], + ["text","= "], + ["identifier","now"] +],[ + "embedded_ruby", + ["text"," = "], + ["keyword","if"], + ["text"," "], + ["identifier","now"], + ["text"," "], + ["support.class","DateTime"], + ["text","."], + ["identifier","parse"], + ["text","("], + ["string","\"December 31, 2006\""], + ["text",")"] +],[ + "embedded_ruby", + ["text"," = "], + ["string","\"Happy new \""], + ["text"," + "], + ["string","\"year!\""] +],[ + "start", + ["meta.tag.haml","%sfd"], + ["keyword.attribute-name.class.haml",".dfdfg"] +],[ + "element_class", + ["keyword.attribute-name.id.haml","#content"] +],[ + "start", + ["text"," "], + ["keyword.attribute-name.class.haml",".title"] +],[ + "embedded_ruby", + ["text"," "], + ["meta.tag.haml","%h1"], + ["text","= "], + ["variable.instance","@title"] +],[ + "embedded_ruby", + ["text"," = "], + ["support.function","link_to"], + ["text"," "], + ["string","'Home'"], + ["text",", "], + ["identifier","home_url"] +],[ + "start" +],[ + "element_class", + ["text"," "], + ["keyword.attribute-name.id.haml","#contents"] +],[ + "element_class", + ["meta.tag.haml","%div"], + ["keyword.attribute-name.id.haml","#content"] +],[ + "start", + ["text"," "], + ["meta.tag.haml","%div"], + ["keyword.attribute-name.class.haml",".articles"] +],[ + "start", + ["text"," "], + ["meta.tag.haml","%div"], + ["keyword.attribute-name.class.haml",".article.title"], + ["text"," Blah"] +],[ + "start", + ["text"," "], + ["meta.tag.haml","%div"], + ["keyword.attribute-name.class.haml",".article.date"], + ["text"," "], + ["constant.numeric","2006-11-05"] +],[ + "start", + ["text"," "], + ["meta.tag.haml","%div"], + ["keyword.attribute-name.class.haml",".article.entry"] +],[ + "start", + ["text"," Neil Patrick Harris "] +],[ + "start" +],[ + "start", + ["meta.tag.haml","%div"], + ["text","[@user, "], + ["constant.other.symbol.ruby",":greeting"], + ["text","]"] +],[ + "start", + ["text"," "], + ["meta.tag.haml","%bar"], + ["text","["], + ["constant.numeric","290"], + ["text","]"], + ["comment.line","/"] +],[ + "embedded_ruby", + ["text"," =="], + ["support.class","Hello"], + ["text","!=="] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_handlebars.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_handlebars.json new file mode 100644 index 00000000..1ec79139 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_handlebars.json @@ -0,0 +1,81 @@ +[[ + "start", + ["comment.start","{{!--"], + ["comment"," Ace + :-}} "], + ["comment.end","--}}"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"comments\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["storage.type.start","{{#"], + ["variable.parameter","each"], + ["text"," "], + ["variable.parameter","comments"], + ["storage.type.end","}}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"/posts/"], + ["storage.type.start","{{"], + ["text","../"], + ["variable.parameter","permalink"], + ["storage.type.end","}}"], + ["string.attribute-value.xml","#"], + ["storage.type.start","{{"], + ["variable.parameter","id"], + ["storage.type.end","}}"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["storage.type.start","{{"], + ["variable.parameter","title"], + ["storage.type.end","}}"], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.function","{{{"], + ["variable.parameter","body"], + ["support.function","}}}"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["storage.type.start","{{/"], + ["variable.parameter","each"], + ["storage.type.end","}}"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haskell.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haskell.json new file mode 100644 index 00000000..8f9a2b38 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haskell.json @@ -0,0 +1,156 @@ +[[ + "start", + ["punctuation.definition.comment.haskell","-- Type annotation (optional)"] +],[ + "start", + ["entity.name.function.haskell","fib"], + ["meta.function.type-declaration.haskell"," "], + ["keyword.other.double-colon.haskell","::"], + ["meta.function.type-declaration.haskell"," "], + ["support.type.prelude.haskell","Int"], + ["meta.function.type-declaration.haskell"," "], + ["keyword.other.arrow.haskell","->"], + ["meta.function.type-declaration.haskell"," "], + ["support.type.prelude.haskell","Integer"] +],[ + "start", + ["text"," "] +],[ + "start", + ["punctuation.definition.comment.haskell","-- With self-referencing data"] +],[ + "start", + ["text","fib n "], + ["keyword.operator.haskell","="], + ["text"," fibs "], + ["keyword.operator.haskell","!!"], + ["text"," n"] +],[ + "start", + ["text"," "], + ["keyword.other.haskell","where"], + ["text"," fibs "], + ["keyword.operator.haskell","="], + ["text"," "], + ["constant.numeric.haskell","0"], + ["text"," "], + ["keyword.operator.haskell",":"], + ["text"," "], + ["support.function.prelude.haskell","scanl"], + ["text"," "], + ["entity.name.function.infix.haskell","(+)"], + ["text"," "], + ["constant.numeric.haskell","1"], + ["text"," fibs"] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.haskell","-- 0,1,1,2,3,5,..."] +],[ + "start", + ["text"," "] +],[ + "start", + ["punctuation.definition.comment.haskell","-- Same, coded directly"] +],[ + "start", + ["text","fib n "], + ["keyword.operator.haskell","="], + ["text"," fibs "], + ["keyword.operator.haskell","!!"], + ["text"," n"] +],[ + "start", + ["text"," "], + ["keyword.other.haskell","where"], + ["text"," fibs "], + ["keyword.operator.haskell","="], + ["text"," "], + ["constant.numeric.haskell","0"], + ["text"," "], + ["keyword.operator.haskell",":"], + ["text"," "], + ["constant.numeric.haskell","1"], + ["text"," "], + ["keyword.operator.haskell",":"], + ["text"," next fibs"] +],[ + "start", + ["text"," next (a "], + ["keyword.operator.haskell",":"], + ["text"," t@(b"], + ["keyword.operator.haskell",":"], + ["text","_)) "], + ["keyword.operator.haskell","="], + ["text"," (a"], + ["keyword.operator.haskell","+"], + ["text","b) "], + ["keyword.operator.haskell",":"], + ["text"," next t"] +],[ + "start", + ["text"," "] +],[ + "start", + ["punctuation.definition.comment.haskell","-- Similar idea, using zipWith"] +],[ + "start", + ["text","fib n "], + ["keyword.operator.haskell","="], + ["text"," fibs "], + ["keyword.operator.haskell","!!"], + ["text"," n"] +],[ + "start", + ["text"," "], + ["keyword.other.haskell","where"], + ["text"," fibs "], + ["keyword.operator.haskell","="], + ["text"," "], + ["constant.numeric.haskell","0"], + ["text"," "], + ["keyword.operator.haskell",":"], + ["text"," "], + ["constant.numeric.haskell","1"], + ["text"," "], + ["keyword.operator.haskell",":"], + ["text"," "], + ["support.function.prelude.haskell","zipWith"], + ["text"," "], + ["entity.name.function.infix.haskell","(+)"], + ["text"," fibs ("], + ["support.function.prelude.haskell","tail"], + ["text"," fibs)"] +],[ + "start", + ["text"," "] +],[ + "start", + ["punctuation.definition.comment.haskell","-- Using a generator function"] +],[ + "start", + ["text","fib n "], + ["keyword.operator.haskell","="], + ["text"," fibs ("], + ["constant.numeric.haskell","0"], + ["punctuation.separator.comma.haskell",","], + ["constant.numeric.haskell","1"], + ["text",") "], + ["keyword.operator.haskell","!!"], + ["text"," n"] +],[ + "start", + ["text"," "], + ["keyword.other.haskell","where"], + ["text"," fibs (a"], + ["punctuation.separator.comma.haskell",","], + ["text","b) "], + ["keyword.operator.haskell","="], + ["text"," a "], + ["keyword.operator.haskell",":"], + ["text"," fibs (b"], + ["punctuation.separator.comma.haskell",","], + ["text","a"], + ["keyword.operator.haskell","+"], + ["text","b)"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haskell_cabal.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haskell_cabal.json new file mode 100644 index 00000000..b6fe8481 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haskell_cabal.json @@ -0,0 +1,278 @@ +[[ + "start", + ["keyword","name: "], + ["text","reload"] +],[ + "start", + ["keyword","version: "], + ["constant.numeric","0.1.0.0"] +],[ + "start", + ["keyword","synopsis: "], + ["text","Initial project template from stack"] +],[ + "start", + ["keyword","Description:"] +],[ + "start", + ["text"," The \\'cabal\\' command-line program simplifies the process of managing"] +],[ + "start", + ["text"," Haskell software by automating the fetching, configuration, compilation"] +],[ + "start", + ["text"," and installation of Haskell libraries and programs."] +],[ + "start", + ["keyword","homepage: "], + ["text","https://github.com/jpmoresmau/dbIDE/reload#readme"] +],[ + "start", + ["keyword","license: "], + ["text","BSD"], + ["constant.numeric","3"] +],[ + "start", + ["keyword","license-file: "], + ["text","LICENSE"] +],[ + "start", + ["keyword","author: "], + ["text","JP Moresmau"] +],[ + "start", + ["keyword","maintainer: "], + ["text","jpmoresmau@gmail.com"] +],[ + "start", + ["keyword","copyright: "], + ["constant.numeric","2016"], + ["text"," JP Moresmau"] +],[ + "start", + ["keyword","category: "], + ["text","Web"] +],[ + "start", + ["keyword","build-type: "], + ["text","Simple"] +],[ + "start", + ["comment","-- extra-source-files:"] +],[ + "start", + ["keyword","cabal-version: "], + ["text",">="], + ["constant.numeric","1.10"] +],[ + "start" +],[ + "start", + ["markup.heading","Flag network-uri"] +],[ + "start", + ["keyword"," description: "], + ["text","Get Network.URI from the network-uri package"] +],[ + "start", + ["keyword"," default: "], + ["constant.language.boolean","True"] +],[ + "start" +],[ + "start", + ["markup.heading","library"] +],[ + "start", + ["keyword"," hs-source-dirs: "], + ["text","src"] +],[ + "start", + ["keyword"," exposed-modules: "], + ["text","Language.Haskell.Reload"] +],[ + "start", + ["keyword"," build-depends: "], + ["text","base >= "], + ["constant.numeric","4.7"], + ["text"," && < "], + ["constant.numeric","5"] +],[ + "start", + ["text"," , aeson"] +],[ + "start", + ["text"," , scotty"] +],[ + "start", + ["text"," , wai"] +],[ + "start", + ["text"," , text"] +],[ + "start", + ["text"," , directory"] +],[ + "start", + ["text"," , filepath"] +],[ + "start", + ["text"," , bytestring"] +],[ + "start", + ["text"," , containers"] +],[ + "start", + ["text"," , mime-types"] +],[ + "start", + ["text"," , transformers"] +],[ + "start", + ["text"," , wai-handler-launch"] +],[ + "start", + ["text"," , wai-middleware-static"] +],[ + "start", + ["text"," , wai-extra"] +],[ + "start", + ["text"," , http-types"] +],[ + "start", + ["keyword"," default-language: "], + ["text","Haskell"], + ["constant.numeric","2010"] +],[ + "start", + ["keyword"," other-modules: "], + ["text","Language.Haskell.Reload.FileBrowser"] +],[ + "start", + ["keyword"," ghc-options: "], + ["text","-Wall -O"], + ["constant.numeric","2"] +],[ + "start" +],[ + "start", + ["markup.heading","executable reload-exe"] +],[ + "start", + ["keyword"," hs-source-dirs: "], + ["text","app"] +],[ + "start", + ["keyword"," main-is: "], + ["text","Main.hs"] +],[ + "start", + ["keyword"," ghc-options: "], + ["text","-threaded -O"], + ["constant.numeric","2"], + ["text"," -rtsopts -with-rtsopts=-N"] +],[ + "start", + ["keyword"," build-depends: "], + ["text","base"] +],[ + "start", + ["text"," , reload"] +],[ + "start", + ["keyword"," default-language: "], + ["text","Haskell"], + ["constant.numeric","2010"] +],[ + "start" +],[ + "start", + ["markup.heading","test-suite reload-test"] +],[ + "start", + ["keyword"," type: "], + ["text","exitcode-stdio-"], + ["constant.numeric","1.0"] +],[ + "start", + ["keyword"," hs-source-dirs: "], + ["text","test"] +],[ + "start", + ["keyword"," main-is: "], + ["text","Spec.hs"] +],[ + "start", + ["keyword"," build-depends: "], + ["text","base"] +],[ + "start", + ["text"," , reload"] +],[ + "start", + ["text"," , hspec"] +],[ + "start", + ["text"," , hspec-wai"] +],[ + "start", + ["text"," , hspec-wai-json"] +],[ + "start", + ["text"," , aeson"] +],[ + "start", + ["text"," , directory"] +],[ + "start", + ["text"," , filepath"] +],[ + "start", + ["text"," , text"] +],[ + "start", + ["text"," , containers"] +],[ + "start", + ["text"," , unordered-containers"] +],[ + "start", + ["text"," , bytestring"] +],[ + "start", + ["text"," , wai-extra"] +],[ + "start", + ["keyword"," ghc-options: "], + ["text","-threaded -O"], + ["constant.numeric","2"], + ["text"," -rtsopts -with-rtsopts=-N"] +],[ + "start", + ["keyword"," default-language: "], + ["text","Haskell"], + ["constant.numeric","2010"] +],[ + "start", + ["keyword"," other-modules: "], + ["text","Language.Haskell.Reload.FileBrowserSpec"] +],[ + "start", + ["text"," Language.Haskell.ReloadSpec"] +],[ + "start" +],[ + "start", + ["markup.heading","source-repository head"] +],[ + "start", + ["keyword"," type: "], + ["text","git"] +],[ + "start", + ["keyword"," location: "], + ["text","https://github.com/jpmoresmau/dbIDE/reload"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haxe.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haxe.json new file mode 100644 index 00000000..f0f79a48 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_haxe.json @@ -0,0 +1,143 @@ +[[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","Haxe"], + ["text"," "] +],[ + "start", + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","public"], + ["text"," "], + ["keyword","static"], + ["text"," "], + ["keyword","function"], + ["text"," "], + ["identifier","main"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["comment","// Say Hello!"] +],[ + "start", + ["text"," "], + ["keyword","var"], + ["text"," "], + ["identifier","greeting"], + ["punctuation.operator",":"], + ["keyword","String"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"Hello World\""], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","trace"], + ["paren.lparen","("], + ["identifier","greeting"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","var"], + ["text"," "], + ["identifier","targets"], + ["punctuation.operator",":"], + ["keyword","Array"], + ["keyword.operator","<"], + ["keyword","String"], + ["keyword.operator",">"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","["], + ["string","\"Flash\""], + ["punctuation.operator",","], + ["string","\"Javascript\""], + ["punctuation.operator",","], + ["string","\"PHP\""], + ["punctuation.operator",","], + ["string","\"Neko\""], + ["punctuation.operator",","], + ["string","\"C++\""], + ["punctuation.operator",","], + ["string","\"iOS\""], + ["punctuation.operator",","], + ["string","\"Android\""], + ["punctuation.operator",","], + ["string","\"webOS\""], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","trace"], + ["paren.lparen","("], + ["string","\"Haxe is a great language that can target:\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["paren.lparen","("], + ["identifier","target"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["identifier","targets"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","trace"], + ["text"," "], + ["paren.lparen","("], + ["string","\" - \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["identifier","target"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["keyword","trace"], + ["paren.lparen","("], + ["string","\"And many more!\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_hjson.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_hjson.json new file mode 100644 index 00000000..95ea84b5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_hjson.json @@ -0,0 +1,76 @@ +[[ + "paren.lparen0", + ["paren.lparen","{"] +],[ + "paren.lparen0", + ["paren"," "], + ["comment.punctuation","#"], + ["comment.line"," specify rate in requests/second (because comments are helpful!)"] +],[ + "paren.lparen0", + ["paren"," "], + ["keyword","rate"], + ["text",":"], + ["paren"," "], + ["constant.numeric","1000"] +],[ + "paren.lparen0" +],[ + "paren.lparen0", + ["paren"," "], + ["comment.punctuation","//"], + ["comment.line"," prefer c-style comments?"] +],[ + "paren.lparen0", + ["paren"," "], + ["comment.punctuation","/*"], + ["comment.block"," feeling old fashioned? "], + ["comment.punctuation","*/"] +],[ + "paren.lparen0" +],[ + "paren.lparen0", + ["paren"," "], + ["comment.punctuation","#"], + ["comment.line"," did you notice that rate doesn't need quotes?"] +],[ + "paren.lparen0", + ["paren"," "], + ["keyword","hey"], + ["text",":"], + ["paren"," "], + ["string","look ma, no quotes for strings either!"] +],[ + "paren.lparen0" +],[ + "paren.lparen0", + ["paren"," "], + ["comment.punctuation","#"], + ["comment.line"," best of all"] +],[ + "paren.lparen0", + ["paren"," "], + ["keyword","notice"], + ["text",":"], + ["paren"," "], + ["paren.lparen","["], + ["paren.rparen","]"] +],[ + "paren.lparen0", + ["paren"," "], + ["keyword","anything"], + ["text",":"], + ["paren"," ?"] +],[ + "paren.lparen0" +],[ + "paren.lparen0", + ["paren"," "], + ["comment.punctuation","#"], + ["comment.line"," yes, commas are optional!"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html.json new file mode 100644 index 00000000..c5f75eff --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html.json @@ -0,0 +1,63 @@ +[[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","html"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","scripts"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.script.tag-name.xml","script"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","a"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","'a'"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["storage.type","var"], + ["text"," "], + ["string","\""], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml","'123'"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + ["string.attribute-value.xml0","tag_stuff"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"abc"] +],[ + "start", + ["string.attribute-value.xml"," def\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + ["string.attribute-value.xml","tag_stuff"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","'abc"] +],[ + "start", + ["string.attribute-value.xml","def\\'"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html_elixir.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html_elixir.json new file mode 100644 index 00000000..f7e6b9ba --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html_elixir.json @@ -0,0 +1,294 @@ +[[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h1"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Listing Books"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","table"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Title"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Summary"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start", + ["support.elixir_tag","<%="], + ["text"," "], + ["keyword.control.elixir","for"], + ["text"," book "], + ["keyword.operator.comparison.elixir","<"], + ["keyword.operator.arithmetic.elixir","-"], + ["text"," "], + ["punctuation.definition.variable.elixir","@"], + ["variable.other.readwrite.module.elixir","books"], + ["text"," "], + ["keyword.control.elixir","do"], + ["text"," "], + ["support.elixir_tag","%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["comment.start.eex","<%#"], + ["comment"," comment "], + ["comment.end.eex","%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.elixir_tag","<%="], + ["text"," book"], + ["punctuation.separator.method.elixir","."], + ["text","title "], + ["support.elixir_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.elixir_tag","<%="], + ["text"," book"], + ["punctuation.separator.method.elixir","."], + ["text","content "], + ["support.elixir_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.elixir_tag","<%="], + ["text"," link "], + ["punctuation.definition.string.begin.elixir","\""], + ["string.quoted.double.elixir","Show"], + ["punctuation.definition.string.end.elixir","\""], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir","to:"], + ["text"," book_path"], + ["punctuation.section.function.elixir","("], + ["punctuation.definition.variable.elixir","@"], + ["variable.other.readwrite.module.elixir","conn"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","show"], + ["punctuation.separator.object.elixir",","], + ["text"," book"], + ["punctuation.section.function.elixir",")"], + ["text"," "], + ["support.elixir_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.elixir_tag","<%="], + ["text"," link "], + ["punctuation.definition.string.begin.elixir","\""], + ["string.quoted.double.elixir","Edit"], + ["punctuation.definition.string.end.elixir","\""], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir","to:"], + ["text"," book_path"], + ["punctuation.section.function.elixir","("], + ["punctuation.definition.variable.elixir","@"], + ["variable.other.readwrite.module.elixir","conn"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","edit"], + ["punctuation.separator.object.elixir",","], + ["text"," book"], + ["punctuation.section.function.elixir",")"], + ["text"," "], + ["support.elixir_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.elixir_tag","<%="], + ["text"," link "], + ["punctuation.definition.string.begin.elixir","\""], + ["string.quoted.double.elixir","Delete"], + ["punctuation.definition.string.end.elixir","\""], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir","to:"], + ["text"," book_path"], + ["punctuation.section.function.elixir","("], + ["punctuation.definition.variable.elixir","@"], + ["variable.other.readwrite.module.elixir","conn"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","delete"], + ["punctuation.separator.object.elixir",","], + ["text"," book"], + ["punctuation.section.function.elixir",")"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir","method:"], + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","delete"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir","data:"], + ["text"," "], + ["punctuation.section.array.elixir","["], + ["punctuation.definition.constant.elixir","confirm:"], + ["text"," "], + ["punctuation.definition.string.begin.elixir","\""], + ["string.quoted.double.elixir","Are you sure?"], + ["punctuation.definition.string.end.elixir","\""], + ["punctuation.section.array.elixir","]"], + ["text"," "], + ["support.elixir_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["support.elixir_tag","<%"], + ["text"," "], + ["keyword.control.elixir","end"], + ["text"," "], + ["support.elixir_tag","%>"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","br"], + ["text.tag-whitespace.xml"," "], + ["meta.tag.punctuation.tag-close.xml","/>"] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["support.elixir_tag","<%="], + ["text"," link "], + ["punctuation.definition.string.begin.elixir","\""], + ["string.quoted.double.elixir","New book"], + ["punctuation.definition.string.end.elixir","\""], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir","to:"], + ["text"," book_path"], + ["punctuation.section.function.elixir","("], + ["punctuation.definition.variable.elixir","@"], + ["variable.other.readwrite.module.elixir","conn"], + ["punctuation.separator.object.elixir",","], + ["text"," "], + ["punctuation.definition.constant.elixir",":"], + ["constant.other.symbol.elixir","new"], + ["punctuation.section.function.elixir",")"], + ["text"," "], + ["support.elixir_tag","%>"] +],[ + "start" +]] diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html_ruby.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html_ruby.json new file mode 100644 index 00000000..8ff5f6ea --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_html_ruby.json @@ -0,0 +1,257 @@ +[[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h1"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Listing Books"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","table"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Title"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Summary"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","th"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["support.ruby_tag","<%"], + ["text"," "], + ["variable.instance","@books"], + ["text","."], + ["identifier","each"], + ["text"," "], + ["keyword","do"], + ["text"," |"], + ["identifier","book"], + ["text","| "], + ["support.ruby_tag","%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["comment.start.erb","<%#"], + ["comment"," comment "], + ["comment.end.erb","%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.ruby_tag","<%="], + ["text"," "], + ["identifier","book"], + ["text","."], + ["identifier","title"], + ["text"," "], + ["support.ruby_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.ruby_tag","<%="], + ["text"," "], + ["identifier","book"], + ["text","."], + ["identifier","content"], + ["text"," "], + ["support.ruby_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.ruby_tag","<%="], + ["text"," "], + ["support.function","link_to"], + ["text"," "], + ["string.start","'"], + ["string","Show"], + ["string.end","'"], + ["text",", "], + ["identifier","book"], + ["text"," "], + ["support.ruby_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.ruby_tag","<%="], + ["text"," "], + ["support.function","link_to"], + ["text"," "], + ["string.start","'"], + ["string","Edit"], + ["string.end","'"], + ["text",", "], + ["identifier","edit_book_path"], + ["paren.lparen","("], + ["identifier","book"], + ["paren.rparen",")"], + ["text"," "], + ["support.ruby_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["support.ruby_tag","<%="], + ["text"," "], + ["support.function","link_to"], + ["text"," "], + ["string.start","'"], + ["string","Remove"], + ["string.end","'"], + ["text",", "], + ["identifier","book"], + ["text",", "], + ["constant.other.symbol.ruby",":confirm"], + ["text"," "], + ["punctuation.separator.key-value","=>"], + ["text"," "], + ["string.start","'"], + ["string","Are you sure?"], + ["string.end","'"], + ["text",", "], + ["constant.other.symbol.ruby",":method"], + ["text"," "], + ["punctuation.separator.key-value","=>"], + ["text"," "], + ["constant.other.symbol.ruby",":delete"], + ["text"," "], + ["support.ruby_tag","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["support.ruby_tag","<%"], + ["text"," "], + ["keyword","end"], + ["text"," "], + ["support.ruby_tag","%>"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","br"], + ["text.tag-whitespace.xml"," "], + ["meta.tag.punctuation.tag-close.xml","/>"] +],[ + "start", + ["text.xml"," "] +],[ + "start", + ["support.ruby_tag","<%="], + ["text"," "], + ["support.function","link_to"], + ["text"," "], + ["string.start","'"], + ["string","New book"], + ["string.end","'"], + ["text",", "], + ["identifier","new_book_path"], + ["text"," "], + ["support.ruby_tag","%>"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ini.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ini.json new file mode 100644 index 00000000..11d28017 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ini.json @@ -0,0 +1,23 @@ +[[ + "start", + ["punctuation.definition.entity.ini","["], + ["constant.section.group-title.ini",".ShellClassInfo"], + ["punctuation.definition.entity.ini","]"] +],[ + "start", + ["keyword.other.definition.ini","IconResource"], + ["punctuation.separator.key-value.ini","="], + ["text","..\\logo.png"] +],[ + "start", + ["punctuation.definition.entity.ini","["], + ["constant.section.group-title.ini","ViewState"], + ["punctuation.definition.entity.ini","]"] +],[ + "start", + ["keyword.other.definition.ini","FolderType"], + ["punctuation.separator.key-value.ini","="], + ["text","Generic"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_io.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_io.json new file mode 100644 index 00000000..b83a675a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_io.json @@ -0,0 +1,49 @@ +[[ + "start", + ["punctuation.definition.comment.io","//"], + ["comment.line.double-slash.io"," computes factorial of a number"] +],[ + "start", + ["text","factorial "], + ["keyword.operator.io",":="], + ["text"," "], + ["support.function.io","method"], + ["text","(n,"] +],[ + "start", + ["text"," "], + ["keyword.control.io","if"], + ["text","(n "], + ["keyword.operator.io","=="], + ["text"," "], + ["constant.numeric.io","0"], + ["text",", "], + ["keyword.control.io","return"], + ["text"," "], + ["constant.numeric.io","1"], + ["text",")"] +],[ + "start", + ["text"," res "], + ["keyword.operator.io",":="], + ["text"," "], + ["constant.numeric.io","1"] +],[ + "start", + ["text"," "], + ["support.class.io","Range"], + ["text"," "], + ["constant.numeric.io","1"], + ["text"," "], + ["support.function.io","to"], + ["text","(n) "], + ["keyword.control.io","foreach"], + ["text","(i, res "], + ["keyword.operator.io","="], + ["text"," res "], + ["keyword.operator.io","*"], + ["text"," i)"] +],[ + "start", + ["text",")"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jack.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jack.json new file mode 100644 index 00000000..c3d694dd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jack.json @@ -0,0 +1,1786 @@ +[[ + "start", + ["keyword","vars"], + ["text"," "], + ["variable","it"], + ["text",", "], + ["variable","p"] +],[ + "start" +],[ + "start", + ["variable","p"], + ["text"," = "], + ["paren.lparen","{"], + ["variable","label"], + ["text",", "], + ["variable","value"], + ["text","|"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","\""], + ["constant.language.escape","\\n"], + ["string","\""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","label"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["language.builtin","inspect"], + ["paren.lparen","("], + ["variable","value"], + ["paren.rparen","))"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start", + ["comment","-- Create an array from 0 to 15"] +],[ + "start", + ["variable","p"], + ["paren.lparen","("], + ["string","\"range\""], + ["text",", "], + ["language.builtin","i-collect"], + ["paren.lparen","("], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","5"], + ["paren.rparen",")))"] +],[ + "start" +],[ + "start", + ["comment","-- Create an array from 0 to 15 and break up in chunks of 4"] +],[ + "start", + ["variable","p"], + ["paren.lparen","("], + ["string","\"chunked range\""], + ["text",", "], + ["language.builtin","i-collect"], + ["paren.lparen","("], + ["language.builtin","i-chunk"], + ["paren.lparen","("], + ["constant.numeric","4"], + ["text",", "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","16"], + ["paren.rparen","))))"] +],[ + "start" +],[ + "start", + ["comment","-- Check if all or none items in stream pass test."] +],[ + "start", + ["variable","p"], + ["paren.lparen","("], + ["string","\"all < 60 in range(60)\""], + ["text",", "], + ["variable","i-all?"], + ["paren.lparen","({"], + ["variable","i"], + ["text","|"], + ["variable","i"], + ["keyword.operator","<"], + ["constant.numeric","60"], + ["paren.rparen","}"], + ["text",", "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","60"], + ["paren.rparen",")))"] +],[ + "start", + ["variable","p"], + ["paren.lparen","("], + ["string","\"any < 60 in range(60)\""], + ["text",", "], + ["variable","i-any?"], + ["paren.lparen","({"], + ["variable","i"], + ["text","|"], + ["variable","i"], + ["keyword.operator",">"], + ["constant.numeric","60"], + ["paren.rparen","}"], + ["text",", "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","60"], + ["paren.rparen",")))"] +],[ + "start", + ["variable","p"], + ["paren.lparen","("], + ["string","\"all < 60 in range(70)\""], + ["text",", "], + ["variable","i-all?"], + ["paren.lparen","({"], + ["variable","i"], + ["text","|"], + ["variable","i"], + ["keyword.operator","<"], + ["constant.numeric","60"], + ["paren.rparen","}"], + ["text",", "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","70"], + ["paren.rparen",")))"] +],[ + "start", + ["variable","p"], + ["paren.lparen","("], + ["string","\"any < 60 in range(70)\""], + ["text",", "], + ["variable","i-any?"], + ["paren.lparen","({"], + ["variable","i"], + ["text","|"], + ["variable","i"], + ["keyword.operator",">"], + ["constant.numeric","60"], + ["paren.rparen","}"], + ["text",", "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","70"], + ["paren.rparen",")))"] +],[ + "start" +],[ + "start", + ["comment","-- Zip three different collections together"] +],[ + "start", + ["variable","p"], + ["paren.lparen","("], + ["string","\"zipped\""], + ["text",", "], + ["language.builtin","i-collect"], + ["paren.lparen","("], + ["language.builtin","i-zip"], + ["paren.lparen","("] +],[ + "start", + ["text"," "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["paren.rparen",")"], + ["text",","] +],[ + "start", + ["text"," "], + ["paren.lparen","["], + ["constant.numeric","1"], + ["text",","], + ["constant.numeric","2"], + ["text",","], + ["constant.numeric","3"], + ["text",","], + ["constant.numeric","4"], + ["text",","], + ["constant.numeric","5"], + ["paren.rparen","]"], + ["text",","] +],[ + "start", + ["text"," "], + ["language.builtin","i-map"], + ["paren.lparen","({"], + ["variable","i"], + ["text","|"], + ["variable","i"], + ["keyword.operator","*"], + ["variable","i"], + ["paren.rparen","}"], + ["text",", "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["paren.rparen","))"] +],[ + "start", + ["paren.rparen",")))"] +],[ + "start" +],[ + "start", + ["keyword","vars"], + ["text"," "], + ["variable","names"], + ["text",", "], + ["variable","person"], + ["text",", "], + ["variable","i"], + ["text",", "], + ["variable","doubles"], + ["text",", "], + ["variable","lengths"], + ["text",", "], + ["variable","cubeRange"] +],[ + "start", + ["variable","names"], + ["text"," = "], + ["paren.lparen","["], + ["string","\"Thorin\""], + ["text",", "], + ["string","\"Dwalin\""], + ["text",", "], + ["string","\"Balin\""], + ["text",", "], + ["string","\"Bifur\""], + ["text",", "], + ["string","\"Bofur\""], + ["text",", "], + ["string","\"Bombur\""], + ["text",", "], + ["string","\"Oin\""], + ["text",","] +],[ + "start", + ["text"," "], + ["string","\"Gloin\""], + ["text",", "], + ["string","\"Ori\""], + ["text",", "], + ["string","\"Nori\""], + ["text",", "], + ["string","\"Dori\""], + ["text",", "], + ["string","\"Fili\""], + ["text",", "], + ["string","\"Kili\""], + ["text",", "], + ["string","\"Bilbo\""], + ["text",", "], + ["string","\"Gandalf\""], + ["paren.rparen","]"] +],[ + "start" +],[ + "start", + ["keyword","for"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["variable","names"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword.operator","!="], + ["text"," "], + ["string","\"Bilbo\""], + ["text"," "], + ["keyword.operator","&&"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword.operator","!="], + ["text"," "], + ["string","\"Gandalf\""], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","name"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["variable","person"], + ["text"," = "], + ["paren.lparen","{"], + ["variable","name"], + ["text",": "], + ["string","\"Tim\""], + ["text",", "], + ["variable","age"], + ["text",": "], + ["constant.numeric","30"], + ["paren.rparen","}"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["variable","key"], + ["text",", "], + ["variable","value"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["variable","person"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","key"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\" = \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","value"], + ["paren.rparen",")"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["variable","i"], + ["text"," = "], + ["constant.numeric","0"] +],[ + "start", + ["keyword","while"], + ["text"," "], + ["variable","i"], + ["text"," "], + ["keyword.operator","<"], + ["text"," "], + ["constant.numeric","10"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","i"], + ["text"," = "], + ["variable","i"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","i"], + ["paren.rparen",")"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["language.builtin","print"], + ["paren.lparen","("], + ["string","\"range\""], + ["paren.rparen",")"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["variable","i"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","i"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"], + ["paren.rparen",")"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["variable","i"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["text"," "], + ["keyword.operator","-"], + ["text"," "], + ["variable","i"], + ["paren.rparen",")"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["comment","-- Dynamic object that gives the first 10 doubles"] +],[ + "start", + ["variable","doubles"], + ["text"," = "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["storage.form","@len"], + ["text",": "], + ["paren.lparen","{"], + ["text","| "], + ["constant.numeric","10"], + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["storage.form","@get"], + ["text",": "], + ["paren.lparen","{"], + ["variable","key"], + ["text","|"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","key"], + ["text"," "], + ["keyword","is"], + ["text"," "], + ["storage.type","Integer"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["variable","key"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["variable","key"], + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start", + ["language.builtin","print"], + ["paren.lparen","("], + ["string","\"#doubles\""], + ["text",", "], + ["keyword.operator","#"], + ["variable","doubles"], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["language.builtin","print"], + ["paren.lparen","("], + ["string","\"Doubles\""], + ["paren.rparen",")"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["variable","k"], + ["text",", "], + ["variable","v"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["variable","doubles"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","(["], + ["variable","k"], + ["text",", "], + ["variable","v"], + ["paren.rparen","])"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["comment","-- Dynamic object that has names list as keys and string lenth as values"] +],[ + "start", + ["variable","lengths"], + ["text"," = "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["storage.form","@keys"], + ["text",": "], + ["paren.lparen","{"], + ["text","| "], + ["variable","names"], + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["storage.form","@get"], + ["text",": "], + ["paren.lparen","{"], + ["variable","key"], + ["text","|"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","key"], + ["text"," "], + ["keyword","is"], + ["text"," "], + ["storage.type","String"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["keyword.operator","#"], + ["variable","key"], + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["language.builtin","print"], + ["text"," "], + ["paren.lparen","("], + ["string","\"Lengths\""], + ["paren.rparen",")"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["variable","k"], + ["text",", "], + ["variable","v"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["variable","lengths"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","(["], + ["variable","k"], + ["text",", "], + ["variable","v"], + ["paren.rparen","])"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start" +],[ + "start", + ["variable","cubeRange"], + ["text"," = "], + ["paren.lparen","{"], + ["variable","n"], + ["text","|"] +],[ + "start", + ["text"," "], + ["keyword","vars"], + ["text"," "], + ["variable","i"], + ["text",", "], + ["variable","v"] +],[ + "start", + ["text"," "], + ["variable","i"], + ["text"," = "], + ["constant.numeric","0"] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["storage.form","@call"], + ["text",": "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["variable","v"], + ["text"," = "], + ["variable","i"] +],[ + "start", + ["text"," "], + ["variable","i"], + ["text"," = "], + ["variable","i"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","v"], + ["text"," "], + ["keyword.operator","<"], + ["text"," "], + ["variable","n"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["variable","v"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["variable","v"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["variable","v"], + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["language.builtin","print"], + ["paren.lparen","("], + ["string","\"Cubes\""], + ["paren.rparen",")"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["variable","k"], + ["text",", "], + ["variable","v"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["variable","cubeRange"], + ["paren.lparen","("], + ["constant.numeric","5"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","(["], + ["variable","k"], + ["text",", "], + ["variable","v"], + ["paren.rparen","])"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start", + ["language.builtin","print"], + ["paren.lparen","("], + ["string","\"String\""], + ["paren.rparen",")"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["variable","k"], + ["text",", "], + ["variable","v"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["string","\"Hello World\""], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","(["], + ["variable","k"], + ["text",", "], + ["variable","v"], + ["paren.rparen","])"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start" +],[ + "start", + ["language.builtin","print"], + ["paren.lparen","(["], + ["variable","i"], + ["text"," "], + ["keyword","for"], + ["text"," "], + ["variable","i"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["paren.rparen",")])"] +],[ + "start", + ["language.builtin","print"], + ["paren.lparen","(["], + ["variable","i"], + ["text"," "], + ["keyword","for"], + ["text"," "], + ["variable","i"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","20"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","i"], + ["text"," "], + ["keyword.operator","%"], + ["text"," "], + ["constant.numeric","3"], + ["paren.rparen","])"] +],[ + "start" +],[ + "start" +],[ + "start" +],[ + "start", + ["comment","-- Example showing how to do parallel work using split..and"] +],[ + "start", + ["variable","base"], + ["text"," = "], + ["paren.lparen","{"], + ["variable","bootstrap"], + ["text",", "], + ["variable","target-dir"], + ["text","|"] +],[ + "start", + ["text"," "], + ["keyword","split"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","copy"], + ["paren.lparen","("], + ["string","\"res\""], + ["text",", "], + ["variable","target-dir"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"], + ["text"," "], + ["keyword","and"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","newer"], + ["paren.lparen","("], + ["string","\"src/*.less\""], + ["text",", "], + ["variable","target-dir"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\"/style.css\""], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","lessc"], + ["paren.lparen","("], + ["string","\"src/\""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","bootstrap"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\".less\""], + ["text",", "], + ["variable","target-dir"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\"/style.css\""], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"], + ["text"," "], + ["keyword","and"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","build"], + ["paren.lparen","("], + ["string","\"src/\""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","bootstrap"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\".js\""], + ["text",", "], + ["variable","target-dir"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\"/app.js\""], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start" +],[ + "start", + ["keyword","vars"], + ["text"," "], + ["variable","Dragon"], + ["text",", "], + ["variable","pet"] +],[ + "start" +],[ + "start", + ["variable","Dragon"], + ["text"," = "], + ["paren.lparen","{"], + ["variable","name"], + ["text","|"] +],[ + "start", + ["text"," "], + ["keyword","vars"], + ["text"," "], + ["variable","asleep"], + ["text",", "], + ["variable","stuff-in-belly"], + ["text",", "], + ["variable","stuff-in-intestine"], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","feed"], + ["text",", "], + ["variable","walk"], + ["text",", "], + ["variable","put-to-bed"], + ["text",", "], + ["variable","toss"], + ["text",", "], + ["variable","rock"], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","hungry?"], + ["text",", "], + ["variable","poopy?"], + ["text",", "], + ["variable","passage-of-time"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","asleep"], + ["text"," = "], + ["constant.language.boolean","false"] +],[ + "start", + ["text"," "], + ["variable","stuff-in-belly"], + ["text"," = "], + ["constant.numeric","10"], + ["text"," "], + ["comment","-- He's full."] +],[ + "start", + ["text"," "], + ["variable","stuff-in-intestine"], + ["text"," = "], + ["constant.numeric","0"], + ["text"," "], + ["comment","-- He doesn't need to go."] +],[ + "start" +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' is born.'"], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","feed"], + ["text"," = "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'You feed '"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","'.'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["variable","stuff-in-belly"], + ["text"," = "], + ["constant.numeric","10"] +],[ + "start", + ["text"," "], + ["variable","passage-of-time"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","walk"], + ["text"," = "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'You walk '"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\".\""], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["variable","stuff-in-intestine"], + ["text"," = "], + ["constant.numeric","0"] +],[ + "start", + ["text"," "], + ["variable","passage-of-time"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","put-to-bed"], + ["text"," = "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'You put '"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' to bed.'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["variable","asleep"], + ["text"," = "], + ["constant.language.boolean","true"] +],[ + "start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["variable","i"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["language.builtin","range"], + ["paren.lparen","("], + ["constant.numeric","3"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","asleep"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","passage-of-time"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","asleep"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' snores, filling the room with smoke.'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","asleep"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","asleep"], + ["text"," = "], + ["constant.language.boolean","false"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' wakes up slowly.'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","toss"], + ["text"," = "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'You toss '"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' up into the air.'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'He giggles, which singes your eyebrows.'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["variable","passage-of-time"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","rock"], + ["text"," = "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'You rock '"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' gently.'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["variable","asleep"], + ["text"," = "], + ["constant.language.boolean","true"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'He briefly dozes off...'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["variable","passage-of-time"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","asleep"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","asleep"], + ["text"," = "], + ["constant.language.boolean","false"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'...but wakes when you stop.'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","hungry?"], + ["text"," = "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["variable","stuff-in-belly"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["constant.numeric","2"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","poopy?"], + ["text"," = "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["variable","stuff-in-intestine"], + ["text"," "], + ["keyword.operator",">="], + ["text"," "], + ["constant.numeric","8"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable","passage-of-time"], + ["text"," = "], + ["paren.lparen","{"], + ["text","|"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","stuff-in-belly"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["comment","-- Move food from belly to intestine"] +],[ + "start", + ["text"," "], + ["variable","stuff-in-belly"], + ["text"," = "], + ["variable","stuff-in-belly"], + ["text"," "], + ["keyword.operator","-"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["variable","stuff-in-intestine"], + ["text"," = "], + ["variable","stuff-in-intestine"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["comment","-- Our dragon is starving!"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","asleep"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","asleep"], + ["text"," = "], + ["constant.language.boolean","false"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'He wakes up suddenly!'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' is starving! In desperation, he ate YOU!'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","abort"], + ["text"," "], + ["string","\"died\""] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","stuff-in-intestine"], + ["text"," "], + ["keyword.operator",">="], + ["text"," "], + ["constant.numeric","10"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","stuff-in-intestine"], + ["text"," = "], + ["constant.numeric","0"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'Whoops! '"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' had an accident...'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","hungry?"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","asleep"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","asleep"], + ["text"," = "], + ["constant.language.boolean","false"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'He wakes up suddenly!'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\"'s stomach grumbles...\""], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","poopy?"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","asleep"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","asleep"], + ["text"," = "], + ["constant.language.boolean","false"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["string","'He wakes up suddenly!'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["language.builtin","print"], + ["paren.lparen","("], + ["variable","name"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","' does the potty dance...'"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment","-- Export the public interface to this closure object."] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","feed"], + ["text",": "], + ["variable","feed"] +],[ + "start", + ["text"," "], + ["variable","walk"], + ["text",": "], + ["variable","walk"] +],[ + "start", + ["text"," "], + ["variable","put-to-bed"], + ["text",": "], + ["variable","put-to-bed"] +],[ + "start", + ["text"," "], + ["variable","toss"], + ["text",": "], + ["variable","toss"] +],[ + "start", + ["text"," "], + ["variable","rock"], + ["text",": "], + ["variable","rock"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["variable","pet"], + ["text"," = "], + ["variable","Dragon"], + ["paren.lparen","("], + ["string","'Norbert'"], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","feed"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","toss"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","walk"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","put-to-bed"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","rock"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","put-to-bed"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","put-to-bed"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","put-to-bed"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["variable","pet"], + ["text","."], + ["variable","put-to-bed"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jade.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jade.json new file mode 100644 index 00000000..c40ea24b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jade.json @@ -0,0 +1,187 @@ +[[ + "start", + ["keyword.other.doctype.jade","!!!doctype"] +],[ + "start", + ["keyword.other.doctype.jade","!!!5"] +],[ + "start", + ["keyword.other.doctype.jade","!!!"] +],[ + "start" +],[ + "start", + ["keyword.control.import.include.jade","include"], + ["text"," something"] +],[ + "start" +],[ + "start", + ["keyword.control.import.include.jade"," include"], + ["text"," another_thing"] +],[ + "start" +],[ + ["comment_block",2,"start"], + ["comment"," // let's talk about it"] +],[ + "start" +],[ + ["comment_block",0,"start"], + ["comment","// "] +],[ + ["comment_block",0,"start"], + ["comment"," here it is. a block comment!"] +],[ + ["comment_block",0,"start"], + ["comment"," and another row!"] +],[ + "start", + ["meta.tag.any.jade","but"], + ["text"," not here."] +],[ + "start" +],[ + ["comment_block",5,"start"], + ["comment"," // "] +],[ + ["comment_block",5,"start"], + ["comment"," a far spaced"] +],[ + "start", + ["text"," should be lack of block"] +],[ + "start" +],[ + ["comment_block",3,"start"], + ["comment"," // also not a comment"] +],[ + ["comment_block",3,"start"], + ["comment"," div.attemptAtBlock"] +],[ + "start", + ["text"," "] +],[ + "start", + ["meta.tag.any.jade"," span"], + ["entity.other.attribute-name.id.jade","#myName"] +],[ + "start" +],[ + "start", + ["text"," "], + ["string.interpolated.jade","#{implicit}"] +],[ + "start", + ["text"," "], + ["string.interpolated.jade","!{more_explicit}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["suport.type.attribute.id.jade","#idDiv"] +],[ + "start" +],[ + "start", + ["text"," "], + ["suport.type.attribute.class.jade",".idDiv"] +],[ + "start" +],[ + "start", + ["meta.tag.any.jade"," test"], + ["punctuation","("], + ["entity.other.attribute-name.jade","id"], + ["punctuation","="], + ["string","\"tag\""], + ["punctuation",")"] +],[ + "start", + ["meta.tag.any.jade"," header"], + ["punctuation","("], + ["entity.other.attribute-name.jade","id"], + ["punctuation","="], + ["string","\"tag\""], + ["text",", "], + ["entity.other.attribute-name.jade","blah"], + ["punctuation","="], + ["string","\"foo\""], + ["text",", "], + ["entity.other.attribute-name.jade","meh"], + ["punctuation","="], + ["string","\"aads\""], + ["punctuation",")"] +],[ + "start", + ["storage.type.function.jade","mixin"], + ["entity.name.function.jade"," article"], + ["punctuation.definition.parameters.begin.jade","("], + ["variable.parameter.function.jade","obj, parents"], + ["punctuation.definition.parameters.end.jade",")"] +],[ + "start" +],[ + "start", + ["storage.type.function.jade"," mixin"], + ["entity.name.function.jade"," bleh"], + ["punctuation.definition.parameters.begin.jade","("], + ["punctuation.definition.parameters.end.jade",")"] +],[ + "start" +],[ + "start", + ["storage.type.function.jade"," mixin"], + ["entity.name.function.jade"," clever-name"] +],[ + "start" +],[ + "start", + ["source.js.embedded.jade"," -"], + ["storage.type","var"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"0\""], + ["text",";"] +],[ + "start", + ["source.js.embedded.jade"," -"], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["identifier","each"], + ["text"," z"] +],[ + "start" +],[ + "start", + ["source.js.embedded.jade"," -"], + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","items"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","["], + ["string","\"one\""], + ["punctuation.operator",","], + ["text"," "], + ["string","\"two\""], + ["punctuation.operator",","], + ["text"," "], + ["string","\"three\""], + ["text","]"] +],[ + "start", + ["meta.tag.any.jade"," each"], + ["text"," item in items"] +],[ + "start", + ["meta.tag.any.jade"," li"], + ["text","= item"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_java.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_java.json new file mode 100644 index 00000000..799ebdb5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_java.json @@ -0,0 +1,95 @@ +[[ + "start", + ["keyword","public"], + ["text"," "], + ["keyword","class"], + ["text"," "], + ["identifier","InfiniteLoop"], + ["text"," "], + ["lparen","{"] +],[ + "start" +],[ + "comment", + ["text"," "], + ["comment","/*"] +],[ + "comment", + ["comment"," * This will cause the program to hang..."] +],[ + "comment", + ["comment"," *"] +],[ + "comment", + ["comment"," * Taken from:"] +],[ + "comment", + ["comment"," * http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/"] +],[ + "start", + ["comment"," */"] +],[ + "start", + ["text"," "], + ["keyword","public"], + ["text"," "], + ["keyword","static"], + ["text"," "], + ["keyword","void"], + ["text"," "], + ["identifier","main"], + ["lparen","("], + ["support.function","String"], + ["lparen","["], + ["rparen","]"], + ["text"," "], + ["identifier","args"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","double"], + ["text"," "], + ["identifier","d"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","Double"], + ["text","."], + ["identifier","parseDouble"], + ["lparen","("], + ["string","\"2.2250738585072012e-308\""], + ["rparen",")"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment","// unreachable code"] +],[ + "start", + ["text"," "], + ["support.function","System"], + ["text","."], + ["identifier","out"], + ["text","."], + ["identifier","println"], + ["lparen","("], + ["string","\"Value: \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["identifier","d"], + ["rparen",")"], + ["text",";"] +],[ + "start", + ["text"," "], + ["rparen","}"] +],[ + "start", + ["rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_javascript.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_javascript.json new file mode 100644 index 00000000..8759595b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_javascript.json @@ -0,0 +1,736 @@ +[[ + "start", + ["comment","//test: tokenize 'standard' functions"] +],[ + "no_regex", + ["identifier","string"], + ["punctuation.operator","."], + ["support.function","charCodeAt"], + ["paren.lparen","("], + ["constant.numeric","23"], + ["paren.rparen",")"], + ["punctuation.operator",";"], + ["text"," "], + ["variable.language","document"], + ["punctuation.operator","."], + ["support.function.dom","getElementById"], + ["paren.lparen","("], + ["string","'test'"], + ["paren.rparen",")"], + ["punctuation.operator",";"], + ["text"," "], + ["storage.type","console"], + ["punctuation.operator","."], + ["support.function.firebug","log"], + ["paren.lparen","("], + ["string","'Here it is'"], + ["paren.rparen",")"], + ["punctuation.operator",";"], + ["string","\";"] +],[ + "no_regex", + ["identifier","test"], + ["punctuation.operator",":"], + ["text"," "], + ["comment.doc","/**tokenize doc*/"], + ["text"," "], + ["identifier","comment"] +],[ + "no_regex", + ["comment.doc","/**tokenize doc comment with "], + ["comment.doc.tag","@tag"], + ["comment.doc"," {}*/"] +],[ + "no_regex", + ["comment","//test: tokenize parens"] +],[ + "start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","$line$"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"[{( )}]\""], + ["punctuation.operator",";"] +],[ + "start", + ["comment","//test tokenize arithmetic expression which looks like a regexp"] +],[ + "no_regex", + ["identifier","a"], + ["keyword.operator","/"], + ["identifier","b"], + ["keyword.operator","/"], + ["identifier","c"] +],[ + "no_regex", + ["identifier","a"], + ["keyword.operator","/="], + ["identifier","b"], + ["keyword.operator","/"], + ["identifier","c"] +],[ + "no_regex", + ["comment","//test tokenize reg exps"] +],[ + "no_regex", + ["identifier","a"], + ["keyword.operator","="], + ["string.regexp","/b/g"] +],[ + "no_regex", + ["identifier","a"], + ["keyword.operator","+"], + ["string.regexp","/b/g"] +],[ + "no_regex", + ["identifier","a"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string.regexp","/2 "], + ["constant.language.escape","+"], + ["string.regexp"," 1/gimyx"], + ["identifier","k"] +],[ + "no_regex", + ["identifier","a"], + ["keyword.operator","="], + ["string.regexp","/a/"], + ["text"," "], + ["keyword.operator","/"], + ["text"," "], + ["string.regexp","/a/"] +],[ + "no_regex", + ["keyword","case"], + ["text"," "], + ["string.regexp","/a/"], + ["punctuation.operator","."], + ["support.function","test"], + ["paren.lparen","("], + ["identifier","c"], + ["paren.rparen",")"] +],[ + "no_regex", + ["comment","//test tokenize multi-line comment containing a single line comment"] +],[ + "no_regex", + ["identifier","noRegex"] +],[ + "no_regex", + ["comment","/* foo // bar */"] +],[ + "start", + ["identifier","canBeRegex"], + ["punctuation.operator",";"] +],[ + "start", + ["comment","/* foo // bar */"] +],[ + "start", + ["comment","// test tokenize identifier with umlauts"] +],[ + "no_regex", + ["identifier","fu"], + ["punctuation.operator","?"], + ["identifier","e"] +],[ + "no_regex", + ["comment","// test // is not a regexp"] +],[ + "start", + ["paren.lparen","{"], + ["text"," "], + ["comment","// 123"] +],[ + "start", + ["comment","//test skipping escaped chars"] +],[ + "no_regex", + ["string","'Meh"], + ["constant.language.escape","\\\\"], + ["string","nNeh'"] +],[ + "no_regex", + ["storage.type","console"], + ["punctuation.operator","."], + ["support.function.firebug","log"], + ["paren.lparen","("], + ["string","'"], + ["constant.language.escape","\\\\"], + ["string","u1232Feh'"] +],[ + "qqstring", + ["string","\"test multiline\\"] +],[ + "no_regex", + ["string"," strings\""] +],[ + "no_regex", + ["identifier","a"], + ["keyword.operator","="], + ["text","'"] +],[ + "qqstring", + ["identifier","b"], + ["keyword.operator","="], + ["string","\"\\"] +],[ + "no_regex", + ["string","still a string"] +],[ + "no_regex", + ["text"," "] +],[ + "no_regex", + ["text"," "] +],[ + "start", + ["storage.type","function"], + ["text"," "], + ["entity.name.function","foo"], + ["paren.lparen","("], + ["variable.parameter","items"], + ["punctuation.operator",", "], + ["variable.parameter","nada"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["paren.lparen","("], + ["storage.type","var"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","="], + ["constant.numeric","0"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","<"], + ["identifier","items"], + ["punctuation.operator","."], + ["support.constant","length"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","++"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.function","alert"], + ["paren.lparen","("], + ["identifier","items"], + ["paren.lparen","["], + ["identifier","i"], + ["paren.rparen","]"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\"juhu"], + ["constant.language.escape","\\n"], + ["string","\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"], + ["text","\t"], + ["comment","// Real Tab."] +],[ + "no_regex", + ["paren.rparen","}"] +],[ + "no_regex" +],[ + "no_regex", + ["identifier","regexp"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.regexp","/p"], + ["constant.language.delimiter","|"], + ["string.regexp","p/"], + ["text"," "], + ["comment","// ends here"] +],[ + "no_regex" +],[ + "no_regex", + ["identifier","r"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.regexp","/d"], + ["constant.language.escape","{1,2}?"], + ["string.regexp","f{e}"], + ["invalid","++"], + ["string.regexp","r"], + ["constant.language.escape","*?"], + ["regexp.keyword.operator","\\d"], + ["constant.language.escape","+?[]"], + ["string.regexp","r"], + ["constant.language.escape","[^"], + ["string.regexp.charachterclass","r"], + ["constant.language.escape","-"], + ["string.regexp.charachterclass","o"], + ["regexp.charclass.keyword.operator","\\f\\f"], + ["string.regexp.charachterclass","["], + ["regexp.charclass.keyword.operator","\\f"], + ["constant.language.escape","]?"], + ["string.regexp","r"], + ["invalid","{7}+"], + ["string.regexp","r"], + ["regexp.keyword.operator","\\{"], + ["string.regexp","7}"], + ["constant.language.escape","+"], + ["string.regexp","rr--rr"], + ["constant.language.escape","$^(?:"], + ["string.regexp","d"], + ["constant.language.delimiter","|"], + ["string.regexp","s"], + ["constant.language.escape",")(?="], + ["string.regexp","a"], + ["constant.language.delimiter","|"], + ["constant.language.escape",")(?!"], + ["string.regexp","y"], + ["constant.language.escape",")[]"], + ["constant.language.delimiter","|"], + ["invalid","$?"], + ["constant.language.delimiter","|"], + ["invalid","^*"], + ["string.regexp","/"], + ["text"," "], + ["identifier","o"] +],[ + "no_regex", + ["identifier","a"], + ["keyword.operator","="], + ["string.regexp","/a/"], + ["text"," "], + ["identifier","jk"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.regexp","/ /"], + ["text"," "], + ["keyword.operator","/"], + ["text"," "], + ["string.regexp","/ /"] +],[ + "no_regex", + ["text"," "], + ["comment.doc","/************************************/"] +],[ + "no_regex", + ["comment.doc","/** total mess, tricky to highlight**/"] +],[ + "no_regex" +],[ + "start", + ["storage.type","function"], + ["text"," "], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "doc-start", + ["text","\t"], + ["comment.doc","/**"] +],[ + "doc-start", + ["comment.doc","\t * docComment"] +],[ + "no_regex", + ["comment.doc","\t **/"] +],[ + "no_regex", + ["text","\t"], + ["identifier","r"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.regexp","/u"], + ["regexp.keyword.operator","\\t"], + ["constant.language.escape","*"], + ["string.regexp","/"] +],[ + "no_regex", + ["text","\t"], + ["identifier","g"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1.00"], + ["identifier","E"], + ["keyword.operator","^"], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1.2"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1."], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric",".2"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","052"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","0O7"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","0x25"] +],[ + "no_regex", + ["text","\t"], + ["identifier","t"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","["], + ["string","'d'"], + ["punctuation.operator",","], + ["text"," "], + ["string","''"], + ["paren.rparen","]"] +],[ + "no_regex", + ["paren.rparen","}"] +],[ + "start", + ["storage.type","function"], + ["text"," "], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["comment","/* eee */"] +],[ + "no_regex", + ["paren.rparen","}"] +],[ + "no_regex" +],[ + "qqstring", + ["string","\"s\\"] +],[ + "no_regex", + ["string","s"], + ["constant.language.escape","\\u7824"], + ["string","sss"], + ["constant.language.escape","\\u"], + ["string","1\""] +],[ + "no_regex" +],[ + "qstring", + ["string","'\\"] +],[ + "no_regex", + ["string","string'"] +],[ + "no_regex" +],[ + "no_regex", + ["text","'"] +],[ + "no_regex", + ["identifier","string"], + ["text","'"] +],[ + "no_regex" +],[ + "no_regex", + ["string","\"trailing space"], + ["constant.language.escape","\\ "], + ["string"," "] +],[ + "no_regex", + ["string","\" \""], + ["text"," "], + ["keyword.operator","/"], + ["identifier","not"], + ["text"," "], + ["identifier","a"], + ["text"," "], + ["identifier","regexp"], + ["keyword.operator","/"], + ["identifier","g"] +],[ + "no_regex" +],[ + "doc-start", + ["comment.doc","/**"] +],[ + "doc-start", + ["comment.doc"," *doc"] +],[ + "no_regex", + ["comment.doc"," */"] +],[ + "no_regex" +],[ + "start", + ["identifier","a"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["string","'a'"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","b"], + ["punctuation.operator",","] +],[ + "no_regex", + ["text","\t"], + ["string","'g'"], + ["text",":"], + ["text"," "], + ["storage.type","function"], + ["paren.lparen","("], + ["variable.parameter","t"], + ["paren.rparen",")"] +],[ + "no_regex", + ["text","\t"], + ["entity.name.function","gta"], + ["punctuation.operator",":"], + ["storage.type","function"], + ["paren.lparen","("], + ["variable.parameter","a"], + ["punctuation.operator",","], + ["variable.parameter","b"], + ["paren.rparen",")"] +],[ + "no_regex", + ["paren.rparen","}"] +],[ + "no_regex" +],[ + "no_regex", + ["identifier","z"], + ["keyword.operator",">>="], + ["identifier","t"], + ["keyword.operator","<<"], + ["identifier","f"], + ["keyword.operator",">>"], + ["identifier","r"], + ["keyword.operator",">>>"], + ["identifier","s"], + ["keyword.operator",">="], + ["constant.numeric","0b1"] +],[ + "no_regex" +],[ + "function_arguments", + ["identifier","foo"], + ["punctuation.operator","."], + ["storage.type","protoype"], + ["punctuation.operator","."], + ["entity.name.function","d"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["storage.type","function"], + ["paren.lparen","("], + ["variable.parameter","a"], + ["punctuation.operator",", "], + ["variable.parameter","b"], + ["punctuation.operator",","] +],[ + "no_regex", + ["punctuation.operator"," "], + ["variable.parameter","c"], + ["punctuation.operator",", "], + ["variable.parameter","d"], + ["paren.rparen",")"] +],[ + "no_regex", + ["storage.type","foo"], + ["punctuation.operator","."], + ["entity.name.function","d"], + ["text"," "], + ["keyword.operator","="], + ["storage.type","function"], + ["paren.lparen","("], + ["variable.parameter","a"], + ["punctuation.operator",", "], + ["variable.parameter","b"], + ["paren.rparen",")"] +],[ + "no_regex", + ["storage.type","foo"], + ["punctuation.operator","."], + ["entity.name.function","d"], + ["text"," "], + ["keyword.operator","="], + ["storage.type","function"], + ["paren.lparen","("], + ["variable.parameter","a"], + ["punctuation.operator",", "], + ["comment.doc","/*****/"], + ["text"," "], + ["identifier","d"], + ["string","\"string\""], + ["text"," "] +],[ + "no_regex" +],[ + "no_regex", + ["keyword.operator","<"], + ["identifier","div"] +],[ + ["start","jsxAttributes","jsxAttributes","jsx",1], + ["identifier","z"], + ["keyword.operator","="], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["paren.quasi.start","{"], + ["keyword.operator","..."], + ["variable.language","this"], + ["punctuation.operator","."], + ["identifier","props"], + ["paren.quasi.end","}"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","x"], + ["keyword.operator.attribute-equals.xml","="], + ["paren.quasi.start","{"], + ["constant.numeric","1"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","2"], + ["paren.quasi.end","}"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","y"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"z{a}b"], + ["constant.language.escape.reference.xml","&"], + ["string.attribute-value.xml","\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","t"], + ["keyword.operator.attribute-equals.xml","="], + ["paren.quasi.start","{"] +],[ + ["start","jsxAttributes","jsxAttributes","jsx",1], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","a"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["paren.quasi.start","{"], + ["constant.numeric","2"], + ["paren.quasi.end","}"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + ["jsx",1], + ["text"," "], + ["paren.quasi.end","}"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + ["jsx",1], + ["string","1 "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","a"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["string"," "], + ["paren.quasi.start","{"], + ["text"," "], + ["keyword.operator","++"], + ["identifier","x"], + ["text"," "], + ["paren.quasi.end","}"], + ["string"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start", + ["storage.type","var"], + ["text"," "], + ["identifier","o"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","{"] +],[ + ["start","no_regex","start","string.quasi.start","string.quasi.start","no_regex"], + ["text"," "], + ["identifier","t"], + ["punctuation.operator",":"], + ["string.quasi.start","`"], + ["paren.quasi.start","${"], + ["paren.lparen","["], + ["paren.rparen","]"], + ["punctuation.operator","."], + ["identifier","map"], + ["paren.lparen","("], + ["identifier","x"], + ["text"," "], + ["storage.type","=>"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["#tmp","no_regex","start","no_regex","start","string.quasi.start","string.quasi.start","no_regex"], + ["text"," "], + ["keyword","return"], + ["text"," "], + ["identifier","x"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","})"], + ["paren.quasi.end","}"], + ["string.quasi.end","`"] +],[ + "start", + ["paren.rparen","}"], + ["punctuation.operator",";"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_json.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_json.json new file mode 100644 index 00000000..4420a740 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_json.json @@ -0,0 +1,412 @@ +[[ + "start", + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","\"query\""], + ["text",": "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","\"count\""], + ["text",": "], + ["constant.numeric","10"], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"created\""], + ["text",": "], + ["string","\"2011-06-21T08:10:46Z\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"lang\""], + ["text",": "], + ["string","\"en-US\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"results\""], + ["text",": "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","\"photo\""], + ["text",": "], + ["paren.lparen","["] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","\"farm\""], + ["text",": "], + ["string","\"6\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"id\""], + ["text",": "], + ["string","\"5855620975\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfamily\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfriend\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"ispublic\""], + ["text",": "], + ["string","\"1\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"owner\""], + ["text",": "], + ["string","\"32021554@N04\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"secret\""], + ["text",": "], + ["string","\"f1f5e8515d\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"server\""], + ["text",": "], + ["string","\"5110\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"title\""], + ["text",": "], + ["string","\"7087 bandit cat\""] +],[ + "start", + ["text"," "], + ["paren.rparen","}"], + ["text",","] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","\"farm\""], + ["text",": "], + ["string","\"4\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"id\""], + ["text",": "], + ["string","\"5856170534\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfamily\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfriend\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"ispublic\""], + ["text",": "], + ["string","\"1\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"owner\""], + ["text",": "], + ["string","\"32021554@N04\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"secret\""], + ["text",": "], + ["string","\"ff1efb2a6f\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"server\""], + ["text",": "], + ["string","\"3217\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"title\""], + ["text",": "], + ["string","\"6975 rusty cat\""] +],[ + "start", + ["text"," "], + ["paren.rparen","}"], + ["text",","] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","\"farm\""], + ["text",": "], + ["string","\"6\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"id\""], + ["text",": "], + ["string","\"5856172972\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfamily\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfriend\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"ispublic\""], + ["text",": "], + ["string","\"1\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"owner\""], + ["text",": "], + ["string","\"51249875@N03\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"secret\""], + ["text",": "], + ["string","\"6c6887347c\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"server\""], + ["text",": "], + ["string","\"5192\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"title\""], + ["text",": "], + ["string","\"watermarked-cats\""] +],[ + "start", + ["text"," "], + ["paren.rparen","}"], + ["text",","] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","\"farm\""], + ["text",": "], + ["string","\"6\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"id\""], + ["text",": "], + ["string","\"5856168328\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfamily\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfriend\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"ispublic\""], + ["text",": "], + ["string","\"1\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"owner\""], + ["text",": "], + ["string","\"32021554@N04\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"secret\""], + ["text",": "], + ["string","\"0c1cfdf64c\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"server\""], + ["text",": "], + ["string","\"5078\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"title\""], + ["text",": "], + ["string","\"7020 mandy cat\""] +],[ + "start", + ["text"," "], + ["paren.rparen","}"], + ["text",","] +],[ + "start", + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","\"farm\""], + ["text",": "], + ["string","\"3\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"id\""], + ["text",": "], + ["string","\"5856171774\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfamily\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"isfriend\""], + ["text",": "], + ["string","\"0\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"ispublic\""], + ["text",": "], + ["string","\"1\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"owner\""], + ["text",": "], + ["string","\"32021554@N04\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"secret\""], + ["text",": "], + ["string","\"7f5a3180ab\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"server\""], + ["text",": "], + ["string","\"2696\""], + ["text",","] +],[ + "start", + ["text"," "], + ["variable","\"title\""], + ["text",": "], + ["string","\"7448 bobby cat\""] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","]"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsoniq.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsoniq.json new file mode 100644 index 00000000..0f4ee6e9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsoniq.json @@ -0,0 +1,4 @@ +[[ + "[\"start\"]", + ["support.function","TODO"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsp.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsp.json new file mode 100644 index 00000000..7b0d2f4d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsp.json @@ -0,0 +1,435 @@ +[[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","html"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","body"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "js-start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.script.tag-name.xml","script"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "js-start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"abc\""], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["storage.type","function"], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["paren.lparen","{"] +],[ + "js-no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "css-start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.style.tag-name.xml","style"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "css-ruleset", + ["text"," "], + ["variable",".class"], + ["text"," "], + ["paren.lparen","{"] +],[ + "css-ruleset", + ["text"," "], + ["support.type","background"], + ["text",": "], + ["constant.numeric","#124356"], + ["text",";"] +],[ + "css-start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," Today's date: "], + ["meta.tag","<%"], + ["keyword.operator","="], + ["text"," "], + ["lparen","("], + ["keyword","new"], + ["text"," "], + ["identifier","java"], + ["text","."], + ["identifier","util"], + ["text","."], + ["identifier","Date"], + ["lparen","("], + ["rparen","))"], + ["text","."], + ["identifier","toLocaleString"], + ["lparen","("], + ["rparen",")"], + ["meta.tag","%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag","<%"], + ["keyword.operator","!"], + ["text"," "], + ["keyword","int"], + ["text"," "], + ["identifier","i"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["text","; "], + ["meta.tag","%>"] +],[ + "jsp-start", + ["text.xml"," "], + ["meta.tag",""] +],[ + "jsp-start", + ["text"," "], + ["keyword","int"], + ["text"," "], + ["identifier","j"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","10"], + ["text",";"] +],[ + "start", + ["text"," "], + ["meta.tag",""] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["comment","<%-- This is JSP comment --%>"] +],[ + "start", + ["text.xml"," "], + ["meta.tag","<%@"], + ["text"," "], + ["identifier","directive"], + ["text"," "], + ["identifier","attribute"], + ["keyword.operator","="], + ["string","\"value\""], + ["text"," "], + ["meta.tag","%>"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Select Languages:"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.form.tag-name.xml","form"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","ACTION"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"jspCheckBox.jsp\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.form.tag-name.xml","input"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","type"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"checkbox\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","name"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"id\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","value"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"Java\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml"," Java"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","BR"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.form.tag-name.xml","input"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","type"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"checkbox\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","name"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"id\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","value"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\".NET\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml"," .NET"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","BR"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.form.tag-name.xml","input"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","type"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"checkbox\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","name"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"id\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","value"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"PHP\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml"," PHP"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","BR"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.form.tag-name.xml","input"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","type"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"checkbox\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","name"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"id\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","value"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"C/C++\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml"," C/C++"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","BR"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.form.tag-name.xml","input"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","type"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"checkbox\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","name"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"id\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","value"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"PERL\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml"," PERL "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","BR"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.form.tag-name.xml","input"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","type"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"submit\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","value"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"Submit\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "jsp-start", + ["text.xml"," "], + ["meta.tag","<%"] +],[ + "jsp-start", + ["text"," "], + ["support.function","String"], + ["text"," "], + ["identifier","select"], + ["lparen","["], + ["rparen","]"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["variable.language","request"], + ["text","."], + ["identifier","getParameterValues"], + ["lparen","("], + ["string","\"id\""], + ["rparen",")"], + ["text","; "] +],[ + "jsp-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["lparen","("], + ["identifier","select"], + ["text"," "], + ["keyword.operator","!="], + ["text"," "], + ["constant.language","null"], + ["text"," "], + ["keyword.operator","&&"], + ["text"," "], + ["identifier","select"], + ["text","."], + ["identifier","length"], + ["text"," "], + ["keyword.operator","!="], + ["text"," "], + ["constant.numeric","0"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "jsp-start", + ["text"," "], + ["variable.language","out"], + ["text","."], + ["identifier","println"], + ["lparen","("], + ["string","\"You have selected: \""], + ["rparen",")"], + ["text",";"] +],[ + "jsp-start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["lparen","("], + ["keyword","int"], + ["text"," "], + ["identifier","i"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["text","; "], + ["identifier","i"], + ["text"," "], + ["keyword.operator","<"], + ["text"," "], + ["identifier","select"], + ["text","."], + ["identifier","length"], + ["text","; "], + ["identifier","i"], + ["keyword.operator","++"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "jsp-start", + ["text"," "], + ["variable.language","out"], + ["text","."], + ["identifier","println"], + ["lparen","("], + ["identifier","select"], + ["lparen","["], + ["identifier","i"], + ["rparen","])"], + ["text","; "] +],[ + "jsp-start", + ["text"," "], + ["rparen","}"] +],[ + "jsp-start", + ["text"," "], + ["rparen","}"] +],[ + "start", + ["text"," "], + ["meta.tag","%>"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsx.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsx.json new file mode 100644 index 00000000..d1a740b0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_jsx.json @@ -0,0 +1,51 @@ +[[ + "comment", + ["comment","/*EXPECTED"] +],[ + "comment", + ["comment","hello world!"] +],[ + "start", + ["comment","*/"] +],[ + "start", + ["keyword","class"], + ["text"," "], + ["language.support.class","Test"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","static"], + ["text"," "], + ["storage.type","function"], + ["text"," "], + ["entity.name.function","run"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["keyword","void"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["comment","// console.log(\"hello world!\");"] +],[ + "start", + ["text"," "], + ["keyword","log"], + ["text"," "], + ["string","\"hello world!\""], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_julia.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_julia.json new file mode 100644 index 00000000..5aaef6f9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_julia.json @@ -0,0 +1,111 @@ +[[ + "start", + ["keyword.control.julia","for"], + ["text"," op "], + ["keyword.operator.update.julia","="], + ["text"," ("], + ["keyword.operator.ternary.julia",":"], + ["keyword.operator.arithmetic.julia","+"], + ["text",", "], + ["keyword.operator.ternary.julia",":"], + ["keyword.operator.arithmetic.julia","*"], + ["text",", "], + ["keyword.operator.ternary.julia",":"], + ["keyword.operator.bitwise.julia","&"], + ["text",", "], + ["keyword.operator.ternary.julia",":"], + ["keyword.operator.bitwise.julia","|"], + ["text",", "], + ["keyword.operator.ternary.julia",":"], + ["keyword.operator.interpolation.julia","$"], + ["text",")"] +],[ + "start", + ["text"," "], + ["variable.macro.julia","@eval"], + ["text"," ("], + ["keyword.operator.interpolation.julia","$"], + ["text","op)(a,b,c) "], + ["keyword.operator.update.julia","="], + ["text"," ("], + ["keyword.operator.interpolation.julia","$"], + ["text","op)(("], + ["keyword.operator.interpolation.julia","$"], + ["text","op)(a,b),c)"] +],[ + "start", + ["keyword.control.julia","end"] +],[ + "start" +],[ + "start", + ["text","v "], + ["keyword.operator.update.julia","="], + ["text"," "], + ["variable","α"], + ["keyword.operator.transposed-variable.julia","'"], + ["text",";"] +],[ + "start", + ["keyword.other.julia","function"], + ["meta.function.julia"," "], + ["entity.name.function.julia","g"], + ["text","("], + ["text","x,y)"] +],[ + "start", + ["text"," "], + ["keyword.control.julia","return"], + ["text"," x "], + ["keyword.operator.arithmetic.julia","*"], + ["text"," y"] +],[ + "start", + ["text"," x "], + ["keyword.operator.arithmetic.julia","+"], + ["text"," y"] +],[ + "start", + ["keyword.control.julia","end"] +],[ + "start" +],[ + "start", + ["support.function.julia","cd"], + ["text","("], + ["punctuation.definition.string.begin.julia","\""], + ["string.quoted.double.julia","data"], + ["punctuation.definition.string.end.julia","\""], + ["text",") "], + ["keyword.control.julia","do"] +],[ + "start", + ["text"," "], + ["support.function.julia","open"], + ["text","("], + ["punctuation.definition.string.begin.julia","\""], + ["string.quoted.double.julia","outfile"], + ["punctuation.definition.string.end.julia","\""], + ["text",", "], + ["punctuation.definition.string.begin.julia","\""], + ["string.quoted.double.julia","w"], + ["punctuation.definition.string.end.julia","\""], + ["text",") "], + ["keyword.control.julia","do"], + ["text"," f"] +],[ + "start", + ["text"," "], + ["support.function.julia","write"], + ["text","("], + ["text","f, data)"] +],[ + "start", + ["text"," "], + ["keyword.control.julia","end"] +],[ + "start", + ["keyword.control.julia","end"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_kotlin.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_kotlin.json new file mode 100644 index 00000000..af188cf1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_kotlin.json @@ -0,0 +1,843 @@ +[[ + "start", + ["punctuation.definition.comment.kotlin","/*"], + ["comment.block.kotlin","Taken from http://try.kotlinlang.org/#/Examples/Longer%20examples/Life/Life.kt"], + ["punctuation.definition.comment.kotlin","*/"] +],[ + "punctuation.definition.comment.kotlin", + ["punctuation.definition.comment.kotlin","/*"], + ["comment.block.kotlin","*"] +],[ + "punctuation.definition.comment.kotlin", + ["comment.block.kotlin"," * This is a straightforward implementation of The Game of Life"] +],[ + "punctuation.definition.comment.kotlin", + ["comment.block.kotlin"," * See http://en.wikipedia.org/wiki/Conway's_Game_of_Life"] +],[ + "start", + ["comment.block.kotlin"," "], + ["punctuation.definition.comment.kotlin","*/"] +],[ + "start", + ["keyword.other.kotlin","package"], + ["text"," "], + ["entity.name.package.kotlin","life"] +],[ + "start" +],[ + "punctuation.definition.comment.kotlin", + ["punctuation.definition.comment.kotlin","/*"] +],[ + "punctuation.definition.comment.kotlin", + ["comment.block.kotlin"," * A field where cells live. Effectively immutable"] +],[ + "start", + ["comment.block.kotlin"," "], + ["punctuation.definition.comment.kotlin","*/"] +],[ + ["text7","text5"], + ["text","class"], + ["text"," "], + ["entity.name.type.class.kotlin","Field"], + ["text","("] +],[ + ["text7","text5"], + ["text"," "], + ["storage.modifier.kotlin","val"], + ["text"," "], + ["variable.parameter.function.kotlin","width"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",","] +],[ + ["text7","text5"], + ["text"," "], + ["storage.modifier.kotlin","val"], + ["text"," "], + ["variable.parameter.function.kotlin","height"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",","] +],[ + ["text7","text5"], + ["text"," "], + ["keyword.operator.arithmetic.kotlin","//"], + ["text"," "], + ["variable.parameter.function.kotlin","This"], + ["text"," "], + ["variable.parameter.function.kotlin","function"], + ["text"," "], + ["variable.parameter.function.kotlin","tells"], + ["text"," "], + ["variable.parameter.function.kotlin","the"], + ["text"," "], + ["variable.parameter.function.kotlin","constructor"], + ["text"," "], + ["variable.parameter.function.kotlin","which"], + ["text"," "], + ["variable.parameter.function.kotlin","cells"], + ["text"," "], + ["variable.parameter.function.kotlin","are"], + ["text"," "], + ["variable.parameter.function.kotlin","alive"] +],[ + "start", + ["text"," "], + ["keyword.operator.arithmetic.kotlin","//"], + ["text"," "], + ["keyword.control.kotlin","if"], + ["text"," "], + ["variable.parameter.function.kotlin","init"], + ["text","("], + ["variable.parameter.function.kotlin","i"], + ["text",", "], + ["variable.parameter.function.kotlin","j"], + ["text",") is true, the cell ("], + ["variable.parameter.function.kotlin","i"], + ["text",", "], + ["variable.parameter.function.kotlin","j"], + ["text",") is alive"] +],[ + "start", + ["text"," init"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," ("], + ["storage.type.buildin.kotlin","Int"], + ["text",", "], + ["storage.type.buildin.kotlin","Int"], + ["text",") "], + ["keyword.operator.declaration.kotlin","->"], + ["text"," "], + ["storage.type.buildin.kotlin","Boolean"] +],[ + "text", + ["text",") {"] +],[ + "text", + ["text"," "], + ["storage.modifier.kotlin","private"], + ["text"," "], + ["keyword.other.kotlin","val"], + ["text"," "], + ["entity.name.variable.kotlin","live"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," Array> "], + ["keyword.operator.assignment.kotlin","="], + ["text"," Array(height) { i "], + ["keyword.operator.declaration.kotlin","->"], + ["text"," Array(width) { j "], + ["keyword.operator.declaration.kotlin","->"], + ["text"," init(i, j) } }"] +],[ + "text" +],[ + ["text17","text"], + ["text"," "], + ["storage.modifier.kotlin","private"], + ["text"," "], + ["keyword.other.kotlin","fun"], + ["text"," "], + ["entity.name.function.kotlin","liveCount"], + ["text","("], + ["variable.parameter.function.kotlin","i"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",", "], + ["variable.parameter.function.kotlin","j"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",")"] +],[ + ["text3","keyword.operator.assignment.kotlin33","keyword.operator.assignment.kotlin33","text17","text17","text"], + ["text"," "], + ["keyword.operator.assignment.kotlin","="], + ["text"," "], + ["keyword.control.kotlin","if"], + ["text"," (i "], + ["storage.modifier.kotlin","in"], + ["text"," "], + ["constant.numeric.kotlin","0"], + ["keyword.operator.dot.kotlin",".."], + ["text","height "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text"," "], + ["keyword.operator.logical.kotlin","&&"] +],[ + ["text3","keyword.operator.assignment.kotlin33","keyword.operator.assignment.kotlin33","text17","text17","text"], + ["text"," j "], + ["storage.modifier.kotlin","in"], + ["text"," "], + ["constant.numeric.kotlin","0"], + ["keyword.operator.dot.kotlin",".."], + ["text","width "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text"," "], + ["keyword.operator.logical.kotlin","&&"] +],[ + ["text17","text"], + ["text"," live[i][j]) "], + ["constant.numeric.kotlin","1"], + ["text"," "], + ["keyword.control.kotlin","else"], + ["text"," "], + ["constant.numeric.kotlin","0"] +],[ + "text" +],[ + "text", + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," How many neighbors of (i, j) are alive?"] +],[ + ["keyword.operator.assignment.kotlin33","text17","text17","text"], + ["text"," "], + ["keyword.other.kotlin","fun"], + ["text"," "], + ["entity.name.function.kotlin","liveNeighbors"], + ["text","("], + ["variable.parameter.function.kotlin","i"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",", "], + ["variable.parameter.function.kotlin","j"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",") "], + ["keyword.operator.assignment.kotlin","="] +],[ + ["text17","text"], + ["text"," liveCount(i "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",", j "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",") "], + ["keyword.operator.arithmetic.kotlin","+"] +],[ + "text", + ["text"," liveCount("], + ["variable.parameter.function.kotlin","i"], + ["text"," "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["variable.parameter.function.kotlin","1"], + ["text",", "], + ["variable.parameter.function.kotlin","j"], + ["text",") +"] +],[ + "text", + ["text"," liveCount(i "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",", j "], + ["keyword.operator.arithmetic.kotlin","+"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",") "], + ["keyword.operator.arithmetic.kotlin","+"] +],[ + "text", + ["text"," liveCount(i, j "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",") "], + ["keyword.operator.arithmetic.kotlin","+"] +],[ + "text", + ["text"," liveCount(i, j "], + ["keyword.operator.arithmetic.kotlin","+"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",") "], + ["keyword.operator.arithmetic.kotlin","+"] +],[ + "text", + ["text"," liveCount(i "], + ["keyword.operator.arithmetic.kotlin","+"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",", j "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",") "], + ["keyword.operator.arithmetic.kotlin","+"] +],[ + "text", + ["text"," liveCount(i "], + ["keyword.operator.arithmetic.kotlin","+"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",", j) "], + ["keyword.operator.arithmetic.kotlin","+"] +],[ + "text", + ["text"," liveCount(i "], + ["keyword.operator.arithmetic.kotlin","+"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",", j "], + ["keyword.operator.arithmetic.kotlin","+"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",")"] +],[ + "text" +],[ + "text", + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," You can say field[i, j], and this function gets called"] +],[ + ["text17","text"], + ["text"," "], + ["storage.modifier.kotlin","operator"], + ["text"," "], + ["keyword.other.kotlin","fun"], + ["text"," "], + ["entity.name.function.kotlin","get"], + ["text","("], + ["variable.parameter.function.kotlin","i"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",", "], + ["variable.parameter.function.kotlin","j"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",") "], + ["keyword.operator.assignment.kotlin","="], + ["text"," live[i][j]"] +],[ + "text", + ["text","}"] +],[ + "text" +],[ + ["punctuation.definition.comment.kotlin","text"], + ["punctuation.definition.comment.kotlin","/*"], + ["comment.block.kotlin","*"] +],[ + ["punctuation.definition.comment.kotlin","text"], + ["comment.block.kotlin"," * This function takes the present state of the field"] +],[ + ["punctuation.definition.comment.kotlin","text"], + ["comment.block.kotlin"," * and returns a new field representing the next moment of time"] +],[ + "text", + ["comment.block.kotlin"," "], + ["punctuation.definition.comment.kotlin","*/"] +],[ + ["text22","text17","text17","text"], + ["keyword.other.kotlin","fun"], + ["text"," "], + ["entity.name.function.kotlin","next"], + ["text","("], + ["variable.parameter.function.kotlin","field"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," Field)"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," Field {"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," "], + ["keyword.control.kotlin","return"], + ["text"," Field(field"], + ["keyword.operator.dot.kotlin","."], + ["text","width, field"], + ["keyword.operator.dot.kotlin","."], + ["text","height) { i, j "], + ["keyword.operator.declaration.kotlin","->"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," "], + ["keyword.other.kotlin","val"], + ["text"," "], + ["entity.name.variable.kotlin","n"], + ["text"," "], + ["keyword.operator.assignment.kotlin","="], + ["text"," field"], + ["keyword.operator.dot.kotlin","."], + ["text","liveNeighbors(i, j)"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," "], + ["keyword.control.kotlin","if"], + ["text"," (field[i, j])"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," (i, j) is alive"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," n "], + ["storage.modifier.kotlin","in"], + ["text"," "], + ["constant.numeric.kotlin","2"], + ["keyword.operator.dot.kotlin",".."], + ["constant.numeric.kotlin","3"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," It remains alive iff it has 2 or 3 neighbors"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," "], + ["keyword.control.kotlin","else"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," (i, j) is dead"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," n "], + ["keyword.operator.comparison.kotlin","=="], + ["text"," "], + ["constant.numeric.kotlin","3"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," A new cell is born if there are 3 neighbors alive"] +],[ + ["text22","text17","text17","text"], + ["text"," }"] +],[ + "text", + ["text","}"] +],[ + "text" +],[ + "text", + ["punctuation.definition.comment.kotlin","/*"], + ["comment.block.kotlin","* A few colony examples here "], + ["punctuation.definition.comment.kotlin","*/"] +],[ + ["text22","text17","text17","text"], + ["keyword.other.kotlin","fun"], + ["text"," "], + ["entity.name.function.kotlin","main"], + ["text","("], + ["variable.parameter.function.kotlin","args"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," Array<"], + ["storage.type.buildin.kotlin","String"], + ["text",">) {"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," Simplistic demo"] +],[ + ["text22","text17","text17","text"], + ["text"," runGameOfLife("], + ["punctuation.definition.string.begin.kotlin","\""], + ["string.quoted.double.kotlin","***"], + ["punctuation.definition.string.end.kotlin","\""], + ["text",", "], + ["constant.numeric.kotlin","3"], + ["text",")"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," \"Star burst\""] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["text"," runGameOfLife("], + ["punctuation.definition.string.begin.kotlin","\"\"\""] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," _______"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," ___*___"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," __***__"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," ___*___"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," _______"] +],[ + ["text22","text17","text17","text"], + ["string.quoted.third.kotlin"," "], + ["punctuation.definition.string.end.kotlin","\"\"\""], + ["text",", "], + ["constant.numeric.kotlin","10"], + ["text",")"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," Stable colony"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["text"," runGameOfLife("], + ["punctuation.definition.string.begin.kotlin","\"\"\""] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," _____"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," __*__"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," _*_*_"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," __*__"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," _____"] +],[ + ["text22","text17","text17","text"], + ["string.quoted.third.kotlin"," "], + ["punctuation.definition.string.end.kotlin","\"\"\""], + ["text",", "], + ["constant.numeric.kotlin","3"], + ["text",")"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," Stable from the step 2"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["text"," runGameOfLife("], + ["punctuation.definition.string.begin.kotlin","\"\"\""] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," __**__"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," __**__"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," __**__"] +],[ + ["text22","text17","text17","text"], + ["string.quoted.third.kotlin"," "], + ["punctuation.definition.string.end.kotlin","\"\"\""], + ["text",", "], + ["constant.numeric.kotlin","3"], + ["text",")"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," Oscillating colony"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["text"," runGameOfLife("], + ["punctuation.definition.string.begin.kotlin","\"\"\""] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," __**____"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," __**____"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," ____**__"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," ____**__"] +],[ + ["text22","text17","text17","text"], + ["string.quoted.third.kotlin"," "], + ["punctuation.definition.string.end.kotlin","\"\"\""], + ["text",", "], + ["constant.numeric.kotlin","6"], + ["text",")"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," A fancier oscillating colony"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["text"," runGameOfLife("], + ["punctuation.definition.string.begin.kotlin","\"\"\""] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------------------"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------***---***---"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------------------"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -----*----*-*----*-"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -----*----*-*----*-"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -----*----*-*----*-"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------***---***---"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------------------"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------***---***---"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -----*----*-*----*-"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -----*----*-*----*-"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -----*----*-*----*-"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------------------"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------***---***---"] +],[ + ["punctuation.definition.string.begin.kotlin","text3","text3","text22","text22","text17","text17","text"], + ["string.quoted.third.kotlin"," -------------------"] +],[ + ["text22","text17","text17","text"], + ["string.quoted.third.kotlin"," "], + ["punctuation.definition.string.end.kotlin","\"\"\""], + ["text",", "], + ["constant.numeric.kotlin","10"], + ["text",")"] +],[ + "text", + ["text","}"] +],[ + "text" +],[ + "text", + ["punctuation.definition.comment.kotlin","//"], + ["comment.line.double-slash.kotlin"," UTILITIES"] +],[ + "text" +],[ + ["text22","text17","text17","text"], + ["keyword.other.kotlin","fun"], + ["text"," "], + ["entity.name.function.kotlin","runGameOfLife"], + ["text","("], + ["variable.parameter.function.kotlin","fieldText"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","String"], + ["text",", "], + ["variable.parameter.function.kotlin","steps"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","Int"], + ["text",") {"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["keyword.other.kotlin","var"], + ["text"," "], + ["entity.name.variable.kotlin","field"], + ["text"," "], + ["keyword.operator.assignment.kotlin","="], + ["text"," makeField(fieldText)"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," "], + ["keyword.control.kotlin","for"], + ["text"," (step "], + ["storage.modifier.kotlin","in"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["keyword.operator.dot.kotlin",".."], + ["text","steps) {"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," println("], + ["punctuation.definition.string.begin.kotlin","\""], + ["string.quoted.double.kotlin","Step: "], + ["variable.parameter.template.kotlin","$step"], + ["punctuation.definition.string.end.kotlin","\""], + ["text",")"] +],[ + ["text","text","text","text22","text22","text17","text17","text"], + ["text"," "], + ["keyword.control.kotlin","for"], + ["text"," (i "], + ["storage.modifier.kotlin","in"], + ["text"," "], + ["constant.numeric.kotlin","0"], + ["keyword.operator.dot.kotlin",".."], + ["text","field"], + ["keyword.operator.dot.kotlin","."], + ["text","height "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",") {"] +],[ + ["text","text","text","text","text","text22","text22","text17","text17","text"], + ["text"," "], + ["keyword.control.kotlin","for"], + ["text"," (j "], + ["storage.modifier.kotlin","in"], + ["text"," "], + ["constant.numeric.kotlin","0"], + ["keyword.operator.dot.kotlin",".."], + ["text","field"], + ["keyword.operator.dot.kotlin","."], + ["text","width "], + ["keyword.operator.arithmetic.kotlin","-"], + ["text"," "], + ["constant.numeric.kotlin","1"], + ["text",") {"] +],[ + ["text","text","text","text","text","text22","text22","text17","text17","text"], + ["text"," print("], + ["keyword.control.kotlin","if"], + ["text"," (field[i, j]) "], + ["punctuation.definition.string.begin.kotlin","\""], + ["string.quoted.double.kotlin","*"], + ["punctuation.definition.string.end.kotlin","\""], + ["text"," "], + ["keyword.control.kotlin","else"], + ["text"," "], + ["punctuation.definition.string.begin.kotlin","\""], + ["string.quoted.double.kotlin"," "], + ["punctuation.definition.string.end.kotlin","\""], + ["text",")"] +],[ + ["text","text","text","text22","text22","text17","text17","text"], + ["text"," }"] +],[ + ["text","text","text","text22","text22","text17","text17","text"], + ["text"," println("], + ["punctuation.definition.string.begin.kotlin","\""], + ["punctuation.definition.string.end.kotlin","\""], + ["text",")"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," }"] +],[ + ["text","text22","text22","text17","text17","text"], + ["text"," field "], + ["keyword.operator.assignment.kotlin","="], + ["text"," next(field)"] +],[ + ["text22","text17","text17","text"], + ["text"," }"] +],[ + "text", + ["text","}"] +],[ + "text" +],[ + ["text22","text17","text17","text"], + ["keyword.other.kotlin","fun"], + ["text"," "], + ["entity.name.function.kotlin","makeField"], + ["text","("], + ["variable.parameter.function.kotlin","s"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["storage.type.buildin.kotlin","String"], + ["text",")"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," Field {"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["keyword.other.kotlin","val"], + ["text"," "], + ["entity.name.variable.kotlin","lines"], + ["text"," "], + ["keyword.operator.assignment.kotlin","="], + ["text"," s"], + ["keyword.operator.dot.kotlin","."], + ["text","replace("], + ["punctuation.definition.string.begin.kotlin","\""], + ["string.quoted.double.kotlin"," "], + ["punctuation.definition.string.end.kotlin","\""], + ["text",", "], + ["punctuation.definition.string.begin.kotlin","\""], + ["punctuation.definition.string.end.kotlin","\""], + ["text",")"], + ["keyword.operator.dot.kotlin","."], + ["text","split("], + ["punctuation.definition.string.begin.kotlin","'"], + ["constant.character.escape.kotlin","\\n"], + ["punctuation.definition.string.end.kotlin","'"], + ["text",")"], + ["keyword.operator.dot.kotlin","."], + ["text","filter({ it"], + ["keyword.operator.dot.kotlin","."], + ["text","isNotEmpty() })"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["keyword.other.kotlin","val"], + ["text"," "], + ["entity.name.variable.kotlin","longestLine"], + ["text"," "], + ["keyword.operator.assignment.kotlin","="], + ["text"," lines"], + ["keyword.operator.dot.kotlin","."], + ["text","toList()"], + ["keyword.operator.dot.kotlin","."], + ["text","maxBy { it"], + ["keyword.operator.dot.kotlin","."], + ["text","length } ?"], + ["keyword.operator.declaration.kotlin",":"], + ["text"," "], + ["punctuation.definition.string.begin.kotlin","\""], + ["punctuation.definition.string.end.kotlin","\""] +],[ + ["text22","text17","text17","text"] +],[ + ["text22","text17","text17","text"], + ["text"," "], + ["keyword.control.kotlin","return"], + ["text"," Field(longestLine"], + ["keyword.operator.dot.kotlin","."], + ["text","length, lines"], + ["keyword.operator.dot.kotlin","."], + ["text","size) { i, j "], + ["keyword.operator.declaration.kotlin","->"], + ["text"," lines[i][j] "], + ["keyword.operator.comparison.kotlin","=="], + ["text"," "], + ["punctuation.definition.string.begin.kotlin","'"], + ["string.quoted.single.kotlin","*"], + ["punctuation.definition.string.end.kotlin","'"], + ["text"," }"] +],[ + "text", + ["text","}"] +],[ + "text" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_latex.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_latex.json new file mode 100644 index 00000000..52508e0d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_latex.json @@ -0,0 +1,127 @@ +[[ + "start", + ["keyword","\\usepackage"], + ["lparen","{"], + ["storage.type","amsmath"], + ["rparen","}"] +],[ + "start", + ["storage.type","\\title"], + ["lparen","{"], + ["storage.type","\\LaTeX"], + ["rparen","}"] +],[ + "start", + ["storage.type","\\date"], + ["lparen","{"], + ["rparen","}"] +],[ + "start", + ["storage.type","\\begin"], + ["lparen","{"], + ["variable.parameter","document"], + ["rparen","}"] +],[ + "start", + ["text"," "], + ["storage.type","\\maketitle"] +],[ + "start", + ["text"," "], + ["storage.type","\\LaTeX"], + ["lparen","{"], + ["rparen","}"], + ["text"," is a document preparation system for the "], + ["storage.type","\\TeX"], + ["lparen","{"], + ["rparen","}"] +],[ + "start", + ["text"," typesetting program. It offers programmable desktop publishing"] +],[ + "start", + ["text"," features and extensive facilities for automating most aspects of"] +],[ + "start", + ["text"," typesetting and desktop publishing, including numbering and"] +],[ + "start", + ["text"," cross-referencing, tables and figures, page layout, bibliographies,"] +],[ + "start", + ["text"," and much more. "], + ["storage.type","\\LaTeX"], + ["lparen","{"], + ["rparen","}"], + ["text"," was originally written in 1984 by Leslie"] +],[ + "start", + ["text"," Lamport and has become the dominant method for using "], + ["storage.type","\\TeX"], + ["text","; few"] +],[ + "start", + ["text"," people write in plain "], + ["storage.type","\\TeX"], + ["lparen","{"], + ["rparen","}"], + ["text"," anymore. The current version is"] +],[ + "start", + ["text"," "], + ["storage.type","\\LaTeXe"], + ["text","."] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["comment","% This is a comment; it will not be shown in the final output."] +],[ + "start", + ["text"," "], + ["comment","% The following shows a little of the typesetting power of LaTeX:"] +],[ + "start", + ["text"," "], + ["storage.type","\\begin"], + ["lparen","{"], + ["variable.parameter","align"], + ["rparen","}"] +],[ + "start", + ["text"," E &= mc^2 "], + ["constant.character.escape","\\\\"] +],[ + "start", + ["text"," m &= "], + ["storage.type","\\frac"], + ["lparen","{"], + ["text","m_0"], + ["rparen","}"], + ["lparen","{"], + ["storage.type","\\sqrt"], + ["lparen","{"], + ["text","1-"], + ["storage.type","\\frac"], + ["lparen","{"], + ["text","v^2"], + ["rparen","}"], + ["lparen","{"], + ["text","c^2"], + ["rparen","}}}"] +],[ + "start", + ["text"," "], + ["storage.type","\\end"], + ["lparen","{"], + ["variable.parameter","align"], + ["rparen","}"] +],[ + "start", + ["storage.type","\\end"], + ["lparen","{"], + ["variable.parameter","document"], + ["rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lean.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lean.json new file mode 100644 index 00000000..14ea8bb8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lean.json @@ -0,0 +1,143 @@ +[[ + "start", + ["keyword.control","import"], + ["text"," "], + ["identifier","logic"] +],[ + "start", + ["keyword.control","section"] +],[ + "start", + ["text"," "], + ["keyword.control","variables"], + ["text"," "], + ["paren.lparen","("], + ["identifier","A"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["storage.type","Type"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","("], + ["identifier","p"], + ["text"," "], + ["identifier","q"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","A"], + ["text"," "], + ["operator","→"], + ["text"," "], + ["storage.type","Prop"], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword.control","example"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["paren.lparen","("], + ["operator","∀"], + ["identifier","x"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","A"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","p"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["operator","∧"], + ["text"," "], + ["identifier","q"], + ["text"," "], + ["identifier","x"], + ["paren.rparen",")"], + ["text"," "], + ["operator","→"], + ["text"," "], + ["operator","∀"], + ["identifier","y"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","A"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","p"], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["operator",":="] +],[ + "start", + ["text"," "], + ["keyword.control","assume"], + ["text"," "], + ["identifier","H"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["operator","∀"], + ["identifier","x"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","A"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","p"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["operator","∧"], + ["text"," "], + ["identifier","q"], + ["text"," "], + ["identifier","x"], + ["punctuation.operator",","] +],[ + "start", + ["text"," "], + ["keyword.control","take"], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","A"], + ["punctuation.operator",","] +],[ + "start", + ["text"," "], + ["keyword.control","show"], + ["text"," "], + ["identifier","p"], + ["text"," "], + ["identifier","y"], + ["punctuation.operator",","], + ["text"," "], + ["keyword.control","from"], + ["text"," "], + ["identifier","and"], + ["punctuation.operator","."], + ["identifier","elim_left"], + ["text"," "], + ["paren.lparen","("], + ["identifier","H"], + ["text"," "], + ["identifier","y"], + ["paren.rparen",")"] +],[ + "start", + ["keyword.control","end"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_less.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_less.json new file mode 100644 index 00000000..5e7f60bf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_less.json @@ -0,0 +1,224 @@ +[[ + "start", + ["comment","/* styles.less */"] +],[ + "start" +],[ + "start", + ["variable","@base"], + ["text",": "], + ["constant.numeric","#f938ab"], + ["text",";"] +],[ + "start" +],[ + "start", + ["variable.language",".box-shadow"], + ["paren.lparen","("], + ["variable","@style"], + ["text",", "], + ["variable","@c"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","when"], + ["text"," "], + ["paren.lparen","("], + ["support.function","iscolor"], + ["paren.lparen","("], + ["variable","@c"], + ["paren.rparen","))"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.type.property","box-shadow"], + ["text",":"], + ["text"," "], + ["variable","@style"], + ["text"," "], + ["variable","@c"], + ["text",";"] +],[ + "start", + ["text"," "], + ["support.type.unknownProperty","-webkit-box-shadow"], + ["text",":"], + ["text"," "], + ["variable","@style"], + ["text"," "], + ["variable","@c"], + ["text",";"] +],[ + "start", + ["text"," "], + ["support.type.unknownProperty","-moz-box-shadow"], + ["text",":"], + ["text"," "], + ["variable","@style"], + ["text"," "], + ["variable","@c"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start", + ["variable.language",".box-shadow"], + ["paren.lparen","("], + ["variable","@style"], + ["text",", "], + ["variable","@alpha"], + ["text",": "], + ["constant.numeric","50"], + ["keyword","%"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","when"], + ["text"," "], + ["paren.lparen","("], + ["support.function","isnumber"], + ["paren.lparen","("], + ["variable","@alpha"], + ["paren.rparen","))"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable.language",".box-shadow"], + ["paren.lparen","("], + ["variable","@style"], + ["text",", "], + ["support.function","rgba"], + ["paren.lparen","("], + ["constant.numeric","0"], + ["text",", "], + ["constant.numeric","0"], + ["text",", "], + ["constant.numeric","0"], + ["text",", "], + ["variable","@alpha"], + ["paren.rparen","))"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["comment","// Box styles"] +],[ + "start", + ["variable.language",".box"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "] +],[ + "start", + ["text"," "], + ["support.type.property","color"], + ["text",":"], + ["text"," "], + ["support.function","saturate"], + ["paren.lparen","("], + ["variable","@base"], + ["text",", "], + ["constant.numeric","5"], + ["keyword","%"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text"," "], + ["support.type.property","border-color"], + ["text",":"], + ["text"," "], + ["support.function","lighten"], + ["paren.lparen","("], + ["variable","@base"], + ["text",", "], + ["constant.numeric","30"], + ["keyword","%"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["identifier","div"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["variable.language",".box-shadow"], + ["paren.lparen","("], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","5"], + ["keyword","px"], + ["text",", "], + ["constant.numeric","30"], + ["keyword","%"], + ["paren.rparen",")"], + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["identifier","a"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.type.property","color"], + ["text",":"], + ["text"," "], + ["variable","@base"], + ["text",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","&"], + ["variable.language",":hover"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.type.property","color"], + ["text",":"], + ["text"," "], + ["support.function","lighten"], + ["paren.lparen","("], + ["variable","@base"], + ["text",", "], + ["constant.numeric","50"], + ["keyword","%"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_liquid.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_liquid.json new file mode 100644 index 00000000..30d003cb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_liquid.json @@ -0,0 +1,551 @@ +[[ + "start", + ["text.xml","The following examples can be found in full at http://liquidmarkup.org/"] +],[ + "start" +],[ + "start", + ["text.xml","Liquid is an extraction from the e-commerce system Shopify."] +],[ + "start", + ["text.xml","Shopify powers many thousands of e-commerce stores which all call for unique designs."] +],[ + "start", + ["text.xml","For this we developed Liquid which allows our customers complete design freedom while"] +],[ + "start", + ["text.xml","maintaining the integrity of our servers."] +],[ + "start" +],[ + "start", + ["text.xml","Liquid has been in production use since June 2006 and is now used by many other"] +],[ + "start", + ["text.xml","hosted web applications."] +],[ + "start" +],[ + "start", + ["text.xml","It was developed for usage in Ruby on Rails web applications and integrates seamlessly"] +],[ + "start", + ["text.xml","as a plugin but it also works excellently as a stand alone library."] +],[ + "start" +],[ + "start", + ["text.xml","Here's what it looks like:"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","ul"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"products\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","for"], + ["text"," "], + ["identifier","product"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["identifier","products"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","li"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["variable","{{"], + ["text"," "], + ["identifier","product"], + ["text","."], + ["identifier","title"], + ["text"," "], + ["variable","}}"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," Only "], + ["variable","{{"], + ["text"," "], + ["identifier","product"], + ["text","."], + ["identifier","price"], + ["text"," | "], + ["identifier","format_as_money"], + ["text"," "], + ["variable","}}"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["variable","{{"], + ["text"," "], + ["identifier","product"], + ["text","."], + ["identifier","description"], + ["text"," | "], + ["identifier","prettyprint"], + ["text"," | "], + ["support.function","truncate"], + ["text",": "], + ["constant.numeric","200"], + ["text"," "], + ["variable","}}"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","endfor"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start" +],[ + "start", + ["text.xml","Some more features include:"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Filters"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml"," The word \"tobi\" in uppercase: "], + ["variable","{{"], + ["text"," "], + ["string","'tobi'"], + ["text"," | "], + ["support.function","upcase"], + ["text"," "], + ["variable","}}"], + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","The word \"tobi\" has "], + ["variable","{{"], + ["text"," "], + ["string","'tobi'"], + ["text"," | "], + ["support.function","size"], + ["text"," "], + ["variable","}}"], + ["text.xml"," letters! "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Change \"Hello world\" to \"Hi world\": "], + ["variable","{{"], + ["text"," "], + ["string","'Hello world'"], + ["text"," | "], + ["support.function","replace"], + ["text",": "], + ["string","'Hello'"], + ["text",", "], + ["string","'Hi'"], + ["text"," "], + ["variable","}}"], + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","The date today is "], + ["variable","{{"], + ["text"," "], + ["string","'now'"], + ["text"," | "], + ["support.function","date"], + ["text",": "], + ["string","\"%Y %b %d\""], + ["text"," "], + ["variable","}}"], + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","If"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","if"], + ["text"," "], + ["identifier","user"], + ["text","."], + ["identifier","name"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["string","'tobi'"], + ["text"," "], + ["identifier","or"], + ["text"," "], + ["identifier","user"], + ["text","."], + ["identifier","name"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["string","'marc'"], + ["text"," "], + ["variable","%}"], + ["text.xml"," "] +],[ + "start", + ["text.xml"," hi marc or tobi"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","endif"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Case"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","case"], + ["text"," "], + ["identifier","template"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","when"], + ["text"," "], + ["string","'index'"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," Welcome"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","when"], + ["text"," "], + ["string","'product'"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," "], + ["variable","{{"], + ["text"," "], + ["identifier","product"], + ["text","."], + ["identifier","vendor"], + ["text"," | "], + ["identifier","link_to_vendor"], + ["text"," "], + ["variable","}}"], + ["text.xml"," / "], + ["variable","{{"], + ["text"," "], + ["identifier","product"], + ["text","."], + ["identifier","title"], + ["text"," "], + ["variable","}}"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," "], + ["variable","{{"], + ["text"," "], + ["identifier","page_title"], + ["text"," "], + ["variable","}}"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","endcase"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","For Loops"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","for"], + ["text"," "], + ["identifier","item"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["identifier","array"], + ["text"," "], + ["variable","%}"], + ["text.xml"," "] +],[ + "start", + ["text.xml"," "], + ["variable","{{"], + ["text"," "], + ["identifier","item"], + ["text"," "], + ["variable","}}"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","endfor"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Tables"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","tablerow"], + ["text"," "], + ["identifier","item"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["identifier","items"], + ["text"," "], + ["identifier","cols"], + ["text",": "], + ["constant.numeric","3"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable.language","tablerowloop"], + ["text","."], + ["identifier","col_first"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," First column: "], + ["variable","{{"], + ["text"," "], + ["identifier","item"], + ["text","."], + ["identifier","variable"], + ["text"," "], + ["variable","}}"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," Different column: "], + ["variable","{{"], + ["text"," "], + ["identifier","item"], + ["text","."], + ["identifier","variable"], + ["text"," "], + ["variable","}}"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","endif"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["text.xml"," "], + ["variable","{%"], + ["text"," "], + ["keyword","endtablerow"], + ["text"," "], + ["variable","%}"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lisp.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lisp.json new file mode 100644 index 00000000..2e70a555 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lisp.json @@ -0,0 +1,248 @@ +[[ + "start", + ["text","("], + ["storage.type.function-type.lisp","defun"], + ["text"," "], + ["entity.name.function.lisp","prompt-for-cd"], + ["text"," ()"] +],[ + "start", + ["text"," "], + ["string","\"Prompts"] +],[ + "start", + ["text"," "], + ["identifier","for"], + ["text"," "], + ["identifier","CD"], + ["text","\""] +],[ + "start", + ["text"," ("], + ["identifier","prompt"], + ["text","-"], + ["identifier","read"], + ["text"," "], + ["string","\"Title\""], + ["text"," "], + ["constant.numeric","1.53"], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text","/"], + ["constant.numeric","4"], + ["text"," "], + ["constant.numeric","1.7"], + ["text"," "], + ["constant.numeric","1.7e0"], + ["text"," "], + ["constant.numeric","2.9E-4"], + ["text"," "], + ["constant.numeric","+42"], + ["text"," "], + ["constant.numeric","-7"], + ["text"," "], + ["punctuation.definition.constant.character.lisp","#"], + ["constant.character.lisp","b001"], + ["text"," "], + ["punctuation.definition.constant.character.lisp","#"], + ["constant.character.lisp","b001/100"], + ["text"," "], + ["punctuation.definition.constant.character.lisp","#"], + ["constant.character.lisp","o777"], + ["text"," "], + ["punctuation.definition.constant.character.lisp","#"], + ["constant.character.lisp","O777"], + ["text"," "], + ["punctuation.definition.constant.character.lisp","#"], + ["constant.character.lisp","xabc55"], + ["text"," "], + ["punctuation.definition.constant.character.lisp","#"], + ["constant.character.lisp","c"], + ["text","("], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","-5.6"], + ["text","))"] +],[ + "start", + ["text"," ("], + ["identifier","prompt"], + ["text","-"], + ["identifier","read"], + ["text"," "], + ["string","\"Artist\""], + ["text"," &"], + ["identifier","rest"], + ["text",")"] +],[ + "start", + ["text"," ("], + ["keyword.operator","or"], + ["text"," ("], + ["identifier","parse"], + ["text","-"], + ["identifier","integer"], + ["text"," ("], + ["identifier","prompt"], + ["text","-"], + ["identifier","read"], + ["text"," "], + ["string","\"Rating\""], + ["text",") :"], + ["identifier","junk"], + ["text","-"], + ["identifier","allowed"], + ["text"," "], + ["support.function","t"], + ["text",") "], + ["constant.numeric","0"], + ["text",")"] +],[ + "start", + ["text"," ("], + ["keyword.control","if"], + ["text"," "], + ["identifier","x"], + ["text"," ("], + ["support.function","format"], + ["text"," "], + ["support.function","t"], + ["text"," "], + ["string","\"yes\""], + ["text",") ("], + ["support.function","format"], + ["text"," "], + ["support.function","t"], + ["text"," "], + ["string","\"no\""], + ["text"," "], + ["constant.language","nil"], + ["text",") "], + ["comment",";and here comment"] +],[ + "start", + ["text"," ) "], + ["constant.numeric","0xFFLL"], + ["text"," "], + ["constant.numeric","-23ull"] +],[ + "start", + ["text"," "], + ["comment",";; second line comment"] +],[ + "start", + ["text"," '(+ "], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text",")"] +],[ + "start", + ["text"," ("], + ["identifier","defvar"], + ["text"," "], + ["punctuation.definition.variable.lisp","*"], + ["variable.other.global.lisp","lines"], + ["punctuation.definition.variable.lisp","*"], + ["text",") "], + ["comment","; list of all lines"] +],[ + "start", + ["text"," ("], + ["identifier","position"], + ["text","-"], + ["keyword.control","if"], + ["text","-"], + ["identifier","not"], + ["text"," "], + ["punctuation.definition.constant.character.lisp","#"], + ["constant.character.lisp","'sys::whitespacep"], + ["text"," "], + ["identifier","line"], + ["text"," :"], + ["identifier","start"], + ["text"," "], + ["identifier","beg"], + ["text","))"] +],[ + "start", + ["text"," ("], + ["support.function","quote"], + ["text"," ("], + ["identifier","privet"], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["constant.numeric","3"], + ["text","))"] +],[ + "start", + ["text"," '("], + ["identifier","hello"], + ["text"," "], + ["identifier","world"], + ["text",")"] +],[ + "start", + ["text"," (* "], + ["constant.numeric","5"], + ["text"," "], + ["constant.numeric","7"], + ["text",")"] +],[ + "start", + ["text"," ("], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["constant.numeric","34"], + ["text"," "], + ["constant.numeric","5"], + ["text",")"] +],[ + "start", + ["text"," (:"], + ["identifier","use"], + ["text"," "], + ["string","\"aaaa\""], + ["text",")"] +],[ + "start", + ["text"," ("], + ["keyword.control","let"], + ["text"," (("], + ["identifier","x"], + ["text"," "], + ["constant.numeric","10"], + ["text",") ("], + ["identifier","y"], + ["text"," "], + ["constant.numeric","20"], + ["text","))"] +],[ + "start", + ["text"," ("], + ["identifier","print"], + ["text"," (+ "], + ["identifier","x"], + ["text"," "], + ["identifier","y"], + ["text","))"] +],[ + "start", + ["text"," ) "], + ["support.function","LAmbDa"] +],[ + "start" +],[ + "start", + ["text"," "], + ["string","\"asdad"], + ["constant.character.escape.lisp","\\0"], + ["string","eqweqe\""] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_livescript.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_livescript.json new file mode 100644 index 00000000..c2bd83df --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_livescript.json @@ -0,0 +1,6 @@ +[[ + "start", + ["comment","# comment"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_logiql.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_logiql.json new file mode 100644 index 00000000..5f7eda49 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_logiql.json @@ -0,0 +1,190 @@ +[[ + "start", + ["comment.single","// ancestors"] +],[ + "start", + ["entity.name","parentof"], + ["text","("], + ["string","\"douglas\""], + ["keyword.other",","], + ["text"," "], + ["string","\"john\""], + ["text",")"], + ["keyword.end","."] +],[ + "start", + ["entity.name","parentof"], + ["text","("], + ["string","\"john\""], + ["keyword.other",","], + ["text"," "], + ["string","\"bob\""], + ["text",")"], + ["keyword.end","."] +],[ + "start", + ["entity.name","parentof"], + ["text","("], + ["string","\"bob\""], + ["keyword.other",","], + ["text"," "], + ["string","\"ebbon\""], + ["text",")"], + ["keyword.end","."] +],[ + "start" +],[ + "start", + ["entity.name","parentof"], + ["text","("], + ["string","\"douglas\""], + ["keyword.other",","], + ["text"," "], + ["string","\"jane\""], + ["text",")"], + ["keyword.end","."] +],[ + "start", + ["entity.name","parentof"], + ["text","("], + ["string","\"jane\""], + ["keyword.other",","], + ["text"," "], + ["string","\"jan\""], + ["text",")"], + ["keyword.end","."] +],[ + "start" +],[ + "start", + ["entity.name","ancestorof"], + ["text","("], + ["variable.parameter","A"], + ["keyword.other",","], + ["text"," "], + ["variable.parameter","B"], + ["text",") "], + ["keyword.start","<-"], + ["text"," "], + ["entity.name","parentof"], + ["text","("], + ["variable.parameter","A"], + ["keyword.other",","], + ["text"," "], + ["variable.parameter","B"], + ["text",")"], + ["keyword.end","."] +],[ + "start", + ["entity.name","ancestorof"], + ["text","("], + ["variable.parameter","A"], + ["keyword.other",","], + ["text"," "], + ["variable.parameter","C"], + ["text",") "], + ["keyword.start","<-"], + ["text"," "], + ["entity.name","ancestorof"], + ["text","("], + ["variable.parameter","A"], + ["keyword.other",","], + ["text"," "], + ["variable.parameter","B"], + ["text",")"], + ["keyword.other",","], + ["text"," "], + ["entity.name","parentof"], + ["text","("], + ["variable.parameter","B"], + ["keyword.other",","], + ["variable.parameter","C"], + ["text",")"], + ["keyword.end","."] +],[ + "start" +],[ + "start", + ["entity.name","grandparentof"], + ["text","("], + ["variable.parameter","A"], + ["keyword.other",","], + ["text"," "], + ["variable.parameter","B"], + ["text",") "], + ["keyword.start","<-"], + ["text"," "], + ["entity.name","parentof"], + ["text","("], + ["variable.parameter","A"], + ["keyword.other",","], + ["text"," "], + ["variable.parameter","C"], + ["text",")"], + ["keyword.other",","], + ["text"," "], + ["entity.name","parentof"], + ["text","("], + ["variable.parameter","C"], + ["keyword.other",","], + ["text"," "], + ["variable.parameter","B"], + ["text",")"], + ["keyword.end","."] +],[ + "start" +],[ + "start", + ["entity.name","cousins"], + ["text","("], + ["variable.parameter","A"], + ["keyword.other",","], + ["variable.parameter","B"], + ["text",") "], + ["keyword.start","<-"], + ["text"," "], + ["entity.name","grandparentof"], + ["text","("], + ["variable.parameter","C"], + ["keyword.other",","], + ["variable.parameter","A"], + ["text",")"], + ["keyword.other",","], + ["text"," "], + ["entity.name","grandparentof"], + ["text","("], + ["variable.parameter","C"], + ["keyword.other",","], + ["variable.parameter","B"], + ["text",")"], + ["keyword.end","."] +],[ + "start" +],[ + "start", + ["entity.name","parentof"], + ["text","["], + ["entity.name.type.logicblox","`arg"], + ["text","]("], + ["variable.parameter","A"], + ["keyword.other",","], + ["text"," "], + ["variable.parameter","B"], + ["text",") "], + ["keyword.start","->"], + ["text"," "], + ["entity.name","int"], + ["text","["], + ["constant.numeric","32"], + ["text","]("], + ["variable.parameter","A"], + ["text",")"], + ["keyword.other",","], + ["text"," "], + ["keyword.other","!"], + ["entity.name","string"], + ["text","("], + ["variable.parameter","B"], + ["text",")"], + ["keyword.end","."] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lsl.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lsl.json new file mode 100644 index 00000000..2248a607 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lsl.json @@ -0,0 +1,503 @@ +[[ + "comment", + ["comment.block.begin.lsl","/*"] +],[ + "comment", + ["comment.block.lsl"," Testing syntax highlighting"] +],[ + "comment", + ["comment.block.lsl"," of Ace Editor"] +],[ + "comment", + ["comment.block.lsl"," for the Linden Scripting Language"] +],[ + "start", + ["comment.block.end.lsl","*/"] +],[ + "start" +],[ + "start", + ["storage.type.lsl","integer"], + ["text.lsl"," "], + ["identifier","someIntNormal"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.numeric.lsl","3672"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["storage.type.lsl","integer"], + ["text.lsl"," "], + ["identifier","someIntHex"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.numeric.lsl","0x00000000"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["storage.type.lsl","integer"], + ["text.lsl"," "], + ["identifier","someIntMath"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.language.float.lsl","PI_BY_TWO"], + ["punctuation.operator.lsl",";"] +],[ + "start" +],[ + "start", + ["storage.type.lsl","integer"], + ["text.lsl"," "], + ["invalid.illegal.lsl","event"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.numeric.lsl","5673"], + ["punctuation.operator.lsl",";"], + ["text.lsl"," "], + ["comment.line.double-slash.lsl","// invalid.illegal"] +],[ + "start" +],[ + "start", + ["storage.type.lsl","key"], + ["text.lsl"," "], + ["identifier","someKeyTexture"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.language.string.lsl","TEXTURE_DEFAULT"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["storage.type.lsl","string"], + ["text.lsl"," "], + ["identifier","someStringSpecial"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.language.string.lsl","EOF"], + ["punctuation.operator.lsl",";"] +],[ + "start" +],[ + "start", + ["identifier","some_user_defined_function_without_return_type"], + ["paren.lparen.lsl","("], + ["storage.type.lsl","string"], + ["text.lsl"," "], + ["identifier","inputAsString"], + ["paren.rparen.lsl",")"] +],[ + "start", + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["support.function.lsl","llSay"], + ["paren.lparen.lsl","("], + ["constant.language.integer.lsl","PUBLIC_CHANNEL"], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["identifier","inputAsString"], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["paren.rparen.lsl","}"] +],[ + "start" +],[ + "start", + ["storage.type.lsl","string"], + ["text.lsl"," "], + ["identifier","user_defined_function_returning_a_string"], + ["paren.lparen.lsl","("], + ["storage.type.lsl","key"], + ["text.lsl"," "], + ["identifier","inputAsKey"], + ["paren.rparen.lsl",")"] +],[ + "start", + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["keyword.control.lsl","return"], + ["text.lsl"," "], + ["paren.lparen.lsl","("], + ["storage.type.lsl","string"], + ["paren.rparen.lsl",")"], + ["identifier","inputAsKey"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["paren.rparen.lsl","}"] +],[ + "start" +],[ + "start", + ["entity.name.state.lsl","default"] +],[ + "start", + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["support.function.event.lsl","state_entry"], + ["paren.lparen.lsl","("], + ["paren.rparen.lsl",")"] +],[ + "start", + ["text.lsl"," "], + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["storage.type.lsl","key"], + ["text.lsl"," "], + ["identifier","someKey"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.language.string.lsl","NULL_KEY"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["identifier","someKey"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["support.function.lsl","llGetOwner"], + ["paren.lparen.lsl","("], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["storage.type.lsl","string"], + ["text.lsl"," "], + ["identifier","someString"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["identifier","user_defined_function_returning_a_string"], + ["paren.lparen.lsl","("], + ["identifier","someKey"], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["identifier","some_user_defined_function_without_return_type"], + ["paren.lparen.lsl","("], + ["identifier","someString"], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["paren.rparen.lsl","}"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["support.function.event.lsl","touch_start"], + ["paren.lparen.lsl","("], + ["storage.type.lsl","integer"], + ["text.lsl"," "], + ["identifier","num_detected"], + ["paren.rparen.lsl",")"] +],[ + "start", + ["text.lsl"," "], + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["storage.type.lsl","list"], + ["text.lsl"," "], + ["identifier","agentsInRegion"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["support.function.lsl","llGetAgentList"], + ["paren.lparen.lsl","("], + ["constant.language.integer.lsl","AGENT_LIST_REGION"], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["paren.lparen.lsl","["], + ["paren.rparen.lsl","])"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["storage.type.lsl","integer"], + ["text.lsl"," "], + ["identifier","numOfAgents"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["support.function.lsl","llGetListLength"], + ["paren.lparen.lsl","("], + ["identifier","agentsInRegion"], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["storage.type.lsl","integer"], + ["text.lsl"," "], + ["identifier","index"], + ["punctuation.operator.lsl",";"], + ["text.lsl"," "], + ["comment.line.double-slash.lsl","// defaults to 0"] +],[ + "start", + ["text.lsl"," "], + ["keyword.control.lsl","for"], + ["text.lsl"," "], + ["paren.lparen.lsl","("], + ["punctuation.operator.lsl",";"], + ["text.lsl"," "], + ["identifier","index"], + ["text.lsl"," "], + ["keyword.operator.lsl","<="], + ["text.lsl"," "], + ["identifier","numOfAgents"], + ["text.lsl"," "], + ["keyword.operator.lsl","-"], + ["text.lsl"," "], + ["constant.numeric.lsl","1"], + ["punctuation.operator.lsl",";"], + ["text.lsl"," "], + ["identifier","index"], + ["keyword.operator.lsl","++"], + ["paren.rparen.lsl",")"], + ["text.lsl"," "], + ["comment.line.double-slash.lsl","// for each agent in region"] +],[ + "start", + ["text.lsl"," "], + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["support.function.lsl","llRegionSayTo"], + ["paren.lparen.lsl","("], + ["support.function.lsl","llList2Key"], + ["paren.lparen.lsl","("], + ["identifier","agentsInRegion"], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["identifier","index"], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["constant.language.integer.lsl","PUBLIC_CHANNEL"], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["string.quoted.double.lsl.start","\""], + ["string.quoted.double.lsl","Hello, Avatar!"], + ["string.quoted.double.lsl.end","\""], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["paren.rparen.lsl","}"] +],[ + "start", + ["text.lsl"," "], + ["paren.rparen.lsl","}"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["support.function.event.lsl","touch_end"], + ["paren.lparen.lsl","("], + ["storage.type.lsl","integer"], + ["text.lsl"," "], + ["identifier","num_detected"], + ["paren.rparen.lsl",")"] +],[ + "start", + ["text.lsl"," "], + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["identifier","someIntNormal"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.numeric.lsl","3672"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["identifier","someIntHex"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.numeric.lsl","0x00000000"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["identifier","someIntMath"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.language.float.lsl","PI_BY_TWO"], + ["punctuation.operator.lsl",";"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["invalid.illegal.lsl","event"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.numeric.lsl","5673"], + ["punctuation.operator.lsl",";"], + ["text.lsl"," "], + ["comment.line.double-slash.lsl","// invalid.illegal"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["identifier","someKeyTexture"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.language.string.lsl","TEXTURE_DEFAULT"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["identifier","someStringSpecial"], + ["text.lsl"," "], + ["keyword.operator.lsl","="], + ["text.lsl"," "], + ["constant.language.string.lsl","EOF"], + ["punctuation.operator.lsl",";"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["reserved.godmode.lsl","llSetInventoryPermMask"], + ["paren.lparen.lsl","("], + ["string.quoted.double.lsl.start","\""], + ["string.quoted.double.lsl","some item"], + ["string.quoted.double.lsl.end","\""], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["constant.language.integer.lsl","MASK_NEXT"], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["constant.language.integer.lsl","PERM_ALL"], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"], + ["text.lsl"," "], + ["comment.line.double-slash.lsl","// reserved.godmode"] +],[ + "start" +],[ + "start", + ["text.lsl"," "], + ["support.function.lsl","llWhisper"], + ["paren.lparen.lsl","("], + ["constant.language.integer.lsl","PUBLIC_CHANNEL"], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["string.quoted.double.lsl.start","\""], + ["string.quoted.double.lsl","Leaving "], + ["constant.character.escape.lsl","\\\""], + ["string.quoted.double.lsl","default"], + ["constant.character.escape.lsl","\\\""], + ["string.quoted.double.lsl"," now..."], + ["string.quoted.double.lsl.end","\""], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["entity.name.state.lsl","state other"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["paren.rparen.lsl","}"] +],[ + "start", + ["paren.rparen.lsl","}"] +],[ + "start" +],[ + "start", + ["entity.name.state.lsl","state other"] +],[ + "start", + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["support.function.event.lsl","state_entry"], + ["paren.lparen.lsl","("], + ["paren.rparen.lsl",")"] +],[ + "start", + ["text.lsl"," "], + ["paren.lparen.lsl","{"] +],[ + "start", + ["text.lsl"," "], + ["support.function.lsl","llWhisper"], + ["paren.lparen.lsl","("], + ["constant.language.integer.lsl","PUBLIC_CHANNEL"], + ["punctuation.operator.lsl",","], + ["text.lsl"," "], + ["string.quoted.double.lsl.start","\""], + ["string.quoted.double.lsl","Entered "], + ["constant.character.escape.lsl","\\\""], + ["string.quoted.double.lsl","state other"], + ["constant.character.escape.lsl","\\\""], + ["string.quoted.double.lsl",", returning to "], + ["constant.character.escape.lsl","\\\""], + ["string.quoted.double.lsl","default"], + ["constant.character.escape.lsl","\\\""], + ["string.quoted.double.lsl"," again..."], + ["string.quoted.double.lsl.end","\""], + ["paren.rparen.lsl",")"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["entity.name.state.lsl","state default"], + ["punctuation.operator.lsl",";"] +],[ + "start", + ["text.lsl"," "], + ["paren.rparen.lsl","}"] +],[ + "start", + ["paren.rparen.lsl","}"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lua.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lua.json new file mode 100644 index 00000000..cc6d8493 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lua.json @@ -0,0 +1,348 @@ +[[ + ["bracketedComment",2,"start"], + ["comment","--[[--"] +],[ + ["bracketedComment",2,"start"], + ["comment","num_args takes in 5.1 byte code and extracts the number of arguments"] +],[ + ["bracketedComment",2,"start"], + ["comment","from its function header."] +],[ + "start", + ["comment","--]]--"] +],[ + "start" +],[ + "start", + ["keyword","function"], + ["text"," "], + ["identifier","int"], + ["paren.lparen","("], + ["identifier","t"], + ["paren.rparen",")"] +],[ + "start", + ["text","\t"], + ["keyword","return"], + ["text"," "], + ["identifier","t"], + ["keyword.operator",":"], + ["support.function","byte"], + ["paren.lparen","("], + ["constant.numeric","1"], + ["paren.rparen",")"], + ["keyword.operator","+"], + ["identifier","t"], + ["keyword.operator",":"], + ["support.function","byte"], + ["paren.lparen","("], + ["constant.numeric","2"], + ["paren.rparen",")"], + ["keyword.operator","*"], + ["constant.numeric","0x100"], + ["keyword.operator","+"], + ["identifier","t"], + ["keyword.operator",":"], + ["support.function","byte"], + ["paren.lparen","("], + ["constant.numeric","3"], + ["paren.rparen",")"], + ["keyword.operator","*"], + ["constant.numeric","0x10000"], + ["keyword.operator","+"], + ["identifier","t"], + ["keyword.operator",":"], + ["support.function","byte"], + ["paren.lparen","("], + ["constant.numeric","4"], + ["paren.rparen",")"], + ["keyword.operator","*"], + ["constant.numeric","0x1000000"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","function"], + ["text"," "], + ["identifier","num_args"], + ["paren.lparen","("], + ["identifier","func"], + ["paren.rparen",")"] +],[ + "start", + ["text","\t"], + ["keyword","local"], + ["text"," "], + ["support.function","dump"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.library","string"], + ["text","."], + ["support.function","dump"], + ["paren.lparen","("], + ["identifier","func"], + ["paren.rparen",")"] +],[ + "start", + ["text","\t"], + ["keyword","local"], + ["text"," "], + ["identifier","offset"], + ["text",", "], + ["identifier","cursor"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","int"], + ["paren.lparen","("], + ["support.function","dump"], + ["keyword.operator",":"], + ["support.function","sub"], + ["paren.lparen","("], + ["constant.numeric","13"], + ["paren.rparen","))"], + ["text",", "], + ["identifier","offset"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","26"] +],[ + "start", + ["text","\t"], + ["comment","--Get the params and var flag (whether there's a ... in the param)"] +],[ + "start", + ["text","\t"], + ["keyword","return"], + ["text"," "], + ["support.function","dump"], + ["keyword.operator",":"], + ["support.function","sub"], + ["paren.lparen","("], + ["identifier","cursor"], + ["paren.rparen",")"], + ["keyword.operator",":"], + ["support.function","byte"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text",", "], + ["support.function","dump"], + ["keyword.operator",":"], + ["support.function","sub"], + ["paren.lparen","("], + ["identifier","cursor"], + ["keyword.operator","+"], + ["constant.numeric","1"], + ["paren.rparen",")"], + ["keyword.operator",":"], + ["support.function","byte"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["comment","-- Usage:"] +],[ + "start", + ["identifier","num_args"], + ["paren.lparen","("], + ["keyword","function"], + ["paren.lparen","("], + ["identifier","a"], + ["text",","], + ["identifier","b"], + ["text",","], + ["identifier","c"], + ["text",","], + ["identifier","d"], + ["text",", "], + ["keyword.operator","..."], + ["paren.rparen",")"], + ["text"," "], + ["keyword","end"], + ["paren.rparen",")"], + ["text"," "], + ["comment","-- return 4, 7"] +],[ + "start" +],[ + "start", + ["comment","-- Python styled string format operator"] +],[ + "start", + ["keyword","local"], + ["text"," "], + ["identifier","gm"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.library","debug"], + ["text","."], + ["support.function","getmetatable"], + ["paren.lparen","("], + ["string","\"\""], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["identifier","gm"], + ["text","."], + ["support.function","__mod"], + ["keyword.operator","="], + ["keyword","function"], + ["paren.lparen","("], + ["variable.language","self"], + ["text",", "], + ["identifier","other"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["support.function","type"], + ["paren.lparen","("], + ["identifier","other"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","~="], + ["text"," "], + ["string","\"table\""], + ["text"," "], + ["keyword","then"], + ["text"," "], + ["identifier","other"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","{"], + ["identifier","other"], + ["paren.rparen","}"], + ["text"," "], + ["keyword","end"] +],[ + "start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["identifier","i"], + ["text",","], + ["identifier","v"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["support.function","ipairs"], + ["paren.lparen","("], + ["identifier","other"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","do"], + ["text"," "], + ["identifier","other"], + ["paren.lparen","["], + ["identifier","i"], + ["paren.rparen","]"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","tostring"], + ["paren.lparen","("], + ["identifier","v"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","end"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["variable.language","self"], + ["keyword.operator",":"], + ["support.function","format"], + ["paren.lparen","("], + ["support.function","unpack"], + ["paren.lparen","("], + ["identifier","other"], + ["paren.rparen","))"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + ["bracketedString",5,"start"], + ["support.function","print"], + ["paren.lparen","("], + ["string.start","[===["] +],[ + ["bracketedString",5,"start"], + ["string"," blah blah %s, (%d %d)"] +],[ + "start", + ["string.end","]===]"], + ["keyword.operator","%"], + ["paren.lparen","{"], + ["string","\"blah\""], + ["text",", "], + ["identifier","num_args"], + ["paren.lparen","("], + ["identifier","int"], + ["paren.rparen",")})"] +],[ + "start" +],[ + ["bracketedComment",3,"start"], + ["comment","--[=[--"] +],[ + ["bracketedComment",3,"start"], + ["comment","table.maxn is deprecated, use # instead."] +],[ + "start", + ["comment","--]=]--"] +],[ + "start", + ["support.function","print"], + ["paren.lparen","("], + ["constant.library","table"], + ["text","."], + ["keyword.deprecated","maxn"], + ["paren.lparen","{"], + ["constant.numeric","1"], + ["text",","], + ["constant.numeric","2"], + ["text",","], + ["paren.lparen","["], + ["constant.numeric","4"], + ["paren.rparen","]"], + ["keyword.operator","="], + ["constant.numeric","4"], + ["text",","], + ["paren.lparen","["], + ["constant.numeric","8"], + ["paren.rparen","]"], + ["keyword.operator","="], + ["constant.numeric","8"], + ["paren.rparen",")"], + ["text"," "], + ["comment","-- outputs 8 instead of 2"] +],[ + "start" +],[ + "start", + ["support.function","print"], + ["paren.lparen","("], + ["constant.numeric","5"], + ["text"," "], + ["comment","--[[ blah ]]"], + ["paren.rparen",")"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_luapage.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_luapage.json new file mode 100644 index 00000000..fda36eba --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_luapage.json @@ -0,0 +1,651 @@ +[[ + "doctype", + ["text.xml",""], + ["xml-pe.doctype.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","html"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + ["lua-bracketedComment",2,"lua-start"], + ["keyword","<%"], + ["text"," "], + ["comment","--[[--"] +],[ + ["lua-bracketedComment",2,"lua-start"], + ["comment"," index.lp from the Kepler Project's LuaDoc HTML doclet."] +],[ + ["lua-bracketedComment",2,"lua-start"], + ["comment"," http://keplerproject.github.com/luadoc/"] +],[ + "start", + ["comment","--]]"], + ["text"," "], + ["keyword","%>"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","head"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Reference"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","link"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","rel"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"stylesheet\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\""], + ["keyword","<%="], + ["identifier","luadoc"], + ["text","."], + ["identifier","doclet"], + ["text","."], + ["identifier","html"], + ["text","."], + ["identifier","link"], + ["paren.lparen","("], + ["string","\"luadoc.css\""], + ["paren.rparen",")"], + ["keyword","%>"], + ["string.attribute-value.xml","\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","type"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"text/css\""], + ["text.tag-whitespace.xml"," "], + ["meta.tag.punctuation.tag-close.xml","/>"] +],[ + "start", + ["text.xml","\t"], + ["comment.start.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","body"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"container\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"product\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml","\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"product_logo\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml","\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"product_name\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","big"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","b"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml","\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"product_description\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml"," "], + ["comment.start.xml",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"main\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"navigation\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["keyword","<%="], + ["identifier","luadoc"], + ["text","."], + ["identifier","doclet"], + ["text","."], + ["identifier","html"], + ["text","."], + ["identifier","include"], + ["paren.lparen","("], + ["string","\"menu.lp\""], + ["text",", "], + ["paren.lparen","{"], + ["text"," "], + ["identifier","doc"], + ["keyword.operator","="], + ["identifier","doc"], + ["text"," "], + ["paren.rparen","})"], + ["keyword","%>"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml"," "], + ["comment.start.xml",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"content\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start" +],[ + "start", + ["keyword","<%if"], + ["text"," "], + ["keyword","not"], + ["text"," "], + ["identifier","options"], + ["text","."], + ["identifier","nomodules"], + ["text"," "], + ["keyword","and"], + ["text"," "], + ["keyword.operator","#"], + ["identifier","doc"], + ["text","."], + ["identifier","modules"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["keyword","then%>"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Modules"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","table"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","class"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"module_list\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["comment.start.xml",""] +],[ + "start", + ["keyword","<%for"], + ["text"," "], + ["identifier","_"], + ["text",", "], + ["identifier","modulename"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["support.function","ipairs"], + ["paren.lparen","("], + ["identifier","doc"], + ["text","."], + ["identifier","modules"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","do%>"] +],[ + "start", + ["text.xml","\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml","\t\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","class"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"name\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\""], + ["keyword","<%="], + ["identifier","luadoc"], + ["text","."], + ["identifier","doclet"], + ["text","."], + ["identifier","html"], + ["text","."], + ["identifier","module_link"], + ["paren.lparen","("], + ["identifier","modulename"], + ["text",", "], + ["identifier","doc"], + ["paren.rparen",")"], + ["keyword","%>"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["keyword","<%="], + ["identifier","modulename"], + ["keyword","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml","\t\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","class"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"summary\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["keyword","<%="], + ["identifier","doc"], + ["text","."], + ["identifier","modules"], + ["paren.lparen","["], + ["identifier","modulename"], + ["paren.rparen","]"], + ["text","."], + ["identifier","summary"], + ["keyword","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml","\t"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["keyword","<%end%>"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["keyword","<%end%>"] +],[ + "start" +],[ + "start" +],[ + "start" +],[ + "start", + ["keyword","<%if"], + ["text"," "], + ["keyword","not"], + ["text"," "], + ["identifier","options"], + ["text","."], + ["identifier","nofiles"], + ["text"," "], + ["keyword","and"], + ["text"," "], + ["keyword.operator","#"], + ["identifier","doc"], + ["text","."], + ["identifier","files"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["keyword","then%>"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h2"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Files"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","table"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","class"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"file_list\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["comment.start.xml",""] +],[ + "start", + ["keyword","<%for"], + ["text"," "], + ["identifier","_"], + ["text",", "], + ["identifier","filepath"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["support.function","ipairs"], + ["paren.lparen","("], + ["identifier","doc"], + ["text","."], + ["identifier","files"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","do%>"] +],[ + "start", + ["text.xml","\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","tr"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml","\t\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","class"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"name\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\""], + ["keyword","<%="], + ["identifier","luadoc"], + ["text","."], + ["identifier","doclet"], + ["text","."], + ["identifier","html"], + ["text","."], + ["identifier","file_link"], + ["paren.lparen","("], + ["identifier","filepath"], + ["paren.rparen",")"], + ["keyword","%>"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["keyword","<%="], + ["identifier","filepath"], + ["keyword","%>"], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml","\t\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.table.tag-name.xml","td"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","class"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"summary\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["text.xml","\t"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["keyword","<%end%>"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["keyword","<%end%>"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml"," "], + ["comment.start.xml",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml"," "], + ["comment.start.xml",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"about\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml","\t"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"http://validator.w3.org/check?uri=referer\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.image.tag-name.xml","img"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","src"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"http://www.w3.org/Icons/valid-xhtml10\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","alt"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"Valid XHTML 1.0!\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","height"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"31\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","width"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"88\""], + ["text.tag-whitespace.xml"," "], + ["meta.tag.punctuation.tag-close.xml","/>"], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml"," "], + ["comment.start.xml",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml"," "], + ["comment.start.xml",""], + ["text.xml","\t"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lucene.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lucene.json new file mode 100644 index 00000000..1f6d2985 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_lucene.json @@ -0,0 +1,92 @@ +[[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["keyword.operator","AND"], + ["text"," as keyword"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["keyword.operator","OR"], + ["text"," as keyword"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["keyword.operator","NOT"], + ["text"," as keyword"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["string","\"hello this is dog\""], + ["text"," as string"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["constant.character.negation","-"], + ["string","\"hello this is dog\""], + ["text"," as negation with string"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["constant.character.proximity","~100"], + ["text"," as text with proximity"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["string","\"hello this is dog\""], + ["constant.character.proximity","~100"], + ["text"," as string with proximity"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["keyword","raw:"], + ["string","\"hello this is dog\""], + ["text"," as keyword"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["keyword","raw:"], + ["text","foo as\"keyword'"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["string","\"(\""], + ["text"," as opening parenthesis"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises "], + ["string","\")\""], + ["text"," as closing parenthesis"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises foo"], + ["constant.character.asterisk","*"], + ["text"," as text with asterisk"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises foo"], + ["constant.character.interro","?"], + ["text"," as text with interro"] +],[ + "start", + ["keyword","test:"], + ["text"," recognises single word as text"] +],[ + "start", + ["text"," foo"] +],[ + "start", + ["text"," "] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_markdown.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_markdown.json new file mode 100644 index 00000000..3ac5c131 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_markdown.json @@ -0,0 +1,114 @@ +[[ + "start", + ["text.xml","test: header 1 "] +],[ + "start", + ["markup.heading.1","#"], + ["heading","f"] +],[ + "start", + ["text.xml","test: header 2"] +],[ + "start", + ["markup.heading.2","##"], + ["heading"," foo"] +],[ + "start", + ["text.xml","test: header ends with ' #'"] +],[ + "start", + ["markup.heading.1","#"], + ["heading"," # # "] +],[ + "start", + ["text.xml","test: header ends with '#'"] +],[ + "start", + ["markup.heading.1","#"], + ["heading","foo# "] +],[ + "start", + ["text.xml","test: 6+ #s is not a valid header"] +],[ + "start", + ["text.xml","####### foo"] +],[ + "start", + ["text.xml","test: # followed be only space is not a valid header"] +],[ + "start", + ["text.xml","# "] +],[ + "start", + ["text.xml","test: only space between #s is not a valid header"] +],[ + "start", + ["text.xml","# #"] +],[ + "allowBlock" +],[ + "start", + ["markup.heading.1","#"], + ["heading"," test links "], + ["text","["], + ["string","Cloud9 IDE"], + ["text","]("], + ["markup.underline","http://www.c9.io/"], + ["text",")"], + ["heading"," #"] +],[ + "listblock", + ["markup.list","* "], + ["text","["], + ["string","demo"], + ["text","]("], + ["markup.underline","http://ajaxorg.github.com/ace/"], + ["text",")"], + ["list"," "], + ["text","["], + ["string","+"], + ["text","]("], + ["markup.underline","escape(\\) "], + ["text",")"], + ["list"," "], + ["text","["], + ["string","+"], + ["text","]("], + ["markup.underline","a"], + ["string"," \"title\""], + ["text",")"], + ["list"," "], + ["text","["], + ["string","+"], + ["text","]("], + ["markup.underline","a"], + ["string"," \"space\" "], + ["text",")"] +],[ + "listblock", + ["markup.list","* "], + ["list","usually "], + ["string.emphasis","*work*"], + ["list"," fine ("], + ["string.emphasis","_em_"], + ["list",")"] +],[ + "listblock", + ["list","in lists"] +],[ + "start" +],[ + "start", + ["text.xml","in plain text "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","b"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","http://ace.ajaxorg.com"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","b"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "allowBlock" +],[ + "allowBlock" +]] diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mask.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mask.json new file mode 100644 index 00000000..13ca9831 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mask.json @@ -0,0 +1,302 @@ +[[ + "start", + ["comment","/* Mask Syntax Demo */"] +],[ + "start" +],[ + "start", + ["keyword.support.constant.language","div"], + ["text"," "], + ["paren.lparen",">"], + ["text"," "], + ["string.start","'"], + ["string"," Test "], + ["paren.lparen.markup.italic","~["], + ["identifier","name"], + ["paren.rparen.markup.italic","]"], + ["string.end","'"], + ["paren.rparen",";"] +],[ + "start" +],[ + "start", + ["keyword","define"], + ["text"," :"], + ["support.variable.class","userProfile"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["keyword.support.constant.language","header"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t"], + ["keyword.support.constant.language","h4"], + ["text"," "], + ["paren.lparen",">"], + ["text"," "], + ["support.function.markup.bold","@title"], + ["paren.lparen",";"] +],[ + "start", + ["text","\t\t"], + ["keyword.support.constant.language","button"], + ["support.variable.class",".close"], + ["paren.lparen",";"] +],[ + "start", + ["text","\t"], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["support.function.markup.bold",":userProfile"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["support.function.markup.bold","@title"], + ["text"," "], + ["paren.lparen",">"], + ["text"," "], + ["string.start","'"], + ["string"," Hello "], + ["paren.lparen.markup.italic","~["], + ["keyword.control.markup.italic",":"], + ["text"," "], + ["identifier","username"], + ["punctuation.operator","."], + ["support.function","toUpperCase"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["paren.rparen.markup.italic","]"], + ["string.end","'"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + ["paren.lparen52","constant.language40"], + ["constant.language","style"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["#tmp","css-block-ruleset","paren.lparen52","constant.language40"], + ["text"," "], + ["constant","html"], + ["text",", "], + ["constant","body"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["#tmp","css-block-ruleset","paren.lparen52","constant.language40"], + ["text"," "], + ["support.type","background"], + ["text",": "], + ["support.function","url("], + ["string","'name.png'"], + ["support.function",")"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["support.constant","no-repeat"], + ["text",";"] +],[ + ["#tmp","css-block-start","paren.lparen52","constant.language40"], + ["text"," "], + ["paren.rparen","}"] +],[ + ["#tmp","css-block-end","paren.lparen52","constant.language40"], + ["paren.rparen","}"] +],[ + ["#tmp","start","paren.lparen52","constant.language40"] +],[ + ["#tmp","start","paren.lparen52","constant.language40"], + ["keyword.support.constant.language","button"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["text","\t"], + ["constant.language","event"], + ["text"," "], + ["support.variable.class","click"], + ["text"," "], + ["paren.lparen","("], + ["identifier","e"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["#tmp","js-block-start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["text","\t "], + ["variable.language","this"], + ["punctuation.operator","."], + ["identifier","textContent"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.quasi.start","`"], + ["string.quasi","name "], + ["paren.quasi.start","${"], + ["identifier","e"], + ["punctuation.operator","."], + ["identifier","clientX"], + ["paren.quasi.end","}"], + ["string.quasi"," !"], + ["string.quasi.end","`"], + ["punctuation.operator",";"] +],[ + ["#tmp","js-block-end","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["text","\t"], + ["paren.rparen","}"] +],[ + ["#tmp","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["paren.rparen","}"] +],[ + ["#tmp","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["constant.language","md"], + ["text"," "], + ["paren.lparen",">"], + ["text"," "], + ["paren.lparen","\"\"\""] +],[ + ["#tmp","md-multiline-allowBlock","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["#tmp","md-multiline-listblock","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["markup.list","- "], + ["list","div"] +],[ + ["#tmp","md-multiline-listblock","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["markup.list","- "], + ["list","span"] +],[ + ["#tmp","md-multiline-listblock","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["list"," "] +],[ + ["#tmp","md-multiline-listblock","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["list","Hello"] +],[ + ["#tmp","md-multiline-start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["#tmp","md-multiline-start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["text","["], + ["string","one"], + ["text","]("], + ["markup.underline","http://google.com"], + ["text",")"] +],[ + ["#tmp","md-multiline-allowBlock","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["paren.rparen","\"\"\";"] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["keyword.support.constant.language","header"], + ["text"," "], + ["support.variable.class",".foo"], + ["text"," "], + ["paren.lparen",">"], + ["text"," "], + ["string.start","'"], + ["string","Heading"], + ["string.end","'"] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["string.start2","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["keyword.support.constant.language","button"], + ["text"," "], + ["support.variable.class",".baz"], + ["text"," "], + ["support.variable.class.markup.bold","x-signal"], + ["keyword.operator","="], + ["string.start","'"], + ["string","click: test"], + ["string.end","'"], + ["text"," "], + ["support.variable.class","disabled"], + ["text"," "], + ["paren.lparen",">"], + ["text"," "], + ["string.start","\""] +],[ + ["string.start2","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["string","\tHello,"] +],[ + ["string.start2","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["string","\tworld "] +],[ + ["string.start2","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["string","\t"], + ["string.escape","\\\""], + ["string","Buddy"], + ["string.escape","\\\""] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["string.end","\""] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["#tmp","js-statement-start","start","js-statement-no_regex","constant.language53","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["constant.language","var"], + ["text"," "], + ["identifier","a"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","{"] +],[ + ["#tmp","js-statement-no_regex","start","js-statement-no_regex","constant.language53","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["text"," "], + ["identifier","name"], + ["punctuation.operator",":"], + ["text"," "], + ["string.quasi.start","`"], + ["string.quasi","name "], + ["paren.quasi.start","${"], + ["variable.language","window"], + ["punctuation.operator","."], + ["support.constant","innerWidth"], + ["paren.rparen","}"], + ["string.quasi.end","`"] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["paren.rparen","};"] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"] +],[ + ["#tmp","start","paren.lparen13","constant.language","constant.language","start","paren.lparen39","constant.language27","constant.language27","start","paren.lparen52","constant.language40"], + ["keyword.support.constant.language","span"], + ["text"," "], + ["support.variable.class",".foo"], + ["text"," "], + ["paren.lparen",">"], + ["text"," "], + ["string.start","\""], + ["paren.lparen.markup.italic","~["], + ["keyword.control.markup.italic","bind:"], + ["text"," "], + ["identifier","a"], + ["punctuation.operator","."], + ["identifier","name"], + ["paren.rparen.markup.italic","]"], + ["string.end","\""] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_matlab.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_matlab.json new file mode 100644 index 00000000..6b4a8567 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_matlab.json @@ -0,0 +1,90 @@ +[[ + ["blockComment","noQstring"], + ["comment.start","%{"] +],[ + ["blockComment","blockComment","blockComment","noQstring"], + ["comment.start"," %{"] +],[ + ["blockComment","blockComment","blockComment","noQstring"], + ["comment"," Ace Matlab demo"] +],[ + ["blockComment","noQstring"], + ["comment.end"," %}"] +],[ + "noQstring", + ["comment.end","%}"] +],[ + "start" +],[ + "start", + ["keyword","classdef"], + ["text"," "], + ["identifier","hello"] +],[ + "start", + ["text"," "], + ["support.function","methods"] +],[ + "start", + ["text"," "], + ["keyword","function"], + ["text"," "], + ["identifier","greet"], + ["paren.lparen","("], + ["identifier","this"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["support.function","disp"], + ["paren.lparen","("], + ["string","'Hello!'"], + ["paren.rparen",")"], + ["text"," "], + ["comment","% say hi"] +],[ + "start", + ["text"," "], + ["keyword","end"] +],[ + "start", + ["text"," "], + ["keyword","end"] +],[ + "start", + ["keyword","end"] +],[ + "noQstring" +],[ + "start", + ["comment","% transpose "] +],[ + "qqstring", + ["identifier","a"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","["], + ["text"," "], + ["string","'x"], + ["constant.language.escape","''"], + ["string","y'"], + ["punctuation.operator",","], + ["text"," "], + ["string","\"x"], + ["constant.language.escape","\\n"], + ["string","\\"] +],[ + "start", + ["string"," y\""], + ["punctuation.operator",","], + ["text"," "], + ["constant.numeric","1"], + ["text","' "], + ["paren.rparen","]"], + ["text","' "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","2"], + ["text","'"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_maze.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_maze.json new file mode 100644 index 00000000..473418f3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_maze.json @@ -0,0 +1,241 @@ +[[ + "start", + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","()"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","^^"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"] +],[ + "start", + ["keyword.control","##"], + ["text"," "], + ["entity.name.function","H1"], + ["text"," "], + ["entity.name.function","C2"], + ["text"," "], + ["entity.name.function","S1"], + ["text"," "], + ["keyword.control","<>"], + ["text"," "], + ["entity.name.function","S2"], + ["text"," "], + ["entity.name.function","H2"], + ["text"," "], + ["entity.name.function","DN"], + ["text"," "], + ["keyword.control","##"] +],[ + "start", + ["keyword.control","##"], + ["text"," "], + ["constant.language","%U"], + ["text"," "], + ["keyword.control","<>"], + ["text"," "], + ["constant.language","%D"], + ["text"," "], + ["entity.name.tag","*2"], + ["text"," "], + ["constant.language","%L"], + ["text"," "], + ["entity.name.function","IZ"], + ["text"," "], + ["entity.name.tag",".."], + ["text"," "], + ["keyword.control","##"] +],[ + "start", + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["entity.name.tag",".."], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["entity.name.function","DN"], + ["text"," "], + ["entity.name.tag","*3"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"] +],[ + "start", + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["constant.language","%R"], + ["text"," "], + ["entity.name.function","C1"], + ["text"," "], + ["entity.name.function","IZ"], + ["text"," "], + ["keyword.control","()"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"] +],[ + "start", + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["keyword.control","##"], + ["text"," "], + ["support.function",">/"], + ["text"," "], + ["entity.name.tag","*1"] +],[ + "start", + ["keyword.control","##"], + ["text"," "], + ["keyword.control","()"], + ["text"," "], + ["entity.name.tag","*3"], + ["text"," "], + ["entity.name.tag","*1"], + ["text"," "], + ["constant.language","%L"], + ["text"," "], + ["keyword.control","()"] +],[ + "start" +],[ + "start" +],[ + "start", + ["comment.line.double-slash","// Set divisor and dividend"] +],[ + "start", + ["entity.name.function","S1"], + ["keyword.other","-> "], + ["keyword.operator","="], + ["keyword.other"," "], + ["constant.numeric","9"] +],[ + "start", + ["entity.name.function","S2"], + ["keyword.other","-> "], + ["keyword.operator","="], + ["keyword.other"," "], + ["constant.numeric","24"] +],[ + "start" +],[ + "start", + ["comment.line.double-slash","// Holding cells"] +],[ + "start", + ["entity.name.function","H1"], + ["keyword.other","-> "], + ["keyword.control","IF"], + ["keyword.other"," "], + ["entity.name.tag","*1"], + ["keyword.other"," "], + ["keyword.control","THEN"], + ["keyword.other"," "], + ["constant.language","%R"], + ["keyword.other"," "], + ["keyword.control","ELSE"], + ["keyword.other"," "], + ["constant.language","%N"] +],[ + "start", + ["entity.name.function","H2"], + ["keyword.other","-> "], + ["keyword.control","IF"], + ["keyword.other"," "], + ["entity.name.tag","*2"], + ["keyword.other"," "], + ["keyword.control","THEN"], + ["keyword.other"," "], + ["constant.language","%R"], + ["keyword.other"," "], + ["keyword.control","ELSE"], + ["keyword.other"," "], + ["constant.language","%N"] +],[ + "start" +],[ + "start", + ["comment.line.double-slash","// Arithmetic"] +],[ + "start", + ["entity.name.function","DN"], + ["keyword.other","-> "], + ["keyword.operator","-="], + ["keyword.other"," "], + ["constant.numeric","1"] +],[ + "start", + ["entity.name.function","IZ"], + ["keyword.other","-> "], + ["keyword.control","IF"], + ["keyword.other"," "], + ["keyword.operator","<="], + ["keyword.other"," "], + ["constant.numeric","0"], + ["keyword.other"," "], + ["keyword.control","THEN"], + ["keyword.other"," "], + ["constant.language","%D"], + ["keyword.other"," "], + ["keyword.control","ELSE"], + ["keyword.other"," "], + ["constant.language","%U"] +],[ + "start" +],[ + "start", + ["entity.name.function","C1"], + ["keyword.other","-> "], + ["keyword.control","IF"], + ["keyword.other"," "], + ["entity.name.tag","*3"], + ["keyword.other"," "], + ["keyword.control","THEN"], + ["keyword.other"," "], + ["constant.language","%D"], + ["keyword.other"," "], + ["keyword.control","ELSE"], + ["keyword.other"," "], + ["constant.language","%R"] +],[ + "start", + ["entity.name.function","C2"], + ["keyword.other","-> "], + ["keyword.control","IF"], + ["keyword.other"," "], + ["entity.name.tag","*3"], + ["keyword.other"," "], + ["keyword.control","THEN"], + ["keyword.other"," "], + ["constant.language","%U"], + ["keyword.other"," "], + ["keyword.control","ELSE"], + ["keyword.other"," "], + ["constant.language","%D"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mel.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mel.json new file mode 100644 index 00000000..d5bb79bd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mel.json @@ -0,0 +1,255 @@ +[[ + "start", + ["comment.line.double-slash.mel","//"], + ["punctuation.definition.comment.mel"," animated duplicates, instances script"] +],[ + "start", + ["keyword.other.mel","proc"], + ["storage.type.mel"," "], + ["entity.name.function.mel","animatedDuplication"], + ["punctuation.section.function.mel"," ("], + ["meta.function.mel","int $rangeStart, int $rangeEnd, int $numOfDuplicates, int $duplicateOrInstance"], + ["punctuation.section.function.mel",")"] +],[ + "start", + ["text","{"] +],[ + "start", + ["text"," "], + ["storage.type.mel","int"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","range_start"], + ["text"," "], + ["keyword.operator.symbolic.mel","="], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","rangeStart"], + ["text",";"] +],[ + "start", + ["text"," "], + ["storage.type.mel","int"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","range_end"], + ["text"," "], + ["keyword.operator.symbolic.mel","="], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","rangeEnd"], + ["text",";"] +],[ + "start", + ["text"," "], + ["storage.type.mel","int"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","num_of_duplicates"], + ["text"," "], + ["keyword.operator.symbolic.mel","="], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","numOfDuplicates"], + ["text",";"] +],[ + "start", + ["text"," "], + ["storage.type.mel","int"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","step_size"], + ["text"," "], + ["keyword.operator.symbolic.mel","="], + ["text"," ("], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","range_end"], + ["text"," "], + ["keyword.operator.symbolic.mel","-"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","range_start"], + ["text",") "], + ["keyword.operator.symbolic.mel","/"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","num_of_duplicates"], + ["text",";"] +],[ + "start", + ["text"," "], + ["storage.type.mel","int"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","i"], + ["text"," "], + ["keyword.operator.symbolic.mel","="], + ["text"," "], + ["constant.numeric.mel","0"], + ["text",";"] +],[ + "start", + ["text"," "], + ["storage.type.mel","int"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","temp"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["support.function.mel","currentTime"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","range_start"], + ["text","; "], + ["comment.line.double-slash.mel","//"], + ["punctuation.definition.comment.mel"," set to range start"] +],[ + "start" +],[ + "start", + ["text"," "], + ["storage.type.mel","string"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","selectedObjects"], + ["text","[]; "], + ["comment.line.double-slash.mel","//"], + ["punctuation.definition.comment.mel"," to store selected objects"] +],[ + "start", + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","selectedObjects"], + ["text"," "], + ["keyword.operator.symbolic.mel","="], + ["text"," `"], + ["support.function.mel","ls"], + ["text"," "], + ["keyword.operator.symbolic.mel","-"], + ["text","sl`; "], + ["comment.line.double-slash.mel","//"], + ["punctuation.definition.comment.mel"," store selected objects"] +],[ + "start", + ["text"," "], + ["support.function.mel","select"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","selectedObjects"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword.control.mel","while"], + ["text"," ("], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","i"], + ["text"," <"], + ["keyword.operator.symbolic.mel","="], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","num_of_duplicates"], + ["text",")"] +],[ + "start", + ["text"," {"] +],[ + "start", + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","temp"], + ["text"," "], + ["keyword.operator.symbolic.mel","="], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","range_start"], + ["text"," "], + ["keyword.operator.symbolic.mel","+"], + ["text"," ("], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","step_size"], + ["text"," "], + ["keyword.operator.symbolic.mel","*"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","i"], + ["text",");"] +],[ + "start", + ["text"," "], + ["support.function.mel","currentTime"], + ["text"," ("], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","temp"], + ["text",");"] +],[ + "start", + ["text"," "], + ["comment.line.double-slash.mel","//"], + ["punctuation.definition.comment.mel"," seleced the objects to duplicate or instance"] +],[ + "start", + ["text"," "], + ["support.function.mel","select"], + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","selectedObjects"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword.control.mel","if"], + ["text","("], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","duplicateOrInstance"], + ["text"," "], + ["keyword.operator.symbolic.mel","=="], + ["text"," "], + ["constant.numeric.mel","0"], + ["text",")"] +],[ + "start", + ["text"," {"] +],[ + "start", + ["text"," "], + ["support.function.mel","duplicate"], + ["text",";"] +],[ + "start", + ["text"," }"] +],[ + "start", + ["text"," "], + ["keyword.control.mel","else"] +],[ + "start", + ["text"," {"] +],[ + "start", + ["text"," "], + ["support.function.mel","instance"], + ["text",";"] +],[ + "start", + ["text"," }"] +],[ + "start", + ["text"," "], + ["variable.other.mel","$"], + ["punctuation.definition.variable.mel","i"], + ["keyword.operator.symbolic.mel","++"], + ["text",";"] +],[ + "start", + ["text"," }"] +],[ + "start", + ["text","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mixal.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mixal.json new file mode 100644 index 00000000..77770ef3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mixal.json @@ -0,0 +1,38 @@ +[[ + "start", + ["comment.line.character","* PROGRAM START"] +],[ + "start", + ["variable.other","ΔSTART"], + ["text"," "], + ["keyword.control","LDA"], + ["text"," "], + ["text","2000"], + ["comment.line.character"," LOAD A FROM CELL 2000"] +],[ + "start", + ["text"," "], + ["invalid.illegal","CMP7"], + ["text"," "], + ["text","=15="] +],[ + "start", + ["invalid.illegal","12345"], + ["text"," "], + ["keyword.control","HLT"] +],[ + "start", + ["text"," "], + ["keyword.control","END"], + ["text"," "], + ["text","START"] +],[ + "start", + ["variable.other","ABC"], + ["text"," "], + ["keyword.control","ALF"], + ["text"," "], + ["invalid.illegal","abc"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mushcode.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mushcode.json new file mode 100644 index 00000000..9f8e7cc2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mushcode.json @@ -0,0 +1,790 @@ +[[ + "start", + ["text","@"], + ["support.function","create"], + ["text"," "], + ["identifier","phone"] +],[ + "start", + ["text","&"], + ["identifier","pickup"], + ["text"," "], + ["identifier","phone"], + ["keyword.operator","="], + ["identifier","$pick"], + ["text"," "], + ["identifier","up"], + ["text",":@"], + ["support.function","ifelse"], + ["text"," "], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","is"], + ["text",","], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","mode"], + ["paren.rparen",")"], + ["text",","], + ["identifier","ICC"], + ["paren.rparen",")]"], + ["keyword.operator","="], + ["paren.lparen","{"], + ["text","@"], + ["support.function","pemit"], + ["text"," "], + ["keyword.operator","%#="], + ["identifier","You"], + ["text"," "], + ["support.function","pick"], + ["text"," "], + ["identifier","up"], + ["text"," "], + ["identifier","the"], + ["text"," "], + ["paren.lparen","["], + ["support.function","fullname"], + ["paren.lparen","("], + ["identifier","me"], + ["paren.rparen",")]"], + ["text","."], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["identifier","me"], + ["text",","], + ["identifier","PHONER"], + ["text",":"], + ["keyword.operator","%#"], + ["paren.rparen",")]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["identifier","me"], + ["text",","], + ["identifier","MODE"], + ["text",":"], + ["identifier","CIP"], + ["paren.rparen",")]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","(["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","INCOMING"], + ["paren.rparen",")]"], + ["text",","], + ["identifier","CONNECTED"], + ["text",":"], + ["paren.lparen","["], + ["support.function","num"], + ["paren.lparen","("], + ["identifier","me"], + ["paren.rparen",")])]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["identifier","me"], + ["text",","], + ["identifier","CONNECTED"], + ["text",":"], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","INCOMING"], + ["paren.rparen",")])]"], + ["variable","%r"], + ["paren.lparen","["], + ["support.function","showpicture"], + ["paren.lparen","("], + ["identifier","PICPICKUP"], + ["paren.rparen",")]"], + ["variable","%r"], + ["identifier","Use"], + ["text"," '"], + ["paren.lparen","["], + ["identifier","color"], + ["paren.lparen","("], + ["identifier","green"], + ["text",","], + ["identifier","black"], + ["text",","], + ["identifier","psay"], + ["text"," "], + ["keyword.operator","<"], + ["identifier","message"], + ["keyword.operator",">"], + ["paren.rparen",")]"], + ["text","' "], + ["paren.lparen","("], + ["support.function","or"], + ["text"," '"], + ["paren.lparen","["], + ["identifier","color"], + ["paren.lparen","("], + ["identifier","green"], + ["text",","], + ["identifier","black"], + ["text",","], + ["identifier","p"], + ["text"," "], + ["keyword.operator","<"], + ["identifier","message"], + ["keyword.operator",">"], + ["paren.rparen",")]"], + ["text","'"], + ["paren.rparen",")"], + ["text"," "], + ["identifier","to"], + ["text"," "], + ["identifier","talk"], + ["text"," "], + ["identifier","into"], + ["text"," "], + ["identifier","the"], + ["text"," "], + ["identifier","phone"], + ["text",".;@"], + ["support.function","oemit"], + ["text"," "], + ["keyword.operator","%#="], + ["variable","%N"], + ["text"," "], + ["identifier","picks"], + ["text"," "], + ["identifier","up"], + ["text"," "], + ["identifier","the"], + ["text"," "], + ["paren.lparen","["], + ["support.function","fullname"], + ["paren.lparen","("], + ["identifier","me"], + ["paren.rparen",")]"], + ["text","."], + ["paren.rparen","}"], + ["text",","], + ["paren.lparen","{"], + ["text","@"], + ["support.function","pemit"], + ["text"," "], + ["keyword.operator","%#="], + ["identifier","You"], + ["text"," "], + ["support.function","pick"], + ["text"," "], + ["identifier","up"], + ["text"," "], + ["identifier","the"], + ["text"," "], + ["identifier","phone"], + ["text"," "], + ["identifier","but"], + ["text"," "], + ["identifier","no"], + ["text"," "], + ["identifier","one"], + ["text"," "], + ["identifier","is"], + ["text"," "], + ["identifier","there"], + ["text",". "], + ["identifier","You"], + ["text"," "], + ["identifier","hear"], + ["text"," "], + ["identifier","a"], + ["text"," "], + ["identifier","dialtone"], + ["text"," "], + ["support.function","and"], + ["text"," "], + ["identifier","then"], + ["text"," "], + ["identifier","hang"], + ["text"," "], + ["identifier","up"], + ["text",". "], + ["paren.lparen","["], + ["support.function","play"], + ["paren.lparen","("], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","DIALTONE"], + ["paren.rparen","))]"], + ["text",";@"], + ["support.function","oemit"], + ["text"," "], + ["keyword.operator","%#="], + ["variable","%N"], + ["text"," "], + ["identifier","picks"], + ["text"," "], + ["identifier","up"], + ["text"," "], + ["identifier","the"], + ["text"," "], + ["identifier","phone"], + ["text",", "], + ["identifier","but"], + ["text"," "], + ["identifier","no"], + ["text"," "], + ["identifier","one"], + ["text"," "], + ["identifier","is"], + ["text"," "], + ["identifier","on"], + ["text"," "], + ["identifier","the"], + ["text"," "], + ["identifier","other"], + ["text"," "], + ["identifier","end"], + ["text","."], + ["paren.rparen","}"] +],[ + "start", + ["text","&"], + ["identifier","ringfun"], + ["text"," "], + ["identifier","phone"], + ["keyword.operator","="], + ["paren.lparen","["], + ["support.function","ifelse"], + ["paren.lparen","("], + ["support.function","eq"], + ["paren.lparen","("], + ["support.function","comp"], + ["paren.lparen","(["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone"], + ["paren.rparen",")]"], + ["text",","], + ["identifier","off"], + ["paren.rparen",")"], + ["text",","], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["text",","], + ["paren.lparen","["], + ["identifier","color"], + ["paren.lparen","("], + ["identifier","black"], + ["text",","], + ["identifier","cyan"], + ["text",","], + ["identifier","INCOMING"], + ["text"," "], + ["identifier","CALL"], + ["text"," "], + ["identifier","FROM"], + ["text"," "], + ["variable","%1"], + ["paren.rparen",")]"], + ["text",","], + ["paren.lparen","["], + ["support.function","play"], + ["paren.lparen","(["], + ["support.function","switch"], + ["paren.lparen","(["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","1"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone1"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","2"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone2"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","3"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone3"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","4"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone4"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","5"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone5"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","6"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone6"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","7"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone7"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","8"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone8"], + ["paren.rparen",")]"], + ["text",","], + ["constant.numeric","9"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","ringtone9"], + ["paren.rparen",")]"], + ["text",","], + ["identifier","custom"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","customtone"], + ["paren.rparen",")]"], + ["text",","], + ["identifier","vibrate"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%0"], + ["keyword.operator","/"], + ["identifier","vibrate"], + ["paren.rparen",")])])]"] +],[ + "start", + ["text","&"], + ["identifier","ringloop"], + ["text"," "], + ["identifier","phone"], + ["keyword.operator","="], + ["text","@"], + ["support.function","switch"], + ["text"," "], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","ringstate"], + ["paren.rparen",")]"], + ["keyword.operator","="], + ["constant.numeric","1"], + ["text",","], + ["paren.lparen","{"], + ["text","@"], + ["support.function","emit"], + ["text"," "], + ["paren.lparen","["], + ["support.function","setq"], + ["paren.lparen","("], + ["identifier","q"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","connecting"], + ["paren.rparen",")])]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["variable","%qq"], + ["text",","], + ["identifier","rangs"], + ["text",":"], + ["constant.numeric","0"], + ["paren.rparen",")]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["variable","%qq"], + ["text",","], + ["identifier","mode"], + ["text",":"], + ["identifier","WFC"], + ["paren.rparen",")]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["variable","%qq"], + ["text",","], + ["identifier","INCOMING"], + ["text",":"], + ["paren.rparen",")]"], + ["text",";@"], + ["support.function","ifelse"], + ["text"," "], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%qq"], + ["keyword.operator","/"], + ["identifier","HASVMB"], + ["paren.rparen",")]"], + ["keyword.operator","="], + ["paren.lparen","{"], + ["text","@"], + ["support.function","tr"], + ["text"," "], + ["identifier","me"], + ["keyword.operator","/"], + ["identifier","ROUTEVMB"], + ["keyword.operator","="], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","connecting"], + ["paren.rparen",")]"], + ["text",";"], + ["paren.rparen","}"], + ["text",","], + ["paren.lparen","{"], + ["text","@"], + ["support.function","pemit"], + ["text"," "], + ["keyword.operator","%#="], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","MSGCNC"], + ["paren.rparen",")]"], + ["text",";"], + ["paren.rparen","}}"], + ["text",","], + ["constant.numeric","2"], + ["text",","], + ["paren.lparen","{"], + ["text","@"], + ["support.function","pemit"], + ["text"," "], + ["keyword.operator","%#="], + ["identifier","The"], + ["text"," "], + ["identifier","call"], + ["text"," "], + ["identifier","is"], + ["text"," "], + ["identifier","connected"], + ["text","."], + ["paren.lparen","["], + ["support.function","setq"], + ["paren.lparen","("], + ["identifier","q"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","CONNECTING"], + ["paren.rparen",")])]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["identifier","me"], + ["text",","], + ["identifier","CONNECTED"], + ["text",":"], + ["variable","%qq"], + ["paren.rparen",")]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["variable","%qq"], + ["text",","], + ["identifier","CONNECTED"], + ["text",":"], + ["paren.lparen","["], + ["support.function","num"], + ["paren.lparen","("], + ["identifier","me"], + ["paren.rparen",")])]"], + ["paren.lparen","["], + ["support.function","set"], + ["paren.lparen","("], + ["variable","%qq"], + ["text",","], + ["identifier","MODE"], + ["text",":"], + ["identifier","CIP"], + ["paren.rparen",")]"], + ["text",";@"], + ["support.function","tr"], + ["text"," "], + ["identifier","me"], + ["keyword.operator","/"], + ["identifier","ciploop"], + ["text",";@"], + ["support.function","tr"], + ["text"," "], + ["variable","%qq"], + ["keyword.operator","/"], + ["identifier","ciploop"], + ["text",";"], + ["paren.rparen","}"], + ["text",","], + ["constant.numeric","3"], + ["text",","], + ["paren.lparen","{"], + ["text","@"], + ["support.function","emit"], + ["text"," "], + ["identifier","On"], + ["text"," "], + ["paren.lparen","["], + ["support.function","fullname"], + ["paren.lparen","("], + ["identifier","me"], + ["paren.rparen",")]"], + ["text","'"], + ["support.function","s"], + ["text"," "], + ["identifier","earpiece"], + ["text"," "], + ["identifier","you"], + ["text"," "], + ["identifier","hear"], + ["text"," "], + ["identifier","a"], + ["text"," "], + ["identifier","ringing"], + ["text"," "], + ["identifier","sound"], + ["text","."], + ["paren.lparen","["], + ["support.function","play"], + ["paren.lparen","("], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","LINETONE"], + ["paren.rparen","))]"], + ["text",";@"], + ["support.function","tr"], + ["text"," "], + ["identifier","me"], + ["keyword.operator","/"], + ["identifier","ringhere"], + ["text",";@"], + ["identifier","increment"], + ["text"," "], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","connecting"], + ["paren.rparen",")]"], + ["keyword.operator","/"], + ["identifier","RANGS"], + ["text",";@"], + ["identifier","wait"], + ["text"," "], + ["constant.numeric","5"], + ["keyword.operator","="], + ["paren.lparen","{"], + ["text","@"], + ["support.function","tr"], + ["text"," "], + ["identifier","me"], + ["keyword.operator","/"], + ["identifier","ringloop"], + ["paren.rparen","}"], + ["text",";"], + ["paren.rparen","}"], + ["text",","], + ["constant.numeric","4"], + ["text",","], + ["paren.lparen","{"], + ["paren.rparen","}"] +],[ + "start", + ["text","&"], + ["identifier","ringstate"], + ["text"," "], + ["identifier","phone"], + ["keyword.operator","="], + ["paren.lparen","["], + ["support.function","setq"], + ["paren.lparen","("], + ["identifier","q"], + ["text",","], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","connecting"], + ["paren.rparen","))]"], + ["paren.lparen","["], + ["support.function","setq"], + ["paren.lparen","("], + ["constant.numeric","1"], + ["text",","], + ["paren.lparen","["], + ["support.function","gt"], + ["paren.lparen","("], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%qq"], + ["keyword.operator","/"], + ["identifier","rangs"], + ["paren.rparen",")"], + ["text",","], + ["support.function","sub"], + ["paren.lparen","("], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%qq"], + ["keyword.operator","/"], + ["identifier","rings"], + ["paren.rparen",")"], + ["text",","], + ["constant.numeric","1"], + ["paren.rparen","))])]"], + ["paren.lparen","["], + ["support.function","setq"], + ["paren.lparen","("], + ["constant.numeric","2"], + ["text",","], + ["paren.lparen","["], + ["support.function","and"], + ["paren.lparen","("], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","is"], + ["text",","], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%qq"], + ["keyword.operator","/"], + ["identifier","MODE"], + ["paren.rparen",")"], + ["text",","], + ["identifier","CIP"], + ["paren.rparen",")"], + ["text",","], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","is"], + ["text",","], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%qq"], + ["keyword.operator","/"], + ["identifier","INCOMING"], + ["paren.rparen",")"], + ["text",","], + ["paren.lparen","["], + ["support.function","num"], + ["paren.lparen","("], + ["identifier","me"], + ["paren.rparen",")]))]"], + ["paren.lparen","["], + ["support.function","setq"], + ["paren.lparen","("], + ["constant.numeric","3"], + ["text",","], + ["paren.lparen","["], + ["support.function","u"], + ["paren.lparen","("], + ["identifier","is"], + ["text",","], + ["support.function","u"], + ["paren.lparen","("], + ["variable","%qq"], + ["keyword.operator","/"], + ["identifier","MODE"], + ["paren.rparen",")"], + ["text",","], + ["identifier","ICC"], + ["paren.rparen",")])]"], + ["paren.lparen","["], + ["support.function","ifelse"], + ["paren.lparen","("], + ["variable","%q1"], + ["text",","], + ["constant.numeric","1"], + ["text",","], + ["support.function","ifelse"], + ["paren.lparen","("], + ["variable","%q2"], + ["text",","], + ["constant.numeric","2"], + ["text",","], + ["support.function","ifelse"], + ["paren.lparen","("], + ["variable","%q3"], + ["text",","], + ["constant.numeric","3"], + ["text",","], + ["constant.numeric","4"], + ["paren.rparen",")))]"] +],[ + "start", + ["text",";"], + ["identifier","comment"] +],[ + "start", + ["text","@@"], + ["paren.lparen","("], + ["identifier","comment"], + ["paren.rparen",")"] +],[ + "start", + ["keyword","say"], + ["text"," "], + ["paren.lparen","["], + ["support.function","time"], + ["paren.lparen","("], + ["paren.rparen",")]"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mysql.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mysql.json new file mode 100644 index 00000000..9909eadd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_mysql.json @@ -0,0 +1,4 @@ +[[ + "start", + ["identifier","TODO"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_nix.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_nix.json new file mode 100644 index 00000000..b9424456 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_nix.json @@ -0,0 +1,360 @@ +[[ + "start", + ["text","{"] +],[ + "start", + ["text"," "], + ["comment","# Name of our deployment"] +],[ + "start", + ["text"," "], + ["identifier","network"], + ["text","."], + ["identifier","description"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["string","\"HelloWorld\""], + ["text",";"] +],[ + "start", + ["text"," "], + ["comment","# Enable rolling back to previous versions of our infrastructure"] +],[ + "start", + ["text"," "], + ["identifier","network"], + ["text","."], + ["identifier","enableRollback"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["constant.language.nix","true"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment","# It consists of a single server named 'helloserver'"] +],[ + "start", + ["text"," "], + ["identifier","helloserver"], + ["text"," "], + ["keyword.operator.assignment.nix","="] +],[ + "start", + ["text"," "], + ["comment","# Every server gets passed a few arguments, including a reference"] +],[ + "start", + ["text"," "], + ["comment","# to nixpkgs (pkgs)"] +],[ + "start", + ["text"," { "], + ["identifier","config"], + ["text",", "], + ["identifier","pkgs"], + ["text",", ... }:"] +],[ + "start", + ["text"," "], + ["keyword.declaration.nix","let"] +],[ + "start", + ["text"," "], + ["comment","# We import our custom packages from ./default passing pkgs as argument"] +],[ + "start", + ["text"," "], + ["identifier","packages"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["keyword.control.nix","import"], + ["text"," ./"], + ["identifier","default"], + ["text","."], + ["identifier","nix"], + ["text"," { "], + ["identifier","pkgs"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["identifier","pkgs"], + ["text","; };"] +],[ + "start", + ["text"," "], + ["comment","# This is the nodejs version specified in default.nix"] +],[ + "start", + ["text"," "], + ["identifier","nodejs"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["identifier","packages"], + ["text","."], + ["identifier","nodejs"], + ["text",";"] +],[ + "start", + ["text"," "], + ["comment","# And this is the application we'd like to deploy"] +],[ + "start", + ["text"," "], + ["identifier","app"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["identifier","packages"], + ["text","."], + ["identifier","app"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword.declaration.nix","in"] +],[ + "start", + ["text"," {"] +],[ + "start", + ["text"," "], + ["comment","# We'll be running our application on port 8080, because a regular"] +],[ + "start", + ["text"," "], + ["comment","# user cannot bind to port 80"] +],[ + "start", + ["text"," "], + ["comment","# Then, using some iptables magic we'll forward traffic designated to port 80 to 8080"] +],[ + "start", + ["text"," "], + ["identifier","networking"], + ["text","."], + ["identifier","firewall"], + ["text","."], + ["identifier","enable"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["constant.language.nix","true"], + ["text",";"] +],[ + "start", + ["text"," "], + ["comment","# We will open up port 22 (SSH) as well otherwise we're locking ourselves out"] +],[ + "start", + ["text"," "], + ["identifier","networking"], + ["text","."], + ["identifier","firewall"], + ["text","."], + ["identifier","allowedTCPPorts"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," [ "], + ["constant.numeric","80"], + ["text"," "], + ["constant.numeric","8080"], + ["text"," "], + ["constant.numeric","22"], + ["text"," ];"] +],[ + "start", + ["text"," "], + ["identifier","networking"], + ["text","."], + ["identifier","firewall"], + ["text","."], + ["identifier","allowPing"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["constant.language.nix","true"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment","# Port forwarding using iptables"] +],[ + "qqdoc", + ["text"," "], + ["identifier","networking"], + ["text","."], + ["identifier","firewall"], + ["text","."], + ["identifier","extraCommands"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["string","''"] +],[ + "qqdoc", + ["string"," iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080"] +],[ + "start", + ["string"," ''"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment","# To run our node.js program we're going to use a systemd service"] +],[ + "start", + ["text"," "], + ["comment","# We can configure the service to automatically start on boot and to restart"] +],[ + "start", + ["text"," "], + ["comment","# the process in case it crashes"] +],[ + "start", + ["text"," "], + ["identifier","systemd"], + ["text","."], + ["identifier","services"], + ["text","."], + ["identifier","helloserver"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," {"] +],[ + "start", + ["text"," "], + ["identifier","description"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["string","\"Hello world application\""], + ["text",";"] +],[ + "start", + ["text"," "], + ["comment","# Start the service after the network is available"] +],[ + "start", + ["text"," "], + ["identifier","after"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," [ "], + ["string","\"network.target\""], + ["text"," ];"] +],[ + "start", + ["text"," "], + ["comment","# We're going to run it on port 8080 in production"] +],[ + "start", + ["text"," "], + ["identifier","environment"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," { "], + ["identifier","PORT"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["string","\"8080\""], + ["text","; };"] +],[ + "start", + ["text"," "], + ["identifier","serviceConfig"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," {"] +],[ + "start", + ["text"," "], + ["comment","# The actual command to run"] +],[ + "start", + ["text"," "], + ["identifier","ExecStart"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["string","\""], + ["constant.language.escape","${"], + ["identifier","nodejs"], + ["constant.language.escape","}"], + ["string","/bin/node "], + ["constant.language.escape","${"], + ["identifier","app"], + ["constant.language.escape","}"], + ["string","/server.js\""], + ["text",";"] +],[ + "start", + ["text"," "], + ["comment","# For security reasons we'll run this process as a special 'nodejs' user"] +],[ + "start", + ["text"," "], + ["identifier","User"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["string","\"nodejs\""], + ["text",";"] +],[ + "start", + ["text"," "], + ["identifier","Restart"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," "], + ["string","\"always\""], + ["text",";"] +],[ + "start", + ["text"," };"] +],[ + "start", + ["text"," };"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment","# And lastly we ensure the user we run our application as is created"] +],[ + "start", + ["text"," "], + ["identifier","users"], + ["text","."], + ["identifier","extraUsers"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," {"] +],[ + "start", + ["text"," "], + ["identifier","nodejs"], + ["text"," "], + ["keyword.operator.assignment.nix","="], + ["text"," { };"] +],[ + "start", + ["text"," };"] +],[ + "start", + ["text"," };"] +],[ + "start", + ["text","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_nsis.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_nsis.json new file mode 100644 index 00000000..0f1c73dc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_nsis.json @@ -0,0 +1,133 @@ +[[ + "punctuation.definition.comment.nsis", + ["punctuation.definition.comment.nsis","/*"] +],[ + "punctuation.definition.comment.nsis", + ["comment.block.nsis"," NSIS Mode"] +],[ + "punctuation.definition.comment.nsis", + ["comment.block.nsis"," for Ace"] +],[ + "start", + ["punctuation.definition.comment.nsis","*/"] +],[ + "start" +],[ + "start", + ["punctuation.definition.comment.nsis",";"], + ["comment.line.nsis"," Includes"] +],[ + "start", + ["keyword.compiler.nsis","!include"], + ["text"," MUI2.nsh"] +],[ + "start" +],[ + "start", + ["punctuation.definition.comment.nsis",";"], + ["comment.line.nsis"," Settings"] +],[ + "start", + ["keyword.command.nsis","Name"], + ["text"," "], + ["punctuation.definition.string.begin.nsis","\""], + ["string.quoted.double.nsis","installer_name"], + ["punctuation.definition.string.end.nsis","\""] +],[ + "start", + ["keyword.command.nsis","OutFile"], + ["text"," "], + ["punctuation.definition.string.begin.nsis","\""], + ["string.quoted.double.nsis","installer_name.exe"], + ["punctuation.definition.string.end.nsis","\""] +],[ + "start", + ["keyword.command.nsis","RequestExecutionLevel"], + ["text"," "], + ["constant.language.option.nsis","user"] +],[ + "start", + ["keyword.command.nsis","CRCCheck"], + ["text"," "], + ["constant.language.boolean.true.nsis","on"] +],[ + "start", + ["keyword.control.nsis","!ifdef"], + ["text"," x64"] +],[ + "start", + ["keyword.command.nsis"," InstallDir"], + ["text"," "], + ["punctuation.definition.string.begin.nsis","\""], + ["string.quoted.double.nsis","$PROGRAMFILES64\\installer_name"], + ["punctuation.definition.string.end.nsis","\""] +],[ + "start", + ["keyword.control.nsis","!else"] +],[ + "start", + ["keyword.command.nsis"," InstallDir"], + ["text"," "], + ["punctuation.definition.string.begin.nsis","\""], + ["string.quoted.double.nsis","$PROGRAMFILES\\installer_name"], + ["punctuation.definition.string.end.nsis","\""] +],[ + "start", + ["keyword.control.nsis","!endif"] +],[ + "start" +],[ + "start", + ["punctuation.definition.comment.nsis",";"], + ["comment.line.nsis"," Pages"] +],[ + "start", + ["keyword.compiler.nsis","!insertmacro"], + ["text"," MUI_PAGE_INSTFILES"] +],[ + "start" +],[ + "start", + ["punctuation.definition.comment.nsis",";"], + ["comment.line.nsis"," Sections"] +],[ + "start", + ["support.function.nsis","Section"], + ["text"," "], + ["punctuation.definition.string.begin.nsis","\""], + ["string.quoted.double.nsis","section_name"], + ["punctuation.definition.string.end.nsis","\""], + ["text"," section_index"] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.nsis","#"], + ["comment.line.nsis"," your code here"] +],[ + "start", + ["support.function.nsis","SectionEnd"] +],[ + "start" +],[ + "start", + ["punctuation.definition.comment.nsis",";"], + ["comment.line.nsis"," Functions"] +],[ + "start", + ["support.function.nsis","Function"], + ["text"," .onInit"] +],[ + "start", + ["keyword.command.nsis"," MessageBox"], + ["text"," "], + ["constant.nsis","MB_OK"], + ["text"," "], + ["punctuation.definition.string.begin.nsis","\""], + ["string.quoted.double.nsis","Here comes a"], + ["constant.character.escape.nsis","$\\n$\\r"], + ["string.quoted.double.nsis","line-break!"], + ["punctuation.definition.string.end.nsis","\""] +],[ + "start", + ["support.function.nsis","FunctionEnd"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_objectivec.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_objectivec.json new file mode 100644 index 00000000..c50da438 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_objectivec.json @@ -0,0 +1,798 @@ +[[ + "start", + ["storage.type.objc","@"], + ["punctuation.definition.storage.type.objc","protocol"], + ["entity.name.type.objc"," Printing"], + ["text",": "], + ["entity.other.inherited-class.objc","someParent"] +],[ + "start", + ["meta.function.objc","-"], + ["paren.lparen","("], + ["storage.type","void"], + ["paren.rparen",")"], + ["text"," "], + ["identifier","print"], + ["punctuation.operator",";"] +],[ + "start", + ["storage.type.objc","@end"] +],[ + "start" +],[ + "start", + ["storage.type.objc","@"], + ["punctuation.definition.storage.type.objc","interface"], + ["entity.name.type.objc"," Fraction"], + ["text",": "], + ["entity.other.inherited-class.objc","NSObject"], + ["text"," "], + ["keyword.operator","<"], + ["identifier","Printing"], + ["punctuation.operator",","], + ["text"," "], + ["support.class.cocoa","NSCopying"], + ["keyword.operator",">"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["storage.type","int"], + ["text"," "], + ["identifier","numerator"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["storage.type","int"], + ["text"," "], + ["identifier","denominator"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start", + ["storage.type.objc","@end"] +],[ + "start" +],[ + "start", + ["string.begin.objc","@\""], + ["string","blah"], + ["invalid.illegal.unknown-escape.objc","\\8"], + ["punctuation.definition.string.end","\""], + ["text"," "], + ["string.begin.objc","@\""], + ["string","a"], + ["constant.character.escape.objc","\\222"], + ["string","sd"], + ["invalid.illegal.unknown-escape.objc","\\d"], + ["punctuation.definition.string.end","\""], + ["text"," "], + ["string.begin.objc","@\""], + ["constant.character.escape.objc","\\f"], + ["string","aw"], + ["constant.character.escape.objc","\\\"\\?"], + ["string"," "], + ["constant.character.escape.objc","\\'"], + ["string"," "], + ["constant.character.escape.objc","\\4"], + ["string"," n"], + ["constant.character.escape.objc","\\\\"], + ["punctuation.definition.string.end","\""], + ["text"," "], + ["string.begin.objc","@\""], + ["constant.character.escape.objc","\\56"], + ["punctuation.definition.string.end","\""] +],[ + "start", + ["string.begin.objc","@\""], + ["constant.character.escape.objc","\\xSF42"], + ["punctuation.definition.string.end","\""] +],[ + "start" +],[ + "start", + ["meta.function.objc","-"], + ["paren.lparen","("], + ["support.class.cocoa","NSDecimalNumber"], + ["keyword.operator","*"], + ["paren.rparen",")"], + ["identifier","addCount"], + ["punctuation.operator",":"], + ["paren.lparen","("], + ["storage.type.id.objc","id"], + ["paren.rparen",")"], + ["identifier","addObject"], + ["paren.lparen","{"] +],[ + "start" +],[ + "start", + ["keyword.control","return"], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["identifier","count"], + ["text"," "], + ["support.function.any-method.objc","decimalNumberByAdding:"], + ["identifier","addObject"], + ["punctuation.operator","."], + ["identifier","count"], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword.control.macro.objc","NS_DURING"], + ["text"," "], + ["keyword.control.macro.objc","NS_HANDLER"], + ["text"," "], + ["keyword.control.macro.objc","NS_ENDHANDLER"] +],[ + "start" +],[ + "start", + ["punctuation.definition.keyword.objc","@"], + ["keyword.control.exception.objc","try"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.control","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","argc"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","1"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["punctuation.definition.keyword.objc","@"], + ["keyword.control.exception.objc","throw"], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["support.class.cocoa","NSException"], + ["text"," "], + ["support.function.any-method.objc","exceptionWithName:"], + ["string.begin.objc","@\""], + ["string","Throwing a test exception"], + ["punctuation.definition.string.end","\""], + ["text"," "], + ["identifier","reason"], + ["punctuation.operator",":"], + ["string.begin.objc","@\""], + ["string","Testing the @throw directive."], + ["punctuation.definition.string.end","\""], + ["text"," "], + ["identifier","userInfo"], + ["punctuation.operator",":"], + ["constant.language.objc","nil"], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"], + ["text"," "] +],[ + "start", + ["punctuation.definition.keyword.objc","@"], + ["keyword.control.exception.objc","catch"], + ["text"," "], + ["paren.lparen","("], + ["storage.type.id.objc","id"], + ["text"," "], + ["identifier","theException"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.function.cocoa","NSLog"], + ["paren.lparen","("], + ["string.begin.objc","@\""], + ["string","%@"], + ["punctuation.definition.string.end","\""], + ["punctuation.operator",","], + ["text"," "], + ["identifier","theException"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["identifier","result"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"], + ["text"," "] +],[ + "start", + ["punctuation.definition.keyword.objc","@"], + ["keyword.control.exception.objc","finally"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.function.cocoa","NSLog"], + ["paren.lparen","("], + ["string.begin.objc","@\""], + ["string","This always happens."], + ["punctuation.definition.string.end","\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["identifier","result"], + ["text"," "], + ["keyword.operator","+="], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["punctuation.definition.storage.modifier.objc","@"], + ["storage.modifier.objc","synchronized"], + ["paren.lparen","("], + ["identifier","lock"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.function.cocoa","NSLog"], + ["paren.lparen","("], + ["string.begin.objc","@\""], + ["string","Hello World"], + ["punctuation.definition.string.end","\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["storage.type","struct"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["punctuation.definition.keyword.objc","@"], + ["keyword.other.objc","defs"], + ["paren.lparen","("], + ["text"," "], + ["support.class.cocoa","NSObject"], + ["paren.rparen",")"], + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["storage.type","char"], + ["text"," "], + ["keyword.operator","*"], + ["identifier","enc1"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.definition.keyword.objc","@"], + ["keyword.other.objc","encode"], + ["paren.lparen","("], + ["storage.type","int"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["storage.type.objc","IBOutlet"], + ["keyword.operator","|"], + ["storage.type.objc","IBAction"], + ["keyword.operator","|"], + ["storage.type.objc","BOOL"], + ["keyword.operator","|"], + ["storage.type.objc","SEL"], + ["keyword.operator","|"], + ["storage.type.id.objc","id"], + ["keyword.operator","|"], + ["storage.type.objc","unichar"], + ["keyword.operator","|"], + ["storage.type.objc","IMP"], + ["keyword.operator","|"], + ["storage.type.objc","Class"], + ["text"," "] +],[ + "start" +],[ + "start" +],[ + "start", + ["text"," "], + ["punctuation.definition.storage.type.objc","@"], + ["storage.type.objc","class"], + ["text"," "], + ["punctuation.definition.storage.type.objc","@"], + ["storage.type.objc","protocol"] +],[ + "start" +],[ + "start", + ["punctuation.definition.storage.modifier.objc","@"], + ["storage.modifier.objc","public"] +],[ + "start", + ["text"," "], + ["comment","// instance variables"] +],[ + "start", + ["punctuation.definition.storage.modifier.objc","@"], + ["storage.modifier.objc","package"] +],[ + "start", + ["text"," "], + ["comment","// instance variables"] +],[ + "start", + ["punctuation.definition.storage.modifier.objc","@"], + ["storage.modifier.objc","protected"] +],[ + "start", + ["text"," "], + ["comment","// instance variables"] +],[ + "start", + ["punctuation.definition.storage.modifier.objc","@"], + ["storage.modifier.objc","private"] +],[ + "start", + ["text"," "], + ["comment","// instance variables"] +],[ + "start" +],[ + "start", + ["text"," "], + ["constant.language.objc","YES"], + ["text"," "], + ["constant.language.objc","NO"], + ["text"," "], + ["constant.language.objc","Nil"], + ["text"," "], + ["constant.language.objc","nil"] +],[ + "start", + ["support.variable.foundation","NSApp"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["support.function.cocoa.leopard","NSRectToCGRect"], + ["text"," "], + ["paren.lparen","("], + ["identifier","Protocol"], + ["text"," "], + ["identifier","ProtocolFromString"], + ["punctuation.operator",":"], + ["string.start","\""], + ["string","NSTableViewDelegate"], + ["string.end","\""], + ["paren.rparen","))"] +],[ + "start" +],[ + "start", + ["punctuation.section.scope.begin.objc","["], + ["identifier","SPPoint"], + ["text"," "], + ["support.function.any-method.objc","pointFromCGPoint:"], + ["identifier","self"], + ["punctuation.operator","."], + ["identifier","position"], + ["paren.rparen","]"] +],[ + "start" +],[ + "start", + ["support.function.cocoa","NSRoundDownToMultipleOfPageSize"] +],[ + "start" +],[ + "start", + ["keyword","#import"], + ["constant.other"," "] +],[ + "start" +],[ + "start", + ["storage.type","int"], + ["text"," "], + ["identifier","main"], + ["paren.lparen","("], + ["text"," "], + ["storage.type","int"], + ["text"," "], + ["identifier","argc"], + ["punctuation.operator",","], + ["text"," "], + ["storage.modifier","const"], + ["text"," "], + ["storage.type","char"], + ["text"," "], + ["keyword.operator","*"], + ["identifier","argv"], + ["punctuation.section.scope.begin.objc","["], + ["punctuation.section.scope.end.objc","]"], + ["text"," "], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.function.C99.c","printf"], + ["paren.lparen","("], + ["text"," "], + ["string.start","\""], + ["string","hello world"], + ["constant.language.escape","\\n"], + ["string.end","\""], + ["text"," "], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.control","return"], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["support.class.cocoa","NSChangeSpelling"] +],[ + "start" +],[ + "start", + ["string.begin.objc","@\""], + ["string","0 != SUBQUERY(image, $x, 0 != SUBQUERY($x.bookmarkItems, $y, $y.@count == 0).@count).@count"], + ["punctuation.definition.string.end","\""] +],[ + "start" +],[ + "start", + ["punctuation.definition.storage.type.objc","@selector"], + ["punctuation","("], + ["support.function.any-method.name-of-parameter.objc","lowercaseString"], + ["punctuation",")"], + ["text"," "], + ["punctuation.definition.storage.type.objc","@selector"], + ["punctuation","("], + ["support.function.any-method.name-of-parameter.objc","uppercaseString:"], + ["punctuation",")"] +],[ + "start" +],[ + "start", + ["identifier","NSFetchRequest"], + ["text"," "], + ["keyword.operator","*"], + ["identifier","localRequest"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","[["], + ["identifier","NSFetchRequest"], + ["text"," "], + ["support.function.any-method.objc","alloc"], + ["paren.rparen","]"], + ["text"," "], + ["identifier","init"], + ["paren.rparen","]"], + ["punctuation.operator",";"], + ["text"," "] +],[ + "start", + ["identifier","localRequest"], + ["punctuation.operator","."], + ["identifier","entity"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["identifier","NSEntityDescription"], + ["text"," "], + ["support.function.any-method.objc","entityForName:"], + ["string.begin.objc","@\""], + ["string","VNSource"], + ["punctuation.definition.string.end","\""], + ["text"," "], + ["identifier","inManagedObjectContext"], + ["punctuation.operator",":"], + ["identifier","context"], + ["paren.rparen","]"], + ["punctuation.operator",";"], + ["text"," "] +],[ + "start", + ["identifier","localRequest"], + ["punctuation.operator","."], + ["identifier","sortDescriptors"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["support.class.cocoa","NSArray"], + ["text"," "], + ["support.function.any-method.objc","arrayWithObject:"], + ["punctuation.section.scope.begin.objc","["], + ["support.class.cocoa","NSSortDescriptor"], + ["text"," "], + ["support.function.any-method.objc","sortDescriptorWithKey:"], + ["string.begin.objc","@\""], + ["string","resolution"], + ["punctuation.definition.string.end","\""], + ["text"," "], + ["identifier","ascending"], + ["punctuation.operator",":"], + ["constant.language.objc","YES"], + ["paren.rparen","]]"], + ["punctuation.operator",";"], + ["text"," "] +],[ + "start", + ["support.class.cocoa","NSPredicate"], + ["text"," "], + ["keyword.operator","*"], + ["identifier","predicate"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["support.class.cocoa","NSPredicate"], + ["text"," "], + ["support.function.any-method.objc","predicateWithFormat:"], + ["string.begin.objc","@\""], + ["string","0 != SUBQUERY(image, $x, 0 != SUBQUERY($x.bookmarkItems, $y, $y.@count == 0).@count).@count"], + ["punctuation.definition.string.end","\""], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start", + ["punctuation.section.scope.begin.objc","["], + ["support.class.cocoa","NSPredicate"], + ["text"," "], + ["support.function.any-method.objc","predicateWithFormat:"], + ["paren.rparen","]"] +],[ + "start", + ["support.class.cocoa","NSString"], + ["text"," "], + ["keyword.operator","*"], + ["identifier","predicateString"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["support.class.cocoa","NSString"], + ["text"," "], + ["support.function.any-method.objc","stringWithFormat:"], + ["string.begin.objc","@\""], + ["string","SELF beginsWith[cd] %@"], + ["punctuation.definition.string.end","\""], + ["punctuation.operator",","], + ["text"," "], + ["identifier","searchString"], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start", + ["support.class.cocoa","NSPredicate"], + ["text"," "], + ["keyword.operator","*"], + ["identifier","pred"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["support.class.cocoa","NSPredicate"], + ["text"," "], + ["support.function.any-method.objc","predicateWithFormat:"], + ["identifier","predicateString"], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start", + ["support.class.cocoa","NSArray"], + ["text"," "], + ["keyword.operator","*"], + ["identifier","filteredKeys"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","[["], + ["identifier","myMutableDictionary"], + ["text"," "], + ["support.function.any-method.objc","allKeys"], + ["paren.rparen","]"], + ["text"," "], + ["identifier","filteredArrayUsingPredicate"], + ["punctuation.operator",":"], + ["identifier","pred"], + ["paren.rparen","]"], + ["punctuation.operator",";"], + ["text"," "] +],[ + "start" +],[ + "start", + ["identifier","localRequest"], + ["punctuation.operator","."], + ["identifier","predicate"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["support.class.cocoa","NSPredicate"], + ["text"," "], + ["support.function.any-method.objc","predicateWithFormat:"], + ["string.begin.objc","@\""], + ["string","whichChart = %@"], + ["punctuation.definition.string.end","\""], + ["text"," "], + ["identifier","argumentArray"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","listChartToDownload"], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start", + ["identifier","localRequest"], + ["punctuation.operator","."], + ["identifier","fetchBatchSize"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","100"], + ["punctuation.operator",";"] +],[ + "start", + ["identifier","arrayRequest"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["punctuation.section.scope.begin.objc","["], + ["identifier","context"], + ["text"," "], + ["support.function.any-method.objc","executeFetchRequest:"], + ["identifier","localRequest"], + ["text"," "], + ["identifier","error"], + ["punctuation.operator",":"], + ["keyword.operator","&"], + ["identifier","error1"], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["punctuation.section.scope.begin.objc","["], + ["identifier","localRequest"], + ["text"," "], + ["support.function.any-method.objc","release"], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["keyword","#ifndef"], + ["text"," "], + ["constant.language.objc","Nil"] +],[ + "start", + ["keyword","#define"], + ["constant.other"," Nil __DARWIN_NULL "], + ["comment","/* id of Nil class */"] +],[ + "start", + ["keyword","#endif"] +],[ + "start" +],[ + "start", + ["storage.type.objc","@implementation"], + ["entity.name.type.objc"," MyObject"] +],[ + "start", + ["meta.function.objc","- "], + ["paren.lparen","("], + ["storage.type","unsigned"], + ["text"," "], + ["storage.type","int"], + ["paren.rparen",")"], + ["identifier","areaOfWidth"], + ["punctuation.operator",":"], + ["paren.lparen","("], + ["storage.type","unsigned"], + ["text"," "], + ["storage.type","int"], + ["paren.rparen",")"], + ["identifier","width"] +],[ + "start", + ["text"," "], + ["identifier","height"], + ["punctuation.operator",":"], + ["paren.lparen","("], + ["storage.type","unsigned"], + ["text"," "], + ["storage.type","int"], + ["paren.rparen",")"], + ["identifier","height"] +],[ + "start", + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.control","return"], + ["text"," "], + ["identifier","width"], + ["keyword.operator","*"], + ["identifier","height"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start", + ["storage.type.objc","@end"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ocaml.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ocaml.json new file mode 100644 index 00000000..73e3cfcd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ocaml.json @@ -0,0 +1,200 @@ +[[ + "comment", + ["comment","(*"] +],[ + "comment", + ["comment"," * Example of early return implementation taken from"] +],[ + "comment", + ["comment"," * http://ocaml.janestreet.com/?q=node/91"] +],[ + "start", + ["comment"," *)"] +],[ + "start" +],[ + "start", + ["keyword","let"], + ["text"," "], + ["identifier","with_return"], + ["text"," "], + ["paren.lparen","("], + ["keyword","type"], + ["text"," "], + ["identifier","t"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","("], + ["identifier","f"], + ["text"," : "], + ["identifier","_"], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["identifier","t"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","="] +],[ + "start", + ["text"," "], + ["keyword","let"], + ["text"," "], + ["keyword","module"], + ["text"," "], + ["identifier","M"], + ["text"," "], + ["keyword.operator","="] +],[ + "start", + ["text"," "], + ["keyword","struct"], + ["text"," "], + ["keyword","exception"], + ["text"," "], + ["identifier","Return"], + ["text"," "], + ["keyword","of"], + ["text"," "], + ["identifier","t"], + ["text"," "], + ["keyword","end"] +],[ + "start", + ["text"," "], + ["keyword","in"] +],[ + "start", + ["text"," "], + ["keyword","let"], + ["text"," "], + ["identifier","return"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["identifier","return"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["keyword","fun"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["support.function","raise"], + ["text"," "], + ["paren.lparen","("], + ["identifier","M"], + ["text","."], + ["identifier","Return"], + ["text"," "], + ["identifier","x"], + ["paren.rparen","))"], + ["text","; "], + ["paren.rparen","}"], + ["text"," "], + ["keyword","in"] +],[ + "start", + ["text"," "], + ["keyword","try"], + ["text"," "], + ["identifier","f"], + ["text"," "], + ["identifier","return"], + ["text"," "], + ["keyword","with"], + ["text"," "], + ["identifier","M"], + ["text","."], + ["identifier","Return"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["identifier","x"] +],[ + "start" +],[ + "start" +],[ + "start", + ["comment","(* Function that uses the 'early return' functionality provided by `with_return` *)"] +],[ + "start", + ["keyword","let"], + ["text"," "], + ["identifier","sum_until_first_negative"], + ["text"," "], + ["support.function","list"], + ["text"," "], + ["keyword.operator","="] +],[ + "start", + ["text"," "], + ["identifier","with_return"], + ["text"," "], + ["paren.lparen","("], + ["keyword","fun"], + ["text"," "], + ["identifier","r"], + ["text"," "], + ["keyword.operator","->"] +],[ + "start", + ["text"," "], + ["support.function","List"], + ["text","."], + ["support.function","fold"], + ["text"," "], + ["support.function","list"], + ["text"," "], + ["keyword.operator","~"], + ["support.function","init"], + ["text",":"], + ["constant.numeric","0"], + ["text"," "], + ["keyword.operator","~"], + ["identifier","f"], + ["text",":"], + ["paren.lparen","("], + ["keyword","fun"], + ["text"," "], + ["identifier","acc"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator","->"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator",">="], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["keyword","then"], + ["text"," "], + ["identifier","acc"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["identifier","r"], + ["text","."], + ["identifier","return"], + ["text"," "], + ["identifier","acc"], + ["paren.rparen","))"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pascal.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pascal.json new file mode 100644 index 00000000..22c1f0c4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pascal.json @@ -0,0 +1,297 @@ +[[ + "punctuation.definition.comment.pascal", + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one","****************************************************************************"] +],[ + "punctuation.definition.comment.pascal", + ["comment.block.pascal.one"," * A simple bubble sort program. Reads integers, one per line, and prints *"] +],[ + "punctuation.definition.comment.pascal", + ["comment.block.pascal.one"," * them out in sorted order. Blows up if there are more than 49. *"] +],[ + "start", + ["comment.block.pascal.one"," ****************************************************************************"], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["keyword.control.pascal","PROGRAM"], + ["text"," Sort(input"], + ["keyword.operator",","], + ["text"," output)"], + ["keyword.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","CONST"] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one"," Max array size. "], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["text"," MaxElts "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric.pascal","50"], + ["keyword.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","TYPE"], + ["text"," "] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one"," Type of the element array. "], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["text"," IntArrType "], + ["keyword.operator","="], + ["text"," "], + ["keyword.control.pascal","ARRAY"], + ["text"," ["], + ["constant.numeric.pascal","1"], + ["text","..MaxElts] "], + ["keyword.control.pascal","OF"], + ["text"," Integer"], + ["keyword.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword.control.pascal","VAR"] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one"," Indexes, exchange temp, array size. "], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["text"," i"], + ["keyword.operator",","], + ["text"," j"], + ["keyword.operator",","], + ["text"," tmp"], + ["keyword.operator",","], + ["text"," size: integer"], + ["keyword.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one"," Array of ints "], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["text"," arr: IntArrType"], + ["keyword.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one"," Read in the integers. "], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["text"," "], + ["variable.pascal","PROCEDURE"], + ["text"," "], + ["storage.type.function.pascal","ReadArr"], + ["text","("], + ["keyword.control.pascal","VAR"], + ["text"," size: Integer"], + ["keyword.operator",";"], + ["text"," "], + ["keyword.control.pascal","VAR"], + ["text"," a: IntArrType)"], + ["keyword.operator",";"], + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","BEGIN"] +],[ + "start", + ["text"," size "], + ["keyword.operator",":="], + ["text"," "], + ["constant.numeric.pascal","1"], + ["keyword.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","WHILE"], + ["text"," "], + ["keyword.control.pascal","NOT"], + ["text"," eof "], + ["keyword.control.pascal","DO"], + ["text"," "], + ["keyword.control.pascal","BEGIN"] +],[ + "start", + ["text"," readln(a[size])"], + ["keyword.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","IF"], + ["text"," "], + ["keyword.control.pascal","NOT"], + ["text"," eof "], + ["keyword.control.pascal","THEN"], + ["text"," "] +],[ + "start", + ["text"," size "], + ["keyword.operator",":="], + ["text"," size "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric.pascal","1"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","END"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","END"], + ["keyword.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword.control.pascal","BEGIN"] +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one"," Read "], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["text"," ReadArr(size"], + ["keyword.operator",","], + ["text"," arr)"], + ["keyword.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one"," Sort using bubble sort. "], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","FOR"], + ["text"," i "], + ["keyword.operator",":="], + ["text"," size "], + ["keyword.operator","-"], + ["text"," "], + ["constant.numeric.pascal","1"], + ["text"," DOWNTO "], + ["constant.numeric.pascal","1"], + ["text"," "], + ["keyword.control.pascal","DO"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","FOR"], + ["text"," j "], + ["keyword.operator",":="], + ["text"," "], + ["constant.numeric.pascal","1"], + ["text"," "], + ["keyword.control.pascal","TO"], + ["text"," i "], + ["keyword.control.pascal","DO"], + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","IF"], + ["text"," arr[j] > arr[j "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric.pascal","1"], + ["text","] "], + ["keyword.control.pascal","THEN"], + ["text"," "], + ["keyword.control.pascal","BEGIN"] +],[ + "start", + ["text"," tmp "], + ["keyword.operator",":="], + ["text"," arr[j]"], + ["keyword.operator",";"] +],[ + "start", + ["text"," arr[j] "], + ["keyword.operator",":="], + ["text"," arr[j "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric.pascal","1"], + ["text","]"], + ["keyword.operator",";"] +],[ + "start", + ["text"," arr[j "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric.pascal","1"], + ["text","] "], + ["keyword.operator",":="], + ["text"," tmp"], + ["keyword.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","END"], + ["keyword.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["punctuation.definition.comment.pascal","(*"], + ["comment.block.pascal.one"," Print. "], + ["punctuation.definition.comment.pascal","*)"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","FOR"], + ["text"," i "], + ["keyword.operator",":="], + ["text"," "], + ["constant.numeric.pascal","1"], + ["text"," "], + ["keyword.control.pascal","TO"], + ["text"," size "], + ["keyword.control.pascal","DO"] +],[ + "start", + ["text"," writeln(arr[i])"] +],[ + "start", + ["text"," "], + ["keyword.control.pascal","END"], + ["text","."] +],[ + "start", + ["text"," "] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_perl.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_perl.json new file mode 100644 index 00000000..30bb39c6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_perl.json @@ -0,0 +1,227 @@ +[[ + "start", + ["comment","#!/usr/bin/perl"] +],[ + "block_comment", + ["comment.doc","=begin"] +],[ + "block_comment", + ["comment.doc"," perl example code for Ace"] +],[ + "start", + ["comment.doc","=cut"] +],[ + "start" +],[ + "start", + ["keyword","use"], + ["text"," "], + ["identifier","strict"], + ["text",";"] +],[ + "start", + ["keyword","use"], + ["text"," "], + ["identifier","warnings"], + ["text",";"] +],[ + "start", + ["keyword","my"], + ["text"," "], + ["identifier","$num_primes"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["text",";"] +],[ + "start", + ["keyword","my"], + ["text"," @"], + ["identifier","primes"], + ["text",";"] +],[ + "start" +],[ + "start", + ["comment","# Put 2 as the first prime so we won't have an empty array"] +],[ + "start", + ["identifier","$primes"], + ["lparen","["], + ["identifier","$num_primes"], + ["rparen","]"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","2"], + ["text",";"] +],[ + "start", + ["identifier","$num_primes"], + ["keyword.operator","++"], + ["text",";"] +],[ + "start" +],[ + "start", + ["identifier","MAIN_LOOP"], + ["text",":"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["keyword","my"], + ["text"," "], + ["identifier","$number_to_check"], + ["text"," "], + ["lparen","("], + ["constant.numeric","3"], + ["text"," "], + ["keyword.operator",".."], + ["text"," "], + ["constant.numeric","200"], + ["rparen",")"] +],[ + "start", + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["keyword","my"], + ["text"," "], + ["identifier","$p"], + ["text"," "], + ["lparen","("], + ["constant.numeric","0"], + ["text"," "], + ["keyword.operator",".."], + ["text"," "], + ["lparen","("], + ["identifier","$num_primes"], + ["constant.numeric","-1"], + ["rparen","))"] +],[ + "start", + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["lparen","("], + ["identifier","$number_to_check"], + ["text"," "], + ["keyword.operator","%"], + ["text"," "], + ["identifier","$primes"], + ["lparen","["], + ["identifier","$p"], + ["rparen","]"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["constant.numeric","0"], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","next"], + ["text"," "], + ["identifier","MAIN_LOOP"], + ["text",";"] +],[ + "start", + ["text"," "], + ["rparen","}"] +],[ + "start", + ["text"," "], + ["rparen","}"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment","# If we reached this point it means $number_to_check is not"] +],[ + "start", + ["text"," "], + ["comment","# divisable by any prime number that came before it."] +],[ + "start", + ["text"," "], + ["identifier","$primes"], + ["lparen","["], + ["identifier","$num_primes"], + ["rparen","]"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","$number_to_check"], + ["text",";"] +],[ + "start", + ["text"," "], + ["identifier","$num_primes"], + ["keyword.operator","++"], + ["text",";"] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","for"], + ["text"," "], + ["keyword","my"], + ["text"," "], + ["identifier","$p"], + ["text"," "], + ["lparen","("], + ["constant.numeric","0"], + ["text"," "], + ["keyword.operator",".."], + ["text"," "], + ["lparen","("], + ["identifier","$num_primes"], + ["constant.numeric","-1"], + ["rparen","))"] +],[ + "start", + ["lparen","{"] +],[ + "start", + ["text"," "], + ["support.function","print"], + ["text"," "], + ["identifier","$primes"], + ["lparen","["], + ["identifier","$p"], + ["rparen","]"], + ["keyword.operator",","], + ["text"," "], + ["string","\", \""], + ["text",";"] +],[ + "start", + ["rparen","}"] +],[ + "start", + ["support.function","print"], + ["text"," "], + ["string","\"\\n\""], + ["text",";"] +],[ + "start" +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pgsql.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pgsql.json new file mode 100644 index 00000000..fef23fd2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pgsql.json @@ -0,0 +1,889 @@ +[[ + "start" +],[ + "start", + ["keyword.statementBegin","BEGIN"], + ["statementEnd",";"] +],[ + "start" +],[ + "doc-start", + ["comment.doc","/**"] +],[ + "doc-start", + ["comment.doc","* Samples from PostgreSQL src/tutorial/basics.source"] +],[ + "start", + ["comment.doc","*/"] +],[ + "statement", + ["keyword.statementBegin","CREATE"], + ["text"," "], + ["keyword","TABLE"], + ["text"," "], + ["identifier","weather"], + ["text"," "], + ["paren.lparen","("] +],[ + "statement", + ["text","\t"], + ["identifier","city"], + ["text","\t\t"], + ["keyword","varchar"], + ["paren.lparen","("], + ["constant.numeric","80"], + ["paren.rparen",")"], + ["text",","] +],[ + "statement", + ["text","\t"], + ["identifier","temp_lo"], + ["text","\t\t"], + ["keyword","int"], + ["text",",\t\t"], + ["comment","-- low temperature"] +],[ + "statement", + ["text","\t"], + ["identifier","temp_hi"], + ["text","\t\t"], + ["keyword","int"], + ["text",",\t\t"], + ["comment","-- high temperature"] +],[ + "statement", + ["text","\t"], + ["identifier","prcp"], + ["text","\t\t"], + ["keyword","real"], + ["text",",\t\t"], + ["comment","-- precipitation"] +],[ + "statement", + ["text","\t"], + ["variable.language","\"date\""], + ["text","\t\t"], + ["keyword","date"] +],[ + "start", + ["paren.rparen",")"], + ["statementEnd",";"] +],[ + "start" +],[ + "statement", + ["keyword.statementBegin","CREATE"], + ["text"," "], + ["keyword","TABLE"], + ["text"," "], + ["identifier","cities"], + ["text"," "], + ["paren.lparen","("] +],[ + "statement", + ["text","\t"], + ["keyword","name"], + ["text","\t\t"], + ["keyword","varchar"], + ["paren.lparen","("], + ["constant.numeric","80"], + ["paren.rparen",")"], + ["text",","] +],[ + "statement", + ["text","\t"], + ["keyword","location"], + ["text","\t"], + ["keyword","point"] +],[ + "start", + ["paren.rparen",")"], + ["statementEnd",";"] +],[ + "start" +],[ + "start" +],[ + "statement", + ["keyword.statementBegin","INSERT"], + ["text"," "], + ["keyword","INTO"], + ["text"," "], + ["identifier","weather"] +],[ + "start", + ["text"," "], + ["keyword","VALUES"], + ["text"," "], + ["paren.lparen","("], + ["string","'San Francisco'"], + ["text",", "], + ["constant.numeric","46"], + ["text",", "], + ["constant.numeric","50"], + ["text",", "], + ["constant.numeric","0.25"], + ["text",", "], + ["string","'1994-11-27'"], + ["paren.rparen",")"], + ["statementEnd",";"] +],[ + "start" +],[ + "statement", + ["keyword.statementBegin","INSERT"], + ["text"," "], + ["keyword","INTO"], + ["text"," "], + ["identifier","cities"] +],[ + "start", + ["text"," "], + ["keyword","VALUES"], + ["text"," "], + ["paren.lparen","("], + ["string","'San Francisco'"], + ["text",", "], + ["string","'(-194.0, 53.0)'"], + ["paren.rparen",")"], + ["statementEnd",";"] +],[ + "start" +],[ + "statement", + ["keyword.statementBegin","INSERT"], + ["text"," "], + ["keyword","INTO"], + ["text"," "], + ["identifier","weather"], + ["text"," "], + ["paren.lparen","("], + ["identifier","city"], + ["text",", "], + ["identifier","temp_lo"], + ["text",", "], + ["identifier","temp_hi"], + ["text",", "], + ["identifier","prcp"], + ["text",", "], + ["variable.language","\"date\""], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","VALUES"], + ["text"," "], + ["paren.lparen","("], + ["string","'San Francisco'"], + ["text",", "], + ["constant.numeric","43"], + ["text",", "], + ["constant.numeric","57"], + ["text",", "], + ["constant.numeric","0.0"], + ["text",", "], + ["string","'1994-11-29'"], + ["paren.rparen",")"], + ["statementEnd",";"] +],[ + "start" +],[ + "statement", + ["keyword.statementBegin","INSERT"], + ["text"," "], + ["keyword","INTO"], + ["text"," "], + ["identifier","weather"], + ["text"," "], + ["paren.lparen","("], + ["keyword","date"], + ["text",", "], + ["identifier","city"], + ["text",", "], + ["identifier","temp_hi"], + ["text",", "], + ["identifier","temp_lo"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","VALUES"], + ["text"," "], + ["paren.lparen","("], + ["string","'1994-11-29'"], + ["text",", "], + ["string","'Hayward'"], + ["text",", "], + ["constant.numeric","54"], + ["text",", "], + ["constant.numeric","37"], + ["paren.rparen",")"], + ["statementEnd",";"] +],[ + "start" +],[ + "start" +],[ + "start", + ["keyword.statementBegin","SELECT"], + ["text"," "], + ["identifier","city"], + ["text",", "], + ["paren.lparen","("], + ["identifier","temp_hi"], + ["keyword.operator","+"], + ["identifier","temp_lo"], + ["paren.rparen",")"], + ["keyword.operator","/"], + ["constant.numeric","2"], + ["text"," "], + ["keyword","AS"], + ["text"," "], + ["identifier","temp_avg"], + ["text",", "], + ["variable.language","\"date\""], + ["text"," "], + ["keyword","FROM"], + ["text"," "], + ["identifier","weather"], + ["statementEnd",";"] +],[ + "start" +],[ + "statement", + ["keyword.statementBegin","SELECT"], + ["text"," "], + ["identifier","city"], + ["text",", "], + ["identifier","temp_lo"], + ["text",", "], + ["identifier","temp_hi"], + ["text",", "], + ["identifier","prcp"], + ["text",", "], + ["variable.language","\"date\""], + ["text",", "], + ["keyword","location"] +],[ + "statement", + ["text"," "], + ["keyword","FROM"], + ["text"," "], + ["identifier","weather"], + ["text",", "], + ["identifier","cities"] +],[ + "start", + ["text"," "], + ["keyword","WHERE"], + ["text"," "], + ["identifier","city"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword","name"], + ["statementEnd",";"] +],[ + "start" +],[ + "start" +],[ + "start" +],[ + "doc-start", + ["comment.doc","/**"] +],[ + "doc-start", + ["comment.doc","* Dollar quotes starting at the end of the line are colored as SQL unless"] +],[ + "doc-start", + ["comment.doc","* a special language tag is used. Dollar quote syntax coloring is implemented"] +],[ + "doc-start", + ["comment.doc","* for Perl, Python, JavaScript, and Json."] +],[ + "start", + ["comment.doc","*/"] +],[ + "statement", + ["keyword.statementBegin","create"], + ["text"," "], + ["keyword","or"], + ["text"," "], + ["keyword","replace"], + ["text"," "], + ["keyword","function"], + ["text"," "], + ["identifier","blob_content_chunked"], + ["paren.lparen","("] +],[ + "statement", + ["text"," "], + ["keyword","in"], + ["text"," "], + ["identifier","p_data"], + ["text"," "], + ["keyword","bytea"], + ["text",", "] +],[ + "statement", + ["text"," "], + ["keyword","in"], + ["text"," "], + ["identifier","p_chunk"], + ["text"," "], + ["keyword","integer"], + ["paren.rparen",")"] +],[ + "dollarSql", + ["keyword","returns"], + ["text"," "], + ["keyword","setof"], + ["text"," "], + ["keyword","bytea"], + ["text"," "], + ["keyword","as"], + ["text"," "], + ["string","$$"] +],[ + "dollarSql", + ["comment","-- Still SQL comments"] +],[ + "dollarSql", + ["keyword","declare"] +],[ + "dollarSql", + ["text","\t"], + ["identifier","v_size"], + ["text"," "], + ["keyword","integer"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","octet_length"], + ["paren.lparen","("], + ["identifier","p_data"], + ["paren.rparen",")"], + ["text",";"] +],[ + "dollarSql", + ["keyword","begin"] +],[ + "dollarSql", + ["text","\t"], + ["keyword","for"], + ["text"," "], + ["identifier","i"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["constant.numeric","1"], + ["text",".."], + ["identifier","v_size"], + ["text"," "], + ["keyword","by"], + ["text"," "], + ["identifier","p_chunk"], + ["text"," "], + ["identifier","loop"] +],[ + "dollarSql", + ["text","\t\t"], + ["identifier","return"], + ["text"," "], + ["keyword","next"], + ["text"," "], + ["keyword","substring"], + ["paren.lparen","("], + ["identifier","p_data"], + ["text"," "], + ["keyword","from"], + ["text"," "], + ["identifier","i"], + ["text"," "], + ["keyword","for"], + ["text"," "], + ["identifier","p_chunk"], + ["paren.rparen",")"], + ["text",";"] +],[ + "dollarSql", + ["text","\t"], + ["keyword","end"], + ["text"," "], + ["identifier","loop"], + ["text",";"] +],[ + "dollarSql", + ["keyword","end"], + ["text",";"] +],[ + "start", + ["string","$$"], + ["text"," "], + ["keyword","language"], + ["text"," "], + ["identifier","plpgsql"], + ["text"," "], + ["keyword","stable"], + ["statementEnd",";"] +],[ + "start" +],[ + "start" +],[ + "start", + ["comment","-- pl/perl"] +],[ + "perl-start", + ["keyword.statementBegin","CREATE"], + ["text"," "], + ["keyword","FUNCTION"], + ["text"," "], + ["identifier","perl_max"], + ["text"," "], + ["paren.lparen","("], + ["keyword","integer"], + ["text",", "], + ["keyword","integer"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","RETURNS"], + ["text"," "], + ["keyword","integer"], + ["text"," "], + ["keyword","AS"], + ["text"," "], + ["string","$perl$"] +],[ + "perl-start", + ["text"," "], + ["comment","# perl comment..."] +],[ + "perl-start", + ["text"," "], + ["keyword","my"], + ["text"," "], + ["lparen","("], + ["identifier","$x"], + ["keyword.operator",","], + ["identifier","$y"], + ["rparen",")"], + ["text"," "], + ["keyword.operator","="], + ["text"," @"], + ["identifier","_"], + ["text",";"] +],[ + "perl-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["lparen","("], + ["keyword.operator","!"], + ["text"," "], + ["support.function","defined"], + ["text"," "], + ["identifier","$x"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "perl-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["lparen","("], + ["keyword.operator","!"], + ["text"," "], + ["support.function","defined"], + ["text"," "], + ["identifier","$y"], + ["rparen",")"], + ["text"," "], + ["lparen","{"], + ["text"," "], + ["support.function","return"], + ["text"," "], + ["support.function","undef"], + ["text","; "], + ["rparen","}"] +],[ + "perl-start", + ["text"," "], + ["support.function","return"], + ["text"," "], + ["identifier","$y"], + ["text",";"] +],[ + "perl-start", + ["text"," "], + ["rparen","}"] +],[ + "perl-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["lparen","("], + ["keyword.operator","!"], + ["text"," "], + ["support.function","defined"], + ["text"," "], + ["identifier","$y"], + ["rparen",")"], + ["text"," "], + ["lparen","{"], + ["text"," "], + ["support.function","return"], + ["text"," "], + ["identifier","$x"], + ["text","; "], + ["rparen","}"] +],[ + "perl-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["lparen","("], + ["identifier","$x"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["identifier","$y"], + ["rparen",")"], + ["text"," "], + ["lparen","{"], + ["text"," "], + ["support.function","return"], + ["text"," "], + ["identifier","$x"], + ["text","; "], + ["rparen","}"] +],[ + "perl-start", + ["text"," "], + ["support.function","return"], + ["text"," "], + ["identifier","$y"], + ["text",";"] +],[ + "start", + ["string","$perl$"], + ["text"," "], + ["keyword","LANGUAGE"], + ["text"," "], + ["identifier","plperl"], + ["statementEnd",";"] +],[ + "start" +],[ + "start", + ["comment","-- pl/python"] +],[ + "python-start", + ["keyword.statementBegin","CREATE"], + ["text"," "], + ["keyword","FUNCTION"], + ["text"," "], + ["identifier","usesavedplan"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["keyword","RETURNS"], + ["text"," "], + ["keyword","trigger"], + ["text"," "], + ["keyword","AS"], + ["text"," "], + ["string","$python$"] +],[ + "python-start", + ["text"," "], + ["comment","# python comment..."] +],[ + "python-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["identifier","SD"], + ["text","."], + ["identifier","has_key"], + ["paren.lparen","("], + ["string","\"plan\""], + ["paren.rparen",")"], + ["text",":"] +],[ + "python-start", + ["text"," "], + ["identifier","plan"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","SD"], + ["paren.lparen","["], + ["string","\"plan\""], + ["paren.rparen","]"] +],[ + "python-start", + ["text"," "], + ["keyword","else"], + ["text",":"] +],[ + "python-start", + ["text"," "], + ["identifier","plan"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","plpy"], + ["text","."], + ["identifier","prepare"], + ["paren.lparen","("], + ["string","\"SELECT 1\""], + ["paren.rparen",")"] +],[ + "python-start", + ["text"," "], + ["identifier","SD"], + ["paren.lparen","["], + ["string","\"plan\""], + ["paren.rparen","]"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","plan"] +],[ + "start", + ["string","$python$"], + ["text"," "], + ["keyword","LANGUAGE"], + ["text"," "], + ["identifier","plpythonu"], + ["statementEnd",";"] +],[ + "start" +],[ + "start", + ["comment","-- pl/v8 (javascript)"] +],[ + "javascript-start", + ["keyword.statementBegin","CREATE"], + ["text"," "], + ["keyword","FUNCTION"], + ["text"," "], + ["identifier","plv8_test"], + ["paren.lparen","("], + ["identifier","keys"], + ["text"," "], + ["keyword","text"], + ["text","[], "], + ["identifier","vals"], + ["text"," "], + ["keyword","text"], + ["text","[]"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","RETURNS"], + ["text"," "], + ["keyword","text"], + ["text"," "], + ["keyword","AS"], + ["text"," "], + ["string","$javascript$"] +],[ + "javascript-start", + ["storage.type","var"], + ["text"," "], + ["identifier","o"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","{"], + ["paren.rparen","}"], + ["punctuation.operator",";"] +],[ + "javascript-start", + ["keyword","for"], + ["paren.lparen","("], + ["storage.type","var"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","="], + ["constant.numeric","0"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","<"], + ["identifier","keys"], + ["punctuation.operator","."], + ["support.constant","length"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","++"], + ["paren.rparen",")"], + ["paren.lparen","{"] +],[ + "javascript-start", + ["text"," "], + ["identifier","o"], + ["paren.lparen","["], + ["identifier","keys"], + ["paren.lparen","["], + ["identifier","i"], + ["paren.rparen","]]"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","vals"], + ["paren.lparen","["], + ["identifier","i"], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "javascript-no_regex", + ["paren.rparen","}"] +],[ + "javascript-start", + ["keyword","return"], + ["text"," "], + ["variable.language","JSON"], + ["punctuation.operator","."], + ["identifier","stringify"], + ["paren.lparen","("], + ["identifier","o"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["string","$javascript$"], + ["text"," "], + ["keyword","LANGUAGE"], + ["text"," "], + ["identifier","plv8"], + ["text"," "], + ["keyword","IMMUTABLE"], + ["text"," "], + ["keyword","STRICT"], + ["statementEnd",";"] +],[ + "start" +],[ + "start", + ["comment","-- json"] +],[ + "json-start", + ["keyword.statementBegin","select"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["keyword","from"], + ["text"," "], + ["support.function","json_object_keys"], + ["paren.lparen","("], + ["string","$json$"] +],[ + "json-start", + ["paren.lparen","{"] +],[ + "json-start", + ["text"," "], + ["variable","\"f1\""], + ["text",": "], + ["constant.numeric","5"], + ["text",","] +],[ + "json-start", + ["text"," "], + ["variable","\"f2\""], + ["text",": "], + ["string","\"test\""], + ["text",","] +],[ + "json-start", + ["text"," "], + ["variable","\"f3\""], + ["text",": "], + ["paren.lparen","{"], + ["paren.rparen","}"] +],[ + "json-start", + ["paren.rparen","}"] +],[ + "start", + ["string","$json$"], + ["paren.rparen",")"], + ["statementEnd",";"] +],[ + "start" +],[ + "start" +],[ + "start", + ["comment","-- psql commands"] +],[ + "start", + ["support.buildin","\\df cash*"] +],[ + "start" +],[ + "start" +],[ + "start", + ["comment","-- Some string samples."] +],[ + "start", + ["keyword.statementBegin","select"], + ["text"," "], + ["string","'don''t do it now;'"], + ["text"," "], + ["keyword.operator","||"], + ["text"," "], + ["string","'maybe later'"], + ["statementEnd",";"] +],[ + "start", + ["keyword.statementBegin","select"], + ["text"," "], + ["identifier","E"], + ["string","'dont\\'t do it'"], + ["statementEnd",";"] +],[ + "start", + ["keyword.statementBegin","select"], + ["text"," "], + ["support.function","length"], + ["paren.lparen","("], + ["string","'some other''s stuff'"], + ["text"," "], + ["keyword.operator","||"], + ["text"," "], + ["string","$$cat in hat's stuff $$"], + ["paren.rparen",")"], + ["statementEnd",";"] +],[ + "start" +],[ + "dollarStatementString", + ["keyword.statementBegin","select"], + ["text"," "], + ["string","$$ strings"] +],[ + "dollarStatementString", + ["string","over multiple "] +],[ + "dollarStatementString", + ["string","lines - use dollar quotes"] +],[ + "start", + ["string","$$"], + ["statementEnd",";"] +],[ + "start" +],[ + "start", + ["keyword.statementBegin","END"], + ["statementEnd",";"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_php.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_php.json new file mode 100644 index 00000000..32691257 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_php.json @@ -0,0 +1,171 @@ +[[ + "php-start", + ["support.php_tag",""], + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.script.tag-name.xml","script"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text"," "], + ["support.php_tag",""] +],[ + "js-comment1", + ["comment","/*this is js "], + ["support.php_tag",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml"," not "], + ["constant.language.escape.reference.xml","&js;"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pig.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pig.json new file mode 100644 index 00000000..cf36f789 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_pig.json @@ -0,0 +1,85 @@ +[[ + "start", + ["text","A = "], + ["keyword.control.pig","load"], + ["text"," "], + ["string.quoted.single.pig","'mobydick.txt'"], + ["text",";"] +],[ + "start", + ["text","B = "], + ["keyword.control.pig","foreach"], + ["text"," A "], + ["keyword.control.pig","generate"], + ["text"," "], + ["support.function.udf.pig","flatten"], + ["text","("], + ["support.function.udf.string.pig","TOKENIZE"], + ["text","(("], + ["storage.datatypes.pig","chararray"], + ["text",")"], + ["variable.pig","$0"], + ["text",")) "], + ["keyword.control.pig","as"], + ["text"," word;"] +],[ + "start", + ["text","C = "], + ["keyword.control.pig","filter"], + ["text"," B "], + ["keyword.control.pig","by"], + ["text"," word "], + ["keyword.operator.comparison.pig","matches"], + ["text"," "], + ["string.quoted.single.pig","'"], + ["constant.character.escape.pig","\\\\"], + ["string.quoted.single.pig","w+'"], + ["text",";"] +],[ + "start", + ["text","D = "], + ["keyword.control.pig","group"], + ["text"," C "], + ["keyword.control.pig","by"], + ["text"," word;"] +],[ + "start", + ["text","E = "], + ["keyword.control.pig","foreach"], + ["text"," D "], + ["keyword.control.pig","generate"], + ["text"," "], + ["support.function.udf.math.pig","COUNT"], + ["text","(C) "], + ["keyword.control.pig","as"], + ["text"," "], + ["support.function.udf.math.pig","count"], + ["text",", "], + ["keyword.control.pig","group"], + ["text"," "], + ["keyword.control.pig","as"], + ["text"," word;"] +],[ + "start", + ["text","F = "], + ["keyword.control.pig","order"], + ["text"," E "], + ["keyword.control.pig","by"], + ["text"," "], + ["support.function.udf.math.pig","count"], + ["text"," "], + ["keyword.control.pig","desc"], + ["text",";"] +],[ + "start", + ["comment.line.double-dash.asciidoc","-- one comment"] +],[ + "start", + ["comment.block.pig","/* another comment */"] +],[ + "start", + ["keyword.control.pig","dump"], + ["text"," F;"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_powershell.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_powershell.json new file mode 100644 index 00000000..43b77db4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_powershell.json @@ -0,0 +1,184 @@ +[[ + "start", + ["comment","# This is a simple comment"] +],[ + "start", + ["keyword","function"], + ["text"," "], + ["identifier","Hello"], + ["lparen","("], + ["variable.instance","$name"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","Write-host"], + ["text"," "], + ["string","\"Hello $name\""] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","function"], + ["text"," "], + ["identifier","add"], + ["lparen","("], + ["variable.instance","$left"], + ["text",", "], + ["variable.instance","$right"], + ["keyword.operator","="], + ["constant.numeric","4"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["lparen","("], + ["variable.instance","$right"], + ["text"," "], + ["keyword.operator","-ne"], + ["text"," "], + ["constant.numeric","4"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["variable.instance","$left"] +],[ + "start", + ["text"," "], + ["rparen","}"], + ["text"," "], + ["keyword","elseif"], + ["text"," "], + ["lparen","("], + ["variable.instance","$left"], + ["text"," "], + ["keyword.operator","-eq"], + ["text"," "], + ["constant.language","$null"], + ["text"," "], + ["keyword.operator","-and"], + ["text"," "], + ["variable.instance","$right"], + ["text"," "], + ["keyword.operator","-eq"], + ["text"," "], + ["constant.numeric","2"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["constant.numeric","3"] +],[ + "start", + ["text"," "], + ["rparen","}"], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["constant.numeric","2"] +],[ + "start", + ["text"," "], + ["rparen","}"] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["variable.instance","$number"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","2"], + ["text",";"] +],[ + "start", + ["variable.instance","$number"], + ["text"," "], + ["keyword.operator","+="], + ["text"," "], + ["constant.numeric","3"] +],[ + "start" +],[ + "start", + ["support.function","Write-Host"], + ["text"," "], + ["identifier","Hello"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","name"], + ["text"," "], + ["string","\"World\""] +],[ + "start" +],[ + "start", + ["variable.instance","$an_array"], + ["text"," "], + ["keyword.operator","="], + ["text"," @"], + ["lparen","("], + ["constant.numeric","1"], + ["text",", "], + ["constant.numeric","2"], + ["text",", "], + ["constant.numeric","3"], + ["rparen",")"] +],[ + "start", + ["variable.instance","$a_hash"], + ["text"," "], + ["keyword.operator","="], + ["text"," @"], + ["lparen","{"], + ["string","\"something\""], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"something else\""], + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword.operator","&"], + ["text"," "], + ["identifier","notepad"], + ["text"," .\\"], + ["identifier","readme"], + ["text","."], + ["identifier","md"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_praat.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_praat.json new file mode 100644 index 00000000..2dff34bf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_praat.json @@ -0,0 +1,955 @@ +[[ + "form", + ["keyword","form"], + ["text"," "], + ["entity.name.section","Highlighter test"] +],[ + "form", + ["text"," "], + ["keyword","sentence "], + ["text","My_sentence "], + ["string","This should all be a string"] +],[ + "form", + ["text"," "], + ["keyword","text "], + ["text","My_text "], + ["string","This should also all be a string"] +],[ + "form", + ["text"," "], + ["keyword","word "], + ["text","My_word "], + ["string","Only"], + ["invalid.illegal"," the first word is a string, the rest is invalid"] +],[ + "form", + ["text"," "], + ["keyword","boolean "], + ["text","Binary "], + ["constant.language","1"] +],[ + "form", + ["text"," "], + ["keyword","boolean "], + ["text","Text "], + ["constant.language","no"] +],[ + "form", + ["text"," "], + ["keyword","boolean "], + ["text","Quoted "], + ["constant.language","\"yes\""] +],[ + "form", + ["text"," "], + ["keyword","comment "], + ["string","This should be a string"] +],[ + "form", + ["text"," "], + ["keyword","real "], + ["text","left_Range "], + ["constant.numeric","-123.6"] +],[ + "form", + ["text"," "], + ["keyword","positive "], + ["text","right_Range_max "], + ["constant.numeric","3.3"] +],[ + "form", + ["text"," "], + ["keyword","integer "], + ["text","Int "], + ["constant.numeric","4"] +],[ + "form", + ["text"," "], + ["keyword","natural "], + ["text","Nat "], + ["constant.numeric","4"] +],[ + "start", + ["keyword","endform"] +],[ + "start" +],[ + "start", + ["comment","# External scripts"] +],[ + "start", + ["keyword","include"], + ["text"," "], + ["string","/path/to/file"] +],[ + "start", + ["support.function","runScript"], + ["text",":"], + ["text"," "], + ["string","\"/path/to/file\""] +],[ + "start", + ["keyword","execute"], + ["text"," "], + ["string","/path/to/file"] +],[ + "start" +],[ + "start", + ["keyword","stopwatch"] +],[ + "start" +],[ + "start", + ["comment","# old-style procedure call"] +],[ + "start", + ["keyword","call"], + ["text"," "], + ["entity.name.function","oldStyle"], + ["text"," "], + ["string","\"quoted\""], + ["text"," "], + ["constant.numeric","2"], + ["text"," unquoted string"] +],[ + "start", + ["keyword","assert"], + ["text"," oldStyle.local"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"] +],[ + "start" +],[ + "start", + ["comment","# New-style procedure call with parens"] +],[ + "start", + ["entity.name.function","@newStyle"], + ["text","("], + ["string","\"quoted\""], + ["text",", "], + ["constant.numeric","2"], + ["text",", "], + ["string","\"quoted string\""], + ["text",")"] +],[ + "start", + ["keyword","if"], + ["text"," "], + ["variable.language","praatVersion"], + ["text"," "], + ["keyword.operator",">="], + ["text"," "], + ["constant.numeric","5364"], + ["text"," "] +],[ + "start", + ["comment"," # New-style procedure call with colon"] +],[ + "start", + ["text"," "], + ["entity.name.function","@newStyle"], + ["text",":"], + ["text"," "], + ["string","\"quoted\""], + ["text",", "], + ["constant.numeric","2"], + ["text",", "], + ["string","\"quoted string\""] +],[ + "start", + ["keyword","endif"] +],[ + "start" +],[ + "start", + ["comment","# if-block with built-in variables"] +],[ + "start", + ["keyword","if"], + ["text"," "], + ["variable.language","windows"] +],[ + "start", + ["comment"," # We are on Windows"] +],[ + "start", + ["keyword","elsif"], + ["text"," "], + ["variable.language","unix"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["keyword.operator","or"], + ["text"," "], + ["text","!"], + ["variable.language","macintosh"] +],[ + "start", + ["text"," "], + ["support.function","exitScript"], + ["text",":"], + ["text"," "], + ["string","\"We are on Linux\""] +],[ + "start", + ["keyword","else"], + ["text"," "], + ["variable.language","macintosh"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","exit"], + ["text"," "], + ["string","We are on Mac"] +],[ + "start", + ["keyword","endif"] +],[ + "start" +],[ + "start", + ["comment","# inline if with inline comment"] +],[ + "start", + ["text","var"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable.language","macintosh"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["keyword","then"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["keyword","fi"], + ["text"," "], + ["comment","; This is an inline comment"] +],[ + "start" +],[ + "start", + ["comment","# for-loop with explicit from using local variable"] +],[ + "start", + ["comment","# and paren-style function calls and variable interpolation"] +],[ + "start", + ["text","n"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","numberOfSelected"], + ["text","("], + ["string","\"Sound\""], + ["text",")"] +],[ + "start", + ["keyword","for"], + ["text"," i "], + ["keyword","from"], + ["text"," newStyle.local "], + ["keyword","to"], + ["text"," n"] +],[ + "start", + ["text"," sound"], + ["string.interpolated","'i'"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","selected"], + ["text","("], + ["string","\"Sound\""], + ["text",", i)"] +],[ + "start", + ["text"," sound[i]"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["text","sound"], + ["string.interpolated","'i'"] +],[ + "start", + ["keyword","endfor"] +],[ + "start" +],[ + "start", + ["keyword","for"], + ["text"," i "], + ["keyword","from"], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["keyword","to"], + ["text"," n"] +],[ + "start", + ["comment"," # Different styles of object selection"] +],[ + "start", + ["text"," "], + ["keyword","select"], + ["text"," sound"], + ["string.interpolated","'i'"] +],[ + "start", + ["text"," sound"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","selected"], + ["text","("], + ["text",")"] +],[ + "start", + ["text"," sound$"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","selected$"], + ["text","("], + ["string","\"Sound\""], + ["text",")"] +],[ + "start", + ["text"," "], + ["keyword","select"], + ["text"," "], + ["entity.name.type","Sound"], + ["text"," "], + ["string.interpolated","'sound$'"] +],[ + "start", + ["text"," "], + ["support.function","selectObject"], + ["text","("], + ["text","sound[i])"] +],[ + "start", + ["text"," "], + ["support.function","selectObject"], + ["text",":"], + ["text"," sound"] +],[ + "start", + ["text"," "] +],[ + "start", + ["comment"," # Pause commands"] +],[ + "start", + ["text"," "], + ["support.function","beginPause"], + ["text","("], + ["string","\"Viewing \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["text","sound$)"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," i"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," button"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","endPause"], + ["text","("], + ["string","\"Stop\""], + ["text",", "], + ["string","\"Previous\""], + ["text",","] +],[ + "start", + ["text"," ..."], + ["keyword","if"], + ["text"," i"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["text","total_sounds "], + ["keyword","then"], + ["text"," "], + ["string","\"Finish\""], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["string","\"Next\""], + ["text"," "], + ["keyword","fi"], + ["text",","] +],[ + "start", + ["text"," ..."], + ["constant.numeric","3"], + ["text",", "], + ["constant.numeric","1"], + ["text",")"] +],[ + "start", + ["text"," "], + ["keyword","else"] +],[ + "start", + ["text"," button"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","endPause"], + ["text","("], + ["string","\"Stop\""], + ["text",","] +],[ + "start", + ["text"," ..."], + ["keyword","if"], + ["text"," i"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["text","total_sounds "], + ["keyword","then"], + ["text"," "], + ["string","\"Finish\""], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["string","\"Next\""], + ["text"," "], + ["keyword","fi"], + ["text",","] +],[ + "start", + ["text"," ..."], + ["constant.numeric","2"], + ["text",", "], + ["constant.numeric","1"], + ["text",") "] +],[ + "start", + ["text"," "], + ["keyword","endif"] +],[ + "start", + ["text"," editor_name$"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword","if"], + ["text"," total_textgrids "], + ["keyword","then"], + ["text"," "], + ["string","\"TextGrid \""], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["string","\"Sound \""], + ["text"," "], + ["keyword","fi"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["text","name$"] +],[ + "start", + ["text"," nocheck editor "], + ["string.interpolated","'editor_name$'"] +],[ + "start", + ["text"," "], + ["keyword","nocheck"], + ["text"," "], + ["keyword","Close"] +],[ + "start", + ["text"," nocheck endeditor"] +],[ + "start", + ["text"," "] +],[ + "start", + ["comment"," # New-style standalone command call"] +],[ + "start", + ["text"," "], + ["keyword","Rename:"], + ["text"," "], + ["string","\"SomeName\""] +],[ + "start" +],[ + "start", + ["comment"," # Command call with assignment"] +],[ + "start", + ["text"," "], + ["text","duration "], + ["keyword.operator","="], + ["text"," "], + ["keyword","Get total duration"] +],[ + "start", + ["text"," "] +],[ + "start", + ["comment"," # Multi-line command with modifier"] +],[ + "start", + ["text"," "], + ["text","pitch "], + ["keyword.operator","="], + ["text"," "], + ["keyword","noprogress"], + ["text"," "], + ["keyword","To Pitch (ac):"], + ["text"," "], + ["constant.numeric","0"], + ["text",", "], + ["constant.numeric","75"], + ["text",", "], + ["constant.numeric","15"], + ["text",", "], + ["string","\"no\""], + ["text",","] +],[ + "start", + ["text"," ..."], + ["constant.numeric","0.03"], + ["text",", "], + ["constant.numeric","0.45"], + ["text",", "], + ["constant.numeric","0.01"], + ["text",", "], + ["constant.numeric","0.35"], + ["text",", "], + ["constant.numeric","0.14"], + ["text",", "], + ["constant.numeric","600"] +],[ + "start", + ["text"," "] +],[ + "start", + ["comment"," # do-style command with assignment"] +],[ + "start", + ["text"," minimum"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","do"], + ["text","("], + ["string","\"Get minimum...\""], + ["text",", "], + ["constant.numeric","0"], + ["text",", "], + ["constant.numeric","0"], + ["text",", "], + ["string","\"Hertz\""], + ["text",", "], + ["string","\"Parabolic\""], + ["text",")"] +],[ + "start" +],[ + "start", + ["comment"," # New-style multi-line command call with broken strings"] +],[ + "start", + ["text"," "], + ["text","table "], + ["keyword.operator","="], + ["text"," "], + ["keyword","Create Table with column names:"], + ["text"," "], + ["string","\"table\""], + ["text",", "], + ["constant.numeric","0"], + ["text",","] +],[ + "brokenstring", + ["text"," ..."], + ["string","\"file subject speaker"] +],[ + "start", + ["text"," ..."], + ["string","f0 f1 f2 f3 "], + ["string","\""], + ["text"," +"] +],[ + "start", + ["text"," ..."], + ["string","\"duration response\""] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["support.function","removeObject"], + ["text",":"], + ["text"," pitch, table"] +],[ + "start", + ["text"," "] +],[ + "start", + ["comment"," # Picture window commands"] +],[ + "start", + ["text"," "], + ["support.function","selectObject"], + ["text",":"], + ["text"," sound"] +],[ + "start", + ["comment"," # do-style command"] +],[ + "start", + ["text"," "], + ["support.function","do"], + ["text","("], + ["string","\"Select inner viewport...\""], + ["text",", "], + ["constant.numeric","1"], + ["text",", "], + ["constant.numeric","6"], + ["text",", "], + ["constant.numeric","0.5"], + ["text",", "], + ["constant.numeric","1.5"], + ["text",")"] +],[ + "start", + ["text"," "], + ["keyword","Black"] +],[ + "start", + ["text"," "], + ["keyword","Draw..."], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["string","\"no\""], + ["text"," Curve"] +],[ + "start", + ["text"," "], + ["keyword","Draw inner box"] +],[ + "start", + ["text"," "], + ["keyword","Text bottom:"], + ["text"," "], + ["string","\"yes\""], + ["text",", sound$"] +],[ + "start", + ["text"," "], + ["keyword","Erase all"] +],[ + "start", + ["text"," "] +],[ + "start", + ["comment"," # Demo window commands"] +],[ + "start", + ["text"," "], + ["keyword","demo"], + ["text"," "], + ["keyword","Erase all"] +],[ + "start", + ["text"," "], + ["keyword","demo"], + ["text"," "], + ["keyword","Select inner viewport..."], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","100"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","100"] +],[ + "start", + ["text"," "], + ["keyword","demo"], + ["text"," "], + ["keyword","Axes..."], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","100"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","100"] +],[ + "start", + ["text"," "], + ["keyword","demo"], + ["text"," "], + ["keyword","Paint rectangle..."], + ["text"," white "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","100"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","100"] +],[ + "start", + ["text"," "], + ["keyword","demo"], + ["text"," "], + ["keyword","Text..."], + ["text"," "], + ["constant.numeric","50"], + ["text"," centre "], + ["constant.numeric","50"], + ["text"," half Click to finish"] +],[ + "start", + ["text"," "], + ["support.function","demoWaitForInput"], + ["text"," ("], + ["text"," )"] +],[ + "start", + ["text"," "], + ["keyword","demo"], + ["text"," "], + ["keyword","Erase all"] +],[ + "start", + ["text"," "], + ["keyword","demo"], + ["text"," "], + ["keyword","Text:"], + ["text"," "], + ["constant.numeric","50"], + ["text",", "], + ["string","\"centre\""], + ["text",", "], + ["constant.numeric","50"], + ["text",", "], + ["string","\"half\""], + ["text",", "], + ["string","\"Finished\""] +],[ + "start", + ["keyword","endfor"] +],[ + "start" +],[ + "start", + ["comment","# An old-style sendpraat block"] +],[ + "start", + ["keyword","sendpraat"], + ["text"," "], + ["string","Praat"] +],[ + "start", + ["text"," ..."], + ["string.interpolated","'newline$'"], + ["text"," Create "], + ["entity.name.type","Sound"], + ["text"," as pure tone... "], + ["string","\"tone\""], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","0.4"], + ["text"," "], + ["constant.numeric","44100"], + ["text"," "], + ["constant.numeric","440"], + ["text"," "], + ["constant.numeric","0.2"], + ["text"," "], + ["constant.numeric","0.01"], + ["text"," "], + ["constant.numeric","0.01"] +],[ + "start", + ["text"," ..."], + ["string.interpolated","'newline$'"], + ["text"," Play"] +],[ + "start", + ["text"," ..."], + ["string.interpolated","'newline$'"], + ["text"," Remove"] +],[ + "start" +],[ + "start", + ["comment","# A new-style sendpraat block"] +],[ + "start", + ["support.function","beginSendPraat"], + ["text",":"], + ["text"," "], + ["string","\"Praat\""] +],[ + "start", + ["text"," "], + ["keyword","Create Sound as pure tone:"], + ["text"," "], + ["string","\"tone\""], + ["text",", "], + ["constant.numeric","1"], + ["text",", "], + ["constant.numeric","0"], + ["text",", "], + ["constant.numeric","0.4"], + ["text",", "], + ["constant.numeric","44100"], + ["text",", "], + ["constant.numeric","440"], + ["text",", "], + ["constant.numeric","0.2"], + ["text",", "], + ["constant.numeric","0.01"], + ["text",", "], + ["constant.numeric","0.01"] +],[ + "start", + ["text"," "], + ["text","duration "], + ["keyword.operator","="], + ["text"," "], + ["keyword","Get total duration"] +],[ + "start", + ["text"," "], + ["keyword","Remove"] +],[ + "start", + ["support.function","endSendPraat"], + ["text",":"], + ["text"," "], + ["string","\"duration\""] +],[ + "start", + ["support.function","appendInfoLine"], + ["text",":"], + ["text"," "], + ["string","\"The generated sound lasted for \""], + ["text",", duration, "], + ["string","\"seconds\""] +],[ + "start" +],[ + "start", + ["text","time "], + ["keyword.operator","="], + ["text"," "], + ["keyword","stopwatch"] +],[ + "start", + ["keyword","clearinfo"] +],[ + "start", + ["keyword","echo"], + ["text"," "], + ["string","This script took "] +],[ + "start", + ["keyword","print"], + ["text"," "], + ["string","'time' seconds to "] +],[ + "start", + ["keyword","printline"], + ["text"," "], + ["string","execute."] +],[ + "start" +],[ + "start", + ["comment","# Old-style procedure declaration"] +],[ + "start", + ["keyword","procedure"], + ["text"," "], + ["entity.name.function","oldStyle"], + ["text"," .str1$ .num .str2$"] +],[ + "start", + ["text"," .local"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["keyword","endproc"] +],[ + "start" +],[ + "start", + ["comment","# New-style procedure declaration"] +],[ + "start", + ["keyword","procedure"], + ["text"," "], + ["entity.name.function","newStyle"], + ["text"," (.str1$, .num, .str2$)"] +],[ + "start", + ["text"," .local"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["keyword","endproc"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_prolog.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_prolog.json new file mode 100644 index 00000000..4c0f5c5c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_prolog.json @@ -0,0 +1,245 @@ +[[ + "start", + ["entity.name.function.fact.prolog","partition"], + ["punctuation.begin.fact.parameters.prolog","("], + ["punctuation.begin.list.prolog","["], + ["punctuation.end.list.prolog","]"], + ["punctuation.separator.parameters.prolog",","], + ["meta.fact.prolog"," "], + ["variable.language.anonymous.prolog","_"], + ["punctuation.separator.parameters.prolog",","], + ["meta.fact.prolog"," "], + ["punctuation.begin.list.prolog","["], + ["punctuation.end.list.prolog","]"], + ["punctuation.separator.parameters.prolog",","], + ["meta.fact.prolog"," "], + ["punctuation.begin.list.prolog","["], + ["punctuation.end.list.prolog","]"], + ["punctuation.end.fact.parameters.prolog",")"], + ["punctuation.end.fact.prolog","."] +],[ + ["keyword.operator.definition.prolog","meta.rule.prolog"], + ["entity.name.function.rule.prolog","partition"], + ["punctuation.rule.parameters.begin.prolog","("], + ["punctuation.begin.list.prolog","["], + ["variable.other.prolog","X"], + ["punctuation.concat.list.prolog","|"], + ["variable.other.prolog","Xs"], + ["punctuation.end.list.prolog","]"], + ["punctuation.separator.parameters.prolog",","], + ["meta.rule.parameters.prolog"," "], + ["variable.parameter.prolog","Pivot"], + ["punctuation.separator.parameters.prolog",","], + ["meta.rule.parameters.prolog"," "], + ["variable.parameter.prolog","Smalls"], + ["punctuation.separator.parameters.prolog",","], + ["meta.rule.parameters.prolog"," "], + ["variable.parameter.prolog","Bigs"], + ["punctuation.rule.parameters.end.prolog",")"], + ["meta.rule.signature.prolog"," "], + ["keyword.operator.definition.prolog",":-"] +],[ + ["meta.expression.prolog","keyword.operator.definition.prolog","keyword.operator.definition.prolog","meta.rule.prolog"], + ["meta.rule.definition.prolog"," "], + ["meta.expression.prolog","( "], + ["variable.other.prolog","X"], + ["meta.expression.prolog"," @"], + ["keyword.operator.prolog","<"], + ["meta.expression.prolog"," "], + ["variable.other.prolog","Pivot"], + ["meta.expression.prolog"," "], + ["keyword.operator.prolog","->"] +],[ + ["meta.expression.prolog","keyword.operator.definition.prolog","keyword.operator.definition.prolog","meta.rule.prolog"], + ["meta.expression.prolog"," "], + ["variable.other.prolog","Smalls"], + ["meta.expression.prolog"," "], + ["keyword.operator.prolog","="], + ["meta.expression.prolog"," "], + ["punctuation.begin.list.prolog","["], + ["variable.other.prolog","X"], + ["punctuation.concat.list.prolog","|"], + ["variable.other.prolog","Rest"], + ["punctuation.end.list.prolog","]"], + ["punctuation.control.and.prolog",","] +],[ + ["meta.expression.prolog","keyword.operator.definition.prolog","keyword.operator.definition.prolog","meta.rule.prolog"], + ["meta.expression.prolog"," "], + ["constant.other.atom.prolog","partition"], + ["punctuation.begin.statement.parameters.prolog","("], + ["variable.other.prolog","Xs"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","Pivot"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","Rest"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","Bigs"], + ["punctuation.end.statement.parameters.prolog",")"] +],[ + ["meta.expression.prolog","keyword.operator.definition.prolog","keyword.operator.definition.prolog","meta.rule.prolog"], + ["meta.expression.prolog"," "], + ["punctuation.control.or.prolog",";"], + ["meta.expression.prolog"," "], + ["variable.other.prolog","Bigs"], + ["meta.expression.prolog"," "], + ["keyword.operator.prolog","="], + ["meta.expression.prolog"," "], + ["punctuation.begin.list.prolog","["], + ["variable.other.prolog","X"], + ["punctuation.concat.list.prolog","|"], + ["variable.other.prolog","Rest"], + ["punctuation.end.list.prolog","]"], + ["punctuation.control.and.prolog",","] +],[ + ["meta.expression.prolog","keyword.operator.definition.prolog","keyword.operator.definition.prolog","meta.rule.prolog"], + ["meta.expression.prolog"," "], + ["constant.other.atom.prolog","partition"], + ["punctuation.begin.statement.parameters.prolog","("], + ["variable.other.prolog","Xs"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","Pivot"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","Smalls"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","Rest"], + ["punctuation.end.statement.parameters.prolog",")"] +],[ + "start", + ["meta.expression.prolog"," )"], + ["punctuation.rule.end.prolog","."] +],[ + "start", + ["text"," "] +],[ + "start", + ["entity.name.function.fact.prolog","quicksort"], + ["punctuation.begin.fact.parameters.prolog","("], + ["punctuation.begin.list.prolog","["], + ["punctuation.end.list.prolog","]"], + ["punctuation.end.fact.parameters.prolog",")"], + ["text"," --> []."] +],[ + "start", + ["entity.name.function.fact.prolog","quicksort"], + ["punctuation.begin.fact.parameters.prolog","("], + ["punctuation.begin.list.prolog","["], + ["variable.other.prolog","X"], + ["punctuation.concat.list.prolog","|"], + ["variable.other.prolog","Xs"], + ["punctuation.end.list.prolog","]"], + ["punctuation.end.fact.parameters.prolog",")"], + ["text"," -->"] +],[ + "start", + ["text"," { "], + ["entity.name.function.fact.prolog","partition"], + ["punctuation.begin.fact.parameters.prolog","("], + ["variable.parameter.prolog","Xs"], + ["punctuation.separator.parameters.prolog",","], + ["meta.fact.prolog"," "], + ["variable.parameter.prolog","X"], + ["punctuation.separator.parameters.prolog",","], + ["meta.fact.prolog"," "], + ["variable.parameter.prolog","Smaller"], + ["punctuation.separator.parameters.prolog",","], + ["meta.fact.prolog"," "], + ["variable.parameter.prolog","Bigger"], + ["punctuation.end.fact.parameters.prolog",")"], + ["text"," },"] +],[ + "start", + ["text"," "], + ["entity.name.function.fact.prolog","quicksort"], + ["punctuation.begin.fact.parameters.prolog","("], + ["variable.parameter.prolog","Smaller"], + ["punctuation.end.fact.parameters.prolog",")"], + ["text",", [X], "], + ["entity.name.function.fact.prolog","quicksort"], + ["punctuation.begin.fact.parameters.prolog","("], + ["variable.parameter.prolog","Bigger"], + ["punctuation.end.fact.parameters.prolog",")"], + ["punctuation.end.fact.prolog","."] +],[ + "start" +],[ + ["keyword.operator.definition.prolog","meta.rule.prolog"], + ["entity.name.function.rule.prolog","perfect"], + ["punctuation.rule.parameters.begin.prolog","("], + ["variable.parameter.prolog","N"], + ["punctuation.rule.parameters.end.prolog",")"], + ["meta.rule.signature.prolog"," "], + ["keyword.operator.definition.prolog",":-"] +],[ + ["keyword.operator.definition.prolog","meta.rule.prolog"], + ["meta.rule.definition.prolog"," "], + ["constant.other.atom.prolog","between"], + ["punctuation.begin.statement.parameters.prolog","("], + ["constant.numeric.prolog","1"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["constant.other.atom.prolog","inf"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","N"], + ["punctuation.end.statement.parameters.prolog",")"], + ["punctuation.control.and.prolog",","], + ["meta.rule.definition.prolog"," "], + ["variable.other.prolog","U"], + ["meta.rule.definition.prolog"," "], + ["keyword.operator.prolog","is"], + ["meta.rule.definition.prolog"," "], + ["variable.other.prolog","N"], + ["meta.rule.definition.prolog"," // "], + ["constant.numeric.prolog","2"], + ["punctuation.control.and.prolog",","] +],[ + ["keyword.operator.definition.prolog","meta.rule.prolog"], + ["meta.rule.definition.prolog"," "], + ["constant.other.atom.prolog","findall"], + ["punctuation.begin.statement.parameters.prolog","("], + ["variable.other.prolog","D"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," ("], + ["constant.other.atom.prolog","between"], + ["punctuation.begin.statement.parameters.prolog","("], + ["constant.numeric.prolog","1"], + ["punctuation.separator.statement.prolog",","], + ["variable.other.prolog","U"], + ["punctuation.separator.statement.prolog",","], + ["variable.other.prolog","D"], + ["punctuation.end.statement.parameters.prolog",")"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","N"], + ["meta.statement.parameters.prolog"," "], + ["constant.other.atom.prolog","mod"], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","D"], + ["meta.statement.parameters.prolog"," "], + ["keyword.operator.prolog","=:="], + ["meta.statement.parameters.prolog"," "], + ["constant.numeric.prolog","0"], + ["punctuation.end.statement.parameters.prolog",")"], + ["punctuation.control.and.prolog",","], + ["meta.rule.definition.prolog"," "], + ["variable.other.prolog","Ds"], + ["meta.rule.definition.prolog",")"], + ["punctuation.control.and.prolog",","] +],[ + "start", + ["meta.rule.definition.prolog"," "], + ["constant.other.atom.prolog","sumlist"], + ["punctuation.begin.statement.parameters.prolog","("], + ["variable.other.prolog","Ds"], + ["punctuation.separator.statement.prolog",","], + ["meta.statement.parameters.prolog"," "], + ["variable.other.prolog","N"], + ["punctuation.end.statement.parameters.prolog",")"], + ["punctuation.rule.end.prolog","."] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_properties.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_properties.json new file mode 100644 index 00000000..8831045e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_properties.json @@ -0,0 +1,68 @@ +[[ + "start", + ["comment","# You are reading the \".properties\" entry."] +],[ + "start", + ["comment","! The exclamation mark can also mark text as comments."] +],[ + "start", + ["comment","# The key and element characters #, !, =, and : are written with a preceding backslash to ensure that they are properly loaded."] +],[ + "start", + ["variable","website "], + ["keyword","="], + ["string"," http"], + ["constant.language.escape","\\"], + ["string","://en.wikipedia.org/"] +],[ + "start", + ["variable","language "], + ["keyword","="], + ["string"," English"] +],[ + "start", + ["comment","# The backslash below tells the application to continue reading"] +],[ + "start", + ["comment","# the value onto the next line."] +],[ + "value", + ["variable","message "], + ["keyword","="], + ["string"," Welcome to \\"] +],[ + "start", + ["string"," Wikipedia!"] +],[ + "start", + ["comment","# Add spaces to the key"] +],[ + "start", + ["variable","key"], + ["constant.language.escape","\\"], + ["variable"," with"], + ["constant.language.escape","\\"], + ["variable"," spaces "], + ["keyword","="], + ["string"," This is the value that could be looked up with the key \"key with spaces\"."] +],[ + "start", + ["comment","# Unicode"] +],[ + "start", + ["variable","tab "], + ["keyword",":"], + ["string"," "], + ["constant.language.escape","\\u0009"] +],[ + "start", + ["variable","empty-key"], + ["keyword","="] +],[ + "start", + ["variable","last.line"], + ["keyword","="], + ["string","value"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_protobuf.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_protobuf.json new file mode 100644 index 00000000..469dba06 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_protobuf.json @@ -0,0 +1,136 @@ +[[ + "start", + ["keyword.declaration.protobuf","message"], + ["text"," "], + ["identifier","Point"], + ["text"," {"] +],[ + "start", + ["text"," "], + ["keyword.declaration.protobuf","required"], + ["text"," "], + ["support.type","int32"], + ["text"," "], + ["identifier","x"], + ["text"," "], + ["keyword.operator.assignment.protobuf","="], + ["text"," "], + ["constant.numeric","1"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword.declaration.protobuf","required"], + ["text"," "], + ["support.type","int32"], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["keyword.operator.assignment.protobuf","="], + ["text"," "], + ["constant.numeric","2"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword.declaration.protobuf","optional"], + ["text"," "], + ["support.type","string"], + ["text"," "], + ["identifier","label"], + ["text"," "], + ["keyword.operator.assignment.protobuf","="], + ["text"," "], + ["constant.numeric","3"], + ["text",";"] +],[ + "start", + ["text","}"] +],[ + "start" +],[ + "start", + ["keyword.declaration.protobuf","message"], + ["text"," "], + ["identifier","Line"], + ["text"," {"] +],[ + "start", + ["text"," "], + ["keyword.declaration.protobuf","required"], + ["text"," "], + ["identifier","Point"], + ["text"," "], + ["identifier","start"], + ["text"," "], + ["keyword.operator.assignment.protobuf","="], + ["text"," "], + ["constant.numeric","1"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword.declaration.protobuf","required"], + ["text"," "], + ["identifier","Point"], + ["text"," "], + ["identifier","end"], + ["text"," "], + ["keyword.operator.assignment.protobuf","="], + ["text"," "], + ["constant.numeric","2"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword.declaration.protobuf","optional"], + ["text"," "], + ["support.type","string"], + ["text"," "], + ["identifier","label"], + ["text"," "], + ["keyword.operator.assignment.protobuf","="], + ["text"," "], + ["constant.numeric","3"], + ["text",";"] +],[ + "start", + ["text","}"] +],[ + "start" +],[ + "start", + ["keyword.declaration.protobuf","message"], + ["text"," "], + ["identifier","Polyline"], + ["text"," {"] +],[ + "start", + ["text"," "], + ["keyword.declaration.protobuf","repeated"], + ["text"," "], + ["identifier","Point"], + ["text"," "], + ["identifier","point"], + ["text"," "], + ["keyword.operator.assignment.protobuf","="], + ["text"," "], + ["constant.numeric","1"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword.declaration.protobuf","optional"], + ["text"," "], + ["support.type","string"], + ["text"," "], + ["identifier","label"], + ["text"," "], + ["keyword.operator.assignment.protobuf","="], + ["text"," "], + ["constant.numeric","2"], + ["text",";"] +],[ + "start", + ["text","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_python.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_python.json new file mode 100644 index 00000000..293c8ff2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_python.json @@ -0,0 +1,152 @@ +[[ + "start", + ["comment","#!/usr/local/bin/python"] +],[ + "start" +],[ + "start", + ["keyword","import"], + ["text"," "], + ["identifier","string"], + ["text",", "], + ["identifier","sys"] +],[ + "start" +],[ + "start", + ["comment","# If no arguments were given, print a helpful message"] +],[ + "start", + ["keyword","if"], + ["text"," "], + ["support.function","len"], + ["paren.lparen","("], + ["identifier","sys"], + ["text","."], + ["identifier","argv"], + ["paren.rparen",")"], + ["keyword.operator","=="], + ["constant.numeric","1"], + ["text",":"] +],[ + "qstring3", + ["text"," "], + ["keyword","print"], + ["text"," "], + ["string","'''Usage:"] +],[ + "start", + ["string","celsius temp1 temp2 ...'''"] +],[ + "start", + ["text"," "], + ["identifier","sys"], + ["text","."], + ["identifier","exit"], + ["paren.lparen","("], + ["constant.numeric","0"], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["comment","# Loop over the arguments"] +],[ + "start", + ["keyword","for"], + ["text"," "], + ["identifier","i"], + ["text"," "], + ["keyword","in"], + ["text"," "], + ["identifier","sys"], + ["text","."], + ["identifier","argv"], + ["paren.lparen","["], + ["constant.numeric","1"], + ["text",":"], + ["paren.rparen","]"], + ["text",":"] +],[ + "start", + ["text"," "], + ["keyword","try"], + ["text",":"] +],[ + "start", + ["text"," "], + ["identifier","fahrenheit"], + ["keyword.operator","="], + ["support.function","float"], + ["paren.lparen","("], + ["identifier","string"], + ["text","."], + ["identifier","atoi"], + ["paren.lparen","("], + ["identifier","i"], + ["paren.rparen","))"] +],[ + "start", + ["text"," "], + ["keyword","except"], + ["text"," "], + ["identifier","string"], + ["text","."], + ["identifier","atoi_error"], + ["text",":"] +],[ + "start", + ["text"," "], + ["keyword","print"], + ["text"," "], + ["support.function","repr"], + ["paren.lparen","("], + ["identifier","i"], + ["paren.rparen",")"], + ["text",", "], + ["string","\"not a numeric value\""] +],[ + "start", + ["text"," "], + ["keyword","else"], + ["text",":"] +],[ + "start", + ["text"," "], + ["identifier","celsius"], + ["keyword.operator","="], + ["paren.lparen","("], + ["identifier","fahrenheit"], + ["keyword.operator","-"], + ["constant.numeric","32"], + ["paren.rparen",")"], + ["keyword.operator","*"], + ["constant.numeric","5.0"], + ["keyword.operator","/"], + ["constant.numeric","9.0"] +],[ + "start", + ["text"," "], + ["keyword","print"], + ["text"," "], + ["string","'%i"], + ["constant.language.escape","\\260"], + ["string","F = %i"], + ["constant.language.escape","\\260"], + ["string","C'"], + ["text"," "], + ["keyword.operator","%"], + ["text"," "], + ["paren.lparen","("], + ["support.function","int"], + ["paren.lparen","("], + ["identifier","fahrenheit"], + ["paren.rparen",")"], + ["text",", "], + ["support.function","int"], + ["paren.lparen","("], + ["identifier","celsius"], + ["keyword.operator","+"], + ["constant.numeric",".5"], + ["paren.rparen","))"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_r.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_r.json new file mode 100644 index 00000000..2d446bce --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_r.json @@ -0,0 +1,235 @@ +[[ + "start", + ["identifier","Call"], + ["keyword.operator",":"] +],[ + "start", + ["identifier","lm"], + ["paren.keyword.operator","("], + ["identifier","formula"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","y"], + ["text"," "], + ["keyword.operator","~"], + ["text"," "], + ["identifier","x"], + ["paren.keyword.operator",")"] +],[ + "start", + ["text"," "] +],[ + "start", + ["identifier","Residuals"], + ["keyword.operator",":"] +],[ + "start", + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["constant.numeric","3"], + ["text"," "], + ["constant.numeric","4"], + ["text"," "], + ["constant.numeric","5"], + ["text"," "], + ["constant.numeric","6"] +],[ + "start", + ["constant.numeric","3.3333"], + ["text"," "], + ["keyword.operator","-"], + ["constant.numeric","0.6667"], + ["text"," "], + ["keyword.operator","-"], + ["constant.numeric","2.6667"], + ["text"," "], + ["keyword.operator","-"], + ["constant.numeric","2.6667"], + ["text"," "], + ["keyword.operator","-"], + ["constant.numeric","0.6667"], + ["text"," "], + ["constant.numeric","3.3333"] +],[ + "start", + ["text"," "] +],[ + "start", + ["identifier","Coefficients"], + ["keyword.operator",":"] +],[ + "start", + ["text"," "], + ["identifier","Estimate"], + ["text"," "], + ["identifier","Std"], + ["text",". "], + ["identifier","Error"], + ["text"," "], + ["identifier","t"], + ["text"," "], + ["identifier","value"], + ["text"," "], + ["identifier","Pr"], + ["paren.keyword.operator","("], + ["keyword.operator",">|"], + ["identifier","t"], + ["keyword.operator","|"], + ["paren.keyword.operator",")"] +],[ + "start", + ["paren.keyword.operator","("], + ["identifier","Intercept"], + ["paren.keyword.operator",")"], + ["text"," "], + ["keyword.operator","-"], + ["constant.numeric","9.3333"], + ["text"," "], + ["constant.numeric","2.8441"], + ["text"," "], + ["keyword.operator","-"], + ["constant.numeric","3.282"], + ["text"," "], + ["constant.numeric","0.030453"], + ["text"," "], + ["keyword.operator","*"] +],[ + "start", + ["identifier","x"], + ["text"," "], + ["constant.numeric","7.0000"], + ["text"," "], + ["constant.numeric","0.7303"], + ["text"," "], + ["constant.numeric","9.585"], + ["text"," "], + ["constant.numeric","0.000662"], + ["text"," "], + ["keyword.operator","***"] +],[ + "start", + ["keyword.operator","---"] +],[ + "start", + ["identifier","Signif"], + ["text",". "], + ["identifier","codes"], + ["keyword.operator",":"], + ["text"," "], + ["constant.numeric","0"], + ["text"," ‘"], + ["keyword.operator","***"], + ["text","’ "], + ["constant.numeric","0.001"], + ["text"," ‘"], + ["keyword.operator","**"], + ["text","’ "], + ["constant.numeric","0.01"], + ["text"," ‘"], + ["keyword.operator","*"], + ["text","’ "], + ["constant.numeric","0.05"], + ["text"," ‘.’ "], + ["constant.numeric","0.1"], + ["text"," ‘ ’ "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "] +],[ + "start", + ["identifier","Residual"], + ["text"," "], + ["identifier","standard"], + ["text"," "], + ["identifier","error"], + ["keyword.operator",":"], + ["text"," "], + ["constant.numeric","3.055"], + ["text"," "], + ["identifier","on"], + ["text"," "], + ["constant.numeric","4"], + ["text"," "], + ["identifier","degrees"], + ["text"," "], + ["identifier","of"], + ["text"," "], + ["identifier","freedom"] +],[ + "start", + ["identifier","Multiple"], + ["text"," "], + ["identifier","R"], + ["keyword.operator","-"], + ["identifier","squared"], + ["keyword.operator",":"], + ["text"," "], + ["constant.numeric","0.9583"], + ["text",", "], + ["identifier","Adjusted"], + ["text"," "], + ["identifier","R"], + ["keyword.operator","-"], + ["identifier","squared"], + ["keyword.operator",":"], + ["text"," "], + ["constant.numeric","0.9478"] +],[ + "start", + ["constant.language.boolean","F"], + ["keyword.operator","-"], + ["identifier","statistic"], + ["keyword.operator",":"], + ["text"," "], + ["constant.numeric","91.88"], + ["text"," "], + ["identifier","on"], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["identifier","and"], + ["text"," "], + ["constant.numeric","4"], + ["text"," "], + ["identifier","DF"], + ["text",", "], + ["identifier","p"], + ["keyword.operator","-"], + ["identifier","value"], + ["keyword.operator",":"], + ["text"," "], + ["constant.numeric","0.000662"] +],[ + "start", + ["text"," "] +],[ + "start", + ["keyword.operator",">"], + ["text"," "], + ["identifier","par"], + ["paren.keyword.operator","("], + ["identifier","mfrow"], + ["keyword.operator","="], + ["identifier","c"], + ["paren.keyword.operator","("], + ["constant.numeric","2"], + ["text",", "], + ["constant.numeric","2"], + ["paren.keyword.operator","))"], + ["text"," "], + ["comment","# Request 2x2 plot layout"] +],[ + "start", + ["keyword.operator",">"], + ["text"," "], + ["identifier","plot"], + ["paren.keyword.operator","("], + ["identifier","lm_1"], + ["paren.keyword.operator",")"], + ["text"," "], + ["comment","# Diagnostic plot of regression model"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_razor.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_razor.json new file mode 100644 index 00000000..e91f82eb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_razor.json @@ -0,0 +1,17 @@ +[[ + ["razor-block-start","@{"], + ["punctuation.block.razor","@{"] +],[ + ["razor-block-start","@{"], + ["text","\t"], + ["identifier","Layout"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.start","\""], + ["string","~/layout"], + ["string.end","\""] +],[ + "start", + ["punctuation.block.razor","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rdoc.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rdoc.json new file mode 100644 index 00000000..0c757438 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rdoc.json @@ -0,0 +1,441 @@ +[[ + "start", + ["keyword","\\name"], + ["paren.keyword.operator","{"], + ["nospell.text","picker"], + ["paren.keyword.operator","}"] +],[ + "start", + ["keyword","\\alias"], + ["paren.keyword.operator","{"], + ["nospell.text","picker"], + ["paren.keyword.operator","}"] +],[ + "start", + ["keyword","\\title"], + ["paren.keyword.operator","{"], + ["text","Create a picker control"], + ["paren.keyword.operator","}"] +],[ + "start", + ["keyword","\\description"], + ["paren.keyword.operator","{"] +],[ + "start", + ["text"," Create a picker control to enable manipulation of plot variables based on a set of fixed choices."] +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start" +],[ + "nospell", + ["keyword","\\usage"], + ["paren.keyword.operator","{"] +],[ + "nospell", + ["nospell.text","picker"], + ["paren.keyword.operator","("], + ["text","...,"], + ["nospell.text"," initial "], + ["text","="], + ["nospell.text"," NULL"], + ["text",","], + ["nospell.text"," label "], + ["text","="], + ["nospell.text"," NULL"], + ["paren.keyword.operator",")"] +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start" +],[ + "start" +],[ + "start", + ["keyword","\\arguments"], + ["paren.keyword.operator","{"] +],[ + "start", + ["text"," "], + ["keyword","\\item"], + ["paren.keyword.operator","{"], + ["keyword","\\dots"], + ["paren.keyword.operator","}{"] +],[ + "start", + ["text"," Arguments containing objects to be presented as choices for the picker "], + ["paren.keyword.operator","("], + ["text","or a list containing the choices"], + ["paren.keyword.operator",")"], + ["text",". If an element is named then the name is used to display it within the picker. If an element is not named then it is displayed within the picker using "], + ["keyword","\\code"], + ["paren.keyword.operator","{"], + ["keyword","\\link"], + ["paren.keyword.operator","{"], + ["nospell.text","as"], + ["text","."], + ["nospell.text","character"], + ["paren.keyword.operator","}}"], + ["text",". "] +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start", + ["text"," "], + ["keyword","\\item"], + ["paren.keyword.operator","{"], + ["nospell.text","initial"], + ["paren.keyword.operator","}{"] +],[ + "start", + ["text"," Initial value for picker. Value must be present in the list of choices specified. If not specified defaults to the first choice."] +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start", + ["text"," "], + ["keyword","\\item"], + ["paren.keyword.operator","{"], + ["nospell.text","label"], + ["paren.keyword.operator","}{"] +],[ + "start", + ["text"," Display label for picker. Defaults to the variable name if not specified."] +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start" +],[ + "start", + ["keyword","\\value"], + ["paren.keyword.operator","{"] +],[ + "start", + ["text"," An object of class \"manipulator.picker\" which can be passed to the "], + ["keyword","\\code"], + ["paren.keyword.operator","{"], + ["keyword","\\link"], + ["paren.keyword.operator","{"], + ["nospell.text","manipulate"], + ["paren.keyword.operator","}}"], + ["text"," function."] +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start" +],[ + "start", + ["keyword","\\seealso"], + ["paren.keyword.operator","{"] +],[ + "start", + ["keyword","\\code"], + ["paren.keyword.operator","{"], + ["keyword","\\link"], + ["paren.keyword.operator","{"], + ["nospell.text","manipulate"], + ["paren.keyword.operator","}}"], + ["text",", "], + ["keyword","\\code"], + ["paren.keyword.operator","{"], + ["keyword","\\link"], + ["paren.keyword.operator","{"], + ["nospell.text","slider"], + ["paren.keyword.operator","}}"], + ["text",", "], + ["keyword","\\code"], + ["paren.keyword.operator","{"], + ["keyword","\\link"], + ["paren.keyword.operator","{"], + ["nospell.text","checkbox"], + ["paren.keyword.operator","}}"], + ["text",", "], + ["keyword","\\code"], + ["paren.keyword.operator","{"], + ["keyword","\\link"], + ["paren.keyword.operator","{"], + ["nospell.text","button"], + ["paren.keyword.operator","}}"] +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start" +],[ + "start" +],[ + "nospell", + ["keyword","\\examples"], + ["paren.keyword.operator","{"] +],[ + "nospell", + ["keyword","\\dontrun"], + ["paren.keyword.operator","{"] +],[ + "nospell" +],[ + "nospell", + ["text","##"], + ["nospell.text"," Filtering data with a picker"] +],[ + "nospell", + ["nospell.text","manipulate"], + ["paren.keyword.operator","("] +],[ + "nospell", + ["nospell.text"," barplot"], + ["paren.keyword.operator","("], + ["nospell.text","as"], + ["text","."], + ["nospell.text","matrix"], + ["paren.keyword.operator","("], + ["nospell.text","longley"], + ["paren.keyword.operator","["], + ["text",","], + ["nospell.text","factor"], + ["paren.keyword.operator","])"], + ["text",","], + ["nospell.text"," "] +],[ + "nospell", + ["nospell.text"," beside "], + ["text","="], + ["nospell.text"," TRUE"], + ["text",","], + ["nospell.text"," main "], + ["text","="], + ["nospell.text"," factor"], + ["paren.keyword.operator",")"], + ["text",","] +],[ + "nospell", + ["nospell.text"," factor "], + ["text","="], + ["nospell.text"," picker"], + ["paren.keyword.operator","("], + ["text","\""], + ["nospell.text","GNP"], + ["text","\","], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","Unemployed"], + ["text","\","], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","Employed"], + ["text","\""], + ["paren.keyword.operator","))"] +],[ + "nospell" +],[ + "nospell", + ["text","##"], + ["nospell.text"," Create a picker with labels"] +],[ + "nospell", + ["nospell.text","manipulate"], + ["paren.keyword.operator","("] +],[ + "nospell", + ["nospell.text"," plot"], + ["paren.keyword.operator","("], + ["nospell.text","pressure"], + ["text",","], + ["nospell.text"," type "], + ["text","="], + ["nospell.text"," type"], + ["paren.keyword.operator",")"], + ["text",","], + ["nospell.text"," "] +],[ + "nospell", + ["nospell.text"," type "], + ["text","="], + ["nospell.text"," picker"], + ["paren.keyword.operator","("], + ["text","\""], + ["nospell.text","points"], + ["text","\""], + ["nospell.text"," "], + ["text","="], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","p"], + ["text","\","], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","line"], + ["text","\""], + ["nospell.text"," "], + ["text","="], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","l"], + ["text","\","], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","step"], + ["text","\""], + ["nospell.text"," "], + ["text","="], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","s"], + ["text","\""], + ["paren.keyword.operator","))"] +],[ + "nospell", + ["nospell.text"," "] +],[ + "nospell", + ["text","##"], + ["nospell.text"," Picker with groups"] +],[ + "nospell", + ["nospell.text","manipulate"], + ["paren.keyword.operator","("] +],[ + "nospell", + ["nospell.text"," barplot"], + ["paren.keyword.operator","("], + ["nospell.text","as"], + ["text","."], + ["nospell.text","matrix"], + ["paren.keyword.operator","("], + ["nospell.text","mtcars"], + ["paren.keyword.operator","["], + ["nospell.text","group"], + ["text",",\""], + ["nospell.text","mpg"], + ["text","\""], + ["paren.keyword.operator","])"], + ["text",","], + ["nospell.text"," beside"], + ["text","="], + ["nospell.text","TRUE"], + ["paren.keyword.operator",")"], + ["text",","] +],[ + "nospell", + ["nospell.text"," group "], + ["text","="], + ["nospell.text"," picker"], + ["paren.keyword.operator","("], + ["text","\""], + ["nospell.text","Group 1"], + ["text","\""], + ["nospell.text"," "], + ["text","="], + ["nospell.text"," 1"], + ["text",":"], + ["nospell.text","11"], + ["text",","], + ["nospell.text"," "] +],[ + "nospell", + ["nospell.text"," "], + ["text","\""], + ["nospell.text","Group 2"], + ["text","\""], + ["nospell.text"," "], + ["text","="], + ["nospell.text"," 12"], + ["text",":"], + ["nospell.text","22"], + ["text",","], + ["nospell.text"," "] +],[ + "nospell", + ["nospell.text"," "], + ["text","\""], + ["nospell.text","Group 3"], + ["text","\""], + ["nospell.text"," "], + ["text","="], + ["nospell.text"," 23"], + ["text",":"], + ["nospell.text","32"], + ["paren.keyword.operator","))"] +],[ + "nospell" +],[ + "nospell", + ["text","##"], + ["nospell.text"," Histogram w"], + ["text","/"], + ["nospell.text"," picker to select type"] +],[ + "nospell", + ["nospell.text","require"], + ["paren.keyword.operator","("], + ["nospell.text","lattice"], + ["paren.keyword.operator",")"] +],[ + "nospell", + ["nospell.text","require"], + ["paren.keyword.operator","("], + ["nospell.text","stats"], + ["paren.keyword.operator",")"] +],[ + "nospell", + ["nospell.text","manipulate"], + ["paren.keyword.operator","("] +],[ + "nospell", + ["nospell.text"," histogram"], + ["paren.keyword.operator","("], + ["text","~"], + ["nospell.text"," height "], + ["text","|"], + ["nospell.text"," voice"], + ["text","."], + ["nospell.text","part"], + ["text",","], + ["nospell.text"," "] +],[ + "nospell", + ["nospell.text"," data "], + ["text","="], + ["nospell.text"," singer"], + ["text",","], + ["nospell.text"," type "], + ["text","="], + ["nospell.text"," type"], + ["paren.keyword.operator",")"], + ["text",","] +],[ + "nospell", + ["nospell.text"," type "], + ["text","="], + ["nospell.text"," picker"], + ["paren.keyword.operator","("], + ["text","\""], + ["nospell.text","percent"], + ["text","\","], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","count"], + ["text","\","], + ["nospell.text"," "], + ["text","\""], + ["nospell.text","density"], + ["text","\""], + ["paren.keyword.operator","))"] +],[ + "nospell" +],[ + "start", + ["paren.keyword.operator","}"] +],[ + "start", + ["paren.keyword.operator","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rhtml.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rhtml.json new file mode 100644 index 00000000..a536f851 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rhtml.json @@ -0,0 +1,106 @@ +[[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","html"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","head"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Title"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","body"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","This is an R HTML document. When you click the "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","b"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Knit HTML"], + ["meta.tag.punctuation.end-tag-open.xml",""], + ["text.xml"," button a web page will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "r-start", + ["support.function.codebegin",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","p"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","You can also embed plots, for example:"], + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +],[ + "r-start", + ["support.function.codebegin",""] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml",""] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rst.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rst.json new file mode 100644 index 00000000..bdcdbcec --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rst.json @@ -0,0 +1,1297 @@ +[[ + "start", + ["markup.heading","=========================================="] +],[ + "start", + ["markup.italic","*"], + ["markup.italic","reStructuredText*"], + ["text"," Highlighter for"], + ["text"," "], + ["markup.bold","**"], + ["markup.bold","Ace**"] +],[ + "start", + ["markup.heading","=========================================="] +],[ + "start" +],[ + "codeblock", + ["text",".. "], + ["keyword.operator","seealso::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," http://docutils.sourceforge.net/docs/user/rst/quickstart.html"] +],[ + "codeblock" +],[ + "codeblock" +],[ + "start", + ["text","ReStructuredText Primer"] +],[ + "start", + ["markup.heading","======================="] +],[ + "start" +],[ + "start", + ["text",":Author: Richard Jones"] +],[ + "start", + ["text",":Version: $Revision: 5801 $"] +],[ + "start", + ["text",":Copyright: This document has been placed in the public domain."] +],[ + "start" +],[ + "codeblock", + ["text",".. "], + ["keyword.operator","contents::"] +],[ + "codeblock" +],[ + "codeblock" +],[ + "start", + ["text","The text below contains links that look like \"("], + ["markup.underline.list","quickref__"], + ["text",")\". These"] +],[ + "start", + ["text","are relative links that point to the"], + ["text"," "], + ["markup.underline.list","`"], + ["markup.underline.list","Quick reStructuredText`_"], + ["text"," user"] +],[ + "link", + ["text","reference. If these links don't work, please refer to the"], + ["text"," "], + ["markup.underline.list","`"], + ["markup.underline.list","master"] +],[ + "start", + ["markup.underline.list","quick reference`_"], + ["text"," document."] +],[ + "start" +],[ + "start", + ["text","__"] +],[ + "start", + ["string",".. _Quick reStructuredText:"], + ["markup.underline.list"," quickref.html"] +],[ + "start", + ["string",".. _master quick reference:"] +],[ + "start", + ["text"," "], + ["markup.underline.list","http://docutils.sourceforge.net/docs/user/rst/quickref.html"] +],[ + "start" +],[ + "codeblock", + ["text",".. "], + ["keyword.operator","Note::"], + ["support.function"," This document is an informal introduction to"] +],[ + "codeblock", + ["support.function"," reStructuredText. The `What Next?`_ section below has links to"] +],[ + "codeblock", + ["support.function"," further resources, including a formal reference."] +],[ + "codeblock" +],[ + "codeblock" +],[ + "start", + ["text","Structure"] +],[ + "start", + ["markup.heading","---------"] +],[ + "start" +],[ + "start", + ["text","From the outset, let me say that \"Structured Text\" is probably a bit"] +],[ + "start", + ["text","of a misnomer. It's more like \"Relaxed Text\" that uses certain"] +],[ + "start", + ["text","consistent patterns. These patterns are interpreted by a HTML"] +],[ + "start", + ["text","converter to produce \"Very Structured Text\" that can be used by a web"] +],[ + "start", + ["text","browser."] +],[ + "start" +],[ + "start", + ["text","The most basic pattern recognised is a"], + ["text"," "], + ["markup.bold","**"], + ["markup.bold","paragraph**"], + ["text"," ("], + ["markup.underline.list","quickref__"], + ["text",")."] +],[ + "start", + ["text","That's a chunk of text that is separated by blank lines (one is"] +],[ + "start", + ["text","enough). Paragraphs must have the same indentation -- that is, line"] +],[ + "start", + ["text","up at their left edge. Paragraphs that start indented will result in"] +],[ + "codeblock", + ["text","indented quote paragraphs. For example"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," This is a paragraph. It's quite"] +],[ + "codeblock", + ["support.function"," short."] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," This paragraph will result in an indented block of"] +],[ + "codeblock", + ["support.function"," text, typically used for quoting other text."] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," This is another one."] +],[ + "codeblock" +],[ + "start", + ["text","Results in:"] +],[ + "start" +],[ + "start", + ["text"," This is a paragraph. It's quite"] +],[ + "start", + ["text"," short."] +],[ + "start" +],[ + "start", + ["text"," This paragraph will result in an indented block of"] +],[ + "start", + ["text"," text, typically used for quoting other text."] +],[ + "start" +],[ + "start", + ["text"," This is another one."] +],[ + "start" +],[ + "start", + ["text","__ quickref.html#paragraphs"] +],[ + "start" +],[ + "start" +],[ + "start", + ["text","Text styles"] +],[ + "start", + ["markup.heading","-----------"] +],[ + "start" +],[ + "start", + ["text","("], + ["markup.underline.list","quickref__"], + ["text",")"] +],[ + "start" +],[ + "start", + ["text","__ quickref.html#inline-markup"] +],[ + "start" +],[ + "start", + ["text","Inside paragraphs and other bodies of text, you may additionally mark"] +],[ + "start", + ["text","text for"], + ["text"," "], + ["markup.italic","*"], + ["markup.italic","italics*"], + ["text"," with "], + ["text","\""], + ["support.function","``"], + ["support.function","*italics*``"], + ["text","\" or"], + ["text"," "], + ["markup.bold","**"], + ["markup.bold","bold**"], + ["text"," with"] +],[ + "start", + ["text","\""], + ["support.function","``"], + ["support.function","**bold**``"], + ["text","\". This is called \"inline markup\"."] +],[ + "start" +],[ + "start", + ["text","If you want something to appear as a fixed-space literal, use"] +],[ + "start", + ["text","\""], + ["support.function","``"], + ["support.function","``double back-quotes````"], + ["text","\". Note that no further fiddling is done"] +],[ + "start", + ["text","inside the double back-quotes -- so asterisks "], + ["text","\""], + ["support.function","``"], + ["support.function","*``"], + ["text","\" etc. are left"] +],[ + "start", + ["text","alone."] +],[ + "start" +],[ + "start", + ["text","If you find that you want to use one of the \"special\" characters in"] +],[ + "start", + ["text","text, it will generally be OK -- reStructuredText is pretty smart."] +],[ + "start", + ["text","For example, this lone asterisk * is handled just fine, as is the"] +],[ + "start", + ["text","asterisk in this equation: 5*6=30. If you actually"] +],[ + "start", + ["text","want text \\*surrounded by asterisks* to"], + ["text"," "], + ["markup.bold","**"], + ["markup.bold","not**"], + ["text"," be italicised, then"] +],[ + "start", + ["text","you need to indicate that the asterisk is not special. You do this by"] +],[ + "start", + ["text","placing a backslash just before it, like so "], + ["text","\""], + ["support.function","``"], + ["support.function","\\*``"], + ["text","\" ("], + ["markup.underline.list","quickref__"], + ["text","), or"] +],[ + "codeblock", + ["text","by enclosing it in double back-quotes (inline literals), like this"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," ``*``"] +],[ + "codeblock" +],[ + "start", + ["text","__ quickref.html#escaping"] +],[ + "start" +],[ + "codeblock", + ["text",".. "], + ["keyword.operator","Tip::"], + ["support.function"," Think of inline markup as a form of (parentheses) and use it"] +],[ + "codeblock", + ["support.function"," the same way: immediately before and after the text being marked"] +],[ + "codeblock", + ["support.function"," up. Inline markup by itself (surrounded by whitespace) or in the"] +],[ + "codeblock", + ["support.function"," middle of a word won't be recognized. See the `markup spec`__ for"] +],[ + "codeblock", + ["support.function"," full details."] +],[ + "codeblock" +],[ + "start", + ["text","__ ../../ref/rst/restructuredtext.html#inline-markup"] +],[ + "start" +],[ + "start" +],[ + "start", + ["text","Lists"] +],[ + "start", + ["markup.heading","-----"] +],[ + "start" +],[ + "start", + ["text","Lists of items come in three main flavours:"], + ["text"," "], + ["markup.bold","**"], + ["markup.bold","enumerated**"], + ["text",","] +],[ + "start", + ["markup.bold","**"], + ["markup.bold","bulleted**"], + ["text"," and"], + ["text"," "], + ["markup.bold","**"], + ["markup.bold","definitions**"], + ["text",". In all list cases, you may have as"] +],[ + "start", + ["text","many paragraphs, sublists, etc. as you want, as long as the left-hand"] +],[ + "start", + ["text","side of the paragraph or whatever aligns with the first line of text"] +],[ + "start", + ["text","in the list item."] +],[ + "start" +],[ + "start", + ["text","Lists must always start a new paragraph -- that is, they must appear"] +],[ + "start", + ["text","after a blank line."] +],[ + "start" +],[ + "start", + ["markup.bold","**"], + ["markup.bold","enumerated**"], + ["text"," lists (numbers, letters or roman numerals; "], + ["markup.underline.list","quickref__"], + ["text",")"] +],[ + "start", + ["text","__ quickref.html#enumerated-lists"] +],[ + "start" +],[ + "start", + ["text","Start a line off with a number or letter followed by a period \".\","] +],[ + "start", + ["text","right bracket \")\" or surrounded by brackets \"( )\" -- whatever you're"] +],[ + "codeblock", + ["text","comfortable with. All of the following forms are recognised"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," 1. numbers"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," A. upper-case letters"] +],[ + "codeblock", + ["support.function"," and it goes over many lines"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," with two paragraphs and all!"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," a. lower-case letters"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," 3. with a sub-list starting at a different number"] +],[ + "codeblock", + ["support.function"," 4. make sure the numbers are in the correct sequence though!"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," I. upper-case roman numerals"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," i. lower-case roman numerals"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," (1) numbers again"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," 1) and again"] +],[ + "codeblock" +],[ + "start", + ["text","Results in (note: the different enumerated list styles are not"] +],[ + "start", + ["text","always supported by every web browser, so you may not get the full"] +],[ + "start", + ["text","effect here):"] +],[ + "start" +],[ + "start", + ["markup.heading","1. "], + ["text","numbers"] +],[ + "start" +],[ + "start", + ["markup.heading","A. "], + ["text","upper-case letters"] +],[ + "start", + ["text"," and it goes over many lines"] +],[ + "start" +],[ + "start", + ["text"," with two paragraphs and all!"] +],[ + "start" +],[ + "start", + ["markup.heading","a. "], + ["text","lower-case letters"] +],[ + "start" +],[ + "start", + ["markup.heading"," 3. "], + ["text","with a sub-list starting at a different number"] +],[ + "start", + ["markup.heading"," 4. "], + ["text","make sure the numbers are in the correct sequence though!"] +],[ + "start" +],[ + "start", + ["markup.heading","I. "], + ["text","upper-case roman numerals"] +],[ + "start" +],[ + "start", + ["markup.heading","i. "], + ["text","lower-case roman numerals"] +],[ + "start" +],[ + "start", + ["markup.heading","(1) "], + ["text","numbers again"] +],[ + "start" +],[ + "start", + ["markup.heading","1) "], + ["text","and again"] +],[ + "start" +],[ + "start", + ["markup.bold","**"], + ["markup.bold","bulleted**"], + ["text"," lists ("], + ["markup.underline.list","quickref__"], + ["text",")"] +],[ + "start", + ["text","__ quickref.html#bullet-lists"] +],[ + "start" +],[ + "start", + ["text","Just like enumerated lists, start the line off with a bullet point"] +],[ + "codeblock", + ["text","character - either \"-\", \"+\" or \"\\*\""], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," * a bullet point using \"\\*\""] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," - a sub-list using \"-\""] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," + yet another sub-list"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," - another item"] +],[ + "codeblock" +],[ + "start", + ["text","Results in:"] +],[ + "start" +],[ + "start", + ["markup.heading","* "], + ["text","a bullet point using \"\\*\""] +],[ + "start" +],[ + "start", + ["markup.heading"," - "], + ["text","a sub-list using \"-\""] +],[ + "start" +],[ + "start", + ["markup.heading"," + "], + ["text","yet another sub-list"] +],[ + "start" +],[ + "start", + ["markup.heading"," - "], + ["text","another item"] +],[ + "start" +],[ + "start", + ["markup.bold","**"], + ["markup.bold","definition**"], + ["text"," lists ("], + ["markup.underline.list","quickref__"], + ["text",")"] +],[ + "start", + ["text","__ quickref.html#definition-lists"] +],[ + "start" +],[ + "start", + ["text","Unlike the other two, the definition lists consist of a term, and"] +],[ + "codeblock", + ["text","the definition of that term. The format of a definition list is"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," what"] +],[ + "codeblock", + ["support.function"," Definition lists associate a term with a definition."] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," *how*"] +],[ + "codeblock", + ["support.function"," The term is a one-line phrase, and the definition is one or more"] +],[ + "codeblock", + ["support.function"," paragraphs or body elements, indented relative to the term."] +],[ + "codeblock", + ["support.function"," Blank lines are not allowed between term and definition."] +],[ + "codeblock" +],[ + "start", + ["text","Results in:"] +],[ + "start" +],[ + "start", + ["text","what"] +],[ + "start", + ["text"," Definition lists associate a term with a definition."] +],[ + "start" +],[ + "start", + ["markup.italic","*"], + ["markup.italic","how*"] +],[ + "start", + ["text"," The term is a one-line phrase, and the definition is one or more"] +],[ + "start", + ["text"," paragraphs or body elements, indented relative to the term."] +],[ + "start", + ["text"," Blank lines are not allowed between term and definition."] +],[ + "start" +],[ + "start" +],[ + "start", + ["text","Preformatting (code samples)"] +],[ + "start", + ["markup.heading","----------------------------"] +],[ + "start", + ["text","("], + ["markup.underline.list","quickref__"], + ["text",")"] +],[ + "start" +],[ + "start", + ["text","__ quickref.html#literal-blocks"] +],[ + "start" +],[ + "start", + ["text","To just include a chunk of preformatted, never-to-be-fiddled-with"] +],[ + "start", + ["text","text, finish the prior paragraph with "], + ["text","\""], + ["support.function","``"], + ["support.function","::``"], + ["text","\". The preformatted"] +],[ + "start", + ["text","block is finished when the text falls back to the same indentation"] +],[ + "codeblock", + ["text","level as a paragraph prior to the preformatted block. For example"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," An example::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," Whitespace, newlines, blank lines, and all kinds of markup"] +],[ + "codeblock", + ["support.function"," (like *this* or \\this) is preserved by literal blocks."] +],[ + "codeblock", + ["support.function"," Lookie here, I've dropped an indentation level"] +],[ + "codeblock", + ["support.function"," (but not far enough)"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," no more example"] +],[ + "codeblock" +],[ + "start", + ["text","Results in:"] +],[ + "start" +],[ + "codeblock", + ["text","An example"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," Whitespace, newlines, blank lines, and all kinds of markup"] +],[ + "codeblock", + ["support.function"," (like *this* or \\this) is preserved by literal blocks."] +],[ + "codeblock", + ["support.function"," Lookie here, I've dropped an indentation level"] +],[ + "codeblock", + ["support.function"," (but not far enough)"] +],[ + "codeblock" +],[ + "start", + ["text","no more example"] +],[ + "start" +],[ + "start", + ["text","Note that if a paragraph consists only of "], + ["text","\""], + ["support.function","``"], + ["support.function","::``"], + ["text","\", then it's removed"] +],[ + "codeblock", + ["text","from the output"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," ::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," This is preformatted text, and the"] +],[ + "codeblock", + ["support.function"," last \"::\" paragraph is removed"] +],[ + "codeblock" +],[ + "start", + ["text","Results in:"] +],[ + "start" +],[ + "codeblock", + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," This is preformatted text, and the"] +],[ + "codeblock", + ["support.function"," last \"::\" paragraph is removed"] +],[ + "codeblock" +],[ + "codeblock" +],[ + "start", + ["text","Sections"] +],[ + "start", + ["markup.heading","--------"] +],[ + "start" +],[ + "start", + ["text","("], + ["markup.underline.list","quickref__"], + ["text",")"] +],[ + "start" +],[ + "start", + ["text","__ quickref.html#section-structure"] +],[ + "start" +],[ + "start", + ["text","To break longer text up into sections, you use"], + ["text"," "], + ["markup.bold","**"], + ["markup.bold","section headers**"], + ["text","."] +],[ + "start", + ["text","These are a single line of text (one or more words) with adornment: an"] +],[ + "start", + ["text","underline alone, or an underline and an overline together, in dashes"] +],[ + "start", + ["text","\""], + ["support.function","``"], + ["support.function","-----``"], + ["text","\", equals "], + ["text","\""], + ["support.function","``"], + ["support.function","======``"], + ["text","\", tildes "], + ["text","\""], + ["support.function","``"], + ["support.function","~~~~~~``"], + ["text","\" or any of the"] +],[ + "start", + ["text","non-alphanumeric characters"], + ["text"," "], + ["support.function","``"], + ["support.function","= - ` : ' \" ~ ^ _ * + # < >``"], + ["text"," that you"] +],[ + "start", + ["text","feel comfortable with. An underline-only adornment is distinct from"] +],[ + "start", + ["text","an overline-and-underline adornment using the same character. The"] +],[ + "start", + ["text","underline/overline must be at least as long as the title text. Be"] +],[ + "start", + ["text","consistent, since all sections marked with the same adornment style"] +],[ + "codeblock", + ["text","are deemed to be at the same level"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," Chapter 1 Title"] +],[ + "codeblock", + ["support.function"," ==============="] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," Section 1.1 Title"] +],[ + "codeblock", + ["support.function"," -----------------"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," Subsection 1.1.1 Title"] +],[ + "codeblock", + ["support.function"," ~~~~~~~~~~~~~~~~~~~~~~"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," Section 1.2 Title"] +],[ + "codeblock", + ["support.function"," -----------------"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," Chapter 2 Title"] +],[ + "codeblock", + ["support.function"," ==============="] +],[ + "codeblock" +],[ + "start", + ["text","This results in the following structure, illustrated by simplified"] +],[ + "codeblock", + ["text","pseudo-XML"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function","
    "] +],[ + "codeblock", + ["support.function"," "] +],[ + "codeblock", + ["support.function"," Chapter 1 Title"] +],[ + "codeblock", + ["support.function"," <section>"] +],[ + "codeblock", + ["support.function"," <title>"] +],[ + "codeblock", + ["support.function"," Section 1.1 Title"] +],[ + "codeblock", + ["support.function"," <section>"] +],[ + "codeblock", + ["support.function"," <title>"] +],[ + "codeblock", + ["support.function"," Subsection 1.1.1 Title"] +],[ + "codeblock", + ["support.function"," <section>"] +],[ + "codeblock", + ["support.function"," <title>"] +],[ + "codeblock", + ["support.function"," Section 1.2 Title"] +],[ + "codeblock", + ["support.function"," <section>"] +],[ + "codeblock", + ["support.function"," <title>"] +],[ + "codeblock", + ["support.function"," Chapter 2 Title"] +],[ + "codeblock" +],[ + "start", + ["text","(Pseudo-XML uses indentation for nesting and has no end-tags. It's"] +],[ + "start", + ["text","not possible to show actual processed output, as in the other"] +],[ + "start", + ["text","examples, because sections cannot exist inside block quotes. For a"] +],[ + "start", + ["text","concrete example, compare the section structure of this document's"] +],[ + "start", + ["text","source text and processed output.)"] +],[ + "start" +],[ + "start", + ["text","Note that section headers are available as link targets, just using"] +],[ + "start", + ["text","their name. To link to the "], + ["markup.underline.list","Lists_"], + ["text"," heading, I write "], + ["text","\""], + ["support.function","``"], + ["support.function","Lists_``"], + ["text","\". If"] +],[ + "start", + ["text","the heading has a space in it like"], + ["text"," "], + ["markup.underline.list","`"], + ["markup.underline.list","text styles`_"], + ["text",", we need to quote"] +],[ + "start", + ["text","the heading "], + ["text","\""], + ["support.function","``"], + ["support.function","`text styles`_``"], + ["text","\"."] +],[ + "start" +],[ + "start" +],[ + "start", + ["text","Document Title / Subtitle"] +],[ + "start", + ["markup.heading","`````````````````````````"] +],[ + "start" +],[ + "start", + ["text","The title of the whole document is distinct from section titles and"] +],[ + "start", + ["text","may be formatted somewhat differently (e.g. the HTML writer by default"] +],[ + "start", + ["text","shows it as a centered heading)."] +],[ + "start" +],[ + "start", + ["text","To indicate the document title in reStructuredText, use a unique adornment"] +],[ + "start", + ["text","style at the beginning of the document. To indicate the document subtitle,"] +],[ + "start", + ["text","use another unique adornment style immediately after the document title. For"] +],[ + "codeblock", + ["text","example"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," ================"] +],[ + "codeblock", + ["support.function"," Document Title"] +],[ + "codeblock", + ["support.function"," ================"] +],[ + "codeblock", + ["support.function"," ----------"] +],[ + "codeblock", + ["support.function"," Subtitle"] +],[ + "codeblock", + ["support.function"," ----------"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," Section Title"] +],[ + "codeblock", + ["support.function"," ============="] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," ..."] +],[ + "codeblock" +],[ + "start", + ["text","Note that \"Document Title\" and \"Section Title\" above both use equals"] +],[ + "start", + ["text","signs, but are distict and unrelated styles. The text of"] +],[ + "start", + ["text","overline-and-underlined titles (but not underlined-only) may be inset"] +],[ + "start", + ["text","for aesthetics."] +],[ + "start" +],[ + "start" +],[ + "start", + ["text","Images"] +],[ + "start", + ["markup.heading","------"] +],[ + "start" +],[ + "start", + ["text","("], + ["markup.underline.list","quickref__"], + ["text",")"] +],[ + "start" +],[ + "start", + ["text","__ quickref.html#directives"] +],[ + "start" +],[ + "start", + ["text","To include an image in your document, you use the the"], + ["text"," "], + ["support.function","``"], + ["support.function","image``"], + ["text"," "], + ["markup.underline.list","directive__"], + ["text","."] +],[ + "codeblock", + ["text","For example"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," .. image:: images/biohazard.png"] +],[ + "codeblock" +],[ + "start", + ["text","results in:"] +],[ + "start" +],[ + "codeblock", + ["text",".. "], + ["keyword.operator","image::"], + ["support.function"," images/biohazard.png"] +],[ + "codeblock" +],[ + "start", + ["text","The"], + ["text"," "], + ["support.function","``"], + ["support.function","images/biohazard.png``"], + ["text"," part indicates the filename of the image"] +],[ + "start", + ["text","you wish to appear in the document. There's no restriction placed on"] +],[ + "start", + ["text","the image (format, size etc). If the image is to appear in HTML and"] +],[ + "codeblock", + ["text","you wish to supply additional information, you may"], + ["keyword.operator","::"] +],[ + "codeblock" +],[ + "codeblock", + ["support.function"," .. image:: images/biohazard.png"] +],[ + "codeblock", + ["support.function"," :height: 100"] +],[ + "codeblock", + ["support.function"," :width: 200"] +],[ + "codeblock", + ["support.function"," :scale: 50"] +],[ + "codeblock", + ["support.function"," :alt: alternate text"] +],[ + "codeblock" +],[ + "start", + ["text","See the full"], + ["text"," "], + ["markup.underline.list","`"], + ["markup.underline.list","image directive documentation`__"], + ["text"," for more info."] +],[ + "start" +],[ + "start", + ["text","__ ../../ref/rst/directives.html"] +],[ + "start", + ["text","__ ../../ref/rst/directives.html#images"] +],[ + "start" +],[ + "start" +],[ + "start", + ["text","What Next?"] +],[ + "start", + ["markup.heading","----------"] +],[ + "start" +],[ + "start", + ["text","This primer introduces the most common features of reStructuredText,"] +],[ + "start", + ["text","but there are a lot more to explore. The"], + ["text"," "], + ["markup.underline.list","`"], + ["markup.underline.list","Quick reStructuredText`_"] +],[ + "start", + ["text","user reference is a good place to go next. For complete details, the"] +],[ + "start", + ["markup.underline.list","`"], + ["markup.underline.list","reStructuredText Markup Specification`_"], + ["text"," is the place to go "], + ["markup.underline.list","[#]_"], + ["text","."] +],[ + "start" +],[ + "start", + ["text","Users who have questions or need assistance with Docutils or"] +],[ + "start", + ["text","reStructuredText should post a message to the "], + ["markup.underline.list","Docutils-users_"], + ["text"," mailing"] +],[ + "start", + ["text","list."] +],[ + "start" +],[ + "start", + ["string",".. [#] "], + ["text","If that relative link doesn't work, try the master document:"] +],[ + "start", + ["text"," "], + ["markup.underline.list","http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html."] +],[ + "start" +],[ + "start", + ["string",".. _reStructuredText Markup Specification:"] +],[ + "start", + ["text"," ../../ref/rst/restructuredtext.html"] +],[ + "start", + ["string",".. _Docutils-users:"], + ["markup.underline.list"," ../mailing-lists.html#docutils-users"] +],[ + "start", + ["string",".. _Docutils project web site:"], + ["markup.underline.list"," http://docutils.sourceforge.net/"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ruby.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ruby.json new file mode 100644 index 00000000..f9991e9c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ruby.json @@ -0,0 +1,242 @@ +[[ + "start", + ["text"," "], + ["comment","#test: symbol tokenizer"] +],[ + "start", + ["text"," "], + ["paren.lparen","["], + ["constant.other.symbol.ruby",":@thing"], + ["text",", "], + ["constant.other.symbol.ruby",":$thing"], + ["text",", "], + ["constant.other.symbol.ruby",":_thing"], + ["text",", "], + ["constant.other.symbol.ruby",":thing"], + ["text",", "], + ["constant.other.symbol.ruby",":Thing"], + ["text",", "], + ["constant.other.symbol.ruby",":thing1"], + ["text",", "], + ["constant.other.symbol.ruby",":thing_a"], + ["text",","] +],[ + "start", + ["text"," "], + ["constant.other.symbol.ruby",":THING"], + ["text",", "], + ["constant.other.symbol.ruby",":thing!"], + ["text",", "], + ["constant.other.symbol.ruby",":thing="], + ["text",", "], + ["constant.other.symbol.ruby",":thing?"], + ["text",", "], + ["constant.other.symbol.ruby",":t?"], + ["text",","] +],[ + "start", + ["text"," :, :@, :"], + ["keyword.operator","$"], + ["text",", :"], + ["constant.numeric","1"], + ["text",", :1"], + ["identifier","thing"], + ["text",", "], + ["constant.other.symbol.ruby",":th?"], + ["identifier","ing"], + ["text",", "], + ["constant.other.symbol.ruby",":thi="], + ["identifier","ng"], + ["text",", :1"], + ["identifier","thing"], + ["text",","] +],[ + "start", + ["text"," "], + ["constant.other.symbol.ruby",":th!"], + ["identifier","ing"], + ["text",", "], + ["constant.other.symbol.ruby",":thing"], + ["comment","#"] +],[ + "start", + ["text"," "], + ["paren.rparen","]"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment","#test: namespaces aren't symbols\" : function() {"] +],[ + "start", + ["text"," "], + ["support.class","Namespaced"], + ["text","::"], + ["support.class","Class"] +],[ + "start", + ["text"," "], + ["comment","#test: hex tokenizer "] +],[ + "start", + ["text"," "], + ["constant.numeric","0x9a"], + ["text",", "], + ["constant.numeric","0XA1"], + ["text",", "], + ["constant.numeric","0x9_a"], + ["text",", 0"], + ["identifier","x"], + ["text",", 0"], + ["identifier","x_9a"], + ["text",", 0"], + ["identifier","x9a_"], + ["text",","] +],[ + "start", + ["text"," "], + ["comment","#test: float tokenizer"] +],[ + "start", + ["text"," "], + ["paren.lparen","["], + ["constant.numeric","1"], + ["text",", "], + ["constant.numeric","+1"], + ["text",", "], + ["constant.numeric","-1"], + ["text",", "], + ["constant.numeric","12_345"], + ["text",", "], + ["constant.numeric","0.000_1"], + ["text",","] +],[ + "start", + ["text"," "], + ["identifier","_"], + ["text",", "], + ["constant.numeric","3_1"], + ["text",", "], + ["constant.numeric","1_2"], + ["text",", 1"], + ["identifier","_"], + ["text","."], + ["constant.numeric","0"], + ["text",", "], + ["constant.numeric","0"], + ["text","."], + ["identifier","_1"], + ["paren.rparen","]"], + ["text",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["paren.lparen","{"], + ["constant.other.symbol.ruby",":id"], + ["text"," "], + ["punctuation.separator.key-value","=>"], + ["text"," "], + ["string.character","?\""], + ["text",", "], + ["constant.other.symbol.ruby",":key"], + ["text"," "], + ["punctuation.separator.key-value","=>"], + ["text"," "], + ["string.start","\""], + ["string","value"], + ["string.end","\""], + ["text",", "], + ["identifier","anotherKey"], + ["text",": "], + ["paren.lparen","["], + ["identifier","x"], + ["text",", "], + ["identifier","y"], + ["text","?"], + ["paren.rparen","]}"] +],[ + "start" +],[ + "comment", + ["comment","=begin"] +],[ + "start", + ["comment","=end"] +],[ + "start" +],[ + "comment", + ["comment","=begin x"] +],[ + "comment", + ["comment","=end-"] +],[ + "start", + ["comment","=end x"] +],[ + "start" +],[ + ["heredoc","FOO","heredoc","BAR","indentedHeredoc","BAZ","indentedHeredoc","EXEC"], + ["text"," "], + ["identifier","herDocs"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","["], + ["constant","<<"], + ["string","'"], + ["support.class","FOO"], + ["string","'"], + ["text",", "], + ["constant","<<"], + ["string",""], + ["support.class","BAR"], + ["string",""], + ["text",", "], + ["constant","<<-"], + ["string",""], + ["support.class","BAZ"], + ["string",""], + ["text",", "], + ["constant","<<-"], + ["string","`"], + ["support.class","EXEC"], + ["string","`"], + ["paren.rparen","]"], + ["text"," "], + ["comment","#comment"] +],[ + ["heredoc","FOO","heredoc","BAR","indentedHeredoc","BAZ","indentedHeredoc","EXEC"], + ["string"," FOO #{literal}"] +],[ + ["heredoc","BAR","indentedHeredoc","BAZ","indentedHeredoc","EXEC"], + ["support.class","FOO"] +],[ + ["heredoc","BAR","indentedHeredoc","BAZ","indentedHeredoc","EXEC"], + ["string"," BAR #{fact(10)}"] +],[ + ["indentedHeredoc","BAZ","indentedHeredoc","EXEC"], + ["support.class","BAR"] +],[ + ["indentedHeredoc","BAZ","indentedHeredoc","EXEC"], + ["string"," BAZ indented"] +],[ + ["indentedHeredoc","EXEC"], + ["string"," "], + ["support.class","BAZ"] +],[ + ["indentedHeredoc","EXEC"], + ["string"," echo hi"] +],[ + "start", + ["string"," "], + ["support.class","EXEC"] +],[ + "start", + ["support.function","puts"], + ["text"," "], + ["identifier","herDocs"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ruby_slim.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ruby_slim.json new file mode 100644 index 00000000..a1fee560 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_ruby_slim.json @@ -0,0 +1,181 @@ +[[ + "start", + ["entity.name.tag.slim","doctype"], + ["text"," html"] +],[ + "start", + ["entity.name.tag.slim","html"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","head"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","title"], + ["text"," Slim Examples"] +],[ + "entity.other.attribute-name.event.slim", + ["meta.tag"," "], + ["entity.name.tag.slim","meta"], + ["text"," "], + ["entity.other.attribute-name.event.slim","name"], + ["text","="], + ["punctuation.definition.string.begin.html","\""], + ["string.quoted.double.html","keywords"], + ["punctuation.definition.string.end.html","\""], + ["text"," "], + ["entity.other.attribute-name.event.slim","content"], + ["text","="], + ["punctuation.definition.string.begin.html","\""], + ["string.quoted.double.html","template language"], + ["punctuation.definition.string.end.html","\""] +],[ + ["entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim"], + ["text"," meta "], + ["entity.other.attribute-name.event.slim","name"], + ["text","="], + ["punctuation.definition.string.begin.html","\""], + ["string.quoted.double.html","author"], + ["punctuation.definition.string.end.html","\""], + ["text"," "], + ["entity.other.attribute-name.event.slim","content"], + ["text","="], + ["text","author"] +],[ + ["entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim"], + ["text"," link "], + ["entity.other.attribute-name.event.slim","rel"], + ["text","="], + ["punctuation.definition.string.begin.html","\""], + ["string.quoted.double.html","icon"], + ["punctuation.definition.string.end.html","\""], + ["text"," "], + ["entity.other.attribute-name.event.slim","type"], + ["text","="], + ["punctuation.definition.string.begin.html","\""], + ["string.quoted.double.html","image/png"], + ["punctuation.definition.string.end.html","\""], + ["text"," "], + ["entity.other.attribute-name.event.slim","href"], + ["text","="], + ["text","file_path("], + ["punctuation.definition.string.begin.html","\""], + ["string.quoted.double.html","favicon.png"], + ["punctuation.definition.string.end.html","\""], + ["text",")"] +],[ + ["entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim"], + ["text"," javascript:"] +],[ + ["entity.other.attribute-name.event.slim","entity.other.attribute-name.event.slim"], + ["text"," alert("], + ["punctuation.definition.string.begin.html","'"], + ["string.quoted.single.html","Slim supports embedded javascript!"], + ["punctuation.definition.string.end.html","'"], + ["text",")"] +],[ + "entity.other.attribute-name.event.slim" +],[ + "start", + ["text"," body"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","h1"], + ["text"," Markup examples"] +],[ + "start" +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","#"], + ["entity.other.attribute-name.event.slim","content"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","p"], + ["text"," This example shows you how a basic Slim file looks."] +],[ + "start" +],[ + "start", + ["text"," "], + ["meta.line.ruby.slim","== yield"] +],[ + "start" +],[ + "start", + ["text"," "], + ["meta.line.ruby.slim","- if items.any?"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","table"], + ["punctuation.separator.key-value.html","#"], + ["entity.other.attribute-name.html","items"] +],[ + "start", + ["text"," "], + ["meta.line.ruby.slim","- for item in items"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","tr"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","td"], + ["punctuation.separator.key-value.html","."], + ["entity.other.attribute-name.html","name"], + ["text"," "], + ["meta.line.ruby.slim","= item.name"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","td"], + ["punctuation.separator.key-value.html","."], + ["entity.other.attribute-name.html","price"], + ["text"," "], + ["meta.line.ruby.slim","= item.price"] +],[ + "start", + ["text"," "], + ["meta.line.ruby.slim","- else"] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","p"], + ["text"," No items found. Please add some inventory."] +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","Thank"], + ["text"," you!"] +],[ + "start" +],[ + "start", + ["meta.tag"," "], + ["entity.name.tag.slim","div"], + ["text"," "], + ["entity.other.attribute-name.event.slim","id"], + ["text","="], + ["punctuation.definition.string.begin.html","\""], + ["string.quoted.double.html","footer"], + ["punctuation.definition.string.end.html","\""] +],[ + "start", + ["text"," "], + ["meta.line.ruby.slim","== render 'footer'"] +],[ + "start", + ["text"," | Copyright © "], + ["punctuation.section.embedded.ruby","#{"], + ["source.ruby.embedded.html","@year"], + ["punctuation.section.embedded.ruby","}"], + ["text"," "], + ["punctuation.section.embedded.ruby","#{"], + ["source.ruby.embedded.html","@author"], + ["punctuation.section.embedded.ruby","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rust.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rust.json new file mode 100644 index 00000000..68add464 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_rust.json @@ -0,0 +1,299 @@ +[[ + "start", + ["keyword.source.rust","use"], + ["text"," "], + ["support.constant","core::rand::"], + ["text","RngUtil"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["keyword.source.rust","fn"], + ["text"," "], + ["entity.name.function.source.rust","main"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.source.rust","for"], + ["text"," "], + ["paren.lparen","["], + ["string.quoted.double.source.rust","\"Alice\""], + ["punctuation.operator",","], + ["text"," "], + ["string.quoted.double.source.rust","\"Bob\""], + ["punctuation.operator",","], + ["text"," "], + ["string.quoted.double.source.rust","\"Carol\""], + ["paren.rparen","]"], + ["punctuation.operator","."], + ["text","each "], + ["keyword.operator","|&"], + ["text","name"], + ["keyword.operator","|"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.source.rust","do"], + ["text"," spawn "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.source.rust","let"], + ["text"," v "], + ["keyword.operator","="], + ["text"," "], + ["support.constant","rand::"], + ["text","Rng"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["punctuation.operator","."], + ["text","shuffle"], + ["paren.lparen","(["], + ["constant.numeric.source.rust","1"], + ["punctuation.operator",","], + ["text"," "], + ["constant.numeric.source.rust","2"], + ["punctuation.operator",","], + ["text"," "], + ["constant.numeric.source.rust","3"], + ["paren.rparen","])"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.source.rust","for"], + ["text"," v"], + ["punctuation.operator","."], + ["text","each "], + ["keyword.operator","|&"], + ["text","num"], + ["keyword.operator","|"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," print"], + ["paren.lparen","("], + ["text","fmt"], + ["keyword.operator","!"], + ["paren.lparen","("], + ["string.quoted.double.source.rust","\"%s says: '%d'"], + ["constant.character.escape.source.rust","\\n\\\\"], + ["string.quoted.double.source.rust","\""], + ["punctuation.operator",","], + ["text"," name"], + ["punctuation.operator",","], + ["text"," num "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric.source.rust","1"], + ["paren.rparen","))"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword.source.rust","let"], + ["text"," _ "], + ["punctuation.operator",":"], + ["storage.type.source.rust","i128"], + ["keyword.operator","=-"], + ["constant.numeric.source.rust","42i128"], + ["punctuation.operator",";"] +],[ + "start", + ["keyword.source.rust","let"], + ["text"," _ "], + ["punctuation.operator",":"], + ["storage.type.source.rust","u128"], + ["keyword.operator","="], + ["constant.numeric.source.rust","42u128"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + ["comment","comment"], + ["comment.start.block.source.rust","/*"], + ["comment.block.source.rust"," nested "], + ["comment.start.block.source.rust","/*"], + ["comment.block.source.rust"," "] +],[ + "start", + ["comment.block.source.rust"," comments "], + ["comment.end.block.source.rust","*/"], + ["comment.block.source.rust"," "], + ["comment.end.block.source.rust","*/"] +],[ + "start" +],[ + "start", + ["keyword.source.rust","fn"], + ["text"," "], + ["entity.name.function.source.rust","map"], + ["keyword.operator","<"], + ["text","T"], + ["punctuation.operator",","], + ["text"," U"], + ["keyword.operator",">"], + ["paren.lparen","("], + ["text","vector"], + ["punctuation.operator",":"], + ["text"," "], + ["keyword.operator","&"], + ["paren.lparen","["], + ["text","T"], + ["paren.rparen","]"], + ["punctuation.operator",","], + ["text"," function"], + ["punctuation.operator",":"], + ["text"," "], + ["keyword.operator","&"], + ["text","fn"], + ["paren.lparen","("], + ["text","v"], + ["punctuation.operator",":"], + ["text"," "], + ["keyword.operator","&"], + ["text","T"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","->"], + ["text"," U"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","->"], + ["text"," ~"], + ["paren.lparen","["], + ["text","U"], + ["paren.rparen","]"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.source.rust","let"], + ["text"," "], + ["keyword.source.rust","mut"], + ["text"," accumulator "], + ["keyword.operator","="], + ["text"," ~"], + ["paren.lparen","["], + ["paren.rparen","]"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.source.rust","for"], + ["text"," "], + ["support.constant","vec::"], + ["text","each"], + ["paren.lparen","("], + ["text","vector"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","|"], + ["text","element"], + ["keyword.operator","|"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," accumulator"], + ["punctuation.operator","."], + ["text","push"], + ["paren.lparen","("], + ["text","function"], + ["paren.lparen","("], + ["text","element"], + ["paren.rparen","))"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["keyword.source.rust","return"], + ["text"," accumulator"], + ["punctuation.operator",";"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start" +],[ + "start", + ["comment.line.double-dash.source.rust","// numbers"] +],[ + "start", + ["constant.numeric.source.rust","14E-111_f64"], + ["punctuation.operator",";"], + ["text"," "], + ["constant.numeric.source.rust","45isize"], + ["text"," "], + ["constant.numeric.source.rust","0x1i32"], + ["text"," "], + ["constant.numeric.source.rust","0o777u32"], + ["text"," "], + ["constant.numeric.source.rust","0b01"], + ["text"," "], + ["constant.numeric.source.rust","14f32"], + ["text"," "], + ["constant.numeric.source.rust","1_2.78f32"], + ["text"," "], + ["constant.numeric.source.rust","1_2.3E+7f32"] +],[ + "start" +],[ + "start", + ["comment.line.double-dash.source.rust","// not numbers"] +],[ + "start", + ["constant.numeric.source.rust","14"], + ["punctuation.operator","."], + ["text","_E"], + ["keyword.operator","-"], + ["constant.numeric.source.rust","111_f64"], + ["punctuation.operator",";"], + ["text","0xi32"], + ["punctuation.operator",";"], + ["text","0b777u"] +],[ + "start", + ["text","foo1"], + ["punctuation.operator",";"], + ["text","foo1u32"], + ["punctuation.operator",";"], + ["text","foo1f32"], + ["punctuation.operator",";"], + ["text","foo0xF"], + ["punctuation.operator",";"], + ["text","foo1"], + ["punctuation.operator","."], + ["constant.numeric.source.rust","0"] +]] diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sass.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sass.json new file mode 100644 index 00000000..c0b85682 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sass.json @@ -0,0 +1,229 @@ +[[ + "start", + ["comment","// sass ace mode;"] +],[ + "start" +],[ + "start", + ["keyword","@import"], + ["text"," "], + ["support.function","url("], + ["string","http://fonts.googleapis.com/css?family=Ace:700"], + ["support.function",")"] +],[ + "start" +],[ + "start", + ["variable.language","html"], + ["text",", "], + ["variable.language","body"] +],[ + "start", + ["support.type"," :background-color "], + ["constant.numeric","#ace"] +],[ + "start", + ["text"," "], + ["support.type","text-align"], + ["text",": "], + ["constant.language","center"] +],[ + "start", + ["text"," "], + ["support.type","height"], + ["text",": "], + ["constant.numeric","100%"] +],[ + ["comment",-1,2,"start"], + ["comment"," /*;*********;"] +],[ + ["comment",3,2,"start"], + ["comment"," ;comment ;"] +],[ + ["comment",3,2,"start"], + ["comment"," ;*********;"] +],[ + "start" +],[ + "start", + ["variable.language",".toggle"] +],[ + "start", + ["text"," "], + ["variable","$size"], + ["text",": "], + ["constant.numeric","14px"] +],[ + "start" +],[ + "start", + ["support.type"," :background "], + ["support.function","url("], + ["string","http://subtlepatterns.com/patterns/dark_stripes.png"], + ["support.function",")"] +],[ + "start", + ["text"," "], + ["support.type","border-radius"], + ["text",": "], + ["constant.numeric","8px"] +],[ + "start", + ["text"," "], + ["support.type","height"], + ["text",": "], + ["variable","$size"] +],[ + "start" +],[ + "start", + ["text"," &"], + ["variable.language",":before"] +],[ + "start", + ["text"," "], + ["variable","$radius"], + ["text",": "], + ["variable","$size"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["constant.numeric","0.845"] +],[ + "start", + ["text"," "], + ["variable","$glow"], + ["text",": "], + ["variable","$size"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["constant.numeric","0.125"] +],[ + "start" +],[ + "start", + ["text"," "], + ["support.type","box-shadow"], + ["text",": "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["variable","$glow"], + ["text"," "], + ["variable","$glow"], + ["text"," / "], + ["constant.numeric","2"], + ["text"," "], + ["constant.numeric","#fff"] +],[ + "start", + ["text"," "], + ["support.type","border-radius"], + ["text",": "], + ["variable","$radius"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," &"], + ["variable.language",":active"] +],[ + "start", + ["text"," ~ "], + ["variable.language",".button"] +],[ + "start", + ["text"," "], + ["support.type","box-shadow"], + ["text",": "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","15px"], + ["text"," "], + ["constant.numeric","25px"], + ["text"," "], + ["constant.numeric","-4px"], + ["text"," "], + ["support.function","rgba"], + ["paren.lparen","("], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0.4"], + ["paren.rparen",")"], + ["text"," "] +],[ + "start", + ["text"," ~ "], + ["variable.language",".label"] +],[ + "start", + ["text"," "], + ["support.type","font-size"], + ["text",": "], + ["constant.numeric","40px"] +],[ + "start", + ["text"," "], + ["support.type","color"], + ["text",": "], + ["support.function","rgba"], + ["paren.lparen","("], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0.45"], + ["paren.rparen",")"] +],[ + "start" +],[ + "start", + ["text"," &"], + ["variable.language",":checked"], + ["text"," "] +],[ + "start", + ["text"," ~ "], + ["variable.language",".button"] +],[ + "start", + ["text"," "], + ["support.type","box-shadow"], + ["text",": "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","15px"], + ["text"," "], + ["constant.numeric","25px"], + ["text"," "], + ["constant.numeric","-4px"], + ["text"," "], + ["constant.numeric","#ace"] +],[ + "start", + ["text"," ~ "], + ["variable.language",".label"] +],[ + "start", + ["text"," "], + ["support.type","font-size"], + ["text",": "], + ["constant.numeric","40px"] +],[ + "start", + ["text"," "], + ["support.type","color"], + ["text",": "], + ["constant.numeric","#c9c9c9"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scad.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scad.json new file mode 100644 index 00000000..8f0ff637 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scad.json @@ -0,0 +1,194 @@ +[[ + "start", + ["comment","// ace can highlight scad!"] +],[ + "start", + ["keyword","module"], + ["text"," "], + ["identifier","Element"], + ["paren.lparen","("], + ["identifier","xpos"], + ["text",", "], + ["identifier","ypos"], + ["text",", "], + ["identifier","zpos"], + ["paren.rparen",")"], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["identifier","translate"], + ["paren.lparen","(["], + ["identifier","xpos"], + ["text",","], + ["identifier","ypos"], + ["text",","], + ["identifier","zpos"], + ["paren.rparen","])"], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t"], + ["identifier","union"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t\t"], + ["identifier","cube"], + ["paren.lparen","(["], + ["constant.numeric","10"], + ["text",","], + ["constant.numeric","10"], + ["text",","], + ["constant.numeric","4"], + ["paren.rparen","]"], + ["text",","], + ["identifier","true"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text","\t\t\t"], + ["identifier","cylinder"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["text",","], + ["constant.numeric","15"], + ["text",","], + ["constant.numeric","5"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text","\t\t\t"], + ["identifier","translate"], + ["paren.lparen","(["], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","10"], + ["paren.rparen","])"], + ["identifier","sphere"], + ["paren.lparen","("], + ["constant.numeric","5"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text","\t\t"], + ["paren.rparen","}"] +],[ + "start", + ["text","\t"], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["identifier","union"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["keyword","for"], + ["paren.lparen","("], + ["identifier","i"], + ["keyword.operator","="], + ["paren.lparen","["], + ["constant.numeric","0"], + ["text",":"], + ["constant.numeric","30"], + ["paren.rparen","])"], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t# "], + ["identifier","Element"], + ["paren.lparen","("], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text","\t\t"], + ["identifier","Element"], + ["paren.lparen","("], + ["constant.numeric","15"], + ["keyword.operator","*"], + ["identifier","i"], + ["text",","], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text","\t"], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","for"], + ["text"," "], + ["paren.lparen","("], + ["identifier","i"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","["], + ["constant.numeric","3"], + ["text",", "], + ["constant.numeric","5"], + ["text",", "], + ["constant.numeric","7"], + ["text",", "], + ["constant.numeric","11"], + ["paren.rparen","])"], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["identifier","rotate"], + ["paren.lparen","(["], + ["identifier","i"], + ["keyword.operator","*"], + ["constant.numeric","10"], + ["text",","], + ["constant.numeric","0"], + ["text",","], + ["constant.numeric","0"], + ["paren.rparen","])"], + ["identifier","scale"], + ["paren.lparen","(["], + ["constant.numeric","1"], + ["text",","], + ["constant.numeric","1"], + ["text",","], + ["identifier","i"], + ["paren.rparen","])"], + ["identifier","cube"], + ["paren.lparen","("], + ["constant.numeric","10"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scala.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scala.json new file mode 100644 index 00000000..e59e55dc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scala.json @@ -0,0 +1,542 @@ +[[ + "start", + ["comment","// http://www.scala-lang.org/node/54"] +],[ + "start" +],[ + "start", + ["keyword","package"], + ["text"," "], + ["identifier","examples"], + ["text","."], + ["identifier","actors"] +],[ + "start" +],[ + "start", + ["keyword","import"], + ["text"," "], + ["identifier","scala"], + ["text","."], + ["identifier","actors"], + ["text","."], + ["identifier","Actor"] +],[ + "start", + ["keyword","import"], + ["text"," "], + ["identifier","scala"], + ["text","."], + ["identifier","actors"], + ["text","."], + ["identifier","Actor"], + ["text","."], + ["identifier","_"] +],[ + "start" +],[ + "start", + ["keyword","abstract"], + ["text"," "], + ["keyword","class"], + ["text"," "], + ["identifier","PingMessage"] +],[ + "start", + ["keyword","case"], + ["text"," "], + ["keyword","object"], + ["text"," "], + ["identifier","Start"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","PingMessage"] +],[ + "start", + ["keyword","case"], + ["text"," "], + ["keyword","object"], + ["text"," "], + ["identifier","SendPing"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","PingMessage"] +],[ + "start", + ["keyword","case"], + ["text"," "], + ["keyword","object"], + ["text"," "], + ["identifier","Pong"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","PingMessage"] +],[ + "start" +],[ + "start", + ["keyword","abstract"], + ["text"," "], + ["keyword","class"], + ["text"," "], + ["identifier","PongMessage"] +],[ + "start", + ["keyword","case"], + ["text"," "], + ["keyword","object"], + ["text"," "], + ["identifier","Ping"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","PongMessage"] +],[ + "start", + ["keyword","case"], + ["text"," "], + ["keyword","object"], + ["text"," "], + ["identifier","Stop"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","PongMessage"] +],[ + "start" +],[ + "start", + ["keyword","object"], + ["text"," "], + ["identifier","pingpong"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["support.function","Application"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","val"], + ["text"," "], + ["identifier","pong"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword","new"], + ["text"," "], + ["identifier","Pong"] +],[ + "start", + ["text"," "], + ["keyword","val"], + ["text"," "], + ["identifier","ping"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword","new"], + ["text"," "], + ["identifier","Ping"], + ["paren.lparen","("], + ["constant.numeric","100000"], + ["text",", "], + ["identifier","pong"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","ping"], + ["text","."], + ["identifier","start"] +],[ + "start", + ["text"," "], + ["identifier","pong"], + ["text","."], + ["identifier","start"] +],[ + "start", + ["text"," "], + ["identifier","ping"], + ["text"," "], + ["keyword.operator","!"], + ["text"," "], + ["identifier","Start"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","Ping"], + ["paren.lparen","("], + ["identifier","count"], + ["text",": "], + ["support.function","Int"], + ["text",", "], + ["identifier","pong"], + ["text",": "], + ["identifier","Actor"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","Actor"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","def"], + ["text"," "], + ["identifier","act"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","println"], + ["paren.lparen","("], + ["string","\"Ping: Initializing with count \""], + ["keyword.operator","+"], + ["identifier","count"], + ["keyword.operator","+"], + ["string","\": \""], + ["keyword.operator","+"], + ["identifier","pong"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","var"], + ["text"," "], + ["identifier","pingsLeft"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","count"] +],[ + "start", + ["text"," "], + ["identifier","loop"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","react"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","case"], + ["text"," "], + ["identifier","Start"], + ["text"," "], + ["keyword.operator","=>"] +],[ + "start", + ["text"," "], + ["keyword","println"], + ["paren.lparen","("], + ["string","\"Ping: starting.\""], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","pong"], + ["text"," "], + ["keyword.operator","!"], + ["text"," "], + ["identifier","Ping"] +],[ + "start", + ["text"," "], + ["identifier","pingsLeft"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","pingsLeft"], + ["text"," "], + ["keyword.operator","-"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","case"], + ["text"," "], + ["identifier","SendPing"], + ["text"," "], + ["keyword.operator","=>"] +],[ + "start", + ["text"," "], + ["identifier","pong"], + ["text"," "], + ["keyword.operator","!"], + ["text"," "], + ["identifier","Ping"] +],[ + "start", + ["text"," "], + ["identifier","pingsLeft"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","pingsLeft"], + ["text"," "], + ["keyword.operator","-"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","case"], + ["text"," "], + ["identifier","Pong"], + ["text"," "], + ["keyword.operator","=>"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","pingsLeft"], + ["text"," "], + ["keyword.operator","%"], + ["text"," "], + ["constant.numeric","1000"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["constant.numeric","0"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","println"], + ["paren.lparen","("], + ["string","\"Ping: pong from: \""], + ["keyword.operator","+"], + ["identifier","sender"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","pingsLeft"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","0"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","self"], + ["text"," "], + ["keyword.operator","!"], + ["text"," "], + ["identifier","SendPing"] +],[ + "start", + ["text"," "], + ["keyword","else"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","println"], + ["paren.lparen","("], + ["string","\"Ping: Stop.\""], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","pong"], + ["text"," "], + ["keyword.operator","!"], + ["text"," "], + ["identifier","Stop"] +],[ + "start", + ["text"," "], + ["identifier","exit"], + ["paren.lparen","("], + ["symbol.constant","'stop"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","Pong"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","Actor"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","def"], + ["text"," "], + ["identifier","act"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","var"], + ["text"," "], + ["identifier","pongCount"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"] +],[ + "start", + ["text"," "], + ["identifier","loop"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","react"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","case"], + ["text"," "], + ["identifier","Ping"], + ["text"," "], + ["keyword.operator","=>"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","pongCount"], + ["text"," "], + ["keyword.operator","%"], + ["text"," "], + ["constant.numeric","1000"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["constant.numeric","0"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","println"], + ["paren.lparen","("], + ["string","\"Pong: ping \""], + ["keyword.operator","+"], + ["identifier","pongCount"], + ["keyword.operator","+"], + ["string","\" from \""], + ["keyword.operator","+"], + ["identifier","sender"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","sender"], + ["text"," "], + ["keyword.operator","!"], + ["text"," "], + ["identifier","Pong"] +],[ + "start", + ["text"," "], + ["identifier","pongCount"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","pongCount"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","case"], + ["text"," "], + ["identifier","Stop"], + ["text"," "], + ["keyword.operator","=>"] +],[ + "start", + ["text"," "], + ["keyword","println"], + ["paren.lparen","("], + ["string","\"Pong: Stop.\""], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","exit"], + ["paren.lparen","("], + ["symbol.constant","'stop"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scheme.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scheme.json new file mode 100644 index 00000000..42f4aa65 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scheme.json @@ -0,0 +1,216 @@ +[[ + "start", + ["text","("], + ["storage.type.function-type.scheme","define"], + ["text"," "], + ["text","("], + ["identifier","prompt-for-cd"], + ["text",")"] +],[ + "start", + ["text"," "], + ["string","\"Prompts"] +],[ + "start", + ["text"," "], + ["identifier","for"], + ["text"," "], + ["identifier","CD"], + ["text","\""] +],[ + "start", + ["text"," ("], + ["identifier","prompt-read"], + ["text"," "], + ["string","\"Title\""], + ["text"," "], + ["constant.numeric","1.53"], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text","/"], + ["constant.numeric","4"], + ["text"," "], + ["constant.numeric","1.7"], + ["text"," "], + ["constant.numeric","1.7e0"], + ["text"," "], + ["constant.numeric","2.9E-4"], + ["text"," "], + ["constant.numeric","+42"], + ["text"," "], + ["constant.numeric","-7"], + ["text"," "], + ["constant.numeric","#b001"], + ["text"," "], + ["constant.numeric","#b001"], + ["text","/"], + ["constant.numeric","100"], + ["text"," "], + ["constant.numeric","#o777"], + ["text"," "], + ["constant.numeric","#O777"], + ["text"," "], + ["constant.numeric","#xabc55"], + ["text"," "], + ["identifier","#c"], + ["text","("], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","-5.6"], + ["text","))"] +],[ + "start", + ["text"," ("], + ["identifier","prompt-read"], + ["text"," "], + ["string","\"Artist\""], + ["text",")"] +],[ + "start", + ["text"," ("], + ["keyword.operator","or"], + ["text"," ("], + ["identifier","parse-integer"], + ["text"," ("], + ["identifier","prompt-read"], + ["text"," "], + ["string","\"Rating\""], + ["text",") "], + ["punctuation.definition.constant.character.scheme","#:junk-allowed"], + ["text"," "], + ["constant.language","#t"], + ["text",") "], + ["constant.numeric","0"], + ["text",")"] +],[ + "start", + ["text"," ("], + ["keyword.control","if"], + ["text"," "], + ["identifier","x"], + ["text"," ("], + ["support.function","format"], + ["text"," "], + ["constant.language","#t"], + ["text"," "], + ["string","\"yes\""], + ["text",") ("], + ["support.function","format"], + ["text"," "], + ["constant.language","#f"], + ["text"," "], + ["string","\"no\""], + ["text",") "], + ["comment",";and here comment"] +],[ + "start", + ["text"," ) "] +],[ + "start", + ["text"," "], + ["comment",";; second line comment"] +],[ + "start", + ["text"," '(+ "], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text",")"] +],[ + "start", + ["text"," ("], + ["identifier","position-if-not"], + ["text"," "], + ["identifier","char-set"], + ["text",":"], + ["identifier","whitespace"], + ["text"," "], + ["identifier","line"], + ["text"," "], + ["punctuation.definition.constant.character.scheme","#:start"], + ["text"," "], + ["identifier","beg"], + ["text","))"] +],[ + "start", + ["text"," ("], + ["support.function","quote"], + ["text"," ("], + ["identifier","privet"], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["constant.numeric","3"], + ["text","))"] +],[ + "start", + ["text"," '("], + ["identifier","hello"], + ["text"," "], + ["identifier","world"], + ["text",")"] +],[ + "start", + ["text"," (* "], + ["constant.numeric","5"], + ["text"," "], + ["constant.numeric","7"], + ["text",")"] +],[ + "start", + ["text"," ("], + ["constant.numeric","1"], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["constant.numeric","34"], + ["text"," "], + ["constant.numeric","5"], + ["text",")"] +],[ + "start", + ["text"," ("], + ["punctuation.definition.constant.character.scheme","#:use"], + ["text"," "], + ["string","\"aaaa\""], + ["text",")"] +],[ + "start", + ["text"," ("], + ["keyword.control","let"], + ["text"," (("], + ["identifier","x"], + ["text"," "], + ["constant.numeric","10"], + ["text",") ("], + ["identifier","y"], + ["text"," "], + ["constant.numeric","20"], + ["text","))"] +],[ + "start", + ["text"," ("], + ["identifier","display"], + ["text"," (+ "], + ["identifier","x"], + ["text"," "], + ["identifier","y"], + ["text","))"] +],[ + "start", + ["text"," ) "] +],[ + "start" +],[ + "start", + ["text"," "], + ["string","\"asdad"], + ["constant.character.escape.scheme","\\0"], + ["string","eqweqe\""] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scss.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scss.json new file mode 100644 index 00000000..7e92f153 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_scss.json @@ -0,0 +1,123 @@ +[[ + "start", + ["comment","/* style.scss */"] +],[ + "start" +],[ + "start", + ["variable.language","#navbar"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable","$navbar-width"], + ["text",": "], + ["constant.numeric","800px"], + ["text",";"] +],[ + "start", + ["text"," "], + ["variable","$items"], + ["text",": "], + ["constant.numeric","5"], + ["text",";"] +],[ + "start", + ["text"," "], + ["variable","$navbar-color"], + ["text",": "], + ["constant.numeric","#ce4dd6"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["support.type","width"], + ["text",": "], + ["variable","$navbar-width"], + ["text",";"] +],[ + "start", + ["text"," "], + ["support.type","border-bottom"], + ["text",": "], + ["constant.numeric","2px"], + ["text"," "], + ["constant.language","solid"], + ["text"," "], + ["variable","$navbar-color"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["variable.language","li"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.type","float"], + ["text",": "], + ["support.type","left"], + ["text",";"] +],[ + "start", + ["text"," "], + ["support.type","width"], + ["text",": "], + ["variable","$navbar-width"], + ["text","/"], + ["variable","$items"], + ["text"," "], + ["constant","-"], + ["text"," "], + ["constant.numeric","10px"], + ["text",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["support.type","background-color"], + ["text",": "], + ["support.function","lighten"], + ["paren.lparen","("], + ["variable","$navbar-color"], + ["text",", "], + ["constant.numeric","20%"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text"," &"], + ["variable.language",":hover"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.type","background-color"], + ["text",": "], + ["support.function","lighten"], + ["paren.lparen","("], + ["variable","$navbar-color"], + ["text",", "], + ["constant.numeric","10%"], + ["paren.rparen",")"], + ["text",";"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sh.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sh.json new file mode 100644 index 00000000..4ec172b5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sh.json @@ -0,0 +1,397 @@ +[[ + "start", + ["comment","#!/bin/sh"] +],[ + "start" +],[ + "start", + ["comment","# Script to open a browser to current branch"] +],[ + "start", + ["comment","# Repo formats:"] +],[ + "start", + ["comment","# ssh git@github.com:richo/gh_pr.git"] +],[ + "start", + ["comment","# http https://richoH@github.com/richo/gh_pr.git"] +],[ + "start", + ["comment","# git git://github.com/richo/gh_pr.git"] +],[ + "start" +],[ + "start", + ["variable","username"], + ["keyword.operator","=`"], + ["identifier","git"], + ["text"," "], + ["identifier","config"], + ["text"," "], + ["keyword.operator","--"], + ["identifier","get"], + ["text"," "], + ["identifier","github"], + ["text","."], + ["identifier","user"], + ["keyword.operator","`"] +],[ + "start" +],[ + "start", + ["support.function","get_repo()"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","git"], + ["text"," "], + ["identifier","remote"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","v"], + ["text"," "], + ["keyword.operator","|"], + ["text"," "], + ["identifier","grep"], + ["text"," "], + ["variable","$"], + ["paren.lparen","{"], + ["variable","@"], + ["keyword.operator",":-"], + ["variable","$username"], + ["paren.rparen","}"], + ["text"," "], + ["keyword.operator","|"], + ["text"," "], + ["keyword","while"], + ["text"," "], + ["keyword","read"], + ["text"," "], + ["identifier","remote"], + ["punctuation.operator",";"], + ["text"," "], + ["keyword","do"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","repo"], + ["keyword.operator","=`"], + ["support.function.builtin","echo"], + ["text"," "], + ["variable","$remote"], + ["text"," "], + ["keyword.operator","|"], + ["text"," "], + ["identifier","grep"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","E"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","o"], + ["text"," "], + ["string.start","\""], + ["string","git@github.com:[^ ]*"], + ["string.end","\""], + ["keyword.operator","`"], + ["punctuation.operator",";"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["support.function.builtin","echo"], + ["text"," "], + ["variable","$repo"], + ["text"," "], + ["keyword.operator","|"], + ["text"," "], + ["identifier","sed"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","e"], + ["text"," "], + ["string.start","\""], + ["string","s/^git@github\\.com://"], + ["string.end","\""], + ["text"," "], + ["keyword.operator","-"], + ["identifier","e"], + ["text"," "], + ["string.start","\""], + ["string","s/\\.git$//"], + ["string.end","\""] +],[ + "start", + ["text"," "], + ["support.function.builtin","exit"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","fi"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","repo"], + ["keyword.operator","=`"], + ["support.function.builtin","echo"], + ["text"," "], + ["variable","$remote"], + ["text"," "], + ["keyword.operator","|"], + ["text"," "], + ["identifier","grep"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","E"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","o"], + ["text"," "], + ["string.start","\""], + ["string","https?://([^@]*@)?github.com/[^ ]*\\.git"], + ["string.end","\""], + ["keyword.operator","`"], + ["punctuation.operator",";"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["support.function.builtin","echo"], + ["text"," "], + ["variable","$repo"], + ["text"," "], + ["keyword.operator","|"], + ["text"," "], + ["identifier","sed"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","e"], + ["text"," "], + ["string.start","\""], + ["string","s|^https?://||"], + ["string.end","\""], + ["text"," "], + ["keyword.operator","-"], + ["identifier","e"], + ["text"," "], + ["string.start","\""], + ["string","s/^.*github\\.com\\///"], + ["string.end","\""], + ["text"," "], + ["keyword.operator","-"], + ["identifier","e"], + ["text"," "], + ["string.start","\""], + ["string","s/\\.git$//"], + ["string.end","\""] +],[ + "start", + ["text"," "], + ["support.function.builtin","exit"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","fi"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["variable","repo"], + ["keyword.operator","=`"], + ["support.function.builtin","echo"], + ["text"," "], + ["variable","$remote"], + ["text"," "], + ["keyword.operator","|"], + ["text"," "], + ["identifier","grep"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","E"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","o"], + ["text"," "], + ["string.start","\""], + ["string","git://github.com/[^ ]*\\.git"], + ["string.end","\""], + ["keyword.operator","`"], + ["punctuation.operator",";"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["support.function.builtin","echo"], + ["text"," "], + ["variable","$repo"], + ["text"," "], + ["keyword.operator","|"], + ["text"," "], + ["identifier","sed"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","e"], + ["text"," "], + ["string.start","\""], + ["string","s|^git://github.com/||"], + ["string.end","\""], + ["text"," "], + ["keyword.operator","-"], + ["identifier","e"], + ["text"," "], + ["string.start","\""], + ["string","s/\\.git$//"], + ["string.end","\""] +],[ + "start", + ["text"," "], + ["support.function.builtin","exit"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","fi"] +],[ + "start", + ["text"," "], + ["keyword","done"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","["], + ["text"," "], + ["variable.language","$?"], + ["text"," "], + ["keyword.operator","-"], + ["identifier","eq"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["paren.rparen","]"], + ["punctuation.operator",";"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["support.function.builtin","echo"], + ["text"," "], + ["string.start","\""], + ["string","Couldn't find a valid remote"], + ["string.end","\""], + ["text"," "], + ["keyword.operator",">"], + ["support.function","&2"] +],[ + "start", + ["text"," "], + ["support.function.builtin","exit"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text"," "], + ["keyword","fi"] +],[ + "start", + ["paren.rparen","}"] +],[ + "start" +],[ + "start", + ["support.function.builtin","echo"], + ["text"," "], + ["variable","$"], + ["paren.lparen","{"], + ["keyword.operator","#"], + ["variable","x"], + ["paren.lparen","["], + ["text","@"], + ["paren.rparen","]}"] +],[ + "start" +],[ + "start", + ["keyword","if"], + ["text"," "], + ["variable","repo"], + ["keyword.operator","=`"], + ["identifier","get_repo"], + ["text"," "], + ["variable","$@"], + ["keyword.operator","`"], + ["punctuation.operator",";"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["variable","branch"], + ["keyword.operator","=`"], + ["identifier","git"], + ["text"," "], + ["identifier","symbolic"], + ["keyword.operator","-"], + ["identifier","ref"], + ["text"," "], + ["identifier","HEAD"], + ["text"," "], + ["constant.numeric","2"], + ["keyword.operator",">/"], + ["identifier","dev"], + ["keyword.operator","/"], + ["identifier","null"], + ["keyword.operator","`"] +],[ + "start", + ["text"," "], + ["support.function.builtin","echo"], + ["text"," "], + ["string.start","\""], + ["string","http://github.com/"], + ["variable","$repo"], + ["string","/pull/new/"], + ["variable","$"], + ["paren.lparen","{"], + ["variable","branch"], + ["keyword.operator","##"], + ["identifier","refs"], + ["keyword.operator","/"], + ["identifier","heads"], + ["keyword.operator","/"], + ["paren.rparen","}"], + ["string.end","\""] +],[ + "start", + ["keyword","else"] +],[ + "start", + ["text"," "], + ["support.function.builtin","exit"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["keyword","fi"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sjs.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sjs.json new file mode 100644 index 00000000..5cd96451 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sjs.json @@ -0,0 +1,276 @@ +[[ + "start", + ["storage.type","var"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["identifier","each"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","map"], + ["text"," "], + ["paren.rparen","}"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","require"], + ["paren.lparen","("], + ["string","'sjs:sequence'"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["storage.type","var"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["keyword","get"], + ["text"," "], + ["paren.rparen","}"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","require"], + ["paren.lparen","("], + ["string","'sjs:http'"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["storage.type","function"], + ["text"," "], + ["entity.name.function","foo"], + ["paren.lparen","("], + ["variable.parameter","items"], + ["punctuation.operator",", "], + ["variable.parameter","nada"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["no_regex"], + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","component"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["identifier","name"], + ["punctuation.operator",":"], + ["text"," "], + ["string","\"Ace\""], + ["punctuation.operator",","], + ["text"," "], + ["identifier","role"], + ["punctuation.operator",":"], + ["text"," "], + ["string","\"Editor\""], + ["text"," "], + ["paren.rparen","}"], + ["punctuation.operator",";"] +],[ + ["qqstring","no_regex"], + ["text"," "], + ["storage.type","console"], + ["punctuation.operator","."], + ["support.function.firebug","log"], + ["paren.lparen","("], + ["string","\""] +],[ + ["qqstring","no_regex"], + ["string"," Welcome, "], + ["paren.lparen","#{"], + ["identifier","component"], + ["text","."], + ["identifier","name"], + ["paren.rparen","}"] +],[ + ["no_regex"], + ["string"," \""], + ["punctuation.operator","."], + ["identifier","trim"], + ["paren.lparen","("], + ["paren.rparen","))"], + ["punctuation.operator",";"] +],[ + ["no_regex"] +],[ + ["no_regex"], + ["text"," "], + ["identifier","logging"], + ["punctuation.operator","."], + ["identifier","debug"], + ["paren.lparen","("], + ["string","`Component added: "], + ["paren.lparen","$"], + ["identifier","String"], + ["paren.lparen","("], + ["identifier","component"], + ["paren.rparen",")"], + ["string"," ("], + ["paren.lparen","${"], + ["identifier","component"], + ["paren.rparen","}"], + ["string",")`"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + ["no_regex"] +],[ + ["bstring","no_regex"], + ["text"," "], + ["storage.type","console"], + ["punctuation.operator","."], + ["support.function.firebug","log"], + ["paren.lparen","("], + ["string","`"] +],[ + ["string_interp","string_interp","bstring","no_regex"], + ["string"," Welcome, {"], + ["paren.lparen","${"], + ["storage.type","function"], + ["text","() "], + ["paren.lparen","{"] +],[ + ["string_interp","string_interp","bstring","no_regex"], + ["text"," "], + ["keyword","return"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["identifier","x"], + ["text",": "], + ["constant.numeric","1"], + ["text",", "], + ["identifier","y"], + ["text",": "], + ["string","\"why?}\""], + ["paren.rparen","}"], + ["text",";"] +],[ + ["bstring","no_regex"], + ["text"," "], + ["paren.rparen","}"], + ["text","()"], + ["paren.rparen","}"] +],[ + ["no_regex"], + ["string"," `"], + ["punctuation.operator","."], + ["identifier","trim"], + ["paren.lparen","("], + ["paren.rparen","))"], + ["punctuation.operator",";"] +],[ + ["no_regex"] +],[ + ["no_regex"], + ["text"," "], + ["keyword","waitfor"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["no_regex"], + ["text"," "], + ["identifier","items"], + ["text"," "], + ["keyword.operator",".."], + ["text"," "], + ["identifier","each"], + ["punctuation.operator","."], + ["identifier","par"], + ["text"," "], + ["paren.lparen","{"], + ["text"," "], + ["paren.rparen","|"], + ["variable.parameter","item"], + ["paren.rparen","|"] +],[ + ["no_regex"], + ["text"," "], + ["keyword","get"], + ["paren.lparen","("], + ["identifier","item"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + ["no_regex"], + ["text"," "], + ["paren.rparen","}"] +],[ + ["no_regex"], + ["text"," "], + ["paren.rparen","}"], + ["text"," "], + ["keyword","and"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["no_regex"], + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","lengths"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","items"], + ["text"," "], + ["keyword.operator",".."], + ["text"," "], + ["identifier","map"], + ["paren.lparen","("], + ["identifier","i"], + ["text"," "], + ["keyword.operator","->"], + ["text"," "], + ["identifier","i"], + ["punctuation.operator","."], + ["support.constant","length"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + ["no_regex"], + ["text"," "], + ["paren.rparen","}"], + ["text"," "], + ["keyword","or"], + ["text"," "], + ["paren.lparen","{"] +],[ + ["no_regex"], + ["text"," "], + ["variable.language","hold"], + ["paren.lparen","("], + ["constant.numeric","1500"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + ["no_regex"], + ["text"," "], + ["keyword","throw"], + ["text"," "], + ["keyword","new"], + ["text"," "], + ["variable.language","Error"], + ["paren.lparen","("], + ["string","\"timed out\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + ["no_regex"], + ["text"," "], + ["paren.rparen","}"] +],[ + ["no_regex"], + ["paren.rparen","}"], + ["text","\t"], + ["comment","// Real Tab."] +],[ + ["no_regex"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_smarty.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_smarty.json new file mode 100644 index 00000000..0f56985d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_smarty.json @@ -0,0 +1,98 @@ +[[ + "start", + ["punctuation.section.embedded.begin.smarty","{"], + ["keyword.control.smarty","foreach"], + ["source.smarty"," "], + ["punctuation.definition.variable.smarty","$"], + ["variable.other.smarty","foo"], + ["source.smarty"," as "], + ["punctuation.definition.variable.smarty","$"], + ["variable.other.smarty","bar"], + ["punctuation.section.embedded.end.smarty","}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\""], + ["punctuation.section.embedded.begin.smarty","{"], + ["punctuation.definition.variable.smarty","$"], + ["variable.other.smarty","bar"], + ["source.smarty",".zig"], + ["punctuation.section.embedded.end.smarty","}"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["punctuation.section.embedded.begin.smarty","{"], + ["punctuation.definition.variable.smarty","$"], + ["variable.other.smarty","bar"], + ["source.smarty",".zag"], + ["punctuation.section.embedded.end.smarty","}"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.anchor.tag-name.xml","a"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\""], + ["punctuation.section.embedded.begin.smarty","{"], + ["punctuation.definition.variable.smarty","$"], + ["variable.other.smarty","bar"], + ["source.smarty",".zig2"], + ["punctuation.section.embedded.end.smarty","}"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["punctuation.section.embedded.begin.smarty","{"], + ["punctuation.definition.variable.smarty","$"], + ["variable.other.smarty","bar"], + ["source.smarty",".zag2"], + ["punctuation.section.embedded.end.smarty","}"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.anchor.tag-name.xml","a"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\""], + ["punctuation.section.embedded.begin.smarty","{"], + ["punctuation.definition.variable.smarty","$"], + ["variable.other.smarty","bar"], + ["source.smarty",".zig3"], + ["punctuation.section.embedded.end.smarty","}"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["punctuation.section.embedded.begin.smarty","{"], + ["punctuation.definition.variable.smarty","$"], + ["variable.other.smarty","bar"], + ["source.smarty",".zag3"], + ["punctuation.section.embedded.end.smarty","}"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.anchor.tag-name.xml","a"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["punctuation.section.embedded.begin.smarty","{"], + ["keyword.control.smarty","foreachelse"], + ["punctuation.section.embedded.end.smarty","}"] +],[ + "start", + ["text.xml"," There were no rows found."] +],[ + "start", + ["punctuation.section.embedded.begin.smarty","{"], + ["source.smarty","/"], + ["keyword.control.smarty","foreach"], + ["punctuation.section.embedded.end.smarty","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_snippets.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_snippets.json new file mode 100644 index 00000000..308683b7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_snippets.json @@ -0,0 +1,159 @@ +[[ + "start", + ["comment","# Function"] +],[ + "start", + ["constant.language.escape","snippet"], + ["text"," fun"] +],[ + "sn-start", + ["text","\tfunction "], + ["markup.list","${"], + ["constant.numeric","1"], + ["text","?:function_name"], + ["markup.list","}"], + ["text","("], + ["markup.list","${"], + ["constant.numeric","2"], + ["punctuation.operator",":"], + ["text","argument"], + ["markup.list","}"], + ["text",") {"] +],[ + "sn-start", + ["text","\t\t"], + ["markup.list","${"], + ["constant.numeric","3"], + ["punctuation.operator",":"], + ["text","// body..."], + ["markup.list","}"] +],[ + "sn-start", + ["text","\t}"] +],[ + "start", + ["comment","# Anonymous Function"] +],[ + "start", + ["constant.language.escape","regex "], + ["keyword","/"], + ["text","((=)\\s*|(:)\\s*|(\\()|\\b)"], + ["keyword","/"], + ["text","f"], + ["keyword","/"], + ["text","(\\))?"], + ["keyword","/"] +],[ + "start", + ["constant.language.escape","name"], + ["text"," f"] +],[ + "sn-start", + ["text","\tfunction"], + ["markup.list","${"], + ["variable","M1"], + ["text","?: "], + ["markup.list","${"], + ["constant.numeric","1"], + ["punctuation.operator",":"], + ["text","functionName"], + ["markup.list","}}"], + ["text","("], + ["variable","$2"], + ["text",") {"] +],[ + "sn-start", + ["text","\t\t"], + ["markup.list","${"], + ["constant.numeric","0"], + ["punctuation.operator",":"], + ["keyword","$TM_SELECTED_TEXT"], + ["markup.list","}"] +],[ + "sn-start", + ["text","\t}"], + ["markup.list","${"], + ["variable","M2"], + ["text","?;"], + ["markup.list","}${"], + ["variable","M3"], + ["text","?,"], + ["markup.list","}${"], + ["variable","M4"], + ["text","?)"], + ["markup.list","}"] +],[ + "start", + ["comment","# Immediate function"] +],[ + "start", + ["constant.language.escape","trigger"], + ["text"," \\(?f\\("] +],[ + "start", + ["constant.language.escape","endTrigger"], + ["text"," \\)?"] +],[ + "start", + ["constant.language.escape","snippet"], + ["text"," f("] +],[ + "sn-start", + ["text","\t(function("], + ["markup.list","${"], + ["constant.numeric","1"], + ["markup.list","}"], + ["text",") {"] +],[ + "sn-start", + ["text","\t\t"], + ["markup.list","${"], + ["constant.numeric","0"], + ["punctuation.operator",":"], + ["markup.list","${"], + ["keyword","TM_SELECTED_TEXT"], + ["punctuation.operator",":"], + ["text","/* code */"], + ["markup.list","}}"] +],[ + "sn-start", + ["text","\t}("], + ["markup.list","${"], + ["constant.numeric","1"], + ["markup.list","}"], + ["text","));"] +],[ + "start", + ["comment","# if"] +],[ + "start", + ["constant.language.escape","snippet"], + ["text"," if"] +],[ + "sn-start", + ["text","\tif ("], + ["markup.list","${"], + ["constant.numeric","1"], + ["punctuation.operator",":"], + ["text","true"], + ["markup.list","}"], + ["text",") {"] +],[ + "sn-start", + ["text","\t\t"], + ["markup.list","${"], + ["constant.numeric","0"], + ["markup.list","}"] +],[ + "sn-start", + ["text","\t}"] +],[ + "sn-start", + ["text","\t"] +],[ + "sn-start", + ["text","\t"] +],[ + "sn-start", + ["text","\t"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_soy_template.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_soy_template.json new file mode 100644 index 00000000..c4f95095 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_soy_template.json @@ -0,0 +1,286 @@ +[[ + "punctuation.definition.comment.begin.soy1", + ["punctuation.definition.comment.begin.soy","/**"] +],[ + "punctuation.definition.comment.begin.soy1", + ["comment.block.documentation.soy"," * Greets a person using \"Hello\" by default."] +],[ + "punctuation.definition.comment.begin.soy1", + ["comment.block.documentation.soy"," * "], + ["support.type.soy","@param"], + ["text"," "], + ["variable.parameter.soy","name"], + ["comment.block.documentation.soy"," The name of the person."] +],[ + "punctuation.definition.comment.begin.soy1", + ["comment.block.documentation.soy"," * "], + ["support.type.soy","@param?"], + ["text"," "], + ["variable.parameter.soy","greetingWord"], + ["comment.block.documentation.soy"," Optional greeting word to use instead of \"Hello\"."] +],[ + "start", + ["comment.block.documentation.soy"," "], + ["punctuation.definition.comment.end.soy","*/"] +],[ + "start", + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","template"], + ["text"," "], + ["entity.name.function.soy",".helloName"], + ["meta.tag.template.soy"," #eee"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","if"], + ["meta.tag.if.soy"," "], + ["keyword.operator.soy","not"], + ["meta.tag.if.soy"," "], + ["variable.other.soy","$greetingWord"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," Hello "], + ["punctuation.definition.tag.begin.soy","{"], + ["variable.other.soy","$name"], + ["punctuation.definition.tag.end.soy","}"], + ["text.xml","!"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["text","else"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["variable.other.soy","$greetingWord"], + ["punctuation.definition.tag.end.soy","}"], + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["variable.other.soy","$name"], + ["punctuation.definition.tag.end.soy","}"], + ["text.xml","!"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{/"], + ["entity.name.tag.soy","if"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["punctuation.definition.tag.begin.soy","{/"], + ["meta.tag.template.soy","template"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start" +],[ + "punctuation.definition.comment.begin.soy1", + ["punctuation.definition.comment.begin.soy","/**"] +],[ + "punctuation.definition.comment.begin.soy1", + ["comment.block.documentation.soy"," * Greets a person and optionally a list of other people."] +],[ + "punctuation.definition.comment.begin.soy1", + ["comment.block.documentation.soy"," * "], + ["support.type.soy","@param"], + ["text"," "], + ["variable.parameter.soy","name"], + ["comment.block.documentation.soy"," The name of the person."] +],[ + "punctuation.definition.comment.begin.soy1", + ["comment.block.documentation.soy"," * "], + ["support.type.soy","@param"], + ["text"," "], + ["variable.parameter.soy","additionalNames"], + ["comment.block.documentation.soy"," The additional names to greet. May be an empty list."] +],[ + "start", + ["comment.block.documentation.soy"," "], + ["punctuation.definition.comment.end.soy","*/"] +],[ + "start", + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","template"], + ["text"," "], + ["entity.name.function.soy",".helloNames"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["comment.line.double-slash.soy","//"], + ["comment.line.double-slash.soy"," Greet the person."] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","call"], + ["variable.parameter.soy"," .helloName"], + ["meta.tag.call.soy"," "], + ["entity.other.attribute-name.soy","data"], + ["keyword.operator.soy","="], + ["string.quoted.double","\"all\""], + ["meta.tag.call.soy"," /"], + ["punctuation.definition.tag.end.soy","}"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","br"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["comment.line.double-slash.soy","//"], + ["comment.line.double-slash.soy"," Greet the additional people."] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","foreach"], + ["meta.tag.foreach.soy"," "], + ["variable.other.soy","$additionalName"], + ["meta.tag.foreach.soy"," "], + ["keyword.operator.soy","in"], + ["meta.tag.foreach.soy"," "], + ["variable.other.soy","$additionalNames"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","call"], + ["variable.parameter.soy"," .helloName"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","param"], + ["meta.tag.param.soy"," "], + ["entity.other.attribute-name.soy","name"], + ["keyword.operator.soy",":"], + ["meta.tag.param.soy"," "], + ["variable.other.soy","$additionalName"], + ["meta.tag.param.soy"," /"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{/"], + ["meta.tag.call.soy","call"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","if"], + ["meta.tag.if.soy"," "], + ["keyword.operator.soy","not"], + ["meta.tag.if.soy"," "], + ["support.function.soy","isLast"], + ["meta.tag.if.soy","("], + ["variable.other.soy","$additionalName"], + ["meta.tag.if.soy",")"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","br"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml"," "], + ["comment.line.double-slash.soy","//"], + ["comment.line.double-slash.soy"," break after every line except the last"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{/"], + ["entity.name.tag.soy","if"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{"], + ["text","ifempty"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," No additional people to greet."] +],[ + "start", + ["text.xml"," "], + ["punctuation.definition.tag.begin.soy","{/"], + ["entity.name.tag.soy","foreach"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["punctuation.definition.tag.begin.soy","{/"], + ["meta.tag.template.soy","template"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start" +],[ + "start" +],[ + "start", + ["punctuation.definition.tag.begin.soy","{/"], + ["entity.name.tag.soy","foreach"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","if"], + ["meta.tag.if.soy"," "], + ["support.function.soy","length"], + ["meta.tag.if.soy","("], + ["variable.other.soy","$items"], + ["meta.tag.if.soy",") > 5"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","msg"], + ["meta.tag.msg.soy"," "], + ["entity.other.attribute-name.soy","desc"], + ["keyword.operator.soy","="], + ["string.quoted.double","\"Says hello to the user.\""], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start" +],[ + "start" +],[ + "start", + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","namespace"], + ["text"," "], + ["variable.parameter.soy","ns"], + ["text"," autoescape=\"contextual\""], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start" +],[ + "start", + ["punctuation.definition.comment.begin.soy","/**"], + ["comment.block.documentation.soy"," Example. "], + ["punctuation.definition.comment.end.soy","*/"] +],[ + "start", + ["punctuation.definition.tag.begin.soy","{"], + ["entity.name.tag.soy","template"], + ["text"," "], + ["entity.name.function.soy",".example"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["text.xml"," foo is "], + ["punctuation.definition.tag.begin.soy","{"], + ["variable.other.soy","$ij.foo"], + ["punctuation.definition.tag.end.soy","}"] +],[ + "start", + ["punctuation.definition.tag.begin.soy","{/"], + ["meta.tag.template.soy","template"], + ["punctuation.definition.tag.end.soy","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_space.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_space.json new file mode 100644 index 00000000..918b9a67 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_space.json @@ -0,0 +1,322 @@ +[[ + "start", + ["variable","query"] +],[ + "start", + ["empty_line"," "], + ["variable","count"], + ["keyword.operator"," "], + ["string","10"] +],[ + "start", + ["empty_line"," "], + ["variable","created"], + ["keyword.operator"," "], + ["string","2011-06-21T08:10:46Z"] +],[ + "start", + ["empty_line"," "], + ["variable","lang"], + ["keyword.operator"," "], + ["string","en-US"] +],[ + "start", + ["empty_line"," "], + ["variable","results"] +],[ + "start", + ["empty_line"," "], + ["variable","photo"] +],[ + "start", + ["empty_line"," "], + ["variable","0"] +],[ + "start", + ["empty_line"," "], + ["variable","farm"], + ["keyword.operator"," "], + ["string","6"] +],[ + "start", + ["empty_line"," "], + ["variable","id"], + ["keyword.operator"," "], + ["string","5855620975"] +],[ + "start", + ["empty_line"," "], + ["variable","isfamily"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","isfriend"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","ispublic"], + ["keyword.operator"," "], + ["string","1"] +],[ + "start", + ["empty_line"," "], + ["variable","owner"], + ["keyword.operator"," "], + ["string","32021554@N04"] +],[ + "start", + ["empty_line"," "], + ["variable","secret"], + ["keyword.operator"," "], + ["string","f1f5e8515d"] +],[ + "start", + ["empty_line"," "], + ["variable","server"], + ["keyword.operator"," "], + ["string","5110"] +],[ + "start", + ["empty_line"," "], + ["variable","title"], + ["keyword.operator"," "], + ["string","7087 bandit cat"] +],[ + "start", + ["empty_line"," "], + ["variable","1"] +],[ + "start", + ["empty_line"," "], + ["variable","farm"], + ["keyword.operator"," "], + ["string","4"] +],[ + "start", + ["empty_line"," "], + ["variable","id"], + ["keyword.operator"," "], + ["string","5856170534"] +],[ + "start", + ["empty_line"," "], + ["variable","isfamily"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","isfriend"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","ispublic"], + ["keyword.operator"," "], + ["string","1"] +],[ + "start", + ["empty_line"," "], + ["variable","owner"], + ["keyword.operator"," "], + ["string","32021554@N04"] +],[ + "start", + ["empty_line"," "], + ["variable","secret"], + ["keyword.operator"," "], + ["string","ff1efb2a6f"] +],[ + "start", + ["empty_line"," "], + ["variable","server"], + ["keyword.operator"," "], + ["string","3217"] +],[ + "start", + ["empty_line"," "], + ["variable","title"], + ["keyword.operator"," "], + ["string","6975 rusty cat"] +],[ + "start", + ["empty_line"," "], + ["variable","2"] +],[ + "start", + ["empty_line"," "], + ["variable","farm"], + ["keyword.operator"," "], + ["string","6"] +],[ + "start", + ["empty_line"," "], + ["variable","id"], + ["keyword.operator"," "], + ["string","5856172972"] +],[ + "start", + ["empty_line"," "], + ["variable","isfamily"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","isfriend"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","ispublic"], + ["keyword.operator"," "], + ["string","1"] +],[ + "start", + ["empty_line"," "], + ["variable","owner"], + ["keyword.operator"," "], + ["string","51249875@N03"] +],[ + "start", + ["empty_line"," "], + ["variable","secret"], + ["keyword.operator"," "], + ["string","6c6887347c"] +],[ + "start", + ["empty_line"," "], + ["variable","server"], + ["keyword.operator"," "], + ["string","5192"] +],[ + "start", + ["empty_line"," "], + ["variable","title"], + ["keyword.operator"," "], + ["string","watermarked-cats"] +],[ + "start", + ["empty_line"," "], + ["variable","3"] +],[ + "start", + ["empty_line"," "], + ["variable","farm"], + ["keyword.operator"," "], + ["string","6"] +],[ + "start", + ["empty_line"," "], + ["variable","id"], + ["keyword.operator"," "], + ["string","5856168328"] +],[ + "start", + ["empty_line"," "], + ["variable","isfamily"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","isfriend"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","ispublic"], + ["keyword.operator"," "], + ["string","1"] +],[ + "start", + ["empty_line"," "], + ["variable","owner"], + ["keyword.operator"," "], + ["string","32021554@N04"] +],[ + "start", + ["empty_line"," "], + ["variable","secret"], + ["keyword.operator"," "], + ["string","0c1cfdf64c"] +],[ + "start", + ["empty_line"," "], + ["variable","server"], + ["keyword.operator"," "], + ["string","5078"] +],[ + "start", + ["empty_line"," "], + ["variable","title"], + ["keyword.operator"," "], + ["string","7020 mandy cat"] +],[ + "start", + ["empty_line"," "], + ["variable","4"] +],[ + "start", + ["empty_line"," "], + ["variable","farm"], + ["keyword.operator"," "], + ["string","3"] +],[ + "start", + ["empty_line"," "], + ["variable","id"], + ["keyword.operator"," "], + ["string","5856171774"] +],[ + "start", + ["empty_line"," "], + ["variable","isfamily"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","isfriend"], + ["keyword.operator"," "], + ["string","0"] +],[ + "start", + ["empty_line"," "], + ["variable","ispublic"], + ["keyword.operator"," "], + ["string","1"] +],[ + "start", + ["empty_line"," "], + ["variable","owner"], + ["keyword.operator"," "], + ["string","32021554@N04"] +],[ + "start", + ["empty_line"," "], + ["variable","secret"], + ["keyword.operator"," "], + ["string","7f5a3180ab"] +],[ + "start", + ["empty_line"," "], + ["variable","server"], + ["keyword.operator"," "], + ["string","2696"] +],[ + "start", + ["empty_line"," "], + ["variable","title"], + ["keyword.operator"," "], + ["string","7448 bobby cat"] +],[ + "key" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sparql.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sparql.json new file mode 100644 index 00000000..437ce621 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sparql.json @@ -0,0 +1,132 @@ +[[ + "start", + ["keyword.other.sparql","PREFIX"], + ["text"," "], + ["entity.name.other.qname.sparql","dbpedia-owl:"], + ["text"," "], + ["keyword.operator.logical.sparql","<"], + ["entity.name.other.qname.sparql","http:"], + ["keyword.operator.logical.sparql","//"], + ["text","dbpedia"], + ["keyword.operator.punctuation.sparql","."], + ["text","org"], + ["keyword.operator.logical.sparql","/"], + ["text","on"], + ["keyword.other.sparql","to"], + ["text","logy"], + ["keyword.operator.logical.sparql","/>"] +],[ + "start", + ["keyword.other.sparql","PREFIX"], + ["text"," "], + ["entity.name.other.qname.sparql","rdfs:"], + ["text"," "], + ["keyword.operator.logical.sparql","<"], + ["entity.name.other.qname.sparql","http:"], + ["keyword.operator.logical.sparql","//"], + ["text","www"], + ["keyword.operator.punctuation.sparql","."], + ["text","w3"], + ["keyword.operator.punctuation.sparql","."], + ["text","org"], + ["keyword.operator.logical.sparql","/"], + ["text","2000"], + ["keyword.operator.logical.sparql","/"], + ["text","01"], + ["keyword.operator.logical.sparql","/"], + ["text","rdf"], + ["keyword.operator.logical.sparql","-"], + ["text","schema"], + ["punctuation.definition.comment.sparql","#"], + ["comment.line.hash.sparql",">"] +],[ + "start" +],[ + "start", + ["punctuation.definition.comment.sparql","#"], + ["comment.line.hash.sparql"," 1. Directors of movies starring Brad Pitt"] +],[ + "start", + ["punctuation.definition.comment.sparql","#"], + ["comment.line.hash.sparql"," Datasource: http://fragments.dbpedia.org/*/en"] +],[ + "start", + ["keyword.other.sparql","SELECT"], + ["text"," "], + ["variable.other.sparql","?movie"], + ["text"," "], + ["variable.other.sparql","?title"], + ["text"," "], + ["variable.other.sparql","?name"] +],[ + "start", + ["keyword.other.sparql","WHERE"], + ["text"," "], + ["keyword.operator.punctuation.sparql","{"] +],[ + "start", + ["text"," "], + ["variable.other.sparql","?movie"], + ["text"," "], + ["entity.name.other.qname.sparql","dbpedia-owl:starring"], + ["text"," [ "], + ["support.type.datatype.rdf.schema.sparql","rdfs:label"], + ["text"," "], + ["string.quoted.double.sparql","\"Brad Pitt\""], + ["keyword.operator.language.suffix.sparql","@"], + ["constant.language.suffix.sparql","en"], + ["text"," ]"], + ["keyword.operator.punctuation.sparql",";"] +],[ + "start", + ["text"," "], + ["support.type.datatype.rdf.schema.sparql","rdfs:label"], + ["text"," "], + ["variable.other.sparql","?title"], + ["keyword.operator.punctuation.sparql",";"] +],[ + "start", + ["text"," "], + ["entity.name.other.qname.sparql","dbpedia-owl:director"], + ["text"," [ "], + ["support.type.datatype.rdf.schema.sparql","rdfs:label"], + ["text"," "], + ["variable.other.sparql","?name"], + ["text"," ]"], + ["keyword.operator.punctuation.sparql","."] +],[ + "start", + ["text"," "], + ["keyword.other.sparql","FILTER"], + ["text"," "], + ["support.function.sparql","LANG"], + ["text","MATCHES"], + ["keyword.operator.punctuation.sparql","("], + ["support.function.sparql","LANG"], + ["keyword.operator.punctuation.sparql","("], + ["variable.other.sparql","?title"], + ["keyword.operator.punctuation.sparql","),"], + ["text"," "], + ["string.quoted.double.sparql","\"EN\""], + ["keyword.operator.punctuation.sparql",")"] +],[ + "start", + ["text"," "], + ["keyword.other.sparql","FILTER"], + ["text"," "], + ["support.function.sparql","LANG"], + ["text","MATCHES"], + ["keyword.operator.punctuation.sparql","("], + ["support.function.sparql","LANG"], + ["keyword.operator.punctuation.sparql","("], + ["variable.other.sparql","?name"], + ["keyword.operator.punctuation.sparql","),"], + ["text"," "], + ["string.quoted.double.sparql","\"EN\""], + ["keyword.operator.punctuation.sparql",")"] +],[ + "start", + ["keyword.operator.punctuation.sparql","}"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sql.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sql.json new file mode 100644 index 00000000..09a3ef99 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sql.json @@ -0,0 +1,54 @@ +[[ + "start", + ["keyword","SELECT"], + ["text"," "], + ["identifier","city"], + ["text",", "], + ["support.function","COUNT"], + ["paren.lparen","("], + ["identifier","id"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","AS"], + ["text"," "], + ["identifier","users_count"] +],[ + "start", + ["keyword","FROM"], + ["text"," "], + ["identifier","users"] +],[ + "start", + ["keyword","WHERE"], + ["text"," "], + ["identifier","group_name"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","'salesman'"] +],[ + "start", + ["keyword","AND"], + ["text"," "], + ["identifier","created"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["string","'2011-05-21'"] +],[ + "start", + ["keyword","GROUP"], + ["text"," "], + ["keyword","BY"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["keyword","ORDER"], + ["text"," "], + ["keyword","BY"], + ["text"," "], + ["constant.numeric","2"], + ["text"," "], + ["keyword","DESC"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sqlserver.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sqlserver.json new file mode 100644 index 00000000..446f52cc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_sqlserver.json @@ -0,0 +1,457 @@ +[[ + "start", + ["comment","-- ============================================="] +],[ + "start", + ["comment","-- Author:\t\tMorgan Yarbrough"] +],[ + "start", + ["comment","-- Create date: 4/27/2015"] +],[ + "start", + ["comment","-- Description:\tTest procedure that shows off language features."] +],[ + "start", + ["comment","-- \t\t\t\tIncludes non-standard folding with region comments using either"] +],[ + "start", + ["comment","-- \t\t\t\tline comments or block comments (both are demonstrated below)."] +],[ + "start", + ["comment","--\t\t\t\tThis mode imitates SSMS and it designed to be used with SQL Server theme."] +],[ + "start", + ["comment","-- ============================================="] +],[ + "start", + ["keyword","CREATE"], + ["text"," "], + ["keyword","PROCEDURE"], + ["text"," "], + ["identifier","dbo"], + ["text","."], + ["identifier","TestProcedure"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["comment","--#region parameters"] +],[ + "start", + ["text","\t"], + ["identifier","@vint"], + ["text"," "], + ["storage.type","INT"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text","\t"], + ["punctuation",","], + ["identifier","@vdate"], + ["text"," "], + ["storage.type","DATE"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.language","NULL"] +],[ + "start", + ["text","\t"], + ["punctuation",","], + ["identifier","@vdatetime"], + ["text"," "], + ["storage.type","DATETIME"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","DATEADD"], + ["paren.lparen","("], + ["identifier","dd"], + ["punctuation",","], + ["text"," "], + ["constant.numeric","1"], + ["punctuation",","], + ["text"," "], + ["support.function","GETDATE"], + ["paren.lparen","("], + ["paren.rparen","))"] +],[ + "start", + ["text","\t"], + ["punctuation",","], + ["identifier","@vvarchar"], + ["text"," "], + ["storage.type","VARCHAR"], + ["paren.lparen","("], + ["support.function","MAX"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.start","'"], + ["string.end","'"] +],[ + "start", + ["comment","--#endregion"] +],[ + "start" +],[ + "start", + ["keyword","AS"] +],[ + "start", + ["keyword","BEGIN"] +],[ + "start" +],[ + "start", + ["text","\t"], + ["comment.start","/*"], + ["comment","#region set statements "], + ["comment.end","*/"] +],[ + "start", + ["text","\t"], + ["set.statement","SET NOCOUNT"], + ["text"," "], + ["keyword","ON"], + ["punctuation",";"] +],[ + "start", + ["text","\t"], + ["set.statement","SET XACT_ABORT"], + ["text"," "], + ["keyword","ON"], + ["punctuation",";"] +],[ + "start", + ["text","\t"], + ["set.statement","SET QUOTED_IDENTIFIER"], + ["text"," "], + ["keyword","ON"], + ["punctuation",";"] +],[ + "start", + ["text","\t"], + ["comment.start","/*"], + ["comment","#endregion"], + ["comment.end","*/"] +],[ + "start", + ["text","\t"] +],[ + "doc-start", + ["text","\t"], + ["comment.doc","/**"] +],[ + "doc-start", + ["comment.doc","\t * These comments will produce a fold widget"] +],[ + "start", + ["comment.doc","\t */"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["text","\t"], + ["comment","-- folding demonstration"] +],[ + "start", + ["text","\t"], + ["keyword","SET"], + ["text"," "], + ["identifier","@vint"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword","CASE"] +],[ + "start", + ["text","\t\t\t\t\t"], + ["keyword","WHEN"], + ["text"," "], + ["identifier","@vdate"], + ["text"," "], + ["constant.language","IS"], + ["text"," "], + ["constant.language","NULL"] +],[ + "start", + ["text","\t\t\t\t\t\t"], + ["keyword","THEN"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start", + ["text","\t\t\t\t\t"], + ["keyword","ELSE"], + ["text"," "], + ["constant.numeric","2"] +],[ + "start", + ["text","\t\t\t\t"], + ["keyword","END"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["text","\t"], + ["comment","-- another folding demonstration"] +],[ + "start", + ["text","\t"], + ["keyword","IF"], + ["text"," "], + ["identifier","@vint"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"], + ["text"," "] +],[ + "start", + ["text","\t"], + ["keyword","BEGIN"] +],[ + "start", + ["text","\t\t"], + ["keyword","SET"], + ["text"," "], + ["identifier","@vvarchar"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string.start","'"], + ["string","one"], + ["string.end","'"] +],[ + "start", + ["text","\t\t"], + ["keyword","SET"], + ["text"," "], + ["identifier","@vint"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["support.function","DATEDIFF"], + ["paren.lparen","("], + ["identifier","dd"], + ["punctuation",","], + ["text"," "], + ["identifier","@vdate"], + ["punctuation",","], + ["text"," "], + ["identifier","@vdatetime"], + ["paren.rparen",")"] +],[ + "start", + ["text","\t"], + ["keyword","END"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["text","\t"], + ["comment","-- this mode handles strings properly"] +],[ + "string.start", + ["text","\t"], + ["keyword","DECLARE"], + ["text"," "], + ["identifier","@sql"], + ["text"," "], + ["storage.type","NVARCHAR"], + ["paren.lparen","("], + ["constant.numeric","4000"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","N"], + ["string.start","'"], + ["string","SELECT TOP(1) OrderID "] +],[ + "string.start", + ["string","\t\t\t\t\t\t\t\t\tFROM Orders"] +],[ + "start", + ["string","\t\t\t\t\t\t\t\t\tWHERE @OrderDate > GETDATE()"], + ["string.end","'"] +],[ + "start", + ["text","\t\t\t\t\t\t\t\t"] +],[ + "start", + ["text","\t"], + ["comment","-- this mode is aware of built in stored procedures "] +],[ + "start", + ["text","\t"], + ["keyword","EXECUTE"], + ["text"," "], + ["support.storedprocedure","sp_executesql"], + ["text"," "], + ["identifier","@sql"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["text","\t"], + ["comment","-- demonstrating some syntax highlighting"] +],[ + "start", + ["text","\t"], + ["keyword","SELECT"], + ["text"," "], + ["identifier","Orders"], + ["text","."], + ["identifier","OrderID"] +],[ + "start", + ["text","\t\t"], + ["punctuation",","], + ["identifier","Customers"], + ["text","."], + ["identifier","CompanyName"] +],[ + "start", + ["text","\t\t"], + ["punctuation",","], + ["support.function","DATEFROMPARTS"], + ["paren.lparen","("], + ["support.function","YEAR"], + ["paren.lparen","("], + ["support.function","GETDATE"], + ["paren.lparen","("], + ["paren.rparen","))"], + ["punctuation",","], + ["text"," "], + ["constant.numeric","1"], + ["punctuation",","], + ["text"," "], + ["constant.numeric","1"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","AS"], + ["text"," "], + ["identifier","FirstDayOfYear"] +],[ + "start", + ["text","\t"], + ["keyword","FROM"], + ["text"," "], + ["identifier","Orders"] +],[ + "start", + ["text","\t"], + ["constant.language","INNER"], + ["text"," "], + ["constant.language","JOIN"], + ["text"," "], + ["identifier","Customers"] +],[ + "start", + ["text","\t\t"], + ["keyword","ON"], + ["text"," "], + ["identifier","Orders"], + ["text","."], + ["identifier","CustomerID"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","Customers"], + ["text","."], + ["identifier","CustomerID"] +],[ + "start", + ["text","\t"], + ["keyword","WHERE"], + ["text"," "], + ["identifier","CompanyName"], + ["text"," "], + ["constant.language","NOT"], + ["text"," "], + ["constant.language","LIKE"], + ["text"," "], + ["string.start","'"], + ["string","%something"], + ["string.end","'"] +],[ + "start", + ["text","\t\t"], + ["constant.language","OR"], + ["text"," "], + ["identifier","CompanyName"], + ["text"," "], + ["constant.language","IS"], + ["text"," "], + ["constant.language","NULL"] +],[ + "start", + ["text","\t\t"], + ["constant.language","OR"], + ["text"," "], + ["identifier","CompanyName"], + ["text"," "], + ["constant.language","IN"], + ["text"," "], + ["paren.lparen","("], + ["string.start","'"], + ["string","bla"], + ["string.end","'"], + ["punctuation",","], + ["text"," "], + ["string.start","'"], + ["string","nothing"], + ["string.end","'"], + ["paren.rparen",")"] +],[ + "start", + ["text","\t\t"] +],[ + "start", + ["text","\t"], + ["comment","-- this mode includes snippets"] +],[ + "start", + ["text","\t"], + ["comment","-- place your cusor at the end of the line below and trigger auto complete (Ctrl+Space)"] +],[ + "start", + ["text","\t"], + ["identifier","createpr"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["text","\t"], + ["comment","-- SQL Server allows using keywords as object names (not recommended) as long as they are wrapped in brackets"] +],[ + "start", + ["text","\t"], + ["keyword","DATABASE"], + ["text"," "], + ["comment","-- keyword"] +],[ + "start", + ["text","\t[DATABASE] "], + ["comment","-- not a keyword"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["keyword","END"] +],[ + "start" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_stylus.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_stylus.json new file mode 100644 index 00000000..f24993f7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_stylus.json @@ -0,0 +1,271 @@ +[[ + "start", + ["comment","// I'm a comment!"] +],[ + "start" +],[ + "comment", + ["comment","/*"] +],[ + "comment", + ["comment"," * Adds the given numbers together."] +],[ + "start", + ["comment"," */"] +],[ + "start" +],[ + "start" +],[ + "comment", + ["comment","/*!"] +],[ + "comment", + ["comment"," * Adds the given numbers together."] +],[ + "start", + ["comment"," */"] +],[ + "start" +],[ + "start" +],[ + "start", + ["entity.name.function.stylus","asdasdasdad"], + ["text","("], + ["text","df, ad"], + ["keyword.operator.stylus","="], + ["constant.numeric","23"], + ["text",")"] +],[ + "start" +],[ + "start", + ["entity.name.function.stylus","add"], + ["text","("], + ["entity.name.tag.stylus","a"], + ["text",", "], + ["entity.name.tag.stylus","b"], + ["text"," "], + ["keyword.operator.stylus","="], + ["text"," "], + ["entity.name.tag.stylus","a"], + ["text",")"] +],[ + "start", + ["text"," "], + ["entity.name.tag.stylus","a"], + ["text"," "], + ["keyword.operator.stylus","+"], + ["text"," "], + ["entity.name.tag.stylus","b"] +],[ + "start", + ["entity.name.function.stylus","green"], + ["text","("], + ["constant.numeric","#0c0"], + ["text",")"] +],[ + "start", + ["text"," add("], + ["constant.numeric","10"], + ["text",", "], + ["constant.numeric","5"], + ["text",")"] +],[ + "start", + ["text"," "], + ["comment","// => 15"] +],[ + "start" +],[ + "start", + ["text"," add("], + ["constant.numeric","10"], + ["text",")"] +],[ + "start", + ["text"," add("], + ["entity.name.tag.stylus","a"], + ["text",", "], + ["entity.name.tag.stylus","b"], + ["text",")"] +],[ + "start" +],[ + "start", + ["entity.language.stylus"," &"], + ["text","asdasd"] +],[ + "start" +],[ + "start", + ["text"," ("], + ["variable.language.stylus","arguments"], + ["text",")"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword.stylus","@sdfsdf"] +],[ + "start", + ["entity.other.attribute-name.class.stylus",".signatures"] +],[ + "start", + ["text"," "], + ["support.type","background-color"], + ["text"," "], + ["constant.numeric","#e0e8e0"] +],[ + "start", + ["text"," "], + ["support.type","border"], + ["text"," "], + ["constant.numeric","1"], + ["keyword","px"], + ["text"," "], + ["support.constant","solid"], + ["text"," grayLighter"] +],[ + "start", + ["text"," "], + ["support.type","box-shadow"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","3"], + ["keyword","px"], + ["text"," grayLightest"] +],[ + "start", + ["text"," "], + ["support.type","border-radius"], + ["text"," "], + ["constant.numeric","3"], + ["keyword","px"] +],[ + "start", + ["text"," "], + ["support.type","padding"], + ["text"," "], + ["constant.numeric","3"], + ["keyword","px"], + ["text"," "], + ["constant.numeric","5"], + ["keyword","px"] +],[ + "start", + ["text"," "], + ["string","\"adsads\""] +],[ + "start", + ["text"," "], + ["support.type","margin-left"], + ["text"," "], + ["constant.numeric","0"] +],[ + "start", + ["text"," "], + ["support.type","list-style"], + ["text"," "], + ["support.constant","none"] +],[ + "start", + ["entity.other.attribute-name.class.stylus",".signature"] +],[ + "start", + ["text"," "], + ["support.type","list-style"], + ["text"," "], + ["support.constant","none"] +],[ + "start", + ["text"," "], + ["support.type","display"], + ["text",": "], + ["support.constant","inline"] +],[ + "start", + ["text"," "], + ["support.type","margin-left"], + ["text"," "], + ["constant.numeric","0"] +],[ + "start", + ["text"," "], + ["keyword.operator.stylus",">"], + ["text"," "], + ["entity.name.tag.stylus","li"] +],[ + "start", + ["text"," "], + ["support.type","display"], + ["text"," "], + ["support.constant","inline"] +],[ + "start", + ["keyword.operator.stylus","is"], + ["text"," "], + ["keyword.operator.stylus","not"] +],[ + "start", + ["entity.other.attribute-name.class.stylus",".signature-values"] +],[ + "start", + ["text"," "], + ["support.type","list-style"], + ["text"," "], + ["support.constant","none"] +],[ + "start", + ["text"," "], + ["support.type","display"], + ["text"," "], + ["support.constant","inline"] +],[ + "start", + ["text"," "], + ["support.type","margin-left"], + ["text"," "], + ["constant.numeric","0"] +],[ + "start", + ["entity.language.stylus"," &"], + ["punctuation",":"], + ["entity.other.attribute-name.pseudo-element.css","before"] +],[ + "start", + ["text"," "], + ["support.type","content"], + ["text"," "], + ["string","'→'"] +],[ + "start", + ["text"," "], + ["support.type","margin"], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["constant.numeric","5"], + ["keyword","px"] +],[ + "start", + ["text"," "], + ["keyword.operator.stylus",">"], + ["text"," "], + ["entity.name.tag.stylus","li"] +],[ + "start", + ["text"," "], + ["keyword.control.stylus","!important"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword.control.stylus","unless"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_svg.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_svg.json new file mode 100644 index 00000000..01fd72ef --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_svg.json @@ -0,0 +1,685 @@ +[[ + "meta.tag.punctuation.tag-open.xml1", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","svg"] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","width"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"800\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","height"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"600\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","xmlns"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"http://www.w3.org/2000/svg\""] +],[ + "start", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","onload"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"StartAnimation(evt)\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Test Tube Progress Bar"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","desc"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","Created for the Web Directions SVG competition"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","desc"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "js-no_regex", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.script.tag-name.xml","script"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","type"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"text/ecmascript\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["string.cdata.xml","<![CDATA["] +],[ + "js-start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","timer_increment"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","1"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","max_time"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","100"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","hickory"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","dickory"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","dock"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","i"], + ["punctuation.operator",";"] +],[ + "js-start" +],[ + "js-start", + ["text"," "], + ["storage.type","function"], + ["text"," "], + ["entity.name.function","StartAnimation"], + ["paren.lparen","("], + ["variable.parameter","evt"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "js-start", + ["text"," "], + ["identifier","hickory"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","evt"], + ["punctuation.operator","."], + ["identifier","target"], + ["punctuation.operator","."], + ["identifier","ownerDocument"], + ["punctuation.operator","."], + ["support.function.dom","getElementById"], + ["paren.lparen","("], + ["string","\"hickory\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["identifier","dickory"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","evt"], + ["punctuation.operator","."], + ["identifier","target"], + ["punctuation.operator","."], + ["identifier","ownerDocument"], + ["punctuation.operator","."], + ["support.function.dom","getElementById"], + ["paren.lparen","("], + ["string","\"dickory\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["identifier","dock"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","evt"], + ["punctuation.operator","."], + ["identifier","target"], + ["punctuation.operator","."], + ["identifier","ownerDocument"], + ["punctuation.operator","."], + ["support.function.dom","getElementById"], + ["paren.lparen","("], + ["string","\"dock\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-start" +],[ + "js-start", + ["text"," "], + ["identifier","ShowAndGrowElement"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "js-start", + ["text"," "], + ["storage.type","function"], + ["text"," "], + ["entity.name.function","ShowAndGrowElement"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "js-start", + ["text"," "], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["identifier","timer_increment"], + ["punctuation.operator",";"] +],[ + "js-no_regex", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["identifier","max_time"], + ["paren.rparen",")"] +],[ + "js-start", + ["text"," "], + ["keyword","return"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["comment","// Scale the text string gradually until it is 20 times larger"] +],[ + "js-start", + ["text"," "], + ["identifier","scalefactor"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["paren.lparen","("], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["constant.numeric","650"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","/"], + ["text"," "], + ["identifier","max_time"], + ["punctuation.operator",";"] +],[ + "js-start" +],[ + "js-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator","<"], + ["text"," "], + ["constant.numeric","30"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "js-start", + ["text"," "], + ["identifier","hickory"], + ["punctuation.operator","."], + ["support.function.dom","setAttribute"], + ["paren.lparen","("], + ["string","\"display\""], + ["punctuation.operator",","], + ["text"," "], + ["string","\"\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["identifier","hickory"], + ["punctuation.operator","."], + ["support.function.dom","setAttribute"], + ["paren.lparen","("], + ["string","\"transform\""], + ["punctuation.operator",","], + ["text"," "], + ["string","\"translate(\""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["paren.lparen","("], + ["constant.numeric","600"], + ["keyword.operator","+"], + ["identifier","scalefactor"], + ["keyword.operator","*"], + ["constant.numeric","3"], + ["keyword.operator","*-"], + ["constant.numeric","1"], + ["text"," "], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\", -144 )\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "js-no_regex" +],[ + "js-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","30"], + ["text"," "], + ["keyword.operator","&&"], + ["text"," "], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator","<"], + ["text"," "], + ["constant.numeric","66"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "js-start", + ["text"," "], + ["identifier","dickory"], + ["punctuation.operator","."], + ["support.function.dom","setAttribute"], + ["paren.lparen","("], + ["string","\"display\""], + ["punctuation.operator",","], + ["text"," "], + ["string","\"\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["identifier","dickory"], + ["punctuation.operator","."], + ["support.function.dom","setAttribute"], + ["paren.lparen","("], + ["string","\"transform\""], + ["punctuation.operator",","], + ["text"," "], + ["string","\"translate(\""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["paren.lparen","("], + ["keyword.operator","-"], + ["constant.numeric","795"], + ["keyword.operator","+"], + ["identifier","scalefactor"], + ["keyword.operator","*"], + ["constant.numeric","2"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\", 0 )\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "js-start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","timevalue"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","66"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "js-start", + ["text"," "], + ["identifier","dock"], + ["punctuation.operator","."], + ["support.function.dom","setAttribute"], + ["paren.lparen","("], + ["string","\"display\""], + ["punctuation.operator",","], + ["text"," "], + ["string","\"\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-start", + ["text"," "], + ["identifier","dock"], + ["punctuation.operator","."], + ["support.function.dom","setAttribute"], + ["paren.lparen","("], + ["string","\"transform\""], + ["punctuation.operator",","], + ["text"," "], + ["string","\"translate(\""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["paren.lparen","("], + ["constant.numeric","1450"], + ["keyword.operator","+"], + ["identifier","scalefactor"], + ["keyword.operator","*"], + ["constant.numeric","2"], + ["keyword.operator","*-"], + ["constant.numeric","1"], + ["paren.rparen",")"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\", 144 )\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "js-no_regex" +],[ + "js-no_regex", + ["text"," "], + ["comment","// Call ShowAndGrowElement again <timer_increment> milliseconds later."] +],[ + "js-no_regex", + ["text"," "], + ["identifier","setTimeout"], + ["paren.lparen","("], + ["string","\"ShowAndGrowElement()\""], + ["punctuation.operator",","], + ["text"," "], + ["identifier","timer_increment"], + ["paren.rparen",")"] +],[ + "js-no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "js-no_regex", + ["text"," "], + ["variable.language","window"], + ["punctuation.operator","."], + ["identifier","ShowAndGrowElement"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","ShowAndGrowElement"] +],[ + "start", + ["text"," "], + ["string.cdata.xml","]]>"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.script.tag-name.xml","script"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","rect"] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","fill"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"#2e3436\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","fill-rule"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"nonzero\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","stroke-width"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"3\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","y"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"0\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","x"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"0\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","height"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"600\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","width"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"800\""] +],[ + "start", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"rect3590\""], + ["meta.tag.punctuation.tag-close.xml","/>"] +],[ + "start" +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","text"] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","style"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"font-size:144px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","x"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"50\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","y"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"350\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"hickory\""] +],[ + "start", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","display"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"none\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," Hickory,"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","text"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","text"] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","style"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"font-size:144px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","x"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"50\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","y"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"350\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"dickory\""] +],[ + "start", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","display"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"none\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," dickory,"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","text"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","text"] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","style"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"font-size:144px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","x"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"50\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","y"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"350\""] +],[ + "meta.tag.punctuation.tag-open.xml1", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"dock\""] +],[ + "start", + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","display"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"none\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," dock!"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","text"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","svg"], + ["meta.tag.punctuation.tag-close.xml",">"] +]] diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_swift.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_swift.json new file mode 100644 index 00000000..8af27420 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_swift.json @@ -0,0 +1,171 @@ +[[ + "start", + ["keyword","import"], + ["text"," "], + ["identifier","UIKit"] +],[ + "start", + ["text"," "] +],[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","DetailsViewController"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","UIViewController"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","var"], + ["text"," "], + ["identifier","album"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","Album"], + ["punctuation.operator","?"] +],[ + "start", + ["text"," "], + ["variable.parameter","@IBOutlet"], + ["text"," "], + ["keyword","weak"], + ["text"," "], + ["keyword","var"], + ["text"," "], + ["identifier","albumCover"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","UIImageView"], + ["keyword.operator","!"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","required"], + ["text"," "], + ["keyword","init"], + ["paren.lparen","("], + ["identifier","coder"], + ["text"," "], + ["identifier","aDecoder"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","NSCoder"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["constant.language","super"], + ["punctuation.operator","."], + ["keyword","init"], + ["paren.lparen","("], + ["identifier","coder"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","aDecoder"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","override"], + ["text"," "], + ["keyword","func"], + ["text"," "], + ["identifier","viewDidLoad"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["constant.language","super"], + ["punctuation.operator","."], + ["identifier","viewDidLoad"], + ["paren.lparen","("], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","mLabel"], + ["punctuation.operator","."], + ["identifier","text"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword","self"], + ["punctuation.operator","."], + ["identifier","album"], + ["punctuation.operator","?."], + ["identifier","title"], + ["text"," "], + ["keyword.operator","&&"], + ["text"," "], + ["string.start","\""], + ["string","Juhu "], + ["paren.quasi.start","\\("], + ["text"," "], + ["string.start","\""], + ["string","kinners"], + ["string.end","\""], + ["text"," "], + ["paren.quasi.end",")"], + ["string","! "], + ["string.end","\""] +],[ + "start", + ["text"," "], + ["identifier","albumCover"], + ["punctuation.operator","."], + ["identifier","image"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","UIImage"], + ["paren.lparen","("], + ["identifier","data"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","NSData"], + ["paren.lparen","("], + ["identifier","contentsOfURL"], + ["punctuation.operator",":"], + ["text"," "], + ["identifier","NSURL"], + ["paren.lparen","("], + ["storage.type","string"], + ["punctuation.operator",":"], + ["text"," "], + ["keyword","self"], + ["punctuation.operator","."], + ["identifier","album"], + ["keyword.operator","!"], + ["punctuation.operator","."], + ["identifier","largeImageURL"], + ["paren.rparen",")"], + ["keyword.operator","!"], + ["paren.rparen",")"], + ["keyword.operator","!"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tcl.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tcl.json new file mode 100644 index 00000000..6a032ddc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tcl.json @@ -0,0 +1,385 @@ +[[ + "commandItem" +],[ + "commandItem", + ["keyword","proc"], + ["text"," "], + ["identifier","dijkstra"], + ["text"," "], + ["paren.lparen","{"], + ["keyword","graph"], + ["text"," "], + ["identifier","origin"], + ["paren.rparen","}"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["comment","# Initialize"] +],[ + "commandItem", + ["text"," "], + ["keyword","dict"], + ["text"," "], + ["identifier","for"], + ["text"," "], + ["paren.lparen","{"], + ["keyword","vertex"], + ["text"," "], + ["identifier","distmap"], + ["paren.rparen","}"], + ["text"," "], + ["variable.instance","$graph"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["keyword","dict"], + ["text"," "], + ["identifier","set"], + ["text"," "], + ["identifier","dist"], + ["text"," "], + ["variable.instance","$vertex"], + ["text"," "], + ["identifier","Inf"] +],[ + "commandItem", + ["text","\t"], + ["keyword","dict"], + ["text"," "], + ["identifier","set"], + ["text"," "], + ["identifier","path"], + ["text"," "], + ["variable.instance","$vertex"], + ["text"," "], + ["paren.lparen","{"], + ["paren.rparen","}"] +],[ + "commandItem", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["keyword","dict"], + ["text"," "], + ["identifier","set"], + ["text"," "], + ["identifier","dist"], + ["text"," "], + ["variable.instance","$origin"], + ["text"," 0"] +],[ + "start", + ["text"," "], + ["keyword","dict"], + ["text"," "], + ["identifier","set"], + ["text"," "], + ["identifier","path"], + ["text"," "], + ["variable.instance","$origin"], + ["text"," "], + ["paren.lparen","["], + ["keyword","list"], + ["text"," "], + ["variable.instance","$origin"], + ["paren.rparen","]"] +],[ + "commandItem", + ["text"," "] +],[ + "commandItem", + ["text"," "], + ["keyword","while"], + ["text"," "], + ["paren.lparen","{"], + ["text","["], + ["keyword","dict"], + ["text"," "], + ["identifier","size"], + ["text"," "], + ["variable.instance","$graph"], + ["paren.rparen","]}"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["comment","# Find unhandled node with least weight"] +],[ + "start", + ["text","\t"], + ["keyword","set"], + ["text"," "], + ["identifier","d"], + ["text"," "], + ["identifier","Inf"] +],[ + "commandItem", + ["text","\t"], + ["keyword","dict"], + ["text"," "], + ["identifier","for"], + ["text"," "], + ["paren.lparen","{"], + ["keyword","uu"], + ["text"," "], + ["support.function","-"], + ["paren.rparen","}"], + ["text"," "], + ["variable.instance","$graph"], + ["text"," "], + ["paren.lparen","{"] +],[ + "commandItem", + ["text","\t "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","{"], + ["variable.instance","$d"], + ["text"," "], + ["support.function",">"], + ["text"," "], + ["paren.lparen","["], + ["keyword","set"], + ["text"," "], + ["identifier","dd"], + ["text"," "], + ["paren.lparen","["], + ["keyword","dict"], + ["text"," "], + ["identifier","get"], + ["text"," "], + ["variable.instance","$dist"], + ["text"," "], + ["variable.instance","$uu"], + ["paren.rparen","]]}"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t"], + ["keyword","set"], + ["text"," "], + ["identifier","u"], + ["text"," "], + ["variable.instance","$uu"] +],[ + "start", + ["text","\t\t"], + ["keyword","set"], + ["text"," "], + ["identifier","d"], + ["text"," "], + ["variable.instance","$dd"] +],[ + "commandItem", + ["text","\t "], + ["paren.rparen","}"] +],[ + "commandItem", + ["text","\t"], + ["paren.rparen","}"] +],[ + "commandItem", + ["text"," "] +],[ + "start", + ["text","\t"], + ["comment","# No such node; graph must be disconnected"] +],[ + "start", + ["text","\t"], + ["keyword","if"], + ["text"," "], + ["paren.lparen","{"], + ["variable.instance","$d"], + ["text"," "], + ["support.function","=="], + ["text"," "], + ["identifier","Inf"], + ["paren.rparen","}"], + ["text"," "], + ["identifier","break"] +],[ + "commandItem", + ["text"," "] +],[ + "commentfollow", + ["text","\t"], + ["comment","# Update the weights for nodes\\"] +],[ + "start", + ["comment","\t lead to by the node we've picked"] +],[ + "commandItem", + ["text","\t"], + ["keyword","dict"], + ["text"," "], + ["identifier","for"], + ["text"," "], + ["paren.lparen","{"], + ["keyword","v"], + ["text"," "], + ["identifier","dd"], + ["paren.rparen","}"], + ["text"," "], + ["paren.lparen","["], + ["keyword","dict"], + ["text"," "], + ["identifier","get"], + ["text"," "], + ["variable.instance","$graph"], + ["text"," "], + ["variable.instance","$u"], + ["paren.rparen","]"], + ["text"," "], + ["paren.lparen","{"] +],[ + "commandItem", + ["text","\t "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","{"], + ["text","["], + ["keyword","dict"], + ["text"," "], + ["identifier","exists"], + ["text"," "], + ["variable.instance","$graph"], + ["text"," "], + ["variable.instance","$v"], + ["paren.rparen","]}"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t"], + ["keyword","set"], + ["text"," "], + ["identifier","alt"], + ["text"," "], + ["paren.lparen","["], + ["keyword","expr"], + ["text"," "], + ["paren.lparen","{"], + ["variable.instance","$d"], + ["text"," "], + ["support.function","+"], + ["text"," "], + ["variable.instance","$dd"], + ["paren.rparen","}]"] +],[ + "commandItem", + ["text","\t\t"], + ["keyword","if"], + ["text"," "], + ["paren.lparen","{"], + ["variable.instance","$alt"], + ["text"," "], + ["support.function","<"], + ["text"," "], + ["paren.lparen","["], + ["keyword","dict"], + ["text"," "], + ["identifier","get"], + ["text"," "], + ["variable.instance","$dist"], + ["text"," "], + ["variable.instance","$v"], + ["paren.rparen","]}"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t "], + ["keyword","dict"], + ["text"," "], + ["identifier","set"], + ["text"," "], + ["identifier","dist"], + ["text"," "], + ["variable.instance","$v"], + ["text"," "], + ["variable.instance","$alt"] +],[ + "start", + ["text","\t\t "], + ["keyword","dict"], + ["text"," "], + ["identifier","set"], + ["text"," "], + ["identifier","path"], + ["text"," "], + ["variable.instance","$v"], + ["text"," "], + ["paren.lparen","["], + ["keyword","list"], + ["text"," "], + ["support.function","{*}"], + ["paren.lparen","["], + ["keyword","dict"], + ["text"," "], + ["identifier","get"], + ["text"," "], + ["variable.instance","$path"], + ["text"," "], + ["variable.instance","$u"], + ["paren.rparen","]"], + ["text"," "], + ["variable.instance","$v"], + ["paren.rparen","]"] +],[ + "commandItem", + ["text","\t\t"], + ["paren.rparen","}"] +],[ + "commandItem", + ["text","\t "], + ["paren.rparen","}"] +],[ + "commandItem", + ["text","\t"], + ["paren.rparen","}"] +],[ + "commandItem", + ["text"," "] +],[ + "start", + ["text","\t"], + ["comment","# Remove chosen node from graph still to be handled"] +],[ + "start", + ["text","\t"], + ["keyword","dict"], + ["text"," "], + ["identifier","unset"], + ["text"," "], + ["identifier","graph"], + ["text"," "], + ["variable.instance","$u"] +],[ + "commandItem", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["paren.lparen","["], + ["keyword","list"], + ["text"," "], + ["variable.instance","$dist"], + ["text"," "], + ["variable.instance","$path"], + ["paren.rparen","]"] +],[ + "commandItem", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tex.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tex.json new file mode 100644 index 00000000..a7bdc177 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tex.json @@ -0,0 +1,129 @@ +[[ + "start", + ["text","The quadratic formula is $$-b "], + ["keyword","\\pm"], + ["text"," "], + ["keyword","\\sqrt"], + ["paren.keyword.operator","{"], + ["text","b^2 - 4ac"], + ["paren.keyword.operator","}"], + ["text"," "], + ["keyword","\\over"], + ["text"," 2a$$"] +],[ + "start", + ["keyword","\\bye"] +],[ + "start" +],[ + "start", + ["keyword","\\makeatletter"] +],[ + "start", + ["text"," "], + ["keyword","\\newcommand"], + ["paren.keyword.operator","{"], + ["keyword","\\be"], + ["paren.keyword.operator","}{"], + ["comment","%"] +],[ + "start", + ["text"," "], + ["keyword","\\begingroup"] +],[ + "start", + ["text"," "], + ["comment","% \\setlength{\\arraycolsep}{2pt}"] +],[ + "start", + ["text"," "], + ["keyword","\\eqnarray"], + ["comment","%"] +],[ + "start", + ["text"," "], + ["keyword","\\@"], + ["text","ifstar"], + ["paren.keyword.operator","{"], + ["keyword","\\nonumber"], + ["paren.keyword.operator","}{}"], + ["comment","%"] +],[ + "start", + ["text"," "], + ["paren.keyword.operator","}"] +],[ + "start", + ["text"," "], + ["keyword","\\newcommand"], + ["paren.keyword.operator","{"], + ["keyword","\\ee"], + ["paren.keyword.operator","}{"], + ["keyword","\\endeqnarray\\endgroup"], + ["paren.keyword.operator","}"] +],[ + "start", + ["text"," "], + ["keyword","\\makeatother"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","\\begin"], + ["paren.keyword.operator","{"], + ["nospell.text","equation"], + ["paren.keyword.operator","}"] +],[ + "start", + ["text"," x="], + ["keyword","\\left"], + ["text", "\\{ "], + ["keyword","\\begin"], + ["paren.keyword.operator","{"], + ["nospell.text","array"], + ["paren.keyword.operator","}{"], + ["text","cl"], + ["paren.keyword.operator","}"] +],[ + "start", + ["text"," 0 & "], + ["keyword","\\textrm"], + ["paren.keyword.operator","{"], + ["text","if "], + ["paren.keyword.operator","}"], + ["text","A="], + ["keyword","\\ldots\\\\"] +],[ + "start", + ["text"," 1 & "], + ["keyword","\\textrm"], + ["paren.keyword.operator","{"], + ["text","if "], + ["paren.keyword.operator","}"], + ["text","B="], + ["keyword","\\ldots\\\\"] +],[ + "start", + ["text"," x & "], + ["keyword","\\textrm"], + ["paren.keyword.operator","{"], + ["text","this runs with as much text as you like, but without an raggeright text"] +],[ + "start", + ["text","."], + ["paren.keyword.operator","}"], + ["keyword","\\end"], + ["paren.keyword.operator","{"], + ["nospell.text","array"], + ["paren.keyword.operator","}"], + ["keyword","\\right"], + ["text","."] +],[ + "start", + ["text"," "], + ["keyword","\\end"], + ["paren.keyword.operator","{"], + ["nospell.text","equation"], + ["paren.keyword.operator","}"] +]] diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_text.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_text.json new file mode 100644 index 00000000..fff7ef42 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_text.json @@ -0,0 +1,29 @@ +[[ + "start", + ["text","Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."] +],[ + "start" +],[ + "start", + ["text","Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."] +],[ + "start" +],[ + "start", + ["text","Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi."] +],[ + "start" +],[ + "start", + ["text","Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat."] +],[ + "start" +],[ + "start", + ["text","Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis."] +],[ + "start" +],[ + "start", + ["text","At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_textile.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_textile.json new file mode 100644 index 00000000..59000ce3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_textile.json @@ -0,0 +1,113 @@ +[[ + "start", + ["markup.heading.1","h1"], + ["keyword",". "], + ["text","Textile document"] +],[ + "start" +],[ + "start", + ["markup.heading.2","h2"], + ["keyword",". "], + ["text","Heading Two"] +],[ + "start" +],[ + "start", + ["markup.heading.3","h3"], + ["keyword",". "], + ["text","A two-line"] +],[ + "start", + ["text"," header"] +],[ + "start" +],[ + "start", + ["markup.heading.2","h2"], + ["keyword",". "], + ["text","Another two-line"] +],[ + "start", + ["text","header"] +],[ + "start" +],[ + "start", + ["text","Paragraph:"] +],[ + "start", + ["text","one, two,"] +],[ + "start", + ["text","thee lines!"] +],[ + "start" +],[ + "start", + ["markup.heading","p"], + ["keyword","("], + ["string","classone"], + ["text"," "], + ["string","two"], + ["text"," "], + ["string","three"], + ["keyword","). "], + ["text","This is a paragraph with classes"] +],[ + "start" +],[ + "start", + ["markup.heading","p"], + ["keyword","(#"], + ["string","id"], + ["keyword","). "], + ["text","(one with an id)"] +],[ + "start" +],[ + "start", + ["markup.heading","p"], + ["keyword","("], + ["string","one"], + ["text"," "], + ["string","two"], + ["text"," "], + ["string","three"], + ["keyword","#"], + ["string","my_id"], + ["keyword","). "], + ["text","..classes + id"] +],[ + "start" +],[ + "start", + ["keyword","*"], + ["text"," Unordered list"] +],[ + "start", + ["keyword","**"], + ["text"," sublist"] +],[ + "start", + ["keyword","*"], + ["text"," back again!"] +],[ + "start", + ["keyword","**"], + ["text"," sublist again.."] +],[ + "start" +],[ + "start", + ["keyword","#"], + ["text"," ordered"] +],[ + "start" +],[ + "start", + ["text","bg. Blockquote!"] +],[ + "start", + ["text"," This is a two-list blockquote..!"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_toml.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_toml.json new file mode 100644 index 00000000..ec471f74 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_toml.json @@ -0,0 +1,131 @@ +[[ + "start", + ["comment.toml","# This is a TOML document. Boom."] +],[ + "start" +],[ + "start", + ["identifier","title"], + ["text"," = "], + ["string","\"TOML Example\""] +],[ + "start" +],[ + "start", + ["variable.keygroup.toml","[owner]"] +],[ + "start", + ["identifier","name"], + ["text"," = "], + ["string","\"Tom Preston-Werner\""] +],[ + "start", + ["identifier","organization"], + ["text"," = "], + ["string","\"GitHub\""] +],[ + "start", + ["identifier","bio"], + ["text"," = "], + ["string","\"GitHub Cofounder & CEO"], + ["constant.language.escape","\\n"], + ["string","Likes tater tots and beer.\""] +],[ + "start", + ["identifier","dob"], + ["text"," = "], + ["support.date.toml","1979-05-27T07:32:00Z"], + ["text"," "], + ["comment.toml","# First class dates? Why not?"] +],[ + "start" +],[ + "start", + ["variable.keygroup.toml","[database]"] +],[ + "start", + ["identifier","server"], + ["text"," = "], + ["string","\"192.168.1.1\""] +],[ + "start", + ["identifier","ports"], + ["text"," = [ "], + ["constant.numeric.toml","8001"], + ["text",", "], + ["constant.numeric.toml","8001"], + ["text",", "], + ["constant.numeric.toml","8002"], + ["text"," ]"] +],[ + "start", + ["identifier","connection_max"], + ["text"," = "], + ["constant.numeric.toml","5000"] +],[ + "start", + ["identifier","enabled"], + ["text"," = "], + ["constant.language.boolean","true"] +],[ + "start" +],[ + "start", + ["variable.keygroup.toml","[servers]"] +],[ + "start" +],[ + "start", + ["text"," "], + ["comment.toml","# You can indent as you please. Tabs or spaces. TOML don't care."] +],[ + "start", + ["variable.keygroup.toml"," [servers.alpha]"] +],[ + "start", + ["text"," "], + ["identifier","ip"], + ["text"," = "], + ["string","\"10.0.0.1\""] +],[ + "start", + ["text"," "], + ["identifier","dc"], + ["text"," = "], + ["string","\"eqdc10\""] +],[ + "start" +],[ + "start", + ["variable.keygroup.toml"," [servers.beta]"] +],[ + "start", + ["text"," "], + ["identifier","ip"], + ["text"," = "], + ["string","\"10.0.0.2\""] +],[ + "start", + ["text"," "], + ["identifier","dc"], + ["text"," = "], + ["string","\"eqdc10\""] +],[ + "start" +],[ + "start", + ["variable.keygroup.toml","[clients]"] +],[ + "start", + ["identifier","data"], + ["text"," = [ ["], + ["string","\"gamma\""], + ["text",", "], + ["string","\"delta\""], + ["text","], ["], + ["constant.numeric.toml","1"], + ["text",", "], + ["constant.numeric.toml","2"], + ["text","] ] "], + ["comment.toml","# just an update to make sure parsers support it"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tsx.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tsx.json new file mode 100644 index 00000000..62c7f6e2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_tsx.json @@ -0,0 +1,30 @@ +[[ + ["jsx",1], + ["storage.type","var"], + ["text"," "], + ["identifier","mode"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","div"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["string"," "] +],[ + ["jsx",1], + ["string"," Typescript + "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","b"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["string"," JSX "], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","b"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["string"," "] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","div"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["punctuation.operator",";"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_turtle.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_turtle.json new file mode 100644 index 00000000..08d509b0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_turtle.json @@ -0,0 +1,108 @@ +[[ + "start", + ["keyword.other.prefix.turtle","@base"], + ["text"," "], + ["string.quoted.other.relative.url.turtle","<http://example.org/>"], + ["text"," "], + ["keyword.operator.punctuation.turtle","."] +],[ + "start", + ["keyword.other.prefix.turtle","@prefix"], + ["text"," "], + ["entity.name.other.qname.turtle","rdf:"], + ["text"," "], + ["string.quoted.other.relative.url.turtle","<http://www.w3.org/1999/02/22-rdf-syntax-ns#>"], + ["text"," "], + ["keyword.operator.punctuation.turtle","."] +],[ + "start", + ["keyword.other.prefix.turtle","@prefix"], + ["text"," "], + ["entity.name.other.qname.turtle","rdfs:"], + ["text"," "], + ["string.quoted.other.relative.url.turtle","<http://www.w3.org/2000/01/rdf-schema#>"], + ["text"," "], + ["keyword.operator.punctuation.turtle","."] +],[ + "start", + ["keyword.other.prefix.turtle","@prefix"], + ["text"," "], + ["entity.name.other.qname.turtle","foaf:"], + ["text"," "], + ["string.quoted.other.relative.url.turtle","<http://xmlns.com/foaf/0.1/>"], + ["text"," "], + ["keyword.operator.punctuation.turtle","."] +],[ + "start", + ["keyword.other.prefix.turtle","@prefix"], + ["text"," "], + ["entity.name.other.qname.turtle","rel:"], + ["text"," "], + ["string.quoted.other.relative.url.turtle","<http://www.perceive.net/schemas/relationship/>"], + ["text"," "], + ["keyword.operator.punctuation.turtle","."] +],[ + "start" +],[ + "start", + ["string.quoted.other.relative.url.turtle","<#green-goblin>"] +],[ + "start", + ["text"," "], + ["entity.name.other.qname.turtle","rel:enemyOf"], + ["text"," "], + ["string.quoted.other.relative.url.turtle","<#spiderman>"], + ["text"," "], + ["keyword.operator.punctuation.turtle",";"] +],[ + "start", + ["text"," "], + ["support.type.datatype.rdf.schema.turtle"," a "], + ["entity.name.other.qname.turtle","foaf:Person"], + ["text"," "], + ["keyword.operator.punctuation.turtle",";"], + ["text"," "], + ["punctuation.definition.comment.turtle","#"], + ["comment.line.hash.turtle"," in the context of the Marvel universe"] +],[ + "start", + ["text"," "], + ["entity.name.other.qname.turtle","foaf:name"], + ["text"," "], + ["string.quoted.double.turtle","\"Green Goblin\""], + ["text"," "], + ["keyword.operator.punctuation.turtle","."] +],[ + "start" +],[ + "start", + ["string.quoted.other.relative.url.turtle","<#spiderman>"] +],[ + "start", + ["text"," "], + ["entity.name.other.qname.turtle","rel:enemyOf"], + ["text"," "], + ["string.quoted.other.relative.url.turtle","<#green-goblin>"], + ["text"," "], + ["keyword.operator.punctuation.turtle",";"] +],[ + "start", + ["text"," "], + ["support.type.datatype.rdf.schema.turtle"," a "], + ["entity.name.other.qname.turtle","foaf:Person"], + ["text"," "], + ["keyword.operator.punctuation.turtle",";"] +],[ + "start", + ["text"," "], + ["entity.name.other.qname.turtle","foaf:name"], + ["text"," "], + ["string.quoted.double.turtle","\"Spiderman\""], + ["keyword.operator.punctuation.turtle",","], + ["text"," "], + ["string.quoted.double.turtle","\"Человек-паук\""], + ["keyword.operator.language.suffix.turtle","@"], + ["constant.language.suffix.turtle","ru"], + ["text"," "], + ["keyword.operator.punctuation.turtle","."] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_twig.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_twig.json new file mode 100644 index 00000000..ada8b4a7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_twig.json @@ -0,0 +1,288 @@ +[[ + "start", + ["xml-pe.doctype.xml","<!"], + ["xml-pe.doctype.xml","DOCTYPE"], + ["text.whitespace.xml"," "], + ["xml-pe.xml","html"], + ["xml-pe.doctype.xml",">"] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","html"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","head"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","My Webpage"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","title"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","head"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","body"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","ul"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","id"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"navigation\""], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.twig","{%"], + ["text"," "], + ["keyword.control.twig","for"], + ["text"," "], + ["identifier","item"], + ["text"," "], + ["keyword.operator.twig","in"], + ["text"," "], + ["identifier","navigation"], + ["text"," "], + ["meta.tag.twig","%}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","li"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.anchor.tag-name.xml","a"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","href"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\""], + ["variable.other.readwrite.local.twig","{{"], + ["text"," "], + ["identifier","item"], + ["punctuation.operator","."], + ["identifier","href"], + ["keyword.operator.other","|"], + ["support.function.twig","escape"], + ["text"," "], + ["variable.other.readwrite.local.twig","}}"], + ["string.attribute-value.xml","\""], + ["meta.tag.punctuation.tag-close.xml",">"], + ["variable.other.readwrite.local.twig","{{"], + ["text"," "], + ["identifier","item"], + ["punctuation.operator","."], + ["identifier","caption"], + ["text"," "], + ["variable.other.readwrite.local.twig","}}"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.anchor.tag-name.xml","a"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","li"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.twig","{%"], + ["text"," "], + ["keyword.control.twig","endfor"], + ["text"," "], + ["meta.tag.twig","%}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","ul"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.twig","{%"], + ["text"," "], + ["keyword.control.twig","if"], + ["text"," "], + ["constant.numeric","1"], + ["text"," "], + ["keyword.operator.twig","not"], + ["text"," "], + ["keyword.operator.twig","in"], + ["text"," "], + ["paren.lparen","["], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["text"," "], + ["constant.numeric","2"], + ["punctuation.operator",","], + ["text"," "], + ["constant.numeric","3"], + ["paren.rparen","]"], + ["text"," "], + ["meta.tag.twig","%}"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["comment.block.twig","{# is equivalent to #}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.twig","{%"], + ["text"," "], + ["keyword.control.twig","if"], + ["text"," "], + ["keyword.operator.twig","not"], + ["text"," "], + ["paren.lparen","("], + ["constant.numeric","1"], + ["text"," "], + ["keyword.operator.twig","in"], + ["text"," "], + ["paren.lparen","["], + ["constant.numeric","1"], + ["punctuation.operator",","], + ["text"," "], + ["constant.numeric","2"], + ["punctuation.operator",","], + ["text"," "], + ["constant.numeric","3"], + ["paren.rparen","])"], + ["text"," "], + ["meta.tag.twig","%}"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["meta.tag.twig","{%"], + ["text"," "], + ["keyword.control.twig","autoescape"], + ["text"," "], + ["constant.language.boolean","true"], + ["text"," "], + ["meta.tag.twig","%}"] +],[ + "start", + ["text.xml"," "], + ["variable.other.readwrite.local.twig","{{"], + ["text"," "], + ["identifier","var"], + ["text"," "], + ["variable.other.readwrite.local.twig","}}"] +],[ + "start", + ["text.xml"," "], + ["variable.other.readwrite.local.twig","{{"], + ["text"," "], + ["identifier","var"], + ["keyword.operator.other","|"], + ["support.function.twig","raw"], + ["text"," "], + ["variable.other.readwrite.local.twig","}}"], + ["text.xml"," "], + ["comment.block.twig","{# var won't be escaped #}"] +],[ + "start", + ["text.xml"," "], + ["variable.other.readwrite.local.twig","{{"], + ["text"," "], + ["identifier","var"], + ["keyword.operator.other","|"], + ["support.function.twig","escape"], + ["text"," "], + ["variable.other.readwrite.local.twig","}}"], + ["text.xml"," "], + ["comment.block.twig","{# var won't be doubled-escaped #}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.twig","{%"], + ["text"," "], + ["keyword.control.twig","endautoescape"], + ["text"," "], + ["meta.tag.twig","%}"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["variable.other.readwrite.local.twig","{{"], + ["text"," "], + ["keyword.control.twig","include"], + ["paren.lparen","("], + ["string","'twig.html'"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","sandboxed"], + ["text"," "], + ["keyword.operator.assignment","="], + ["text"," "], + ["constant.language.boolean","true"], + ["paren.rparen",")"], + ["text"," "], + ["variable.other.readwrite.local.twig","}}"] +],[ + "start" +],[ + "start", + ["text.xml"," "], + ["variable.other.readwrite.local.twig","{{"], + ["string","\"string "], + ["constant.language.escape","#{with}"], + ["string"," "], + ["constant.language.escape","\\\""], + ["string"," escapes\""], + ["text"," "], + ["string","'another#one'"], + ["text"," "], + ["variable.other.readwrite.local.twig","}}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","h1"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","My Webpage"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","h1"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml"," "], + ["variable.other.readwrite.local.twig","{{"], + ["text"," "], + ["identifier","a_variable"], + ["text"," "], + ["variable.other.readwrite.local.twig","}}"] +],[ + "start", + ["text.xml"," "], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","body"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","html"], + ["meta.tag.punctuation.tag-close.xml",">"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_typescript.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_typescript.json new file mode 100644 index 00000000..1a368791 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_typescript.json @@ -0,0 +1,563 @@ +[[ + "start", + ["keyword.operator.ts","class"], + ["text"," "], + ["identifier","Greeter"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t"], + ["variable.parameter.function.ts","greeting"], + ["text",": "], + ["variable.parameter.function.ts","string"], + ["punctuation.operator",";"] +],[ + "start", + ["text","\t"], + ["keyword.operator.ts","constructor"], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter.function.ts","message"], + ["text",": "], + ["variable.parameter.function.ts","string"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t"], + ["storage.type.variable.ts","this."], + ["identifier","greeting"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","message"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text","\t"], + ["paren.rparen","}"] +],[ + "start", + ["text","\t"], + ["identifier","greet"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text","\t\t"], + ["keyword","return"], + ["text"," "], + ["string","\"Hello, \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","greeting"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text","\t"], + ["paren.rparen","}"] +],[ + "no_regex", + ["paren.rparen","}"], + ["text"," "] +],[ + "no_regex" +],[ + "start", + ["storage.type","var"], + ["text"," "], + ["identifier","greeter"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword","new"], + ["text"," "], + ["identifier","Greeter"], + ["paren.lparen","("], + ["string","\"world\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "no_regex", + ["storage.type","var"], + ["text"," "], + ["identifier","button"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["variable.language","document"], + ["punctuation.operator","."], + ["support.function.dom","createElement"], + ["paren.lparen","("], + ["string","'button'"], + ["paren.rparen",")"] +],[ + "start", + ["identifier","button"], + ["punctuation.operator","."], + ["identifier","innerText"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["keyword.operator","<"], + ["storage.type.variable.ts","string"], + ["keyword.operator",">"], + ["string","\"Say Hello\""], + ["punctuation.operator",";"] +],[ + "start", + ["storage.type","button"], + ["punctuation.operator","."], + ["entity.name.function","onclick"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["storage.type","function"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "no_regex", + ["text","\t"], + ["support.function","alert"], + ["paren.lparen","("], + ["entity.name.function.ts","greeter.greet"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["paren.rparen",")"] +],[ + "no_regex", + ["paren.rparen","}"] +],[ + "no_regex" +],[ + "no_regex", + ["variable.language","document"], + ["punctuation.operator","."], + ["identifier","body"], + ["punctuation.operator","."], + ["support.function.dom","appendChild"], + ["paren.lparen","("], + ["identifier","button"], + ["paren.rparen",")"] +],[ + "no_regex" +],[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","Snake"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","Animal"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["entity.name.function.ts","move"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.function","alert"], + ["paren.lparen","("], + ["string","\"Slithering...\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["storage.type.variable.ts","super"], + ["text","("], + ["keyword.other.ts","5"], + ["text",")"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "no_regex", + ["paren.rparen","}"] +],[ + "no_regex" +],[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","Horse"], + ["text"," "], + ["keyword","extends"], + ["text"," "], + ["identifier","Animal"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["entity.name.function.ts","move"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["support.function","alert"], + ["paren.lparen","("], + ["string","\"Galloping...\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.operator.ts","super"], + ["punctuation.operator","."], + ["identifier","move"], + ["paren.lparen","("], + ["constant.numeric","45"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "no_regex", + ["paren.rparen","}"] +],[ + "no_regex" +],[ + "start", + ["identifier","module"], + ["text"," "], + ["identifier","Sayings"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.operator.ts","export"], + ["text"," "], + ["keyword.operator.ts","class"], + ["text"," "], + ["identifier","Greeter"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["variable.parameter.function.ts","greeting"], + ["text",": "], + ["variable.parameter.function.ts","string"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.operator.ts","constructor"], + ["text"," "], + ["paren.lparen","("], + ["variable.parameter.function.ts","message"], + ["text",": "], + ["variable.parameter.function.ts","string"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","greeting"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","message"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["identifier","greet"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["string","\"Hello, \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","greeting"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "no_regex", + ["paren.rparen","}"] +],[ + "start", + ["identifier","module"], + ["text"," "], + ["identifier","Mankala"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.operator.ts","export"], + ["text"," "], + ["keyword.operator.ts","class"], + ["text"," "], + ["identifier","Features"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["keyword.operator.ts","public"], + ["text"," "], + ["identifier","turnContinues"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.language.boolean","false"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.operator.ts","public"], + ["text"," "], + ["identifier","seedStoredCount"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.operator.ts","public"], + ["text"," "], + ["identifier","capturedCount"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword.operator.ts","public"], + ["text"," "], + ["identifier","spaceCaptured"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","NoSpace"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword.operator.ts","public"], + ["text"," "], + ["entity.name.function.ts","clear"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","turnContinues"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.language.boolean","false"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","seedStoredCount"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","capturedCount"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","spaceCaptured"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","NoSpace"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "no_regex" +],[ + "start", + ["text"," "], + ["keyword","public"], + ["text"," "], + ["identifier","toString"], + ["paren.lparen","("], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["storage.type","var"], + ["text"," "], + ["identifier","stringBuilder"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","\"\""], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["storage.type.variable.ts","this."], + ["identifier","turnContinues"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","stringBuilder"], + ["text"," "], + ["keyword.operator","+="], + ["text"," "], + ["string","\" turn continues,\""], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["identifier","stringBuilder"], + ["text"," "], + ["keyword.operator","+="], + ["text"," "], + ["string","\" stores \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","seedStoredCount"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["storage.type.variable.ts","this."], + ["identifier","capturedCount"], + ["text"," "], + ["keyword.operator",">"], + ["text"," "], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "start", + ["text"," "], + ["identifier","stringBuilder"], + ["text"," "], + ["keyword.operator","+="], + ["text"," "], + ["string","\" captures \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","capturedCount"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\" from space \""], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["storage.type.variable.ts","this."], + ["identifier","spaceCaptured"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["text"," "], + ["keyword","return"], + ["text"," "], + ["identifier","stringBuilder"], + ["punctuation.operator",";"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "no_regex", + ["paren.rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vala.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vala.json new file mode 100644 index 00000000..efe6e7c8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vala.json @@ -0,0 +1,158 @@ +[[ + "start", + ["meta.using.vala",""], + ["keyword.other.using.vala","using"], + ["meta.using.vala"," "], + ["storage.modifier.using.vala","Gtk"], + ["punctuation.terminator.vala",";"] +],[ + "start", + ["text"," "] +],[ + "text0", + ["storage.type.primitive.array.vala","int"], + ["text"," main ("], + ["storage.type.primitive.array.vala","string"], + ["text","[] args) {"] +],[ + "text0", + ["text"," "], + ["storage.type.vala","Gtk"], + ["keyword.operator.dereference.vala","."], + ["text","init ("], + ["storage.modifier.vala","ref"], + ["text"," args)"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," "], + ["storage.type.primitive.vala","var"], + ["text"," foo "], + ["keyword.operator.assignment.vala","="], + ["text"," "], + ["keyword.control.new.vala","new"], + ["text"," "], + ["storage.type.generic.vala","MyFoo<string[](), MyBar<string, int>>"], + ["text","()"], + ["punctuation.terminator.vala",";"] +],[ + "text0" +],[ + "text0", + ["text"," "], + ["storage.type.primitive.vala","var"], + ["text"," window "], + ["keyword.operator.assignment.vala","="], + ["text"," "], + ["keyword.control.new.vala","new"], + ["text"," "], + ["storage.type.vala","Window"], + ["text","()"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," window"], + ["keyword.operator.dereference.vala","."], + ["text","title "], + ["keyword.operator.assignment.vala","="], + ["text"," "], + ["punctuation.definition.string.begin.vala","\""], + ["string.quoted.double.vala","Hello, World!"], + ["punctuation.definition.string.end.vala","\""], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," window"], + ["keyword.operator.dereference.vala","."], + ["text","border_width "], + ["keyword.operator.assignment.vala","="], + ["text"," "], + ["constant.numeric.vala","10"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," window"], + ["keyword.operator.dereference.vala","."], + ["text","window_position "], + ["keyword.operator.assignment.vala","="], + ["text"," "], + ["storage.type.vala","WindowPosition"], + ["keyword.operator.dereference.vala","."], + ["constant.other.vala","CENTER"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," window"], + ["keyword.operator.dereference.vala","."], + ["text","set_default_size("], + ["constant.numeric.vala","350"], + ["text",", "], + ["constant.numeric.vala","70"], + ["text",")"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," window"], + ["keyword.operator.dereference.vala","."], + ["text","destroy"], + ["keyword.operator.dereference.vala","."], + ["text","connect("], + ["storage.type.vala","Gtk"], + ["keyword.operator.dereference.vala","."], + ["text","main_quit)"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," "] +],[ + "text0", + ["text"," "], + ["storage.type.primitive.vala","var"], + ["text"," label "], + ["keyword.operator.assignment.vala","="], + ["text"," "], + ["keyword.control.new.vala","new"], + ["text"," "], + ["storage.type.vala","Label"], + ["text","("], + ["punctuation.definition.string.begin.vala","\""], + ["string.quoted.double.vala","Hello, World!"], + ["punctuation.definition.string.end.vala","\""], + ["text",")"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," "] +],[ + "text0", + ["text"," window"], + ["keyword.operator.dereference.vala","."], + ["text","add(label)"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," window"], + ["keyword.operator.dereference.vala","."], + ["text","show_all()"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," "] +],[ + "text0", + ["text"," "], + ["storage.type.vala","Gtk"], + ["keyword.operator.dereference.vala","."], + ["text","main()"], + ["punctuation.terminator.vala",";"] +],[ + "text0", + ["text"," "], + ["keyword.control.vala","return"], + ["text"," "], + ["constant.numeric.vala","0"], + ["punctuation.terminator.vala",";"] +],[ + "start", + ["text","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vbscript.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vbscript.json new file mode 100644 index 00000000..b06c245b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vbscript.json @@ -0,0 +1,255 @@ +[[ + "start", + ["identifier","myfilename"], + ["text"," "], + ["keyword.operator.asp","="], + ["text"," "], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp","C:\\Wikipedia - VBScript - Example - Hello World.txt\""] +],[ + "start", + ["identifier","MakeHelloWorldFile"], + ["text"," "], + ["identifier","myfilename"] +],[ + "state_4", + ["meta.leading-space"," "] +],[ + "start", + ["storage.type.function.asp","Sub"], + ["text"," "], + ["entity.name.function.asp","MakeHelloWorldFile"], + ["text"," "], + ["punctuation.definition.parameters.asp","("], + ["variable.parameter.function.asp","FileName"], + ["punctuation.definition.parameters.asp",")"] +],[ + "start", + ["punctuation.definition.comment.asp","'"], + ["comment.line.apostrophe.asp","Create a new file in C: drive or overwrite existing file"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["storage.type.asp","Set"], + ["text"," "], + ["identifier","FSO"], + ["text"," "], + ["keyword.operator.asp","="], + ["text"," "], + ["support.function.vb.asp","CreateObject"], + ["text","("], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp","Scripting.FileSystemObject\""], + ["text",")"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["keyword.control.asp","If"], + ["text"," "], + ["identifier","FSO"], + ["text","."], + ["identifier","FileExists"], + ["text","("], + ["identifier","FileName"], + ["text",") "], + ["keyword.control.asp","Then"], + ["text"," "] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.even-tab.spaces"," "], + ["meta.odd-tab.spaces"," "], + ["identifier","Answer"], + ["text"," "], + ["keyword.operator.asp","="], + ["text"," "], + ["support.function.vb.asp","MsgBox"], + ["text"," ("], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp","File \""], + ["text"," "], + ["keyword.operator.asp","&"], + ["text"," "], + ["identifier","FileName"], + ["text"," "], + ["keyword.operator.asp","&"], + ["text"," "], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp"," exists ... OK to overwrite?\""], + ["text",", "], + ["identifier","vbOKCancel"], + ["text",")"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.even-tab.spaces"," "], + ["meta.odd-tab.spaces"," "], + ["punctuation.definition.comment.asp","'"], + ["comment.line.apostrophe.asp","If button selected is not OK, then quit now"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.even-tab.spaces"," "], + ["meta.odd-tab.spaces"," "], + ["punctuation.definition.comment.asp","'"], + ["comment.line.apostrophe.asp","vbOK is a language constant"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.even-tab.spaces"," "], + ["meta.odd-tab.spaces"," "], + ["keyword.control.asp","If"], + ["text"," "], + ["identifier","Answer"], + ["text"," "], + ["keyword.operator.asp","<>"], + ["text"," "], + ["identifier","vbOK"], + ["text"," "], + ["keyword.control.asp","Then"], + ["text"," "], + ["keyword.control.asp","Exit"], + ["text"," "], + ["keyword.control.asp","Sub"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["keyword.control.asp","Else"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.even-tab.spaces"," "], + ["meta.odd-tab.spaces"," "], + ["punctuation.definition.comment.asp","'"], + ["comment.line.apostrophe.asp","Confirm OK to create"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.even-tab.spaces"," "], + ["meta.odd-tab.spaces"," "], + ["identifier","Answer"], + ["text"," "], + ["keyword.operator.asp","="], + ["text"," "], + ["support.function.vb.asp","MsgBox"], + ["text"," ("], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp","File \""], + ["text"," "], + ["keyword.operator.asp","&"], + ["text"," "], + ["identifier","FileName"], + ["text"," "], + ["keyword.operator.asp","&"], + ["text"," "], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp"," ... OK to create?\""], + ["text",", "], + ["identifier","vbOKCancel"], + ["text",")"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.even-tab.spaces"," "], + ["meta.odd-tab.spaces"," "], + ["keyword.control.asp","If"], + ["text"," "], + ["identifier","Answer"], + ["text"," "], + ["keyword.operator.asp","<>"], + ["text"," "], + ["identifier","vbOK"], + ["text"," "], + ["keyword.control.asp","Then"], + ["text"," "], + ["keyword.control.asp","Exit"], + ["text"," "], + ["keyword.control.asp","Sub"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["keyword.control.asp","End"], + ["text"," "], + ["keyword.control.asp","If"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["punctuation.definition.comment.asp","'"], + ["comment.line.apostrophe.asp","Create new file (or replace an existing file)"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["storage.type.asp","Set"], + ["text"," "], + ["identifier","FileObject"], + ["text"," "], + ["keyword.operator.asp","="], + ["text"," "], + ["identifier","FSO"], + ["text","."], + ["identifier","CreateTextFile"], + ["text"," ("], + ["identifier","FileName"], + ["text",")"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["identifier","FileObject"], + ["text","."], + ["identifier","WriteLine"], + ["text"," "], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp","Time ... \""], + ["text"," "], + ["keyword.operator.asp","&"], + ["text"," "], + ["support.function.vb.asp","Now"], + ["text","()"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["identifier","FileObject"], + ["text","."], + ["identifier","WriteLine"], + ["text"," "], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp","Hello World\""] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["identifier","FileObject"], + ["text","."], + ["identifier","Close"], + ["text","()"] +],[ + "start", + ["meta.odd-tab.spaces"," "], + ["meta.leading-space"," "], + ["support.function.vb.asp","MsgBox"], + ["text"," "], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp","File \""], + ["text"," "], + ["keyword.operator.asp","&"], + ["text"," "], + ["identifier","FileName"], + ["text"," "], + ["keyword.operator.asp","&"], + ["text"," "], + ["punctuation.definition.string.begin.asp","\""], + ["string.quoted.double.asp"," ... updated.\""] +],[ + "start", + ["keyword.control.asp","End"], + ["text"," "], + ["keyword.control.asp","Sub"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_velocity.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_velocity.json new file mode 100644 index 00000000..7b2037f0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_velocity.json @@ -0,0 +1,287 @@ +[[ + "vm_comment", + ["comment.block","#*"] +],[ + "vm_comment", + ["comment"," This is a sample comment block that"] +],[ + "vm_comment", + ["comment"," spans multiple lines."] +],[ + "start", + ["comment","*#"] +],[ + "start" +],[ + "start", + ["keyword","#macro"], + ["text"," "], + ["lparen","("], + ["text"," "], + ["identifier","outputItem"], + ["text"," "], + ["variable","$item"], + ["text"," "], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","li"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["variable","${"], + ["identifier","item"], + ["variable","}"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","li"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["keyword","#end"] +],[ + "start" +],[ + "start", + ["comment","## Define the items to iterate"] +],[ + "start", + ["keyword","#set"], + ["text"," "], + ["lparen","("], + ["text"," "], + ["variable","$items"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["lparen","["], + ["constant.numeric","1"], + ["text.xml",","], + ["text"," "], + ["constant.numeric","2"], + ["text.xml",","], + ["text"," "], + ["constant.numeric","3"], + ["text.xml",","], + ["text"," "], + ["constant.numeric","4"], + ["rparen","]"], + ["text"," "], + ["rparen",")"] +],[ + "start" +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","ul"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text"," "], + ["comment","## Iterate over the items and output the evens."] +],[ + "start", + ["text"," "], + ["keyword","#foreach"], + ["text"," "], + ["lparen","("], + ["text"," "], + ["variable","$item"], + ["text"," "], + ["identifier","in"], + ["text"," "], + ["variable","$items"], + ["text"," "], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","#if"], + ["text"," "], + ["lparen","("], + ["text"," "], + ["support.function","$_MathTool"], + ["text.xml","."], + ["identifier","mod"], + ["lparen","("], + ["variable","$item"], + ["text.xml",","], + ["text"," "], + ["constant.numeric","2"], + ["rparen",")"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["constant.numeric","0"], + ["text"," "], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","#outputItem"], + ["text"," "], + ["lparen","("], + ["variable","$item"], + ["rparen",")"] +],[ + "start", + ["text"," "], + ["keyword","#end"] +],[ + "start", + ["text"," "], + ["keyword","#end"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","ul"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "js-start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.script.tag-name.xml","script"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "js-comment1", + ["text"," "], + ["comment","/*"] +],[ + "js-comment1", + ["comment"," A sample function to decomstrate"] +],[ + "js-comment1", + ["comment"," JavaScript highlighting and folding."] +],[ + "js-start", + ["comment"," */"] +],[ + "js-start", + ["text"," "], + ["storage.type","function"], + ["text"," "], + ["entity.name.function","foo"], + ["paren.lparen","("], + ["variable.parameter","items"], + ["punctuation.operator",", "], + ["variable.parameter","nada"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "js-start", + ["text"," "], + ["keyword","for"], + ["text"," "], + ["paren.lparen","("], + ["storage.type","var"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","="], + ["constant.numeric","0"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","<"], + ["identifier","items"], + ["punctuation.operator","."], + ["support.constant","length"], + ["punctuation.operator",";"], + ["text"," "], + ["identifier","i"], + ["keyword.operator","++"], + ["paren.rparen",")"], + ["text"," "], + ["paren.lparen","{"] +],[ + "js-start", + ["text"," "], + ["support.function","alert"], + ["paren.lparen","("], + ["identifier","items"], + ["paren.lparen","["], + ["identifier","i"], + ["paren.rparen","]"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["string","\"juhu"], + ["constant.language.escape","\\n"], + ["string","\""], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "js-no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "js-no_regex", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.script.tag-name.xml","script"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start" +],[ + "css-start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.style.tag-name.xml","style"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + ["css-comment","css-start"], + ["text"," "], + ["comment","/*"] +],[ + ["css-comment","css-start"], + ["comment"," A sample style to decomstrate"] +],[ + ["css-comment","css-start"], + ["comment"," CSS highlighting and folding."] +],[ + "css-start", + ["comment"," */"] +],[ + "css-ruleset", + ["text"," "], + ["variable",".class"], + ["text"," "], + ["paren.lparen","{"] +],[ + "css-ruleset", + ["text"," "], + ["support.type","font-family"], + ["text",": Monaco, "], + ["string.start","\""], + ["string","Courier New"], + ["string.end","\""], + ["text",", "], + ["support.constant.fonts","monospace"], + ["text",";"] +],[ + "css-ruleset", + ["text"," "], + ["support.type","font-size"], + ["text",": "], + ["constant.numeric","12"], + ["keyword","px"], + ["text",";"] +],[ + "css-ruleset", + ["text"," "], + ["support.type","cursor"], + ["text",": "], + ["support.constant","text"], + ["text",";"] +],[ + "css-start", + ["text"," "], + ["paren.rparen","}"] +],[ + "start", + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.style.tag-name.xml","style"], + ["meta.tag.punctuation.tag-close.xml",">"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_verilog.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_verilog.json new file mode 100644 index 00000000..9680a964 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_verilog.json @@ -0,0 +1,113 @@ +[[ + "start", + ["keyword","always"], + ["text"," @"], + ["paren.lparen","("], + ["keyword","negedge"], + ["text"," "], + ["identifier","reset"], + ["text"," "], + ["keyword","or"], + ["text"," "], + ["keyword","posedge"], + ["text"," "], + ["identifier","clk"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","begin"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["text"," "], + ["paren.lparen","("], + ["identifier","reset"], + ["text"," "], + ["keyword.operator","=="], + ["text"," "], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","begin"] +],[ + "start", + ["text"," "], + ["identifier","d_out"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["constant.numeric","16"], + ["text","'"], + ["identifier","h0000"], + ["text",";"] +],[ + "start", + ["text"," "], + ["identifier","d_out_mem"], + ["text","["], + ["identifier","resetcount"], + ["text","] "], + ["keyword.operator","<="], + ["text"," "], + ["identifier","d_out"], + ["text",";"] +],[ + "start", + ["text"," "], + ["identifier","laststoredvalue"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["identifier","d_out"], + ["text",";"] +],[ + "start", + ["text"," "], + ["keyword","end"], + ["text"," "], + ["keyword","else"], + ["text"," "], + ["keyword","begin"] +],[ + "start", + ["text"," "], + ["identifier","d_out"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["identifier","d_out"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"], + ["text","'"], + ["identifier","b1"], + ["text","; "] +],[ + "start", + ["text"," "], + ["keyword","end"] +],[ + "start", + ["keyword","end"] +],[ + "start" +],[ + "start", + ["keyword","always"], + ["text"," @"], + ["paren.lparen","("], + ["identifier","bufreadaddr"], + ["paren.rparen",")"] +],[ + "start", + ["text"," "], + ["identifier","bufreadval"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","d_out_mem"], + ["text","["], + ["identifier","bufreadaddr"], + ["text","];"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vhdl.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vhdl.json new file mode 100644 index 00000000..88c6e222 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_vhdl.json @@ -0,0 +1,271 @@ +[[ + "start", + ["keyword","library"], + ["text"," "], + ["identifier","IEEE"] +],[ + "start", + ["identifier","user"], + ["text"," "], + ["identifier","IEEE"], + ["punctuation.operator","."], + ["identifier","std_logic_1164"], + ["punctuation.operator","."], + ["keyword","all"], + ["punctuation.operator",";"] +],[ + "start", + ["keyword","use"], + ["text"," "], + ["identifier","IEEE"], + ["punctuation.operator","."], + ["identifier","numeric_std"], + ["punctuation.operator","."], + ["keyword","all"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["keyword","entity"], + ["text"," "], + ["identifier","COUNT16"], + ["text"," "], + ["keyword","is"] +],[ + "start" +],[ + "start", + ["text"," "], + ["keyword","port"], + ["text"," "], + ["paren.lparen","("] +],[ + "start", + ["text"," "], + ["identifier","cOut"], + ["text"," "], + ["punctuation.operator",":"], + ["keyword","out"], + ["text"," "], + ["storage.type","std_logic_vector"], + ["paren.lparen","("], + ["constant.numeric","15"], + ["text"," "], + ["keyword","downto"], + ["text"," "], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["punctuation.operator",";"], + ["text"," "], + ["comment","-- counter output"] +],[ + "start", + ["text"," "], + ["identifier","clkEn"], + ["text"," "], + ["punctuation.operator",":"], + ["keyword","in"], + ["text"," "], + ["storage.type","std_logic"], + ["punctuation.operator",";"], + ["text"," "], + ["comment","-- count enable"] +],[ + "start", + ["text"," "], + ["identifier","clk"], + ["text"," "], + ["punctuation.operator",":"], + ["keyword","in"], + ["text"," "], + ["storage.type","std_logic"], + ["punctuation.operator",";"], + ["text"," "], + ["comment","-- clock input"] +],[ + "start", + ["text"," "], + ["identifier","rst"], + ["text"," "], + ["punctuation.operator",":"], + ["keyword","in"], + ["text"," "], + ["storage.type","std_logic"], + ["text"," "], + ["comment","-- reset input"] +],[ + "start", + ["text"," "], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["keyword","end"], + ["text"," "], + ["keyword","entity"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["keyword","architecture"], + ["text"," "], + ["identifier","count_rtl"], + ["text"," "], + ["keyword","of"], + ["text"," "], + ["identifier","COUNT16"], + ["text"," "], + ["keyword","is"] +],[ + "start", + ["text"," "], + ["storage.type","signal"], + ["text"," "], + ["identifier","count"], + ["text"," "], + ["punctuation.operator",":"], + ["storage.type","std_logic_vector"], + ["text"," "], + ["paren.lparen","("], + ["constant.numeric","15"], + ["text"," "], + ["keyword","downto"], + ["text"," "], + ["constant.numeric","0"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["keyword","begin"] +],[ + "start", + ["text"," "], + ["keyword","process"], + ["text"," "], + ["paren.lparen","("], + ["identifier","clk"], + ["punctuation.operator",","], + ["text"," "], + ["identifier","rst"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","begin"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["paren.lparen","("], + ["identifier","rst"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","'1'"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["identifier","count"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["paren.lparen","("], + ["keyword","others"], + ["keyword.operator","=>"], + ["string","'0'"], + ["paren.rparen",")"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","elsif"], + ["paren.lparen","("], + ["identifier","rising_edge"], + ["paren.lparen","("], + ["identifier","clk"], + ["paren.rparen","))"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["keyword","if"], + ["paren.lparen","("], + ["identifier","clkEn"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["string","'1'"], + ["paren.rparen",")"], + ["text"," "], + ["keyword","then"] +],[ + "start", + ["text"," "], + ["identifier","count"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["identifier","count"], + ["text"," "], + ["keyword.operator","+"], + ["text"," "], + ["constant.numeric","1"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","end"], + ["text"," "], + ["keyword","if"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["keyword","end"], + ["text"," "], + ["keyword","if"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "] +],[ + "start", + ["text"," "], + ["keyword","end"], + ["text"," "], + ["keyword","process"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "], + ["identifier","cOut"], + ["text"," "], + ["keyword.operator","<="], + ["text"," "], + ["identifier","count"], + ["punctuation.operator",";"] +],[ + "start" +],[ + "start", + ["keyword","end"], + ["text"," "], + ["keyword","architecture"], + ["punctuation.operator",";"] +],[ + "start", + ["text"," "] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_wollok.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_wollok.json new file mode 100644 index 00000000..ec59f42e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_wollok.json @@ -0,0 +1,209 @@ +[[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","Actividad"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text","\t"], + ["keyword","method"], + ["text"," "], + ["identifier","calcularMejora"], + ["lparen","("], + ["rparen",")"] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","EstudiarMateria"], + ["text"," "], + ["keyword","inherits"], + ["text"," "], + ["identifier","Actividad"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text","\t"], + ["keyword","var"], + ["text"," "], + ["identifier","materia"] +],[ + "start", + ["text","\t"], + ["keyword","var"], + ["text"," "], + ["identifier","puntos"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["text","\t"], + ["keyword","new"], + ["lparen","("], + ["identifier","m"], + ["keyword.operator",","], + ["text"," "], + ["identifier","p"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text","\t\t"], + ["identifier","materia"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","m"] +],[ + "start", + ["text","\t\t"], + ["identifier","puntos"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","p"] +],[ + "start", + ["text","\t"], + ["rparen","}"] +],[ + "start", + ["text","\t"] +],[ + "start", + ["text","\t"], + ["keyword","override"], + ["text"," "], + ["keyword","method"], + ["text"," "], + ["identifier","calcularMejora"], + ["lparen","("], + ["rparen",")"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","puntos"] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","class"], + ["text"," "], + ["identifier","EjercitarEnSimulador"], + ["text"," "], + ["keyword","inherits"], + ["text"," "], + ["identifier","Actividad"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text","\t"], + ["keyword","var"], + ["text"," "], + ["identifier","horas"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","0"] +],[ + "start", + ["text","\t"], + ["keyword","new"], + ["lparen","("], + ["identifier","h"], + ["rparen",")"], + ["text"," "], + ["lparen","{"], + ["text"," "], + ["identifier","horas"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["identifier","h"], + ["text"," "], + ["rparen","}"] +],[ + "start", + ["text","\t"], + ["keyword","override"], + ["text"," "], + ["keyword","method"], + ["text"," "], + ["identifier","calcularMejora"], + ["lparen","("], + ["rparen",")"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","10"], + ["text"," "], + ["keyword.operator","*"], + ["text"," "], + ["identifier","horas"] +],[ + "start", + ["rparen","}"] +],[ + "start" +],[ + "start", + ["keyword","object"], + ["text"," "], + ["identifier","pepita"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text","\t"], + ["keyword","var"], + ["text"," "], + ["identifier","energia"], + ["text"," "], + ["keyword.operator","="], + ["text"," "], + ["constant.numeric","100"] +],[ + "start", + ["text","\t"], + ["keyword","method"], + ["text"," "], + ["identifier","volar"], + ["lparen","("], + ["identifier","m"], + ["rparen",")"], + ["text"," "], + ["lparen","{"] +],[ + "start", + ["text","\t\t"], + ["identifier","energia"], + ["text"," "], + ["keyword.operator","-="], + ["text"," "], + ["identifier","m"] +],[ + "start", + ["text","\t"], + ["rparen","}"] +],[ + "start", + ["rparen","}"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_xml.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_xml.json new file mode 100644 index 00000000..728be4db --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_xml.json @@ -0,0 +1,43 @@ +[[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","Juhu"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["text.xml","//Juhu Kinners"], + ["meta.tag.punctuation.end-tag-open.xml","</"], + ["meta.tag.tag-name.xml","Kinners"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml","test: two tags in the same lines should be in separate tokens\""] +],[ + "start", + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","Juhu"], + ["meta.tag.punctuation.tag-close.xml",">"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","Kinners"], + ["meta.tag.punctuation.tag-close.xml",">"] +],[ + "start", + ["text.xml","test: multiline attributes\""] +],[ + ["string.attribute-value.xml0","meta.tag.punctuation.tag-open.xml"], + ["meta.tag.punctuation.tag-open.xml","<"], + ["meta.tag.tag-name.xml","copy"], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","set"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"{"] +],[ + ["string.attribute-value.xml0","meta.tag.punctuation.tag-open.xml"], + ["string.attribute-value.xml","}\""], + ["text.tag-whitespace.xml"," "], + ["entity.other.attribute-name.xml","undo"], + ["keyword.operator.attribute-equals.xml","="], + ["string.attribute-value.xml","\"{"] +],[ + "start", + ["string.attribute-value.xml","}\""], + ["meta.tag.punctuation.tag-close.xml","/>"] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_xquery.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_xquery.json new file mode 100644 index 00000000..aaf9ab9b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_xquery.json @@ -0,0 +1,44 @@ +[[ + "[\"start\"]", + ["keyword","xquery"], + ["text"," "], + ["keyword","version"], + ["text"," "], + ["string","\""], + ["string","1.0"], + ["string","\""], + ["text",";"] +],[ + "[\"start\"]" +],[ + "[\"start\"]", + ["keyword","let"], + ["text"," "], + ["variable","$message"], + ["text"," "], + ["keyword.operator",":="], + ["text"," "], + ["string","\""], + ["string","Hello World!"], + ["string","\""] +],[ + "[\"start\",\"StartTag\",\"TagContent\"]", + ["keyword","return"], + ["text"," "], + ["meta.tag","<results"], + ["meta.tag",">"] +],[ + "[\"start\",\"StartTag\",\"TagContent\"]", + ["text"," "], + ["meta.tag","<message"], + ["meta.tag",">"], + ["text","{"], + ["variable","$message"], + ["text","}"], + ["meta.tag","</message>"] +],[ + "[\"start\"]", + ["meta.tag","</results>"] +],[ + "[\"start\"]" +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/_test/tokens_yaml.json b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_yaml.json new file mode 100644 index 00000000..0d2acadc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/_test/tokens_yaml.json @@ -0,0 +1,167 @@ +[[ + "start", + ["comment","# This sample document was taken from wikipedia:"] +],[ + "start", + ["comment","# http://en.wikipedia.org/wiki/YAML#Sample_document"] +],[ + "start", + ["list.markup","---"] +],[ + "start", + ["meta.tag","receipt"], + ["keyword",":"], + ["text"," Oz-Ware Purchase Invoice"] +],[ + "start", + ["meta.tag","date"], + ["keyword",":"], + ["text"," 2007-08-06"] +],[ + "start", + ["meta.tag","customer"], + ["keyword",":"] +],[ + "start", + ["meta.tag"," given"], + ["keyword",":"], + ["text"," Dorothy"] +],[ + "start", + ["meta.tag"," family"], + ["keyword",":"], + ["text"," Gale"] +],[ + "start" +],[ + "start", + ["meta.tag","items"], + ["keyword",":"] +],[ + "start", + ["list.markup"," - "], + ["meta.tag","part_no"], + ["keyword",":"], + ["text"," "], + ["string","'A4786'"] +],[ + "start", + ["meta.tag"," descrip"], + ["keyword",":"], + ["text"," Water Bucket "], + ["paren.lparen","("], + ["text","Filled)"] +],[ + "start", + ["meta.tag"," price"], + ["keyword",":"], + ["text"," "], + ["constant.numeric","1.47"] +],[ + "start", + ["meta.tag"," quantity"], + ["keyword",":"], + ["text"," "], + ["constant.numeric","4"] +],[ + "start" +],[ + "start", + ["list.markup"," - "], + ["meta.tag","part_no"], + ["keyword",":"], + ["text"," "], + ["string","'E1628'"] +],[ + "start", + ["meta.tag"," descrip"], + ["keyword",":"], + ["text"," High Heeled "], + ["string","\"Ruby\""], + ["text"," Slippers"] +],[ + "start", + ["meta.tag"," size"], + ["keyword",":"], + ["text"," "], + ["constant.numeric","8"] +],[ + "start", + ["meta.tag"," price"], + ["keyword",":"], + ["text"," "], + ["constant.numeric","100.27"] +],[ + "start", + ["meta.tag"," quantity"], + ["keyword",":"], + ["text"," "], + ["constant.numeric","1"] +],[ + "start" +],[ + "start", + ["meta.tag","bill-to"], + ["keyword",":"], + ["text"," "], + ["constant.language","&id001"] +],[ + ["mlString",4], + ["meta.tag"," street"], + ["keyword",":"], + ["text"," "], + ["string","|"] +],[ + ["mlString",4], + ["indent"," "], + ["string","123 Tornado Alley"] +],[ + ["mlString",4], + ["indent"," "], + ["string","Suite 16"] +],[ + "start", + ["indent"," "], + ["meta.tag","city"], + ["keyword",":"], + ["text"," East Centerville"] +],[ + "start", + ["meta.tag"," state"], + ["keyword",":"], + ["text"," KS"] +],[ + "start" +],[ + "start", + ["meta.tag","ship-to"], + ["keyword",":"], + ["text"," "], + ["constant.language","*id001"] +],[ + "start" +],[ + ["mlString",0], + ["meta.tag","specialDelivery"], + ["keyword",":"], + ["text"," "], + ["string",">"] +],[ + ["mlString",0], + ["indent"," "], + ["string","Follow the Yellow Brick"] +],[ + ["mlString",0], + ["indent"," "], + ["string","Road to the Emerald City."] +],[ + ["mlString",0], + ["indent"," "], + ["string","Pay no attention to the"] +],[ + ["mlString",0], + ["indent"," "], + ["string","man behind the curtain."] +],[ + ["mlString",0] +]] \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/abap.js b/plugins/node_modules/ace/lib/ace/mode/abap.js new file mode 100644 index 00000000..33d85e8f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/abap.js @@ -0,0 +1,61 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Rules = require("./abap_highlight_rules").AbapHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; +var Range = require("../range").Range; +var TextMode = require("./text").Mode; +var oop = require("../lib/oop"); + +function Mode() { + this.HighlightRules = Rules; + this.foldingRules = new FoldMode(); +} + +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = '"'; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + return indent; + }; + + this.$id = "ace/mode/abap"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/abap_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/abap_highlight_rules.js new file mode 100644 index 00000000..a3d1ca8a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/abap_highlight_rules.js @@ -0,0 +1,134 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * based on + * " Vim ABAP syntax file + * " Language: SAP - ABAP/R4 + * " Revision: 2.1 + * " Maintainer: Marius Piedallu van Wyk <lailoken@gmail.com> + * " Last Change: 2012 Oct 23 + */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var AbapHighlightRules = function() { + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": + "ADD ALIAS ALIASES ASCENDING ASSERT ASSIGN ASSIGNING AT BACK" + + " CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY" + + " DATA DEFINE DEFINITION DEFERRED DELETE DESCENDING DESCRIBE DETAIL DIVIDE DO" + + " ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT" + + " FETCH FIELDS FORM FORMAT FREE FROM FUNCTION" + + " GENERATE GET" + + " HIDE" + + " IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION" + + " LEAVE LIKE LINE LOAD LOCAL LOOP" + + " MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY" + + " ON OVERLAY OPTIONAL OTHERS" + + " PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT" + + " RAISE RANGES READ RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURN RETURNING ROLLBACK" + + " SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS" + + " TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES" + + " UNASSIGN ULINE UNPACK UPDATE" + + " WHEN WHILE WINDOW WRITE" + + " OCCURS STRUCTURE OBJECT PROPERTY" + + " CASTING APPEND RAISING VALUE COLOR" + + " CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT" + + " ID NUMBER FOR TITLE OUTPUT" + + " WITH EXIT USING" + + " INTO WHERE GROUP BY HAVING ORDER BY SINGLE" + + " APPENDING CORRESPONDING FIELDS OF TABLE" + + " LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING" + + " EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN", + "constant.language": + "TRUE FALSE NULL SPACE", + "support.type": + "c n i p f d t x string xstring decfloat16 decfloat34", + "keyword.operator": + "abs sign ceil floor trunc frac acos asin atan cos sin tan" + + " abapOperator cosh sinh tanh exp log log10 sqrt" + + " strlen xstrlen charlen numofchar dbmaxlen lines" + }, "text", true, " "); + + var compoundKeywords = "WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|"+ + "EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|"+ + "END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|"+ + "RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|"+ + "WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|"+ + "(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)"+ + "(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|"+ + "LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|"+ + "CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|"+ + "FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|"+ + "NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|"+ + "START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|"+ + "TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|"+ + "IS\\W+(?:NOT\\W+)?(?:ASSIGNED|BOUND|INITIAL|SUPPLIED)"; + + this.$rules = { + "start" : [ + {token : "string", regex : "`", next : "string"}, + {token : "string", regex : "'", next : "qstring"}, + {token : "doc.comment", regex : /^\*.+/}, + {token : "comment", regex : /".+$/}, + {token : "invalid", regex: "\\.{2,}"}, + {token : "keyword.operator", regex: /\W[\-+%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/}, + {token : "paren.lparen", regex : "[\\[({]"}, + {token : "paren.rparen", regex : "[\\])}]"}, + {token : "constant.numeric", regex: "[+-]?\\d+\\b"}, + {token : "variable.parameter", regex : /sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/}, + {token : "keyword", regex : compoundKeywords}, + {token : "variable.parameter", regex : /\w+-\w+(?:-\w+)*/}, + {token : keywordMapper, regex : "\\b\\w+\\b"}, + {caseInsensitive: true} + ], + "qstring" : [ + {token : "constant.language.escape", regex : "''"}, + {token : "string", regex : "'", next : "start"}, + {defaultToken : "string"} + ], + "string" : [ + {token : "constant.language.escape", regex : "``"}, + {token : "string", regex : "`", next : "start"}, + {defaultToken : "string"} + ] + }; +}; +oop.inherits(AbapHighlightRules, TextHighlightRules); + +exports.AbapHighlightRules = AbapHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/abc.js b/plugins/node_modules/ace/lib/ace/mode/abc.js new file mode 100644 index 00000000..344c9506 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/abc.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js + */ + +define(function (require, exports, module) { + "use strict"; + + var oop = require("../lib/oop"); + var TextMode = require("./text").Mode; + var ABCHighlightRules = require("./abc_highlight_rules").ABCHighlightRules; + var FoldMode = require("./folding/cstyle").FoldMode; + + var Mode = function () { + this.HighlightRules = ABCHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; + }; + oop.inherits(Mode, TextMode); + + (function () { + // this.lineCommentStart = ""%.*""; + // this.blockComment = {start: ""/*"", end: ""*/""}; + // Extra logic goes here. + this.$id = "ace/mode/abc"; + }).call(Mode.prototype); + + exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/abc_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/abc_highlight_rules.js new file mode 100644 index 00000000..6ffe9c9b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/abc_highlight_rules.js @@ -0,0 +1,114 @@ +/* This file was partially autogenerated from https://github.com/jimhawkridge/SublimeABC + + Modifications + + - more classes to express the abc semantic + - added syntax highlighting for Zupfnoter conventions (https://github.com/bwl21/zupfnoter) + - separate note pitch and note duration - even if it looks the same + + ***********************************************************************************************/ + + +define(function (require, exports, module) { + "use strict"; + + var oop = require("../lib/oop"); + var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + + var ABCHighlightRules = function () { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [ + { + token: ['zupfnoter.information.comment.line.percentage', 'information.keyword', 'in formation.keyword.embedded'], + regex: '(%%%%)(hn\\.[a-z]*)(.*)', + comment: 'Instruction Comment' + }, + { + token: ['information.comment.line.percentage', 'information.keyword.embedded'], + regex: '(%%)(.*)', + comment: 'Instruction Comment' + }, + + { + token: 'comment.line.percentage', + regex: '%.*', + comment: 'Comments' + }, + + { + token: 'barline.keyword.operator', + regex: '[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+', + comment: 'Bar lines' + }, + { + token: ['information.keyword.embedded', 'information.argument.string.unquoted'], + regex: '(\\[[A-Za-z]:)([^\\]]*\\])', + comment: 'embedded Header lines' + }, + { + token: ['information.keyword', 'information.argument.string.unquoted'], + regex: '^([A-Za-z]:)([^%\\\\]*)', + comment: 'Header lines' + }, + { + token: ['text', 'entity.name.function', 'string.unquoted', 'text'], + regex: '(\\[)([A-Z]:)(.*?)(\\])', + comment: 'Inline fields' + }, + { + token: ['accent.constant.language', 'pitch.constant.numeric', 'duration.constant.numeric'], + regex: '([\\^=_]*)([A-Ga-gz][,\']*)([0-9]*/*[><0-9]*)', + comment: 'Notes' + }, + { + token: 'zupfnoter.jumptarget.string.quoted', + regex: '[\\"!]\\^\\:.*?[\\"!]', + comment: 'Zupfnoter jumptarget' + }, { + token: 'zupfnoter.goto.string.quoted', + regex: '[\\"!]\\^\\@.*?[\\"!]', + comment: 'Zupfnoter goto' + }, + { + token: 'zupfnoter.annotation.string.quoted', + regex: '[\\"!]\\^\\!.*?[\\"!]', + comment: 'Zupfnoter annoation' + }, + { + token: 'zupfnoter.annotationref.string.quoted', + regex: '[\\"!]\\^\\#.*?[\\"!]', + comment: 'Zupfnoter annotation reference' + }, + { + token: 'chordname.string.quoted', + regex: '[\\"!]\\^.*?[\\"!]', + comment: 'abc chord' + }, + { + token: 'string.quoted', + regex: '[\\"!].*?[\\"!]', + comment: 'abc annotation' + } + + ] + }; + + // this.embedRules(JsonHighlightRules, "json-") + + this.normalizeRules(); + }; + + ABCHighlightRules.metaData = { + fileTypes: ['abc'], + name: 'ABC', + scopeName: 'text.abcnotation' + }; + + + oop.inherits(ABCHighlightRules, TextHighlightRules); + + exports.ABCHighlightRules = ABCHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/actionscript.js b/plugins/node_modules/ace/lib/ace/mode/actionscript.js new file mode 100644 index 00000000..70eaaba6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/actionscript.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ActionScriptHighlightRules = require("./actionscript_highlight_rules").ActionScriptHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = ActionScriptHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/actionscript"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/actionscript_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/actionscript_highlight_rules.js new file mode 100644 index 00000000..b626af2a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/actionscript_highlight_rules.js @@ -0,0 +1,141 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from tm bundles\actionscript.tmbundle\Syntaxes\ActionScript.plist (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ActionScriptHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: 'support.class.actionscript.2', + regex: '\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b' }, + { token: 'support.function.actionscript.2', + regex: '\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b' }, + { token: 'support.constant.actionscript.2', + regex: '\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b' }, + { token: 'keyword.control.actionscript.2', + regex: '\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b' }, + { token: 'storage.type.actionscript.2', + regex: '\\b(?:Boolean|Number|String|Void)\\b' }, + { token: 'constant.language.actionscript.2', + regex: '\\b(?:null|undefined|true|false)\\b' }, + { token: 'constant.numeric.actionscript.2', + regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, + { token: 'punctuation.definition.string.begin.actionscript.2', + regex: '"', + push: + [ { token: 'punctuation.definition.string.end.actionscript.2', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.actionscript.2', + regex: '\\\\.' }, + { defaultToken: 'string.quoted.double.actionscript.2' } ] }, + { token: 'punctuation.definition.string.begin.actionscript.2', + regex: '\'', + push: + [ { token: 'punctuation.definition.string.end.actionscript.2', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.actionscript.2', + regex: '\\\\.' }, + { defaultToken: 'string.quoted.single.actionscript.2' } ] }, + { token: 'support.constant.actionscript.2', + regex: '\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b' }, + { token: 'punctuation.definition.comment.actionscript.2', + regex: '/\\*', + push: + [ { token: 'punctuation.definition.comment.actionscript.2', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.actionscript.2' } ] }, + { token: 'punctuation.definition.comment.actionscript.2', + regex: '//.*$', + push_: + [ { token: 'comment.line.double-slash.actionscript.2', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-slash.actionscript.2' } ] }, + { token: 'keyword.operator.actionscript.2', + regex: '\\binstanceof\\b' }, + { token: 'keyword.operator.symbolic.actionscript.2', + regex: '[-!%&*+=/?:]' }, + { token: + [ 'meta.preprocessor.actionscript.2', + 'punctuation.definition.preprocessor.actionscript.2', + 'meta.preprocessor.actionscript.2' ], + regex: '^([ \\t]*)(#)([a-zA-Z]+)' }, + { token: + [ 'storage.type.function.actionscript.2', + 'meta.function.actionscript.2', + 'entity.name.function.actionscript.2', + 'meta.function.actionscript.2', + 'punctuation.definition.parameters.begin.actionscript.2' ], + regex: '\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()', + push: + [ { token: 'punctuation.definition.parameters.end.actionscript.2', + regex: '\\)', + next: 'pop' }, + { token: 'variable.parameter.function.actionscript.2', + regex: '[^,)$]+' }, + { defaultToken: 'meta.function.actionscript.2' } ] }, + { token: + [ 'storage.type.class.actionscript.2', + 'meta.class.actionscript.2', + 'entity.name.type.class.actionscript.2', + 'meta.class.actionscript.2', + 'storage.modifier.extends.actionscript.2', + 'meta.class.actionscript.2', + 'entity.other.inherited-class.actionscript.2' ], + regex: '\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?' } ] }; + + this.normalizeRules(); +}; + +ActionScriptHighlightRules.metaData = { fileTypes: [ 'as' ], + keyEquivalent: '^~A', + name: 'ActionScript', + scopeName: 'source.actionscript.2' }; + + +oop.inherits(ActionScriptHighlightRules, TextHighlightRules); + +exports.ActionScriptHighlightRules = ActionScriptHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/ada.js b/plugins/node_modules/ace/lib/ace/mode/ada.js new file mode 100644 index 00000000..fabf04dc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ada.js @@ -0,0 +1,54 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var AdaHighlightRules = require("./ada_highlight_rules").AdaHighlightRules; + +var Mode = function() { + this.HighlightRules = AdaHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "--"; + + this.$id = "ace/mode/ada"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/ada_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/ada_highlight_rules.js new file mode 100644 index 00000000..b345966c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ada_highlight_rules.js @@ -0,0 +1,93 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var AdaHighlightRules = function() { +var keywords = "abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|" + +"access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|" + +"array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|" + +"body|private|then|if|procedure|type|case|in|protected|constant|interface|until|" + +"|is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor"; + + var builtinConstants = ( + "true|false|null" + ); + + var builtinFunctions = ( + "count|min|max|avg|sum|rank|now|coalesce|main" + ); + + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants + }, "identifier", true); + + this.$rules = { + "start" : [ { + token : "comment", + regex : "--.*$" + }, { + token : "string", // " string + regex : '".*?"' + }, { + token : "string", // ' string + regex : "'.*?'" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token : "paren.lparen", + regex : "[\\(]" + }, { + token : "paren.rparen", + regex : "[\\)]" + }, { + token : "text", + regex : "\\s+" + } ] + }; +}; + +oop.inherits(AdaHighlightRules, TextHighlightRules); + +exports.AdaHighlightRules = AdaHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/apache_conf.js b/plugins/node_modules/ace/lib/ace/mode/apache_conf.js new file mode 100644 index 00000000..dec48d15 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/apache_conf.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ApacheConfHighlightRules = require("./apache_conf_highlight_rules").ApacheConfHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = ApacheConfHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "#"; + this.$id = "ace/mode/apache_conf"; + // Extra logic goes here. +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/apache_conf_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/apache_conf_highlight_rules.js new file mode 100644 index 00000000..8258b1d5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/apache_conf_highlight_rules.js @@ -0,0 +1,231 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from https://raw.github.com/colinta/ApacheConf.tmLanguage/master/ApacheConf.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ApacheConfHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: + [ 'punctuation.definition.comment.apacheconf', + 'comment.line.hash.ini', + 'comment.line.hash.ini' ], + regex: '^((?:\\s)*)(#)(.*$)' }, + { token: + [ 'punctuation.definition.tag.apacheconf', + 'entity.tag.apacheconf', + 'text', + 'string.value.apacheconf', + 'punctuation.definition.tag.apacheconf' ], + regex: '(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)' }, + { token: + [ 'punctuation.definition.tag.apacheconf', + 'entity.tag.apacheconf', + 'punctuation.definition.tag.apacheconf' ], + regex: '(</)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(>)' }, + { token: + [ 'keyword.alias.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.replacement.apacheconf', 'text' ], + regex: '(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)' }, + { token: + [ 'keyword.alias.apacheconf', 'text', + 'entity.status.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.path.apacheconf', 'text' ], + regex: '(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: + [ 'keyword.alias.apacheconf', 'text', + 'entity.status.apacheconf', 'text', + 'string.path.apacheconf', 'text', + 'string.path.apacheconf', 'text' ], + regex: '(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: + [ 'keyword.alias.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.path.apacheconf', 'text' ], + regex: '(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?' }, + { token: + [ 'keyword.alias.apacheconf', 'text', + 'string.path.apacheconf', 'text', + 'string.path.apacheconf', 'text' ], + regex: '(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: 'keyword.core.apacheconf', + regex: '\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b' }, + { token: 'keyword.mpm.apacheconf', + regex: '\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b' }, + { token: 'keyword.access.apacheconf', + regex: '\\b(?:Allow|Deny|Order)\\b' }, + { token: 'keyword.actions.apacheconf', + regex: '\\b(?:Action|Script)\\b' }, + { token: 'keyword.alias.apacheconf', + regex: '\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b' }, + { token: 'keyword.auth.apacheconf', + regex: '\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b' }, + { token: 'keyword.auth_anon.apacheconf', + regex: '\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b' }, + { token: 'keyword.auth_dbm.apacheconf', + regex: '\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b' }, + { token: 'keyword.auth_digest.apacheconf', + regex: '\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b' }, + { token: 'keyword.auth_ldap.apacheconf', + regex: '\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b' }, + { token: 'keyword.autoindex.apacheconf', + regex: '\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b' }, + { token: 'keyword.cache.apacheconf', + regex: '\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b' }, + { token: 'keyword.cern_meta.apacheconf', + regex: '\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b' }, + { token: 'keyword.cgi.apacheconf', + regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b' }, + { token: 'keyword.cgid.apacheconf', + regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b' }, + { token: 'keyword.charset_lite.apacheconf', + regex: '\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b' }, + { token: 'keyword.dav.apacheconf', + regex: '\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b' }, + { token: 'keyword.deflate.apacheconf', + regex: '\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b' }, + { token: 'keyword.dir.apacheconf', + regex: '\\b(?:DirectoryIndex|DirectorySlash)\\b' }, + { token: 'keyword.disk_cache.apacheconf', + regex: '\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b' }, + { token: 'keyword.dumpio.apacheconf', + regex: '\\b(?:DumpIOInput|DumpIOOutput)\\b' }, + { token: 'keyword.env.apacheconf', + regex: '\\b(?:PassEnv|SetEnv|UnsetEnv)\\b' }, + { token: 'keyword.expires.apacheconf', + regex: '\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b' }, + { token: 'keyword.ext_filter.apacheconf', + regex: '\\b(?:ExtFilterDefine|ExtFilterOptions)\\b' }, + { token: 'keyword.file_cache.apacheconf', + regex: '\\b(?:CacheFile|MMapFile)\\b' }, + { token: 'keyword.headers.apacheconf', + regex: '\\b(?:Header|RequestHeader)\\b' }, + { token: 'keyword.imap.apacheconf', + regex: '\\b(?:ImapBase|ImapDefault|ImapMenu)\\b' }, + { token: 'keyword.include.apacheconf', + regex: '\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b' }, + { token: 'keyword.isapi.apacheconf', + regex: '\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b' }, + { token: 'keyword.ldap.apacheconf', + regex: '\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b' }, + { token: 'keyword.log.apacheconf', + regex: '\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b' }, + { token: 'keyword.mem_cache.apacheconf', + regex: '\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b' }, + { token: 'keyword.mime.apacheconf', + regex: '\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b' }, + { token: 'keyword.misc.apacheconf', + regex: '\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b' }, + { token: 'keyword.negotiation.apacheconf', + regex: '\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b' }, + { token: 'keyword.nw_ssl.apacheconf', + regex: '\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b' }, + { token: 'keyword.proxy.apacheconf', + regex: '\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b' }, + { token: 'keyword.rewrite.apacheconf', + regex: '\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b' }, + { token: 'keyword.setenvif.apacheconf', + regex: '\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b' }, + { token: 'keyword.so.apacheconf', + regex: '\\b(?:LoadFile|LoadModule)\\b' }, + { token: 'keyword.ssl.apacheconf', + regex: '\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b' }, + { token: 'keyword.usertrack.apacheconf', + regex: '\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b' }, + { token: 'keyword.vhost_alias.apacheconf', + regex: '\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b' }, + { token: + [ 'keyword.php.apacheconf', + 'text', + 'entity.property.apacheconf', + 'text', + 'string.value.apacheconf', + 'text' ], + regex: '\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)' }, + { token: + [ 'punctuation.variable.apacheconf', + 'variable.env.apacheconf', + 'variable.misc.apacheconf', + 'punctuation.variable.apacheconf' ], + regex: '(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})' }, + { token: [ 'entity.mime-type.apacheconf', 'text' ], + regex: '\\b((?:text|image|application|video|audio)/.+?)(\\s)' }, + { token: 'entity.helper.apacheconf', + regex: '\\b(?:from|unset|set|on|off)\\b', + caseInsensitive: true }, + { token: 'constant.integer.apacheconf', regex: '\\b\\d+\\b' }, + { token: + [ 'text', + 'punctuation.definition.flag.apacheconf', + 'string.flag.apacheconf', + 'punctuation.definition.flag.apacheconf', + 'text' ], + regex: '(\\s)(\\[)(.*?)(\\])(\\s)' } ] }; + + this.normalizeRules(); +}; + +ApacheConfHighlightRules.metaData = { fileTypes: + [ 'conf', + 'CONF', + 'htaccess', + 'HTACCESS', + 'htgroups', + 'HTGROUPS', + 'htpasswd', + 'HTPASSWD', + '.htaccess', + '.HTACCESS', + '.htgroups', + '.HTGROUPS', + '.htpasswd', + '.HTPASSWD' ], + name: 'Apache Conf', + scopeName: 'source.apacheconf' }; + + +oop.inherits(ApacheConfHighlightRules, TextHighlightRules); + +exports.ApacheConfHighlightRules = ApacheConfHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/applescript.js b/plugins/node_modules/ace/lib/ace/mode/applescript.js new file mode 100644 index 00000000..90a79fba --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/applescript.js @@ -0,0 +1,54 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var AppleScriptHighlightRules = require("./applescript_highlight_rules").AppleScriptHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = AppleScriptHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = {start: "(*", end: "*)"}; + this.$id = "ace/mode/applescript"; + // Extra logic goes here. +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/applescript_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/applescript_highlight_rules.js new file mode 100644 index 00000000..6bcad0f2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/applescript_highlight_rules.js @@ -0,0 +1,139 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var AppleScriptHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + var keywords = ( + "about|above|after|against|and|around|as|at|back|before|beginning|" + + "behind|below|beneath|beside|between|but|by|considering|" + + "contain|contains|continue|copy|div|does|eighth|else|end|equal|" + + "equals|error|every|exit|fifth|first|for|fourth|from|front|" + + "get|given|global|if|ignoring|in|into|is|it|its|last|local|me|" + + "middle|mod|my|ninth|not|of|on|onto|or|over|prop|property|put|ref|" + + "reference|repeat|returning|script|second|set|seventh|since|" + + "sixth|some|tell|tenth|that|the|then|third|through|thru|" + + "timeout|times|to|transaction|try|until|where|while|whose|with|without" + ); + + var builtinConstants = ( + "AppleScript|false|linefeed|return|pi|quote|result|space|tab|true" + ); + + var builtinFunctions = ( + "activate|beep|count|delay|launch|log|offset|read|round|run|say|" + + "summarize|write" + ); + + var builtinTypes = ( + "alias|application|boolean|class|constant|date|file|integer|list|" + + "number|real|record|string|text|character|characters|contents|day|" + + "frontmost|id|item|length|month|name|paragraph|paragraphs|rest|" + + "reverse|running|time|version|weekday|word|words|year" + ); + + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "constant.language": builtinConstants, + "support.type": builtinTypes, + "keyword": keywords + }, "identifier"); + + this.$rules = { + "start": [ + { + token: "comment", + regex: "--.*$" + }, + { + token : "comment", // multi line comment + regex : "\\(\\*", + next : "comment" + }, + { + token: "string", // " string + regex: '".*?"' + }, + { + token: "support.type", + regex: '\\b(POSIX file|POSIX path|(date|time) string|quoted form)\\b' + }, + { + token: "support.function", + regex: '\\b(clipboard info|the clipboard|info for|list (disks|folder)|' + + 'mount volume|path to|(close|open for) access|(get|set) eof|' + + 'current date|do shell script|get volume settings|random number|' + + 'set volume|system attribute|system info|time to GMT|' + + '(load|run|store) script|scripting components|' + + 'ASCII (character|number)|localized string|' + + 'choose (application|color|file|file name|' + + 'folder|from list|remote application|URL)|' + + 'display (alert|dialog))\\b|^\\s*return\\b' + }, + { + token: "constant.language", + regex: '\\b(text item delimiters|current application|missing value)\\b' + }, + { + token: "keyword", + regex: '\\b(apart from|aside from|instead of|out of|greater than|' + + "isn't|(doesn't|does not) (equal|come before|come after|contain)|" + + '(greater|less) than( or equal)?|(starts?|ends|begins?) with|' + + 'contained by|comes (before|after)|a (ref|reference))\\b' + }, + { + token: keywordMapper, + regex: "[a-zA-Z][a-zA-Z0-9_]*\\b" + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\)", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + + this.normalizeRules(); +}; + +oop.inherits(AppleScriptHighlightRules, TextHighlightRules); + +exports.AppleScriptHighlightRules = AppleScriptHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/asciidoc.js b/plugins/node_modules/ace/lib/ace/mode/asciidoc.js new file mode 100644 index 00000000..894d9763 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/asciidoc.js @@ -0,0 +1,64 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var AsciidocHighlightRules = require("./asciidoc_highlight_rules").AsciidocHighlightRules; +var AsciidocFoldMode = require("./folding/asciidoc").FoldMode; + +var Mode = function() { + this.HighlightRules = AsciidocHighlightRules; + + this.foldingRules = new AsciidocFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.type = "text"; + this.getNextLineIndent = function(state, line, tab) { + if (state == "listblock") { + var match = /^((?:.+)?)([-+*][ ]+)/.exec(line); + if (match) { + return new Array(match[1].length + 1).join(" ") + match[2]; + } else { + return ""; + } + } else { + return this.$getIndent(line); + } + }; + this.$id = "ace/mode/asciidoc"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/asciidoc_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/asciidoc_highlight_rules.js new file mode 100644 index 00000000..4e5fdcb0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/asciidoc_highlight_rules.js @@ -0,0 +1,234 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var AsciidocHighlightRules = function() { + var identifierRe = "[a-zA-Z\u00a1-\uffff]+\\b"; + + this.$rules = { + "start": [ + {token: "empty", regex: /$/}, + {token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, + {token: "literal", regex: /^-{4,}\s*$/, next: "literalBlock"}, + {token: "string", regex: /^\+{4,}\s*$/, next: "passthroughBlock"}, + {token: "keyword", regex: /^={4,}\s*$/}, + {token: "text", regex: /^\s*$/}, + // immediately return to the start mode without matching anything + {token: "empty", regex: "", next: "dissallowDelimitedBlock"} + ], + + "dissallowDelimitedBlock": [ + {include: "paragraphEnd"}, + {token: "comment", regex: '^//.+$'}, + {token: "keyword", regex: "^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"}, + + {include: "listStart"}, + {token: "literal", regex: /^\s+.+$/, next: "indentedBlock"}, + {token: "empty", regex: "", next: "text"} + ], + + "paragraphEnd": [ + {token: "doc.comment", regex: /^\/{4,}\s*$/, next: "commentBlock"}, + {token: "tableBlock", regex: /^\s*[|!]=+\s*$/, next: "tableBlock"}, + // open block, ruller + {token: "keyword", regex: /^(?:--|''')\s*$/, next: "start"}, + {token: "option", regex: /^\[.*\]\s*$/, next: "start"}, + {token: "pageBreak", regex: /^>{3,}$/, next: "start"}, + {token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, + {token: "titleUnderline", regex: /^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/, next: "start"}, + {token: "singleLineTitle", regex: /^={1,5}\s+\S.*$/, next: "start"}, + + {token: "otherBlock", regex: /^(?:\*{2,}|_{2,})\s*$/, next: "start"}, + // .optional title + {token: "optionalTitle", regex: /^\.[^.\s].+$/, next: "start"} + ], + + "listStart": [ + {token: "keyword", regex: /^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/, next: "listText"}, + {token: "meta.tag", regex: /^.+(?::{2,4}|;;)(?: |$)/, next: "listText"}, + {token: "support.function.list.callout", regex: /^(?:<\d+>|\d+>|>) /, next: "text"}, + // continuation + {token: "keyword", regex: /^\+\s*$/, next: "start"} + ], + + "text": [ + {token: ["link", "variable.language"], regex: /((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/}, + {token: "link", regex: /(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/}, + {token: "link", regex: /\b[\w\.\/\-]+@[\w\.\/\-]+\b/}, + {include: "macros"}, + {include: "paragraphEnd"}, + {token: "literal", regex:/\+{3,}/, next:"smallPassthrough"}, + {token: "escape", regex: /\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/}, + {token: "escape", regex: /\\[_*'`+#]|\\{2}[_*'`+#]{2}/}, + {token: "keyword", regex: /\s\+$/}, + // any word + {token: "text", regex: identifierRe}, + {token: ["keyword", "string", "keyword"], + regex: /(<<[\w\d\-$]+,)(.*?)(>>|$)/}, + {token: "keyword", regex: /<<[\w\d\-$]+,?|>>/}, + {token: "constant.character", regex: /\({2,3}.*?\){2,3}/}, + // Anchor + {token: "keyword", regex: /\[\[.+?\]\]/}, + // bibliography + {token: "support", regex: /^\[{3}[\w\d =\-]+\]{3}/}, + + {include: "quotes"}, + // text block end + {token: "empty", regex: /^\s*$/, next: "start"} + ], + + "listText": [ + {include: "listStart"}, + {include: "text"} + ], + + "indentedBlock": [ + {token: "literal", regex: /^[\s\w].+$/, next: "indentedBlock"}, + {token: "literal", regex: "", next: "start"} + ], + + "listingBlock": [ + {token: "literal", regex: /^\.{4,}\s*$/, next: "dissallowDelimitedBlock"}, + {token: "constant.numeric", regex: '<\\d+>'}, + {token: "literal", regex: '[^<]+'}, + {token: "literal", regex: '<'} + ], + "literalBlock": [ + {token: "literal", regex: /^-{4,}\s*$/, next: "dissallowDelimitedBlock"}, + {token: "constant.numeric", regex: '<\\d+>'}, + {token: "literal", regex: '[^<]+'}, + {token: "literal", regex: '<'} + ], + "passthroughBlock": [ + {token: "literal", regex: /^\+{4,}\s*$/, next: "dissallowDelimitedBlock"}, + {token: "literal", regex: identifierRe + "|\\d+"}, + {include: "macros"}, + {token: "literal", regex: "."} + ], + + "smallPassthrough": [ + {token: "literal", regex: /[+]{3,}/, next: "dissallowDelimitedBlock"}, + {token: "literal", regex: /^\s*$/, next: "dissallowDelimitedBlock"}, + {token: "literal", regex: identifierRe + "|\\d+"}, + {include: "macros"} + ], + + "commentBlock": [ + {token: "doc.comment", regex: /^\/{4,}\s*$/, next: "dissallowDelimitedBlock"}, + {token: "doc.comment", regex: '^.*$'} + ], + "tableBlock": [ + {token: "tableBlock", regex: /^\s*\|={3,}\s*$/, next: "dissallowDelimitedBlock"}, + {token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "innerTableBlock"}, + {token: "tableBlock", regex: /\|/}, + {include: "text", noEscape: true} + ], + "innerTableBlock": [ + {token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "tableBlock"}, + {token: "tableBlock", regex: /^\s*|={3,}\s*$/, next: "dissallowDelimitedBlock"}, + {token: "tableBlock", regex: /!/} + ], + "macros": [ + {token: "macro", regex: /{[\w\-$]+}/}, + {token: ["text", "string", "text", "constant.character", "text"], regex: /({)([\w\-$]+)(:)?(.+)?(})/}, + {token: ["text", "markup.list.macro", "keyword", "string"], regex: /(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/}, + {token: ["markup.list.macro", "keyword", "string"], regex: /([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/}, + {token: ["markup.list.macro", "keyword"], regex: /([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/}, + {token: "keyword", regex: /^:.+?:(?= |$)/} + ], + + "quotes": [ + {token: "string.italic", regex: /__[^_\s].*?__/}, + {token: "string.italic", regex: quoteRule("_")}, + + {token: "keyword.bold", regex: /\*\*[^*\s].*?\*\*/}, + {token: "keyword.bold", regex: quoteRule("\\*")}, + + {token: "literal", regex: quoteRule("\\+")}, + {token: "literal", regex: /\+\+[^+\s].*?\+\+/}, + {token: "literal", regex: /\$\$.+?\$\$/}, + {token: "literal", regex: quoteRule("`")}, + + {token: "keyword", regex: quoteRule("^")}, + {token: "keyword", regex: quoteRule("~")}, + {token: "keyword", regex: /##?/}, + {token: "keyword", regex: /(?:\B|^)``|\b''/} + ] + + }; + + function quoteRule(ch) { + var prefix = /\w/.test(ch) ? "\\b" : "(?:\\B|^)"; + return prefix + ch + "[^" + ch + "].*?" + ch + "(?![\\w*])"; + } + + //addQuoteBlock("text") + + var tokenMap = { + macro: "constant.character", + tableBlock: "doc.comment", + titleUnderline: "markup.heading", + singleLineTitle: "markup.heading", + pageBreak: "string", + option: "string.regexp", + otherBlock: "markup.list", + literal: "support.function", + optionalTitle: "constant.numeric", + escape: "constant.language.escape", + link: "markup.underline.list" + }; + + for (var state in this.$rules) { + var stateRules = this.$rules[state]; + for (var i = stateRules.length; i--; ) { + var rule = stateRules[i]; + if (rule.include || typeof rule == "string") { + var args = [i, 1].concat(this.$rules[rule.include || rule]); + if (rule.noEscape) { + args = args.filter(function(x) { + return !x.next; + }); + } + stateRules.splice.apply(stateRules, args); + } else if (rule.token in tokenMap) { + rule.token = tokenMap[rule.token]; + } + } + } +}; +oop.inherits(AsciidocHighlightRules, TextHighlightRules); + +exports.AsciidocHighlightRules = AsciidocHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/assembly_x86.js b/plugins/node_modules/ace/lib/ace/mode/assembly_x86.js new file mode 100644 index 00000000..21858f42 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/assembly_x86.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var AssemblyX86HighlightRules = require("./assembly_x86_highlight_rules").AssemblyX86HighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = AssemblyX86HighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = ";"; + this.$id = "ace/mode/assembly_x86"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/assembly_x86_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/assembly_x86_highlight_rules.js new file mode 100644 index 00000000..ab112885 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/assembly_x86_highlight_rules.js @@ -0,0 +1,114 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from Assembly x86.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var AssemblyX86HighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: 'keyword.control.assembly', + regex: '\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\b', + caseInsensitive: true }, + { token: 'variable.parameter.register.assembly', + regex: '\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\b', + caseInsensitive: true }, + { token: 'constant.character.decimal.assembly', + regex: '\\b[0-9]+\\b' }, + { token: 'constant.character.hexadecimal.assembly', + regex: '\\b0x[A-F0-9]+\\b', + caseInsensitive: true }, + { token: 'constant.character.hexadecimal.assembly', + regex: '\\b[A-F0-9]+h\\b', + caseInsensitive: true }, + { token: 'string.assembly', regex: /'([^\\']|\\.)*'/ }, + { token: 'string.assembly', regex: /"([^\\"]|\\.)*"/ }, + { token: 'support.function.directive.assembly', + regex: '^\\[', + push: + [ { token: 'support.function.directive.assembly', + regex: '\\]$', + next: 'pop' }, + { defaultToken: 'support.function.directive.assembly' } ] }, + { token: + [ 'support.function.directive.assembly', + 'support.function.directive.assembly', + 'entity.name.function.assembly' ], + regex: '(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)' }, + { token: 'support.function.directive.assembly', + regex: '^endstruc\\b' }, + { token: + [ 'support.function.directive.assembly', + 'entity.name.function.assembly', + 'support.function.directive.assembly', + 'constant.character.assembly' ], + regex: '^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)' }, + { token: 'support.function.directive.assembly', + regex: '^%endmacro' }, + { token: + [ 'text', + 'support.function.directive.assembly', + 'text', + 'entity.name.function.assembly' ], + regex: '(\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\$\\$|\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)', + caseInsensitive: true }, + { token: 'support.function.directive.assembly', + regex: '\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\b', + caseInsensitive: true }, + { token: 'entity.name.function.assembly', regex: '^\\s*%%[\\w.]+?:$' }, + { token: 'entity.name.function.assembly', regex: '^\\s*%\\$[\\w.]+?:$' }, + { token: 'entity.name.function.assembly', regex: '^[\\w.]+?:' }, + { token: 'entity.name.function.assembly', regex: '^[\\w.]+?\\b' }, + { token: 'comment.assembly', regex: ';.*$' } ] + }; + + this.normalizeRules(); +}; + +AssemblyX86HighlightRules.metaData = { fileTypes: [ 'asm' ], + name: 'Assembly x86', + scopeName: 'source.assembly' }; + + +oop.inherits(AssemblyX86HighlightRules, TextHighlightRules); + +exports.AssemblyX86HighlightRules = AssemblyX86HighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/autohotkey.js b/plugins/node_modules/ace/lib/ace/mode/autohotkey.js new file mode 100644 index 00000000..3ac647c8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/autohotkey.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var AutoHotKeyHighlightRules = require("./autohotkey_highlight_rules").AutoHotKeyHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = AutoHotKeyHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = ";"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/autohotkey"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/autohotkey_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/autohotkey_highlight_rules.js new file mode 100644 index 00000000..a4b66383 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/autohotkey_highlight_rules.js @@ -0,0 +1,107 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from C:\Users\LED\Desktop\AutoHotKey.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var AutoHotKeyHighlightRules = function() { + var autoItKeywords = 'And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|' + + 'Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitRotate|BitShift|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|ControlTreeView|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCallbackFree|DllCallbackGetPtr|DllCallbackRegister|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFSLink|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GUICreate|GUICtrlCreateAvi|GUICtrlCreateButton|GUICtrlCreateCheckbox|GUICtrlCreateCombo|GUICtrlCreateContextMenu|GUICtrlCreateDate|GUICtrlCreateDummy|GUICtrlCreateEdit|GUICtrlCreateGraphic|GUICtrlCreateGroup|GUICtrlCreateIcon|GUICtrlCreateInput|GUICtrlCreateLabel|GUICtrlCreateList|GUICtrlCreateListView|GUICtrlCreateListViewItem|GUICtrlCreateMenu|GUICtrlCreateMenuItem|GUICtrlCreateMonthCal|GUICtrlCreateObj|GUICtrlCreatePic|GUICtrlCreateProgress|GUICtrlCreateRadio|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTabItem|GUICtrlCreateTreeView|GUICtrlCreateTreeViewItem|GUICtrlCreateUpdown|GUICtrlDelete|GUICtrlGetHandle|GUICtrlGetState|GUICtrlRead|GUICtrlRecvMsg|GUICtrlRegisterListViewSort|GUICtrlSendMsg|GUICtrlSendToDummy|GUICtrlSetBkColor|GUICtrlSetColor|GUICtrlSetCursor|GUICtrlSetData|GUICtrlSetFont|GUICtrlSetDefColor|GUICtrlSetDefBkColor|GUICtrlSetGraphic|GUICtrlSetImage|GUICtrlSetLimit|GUICtrlSetOnEvent|GUICtrlSetPos|GUICtrlSetResizing|GUICtrlSetState|GUICtrlSetStyle|GUICtrlSetTip|GUIDelete|GUIGetCursorInfo|GUIGetMsg|GUIGetStyle|GUIRegisterMsg|GUISetAccelerators()|GUISetBkColor|GUISetCoord|GUISetCursor|GUISetFont|GUISetHelp|GUISetIcon|GUISetOnEvent|GUISetState|GUISetStyle|GUIStartGroup|GUISwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsPtr|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Opt|Ping|PixelChecksum|PixelGetColor|PixelSearch|PluginClose|PluginOpen|ProcessClose|ProcessExists|ProcessGetStats|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProgressOn|ProgressSet|Ptr|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAs|RunAsWait|RunWait|Send|SendKeepActive|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdioClose|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPRecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|UDPShutdown|UDPStartup|VarGetType|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive|' + + 'ArrayAdd|ArrayBinarySearch|ArrayConcatenate|ArrayDelete|ArrayDisplay|ArrayFindAll|ArrayInsert|ArrayMax|ArrayMaxIndex|ArrayMin|ArrayMinIndex|ArrayPop|ArrayPush|ArrayReverse|ArraySearch|ArraySort|ArraySwap|ArrayToClip|ArrayToString|ArrayTrim|ChooseColor|ChooseFont|ClipBoard_ChangeChain|ClipBoard_Close|ClipBoard_CountFormats|ClipBoard_Empty|ClipBoard_EnumFormats|ClipBoard_FormatStr|ClipBoard_GetData|ClipBoard_GetDataEx|ClipBoard_GetFormatName|ClipBoard_GetOpenWindow|ClipBoard_GetOwner|ClipBoard_GetPriorityFormat|ClipBoard_GetSequenceNumber|ClipBoard_GetViewer|ClipBoard_IsFormatAvailable|ClipBoard_Open|ClipBoard_RegisterFormat|ClipBoard_SetData|ClipBoard_SetDataEx|ClipBoard_SetViewer|ClipPutFile|ColorConvertHSLtoRGB|ColorConvertRGBtoHSL|ColorGetBlue|ColorGetGreen|ColorGetRed|Date_Time_CompareFileTime|Date_Time_DOSDateTimeToArray|Date_Time_DOSDateTimeToFileTime|Date_Time_DOSDateTimeToStr|Date_Time_DOSDateToArray|Date_Time_DOSDateToStr|Date_Time_DOSTimeToArray|Date_Time_DOSTimeToStr|Date_Time_EncodeFileTime|Date_Time_EncodeSystemTime|Date_Time_FileTimeToArray|Date_Time_FileTimeToDOSDateTime|Date_Time_FileTimeToLocalFileTime|Date_Time_FileTimeToStr|Date_Time_FileTimeToSystemTime|Date_Time_GetFileTime|Date_Time_GetLocalTime|Date_Time_GetSystemTime|Date_Time_GetSystemTimeAdjustment|Date_Time_GetSystemTimeAsFileTime|Date_Time_GetSystemTimes|Date_Time_GetTickCount|Date_Time_GetTimeZoneInformation|Date_Time_LocalFileTimeToFileTime|Date_Time_SetFileTime|Date_Time_SetLocalTime|Date_Time_SetSystemTime|Date_Time_SetSystemTimeAdjustment|Date_Time_SetTimeZoneInformation|Date_Time_SystemTimeToArray|Date_Time_SystemTimeToDateStr|Date_Time_SystemTimeToDateTimeStr|Date_Time_SystemTimeToFileTime|Date_Time_SystemTimeToTimeStr|Date_Time_SystemTimeToTzSpecificLocalTime|Date_Time_TzSpecificLocalTimeToSystemTime|DateAdd|DateDayOfWeek|DateDaysInMonth|DateDiff|DateIsLeapYear|DateIsValid|DateTimeFormat|DateTimeSplit|DateToDayOfWeek|DateToDayOfWeekISO|DateToDayValue|DateToMonth|DayValueToDate|DebugBugReportEnv|DebugOut|DebugSetup|Degree|EventLog__Backup|EventLog__Clear|EventLog__Close|EventLog__Count|EventLog__DeregisterSource|EventLog__Full|EventLog__Notify|EventLog__Oldest|EventLog__Open|EventLog__OpenBackup|EventLog__Read|EventLog__RegisterSource|EventLog__Report|FileCountLines|FileCreate|FileListToArray|FilePrint|FileReadToArray|FileWriteFromArray|FileWriteLog|FileWriteToLine|GDIPlus_ArrowCapCreate|GDIPlus_ArrowCapDispose|GDIPlus_ArrowCapGetFillState|GDIPlus_ArrowCapGetHeight|GDIPlus_ArrowCapGetMiddleInset|GDIPlus_ArrowCapGetWidth|GDIPlus_ArrowCapSetFillState|GDIPlus_ArrowCapSetHeight|GDIPlus_ArrowCapSetMiddleInset|GDIPlus_ArrowCapSetWidth|GDIPlus_BitmapCloneArea|GDIPlus_BitmapCreateFromFile|GDIPlus_BitmapCreateFromGraphics|GDIPlus_BitmapCreateFromHBITMAP|GDIPlus_BitmapCreateHBITMAPFromBitmap|GDIPlus_BitmapDispose|GDIPlus_BitmapLockBits|GDIPlus_BitmapUnlockBits|GDIPlus_BrushClone|GDIPlus_BrushCreateSolid|GDIPlus_BrushDispose|GDIPlus_BrushGetType|GDIPlus_CustomLineCapDispose|GDIPlus_Decoders|GDIPlus_DecodersGetCount|GDIPlus_DecodersGetSize|GDIPlus_Encoders|GDIPlus_EncodersGetCLSID|GDIPlus_EncodersGetCount|GDIPlus_EncodersGetParamList|GDIPlus_EncodersGetParamListSize|GDIPlus_EncodersGetSize|GDIPlus_FontCreate|GDIPlus_FontDispose|GDIPlus_FontFamilyCreate|GDIPlus_FontFamilyDispose|GDIPlus_GraphicsClear|GDIPlus_GraphicsCreateFromHDC|GDIPlus_GraphicsCreateFromHWND|GDIPlus_GraphicsDispose|GDIPlus_GraphicsDrawArc|GDIPlus_GraphicsDrawBezier|GDIPlus_GraphicsDrawClosedCurve|GDIPlus_GraphicsDrawCurve|GDIPlus_GraphicsDrawEllipse|GDIPlus_GraphicsDrawImage|GDIPlus_GraphicsDrawImageRect|GDIPlus_GraphicsDrawImageRectRect|GDIPlus_GraphicsDrawLine|GDIPlus_GraphicsDrawPie|GDIPlus_GraphicsDrawPolygon|GDIPlus_GraphicsDrawRect|GDIPlus_GraphicsDrawString|GDIPlus_GraphicsDrawStringEx|GDIPlus_GraphicsFillClosedCurve|GDIPlus_GraphicsFillEllipse|GDIPlus_GraphicsFillPie|GDIPlus_GraphicsFillRect|GDIPlus_GraphicsGetDC|GDIPlus_GraphicsGetSmoothingMode|GDIPlus_GraphicsMeasureString|GDIPlus_GraphicsReleaseDC|GDIPlus_GraphicsSetSmoothingMode|GDIPlus_GraphicsSetTransform|GDIPlus_ImageDispose|GDIPlus_ImageGetGraphicsContext|GDIPlus_ImageGetHeight|GDIPlus_ImageGetWidth|GDIPlus_ImageLoadFromFile|GDIPlus_ImageSaveToFile|GDIPlus_ImageSaveToFileEx|GDIPlus_MatrixCreate|GDIPlus_MatrixDispose|GDIPlus_MatrixRotate|GDIPlus_ParamAdd|GDIPlus_ParamInit|GDIPlus_PenCreate|GDIPlus_PenDispose|GDIPlus_PenGetAlignment|GDIPlus_PenGetColor|GDIPlus_PenGetCustomEndCap|GDIPlus_PenGetDashCap|GDIPlus_PenGetDashStyle|GDIPlus_PenGetEndCap|GDIPlus_PenGetWidth|GDIPlus_PenSetAlignment|GDIPlus_PenSetColor|GDIPlus_PenSetCustomEndCap|GDIPlus_PenSetDashCap|GDIPlus_PenSetDashStyle|GDIPlus_PenSetEndCap|GDIPlus_PenSetWidth|GDIPlus_RectFCreate|GDIPlus_Shutdown|GDIPlus_Startup|GDIPlus_StringFormatCreate|GDIPlus_StringFormatDispose|GetIP|GUICtrlAVI_Close|GUICtrlAVI_Create|GUICtrlAVI_Destroy|GUICtrlAVI_Open|GUICtrlAVI_OpenEx|GUICtrlAVI_Play|GUICtrlAVI_Seek|GUICtrlAVI_Show|GUICtrlAVI_Stop|GUICtrlButton_Click|GUICtrlButton_Create|GUICtrlButton_Destroy|GUICtrlButton_Enable|GUICtrlButton_GetCheck|GUICtrlButton_GetFocus|GUICtrlButton_GetIdealSize|GUICtrlButton_GetImage|GUICtrlButton_GetImageList|GUICtrlButton_GetState|GUICtrlButton_GetText|GUICtrlButton_GetTextMargin|GUICtrlButton_SetCheck|GUICtrlButton_SetFocus|GUICtrlButton_SetImage|GUICtrlButton_SetImageList|GUICtrlButton_SetSize|GUICtrlButton_SetState|GUICtrlButton_SetStyle|GUICtrlButton_SetText|GUICtrlButton_SetTextMargin|GUICtrlButton_Show|GUICtrlComboBox_AddDir|GUICtrlComboBox_AddString|GUICtrlComboBox_AutoComplete|GUICtrlComboBox_BeginUpdate|GUICtrlComboBox_Create|GUICtrlComboBox_DeleteString|GUICtrlComboBox_Destroy|GUICtrlComboBox_EndUpdate|GUICtrlComboBox_FindString|GUICtrlComboBox_FindStringExact|GUICtrlComboBox_GetComboBoxInfo|GUICtrlComboBox_GetCount|GUICtrlComboBox_GetCurSel|GUICtrlComboBox_GetDroppedControlRect|GUICtrlComboBox_GetDroppedControlRectEx|GUICtrlComboBox_GetDroppedState|GUICtrlComboBox_GetDroppedWidth|GUICtrlComboBox_GetEditSel|GUICtrlComboBox_GetEditText|GUICtrlComboBox_GetExtendedUI|GUICtrlComboBox_GetHorizontalExtent|GUICtrlComboBox_GetItemHeight|GUICtrlComboBox_GetLBText|GUICtrlComboBox_GetLBTextLen|GUICtrlComboBox_GetList|GUICtrlComboBox_GetListArray|GUICtrlComboBox_GetLocale|GUICtrlComboBox_GetLocaleCountry|GUICtrlComboBox_GetLocaleLang|GUICtrlComboBox_GetLocalePrimLang|GUICtrlComboBox_GetLocaleSubLang|GUICtrlComboBox_GetMinVisible|GUICtrlComboBox_GetTopIndex|GUICtrlComboBox_InitStorage|GUICtrlComboBox_InsertString|GUICtrlComboBox_LimitText|GUICtrlComboBox_ReplaceEditSel|GUICtrlComboBox_ResetContent|GUICtrlComboBox_SelectString|GUICtrlComboBox_SetCurSel|GUICtrlComboBox_SetDroppedWidth|GUICtrlComboBox_SetEditSel|GUICtrlComboBox_SetEditText|GUICtrlComboBox_SetExtendedUI|GUICtrlComboBox_SetHorizontalExtent|GUICtrlComboBox_SetItemHeight|GUICtrlComboBox_SetMinVisible|GUICtrlComboBox_SetTopIndex|GUICtrlComboBox_ShowDropDown|GUICtrlComboBoxEx_AddDir|GUICtrlComboBoxEx_AddString|GUICtrlComboBoxEx_BeginUpdate|GUICtrlComboBoxEx_Create|GUICtrlComboBoxEx_CreateSolidBitMap|GUICtrlComboBoxEx_DeleteString|GUICtrlComboBoxEx_Destroy|GUICtrlComboBoxEx_EndUpdate|GUICtrlComboBoxEx_FindStringExact|GUICtrlComboBoxEx_GetComboBoxInfo|GUICtrlComboBoxEx_GetComboControl|GUICtrlComboBoxEx_GetCount|GUICtrlComboBoxEx_GetCurSel|GUICtrlComboBoxEx_GetDroppedControlRect|GUICtrlComboBoxEx_GetDroppedControlRectEx|GUICtrlComboBoxEx_GetDroppedState|GUICtrlComboBoxEx_GetDroppedWidth|GUICtrlComboBoxEx_GetEditControl|GUICtrlComboBoxEx_GetEditSel|GUICtrlComboBoxEx_GetEditText|GUICtrlComboBoxEx_GetExtendedStyle|GUICtrlComboBoxEx_GetExtendedUI|GUICtrlComboBoxEx_GetImageList|GUICtrlComboBoxEx_GetItem|GUICtrlComboBoxEx_GetItemEx|GUICtrlComboBoxEx_GetItemHeight|GUICtrlComboBoxEx_GetItemImage|GUICtrlComboBoxEx_GetItemIndent|GUICtrlComboBoxEx_GetItemOverlayImage|GUICtrlComboBoxEx_GetItemParam|GUICtrlComboBoxEx_GetItemSelectedImage|GUICtrlComboBoxEx_GetItemText|GUICtrlComboBoxEx_GetItemTextLen|GUICtrlComboBoxEx_GetList|GUICtrlComboBoxEx_GetListArray|GUICtrlComboBoxEx_GetLocale|GUICtrlComboBoxEx_GetLocaleCountry|GUICtrlComboBoxEx_GetLocaleLang|GUICtrlComboBoxEx_GetLocalePrimLang|GUICtrlComboBoxEx_GetLocaleSubLang|GUICtrlComboBoxEx_GetMinVisible|GUICtrlComboBoxEx_GetTopIndex|GUICtrlComboBoxEx_InitStorage|GUICtrlComboBoxEx_InsertString|GUICtrlComboBoxEx_LimitText|GUICtrlComboBoxEx_ReplaceEditSel|GUICtrlComboBoxEx_ResetContent|GUICtrlComboBoxEx_SetCurSel|GUICtrlComboBoxEx_SetDroppedWidth|GUICtrlComboBoxEx_SetEditSel|GUICtrlComboBoxEx_SetEditText|GUICtrlComboBoxEx_SetExtendedStyle|GUICtrlComboBoxEx_SetExtendedUI|GUICtrlComboBoxEx_SetImageList|GUICtrlComboBoxEx_SetItem|GUICtrlComboBoxEx_SetItemEx|GUICtrlComboBoxEx_SetItemHeight|GUICtrlComboBoxEx_SetItemImage|GUICtrlComboBoxEx_SetItemIndent|GUICtrlComboBoxEx_SetItemOverlayImage|GUICtrlComboBoxEx_SetItemParam|GUICtrlComboBoxEx_SetItemSelectedImage|GUICtrlComboBoxEx_SetMinVisible|GUICtrlComboBoxEx_SetTopIndex|GUICtrlComboBoxEx_ShowDropDown|GUICtrlDTP_Create|GUICtrlDTP_Destroy|GUICtrlDTP_GetMCColor|GUICtrlDTP_GetMCFont|GUICtrlDTP_GetMonthCal|GUICtrlDTP_GetRange|GUICtrlDTP_GetRangeEx|GUICtrlDTP_GetSystemTime|GUICtrlDTP_GetSystemTimeEx|GUICtrlDTP_SetFormat|GUICtrlDTP_SetMCColor|GUICtrlDTP_SetMCFont|GUICtrlDTP_SetRange|GUICtrlDTP_SetRangeEx|GUICtrlDTP_SetSystemTime|GUICtrlDTP_SetSystemTimeEx|GUICtrlEdit_AppendText|GUICtrlEdit_BeginUpdate|GUICtrlEdit_CanUndo|GUICtrlEdit_CharFromPos|GUICtrlEdit_Create|GUICtrlEdit_Destroy|GUICtrlEdit_EmptyUndoBuffer|GUICtrlEdit_EndUpdate|GUICtrlEdit_Find|GUICtrlEdit_FmtLines|GUICtrlEdit_GetFirstVisibleLine|GUICtrlEdit_GetLimitText|GUICtrlEdit_GetLine|GUICtrlEdit_GetLineCount|GUICtrlEdit_GetMargins|GUICtrlEdit_GetModify|GUICtrlEdit_GetPasswordChar|GUICtrlEdit_GetRECT|GUICtrlEdit_GetRECTEx|GUICtrlEdit_GetSel|GUICtrlEdit_GetText|GUICtrlEdit_GetTextLen|GUICtrlEdit_HideBalloonTip|GUICtrlEdit_InsertText|GUICtrlEdit_LineFromChar|GUICtrlEdit_LineIndex|GUICtrlEdit_LineLength|GUICtrlEdit_LineScroll|GUICtrlEdit_PosFromChar|GUICtrlEdit_ReplaceSel|GUICtrlEdit_Scroll|GUICtrlEdit_SetLimitText|GUICtrlEdit_SetMargins|GUICtrlEdit_SetModify|GUICtrlEdit_SetPasswordChar|GUICtrlEdit_SetReadOnly|GUICtrlEdit_SetRECT|GUICtrlEdit_SetRECTEx|GUICtrlEdit_SetRECTNP|GUICtrlEdit_SetRectNPEx|GUICtrlEdit_SetSel|GUICtrlEdit_SetTabStops|GUICtrlEdit_SetText|GUICtrlEdit_ShowBalloonTip|GUICtrlEdit_Undo|GUICtrlHeader_AddItem|GUICtrlHeader_ClearFilter|GUICtrlHeader_ClearFilterAll|GUICtrlHeader_Create|GUICtrlHeader_CreateDragImage|GUICtrlHeader_DeleteItem|GUICtrlHeader_Destroy|GUICtrlHeader_EditFilter|GUICtrlHeader_GetBitmapMargin|GUICtrlHeader_GetImageList|GUICtrlHeader_GetItem|GUICtrlHeader_GetItemAlign|GUICtrlHeader_GetItemBitmap|GUICtrlHeader_GetItemCount|GUICtrlHeader_GetItemDisplay|GUICtrlHeader_GetItemFlags|GUICtrlHeader_GetItemFormat|GUICtrlHeader_GetItemImage|GUICtrlHeader_GetItemOrder|GUICtrlHeader_GetItemParam|GUICtrlHeader_GetItemRect|GUICtrlHeader_GetItemRectEx|GUICtrlHeader_GetItemText|GUICtrlHeader_GetItemWidth|GUICtrlHeader_GetOrderArray|GUICtrlHeader_GetUnicodeFormat|GUICtrlHeader_HitTest|GUICtrlHeader_InsertItem|GUICtrlHeader_Layout|GUICtrlHeader_OrderToIndex|GUICtrlHeader_SetBitmapMargin|GUICtrlHeader_SetFilterChangeTimeout|GUICtrlHeader_SetHotDivider|GUICtrlHeader_SetImageList|GUICtrlHeader_SetItem|GUICtrlHeader_SetItemAlign|GUICtrlHeader_SetItemBitmap|GUICtrlHeader_SetItemDisplay|GUICtrlHeader_SetItemFlags|GUICtrlHeader_SetItemFormat|GUICtrlHeader_SetItemImage|GUICtrlHeader_SetItemOrder|GUICtrlHeader_SetItemParam|GUICtrlHeader_SetItemText|GUICtrlHeader_SetItemWidth|GUICtrlHeader_SetOrderArray|GUICtrlHeader_SetUnicodeFormat|GUICtrlIpAddress_ClearAddress|GUICtrlIpAddress_Create|GUICtrlIpAddress_Destroy|GUICtrlIpAddress_Get|GUICtrlIpAddress_GetArray|GUICtrlIpAddress_GetEx|GUICtrlIpAddress_IsBlank|GUICtrlIpAddress_Set|GUICtrlIpAddress_SetArray|GUICtrlIpAddress_SetEx|GUICtrlIpAddress_SetFocus|GUICtrlIpAddress_SetFont|GUICtrlIpAddress_SetRange|GUICtrlIpAddress_ShowHide|GUICtrlListBox_AddFile|GUICtrlListBox_AddString|GUICtrlListBox_BeginUpdate|GUICtrlListBox_Create|GUICtrlListBox_DeleteString|GUICtrlListBox_Destroy|GUICtrlListBox_Dir|GUICtrlListBox_EndUpdate|GUICtrlListBox_FindInText|GUICtrlListBox_FindString|GUICtrlListBox_GetAnchorIndex|GUICtrlListBox_GetCaretIndex|GUICtrlListBox_GetCount|GUICtrlListBox_GetCurSel|GUICtrlListBox_GetHorizontalExtent|GUICtrlListBox_GetItemData|GUICtrlListBox_GetItemHeight|GUICtrlListBox_GetItemRect|GUICtrlListBox_GetItemRectEx|GUICtrlListBox_GetListBoxInfo|GUICtrlListBox_GetLocale|GUICtrlListBox_GetLocaleCountry|GUICtrlListBox_GetLocaleLang|GUICtrlListBox_GetLocalePrimLang|GUICtrlListBox_GetLocaleSubLang|GUICtrlListBox_GetSel|GUICtrlListBox_GetSelCount|GUICtrlListBox_GetSelItems|GUICtrlListBox_GetSelItemsText|GUICtrlListBox_GetText|GUICtrlListBox_GetTextLen|GUICtrlListBox_GetTopIndex|GUICtrlListBox_InitStorage|GUICtrlListBox_InsertString|GUICtrlListBox_ItemFromPoint|GUICtrlListBox_ReplaceString|GUICtrlListBox_ResetContent|GUICtrlListBox_SelectString|GUICtrlListBox_SelItemRange|GUICtrlListBox_SelItemRangeEx|GUICtrlListBox_SetAnchorIndex|GUICtrlListBox_SetCaretIndex|GUICtrlListBox_SetColumnWidth|GUICtrlListBox_SetCurSel|GUICtrlListBox_SetHorizontalExtent|GUICtrlListBox_SetItemData|GUICtrlListBox_SetItemHeight|GUICtrlListBox_SetLocale|GUICtrlListBox_SetSel|GUICtrlListBox_SetTabStops|GUICtrlListBox_SetTopIndex|GUICtrlListBox_Sort|GUICtrlListBox_SwapString|GUICtrlListBox_UpdateHScroll|GUICtrlListView_AddArray|GUICtrlListView_AddColumn|GUICtrlListView_AddItem|GUICtrlListView_AddSubItem|GUICtrlListView_ApproximateViewHeight|GUICtrlListView_ApproximateViewRect|GUICtrlListView_ApproximateViewWidth|GUICtrlListView_Arrange|GUICtrlListView_BeginUpdate|GUICtrlListView_CancelEditLabel|GUICtrlListView_ClickItem|GUICtrlListView_CopyItems|GUICtrlListView_Create|GUICtrlListView_CreateDragImage|GUICtrlListView_CreateSolidBitMap|GUICtrlListView_DeleteAllItems|GUICtrlListView_DeleteColumn|GUICtrlListView_DeleteItem|GUICtrlListView_DeleteItemsSelected|GUICtrlListView_Destroy|GUICtrlListView_DrawDragImage|GUICtrlListView_EditLabel|GUICtrlListView_EnableGroupView|GUICtrlListView_EndUpdate|GUICtrlListView_EnsureVisible|GUICtrlListView_FindInText|GUICtrlListView_FindItem|GUICtrlListView_FindNearest|GUICtrlListView_FindParam|GUICtrlListView_FindText|GUICtrlListView_GetBkColor|GUICtrlListView_GetBkImage|GUICtrlListView_GetCallbackMask|GUICtrlListView_GetColumn|GUICtrlListView_GetColumnCount|GUICtrlListView_GetColumnOrder|GUICtrlListView_GetColumnOrderArray|GUICtrlListView_GetColumnWidth|GUICtrlListView_GetCounterPage|GUICtrlListView_GetEditControl|GUICtrlListView_GetExtendedListViewStyle|GUICtrlListView_GetGroupInfo|GUICtrlListView_GetGroupViewEnabled|GUICtrlListView_GetHeader|GUICtrlListView_GetHotCursor|GUICtrlListView_GetHotItem|GUICtrlListView_GetHoverTime|GUICtrlListView_GetImageList|GUICtrlListView_GetISearchString|GUICtrlListView_GetItem|GUICtrlListView_GetItemChecked|GUICtrlListView_GetItemCount|GUICtrlListView_GetItemCut|GUICtrlListView_GetItemDropHilited|GUICtrlListView_GetItemEx|GUICtrlListView_GetItemFocused|GUICtrlListView_GetItemGroupID|GUICtrlListView_GetItemImage|GUICtrlListView_GetItemIndent|GUICtrlListView_GetItemParam|GUICtrlListView_GetItemPosition|GUICtrlListView_GetItemPositionX|GUICtrlListView_GetItemPositionY|GUICtrlListView_GetItemRect|GUICtrlListView_GetItemRectEx|GUICtrlListView_GetItemSelected|GUICtrlListView_GetItemSpacing|GUICtrlListView_GetItemSpacingX|GUICtrlListView_GetItemSpacingY|GUICtrlListView_GetItemState|GUICtrlListView_GetItemStateImage|GUICtrlListView_GetItemText|GUICtrlListView_GetItemTextArray|GUICtrlListView_GetItemTextString|GUICtrlListView_GetNextItem|GUICtrlListView_GetNumberOfWorkAreas|GUICtrlListView_GetOrigin|GUICtrlListView_GetOriginX|GUICtrlListView_GetOriginY|GUICtrlListView_GetOutlineColor|GUICtrlListView_GetSelectedColumn|GUICtrlListView_GetSelectedCount|GUICtrlListView_GetSelectedIndices|GUICtrlListView_GetSelectionMark|GUICtrlListView_GetStringWidth|GUICtrlListView_GetSubItemRect|GUICtrlListView_GetTextBkColor|GUICtrlListView_GetTextColor|GUICtrlListView_GetToolTips|GUICtrlListView_GetTopIndex|GUICtrlListView_GetUnicodeFormat|GUICtrlListView_GetView|GUICtrlListView_GetViewDetails|GUICtrlListView_GetViewLarge|GUICtrlListView_GetViewList|GUICtrlListView_GetViewRect|GUICtrlListView_GetViewSmall|GUICtrlListView_GetViewTile|GUICtrlListView_HideColumn|GUICtrlListView_HitTest|GUICtrlListView_InsertColumn|GUICtrlListView_InsertGroup|GUICtrlListView_InsertItem|GUICtrlListView_JustifyColumn|GUICtrlListView_MapIDToIndex|GUICtrlListView_MapIndexToID|GUICtrlListView_RedrawItems|GUICtrlListView_RegisterSortCallBack|GUICtrlListView_RemoveAllGroups|GUICtrlListView_RemoveGroup|GUICtrlListView_Scroll|GUICtrlListView_SetBkColor|GUICtrlListView_SetBkImage|GUICtrlListView_SetCallBackMask|GUICtrlListView_SetColumn|GUICtrlListView_SetColumnOrder|GUICtrlListView_SetColumnOrderArray|GUICtrlListView_SetColumnWidth|GUICtrlListView_SetExtendedListViewStyle|GUICtrlListView_SetGroupInfo|GUICtrlListView_SetHotItem|GUICtrlListView_SetHoverTime|GUICtrlListView_SetIconSpacing|GUICtrlListView_SetImageList|GUICtrlListView_SetItem|GUICtrlListView_SetItemChecked|GUICtrlListView_SetItemCount|GUICtrlListView_SetItemCut|GUICtrlListView_SetItemDropHilited|GUICtrlListView_SetItemEx|GUICtrlListView_SetItemFocused|GUICtrlListView_SetItemGroupID|GUICtrlListView_SetItemImage|GUICtrlListView_SetItemIndent|GUICtrlListView_SetItemParam|GUICtrlListView_SetItemPosition|GUICtrlListView_SetItemPosition32|GUICtrlListView_SetItemSelected|GUICtrlListView_SetItemState|GUICtrlListView_SetItemStateImage|GUICtrlListView_SetItemText|GUICtrlListView_SetOutlineColor|GUICtrlListView_SetSelectedColumn|GUICtrlListView_SetSelectionMark|GUICtrlListView_SetTextBkColor|GUICtrlListView_SetTextColor|GUICtrlListView_SetToolTips|GUICtrlListView_SetUnicodeFormat|GUICtrlListView_SetView|GUICtrlListView_SetWorkAreas|GUICtrlListView_SimpleSort|GUICtrlListView_SortItems|GUICtrlListView_SubItemHitTest|GUICtrlListView_UnRegisterSortCallBack|GUICtrlMenu_AddMenuItem|GUICtrlMenu_AppendMenu|GUICtrlMenu_CheckMenuItem|GUICtrlMenu_CheckRadioItem|GUICtrlMenu_CreateMenu|GUICtrlMenu_CreatePopup|GUICtrlMenu_DeleteMenu|GUICtrlMenu_DestroyMenu|GUICtrlMenu_DrawMenuBar|GUICtrlMenu_EnableMenuItem|GUICtrlMenu_FindItem|GUICtrlMenu_FindParent|GUICtrlMenu_GetItemBmp|GUICtrlMenu_GetItemBmpChecked|GUICtrlMenu_GetItemBmpUnchecked|GUICtrlMenu_GetItemChecked|GUICtrlMenu_GetItemCount|GUICtrlMenu_GetItemData|GUICtrlMenu_GetItemDefault|GUICtrlMenu_GetItemDisabled|GUICtrlMenu_GetItemEnabled|GUICtrlMenu_GetItemGrayed|GUICtrlMenu_GetItemHighlighted|GUICtrlMenu_GetItemID|GUICtrlMenu_GetItemInfo|GUICtrlMenu_GetItemRect|GUICtrlMenu_GetItemRectEx|GUICtrlMenu_GetItemState|GUICtrlMenu_GetItemStateEx|GUICtrlMenu_GetItemSubMenu|GUICtrlMenu_GetItemText|GUICtrlMenu_GetItemType|GUICtrlMenu_GetMenu|GUICtrlMenu_GetMenuBackground|GUICtrlMenu_GetMenuBarInfo|GUICtrlMenu_GetMenuContextHelpID|GUICtrlMenu_GetMenuData|GUICtrlMenu_GetMenuDefaultItem|GUICtrlMenu_GetMenuHeight|GUICtrlMenu_GetMenuInfo|GUICtrlMenu_GetMenuStyle|GUICtrlMenu_GetSystemMenu|GUICtrlMenu_InsertMenuItem|GUICtrlMenu_InsertMenuItemEx|GUICtrlMenu_IsMenu|GUICtrlMenu_LoadMenu|GUICtrlMenu_MapAccelerator|GUICtrlMenu_MenuItemFromPoint|GUICtrlMenu_RemoveMenu|GUICtrlMenu_SetItemBitmaps|GUICtrlMenu_SetItemBmp|GUICtrlMenu_SetItemBmpChecked|GUICtrlMenu_SetItemBmpUnchecked|GUICtrlMenu_SetItemChecked|GUICtrlMenu_SetItemData|GUICtrlMenu_SetItemDefault|GUICtrlMenu_SetItemDisabled|GUICtrlMenu_SetItemEnabled|GUICtrlMenu_SetItemGrayed|GUICtrlMenu_SetItemHighlighted|GUICtrlMenu_SetItemID|GUICtrlMenu_SetItemInfo|GUICtrlMenu_SetItemState|GUICtrlMenu_SetItemSubMenu|GUICtrlMenu_SetItemText|GUICtrlMenu_SetItemType|GUICtrlMenu_SetMenu|GUICtrlMenu_SetMenuBackground|GUICtrlMenu_SetMenuContextHelpID|GUICtrlMenu_SetMenuData|GUICtrlMenu_SetMenuDefaultItem|GUICtrlMenu_SetMenuHeight|GUICtrlMenu_SetMenuInfo|GUICtrlMenu_SetMenuStyle|GUICtrlMenu_TrackPopupMenu|GUICtrlMonthCal_Create|GUICtrlMonthCal_Destroy|GUICtrlMonthCal_GetColor|GUICtrlMonthCal_GetColorArray|GUICtrlMonthCal_GetCurSel|GUICtrlMonthCal_GetCurSelStr|GUICtrlMonthCal_GetFirstDOW|GUICtrlMonthCal_GetFirstDOWStr|GUICtrlMonthCal_GetMaxSelCount|GUICtrlMonthCal_GetMaxTodayWidth|GUICtrlMonthCal_GetMinReqHeight|GUICtrlMonthCal_GetMinReqRect|GUICtrlMonthCal_GetMinReqRectArray|GUICtrlMonthCal_GetMinReqWidth|GUICtrlMonthCal_GetMonthDelta|GUICtrlMonthCal_GetMonthRange|GUICtrlMonthCal_GetMonthRangeMax|GUICtrlMonthCal_GetMonthRangeMaxStr|GUICtrlMonthCal_GetMonthRangeMin|GUICtrlMonthCal_GetMonthRangeMinStr|GUICtrlMonthCal_GetMonthRangeSpan|GUICtrlMonthCal_GetRange|GUICtrlMonthCal_GetRangeMax|GUICtrlMonthCal_GetRangeMaxStr|GUICtrlMonthCal_GetRangeMin|GUICtrlMonthCal_GetRangeMinStr|GUICtrlMonthCal_GetSelRange|GUICtrlMonthCal_GetSelRangeMax|GUICtrlMonthCal_GetSelRangeMaxStr|GUICtrlMonthCal_GetSelRangeMin|GUICtrlMonthCal_GetSelRangeMinStr|GUICtrlMonthCal_GetToday|GUICtrlMonthCal_GetTodayStr|GUICtrlMonthCal_GetUnicodeFormat|GUICtrlMonthCal_HitTest|GUICtrlMonthCal_SetColor|GUICtrlMonthCal_SetCurSel|GUICtrlMonthCal_SetDayState|GUICtrlMonthCal_SetFirstDOW|GUICtrlMonthCal_SetMaxSelCount|GUICtrlMonthCal_SetMonthDelta|GUICtrlMonthCal_SetRange|GUICtrlMonthCal_SetSelRange|GUICtrlMonthCal_SetToday|GUICtrlMonthCal_SetUnicodeFormat|GUICtrlRebar_AddBand|GUICtrlRebar_AddToolBarBand|GUICtrlRebar_BeginDrag|GUICtrlRebar_Create|GUICtrlRebar_DeleteBand|GUICtrlRebar_Destroy|GUICtrlRebar_DragMove|GUICtrlRebar_EndDrag|GUICtrlRebar_GetBandBackColor|GUICtrlRebar_GetBandBorders|GUICtrlRebar_GetBandBordersEx|GUICtrlRebar_GetBandChildHandle|GUICtrlRebar_GetBandChildSize|GUICtrlRebar_GetBandCount|GUICtrlRebar_GetBandForeColor|GUICtrlRebar_GetBandHeaderSize|GUICtrlRebar_GetBandID|GUICtrlRebar_GetBandIdealSize|GUICtrlRebar_GetBandLength|GUICtrlRebar_GetBandLParam|GUICtrlRebar_GetBandMargins|GUICtrlRebar_GetBandMarginsEx|GUICtrlRebar_GetBandRect|GUICtrlRebar_GetBandRectEx|GUICtrlRebar_GetBandStyle|GUICtrlRebar_GetBandStyleBreak|GUICtrlRebar_GetBandStyleChildEdge|GUICtrlRebar_GetBandStyleFixedBMP|GUICtrlRebar_GetBandStyleFixedSize|GUICtrlRebar_GetBandStyleGripperAlways|GUICtrlRebar_GetBandStyleHidden|GUICtrlRebar_GetBandStyleHideTitle|GUICtrlRebar_GetBandStyleNoGripper|GUICtrlRebar_GetBandStyleTopAlign|GUICtrlRebar_GetBandStyleUseChevron|GUICtrlRebar_GetBandStyleVariableHeight|GUICtrlRebar_GetBandText|GUICtrlRebar_GetBarHeight|GUICtrlRebar_GetBKColor|GUICtrlRebar_GetColorScheme|GUICtrlRebar_GetRowCount|GUICtrlRebar_GetRowHeight|GUICtrlRebar_GetTextColor|GUICtrlRebar_GetToolTips|GUICtrlRebar_GetUnicodeFormat|GUICtrlRebar_HitTest|GUICtrlRebar_IDToIndex|GUICtrlRebar_MaximizeBand|GUICtrlRebar_MinimizeBand|GUICtrlRebar_MoveBand|GUICtrlRebar_SetBandBackColor|GUICtrlRebar_SetBandForeColor|GUICtrlRebar_SetBandHeaderSize|GUICtrlRebar_SetBandID|GUICtrlRebar_SetBandIdealSize|GUICtrlRebar_SetBandLength|GUICtrlRebar_SetBandLParam|GUICtrlRebar_SetBandStyle|GUICtrlRebar_SetBandStyleBreak|GUICtrlRebar_SetBandStyleChildEdge|GUICtrlRebar_SetBandStyleFixedBMP|GUICtrlRebar_SetBandStyleFixedSize|GUICtrlRebar_SetBandStyleGripperAlways|GUICtrlRebar_SetBandStyleHidden|GUICtrlRebar_SetBandStyleHideTitle|GUICtrlRebar_SetBandStyleNoGripper|GUICtrlRebar_SetBandStyleTopAlign|GUICtrlRebar_SetBandStyleUseChevron|GUICtrlRebar_SetBandStyleVariableHeight|GUICtrlRebar_SetBandText|GUICtrlRebar_SetBKColor|GUICtrlRebar_SetColorScheme|GUICtrlRebar_SetTextColor|GUICtrlRebar_SetToolTips|GUICtrlRebar_SetUnicodeFormat|GUICtrlRebar_ShowBand|GUICtrlSlider_ClearSel|GUICtrlSlider_ClearTics|GUICtrlSlider_Create|GUICtrlSlider_Destroy|GUICtrlSlider_GetBuddy|GUICtrlSlider_GetChannelRect|GUICtrlSlider_GetLineSize|GUICtrlSlider_GetNumTics|GUICtrlSlider_GetPageSize|GUICtrlSlider_GetPos|GUICtrlSlider_GetPTics|GUICtrlSlider_GetRange|GUICtrlSlider_GetRangeMax|GUICtrlSlider_GetRangeMin|GUICtrlSlider_GetSel|GUICtrlSlider_GetSelEnd|GUICtrlSlider_GetSelStart|GUICtrlSlider_GetThumbLength|GUICtrlSlider_GetThumbRect|GUICtrlSlider_GetThumbRectEx|GUICtrlSlider_GetTic|GUICtrlSlider_GetTicPos|GUICtrlSlider_GetToolTips|GUICtrlSlider_GetUnicodeFormat|GUICtrlSlider_SetBuddy|GUICtrlSlider_SetLineSize|GUICtrlSlider_SetPageSize|GUICtrlSlider_SetPos|GUICtrlSlider_SetRange|GUICtrlSlider_SetRangeMax|GUICtrlSlider_SetRangeMin|GUICtrlSlider_SetSel|GUICtrlSlider_SetSelEnd|GUICtrlSlider_SetSelStart|GUICtrlSlider_SetThumbLength|GUICtrlSlider_SetTic|GUICtrlSlider_SetTicFreq|GUICtrlSlider_SetTipSide|GUICtrlSlider_SetToolTips|GUICtrlSlider_SetUnicodeFormat|GUICtrlStatusBar_Create|GUICtrlStatusBar_Destroy|GUICtrlStatusBar_EmbedControl|GUICtrlStatusBar_GetBorders|GUICtrlStatusBar_GetBordersHorz|GUICtrlStatusBar_GetBordersRect|GUICtrlStatusBar_GetBordersVert|GUICtrlStatusBar_GetCount|GUICtrlStatusBar_GetHeight|GUICtrlStatusBar_GetIcon|GUICtrlStatusBar_GetParts|GUICtrlStatusBar_GetRect|GUICtrlStatusBar_GetRectEx|GUICtrlStatusBar_GetText|GUICtrlStatusBar_GetTextFlags|GUICtrlStatusBar_GetTextLength|GUICtrlStatusBar_GetTextLengthEx|GUICtrlStatusBar_GetTipText|GUICtrlStatusBar_GetUnicodeFormat|GUICtrlStatusBar_GetWidth|GUICtrlStatusBar_IsSimple|GUICtrlStatusBar_Resize|GUICtrlStatusBar_SetBkColor|GUICtrlStatusBar_SetIcon|GUICtrlStatusBar_SetMinHeight|GUICtrlStatusBar_SetParts|GUICtrlStatusBar_SetSimple|GUICtrlStatusBar_SetText|GUICtrlStatusBar_SetTipText|GUICtrlStatusBar_SetUnicodeFormat|GUICtrlStatusBar_ShowHide|GUICtrlTab_Create|GUICtrlTab_DeleteAllItems|GUICtrlTab_DeleteItem|GUICtrlTab_DeselectAll|GUICtrlTab_Destroy|GUICtrlTab_FindTab|GUICtrlTab_GetCurFocus|GUICtrlTab_GetCurSel|GUICtrlTab_GetDisplayRect|GUICtrlTab_GetDisplayRectEx|GUICtrlTab_GetExtendedStyle|GUICtrlTab_GetImageList|GUICtrlTab_GetItem|GUICtrlTab_GetItemCount|GUICtrlTab_GetItemImage|GUICtrlTab_GetItemParam|GUICtrlTab_GetItemRect|GUICtrlTab_GetItemRectEx|GUICtrlTab_GetItemState|GUICtrlTab_GetItemText|GUICtrlTab_GetRowCount|GUICtrlTab_GetToolTips|GUICtrlTab_GetUnicodeFormat|GUICtrlTab_HighlightItem|GUICtrlTab_HitTest|GUICtrlTab_InsertItem|GUICtrlTab_RemoveImage|GUICtrlTab_SetCurFocus|GUICtrlTab_SetCurSel|GUICtrlTab_SetExtendedStyle|GUICtrlTab_SetImageList|GUICtrlTab_SetItem|GUICtrlTab_SetItemImage|GUICtrlTab_SetItemParam|GUICtrlTab_SetItemSize|GUICtrlTab_SetItemState|GUICtrlTab_SetItemText|GUICtrlTab_SetMinTabWidth|GUICtrlTab_SetPadding|GUICtrlTab_SetToolTips|GUICtrlTab_SetUnicodeFormat|GUICtrlToolbar_AddBitmap|GUICtrlToolbar_AddButton|GUICtrlToolbar_AddButtonSep|GUICtrlToolbar_AddString|GUICtrlToolbar_ButtonCount|GUICtrlToolbar_CheckButton|GUICtrlToolbar_ClickAccel|GUICtrlToolbar_ClickButton|GUICtrlToolbar_ClickIndex|GUICtrlToolbar_CommandToIndex|GUICtrlToolbar_Create|GUICtrlToolbar_Customize|GUICtrlToolbar_DeleteButton|GUICtrlToolbar_Destroy|GUICtrlToolbar_EnableButton|GUICtrlToolbar_FindToolbar|GUICtrlToolbar_GetAnchorHighlight|GUICtrlToolbar_GetBitmapFlags|GUICtrlToolbar_GetButtonBitmap|GUICtrlToolbar_GetButtonInfo|GUICtrlToolbar_GetButtonInfoEx|GUICtrlToolbar_GetButtonParam|GUICtrlToolbar_GetButtonRect|GUICtrlToolbar_GetButtonRectEx|GUICtrlToolbar_GetButtonSize|GUICtrlToolbar_GetButtonState|GUICtrlToolbar_GetButtonStyle|GUICtrlToolbar_GetButtonText|GUICtrlToolbar_GetColorScheme|GUICtrlToolbar_GetDisabledImageList|GUICtrlToolbar_GetExtendedStyle|GUICtrlToolbar_GetHotImageList|GUICtrlToolbar_GetHotItem|GUICtrlToolbar_GetImageList|GUICtrlToolbar_GetInsertMark|GUICtrlToolbar_GetInsertMarkColor|GUICtrlToolbar_GetMaxSize|GUICtrlToolbar_GetMetrics|GUICtrlToolbar_GetPadding|GUICtrlToolbar_GetRows|GUICtrlToolbar_GetString|GUICtrlToolbar_GetStyle|GUICtrlToolbar_GetStyleAltDrag|GUICtrlToolbar_GetStyleCustomErase|GUICtrlToolbar_GetStyleFlat|GUICtrlToolbar_GetStyleList|GUICtrlToolbar_GetStyleRegisterDrop|GUICtrlToolbar_GetStyleToolTips|GUICtrlToolbar_GetStyleTransparent|GUICtrlToolbar_GetStyleWrapable|GUICtrlToolbar_GetTextRows|GUICtrlToolbar_GetToolTips|GUICtrlToolbar_GetUnicodeFormat|GUICtrlToolbar_HideButton|GUICtrlToolbar_HighlightButton|GUICtrlToolbar_HitTest|GUICtrlToolbar_IndexToCommand|GUICtrlToolbar_InsertButton|GUICtrlToolbar_InsertMarkHitTest|GUICtrlToolbar_IsButtonChecked|GUICtrlToolbar_IsButtonEnabled|GUICtrlToolbar_IsButtonHidden|GUICtrlToolbar_IsButtonHighlighted|GUICtrlToolbar_IsButtonIndeterminate|GUICtrlToolbar_IsButtonPressed|GUICtrlToolbar_LoadBitmap|GUICtrlToolbar_LoadImages|GUICtrlToolbar_MapAccelerator|GUICtrlToolbar_MoveButton|GUICtrlToolbar_PressButton|GUICtrlToolbar_SetAnchorHighlight|GUICtrlToolbar_SetBitmapSize|GUICtrlToolbar_SetButtonBitMap|GUICtrlToolbar_SetButtonInfo|GUICtrlToolbar_SetButtonInfoEx|GUICtrlToolbar_SetButtonParam|GUICtrlToolbar_SetButtonSize|GUICtrlToolbar_SetButtonState|GUICtrlToolbar_SetButtonStyle|GUICtrlToolbar_SetButtonText|GUICtrlToolbar_SetButtonWidth|GUICtrlToolbar_SetCmdID|GUICtrlToolbar_SetColorScheme|GUICtrlToolbar_SetDisabledImageList|GUICtrlToolbar_SetDrawTextFlags|GUICtrlToolbar_SetExtendedStyle|GUICtrlToolbar_SetHotImageList|GUICtrlToolbar_SetHotItem|GUICtrlToolbar_SetImageList|GUICtrlToolbar_SetIndent|GUICtrlToolbar_SetIndeterminate|GUICtrlToolbar_SetInsertMark|GUICtrlToolbar_SetInsertMarkColor|GUICtrlToolbar_SetMaxTextRows|GUICtrlToolbar_SetMetrics|GUICtrlToolbar_SetPadding|GUICtrlToolbar_SetParent|GUICtrlToolbar_SetRows|GUICtrlToolbar_SetStyle|GUICtrlToolbar_SetStyleAltDrag|GUICtrlToolbar_SetStyleCustomErase|GUICtrlToolbar_SetStyleFlat|GUICtrlToolbar_SetStyleList|GUICtrlToolbar_SetStyleRegisterDrop|GUICtrlToolbar_SetStyleToolTips|GUICtrlToolbar_SetStyleTransparent|GUICtrlToolbar_SetStyleWrapable|GUICtrlToolbar_SetToolTips|GUICtrlToolbar_SetUnicodeFormat|GUICtrlToolbar_SetWindowTheme|GUICtrlTreeView_Add|GUICtrlTreeView_AddChild|GUICtrlTreeView_AddChildFirst|GUICtrlTreeView_AddFirst|GUICtrlTreeView_BeginUpdate|GUICtrlTreeView_ClickItem|GUICtrlTreeView_Create|GUICtrlTreeView_CreateDragImage|GUICtrlTreeView_CreateSolidBitMap|GUICtrlTreeView_Delete|GUICtrlTreeView_DeleteAll|GUICtrlTreeView_DeleteChildren|GUICtrlTreeView_Destroy|GUICtrlTreeView_DisplayRect|GUICtrlTreeView_DisplayRectEx|GUICtrlTreeView_EditText|GUICtrlTreeView_EndEdit|GUICtrlTreeView_EndUpdate|GUICtrlTreeView_EnsureVisible|GUICtrlTreeView_Expand|GUICtrlTreeView_ExpandedOnce|GUICtrlTreeView_FindItem|GUICtrlTreeView_FindItemEx|GUICtrlTreeView_GetBkColor|GUICtrlTreeView_GetBold|GUICtrlTreeView_GetChecked|GUICtrlTreeView_GetChildCount|GUICtrlTreeView_GetChildren|GUICtrlTreeView_GetCount|GUICtrlTreeView_GetCut|GUICtrlTreeView_GetDropTarget|GUICtrlTreeView_GetEditControl|GUICtrlTreeView_GetExpanded|GUICtrlTreeView_GetFirstChild|GUICtrlTreeView_GetFirstItem|GUICtrlTreeView_GetFirstVisible|GUICtrlTreeView_GetFocused|GUICtrlTreeView_GetHeight|GUICtrlTreeView_GetImageIndex|GUICtrlTreeView_GetImageListIconHandle|GUICtrlTreeView_GetIndent|GUICtrlTreeView_GetInsertMarkColor|GUICtrlTreeView_GetISearchString|GUICtrlTreeView_GetItemByIndex|GUICtrlTreeView_GetItemHandle|GUICtrlTreeView_GetItemParam|GUICtrlTreeView_GetLastChild|GUICtrlTreeView_GetLineColor|GUICtrlTreeView_GetNext|GUICtrlTreeView_GetNextChild|GUICtrlTreeView_GetNextSibling|GUICtrlTreeView_GetNextVisible|GUICtrlTreeView_GetNormalImageList|GUICtrlTreeView_GetParentHandle|GUICtrlTreeView_GetParentParam|GUICtrlTreeView_GetPrev|GUICtrlTreeView_GetPrevChild|GUICtrlTreeView_GetPrevSibling|GUICtrlTreeView_GetPrevVisible|GUICtrlTreeView_GetScrollTime|GUICtrlTreeView_GetSelected|GUICtrlTreeView_GetSelectedImageIndex|GUICtrlTreeView_GetSelection|GUICtrlTreeView_GetSiblingCount|GUICtrlTreeView_GetState|GUICtrlTreeView_GetStateImageIndex|GUICtrlTreeView_GetStateImageList|GUICtrlTreeView_GetText|GUICtrlTreeView_GetTextColor|GUICtrlTreeView_GetToolTips|GUICtrlTreeView_GetTree|GUICtrlTreeView_GetUnicodeFormat|GUICtrlTreeView_GetVisible|GUICtrlTreeView_GetVisibleCount|GUICtrlTreeView_HitTest|GUICtrlTreeView_HitTestEx|GUICtrlTreeView_HitTestItem|GUICtrlTreeView_Index|GUICtrlTreeView_InsertItem|GUICtrlTreeView_IsFirstItem|GUICtrlTreeView_IsParent|GUICtrlTreeView_Level|GUICtrlTreeView_SelectItem|GUICtrlTreeView_SelectItemByIndex|GUICtrlTreeView_SetBkColor|GUICtrlTreeView_SetBold|GUICtrlTreeView_SetChecked|GUICtrlTreeView_SetCheckedByIndex|GUICtrlTreeView_SetChildren|GUICtrlTreeView_SetCut|GUICtrlTreeView_SetDropTarget|GUICtrlTreeView_SetFocused|GUICtrlTreeView_SetHeight|GUICtrlTreeView_SetIcon|GUICtrlTreeView_SetImageIndex|GUICtrlTreeView_SetIndent|GUICtrlTreeView_SetInsertMark|GUICtrlTreeView_SetInsertMarkColor|GUICtrlTreeView_SetItemHeight|GUICtrlTreeView_SetItemParam|GUICtrlTreeView_SetLineColor|GUICtrlTreeView_SetNormalImageList|GUICtrlTreeView_SetScrollTime|GUICtrlTreeView_SetSelected|GUICtrlTreeView_SetSelectedImageIndex|GUICtrlTreeView_SetState|GUICtrlTreeView_SetStateImageIndex|GUICtrlTreeView_SetStateImageList|GUICtrlTreeView_SetText|GUICtrlTreeView_SetTextColor|GUICtrlTreeView_SetToolTips|GUICtrlTreeView_SetUnicodeFormat|GUICtrlTreeView_Sort|GUIImageList_Add|GUIImageList_AddBitmap|GUIImageList_AddIcon|GUIImageList_AddMasked|GUIImageList_BeginDrag|GUIImageList_Copy|GUIImageList_Create|GUIImageList_Destroy|GUIImageList_DestroyIcon|GUIImageList_DragEnter|GUIImageList_DragLeave|GUIImageList_DragMove|GUIImageList_Draw|GUIImageList_DrawEx|GUIImageList_Duplicate|GUIImageList_EndDrag|GUIImageList_GetBkColor|GUIImageList_GetIcon|GUIImageList_GetIconHeight|GUIImageList_GetIconSize|GUIImageList_GetIconSizeEx|GUIImageList_GetIconWidth|GUIImageList_GetImageCount|GUIImageList_GetImageInfoEx|GUIImageList_Remove|GUIImageList_ReplaceIcon|GUIImageList_SetBkColor|GUIImageList_SetIconSize|GUIImageList_SetImageCount|GUIImageList_Swap|GUIScrollBars_EnableScrollBar|GUIScrollBars_GetScrollBarInfoEx|GUIScrollBars_GetScrollBarRect|GUIScrollBars_GetScrollBarRGState|GUIScrollBars_GetScrollBarXYLineButton|GUIScrollBars_GetScrollBarXYThumbBottom|GUIScrollBars_GetScrollBarXYThumbTop|GUIScrollBars_GetScrollInfo|GUIScrollBars_GetScrollInfoEx|GUIScrollBars_GetScrollInfoMax|GUIScrollBars_GetScrollInfoMin|GUIScrollBars_GetScrollInfoPage|GUIScrollBars_GetScrollInfoPos|GUIScrollBars_GetScrollInfoTrackPos|GUIScrollBars_GetScrollPos|GUIScrollBars_GetScrollRange|GUIScrollBars_Init|GUIScrollBars_ScrollWindow|GUIScrollBars_SetScrollInfo|GUIScrollBars_SetScrollInfoMax|GUIScrollBars_SetScrollInfoMin|GUIScrollBars_SetScrollInfoPage|GUIScrollBars_SetScrollInfoPos|GUIScrollBars_SetScrollRange|GUIScrollBars_ShowScrollBar|GUIToolTip_Activate|GUIToolTip_AddTool|GUIToolTip_AdjustRect|GUIToolTip_BitsToTTF|GUIToolTip_Create|GUIToolTip_DelTool|GUIToolTip_Destroy|GUIToolTip_EnumTools|GUIToolTip_GetBubbleHeight|GUIToolTip_GetBubbleSize|GUIToolTip_GetBubbleWidth|GUIToolTip_GetCurrentTool|GUIToolTip_GetDelayTime|GUIToolTip_GetMargin|GUIToolTip_GetMarginEx|GUIToolTip_GetMaxTipWidth|GUIToolTip_GetText|GUIToolTip_GetTipBkColor|GUIToolTip_GetTipTextColor|GUIToolTip_GetTitleBitMap|GUIToolTip_GetTitleText|GUIToolTip_GetToolCount|GUIToolTip_GetToolInfo|GUIToolTip_HitTest|GUIToolTip_NewToolRect|GUIToolTip_Pop|GUIToolTip_PopUp|GUIToolTip_SetDelayTime|GUIToolTip_SetMargin|GUIToolTip_SetMaxTipWidth|GUIToolTip_SetTipBkColor|GUIToolTip_SetTipTextColor|GUIToolTip_SetTitle|GUIToolTip_SetToolInfo|GUIToolTip_SetWindowTheme|GUIToolTip_ToolExists|GUIToolTip_ToolToArray|GUIToolTip_TrackActivate|GUIToolTip_TrackPosition|GUIToolTip_TTFToBits|GUIToolTip_Update|GUIToolTip_UpdateTipText|HexToString|IE_Example|IE_Introduction|IE_VersionInfo|IEAction|IEAttach|IEBodyReadHTML|IEBodyReadText|IEBodyWriteHTML|IECreate|IECreateEmbedded|IEDocGetObj|IEDocInsertHTML|IEDocInsertText|IEDocReadHTML|IEDocWriteHTML|IEErrorHandlerDeRegister|IEErrorHandlerRegister|IEErrorNotify|IEFormElementCheckBoxSelect|IEFormElementGetCollection|IEFormElementGetObjByName|IEFormElementGetValue|IEFormElementOptionSelect|IEFormElementRadioSelect|IEFormElementSetValue|IEFormGetCollection|IEFormGetObjByName|IEFormImageClick|IEFormReset|IEFormSubmit|IEFrameGetCollection|IEFrameGetObjByName|IEGetObjById|IEGetObjByName|IEHeadInsertEventScript|IEImgClick|IEImgGetCollection|IEIsFrameSet|IELinkClickByIndex|IELinkClickByText|IELinkGetCollection|IELoadWait|IELoadWaitTimeout|IENavigate|IEPropertyGet|IEPropertySet|IEQuit|IETableGetCollection|IETableWriteToArray|IETagNameAllGetCollection|IETagNameGetCollection|Iif|INetExplorerCapable|INetGetSource|INetMail|INetSmtpMail|IsPressed|MathCheckDiv|Max|MemGlobalAlloc|MemGlobalFree|MemGlobalLock|MemGlobalSize|MemGlobalUnlock|MemMoveMemory|MemMsgBox|MemShowError|MemVirtualAlloc|MemVirtualAllocEx|MemVirtualFree|MemVirtualFreeEx|Min|MouseTrap|NamedPipes_CallNamedPipe|NamedPipes_ConnectNamedPipe|NamedPipes_CreateNamedPipe|NamedPipes_CreatePipe|NamedPipes_DisconnectNamedPipe|NamedPipes_GetNamedPipeHandleState|NamedPipes_GetNamedPipeInfo|NamedPipes_PeekNamedPipe|NamedPipes_SetNamedPipeHandleState|NamedPipes_TransactNamedPipe|NamedPipes_WaitNamedPipe|Net_Share_ConnectionEnum|Net_Share_FileClose|Net_Share_FileEnum|Net_Share_FileGetInfo|Net_Share_PermStr|Net_Share_ResourceStr|Net_Share_SessionDel|Net_Share_SessionEnum|Net_Share_SessionGetInfo|Net_Share_ShareAdd|Net_Share_ShareCheck|Net_Share_ShareDel|Net_Share_ShareEnum|Net_Share_ShareGetInfo|Net_Share_ShareSetInfo|Net_Share_StatisticsGetSvr|Net_Share_StatisticsGetWrk|Now|NowCalc|NowCalcDate|NowDate|NowTime|PathFull|PathMake|PathSplit|ProcessGetName|ProcessGetPriority|Radian|ReplaceStringInFile|RunDOS|ScreenCapture_Capture|ScreenCapture_CaptureWnd|ScreenCapture_SaveImage|ScreenCapture_SetBMPFormat|ScreenCapture_SetJPGQuality|ScreenCapture_SetTIFColorDepth|ScreenCapture_SetTIFCompression|Security__AdjustTokenPrivileges|Security__GetAccountSid|Security__GetLengthSid|Security__GetTokenInformation|Security__ImpersonateSelf|Security__IsValidSid|Security__LookupAccountName|Security__LookupAccountSid|Security__LookupPrivilegeValue|Security__OpenProcessToken|Security__OpenThreadToken|Security__OpenThreadTokenEx|Security__SetPrivilege|Security__SidToStringSid|Security__SidTypeStr|Security__StringSidToSid|SendMessage|SendMessageA|SetDate|SetTime|Singleton|SoundClose|SoundLength|SoundOpen|SoundPause|SoundPlay|SoundPos|SoundResume|SoundSeek|SoundStatus|SoundStop|SQLite_Changes|SQLite_Close|SQLite_Display2DResult|SQLite_Encode|SQLite_ErrCode|SQLite_ErrMsg|SQLite_Escape|SQLite_Exec|SQLite_FetchData|SQLite_FetchNames|SQLite_GetTable|SQLite_GetTable2d|SQLite_LastInsertRowID|SQLite_LibVersion|SQLite_Open|SQLite_Query|SQLite_QueryFinalize|SQLite_QueryReset|SQLite_QuerySingleRow|SQLite_SaveMode|SQLite_SetTimeout|SQLite_Shutdown|SQLite_SQLiteExe|SQLite_Startup|SQLite_TotalChanges|StringAddComma|StringBetween|StringEncrypt|StringInsert|StringProper|StringRepeat|StringReverse|StringSplit|StringToHex|TCPIpToName|TempFile|TicksToTime|Timer_Diff|Timer_GetTimerID|Timer_Init|Timer_KillAllTimers|Timer_KillTimer|Timer_SetTimer|TimeToTicks|VersionCompare|viClose|viExecCommand|viFindGpib|viGpibBusReset|viGTL|viOpen|viSetAttribute|viSetTimeout|WeekNumberISO|WinAPI_AttachConsole|WinAPI_AttachThreadInput|WinAPI_Beep|WinAPI_BitBlt|WinAPI_CallNextHookEx|WinAPI_Check|WinAPI_ClientToScreen|WinAPI_CloseHandle|WinAPI_CommDlgExtendedError|WinAPI_CopyIcon|WinAPI_CreateBitmap|WinAPI_CreateCompatibleBitmap|WinAPI_CreateCompatibleDC|WinAPI_CreateEvent|WinAPI_CreateFile|WinAPI_CreateFont|WinAPI_CreateFontIndirect|WinAPI_CreateProcess|WinAPI_CreateSolidBitmap|WinAPI_CreateSolidBrush|WinAPI_CreateWindowEx|WinAPI_DefWindowProc|WinAPI_DeleteDC|WinAPI_DeleteObject|WinAPI_DestroyIcon|WinAPI_DestroyWindow|WinAPI_DrawEdge|WinAPI_DrawFrameControl|WinAPI_DrawIcon|WinAPI_DrawIconEx|WinAPI_DrawText|WinAPI_EnableWindow|WinAPI_EnumDisplayDevices|WinAPI_EnumWindows|WinAPI_EnumWindowsPopup|WinAPI_EnumWindowsTop|WinAPI_ExpandEnvironmentStrings|WinAPI_ExtractIconEx|WinAPI_FatalAppExit|WinAPI_FillRect|WinAPI_FindExecutable|WinAPI_FindWindow|WinAPI_FlashWindow|WinAPI_FlashWindowEx|WinAPI_FloatToInt|WinAPI_FlushFileBuffers|WinAPI_FormatMessage|WinAPI_FrameRect|WinAPI_FreeLibrary|WinAPI_GetAncestor|WinAPI_GetAsyncKeyState|WinAPI_GetClassName|WinAPI_GetClientHeight|WinAPI_GetClientRect|WinAPI_GetClientWidth|WinAPI_GetCurrentProcess|WinAPI_GetCurrentProcessID|WinAPI_GetCurrentThread|WinAPI_GetCurrentThreadId|WinAPI_GetCursorInfo|WinAPI_GetDC|WinAPI_GetDesktopWindow|WinAPI_GetDeviceCaps|WinAPI_GetDIBits|WinAPI_GetDlgCtrlID|WinAPI_GetDlgItem|WinAPI_GetFileSizeEx|WinAPI_GetFocus|WinAPI_GetForegroundWindow|WinAPI_GetIconInfo|WinAPI_GetLastError|WinAPI_GetLastErrorMessage|WinAPI_GetModuleHandle|WinAPI_GetMousePos|WinAPI_GetMousePosX|WinAPI_GetMousePosY|WinAPI_GetObject|WinAPI_GetOpenFileName|WinAPI_GetOverlappedResult|WinAPI_GetParent|WinAPI_GetProcessAffinityMask|WinAPI_GetSaveFileName|WinAPI_GetStdHandle|WinAPI_GetStockObject|WinAPI_GetSysColor|WinAPI_GetSysColorBrush|WinAPI_GetSystemMetrics|WinAPI_GetTextExtentPoint32|WinAPI_GetWindow|WinAPI_GetWindowDC|WinAPI_GetWindowHeight|WinAPI_GetWindowLong|WinAPI_GetWindowRect|WinAPI_GetWindowText|WinAPI_GetWindowThreadProcessId|WinAPI_GetWindowWidth|WinAPI_GetXYFromPoint|WinAPI_GlobalMemStatus|WinAPI_GUIDFromString|WinAPI_GUIDFromStringEx|WinAPI_HiWord|WinAPI_InProcess|WinAPI_IntToFloat|WinAPI_InvalidateRect|WinAPI_IsClassName|WinAPI_IsWindow|WinAPI_IsWindowVisible|WinAPI_LoadBitmap|WinAPI_LoadImage|WinAPI_LoadLibrary|WinAPI_LoadLibraryEx|WinAPI_LoadShell32Icon|WinAPI_LoadString|WinAPI_LocalFree|WinAPI_LoWord|WinAPI_MakeDWord|WinAPI_MAKELANGID|WinAPI_MAKELCID|WinAPI_MakeLong|WinAPI_MessageBeep|WinAPI_Mouse_Event|WinAPI_MoveWindow|WinAPI_MsgBox|WinAPI_MulDiv|WinAPI_MultiByteToWideChar|WinAPI_MultiByteToWideCharEx|WinAPI_OpenProcess|WinAPI_PointFromRect|WinAPI_PostMessage|WinAPI_PrimaryLangId|WinAPI_PtInRect|WinAPI_ReadFile|WinAPI_ReadProcessMemory|WinAPI_RectIsEmpty|WinAPI_RedrawWindow|WinAPI_RegisterWindowMessage|WinAPI_ReleaseCapture|WinAPI_ReleaseDC|WinAPI_ScreenToClient|WinAPI_SelectObject|WinAPI_SetBkColor|WinAPI_SetCapture|WinAPI_SetCursor|WinAPI_SetDefaultPrinter|WinAPI_SetDIBits|WinAPI_SetEvent|WinAPI_SetFocus|WinAPI_SetFont|WinAPI_SetHandleInformation|WinAPI_SetLastError|WinAPI_SetParent|WinAPI_SetProcessAffinityMask|WinAPI_SetSysColors|WinAPI_SetTextColor|WinAPI_SetWindowLong|WinAPI_SetWindowPos|WinAPI_SetWindowsHookEx|WinAPI_SetWindowText|WinAPI_ShowCursor|WinAPI_ShowError|WinAPI_ShowMsg|WinAPI_ShowWindow|WinAPI_StringFromGUID|WinAPI_SubLangId|WinAPI_SystemParametersInfo|WinAPI_TwipsPerPixelX|WinAPI_TwipsPerPixelY|WinAPI_UnhookWindowsHookEx|WinAPI_UpdateLayeredWindow|WinAPI_UpdateWindow|WinAPI_ValidateClassName|WinAPI_WaitForInputIdle|WinAPI_WaitForMultipleObjects|WinAPI_WaitForSingleObject|WinAPI_WideCharToMultiByte|WinAPI_WindowFromPoint|WinAPI_WriteConsole|WinAPI_WriteFile|WinAPI_WriteProcessMemory|WinNet_AddConnection|WinNet_AddConnection2|WinNet_AddConnection3|WinNet_CancelConnection|WinNet_CancelConnection2|WinNet_CloseEnum|WinNet_ConnectionDialog|WinNet_ConnectionDialog1|WinNet_DisconnectDialog|WinNet_DisconnectDialog1|WinNet_EnumResource|WinNet_GetConnection|WinNet_GetConnectionPerformance|WinNet_GetLastError|WinNet_GetNetworkInformation|WinNet_GetProviderName|WinNet_GetResourceInformation|WinNet_GetResourceParent|WinNet_GetUniversalName|WinNet_GetUser|WinNet_OpenEnum|WinNet_RestoreConnection|WinNet_UseConnection|Word_VersionInfo|WordAttach|WordCreate|WordDocAdd|WordDocAddLink|WordDocAddPicture|WordDocClose|WordDocFindReplace|WordDocGetCollection|WordDocLinkGetCollection|WordDocOpen|WordDocPrint|WordDocPropertyGet|WordDocPropertySet|WordDocSave|WordDocSaveAs|WordErrorHandlerDeRegister|WordErrorHandlerRegister|WordErrorNotify|WordMacroRun|WordPropertyGet|WordPropertySet|WordQuit|' + + 'ce|comments-end|comments-start|cs|include|include-once|NoTrayIcon|RequireAdmin|' + + 'AutoIt3Wrapper_Au3Check_Parameters|AutoIt3Wrapper_Au3Check_Stop_OnWarning|AutoIt3Wrapper_Change2CUI|AutoIt3Wrapper_Compression|AutoIt3Wrapper_cvsWrapper_Parameters|AutoIt3Wrapper_Icon|AutoIt3Wrapper_Outfile|AutoIt3Wrapper_Outfile_Type|AutoIt3Wrapper_Plugin_Funcs|AutoIt3Wrapper_Res_Comment|AutoIt3Wrapper_Res_Description|AutoIt3Wrapper_Res_Field|AutoIt3Wrapper_Res_File_Add|AutoIt3Wrapper_Res_Fileversion|AutoIt3Wrapper_Res_FileVersion_AutoIncrement|AutoIt3Wrapper_Res_Icon_Add|AutoIt3Wrapper_Res_Language|AutoIt3Wrapper_Res_LegalCopyright|AutoIt3Wrapper_res_requestedExecutionLevel|AutoIt3Wrapper_Res_SaveSource|AutoIt3Wrapper_Run_After|AutoIt3Wrapper_Run_Au3check|AutoIt3Wrapper_Run_Before|AutoIt3Wrapper_Run_cvsWrapper|AutoIt3Wrapper_Run_Debug_Mode|AutoIt3Wrapper_Run_Obfuscator|AutoIt3Wrapper_Run_Tidy|AutoIt3Wrapper_Tidy_Stop_OnError|AutoIt3Wrapper_UseAnsi|AutoIt3Wrapper_UseUpx|AutoIt3Wrapper_UseX64|AutoIt3Wrapper_Version|EndRegion|forceref|Obfuscator_Ignore_Funcs|Obfuscator_Ignore_Variables|Obfuscator_Parameters|Region|Tidy_Parameters'; + var atKeywords = 'AppDataCommonDir|AppDataDir|AutoItExe|AutoItPID|AutoItUnicode|AutoItVersion|AutoItX64|COM_EventObj|CommonFilesDir|Compiled|ComputerName|ComSpec|CR|CRLF|DesktopCommonDir|DesktopDepth|DesktopDir|DesktopHeight|DesktopRefresh|DesktopWidth|DocumentsCommonDir|error|exitCode|exitMethod|extended|FavoritesCommonDir|FavoritesDir|GUI_CtrlHandle|GUI_CtrlId|GUI_DragFile|GUI_DragId|GUI_DropId|GUI_WinHandle|HomeDrive|HomePath|HomeShare|HotKeyPressed|HOUR|InetGetActive|InetGetBytesRead|IPAddress1|IPAddress2|IPAddress3|IPAddress4|KBLayout|LF|LogonDNSDomain|LogonDomain|LogonServer|MDAY|MIN|MON|MyDocumentsDir|NumParams|OSBuild|OSLang|OSServicePack|OSTYPE|OSVersion|ProcessorArch|ProgramFilesDir|ProgramsCommonDir|ProgramsDir|ScriptDir|ScriptFullPath|ScriptLineNumber|ScriptName|SEC|StartMenuCommonDir|StartMenuDir|StartupCommonDir|StartupDir|SW_DISABLE|SW_ENABLE|SW_HIDE|SW_LOCK|SW_MAXIMIZE|SW_MINIMIZE|SW_RESTORE|SW_SHOW|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWMINNOACTIVE|SW_SHOWNA|SW_SHOWNOACTIVATE|SW_SHOWNORMAL|SW_UNLOCK|SystemDir|TAB|TempDir|TRAY_ID|TrayIconFlashing|TrayIconVisible|UserName|UserProfileDir|WDAY|WindowsDir|WorkingDir|YDAY|YEAR'; + + this.$rules = { start: + [ { token: 'comment.line.ahk', regex: '(?:^| );.*$' }, + { token: 'comment.block.ahk', + regex: '/\\*', push: + [ { token: 'comment.block.ahk', regex: '\\*/', next: 'pop' }, + { defaultToken: 'comment.block.ahk' } ] }, + { token: 'doc.comment.ahk', + regex: '#cs', push: + [ { token: 'doc.comment.ahk', regex: '#ce', next: 'pop' }, + { defaultToken: 'doc.comment.ahk' } ] }, + { token: 'keyword.command.ahk', + regex: '(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b', + caseInsensitive: true }, + { token: 'keyword.control.ahk', + regex: '(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b', + caseInsensitive: true }, + { token: 'support.function.ahk', + regex: '(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b', + caseInsensitive: true }, + { token: 'variable.predefined.ahk', + regex: '(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b', + caseInsensitive: true }, + { token: 'support.constant.ahk', + regex: '(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b', + caseInsensitive: true }, + { token: 'variable.parameter', + regex: '(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b', + caseInsensitive: true }, + { keywordMap: {"constant.language": autoItKeywords}, regex: '\\w+\\b'}, + { keywordMap: {"variable.function": atKeywords}, regex: '@\\w+\\b'}, + { token : "constant.numeric", regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"}, + { token: 'keyword.operator.ahk', + regex: '=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-' }, + { token: 'punctuation.ahk', + regex: '#|`|::|,|\\{|\\}|\\(|\\)|\\%' }, + { token: + [ 'punctuation.quote.double', + 'string.quoted.ahk', + 'punctuation.quote.double' ], + regex: '(")((?:[^"]|"")*)(")' }, + { token: [ 'label.ahk', 'punctuation.definition.label.ahk' ], + regex: '^([^: ]+)(:)(?!:)' } ] }; + + this.normalizeRules(); +}; + +AutoHotKeyHighlightRules.metaData = { name: 'AutoHotKey', + scopeName: 'source.ahk', + fileTypes: [ 'ahk' ], + foldingStartMarker: '^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))', + foldingStopMarker: '^\\s*\\*/|^\\s*\\}' }; + + +oop.inherits(AutoHotKeyHighlightRules, TextHighlightRules); + +exports.AutoHotKeyHighlightRules = AutoHotKeyHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/batchfile.js b/plugins/node_modules/ace/lib/ace/mode/batchfile.js new file mode 100644 index 00000000..052a2384 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/batchfile.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var BatchFileHighlightRules = require("./batchfile_highlight_rules").BatchFileHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = BatchFileHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "::"; + this.blockComment = ""; + this.$id = "ace/mode/batchfile"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/batchfile_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/batchfile_highlight_rules.js new file mode 100644 index 00000000..af4b0ec5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/batchfile_highlight_rules.js @@ -0,0 +1,97 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from C:\Users\LED\AppData\Roaming\Sublime Text 2\Packages\Batch File\Batch File.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var BatchFileHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: 'keyword.command.dosbatch', + regex: '\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b', + caseInsensitive: true }, + { token: 'keyword.control.statement.dosbatch', + regex: '\\b(?:goto|call|exit)\\b', + caseInsensitive: true }, + { token: 'keyword.control.conditional.if.dosbatch', + regex: '\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b', + caseInsensitive: true }, + { token: 'keyword.control.conditional.dosbatch', + regex: '\\b(?:if|else)\\b', + caseInsensitive: true }, + { token: 'keyword.control.repeat.dosbatch', + regex: '\\bfor\\b', + caseInsensitive: true }, + { token: 'keyword.operator.dosbatch', + regex: '\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b' }, + { token: ['doc.comment', 'comment'], + regex: '(?:^|\\b)(rem)($|\\s.*$)', + caseInsensitive: true }, + { token: 'comment.line.colons.dosbatch', + regex: '::.*$' }, + { include: 'variable' }, + { token: 'punctuation.definition.string.begin.shell', + regex: '"', + push: [ + { token: 'punctuation.definition.string.end.shell', regex: '"', next: 'pop' }, + { include: 'variable' }, + { defaultToken: 'string.quoted.double.dosbatch' } ] }, + { token: 'keyword.operator.pipe.dosbatch', regex: '[|]' }, + { token: 'keyword.operator.redirect.shell', + regex: '&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>' } ], + variable: [ + { token: 'constant.numeric', regex: '%%\\w+|%[*\\d]|%\\w+%'}, + { token: 'constant.numeric', regex: '%~\\d+'}, + { token: ['markup.list', 'constant.other', 'markup.list'], + regex: '(%)(\\w+)(%?)' }]}; + + this.normalizeRules(); +}; + +BatchFileHighlightRules.metaData = { name: 'Batch File', + scopeName: 'source.dosbatch', + fileTypes: [ 'bat' ] }; + + +oop.inherits(BatchFileHighlightRules, TextHighlightRules); + +exports.BatchFileHighlightRules = BatchFileHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/behaviour.js b/plugins/node_modules/ace/lib/ace/mode/behaviour.js new file mode 100644 index 00000000..abb5a995 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/behaviour.js @@ -0,0 +1,90 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Behaviour = function() { + this.$behaviours = {}; +}; + +(function () { + + this.add = function (name, action, callback) { + switch (undefined) { + case this.$behaviours: + this.$behaviours = {}; + case this.$behaviours[name]: + this.$behaviours[name] = {}; + } + this.$behaviours[name][action] = callback; + }; + + this.addBehaviours = function (behaviours) { + for (var key in behaviours) { + for (var action in behaviours[key]) { + this.add(key, action, behaviours[key][action]); + } + } + }; + + this.remove = function (name) { + if (this.$behaviours && this.$behaviours[name]) { + delete this.$behaviours[name]; + } + }; + + this.inherit = function (mode, filter) { + if (typeof mode === "function") { + var behaviours = new mode().getBehaviours(filter); + } else { + var behaviours = mode.getBehaviours(filter); + } + this.addBehaviours(behaviours); + }; + + this.getBehaviours = function (filter) { + if (!filter) { + return this.$behaviours; + } else { + var ret = {}; + for (var i = 0; i < filter.length; i++) { + if (this.$behaviours[filter[i]]) { + ret[filter[i]] = this.$behaviours[filter[i]]; + } + } + return ret; + } + }; + +}).call(Behaviour.prototype); + +exports.Behaviour = Behaviour; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/behaviour/behaviour_test.js b/plugins/node_modules/ace/lib/ace/mode/behaviour/behaviour_test.js new file mode 100644 index 00000000..118ae021 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/behaviour/behaviour_test.js @@ -0,0 +1,232 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("../../test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +require("../../multi_select"); +var assert = require("../../test/assertions"); +var Range = require("../../range").Range; +var Editor = require("../../editor").Editor; +var EditSession = require("../../edit_session").EditSession; +var MockRenderer = require("../../test/mockrenderer").MockRenderer; +var JavaScriptMode = require("../javascript").Mode; +var RustMode = require("../rust").Mode; +var XMLMode = require("../xml").Mode; +var editor; +var exec = function(name, times, args) { + do { + editor.commands.exec(name, editor, args); + } while(times --> 1); +}; +var testRanges = function(str) { + assert.equal(editor.selection.getAllRanges() + "", str + ""); +}; + +module.exports = { + "test: cstyle": function() { + function testValue(line) { + assert.equal(editor.getValue(), Array(4).join(line + "\n")); + } + function testSelection(line, col, inc) { + editor.selection.rangeList.ranges.forEach(function(r) { + assert.range(r, line, col, line, col); + line += (inc || 1); + }); + } + var doc = new EditSession([ + "", + "", + "", + "" + ], new JavaScriptMode()); + editor = new Editor(new MockRenderer(), doc); + editor.setOption("behavioursEnabled", true); + + editor.navigateFileStart(); + exec("addCursorBelow", 2); + + exec("insertstring", 1, "if "); + + // pairing ( + exec("insertstring", 1, "("); + testValue("if ()"); + testSelection(0, 4); + exec("insertstring", 1, ")"); + testValue("if ()"); + testSelection(0, 5); + + // pairing [ + exec("gotoleft", 1); + exec("insertstring", 1, "["); + testValue("if ([])"); + testSelection(0, 5); + + exec("insertstring", 1, "]"); + testValue("if ([])"); + testSelection(0, 6); + + // test deletion + exec("gotoleft", 1); + exec("backspace", 1); + testValue("if ()"); + testSelection(0, 4); + + exec("gotolineend", 1); + exec("insertstring", 1, "{"); + testValue("if (){}"); + testSelection(0, 6); + + exec("insertstring", 1, "}"); + testValue("if (){}"); + testSelection(0, 7); + + exec("gotolinestart", 1); + exec("insertstring", 1, "("); + testValue("(if (){}"); + exec("backspace", 1); + + editor.setValue(""); + exec("insertstring", 1, "{"); + assert.equal(editor.getValue(), "{"); + exec("insertstring", 1, "\n"); + assert.equal(editor.getValue(), "{\n \n}"); + + editor.setValue(""); + exec("insertstring", 1, "("); + exec("insertstring", 1, '"'); + exec("insertstring", 1, '"'); + assert.equal(editor.getValue(), '("")'); + exec("backspace", 1); + exec("insertstring", 1, '"'); + assert.equal(editor.getValue(), '("")'); + + editor.setValue("('foo')", 1); + exec("gotoleft", 1); + exec("selectleft", 1); + exec("selectMoreBefore", 1); + exec("insertstring", 1, "'"); + assert.equal(editor.getValue(), "('foo')"); + exec("selectleft", 1); + exec("insertstring", 1, '"'); + assert.equal(editor.getValue(), '("foo")'); + exec("selectleft", 1); + exec("insertstring", 1, '"'); + assert.equal(editor.getValue(), '("foo")'); + + editor.setValue("", 1); + exec("selectleft", 1); + exec("insertstring", 1, '"'); + assert.equal(editor.getValue(), '""'); + exec("insertstring", 1, '\\'); + exec("insertstring", 1, 'n'); + exec("insertstring", 1, '"'); + assert.equal(editor.getValue(), '"\\n"'); + + }, + "test: xml": function() { + editor = new Editor(new MockRenderer()); + editor.setValue(["<OuterTag>", + " <SelfClosingTag />" + ].join("\n")); + editor.session.setMode(new XMLMode); + exec("golinedown", 1); + exec("gotolineend", 1); + exec("insertstring", 1, '\n'); + assert.equal(editor.session.getLine(2), " "); + exec("gotolineup", 1); + exec("gotolineend", 1); + exec("insertstring", 1, '\n'); + assert.equal(editor.session.getLine(2), " "); + editor.session.setValue(["<OuterTag", + " <xyzrt" + ].join("\n")); + exec("golinedown", 1); + exec("gotolineend", 1); + exec("selectleft", 3); + exec("insertstring", 1, '>'); + assert.equal(editor.session.getLine(1), " <xy></xy>"); + + editor.setValue(["<a x='11'", + "<b a='", + " ", + "' >" + ].join("\n")); + editor.selection.moveTo(0, 100); + exec("insertstring", 1, '>'); + editor.selection.moveTo(1, 100); + exec("insertstring", 1, '>'); + editor.selection.moveTo(2, 1); + exec("insertstring", 1, '>'); + editor.selection.moveTo(3, 1); + exec("insertstring", 1, '>'); + assert.equal(editor.getValue(), [ + "<a x='11'></a>", + "<b a='>", + " > ", + "'> >" + ].join("\n")); + }, + "test: quotes": function() { + editor = new Editor(new MockRenderer()); + editor.session.setMode(new RustMode); + editor.setValue(""); + exec("insertstring", 1, '"'); + exec("insertstring", 1, 'a'); + assert.equal(editor.getValue(), '"a"'); + exec("backspace", 2); + exec("insertstring", 1, "'"); + assert.equal(editor.getValue(), "'"); + + editor.session.setMode(new JavaScriptMode); + editor.setValue(""); + exec("insertstring", 1, '"'); + exec("insertstring", 1, 'a'); + assert.equal(editor.getValue(), '"a"'); + exec("backspace", 2); + exec("insertstring", 1, "'"); + assert.equal(editor.getValue(), "''"); + exec("backspace", 1); + exec("insertstring", 1, '`'); + exec("insertstring", 1, 'b'); + assert.equal(editor.getValue(), "`b`"); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/behaviour/css.js b/plugins/node_modules/ace/lib/ace/mode/behaviour/css.js new file mode 100644 index 00000000..f947f120 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/behaviour/css.js @@ -0,0 +1,108 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; + +var CssBehaviour = function () { + + this.inherit(CstyleBehaviour); + + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (!line.substring(cursor.column).match(/^\s*;/)) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column ++; + return range; + } + } + } + }); + + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';') { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + +}; +oop.inherits(CssBehaviour, CstyleBehaviour); + +exports.CssBehaviour = CssBehaviour; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/behaviour/cstyle.js b/plugins/node_modules/ace/lib/ace/mode/behaviour/cstyle.js new file mode 100644 index 00000000..317c52c6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/behaviour/cstyle.js @@ -0,0 +1,400 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); + +var SAFE_INSERT_IN_TOKENS = + ["text", "paren.rparen", "punctuation.operator"]; +var SAFE_INSERT_BEFORE_TOKENS = + ["text", "paren.rparen", "punctuation.operator", "comment"]; + +var context; +var contextCache = {}; +var defaultQuotes = {'"' : '"', "'" : "'"}; + +var initContext = function(editor) { + var id = -1; + if (editor.multiSelect) { + id = editor.selection.index; + if (contextCache.rangeCount != editor.multiSelect.rangeCount) + contextCache = {rangeCount: editor.multiSelect.rangeCount}; + } + if (contextCache[id]) + return context = contextCache[id]; + context = contextCache[id] = { + autoInsertedBrackets: 0, + autoInsertedRow: -1, + autoInsertedLineEnd: "", + maybeInsertedBrackets: 0, + maybeInsertedRow: -1, + maybeInsertedLineStart: "", + maybeInsertedLineEnd: "" + }; +}; + +var getWrapped = function(selection, selected, opening, closing) { + var rowDiff = selection.end.row - selection.start.row; + return { + text: opening + selected + closing, + selection: [ + 0, + selection.start.column + 1, + rowDiff, + selection.end.column + (rowDiff ? 0 : 1) + ] + }; +}; + +var CstyleBehaviour = function(options) { + this.add("braces", "insertion", function(state, action, editor, session, text) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (text == '{') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '{', '}'); + } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) { + CstyleBehaviour.recordAutoInsert(editor, session, "}"); + return { + text: '{}', + selection: [1, 1] + }; + } else { + CstyleBehaviour.recordMaybeInsert(editor, session, "{"); + return { + text: '{', + selection: [1, 1] + }; + } + } + } else if (text == '}') { + initContext(editor); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == '}') { + var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } else if (text == "\n" || text == "\r\n") { + initContext(editor); + var closing = ""; + if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { + closing = lang.stringRepeat("}", context.maybeInsertedBrackets); + CstyleBehaviour.clearMaybeInsertedClosing(); + } + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === '}') { + var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); + if (!openBracePos) + return null; + var next_indent = this.$getIndent(session.getLine(openBracePos.row)); + } else if (closing) { + var next_indent = this.$getIndent(line); + } else { + CstyleBehaviour.clearMaybeInsertedClosing(); + return; + } + var indent = next_indent + session.getTabString(); + + return { + text: '\n' + indent + '\n' + next_indent + closing, + selection: [1, indent.length, 1, indent.length] + }; + } else { + CstyleBehaviour.clearMaybeInsertedClosing(); + } + }); + + this.add("braces", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '{') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar == '}') { + range.end.column++; + return range; + } else { + context.maybeInsertedBrackets--; + } + } + }); + + this.add("parens", "insertion", function(state, action, editor, session, text) { + if (text == '(') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '(', ')'); + } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + CstyleBehaviour.recordAutoInsert(editor, session, ")"); + return { + text: '()', + selection: [1, 1] + }; + } + } else if (text == ')') { + initContext(editor); + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == ')') { + var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + }); + + this.add("parens", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '(') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == ')') { + range.end.column++; + return range; + } + } + }); + + this.add("brackets", "insertion", function(state, action, editor, session, text) { + if (text == '[') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '[', ']'); + } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + CstyleBehaviour.recordAutoInsert(editor, session, "]"); + return { + text: '[]', + selection: [1, 1] + }; + } + } else if (text == ']') { + initContext(editor); + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == ']') { + var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + }); + + this.add("brackets", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '[') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == ']') { + range.end.column++; + return range; + } + } + }); + + this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { + var quotes = session.$mode.$quotes || defaultQuotes; + if (text.length == 1 && quotes[text]) { + if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) + return; + initContext(editor); + var quote = text; + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, quote, quote); + } else if (!selected) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var leftChar = line.substring(cursor.column-1, cursor.column); + var rightChar = line.substring(cursor.column, cursor.column + 1); + + var token = session.getTokenAt(cursor.row, cursor.column); + var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); + // We're escaped. + if (leftChar == "\\" && token && /escape/.test(token.type)) + return null; + + var stringBefore = token && /string|escape/.test(token.type); + var stringAfter = !rightToken || /string|escape/.test(rightToken.type); + + var pair; + if (rightChar == quote) { + pair = stringBefore !== stringAfter; + if (pair && /string\.end/.test(rightToken.type)) + pair = false; + } else { + if (stringBefore && !stringAfter) + return null; // wrap string with different quote + if (stringBefore && stringAfter) + return null; // do not pair quotes inside strings + var wordRe = session.$mode.tokenRe; + wordRe.lastIndex = 0; + var isWordBefore = wordRe.test(leftChar); + wordRe.lastIndex = 0; + var isWordAfter = wordRe.test(leftChar); + if (isWordBefore || isWordAfter) + return null; // before or after alphanumeric + if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) + return null; // there is rightChar and it isn't closing + pair = true; + } + return { + text: pair ? quote + quote : "", + selection: [1,1] + }; + } + } + }); + + this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + +}; + + +CstyleBehaviour.isSaneInsertion = function(editor, session) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + + // Don't insert in the middle of a keyword/identifier/lexical + if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { + // Look ahead in case we're at the end of a token + var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); + if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) + return false; + } + + // Only insert in front of whitespace/comments + iterator.stepForward(); + return iterator.getCurrentTokenRow() !== cursor.row || + this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); +}; + +CstyleBehaviour.$matchTokenType = function(token, types) { + return types.indexOf(token.type || token) > -1; +}; + +CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + // Reset previous state if text or context changed too much + if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) + context.autoInsertedBrackets = 0; + context.autoInsertedRow = cursor.row; + context.autoInsertedLineEnd = bracket + line.substr(cursor.column); + context.autoInsertedBrackets++; +}; + +CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (!this.isMaybeInsertedClosing(cursor, line)) + context.maybeInsertedBrackets = 0; + context.maybeInsertedRow = cursor.row; + context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; + context.maybeInsertedLineEnd = line.substr(cursor.column); + context.maybeInsertedBrackets++; +}; + +CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { + return context.autoInsertedBrackets > 0 && + cursor.row === context.autoInsertedRow && + bracket === context.autoInsertedLineEnd[0] && + line.substr(cursor.column) === context.autoInsertedLineEnd; +}; + +CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { + return context.maybeInsertedBrackets > 0 && + cursor.row === context.maybeInsertedRow && + line.substr(cursor.column) === context.maybeInsertedLineEnd && + line.substr(0, cursor.column) == context.maybeInsertedLineStart; +}; + +CstyleBehaviour.popAutoInsertedClosing = function() { + context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); + context.autoInsertedBrackets--; +}; + +CstyleBehaviour.clearMaybeInsertedClosing = function() { + if (context) { + context.maybeInsertedBrackets = 0; + context.maybeInsertedRow = -1; + } +}; + + + +oop.inherits(CstyleBehaviour, Behaviour); + +exports.CstyleBehaviour = CstyleBehaviour; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/behaviour/html.js b/plugins/node_modules/ace/lib/ace/mode/behaviour/html.js new file mode 100644 index 00000000..181655c0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/behaviour/html.js @@ -0,0 +1,46 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; + +var HtmlBehaviour = function () { + + XmlBehaviour.call(this); + +}; + +oop.inherits(HtmlBehaviour, XmlBehaviour); + +exports.HtmlBehaviour = HtmlBehaviour; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/behaviour/xml.js b/plugins/node_modules/ace/lib/ace/mode/behaviour/xml.js new file mode 100644 index 00000000..634d9b0d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/behaviour/xml.js @@ -0,0 +1,212 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); + +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} + +var XmlBehaviour = function () { + + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + // Ignore input and move right one if we're typing over the closing quote. + return { + text: "", + selection: [1, 1] + }; + } + + if (!token) + token = iterator.stepBackward(); + + if (!token) + return; + + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + + this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + + // exit if we're not in a tag + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + + // exit if we're inside of a quoted attribute value + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + if (is(iterator.stepForward(), "attribute-value")) + return; + iterator.stepBackward(); + } + } + + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + + // find tag name + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + + // exit if the tag is ending + if (is(iterator.stepBackward(), "end-tag-open")) + return; + + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + + return { + text: ">" + "</" + element + ">", + selection: [1, 1] + }; + } + }); + + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + //get tag name + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + + if (!token) { + return; + } + + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + + //don't indent after closing tag + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + + if (nextToken && nextToken.value === "</") { + return { + text: "\n" + indent + "\n" + nextIndent, + selection: [1, indent.length, 1, indent.length] + }; + } else { + return { + text: "\n" + indent + }; + } + } + } + } + }); + +}; + +oop.inherits(XmlBehaviour, Behaviour); + +exports.XmlBehaviour = XmlBehaviour; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/behaviour/xquery.js b/plugins/node_modules/ace/lib/ace/mode/behaviour/xquery.js new file mode 100644 index 00000000..0d751cf2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/behaviour/xquery.js @@ -0,0 +1,92 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +define(function(require, exports, module) { +"use strict"; + + var oop = require("../../lib/oop"); + var Behaviour = require('../behaviour').Behaviour; + var CstyleBehaviour = require('./cstyle').CstyleBehaviour; + var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; + var TokenIterator = require("../../token_iterator").TokenIterator; + +function hasType(token, type) { + var hasType = true; + var typeList = token.type.split('.'); + var needleList = type.split('.'); + needleList.forEach(function(needle){ + if (typeList.indexOf(needle) == -1) { + hasType = false; + return false; + } + }); + return hasType; +} + + var XQueryBehaviour = function () { + + this.inherit(CstyleBehaviour, ["braces", "parens", "string_dquotes"]); // Get string behaviour + this.inherit(XmlBehaviour); // Get xml behaviour + + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getCursorPosition(); + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken(); + var atCursor = false; + var state = JSON.parse(state).pop(); + if ((token && token.value === '>') || state !== "StartTag") return; + if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ + do { + token = iterator.stepBackward(); + } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); + } else { + atCursor = true; + } + var previous = iterator.stepBackward(); + if (!token || !hasType(token, 'meta.tag') || (previous !== null && previous.value.match('/'))) { + return; + } + var tag = token.value.substring(1); + if (atCursor){ + var tag = tag.substring(0, position.column - token.start); + } + + return { + text: '>' + '</' + tag + '>', + selection: [1, 1] + }; + } + }); + + }; + oop.inherits(XQueryBehaviour, Behaviour); + + exports.XQueryBehaviour = XQueryBehaviour; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/bro.js b/plugins/node_modules/ace/lib/ace/mode/bro.js new file mode 100644 index 00000000..fd9ff82e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/bro.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var BroHighlightRules = require("./bro_highlight_rules").BroHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = BroHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + // this.lineCommentStart = ""#""; + // this.blockComment = {start: ""/*"", end: ""*/""}; + // Extra logic goes here. + this.$id = "ace/mode/bro"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/bro_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/bro_highlight_rules.js new file mode 100644 index 00000000..6c36a839 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/bro_highlight_rules.js @@ -0,0 +1,204 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from Bro.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var BroHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + token: "punctuation.definition.comment.bro", + regex: /#/, + push: [{ + token: "comment.line.number-sign.bro", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.line.number-sign.bro" + }] + }, { + token: "keyword.control.bro", + regex: /\b(?:break|case|continue|else|for|if|return|switch|next|when|timeout|schedule)\b/ + }, { + token: [ + "meta.function.bro", + "meta.function.bro", + "storage.type.bro", + "meta.function.bro", + "entity.name.function.bro", + "meta.function.bro" + ], + regex: /^(\s*)(?:function|hook|event)(\s*)(.*)(\s*\()(.*)(\).*$)/ + }, { + token: "storage.type.bro", + regex: /\b(?:bool|enum|double|int|count|port|addr|subnet|any|file|interval|time|string|table|vector|set|record|pattern|hook)\b/ + }, { + token: "storage.modifier.bro", + regex: /\b(?:global|const|redef|local|&(?:optional|rotate_interval|rotate_size|add_func|del_func|expire_func|expire_create|expire_read|expire_write|persistent|synchronized|encrypt|mergeable|priority|group|type_column|log|error_handler))\b/ + }, { + token: "keyword.operator.bro", + regex: /\s*(?:\||&&|(?:>|<|!)=?|==)\s*|\b!?in\b/ + }, { + token: "constant.language.bro", + regex: /\b(?:T|F)\b/ + }, { + token: "constant.numeric.bro", + regex: /\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:\/(?:tcp|udp|icmp)|\s*(?:u?sec|min|hr|day)s?)?\b/ + }, { + token: "punctuation.definition.string.begin.bro", + regex: /"/, + push: [{ + token: "punctuation.definition.string.end.bro", + regex: /"/, + next: "pop" + }, { + include: "#string_escaped_char" + }, { + include: "#string_placeholder" + }, { + defaultToken: "string.quoted.double.bro" + }] + }, { + token: "punctuation.definition.string.begin.bro", + regex: /\//, + push: [{ + token: "punctuation.definition.string.end.bro", + regex: /\//, + next: "pop" + }, { + include: "#string_escaped_char" + }, { + include: "#string_placeholder" + }, { + defaultToken: "string.quoted.regex.bro" + }] + }, { + token: [ + "meta.preprocessor.bro.load", + "keyword.other.special-method.bro" + ], + regex: /^(\s*)(\@load(?:-sigs)?)\b/, + push: [{ + token: [], + regex: /(?=\#)|$/, + next: "pop" + }, { + defaultToken: "meta.preprocessor.bro.load" + }] + }, { + token: [ + "meta.preprocessor.bro.if", + "keyword.other.special-method.bro", + "meta.preprocessor.bro.if" + ], + regex: /^(\s*)(\@endif|\@if(?:n?def)?)(.*$)/, + push: [{ + token: [], + regex: /$/, + next: "pop" + }, { + defaultToken: "meta.preprocessor.bro.if" + }] + }], + "#disabled": [{ + token: "text", + regex: /^\s*\@if(?:n?def)?\b.*$/, + push: [{ + token: "text", + regex: /^\s*\@endif\b.*$/, + next: "pop" + }, { + include: "#disabled" + }, { + include: "#pragma-mark" + }], + comment: "eat nested preprocessor ifdefs" + }], + "#preprocessor-rule-other": [{ + token: [ + "text", + "meta.preprocessor.bro", + "meta.preprocessor.bro", + "text" + ], + regex: /^(\s*)(@if)((?:n?def)?)\b(.*?)(?:(?=)|$)/, + push: [{ + token: ["text", "meta.preprocessor.bro", "text"], + regex: /^(\s*)(@endif)\b(.*$)/, + next: "pop" + }, { + include: "$base" + }] + }], + "#string_escaped_char": [{ + token: "constant.character.escape.bro", + regex: /\\(?:\\|[abefnprtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-fA-F0-9]{,2})/ + }, { + token: "invalid.illegal.unknown-escape.bro", + regex: /\\./ + }], + "#string_placeholder": [{ + token: "constant.other.placeholder.bro", + regex: /%(?:\d+\$)?[#0\- +']*[,;:_]?(?:-?\d+|\*(?:-?\d+\$)?)?(?:\.(?:-?\d+|\*(?:-?\d+\$)?)?)?(?:hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?[diouxXDOUeEfFgGaACcSspn%]/ + }, { + token: "invalid.illegal.placeholder.bro", + regex: /%/ + }] + }; + + this.normalizeRules(); +}; + +BroHighlightRules.metaData = { + fileTypes: ["bro"], + foldingStartMarker: "^(\\@if(n?def)?)", + foldingStopMarker: "^\\@endif", + keyEquivalent: "@B", + name: "Bro", + scopeName: "source.bro" +}; + + +oop.inherits(BroHighlightRules, TextHighlightRules); + +exports.BroHighlightRules = BroHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/c9search.js b/plugins/node_modules/ace/lib/ace/mode/c9search.js new file mode 100644 index 00000000..3286456a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/c9search.js @@ -0,0 +1,67 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var C9SearchHighlightRules = require("./c9search_highlight_rules").C9SearchHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var C9StyleFoldMode = require("./folding/c9search").FoldMode; + +var Mode = function() { + this.HighlightRules = C9SearchHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new C9StyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/c9search"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/c9search_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/c9search_highlight_rules.js new file mode 100644 index 00000000..96de823d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/c9search_highlight_rules.js @@ -0,0 +1,193 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +function safeCreateRegexp(source, flag) { + try { + return new RegExp(source, flag); + } catch(e) {} +} + +var C9SearchHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + this.$rules = { + "start" : [ + { + tokenNames : ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text", "c9searchresults.keyword"], + regex : /(^\s+[0-9]+)(:)(\d*\s?)([^\r\n]+)/, + onMatch : function(val, state, stack) { + var values = this.splitRegex.exec(val); + var types = this.tokenNames; + var tokens = [{ + type: types[0], + value: values[1] + }, { + type: types[1], + value: values[2] + }]; + + if (values[3]) { + if (values[3] == " ") + tokens[1] = { type: types[1], value: values[2] + " " }; + else + tokens.push({ type: types[1], value: values[3] }); + } + var regex = stack[1]; + var str = values[4]; + + var m; + var last = 0; + if (regex && regex.exec) { + regex.lastIndex = 0; + while (m = regex.exec(str)) { + var skipped = str.substring(last, m.index); + last = regex.lastIndex; + if (skipped) + tokens.push({type: types[2], value: skipped}); + if (m[0]) + tokens.push({type: types[3], value: m[0]}); + else if (!skipped) + break; + } + } + if (last < str.length) + tokens.push({type: types[2], value: str.substr(last)}); + return tokens; + } + }, + { + regex : "^Searching for [^\\r\\n]*$", + onMatch: function(val, state, stack) { + var parts = val.split("\x01"); + if (parts.length < 3) + return "text"; + + var options, search; + + var i = 0; + var tokens = [{ + value: parts[i++] + "'", + type: "text" + }, { + value: search = parts[i++], + type: "text" // "c9searchresults.keyword" + }, { + value: "'" + parts[i++], + type: "text" + }]; + + // replaced + if (parts[2] !== " in") { + tokens.push({ + value: "'" + parts[i++] + "'", + type: "text" + }, { + value: parts[i++], + type: "text" + }); + } + // path + tokens.push({ + value: " " + parts[i++] + " ", + type: "text" + }); + // options + if (parts[i+1]) { + options = parts[i+1]; + tokens.push({ + value: "(" + parts[i+1] + ")", + type: "text" + }); + i += 1; + } else { + i -= 1; + } + while (i++ < parts.length) { + parts[i] && tokens.push({ + value: parts[i], + type: "text" + }); + } + + if (search) { + if (!/regex/.test(options)) + search = lang.escapeRegExp(search); + if (/whole/.test(options)) + search = "\\b" + search + "\\b"; + } + + var regex = search && safeCreateRegexp( + "(" + search + ")", + / sensitive/.test(options) ? "g" : "ig" + ); + if (regex) { + stack[0] = state; + stack[1] = regex; + } + + return tokens; + } + }, + { + regex : "^(?=Found \\d+ matches)", + token : "text", + next : "numbers" + }, + { + token : "string", // single line + regex : "^\\S:?[^:]+", + next : "numbers" + } + ], + numbers:[{ + regex : "\\d+", + token : "constant.numeric" + }, { + regex : "$", + token : "text", + next : "start" + }] + }; + this.normalizeRules(); +}; + +oop.inherits(C9SearchHighlightRules, TextHighlightRules); + +exports.C9SearchHighlightRules = C9SearchHighlightRules; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/c_cpp.js b/plugins/node_modules/ace/lib/ace/mode/c_cpp.js new file mode 100644 index 00000000..a2dc133f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/c_cpp.js @@ -0,0 +1,101 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = c_cppHighlightRules; + + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } else if (state == "doc-start") { + if (endState == "start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/c_cpp"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/c_cpp_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/c_cpp_highlight_rules.js new file mode 100644 index 00000000..20bbe5a0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/c_cpp_highlight_rules.js @@ -0,0 +1,199 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +// used by objective-c +var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; + +var c_cppHighlightRules = function() { + + var keywordControls = ( + "break|case|continue|default|do|else|for|goto|if|_Pragma|" + + "return|switch|while|catch|operator|try|throw|using" + ); + + var storageType = ( + "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + + "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + + "class|wchar_t|template|char16_t|char32_t" + ); + + var storageModifiers = ( + "const|extern|register|restrict|static|volatile|inline|private|" + + "protected|public|friend|explicit|virtual|export|mutable|typename|" + + "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" + ); + + var keywordOperators = ( + "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + + "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" + ); + + var builtinConstants = ( + "NULL|true|false|TRUE|FALSE|nullptr" + ); + + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "keyword.control" : keywordControls, + "storage.type" : storageType, + "storage.modifier" : storageModifiers, + "keyword.operator" : keywordOperators, + "variable.language": "this", + "constant.language": builtinConstants + }, "identifier"); + + var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; + var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; + var formatRe = "%" + + /(\d+\$)?/.source // field (argument #) + + /[#0\- +']*/.source // flags + + /[,;:_]?/.source // separator character (AltiVec) + + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "//$", + next : "start" + }, { + token : "comment", + regex : "//", + next : "singleLineComment" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string", // character + regex : "'(?:" + escapeRe + "|.)?'" + }, { + token : "string.start", + regex : '"', + stateName: "qqstring", + next: [ + { token: "string", regex: /\\\s*$/, next: "qqstring" }, + { token: "constant.language.escape", regex: escapeRe }, + { token: "constant.language.escape", regex: formatRe }, + { token: "string.end", regex: '"|$', next: "start" }, + { defaultToken: "string"} + ] + }, { + token : "string.start", + regex : 'R"\\(', + stateName: "rawString", + next: [ + { token: "string.end", regex: '\\)"', next: "start" }, + { defaultToken: "string"} + ] + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, { + token : "keyword", // pre-compiler directives + regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", + next : "directive" + }, { + token : "keyword", // special case pre-compiler directive + regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" + }, { + token : "support.function.C99.c", + regex : cFunctions + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" + }, { + token : "keyword.operator", + regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + }, { + token : "punctuation.operator", + regex : "\\?|\\:|\\,|\\;|\\." + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "singleLineComment" : [ + { + token : "comment", + regex : /\\$/, + next : "singleLineComment" + }, { + token : "comment", + regex : /$/, + next : "start" + }, { + defaultToken: "comment" + } + ], + "directive" : [ + { + token : "constant.other.multiline", + regex : /\\/ + }, + { + token : "constant.other.multiline", + regex : /.*\\/ + }, + { + token : "constant.other", + regex : "\\s*<.+?>", + next : "start" + }, + { + token : "constant.other", // single line + regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next : "start" + }, + { + token : "constant.other", // single line + regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next : "start" + }, + // "\" implies multiline, while "/" implies comment + { + token : "constant.other", + regex : /[^\\\/]+/, + next : "start" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); + this.normalizeRules(); +}; + +oop.inherits(c_cppHighlightRules, TextHighlightRules); + +exports.c_cppHighlightRules = c_cppHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/cirru.js b/plugins/node_modules/ace/lib/ace/mode/cirru.js new file mode 100644 index 00000000..75a4d0c4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/cirru.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CirruHighlightRules = require("./cirru_highlight_rules").CirruHighlightRules; +var CoffeeFoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = CirruHighlightRules; + this.foldingRules = new CoffeeFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.$id = "ace/mode/cirru"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/cirru_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/cirru_highlight_rules.js new file mode 100644 index 00000000..de283369 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/cirru_highlight_rules.js @@ -0,0 +1,125 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +// see http://cirru.org for more about this language +var CirruHighlightRules = function() { + this.$rules = { + start: [{ + token: 'constant.numeric', + regex: /[\d\.]+/ + }, { + token: 'comment.line.double-dash', + regex: /--/, + next: 'comment' + }, { + token: 'storage.modifier', + regex: /\(/ + }, { + token: 'storage.modifier', + regex: /,/, + next: 'line' + }, { + token: 'support.function', + regex: /[^\(\)"\s]+/, + next: 'line' + }, { + token: 'string.quoted.double', + regex: /"/, + next: 'string' + }, { + token: 'storage.modifier', + regex: /\)/ + }], + comment: [{ + token: 'comment.line.double-dash', + regex: / +[^\n]+/, + next: 'start' + }], + string: [{ + token: 'string.quoted.double', + regex: /"/, + next: 'line' + }, { + token: 'constant.character.escape', + regex: /\\/, + next: 'escape' + }, { + token: 'string.quoted.double', + regex: /[^\\"]+/ + }], + escape: [{ + token: 'constant.character.escape', + regex: /./, + next: 'string' + }], + line: [{ + token: 'constant.numeric', + regex: /[\d\.]+/ + }, { + token: 'markup.raw', + regex: /^\s*/, + next: 'start' + }, { + token: 'storage.modifier', + regex: /\$/, + next: 'start' + }, { + token: 'variable.parameter', + regex: /[^\(\)"\s]+/ + }, { + token: 'storage.modifier', + regex: /\(/, + next: 'start' + }, { + token: 'storage.modifier', + regex: /\)/ + }, { + token: 'markup.raw', + regex: /^ */, + next: 'start' + }, { + token: 'string.quoted.double', + regex: /"/, + next: 'string' + }] + }; + +}; + +oop.inherits(CirruHighlightRules, TextHighlightRules); + +exports.CirruHighlightRules = CirruHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/clojure.js b/plugins/node_modules/ace/lib/ace/mode/clojure.js new file mode 100644 index 00000000..6bb9b0ae --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/clojure.js @@ -0,0 +1,129 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ClojureHighlightRules = require("./clojure_highlight_rules").ClojureHighlightRules; +var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent; + +var Mode = function() { + this.HighlightRules = ClojureHighlightRules; + this.$outdent = new MatchingParensOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ";"; + this.minorIndentFunctions = ["defn", "defn-", "defmacro", "def", "deftest", "testing"]; + + this.$toIndent = function(str) { + return str.split('').map(function(ch) { + if (/\s/.exec(ch)) { + return ch; + } else { + return ' '; + } + }).join(''); + }; + + this.$calculateIndent = function(line, tab) { + var baseIndent = this.$getIndent(line); + var delta = 0; + var isParen, ch; + // Walk back from end of line, find matching braces + for (var i = line.length - 1; i >= 0; i--) { + ch = line[i]; + if (ch === '(') { + delta--; + isParen = true; + } else if (ch === '(' || ch === '[' || ch === '{') { + delta--; + isParen = false; + } else if (ch === ')' || ch === ']' || ch === '}') { + delta++; + } + if (delta < 0) { + break; + } + } + if (delta < 0 && isParen) { + // Were more brackets opened than closed and was a ( left open? + i += 1; + var iBefore = i; + var fn = ''; + while (true) { + ch = line[i]; + if (ch === ' ' || ch === '\t') { + if(this.minorIndentFunctions.indexOf(fn) !== -1) { + return this.$toIndent(line.substring(0, iBefore - 1) + tab); + } else { + return this.$toIndent(line.substring(0, i + 1)); + } + } else if (ch === undefined) { + return this.$toIndent(line.substring(0, iBefore - 1) + tab); + } + fn += line[i]; + i++; + } + } else if(delta < 0 && !isParen) { + // Were more brackets openend than closed and was it not a (? + return this.$toIndent(line.substring(0, i+1)); + } else if(delta > 0) { + // Mere more brackets closed than opened? Outdent. + baseIndent = baseIndent.substring(0, baseIndent.length - tab.length); + return baseIndent; + } else { + // Were they nicely matched? Just indent like line before. + return baseIndent; + } + }; + + this.getNextLineIndent = function(state, line, tab) { + return this.$calculateIndent(line, tab); + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/clojure"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/clojure_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/clojure_highlight_rules.js new file mode 100644 index 00000000..008d02ec --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/clojure_highlight_rules.js @@ -0,0 +1,200 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + + + +var ClojureHighlightRules = function() { + + var builtinFunctions = ( + '* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* ' + + '*command-line-args* *compile-files* *compile-path* *e *err* *file* ' + + '*flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* ' + + '*print-dup* *print-length* *print-level* *print-meta* *print-readably* ' + + '*read-eval* *source-path* *use-context-classloader* ' + + '*warn-on-reflection* + - -> ->> .. / < <= = ' + + '== > > >= >= accessor aclone ' + + 'add-classpath add-watch agent agent-errors aget alength alias all-ns ' + + 'alter alter-meta! alter-var-root amap ancestors and apply areduce ' + + 'array-map aset aset-boolean aset-byte aset-char aset-double aset-float ' + + 'aset-int aset-long aset-short assert assoc assoc! assoc-in associative? ' + + 'atom await await-for await1 bases bean bigdec bigint binding bit-and ' + + 'bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left ' + + 'bit-shift-right bit-test bit-xor boolean boolean-array booleans ' + + 'bound-fn bound-fn* butlast byte byte-array bytes cast char char-array ' + + 'char-escape-string char-name-string char? chars chunk chunk-append ' + + 'chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? ' + + 'class class? clear-agent-errors clojure-version coll? comment commute ' + + 'comp comparator compare compare-and-set! compile complement concat cond ' + + 'condp conj conj! cons constantly construct-proxy contains? count ' + + 'counted? create-ns create-struct cycle dec decimal? declare definline ' + + 'defmacro defmethod defmulti defn defn- defonce defstruct delay delay? ' + + 'deliver deref derive descendants destructure disj disj! dissoc dissoc! ' + + 'distinct distinct? doall doc dorun doseq dosync dotimes doto double ' + + 'double-array doubles drop drop-last drop-while empty empty? ensure ' + + 'enumeration-seq eval even? every? false? ffirst file-seq filter find ' + + 'find-doc find-ns find-var first float float-array float? floats flush ' + + 'fn fn? fnext for force format future future-call future-cancel ' + + 'future-cancelled? future-done? future? gen-class gen-interface gensym ' + + 'get get-in get-method get-proxy-class get-thread-bindings get-validator ' + + 'hash hash-map hash-set identical? identity if-let if-not ifn? import ' + + 'in-ns inc init-proxy instance? int int-array integer? interleave intern ' + + 'interpose into into-array ints io! isa? iterate iterator-seq juxt key ' + + 'keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list ' + + 'list* list? load load-file load-reader load-string loaded-libs locking ' + + 'long long-array longs loop macroexpand macroexpand-1 make-array ' + + 'make-hierarchy map map? mapcat max max-key memfn memoize merge ' + + 'merge-with meta method-sig methods min min-key mod name namespace neg? ' + + 'newline next nfirst nil? nnext not not-any? not-empty not-every? not= ' + + 'ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ' + + 'ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? ' + + 'or parents partial partition pcalls peek persistent! pmap pop pop! ' + + 'pop-thread-bindings pos? pr pr-str prefer-method prefers ' + + 'primitives-classnames print print-ctor print-doc print-dup print-method ' + + 'print-namespace-doc print-simple print-special-doc print-str printf ' + + 'println println-str prn prn-str promise proxy proxy-call-with-super ' + + 'proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot ' + + 'rand rand-int range ratio? rational? rationalize re-find re-groups ' + + 're-matcher re-matches re-pattern re-seq read read-line read-string ' + + 'reduce ref ref-history-count ref-max-history ref-min-history ref-set ' + + 'refer refer-clojure release-pending-sends rem remove remove-method ' + + 'remove-ns remove-watch repeat repeatedly replace replicate require ' + + 'reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq ' + + 'rsubseq second select-keys send send-off seq seq? seque sequence ' + + 'sequential? set set-validator! set? short short-array shorts ' + + 'shutdown-agents slurp some sort sort-by sorted-map sorted-map-by ' + + 'sorted-set sorted-set-by sorted? special-form-anchor special-symbol? ' + + 'split-at split-with str stream? string? struct struct-map subs subseq ' + + 'subvec supers swap! symbol symbol? sync syntax-symbol-anchor take ' + + 'take-last take-nth take-while test the-ns time to-array to-array-2d ' + + 'trampoline transient tree-seq true? type unchecked-add unchecked-dec ' + + 'unchecked-divide unchecked-inc unchecked-multiply unchecked-negate ' + + 'unchecked-remainder unchecked-subtract underive unquote ' + + 'unquote-splicing update-in update-proxy use val vals var-get var-set ' + + 'var? vary-meta vec vector vector? when when-first when-let when-not ' + + 'while with-bindings with-bindings* with-in-str with-loading-context ' + + 'with-local-vars with-meta with-open with-out-str with-precision xml-seq ' + + 'zero? zipmap' + ); + + var keywords = ('throw try var ' + + 'def do fn if let loop monitor-enter monitor-exit new quote recur set!' + ); + + var buildinConstants = ("true false nil"); + + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": builtinFunctions + }, "identifier", false, " "); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : ";.*$" + }, { + token : "keyword", //parens + regex : "[\\(|\\)]" + }, { + token : "keyword", //lists + regex : "[\\'\\(]" + }, { + token : "keyword", //vectors + regex : "[\\[|\\]]" + }, { + token : "keyword", //sets and maps + regex : "[\\{|\\}|\\#\\{|\\#\\}]" + }, { + token : "keyword", // ampersands + regex : '[\\&]' + }, { + token : "keyword", // metadata + regex : '[\\#\\^\\{]' + }, { + token : "keyword", // anonymous fn syntactic sugar + regex : '[\\%]' + }, { + token : "keyword", // deref reader macro + regex : '[@]' + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language", + regex : '[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]' + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" + }, { + token : "string", // single line + regex : '"', + next: "string" + }, { + token : "constant", // symbol + regex : /:[^()\[\]{}'"\^%`,;\s]+/ + }, { + token : "string.regexp", //Regular Expressions + regex : '/#"(?:\\.|(?:\\")|[^""\n])*"/g' + } + + ], + "string" : [ + { + token : "constant.language.escape", + regex : "\\\\.|\\\\$" + }, { + token : "string", + regex : '[^"\\\\]+' + }, { + token : "string", + regex : '"', + next : "start" + } + ] + }; +}; + +oop.inherits(ClojureHighlightRules, TextHighlightRules); + +exports.ClojureHighlightRules = ClojureHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/cobol.js b/plugins/node_modules/ace/lib/ace/mode/cobol.js new file mode 100644 index 00000000..3b325985 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/cobol.js @@ -0,0 +1,53 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CobolHighlightRules = require("./cobol_highlight_rules").CobolHighlightRules; + +var Mode = function() { + this.HighlightRules = CobolHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "*"; + + this.$id = "ace/mode/cobol"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/cobol_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/cobol_highlight_rules.js new file mode 100644 index 00000000..36335c93 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/cobol_highlight_rules.js @@ -0,0 +1,100 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var CobolHighlightRules = function() { +var keywords = "ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|" + +"AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|" + +"ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|" + +"TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|" + +"UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|" + +"PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|" + +"CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|" + +"COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|" + +"RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|" + +"DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|" + +"ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|" + +"EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT"; + + var builtinConstants = ( + "true|false|null" + ); + + var builtinFunctions = ( + "count|min|max|avg|sum|rank|now|coalesce|main" + ); + + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants + }, "identifier", true); + + this.$rules = { + "start" : [ { + token : "comment", + regex : "\\*.*$" + }, { + token : "string", // " string + regex : '".*?"' + }, { + token : "string", // ' string + regex : "'.*?'" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token : "paren.lparen", + regex : "[\\(]" + }, { + token : "paren.rparen", + regex : "[\\)]" + }, { + token : "text", + regex : "\\s+" + } ] + }; +}; + +oop.inherits(CobolHighlightRules, TextHighlightRules); + +exports.CobolHighlightRules = CobolHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/coffee.js b/plugins/node_modules/ace/lib/ace/mode/coffee.js new file mode 100644 index 00000000..9782fc71 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/coffee.js @@ -0,0 +1,116 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules; +var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var FoldMode = require("./folding/coffee").FoldMode; +var Range = require("../range").Range; +var TextMode = require("./text").Mode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var oop = require("../lib/oop"); + +function Mode() { + this.HighlightRules = Rules; + this.$outdent = new Outdent(); + this.foldingRules = new FoldMode(); +} + +oop.inherits(Mode, TextMode); + +(function() { + + /*: + [({[=:] # Opening parentheses or brackets + |[-=]> # OR single or double arrow + |\b(?: # OR one of these words: + else # else + |try # OR try + |(?:swi|ca)tch # OR catch, optionally followed by: + (?:\s*[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)? # a variable + |finally # OR finally + ))\s*$ # all as the last thing on a line (allowing trailing space) + | # ---- OR ---- : + ^\s* # a line starting with optional space + (else\b\s*)? # followed by an optional "else" + (?: # followed by one of the following: + if # if + |for # OR for + |while # OR while + |loop # OR loop + )\b # (as a word) + (?!.*\bthen\b) # ... but NOT followed by "then" on the line + */ + var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/; + + this.lineCommentStart = "#"; + this.blockComment = {start: "###", end: "###"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + + if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && + state === 'start' && indenter.test(line)) + indent += tab; + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + + worker.on("annotate", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/coffee"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/coffee/coffee.js b/plugins/node_modules/ace/lib/ace/mode/coffee/coffee.js new file mode 100644 index 00000000..f0b0fbc3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/coffee/coffee.js @@ -0,0 +1,15 @@ +define(function(require, exports, module) { +function define(f) { module.exports = f() }; define.amd = {}; +/** + * CoffeeScript Compiler v1.9.3 + * http://coffeescript.org + * + * Copyright 2011, Jeremy Ashkenas + * Released under the MIT License + */ +(function(root){var CoffeeScript=function(){function _dereq_(e){return _dereq_[e]}return _dereq_["./helpers"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o;e.starts=function(e,t,n){return t===e.substr(n,t.length)},e.ends=function(e,t,n){var i;return i=t.length,t===e.substr(e.length-i-(n||0),i)},e.repeat=s=function(e,t){var n;for(n="";t>0;)1&t&&(n+=e),t>>>=1,e+=e;return n},e.compact=function(e){var t,n,i,r;for(r=[],t=0,i=e.length;i>t;t++)n=e[t],n&&r.push(n);return r},e.count=function(e,t){var n,i;if(n=i=0,!t.length)return 1/0;for(;i=1+e.indexOf(t,i);)n++;return n},e.merge=function(e,t){return n(n({},e),t)},n=e.extend=function(e,t){var n,i;for(n in t)i=t[n],e[n]=i;return e},e.flatten=i=function(e){var t,n,r,s;for(n=[],r=0,s=e.length;s>r;r++)t=e[r],t instanceof Array?n=n.concat(i(t)):n.push(t);return n},e.del=function(e,t){var n;return n=e[t],delete e[t],n},e.some=null!=(r=Array.prototype.some)?r:function(e){var t,n,i;for(n=0,i=this.length;i>n;n++)if(t=this[n],e(t))return!0;return!1},e.invertLiterate=function(e){var t,n,i;return i=!0,n=function(){var n,r,s,o;for(s=e.split("\n"),o=[],n=0,r=s.length;r>n;n++)t=s[n],i&&/^([ ]{4}|[ ]{0,3}\t)/.test(t)?o.push(t):(i=/^\s*$/.test(t))?o.push(t):o.push("# "+t);return o}(),n.join("\n")},t=function(e,t){return t?{first_line:e.first_line,first_column:e.first_column,last_line:t.last_line,last_column:t.last_column}:e},e.addLocationDataFn=function(e,n){return function(i){return"object"==typeof i&&i.updateLocationDataIfMissing&&i.updateLocationDataIfMissing(t(e,n)),i}},e.locationDataToString=function(e){var t;return"2"in e&&"first_line"in e[2]?t=e[2]:"first_line"in e&&(t=e),t?t.first_line+1+":"+(t.first_column+1)+"-"+(t.last_line+1+":"+(t.last_column+1)):"No location data"},e.baseFileName=function(e,t,n){var i,r;return null==t&&(t=!1),null==n&&(n=!1),r=n?/\\|\//:/\//,i=e.split(r),e=i[i.length-1],t&&e.indexOf(".")>=0?(i=e.split("."),i.pop(),"coffee"===i[i.length-1]&&i.length>1&&i.pop(),i.join(".")):e},e.isCoffee=function(e){return/\.((lit)?coffee|coffee\.md)$/.test(e)},e.isLiterate=function(e){return/\.(litcoffee|coffee\.md)$/.test(e)},e.throwSyntaxError=function(e,t){var n;throw n=new SyntaxError(e),n.location=t,n.toString=o,n.stack=""+n,n},e.updateSyntaxError=function(e,t,n){return e.toString===o&&(e.code||(e.code=t),e.filename||(e.filename=n),e.stack=""+e),e},o=function(){var e,t,n,i,r,o,a,c,h,l,u,p,d,f,m;return this.code&&this.location?(u=this.location,a=u.first_line,o=u.first_column,h=u.last_line,c=u.last_column,null==h&&(h=a),null==c&&(c=o),r=this.filename||"[stdin]",e=this.code.split("\n")[a],m=o,i=a===h?c+1:e.length,l=e.slice(0,m).replace(/[^\s]/g," ")+s("^",i-m),"undefined"!=typeof process&&null!==process&&(n=(null!=(p=process.stdout)?p.isTTY:void 0)&&!(null!=(d=process.env)?d.NODE_DISABLE_COLORS:void 0)),(null!=(f=this.colorful)?f:n)&&(t=function(e){return""+e+""},e=e.slice(0,m)+t(e.slice(m,i))+e.slice(i),l=t(l)),r+":"+(a+1)+":"+(o+1)+": error: "+this.message+"\n"+e+"\n"+l):Error.prototype.toString.call(this)},e.nameWhitespaceCharacter=function(e){switch(e){case" ":return"space";case"\n":return"newline";case"\r":return"carriage return";case" ":return"tab";default:return e}}}.call(this),t.exports}(),_dereq_["./rewriter"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y,b,k=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},w=[].slice;for(f=function(e,t,n){var i;return i=[e,t],i.generated=!0,n&&(i.origin=n),i},e.Rewriter=function(){function e(){}return e.prototype.rewrite=function(e){return this.tokens=e,this.removeLeadingNewlines(),this.closeOpenCalls(),this.closeOpenIndexes(),this.normalizeLines(),this.tagPostfixConditionals(),this.addImplicitBracesAndParens(),this.addLocationDataToGeneratedTokens(),this.tokens},e.prototype.scanTokens=function(e){var t,n,i;for(i=this.tokens,t=0;n=i[t];)t+=e.call(this,n,t,i);return!0},e.prototype.detectEnd=function(e,t,n){var i,o,a,c,h;for(h=this.tokens,i=0;c=h[e];){if(0===i&&t.call(this,c,e))return n.call(this,c,e);if(!c||0>i)return n.call(this,c,e-1);o=c[0],k.call(s,o)>=0?i+=1:(a=c[0],k.call(r,a)>=0&&(i-=1)),e+=1}return e-1},e.prototype.removeLeadingNewlines=function(){var e,t,n,i,r;for(i=this.tokens,e=t=0,n=i.length;n>t&&(r=i[e][0],"TERMINATOR"===r);e=++t);return e?this.tokens.splice(0,e):void 0},e.prototype.closeOpenCalls=function(){var e,t;return t=function(e,t){var n;return")"===(n=e[0])||"CALL_END"===n||"OUTDENT"===e[0]&&")"===this.tag(t-1)},e=function(e,t){return this.tokens["OUTDENT"===e[0]?t-1:t][0]="CALL_END"},this.scanTokens(function(n,i){return"CALL_START"===n[0]&&this.detectEnd(i+1,t,e),1})},e.prototype.closeOpenIndexes=function(){var e,t;return t=function(e){var t;return"]"===(t=e[0])||"INDEX_END"===t},e=function(e){return e[0]="INDEX_END"},this.scanTokens(function(n,i){return"INDEX_START"===n[0]&&this.detectEnd(i+1,t,e),1})},e.prototype.indexOfTag=function(){var e,t,n,i,r,s,o;for(t=arguments[0],r=arguments.length>=2?w.call(arguments,1):[],e=0,n=i=0,s=r.length;s>=0?s>i:i>s;n=s>=0?++i:--i){for(;"HERECOMMENT"===this.tag(t+n+e);)e+=2;if(null!=r[n]&&("string"==typeof r[n]&&(r[n]=[r[n]]),o=this.tag(t+n+e),0>k.call(r[n],o)))return-1}return t+n+e-1},e.prototype.looksObjectish=function(e){var t,n;return this.indexOfTag(e,"@",null,":")>-1||this.indexOfTag(e,null,":")>-1?!0:(n=this.indexOfTag(e,s),n>-1&&(t=null,this.detectEnd(n+1,function(e){var t;return t=e[0],k.call(r,t)>=0},function(e,n){return t=n}),":"===this.tag(t+1))?!0:!1)},e.prototype.findTagsBackwards=function(e,t){var n,i,o,a,c,h,l;for(n=[];e>=0&&(n.length||(a=this.tag(e),0>k.call(t,a)&&(c=this.tag(e),0>k.call(s,c)||this.tokens[e].generated)&&(h=this.tag(e),0>k.call(u,h))));)i=this.tag(e),k.call(r,i)>=0&&n.push(this.tag(e)),o=this.tag(e),k.call(s,o)>=0&&n.length&&n.pop(),e-=1;return l=this.tag(e),k.call(t,l)>=0},e.prototype.addImplicitBracesAndParens=function(){var e,t;return e=[],t=null,this.scanTokens(function(i,l,p){var d,m,g,v,y,b,w,T,C,E,F,N,L,x,S,D,R,A,I,_,O,$,j,M,B,V,P,U;if(U=i[0],F=(N=l>0?p[l-1]:[])[0],C=(p.length-1>l?p[l+1]:[])[0],j=function(){return e[e.length-1]},M=l,g=function(e){return l-M+e},v=function(){var e,t;return null!=(e=j())?null!=(t=e[2])?t.ours:void 0:void 0},y=function(){var e;return v()&&"("===(null!=(e=j())?e[0]:void 0)},w=function(){var e;return v()&&"{"===(null!=(e=j())?e[0]:void 0)},b=function(){var e;return v&&"CONTROL"===(null!=(e=j())?e[0]:void 0)},B=function(t){var n;return n=null!=t?t:l,e.push(["(",n,{ours:!0}]),p.splice(n,0,f("CALL_START","(")),null==t?l+=1:void 0},d=function(){return e.pop(),p.splice(l,0,f("CALL_END",")",["","end of input",i[2]])),l+=1},V=function(t,n){var r,s;return null==n&&(n=!0),r=null!=t?t:l,e.push(["{",r,{sameLine:!0,startsLine:n,ours:!0}]),s=new String("{"),s.generated=!0,p.splice(r,0,f("{",s,i)),null==t?l+=1:void 0},m=function(t){return t=null!=t?t:l,e.pop(),p.splice(t,0,f("}","}",i)),l+=1},y()&&("IF"===U||"TRY"===U||"FINALLY"===U||"CATCH"===U||"CLASS"===U||"SWITCH"===U))return e.push(["CONTROL",l,{ours:!0}]),g(1);if("INDENT"===U&&v()){if("=>"!==F&&"->"!==F&&"["!==F&&"("!==F&&","!==F&&"{"!==F&&"TRY"!==F&&"ELSE"!==F&&"="!==F)for(;y();)d();return b()&&e.pop(),e.push([U,l]),g(1)}if(k.call(s,U)>=0)return e.push([U,l]),g(1);if(k.call(r,U)>=0){for(;v();)y()?d():w()?m():e.pop();t=e.pop()}if((k.call(c,U)>=0&&i.spaced||"?"===U&&l>0&&!p[l-1].spaced)&&(k.call(o,C)>=0||k.call(h,C)>=0&&!(null!=(L=p[l+1])?L.spaced:void 0)&&!(null!=(x=p[l+1])?x.newLine:void 0)))return"?"===U&&(U=i[0]="FUNC_EXIST"),B(l+1),g(2);if(k.call(c,U)>=0&&this.indexOfTag(l+1,"INDENT")>-1&&this.looksObjectish(l+2)&&!this.findTagsBackwards(l,["CLASS","EXTENDS","IF","CATCH","SWITCH","LEADING_WHEN","FOR","WHILE","UNTIL"]))return B(l+1),e.push(["INDENT",l+2]),g(3);if(":"===U){for(I=function(){var e;switch(!1){case e=this.tag(l-1),0>k.call(r,e):return t[1];case"@"!==this.tag(l-2):return l-2;default:return l-1}}.call(this);"HERECOMMENT"===this.tag(I-2);)I-=2;return this.insideForDeclaration="FOR"===C,P=0===I||(S=this.tag(I-1),k.call(u,S)>=0)||p[I-1].newLine,j()&&(D=j(),$=D[0],O=D[1],("{"===$||"INDENT"===$&&"{"===this.tag(O-1))&&(P||","===this.tag(I-1)||"{"===this.tag(I-1)))?g(1):(V(I,!!P),g(2))}if(w()&&k.call(u,U)>=0&&(j()[2].sameLine=!1),T="OUTDENT"===F||N.newLine,k.call(a,U)>=0||k.call(n,U)>=0&&T)for(;v();)if(R=j(),$=R[0],O=R[1],A=R[2],_=A.sameLine,P=A.startsLine,y()&&","!==F)d();else if(w()&&!this.insideForDeclaration&&_&&"TERMINATOR"!==U&&":"!==F)m();else{if(!w()||"TERMINATOR"!==U||","===F||P&&this.looksObjectish(l+1))break;if("HERECOMMENT"===C)return g(1);m()}if(!(","!==U||this.looksObjectish(l+1)||!w()||this.insideForDeclaration||"TERMINATOR"===C&&this.looksObjectish(l+2)))for(E="OUTDENT"===C?1:0;w();)m(l+E);return g(1)})},e.prototype.addLocationDataToGeneratedTokens=function(){return this.scanTokens(function(e,t,n){var i,r,s,o,a,c;return e[2]?1:e.generated||e.explicit?("{"===e[0]&&(s=null!=(a=n[t+1])?a[2]:void 0)?(r=s.first_line,i=s.first_column):(o=null!=(c=n[t-1])?c[2]:void 0)?(r=o.last_line,i=o.last_column):r=i=0,e[2]={first_line:r,first_column:i,last_line:r,last_column:i},1):1})},e.prototype.normalizeLines=function(){var e,t,r,s,o;return o=r=s=null,t=function(e,t){var r,s,a,c;return";"!==e[1]&&(r=e[0],k.call(p,r)>=0)&&!("TERMINATOR"===e[0]&&(s=this.tag(t+1),k.call(i,s)>=0))&&!("ELSE"===e[0]&&"THEN"!==o)&&!!("CATCH"!==(a=e[0])&&"FINALLY"!==a||"->"!==o&&"=>"!==o)||(c=e[0],k.call(n,c)>=0&&this.tokens[t-1].newLine)},e=function(e,t){return this.tokens.splice(","===this.tag(t-1)?t-1:t,0,s)},this.scanTokens(function(n,a,c){var h,l,u,p,f,m;if(m=n[0],"TERMINATOR"===m){if("ELSE"===this.tag(a+1)&&"OUTDENT"!==this.tag(a-1))return c.splice.apply(c,[a,1].concat(w.call(this.indentation()))),1;if(u=this.tag(a+1),k.call(i,u)>=0)return c.splice(a,1),0}if("CATCH"===m)for(h=l=1;2>=l;h=++l)if("OUTDENT"===(p=this.tag(a+h))||"TERMINATOR"===p||"FINALLY"===p)return c.splice.apply(c,[a+h,0].concat(w.call(this.indentation()))),2+h;return k.call(d,m)>=0&&"INDENT"!==this.tag(a+1)&&("ELSE"!==m||"IF"!==this.tag(a+1))?(o=m,f=this.indentation(c[a]),r=f[0],s=f[1],"THEN"===o&&(r.fromThen=!0),c.splice(a+1,0,r),this.detectEnd(a+2,t,e),"THEN"===m&&c.splice(a,1),1):1})},e.prototype.tagPostfixConditionals=function(){var e,t,n;return n=null,t=function(e,t){var n,i;return i=e[0],n=this.tokens[t-1][0],"TERMINATOR"===i||"INDENT"===i&&0>k.call(d,n)},e=function(e){return"INDENT"!==e[0]||e.generated&&!e.fromThen?n[0]="POST_"+n[0]:void 0},this.scanTokens(function(i,r){return"IF"!==i[0]?1:(n=i,this.detectEnd(r+1,t,e),1)})},e.prototype.indentation=function(e){var t,n;return t=["INDENT",2],n=["OUTDENT",2],e?(t.generated=n.generated=!0,t.origin=n.origin=e):t.explicit=n.explicit=!0,[t,n]},e.prototype.generate=f,e.prototype.tag=function(e){var t;return null!=(t=this.tokens[e])?t[0]:void 0},e}(),t=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]],e.INVERSES=l={},s=[],r=[],m=0,v=t.length;v>m;m++)y=t[m],g=y[0],b=y[1],s.push(l[b]=g),r.push(l[g]=b);i=["CATCH","THEN","ELSE","FINALLY"].concat(r),c=["IDENTIFIER","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],o=["IDENTIFIER","NUMBER","STRING","STRING_START","JS","REGEX","REGEX_START","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","BOOL","NULL","UNDEFINED","UNARY","YIELD","UNARY_MATH","SUPER","THROW","@","->","=>","[","(","{","--","++"],h=["+","-"],a=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],d=["ELSE","->","=>","TRY","FINALLY","THEN"],p=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],u=["TERMINATOR","INDENT","OUTDENT"],n=[".","?.","::","?::"]}.call(this),t.exports}(),_dereq_["./lexer"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y,b,k,w,T,C,E,F,N,L,x,S,D,R,A,I,_,O,$,j,M,B,V,P,U,G,H,q,X,W,Y,K,z,J,Q,Z,et,tt,nt,it,rt,st,ot,at,ct,ht,lt,ut=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};ot=_dereq_("./rewriter"),P=ot.Rewriter,w=ot.INVERSES,at=_dereq_("./helpers"),nt=at.count,ht=at.starts,tt=at.compact,ct=at.repeat,it=at.invertLiterate,st=at.locationDataToString,lt=at.throwSyntaxError,e.Lexer=S=function(){function e(){}return e.prototype.tokenize=function(e,t){var n,i,r,s;for(null==t&&(t={}),this.literate=t.literate,this.indent=0,this.baseIndent=0,this.indebt=0,this.outdebt=0,this.indents=[],this.ends=[],this.tokens=[],this.chunkLine=t.line||0,this.chunkColumn=t.column||0,e=this.clean(e),r=0;this.chunk=e.slice(r);)if(n=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.stringToken()||this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken(),s=this.getLineAndColumnFromChunk(n),this.chunkLine=s[0],this.chunkColumn=s[1],r+=n,t.untilBalanced&&0===this.ends.length)return{tokens:this.tokens,index:r};return this.closeIndentation(),(i=this.ends.pop())&&this.error("missing "+i.tag,i.origin[2]),t.rewrite===!1?this.tokens:(new P).rewrite(this.tokens)},e.prototype.clean=function(e){return e.charCodeAt(0)===t&&(e=e.slice(1)),e=e.replace(/\r/g,"").replace(z,""),et.test(e)&&(e="\n"+e,this.chunkLine--),this.literate&&(e=it(e)),e},e.prototype.identifierToken=function(){var e,t,n,i,r,c,h,l,u,p,d,f,m,g,y,b;return(l=v.exec(this.chunk))?(h=l[0],r=l[1],t=l[2],c=r.length,u=void 0,"own"===r&&"FOR"===this.tag()?(this.token("OWN",r),r.length):"from"===r&&"YIELD"===this.tag()?(this.token("FROM",r),r.length):(d=this.tokens,p=d[d.length-1],i=t||null!=p&&("."===(f=p[0])||"?."===f||"::"===f||"?::"===f||!p.spaced&&"@"===p[0]),y="IDENTIFIER",!i&&(ut.call(E,r)>=0||ut.call(a,r)>=0)&&(y=r.toUpperCase(),"WHEN"===y&&(m=this.tag(),ut.call(N,m)>=0)?y="LEADING_WHEN":"FOR"===y?this.seenFor=!0:"UNLESS"===y?y="IF":ut.call(J,y)>=0?y="UNARY":ut.call(B,y)>=0&&("INSTANCEOF"!==y&&this.seenFor?(y="FOR"+y,this.seenFor=!1):(y="RELATION","!"===this.value()&&(u=this.tokens.pop(),r="!"+r)))),ut.call(C,r)>=0&&(i?(y="IDENTIFIER",r=new String(r),r.reserved=!0):ut.call(V,r)>=0&&this.error("reserved word '"+r+"'",{length:r.length})),i||(ut.call(s,r)>=0&&(e=r,r=o[r]),y=function(){switch(r){case"!":return"UNARY";case"==":case"!=":return"COMPARE";case"&&":case"||":return"LOGIC";case"true":case"false":return"BOOL";case"break":case"continue":return"STATEMENT";default:return y}}()),b=this.token(y,r,0,c),e&&(b.origin=[y,e,b[2]]),b.variable=!i,u&&(g=[u[2].first_line,u[2].first_column],b[2].first_line=g[0],b[2].first_column=g[1]),t&&(n=h.lastIndexOf(":"),this.token(":",":",n,t.length)),h.length)):0},e.prototype.numberToken=function(){var e,t,n,i,r;return(n=I.exec(this.chunk))?(i=n[0],t=i.length,/^0[BOX]/.test(i)?this.error("radix prefix in '"+i+"' must be lowercase",{offset:1}):/E/.test(i)&&!/^0x/.test(i)?this.error("exponential notation in '"+i+"' must be indicated with a lowercase 'e'",{offset:i.indexOf("E")}):/^0\d*[89]/.test(i)?this.error("decimal literal '"+i+"' must not be prefixed with '0'",{length:t}):/^0\d+/.test(i)&&this.error("octal literal '"+i+"' must be prefixed with '0o'",{length:t}),(r=/^0o([0-7]+)/.exec(i))&&(i="0x"+parseInt(r[1],8).toString(16)),(e=/^0b([01]+)/.exec(i))&&(i="0x"+parseInt(e[1],2).toString(16)),this.token("NUMBER",i,0,t),t):0},e.prototype.stringToken=function(){var e,t,n,i,r,s,o,a,c,h,l,u,m,g,v,y;if(l=(Y.exec(this.chunk)||[])[0],!l)return 0;if(g=function(){switch(l){case"'":return W;case'"':return q;case"'''":return f;case'"""':return p}}(),s=3===l.length,u=this.matchWithInterpolations(g,l),y=u.tokens,r=u.index,e=y.length-1,n=l.charAt(0),s){for(a=null,i=function(){var e,t,n;for(n=[],o=e=0,t=y.length;t>e;o=++e)v=y[o],"NEOSTRING"===v[0]&&n.push(v[1]);return n}().join("#{}");h=d.exec(i);)t=h[1],(null===a||(m=t.length)>0&&a.length>m)&&(a=t);a&&(c=RegExp("^"+a,"gm")),this.mergeInterpolationTokens(y,{delimiter:n},function(t){return function(n,i){return n=t.formatString(n),0===i&&(n=n.replace(F,"")),i===e&&(n=n.replace(K,"")),c&&(n=n.replace(c,"")),n}}(this))}else this.mergeInterpolationTokens(y,{delimiter:n},function(t){return function(n,i){return n=t.formatString(n),n=n.replace(G,function(t,r){return 0===i&&0===r||i===e&&r+t.length===n.length?"":" "})}}(this));return r},e.prototype.commentToken=function(){var e,t,n;return(n=this.chunk.match(c))?(e=n[0],t=n[1],t&&((n=u.exec(e))&&this.error("block comments cannot contain "+n[0],{offset:n.index,length:n[0].length}),t.indexOf("\n")>=0&&(t=t.replace(RegExp("\\n"+ct(" ",this.indent),"g"),"\n")),this.token("HERECOMMENT",t,0,e.length)),e.length):0},e.prototype.jsToken=function(){var e,t;return"`"===this.chunk.charAt(0)&&(e=T.exec(this.chunk))?(this.token("JS",(t=e[0]).slice(1,-1),0,t.length),t.length):0},e.prototype.regexToken=function(){var e,t,n,r,s,o,a,c,h,l,u,p,d;switch(!1){case!(o=M.exec(this.chunk)):this.error("regular expressions cannot begin with "+o[2],{offset:o.index+o[1].length});break;case!(o=this.matchWithInterpolations(m,"///")):d=o.tokens,s=o.index;break;case!(o=$.exec(this.chunk)):if(p=o[0],e=o[1],t=o[2],this.validateEscapes(e,{isRegex:!0,offsetInChunk:1}),s=p.length,h=this.tokens,c=h[h.length-1],c)if(c.spaced&&(l=c[0],ut.call(i,l)>=0)){if(!t||O.test(p))return 0}else if(u=c[0],ut.call(A,u)>=0)return 0;t||this.error("missing / (unclosed regex)");break;default:return 0}switch(r=j.exec(this.chunk.slice(s))[0],n=s+r.length,a=this.makeToken("REGEX",null,0,n),!1){case!!Z.test(r):this.error("invalid regular expression flags "+r,{offset:s,length:r.length});break;case!(p||1===d.length):null==e&&(e=this.formatHeregex(d[0][1])),this.token("REGEX",""+this.makeDelimitedLiteral(e,{delimiter:"/"})+r,0,n,a);break;default:this.token("REGEX_START","(",0,0,a),this.token("IDENTIFIER","RegExp",0,0),this.token("CALL_START","(",0,0),this.mergeInterpolationTokens(d,{delimiter:'"',"double":!0},this.formatHeregex),r&&(this.token(",",",",s,0),this.token("STRING",'"'+r+'"',s,r.length)),this.token(")",")",n,0),this.token("REGEX_END",")",n,0)}return n},e.prototype.lineToken=function(){var e,t,n,i,r;if(!(n=R.exec(this.chunk)))return 0;if(t=n[0],this.seenFor=!1,r=t.length-1-t.lastIndexOf("\n"),i=this.unfinished(),r-this.indebt===this.indent)return i?this.suppressNewlines():this.newlineToken(0),t.length;if(r>this.indent){if(i)return this.indebt=r-this.indent,this.suppressNewlines(),t.length;if(!this.tokens.length)return this.baseIndent=this.indent=r,t.length;e=r-this.indent+this.outdebt,this.token("INDENT",e,t.length-r,r),this.indents.push(e),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.indebt=0,this.indent=r}else this.baseIndent>r?this.error("missing indentation",{offset:t.length}):(this.indebt=0,this.outdentToken(this.indent-r,i,t.length));return t.length},e.prototype.outdentToken=function(e,t,n){var i,r,s,o;for(i=this.indent-e;e>0;)s=this.indents[this.indents.length-1],s?s===this.outdebt?(e-=this.outdebt,this.outdebt=0):this.outdebt>s?(this.outdebt-=s,e-=s):(r=this.indents.pop()+this.outdebt,n&&(o=this.chunk[n],ut.call(y,o)>=0)&&(i-=r-e,e=r),this.outdebt=0,this.pair("OUTDENT"),this.token("OUTDENT",e,0,n),e-=r):e=0;for(r&&(this.outdebt-=e);";"===this.value();)this.tokens.pop();return"TERMINATOR"===this.tag()||t||this.token("TERMINATOR","\n",n,0),this.indent=i,this},e.prototype.whitespaceToken=function(){var e,t,n,i;return(e=et.exec(this.chunk))||(t="\n"===this.chunk.charAt(0))?(i=this.tokens,n=i[i.length-1],n&&(n[e?"spaced":"newLine"]=!0),e?e[0].length:0):0},e.prototype.newlineToken=function(e){for(;";"===this.value();)this.tokens.pop();return"TERMINATOR"!==this.tag()&&this.token("TERMINATOR","\n",e,0),this},e.prototype.suppressNewlines=function(){return"\\"===this.value()&&this.tokens.pop(),this},e.prototype.literalToken=function(){var e,t,n,s,o,a,c,u,p,d;if((e=_.exec(this.chunk))?(d=e[0],r.test(d)&&this.tagParameters()):d=this.chunk.charAt(0),u=d,n=this.tokens,t=n[n.length-1],"="===d&&t&&(!t[1].reserved&&(s=t[1],ut.call(C,s)>=0)&&(t.origin&&(t=t.origin),this.error("reserved word '"+t[1]+"' can't be assigned",t[2])),"||"===(o=t[1])||"&&"===o))return t[0]="COMPOUND_ASSIGN",t[1]+="=",d.length;if(";"===d)this.seenFor=!1,u="TERMINATOR";else if(ut.call(D,d)>=0)u="MATH";else if(ut.call(h,d)>=0)u="COMPARE";else if(ut.call(l,d)>=0)u="COMPOUND_ASSIGN";else if(ut.call(J,d)>=0)u="UNARY";else if(ut.call(Q,d)>=0)u="UNARY_MATH";else if(ut.call(U,d)>=0)u="SHIFT";else if(ut.call(x,d)>=0||"?"===d&&(null!=t?t.spaced:void 0))u="LOGIC";else if(t&&!t.spaced)if("("===d&&(a=t[0],ut.call(i,a)>=0))"?"===t[0]&&(t[0]="FUNC_EXIST"),u="CALL_START";else if("["===d&&(c=t[0],ut.call(b,c)>=0))switch(u="INDEX_START",t[0]){case"?":t[0]="INDEX_SOAK"}switch(p=this.makeToken(u,d),d){case"(":case"{":case"[":this.ends.push({tag:w[d],origin:p});break;case")":case"}":case"]":this.pair(d)}return this.tokens.push(p),d.length},e.prototype.tagParameters=function(){var e,t,n,i;if(")"!==this.tag())return this;for(t=[],i=this.tokens,e=i.length,i[--e][0]="PARAM_END";n=i[--e];)switch(n[0]){case")":t.push(n);break;case"(":case"CALL_START":if(!t.length)return"("===n[0]?(n[0]="PARAM_START",this):this;t.pop()}return this},e.prototype.closeIndentation=function(){return this.outdentToken(this.indent)},e.prototype.matchWithInterpolations=function(t,n){var i,r,s,o,a,c,h,l,u,p,d,f,m,g,v;if(v=[],l=n.length,this.chunk.slice(0,l)!==n)return null;for(m=this.chunk.slice(l);;){if(g=t.exec(m)[0],this.validateEscapes(g,{isRegex:"/"===n.charAt(0),offsetInChunk:l}),v.push(this.makeToken("NEOSTRING",g,l)),m=m.slice(g.length),l+=g.length,"#{"!==m.slice(0,2))break;p=this.getLineAndColumnFromChunk(l+1),c=p[0],r=p[1],d=(new e).tokenize(m.slice(1),{line:c,column:r,untilBalanced:!0}),h=d.tokens,o=d.index,o+=1,u=h[0],i=h[h.length-1],u[0]=u[1]="(",i[0]=i[1]=")",i.origin=["","end of interpolation",i[2]],"TERMINATOR"===(null!=(f=h[1])?f[0]:void 0)&&h.splice(1,1),v.push(["TOKENS",h]),m=m.slice(o),l+=o}return m.slice(0,n.length)!==n&&this.error("missing "+n,{length:n.length}),s=v[0],a=v[v.length-1],s[2].first_column-=n.length,a[2].last_column+=n.length,0===a[1].length&&(a[2].last_column-=1),{tokens:v,index:l+n.length}},e.prototype.mergeInterpolationTokens=function(e,t,n){var i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y;for(e.length>1&&(u=this.token("STRING_START","(",0,0)),s=this.tokens.length,o=a=0,h=e.length;h>a;o=++a){switch(g=e[o],m=g[0],y=g[1],m){case"TOKENS":if(2===y.length)continue;l=y[0],v=y;break;case"NEOSTRING":if(i=n(g[1],o),0===i.length){if(0!==o)continue;r=this.tokens.length}2===o&&null!=r&&this.tokens.splice(r,2),g[0]="STRING",g[1]=this.makeDelimitedLiteral(i,t),l=g,v=[g]}this.tokens.length>s&&(p=this.token("+","+"),p[2]={first_line:l[2].first_line,first_column:l[2].first_column,last_line:l[2].first_line,last_column:l[2].first_column}),(d=this.tokens).push.apply(d,v)}return u?(c=e[e.length-1],u.origin=["STRING",null,{first_line:u[2].first_line,first_column:u[2].first_column,last_line:c[2].last_line,last_column:c[2].last_column}],f=this.token("STRING_END",")"),f[2]={first_line:c[2].last_line,first_column:c[2].last_column,last_line:c[2].last_line,last_column:c[2].last_column}):void 0},e.prototype.pair=function(e){var t,n,i,r,s;return i=this.ends,n=i[i.length-1],e!==(s=null!=n?n.tag:void 0)?("OUTDENT"!==s&&this.error("unmatched "+e),r=this.indents,t=r[r.length-1],this.outdentToken(t,!0),this.pair(e)):this.ends.pop()},e.prototype.getLineAndColumnFromChunk=function(e){var t,n,i,r,s;return 0===e?[this.chunkLine,this.chunkColumn]:(s=e>=this.chunk.length?this.chunk:this.chunk.slice(0,+(e-1)+1||9e9),i=nt(s,"\n"),t=this.chunkColumn,i>0?(r=s.split("\n"),n=r[r.length-1],t=n.length):t+=s.length,[this.chunkLine+i,t])},e.prototype.makeToken=function(e,t,n,i){var r,s,o,a,c;return null==n&&(n=0),null==i&&(i=t.length),s={},o=this.getLineAndColumnFromChunk(n),s.first_line=o[0],s.first_column=o[1],r=Math.max(0,i-1),a=this.getLineAndColumnFromChunk(n+r),s.last_line=a[0],s.last_column=a[1],c=[e,t,s]},e.prototype.token=function(e,t,n,i,r){var s;return s=this.makeToken(e,t,n,i),r&&(s.origin=r),this.tokens.push(s),s},e.prototype.tag=function(){var e,t;return e=this.tokens,t=e[e.length-1],null!=t?t[0]:void 0},e.prototype.value=function(){var e,t;return e=this.tokens,t=e[e.length-1],null!=t?t[1]:void 0},e.prototype.unfinished=function(){var e;return L.test(this.chunk)||"\\"===(e=this.tag())||"."===e||"?."===e||"?::"===e||"UNARY"===e||"MATH"===e||"UNARY_MATH"===e||"+"===e||"-"===e||"YIELD"===e||"**"===e||"SHIFT"===e||"RELATION"===e||"COMPARE"===e||"LOGIC"===e||"THROW"===e||"EXTENDS"===e},e.prototype.formatString=function(e){return e.replace(X,"$1")},e.prototype.formatHeregex=function(e){return e.replace(g,"$1$2")},e.prototype.validateEscapes=function(e,t){var n,i,r,s,o,a,c,h;return null==t&&(t={}),s=k.exec(e),!s||(s[0],n=s[1],a=s[2],i=s[3],h=s[4],t.isRegex&&a&&"0"!==a.charAt(0))?void 0:(o=a?"octal escape sequences are not allowed":"invalid escape sequence",r="\\"+(a||i||h),this.error(o+" "+r,{offset:(null!=(c=t.offsetInChunk)?c:0)+s.index+n.length,length:r.length}))},e.prototype.makeDelimitedLiteral=function(e,t){var n;return null==t&&(t={}),""===e&&"/"===t.delimiter&&(e="(?:)"),n=RegExp("(\\\\\\\\)|(\\\\0(?=[1-7]))|\\\\?("+t.delimiter+")|\\\\?(?:(\\n)|(\\r)|(\\u2028)|(\\u2029))|(\\\\.)","g"),e=e.replace(n,function(e,n,i,r,s,o,a,c,h){switch(!1){case!n:return t.double?n+n:n;case!i:return"\\x00";case!r:return"\\"+r;case!s:return"\\n";case!o:return"\\r";case!a:return"\\u2028";case!c:return"\\u2029";case!h:return t.double?"\\"+h:h}}),""+t.delimiter+e+t.delimiter},e.prototype.error=function(e,t){var n,i,r,s,o,a;return null==t&&(t={}),r="first_line"in t?t:(o=this.getLineAndColumnFromChunk(null!=(s=t.offset)?s:0),i=o[0],n=o[1],o,{first_line:i,first_column:n,last_column:n+(null!=(a=t.length)?a:1)-1}),lt(e,r)},e}(),E=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","if","else","switch","for","while","do","try","catch","finally","class","extends","super"],a=["undefined","then","unless","until","loop","of","by","when"],o={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},s=function(){var e;e=[];for(rt in o)e.push(rt);return e}(),a=a.concat(s),V=["case","default","function","var","void","with","const","let","enum","export","import","native","implements","interface","package","private","protected","public","static"],H=["arguments","eval","yield*"],C=E.concat(V).concat(H),e.RESERVED=V.concat(E).concat(a).concat(H),e.STRICT_PROSCRIBED=H,t=65279,v=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,I=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,_=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,et=/^[^\n\S]+/,c=/^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/,r=/^[-=]>/,R=/^(?:\n[^\n\S]*)+/,T=/^`[^\\`]*(?:\\.[^\\`]*)*`/,Y=/^(?:'''|"""|'|")/,W=/^(?:[^\\']|\\[\s\S])*/,q=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,f=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,p=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,X=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,G=/\s*\n\s*/g,d=/\n+([^\n\S]*)(?=\S)/g,$=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,j=/^\w*/,Z=/^(?!.*(.).*\1)[imgy]*$/,m=/^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/,g=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,M=/^(\/|\/{3}\s*)(\*)/,O=/^\/=?\s/,u=/\*\//,L=/^\s*(?:,|\??\.(?![.\d])|::)/,k=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u(?![\da-fA-F]{4}).{0,4}))/,F=/^[^\n\S]*\n/,K=/\n[^\n\S]*$/,z=/\s+$/,l=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],J=["NEW","TYPEOF","DELETE","DO"],Q=["!","~"],x=["&&","||","&","|","^"],U=["<<",">>",">>>"],h=["==","!=","<",">","<=",">="],D=["*","/","%","//","%%"],B=["IN","OF","INSTANCEOF"],n=["TRUE","FALSE"],i=["IDENTIFIER",")","]","?","@","THIS","SUPER"],b=i.concat(["NUMBER","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),A=b.concat(["++","--"]),N=["INDENT","OUTDENT","TERMINATOR"],y=[")","}","]"]}.call(this),t.exports}(),_dereq_["./parser"]=function(){var e={},t={exports:e},n=function(){function e(){this.yy={}}var t=function(e,t,n,i){for(n=n||{},i=e.length;i--;n[e[i]]=t);return n},n=[1,20],i=[1,75],r=[1,71],s=[1,76],o=[1,77],a=[1,73],c=[1,74],h=[1,50],l=[1,52],u=[1,53],p=[1,54],d=[1,55],f=[1,45],m=[1,46],g=[1,27],v=[1,60],y=[1,61],b=[1,70],k=[1,43],w=[1,26],T=[1,58],C=[1,59],E=[1,57],F=[1,38],N=[1,44],L=[1,56],x=[1,65],S=[1,66],D=[1,67],R=[1,68],A=[1,42],I=[1,64],_=[1,29],O=[1,30],$=[1,31],j=[1,32],M=[1,33],B=[1,34],V=[1,35],P=[1,78],U=[1,6,26,34,108],G=[1,88],H=[1,81],q=[1,80],X=[1,79],W=[1,82],Y=[1,83],K=[1,84],z=[1,85],J=[1,86],Q=[1,87],Z=[1,91],et=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],tt=[1,97],nt=[1,98],it=[1,99],rt=[1,100],st=[1,102],ot=[1,103],at=[1,96],ct=[2,112],ht=[1,6,25,26,34,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],lt=[2,79],ut=[1,108],pt=[2,58],dt=[1,112],ft=[1,117],mt=[1,118],gt=[1,120],vt=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],yt=[2,76],bt=[1,6,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],kt=[1,155],wt=[1,157],Tt=[1,152],Ct=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,86,90,91,92,97,99,108,110,111,112,116,117,132,135,136,139,140,141,142,143,144,145,146,147,148],Et=[2,95],Ft=[1,6,25,26,34,49,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],Nt=[1,6,25,26,34,46,49,55,60,63,72,73,74,75,77,79,80,84,86,90,91,92,97,99,108,110,111,112,116,117,123,124,132,135,136,139,140,141,142,143,144,145,146,147,148],Lt=[1,206],xt=[1,205],St=[1,6,25,26,34,38,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],Dt=[2,56],Rt=[1,216],At=[6,25,26,55,60],It=[6,25,26,46,55,60,63],_t=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,142,144,145,146,147],Ot=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132],$t=[72,73,74,75,77,80,90,91],jt=[1,235],Mt=[2,133],Bt=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,123,124,132,135,136,141,142,143,144,145,146,147],Vt=[1,244],Pt=[6,25,26,60,92,97],Ut=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,117,132],Gt=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,111,117,132],Ht=[123,124],qt=[60,123,124],Xt=[1,255],Wt=[6,25,26,60,84],Yt=[6,25,26,49,60,84],Kt=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,144,145,146,147],zt=[11,28,30,32,33,36,37,40,41,42,43,44,51,52,53,57,58,79,82,85,89,94,95,96,102,106,107,110,112,114,116,125,131,133,134,135,136,137,139,140],Jt=[2,122],Qt=[6,25,26],Zt=[2,57],en=[1,268],tn=[1,269],nn=[1,6,25,26,34,55,60,63,79,84,92,97,99,104,105,108,110,111,112,116,117,127,129,132,135,136,141,142,143,144,145,146,147],rn=[26,127,129],sn=[1,6,26,34,55,60,63,79,84,92,97,99,108,111,117,132],on=[2,71],an=[1,291],cn=[1,292],hn=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,127,132,135,136,141,142,143,144,145,146,147],ln=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,112,116,117,132],un=[1,303],pn=[1,304],dn=[6,25,26,60],fn=[1,6,25,26,34,55,60,63,79,84,92,97,99,104,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],mn=[25,60],gn={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,Statement:8,Return:9,Comment:10,STATEMENT:11,Value:12,Invocation:13,Code:14,Operation:15,Assign:16,If:17,Try:18,While:19,For:20,Switch:21,Class:22,Throw:23,Block:24,INDENT:25,OUTDENT:26,Identifier:27,IDENTIFIER:28,AlphaNumeric:29,NUMBER:30,String:31,STRING:32,STRING_START:33,STRING_END:34,Regex:35,REGEX:36,REGEX_START:37,REGEX_END:38,Literal:39,JS:40,DEBUGGER:41,UNDEFINED:42,NULL:43,BOOL:44,Assignable:45,"=":46,AssignObj:47,ObjAssignable:48,":":49,ThisProperty:50,RETURN:51,HERECOMMENT:52,PARAM_START:53,ParamList:54,PARAM_END:55,FuncGlyph:56,"->":57,"=>":58,OptComma:59,",":60,Param:61,ParamVar:62,"...":63,Array:64,Object:65,Splat:66,SimpleAssignable:67,Accessor:68,Parenthetical:69,Range:70,This:71,".":72,"?.":73,"::":74,"?::":75,Index:76,INDEX_START:77,IndexValue:78,INDEX_END:79,INDEX_SOAK:80,Slice:81,"{":82,AssignList:83,"}":84,CLASS:85,EXTENDS:86,OptFuncExist:87,Arguments:88,SUPER:89,FUNC_EXIST:90,CALL_START:91,CALL_END:92,ArgList:93,THIS:94,"@":95,"[":96,"]":97,RangeDots:98,"..":99,Arg:100,SimpleArgs:101,TRY:102,Catch:103,FINALLY:104,CATCH:105,THROW:106,"(":107,")":108,WhileSource:109,WHILE:110,WHEN:111,UNTIL:112,Loop:113,LOOP:114,ForBody:115,FOR:116,BY:117,ForStart:118,ForSource:119,ForVariables:120,OWN:121,ForValue:122,FORIN:123,FOROF:124,SWITCH:125,Whens:126,ELSE:127,When:128,LEADING_WHEN:129,IfBlock:130,IF:131,POST_IF:132,UNARY:133,UNARY_MATH:134,"-":135,"+":136,YIELD:137,FROM:138,"--":139,"++":140,"?":141,MATH:142,"**":143,SHIFT:144,COMPARE:145,LOGIC:146,RELATION:147,COMPOUND_ASSIGN:148,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",11:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",32:"STRING",33:"STRING_START",34:"STRING_END",36:"REGEX",37:"REGEX_START",38:"REGEX_END",40:"JS",41:"DEBUGGER",42:"UNDEFINED",43:"NULL",44:"BOOL",46:"=",49:":",51:"RETURN",52:"HERECOMMENT",53:"PARAM_START",55:"PARAM_END",57:"->",58:"=>",60:",",63:"...",72:".",73:"?.",74:"::",75:"?::",77:"INDEX_START",79:"INDEX_END",80:"INDEX_SOAK",82:"{",84:"}",85:"CLASS",86:"EXTENDS",89:"SUPER",90:"FUNC_EXIST",91:"CALL_START",92:"CALL_END",94:"THIS",95:"@",96:"[",97:"]",99:"..",102:"TRY",104:"FINALLY",105:"CATCH",106:"THROW",107:"(",108:")",110:"WHILE",111:"WHEN",112:"UNTIL",114:"LOOP",116:"FOR",117:"BY",121:"OWN",123:"FORIN",124:"FOROF",125:"SWITCH",127:"ELSE",129:"LEADING_WHEN",131:"IF",132:"POST_IF",133:"UNARY",134:"UNARY_MATH",135:"-",136:"+",137:"YIELD",138:"FROM",139:"--",140:"++",141:"?",142:"MATH",143:"**",144:"SHIFT",145:"COMPARE",146:"LOGIC",147:"RELATION",148:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[24,2],[24,3],[27,1],[29,1],[29,1],[31,1],[31,3],[35,1],[35,3],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[16,3],[16,4],[16,5],[47,1],[47,3],[47,5],[47,1],[48,1],[48,1],[48,1],[9,2],[9,1],[10,1],[14,5],[14,2],[56,1],[56,1],[59,0],[59,1],[54,0],[54,1],[54,3],[54,4],[54,6],[61,1],[61,2],[61,3],[61,1],[62,1],[62,1],[62,1],[62,1],[66,2],[67,1],[67,2],[67,2],[67,1],[45,1],[45,1],[45,1],[12,1],[12,1],[12,1],[12,1],[12,1],[68,2],[68,2],[68,2],[68,2],[68,1],[68,1],[76,3],[76,2],[78,1],[78,1],[65,4],[83,0],[83,1],[83,3],[83,4],[83,6],[22,1],[22,2],[22,3],[22,4],[22,2],[22,3],[22,4],[22,5],[13,3],[13,3],[13,1],[13,2],[87,0],[87,1],[88,2],[88,4],[71,1],[71,1],[50,2],[64,2],[64,4],[98,1],[98,1],[70,5],[81,3],[81,2],[81,2],[81,1],[93,1],[93,3],[93,4],[93,4],[93,6],[100,1],[100,1],[100,1],[101,1],[101,3],[18,2],[18,3],[18,4],[18,5],[103,3],[103,3],[103,2],[23,2],[69,3],[69,5],[109,2],[109,4],[109,2],[109,4],[19,2],[19,2],[19,2],[19,1],[113,2],[113,2],[20,2],[20,2],[20,2],[115,2],[115,4],[115,2],[118,2],[118,3],[122,1],[122,1],[122,1],[122,1],[120,1],[120,3],[119,2],[119,2],[119,4],[119,4],[119,4],[119,6],[119,6],[21,5],[21,7],[21,4],[21,6],[126,1],[126,2],[128,3],[128,4],[130,3],[130,5],[17,1],[17,3],[17,3],[17,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,5],[15,4],[15,3]],performAction:function(e,t,n,i,r,s,o){var a=s.length-1; +switch(r){case 1:return this.$=i.addLocationDataFn(o[a],o[a])(new i.Block);case 2:return this.$=s[a];case 3:this.$=i.addLocationDataFn(o[a],o[a])(i.Block.wrap([s[a]]));break;case 4:this.$=i.addLocationDataFn(o[a-2],o[a])(s[a-2].push(s[a]));break;case 5:this.$=s[a-1];break;case 6:case 7:case 8:case 9:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 27:case 32:case 34:case 45:case 46:case 47:case 48:case 56:case 57:case 67:case 68:case 69:case 70:case 75:case 76:case 79:case 83:case 89:case 133:case 134:case 136:case 166:case 167:case 183:case 189:this.$=s[a];break;case 10:case 25:case 26:case 28:case 30:case 33:case 35:this.$=i.addLocationDataFn(o[a],o[a])(new i.Literal(s[a]));break;case 23:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Block);break;case 24:case 31:case 90:this.$=i.addLocationDataFn(o[a-2],o[a])(s[a-1]);break;case 29:case 146:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Parens(s[a-1]));break;case 36:this.$=i.addLocationDataFn(o[a],o[a])(new i.Undefined);break;case 37:this.$=i.addLocationDataFn(o[a],o[a])(new i.Null);break;case 38:this.$=i.addLocationDataFn(o[a],o[a])(new i.Bool(s[a]));break;case 39:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Assign(s[a-2],s[a]));break;case 40:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Assign(s[a-3],s[a]));break;case 41:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Assign(s[a-4],s[a-1]));break;case 42:case 72:case 77:case 78:case 80:case 81:case 82:case 168:case 169:this.$=i.addLocationDataFn(o[a],o[a])(new i.Value(s[a]));break;case 43:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Assign(i.addLocationDataFn(o[a-2])(new i.Value(s[a-2])),s[a],"object"));break;case 44:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Assign(i.addLocationDataFn(o[a-4])(new i.Value(s[a-4])),s[a-1],"object"));break;case 49:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Return(s[a]));break;case 50:this.$=i.addLocationDataFn(o[a],o[a])(new i.Return);break;case 51:this.$=i.addLocationDataFn(o[a],o[a])(new i.Comment(s[a]));break;case 52:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Code(s[a-3],s[a],s[a-1]));break;case 53:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Code([],s[a],s[a-1]));break;case 54:this.$=i.addLocationDataFn(o[a],o[a])("func");break;case 55:this.$=i.addLocationDataFn(o[a],o[a])("boundfunc");break;case 58:case 95:this.$=i.addLocationDataFn(o[a],o[a])([]);break;case 59:case 96:case 128:case 170:this.$=i.addLocationDataFn(o[a],o[a])([s[a]]);break;case 60:case 97:case 129:this.$=i.addLocationDataFn(o[a-2],o[a])(s[a-2].concat(s[a]));break;case 61:case 98:case 130:this.$=i.addLocationDataFn(o[a-3],o[a])(s[a-3].concat(s[a]));break;case 62:case 99:case 132:this.$=i.addLocationDataFn(o[a-5],o[a])(s[a-5].concat(s[a-2]));break;case 63:this.$=i.addLocationDataFn(o[a],o[a])(new i.Param(s[a]));break;case 64:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Param(s[a-1],null,!0));break;case 65:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Param(s[a-2],s[a]));break;case 66:case 135:this.$=i.addLocationDataFn(o[a],o[a])(new i.Expansion);break;case 71:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Splat(s[a-1]));break;case 73:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a-1].add(s[a]));break;case 74:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Value(s[a-1],[].concat(s[a])));break;case 84:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Access(s[a]));break;case 85:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Access(s[a],"soak"));break;case 86:this.$=i.addLocationDataFn(o[a-1],o[a])([i.addLocationDataFn(o[a-1])(new i.Access(new i.Literal("prototype"))),i.addLocationDataFn(o[a])(new i.Access(s[a]))]);break;case 87:this.$=i.addLocationDataFn(o[a-1],o[a])([i.addLocationDataFn(o[a-1])(new i.Access(new i.Literal("prototype"),"soak")),i.addLocationDataFn(o[a])(new i.Access(s[a]))]);break;case 88:this.$=i.addLocationDataFn(o[a],o[a])(new i.Access(new i.Literal("prototype")));break;case 91:this.$=i.addLocationDataFn(o[a-1],o[a])(i.extend(s[a],{soak:!0}));break;case 92:this.$=i.addLocationDataFn(o[a],o[a])(new i.Index(s[a]));break;case 93:this.$=i.addLocationDataFn(o[a],o[a])(new i.Slice(s[a]));break;case 94:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Obj(s[a-2],s[a-3].generated));break;case 100:this.$=i.addLocationDataFn(o[a],o[a])(new i.Class);break;case 101:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Class(null,null,s[a]));break;case 102:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Class(null,s[a]));break;case 103:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Class(null,s[a-1],s[a]));break;case 104:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Class(s[a]));break;case 105:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Class(s[a-1],null,s[a]));break;case 106:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Class(s[a-2],s[a]));break;case 107:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Class(s[a-3],s[a-1],s[a]));break;case 108:case 109:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Call(s[a-2],s[a],s[a-1]));break;case 110:this.$=i.addLocationDataFn(o[a],o[a])(new i.Call("super",[new i.Splat(new i.Literal("arguments"))]));break;case 111:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Call("super",s[a]));break;case 112:this.$=i.addLocationDataFn(o[a],o[a])(!1);break;case 113:this.$=i.addLocationDataFn(o[a],o[a])(!0);break;case 114:this.$=i.addLocationDataFn(o[a-1],o[a])([]);break;case 115:case 131:this.$=i.addLocationDataFn(o[a-3],o[a])(s[a-2]);break;case 116:case 117:this.$=i.addLocationDataFn(o[a],o[a])(new i.Value(new i.Literal("this")));break;case 118:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Value(i.addLocationDataFn(o[a-1])(new i.Literal("this")),[i.addLocationDataFn(o[a])(new i.Access(s[a]))],"this"));break;case 119:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Arr([]));break;case 120:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Arr(s[a-2]));break;case 121:this.$=i.addLocationDataFn(o[a],o[a])("inclusive");break;case 122:this.$=i.addLocationDataFn(o[a],o[a])("exclusive");break;case 123:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Range(s[a-3],s[a-1],s[a-2]));break;case 124:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Range(s[a-2],s[a],s[a-1]));break;case 125:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Range(s[a-1],null,s[a]));break;case 126:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Range(null,s[a],s[a-1]));break;case 127:this.$=i.addLocationDataFn(o[a],o[a])(new i.Range(null,null,s[a]));break;case 137:this.$=i.addLocationDataFn(o[a-2],o[a])([].concat(s[a-2],s[a]));break;case 138:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Try(s[a]));break;case 139:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Try(s[a-1],s[a][0],s[a][1]));break;case 140:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Try(s[a-2],null,null,s[a]));break;case 141:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Try(s[a-3],s[a-2][0],s[a-2][1],s[a]));break;case 142:this.$=i.addLocationDataFn(o[a-2],o[a])([s[a-1],s[a]]);break;case 143:this.$=i.addLocationDataFn(o[a-2],o[a])([i.addLocationDataFn(o[a-1])(new i.Value(s[a-1])),s[a]]);break;case 144:this.$=i.addLocationDataFn(o[a-1],o[a])([null,s[a]]);break;case 145:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Throw(s[a]));break;case 147:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Parens(s[a-2]));break;case 148:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.While(s[a]));break;case 149:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.While(s[a-2],{guard:s[a]}));break;case 150:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.While(s[a],{invert:!0}));break;case 151:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.While(s[a-2],{invert:!0,guard:s[a]}));break;case 152:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a-1].addBody(s[a]));break;case 153:case 154:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a].addBody(i.addLocationDataFn(o[a-1])(i.Block.wrap([s[a-1]]))));break;case 155:this.$=i.addLocationDataFn(o[a],o[a])(s[a]);break;case 156:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.While(i.addLocationDataFn(o[a-1])(new i.Literal("true"))).addBody(s[a]));break;case 157:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.While(i.addLocationDataFn(o[a-1])(new i.Literal("true"))).addBody(i.addLocationDataFn(o[a])(i.Block.wrap([s[a]]))));break;case 158:case 159:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.For(s[a-1],s[a]));break;case 160:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.For(s[a],s[a-1]));break;case 161:this.$=i.addLocationDataFn(o[a-1],o[a])({source:i.addLocationDataFn(o[a])(new i.Value(s[a]))});break;case 162:this.$=i.addLocationDataFn(o[a-3],o[a])({source:i.addLocationDataFn(o[a-2])(new i.Value(s[a-2])),step:s[a]});break;case 163:this.$=i.addLocationDataFn(o[a-1],o[a])(function(){return s[a].own=s[a-1].own,s[a].name=s[a-1][0],s[a].index=s[a-1][1],s[a]}());break;case 164:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a]);break;case 165:this.$=i.addLocationDataFn(o[a-2],o[a])(function(){return s[a].own=!0,s[a]}());break;case 171:this.$=i.addLocationDataFn(o[a-2],o[a])([s[a-2],s[a]]);break;case 172:this.$=i.addLocationDataFn(o[a-1],o[a])({source:s[a]});break;case 173:this.$=i.addLocationDataFn(o[a-1],o[a])({source:s[a],object:!0});break;case 174:this.$=i.addLocationDataFn(o[a-3],o[a])({source:s[a-2],guard:s[a]});break;case 175:this.$=i.addLocationDataFn(o[a-3],o[a])({source:s[a-2],guard:s[a],object:!0});break;case 176:this.$=i.addLocationDataFn(o[a-3],o[a])({source:s[a-2],step:s[a]});break;case 177:this.$=i.addLocationDataFn(o[a-5],o[a])({source:s[a-4],guard:s[a-2],step:s[a]});break;case 178:this.$=i.addLocationDataFn(o[a-5],o[a])({source:s[a-4],step:s[a-2],guard:s[a]});break;case 179:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Switch(s[a-3],s[a-1]));break;case 180:this.$=i.addLocationDataFn(o[a-6],o[a])(new i.Switch(s[a-5],s[a-3],s[a-1]));break;case 181:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Switch(null,s[a-1]));break;case 182:this.$=i.addLocationDataFn(o[a-5],o[a])(new i.Switch(null,s[a-3],s[a-1]));break;case 184:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a-1].concat(s[a]));break;case 185:this.$=i.addLocationDataFn(o[a-2],o[a])([[s[a-1],s[a]]]);break;case 186:this.$=i.addLocationDataFn(o[a-3],o[a])([[s[a-2],s[a-1]]]);break;case 187:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.If(s[a-1],s[a],{type:s[a-2]}));break;case 188:this.$=i.addLocationDataFn(o[a-4],o[a])(s[a-4].addElse(i.addLocationDataFn(o[a-2],o[a])(new i.If(s[a-1],s[a],{type:s[a-2]}))));break;case 190:this.$=i.addLocationDataFn(o[a-2],o[a])(s[a-2].addElse(s[a]));break;case 191:case 192:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.If(s[a],i.addLocationDataFn(o[a-2])(i.Block.wrap([s[a-2]])),{type:s[a-1],statement:!0}));break;case 193:case 194:case 197:case 198:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op(s[a-1],s[a]));break;case 195:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("-",s[a]));break;case 196:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("+",s[a]));break;case 199:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Op(s[a-2].concat(s[a-1]),s[a]));break;case 200:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("--",s[a]));break;case 201:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("++",s[a]));break;case 202:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("--",s[a-1],null,!0));break;case 203:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("++",s[a-1],null,!0));break;case 204:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Existence(s[a-1]));break;case 205:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Op("+",s[a-2],s[a]));break;case 206:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Op("-",s[a-2],s[a]));break;case 207:case 208:case 209:case 210:case 211:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Op(s[a-1],s[a-2],s[a]));break;case 212:this.$=i.addLocationDataFn(o[a-2],o[a])(function(){return"!"===s[a-1].charAt(0)?new i.Op(s[a-1].slice(1),s[a-2],s[a]).invert():new i.Op(s[a-1],s[a-2],s[a])}());break;case 213:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Assign(s[a-2],s[a],s[a-1]));break;case 214:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Assign(s[a-4],s[a-1],s[a-3]));break;case 215:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Assign(s[a-3],s[a],s[a-2]));break;case 216:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Extends(s[a-2],s[a]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{1:[3]},{1:[2,2],6:P},t(U,[2,3]),t(U,[2,6],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(U,[2,7],{118:69,109:92,115:93,110:x,112:S,116:R,132:Z}),t(et,[2,11],{87:94,68:95,76:101,72:tt,73:nt,74:it,75:rt,77:st,80:ot,90:at,91:ct}),t(et,[2,12],{76:101,87:104,68:105,72:tt,73:nt,74:it,75:rt,77:st,80:ot,90:at,91:ct}),t(et,[2,13]),t(et,[2,14]),t(et,[2,15]),t(et,[2,16]),t(et,[2,17]),t(et,[2,18]),t(et,[2,19]),t(et,[2,20]),t(et,[2,21]),t(et,[2,22]),t(et,[2,8]),t(et,[2,9]),t(et,[2,10]),t(ht,lt,{46:[1,106]}),t(ht,[2,80]),t(ht,[2,81]),t(ht,[2,82]),t(ht,[2,83]),t([1,6,25,26,34,38,55,60,63,72,73,74,75,77,79,80,84,90,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],[2,110],{88:107,91:ut}),t([6,25,55,60],pt,{54:109,61:110,62:111,27:113,50:114,64:115,65:116,28:i,63:dt,82:b,95:ft,96:mt}),{24:119,25:gt},{7:121,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:123,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:124,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:125,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:127,8:126,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,138:[1,128],139:B,140:V},{12:130,13:131,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:132,50:63,64:47,65:48,67:129,69:23,70:24,71:25,82:b,89:w,94:T,95:C,96:E,107:L},{12:130,13:131,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:132,50:63,64:47,65:48,67:133,69:23,70:24,71:25,82:b,89:w,94:T,95:C,96:E,107:L},t(vt,yt,{86:[1,137],139:[1,134],140:[1,135],148:[1,136]}),t(et,[2,189],{127:[1,138]}),{24:139,25:gt},{24:140,25:gt},t(et,[2,155]),{24:141,25:gt},{7:142,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(bt,[2,100],{39:22,69:23,70:24,71:25,64:47,65:48,29:49,35:51,27:62,50:63,31:72,12:130,13:131,45:132,24:144,67:146,25:gt,28:i,30:r,32:s,33:o,36:a,37:c,40:h,41:l,42:u,43:p,44:d,82:b,86:[1,145],89:w,94:T,95:C,96:E,107:L}),{7:147,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,141,142,143,144,145,146,147],[2,50],{12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,8:122,7:148,11:n,28:i,30:r,32:s,33:o,36:a,37:c,40:h,41:l,42:u,43:p,44:d,51:f,52:m,53:g,57:v,58:y,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,114:D,125:A,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V}),t(et,[2,51]),t(vt,[2,77]),t(vt,[2,78]),t(ht,[2,32]),t(ht,[2,33]),t(ht,[2,34]),t(ht,[2,35]),t(ht,[2,36]),t(ht,[2,37]),t(ht,[2,38]),{4:149,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,150],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:151,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,93:153,94:T,95:C,96:E,97:Tt,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(ht,[2,116]),t(ht,[2,117],{27:158,28:i}),{25:[2,54]},{25:[2,55]},t(Ct,[2,72]),t(Ct,[2,75]),{7:159,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:160,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:161,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:163,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:162,25:gt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{27:168,28:i,50:169,64:170,65:171,70:164,82:b,95:ft,96:E,120:165,121:[1,166],122:167},{119:172,123:[1,173],124:[1,174]},t([6,25,60,84],Et,{31:72,83:175,47:176,48:177,10:178,27:179,29:180,50:181,28:i,30:r,32:s,33:o,52:m,95:ft}),t(Ft,[2,26]),t(Ft,[2,27]),t(ht,[2,30]),{12:130,13:182,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:132,50:63,64:47,65:48,67:183,69:23,70:24,71:25,82:b,89:w,94:T,95:C,96:E,107:L},t(Nt,[2,25]),t(Ft,[2,28]),{4:184,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(U,[2,5],{7:4,8:5,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,5:185,11:n,28:i,30:r,32:s,33:o,36:a,37:c,40:h,41:l,42:u,43:p,44:d,51:f,52:m,53:g,57:v,58:y,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,110:x,112:S,114:D,116:R,125:A,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V}),t(et,[2,204]),{7:186,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:187,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:188,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:189,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:190,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:191,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:192,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:193,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:194,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,154]),t(et,[2,159]),{7:195,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,153]),t(et,[2,158]),{88:196,91:ut},t(Ct,[2,73]),{91:[2,113]},{27:197,28:i},{27:198,28:i},t(Ct,[2,88],{27:199,28:i}),{27:200,28:i},t(Ct,[2,89]),{7:202,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:Lt,64:47,65:48,67:36,69:23,70:24,71:25,78:201,81:203,82:b,85:k,89:w,94:T,95:C,96:E,98:204,99:xt,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{76:207,77:st,80:ot},{88:208,91:ut},t(Ct,[2,74]),{6:[1,210],7:209,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,211],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(St,[2,111]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,92:[1,212],93:213,94:T,95:C,96:E,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([6,25],Dt,{59:217,55:[1,215],60:Rt}),t(At,[2,59]),t(At,[2,63],{46:[1,219],63:[1,218]}),t(At,[2,66]),t(It,[2,67]),t(It,[2,68]),t(It,[2,69]),t(It,[2,70]),{27:158,28:i},{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,93:153,94:T,95:C,96:E,97:Tt,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,53]),{4:221,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[1,220],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,142,143,144,145,146,147],[2,193],{118:69,109:89,115:90,141:X}),{109:92,110:x,112:S,115:93,116:R,118:69,132:Z},t(_t,[2,194],{118:69,109:89,115:90,141:X,143:Y}),t(_t,[2,195],{118:69,109:89,115:90,141:X,143:Y}),t(_t,[2,196],{118:69,109:89,115:90,141:X,143:Y}),t(et,[2,197],{118:69,109:92,115:93}),t(Ot,[2,198],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{7:222,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,200],{72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt}),{68:95,72:tt,73:nt,74:it,75:rt,76:101,77:st,80:ot,87:94,90:at,91:ct},{68:105,72:tt,73:nt,74:it,75:rt,76:101,77:st,80:ot,87:104,90:at,91:ct},t($t,lt),t(et,[2,201],{72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt}),t(et,[2,202]),t(et,[2,203]),{6:[1,225],7:223,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,224],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:226,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{24:227,25:gt,131:[1,228]},t(et,[2,138],{103:229,104:[1,230],105:[1,231]}),t(et,[2,152]),t(et,[2,160]),{25:[1,232],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{126:233,128:234,129:jt},t(et,[2,101]),{7:236,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(bt,[2,104],{24:237,25:gt,72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt,86:[1,238]}),t(Ot,[2,145],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ot,[2,49],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{6:P,108:[1,239]},{4:240,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([6,25,60,97],Mt,{118:69,109:89,115:90,98:241,63:[1,242],99:xt,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Bt,[2,119]),t([6,25,97],Dt,{59:243,60:Vt}),t(Pt,[2,128]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,93:245,94:T,95:C,96:E,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Pt,[2,134]),t(Pt,[2,135]),t(Nt,[2,118]),{24:246,25:gt,109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(Ut,[2,148],{118:69,109:89,115:90,110:x,111:[1,247],112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ut,[2,150],{118:69,109:89,115:90,110:x,111:[1,248],112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(et,[2,156]),t(Gt,[2,157],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,132,135,136,141,142,143,144,145,146,147],[2,161],{117:[1,249]}),t(Ht,[2,164]),{27:168,28:i,50:169,64:170,65:171,82:b,95:ft,96:mt,120:250,122:167},t(Ht,[2,170],{60:[1,251]}),t(qt,[2,166]),t(qt,[2,167]),t(qt,[2,168]),t(qt,[2,169]),t(et,[2,163]),{7:252,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:253,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([6,25,84],Dt,{59:254,60:Xt}),t(Wt,[2,96]),t(Wt,[2,42],{49:[1,256]}),t(Wt,[2,45]),t(Yt,[2,46]),t(Yt,[2,47]),t(Yt,[2,48]),{38:[1,257],68:105,72:tt,73:nt,74:it,75:rt,76:101,77:st,80:ot,87:104,90:at,91:ct},t($t,yt),{6:P,34:[1,258]},t(U,[2,4]),t(Kt,[2,205],{118:69,109:89,115:90,141:X,142:W,143:Y}),t(Kt,[2,206],{118:69,109:89,115:90,141:X,142:W,143:Y}),t(_t,[2,207],{118:69,109:89,115:90,141:X,143:Y}),t(_t,[2,208],{118:69,109:89,115:90,141:X,143:Y}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,144,145,146,147],[2,209],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,145,146],[2,210],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,147:Q}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,146],[2,211],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,147:Q}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,145,146,147],[2,212],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K}),t(Gt,[2,192],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Gt,[2,191],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(St,[2,108]),t(Ct,[2,84]),t(Ct,[2,85]),t(Ct,[2,86]),t(Ct,[2,87]),{79:[1,259]},{63:Lt,79:[2,92],98:260,99:xt,109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{79:[2,93]},{7:261,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,79:[2,127],82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(zt,[2,121]),t(zt,Jt),t(Ct,[2,91]),t(St,[2,109]),t(Ot,[2,39],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{7:262,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:263,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(St,[2,114]),t([6,25,92],Dt,{59:264,60:Vt}),t(Pt,Mt,{118:69,109:89,115:90,63:[1,265],110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{56:266,57:v,58:y},t(Qt,Zt,{62:111,27:113,50:114,64:115,65:116,61:267,28:i,63:dt,82:b,95:ft,96:mt}),{6:en,25:tn},t(At,[2,64]),{7:270,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(nn,[2,23]),{6:P,26:[1,271]},t(Ot,[2,199],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ot,[2,213],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{7:272,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:273,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Ot,[2,216],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(et,[2,190]),{7:274,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,139],{104:[1,275]}),{24:276,25:gt},{24:279,25:gt,27:277,28:i,65:278,82:b},{126:280,128:234,129:jt},{26:[1,281],127:[1,282],128:283,129:jt},t(rn,[2,183]),{7:285,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,101:284,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(sn,[2,102],{118:69,109:89,115:90,24:286,25:gt,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(et,[2,105]),{7:287,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(ht,[2,146]),{6:P,26:[1,288]},{7:289,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([11,28,30,32,33,36,37,40,41,42,43,44,51,52,53,57,58,82,85,89,94,95,96,102,106,107,110,112,114,116,125,131,133,134,135,136,137,139,140],Jt,{6:on,25:on,60:on,97:on}),{6:an,25:cn,97:[1,290]},t([6,25,26,92,97],Zt,{12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,8:122,66:156,7:214,100:293,11:n,28:i,30:r,32:s,33:o,36:a,37:c,40:h,41:l,42:u,43:p,44:d,51:f,52:m,53:g,57:v,58:y,63:wt,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,110:x,112:S,114:D,116:R,125:A,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V}),t(Qt,Dt,{59:294,60:Vt}),t(hn,[2,187]),{7:295,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:296,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:297,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Ht,[2,165]),{27:168,28:i,50:169,64:170,65:171,82:b,95:ft,96:mt,122:298},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,112,116,132],[2,172],{118:69,109:89,115:90,111:[1,299],117:[1,300],135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(ln,[2,173],{118:69,109:89,115:90,111:[1,301],135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{6:un,25:pn,84:[1,302]},t([6,25,26,84],Zt,{31:72,48:177,10:178,27:179,29:180,50:181,47:305,28:i,30:r,32:s,33:o,52:m,95:ft}),{7:306,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,307],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(ht,[2,31]),t(Ft,[2,29]),t(Ct,[2,90]),{7:308,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,79:[2,125],82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{79:[2,126],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(Ot,[2,40],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{26:[1,309],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{6:an,25:cn,92:[1,310]},t(Pt,on),{24:311,25:gt},t(At,[2,60]),{27:113,28:i,50:114,61:312,62:111,63:dt,64:115,65:116,82:b,95:ft,96:mt},t(dn,pt,{61:110,62:111,27:113,50:114,64:115,65:116,54:313,28:i,63:dt,82:b,95:ft,96:mt}),t(At,[2,65],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(nn,[2,24]),{26:[1,314],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(Ot,[2,215],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{24:315,25:gt,109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{24:316,25:gt},t(et,[2,140]),{24:317,25:gt},{24:318,25:gt},t(fn,[2,144]),{26:[1,319],127:[1,320],128:283,129:jt},t(et,[2,181]),{24:321,25:gt},t(rn,[2,184]),{24:322,25:gt,60:[1,323]},t(mn,[2,136],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(et,[2,103]),t(sn,[2,106],{118:69,109:89,115:90,24:324,25:gt,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{108:[1,325]},{97:[1,326],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(Bt,[2,120]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,100:327,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,93:328,94:T,95:C,96:E,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Pt,[2,129]),{6:an,25:cn,26:[1,329]},t(Gt,[2,149],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Gt,[2,151],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Gt,[2,162],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ht,[2,171]),{7:330,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:331,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:332,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Bt,[2,94]),{10:178,27:179,28:i,29:180,30:r,31:72,32:s,33:o,47:333,48:177,50:181,52:m,95:ft},t(dn,Et,{31:72,47:176,48:177,10:178,27:179,29:180,50:181,83:334,28:i,30:r,32:s,33:o,52:m,95:ft}),t(Wt,[2,97]),t(Wt,[2,43],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{7:335,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{79:[2,124],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(et,[2,41]),t(St,[2,115]),t(et,[2,52]),t(At,[2,61]),t(Qt,Dt,{59:336,60:Rt}),t(et,[2,214]),t(hn,[2,188]),t(et,[2,141]),t(fn,[2,142]),t(fn,[2,143]),t(et,[2,179]),{24:337,25:gt},{26:[1,338]},t(rn,[2,185],{6:[1,339]}),{7:340,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,107]),t(ht,[2,147]),t(ht,[2,123]),t(Pt,[2,130]),t(Qt,Dt,{59:341,60:Vt}),t(Pt,[2,131]),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,132],[2,174],{118:69,109:89,115:90,117:[1,342],135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(ln,[2,176],{118:69,109:89,115:90,111:[1,343],135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ot,[2,175],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Wt,[2,98]),t(Qt,Dt,{59:344,60:Xt}),{26:[1,345],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{6:en,25:tn,26:[1,346]},{26:[1,347]},t(et,[2,182]),t(rn,[2,186]),t(mn,[2,137],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{6:an,25:cn,26:[1,348]},{7:349,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:350,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{6:un,25:pn,26:[1,351]},t(Wt,[2,44]),t(At,[2,62]),t(et,[2,180]),t(Pt,[2,132]),t(Ot,[2,177],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ot,[2,178],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Wt,[2,99])],defaultActions:{60:[2,54],61:[2,55],96:[2,113],203:[2,93]},parseError:function(e,t){if(!t.recoverable)throw Error(e); +this.trace(e)},parse:function(e){function t(){var e;return e=f.lex()||p,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],s=[],o=this.table,a="",c=0,h=0,l=0,u=2,p=1,d=s.slice.call(arguments,1),f=Object.create(this.lexer),m={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(m.yy[g]=this.yy[g]);f.setInput(e,m.yy),m.yy.lexer=f,m.yy.parser=this,f.yylloc===void 0&&(f.yylloc={});var v=f.yylloc;s.push(v);var y=f.options&&f.options.ranges;this.parseError="function"==typeof m.yy.parseError?m.yy.parseError:Object.getPrototypeOf(this).parseError;for(var b,k,w,T,C,E,F,N,L,x={};;){if(w=i[i.length-1],this.defaultActions[w]?T=this.defaultActions[w]:((null===b||b===void 0)&&(b=t()),T=o[w]&&o[w][b]),T===void 0||!T.length||!T[0]){var S="";L=[];for(E in o[w])this.terminals_[E]&&E>u&&L.push("'"+this.terminals_[E]+"'");S=f.showPosition?"Parse error on line "+(c+1)+":\n"+f.showPosition()+"\nExpecting "+L.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(c+1)+": Unexpected "+(b==p?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(S,{text:f.match,token:this.terminals_[b]||b,line:f.yylineno,loc:v,expected:L})}if(T[0]instanceof Array&&T.length>1)throw Error("Parse Error: multiple actions possible at state: "+w+", token: "+b);switch(T[0]){case 1:i.push(b),r.push(f.yytext),s.push(f.yylloc),i.push(T[1]),b=null,k?(b=k,k=null):(h=f.yyleng,a=f.yytext,c=f.yylineno,v=f.yylloc,l>0&&l--);break;case 2:if(F=this.productions_[T[1]][1],x.$=r[r.length-F],x._$={first_line:s[s.length-(F||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(F||1)].first_column,last_column:s[s.length-1].last_column},y&&(x._$.range=[s[s.length-(F||1)].range[0],s[s.length-1].range[1]]),C=this.performAction.apply(x,[a,h,c,m.yy,T[1],r,s].concat(d)),C!==void 0)return C;F&&(i=i.slice(0,2*-1*F),r=r.slice(0,-1*F),s=s.slice(0,-1*F)),i.push(this.productions_[T[1]][0]),r.push(x.$),s.push(x._$),N=o[i[i.length-2]][i[i.length-1]],i.push(N);break;case 3:return!0}}return!0}};return e.prototype=gn,gn.Parser=e,new e}();return _dereq_!==void 0&&e!==void 0&&(e.parser=n,e.Parser=n.Parser,e.parse=function(){return n.parse.apply(n,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var n=_dereq_("fs").readFileSync(_dereq_("path").normalize(t[1]),"utf8");return e.parser.parse(n)},t!==void 0&&_dereq_.main===t&&e.main(process.argv.slice(1))),t.exports}(),_dereq_["./scope"]=function(){var e={},t={exports:e};return function(){var t,n=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};e.Scope=t=function(){function e(e,t,n,i){var r,s;this.parent=e,this.expressions=t,this.method=n,this.referencedVars=i,this.variables=[{name:"arguments",type:"arguments"}],this.positions={},this.parent||(this.utilities={}),this.root=null!=(r=null!=(s=this.parent)?s.root:void 0)?r:this}return e.prototype.add=function(e,t,n){return this.shared&&!n?this.parent.add(e,t,n):Object.prototype.hasOwnProperty.call(this.positions,e)?this.variables[this.positions[e]].type=t:this.positions[e]=this.variables.push({name:e,type:t})-1},e.prototype.namedMethod=function(){var e;return(null!=(e=this.method)?e.name:void 0)||!this.parent?this.method:this.parent.namedMethod()},e.prototype.find=function(e){return this.check(e)?!0:(this.add(e,"var"),!1)},e.prototype.parameter=function(e){return this.shared&&this.parent.check(e,!0)?void 0:this.add(e,"param")},e.prototype.check=function(e){var t;return!!(this.type(e)||(null!=(t=this.parent)?t.check(e):void 0))},e.prototype.temporary=function(e,t,n){return null==n&&(n=!1),n?(t+parseInt(e,36)).toString(36).replace(/\d/g,"a"):e+(t||"")},e.prototype.type=function(e){var t,n,i,r;for(i=this.variables,t=0,n=i.length;n>t;t++)if(r=i[t],r.name===e)return r.type;return null},e.prototype.freeVariable=function(e,t){var i,r,s;for(null==t&&(t={}),i=0;;){if(s=this.temporary(e,i,t.single),!(this.check(s)||n.call(this.root.referencedVars,s)>=0))break;i++}return(null!=(r=t.reserve)?r:!0)&&this.add(s,"var",!0),s},e.prototype.assign=function(e,t){return this.add(e,{value:t,assigned:!0},!0),this.hasAssignments=!0},e.prototype.hasDeclarations=function(){return!!this.declaredVariables().length},e.prototype.declaredVariables=function(){var e;return function(){var t,n,i,r;for(i=this.variables,r=[],t=0,n=i.length;n>t;t++)e=i[t],"var"===e.type&&r.push(e.name);return r}.call(this).sort()},e.prototype.assignedVariables=function(){var e,t,n,i,r;for(n=this.variables,i=[],e=0,t=n.length;t>e;e++)r=n[e],r.type.assigned&&i.push(r.name+" = "+r.type.value);return i},e}()}.call(this),t.exports}(),_dereq_["./nodes"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y,b,k,w,T,C,E,F,N,L,x,S,D,R,A,I,_,O,$,j,M,B,V,P,U,G,H,q,X,W,Y,K,z,J,Q,Z,et,tt,nt,it,rt,st,ot,at,ct,ht,lt,ut,pt,dt,ft,mt,gt,vt,yt,bt,kt=function(e,t){function n(){this.constructor=e}for(var i in t)wt.call(t,i)&&(e[i]=t[i]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},wt={}.hasOwnProperty,Tt=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},Ct=[].slice;Error.stackTraceLimit=1/0,P=_dereq_("./scope").Scope,dt=_dereq_("./lexer"),$=dt.RESERVED,V=dt.STRICT_PROSCRIBED,ft=_dereq_("./helpers"),et=ft.compact,rt=ft.flatten,it=ft.extend,lt=ft.merge,tt=ft.del,gt=ft.starts,nt=ft.ends,mt=ft.some,Z=ft.addLocationDataFn,ht=ft.locationDataToString,vt=ft.throwSyntaxError,e.extend=it,e.addLocationDataFn=Z,Q=function(){return!0},D=function(){return!1},X=function(){return this},S=function(){return this.negated=!this.negated,this},e.CodeFragment=h=function(){function e(e,t){var n;this.code=""+t,this.locationData=null!=e?e.locationData:void 0,this.type=(null!=e?null!=(n=e.constructor)?n.name:void 0:void 0)||"unknown"}return e.prototype.toString=function(){return""+this.code+(this.locationData?": "+ht(this.locationData):"")},e}(),st=function(e){var t;return function(){var n,i,r;for(r=[],n=0,i=e.length;i>n;n++)t=e[n],r.push(t.code);return r}().join("")},e.Base=r=function(){function e(){}return e.prototype.compile=function(e,t){return st(this.compileToFragments(e,t))},e.prototype.compileToFragments=function(e,t){var n;return e=it({},e),t&&(e.level=t),n=this.unfoldSoak(e)||this,n.tab=e.indent,e.level!==L&&n.isStatement(e)?n.compileClosure(e):n.compileNode(e)},e.prototype.compileClosure=function(e){var n,i,r,a,h,l,u;return(a=this.jumps())&&a.error("cannot use a pure statement in an expression"),e.sharedScope=!0,r=new c([],s.wrap([this])),n=[],((i=this.contains(at))||this.contains(ct))&&(n=[new x("this")],i?(h="apply",n.push(new x("arguments"))):h="call",r=new z(r,[new t(new x(h))])),l=new o(r,n).compileNode(e),(r.isGenerator||(null!=(u=r.base)?u.isGenerator:void 0))&&(l.unshift(this.makeCode("(yield* ")),l.push(this.makeCode(")"))),l},e.prototype.cache=function(e,t,n){var r,s,o;return r=null!=n?n(this):this.isComplex(),r?(s=new x(e.scope.freeVariable("ref")),o=new i(s,this),t?[o.compileToFragments(e,t),[this.makeCode(s.value)]]:[o,s]):(s=t?this.compileToFragments(e,t):this,[s,s])},e.prototype.cacheToCodeFragments=function(e){return[st(e[0]),st(e[1])]},e.prototype.makeReturn=function(e){var t;return t=this.unwrapAll(),e?new o(new x(e+".push"),[t]):new M(t)},e.prototype.contains=function(e){var t;return t=void 0,this.traverseChildren(!1,function(n){return e(n)?(t=n,!1):void 0}),t},e.prototype.lastNonComment=function(e){var t;for(t=e.length;t--;)if(!(e[t]instanceof l))return e[t];return null},e.prototype.toString=function(e,t){var n;return null==e&&(e=""),null==t&&(t=this.constructor.name),n="\n"+e+t,this.soak&&(n+="?"),this.eachChild(function(t){return n+=t.toString(e+q)}),n},e.prototype.eachChild=function(e){var t,n,i,r,s,o,a,c;if(!this.children)return this;for(a=this.children,i=0,s=a.length;s>i;i++)if(t=a[i],this[t])for(c=rt([this[t]]),r=0,o=c.length;o>r;r++)if(n=c[r],e(n)===!1)return this;return this},e.prototype.traverseChildren=function(e,t){return this.eachChild(function(n){var i;return i=t(n),i!==!1?n.traverseChildren(e,t):void 0})},e.prototype.invert=function(){return new I("!",this)},e.prototype.unwrapAll=function(){var e;for(e=this;e!==(e=e.unwrap()););return e},e.prototype.children=[],e.prototype.isStatement=D,e.prototype.jumps=D,e.prototype.isComplex=Q,e.prototype.isChainable=D,e.prototype.isAssignable=D,e.prototype.unwrap=X,e.prototype.unfoldSoak=D,e.prototype.assigns=D,e.prototype.updateLocationDataIfMissing=function(e){return this.locationData?this:(this.locationData=e,this.eachChild(function(t){return t.updateLocationDataIfMissing(e)}))},e.prototype.error=function(e){return vt(e,this.locationData)},e.prototype.makeCode=function(e){return new h(this,e)},e.prototype.wrapInBraces=function(e){return[].concat(this.makeCode("("),e,this.makeCode(")"))},e.prototype.joinFragmentArrays=function(e,t){var n,i,r,s,o;for(n=[],r=s=0,o=e.length;o>s;r=++s)i=e[r],r&&n.push(this.makeCode(t)),n=n.concat(i);return n},e}(),e.Block=s=function(e){function t(e){this.expressions=et(rt(e||[]))}return kt(t,e),t.prototype.children=["expressions"],t.prototype.push=function(e){return this.expressions.push(e),this},t.prototype.pop=function(){return this.expressions.pop()},t.prototype.unshift=function(e){return this.expressions.unshift(e),this},t.prototype.unwrap=function(){return 1===this.expressions.length?this.expressions[0]:this},t.prototype.isEmpty=function(){return!this.expressions.length},t.prototype.isStatement=function(e){var t,n,i,r;for(r=this.expressions,n=0,i=r.length;i>n;n++)if(t=r[n],t.isStatement(e))return!0;return!1},t.prototype.jumps=function(e){var t,n,i,r,s;for(s=this.expressions,n=0,r=s.length;r>n;n++)if(t=s[n],i=t.jumps(e))return i},t.prototype.makeReturn=function(e){var t,n;for(n=this.expressions.length;n--;)if(t=this.expressions[n],!(t instanceof l)){this.expressions[n]=t.makeReturn(e),t instanceof M&&!t.expression&&this.expressions.splice(n,1);break}return this},t.prototype.compileToFragments=function(e,n){return null==e&&(e={}),e.scope?t.__super__.compileToFragments.call(this,e,n):this.compileRoot(e)},t.prototype.compileNode=function(e){var n,i,r,s,o,a,c,h,l;for(this.tab=e.indent,l=e.level===L,i=[],h=this.expressions,s=o=0,a=h.length;a>o;s=++o)c=h[s],c=c.unwrapAll(),c=c.unfoldSoak(e)||c,c instanceof t?i.push(c.compileNode(e)):l?(c.front=!0,r=c.compileToFragments(e),c.isStatement(e)||(r.unshift(this.makeCode(""+this.tab)),r.push(this.makeCode(";"))),i.push(r)):i.push(c.compileToFragments(e,E));return l?this.spaced?[].concat(this.joinFragmentArrays(i,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(i,"\n"):(n=i.length?this.joinFragmentArrays(i,", "):[this.makeCode("void 0")],i.length>1&&e.level>=E?this.wrapInBraces(n):n)},t.prototype.compileRoot=function(e){var t,n,i,r,s,o,a,c,h,u,p;for(e.indent=e.bare?"":q,e.level=L,this.spaced=!0,e.scope=new P(null,this,null,null!=(h=e.referencedVars)?h:[]),u=e.locals||[],r=0,s=u.length;s>r;r++)o=u[r],e.scope.parameter(o);return a=[],e.bare||(c=function(){var e,n,r,s;for(r=this.expressions,s=[],i=e=0,n=r.length;n>e&&(t=r[i],t.unwrap()instanceof l);i=++e)s.push(t);return s}.call(this),p=this.expressions.slice(c.length),this.expressions=c,c.length&&(a=this.compileNode(lt(e,{indent:""})),a.push(this.makeCode("\n"))),this.expressions=p),n=this.compileWithDeclarations(e),e.bare?n:[].concat(a,this.makeCode("(function() {\n"),n,this.makeCode("\n}).call(this);\n"))},t.prototype.compileWithDeclarations=function(e){var t,n,i,r,s,o,a,c,h,u,p,d,f,m;for(r=[],c=[],h=this.expressions,s=o=0,a=h.length;a>o&&(i=h[s],i=i.unwrap(),i instanceof l||i instanceof x);s=++o);return e=lt(e,{level:L}),s&&(d=this.expressions.splice(s,9e9),u=[this.spaced,!1],m=u[0],this.spaced=u[1],p=[this.compileNode(e),m],r=p[0],this.spaced=p[1],this.expressions=d),c=this.compileNode(e),f=e.scope,f.expressions===this&&(n=e.scope.hasDeclarations(),t=f.hasAssignments,n||t?(s&&r.push(this.makeCode("\n")),r.push(this.makeCode(this.tab+"var ")),n&&r.push(this.makeCode(f.declaredVariables().join(", "))),t&&(n&&r.push(this.makeCode(",\n"+(this.tab+q))),r.push(this.makeCode(f.assignedVariables().join(",\n"+(this.tab+q))))),r.push(this.makeCode(";\n"+(this.spaced?"\n":"")))):r.length&&c.length&&r.push(this.makeCode("\n"))),r.concat(c)},t.wrap=function(e){return 1===e.length&&e[0]instanceof t?e[0]:new t(e)},t}(r),e.Literal=x=function(e){function t(e){this.value=e}return kt(t,e),t.prototype.makeReturn=function(){return this.isStatement()?this:t.__super__.makeReturn.apply(this,arguments)},t.prototype.isAssignable=function(){return g.test(this.value)},t.prototype.isStatement=function(){var e;return"break"===(e=this.value)||"continue"===e||"debugger"===e},t.prototype.isComplex=D,t.prototype.assigns=function(e){return e===this.value},t.prototype.jumps=function(e){return"break"!==this.value||(null!=e?e.loop:void 0)||(null!=e?e.block:void 0)?"continue"!==this.value||(null!=e?e.loop:void 0)?void 0:this:this},t.prototype.compileNode=function(e){var t,n,i;return n="this"===this.value?(null!=(i=e.scope.method)?i.bound:void 0)?e.scope.method.context:this.value:this.value.reserved?'"'+this.value+'"':this.value,t=this.isStatement()?""+this.tab+n+";":n,[this.makeCode(t)]},t.prototype.toString=function(){return' "'+this.value+'"'},t}(r),e.Undefined=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return kt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(e){return[this.makeCode(e.level>=T?"(void 0)":"void 0")]},t}(r),e.Null=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return kt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(){return[this.makeCode("null")]},t}(r),e.Bool=function(e){function t(e){this.val=e}return kt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(){return[this.makeCode(this.val)]},t}(r),e.Return=M=function(e){function t(e){this.expression=e}return kt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=Q,t.prototype.makeReturn=X,t.prototype.jumps=X,t.prototype.compileToFragments=function(e,n){var i,r;return i=null!=(r=this.expression)?r.makeReturn():void 0,!i||i instanceof t?t.__super__.compileToFragments.call(this,e,n):i.compileToFragments(e,n)},t.prototype.compileNode=function(e){var t,n,i;return t=[],n=null!=(i=this.expression)?"function"==typeof i.isYieldReturn?i.isYieldReturn():void 0:void 0,n||t.push(this.makeCode(this.tab+("return"+(this.expression?" ":"")))),this.expression&&(t=t.concat(this.expression.compileToFragments(e,N))),n||t.push(this.makeCode(";")),t},t}(r),e.Value=z=function(e){function t(e,n,i){return!n&&e instanceof t?e:(this.base=e,this.properties=n||[],i&&(this[i]=!0),this)}return kt(t,e),t.prototype.children=["base","properties"],t.prototype.add=function(e){return this.properties=this.properties.concat(e),this},t.prototype.hasProperties=function(){return!!this.properties.length},t.prototype.bareLiteral=function(e){return!this.properties.length&&this.base instanceof e},t.prototype.isArray=function(){return this.bareLiteral(n)},t.prototype.isRange=function(){return this.bareLiteral(j)},t.prototype.isComplex=function(){return this.hasProperties()||this.base.isComplex()},t.prototype.isAssignable=function(){return this.hasProperties()||this.base.isAssignable()},t.prototype.isSimpleNumber=function(){return this.bareLiteral(x)&&B.test(this.base.value)},t.prototype.isString=function(){return this.bareLiteral(x)&&y.test(this.base.value)},t.prototype.isRegex=function(){return this.bareLiteral(x)&&v.test(this.base.value)},t.prototype.isAtomic=function(){var e,t,n,i;for(i=this.properties.concat(this.base),e=0,t=i.length;t>e;e++)if(n=i[e],n.soak||n instanceof o)return!1;return!0},t.prototype.isNotCallable=function(){return this.isSimpleNumber()||this.isString()||this.isRegex()||this.isArray()||this.isRange()||this.isSplice()||this.isObject()},t.prototype.isStatement=function(e){return!this.properties.length&&this.base.isStatement(e)},t.prototype.assigns=function(e){return!this.properties.length&&this.base.assigns(e)},t.prototype.jumps=function(e){return!this.properties.length&&this.base.jumps(e)},t.prototype.isObject=function(e){return this.properties.length?!1:this.base instanceof A&&(!e||this.base.generated)},t.prototype.isSplice=function(){var e,t;return t=this.properties,e=t[t.length-1],e instanceof U},t.prototype.looksStatic=function(e){var t;return this.base.value===e&&1===this.properties.length&&"prototype"!==(null!=(t=this.properties[0].name)?t.value:void 0)},t.prototype.unwrap=function(){return this.properties.length?this:this.base},t.prototype.cacheReference=function(e){var n,r,s,o,a;return a=this.properties,s=a[a.length-1],2>this.properties.length&&!this.base.isComplex()&&!(null!=s?s.isComplex():void 0)?[this,this]:(n=new t(this.base,this.properties.slice(0,-1)),n.isComplex()&&(r=new x(e.scope.freeVariable("base")),n=new t(new O(new i(r,n)))),s?(s.isComplex()&&(o=new x(e.scope.freeVariable("name")),s=new w(new i(o,s.index)),o=new w(o)),[n.add(s),new t(r||n.base,[o||s])]):[n,r])},t.prototype.compileNode=function(e){var t,n,i,r,s;for(this.base.front=this.front,s=this.properties,t=this.base.compileToFragments(e,s.length?T:null),(this.base instanceof O||s.length)&&B.test(st(t))&&t.push(this.makeCode(".")),n=0,i=s.length;i>n;n++)r=s[n],t.push.apply(t,r.compileToFragments(e));return t},t.prototype.unfoldSoak=function(e){return null!=this.unfoldedSoak?this.unfoldedSoak:this.unfoldedSoak=function(n){return function(){var r,s,o,a,c,h,l,p,d,f;if(o=n.base.unfoldSoak(e))return(p=o.body.properties).push.apply(p,n.properties),o;for(d=n.properties,s=a=0,c=d.length;c>a;s=++a)if(h=d[s],h.soak)return h.soak=!1,r=new t(n.base,n.properties.slice(0,s)),f=new t(n.base,n.properties.slice(s)),r.isComplex()&&(l=new x(e.scope.freeVariable("ref")),r=new O(new i(l,r)),f.base=l),new b(new u(r),f,{soak:!0});return!1}}(this)()},t}(r),e.Comment=l=function(e){function t(e){this.comment=e}return kt(t,e),t.prototype.isStatement=Q,t.prototype.makeReturn=X,t.prototype.compileNode=function(e,t){var n,i;return i=this.comment.replace(/^(\s*)#(?=\s)/gm,"$1 *"),n="/*"+ut(i,this.tab)+(Tt.call(i,"\n")>=0?"\n"+this.tab:"")+" */",(t||e.level)===L&&(n=e.indent+n),[this.makeCode("\n"),this.makeCode(n)]},t}(r),e.Call=o=function(e){function n(e,t,n){this.args=null!=t?t:[],this.soak=n,this.isNew=!1,this.isSuper="super"===e,this.variable=this.isSuper?null:e,e instanceof z&&e.isNotCallable()&&e.error("literal is not a function")}return kt(n,e),n.prototype.children=["variable","args"],n.prototype.newInstance=function(){var e,t;return e=(null!=(t=this.variable)?t.base:void 0)||this.variable,e instanceof n&&!e.isNew?e.newInstance():this.isNew=!0,this},n.prototype.superReference=function(e){var n,r,s,o,a,c,h,l;return a=e.scope.namedMethod(),(null!=a?a.klass:void 0)?(o=a.klass,c=a.name,l=a.variable,o.isComplex()&&(s=new x(e.scope.parent.freeVariable("base")),r=new z(new O(new i(s,o))),l.base=r,l.properties.splice(0,o.properties.length)),(c.isComplex()||c instanceof w&&c.index.isAssignable())&&(h=new x(e.scope.parent.freeVariable("name")),c=new w(new i(h,c.index)),l.properties.pop(),l.properties.push(c)),n=[new t(new x("__super__"))],a["static"]&&n.push(new t(new x("constructor"))),n.push(null!=h?new w(h):c),new z(null!=s?s:o,n).compile(e)):(null!=a?a.ctor:void 0)?a.name+".__super__.constructor":this.error("cannot call super outside of an instance method.")},n.prototype.superThis=function(e){var t;return t=e.scope.method,t&&!t.klass&&t.context||"this"},n.prototype.unfoldSoak=function(e){var t,i,r,s,o,a,c,h,l;if(this.soak){if(this.variable){if(i=yt(e,this,"variable"))return i;c=new z(this.variable).cacheReference(e),s=c[0],l=c[1]}else s=new x(this.superReference(e)),l=new z(s);return l=new n(l,this.args),l.isNew=this.isNew,s=new x("typeof "+s.compile(e)+' === "function"'),new b(s,new z(l),{soak:!0})}for(t=this,a=[];;)if(t.variable instanceof n)a.push(t),t=t.variable;else{if(!(t.variable instanceof z))break;if(a.push(t),!((t=t.variable.base)instanceof n))break}for(h=a.reverse(),r=0,o=h.length;o>r;r++)t=h[r],i&&(t.variable instanceof n?t.variable=i:t.variable.base=i),i=yt(e,t,"variable");return i},n.prototype.compileNode=function(e){var t,n,i,r,s,o,a,c,h,l;if(null!=(h=this.variable)&&(h.front=this.front),r=G.compileSplattedArray(e,this.args,!0),r.length)return this.compileSplat(e,r);for(i=[],l=this.args,n=o=0,a=l.length;a>o;n=++o)t=l[n],n&&i.push(this.makeCode(", ")),i.push.apply(i,t.compileToFragments(e,E));return s=[],this.isSuper?(c=this.superReference(e)+(".call("+this.superThis(e)),i.length&&(c+=", "),s.push(this.makeCode(c))):(this.isNew&&s.push(this.makeCode("new ")),s.push.apply(s,this.variable.compileToFragments(e,T)),s.push(this.makeCode("("))),s.push.apply(s,i),s.push(this.makeCode(")")),s},n.prototype.compileSplat=function(e,t){var n,i,r,s,o,a;return this.isSuper?[].concat(this.makeCode(this.superReference(e)+".apply("+this.superThis(e)+", "),t,this.makeCode(")")):this.isNew?(s=this.tab+q,[].concat(this.makeCode("(function(func, args, ctor) {\n"+s+"ctor.prototype = func.prototype;\n"+s+"var child = new ctor, result = func.apply(child, args);\n"+s+"return Object(result) === result ? result : child;\n"+this.tab+"})("),this.variable.compileToFragments(e,E),this.makeCode(", "),t,this.makeCode(", function(){})"))):(n=[],i=new z(this.variable),(o=i.properties.pop())&&i.isComplex()?(a=e.scope.freeVariable("ref"),n=n.concat(this.makeCode("("+a+" = "),i.compileToFragments(e,E),this.makeCode(")"),o.compileToFragments(e))):(r=i.compileToFragments(e,T),B.test(st(r))&&(r=this.wrapInBraces(r)),o?(a=st(r),r.push.apply(r,o.compileToFragments(e))):a="null",n=n.concat(r)),n=n.concat(this.makeCode(".apply("+a+", "),t,this.makeCode(")")))},n}(r),e.Extends=d=function(e){function t(e,t){this.child=e,this.parent=t}return kt(t,e),t.prototype.children=["child","parent"],t.prototype.compileToFragments=function(e){return new o(new z(new x(bt("extend",e))),[this.child,this.parent]).compileToFragments(e)},t}(r),e.Access=t=function(e){function t(e,t){this.name=e,this.name.asKey=!0,this.soak="soak"===t}return kt(t,e),t.prototype.children=["name"],t.prototype.compileToFragments=function(e){var t;return t=this.name.compileToFragments(e),g.test(st(t))?t.unshift(this.makeCode(".")):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.isComplex=D,t}(r),e.Index=w=function(e){function t(e){this.index=e}return kt(t,e),t.prototype.children=["index"],t.prototype.compileToFragments=function(e){return[].concat(this.makeCode("["),this.index.compileToFragments(e,N),this.makeCode("]"))},t.prototype.isComplex=function(){return this.index.isComplex()},t}(r),e.Range=j=function(e){function t(e,t,n){this.from=e,this.to=t,this.exclusive="exclusive"===n,this.equals=this.exclusive?"":"="}return kt(t,e),t.prototype.children=["from","to"],t.prototype.compileVariables=function(e){var t,n,i,r,s,o;return e=lt(e,{top:!0}),t=tt(e,"isComplex"),n=this.cacheToCodeFragments(this.from.cache(e,E,t)),this.fromC=n[0],this.fromVar=n[1],i=this.cacheToCodeFragments(this.to.cache(e,E,t)),this.toC=i[0],this.toVar=i[1],(o=tt(e,"step"))&&(r=this.cacheToCodeFragments(o.cache(e,E,t)),this.step=r[0],this.stepVar=r[1]),s=[this.fromVar.match(R),this.toVar.match(R)],this.fromNum=s[0],this.toNum=s[1],this.stepVar?this.stepNum=this.stepVar.match(R):void 0},t.prototype.compileNode=function(e){var t,n,i,r,s,o,a,c,h,l,u,p,d,f;return this.fromVar||this.compileVariables(e),e.index?(a=this.fromNum&&this.toNum,s=tt(e,"index"),o=tt(e,"name"),h=o&&o!==s,f=s+" = "+this.fromC,this.toC!==this.toVar&&(f+=", "+this.toC),this.step!==this.stepVar&&(f+=", "+this.step),l=[s+" <"+this.equals,s+" >"+this.equals],c=l[0],r=l[1],n=this.stepNum?pt(this.stepNum[0])>0?c+" "+this.toVar:r+" "+this.toVar:a?(u=[pt(this.fromNum[0]),pt(this.toNum[0])],i=u[0],d=u[1],u,d>=i?c+" "+d:r+" "+d):(t=this.stepVar?this.stepVar+" > 0":this.fromVar+" <= "+this.toVar,t+" ? "+c+" "+this.toVar+" : "+r+" "+this.toVar),p=this.stepVar?s+" += "+this.stepVar:a?h?d>=i?"++"+s:"--"+s:d>=i?s+"++":s+"--":h?t+" ? ++"+s+" : --"+s:t+" ? "+s+"++ : "+s+"--",h&&(f=o+" = "+f),h&&(p=o+" = "+p),[this.makeCode(f+"; "+n+"; "+p)]):this.compileArray(e)},t.prototype.compileArray=function(e){var t,n,i,r,s,o,a,c,h,l,u,p,d;return this.fromNum&&this.toNum&&20>=Math.abs(this.fromNum-this.toNum)?(h=function(){p=[];for(var e=l=+this.fromNum,t=+this.toNum;t>=l?t>=e:e>=t;t>=l?e++:e--)p.push(e);return p}.apply(this),this.exclusive&&h.pop(),[this.makeCode("["+h.join(", ")+"]")]):(o=this.tab+q,s=e.scope.freeVariable("i",{single:!0}),u=e.scope.freeVariable("results"),c="\n"+o+u+" = [];",this.fromNum&&this.toNum?(e.index=s,n=st(this.compileNode(e))):(d=s+" = "+this.fromC+(this.toC!==this.toVar?", "+this.toC:""),i=this.fromVar+" <= "+this.toVar,n="var "+d+"; "+i+" ? "+s+" <"+this.equals+" "+this.toVar+" : "+s+" >"+this.equals+" "+this.toVar+"; "+i+" ? "+s+"++ : "+s+"--"),a="{ "+u+".push("+s+"); }\n"+o+"return "+u+";\n"+e.indent,r=function(e){return null!=e?e.contains(at):void 0},(r(this.from)||r(this.to))&&(t=", arguments"),[this.makeCode("(function() {"+c+"\n"+o+"for ("+n+")"+a+"}).apply(this"+(null!=t?t:"")+")")])},t}(r),e.Slice=U=function(e){function t(e){this.range=e,t.__super__.constructor.call(this)}return kt(t,e),t.prototype.children=["range"],t.prototype.compileNode=function(e){var t,n,i,r,s,o,a;return s=this.range,o=s.to,i=s.from,r=i&&i.compileToFragments(e,N)||[this.makeCode("0")],o&&(t=o.compileToFragments(e,N),n=st(t),(this.range.exclusive||-1!==+n)&&(a=", "+(this.range.exclusive?n:B.test(n)?""+(+n+1):(t=o.compileToFragments(e,T),"+"+st(t)+" + 1 || 9e9")))),[this.makeCode(".slice("+st(r)+(a||"")+")")]},t}(r),e.Obj=A=function(e){function n(e,t){this.generated=null!=t?t:!1,this.objects=this.properties=e||[]}return kt(n,e),n.prototype.children=["properties"],n.prototype.compileNode=function(e){var n,r,s,o,a,c,h,u,p,d,f,m,g,v,y,b,k,w,T,C,E;if(T=this.properties,this.generated)for(h=0,g=T.length;g>h;h++)b=T[h],b instanceof z&&b.error("cannot have an implicit value in an implicit object");for(r=p=0,v=T.length;v>p&&(w=T[r],!((w.variable||w).base instanceof O));r=++p);for(s=T.length>r,a=e.indent+=q,m=this.lastNonComment(this.properties),n=[],s&&(k=e.scope.freeVariable("obj"),n.push(this.makeCode("(\n"+a+k+" = "))),n.push(this.makeCode("{"+(0===T.length||0===r?"}":"\n"))),o=f=0,y=T.length;y>f;o=++f)w=T[o],o===r&&(0!==o&&n.push(this.makeCode("\n"+a+"}")),n.push(this.makeCode(",\n"))),u=o===T.length-1||o===r-1?"":w===m||w instanceof l?"\n":",\n",c=w instanceof l?"":a,s&&r>o&&(c+=q),w instanceof i&&w.variable instanceof z&&w.variable.hasProperties()&&w.variable.error("invalid object key"),w instanceof z&&w["this"]&&(w=new i(w.properties[0].name,w,"object")),w instanceof l||(r>o?(w instanceof i||(w=new i(w,w,"object")),(w.variable.base||w.variable).asKey=!0):(w instanceof i?(d=w.variable,E=w.value):(C=w.base.cache(e),d=C[0],E=C[1]),w=new i(new z(new x(k),[new t(d)]),E))),c&&n.push(this.makeCode(c)),n.push.apply(n,w.compileToFragments(e,L)),u&&n.push(this.makeCode(u));return s?n.push(this.makeCode(",\n"+a+k+"\n"+this.tab+")")):0!==T.length&&n.push(this.makeCode("\n"+this.tab+"}")),this.front&&!s?this.wrapInBraces(n):n},n.prototype.assigns=function(e){var t,n,i,r;for(r=this.properties,t=0,n=r.length;n>t;t++)if(i=r[t],i.assigns(e))return!0;return!1},n}(r),e.Arr=n=function(e){function t(e){this.objects=e||[]}return kt(t,e),t.prototype.children=["objects"],t.prototype.compileNode=function(e){var t,n,i,r,s,o,a;if(!this.objects.length)return[this.makeCode("[]")];if(e.indent+=q,t=G.compileSplattedArray(e,this.objects),t.length)return t;for(t=[],n=function(){var t,n,i,r;for(i=this.objects,r=[],t=0,n=i.length;n>t;t++)a=i[t],r.push(a.compileToFragments(e,E));return r}.call(this),r=s=0,o=n.length;o>s;r=++s)i=n[r],r&&t.push(this.makeCode(", ")),t.push.apply(t,i);return st(t).indexOf("\n")>=0?(t.unshift(this.makeCode("[\n"+e.indent)),t.push(this.makeCode("\n"+this.tab+"]"))):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.assigns=function(e){var t,n,i,r;for(r=this.objects,t=0,n=r.length;n>t;t++)if(i=r[t],i.assigns(e))return!0;return!1},t}(r),e.Class=a=function(e){function n(e,t,n){this.variable=e,this.parent=t,this.body=null!=n?n:new s,this.boundFuncs=[],this.body.classBody=!0}return kt(n,e),n.prototype.children=["variable","parent","body"],n.prototype.determineName=function(){var e,n,i;return this.variable?(n=this.variable.properties,i=n[n.length-1],e=i?i instanceof t&&i.name.value:this.variable.base.value,Tt.call(V,e)>=0&&this.variable.error("class variable name may not be "+e),e&&(e=g.test(e)&&e)):null},n.prototype.setContext=function(e){return this.body.traverseChildren(!1,function(t){return t.classBody?!1:t instanceof x&&"this"===t.value?t.value=e:t instanceof c&&t.bound?t.context=e:void 0})},n.prototype.addBoundFunctions=function(e){var n,i,r,s,o;for(o=this.boundFuncs,i=0,r=o.length;r>i;i++)n=o[i],s=new z(new x("this"),[new t(n)]).compile(e),this.ctor.body.unshift(new x(s+" = "+bt("bind",e)+"("+s+", this)"))},n.prototype.addProperties=function(e,n,r){var s,o,a,h,l,u;return u=e.base.properties.slice(0),h=function(){var e;for(e=[];o=u.shift();)o instanceof i&&(a=o.variable.base,delete o.context,l=o.value,"constructor"===a.value?(this.ctor&&o.error("cannot define more than one constructor in a class"),l.bound&&o.error("cannot define a constructor as a bound function"),l instanceof c?o=this.ctor=l:(this.externalCtor=r.classScope.freeVariable("class"),o=new i(new x(this.externalCtor),l))):o.variable["this"]?l["static"]=!0:(s=a.isComplex()?new w(a):new t(a),o.variable=new z(new x(n),[new t(new x("prototype")),s]),l instanceof c&&l.bound&&(this.boundFuncs.push(a),l.bound=!1))),e.push(o);return e}.call(this),et(h)},n.prototype.walkBody=function(e,t){return this.traverseChildren(!1,function(r){return function(o){var a,c,h,l,u,p,d;if(a=!0,o instanceof n)return!1;if(o instanceof s){for(d=c=o.expressions,h=l=0,u=d.length;u>l;h=++l)p=d[h],p instanceof i&&p.variable.looksStatic(e)?p.value["static"]=!0:p instanceof z&&p.isObject(!0)&&(a=!1,c[h]=r.addProperties(p,e,t));o.expressions=c=rt(c)}return a&&!(o instanceof n)}}(this))},n.prototype.hoistDirectivePrologue=function(){var e,t,n;for(t=0,e=this.body.expressions;(n=e[t])&&n instanceof l||n instanceof z&&n.isString();)++t;return this.directives=e.splice(0,t)},n.prototype.ensureConstructor=function(e){return this.ctor||(this.ctor=new c,this.externalCtor?this.ctor.body.push(new x(this.externalCtor+".apply(this, arguments)")):this.parent&&this.ctor.body.push(new x(e+".__super__.constructor.apply(this, arguments)")),this.ctor.body.makeReturn(),this.body.expressions.unshift(this.ctor)),this.ctor.ctor=this.ctor.name=e,this.ctor.klass=null,this.ctor.noReturn=!0},n.prototype.compileNode=function(e){var t,n,r,a,h,l,u,p,f;return(a=this.body.jumps())&&a.error("Class bodies cannot contain pure statements"),(n=this.body.contains(at))&&n.error("Class bodies shouldn't reference arguments"),u=this.determineName()||"_Class",u.reserved&&(u="_"+u),l=new x(u),r=new c([],s.wrap([this.body])),t=[],e.classScope=r.makeScope(e.scope),this.hoistDirectivePrologue(),this.setContext(u),this.walkBody(u,e),this.ensureConstructor(u),this.addBoundFunctions(e),this.body.spaced=!0,this.body.expressions.push(l),this.parent&&(f=new x(e.classScope.freeVariable("superClass",{reserve:!1})),this.body.expressions.unshift(new d(l,f)),r.params.push(new _(f)),t.push(this.parent)),(p=this.body.expressions).unshift.apply(p,this.directives),h=new O(new o(r,t)),this.variable&&(h=new i(this.variable,h)),h.compileToFragments(e)},n}(r),e.Assign=i=function(e){function n(e,t,n,i){var r,s,o;this.variable=e,this.value=t,this.context=n,this.param=i&&i.param,this.subpattern=i&&i.subpattern,o=s=this.variable.unwrapAll().value,r=Tt.call(V,o)>=0,r&&"object"!==this.context&&this.variable.error('variable name may not be "'+s+'"')}return kt(n,e),n.prototype.children=["variable","value"],n.prototype.isStatement=function(e){return(null!=e?e.level:void 0)===L&&null!=this.context&&Tt.call(this.context,"?")>=0 +},n.prototype.assigns=function(e){return this["object"===this.context?"value":"variable"].assigns(e)},n.prototype.unfoldSoak=function(e){return yt(e,this,"variable")},n.prototype.compileNode=function(e){var t,n,i,r,s,o,a,h,l,u,p,d,f,m;if(i=this.variable instanceof z){if(this.variable.isArray()||this.variable.isObject())return this.compilePatternMatch(e);if(this.variable.isSplice())return this.compileSplice(e);if("||="===(h=this.context)||"&&="===h||"?="===h)return this.compileConditional(e);if("**="===(l=this.context)||"//="===l||"%%="===l)return this.compileSpecialMath(e)}return this.value instanceof c&&(this.value["static"]?(this.value.klass=this.variable.base,this.value.name=this.variable.properties[0],this.value.variable=this.variable):(null!=(u=this.variable.properties)?u.length:void 0)>=2&&(p=this.variable.properties,o=p.length>=3?Ct.call(p,0,r=p.length-2):(r=0,[]),a=p[r++],s=p[r++],"prototype"===(null!=(d=a.name)?d.value:void 0)&&(this.value.klass=new z(this.variable.base,o),this.value.name=s,this.value.variable=this.variable))),this.context||(m=this.variable.unwrapAll(),m.isAssignable()||this.variable.error('"'+this.variable.compile(e)+'" cannot be assigned'),("function"==typeof m.hasProperties?m.hasProperties():void 0)||(this.param?e.scope.add(m.value,"var"):e.scope.find(m.value))),f=this.value.compileToFragments(e,E),n=this.variable.compileToFragments(e,E),"object"===this.context?n.concat(this.makeCode(": "),f):(t=n.concat(this.makeCode(" "+(this.context||"=")+" "),f),E>=e.level?t:this.wrapInBraces(t))},n.prototype.compilePatternMatch=function(e){var i,r,s,o,a,c,h,l,u,d,f,m,v,y,b,k,T,C,N,S,D,R,A,I,_,j,M,B;if(I=e.level===L,j=this.value,y=this.variable.base.objects,!(b=y.length))return s=j.compileToFragments(e),e.level>=F?this.wrapInBraces(s):s;if(l=this.variable.isObject(),I&&1===b&&!((v=y[0])instanceof G))return v instanceof n?(T=v,C=T.variable,h=C.base,v=T.value):h=l?v["this"]?v.properties[0].name:v:new x(0),i=g.test(h.unwrap().value||0),j=new z(j),j.properties.push(new(i?t:w)(h)),N=v.unwrap().value,Tt.call($,N)>=0&&v.error("assignment to a reserved word: "+v.compile(e)),new n(v,j,null,{param:this.param}).compileToFragments(e,L);for(M=j.compileToFragments(e,E),B=st(M),r=[],o=!1,(!g.test(B)||this.variable.assigns(B))&&(r.push([this.makeCode((k=e.scope.freeVariable("ref"))+" = ")].concat(Ct.call(M))),M=[this.makeCode(k)],B=k),c=d=0,f=y.length;f>d;c=++d){if(v=y[c],h=c,l&&(v instanceof n?(S=v,D=S.variable,h=D.base,v=S.value):v.base instanceof O?(R=new z(v.unwrapAll()).cacheReference(e),v=R[0],h=R[1]):h=v["this"]?v.properties[0].name:v),!o&&v instanceof G)m=v.name.unwrap().value,v=v.unwrap(),_=b+" <= "+B+".length ? "+bt("slice",e)+".call("+B+", "+c,(A=b-c-1)?(u=e.scope.freeVariable("i",{single:!0}),_+=", "+u+" = "+B+".length - "+A+") : ("+u+" = "+c+", [])"):_+=") : []",_=new x(_),o=u+"++";else{if(!o&&v instanceof p){(A=b-c-1)&&(1===A?o=B+".length - 1":(u=e.scope.freeVariable("i",{single:!0}),_=new x(u+" = "+B+".length - "+A),o=u+"++",r.push(_.compileToFragments(e,E))));continue}m=v.unwrap().value,(v instanceof G||v instanceof p)&&v.error("multiple splats/expansions are disallowed in an assignment"),"number"==typeof h?(h=new x(o||h),i=!1):i=l&&g.test(h.unwrap().value||0),_=new z(new x(B),[new(i?t:w)(h)])}null!=m&&Tt.call($,m)>=0&&v.error("assignment to a reserved word: "+v.compile(e)),r.push(new n(v,_,null,{param:this.param,subpattern:!0}).compileToFragments(e,E))}return I||this.subpattern||r.push(M),a=this.joinFragmentArrays(r,", "),E>e.level?a:this.wrapInBraces(a)},n.prototype.compileConditional=function(e){var t,i,r,s;return r=this.variable.cacheReference(e),i=r[0],s=r[1],!i.properties.length&&i.base instanceof x&&"this"!==i.base.value&&!e.scope.check(i.base.value)&&this.variable.error('the variable "'+i.base.value+"\" can't be assigned with "+this.context+" because it has not been declared before"),Tt.call(this.context,"?")>=0?(e.isExistentialEquals=!0,new b(new u(i),s,{type:"if"}).addElse(new n(s,this.value,"=")).compileToFragments(e)):(t=new I(this.context.slice(0,-1),i,new n(s,this.value,"=")).compileToFragments(e),E>=e.level?t:this.wrapInBraces(t))},n.prototype.compileSpecialMath=function(e){var t,i,r;return i=this.variable.cacheReference(e),t=i[0],r=i[1],new n(t,new I(this.context.slice(0,-1),r,this.value)).compileToFragments(e)},n.prototype.compileSplice=function(e){var t,n,i,r,s,o,a,c,h,l,u,p;return a=this.variable.properties.pop().range,i=a.from,l=a.to,n=a.exclusive,o=this.variable.compile(e),i?(c=this.cacheToCodeFragments(i.cache(e,F)),r=c[0],s=c[1]):r=s="0",l?i instanceof z&&i.isSimpleNumber()&&l instanceof z&&l.isSimpleNumber()?(l=l.compile(e)-s,n||(l+=1)):(l=l.compile(e,T)+" - "+s,n||(l+=" + 1")):l="9e9",h=this.value.cache(e,E),u=h[0],p=h[1],t=[].concat(this.makeCode("[].splice.apply("+o+", ["+r+", "+l+"].concat("),u,this.makeCode(")), "),p),e.level>L?this.wrapInBraces(t):t},n}(r),e.Code=c=function(e){function t(e,t,n){this.params=e||[],this.body=t||new s,this.bound="boundfunc"===n,this.isGenerator=!!this.body.contains(function(e){var t;return e instanceof I&&("yield"===(t=e.operator)||"yield*"===t)})}return kt(t,e),t.prototype.children=["params","body"],t.prototype.isStatement=function(){return!!this.ctor},t.prototype.jumps=D,t.prototype.makeScope=function(e){return new P(e,this.body,this)},t.prototype.compileNode=function(e){var r,a,c,h,l,u,d,f,m,g,v,y,k,w,C,E,F,N,L,S,D,R,A,O,$,j,M,B,V,P,U,G,H;if(this.bound&&(null!=(A=e.scope.method)?A.bound:void 0)&&(this.context=e.scope.method.context),this.bound&&!this.context)return this.context="_this",H=new t([new _(new x(this.context))],new s([this])),a=new o(H,[new x("this")]),a.updateLocationDataIfMissing(this.locationData),a.compileNode(e);for(e.scope=tt(e,"classScope")||this.makeScope(e.scope),e.scope.shared=tt(e,"sharedScope"),e.indent+=q,delete e.bare,delete e.isExistentialEquals,L=[],h=[],O=this.params,u=0,m=O.length;m>u;u++)N=O[u],N instanceof p||e.scope.parameter(N.asReference(e));for($=this.params,d=0,g=$.length;g>d;d++)if(N=$[d],N.splat||N instanceof p){for(j=this.params,f=0,v=j.length;v>f;f++)F=j[f],F instanceof p||!F.name.value||e.scope.add(F.name.value,"var",!0);V=new i(new z(new n(function(){var t,n,i,r;for(i=this.params,r=[],n=0,t=i.length;t>n;n++)F=i[n],r.push(F.asReference(e));return r}.call(this))),new z(new x("arguments")));break}for(M=this.params,E=0,y=M.length;y>E;E++)N=M[E],N.isComplex()?(U=R=N.asReference(e),N.value&&(U=new I("?",R,N.value)),h.push(new i(new z(N.name),U,"=",{param:!0}))):(R=N,N.value&&(C=new x(R.name.value+" == null"),U=new i(new z(N.name),N.value,"="),h.push(new b(C,U)))),V||L.push(R);for(G=this.body.isEmpty(),V&&h.unshift(V),h.length&&(B=this.body.expressions).unshift.apply(B,h),l=S=0,k=L.length;k>S;l=++S)F=L[l],L[l]=F.compileToFragments(e),e.scope.parameter(st(L[l]));for(P=[],this.eachParamName(function(e,t){return Tt.call(P,e)>=0&&t.error("multiple parameters named "+e),P.push(e)}),G||this.noReturn||this.body.makeReturn(),c="function",this.isGenerator&&(c+="*"),this.ctor&&(c+=" "+this.name),c+="(",r=[this.makeCode(c)],l=D=0,w=L.length;w>D;l=++D)F=L[l],l&&r.push(this.makeCode(", ")),r.push.apply(r,F);return r.push(this.makeCode(") {")),this.body.isEmpty()||(r=r.concat(this.makeCode("\n"),this.body.compileWithDeclarations(e),this.makeCode("\n"+this.tab))),r.push(this.makeCode("}")),this.ctor?[this.makeCode(this.tab)].concat(Ct.call(r)):this.front||e.level>=T?this.wrapInBraces(r):r},t.prototype.eachParamName=function(e){var t,n,i,r,s;for(r=this.params,s=[],t=0,n=r.length;n>t;t++)i=r[t],s.push(i.eachName(e));return s},t.prototype.traverseChildren=function(e,n){return e?t.__super__.traverseChildren.call(this,e,n):void 0},t}(r),e.Param=_=function(e){function t(e,t,n){var i,r;this.name=e,this.value=t,this.splat=n,r=i=this.name.unwrapAll().value,Tt.call(V,r)>=0&&this.name.error('parameter name "'+i+'" is not allowed')}return kt(t,e),t.prototype.children=["name","value"],t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e,E)},t.prototype.asReference=function(e){var t,n;return this.reference?this.reference:(n=this.name,n["this"]?(t=n.properties[0].name.value,t.reserved&&(t="_"+t),n=new x(e.scope.freeVariable(t))):n.isComplex()&&(n=new x(e.scope.freeVariable("arg"))),n=new z(n),this.splat&&(n=new G(n)),n.updateLocationDataIfMissing(this.locationData),this.reference=n)},t.prototype.isComplex=function(){return this.name.isComplex()},t.prototype.eachName=function(e,t){var n,r,s,o,a,c;if(null==t&&(t=this.name),n=function(t){return e("@"+t.properties[0].name.value,t)},t instanceof x)return e(t.value,t);if(t instanceof z)return n(t);for(c=t.objects,r=0,s=c.length;s>r;r++)a=c[r],a instanceof i?this.eachName(e,a.value.unwrap()):a instanceof G?(o=a.name.unwrap(),e(o.value,o)):a instanceof z?a.isArray()||a.isObject()?this.eachName(e,a.base):a["this"]?n(a):e(a.base.value,a.base):a instanceof p||a.error("illegal parameter "+a.compile())},t}(r),e.Splat=G=function(e){function t(e){this.name=e.compile?e:new x(e)}return kt(t,e),t.prototype.children=["name"],t.prototype.isAssignable=Q,t.prototype.assigns=function(e){return this.name.assigns(e)},t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e)},t.prototype.unwrap=function(){return this.name},t.compileSplattedArray=function(e,n,i){var r,s,o,a,c,h,l,u,p,d,f;for(l=-1;(f=n[++l])&&!(f instanceof t););if(l>=n.length)return[];if(1===n.length)return f=n[0],c=f.compileToFragments(e,E),i?c:[].concat(f.makeCode(bt("slice",e)+".call("),c,f.makeCode(")"));for(r=n.slice(l),h=u=0,d=r.length;d>u;h=++u)f=r[h],o=f.compileToFragments(e,E),r[h]=f instanceof t?[].concat(f.makeCode(bt("slice",e)+".call("),o,f.makeCode(")")):[].concat(f.makeCode("["),o,f.makeCode("]"));return 0===l?(f=n[0],a=f.joinFragmentArrays(r.slice(1),", "),r[0].concat(f.makeCode(".concat("),a,f.makeCode(")"))):(s=function(){var t,i,r,s;for(r=n.slice(0,l),s=[],t=0,i=r.length;i>t;t++)f=r[t],s.push(f.compileToFragments(e,E));return s}(),s=n[0].joinFragmentArrays(s,", "),a=n[l].joinFragmentArrays(r,", "),p=n[n.length-1],[].concat(n[0].makeCode("["),s,n[l].makeCode("].concat("),a,p.makeCode(")")))},t}(r),e.Expansion=p=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return kt(t,e),t.prototype.isComplex=D,t.prototype.compileNode=function(){return this.error("Expansion must be used inside a destructuring assignment or parameter list")},t.prototype.asReference=function(){return this},t.prototype.eachName=function(){},t}(r),e.While=J=function(e){function t(e,t){this.condition=(null!=t?t.invert:void 0)?e.invert():e,this.guard=null!=t?t.guard:void 0}return kt(t,e),t.prototype.children=["condition","guard","body"],t.prototype.isStatement=Q,t.prototype.makeReturn=function(e){return e?t.__super__.makeReturn.apply(this,arguments):(this.returns=!this.jumps({loop:!0}),this)},t.prototype.addBody=function(e){return this.body=e,this},t.prototype.jumps=function(){var e,t,n,i,r;if(e=this.body.expressions,!e.length)return!1;for(t=0,i=e.length;i>t;t++)if(r=e[t],n=r.jumps({loop:!0}))return n;return!1},t.prototype.compileNode=function(e){var t,n,i,r;return e.indent+=q,r="",n=this.body,n.isEmpty()?n=this.makeCode(""):(this.returns&&(n.makeReturn(i=e.scope.freeVariable("results")),r=""+this.tab+i+" = [];\n"),this.guard&&(n.expressions.length>1?n.expressions.unshift(new b(new O(this.guard).invert(),new x("continue"))):this.guard&&(n=s.wrap([new b(this.guard,n)]))),n=[].concat(this.makeCode("\n"),n.compileToFragments(e,L),this.makeCode("\n"+this.tab))),t=[].concat(this.makeCode(r+this.tab+"while ("),this.condition.compileToFragments(e,N),this.makeCode(") {"),n,this.makeCode("}")),this.returns&&t.push(this.makeCode("\n"+this.tab+"return "+i+";")),t},t}(r),e.Op=I=function(e){function n(e,t,n,i){if("in"===e)return new k(t,n);if("do"===e)return this.generateDo(t);if("new"===e){if(t instanceof o&&!t["do"]&&!t.isNew)return t.newInstance();(t instanceof c&&t.bound||t["do"])&&(t=new O(t))}return this.operator=r[e]||e,this.first=t,this.second=n,this.flip=!!i,this}var r,s;return kt(n,e),r={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},s={"!==":"===","===":"!=="},n.prototype.children=["first","second"],n.prototype.isSimpleNumber=D,n.prototype.isYield=function(){var e;return"yield"===(e=this.operator)||"yield*"===e},n.prototype.isYieldReturn=function(){return this.isYield()&&this.first instanceof M},n.prototype.isUnary=function(){return!this.second},n.prototype.isComplex=function(){var e;return!(this.isUnary()&&("+"===(e=this.operator)||"-"===e)&&this.first instanceof z&&this.first.isSimpleNumber())},n.prototype.isChainable=function(){var e;return"<"===(e=this.operator)||">"===e||">="===e||"<="===e||"==="===e||"!=="===e},n.prototype.invert=function(){var e,t,i,r,o;if(this.isChainable()&&this.first.isChainable()){for(e=!0,t=this;t&&t.operator;)e&&(e=t.operator in s),t=t.first;if(!e)return new O(this).invert();for(t=this;t&&t.operator;)t.invert=!t.invert,t.operator=s[t.operator],t=t.first;return this}return(r=s[this.operator])?(this.operator=r,this.first.unwrap()instanceof n&&this.first.invert(),this):this.second?new O(this).invert():"!"===this.operator&&(i=this.first.unwrap())instanceof n&&("!"===(o=i.operator)||"in"===o||"instanceof"===o)?i:new n("!",this)},n.prototype.unfoldSoak=function(e){var t;return("++"===(t=this.operator)||"--"===t||"delete"===t)&&yt(e,this,"first")},n.prototype.generateDo=function(e){var t,n,r,s,a,h,l,u;for(h=[],n=e instanceof i&&(l=e.value.unwrap())instanceof c?l:e,u=n.params||[],r=0,s=u.length;s>r;r++)a=u[r],a.value?(h.push(a.value),delete a.value):h.push(a);return t=new o(e,h),t["do"]=!0,t},n.prototype.compileNode=function(e){var t,n,i,r,s,o;if(n=this.isChainable()&&this.first.isChainable(),n||(this.first.front=this.front),"delete"===this.operator&&e.scope.check(this.first.unwrapAll().value)&&this.error("delete operand may not be argument or var"),("--"===(r=this.operator)||"++"===r)&&(s=this.first.unwrapAll().value,Tt.call(V,s)>=0)&&this.error('cannot increment/decrement "'+this.first.unwrapAll().value+'"'),this.isYield())return this.compileYield(e);if(this.isUnary())return this.compileUnary(e);if(n)return this.compileChain(e);switch(this.operator){case"?":return this.compileExistence(e);case"**":return this.compilePower(e);case"//":return this.compileFloorDivision(e);case"%%":return this.compileModulo(e);default:return i=this.first.compileToFragments(e,F),o=this.second.compileToFragments(e,F),t=[].concat(i,this.makeCode(" "+this.operator+" "),o),F>=e.level?t:this.wrapInBraces(t)}},n.prototype.compileChain=function(e){var t,n,i,r;return i=this.first.second.cache(e),this.first.second=i[0],r=i[1],n=this.first.compileToFragments(e,F),t=n.concat(this.makeCode(" "+(this.invert?"&&":"||")+" "),r.compileToFragments(e),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(e,F)),this.wrapInBraces(t)},n.prototype.compileExistence=function(e){var t,n;return this.first.isComplex()?(n=new x(e.scope.freeVariable("ref")),t=new O(new i(n,this.first))):(t=this.first,n=t),new b(new u(t),n,{type:"if"}).addElse(this.second).compileToFragments(e)},n.prototype.compileUnary=function(e){var t,i,r;return i=[],t=this.operator,i.push([this.makeCode(t)]),"!"===t&&this.first instanceof u?(this.first.negated=!this.first.negated,this.first.compileToFragments(e)):e.level>=T?new O(this).compileToFragments(e):(r="+"===t||"-"===t,("new"===t||"typeof"===t||"delete"===t||r&&this.first instanceof n&&this.first.operator===t)&&i.push([this.makeCode(" ")]),(r&&this.first instanceof n||"new"===t&&this.first.isStatement(e))&&(this.first=new O(this.first)),i.push(this.first.compileToFragments(e,F)),this.flip&&i.reverse(),this.joinFragmentArrays(i,""))},n.prototype.compileYield=function(e){var t,n;return n=[],t=this.operator,null==e.scope.parent&&this.error("yield statements must occur within a function generator."),Tt.call(Object.keys(this.first),"expression")>=0&&!(this.first instanceof W)?this.isYieldReturn()?n.push(this.first.compileToFragments(e,L)):null!=this.first.expression&&n.push(this.first.expression.compileToFragments(e,F)):(n.push([this.makeCode("("+t+" ")]),n.push(this.first.compileToFragments(e,F)),n.push([this.makeCode(")")])),this.joinFragmentArrays(n,"")},n.prototype.compilePower=function(e){var n;return n=new z(new x("Math"),[new t(new x("pow"))]),new o(n,[this.first,this.second]).compileToFragments(e)},n.prototype.compileFloorDivision=function(e){var i,r;return r=new z(new x("Math"),[new t(new x("floor"))]),i=new n("/",this.first,this.second),new o(r,[i]).compileToFragments(e)},n.prototype.compileModulo=function(e){var t;return t=new z(new x(bt("modulo",e))),new o(t,[this.first,this.second]).compileToFragments(e)},n.prototype.toString=function(e){return n.__super__.toString.call(this,e,this.constructor.name+" "+this.operator)},n}(r),e.In=k=function(e){function t(e,t){this.object=e,this.array=t}return kt(t,e),t.prototype.children=["object","array"],t.prototype.invert=S,t.prototype.compileNode=function(e){var t,n,i,r,s;if(this.array instanceof z&&this.array.isArray()&&this.array.base.objects.length){for(s=this.array.base.objects,n=0,i=s.length;i>n;n++)if(r=s[n],r instanceof G){t=!0;break}if(!t)return this.compileOrTest(e)}return this.compileLoopTest(e)},t.prototype.compileOrTest=function(e){var t,n,i,r,s,o,a,c,h,l,u,p;for(c=this.object.cache(e,F),u=c[0],a=c[1],h=this.negated?[" !== "," && "]:[" === "," || "],t=h[0],n=h[1],p=[],l=this.array.base.objects,i=s=0,o=l.length;o>s;i=++s)r=l[i],i&&p.push(this.makeCode(n)),p=p.concat(i?a:u,this.makeCode(t),r.compileToFragments(e,T));return F>e.level?p:this.wrapInBraces(p)},t.prototype.compileLoopTest=function(e){var t,n,i,r;return i=this.object.cache(e,E),r=i[0],n=i[1],t=[].concat(this.makeCode(bt("indexOf",e)+".call("),this.array.compileToFragments(e,E),this.makeCode(", "),n,this.makeCode(") "+(this.negated?"< 0":">= 0"))),st(r)===st(n)?t:(t=r.concat(this.makeCode(", "),t),E>e.level?t:this.wrapInBraces(t))},t.prototype.toString=function(e){return t.__super__.toString.call(this,e,this.constructor.name+(this.negated?"!":""))},t}(r),e.Try=Y=function(e){function t(e,t,n,i){this.attempt=e,this.errorVariable=t,this.recovery=n,this.ensure=i}return kt(t,e),t.prototype.children=["attempt","recovery","ensure"],t.prototype.isStatement=Q,t.prototype.jumps=function(e){var t;return this.attempt.jumps(e)||(null!=(t=this.recovery)?t.jumps(e):void 0)},t.prototype.makeReturn=function(e){return this.attempt&&(this.attempt=this.attempt.makeReturn(e)),this.recovery&&(this.recovery=this.recovery.makeReturn(e)),this},t.prototype.compileNode=function(e){var t,n,r,s;return e.indent+=q,s=this.attempt.compileToFragments(e,L),t=this.recovery?(r=new x("_error"),this.errorVariable?this.recovery.unshift(new i(this.errorVariable,r)):void 0,[].concat(this.makeCode(" catch ("),r.compileToFragments(e),this.makeCode(") {\n"),this.recovery.compileToFragments(e,L),this.makeCode("\n"+this.tab+"}"))):this.ensure||this.recovery?[]:[this.makeCode(" catch (_error) {}")],n=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(e,L),this.makeCode("\n"+this.tab+"}")):[],[].concat(this.makeCode(this.tab+"try {\n"),s,this.makeCode("\n"+this.tab+"}"),t,n)},t}(r),e.Throw=W=function(e){function t(e){this.expression=e}return kt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=Q,t.prototype.jumps=D,t.prototype.makeReturn=X,t.prototype.compileNode=function(e){return[].concat(this.makeCode(this.tab+"throw "),this.expression.compileToFragments(e),this.makeCode(";"))},t}(r),e.Existence=u=function(e){function t(e){this.expression=e}return kt(t,e),t.prototype.children=["expression"],t.prototype.invert=S,t.prototype.compileNode=function(e){var t,n,i,r;return this.expression.front=this.front,i=this.expression.compile(e,F),g.test(i)&&!e.scope.check(i)?(r=this.negated?["===","||"]:["!==","&&"],t=r[0],n=r[1],i="typeof "+i+" "+t+' "undefined" '+n+" "+i+" "+t+" null"):i=i+" "+(this.negated?"==":"!=")+" null",[this.makeCode(C>=e.level?i:"("+i+")")]},t}(r),e.Parens=O=function(e){function t(e){this.body=e}return kt(t,e),t.prototype.children=["body"],t.prototype.unwrap=function(){return this.body},t.prototype.isComplex=function(){return this.body.isComplex()},t.prototype.compileNode=function(e){var t,n,i;return n=this.body.unwrap(),n instanceof z&&n.isAtomic()?(n.front=this.front,n.compileToFragments(e)):(i=n.compileToFragments(e,N),t=F>e.level&&(n instanceof I||n instanceof o||n instanceof f&&n.returns),t?i:this.wrapInBraces(i))},t}(r),e.For=f=function(e){function t(e,t){var n;this.source=t.source,this.guard=t.guard,this.step=t.step,this.name=t.name,this.index=t.index,this.body=s.wrap([e]),this.own=!!t.own,this.object=!!t.object,this.object&&(n=[this.index,this.name],this.name=n[0],this.index=n[1]),this.index instanceof z&&this.index.error("index cannot be a pattern matching expression"),this.range=this.source instanceof z&&this.source.base instanceof j&&!this.source.properties.length,this.pattern=this.name instanceof z,this.range&&this.index&&this.index.error("indexes do not apply to range loops"),this.range&&this.pattern&&this.name.error("cannot pattern match over range loops"),this.own&&!this.object&&this.name.error("cannot use own with for-in"),this.returns=!1}return kt(t,e),t.prototype.children=["body","source","guard","step"],t.prototype.compileNode=function(e){var t,n,r,o,a,c,h,l,u,p,d,f,m,v,y,k,w,T,C,F,N,S,D,A,I,_,$,j,B,V,P,U,G,H;return t=s.wrap([this.body]),D=t.expressions,T=D[D.length-1],(null!=T?T.jumps():void 0)instanceof M&&(this.returns=!1),B=this.range?this.source.base:this.source,j=e.scope,this.pattern||(F=this.name&&this.name.compile(e,E)),v=this.index&&this.index.compile(e,E),F&&!this.pattern&&j.find(F),v&&j.find(v),this.returns&&($=j.freeVariable("results")),y=this.object&&v||j.freeVariable("i",{single:!0}),k=this.range&&F||v||y,w=k!==y?k+" = ":"",this.step&&!this.range&&(A=this.cacheToCodeFragments(this.step.cache(e,E,ot)),V=A[0],U=A[1],P=U.match(R)),this.pattern&&(F=y),H="",d="",h="",f=this.tab+q,this.range?p=B.compileToFragments(lt(e,{index:y,name:F,step:this.step,isComplex:ot})):(G=this.source.compile(e,E),!F&&!this.own||g.test(G)||(h+=""+this.tab+(S=j.freeVariable("ref"))+" = "+G+";\n",G=S),F&&!this.pattern&&(N=F+" = "+G+"["+k+"]"),this.object||(V!==U&&(h+=""+this.tab+V+";\n"),this.step&&P&&(u=0>pt(P[0]))||(C=j.freeVariable("len")),a=""+w+y+" = 0, "+C+" = "+G+".length",c=""+w+y+" = "+G+".length - 1",r=y+" < "+C,o=y+" >= 0",this.step?(P?u&&(r=o,a=c):(r=U+" > 0 ? "+r+" : "+o,a="("+U+" > 0 ? ("+a+") : "+c+")"),m=y+" += "+U):m=""+(k!==y?"++"+y:y+"++"),p=[this.makeCode(a+"; "+r+"; "+w+m)])),this.returns&&(I=""+this.tab+$+" = [];\n",_="\n"+this.tab+"return "+$+";",t.makeReturn($)),this.guard&&(t.expressions.length>1?t.expressions.unshift(new b(new O(this.guard).invert(),new x("continue"))):this.guard&&(t=s.wrap([new b(this.guard,t)]))),this.pattern&&t.expressions.unshift(new i(this.name,new x(G+"["+k+"]"))),l=[].concat(this.makeCode(h),this.pluckDirectCall(e,t)),N&&(H="\n"+f+N+";"),this.object&&(p=[this.makeCode(k+" in "+G)],this.own&&(d="\n"+f+"if (!"+bt("hasProp",e)+".call("+G+", "+k+")) continue;")),n=t.compileToFragments(lt(e,{indent:f}),L),n&&n.length>0&&(n=[].concat(this.makeCode("\n"),n,this.makeCode("\n"))),[].concat(l,this.makeCode(""+(I||"")+this.tab+"for ("),p,this.makeCode(") {"+d+H),n,this.makeCode(this.tab+"}"+(_||"")))},t.prototype.pluckDirectCall=function(e,t){var n,r,s,a,h,l,u,p,d,f,m,g,v,y,b,k;for(r=[],d=t.expressions,h=l=0,u=d.length;u>l;h=++l)s=d[h],s=s.unwrapAll(),s instanceof o&&(k=null!=(f=s.variable)?f.unwrapAll():void 0,(k instanceof c||k instanceof z&&(null!=(m=k.base)?m.unwrapAll():void 0)instanceof c&&1===k.properties.length&&("call"===(g=null!=(v=k.properties[0].name)?v.value:void 0)||"apply"===g))&&(a=(null!=(y=k.base)?y.unwrapAll():void 0)||k,p=new x(e.scope.freeVariable("fn")),n=new z(p),k.base&&(b=[n,k],k.base=b[0],n=b[1]),t.expressions[h]=new o(n,s.args),r=r.concat(this.makeCode(this.tab),new i(p,a).compileToFragments(e,L),this.makeCode(";\n"))));return r},t}(J),e.Switch=H=function(e){function t(e,t,n){this.subject=e,this.cases=t,this.otherwise=n}return kt(t,e),t.prototype.children=["subject","cases","otherwise"],t.prototype.isStatement=Q,t.prototype.jumps=function(e){var t,n,i,r,s,o,a,c;for(null==e&&(e={block:!0}),o=this.cases,i=0,s=o.length;s>i;i++)if(a=o[i],n=a[0],t=a[1],r=t.jumps(e))return r;return null!=(c=this.otherwise)?c.jumps(e):void 0},t.prototype.makeReturn=function(e){var t,n,i,r,o;for(r=this.cases,t=0,n=r.length;n>t;t++)i=r[t],i[1].makeReturn(e);return e&&(this.otherwise||(this.otherwise=new s([new x("void 0")]))),null!=(o=this.otherwise)&&o.makeReturn(e),this},t.prototype.compileNode=function(e){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g;for(c=e.indent+q,h=e.indent=c+q,o=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(e,N):this.makeCode("false"),this.makeCode(") {\n")),f=this.cases,a=l=0,p=f.length;p>l;a=++l){for(m=f[a],r=m[0],t=m[1],g=rt([r]),u=0,d=g.length;d>u;u++)i=g[u],this.subject||(i=i.invert()),o=o.concat(this.makeCode(c+"case "),i.compileToFragments(e,N),this.makeCode(":\n"));if((n=t.compileToFragments(e,L)).length>0&&(o=o.concat(n,this.makeCode("\n"))),a===this.cases.length-1&&!this.otherwise)break;s=this.lastNonComment(t.expressions),s instanceof M||s instanceof x&&s.jumps()&&"debugger"!==s.value||o.push(i.makeCode(h+"break;\n"))}return this.otherwise&&this.otherwise.expressions.length&&o.push.apply(o,[this.makeCode(c+"default:\n")].concat(Ct.call(this.otherwise.compileToFragments(e,L)),[this.makeCode("\n")])),o.push(this.makeCode(this.tab+"}")),o},t}(r),e.If=b=function(e){function t(e,t,n){this.body=t,null==n&&(n={}),this.condition="unless"===n.type?e.invert():e,this.elseBody=null,this.isChain=!1,this.soak=n.soak}return kt(t,e),t.prototype.children=["condition","body","elseBody"],t.prototype.bodyNode=function(){var e;return null!=(e=this.body)?e.unwrap():void 0},t.prototype.elseBodyNode=function(){var e;return null!=(e=this.elseBody)?e.unwrap():void 0},t.prototype.addElse=function(e){return this.isChain?this.elseBodyNode().addElse(e):(this.isChain=e instanceof t,this.elseBody=this.ensureBlock(e),this.elseBody.updateLocationDataIfMissing(e.locationData)),this},t.prototype.isStatement=function(e){var t;return(null!=e?e.level:void 0)===L||this.bodyNode().isStatement(e)||(null!=(t=this.elseBodyNode())?t.isStatement(e):void 0)},t.prototype.jumps=function(e){var t;return this.body.jumps(e)||(null!=(t=this.elseBody)?t.jumps(e):void 0)},t.prototype.compileNode=function(e){return this.isStatement(e)?this.compileStatement(e):this.compileExpression(e)},t.prototype.makeReturn=function(e){return e&&(this.elseBody||(this.elseBody=new s([new x("void 0")]))),this.body&&(this.body=new s([this.body.makeReturn(e)])),this.elseBody&&(this.elseBody=new s([this.elseBody.makeReturn(e)])),this},t.prototype.ensureBlock=function(e){return e instanceof s?e:new s([e])},t.prototype.compileStatement=function(e){var n,i,r,s,o,a,c;return r=tt(e,"chainChild"),(o=tt(e,"isExistentialEquals"))?new t(this.condition.invert(),this.elseBodyNode(),{type:"if"}).compileToFragments(e):(c=e.indent+q,s=this.condition.compileToFragments(e,N),i=this.ensureBlock(this.body).compileToFragments(lt(e,{indent:c})),a=[].concat(this.makeCode("if ("),s,this.makeCode(") {\n"),i,this.makeCode("\n"+this.tab+"}")),r||a.unshift(this.makeCode(this.tab)),this.elseBody?(n=a.concat(this.makeCode(" else ")),this.isChain?(e.chainChild=!0,n=n.concat(this.elseBody.unwrap().compileToFragments(e,L))):n=n.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(lt(e,{indent:c}),L),this.makeCode("\n"+this.tab+"}")),n):a)},t.prototype.compileExpression=function(e){var t,n,i,r;return i=this.condition.compileToFragments(e,C),n=this.bodyNode().compileToFragments(e,E),t=this.elseBodyNode()?this.elseBodyNode().compileToFragments(e,E):[this.makeCode("void 0")],r=i.concat(this.makeCode(" ? "),n,this.makeCode(" : "),t),e.level>=C?this.wrapInBraces(r):r},t.prototype.unfoldSoak=function(){return this.soak&&this},t}(r),K={extend:function(e){return"function(child, parent) { for (var key in parent) { if ("+bt("hasProp",e)+".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }"},bind:function(){return"function(fn, me){ return function(){ return fn.apply(me, arguments); }; }"},indexOf:function(){return"[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }"},modulo:function(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},hasProp:function(){return"{}.hasOwnProperty"},slice:function(){return"[].slice"}},L=1,N=2,E=3,C=4,F=5,T=6,q=" ",g=/^(?!\d)[$\w\x7f-\uffff]+$/,B=/^[+-]?\d+$/,m=/^[+-]?0x[\da-f]+/i,R=/^[+-]?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)$/i,y=/^['"]/,v=/^\//,bt=function(e,t){var n,i;return i=t.scope.root,e in i.utilities?i.utilities[e]:(n=i.freeVariable(e),i.assign(n,K[e](t)),i.utilities[e]=n)},ut=function(e,t){return e=e.replace(/\n/g,"$&"+t),e.replace(/\s+$/,"")},pt=function(e){return null==e?0:e.match(m)?parseInt(e,16):parseFloat(e)},at=function(e){return e instanceof x&&"arguments"===e.value&&!e.asKey},ct=function(e){return e instanceof x&&"this"===e.value&&!e.asKey||e instanceof c&&e.bound||e instanceof o&&e.isSuper},ot=function(e){return e.isComplex()||("function"==typeof e.isAssignable?e.isAssignable():void 0)},yt=function(e,t,n){var i;if(i=t[n].unfoldSoak(e))return t[n]=i.body,i.body=new z(t),i}}.call(this),t.exports}(),_dereq_["./sourcemap"]=function(){var e={},t={exports:e};return function(){var e,n;e=function(){function e(e){this.line=e,this.columns=[]}return e.prototype.add=function(e,t,n){var i,r;return r=t[0],i=t[1],null==n&&(n={}),this.columns[e]&&n.noReplace?void 0:this.columns[e]={line:this.line,column:e,sourceLine:r,sourceColumn:i}},e.prototype.sourceLocation=function(e){for(var t;!((t=this.columns[e])||0>=e);)e--;return t&&[t.sourceLine,t.sourceColumn]},e}(),n=function(){function t(){this.lines=[]}var n,i,r,s;return t.prototype.add=function(t,n,i){var r,s,o,a;return null==i&&(i={}),o=n[0],s=n[1],a=(r=this.lines)[o]||(r[o]=new e(o)),a.add(s,t,i)},t.prototype.sourceLocation=function(e){var t,n,i;for(n=e[0],t=e[1];!((i=this.lines[n])||0>=n);)n--;return i&&i.sourceLocation(t)},t.prototype.generate=function(e,t){var n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v;for(null==e&&(e={}),null==t&&(t=null),v=0,s=0,a=0,o=0,d=!1,n="",f=this.lines,u=i=0,c=f.length;c>i;u=++i)if(l=f[u])for(m=l.columns,r=0,h=m.length;h>r;r++)if(p=m[r]){for(;p.line>v;)s=0,d=!1,n+=";",v++;d&&(n+=",",d=!1),n+=this.encodeVlq(p.column-s),s=p.column,n+=this.encodeVlq(0),n+=this.encodeVlq(p.sourceLine-a),a=p.sourceLine,n+=this.encodeVlq(p.sourceColumn-o),o=p.sourceColumn,d=!0}return g={version:3,file:e.generatedFile||"",sourceRoot:e.sourceRoot||"",sources:e.sourceFiles||[""],names:[],mappings:n},e.inline&&(g.sourcesContent=[t]),JSON.stringify(g,null,2)},r=5,i=1<<r,s=i-1,t.prototype.encodeVlq=function(e){var t,n,o,a;for(t="",o=0>e?1:0,a=(Math.abs(e)<<1)+o;a||!t;)n=a&s,a>>=r,a&&(n|=i),t+=this.encodeBase64(n);return t},n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t.prototype.encodeBase64=function(e){return n[e]||function(){throw Error("Cannot Base64 encode value: "+e)}()},t}(),t.exports=n}.call(this),t.exports}(),_dereq_["./coffee-script"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y,b={}.hasOwnProperty,k=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};if(a=_dereq_("fs"),v=_dereq_("vm"),f=_dereq_("path"),t=_dereq_("./lexer").Lexer,d=_dereq_("./parser").parser,h=_dereq_("./helpers"),n=_dereq_("./sourcemap"),e.VERSION="1.9.3",e.FILE_EXTENSIONS=[".coffee",".litcoffee",".coffee.md"],e.helpers=h,y=function(e){return function(t,n){var i;null==n&&(n={});try{return e.call(this,t,n) +}catch(r){if(i=r,"string"!=typeof t)throw i;throw h.updateSyntaxError(i,t,n.filename)}}},e.compile=r=y(function(e,t){var i,r,s,o,a,c,l,u,f,m,g,v,y,b,k;for(v=h.merge,o=h.extend,t=o({},t),t.sourceMap&&(g=new n),k=p.tokenize(e,t),t.referencedVars=function(){var e,t,n;for(n=[],e=0,t=k.length;t>e;e++)b=k[e],b.variable&&n.push(b[1]);return n}(),c=d.parse(k).compileToFragments(t),s=0,t.header&&(s+=1),t.shiftLine&&(s+=1),r=0,f="",u=0,m=c.length;m>u;u++)a=c[u],t.sourceMap&&(a.locationData&&!/^[;\s]*$/.test(a.code)&&g.add([a.locationData.first_line,a.locationData.first_column],[s,r],{noReplace:!0}),y=h.count(a.code,"\n"),s+=y,y?r=a.code.length-(a.code.lastIndexOf("\n")+1):r+=a.code.length),f+=a.code;return t.header&&(l="Generated by CoffeeScript "+this.VERSION,f="// "+l+"\n"+f),t.sourceMap?(i={js:f},i.sourceMap=g,i.v3SourceMap=g.generate(t,e),i):f}),e.tokens=y(function(e,t){return p.tokenize(e,t)}),e.nodes=y(function(e,t){return"string"==typeof e?d.parse(p.tokenize(e,t)):d.parse(e)}),e.run=function(e,t){var n,i,s,o;return null==t&&(t={}),s=_dereq_.main,s.filename=process.argv[1]=t.filename?a.realpathSync(t.filename):".",s.moduleCache&&(s.moduleCache={}),i=t.filename?f.dirname(a.realpathSync(t.filename)):a.realpathSync("."),s.paths=_dereq_("module")._nodeModulePaths(i),(!h.isCoffee(s.filename)||_dereq_.extensions)&&(n=r(e,t),e=null!=(o=n.js)?o:n),s._compile(e,s.filename)},e.eval=function(e,t){var n,i,s,o,a,c,h,l,u,p,d,m,g,y,k,w,T;if(null==t&&(t={}),e=e.trim()){if(o=null!=(m=v.Script.createContext)?m:v.createContext,c=null!=(g=v.isContext)?g:function(){return t.sandbox instanceof o().constructor},o){if(null!=t.sandbox){if(c(t.sandbox))w=t.sandbox;else{w=o(),y=t.sandbox;for(l in y)b.call(y,l)&&(T=y[l],w[l]=T)}w.global=w.root=w.GLOBAL=w}else w=global;if(w.__filename=t.filename||"eval",w.__dirname=f.dirname(w.__filename),w===global&&!w.module&&!w.require){for(n=_dereq_("module"),w.module=i=new n(t.modulename||"eval"),w.require=s=function(e){return n._load(e,i,!0)},i.filename=w.__filename,k=Object.getOwnPropertyNames(_dereq_),a=0,u=k.length;u>a;a++)d=k[a],"paths"!==d&&(s[d]=_dereq_[d]);s.paths=i.paths=n._nodeModulePaths(process.cwd()),s.resolve=function(e){return n._resolveFilename(e,i)}}}p={};for(l in t)b.call(t,l)&&(T=t[l],p[l]=T);return p.bare=!0,h=r(e,p),w===global?v.runInThisContext(h):v.runInContext(h,w)}},e.register=function(){return _dereq_("./register")},_dereq_.extensions)for(m=this.FILE_EXTENSIONS,l=0,u=m.length;u>l;l++)s=m[l],null==(i=_dereq_.extensions)[s]&&(i[s]=function(){throw Error("Use CoffeeScript.register() or require the coffee-script/register module to require "+s+" files.")});e._compileFile=function(e,t){var n,i,s,o;null==t&&(t=!1),s=a.readFileSync(e,"utf8"),o=65279===s.charCodeAt(0)?s.substring(1):s;try{n=r(o,{filename:e,sourceMap:t,literate:h.isLiterate(e)})}catch(c){throw i=c,h.updateSyntaxError(i,o,e)}return n},p=new t,d.lexer={lex:function(){var e,t;return t=d.tokens[this.pos++],t?(e=t[0],this.yytext=t[1],this.yylloc=t[2],d.errorToken=t.origin||t,this.yylineno=this.yylloc.first_line):e="",e},setInput:function(e){return d.tokens=e,this.pos=0},upcomingInput:function(){return""}},d.yy=_dereq_("./nodes"),d.yy.parseError=function(e,t){var n,i,r,s,o,a;return o=t.token,s=d.errorToken,a=d.tokens,i=s[0],r=s[1],n=s[2],r=function(){switch(!1){case s!==a[a.length-1]:return"end of input";case"INDENT"!==i&&"OUTDENT"!==i:return"indentation";case"IDENTIFIER"!==i&&"NUMBER"!==i&&"STRING"!==i&&"STRING_START"!==i&&"REGEX"!==i&&"REGEX_START"!==i:return i.replace(/_START$/,"").toLowerCase();default:return h.nameWhitespaceCharacter(r)}}(),h.throwSyntaxError("unexpected "+r,n)},o=function(e,t){var n,i,r,s,o,a,c,h,l,u,p,d;return s=void 0,r="",e.isNative()?r="native":(e.isEval()?(s=e.getScriptNameOrSourceURL(),s||(r=e.getEvalOrigin()+", ")):s=e.getFileName(),s||(s="<anonymous>"),h=e.getLineNumber(),i=e.getColumnNumber(),u=t(s,h,i),r=u?s+":"+u[0]+":"+u[1]:s+":"+h+":"+i),o=e.getFunctionName(),a=e.isConstructor(),c=!(e.isToplevel()||a),c?(l=e.getMethodName(),d=e.getTypeName(),o?(p=n="",d&&o.indexOf(d)&&(p=d+"."),l&&o.indexOf("."+l)!==o.length-l.length-1&&(n=" [as "+l+"]"),""+p+o+n+" ("+r+")"):d+"."+(l||"<anonymous>")+" ("+r+")"):a?"new "+(o||"<anonymous>")+" ("+r+")":o?o+" ("+r+")":r},g={},c=function(t){var n,i;if(g[t])return g[t];if(i=null!=f?f.extname(t):void 0,!(0>k.call(e.FILE_EXTENSIONS,i)))return n=e._compileFile(t,!0),g[t]=n.sourceMap},Error.prepareStackTrace=function(t,n){var i,r,s;return s=function(e,t,n){var i,r;return r=c(e),r&&(i=r.sourceLocation([t-1,n-1])),i?[i[0]+1,i[1]+1]:null},r=function(){var t,r,a;for(a=[],t=0,r=n.length;r>t&&(i=n[t],i.getFunction()!==e.run);t++)a.push(" at "+o(i,s));return a}(),""+t+"\n"+r.join("\n")+"\n"}}.call(this),t.exports}(),_dereq_["./browser"]=function(){var exports={},module={exports:exports};return function(){var CoffeeScript,compile,runScripts,indexOf=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};CoffeeScript=_dereq_("./coffee-script"),CoffeeScript.require=_dereq_,compile=CoffeeScript.compile,CoffeeScript.eval=function(code,options){return null==options&&(options={}),null==options.bare&&(options.bare=!0),eval(compile(code,options))},CoffeeScript.run=function(e,t){return null==t&&(t={}),t.bare=!0,t.shiftLine=!0,Function(compile(e,t))()},"undefined"!=typeof window&&null!==window&&("undefined"!=typeof btoa&&null!==btoa&&"undefined"!=typeof JSON&&null!==JSON&&"undefined"!=typeof unescape&&null!==unescape&&"undefined"!=typeof encodeURIComponent&&null!==encodeURIComponent&&(compile=function(e,t){var n,i,r;return null==t&&(t={}),t.sourceMap=!0,t.inline=!0,i=CoffeeScript.compile(e,t),n=i.js,r=i.v3SourceMap,n+"\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(r)))+"\n//# sourceURL=coffeescript"}),CoffeeScript.load=function(e,t,n,i){var r;return null==n&&(n={}),null==i&&(i=!1),n.sourceFiles=[e],r=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new window.XMLHttpRequest,r.open("GET",e,!0),"overrideMimeType"in r&&r.overrideMimeType("text/plain"),r.onreadystatechange=function(){var s,o;if(4===r.readyState){if(0!==(o=r.status)&&200!==o)throw Error("Could not load "+e);if(s=[r.responseText,n],i||CoffeeScript.run.apply(CoffeeScript,s),t)return t(s)}},r.send(null)},runScripts=function(){var e,t,n,i,r,s,o,a,c,h,l;for(l=window.document.getElementsByTagName("script"),t=["text/coffeescript","text/literate-coffeescript"],e=function(){var e,n,i,r;for(r=[],e=0,n=l.length;n>e;e++)c=l[e],i=c.type,indexOf.call(t,i)>=0&&r.push(c);return r}(),s=0,n=function(){var t;return t=e[s],t instanceof Array?(CoffeeScript.run.apply(CoffeeScript,t),s++,n()):void 0},i=function(i,r){var s,o;return s={literate:i.type===t[1]},o=i.src||i.getAttribute("data-src"),o?CoffeeScript.load(o,function(t){return e[r]=t,n()},s,!0):(s.sourceFiles=["embedded"],e[r]=[i.innerHTML,s])},r=o=0,a=e.length;a>o;r=++o)h=e[r],i(h,r);return n()},window.addEventListener?window.addEventListener("DOMContentLoaded",runScripts,!1):window.attachEvent("onload",runScripts))}.call(this),module.exports}(),_dereq_["./coffee-script"]}();"function"==typeof define&&define.amd?define(function(){return CoffeeScript}):root.CoffeeScript=CoffeeScript})(this); +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/coffee/parser_test.js b/plugins/node_modules/ace/lib/ace/mode/coffee/parser_test.js new file mode 100644 index 00000000..ccaae5b5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/coffee/parser_test.js @@ -0,0 +1,89 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var assert = require("../../test/assertions"); +var coffee = require("./coffee"); + +function assertLocation(e, sl, sc, el, ec) { + var l = e.location; + assert.equal( + l.first_line + ":" + l.first_column + "->" + l.last_line + ":" + l.last_column, + sl + ":" + sc + "->" + el + ":" + ec + ); +} + +function parse(str) { + try { + coffee.compile(str); + } catch (e) { + return e; + } +} + +module.exports = { + "test parse valid coffee script": function() { + coffee.compile("square = (x) -> x * x"); + }, + + "test parse invalid coffee script": function() { + var e = parse("a = 12 f"); + assert.equal(e.message, "unexpected identifier"); + assertLocation(e, 0, 7, 0, 7); + }, + + "test parse missing bracket": function() { + var e = parse("a = 12 f {\n\n"); + assert.equal(e.message, "missing }"); + assertLocation(e, 0, 9, 0, 9); + }, + "test unexpected indent": function() { + var e = parse("a\n a\n"); + assert.equal(e.message, "unexpected indentation"); + assertLocation(e, 1, 0, 1, 1); + }, + "test invalid destructuring": function() { + var e = parse("\n{b: 5} = {}"); + assert.equal(e.message, '"5" cannot be assigned'); + assertLocation(e, 1, 4, 1, 4); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/coffee_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/coffee_highlight_rules.js new file mode 100644 index 00000000..08630b08 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/coffee_highlight_rules.js @@ -0,0 +1,232 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + + var oop = require("../lib/oop"); + var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + + oop.inherits(CoffeeHighlightRules, TextHighlightRules); + + function CoffeeHighlightRules() { + var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; + + var keywords = ( + "this|throw|then|try|typeof|super|switch|return|break|by|continue|" + + "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + + "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + + "or|on|unless|until|and|yes" + ); + + var langConstant = ( + "true|false|null|undefined|NaN|Infinity" + ); + + var illegal = ( + "case|const|default|function|var|void|with|enum|export|implements|" + + "interface|let|package|private|protected|public|static|yield" + ); + + var supportClass = ( + "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + + "SyntaxError|TypeError|URIError|" + + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray" + ); + + var supportFunction = ( + "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + + "encodeURIComponent|decodeURI|decodeURIComponent|String|" + ); + + var variableLanguage = ( + "window|arguments|prototype|document" + ); + + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": langConstant, + "invalid.illegal": illegal, + "language.support.class": supportClass, + "language.support.function": supportFunction, + "variable.language": variableLanguage + }, "identifier"); + + var functionRule = { + token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], + regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source + }; + + var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; + + this.$rules = { + start : [ + { + token : "constant.numeric", + regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" + }, { + stateName: "qdoc", + token : "string", regex : "'''", next : [ + {token : "string", regex : "'''", next : "start"}, + {token : "constant.language.escape", regex : stringEscape}, + {defaultToken: "string"} + ] + }, { + stateName: "qqdoc", + token : "string", + regex : '"""', + next : [ + {token : "string", regex : '"""', next : "start"}, + {token : "paren.string", regex : '#{', push : "start"}, + {token : "constant.language.escape", regex : stringEscape}, + {defaultToken: "string"} + ] + }, { + stateName: "qstring", + token : "string", regex : "'", next : [ + {token : "string", regex : "'", next : "start"}, + {token : "constant.language.escape", regex : stringEscape}, + {defaultToken: "string"} + ] + }, { + stateName: "qqstring", + token : "string.start", regex : '"', next : [ + {token : "string.end", regex : '"', next : "start"}, + {token : "paren.string", regex : '#{', push : "start"}, + {token : "constant.language.escape", regex : stringEscape}, + {defaultToken: "string"} + ] + }, { + stateName: "js", + token : "string", regex : "`", next : [ + {token : "string", regex : "`", next : "start"}, + {token : "constant.language.escape", regex : stringEscape}, + {defaultToken: "string"} + ] + }, { + regex: "[{}]", onMatch: function(val, state, stack) { + this.next = ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + return "paren"; + } + if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift() || ""; + if (this.next.indexOf("string") != -1) + return "paren.string"; + } + return "paren"; + } + }, { + token : "string.regex", + regex : "///", + next : "heregex" + }, { + token : "string.regex", + regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ + }, { + token : "comment", + regex : "###(?!#)", + next : "comment" + }, { + token : "comment", + regex : "#.*" + }, { + token : ["punctuation.operator", "text", "identifier"], + regex : "(\\.)(\\s*)(" + illegal + ")" + }, { + token : "punctuation.operator", + regex : "\\.{1,3}" + }, { + //class A extends B + token : ["keyword", "text", "language.support.class", + "text", "keyword", "text", "language.support.class"], + regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" + }, { + //play = (...) -> + token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), + regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex + }, + functionRule, + { + token : "variable", + regex : "@(?:" + identifier + ")?" + }, { + token: keywordMapper, + regex : identifier + }, { + token : "punctuation.operator", + regex : "\\,|\\." + }, { + token : "storage.type", + regex : "[\\-=]>" + }, { + token : "keyword.operator", + regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" + }, { + token : "paren.lparen", + regex : "[({[]" + }, { + token : "paren.rparen", + regex : "[\\]})]" + }, { + token : "text", + regex : "\\s+" + }], + + + heregex : [{ + token : "string.regex", + regex : '.*?///[imgy]{0,4}', + next : "start" + }, { + token : "comment.regex", + regex : "\\s+(?:#.*)?" + }, { + token : "string.regex", + regex : "\\S+" + }], + + comment : [{ + token : "comment", + regex : '###', + next : "start" + }, { + defaultToken : "comment" + }] + }; + this.normalizeRules(); + } + + exports.CoffeeHighlightRules = CoffeeHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/coffee_worker.js b/plugins/node_modules/ace/lib/ace/mode/coffee_worker.js new file mode 100644 index 00000000..ff2f441e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/coffee_worker.js @@ -0,0 +1,73 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var coffee = require("../mode/coffee/coffee"); + +window.addEventListener = function() {}; + + +var Worker = exports.Worker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(250); +}; + +oop.inherits(Worker, Mirror); + +(function() { + + this.onUpdate = function() { + var value = this.doc.getValue(); + var errors = []; + try { + coffee.compile(value); + } catch(e) { + var loc = e.location; + if (loc) { + errors.push({ + row: loc.first_line, + column: loc.first_column, + endRow: loc.last_line, + endColumn: loc.last_column, + text: e.message, + type: "error" + }); + } + } + this.sender.emit("annotate", errors); + }; + +}).call(Worker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/coldfusion.js b/plugins/node_modules/ace/lib/ace/mode/coldfusion.js new file mode 100644 index 00000000..0b4ea449 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/coldfusion.js @@ -0,0 +1,61 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var HtmlMode = require("./html").Mode; +var ColdfusionHighlightRules = require("./coldfusion_highlight_rules").ColdfusionHighlightRules; + +var voidElements = "cfabort|cfapplication|cfargument|cfassociate|cfbreak|cfcache|cfcollection|cfcookie|cfdbinfo|cfdirectory|cfdump|cfelse|cfelseif|cferror|cfexchangecalendar|cfexchangeconnection|cfexchangecontact|cfexchangefilter|cfexchangetask|cfexit|cffeed|cffile|cfflush|cfftp|cfheader|cfhtmlhead|cfhttpparam|cfimage|cfimport|cfinclude|cfindex|cfinsert|cfinvokeargument|cflocation|cflog|cfmailparam|cfNTauthenticate|cfobject|cfobjectcache|cfparam|cfpdfformparam|cfprint|cfprocparam|cfprocresult|cfproperty|cfqueryparam|cfregistry|cfreportparam|cfrethrow|cfreturn|cfschedule|cfsearch|cfset|cfsetting|cfthrow|cfzipparam)".split("|"); + +var Mode = function() { + HtmlMode.call(this); + + this.HighlightRules = ColdfusionHighlightRules; +}; +oop.inherits(Mode, HtmlMode); + +(function() { + + // mix with html void elements + this.voidElements = oop.mixin(lang.arrayToMap(voidElements), this.voidElements); + + this.getNextLineIndent = function(state, line, tab) { + return this.$getIndent(line); + }; + + this.$id = "ace/mode/coldfusion"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/coldfusion_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/coldfusion_highlight_rules.js new file mode 100644 index 00000000..469de292 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/coldfusion_highlight_rules.js @@ -0,0 +1,86 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + +var ColdfusionHighlightRules = function() { + HtmlHighlightRules.call(this); + this.$rules.tag[2].token = function (start, tag) { + var group = tag.slice(0,2) == "cf" ? "keyword" : "meta.tag"; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + group + ".tag-name.xml"]; + }; + + var jsAndCss = Object.keys(this.$rules).filter(function(x) { + return /^(js|css)-/.test(x); + }); + this.embedRules({ + cfmlComment: [ + { regex: "<!---", token: "comment.start", push: "cfmlComment"}, + { regex: "--->", token: "comment.end", next: "pop"}, + { defaultToken: "comment"} + ] + }, "", [ + { regex: "<!---", token: "comment.start", push: "cfmlComment"} + ], [ + "comment", "start", "tag_whitespace", "cdata" + ].concat(jsAndCss)); + + + this.$rules.cfTag = [ + {include : "attributes"}, + {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "pop"} + ]; + var cfTag = { + token : function(start, tag) { + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "keyword.tag-name.xml"]; + }, + regex : "(</?)(cf[-_a-zA-Z0-9:.]+)", + push: "cfTag" + }; + jsAndCss.forEach(function(s) { + this.$rules[s].unshift(cfTag); + }, this); + + this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "cfjs-", "cfscript"); + + this.normalizeRules(); +}; + +oop.inherits(ColdfusionHighlightRules, HtmlHighlightRules); + +exports.ColdfusionHighlightRules = ColdfusionHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/coldfusion_test.js b/plugins/node_modules/ace/lib/ace/mode/coldfusion_test.js new file mode 100644 index 00000000..5a1860a2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/coldfusion_test.js @@ -0,0 +1,67 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var Range = require("../range").Range; +var ColdfusionMode = require("./coldfusion").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new ColdfusionMode(); + }, + + "test: toggle comment lines" : function() { + var session = new EditSession([" abc", " cde", "fg"]); + + var range = new Range(0, 3, 1, 1); + var comment = this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal([" <!--abc-->", " <!--cde-->", "fg"].join("\n"), session.toString()); + }, + + "test: next line indent should be the same as the current line indent" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", " abc")); + assert.equal("", this.mode.getNextLineIndent("start", "abc")); + assert.equal("\t", this.mode.getNextLineIndent("start", "\tabc")); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/csharp.js b/plugins/node_modules/ace/lib/ace/mode/csharp.js new file mode 100644 index 00000000..a3b2964f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csharp.js @@ -0,0 +1,61 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CSharpHighlightRules = require("./csharp_highlight_rules").CSharpHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/csharp").FoldMode; + +var Mode = function() { + this.HighlightRules = CSharpHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + + this.createWorker = function(session) { + return null; + }; + + this.$id = "ace/mode/csharp"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/csharp_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/csharp_highlight_rules.js new file mode 100644 index 00000000..aeea2f72 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csharp_highlight_rules.js @@ -0,0 +1,98 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var CSharpHighlightRules = function() { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": "abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|partial|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic", + "constant.language": "null|true|false" + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string", // character + regex : /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/ + }, { + token : "string", start : '"', end : '"|$', next: [ + {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, + {token: "invalid", regex: /\\./} + ] + }, { + token : "string", start : '@"', end : '"', next:[ + {token: "constant.language.escape", regex: '""'} + ] + }, { + token : "string", start : /\$"/, end : '"|$', next: [ + {token: "constant.language.escape", regex: /\\(:?$)|{{/}, + {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, + {token: "invalid", regex: /\\./} + ] + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "keyword", + regex : "^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)" + }, { + token : "punctuation.operator", + regex : "\\?|\\:|\\,|\\;|\\." + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); + this.normalizeRules(); +}; + +oop.inherits(CSharpHighlightRules, TextHighlightRules); + +exports.CSharpHighlightRules = CSharpHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/csound_document.js b/plugins/node_modules/ace/lib/ace/mode/csound_document.js new file mode 100644 index 00000000..a10d7d5e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csound_document.js @@ -0,0 +1,14 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CsoundDocumentHighlightRules = require("./csound_document_highlight_rules").CsoundDocumentHighlightRules; + +var Mode = function() { + this.HighlightRules = CsoundDocumentHighlightRules; +}; +oop.inherits(Mode, TextMode); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/csound_document_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/csound_document_highlight_rules.js new file mode 100644 index 00000000..c8023df4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csound_document_highlight_rules.js @@ -0,0 +1,66 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); + +var CsoundOrchestraHighlightRules = require("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules; +var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var CsoundDocumentHighlightRules = function() { + + this.$rules = { + "start": [ + { + token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex : /(<)(CsoundSynthesi[sz]er)(>)/, + next : "synthesizer" + }, + {defaultToken : "text.csound-document"} + ], + + "synthesizer": [ + { + token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex : "(</)(CsoundSynthesi[sz]er)(>)", + next : "start" + }, { + token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex : "(<)(CsInstruments)(>)", + next : "csound-start" + }, { + token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex : "(<)(CsScore)(>)", + next : "csound-score-start" + }, { + token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex : "(<)([Hh][Tt][Mm][Ll])(>)", + next : "html-start" + } + ] + }; + + this.embedRules(CsoundOrchestraHighlightRules, "csound-", [{ + token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex : "(</)(CsInstruments)(>)", + next : "synthesizer" + }]); + this.embedRules(CsoundScoreHighlightRules, "csound-score-", [{ + token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex : "(</)(CsScore)(>)", + next : "synthesizer" + }]); + this.embedRules(HtmlHighlightRules, "html-", [{ + token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex : "(</)([Hh][Tt][Mm][Ll])(>)", + next : "synthesizer" + }]); + + this.normalizeRules(); +}; + +oop.inherits(CsoundDocumentHighlightRules, TextHighlightRules); + +exports.CsoundDocumentHighlightRules = CsoundDocumentHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/csound_orchestra.js b/plugins/node_modules/ace/lib/ace/mode/csound_orchestra.js new file mode 100644 index 00000000..4f712911 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csound_orchestra.js @@ -0,0 +1,21 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CsoundOrchestraHighlightRules = require("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules; + +var Mode = function() { + this.HighlightRules = CsoundOrchestraHighlightRules; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ";"; + this.blockComment = {start: "/*", end: "*/"}; + +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/csound_orchestra_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/csound_orchestra_highlight_rules.js new file mode 100644 index 00000000..b775a021 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csound_orchestra_highlight_rules.js @@ -0,0 +1,1916 @@ +define(function(require, exports, module) { +"use strict"; + +var lang = require("../lib/lang"); +var oop = require("../lib/oop"); + +var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; +var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; +var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; +var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; + +var CsoundOrchestraHighlightRules = function() { + + CsoundPreprocessorHighlightRules.call(this); + + // To update the opcodes and deprecatedOpcodes arrays, run + /* + curl --remote-name https://bitbucket.org/nwhetsell/pygments-main/raw/tip/pygments/lexers/_csound_builtins.py + python -c "import json; from _csound_builtins import OPCODES, DEPRECATED_OPCODES; print 'var opcodes = {};'.format(json.dumps(sorted(list(OPCODES)), indent=4)); print 'var deprecatedOpcodes = {};'.format(json.dumps(sorted(list(DEPRECATED_OPCODES)), indent=4))" + */ + // and then paste the output. + var opcodes = [ + "ATSadd", + "ATSaddnz", + "ATSbufread", + "ATScross", + "ATSinfo", + "ATSinterpread", + "ATSpartialtap", + "ATSread", + "ATSreadnz", + "ATSsinnoi", + "FLbox", + "FLbutBank", + "FLbutton", + "FLcloseButton", + "FLcolor", + "FLcolor2", + "FLcount", + "FLexecButton", + "FLgetsnap", + "FLgroup", + "FLgroupEnd", + "FLgroup_end", + "FLhide", + "FLhvsBox", + "FLhvsBoxSetValue", + "FLjoy", + "FLkeyIn", + "FLknob", + "FLlabel", + "FLloadsnap", + "FLmouse", + "FLpack", + "FLpackEnd", + "FLpack_end", + "FLpanel", + "FLpanelEnd", + "FLpanel_end", + "FLprintk", + "FLprintk2", + "FLroller", + "FLrun", + "FLsavesnap", + "FLscroll", + "FLscrollEnd", + "FLscroll_end", + "FLsetAlign", + "FLsetBox", + "FLsetColor", + "FLsetColor2", + "FLsetFont", + "FLsetPosition", + "FLsetSize", + "FLsetSnapGroup", + "FLsetText", + "FLsetTextColor", + "FLsetTextSize", + "FLsetTextType", + "FLsetVal", + "FLsetVal_i", + "FLsetVali", + "FLsetsnap", + "FLshow", + "FLslidBnk", + "FLslidBnk2", + "FLslidBnk2Set", + "FLslidBnk2Setk", + "FLslidBnkGetHandle", + "FLslidBnkSet", + "FLslidBnkSetk", + "FLslider", + "FLtabs", + "FLtabsEnd", + "FLtabs_end", + "FLtext", + "FLupdate", + "FLvalue", + "FLvkeybd", + "FLvslidBnk", + "FLvslidBnk2", + "FLxyin", + "JackoAudioIn", + "JackoAudioInConnect", + "JackoAudioOut", + "JackoAudioOutConnect", + "JackoFreewheel", + "JackoInfo", + "JackoInit", + "JackoMidiInConnect", + "JackoMidiOut", + "JackoMidiOutConnect", + "JackoNoteOut", + "JackoOn", + "JackoTransport", + "K35_hpf", + "K35_lpf", + "MixerClear", + "MixerGetLevel", + "MixerReceive", + "MixerSend", + "MixerSetLevel", + "MixerSetLevel_i", + "OSCinit", + "OSClisten", + "OSCraw", + "OSCsend", + "S", + "STKBandedWG", + "STKBeeThree", + "STKBlowBotl", + "STKBlowHole", + "STKBowed", + "STKBrass", + "STKClarinet", + "STKDrummer", + "STKFMVoices", + "STKFlute", + "STKHevyMetl", + "STKMandolin", + "STKModalBar", + "STKMoog", + "STKPercFlut", + "STKPlucked", + "STKResonate", + "STKRhodey", + "STKSaxofony", + "STKShakers", + "STKSimple", + "STKSitar", + "STKStifKarp", + "STKTubeBell", + "STKVoicForm", + "STKWhistle", + "STKWurley", + "a", + "abs", + "active", + "adsr", + "adsyn", + "adsynt", + "adsynt2", + "aftouch", + "alpass", + "alwayson", + "ampdb", + "ampdbfs", + "ampmidi", + "ampmidid", + "areson", + "aresonk", + "atone", + "atonek", + "atonex", + "babo", + "balance", + "bamboo", + "barmodel", + "bbcutm", + "bbcuts", + "betarand", + "bexprnd", + "bformdec1", + "bformenc1", + "binit", + "biquad", + "biquada", + "birnd", + "bpf", + "bqrez", + "buchla", + "butbp", + "butbr", + "buthp", + "butlp", + "butterbp", + "butterbr", + "butterhp", + "butterlp", + "button", + "buzz", + "c2r", + "cabasa", + "cauchy", + "cauchyi", + "cbrt", + "ceil", + "cell", + "cent", + "centroid", + "ceps", + "cepsinv", + "chanctrl", + "changed", + "changed2", + "chani", + "chano", + "chebyshevpoly", + "checkbox", + "chn_S", + "chn_a", + "chn_k", + "chnclear", + "chnexport", + "chnget", + "chngetks", + "chnmix", + "chnparams", + "chnset", + "chnsetks", + "chuap", + "clear", + "clfilt", + "clip", + "clockoff", + "clockon", + "cmp", + "cmplxprod", + "comb", + "combinv", + "compilecsd", + "compileorc", + "compilestr", + "compress", + "compress2", + "connect", + "control", + "convle", + "convolve", + "copya2ftab", + "copyf2array", + "cos", + "cosh", + "cosinv", + "cosseg", + "cossegb", + "cossegr", + "cps2pch", + "cpsmidi", + "cpsmidib", + "cpsmidinn", + "cpsoct", + "cpspch", + "cpstmid", + "cpstun", + "cpstuni", + "cpsxpch", + "cpumeter", + "cpuprc", + "cross2", + "crossfm", + "crossfmi", + "crossfmpm", + "crossfmpmi", + "crosspm", + "crosspmi", + "crunch", + "ctlchn", + "ctrl14", + "ctrl21", + "ctrl7", + "ctrlinit", + "cuserrnd", + "dam", + "date", + "dates", + "db", + "dbamp", + "dbfsamp", + "dcblock", + "dcblock2", + "dconv", + "dct", + "dctinv", + "delay", + "delay1", + "delayk", + "delayr", + "delayw", + "deltap", + "deltap3", + "deltapi", + "deltapn", + "deltapx", + "deltapxw", + "denorm", + "diff", + "diode_ladder", + "directory", + "diskgrain", + "diskin", + "diskin2", + "dispfft", + "display", + "distort", + "distort1", + "divz", + "doppler", + "dot", + "downsamp", + "dripwater", + "dssiactivate", + "dssiaudio", + "dssictls", + "dssiinit", + "dssilist", + "dumpk", + "dumpk2", + "dumpk3", + "dumpk4", + "duserrnd", + "dust", + "dust2", + "envlpx", + "envlpxr", + "ephasor", + "eqfil", + "evalstr", + "event", + "event_i", + "exciter", + "exitnow", + "exp", + "expcurve", + "expon", + "exprand", + "exprandi", + "expseg", + "expsega", + "expsegb", + "expsegba", + "expsegr", + "fareylen", + "fareyleni", + "faustaudio", + "faustcompile", + "faustctl", + "faustgen", + "fft", + "fftinv", + "ficlose", + "filebit", + "filelen", + "filenchnls", + "filepeak", + "filescal", + "filesr", + "filevalid", + "fillarray", + "filter2", + "fin", + "fini", + "fink", + "fiopen", + "flanger", + "flashtxt", + "flooper", + "flooper2", + "floor", + "fluidAllOut", + "fluidCCi", + "fluidCCk", + "fluidControl", + "fluidEngine", + "fluidLoad", + "fluidNote", + "fluidOut", + "fluidProgramSelect", + "fluidSetInterpMethod", + "fmanal", + "fmax", + "fmb3", + "fmbell", + "fmin", + "fmmetal", + "fmod", + "fmpercfl", + "fmrhode", + "fmvoice", + "fmwurlie", + "fof", + "fof2", + "fofilter", + "fog", + "fold", + "follow", + "follow2", + "foscil", + "foscili", + "fout", + "fouti", + "foutir", + "foutk", + "fprintks", + "fprints", + "frac", + "fractalnoise", + "framebuffer", + "freeverb", + "ftchnls", + "ftconv", + "ftcps", + "ftfree", + "ftgen", + "ftgenonce", + "ftgentmp", + "ftlen", + "ftload", + "ftloadk", + "ftlptim", + "ftmorf", + "ftom", + "ftresize", + "ftresizei", + "ftsamplebank", + "ftsave", + "ftsavek", + "ftsr", + "gain", + "gainslider", + "gauss", + "gaussi", + "gausstrig", + "gbuzz", + "genarray", + "genarray_i", + "gendy", + "gendyc", + "gendyx", + "getcfg", + "getcol", + "getftargs", + "getrow", + "getseed", + "gogobel", + "grain", + "grain2", + "grain3", + "granule", + "guiro", + "harmon", + "harmon2", + "harmon3", + "harmon4", + "hdf5read", + "hdf5write", + "hilbert", + "hilbert2", + "hrtfearly", + "hrtfmove", + "hrtfmove2", + "hrtfreverb", + "hrtfstat", + "hsboscil", + "hvs1", + "hvs2", + "hvs3", + "hypot", + "i", + "ihold", + "imagecreate", + "imagefree", + "imagegetpixel", + "imageload", + "imagesave", + "imagesetpixel", + "imagesize", + "in", + "in32", + "inch", + "inh", + "init", + "initc14", + "initc21", + "initc7", + "inleta", + "inletf", + "inletk", + "inletkid", + "inletv", + "ino", + "inq", + "inrg", + "ins", + "insglobal", + "insremot", + "int", + "integ", + "interp", + "invalue", + "inx", + "inz", + "jacktransport", + "jitter", + "jitter2", + "joystick", + "jspline", + "k", + "la_i_add_mc", + "la_i_add_mr", + "la_i_add_vc", + "la_i_add_vr", + "la_i_assign_mc", + "la_i_assign_mr", + "la_i_assign_t", + "la_i_assign_vc", + "la_i_assign_vr", + "la_i_conjugate_mc", + "la_i_conjugate_mr", + "la_i_conjugate_vc", + "la_i_conjugate_vr", + "la_i_distance_vc", + "la_i_distance_vr", + "la_i_divide_mc", + "la_i_divide_mr", + "la_i_divide_vc", + "la_i_divide_vr", + "la_i_dot_mc", + "la_i_dot_mc_vc", + "la_i_dot_mr", + "la_i_dot_mr_vr", + "la_i_dot_vc", + "la_i_dot_vr", + "la_i_get_mc", + "la_i_get_mr", + "la_i_get_vc", + "la_i_get_vr", + "la_i_invert_mc", + "la_i_invert_mr", + "la_i_lower_solve_mc", + "la_i_lower_solve_mr", + "la_i_lu_det_mc", + "la_i_lu_det_mr", + "la_i_lu_factor_mc", + "la_i_lu_factor_mr", + "la_i_lu_solve_mc", + "la_i_lu_solve_mr", + "la_i_mc_create", + "la_i_mc_set", + "la_i_mr_create", + "la_i_mr_set", + "la_i_multiply_mc", + "la_i_multiply_mr", + "la_i_multiply_vc", + "la_i_multiply_vr", + "la_i_norm1_mc", + "la_i_norm1_mr", + "la_i_norm1_vc", + "la_i_norm1_vr", + "la_i_norm_euclid_mc", + "la_i_norm_euclid_mr", + "la_i_norm_euclid_vc", + "la_i_norm_euclid_vr", + "la_i_norm_inf_mc", + "la_i_norm_inf_mr", + "la_i_norm_inf_vc", + "la_i_norm_inf_vr", + "la_i_norm_max_mc", + "la_i_norm_max_mr", + "la_i_print_mc", + "la_i_print_mr", + "la_i_print_vc", + "la_i_print_vr", + "la_i_qr_eigen_mc", + "la_i_qr_eigen_mr", + "la_i_qr_factor_mc", + "la_i_qr_factor_mr", + "la_i_qr_sym_eigen_mc", + "la_i_qr_sym_eigen_mr", + "la_i_random_mc", + "la_i_random_mr", + "la_i_random_vc", + "la_i_random_vr", + "la_i_size_mc", + "la_i_size_mr", + "la_i_size_vc", + "la_i_size_vr", + "la_i_subtract_mc", + "la_i_subtract_mr", + "la_i_subtract_vc", + "la_i_subtract_vr", + "la_i_t_assign", + "la_i_trace_mc", + "la_i_trace_mr", + "la_i_transpose_mc", + "la_i_transpose_mr", + "la_i_upper_solve_mc", + "la_i_upper_solve_mr", + "la_i_vc_create", + "la_i_vc_set", + "la_i_vr_create", + "la_i_vr_set", + "la_k_a_assign", + "la_k_add_mc", + "la_k_add_mr", + "la_k_add_vc", + "la_k_add_vr", + "la_k_assign_a", + "la_k_assign_f", + "la_k_assign_mc", + "la_k_assign_mr", + "la_k_assign_t", + "la_k_assign_vc", + "la_k_assign_vr", + "la_k_conjugate_mc", + "la_k_conjugate_mr", + "la_k_conjugate_vc", + "la_k_conjugate_vr", + "la_k_current_f", + "la_k_current_vr", + "la_k_distance_vc", + "la_k_distance_vr", + "la_k_divide_mc", + "la_k_divide_mr", + "la_k_divide_vc", + "la_k_divide_vr", + "la_k_dot_mc", + "la_k_dot_mc_vc", + "la_k_dot_mr", + "la_k_dot_mr_vr", + "la_k_dot_vc", + "la_k_dot_vr", + "la_k_f_assign", + "la_k_get_mc", + "la_k_get_mr", + "la_k_get_vc", + "la_k_get_vr", + "la_k_invert_mc", + "la_k_invert_mr", + "la_k_lower_solve_mc", + "la_k_lower_solve_mr", + "la_k_lu_det_mc", + "la_k_lu_det_mr", + "la_k_lu_factor_mc", + "la_k_lu_factor_mr", + "la_k_lu_solve_mc", + "la_k_lu_solve_mr", + "la_k_mc_set", + "la_k_mr_set", + "la_k_multiply_mc", + "la_k_multiply_mr", + "la_k_multiply_vc", + "la_k_multiply_vr", + "la_k_norm1_mc", + "la_k_norm1_mr", + "la_k_norm1_vc", + "la_k_norm1_vr", + "la_k_norm_euclid_mc", + "la_k_norm_euclid_mr", + "la_k_norm_euclid_vc", + "la_k_norm_euclid_vr", + "la_k_norm_inf_mc", + "la_k_norm_inf_mr", + "la_k_norm_inf_vc", + "la_k_norm_inf_vr", + "la_k_norm_max_mc", + "la_k_norm_max_mr", + "la_k_qr_eigen_mc", + "la_k_qr_eigen_mr", + "la_k_qr_factor_mc", + "la_k_qr_factor_mr", + "la_k_qr_sym_eigen_mc", + "la_k_qr_sym_eigen_mr", + "la_k_random_mc", + "la_k_random_mr", + "la_k_random_vc", + "la_k_random_vr", + "la_k_subtract_mc", + "la_k_subtract_mr", + "la_k_subtract_vc", + "la_k_subtract_vr", + "la_k_t_assign", + "la_k_trace_mc", + "la_k_trace_mr", + "la_k_upper_solve_mc", + "la_k_upper_solve_mr", + "la_k_vc_set", + "la_k_vr_set", + "lenarray", + "lfo", + "limit", + "limit1", + "line", + "linen", + "linenr", + "lineto", + "link_beat_force", + "link_beat_get", + "link_beat_request", + "link_create", + "link_enable", + "link_is_enabled", + "link_metro", + "link_peers", + "link_tempo_get", + "link_tempo_set", + "linlin", + "linrand", + "linseg", + "linsegb", + "linsegr", + "liveconv", + "locsend", + "locsig", + "log", + "log10", + "log2", + "logbtwo", + "logcurve", + "loopseg", + "loopsegp", + "looptseg", + "loopxseg", + "lorenz", + "loscil", + "loscil3", + "loscilx", + "lowpass2", + "lowres", + "lowresx", + "lpf18", + "lpform", + "lpfreson", + "lphasor", + "lpinterp", + "lposcil", + "lposcil3", + "lposcila", + "lposcilsa", + "lposcilsa2", + "lpread", + "lpreson", + "lpshold", + "lpsholdp", + "lpslot", + "lua_exec", + "lua_iaopcall", + "lua_iaopcall_off", + "lua_ikopcall", + "lua_ikopcall_off", + "lua_iopcall", + "lua_iopcall_off", + "lua_opdef", + "mac", + "maca", + "madsr", + "mags", + "mandel", + "mandol", + "maparray", + "maparray_i", + "marimba", + "massign", + "max", + "max_k", + "maxabs", + "maxabsaccum", + "maxaccum", + "maxalloc", + "maxarray", + "mclock", + "mdelay", + "median", + "mediank", + "metro", + "mfb", + "midglobal", + "midiarp", + "midic14", + "midic21", + "midic7", + "midichannelaftertouch", + "midichn", + "midicontrolchange", + "midictrl", + "mididefault", + "midifilestatus", + "midiin", + "midinoteoff", + "midinoteoncps", + "midinoteonkey", + "midinoteonoct", + "midinoteonpch", + "midion", + "midion2", + "midiout", + "midiout_i", + "midipgm", + "midipitchbend", + "midipolyaftertouch", + "midiprogramchange", + "miditempo", + "midremot", + "min", + "minabs", + "minabsaccum", + "minaccum", + "minarray", + "mincer", + "mirror", + "mode", + "modmatrix", + "monitor", + "moog", + "moogladder", + "moogladder2", + "moogvcf", + "moogvcf2", + "moscil", + "mp3bitrate", + "mp3in", + "mp3len", + "mp3nchnls", + "mp3scal", + "mp3scal_check", + "mp3scal_load", + "mp3scal_load2", + "mp3scal_play", + "mp3scal_play2", + "mp3sr", + "mpulse", + "mrtmsg", + "mtof", + "mton", + "multitap", + "mute", + "mvchpf", + "mvclpf1", + "mvclpf2", + "mvclpf3", + "mvclpf4", + "mxadsr", + "nchnls_hw", + "nestedap", + "nlalp", + "nlfilt", + "nlfilt2", + "noise", + "noteoff", + "noteon", + "noteondur", + "noteondur2", + "notnum", + "nreverb", + "nrpn", + "nsamp", + "nstance", + "nstrnum", + "ntom", + "ntrpol", + "nxtpow2", + "octave", + "octcps", + "octmidi", + "octmidib", + "octmidinn", + "octpch", + "olabuffer", + "oscbnk", + "oscil", + "oscil1", + "oscil1i", + "oscil3", + "oscili", + "oscilikt", + "osciliktp", + "oscilikts", + "osciln", + "oscils", + "oscilx", + "out", + "out32", + "outc", + "outch", + "outh", + "outiat", + "outic", + "outic14", + "outipat", + "outipb", + "outipc", + "outkat", + "outkc", + "outkc14", + "outkpat", + "outkpb", + "outkpc", + "outleta", + "outletf", + "outletk", + "outletkid", + "outletv", + "outo", + "outq", + "outq1", + "outq2", + "outq3", + "outq4", + "outrg", + "outs", + "outs1", + "outs2", + "outvalue", + "outx", + "outz", + "p", + "p5gconnect", + "p5gdata", + "pan", + "pan2", + "pareq", + "part2txt", + "partials", + "partikkel", + "partikkelget", + "partikkelset", + "partikkelsync", + "passign", + "paulstretch", + "pcauchy", + "pchbend", + "pchmidi", + "pchmidib", + "pchmidinn", + "pchoct", + "pchtom", + "pconvolve", + "pcount", + "pdclip", + "pdhalf", + "pdhalfy", + "peak", + "pgmassign", + "pgmchn", + "phaser1", + "phaser2", + "phasor", + "phasorbnk", + "phs", + "pindex", + "pinker", + "pinkish", + "pitch", + "pitchac", + "pitchamdf", + "planet", + "platerev", + "plltrack", + "pluck", + "poisson", + "pol2rect", + "polyaft", + "polynomial", + "port", + "portk", + "poscil", + "poscil3", + "pow", + "powershape", + "powoftwo", + "pows", + "prealloc", + "prepiano", + "print", + "print_type", + "printf", + "printf_i", + "printk", + "printk2", + "printks", + "printks2", + "prints", + "product", + "pset", + "ptable", + "ptable3", + "ptablei", + "ptableiw", + "ptablew", + "ptrack", + "puts", + "pvadd", + "pvbufread", + "pvcross", + "pvinterp", + "pvoc", + "pvread", + "pvs2array", + "pvs2tab", + "pvsadsyn", + "pvsanal", + "pvsarp", + "pvsbandp", + "pvsbandr", + "pvsbin", + "pvsblur", + "pvsbuffer", + "pvsbufread", + "pvsbufread2", + "pvscale", + "pvscent", + "pvsceps", + "pvscross", + "pvsdemix", + "pvsdiskin", + "pvsdisp", + "pvsenvftw", + "pvsfilter", + "pvsfread", + "pvsfreeze", + "pvsfromarray", + "pvsftr", + "pvsftw", + "pvsfwrite", + "pvsgain", + "pvsgendy", + "pvshift", + "pvsifd", + "pvsin", + "pvsinfo", + "pvsinit", + "pvslock", + "pvsmaska", + "pvsmix", + "pvsmooth", + "pvsmorph", + "pvsosc", + "pvsout", + "pvspitch", + "pvstanal", + "pvstencil", + "pvstrace", + "pvsvoc", + "pvswarp", + "pvsynth", + "pwd", + "pyassign", + "pyassigni", + "pyassignt", + "pycall", + "pycall1", + "pycall1i", + "pycall1t", + "pycall2", + "pycall2i", + "pycall2t", + "pycall3", + "pycall3i", + "pycall3t", + "pycall4", + "pycall4i", + "pycall4t", + "pycall5", + "pycall5i", + "pycall5t", + "pycall6", + "pycall6i", + "pycall6t", + "pycall7", + "pycall7i", + "pycall7t", + "pycall8", + "pycall8i", + "pycall8t", + "pycalli", + "pycalln", + "pycallni", + "pycallt", + "pyeval", + "pyevali", + "pyevalt", + "pyexec", + "pyexeci", + "pyexect", + "pyinit", + "pylassign", + "pylassigni", + "pylassignt", + "pylcall", + "pylcall1", + "pylcall1i", + "pylcall1t", + "pylcall2", + "pylcall2i", + "pylcall2t", + "pylcall3", + "pylcall3i", + "pylcall3t", + "pylcall4", + "pylcall4i", + "pylcall4t", + "pylcall5", + "pylcall5i", + "pylcall5t", + "pylcall6", + "pylcall6i", + "pylcall6t", + "pylcall7", + "pylcall7i", + "pylcall7t", + "pylcall8", + "pylcall8i", + "pylcall8t", + "pylcalli", + "pylcalln", + "pylcallni", + "pylcallt", + "pyleval", + "pylevali", + "pylevalt", + "pylexec", + "pylexeci", + "pylexect", + "pylrun", + "pylruni", + "pylrunt", + "pyrun", + "pyruni", + "pyrunt", + "qinf", + "qnan", + "r2c", + "rand", + "randh", + "randi", + "random", + "randomh", + "randomi", + "rbjeq", + "readclock", + "readf", + "readfi", + "readk", + "readk2", + "readk3", + "readk4", + "readks", + "readscore", + "readscratch", + "rect2pol", + "release", + "remoteport", + "remove", + "repluck", + "reson", + "resonk", + "resonr", + "resonx", + "resonxk", + "resony", + "resonz", + "resyn", + "reverb", + "reverb2", + "reverbsc", + "rewindscore", + "rezzy", + "rfft", + "rifft", + "rms", + "rnd", + "rnd31", + "round", + "rspline", + "rtclock", + "s16b14", + "s32b14", + "samphold", + "sandpaper", + "sc_lag", + "sc_lagud", + "sc_phasor", + "sc_trig", + "scale", + "scalearray", + "scanhammer", + "scans", + "scantable", + "scanu", + "schedkwhen", + "schedkwhennamed", + "schedule", + "schedwhen", + "scoreline", + "scoreline_i", + "seed", + "sekere", + "select", + "semitone", + "sense", + "sensekey", + "seqtime", + "seqtime2", + "serialBegin", + "serialEnd", + "serialFlush", + "serialPrint", + "serialRead", + "serialWrite", + "serialWrite_i", + "setcol", + "setctrl", + "setksmps", + "setrow", + "setscorepos", + "sfilist", + "sfinstr", + "sfinstr3", + "sfinstr3m", + "sfinstrm", + "sfload", + "sflooper", + "sfpassign", + "sfplay", + "sfplay3", + "sfplay3m", + "sfplaym", + "sfplist", + "sfpreset", + "shaker", + "shiftin", + "shiftout", + "signalflowgraph", + "signum", + "sin", + "sinh", + "sininv", + "sinsyn", + "sleighbells", + "slicearray", + "slider16", + "slider16f", + "slider16table", + "slider16tablef", + "slider32", + "slider32f", + "slider32table", + "slider32tablef", + "slider64", + "slider64f", + "slider64table", + "slider64tablef", + "slider8", + "slider8f", + "slider8table", + "slider8tablef", + "sliderKawai", + "sndloop", + "sndwarp", + "sndwarpst", + "sockrecv", + "sockrecvs", + "socksend", + "socksend_k", + "socksends", + "sorta", + "sortd", + "soundin", + "space", + "spat3d", + "spat3di", + "spat3dt", + "spdist", + "splitrig", + "sprintf", + "sprintfk", + "spsend", + "sqrt", + "squinewave", + "statevar", + "stix", + "strcat", + "strcatk", + "strchar", + "strchark", + "strcmp", + "strcmpk", + "strcpy", + "strcpyk", + "strecv", + "streson", + "strfromurl", + "strget", + "strindex", + "strindexk", + "strlen", + "strlenk", + "strlower", + "strlowerk", + "strrindex", + "strrindexk", + "strset", + "strsub", + "strsubk", + "strtod", + "strtodk", + "strtol", + "strtolk", + "strupper", + "strupperk", + "stsend", + "subinstr", + "subinstrinit", + "sum", + "sumarray", + "svfilter", + "syncgrain", + "syncloop", + "syncphasor", + "system", + "system_i", + "tab", + "tab2pvs", + "tab_i", + "tabifd", + "table", + "table3", + "table3kt", + "tablecopy", + "tablefilter", + "tablefilteri", + "tablegpw", + "tablei", + "tableicopy", + "tableigpw", + "tableikt", + "tableimix", + "tableiw", + "tablekt", + "tablemix", + "tableng", + "tablera", + "tableseg", + "tableshuffle", + "tableshufflei", + "tablew", + "tablewa", + "tablewkt", + "tablexkt", + "tablexseg", + "tabmorph", + "tabmorpha", + "tabmorphak", + "tabmorphi", + "tabplay", + "tabrec", + "tabsum", + "tabw", + "tabw_i", + "tambourine", + "tan", + "tanh", + "taninv", + "taninv2", + "tb0", + "tb0_init", + "tb1", + "tb10", + "tb10_init", + "tb11", + "tb11_init", + "tb12", + "tb12_init", + "tb13", + "tb13_init", + "tb14", + "tb14_init", + "tb15", + "tb15_init", + "tb1_init", + "tb2", + "tb2_init", + "tb3", + "tb3_init", + "tb4", + "tb4_init", + "tb5", + "tb5_init", + "tb6", + "tb6_init", + "tb7", + "tb7_init", + "tb8", + "tb8_init", + "tb9", + "tb9_init", + "tbvcf", + "tempest", + "tempo", + "temposcal", + "tempoval", + "timedseq", + "timeinstk", + "timeinsts", + "timek", + "times", + "tival", + "tlineto", + "tone", + "tonek", + "tonex", + "tradsyn", + "trandom", + "transeg", + "transegb", + "transegr", + "trcross", + "trfilter", + "trhighest", + "trigger", + "trigseq", + "trirand", + "trlowest", + "trmix", + "trscale", + "trshift", + "trsplit", + "turnoff", + "turnoff2", + "turnon", + "tvconv", + "unirand", + "unwrap", + "upsamp", + "urandom", + "urd", + "vactrol", + "vadd", + "vadd_i", + "vaddv", + "vaddv_i", + "vaget", + "valpass", + "vaset", + "vbap", + "vbapg", + "vbapgmove", + "vbaplsinit", + "vbapmove", + "vbapz", + "vbapzmove", + "vcella", + "vco", + "vco2", + "vco2ft", + "vco2ift", + "vco2init", + "vcomb", + "vcopy", + "vcopy_i", + "vdel_k", + "vdelay", + "vdelay3", + "vdelayk", + "vdelayx", + "vdelayxq", + "vdelayxs", + "vdelayxw", + "vdelayxwq", + "vdelayxws", + "vdivv", + "vdivv_i", + "vecdelay", + "veloc", + "vexp", + "vexp_i", + "vexpseg", + "vexpv", + "vexpv_i", + "vibes", + "vibr", + "vibrato", + "vincr", + "vlimit", + "vlinseg", + "vlowres", + "vmap", + "vmirror", + "vmult", + "vmult_i", + "vmultv", + "vmultv_i", + "voice", + "vosim", + "vphaseseg", + "vport", + "vpow", + "vpow_i", + "vpowv", + "vpowv_i", + "vpvoc", + "vrandh", + "vrandi", + "vsubv", + "vsubv_i", + "vtaba", + "vtabi", + "vtabk", + "vtable1k", + "vtablea", + "vtablei", + "vtablek", + "vtablewa", + "vtablewi", + "vtablewk", + "vtabwa", + "vtabwi", + "vtabwk", + "vwrap", + "waveset", + "websocket", + "weibull", + "wgbow", + "wgbowedbar", + "wgbrass", + "wgclar", + "wgflute", + "wgpluck", + "wgpluck2", + "wguide1", + "wguide2", + "wiiconnect", + "wiidata", + "wiirange", + "wiisend", + "window", + "wrap", + "writescratch", + "wterrain", + "xadsr", + "xin", + "xout", + "xscanmap", + "xscans", + "xscansmap", + "xscanu", + "xtratim", + "xyscale", + "zacl", + "zakinit", + "zamod", + "zar", + "zarg", + "zaw", + "zawm", + "zdf_1pole", + "zdf_1pole_mode", + "zdf_2pole", + "zdf_2pole_mode", + "zdf_ladder", + "zfilter2", + "zir", + "ziw", + "ziwm", + "zkcl", + "zkmod", + "zkr", + "zkw", + "zkwm" + ]; + var deprecatedOpcodes = [ + "array", + "bformdec", + "bformenc", + "copy2ftab", + "copy2ttab", + "hrtfer", + "ktableseg", + "lentab", + "maxtab", + "mintab", + "scalet", + "sndload", + "soundout", + "soundouts", + "specaddm", + "specdiff", + "specdisp", + "specfilt", + "spechist", + "specptrk", + "specscal", + "specsum", + "spectrum", + "sumtab", + "tabgen", + "tabmap", + "tabmap_i", + "tabslice", + "vbap16", + "vbap4", + "vbap4move", + "vbap8", + "vbap8move", + "xyin" + ]; + + opcodes = lang.arrayToMap(opcodes); + deprecatedOpcodes = lang.arrayToMap(deprecatedOpcodes); + + this.lineContinuations = [ + { + token : "constant.character.escape.line-continuation.csound", + regex : /\\$/ + }, this.pushRule({ + token : "constant.character.escape.line-continuation.csound", + regex : /\\/, + next : "line continuation" + }) + ]; + + this.comments.push(this.lineContinuations); + + this.quotedStringContents.push( + this.lineContinuations, + { + token : "invalid.illegal", + regex : /[^"\\]*$/ + } + ); + + var start = this.$rules.start; + start.splice(1, 0, { + token : ["text.csound", "entity.name.label.csound", "entity.punctuation.label.csound", "text.csound"], + regex : /^([ \t]*)(\w+)(:)([ \t]+|$)/ + }); + start.push( + this.pushRule({ + token : "keyword.function.csound", + regex : /\binstr\b/, + next : "instrument numbers and identifiers" + }), this.pushRule({ + token : "keyword.function.csound", + regex : /\bopcode\b/, + next : "after opcode keyword" + }), { + token : "keyword.other.csound", + regex : /\bend(?:in|op)\b/ + }, + + { + token : "variable.language.csound", + regex : /\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b/ + }, + + this.numbers, + + { + token : "keyword.operator.csound", + regex : "\\+=|-=|\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\|\\||[~¬]|[=!+\\-*/^%&|<>#?:]" + }, + + this.pushRule({ + token : "punctuation.definition.string.begin.csound", + regex : /"/, + next : "quoted string" + }), this.pushRule({ + token : "punctuation.definition.string.begin.csound", + regex : /{{/, + next : "braced string" + }), + + { + token : "keyword.control.csound", + regex : /\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\b/ + }, + + this.pushRule({ + token : "keyword.control.csound", + regex : /\b[ik]?goto\b/, + next : "goto before label" + }), this.pushRule({ + token : "keyword.control.csound", + regex : /\b(?:r(?:einit|igoto)|tigoto)\b/, + next : "goto before label" + }), this.pushRule({ + token : "keyword.control.csound", + regex : /\bc(?:g|in?|k|nk?)goto\b/, + next : ["goto before label", "goto before argument"] + }), this.pushRule({ + token : "keyword.control.csound", + regex : /\btimout\b/, + next : ["goto before label", "goto before argument", "goto before argument"] + }), this.pushRule({ + token : "keyword.control.csound", + regex : /\bloop_[gl][et]\b/, + next : ["goto before label", "goto before argument", "goto before argument", "goto before argument"] + }), + + this.pushRule({ + token : "support.function.csound", + regex : /\b(?:readscore|scoreline(?:_i)?)\b/, + next : "Csound score opcode" + }), this.pushRule({ + token : "support.function.csound", + regex : /\bpyl?run[it]?\b(?!$)/, + next : "Python opcode" + }), this.pushRule({ + token : "support.function.csound", + regex : /\blua_(?:exec|opdef)\b(?!$)/, + next : "Lua opcode" + }), + + { + token : "support.variable.csound", + regex : /\bp\d+\b/ + }, { + regex : /\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b/, onMatch: function(value, currentState, stack, line) { + var tokens = value.split(this.splitRegex); + var name = tokens[1]; + var type; + if (opcodes.hasOwnProperty(name)) + type = "support.function.csound"; + else if (deprecatedOpcodes.hasOwnProperty(name)) + type = "invalid.deprecated.csound"; + if (type) { + if (tokens[2]) { + return [ + {type: type, value: name}, + {type: "punctuation.type-annotation.csound", value: tokens[2]}, + {type: "type-annotation.storage.type.csound", value: tokens[3]} + ]; + } + return type; + } + return "text.csound"; + } + } + ); + + this.$rules["macro parameter value list"].splice(2, 0, { + token : "punctuation.definition.string.begin.csound", + regex : /{{/, + next : "macro parameter value braced string" + }); + + this.addRules({ + "macro parameter value braced string": [ + { + token : "constant.character.escape.csound", + regex : /\\[#'()]/ + }, { + token : "invalid.illegal.csound.csound", + regex : /[#'()]/ + }, { + token : "punctuation.definition.string.end.csound", + regex : /}}/, + next : "macro parameter value list" + }, { + defaultToken: "string.braced.csound" + } + ], + + "instrument numbers and identifiers": [ + this.comments, + { + token : "entity.name.function.csound", + regex : /\d+|[A-Z_a-z]\w*/ + }, this.popRule({ + token : "empty", + regex : /$/ + }) + ], + + "after opcode keyword": [ + this.comments, + this.popRule({ + token : "empty", + regex : /$/ + }), this.popRule({ + token : "entity.name.function.opcode.csound", + regex : /[A-Z_a-z]\w*/, + next : "opcode type signatures" + }) + ], + "opcode type signatures": [ + this.comments, + this.popRule({ + token : "empty", + regex : /$/ + }), { + token : "storage.type.csound", + // https://github.com/csound/csound/search?q=XIDENT+path%3AEngine+filename%3Acsound_orc.lex + regex : /\b(?:0|[afijkKoOpPStV\[\]]+)/ + } + ], + + "quoted string": [ + this.popRule({ + token : "punctuation.definition.string.end.csound", + regex : /"/ + }), + this.quotedStringContents, + { + defaultToken: "string.quoted.csound" + } + ], + "braced string": [ + this.popRule({ + token : "punctuation.definition.string.end.csound", + regex : /}}/ + }), + this.bracedStringContents, + { + defaultToken: "string.braced.csound" + } + ], + + "goto before argument": [ + this.popRule({ + token : "text.csound", + regex : /,/ + }), + start + ], + "goto before label": [ + { + token : "text.csound", + regex : /\s+/ + }, + this.comments, + this.popRule({ + token : "entity.name.label.csound", + regex : /\w+/ + }), this.popRule({ + token : "empty", + regex : /(?!\w)/ + }) + ], + + "Csound score opcode": [ + this.comments, + { + token : "punctuation.definition.string.begin.csound", + regex : /{{/, + next : "csound-score-start" + }, this.popRule({ + token : "empty", + regex : /$/ + }) + ], + + "Python opcode": [ + this.comments, + { + token : "punctuation.definition.string.begin.csound", + regex : /{{/, + next : "python-start" + }, this.popRule({ + token : "empty", + regex : /$/ + }) + ], + + "Lua opcode": [ + this.comments, + { + token : "punctuation.definition.string.begin.csound", + regex : /{{/, + next : "lua-start" + }, this.popRule({ + token : "empty", + regex : /$/ + }) + ], + + "line continuation": [ + this.popRule({ + token : "empty", + regex : /$/ + }), + this.semicolonComments, + { + token : "invalid.illegal.csound", + regex : /\S.*/ + } + ] + }); + + var rules = [ + this.popRule({ + token : "punctuation.definition.string.end.csound", + regex : /}}/ + }) + ]; + this.embedRules(CsoundScoreHighlightRules, "csound-score-", rules); + this.embedRules(PythonHighlightRules, "python-", rules); + this.embedRules(LuaHighlightRules, "lua-", rules); + + this.normalizeRules(); +}; + +oop.inherits(CsoundOrchestraHighlightRules, CsoundPreprocessorHighlightRules); + +exports.CsoundOrchestraHighlightRules = CsoundOrchestraHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/csound_preprocessor_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/csound_preprocessor_highlight_rules.js new file mode 100644 index 00000000..ddab5978 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csound_preprocessor_highlight_rules.js @@ -0,0 +1,295 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); + +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var CsoundPreprocessorHighlightRules = function() { + + this.semicolonComments = { + token : "comment.line.semicolon.csound", + regex : ";.*$" + }; + + this.comments = [ + { + token : "punctuation.definition.comment.begin.csound", + regex : "/\\*", + push : [ + { + token : "punctuation.definition.comment.end.csound", + regex : "\\*/", + next : "pop" + }, { + defaultToken: "comment.block.csound" + } + ] + }, { + token : "comment.line.double-slash.csound", + regex : "//.*$" + }, + this.semicolonComments + ]; + + this.macroUses = [ + { + token : ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"], + regex : /(\$[A-Z_a-z]\w*\.?)(\()/, + next : "macro parameter value list" + }, { + token : "entity.name.function.preprocessor.csound", + regex : /\$[A-Z_a-z]\w*(?:\.|\b)/ + } + ]; + + this.numbers = [ + { + token : "constant.numeric.float.csound", + regex : /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/ + }, { + token : ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"], + regex : /(0[Xx])([0-9A-Fa-f]+)/ + }, { + token : "constant.numeric.integer.decimal.csound", + regex : /\d+/ + } + ]; + + this.bracedStringContents = [ + { + token : "constant.character.escape.csound", + // https://github.com/csound/csound/search?q=unquote_string+path%3AEngine+filename%3Acsound_orc_compile.c + regex : /\\(?:[\\abnrt"]|[0-7]{1,3})/ + }, + // Format specifiers are included in quoted and braced strings. This + // means that format specifiers are highlighted in all strings, even + // though only + // fprintks https://csound.github.io/docs/manual/fprintks.html + // fprints https://csound.github.io/docs/manual/fprints.html + // printf/printf_i https://csound.github.io/docs/manual/printf.html + // printks https://csound.github.io/docs/manual/printks.html + // prints https://csound.github.io/docs/manual/prints.html + // sprintf https://csound.github.io/docs/manual/sprintf.html + // sprintfk https://csound.github.io/docs/manual/sprintfk.html + // work with strings that contain format specifiers. In addition, these + // opcodes’ handling of format specifiers is inconsistent: + // - fprintks, fprints, printks, and prints do accept %a and %A + // specifiers, but can’t accept %s specifiers. + // - printf, printf_i, sprintf, and sprintfk don’t accept %a and %A + // specifiers, but do accept %s specifiers. + // See https://github.com/csound/csound/issues/747 for more information. + { + token : "constant.character.placeholder.csound", + regex : /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/ + }, { + token : "constant.character.escape.csound", + regex : /%%/ + } + ]; + + this.quotedStringContents = [ + this.macroUses, + this.bracedStringContents + ]; + + var start = [ + this.comments, + + { + token : "keyword.preprocessor.csound", + regex : /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/ + }, { + token : "keyword.preprocessor.csound", + regex : /#include/, + push : [ + this.comments, + { + token : "string.csound", + regex : /([^ \t])(?:.*?\1)/, + next : "pop" + } + ] + }, { + token : "keyword.preprocessor.csound", + regex : /#[ \t]*define/, + next : "define directive" + }, { + token : "keyword.preprocessor.csound", + regex : /#(?:ifn?def|undef)\b/, + next : "macro directive" + }, + + this.macroUses + ]; + + this.$rules = { + "start": start, + + "define directive": [ + this.comments, + { + token : "entity.name.function.preprocessor.csound", + regex : /[A-Z_a-z]\w*/ + }, { + token : "punctuation.definition.macro-parameter-name-list.begin.csound", + regex : /\(/, + next : "macro parameter name list" + }, { + token : "punctuation.definition.macro.begin.csound", + regex : /#/, + next : "macro body" + } + ], + "macro parameter name list": [ + { + token : "variable.parameter.preprocessor.csound", + regex : /[A-Z_a-z]\w*/ + }, { + token : "punctuation.definition.macro-parameter-name-list.end.csound", + regex : /\)/, + next : "define directive" + } + ], + "macro body": [ + { + token : "constant.character.escape.csound", + regex : /\\#/ + }, { + token : "punctuation.definition.macro.end.csound", + regex : /#/, + next : "start" + }, + start + ], + + "macro directive": [ + this.comments, + { + token : "entity.name.function.preprocessor.csound", + regex : /[A-Z_a-z]\w*/, + next : "start" + } + ], + + "macro parameter value list": [ + { + token : "punctuation.definition.macro-parameter-value-list.end.csound", + regex : /\)/, + next : "start" + }, { + token : "punctuation.definition.string.begin.csound", + regex : /"/, + next : "macro parameter value quoted string" + }, this.pushRule({ + token : "punctuation.macro-parameter-value-parenthetical.begin.csound", + regex : /\(/, + next : "macro parameter value parenthetical" + }), { + token : "punctuation.macro-parameter-value-separator.csound", + regex : "[#']" + } + ], + "macro parameter value quoted string": [ + { + token : "constant.character.escape.csound", + regex : /\\[#'()]/ + }, { + token : "invalid.illegal.csound", + regex : /[#'()]/ + }, { + token : "punctuation.definition.string.end.csound", + regex : /"/, + next : "macro parameter value list" + }, + this.quotedStringContents, + { + defaultToken: "string.quoted.csound" + } + ], + "macro parameter value parenthetical": [ + { + token : "constant.character.escape.csound", + regex : /\\\)/ + }, this.popRule({ + token : "punctuation.macro-parameter-value-parenthetical.end.csound", + regex : /\)/ + }), this.pushRule({ + token : "punctuation.macro-parameter-value-parenthetical.begin.csound", + regex : /\(/, + next : "macro parameter value parenthetical" + }), + start + ] + }; +}; + +oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules); + +(function() { + + this.pushRule = function(params) { + return { + regex : params.regex, onMatch: function(value, currentState, stack, line) { + if (stack.length === 0) + stack.push(currentState); + if (Array.isArray(params.next)) { + for (var i = 0; i < params.next.length; i++) { + stack.push(params.next[i]); + } + } else { + stack.push(params.next); + } + this.next = stack[stack.length - 1]; + return params.token; + }, + + // TODO + get next() { return Array.isArray(params.next) ? params.next[params.next.length - 1] : params.next; }, + set next(next) { + if (Array.isArray(params.next)) { + var oldNext = params.next[params.next.length - 1]; + var oldNextIndex = oldNext.length - 1; + var newNextIndex = next.length - 1; + if (newNextIndex > oldNextIndex) { + while (oldNextIndex >= 0 && newNextIndex >= 0) { + if (oldNext.charAt(oldNextIndex) !== next.charAt(newNextIndex)) { + var prefix = next.substr(0, newNextIndex); + for (var i = 0; i < params.next.length; i++) { + params.next[i] = prefix + params.next[i]; + } + break; + } + oldNextIndex--; + newNextIndex--; + } + } + } else { + params.next = next; + } + }, + + // TODO: normalizeRules + get token() { return params.token; } + }; + }; + + this.popRule = function(params) { + return { + regex : params.regex, onMatch: function(value, currentState, stack, line) { + stack.pop(); + if (params.next) { + stack.push(params.next); + this.next = stack[stack.length - 1]; + } else { + this.next = stack.length > 1 ? stack[stack.length - 1] : stack.pop(); + } + return params.token; + } + }; + }; + +}).call(CsoundPreprocessorHighlightRules.prototype); + +exports.CsoundPreprocessorHighlightRules = CsoundPreprocessorHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/csound_score.js b/plugins/node_modules/ace/lib/ace/mode/csound_score.js new file mode 100644 index 00000000..2abb00cd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csound_score.js @@ -0,0 +1,21 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; + +var Mode = function() { + this.HighlightRules = CsoundScoreHighlightRules; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ";"; + this.blockComment = {start: "/*", end: "*/"}; + +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/csound_score_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/csound_score_highlight_rules.js new file mode 100644 index 00000000..b0071558 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/csound_score_highlight_rules.js @@ -0,0 +1,156 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); + +var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; + +var CsoundScoreHighlightRules = function() { + + CsoundPreprocessorHighlightRules.call(this); + + this.quotedStringContents.push({ + token : "invalid.illegal.csound-score", + regex : /[^"]*$/ + }); + + var start = this.$rules.start; + start.push( + { + token : "keyword.control.csound-score", + regex : /[abCdefiqstvxy]/ + }, { + // w statements are generated internally and should not be used; see + // https://github.com/csound/csound/issues/750. + token : "invalid.illegal.csound-score", + regex : /w/ + }, { + // z is not a statement, but rather a constant equal to + // 800,000,000,000. 800 billion seconds is about 25,367.8 years. See + // also https://csound.github.io/docs/manual/ScoreTop.html and + // https://github.com/csound/csound/search?q=stof+path%3AEngine+filename%3Asread.c. + token : "constant.numeric.language.csound-score", + regex : /z/ + }, { + token : ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"], + regex : /([nNpP][pP])(\d+)/ + }, { + token : "keyword.other.csound-score", + regex : /[mn]/, + push : [ + { + token : "empty", + regex : /$/, + next : "pop" + }, + this.comments, + { + token : "entity.name.label.csound-score", + regex : /[A-Z_a-z]\w*/ + } + ] + }, { + token : "keyword.preprocessor.csound-score", + regex : /r\b/, + next : "repeat section" + }, + + this.numbers, + + { + token : "keyword.operator.csound-score", + regex : "[!+\\-*/^%&|<>#~.]" + }, + + this.pushRule({ + token : "punctuation.definition.string.begin.csound-score", + regex : /"/, + next : "quoted string" + }), + + this.pushRule({ + token : "punctuation.braced-loop.begin.csound-score", + regex : /{/, + next : "loop after left brace" + }) + ); + + this.addRules({ + "repeat section": [ + { + token : "empty", + regex : /$/, + next : "start" + }, + this.comments, + { + token : "constant.numeric.integer.decimal.csound-score", + regex : /\d+/, + next : "repeat section before label" + } + ], + "repeat section before label": [ + { + token : "empty", + regex : /$/, + next : "start" + }, + this.comments, + { + token : "entity.name.label.csound-score", + regex : /[A-Z_a-z]\w*/, + next : "start" + } + ], + + "quoted string": [ + this.popRule({ + token : "punctuation.definition.string.end.csound-score", + regex : /"/ + }), + this.quotedStringContents, + { + defaultToken: "string.quoted.csound-score" + } + ], + + "loop after left brace": [ + this.popRule({ + token : "constant.numeric.integer.decimal.csound-score", + regex : /\d+/, + next : "loop after repeat count" + }), + this.comments, + { + token : "invalid.illegal.csound", + regex : /\S.*/ + } + ], + "loop after repeat count": [ + this.popRule({ + token : "entity.name.function.preprocessor.csound-score", + regex : /[A-Z_a-z]\w*\b/, + next : "loop after macro name" + }), + this.comments, + { + token : "invalid.illegal.csound", + regex : /\S.*/ + } + ], + "loop after macro name": [ + start, + this.popRule({ + token : "punctuation.braced-loop.end.csound-score", + regex : /}/ + }) + ] + }); + + this.normalizeRules(); +}; + +oop.inherits(CsoundScoreHighlightRules, CsoundPreprocessorHighlightRules); + +exports.CsoundScoreHighlightRules = CsoundScoreHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/css.js b/plugins/node_modules/ace/lib/ace/mode/css.js new file mode 100644 index 00000000..f905fe65 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/css.js @@ -0,0 +1,106 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +// var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + // this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.foldingRules = "cStyle"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + // ignore braces in comments + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.getCompletions = function(state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + + worker.on("annotate", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/css"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/css/csslint.js b/plugins/node_modules/ace/lib/ace/mode/css/csslint.js new file mode 100644 index 00000000..5c888436 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/css/csslint.js @@ -0,0 +1,9629 @@ +define(function(require, exports, module) { +/*! +CSSLint +Copyright (c) 2014 Nicole Sullivan and Nicholas C. Zakas. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ +/* Build: v0.10.0 22-July-2014 01:17:52 */ +/*! +Parser-Lib +Copyright (c) 2009-2011 Nicholas C. Zakas. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ +/* Version v0.2.5, Build time: 7-May-2014 03:37:38 */ +var parserlib = {}; +(function(){ + +/** + * A generic base to inherit from for any object + * that needs event handling. + * @class EventTarget + * @constructor + */ +function EventTarget(){ + + /** + * The array of listeners for various events. + * @type Object + * @property _listeners + * @private + */ + this._listeners = {}; +} + +EventTarget.prototype = { + + //restore constructor + constructor: EventTarget, + + /** + * Adds a listener for a given event type. + * @param {String} type The type of event to add a listener for. + * @param {Function} listener The function to call when the event occurs. + * @return {void} + * @method addListener + */ + addListener: function(type, listener){ + if (!this._listeners[type]){ + this._listeners[type] = []; + } + + this._listeners[type].push(listener); + }, + + /** + * Fires an event based on the passed-in object. + * @param {Object|String} event An object with at least a 'type' attribute + * or a string indicating the event name. + * @return {void} + * @method fire + */ + fire: function(event){ + if (typeof event == "string"){ + event = { type: event }; + } + if (typeof event.target != "undefined"){ + event.target = this; + } + + if (typeof event.type == "undefined"){ + throw new Error("Event object missing 'type' property."); + } + + if (this._listeners[event.type]){ + + //create a copy of the array and use that so listeners can't chane + var listeners = this._listeners[event.type].concat(); + for (var i=0, len=listeners.length; i < len; i++){ + listeners[i].call(this, event); + } + } + }, + + /** + * Removes a listener for a given event type. + * @param {String} type The type of event to remove a listener from. + * @param {Function} listener The function to remove from the event. + * @return {void} + * @method removeListener + */ + removeListener: function(type, listener){ + if (this._listeners[type]){ + var listeners = this._listeners[type]; + for (var i=0, len=listeners.length; i < len; i++){ + if (listeners[i] === listener){ + listeners.splice(i, 1); + break; + } + } + + + } + } +}; +/** + * Convenient way to read through strings. + * @namespace parserlib.util + * @class StringReader + * @constructor + * @param {String} text The text to read. + */ +function StringReader(text){ + + /** + * The input text with line endings normalized. + * @property _input + * @type String + * @private + */ + this._input = text.replace(/\n\r?/g, "\n"); + + + /** + * The row for the character to be read next. + * @property _line + * @type int + * @private + */ + this._line = 1; + + + /** + * The column for the character to be read next. + * @property _col + * @type int + * @private + */ + this._col = 1; + + /** + * The index of the character in the input to be read next. + * @property _cursor + * @type int + * @private + */ + this._cursor = 0; +} + +StringReader.prototype = { + + //restore constructor + constructor: StringReader, + + //------------------------------------------------------------------------- + // Position info + //------------------------------------------------------------------------- + + /** + * Returns the column of the character to be read next. + * @return {int} The column of the character to be read next. + * @method getCol + */ + getCol: function(){ + return this._col; + }, + + /** + * Returns the row of the character to be read next. + * @return {int} The row of the character to be read next. + * @method getLine + */ + getLine: function(){ + return this._line ; + }, + + /** + * Determines if you're at the end of the input. + * @return {Boolean} True if there's no more input, false otherwise. + * @method eof + */ + eof: function(){ + return (this._cursor == this._input.length); + }, + + //------------------------------------------------------------------------- + // Basic reading + //------------------------------------------------------------------------- + + /** + * Reads the next character without advancing the cursor. + * @param {int} count How many characters to look ahead (default is 1). + * @return {String} The next character or null if there is no next character. + * @method peek + */ + peek: function(count){ + var c = null; + count = (typeof count == "undefined" ? 1 : count); + + //if we're not at the end of the input... + if (this._cursor < this._input.length){ + + //get character and increment cursor and column + c = this._input.charAt(this._cursor + count - 1); + } + + return c; + }, + + /** + * Reads the next character from the input and adjusts the row and column + * accordingly. + * @return {String} The next character or null if there is no next character. + * @method read + */ + read: function(){ + var c = null; + + //if we're not at the end of the input... + if (this._cursor < this._input.length){ + + //if the last character was a newline, increment row count + //and reset column count + if (this._input.charAt(this._cursor) == "\n"){ + this._line++; + this._col=1; + } else { + this._col++; + } + + //get character and increment cursor and column + c = this._input.charAt(this._cursor++); + } + + return c; + }, + + //------------------------------------------------------------------------- + // Misc + //------------------------------------------------------------------------- + + /** + * Saves the current location so it can be returned to later. + * @method mark + * @return {void} + */ + mark: function(){ + this._bookmark = { + cursor: this._cursor, + line: this._line, + col: this._col + }; + }, + + reset: function(){ + if (this._bookmark){ + this._cursor = this._bookmark.cursor; + this._line = this._bookmark.line; + this._col = this._bookmark.col; + delete this._bookmark; + } + }, + + //------------------------------------------------------------------------- + // Advanced reading + //------------------------------------------------------------------------- + + /** + * Reads up to and including the given string. Throws an error if that + * string is not found. + * @param {String} pattern The string to read. + * @return {String} The string when it is found. + * @throws Error when the string pattern is not found. + * @method readTo + */ + readTo: function(pattern){ + + var buffer = "", + c; + + /* + * First, buffer must be the same length as the pattern. + * Then, buffer must end with the pattern or else reach the + * end of the input. + */ + while (buffer.length < pattern.length || buffer.lastIndexOf(pattern) != buffer.length - pattern.length){ + c = this.read(); + if (c){ + buffer += c; + } else { + throw new Error("Expected \"" + pattern + "\" at line " + this._line + ", col " + this._col + "."); + } + } + + return buffer; + + }, + + /** + * Reads characters while each character causes the given + * filter function to return true. The function is passed + * in each character and either returns true to continue + * reading or false to stop. + * @param {Function} filter The function to read on each character. + * @return {String} The string made up of all characters that passed the + * filter check. + * @method readWhile + */ + readWhile: function(filter){ + + var buffer = "", + c = this.read(); + + while(c !== null && filter(c)){ + buffer += c; + c = this.read(); + } + + return buffer; + + }, + + /** + * Reads characters that match either text or a regular expression and + * returns those characters. If a match is found, the row and column + * are adjusted; if no match is found, the reader's state is unchanged. + * reading or false to stop. + * @param {String|RegExp} matcher If a string, then the literal string + * value is searched for. If a regular expression, then any string + * matching the pattern is search for. + * @return {String} The string made up of all characters that matched or + * null if there was no match. + * @method readMatch + */ + readMatch: function(matcher){ + + var source = this._input.substring(this._cursor), + value = null; + + //if it's a string, just do a straight match + if (typeof matcher == "string"){ + if (source.indexOf(matcher) === 0){ + value = this.readCount(matcher.length); + } + } else if (matcher instanceof RegExp){ + if (matcher.test(source)){ + value = this.readCount(RegExp.lastMatch.length); + } + } + + return value; + }, + + + /** + * Reads a given number of characters. If the end of the input is reached, + * it reads only the remaining characters and does not throw an error. + * @param {int} count The number of characters to read. + * @return {String} The string made up the read characters. + * @method readCount + */ + readCount: function(count){ + var buffer = ""; + + while(count--){ + buffer += this.read(); + } + + return buffer; + } + +}; +/** + * Type to use when a syntax error occurs. + * @class SyntaxError + * @namespace parserlib.util + * @constructor + * @param {String} message The error message. + * @param {int} line The line at which the error occurred. + * @param {int} col The column at which the error occurred. + */ +function SyntaxError(message, line, col){ + + /** + * The column at which the error occurred. + * @type int + * @property col + */ + this.col = col; + + /** + * The line at which the error occurred. + * @type int + * @property line + */ + this.line = line; + + /** + * The text representation of the unit. + * @type String + * @property text + */ + this.message = message; + +} + +//inherit from Error +SyntaxError.prototype = new Error(); +/** + * Base type to represent a single syntactic unit. + * @class SyntaxUnit + * @namespace parserlib.util + * @constructor + * @param {String} text The text of the unit. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function SyntaxUnit(text, line, col, type){ + + + /** + * The column of text on which the unit resides. + * @type int + * @property col + */ + this.col = col; + + /** + * The line of text on which the unit resides. + * @type int + * @property line + */ + this.line = line; + + /** + * The text representation of the unit. + * @type String + * @property text + */ + this.text = text; + + /** + * The type of syntax unit. + * @type int + * @property type + */ + this.type = type; +} + +/** + * Create a new syntax unit based solely on the given token. + * Convenience method for creating a new syntax unit when + * it represents a single token instead of multiple. + * @param {Object} token The token object to represent. + * @return {parserlib.util.SyntaxUnit} The object representing the token. + * @static + * @method fromToken + */ +SyntaxUnit.fromToken = function(token){ + return new SyntaxUnit(token.value, token.startLine, token.startCol); +}; + +SyntaxUnit.prototype = { + + //restore constructor + constructor: SyntaxUnit, + + /** + * Returns the text representation of the unit. + * @return {String} The text representation of the unit. + * @method valueOf + */ + valueOf: function(){ + return this.text; + }, + + /** + * Returns the text representation of the unit. + * @return {String} The text representation of the unit. + * @method toString + */ + toString: function(){ + return this.text; + } + +}; +/*global StringReader, SyntaxError*/ + +/** + * Generic TokenStream providing base functionality. + * @class TokenStreamBase + * @namespace parserlib.util + * @constructor + * @param {String|StringReader} input The text to tokenize or a reader from + * which to read the input. + */ +function TokenStreamBase(input, tokenData){ + + /** + * The string reader for easy access to the text. + * @type StringReader + * @property _reader + * @private + */ + this._reader = input ? new StringReader(input.toString()) : null; + + /** + * Token object for the last consumed token. + * @type Token + * @property _token + * @private + */ + this._token = null; + + /** + * The array of token information. + * @type Array + * @property _tokenData + * @private + */ + this._tokenData = tokenData; + + /** + * Lookahead token buffer. + * @type Array + * @property _lt + * @private + */ + this._lt = []; + + /** + * Lookahead token buffer index. + * @type int + * @property _ltIndex + * @private + */ + this._ltIndex = 0; + + this._ltIndexCache = []; +} + +/** + * Accepts an array of token information and outputs + * an array of token data containing key-value mappings + * and matching functions that the TokenStream needs. + * @param {Array} tokens An array of token descriptors. + * @return {Array} An array of processed token data. + * @method createTokenData + * @static + */ +TokenStreamBase.createTokenData = function(tokens){ + + var nameMap = [], + typeMap = {}, + tokenData = tokens.concat([]), + i = 0, + len = tokenData.length+1; + + tokenData.UNKNOWN = -1; + tokenData.unshift({name:"EOF"}); + + for (; i < len; i++){ + nameMap.push(tokenData[i].name); + tokenData[tokenData[i].name] = i; + if (tokenData[i].text){ + typeMap[tokenData[i].text] = i; + } + } + + tokenData.name = function(tt){ + return nameMap[tt]; + }; + + tokenData.type = function(c){ + return typeMap[c]; + }; + + return tokenData; +}; + +TokenStreamBase.prototype = { + + //restore constructor + constructor: TokenStreamBase, + + //------------------------------------------------------------------------- + // Matching methods + //------------------------------------------------------------------------- + + /** + * Determines if the next token matches the given token type. + * If so, that token is consumed; if not, the token is placed + * back onto the token stream. You can pass in any number of + * token types and this will return true if any of the token + * types is found. + * @param {int|int[]} tokenTypes Either a single token type or an array of + * token types that the next token might be. If an array is passed, + * it's assumed that the token can be any of these. + * @param {variant} channel (Optional) The channel to read from. If not + * provided, reads from the default (unnamed) channel. + * @return {Boolean} True if the token type matches, false if not. + * @method match + */ + match: function(tokenTypes, channel){ + + //always convert to an array, makes things easier + if (!(tokenTypes instanceof Array)){ + tokenTypes = [tokenTypes]; + } + + var tt = this.get(channel), + i = 0, + len = tokenTypes.length; + + while(i < len){ + if (tt == tokenTypes[i++]){ + return true; + } + } + + //no match found, put the token back + this.unget(); + return false; + }, + + /** + * Determines if the next token matches the given token type. + * If so, that token is consumed; if not, an error is thrown. + * @param {int|int[]} tokenTypes Either a single token type or an array of + * token types that the next token should be. If an array is passed, + * it's assumed that the token must be one of these. + * @param {variant} channel (Optional) The channel to read from. If not + * provided, reads from the default (unnamed) channel. + * @return {void} + * @method mustMatch + */ + mustMatch: function(tokenTypes, channel){ + + var token; + + //always convert to an array, makes things easier + if (!(tokenTypes instanceof Array)){ + tokenTypes = [tokenTypes]; + } + + if (!this.match.apply(this, arguments)){ + token = this.LT(1); + throw new SyntaxError("Expected " + this._tokenData[tokenTypes[0]].name + + " at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); + } + }, + + //------------------------------------------------------------------------- + // Consuming methods + //------------------------------------------------------------------------- + + /** + * Keeps reading from the token stream until either one of the specified + * token types is found or until the end of the input is reached. + * @param {int|int[]} tokenTypes Either a single token type or an array of + * token types that the next token should be. If an array is passed, + * it's assumed that the token must be one of these. + * @param {variant} channel (Optional) The channel to read from. If not + * provided, reads from the default (unnamed) channel. + * @return {void} + * @method advance + */ + advance: function(tokenTypes, channel){ + + while(this.LA(0) !== 0 && !this.match(tokenTypes, channel)){ + this.get(); + } + + return this.LA(0); + }, + + /** + * Consumes the next token from the token stream. + * @return {int} The token type of the token that was just consumed. + * @method get + */ + get: function(channel){ + + var tokenInfo = this._tokenData, + reader = this._reader, + value, + i =0, + len = tokenInfo.length, + found = false, + token, + info; + + //check the lookahead buffer first + if (this._lt.length && this._ltIndex >= 0 && this._ltIndex < this._lt.length){ + + i++; + this._token = this._lt[this._ltIndex++]; + info = tokenInfo[this._token.type]; + + //obey channels logic + while((info.channel !== undefined && channel !== info.channel) && + this._ltIndex < this._lt.length){ + this._token = this._lt[this._ltIndex++]; + info = tokenInfo[this._token.type]; + i++; + } + + //here be dragons + if ((info.channel === undefined || channel === info.channel) && + this._ltIndex <= this._lt.length){ + this._ltIndexCache.push(i); + return this._token.type; + } + } + + //call token retriever method + token = this._getToken(); + + //if it should be hidden, don't save a token + if (token.type > -1 && !tokenInfo[token.type].hide){ + + //apply token channel + token.channel = tokenInfo[token.type].channel; + + //save for later + this._token = token; + this._lt.push(token); + + //save space that will be moved (must be done before array is truncated) + this._ltIndexCache.push(this._lt.length - this._ltIndex + i); + + //keep the buffer under 5 items + if (this._lt.length > 5){ + this._lt.shift(); + } + + //also keep the shift buffer under 5 items + if (this._ltIndexCache.length > 5){ + this._ltIndexCache.shift(); + } + + //update lookahead index + this._ltIndex = this._lt.length; + } + + /* + * Skip to the next token if: + * 1. The token type is marked as hidden. + * 2. The token type has a channel specified and it isn't the current channel. + */ + info = tokenInfo[token.type]; + if (info && + (info.hide || + (info.channel !== undefined && channel !== info.channel))){ + return this.get(channel); + } else { + //return just the type + return token.type; + } + }, + + /** + * Looks ahead a certain number of tokens and returns the token type at + * that position. This will throw an error if you lookahead past the + * end of input, past the size of the lookahead buffer, or back past + * the first token in the lookahead buffer. + * @param {int} The index of the token type to retrieve. 0 for the + * current token, 1 for the next, -1 for the previous, etc. + * @return {int} The token type of the token in the given position. + * @method LA + */ + LA: function(index){ + var total = index, + tt; + if (index > 0){ + //TODO: Store 5 somewhere + if (index > 5){ + throw new Error("Too much lookahead."); + } + + //get all those tokens + while(total){ + tt = this.get(); + total--; + } + + //unget all those tokens + while(total < index){ + this.unget(); + total++; + } + } else if (index < 0){ + + if(this._lt[this._ltIndex+index]){ + tt = this._lt[this._ltIndex+index].type; + } else { + throw new Error("Too much lookbehind."); + } + + } else { + tt = this._token.type; + } + + return tt; + + }, + + /** + * Looks ahead a certain number of tokens and returns the token at + * that position. This will throw an error if you lookahead past the + * end of input, past the size of the lookahead buffer, or back past + * the first token in the lookahead buffer. + * @param {int} The index of the token type to retrieve. 0 for the + * current token, 1 for the next, -1 for the previous, etc. + * @return {Object} The token of the token in the given position. + * @method LA + */ + LT: function(index){ + + //lookahead first to prime the token buffer + this.LA(index); + + //now find the token, subtract one because _ltIndex is already at the next index + return this._lt[this._ltIndex+index-1]; + }, + + /** + * Returns the token type for the next token in the stream without + * consuming it. + * @return {int} The token type of the next token in the stream. + * @method peek + */ + peek: function(){ + return this.LA(1); + }, + + /** + * Returns the actual token object for the last consumed token. + * @return {Token} The token object for the last consumed token. + * @method token + */ + token: function(){ + return this._token; + }, + + /** + * Returns the name of the token for the given token type. + * @param {int} tokenType The type of token to get the name of. + * @return {String} The name of the token or "UNKNOWN_TOKEN" for any + * invalid token type. + * @method tokenName + */ + tokenName: function(tokenType){ + if (tokenType < 0 || tokenType > this._tokenData.length){ + return "UNKNOWN_TOKEN"; + } else { + return this._tokenData[tokenType].name; + } + }, + + /** + * Returns the token type value for the given token name. + * @param {String} tokenName The name of the token whose value should be returned. + * @return {int} The token type value for the given token name or -1 + * for an unknown token. + * @method tokenName + */ + tokenType: function(tokenName){ + return this._tokenData[tokenName] || -1; + }, + + /** + * Returns the last consumed token to the token stream. + * @method unget + */ + unget: function(){ + //if (this._ltIndex > -1){ + if (this._ltIndexCache.length){ + this._ltIndex -= this._ltIndexCache.pop();//--; + this._token = this._lt[this._ltIndex - 1]; + } else { + throw new Error("Too much lookahead."); + } + } + +}; + + +parserlib.util = { +StringReader: StringReader, +SyntaxError : SyntaxError, +SyntaxUnit : SyntaxUnit, +EventTarget : EventTarget, +TokenStreamBase : TokenStreamBase +}; +})(); +/* +Parser-Lib +Copyright (c) 2009-2011 Nicholas C. Zakas. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ +/* Version v0.2.5, Build time: 7-May-2014 03:37:38 */ +(function(){ +var EventTarget = parserlib.util.EventTarget, +TokenStreamBase = parserlib.util.TokenStreamBase, +StringReader = parserlib.util.StringReader, +SyntaxError = parserlib.util.SyntaxError, +SyntaxUnit = parserlib.util.SyntaxUnit; + +var Colors = { + aliceblue :"#f0f8ff", + antiquewhite :"#faebd7", + aqua :"#00ffff", + aquamarine :"#7fffd4", + azure :"#f0ffff", + beige :"#f5f5dc", + bisque :"#ffe4c4", + black :"#000000", + blanchedalmond :"#ffebcd", + blue :"#0000ff", + blueviolet :"#8a2be2", + brown :"#a52a2a", + burlywood :"#deb887", + cadetblue :"#5f9ea0", + chartreuse :"#7fff00", + chocolate :"#d2691e", + coral :"#ff7f50", + cornflowerblue :"#6495ed", + cornsilk :"#fff8dc", + crimson :"#dc143c", + cyan :"#00ffff", + darkblue :"#00008b", + darkcyan :"#008b8b", + darkgoldenrod :"#b8860b", + darkgray :"#a9a9a9", + darkgrey :"#a9a9a9", + darkgreen :"#006400", + darkkhaki :"#bdb76b", + darkmagenta :"#8b008b", + darkolivegreen :"#556b2f", + darkorange :"#ff8c00", + darkorchid :"#9932cc", + darkred :"#8b0000", + darksalmon :"#e9967a", + darkseagreen :"#8fbc8f", + darkslateblue :"#483d8b", + darkslategray :"#2f4f4f", + darkslategrey :"#2f4f4f", + darkturquoise :"#00ced1", + darkviolet :"#9400d3", + deeppink :"#ff1493", + deepskyblue :"#00bfff", + dimgray :"#696969", + dimgrey :"#696969", + dodgerblue :"#1e90ff", + firebrick :"#b22222", + floralwhite :"#fffaf0", + forestgreen :"#228b22", + fuchsia :"#ff00ff", + gainsboro :"#dcdcdc", + ghostwhite :"#f8f8ff", + gold :"#ffd700", + goldenrod :"#daa520", + gray :"#808080", + grey :"#808080", + green :"#008000", + greenyellow :"#adff2f", + honeydew :"#f0fff0", + hotpink :"#ff69b4", + indianred :"#cd5c5c", + indigo :"#4b0082", + ivory :"#fffff0", + khaki :"#f0e68c", + lavender :"#e6e6fa", + lavenderblush :"#fff0f5", + lawngreen :"#7cfc00", + lemonchiffon :"#fffacd", + lightblue :"#add8e6", + lightcoral :"#f08080", + lightcyan :"#e0ffff", + lightgoldenrodyellow :"#fafad2", + lightgray :"#d3d3d3", + lightgrey :"#d3d3d3", + lightgreen :"#90ee90", + lightpink :"#ffb6c1", + lightsalmon :"#ffa07a", + lightseagreen :"#20b2aa", + lightskyblue :"#87cefa", + lightslategray :"#778899", + lightslategrey :"#778899", + lightsteelblue :"#b0c4de", + lightyellow :"#ffffe0", + lime :"#00ff00", + limegreen :"#32cd32", + linen :"#faf0e6", + magenta :"#ff00ff", + maroon :"#800000", + mediumaquamarine:"#66cdaa", + mediumblue :"#0000cd", + mediumorchid :"#ba55d3", + mediumpurple :"#9370d8", + mediumseagreen :"#3cb371", + mediumslateblue :"#7b68ee", + mediumspringgreen :"#00fa9a", + mediumturquoise :"#48d1cc", + mediumvioletred :"#c71585", + midnightblue :"#191970", + mintcream :"#f5fffa", + mistyrose :"#ffe4e1", + moccasin :"#ffe4b5", + navajowhite :"#ffdead", + navy :"#000080", + oldlace :"#fdf5e6", + olive :"#808000", + olivedrab :"#6b8e23", + orange :"#ffa500", + orangered :"#ff4500", + orchid :"#da70d6", + palegoldenrod :"#eee8aa", + palegreen :"#98fb98", + paleturquoise :"#afeeee", + palevioletred :"#d87093", + papayawhip :"#ffefd5", + peachpuff :"#ffdab9", + peru :"#cd853f", + pink :"#ffc0cb", + plum :"#dda0dd", + powderblue :"#b0e0e6", + purple :"#800080", + red :"#ff0000", + rosybrown :"#bc8f8f", + royalblue :"#4169e1", + saddlebrown :"#8b4513", + salmon :"#fa8072", + sandybrown :"#f4a460", + seagreen :"#2e8b57", + seashell :"#fff5ee", + sienna :"#a0522d", + silver :"#c0c0c0", + skyblue :"#87ceeb", + slateblue :"#6a5acd", + slategray :"#708090", + slategrey :"#708090", + snow :"#fffafa", + springgreen :"#00ff7f", + steelblue :"#4682b4", + tan :"#d2b48c", + teal :"#008080", + thistle :"#d8bfd8", + tomato :"#ff6347", + turquoise :"#40e0d0", + violet :"#ee82ee", + wheat :"#f5deb3", + white :"#ffffff", + whitesmoke :"#f5f5f5", + yellow :"#ffff00", + yellowgreen :"#9acd32", + //CSS2 system colors http://www.w3.org/TR/css3-color/#css2-system + activeBorder :"Active window border.", + activecaption :"Active window caption.", + appworkspace :"Background color of multiple document interface.", + background :"Desktop background.", + buttonface :"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.", + buttonhighlight :"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.", + buttonshadow :"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.", + buttontext :"Text on push buttons.", + captiontext :"Text in caption, size box, and scrollbar arrow box.", + graytext :"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.", + greytext :"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.", + highlight :"Item(s) selected in a control.", + highlighttext :"Text of item(s) selected in a control.", + inactiveborder :"Inactive window border.", + inactivecaption :"Inactive window caption.", + inactivecaptiontext :"Color of text in an inactive caption.", + infobackground :"Background color for tooltip controls.", + infotext :"Text color for tooltip controls.", + menu :"Menu background.", + menutext :"Text in menus.", + scrollbar :"Scroll bar gray area.", + threeddarkshadow :"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", + threedface :"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", + threedhighlight :"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", + threedlightshadow :"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", + threedshadow :"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", + window :"Window background.", + windowframe :"Window frame.", + windowtext :"Text in windows." +}; +/*global SyntaxUnit, Parser*/ +/** + * Represents a selector combinator (whitespace, +, >). + * @namespace parserlib.css + * @class Combinator + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {String} text The text representation of the unit. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function Combinator(text, line, col){ + + SyntaxUnit.call(this, text, line, col, Parser.COMBINATOR_TYPE); + + /** + * The type of modifier. + * @type String + * @property type + */ + this.type = "unknown"; + + //pretty simple + if (/^\s+$/.test(text)){ + this.type = "descendant"; + } else if (text == ">"){ + this.type = "child"; + } else if (text == "+"){ + this.type = "adjacent-sibling"; + } else if (text == "~"){ + this.type = "sibling"; + } + +} + +Combinator.prototype = new SyntaxUnit(); +Combinator.prototype.constructor = Combinator; + +/*global SyntaxUnit, Parser*/ +/** + * Represents a media feature, such as max-width:500. + * @namespace parserlib.css + * @class MediaFeature + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {SyntaxUnit} name The name of the feature. + * @param {SyntaxUnit} value The value of the feature or null if none. + */ +function MediaFeature(name, value){ + + SyntaxUnit.call(this, "(" + name + (value !== null ? ":" + value : "") + ")", name.startLine, name.startCol, Parser.MEDIA_FEATURE_TYPE); + + /** + * The name of the media feature + * @type String + * @property name + */ + this.name = name; + + /** + * The value for the feature or null if there is none. + * @type SyntaxUnit + * @property value + */ + this.value = value; +} + +MediaFeature.prototype = new SyntaxUnit(); +MediaFeature.prototype.constructor = MediaFeature; + +/*global SyntaxUnit, Parser*/ +/** + * Represents an individual media query. + * @namespace parserlib.css + * @class MediaQuery + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {String} modifier The modifier "not" or "only" (or null). + * @param {String} mediaType The type of media (i.e., "print"). + * @param {Array} parts Array of selectors parts making up this selector. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function MediaQuery(modifier, mediaType, features, line, col){ + + SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); + + /** + * The media modifier ("not" or "only") + * @type String + * @property modifier + */ + this.modifier = modifier; + + /** + * The mediaType (i.e., "print") + * @type String + * @property mediaType + */ + this.mediaType = mediaType; + + /** + * The parts that make up the selector. + * @type Array + * @property features + */ + this.features = features; + +} + +MediaQuery.prototype = new SyntaxUnit(); +MediaQuery.prototype.constructor = MediaQuery; + +/*global Tokens, TokenStream, SyntaxError, Properties, Validation, ValidationError, SyntaxUnit, + PropertyValue, PropertyValuePart, SelectorPart, SelectorSubPart, Selector, + PropertyName, Combinator, MediaFeature, MediaQuery, EventTarget */ + +/** + * A CSS3 parser. + * @namespace parserlib.css + * @class Parser + * @constructor + * @param {Object} options (Optional) Various options for the parser: + * starHack (true|false) to allow IE6 star hack as valid, + * underscoreHack (true|false) to interpret leading underscores + * as IE6-7 targeting for known properties, ieFilters (true|false) + * to indicate that IE < 8 filters should be accepted and not throw + * syntax errors. + */ +function Parser(options){ + + //inherit event functionality + EventTarget.call(this); + + + this.options = options || {}; + + this._tokenStream = null; +} + +//Static constants +Parser.DEFAULT_TYPE = 0; +Parser.COMBINATOR_TYPE = 1; +Parser.MEDIA_FEATURE_TYPE = 2; +Parser.MEDIA_QUERY_TYPE = 3; +Parser.PROPERTY_NAME_TYPE = 4; +Parser.PROPERTY_VALUE_TYPE = 5; +Parser.PROPERTY_VALUE_PART_TYPE = 6; +Parser.SELECTOR_TYPE = 7; +Parser.SELECTOR_PART_TYPE = 8; +Parser.SELECTOR_SUB_PART_TYPE = 9; + +Parser.prototype = function(){ + + var proto = new EventTarget(), //new prototype + prop, + additions = { + + //restore constructor + constructor: Parser, + + //instance constants - yuck + DEFAULT_TYPE : 0, + COMBINATOR_TYPE : 1, + MEDIA_FEATURE_TYPE : 2, + MEDIA_QUERY_TYPE : 3, + PROPERTY_NAME_TYPE : 4, + PROPERTY_VALUE_TYPE : 5, + PROPERTY_VALUE_PART_TYPE : 6, + SELECTOR_TYPE : 7, + SELECTOR_PART_TYPE : 8, + SELECTOR_SUB_PART_TYPE : 9, + + //----------------------------------------------------------------- + // Grammar + //----------------------------------------------------------------- + + _stylesheet: function(){ + + /* + * stylesheet + * : [ CHARSET_SYM S* STRING S* ';' ]? + * [S|CDO|CDC]* [ import [S|CDO|CDC]* ]* + * [ namespace [S|CDO|CDC]* ]* + * [ [ ruleset | media | page | font_face | keyframes ] [S|CDO|CDC]* ]* + * ; + */ + + var tokenStream = this._tokenStream, + charset = null, + count, + token, + tt; + + this.fire("startstylesheet"); + + //try to read character set + this._charset(); + + this._skipCruft(); + + //try to read imports - may be more than one + while (tokenStream.peek() == Tokens.IMPORT_SYM){ + this._import(); + this._skipCruft(); + } + + //try to read namespaces - may be more than one + while (tokenStream.peek() == Tokens.NAMESPACE_SYM){ + this._namespace(); + this._skipCruft(); + } + + //get the next token + tt = tokenStream.peek(); + + //try to read the rest + while(tt > Tokens.EOF){ + + try { + + switch(tt){ + case Tokens.MEDIA_SYM: + this._media(); + this._skipCruft(); + break; + case Tokens.PAGE_SYM: + this._page(); + this._skipCruft(); + break; + case Tokens.FONT_FACE_SYM: + this._font_face(); + this._skipCruft(); + break; + case Tokens.KEYFRAMES_SYM: + this._keyframes(); + this._skipCruft(); + break; + case Tokens.VIEWPORT_SYM: + this._viewport(); + this._skipCruft(); + break; + case Tokens.UNKNOWN_SYM: //unknown @ rule + tokenStream.get(); + if (!this.options.strict){ + + //fire error event + this.fire({ + type: "error", + error: null, + message: "Unknown @ rule: " + tokenStream.LT(0).value + ".", + line: tokenStream.LT(0).startLine, + col: tokenStream.LT(0).startCol + }); + + //skip braces + count=0; + while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) == Tokens.LBRACE){ + count++; //keep track of nesting depth + } + + while(count){ + tokenStream.advance([Tokens.RBRACE]); + count--; + } + + } else { + //not a syntax error, rethrow it + throw new SyntaxError("Unknown @ rule.", tokenStream.LT(0).startLine, tokenStream.LT(0).startCol); + } + break; + case Tokens.S: + this._readWhitespace(); + break; + default: + if(!this._ruleset()){ + + //error handling for known issues + switch(tt){ + case Tokens.CHARSET_SYM: + token = tokenStream.LT(1); + this._charset(false); + throw new SyntaxError("@charset not allowed here.", token.startLine, token.startCol); + case Tokens.IMPORT_SYM: + token = tokenStream.LT(1); + this._import(false); + throw new SyntaxError("@import not allowed here.", token.startLine, token.startCol); + case Tokens.NAMESPACE_SYM: + token = tokenStream.LT(1); + this._namespace(false); + throw new SyntaxError("@namespace not allowed here.", token.startLine, token.startCol); + default: + tokenStream.get(); //get the last token + this._unexpectedToken(tokenStream.token()); + } + + } + } + } catch(ex) { + if (ex instanceof SyntaxError && !this.options.strict){ + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + } else { + throw ex; + } + } + + tt = tokenStream.peek(); + } + + if (tt != Tokens.EOF){ + this._unexpectedToken(tokenStream.token()); + } + + this.fire("endstylesheet"); + }, + + _charset: function(emit){ + var tokenStream = this._tokenStream, + charset, + token, + line, + col; + + if (tokenStream.match(Tokens.CHARSET_SYM)){ + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.STRING); + + token = tokenStream.token(); + charset = token.value; + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.SEMICOLON); + + if (emit !== false){ + this.fire({ + type: "charset", + charset:charset, + line: line, + col: col + }); + } + } + }, + + _import: function(emit){ + /* + * import + * : IMPORT_SYM S* + * [STRING|URI] S* media_query_list? ';' S* + */ + + var tokenStream = this._tokenStream, + tt, + uri, + importToken, + mediaList = []; + + //read import symbol + tokenStream.mustMatch(Tokens.IMPORT_SYM); + importToken = tokenStream.token(); + this._readWhitespace(); + + tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); + + //grab the URI value + uri = tokenStream.token().value.replace(/^(?:url\()?["']?([^"']+?)["']?\)?$/, "$1"); + + this._readWhitespace(); + + mediaList = this._media_query_list(); + + //must end with a semicolon + tokenStream.mustMatch(Tokens.SEMICOLON); + this._readWhitespace(); + + if (emit !== false){ + this.fire({ + type: "import", + uri: uri, + media: mediaList, + line: importToken.startLine, + col: importToken.startCol + }); + } + + }, + + _namespace: function(emit){ + /* + * namespace + * : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S* + */ + + var tokenStream = this._tokenStream, + line, + col, + prefix, + uri; + + //read import symbol + tokenStream.mustMatch(Tokens.NAMESPACE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + this._readWhitespace(); + + //it's a namespace prefix - no _namespace_prefix() method because it's just an IDENT + if (tokenStream.match(Tokens.IDENT)){ + prefix = tokenStream.token().value; + this._readWhitespace(); + } + + tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); + /*if (!tokenStream.match(Tokens.STRING)){ + tokenStream.mustMatch(Tokens.URI); + }*/ + + //grab the URI value + uri = tokenStream.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/, "$1"); + + this._readWhitespace(); + + //must end with a semicolon + tokenStream.mustMatch(Tokens.SEMICOLON); + this._readWhitespace(); + + if (emit !== false){ + this.fire({ + type: "namespace", + prefix: prefix, + uri: uri, + line: line, + col: col + }); + } + + }, + + _media: function(){ + /* + * media + * : MEDIA_SYM S* media_query_list S* '{' S* ruleset* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col, + mediaList;// = []; + + //look for @media + tokenStream.mustMatch(Tokens.MEDIA_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + mediaList = this._media_query_list(); + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + this.fire({ + type: "startmedia", + media: mediaList, + line: line, + col: col + }); + + while(true) { + if (tokenStream.peek() == Tokens.PAGE_SYM){ + this._page(); + } else if (tokenStream.peek() == Tokens.FONT_FACE_SYM){ + this._font_face(); + } else if (tokenStream.peek() == Tokens.VIEWPORT_SYM){ + this._viewport(); + } else if (!this._ruleset()){ + break; + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + this.fire({ + type: "endmedia", + media: mediaList, + line: line, + col: col + }); + }, + + + //CSS3 Media Queries + _media_query_list: function(){ + /* + * media_query_list + * : S* [media_query [ ',' S* media_query ]* ]? + * ; + */ + var tokenStream = this._tokenStream, + mediaList = []; + + + this._readWhitespace(); + + if (tokenStream.peek() == Tokens.IDENT || tokenStream.peek() == Tokens.LPAREN){ + mediaList.push(this._media_query()); + } + + while(tokenStream.match(Tokens.COMMA)){ + this._readWhitespace(); + mediaList.push(this._media_query()); + } + + return mediaList; + }, + + /* + * Note: "expression" in the grammar maps to the _media_expression + * method. + + */ + _media_query: function(){ + /* + * media_query + * : [ONLY | NOT]? S* media_type S* [ AND S* expression ]* + * | expression [ AND S* expression ]* + * ; + */ + var tokenStream = this._tokenStream, + type = null, + ident = null, + token = null, + expressions = []; + + if (tokenStream.match(Tokens.IDENT)){ + ident = tokenStream.token().value.toLowerCase(); + + //since there's no custom tokens for these, need to manually check + if (ident != "only" && ident != "not"){ + tokenStream.unget(); + ident = null; + } else { + token = tokenStream.token(); + } + } + + this._readWhitespace(); + + if (tokenStream.peek() == Tokens.IDENT){ + type = this._media_type(); + if (token === null){ + token = tokenStream.token(); + } + } else if (tokenStream.peek() == Tokens.LPAREN){ + if (token === null){ + token = tokenStream.LT(1); + } + expressions.push(this._media_expression()); + } + + if (type === null && expressions.length === 0){ + return null; + } else { + this._readWhitespace(); + while (tokenStream.match(Tokens.IDENT)){ + if (tokenStream.token().value.toLowerCase() != "and"){ + this._unexpectedToken(tokenStream.token()); + } + + this._readWhitespace(); + expressions.push(this._media_expression()); + } + } + + return new MediaQuery(ident, type, expressions, token.startLine, token.startCol); + }, + + //CSS3 Media Queries + _media_type: function(){ + /* + * media_type + * : IDENT + * ; + */ + return this._media_feature(); + }, + + /** + * Note: in CSS3 Media Queries, this is called "expression". + * Renamed here to avoid conflict with CSS3 Selectors + * definition of "expression". Also note that "expr" in the + * grammar now maps to "expression" from CSS3 selectors. + * @method _media_expression + * @private + */ + _media_expression: function(){ + /* + * expression + * : '(' S* media_feature S* [ ':' S* expr ]? ')' S* + * ; + */ + var tokenStream = this._tokenStream, + feature = null, + token, + expression = null; + + tokenStream.mustMatch(Tokens.LPAREN); + this._readWhitespace(); + + feature = this._media_feature(); + this._readWhitespace(); + + if (tokenStream.match(Tokens.COLON)){ + this._readWhitespace(); + token = tokenStream.LT(1); + expression = this._expression(); + } + + tokenStream.mustMatch(Tokens.RPAREN); + this._readWhitespace(); + + return new MediaFeature(feature, (expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null)); + }, + + //CSS3 Media Queries + _media_feature: function(){ + /* + * media_feature + * : IDENT + * ; + */ + var tokenStream = this._tokenStream; + + tokenStream.mustMatch(Tokens.IDENT); + + return SyntaxUnit.fromToken(tokenStream.token()); + }, + + //CSS3 Paged Media + _page: function(){ + /* + * page: + * PAGE_SYM S* IDENT? pseudo_page? S* + * '{' S* [ declaration | margin ]? [ ';' S* [ declaration | margin ]? ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col, + identifier = null, + pseudoPage = null; + + //look for @page + tokenStream.mustMatch(Tokens.PAGE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + if (tokenStream.match(Tokens.IDENT)){ + identifier = tokenStream.token().value; + + //The value 'auto' may not be used as a page name and MUST be treated as a syntax error. + if (identifier.toLowerCase() === "auto"){ + this._unexpectedToken(tokenStream.token()); + } + } + + //see if there's a colon upcoming + if (tokenStream.peek() == Tokens.COLON){ + pseudoPage = this._pseudo_page(); + } + + this._readWhitespace(); + + this.fire({ + type: "startpage", + id: identifier, + pseudo: pseudoPage, + line: line, + col: col + }); + + this._readDeclarations(true, true); + + this.fire({ + type: "endpage", + id: identifier, + pseudo: pseudoPage, + line: line, + col: col + }); + + }, + + //CSS3 Paged Media + _margin: function(){ + /* + * margin : + * margin_sym S* '{' declaration [ ';' S* declaration? ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col, + marginSym = this._margin_sym(); + + if (marginSym){ + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this.fire({ + type: "startpagemargin", + margin: marginSym, + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endpagemargin", + margin: marginSym, + line: line, + col: col + }); + return true; + } else { + return false; + } + }, + + //CSS3 Paged Media + _margin_sym: function(){ + + /* + * margin_sym : + * TOPLEFTCORNER_SYM | + * TOPLEFT_SYM | + * TOPCENTER_SYM | + * TOPRIGHT_SYM | + * TOPRIGHTCORNER_SYM | + * BOTTOMLEFTCORNER_SYM | + * BOTTOMLEFT_SYM | + * BOTTOMCENTER_SYM | + * BOTTOMRIGHT_SYM | + * BOTTOMRIGHTCORNER_SYM | + * LEFTTOP_SYM | + * LEFTMIDDLE_SYM | + * LEFTBOTTOM_SYM | + * RIGHTTOP_SYM | + * RIGHTMIDDLE_SYM | + * RIGHTBOTTOM_SYM + * ; + */ + + var tokenStream = this._tokenStream; + + if(tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM, + Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM, + Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM, + Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM, + Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM, + Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM, + Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM])) + { + return SyntaxUnit.fromToken(tokenStream.token()); + } else { + return null; + } + + }, + + _pseudo_page: function(){ + /* + * pseudo_page + * : ':' IDENT + * ; + */ + + var tokenStream = this._tokenStream; + + tokenStream.mustMatch(Tokens.COLON); + tokenStream.mustMatch(Tokens.IDENT); + + //TODO: CSS3 Paged Media says only "left", "center", and "right" are allowed + + return tokenStream.token().value; + }, + + _font_face: function(){ + /* + * font_face + * : FONT_FACE_SYM S* + * '{' S* declaration [ ';' S* declaration ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col; + + //look for @page + tokenStream.mustMatch(Tokens.FONT_FACE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + this.fire({ + type: "startfontface", + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endfontface", + line: line, + col: col + }); + }, + + _viewport: function(){ + /* + * viewport + * : VIEWPORT_SYM S* + * '{' S* declaration? [ ';' S* declaration? ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col; + + tokenStream.mustMatch(Tokens.VIEWPORT_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + this.fire({ + type: "startviewport", + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endviewport", + line: line, + col: col + }); + + }, + + _operator: function(inFunction){ + + /* + * operator (outside function) + * : '/' S* | ',' S* | /( empty )/ + * operator (inside function) + * : '/' S* | '+' S* | '*' S* | '-' S* /( empty )/ + * ; + */ + + var tokenStream = this._tokenStream, + token = null; + + if (tokenStream.match([Tokens.SLASH, Tokens.COMMA]) || + (inFunction && tokenStream.match([Tokens.PLUS, Tokens.STAR, Tokens.MINUS]))){ + token = tokenStream.token(); + this._readWhitespace(); + } + return token ? PropertyValuePart.fromToken(token) : null; + + }, + + _combinator: function(){ + + /* + * combinator + * : PLUS S* | GREATER S* | TILDE S* | S+ + * ; + */ + + var tokenStream = this._tokenStream, + value = null, + token; + + if(tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])){ + token = tokenStream.token(); + value = new Combinator(token.value, token.startLine, token.startCol); + this._readWhitespace(); + } + + return value; + }, + + _unary_operator: function(){ + + /* + * unary_operator + * : '-' | '+' + * ; + */ + + var tokenStream = this._tokenStream; + + if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])){ + return tokenStream.token().value; + } else { + return null; + } + }, + + _property: function(){ + + /* + * property + * : IDENT S* + * ; + */ + + var tokenStream = this._tokenStream, + value = null, + hack = null, + tokenValue, + token, + line, + col; + + //check for star hack - throws error if not allowed + if (tokenStream.peek() == Tokens.STAR && this.options.starHack){ + tokenStream.get(); + token = tokenStream.token(); + hack = token.value; + line = token.startLine; + col = token.startCol; + } + + if(tokenStream.match(Tokens.IDENT)){ + token = tokenStream.token(); + tokenValue = token.value; + + //check for underscore hack - no error if not allowed because it's valid CSS syntax + if (tokenValue.charAt(0) == "_" && this.options.underscoreHack){ + hack = "_"; + tokenValue = tokenValue.substring(1); + } + + value = new PropertyName(tokenValue, hack, (line||token.startLine), (col||token.startCol)); + this._readWhitespace(); + } + + return value; + }, + + //Augmented with CSS3 Selectors + _ruleset: function(){ + /* + * ruleset + * : selectors_group + * '{' S* declaration? [ ';' S* declaration? ]* '}' S* + * ; + */ + + var tokenStream = this._tokenStream, + tt, + selectors; + + + /* + * Error Recovery: If even a single selector fails to parse, + * then the entire ruleset should be thrown away. + */ + try { + selectors = this._selectors_group(); + } catch (ex){ + if (ex instanceof SyntaxError && !this.options.strict){ + + //fire error event + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + + //skip over everything until closing brace + tt = tokenStream.advance([Tokens.RBRACE]); + if (tt == Tokens.RBRACE){ + //if there's a right brace, the rule is finished so don't do anything + } else { + //otherwise, rethrow the error because it wasn't handled properly + throw ex; + } + + } else { + //not a syntax error, rethrow it + throw ex; + } + + //trigger parser to continue + return true; + } + + //if it got here, all selectors parsed + if (selectors){ + + this.fire({ + type: "startrule", + selectors: selectors, + line: selectors[0].line, + col: selectors[0].col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endrule", + selectors: selectors, + line: selectors[0].line, + col: selectors[0].col + }); + + } + + return selectors; + + }, + + //CSS3 Selectors + _selectors_group: function(){ + + /* + * selectors_group + * : selector [ COMMA S* selector ]* + * ; + */ + var tokenStream = this._tokenStream, + selectors = [], + selector; + + selector = this._selector(); + if (selector !== null){ + + selectors.push(selector); + while(tokenStream.match(Tokens.COMMA)){ + this._readWhitespace(); + selector = this._selector(); + if (selector !== null){ + selectors.push(selector); + } else { + this._unexpectedToken(tokenStream.LT(1)); + } + } + } + + return selectors.length ? selectors : null; + }, + + //CSS3 Selectors + _selector: function(){ + /* + * selector + * : simple_selector_sequence [ combinator simple_selector_sequence ]* + * ; + */ + + var tokenStream = this._tokenStream, + selector = [], + nextSelector = null, + combinator = null, + ws = null; + + //if there's no simple selector, then there's no selector + nextSelector = this._simple_selector_sequence(); + if (nextSelector === null){ + return null; + } + + selector.push(nextSelector); + + do { + + //look for a combinator + combinator = this._combinator(); + + if (combinator !== null){ + selector.push(combinator); + nextSelector = this._simple_selector_sequence(); + + //there must be a next selector + if (nextSelector === null){ + this._unexpectedToken(tokenStream.LT(1)); + } else { + + //nextSelector is an instance of SelectorPart + selector.push(nextSelector); + } + } else { + + //if there's not whitespace, we're done + if (this._readWhitespace()){ + + //add whitespace separator + ws = new Combinator(tokenStream.token().value, tokenStream.token().startLine, tokenStream.token().startCol); + + //combinator is not required + combinator = this._combinator(); + + //selector is required if there's a combinator + nextSelector = this._simple_selector_sequence(); + if (nextSelector === null){ + if (combinator !== null){ + this._unexpectedToken(tokenStream.LT(1)); + } + } else { + + if (combinator !== null){ + selector.push(combinator); + } else { + selector.push(ws); + } + + selector.push(nextSelector); + } + } else { + break; + } + + } + } while(true); + + return new Selector(selector, selector[0].line, selector[0].col); + }, + + //CSS3 Selectors + _simple_selector_sequence: function(){ + /* + * simple_selector_sequence + * : [ type_selector | universal ] + * [ HASH | class | attrib | pseudo | negation ]* + * | [ HASH | class | attrib | pseudo | negation ]+ + * ; + */ + + var tokenStream = this._tokenStream, + + //parts of a simple selector + elementName = null, + modifiers = [], + + //complete selector text + selectorText= "", + + //the different parts after the element name to search for + components = [ + //HASH + function(){ + return tokenStream.match(Tokens.HASH) ? + new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : + null; + }, + this._class, + this._attrib, + this._pseudo, + this._negation + ], + i = 0, + len = components.length, + component = null, + found = false, + line, + col; + + + //get starting line and column for the selector + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + + elementName = this._type_selector(); + if (!elementName){ + elementName = this._universal(); + } + + if (elementName !== null){ + selectorText += elementName; + } + + while(true){ + + //whitespace means we're done + if (tokenStream.peek() === Tokens.S){ + break; + } + + //check for each component + while(i < len && component === null){ + component = components[i++].call(this); + } + + if (component === null){ + + //we don't have a selector + if (selectorText === ""){ + return null; + } else { + break; + } + } else { + i = 0; + modifiers.push(component); + selectorText += component.toString(); + component = null; + } + } + + + return selectorText !== "" ? + new SelectorPart(elementName, modifiers, selectorText, line, col) : + null; + }, + + //CSS3 Selectors + _type_selector: function(){ + /* + * type_selector + * : [ namespace_prefix ]? element_name + * ; + */ + + var tokenStream = this._tokenStream, + ns = this._namespace_prefix(), + elementName = this._element_name(); + + if (!elementName){ + /* + * Need to back out the namespace that was read due to both + * type_selector and universal reading namespace_prefix + * first. Kind of hacky, but only way I can figure out + * right now how to not change the grammar. + */ + if (ns){ + tokenStream.unget(); + if (ns.length > 1){ + tokenStream.unget(); + } + } + + return null; + } else { + if (ns){ + elementName.text = ns + elementName.text; + elementName.col -= ns.length; + } + return elementName; + } + }, + + //CSS3 Selectors + _class: function(){ + /* + * class + * : '.' IDENT + * ; + */ + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.DOT)){ + tokenStream.mustMatch(Tokens.IDENT); + token = tokenStream.token(); + return new SelectorSubPart("." + token.value, "class", token.startLine, token.startCol - 1); + } else { + return null; + } + + }, + + //CSS3 Selectors + _element_name: function(){ + /* + * element_name + * : IDENT + * ; + */ + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.IDENT)){ + token = tokenStream.token(); + return new SelectorSubPart(token.value, "elementName", token.startLine, token.startCol); + + } else { + return null; + } + }, + + //CSS3 Selectors + _namespace_prefix: function(){ + /* + * namespace_prefix + * : [ IDENT | '*' ]? '|' + * ; + */ + var tokenStream = this._tokenStream, + value = ""; + + //verify that this is a namespace prefix + if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE){ + + if(tokenStream.match([Tokens.IDENT, Tokens.STAR])){ + value += tokenStream.token().value; + } + + tokenStream.mustMatch(Tokens.PIPE); + value += "|"; + + } + + return value.length ? value : null; + }, + + //CSS3 Selectors + _universal: function(){ + /* + * universal + * : [ namespace_prefix ]? '*' + * ; + */ + var tokenStream = this._tokenStream, + value = "", + ns; + + ns = this._namespace_prefix(); + if(ns){ + value += ns; + } + + if(tokenStream.match(Tokens.STAR)){ + value += "*"; + } + + return value.length ? value : null; + + }, + + //CSS3 Selectors + _attrib: function(){ + /* + * attrib + * : '[' S* [ namespace_prefix ]? IDENT S* + * [ [ PREFIXMATCH | + * SUFFIXMATCH | + * SUBSTRINGMATCH | + * '=' | + * INCLUDES | + * DASHMATCH ] S* [ IDENT | STRING ] S* + * ]? ']' + * ; + */ + + var tokenStream = this._tokenStream, + value = null, + ns, + token; + + if (tokenStream.match(Tokens.LBRACKET)){ + token = tokenStream.token(); + value = token.value; + value += this._readWhitespace(); + + ns = this._namespace_prefix(); + + if (ns){ + value += ns; + } + + tokenStream.mustMatch(Tokens.IDENT); + value += tokenStream.token().value; + value += this._readWhitespace(); + + if(tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH, + Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])){ + + value += tokenStream.token().value; + value += this._readWhitespace(); + + tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); + value += tokenStream.token().value; + value += this._readWhitespace(); + } + + tokenStream.mustMatch(Tokens.RBRACKET); + + return new SelectorSubPart(value + "]", "attribute", token.startLine, token.startCol); + } else { + return null; + } + }, + + //CSS3 Selectors + _pseudo: function(){ + + /* + * pseudo + * : ':' ':'? [ IDENT | functional_pseudo ] + * ; + */ + + var tokenStream = this._tokenStream, + pseudo = null, + colons = ":", + line, + col; + + if (tokenStream.match(Tokens.COLON)){ + + if (tokenStream.match(Tokens.COLON)){ + colons += ":"; + } + + if (tokenStream.match(Tokens.IDENT)){ + pseudo = tokenStream.token().value; + line = tokenStream.token().startLine; + col = tokenStream.token().startCol - colons.length; + } else if (tokenStream.peek() == Tokens.FUNCTION){ + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol - colons.length; + pseudo = this._functional_pseudo(); + } + + if (pseudo){ + pseudo = new SelectorSubPart(colons + pseudo, "pseudo", line, col); + } + } + + return pseudo; + }, + + //CSS3 Selectors + _functional_pseudo: function(){ + /* + * functional_pseudo + * : FUNCTION S* expression ')' + * ; + */ + + var tokenStream = this._tokenStream, + value = null; + + if(tokenStream.match(Tokens.FUNCTION)){ + value = tokenStream.token().value; + value += this._readWhitespace(); + value += this._expression(); + tokenStream.mustMatch(Tokens.RPAREN); + value += ")"; + } + + return value; + }, + + //CSS3 Selectors + _expression: function(){ + /* + * expression + * : [ [ PLUS | '-' | DIMENSION | NUMBER | STRING | IDENT ] S* ]+ + * ; + */ + + var tokenStream = this._tokenStream, + value = ""; + + while(tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION, + Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH, + Tokens.FREQ, Tokens.ANGLE, Tokens.TIME, + Tokens.RESOLUTION, Tokens.SLASH])){ + + value += tokenStream.token().value; + value += this._readWhitespace(); + } + + return value.length ? value : null; + + }, + + //CSS3 Selectors + _negation: function(){ + /* + * negation + * : NOT S* negation_arg S* ')' + * ; + */ + + var tokenStream = this._tokenStream, + line, + col, + value = "", + arg, + subpart = null; + + if (tokenStream.match(Tokens.NOT)){ + value = tokenStream.token().value; + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + value += this._readWhitespace(); + arg = this._negation_arg(); + value += arg; + value += this._readWhitespace(); + tokenStream.match(Tokens.RPAREN); + value += tokenStream.token().value; + + subpart = new SelectorSubPart(value, "not", line, col); + subpart.args.push(arg); + } + + return subpart; + }, + + //CSS3 Selectors + _negation_arg: function(){ + /* + * negation_arg + * : type_selector | universal | HASH | class | attrib | pseudo + * ; + */ + + var tokenStream = this._tokenStream, + args = [ + this._type_selector, + this._universal, + function(){ + return tokenStream.match(Tokens.HASH) ? + new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : + null; + }, + this._class, + this._attrib, + this._pseudo + ], + arg = null, + i = 0, + len = args.length, + elementName, + line, + col, + part; + + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + + while(i < len && arg === null){ + + arg = args[i].call(this); + i++; + } + + //must be a negation arg + if (arg === null){ + this._unexpectedToken(tokenStream.LT(1)); + } + + //it's an element name + if (arg.type == "elementName"){ + part = new SelectorPart(arg, [], arg.toString(), line, col); + } else { + part = new SelectorPart(null, [arg], arg.toString(), line, col); + } + + return part; + }, + + _declaration: function(){ + + /* + * declaration + * : property ':' S* expr prio? + * | /( empty )/ + * ; + */ + + var tokenStream = this._tokenStream, + property = null, + expr = null, + prio = null, + error = null, + invalid = null, + propertyName= ""; + + property = this._property(); + if (property !== null){ + + tokenStream.mustMatch(Tokens.COLON); + this._readWhitespace(); + + expr = this._expr(); + + //if there's no parts for the value, it's an error + if (!expr || expr.length === 0){ + this._unexpectedToken(tokenStream.LT(1)); + } + + prio = this._prio(); + + /* + * If hacks should be allowed, then only check the root + * property. If hacks should not be allowed, treat + * _property or *property as invalid properties. + */ + propertyName = property.toString(); + if (this.options.starHack && property.hack == "*" || + this.options.underscoreHack && property.hack == "_") { + + propertyName = property.text; + } + + try { + this._validateProperty(propertyName, expr); + } catch (ex) { + invalid = ex; + } + + this.fire({ + type: "property", + property: property, + value: expr, + important: prio, + line: property.line, + col: property.col, + invalid: invalid + }); + + return true; + } else { + return false; + } + }, + + _prio: function(){ + /* + * prio + * : IMPORTANT_SYM S* + * ; + */ + + var tokenStream = this._tokenStream, + result = tokenStream.match(Tokens.IMPORTANT_SYM); + + this._readWhitespace(); + return result; + }, + + _expr: function(inFunction){ + /* + * expr + * : term [ operator term ]* + * ; + */ + + var tokenStream = this._tokenStream, + values = [], + //valueParts = [], + value = null, + operator = null; + + value = this._term(inFunction); + if (value !== null){ + + values.push(value); + + do { + operator = this._operator(inFunction); + + //if there's an operator, keep building up the value parts + if (operator){ + values.push(operator); + } /*else { + //if there's not an operator, you have a full value + values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col)); + valueParts = []; + }*/ + + value = this._term(inFunction); + + if (value === null){ + break; + } else { + values.push(value); + } + } while(true); + } + + //cleanup + /*if (valueParts.length){ + values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col)); + }*/ + + return values.length > 0 ? new PropertyValue(values, values[0].line, values[0].col) : null; + }, + + _term: function(inFunction){ + + /* + * term + * : unary_operator? + * [ NUMBER S* | PERCENTAGE S* | LENGTH S* | ANGLE S* | + * TIME S* | FREQ S* | function | ie_function ] + * | STRING S* | IDENT S* | URI S* | UNICODERANGE S* | hexcolor + * ; + */ + + var tokenStream = this._tokenStream, + unary = null, + value = null, + endChar = null, + token, + line, + col; + + //returns the operator or null + unary = this._unary_operator(); + if (unary !== null){ + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + + //exception for IE filters + if (tokenStream.peek() == Tokens.IE_FUNCTION && this.options.ieFilters){ + + value = this._ie_function(); + if (unary === null){ + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + + //see if it's a simple block + } else if (inFunction && tokenStream.match([Tokens.LPAREN, Tokens.LBRACE, Tokens.LBRACKET])){ + + token = tokenStream.token(); + endChar = token.endChar; + value = token.value + this._expr(inFunction).text; + if (unary === null){ + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + tokenStream.mustMatch(Tokens.type(endChar)); + value += endChar; + this._readWhitespace(); + + //see if there's a simple match + } else if (tokenStream.match([Tokens.NUMBER, Tokens.PERCENTAGE, Tokens.LENGTH, + Tokens.ANGLE, Tokens.TIME, + Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])){ + + value = tokenStream.token().value; + if (unary === null){ + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + this._readWhitespace(); + } else { + + //see if it's a color + token = this._hexcolor(); + if (token === null){ + + //if there's no unary, get the start of the next token for line/col info + if (unary === null){ + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + } + + //has to be a function + if (value === null){ + + /* + * This checks for alpha(opacity=0) style of IE + * functions. IE_FUNCTION only presents progid: style. + */ + if (tokenStream.LA(3) == Tokens.EQUALS && this.options.ieFilters){ + value = this._ie_function(); + } else { + value = this._function(); + } + } + + /*if (value === null){ + return null; + //throw new Error("Expected identifier at line " + tokenStream.token().startLine + ", character " + tokenStream.token().startCol + "."); + }*/ + + } else { + value = token.value; + if (unary === null){ + line = token.startLine; + col = token.startCol; + } + } + + } + + return value !== null ? + new PropertyValuePart(unary !== null ? unary + value : value, line, col) : + null; + + }, + + _function: function(){ + + /* + * function + * : FUNCTION S* expr ')' S* + * ; + */ + + var tokenStream = this._tokenStream, + functionText = null, + expr = null, + lt; + + if (tokenStream.match(Tokens.FUNCTION)){ + functionText = tokenStream.token().value; + this._readWhitespace(); + expr = this._expr(true); + functionText += expr; + + //START: Horrible hack in case it's an IE filter + if (this.options.ieFilters && tokenStream.peek() == Tokens.EQUALS){ + do { + + if (this._readWhitespace()){ + functionText += tokenStream.token().value; + } + + //might be second time in the loop + if (tokenStream.LA(0) == Tokens.COMMA){ + functionText += tokenStream.token().value; + } + + tokenStream.match(Tokens.IDENT); + functionText += tokenStream.token().value; + + tokenStream.match(Tokens.EQUALS); + functionText += tokenStream.token().value; + + //functionText += this._term(); + lt = tokenStream.peek(); + while(lt != Tokens.COMMA && lt != Tokens.S && lt != Tokens.RPAREN){ + tokenStream.get(); + functionText += tokenStream.token().value; + lt = tokenStream.peek(); + } + } while(tokenStream.match([Tokens.COMMA, Tokens.S])); + } + + //END: Horrible Hack + + tokenStream.match(Tokens.RPAREN); + functionText += ")"; + this._readWhitespace(); + } + + return functionText; + }, + + _ie_function: function(){ + + /* (My own extension) + * ie_function + * : IE_FUNCTION S* IDENT '=' term [S* ','? IDENT '=' term]+ ')' S* + * ; + */ + + var tokenStream = this._tokenStream, + functionText = null, + expr = null, + lt; + + //IE function can begin like a regular function, too + if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])){ + functionText = tokenStream.token().value; + + do { + + if (this._readWhitespace()){ + functionText += tokenStream.token().value; + } + + //might be second time in the loop + if (tokenStream.LA(0) == Tokens.COMMA){ + functionText += tokenStream.token().value; + } + + tokenStream.match(Tokens.IDENT); + functionText += tokenStream.token().value; + + tokenStream.match(Tokens.EQUALS); + functionText += tokenStream.token().value; + + //functionText += this._term(); + lt = tokenStream.peek(); + while(lt != Tokens.COMMA && lt != Tokens.S && lt != Tokens.RPAREN){ + tokenStream.get(); + functionText += tokenStream.token().value; + lt = tokenStream.peek(); + } + } while(tokenStream.match([Tokens.COMMA, Tokens.S])); + + tokenStream.match(Tokens.RPAREN); + functionText += ")"; + this._readWhitespace(); + } + + return functionText; + }, + + _hexcolor: function(){ + /* + * There is a constraint on the color that it must + * have either 3 or 6 hex-digits (i.e., [0-9a-fA-F]) + * after the "#"; e.g., "#000" is OK, but "#abcd" is not. + * + * hexcolor + * : HASH S* + * ; + */ + + var tokenStream = this._tokenStream, + token = null, + color; + + if(tokenStream.match(Tokens.HASH)){ + + //need to do some validation here + + token = tokenStream.token(); + color = token.value; + if (!/#[a-f0-9]{3,6}/i.test(color)){ + throw new SyntaxError("Expected a hex color but found '" + color + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); + } + this._readWhitespace(); + } + + return token; + }, + + //----------------------------------------------------------------- + // Animations methods + //----------------------------------------------------------------- + + _keyframes: function(){ + + /* + * keyframes: + * : KEYFRAMES_SYM S* keyframe_name S* '{' S* keyframe_rule* '}' { + * ; + */ + var tokenStream = this._tokenStream, + token, + tt, + name, + prefix = ""; + + tokenStream.mustMatch(Tokens.KEYFRAMES_SYM); + token = tokenStream.token(); + if (/^@\-([^\-]+)\-/.test(token.value)) { + prefix = RegExp.$1; + } + + this._readWhitespace(); + name = this._keyframe_name(); + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.LBRACE); + + this.fire({ + type: "startkeyframes", + name: name, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + this._readWhitespace(); + tt = tokenStream.peek(); + + //check for key + while(tt == Tokens.IDENT || tt == Tokens.PERCENTAGE) { + this._keyframe_rule(); + this._readWhitespace(); + tt = tokenStream.peek(); + } + + this.fire({ + type: "endkeyframes", + name: name, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RBRACE); + + }, + + _keyframe_name: function(){ + + /* + * keyframe_name: + * : IDENT + * | STRING + * ; + */ + var tokenStream = this._tokenStream, + token; + + tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); + return SyntaxUnit.fromToken(tokenStream.token()); + }, + + _keyframe_rule: function(){ + + /* + * keyframe_rule: + * : key_list S* + * '{' S* declaration [ ';' S* declaration ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + token, + keyList = this._key_list(); + + this.fire({ + type: "startkeyframerule", + keys: keyList, + line: keyList[0].line, + col: keyList[0].col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endkeyframerule", + keys: keyList, + line: keyList[0].line, + col: keyList[0].col + }); + + }, + + _key_list: function(){ + + /* + * key_list: + * : key [ S* ',' S* key]* + * ; + */ + var tokenStream = this._tokenStream, + token, + key, + keyList = []; + + //must be least one key + keyList.push(this._key()); + + this._readWhitespace(); + + while(tokenStream.match(Tokens.COMMA)){ + this._readWhitespace(); + keyList.push(this._key()); + this._readWhitespace(); + } + + return keyList; + }, + + _key: function(){ + /* + * There is a restriction that IDENT can be only "from" or "to". + * + * key + * : PERCENTAGE + * | IDENT + * ; + */ + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.PERCENTAGE)){ + return SyntaxUnit.fromToken(tokenStream.token()); + } else if (tokenStream.match(Tokens.IDENT)){ + token = tokenStream.token(); + + if (/from|to/i.test(token.value)){ + return SyntaxUnit.fromToken(token); + } + + tokenStream.unget(); + } + + //if it gets here, there wasn't a valid token, so time to explode + this._unexpectedToken(tokenStream.LT(1)); + }, + + //----------------------------------------------------------------- + // Helper methods + //----------------------------------------------------------------- + + /** + * Not part of CSS grammar, but useful for skipping over + * combination of white space and HTML-style comments. + * @return {void} + * @method _skipCruft + * @private + */ + _skipCruft: function(){ + while(this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])){ + //noop + } + }, + + /** + * Not part of CSS grammar, but this pattern occurs frequently + * in the official CSS grammar. Split out here to eliminate + * duplicate code. + * @param {Boolean} checkStart Indicates if the rule should check + * for the left brace at the beginning. + * @param {Boolean} readMargins Indicates if the rule should check + * for margin patterns. + * @return {void} + * @method _readDeclarations + * @private + */ + _readDeclarations: function(checkStart, readMargins){ + /* + * Reads the pattern + * S* '{' S* declaration [ ';' S* declaration ]* '}' S* + * or + * S* '{' S* [ declaration | margin ]? [ ';' S* [ declaration | margin ]? ]* '}' S* + * Note that this is how it is described in CSS3 Paged Media, but is actually incorrect. + * A semicolon is only necessary following a declaration is there's another declaration + * or margin afterwards. + */ + var tokenStream = this._tokenStream, + tt; + + + this._readWhitespace(); + + if (checkStart){ + tokenStream.mustMatch(Tokens.LBRACE); + } + + this._readWhitespace(); + + try { + + while(true){ + + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ + //noop + } else if (this._declaration()){ + if (!tokenStream.match(Tokens.SEMICOLON)){ + break; + } + } else { + break; + } + + //if ((!this._margin() && !this._declaration()) || !tokenStream.match(Tokens.SEMICOLON)){ + // break; + //} + this._readWhitespace(); + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict){ + + //fire error event + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + + //see if there's another declaration + tt = tokenStream.advance([Tokens.SEMICOLON, Tokens.RBRACE]); + if (tt == Tokens.SEMICOLON){ + //if there's a semicolon, then there might be another declaration + this._readDeclarations(false, readMargins); + } else if (tt != Tokens.RBRACE){ + //if there's a right brace, the rule is finished so don't do anything + //otherwise, rethrow the error because it wasn't handled properly + throw ex; + } + + } else { + //not a syntax error, rethrow it + throw ex; + } + } + + }, + + /** + * In some cases, you can end up with two white space tokens in a + * row. Instead of making a change in every function that looks for + * white space, this function is used to match as much white space + * as necessary. + * @method _readWhitespace + * @return {String} The white space if found, empty string if not. + * @private + */ + _readWhitespace: function(){ + + var tokenStream = this._tokenStream, + ws = ""; + + while(tokenStream.match(Tokens.S)){ + ws += tokenStream.token().value; + } + + return ws; + }, + + + /** + * Throws an error when an unexpected token is found. + * @param {Object} token The token that was found. + * @method _unexpectedToken + * @return {void} + * @private + */ + _unexpectedToken: function(token){ + throw new SyntaxError("Unexpected token '" + token.value + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); + }, + + /** + * Helper method used for parsing subparts of a style sheet. + * @return {void} + * @method _verifyEnd + * @private + */ + _verifyEnd: function(){ + if (this._tokenStream.LA(1) != Tokens.EOF){ + this._unexpectedToken(this._tokenStream.LT(1)); + } + }, + + //----------------------------------------------------------------- + // Validation methods + //----------------------------------------------------------------- + _validateProperty: function(property, value){ + Validation.validate(property, value); + }, + + //----------------------------------------------------------------- + // Parsing methods + //----------------------------------------------------------------- + + parse: function(input){ + this._tokenStream = new TokenStream(input, Tokens); + this._stylesheet(); + }, + + parseStyleSheet: function(input){ + //just passthrough + return this.parse(input); + }, + + parseMediaQuery: function(input){ + this._tokenStream = new TokenStream(input, Tokens); + var result = this._media_query(); + + //if there's anything more, then it's an invalid selector + this._verifyEnd(); + + //otherwise return result + return result; + }, + + /** + * Parses a property value (everything after the semicolon). + * @return {parserlib.css.PropertyValue} The property value. + * @throws parserlib.util.SyntaxError If an unexpected token is found. + * @method parserPropertyValue + */ + parsePropertyValue: function(input){ + + this._tokenStream = new TokenStream(input, Tokens); + this._readWhitespace(); + + var result = this._expr(); + + //okay to have a trailing white space + this._readWhitespace(); + + //if there's anything more, then it's an invalid selector + this._verifyEnd(); + + //otherwise return result + return result; + }, + + /** + * Parses a complete CSS rule, including selectors and + * properties. + * @param {String} input The text to parser. + * @return {Boolean} True if the parse completed successfully, false if not. + * @method parseRule + */ + parseRule: function(input){ + this._tokenStream = new TokenStream(input, Tokens); + + //skip any leading white space + this._readWhitespace(); + + var result = this._ruleset(); + + //skip any trailing white space + this._readWhitespace(); + + //if there's anything more, then it's an invalid selector + this._verifyEnd(); + + //otherwise return result + return result; + }, + + /** + * Parses a single CSS selector (no comma) + * @param {String} input The text to parse as a CSS selector. + * @return {Selector} An object representing the selector. + * @throws parserlib.util.SyntaxError If an unexpected token is found. + * @method parseSelector + */ + parseSelector: function(input){ + + this._tokenStream = new TokenStream(input, Tokens); + + //skip any leading white space + this._readWhitespace(); + + var result = this._selector(); + + //skip any trailing white space + this._readWhitespace(); + + //if there's anything more, then it's an invalid selector + this._verifyEnd(); + + //otherwise return result + return result; + }, + + /** + * Parses an HTML style attribute: a set of CSS declarations + * separated by semicolons. + * @param {String} input The text to parse as a style attribute + * @return {void} + * @method parseStyleAttribute + */ + parseStyleAttribute: function(input){ + input += "}"; // for error recovery in _readDeclarations() + this._tokenStream = new TokenStream(input, Tokens); + this._readDeclarations(); + } + }; + + //copy over onto prototype + for (prop in additions){ + if (additions.hasOwnProperty(prop)){ + proto[prop] = additions[prop]; + } + } + + return proto; +}(); + + +/* +nth + : S* [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]? | + ['-'|'+']? INTEGER | {O}{D}{D} | {E}{V}{E}{N} ] S* + ; +*/ +/*global Validation, ValidationTypes, ValidationError*/ +var Properties = { + + //A + "align-items" : "flex-start | flex-end | center | baseline | stretch", + "align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", + "align-self" : "auto | flex-start | flex-end | center | baseline | stretch", + "-webkit-align-items" : "flex-start | flex-end | center | baseline | stretch", + "-webkit-align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", + "-webkit-align-self" : "auto | flex-start | flex-end | center | baseline | stretch", + "alignment-adjust" : "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>", + "alignment-baseline" : "baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical", + "animation" : 1, + "animation-delay" : { multi: "<time>", comma: true }, + "animation-direction" : { multi: "normal | reverse | alternate | alternate-reverse", comma: true }, + "animation-duration" : { multi: "<time>", comma: true }, + "animation-fill-mode" : { multi: "none | forwards | backwards | both", comma: true }, + "animation-iteration-count" : { multi: "<number> | infinite", comma: true }, + "animation-name" : { multi: "none | <ident>", comma: true }, + "animation-play-state" : { multi: "running | paused", comma: true }, + "animation-timing-function" : 1, + + //vendor prefixed + "-moz-animation-delay" : { multi: "<time>", comma: true }, + "-moz-animation-direction" : { multi: "normal | reverse | alternate | alternate-reverse", comma: true }, + "-moz-animation-duration" : { multi: "<time>", comma: true }, + "-moz-animation-iteration-count" : { multi: "<number> | infinite", comma: true }, + "-moz-animation-name" : { multi: "none | <ident>", comma: true }, + "-moz-animation-play-state" : { multi: "running | paused", comma: true }, + + "-ms-animation-delay" : { multi: "<time>", comma: true }, + "-ms-animation-direction" : { multi: "normal | reverse | alternate | alternate-reverse", comma: true }, + "-ms-animation-duration" : { multi: "<time>", comma: true }, + "-ms-animation-iteration-count" : { multi: "<number> | infinite", comma: true }, + "-ms-animation-name" : { multi: "none | <ident>", comma: true }, + "-ms-animation-play-state" : { multi: "running | paused", comma: true }, + + "-webkit-animation-delay" : { multi: "<time>", comma: true }, + "-webkit-animation-direction" : { multi: "normal | reverse | alternate | alternate-reverse", comma: true }, + "-webkit-animation-duration" : { multi: "<time>", comma: true }, + "-webkit-animation-fill-mode" : { multi: "none | forwards | backwards | both", comma: true }, + "-webkit-animation-iteration-count" : { multi: "<number> | infinite", comma: true }, + "-webkit-animation-name" : { multi: "none | <ident>", comma: true }, + "-webkit-animation-play-state" : { multi: "running | paused", comma: true }, + + "-o-animation-delay" : { multi: "<time>", comma: true }, + "-o-animation-direction" : { multi: "normal | reverse | alternate | alternate-reverse", comma: true }, + "-o-animation-duration" : { multi: "<time>", comma: true }, + "-o-animation-iteration-count" : { multi: "<number> | infinite", comma: true }, + "-o-animation-name" : { multi: "none | <ident>", comma: true }, + "-o-animation-play-state" : { multi: "running | paused", comma: true }, + + "appearance" : "icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | none | inherit", + "azimuth" : function (expression) { + var simple = "<angle> | leftwards | rightwards | inherit", + direction = "left-side | far-left | left | center-left | center | center-right | right | far-right | right-side", + behind = false, + valid = false, + part; + + if (!ValidationTypes.isAny(expression, simple)) { + if (ValidationTypes.isAny(expression, "behind")) { + behind = true; + valid = true; + } + + if (ValidationTypes.isAny(expression, direction)) { + valid = true; + if (!behind) { + ValidationTypes.isAny(expression, "behind"); + } + } + } + + if (expression.hasNext()) { + part = expression.next(); + if (valid) { + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } else { + throw new ValidationError("Expected (<'azimuth'>) but found '" + part + "'.", part.line, part.col); + } + } + }, + + //B + "backface-visibility" : "visible | hidden", + "background" : 1, + "background-attachment" : { multi: "<attachment>", comma: true }, + "background-clip" : { multi: "<box>", comma: true }, + "background-color" : "<color> | inherit", + "background-image" : { multi: "<bg-image>", comma: true }, + "background-origin" : { multi: "<box>", comma: true }, + "background-position" : { multi: "<bg-position>", comma: true }, + "background-repeat" : { multi: "<repeat-style>" }, + "background-size" : { multi: "<bg-size>", comma: true }, + "baseline-shift" : "baseline | sub | super | <percentage> | <length>", + "behavior" : 1, + "binding" : 1, + "bleed" : "<length>", + "bookmark-label" : "<content> | <attr> | <string>", + "bookmark-level" : "none | <integer>", + "bookmark-state" : "open | closed", + "bookmark-target" : "none | <uri> | <attr>", + "border" : "<border-width> || <border-style> || <color>", + "border-bottom" : "<border-width> || <border-style> || <color>", + "border-bottom-color" : "<color> | inherit", + "border-bottom-left-radius" : "<x-one-radius>", + "border-bottom-right-radius" : "<x-one-radius>", + "border-bottom-style" : "<border-style>", + "border-bottom-width" : "<border-width>", + "border-collapse" : "collapse | separate | inherit", + "border-color" : { multi: "<color> | inherit", max: 4 }, + "border-image" : 1, + "border-image-outset" : { multi: "<length> | <number>", max: 4 }, + "border-image-repeat" : { multi: "stretch | repeat | round", max: 2 }, + "border-image-slice" : function(expression) { + + var valid = false, + numeric = "<number> | <percentage>", + fill = false, + count = 0, + max = 4, + part; + + if (ValidationTypes.isAny(expression, "fill")) { + fill = true; + valid = true; + } + + while (expression.hasNext() && count < max) { + valid = ValidationTypes.isAny(expression, numeric); + if (!valid) { + break; + } + count++; + } + + + if (!fill) { + ValidationTypes.isAny(expression, "fill"); + } else { + valid = true; + } + + if (expression.hasNext()) { + part = expression.next(); + if (valid) { + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } else { + throw new ValidationError("Expected ([<number> | <percentage>]{1,4} && fill?) but found '" + part + "'.", part.line, part.col); + } + } + }, + "border-image-source" : "<image> | none", + "border-image-width" : { multi: "<length> | <percentage> | <number> | auto", max: 4 }, + "border-left" : "<border-width> || <border-style> || <color>", + "border-left-color" : "<color> | inherit", + "border-left-style" : "<border-style>", + "border-left-width" : "<border-width>", + "border-radius" : function(expression) { + + var valid = false, + simple = "<length> | <percentage> | inherit", + slash = false, + fill = false, + count = 0, + max = 8, + part; + + while (expression.hasNext() && count < max) { + valid = ValidationTypes.isAny(expression, simple); + if (!valid) { + + if (expression.peek() == "/" && count > 0 && !slash) { + slash = true; + max = count + 5; + expression.next(); + } else { + break; + } + } + count++; + } + + if (expression.hasNext()) { + part = expression.next(); + if (valid) { + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } else { + throw new ValidationError("Expected (<'border-radius'>) but found '" + part + "'.", part.line, part.col); + } + } + }, + "border-right" : "<border-width> || <border-style> || <color>", + "border-right-color" : "<color> | inherit", + "border-right-style" : "<border-style>", + "border-right-width" : "<border-width>", + "border-spacing" : { multi: "<length> | inherit", max: 2 }, + "border-style" : { multi: "<border-style>", max: 4 }, + "border-top" : "<border-width> || <border-style> || <color>", + "border-top-color" : "<color> | inherit", + "border-top-left-radius" : "<x-one-radius>", + "border-top-right-radius" : "<x-one-radius>", + "border-top-style" : "<border-style>", + "border-top-width" : "<border-width>", + "border-width" : { multi: "<border-width>", max: 4 }, + "bottom" : "<margin-width> | inherit", + "-moz-box-align" : "start | end | center | baseline | stretch", + "-moz-box-decoration-break" : "slice |clone", + "-moz-box-direction" : "normal | reverse | inherit", + "-moz-box-flex" : "<number>", + "-moz-box-flex-group" : "<integer>", + "-moz-box-lines" : "single | multiple", + "-moz-box-ordinal-group" : "<integer>", + "-moz-box-orient" : "horizontal | vertical | inline-axis | block-axis | inherit", + "-moz-box-pack" : "start | end | center | justify", + "-webkit-box-align" : "start | end | center | baseline | stretch", + "-webkit-box-decoration-break" : "slice |clone", + "-webkit-box-direction" : "normal | reverse | inherit", + "-webkit-box-flex" : "<number>", + "-webkit-box-flex-group" : "<integer>", + "-webkit-box-lines" : "single | multiple", + "-webkit-box-ordinal-group" : "<integer>", + "-webkit-box-orient" : "horizontal | vertical | inline-axis | block-axis | inherit", + "-webkit-box-pack" : "start | end | center | justify", + "box-shadow" : function (expression) { + var result = false, + part; + + if (!ValidationTypes.isAny(expression, "none")) { + Validation.multiProperty("<shadow>", expression, true, Infinity); + } else { + if (expression.hasNext()) { + part = expression.next(); + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } + } + }, + "box-sizing" : "content-box | border-box | inherit", + "break-after" : "auto | always | avoid | left | right | page | column | avoid-page | avoid-column", + "break-before" : "auto | always | avoid | left | right | page | column | avoid-page | avoid-column", + "break-inside" : "auto | avoid | avoid-page | avoid-column", + + //C + "caption-side" : "top | bottom | inherit", + "clear" : "none | right | left | both | inherit", + "clip" : 1, + "color" : "<color> | inherit", + "color-profile" : 1, + "column-count" : "<integer> | auto", //http://www.w3.org/TR/css3-multicol/ + "column-fill" : "auto | balance", + "column-gap" : "<length> | normal", + "column-rule" : "<border-width> || <border-style> || <color>", + "column-rule-color" : "<color>", + "column-rule-style" : "<border-style>", + "column-rule-width" : "<border-width>", + "column-span" : "none | all", + "column-width" : "<length> | auto", + "columns" : 1, + "content" : 1, + "counter-increment" : 1, + "counter-reset" : 1, + "crop" : "<shape> | auto", + "cue" : "cue-after | cue-before | inherit", + "cue-after" : 1, + "cue-before" : 1, + "cursor" : 1, + + //D + "direction" : "ltr | rtl | inherit", + "display" : "inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | grid | inline-grid | none | inherit | -moz-box | -moz-inline-block | -moz-inline-box | -moz-inline-grid | -moz-inline-stack | -moz-inline-table | -moz-grid | -moz-grid-group | -moz-grid-line | -moz-groupbox | -moz-deck | -moz-popup | -moz-stack | -moz-marker | -webkit-box | -webkit-inline-box | -ms-flexbox | -ms-inline-flexbox | flex | -webkit-flex | inline-flex | -webkit-inline-flex", + "dominant-baseline" : 1, + "drop-initial-after-adjust" : "central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>", + "drop-initial-after-align" : "baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical", + "drop-initial-before-adjust" : "before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>", + "drop-initial-before-align" : "caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical", + "drop-initial-size" : "auto | line | <length> | <percentage>", + "drop-initial-value" : "initial | <integer>", + + //E + "elevation" : "<angle> | below | level | above | higher | lower | inherit", + "empty-cells" : "show | hide | inherit", + + //F + "filter" : 1, + "fit" : "fill | hidden | meet | slice", + "fit-position" : 1, + "flex" : "<flex>", + "flex-basis" : "<width>", + "flex-direction" : "row | row-reverse | column | column-reverse", + "flex-flow" : "<flex-direction> || <flex-wrap>", + "flex-grow" : "<number>", + "flex-shrink" : "<number>", + "flex-wrap" : "nowrap | wrap | wrap-reverse", + "-webkit-flex" : "<flex>", + "-webkit-flex-basis" : "<width>", + "-webkit-flex-direction" : "row | row-reverse | column | column-reverse", + "-webkit-flex-flow" : "<flex-direction> || <flex-wrap>", + "-webkit-flex-grow" : "<number>", + "-webkit-flex-shrink" : "<number>", + "-webkit-flex-wrap" : "nowrap | wrap | wrap-reverse", + "-ms-flex" : "<flex>", + "-ms-flex-align" : "start | end | center | stretch | baseline", + "-ms-flex-direction" : "row | row-reverse | column | column-reverse | inherit", + "-ms-flex-order" : "<number>", + "-ms-flex-pack" : "start | end | center | justify", + "-ms-flex-wrap" : "nowrap | wrap | wrap-reverse", + "float" : "left | right | none | inherit", + "float-offset" : 1, + "font" : 1, + "font-family" : 1, + "font-size" : "<absolute-size> | <relative-size> | <length> | <percentage> | inherit", + "font-size-adjust" : "<number> | none | inherit", + "font-stretch" : "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit", + "font-style" : "normal | italic | oblique | inherit", + "font-variant" : "normal | small-caps | inherit", + "font-weight" : "normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit", + + //G + "grid-cell-stacking" : "columns | rows | layer", + "grid-column" : 1, + "grid-columns" : 1, + "grid-column-align" : "start | end | center | stretch", + "grid-column-sizing" : 1, + "grid-column-span" : "<integer>", + "grid-flow" : "none | rows | columns", + "grid-layer" : "<integer>", + "grid-row" : 1, + "grid-rows" : 1, + "grid-row-align" : "start | end | center | stretch", + "grid-row-span" : "<integer>", + "grid-row-sizing" : 1, + + //H + "hanging-punctuation" : 1, + "height" : "<margin-width> | <content-sizing> | inherit", + "hyphenate-after" : "<integer> | auto", + "hyphenate-before" : "<integer> | auto", + "hyphenate-character" : "<string> | auto", + "hyphenate-lines" : "no-limit | <integer>", + "hyphenate-resource" : 1, + "hyphens" : "none | manual | auto", + + //I + "icon" : 1, + "image-orientation" : "angle | auto", + "image-rendering" : 1, + "image-resolution" : 1, + "inline-box-align" : "initial | last | <integer>", + + //J + "justify-content" : "flex-start | flex-end | center | space-between | space-around", + "-webkit-justify-content" : "flex-start | flex-end | center | space-between | space-around", + + //L + "left" : "<margin-width> | inherit", + "letter-spacing" : "<length> | normal | inherit", + "line-height" : "<number> | <length> | <percentage> | normal | inherit", + "line-break" : "auto | loose | normal | strict", + "line-stacking" : 1, + "line-stacking-ruby" : "exclude-ruby | include-ruby", + "line-stacking-shift" : "consider-shifts | disregard-shifts", + "line-stacking-strategy" : "inline-line-height | block-line-height | max-height | grid-height", + "list-style" : 1, + "list-style-image" : "<uri> | none | inherit", + "list-style-position" : "inside | outside | inherit", + "list-style-type" : "disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit", + + //M + "margin" : { multi: "<margin-width> | inherit", max: 4 }, + "margin-bottom" : "<margin-width> | inherit", + "margin-left" : "<margin-width> | inherit", + "margin-right" : "<margin-width> | inherit", + "margin-top" : "<margin-width> | inherit", + "mark" : 1, + "mark-after" : 1, + "mark-before" : 1, + "marks" : 1, + "marquee-direction" : 1, + "marquee-play-count" : 1, + "marquee-speed" : 1, + "marquee-style" : 1, + "max-height" : "<length> | <percentage> | <content-sizing> | none | inherit", + "max-width" : "<length> | <percentage> | <content-sizing> | none | inherit", + "min-height" : "<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats | inherit", + "min-width" : "<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats | inherit", + "move-to" : 1, + + //N + "nav-down" : 1, + "nav-index" : 1, + "nav-left" : 1, + "nav-right" : 1, + "nav-up" : 1, + + //O + "opacity" : "<number> | inherit", + "order" : "<integer>", + "-webkit-order" : "<integer>", + "orphans" : "<integer> | inherit", + "outline" : 1, + "outline-color" : "<color> | invert | inherit", + "outline-offset" : 1, + "outline-style" : "<border-style> | inherit", + "outline-width" : "<border-width> | inherit", + "overflow" : "visible | hidden | scroll | auto | inherit", + "overflow-style" : 1, + "overflow-wrap" : "normal | break-word", + "overflow-x" : 1, + "overflow-y" : 1, + + //P + "padding" : { multi: "<padding-width> | inherit", max: 4 }, + "padding-bottom" : "<padding-width> | inherit", + "padding-left" : "<padding-width> | inherit", + "padding-right" : "<padding-width> | inherit", + "padding-top" : "<padding-width> | inherit", + "page" : 1, + "page-break-after" : "auto | always | avoid | left | right | inherit", + "page-break-before" : "auto | always | avoid | left | right | inherit", + "page-break-inside" : "auto | avoid | inherit", + "page-policy" : 1, + "pause" : 1, + "pause-after" : 1, + "pause-before" : 1, + "perspective" : 1, + "perspective-origin" : 1, + "phonemes" : 1, + "pitch" : 1, + "pitch-range" : 1, + "play-during" : 1, + "pointer-events" : "auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit", + "position" : "static | relative | absolute | fixed | inherit", + "presentation-level" : 1, + "punctuation-trim" : 1, + + //Q + "quotes" : 1, + + //R + "rendering-intent" : 1, + "resize" : 1, + "rest" : 1, + "rest-after" : 1, + "rest-before" : 1, + "richness" : 1, + "right" : "<margin-width> | inherit", + "rotation" : 1, + "rotation-point" : 1, + "ruby-align" : 1, + "ruby-overhang" : 1, + "ruby-position" : 1, + "ruby-span" : 1, + + //S + "size" : 1, + "speak" : "normal | none | spell-out | inherit", + "speak-header" : "once | always | inherit", + "speak-numeral" : "digits | continuous | inherit", + "speak-punctuation" : "code | none | inherit", + "speech-rate" : 1, + "src" : 1, + "stress" : 1, + "string-set" : 1, + + "table-layout" : "auto | fixed | inherit", + "tab-size" : "<integer> | <length>", + "target" : 1, + "target-name" : 1, + "target-new" : 1, + "target-position" : 1, + "text-align" : "left | right | center | justify | inherit" , + "text-align-last" : 1, + "text-decoration" : 1, + "text-emphasis" : 1, + "text-height" : 1, + "text-indent" : "<length> | <percentage> | inherit", + "text-justify" : "auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida", + "text-outline" : 1, + "text-overflow" : 1, + "text-rendering" : "auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit", + "text-shadow" : 1, + "text-transform" : "capitalize | uppercase | lowercase | none | inherit", + "text-wrap" : "normal | none | avoid", + "top" : "<margin-width> | inherit", + "-ms-touch-action" : "auto | none | pan-x | pan-y", + "touch-action" : "auto | none | pan-x | pan-y", + "transform" : 1, + "transform-origin" : 1, + "transform-style" : 1, + "transition" : 1, + "transition-delay" : 1, + "transition-duration" : 1, + "transition-property" : 1, + "transition-timing-function" : 1, + + //U + "unicode-bidi" : "normal | embed | isolate | bidi-override | isolate-override | plaintext | inherit", + "user-modify" : "read-only | read-write | write-only | inherit", + "user-select" : "none | text | toggle | element | elements | all | inherit", + + //V + "vertical-align" : "auto | use-script | baseline | sub | super | top | text-top | central | middle | bottom | text-bottom | <percentage> | <length>", + "visibility" : "visible | hidden | collapse | inherit", + "voice-balance" : 1, + "voice-duration" : 1, + "voice-family" : 1, + "voice-pitch" : 1, + "voice-pitch-range" : 1, + "voice-rate" : 1, + "voice-stress" : 1, + "voice-volume" : 1, + "volume" : 1, + + //W + "white-space" : "normal | pre | nowrap | pre-wrap | pre-line | inherit | -pre-wrap | -o-pre-wrap | -moz-pre-wrap | -hp-pre-wrap", //http://perishablepress.com/wrapping-content/ + "white-space-collapse" : 1, + "widows" : "<integer> | inherit", + "width" : "<length> | <percentage> | <content-sizing> | auto | inherit", + "word-break" : "normal | keep-all | break-all", + "word-spacing" : "<length> | normal | inherit", + "word-wrap" : "normal | break-word", + "writing-mode" : "horizontal-tb | vertical-rl | vertical-lr | lr-tb | rl-tb | tb-rl | bt-rl | tb-lr | bt-lr | lr-bt | rl-bt | lr | rl | tb | inherit", + + //Z + "z-index" : "<integer> | auto | inherit", + "zoom" : "<number> | <percentage> | normal" +}; +/*global SyntaxUnit, Parser*/ +/** + * Represents a selector combinator (whitespace, +, >). + * @namespace parserlib.css + * @class PropertyName + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {String} text The text representation of the unit. + * @param {String} hack The type of IE hack applied ("*", "_", or null). + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function PropertyName(text, hack, line, col){ + + SyntaxUnit.call(this, text, line, col, Parser.PROPERTY_NAME_TYPE); + + /** + * The type of IE hack applied ("*", "_", or null). + * @type String + * @property hack + */ + this.hack = hack; + +} + +PropertyName.prototype = new SyntaxUnit(); +PropertyName.prototype.constructor = PropertyName; +PropertyName.prototype.toString = function(){ + return (this.hack ? this.hack : "") + this.text; +}; +/*global SyntaxUnit, Parser*/ +/** + * Represents a single part of a CSS property value, meaning that it represents + * just everything single part between ":" and ";". If there are multiple values + * separated by commas, this type represents just one of the values. + * @param {String[]} parts An array of value parts making up this value. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + * @namespace parserlib.css + * @class PropertyValue + * @extends parserlib.util.SyntaxUnit + * @constructor + */ +function PropertyValue(parts, line, col){ + + SyntaxUnit.call(this, parts.join(" "), line, col, Parser.PROPERTY_VALUE_TYPE); + + /** + * The parts that make up the selector. + * @type Array + * @property parts + */ + this.parts = parts; + +} + +PropertyValue.prototype = new SyntaxUnit(); +PropertyValue.prototype.constructor = PropertyValue; + +/*global SyntaxUnit, Parser*/ +/** + * A utility class that allows for easy iteration over the various parts of a + * property value. + * @param {parserlib.css.PropertyValue} value The property value to iterate over. + * @namespace parserlib.css + * @class PropertyValueIterator + * @constructor + */ +function PropertyValueIterator(value){ + + /** + * Iterator value + * @type int + * @property _i + * @private + */ + this._i = 0; + + /** + * The parts that make up the value. + * @type Array + * @property _parts + * @private + */ + this._parts = value.parts; + + /** + * Keeps track of bookmarks along the way. + * @type Array + * @property _marks + * @private + */ + this._marks = []; + + /** + * Holds the original property value. + * @type parserlib.css.PropertyValue + * @property value + */ + this.value = value; + +} + +/** + * Returns the total number of parts in the value. + * @return {int} The total number of parts in the value. + * @method count + */ +PropertyValueIterator.prototype.count = function(){ + return this._parts.length; +}; + +/** + * Indicates if the iterator is positioned at the first item. + * @return {Boolean} True if positioned at first item, false if not. + * @method isFirst + */ +PropertyValueIterator.prototype.isFirst = function(){ + return this._i === 0; +}; + +/** + * Indicates if there are more parts of the property value. + * @return {Boolean} True if there are more parts, false if not. + * @method hasNext + */ +PropertyValueIterator.prototype.hasNext = function(){ + return (this._i < this._parts.length); +}; + +/** + * Marks the current spot in the iteration so it can be restored to + * later on. + * @return {void} + * @method mark + */ +PropertyValueIterator.prototype.mark = function(){ + this._marks.push(this._i); +}; + +/** + * Returns the next part of the property value or null if there is no next + * part. Does not move the internal counter forward. + * @return {parserlib.css.PropertyValuePart} The next part of the property value or null if there is no next + * part. + * @method peek + */ +PropertyValueIterator.prototype.peek = function(count){ + return this.hasNext() ? this._parts[this._i + (count || 0)] : null; +}; + +/** + * Returns the next part of the property value or null if there is no next + * part. + * @return {parserlib.css.PropertyValuePart} The next part of the property value or null if there is no next + * part. + * @method next + */ +PropertyValueIterator.prototype.next = function(){ + return this.hasNext() ? this._parts[this._i++] : null; +}; + +/** + * Returns the previous part of the property value or null if there is no + * previous part. + * @return {parserlib.css.PropertyValuePart} The previous part of the + * property value or null if there is no next part. + * @method previous + */ +PropertyValueIterator.prototype.previous = function(){ + return this._i > 0 ? this._parts[--this._i] : null; +}; + +/** + * Restores the last saved bookmark. + * @return {void} + * @method restore + */ +PropertyValueIterator.prototype.restore = function(){ + if (this._marks.length){ + this._i = this._marks.pop(); + } +}; + +/*global SyntaxUnit, Parser, Colors*/ +/** + * Represents a single part of a CSS property value, meaning that it represents + * just one part of the data between ":" and ";". + * @param {String} text The text representation of the unit. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + * @namespace parserlib.css + * @class PropertyValuePart + * @extends parserlib.util.SyntaxUnit + * @constructor + */ +function PropertyValuePart(text, line, col){ + + SyntaxUnit.call(this, text, line, col, Parser.PROPERTY_VALUE_PART_TYPE); + + /** + * Indicates the type of value unit. + * @type String + * @property type + */ + this.type = "unknown"; + + //figure out what type of data it is + + var temp; + + //it is a measurement? + if (/^([+\-]?[\d\.]+)([a-z]+)$/i.test(text)){ //dimension + this.type = "dimension"; + this.value = +RegExp.$1; + this.units = RegExp.$2; + + //try to narrow down + switch(this.units.toLowerCase()){ + + case "em": + case "rem": + case "ex": + case "px": + case "cm": + case "mm": + case "in": + case "pt": + case "pc": + case "ch": + case "vh": + case "vw": + case "vmax": + case "vmin": + this.type = "length"; + break; + + case "deg": + case "rad": + case "grad": + this.type = "angle"; + break; + + case "ms": + case "s": + this.type = "time"; + break; + + case "hz": + case "khz": + this.type = "frequency"; + break; + + case "dpi": + case "dpcm": + this.type = "resolution"; + break; + + //default + + } + + } else if (/^([+\-]?[\d\.]+)%$/i.test(text)){ //percentage + this.type = "percentage"; + this.value = +RegExp.$1; + } else if (/^([+\-]?\d+)$/i.test(text)){ //integer + this.type = "integer"; + this.value = +RegExp.$1; + } else if (/^([+\-]?[\d\.]+)$/i.test(text)){ //number + this.type = "number"; + this.value = +RegExp.$1; + + } else if (/^#([a-f0-9]{3,6})/i.test(text)){ //hexcolor + this.type = "color"; + temp = RegExp.$1; + if (temp.length == 3){ + this.red = parseInt(temp.charAt(0)+temp.charAt(0),16); + this.green = parseInt(temp.charAt(1)+temp.charAt(1),16); + this.blue = parseInt(temp.charAt(2)+temp.charAt(2),16); + } else { + this.red = parseInt(temp.substring(0,2),16); + this.green = parseInt(temp.substring(2,4),16); + this.blue = parseInt(temp.substring(4,6),16); + } + } else if (/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i.test(text)){ //rgb() color with absolute numbers + this.type = "color"; + this.red = +RegExp.$1; + this.green = +RegExp.$2; + this.blue = +RegExp.$3; + } else if (/^rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)){ //rgb() color with percentages + this.type = "color"; + this.red = +RegExp.$1 * 255 / 100; + this.green = +RegExp.$2 * 255 / 100; + this.blue = +RegExp.$3 * 255 / 100; + } else if (/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/i.test(text)){ //rgba() color with absolute numbers + this.type = "color"; + this.red = +RegExp.$1; + this.green = +RegExp.$2; + this.blue = +RegExp.$3; + this.alpha = +RegExp.$4; + } else if (/^rgba\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)){ //rgba() color with percentages + this.type = "color"; + this.red = +RegExp.$1 * 255 / 100; + this.green = +RegExp.$2 * 255 / 100; + this.blue = +RegExp.$3 * 255 / 100; + this.alpha = +RegExp.$4; + } else if (/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)){ //hsl() + this.type = "color"; + this.hue = +RegExp.$1; + this.saturation = +RegExp.$2 / 100; + this.lightness = +RegExp.$3 / 100; + } else if (/^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)){ //hsla() color with percentages + this.type = "color"; + this.hue = +RegExp.$1; + this.saturation = +RegExp.$2 / 100; + this.lightness = +RegExp.$3 / 100; + this.alpha = +RegExp.$4; + } else if (/^url\(["']?([^\)"']+)["']?\)/i.test(text)){ //URI + this.type = "uri"; + this.uri = RegExp.$1; + } else if (/^([^\(]+)\(/i.test(text)){ + this.type = "function"; + this.name = RegExp.$1; + this.value = text; + } else if (/^["'][^"']*["']/.test(text)){ //string + this.type = "string"; + this.value = eval(text); + } else if (Colors[text.toLowerCase()]){ //named color + this.type = "color"; + temp = Colors[text.toLowerCase()].substring(1); + this.red = parseInt(temp.substring(0,2),16); + this.green = parseInt(temp.substring(2,4),16); + this.blue = parseInt(temp.substring(4,6),16); + } else if (/^[\,\/]$/.test(text)){ + this.type = "operator"; + this.value = text; + } else if (/^[a-z\-_\u0080-\uFFFF][a-z0-9\-_\u0080-\uFFFF]*$/i.test(text)){ + this.type = "identifier"; + this.value = text; + } + +} + +PropertyValuePart.prototype = new SyntaxUnit(); +PropertyValuePart.prototype.constructor = PropertyValuePart; + +/** + * Create a new syntax unit based solely on the given token. + * Convenience method for creating a new syntax unit when + * it represents a single token instead of multiple. + * @param {Object} token The token object to represent. + * @return {parserlib.css.PropertyValuePart} The object representing the token. + * @static + * @method fromToken + */ +PropertyValuePart.fromToken = function(token){ + return new PropertyValuePart(token.value, token.startLine, token.startCol); +}; +var Pseudos = { + ":first-letter": 1, + ":first-line": 1, + ":before": 1, + ":after": 1 +}; + +Pseudos.ELEMENT = 1; +Pseudos.CLASS = 2; + +Pseudos.isElement = function(pseudo){ + return pseudo.indexOf("::") === 0 || Pseudos[pseudo.toLowerCase()] == Pseudos.ELEMENT; +}; +/*global SyntaxUnit, Parser, Specificity*/ +/** + * Represents an entire single selector, including all parts but not + * including multiple selectors (those separated by commas). + * @namespace parserlib.css + * @class Selector + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {Array} parts Array of selectors parts making up this selector. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function Selector(parts, line, col){ + + SyntaxUnit.call(this, parts.join(" "), line, col, Parser.SELECTOR_TYPE); + + /** + * The parts that make up the selector. + * @type Array + * @property parts + */ + this.parts = parts; + + /** + * The specificity of the selector. + * @type parserlib.css.Specificity + * @property specificity + */ + this.specificity = Specificity.calculate(this); + +} + +Selector.prototype = new SyntaxUnit(); +Selector.prototype.constructor = Selector; + +/*global SyntaxUnit, Parser*/ +/** + * Represents a single part of a selector string, meaning a single set of + * element name and modifiers. This does not include combinators such as + * spaces, +, >, etc. + * @namespace parserlib.css + * @class SelectorPart + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {String} elementName The element name in the selector or null + * if there is no element name. + * @param {Array} modifiers Array of individual modifiers for the element. + * May be empty if there are none. + * @param {String} text The text representation of the unit. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function SelectorPart(elementName, modifiers, text, line, col){ + + SyntaxUnit.call(this, text, line, col, Parser.SELECTOR_PART_TYPE); + + /** + * The tag name of the element to which this part + * of the selector affects. + * @type String + * @property elementName + */ + this.elementName = elementName; + + /** + * The parts that come after the element name, such as class names, IDs, + * pseudo classes/elements, etc. + * @type Array + * @property modifiers + */ + this.modifiers = modifiers; + +} + +SelectorPart.prototype = new SyntaxUnit(); +SelectorPart.prototype.constructor = SelectorPart; + +/*global SyntaxUnit, Parser*/ +/** + * Represents a selector modifier string, meaning a class name, element name, + * element ID, pseudo rule, etc. + * @namespace parserlib.css + * @class SelectorSubPart + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {String} text The text representation of the unit. + * @param {String} type The type of selector modifier. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function SelectorSubPart(text, type, line, col){ + + SyntaxUnit.call(this, text, line, col, Parser.SELECTOR_SUB_PART_TYPE); + + /** + * The type of modifier. + * @type String + * @property type + */ + this.type = type; + + /** + * Some subparts have arguments, this represents them. + * @type Array + * @property args + */ + this.args = []; + +} + +SelectorSubPart.prototype = new SyntaxUnit(); +SelectorSubPart.prototype.constructor = SelectorSubPart; + +/*global Pseudos, SelectorPart*/ +/** + * Represents a selector's specificity. + * @namespace parserlib.css + * @class Specificity + * @constructor + * @param {int} a Should be 1 for inline styles, zero for stylesheet styles + * @param {int} b Number of ID selectors + * @param {int} c Number of classes and pseudo classes + * @param {int} d Number of element names and pseudo elements + */ +function Specificity(a, b, c, d){ + this.a = a; + this.b = b; + this.c = c; + this.d = d; +} + +Specificity.prototype = { + constructor: Specificity, + + /** + * Compare this specificity to another. + * @param {Specificity} other The other specificity to compare to. + * @return {int} -1 if the other specificity is larger, 1 if smaller, 0 if equal. + * @method compare + */ + compare: function(other){ + var comps = ["a", "b", "c", "d"], + i, len; + + for (i=0, len=comps.length; i < len; i++){ + if (this[comps[i]] < other[comps[i]]){ + return -1; + } else if (this[comps[i]] > other[comps[i]]){ + return 1; + } + } + + return 0; + }, + + /** + * Creates a numeric value for the specificity. + * @return {int} The numeric value for the specificity. + * @method valueOf + */ + valueOf: function(){ + return (this.a * 1000) + (this.b * 100) + (this.c * 10) + this.d; + }, + + /** + * Returns a string representation for specificity. + * @return {String} The string representation of specificity. + * @method toString + */ + toString: function(){ + return this.a + "," + this.b + "," + this.c + "," + this.d; + } + +}; + +/** + * Calculates the specificity of the given selector. + * @param {parserlib.css.Selector} The selector to calculate specificity for. + * @return {parserlib.css.Specificity} The specificity of the selector. + * @static + * @method calculate + */ +Specificity.calculate = function(selector){ + + var i, len, + part, + b=0, c=0, d=0; + + function updateValues(part){ + + var i, j, len, num, + elementName = part.elementName ? part.elementName.text : "", + modifier; + + if (elementName && elementName.charAt(elementName.length-1) != "*") { + d++; + } + + for (i=0, len=part.modifiers.length; i < len; i++){ + modifier = part.modifiers[i]; + switch(modifier.type){ + case "class": + case "attribute": + c++; + break; + + case "id": + b++; + break; + + case "pseudo": + if (Pseudos.isElement(modifier.text)){ + d++; + } else { + c++; + } + break; + + case "not": + for (j=0, num=modifier.args.length; j < num; j++){ + updateValues(modifier.args[j]); + } + } + } + } + + for (i=0, len=selector.parts.length; i < len; i++){ + part = selector.parts[i]; + + if (part instanceof SelectorPart){ + updateValues(part); + } + } + + return new Specificity(0, b, c, d); +}; +/*global Tokens, TokenStreamBase*/ + +var h = /^[0-9a-fA-F]$/, + nonascii = /^[\u0080-\uFFFF]$/, + nl = /\n|\r\n|\r|\f/; + +//----------------------------------------------------------------------------- +// Helper functions +//----------------------------------------------------------------------------- + + +function isHexDigit(c){ + return c !== null && h.test(c); +} + +function isDigit(c){ + return c !== null && /\d/.test(c); +} + +function isWhitespace(c){ + return c !== null && /\s/.test(c); +} + +function isNewLine(c){ + return c !== null && nl.test(c); +} + +function isNameStart(c){ + return c !== null && (/[a-z_\u0080-\uFFFF\\]/i.test(c)); +} + +function isNameChar(c){ + return c !== null && (isNameStart(c) || /[0-9\-\\]/.test(c)); +} + +function isIdentStart(c){ + return c !== null && (isNameStart(c) || /\-\\/.test(c)); +} + +function mix(receiver, supplier){ + for (var prop in supplier){ + if (supplier.hasOwnProperty(prop)){ + receiver[prop] = supplier[prop]; + } + } + return receiver; +} + +//----------------------------------------------------------------------------- +// CSS Token Stream +//----------------------------------------------------------------------------- + + +/** + * A token stream that produces CSS tokens. + * @param {String|Reader} input The source of text to tokenize. + * @constructor + * @class TokenStream + * @namespace parserlib.css + */ +function TokenStream(input){ + TokenStreamBase.call(this, input, Tokens); +} + +TokenStream.prototype = mix(new TokenStreamBase(), { + + /** + * Overrides the TokenStreamBase method of the same name + * to produce CSS tokens. + * @param {variant} channel The name of the channel to use + * for the next token. + * @return {Object} A token object representing the next token. + * @method _getToken + * @private + */ + _getToken: function(channel){ + + var c, + reader = this._reader, + token = null, + startLine = reader.getLine(), + startCol = reader.getCol(); + + c = reader.read(); + + + while(c){ + switch(c){ + + /* + * Potential tokens: + * - COMMENT + * - SLASH + * - CHAR + */ + case "/": + + if(reader.peek() == "*"){ + token = this.commentToken(c, startLine, startCol); + } else { + token = this.charToken(c, startLine, startCol); + } + break; + + /* + * Potential tokens: + * - DASHMATCH + * - INCLUDES + * - PREFIXMATCH + * - SUFFIXMATCH + * - SUBSTRINGMATCH + * - CHAR + */ + case "|": + case "~": + case "^": + case "$": + case "*": + if(reader.peek() == "="){ + token = this.comparisonToken(c, startLine, startCol); + } else { + token = this.charToken(c, startLine, startCol); + } + break; + + /* + * Potential tokens: + * - STRING + * - INVALID + */ + case "\"": + case "'": + token = this.stringToken(c, startLine, startCol); + break; + + /* + * Potential tokens: + * - HASH + * - CHAR + */ + case "#": + if (isNameChar(reader.peek())){ + token = this.hashToken(c, startLine, startCol); + } else { + token = this.charToken(c, startLine, startCol); + } + break; + + /* + * Potential tokens: + * - DOT + * - NUMBER + * - DIMENSION + * - PERCENTAGE + */ + case ".": + if (isDigit(reader.peek())){ + token = this.numberToken(c, startLine, startCol); + } else { + token = this.charToken(c, startLine, startCol); + } + break; + + /* + * Potential tokens: + * - CDC + * - MINUS + * - NUMBER + * - DIMENSION + * - PERCENTAGE + */ + case "-": + if (reader.peek() == "-"){ //could be closing HTML-style comment + token = this.htmlCommentEndToken(c, startLine, startCol); + } else if (isNameStart(reader.peek())){ + token = this.identOrFunctionToken(c, startLine, startCol); + } else { + token = this.charToken(c, startLine, startCol); + } + break; + + /* + * Potential tokens: + * - IMPORTANT_SYM + * - CHAR + */ + case "!": + token = this.importantToken(c, startLine, startCol); + break; + + /* + * Any at-keyword or CHAR + */ + case "@": + token = this.atRuleToken(c, startLine, startCol); + break; + + /* + * Potential tokens: + * - NOT + * - CHAR + */ + case ":": + token = this.notToken(c, startLine, startCol); + break; + + /* + * Potential tokens: + * - CDO + * - CHAR + */ + case "<": + token = this.htmlCommentStartToken(c, startLine, startCol); + break; + + /* + * Potential tokens: + * - UNICODE_RANGE + * - URL + * - CHAR + */ + case "U": + case "u": + if (reader.peek() == "+"){ + token = this.unicodeRangeToken(c, startLine, startCol); + break; + } + /* falls through */ + default: + + /* + * Potential tokens: + * - NUMBER + * - DIMENSION + * - LENGTH + * - FREQ + * - TIME + * - EMS + * - EXS + * - ANGLE + */ + if (isDigit(c)){ + token = this.numberToken(c, startLine, startCol); + } else + + /* + * Potential tokens: + * - S + */ + if (isWhitespace(c)){ + token = this.whitespaceToken(c, startLine, startCol); + } else + + /* + * Potential tokens: + * - IDENT + */ + if (isIdentStart(c)){ + token = this.identOrFunctionToken(c, startLine, startCol); + } else + + /* + * Potential tokens: + * - CHAR + * - PLUS + */ + { + token = this.charToken(c, startLine, startCol); + } + + + + + + + } + + //make sure this token is wanted + //TODO: check channel + break; + } + + if (!token && c === null){ + token = this.createToken(Tokens.EOF,null,startLine,startCol); + } + + return token; + }, + + //------------------------------------------------------------------------- + // Methods to create tokens + //------------------------------------------------------------------------- + + /** + * Produces a token based on available data and the current + * reader position information. This method is called by other + * private methods to create tokens and is never called directly. + * @param {int} tt The token type. + * @param {String} value The text value of the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @param {Object} options (Optional) Specifies a channel property + * to indicate that a different channel should be scanned + * and/or a hide property indicating that the token should + * be hidden. + * @return {Object} A token object. + * @method createToken + */ + createToken: function(tt, value, startLine, startCol, options){ + var reader = this._reader; + options = options || {}; + + return { + value: value, + type: tt, + channel: options.channel, + endChar: options.endChar, + hide: options.hide || false, + startLine: startLine, + startCol: startCol, + endLine: reader.getLine(), + endCol: reader.getCol() + }; + }, + + //------------------------------------------------------------------------- + // Methods to create specific tokens + //------------------------------------------------------------------------- + + /** + * Produces a token for any at-rule. If the at-rule is unknown, then + * the token is for a single "@" character. + * @param {String} first The first character for the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method atRuleToken + */ + atRuleToken: function(first, startLine, startCol){ + var rule = first, + reader = this._reader, + tt = Tokens.CHAR, + valid = false, + ident, + c; + + /* + * First, mark where we are. There are only four @ rules, + * so anything else is really just an invalid token. + * Basically, if this doesn't match one of the known @ + * rules, just return '@' as an unknown token and allow + * parsing to continue after that point. + */ + reader.mark(); + + //try to find the at-keyword + ident = this.readName(); + rule = first + ident; + tt = Tokens.type(rule.toLowerCase()); + + //if it's not valid, use the first character only and reset the reader + if (tt == Tokens.CHAR || tt == Tokens.UNKNOWN){ + if (rule.length > 1){ + tt = Tokens.UNKNOWN_SYM; + } else { + tt = Tokens.CHAR; + rule = first; + reader.reset(); + } + } + + return this.createToken(tt, rule, startLine, startCol); + }, + + /** + * Produces a character token based on the given character + * and location in the stream. If there's a special (non-standard) + * token name, this is used; otherwise CHAR is used. + * @param {String} c The character for the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method charToken + */ + charToken: function(c, startLine, startCol){ + var tt = Tokens.type(c); + var opts = {}; + + if (tt == -1){ + tt = Tokens.CHAR; + } else { + opts.endChar = Tokens[tt].endChar; + } + + return this.createToken(tt, c, startLine, startCol, opts); + }, + + /** + * Produces a character token based on the given character + * and location in the stream. If there's a special (non-standard) + * token name, this is used; otherwise CHAR is used. + * @param {String} first The first character for the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method commentToken + */ + commentToken: function(first, startLine, startCol){ + var reader = this._reader, + comment = this.readComment(first); + + return this.createToken(Tokens.COMMENT, comment, startLine, startCol); + }, + + /** + * Produces a comparison token based on the given character + * and location in the stream. The next character must be + * read and is already known to be an equals sign. + * @param {String} c The character for the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method comparisonToken + */ + comparisonToken: function(c, startLine, startCol){ + var reader = this._reader, + comparison = c + reader.read(), + tt = Tokens.type(comparison) || Tokens.CHAR; + + return this.createToken(tt, comparison, startLine, startCol); + }, + + /** + * Produces a hash token based on the specified information. The + * first character provided is the pound sign (#) and then this + * method reads a name afterward. + * @param {String} first The first character (#) in the hash name. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method hashToken + */ + hashToken: function(first, startLine, startCol){ + var reader = this._reader, + name = this.readName(first); + + return this.createToken(Tokens.HASH, name, startLine, startCol); + }, + + /** + * Produces a CDO or CHAR token based on the specified information. The + * first character is provided and the rest is read by the function to determine + * the correct token to create. + * @param {String} first The first character in the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method htmlCommentStartToken + */ + htmlCommentStartToken: function(first, startLine, startCol){ + var reader = this._reader, + text = first; + + reader.mark(); + text += reader.readCount(3); + + if (text == "<!--"){ + return this.createToken(Tokens.CDO, text, startLine, startCol); + } else { + reader.reset(); + return this.charToken(first, startLine, startCol); + } + }, + + /** + * Produces a CDC or CHAR token based on the specified information. The + * first character is provided and the rest is read by the function to determine + * the correct token to create. + * @param {String} first The first character in the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method htmlCommentEndToken + */ + htmlCommentEndToken: function(first, startLine, startCol){ + var reader = this._reader, + text = first; + + reader.mark(); + text += reader.readCount(2); + + if (text == "-->"){ + return this.createToken(Tokens.CDC, text, startLine, startCol); + } else { + reader.reset(); + return this.charToken(first, startLine, startCol); + } + }, + + /** + * Produces an IDENT or FUNCTION token based on the specified information. The + * first character is provided and the rest is read by the function to determine + * the correct token to create. + * @param {String} first The first character in the identifier. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method identOrFunctionToken + */ + identOrFunctionToken: function(first, startLine, startCol){ + var reader = this._reader, + ident = this.readName(first), + tt = Tokens.IDENT; + + //if there's a left paren immediately after, it's a URI or function + if (reader.peek() == "("){ + ident += reader.read(); + if (ident.toLowerCase() == "url("){ + tt = Tokens.URI; + ident = this.readURI(ident); + + //didn't find a valid URL or there's no closing paren + if (ident.toLowerCase() == "url("){ + tt = Tokens.FUNCTION; + } + } else { + tt = Tokens.FUNCTION; + } + } else if (reader.peek() == ":"){ //might be an IE function + + //IE-specific functions always being with progid: + if (ident.toLowerCase() == "progid"){ + ident += reader.readTo("("); + tt = Tokens.IE_FUNCTION; + } + } + + return this.createToken(tt, ident, startLine, startCol); + }, + + /** + * Produces an IMPORTANT_SYM or CHAR token based on the specified information. The + * first character is provided and the rest is read by the function to determine + * the correct token to create. + * @param {String} first The first character in the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method importantToken + */ + importantToken: function(first, startLine, startCol){ + var reader = this._reader, + important = first, + tt = Tokens.CHAR, + temp, + c; + + reader.mark(); + c = reader.read(); + + while(c){ + + //there can be a comment in here + if (c == "/"){ + + //if the next character isn't a star, then this isn't a valid !important token + if (reader.peek() != "*"){ + break; + } else { + temp = this.readComment(c); + if (temp === ""){ //broken! + break; + } + } + } else if (isWhitespace(c)){ + important += c + this.readWhitespace(); + } else if (/i/i.test(c)){ + temp = reader.readCount(8); + if (/mportant/i.test(temp)){ + important += c + temp; + tt = Tokens.IMPORTANT_SYM; + + } + break; //we're done + } else { + break; + } + + c = reader.read(); + } + + if (tt == Tokens.CHAR){ + reader.reset(); + return this.charToken(first, startLine, startCol); + } else { + return this.createToken(tt, important, startLine, startCol); + } + + + }, + + /** + * Produces a NOT or CHAR token based on the specified information. The + * first character is provided and the rest is read by the function to determine + * the correct token to create. + * @param {String} first The first character in the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method notToken + */ + notToken: function(first, startLine, startCol){ + var reader = this._reader, + text = first; + + reader.mark(); + text += reader.readCount(4); + + if (text.toLowerCase() == ":not("){ + return this.createToken(Tokens.NOT, text, startLine, startCol); + } else { + reader.reset(); + return this.charToken(first, startLine, startCol); + } + }, + + /** + * Produces a number token based on the given character + * and location in the stream. This may return a token of + * NUMBER, EMS, EXS, LENGTH, ANGLE, TIME, FREQ, DIMENSION, + * or PERCENTAGE. + * @param {String} first The first character for the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method numberToken + */ + numberToken: function(first, startLine, startCol){ + var reader = this._reader, + value = this.readNumber(first), + ident, + tt = Tokens.NUMBER, + c = reader.peek(); + + if (isIdentStart(c)){ + ident = this.readName(reader.read()); + value += ident; + + if (/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vmax$|^vmin$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(ident)){ + tt = Tokens.LENGTH; + } else if (/^deg|^rad$|^grad$/i.test(ident)){ + tt = Tokens.ANGLE; + } else if (/^ms$|^s$/i.test(ident)){ + tt = Tokens.TIME; + } else if (/^hz$|^khz$/i.test(ident)){ + tt = Tokens.FREQ; + } else if (/^dpi$|^dpcm$/i.test(ident)){ + tt = Tokens.RESOLUTION; + } else { + tt = Tokens.DIMENSION; + } + + } else if (c == "%"){ + value += reader.read(); + tt = Tokens.PERCENTAGE; + } + + return this.createToken(tt, value, startLine, startCol); + }, + + /** + * Produces a string token based on the given character + * and location in the stream. Since strings may be indicated + * by single or double quotes, a failure to match starting + * and ending quotes results in an INVALID token being generated. + * The first character in the string is passed in and then + * the rest are read up to and including the final quotation mark. + * @param {String} first The first character in the string. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method stringToken + */ + stringToken: function(first, startLine, startCol){ + var delim = first, + string = first, + reader = this._reader, + prev = first, + tt = Tokens.STRING, + c = reader.read(); + + while(c){ + string += c; + + //if the delimiter is found with an escapement, we're done. + if (c == delim && prev != "\\"){ + break; + } + + //if there's a newline without an escapement, it's an invalid string + if (isNewLine(reader.peek()) && c != "\\"){ + tt = Tokens.INVALID; + break; + } + + //save previous and get next + prev = c; + c = reader.read(); + } + + //if c is null, that means we're out of input and the string was never closed + if (c === null){ + tt = Tokens.INVALID; + } + + return this.createToken(tt, string, startLine, startCol); + }, + + unicodeRangeToken: function(first, startLine, startCol){ + var reader = this._reader, + value = first, + temp, + tt = Tokens.CHAR; + + //then it should be a unicode range + if (reader.peek() == "+"){ + reader.mark(); + value += reader.read(); + value += this.readUnicodeRangePart(true); + + //ensure there's an actual unicode range here + if (value.length == 2){ + reader.reset(); + } else { + + tt = Tokens.UNICODE_RANGE; + + //if there's a ? in the first part, there can't be a second part + if (value.indexOf("?") == -1){ + + if (reader.peek() == "-"){ + reader.mark(); + temp = reader.read(); + temp += this.readUnicodeRangePart(false); + + //if there's not another value, back up and just take the first + if (temp.length == 1){ + reader.reset(); + } else { + value += temp; + } + } + + } + } + } + + return this.createToken(tt, value, startLine, startCol); + }, + + /** + * Produces a S token based on the specified information. Since whitespace + * may have multiple characters, this consumes all whitespace characters + * into a single token. + * @param {String} first The first character in the token. + * @param {int} startLine The beginning line for the character. + * @param {int} startCol The beginning column for the character. + * @return {Object} A token object. + * @method whitespaceToken + */ + whitespaceToken: function(first, startLine, startCol){ + var reader = this._reader, + value = first + this.readWhitespace(); + return this.createToken(Tokens.S, value, startLine, startCol); + }, + + + + + //------------------------------------------------------------------------- + // Methods to read values from the string stream + //------------------------------------------------------------------------- + + readUnicodeRangePart: function(allowQuestionMark){ + var reader = this._reader, + part = "", + c = reader.peek(); + + //first read hex digits + while(isHexDigit(c) && part.length < 6){ + reader.read(); + part += c; + c = reader.peek(); + } + + //then read question marks if allowed + if (allowQuestionMark){ + while(c == "?" && part.length < 6){ + reader.read(); + part += c; + c = reader.peek(); + } + } + + //there can't be any other characters after this point + + return part; + }, + + readWhitespace: function(){ + var reader = this._reader, + whitespace = "", + c = reader.peek(); + + while(isWhitespace(c)){ + reader.read(); + whitespace += c; + c = reader.peek(); + } + + return whitespace; + }, + readNumber: function(first){ + var reader = this._reader, + number = first, + hasDot = (first == "."), + c = reader.peek(); + + + while(c){ + if (isDigit(c)){ + number += reader.read(); + } else if (c == "."){ + if (hasDot){ + break; + } else { + hasDot = true; + number += reader.read(); + } + } else { + break; + } + + c = reader.peek(); + } + + return number; + }, + readString: function(){ + var reader = this._reader, + delim = reader.read(), + string = delim, + prev = delim, + c = reader.peek(); + + while(c){ + c = reader.read(); + string += c; + + //if the delimiter is found with an escapement, we're done. + if (c == delim && prev != "\\"){ + break; + } + + //if there's a newline without an escapement, it's an invalid string + if (isNewLine(reader.peek()) && c != "\\"){ + string = ""; + break; + } + + //save previous and get next + prev = c; + c = reader.peek(); + } + + //if c is null, that means we're out of input and the string was never closed + if (c === null){ + string = ""; + } + + return string; + }, + readURI: function(first){ + var reader = this._reader, + uri = first, + inner = "", + c = reader.peek(); + + reader.mark(); + + //skip whitespace before + while(c && isWhitespace(c)){ + reader.read(); + c = reader.peek(); + } + + //it's a string + if (c == "'" || c == "\""){ + inner = this.readString(); + } else { + inner = this.readURL(); + } + + c = reader.peek(); + + //skip whitespace after + while(c && isWhitespace(c)){ + reader.read(); + c = reader.peek(); + } + + //if there was no inner value or the next character isn't closing paren, it's not a URI + if (inner === "" || c != ")"){ + uri = first; + reader.reset(); + } else { + uri += inner + reader.read(); + } + + return uri; + }, + readURL: function(){ + var reader = this._reader, + url = "", + c = reader.peek(); + + //TODO: Check for escape and nonascii + while (/^[!#$%&\\*-~]$/.test(c)){ + url += reader.read(); + c = reader.peek(); + } + + return url; + + }, + readName: function(first){ + var reader = this._reader, + ident = first || "", + c = reader.peek(); + + while(true){ + if (c == "\\"){ + ident += this.readEscape(reader.read()); + c = reader.peek(); + } else if(c && isNameChar(c)){ + ident += reader.read(); + c = reader.peek(); + } else { + break; + } + } + + return ident; + }, + + readEscape: function(first){ + var reader = this._reader, + cssEscape = first || "", + i = 0, + c = reader.peek(); + + if (isHexDigit(c)){ + do { + cssEscape += reader.read(); + c = reader.peek(); + } while(c && isHexDigit(c) && ++i < 6); + } + + if (cssEscape.length == 3 && /\s/.test(c) || + cssEscape.length == 7 || cssEscape.length == 1){ + reader.read(); + } else { + c = ""; + } + + return cssEscape + c; + }, + + readComment: function(first){ + var reader = this._reader, + comment = first || "", + c = reader.read(); + + if (c == "*"){ + while(c){ + comment += c; + + //look for end of comment + if (comment.length > 2 && c == "*" && reader.peek() == "/"){ + comment += reader.read(); + break; + } + + c = reader.read(); + } + + return comment; + } else { + return ""; + } + + } +}); + +var Tokens = [ + + /* + * The following token names are defined in CSS3 Grammar: http://www.w3.org/TR/css3-syntax/#lexical + */ + + //HTML-style comments + { name: "CDO"}, + { name: "CDC"}, + + //ignorables + { name: "S", whitespace: true/*, channel: "ws"*/}, + { name: "COMMENT", comment: true, hide: true, channel: "comment" }, + + //attribute equality + { name: "INCLUDES", text: "~="}, + { name: "DASHMATCH", text: "|="}, + { name: "PREFIXMATCH", text: "^="}, + { name: "SUFFIXMATCH", text: "$="}, + { name: "SUBSTRINGMATCH", text: "*="}, + + //identifier types + { name: "STRING"}, + { name: "IDENT"}, + { name: "HASH"}, + + //at-keywords + { name: "IMPORT_SYM", text: "@import"}, + { name: "PAGE_SYM", text: "@page"}, + { name: "MEDIA_SYM", text: "@media"}, + { name: "FONT_FACE_SYM", text: "@font-face"}, + { name: "CHARSET_SYM", text: "@charset"}, + { name: "NAMESPACE_SYM", text: "@namespace"}, + { name: "VIEWPORT_SYM", text: ["@viewport", "@-ms-viewport"]}, + { name: "UNKNOWN_SYM" }, + //{ name: "ATKEYWORD"}, + + //CSS3 animations + { name: "KEYFRAMES_SYM", text: [ "@keyframes", "@-webkit-keyframes", "@-moz-keyframes", "@-o-keyframes" ] }, + + //important symbol + { name: "IMPORTANT_SYM"}, + + //measurements + { name: "LENGTH"}, + { name: "ANGLE"}, + { name: "TIME"}, + { name: "FREQ"}, + { name: "DIMENSION"}, + { name: "PERCENTAGE"}, + { name: "NUMBER"}, + + //functions + { name: "URI"}, + { name: "FUNCTION"}, + + //Unicode ranges + { name: "UNICODE_RANGE"}, + + /* + * The following token names are defined in CSS3 Selectors: http://www.w3.org/TR/css3-selectors/#selector-syntax + */ + + //invalid string + { name: "INVALID"}, + + //combinators + { name: "PLUS", text: "+" }, + { name: "GREATER", text: ">"}, + { name: "COMMA", text: ","}, + { name: "TILDE", text: "~"}, + + //modifier + { name: "NOT"}, + + /* + * Defined in CSS3 Paged Media + */ + { name: "TOPLEFTCORNER_SYM", text: "@top-left-corner"}, + { name: "TOPLEFT_SYM", text: "@top-left"}, + { name: "TOPCENTER_SYM", text: "@top-center"}, + { name: "TOPRIGHT_SYM", text: "@top-right"}, + { name: "TOPRIGHTCORNER_SYM", text: "@top-right-corner"}, + { name: "BOTTOMLEFTCORNER_SYM", text: "@bottom-left-corner"}, + { name: "BOTTOMLEFT_SYM", text: "@bottom-left"}, + { name: "BOTTOMCENTER_SYM", text: "@bottom-center"}, + { name: "BOTTOMRIGHT_SYM", text: "@bottom-right"}, + { name: "BOTTOMRIGHTCORNER_SYM", text: "@bottom-right-corner"}, + { name: "LEFTTOP_SYM", text: "@left-top"}, + { name: "LEFTMIDDLE_SYM", text: "@left-middle"}, + { name: "LEFTBOTTOM_SYM", text: "@left-bottom"}, + { name: "RIGHTTOP_SYM", text: "@right-top"}, + { name: "RIGHTMIDDLE_SYM", text: "@right-middle"}, + { name: "RIGHTBOTTOM_SYM", text: "@right-bottom"}, + + /* + * The following token names are defined in CSS3 Media Queries: http://www.w3.org/TR/css3-mediaqueries/#syntax + */ + /*{ name: "MEDIA_ONLY", state: "media"}, + { name: "MEDIA_NOT", state: "media"}, + { name: "MEDIA_AND", state: "media"},*/ + { name: "RESOLUTION", state: "media"}, + + /* + * The following token names are not defined in any CSS specification but are used by the lexer. + */ + + //not a real token, but useful for stupid IE filters + { name: "IE_FUNCTION" }, + + //part of CSS3 grammar but not the Flex code + { name: "CHAR" }, + + //TODO: Needed? + //Not defined as tokens, but might as well be + { + name: "PIPE", + text: "|" + }, + { + name: "SLASH", + text: "/" + }, + { + name: "MINUS", + text: "-" + }, + { + name: "STAR", + text: "*" + }, + + { + name: "LBRACE", + endChar: "}", + text: "{" + }, + { + name: "RBRACE", + text: "}" + }, + { + name: "LBRACKET", + endChar: "]", + text: "[" + }, + { + name: "RBRACKET", + text: "]" + }, + { + name: "EQUALS", + text: "=" + }, + { + name: "COLON", + text: ":" + }, + { + name: "SEMICOLON", + text: ";" + }, + + { + name: "LPAREN", + endChar: ")", + text: "(" + }, + { + name: "RPAREN", + text: ")" + }, + { + name: "DOT", + text: "." + } +]; + +(function(){ + + var nameMap = [], + typeMap = {}; + + Tokens.UNKNOWN = -1; + Tokens.unshift({name:"EOF"}); + for (var i=0, len = Tokens.length; i < len; i++){ + nameMap.push(Tokens[i].name); + Tokens[Tokens[i].name] = i; + if (Tokens[i].text){ + if (Tokens[i].text instanceof Array){ + for (var j=0; j < Tokens[i].text.length; j++){ + typeMap[Tokens[i].text[j]] = i; + } + } else { + typeMap[Tokens[i].text] = i; + } + } + } + + Tokens.name = function(tt){ + return nameMap[tt]; + }; + + Tokens.type = function(c){ + return typeMap[c] || -1; + }; + +})(); + + + +//This file will likely change a lot! Very experimental! +/*global Properties, ValidationTypes, ValidationError, PropertyValueIterator */ +var Validation = { + + validate: function(property, value){ + + //normalize name + var name = property.toString().toLowerCase(), + parts = value.parts, + expression = new PropertyValueIterator(value), + spec = Properties[name], + part, + valid, + j, count, + msg, + types, + last, + literals, + max, multi, group; + + if (!spec) { + if (name.indexOf("-") !== 0){ //vendor prefixed are ok + throw new ValidationError("Unknown property '" + property + "'.", property.line, property.col); + } + } else if (typeof spec != "number"){ + + //initialization + if (typeof spec == "string"){ + if (spec.indexOf("||") > -1) { + this.groupProperty(spec, expression); + } else { + this.singleProperty(spec, expression, 1); + } + + } else if (spec.multi) { + this.multiProperty(spec.multi, expression, spec.comma, spec.max || Infinity); + } else if (typeof spec == "function") { + spec(expression); + } + + } + + }, + + singleProperty: function(types, expression, max, partial) { + + var result = false, + value = expression.value, + count = 0, + part; + + while (expression.hasNext() && count < max) { + result = ValidationTypes.isAny(expression, types); + if (!result) { + break; + } + count++; + } + + if (!result) { + if (expression.hasNext() && !expression.isFirst()) { + part = expression.peek(); + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } else { + throw new ValidationError("Expected (" + types + ") but found '" + value + "'.", value.line, value.col); + } + } else if (expression.hasNext()) { + part = expression.next(); + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } + + }, + + multiProperty: function (types, expression, comma, max) { + + var result = false, + value = expression.value, + count = 0, + sep = false, + part; + + while(expression.hasNext() && !result && count < max) { + if (ValidationTypes.isAny(expression, types)) { + count++; + if (!expression.hasNext()) { + result = true; + + } else if (comma) { + if (expression.peek() == ",") { + part = expression.next(); + } else { + break; + } + } + } else { + break; + + } + } + + if (!result) { + if (expression.hasNext() && !expression.isFirst()) { + part = expression.peek(); + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } else { + part = expression.previous(); + if (comma && part == ",") { + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } else { + throw new ValidationError("Expected (" + types + ") but found '" + value + "'.", value.line, value.col); + } + } + + } else if (expression.hasNext()) { + part = expression.next(); + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } + + }, + + groupProperty: function (types, expression, comma) { + + var result = false, + value = expression.value, + typeCount = types.split("||").length, + groups = { count: 0 }, + partial = false, + name, + part; + + while(expression.hasNext() && !result) { + name = ValidationTypes.isAnyOfGroup(expression, types); + if (name) { + + //no dupes + if (groups[name]) { + break; + } else { + groups[name] = 1; + groups.count++; + partial = true; + + if (groups.count == typeCount || !expression.hasNext()) { + result = true; + } + } + } else { + break; + } + } + + if (!result) { + if (partial && expression.hasNext()) { + part = expression.peek(); + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } else { + throw new ValidationError("Expected (" + types + ") but found '" + value + "'.", value.line, value.col); + } + } else if (expression.hasNext()) { + part = expression.next(); + throw new ValidationError("Expected end of value but found '" + part + "'.", part.line, part.col); + } + } + + + +}; +/** + * Type to use when a validation error occurs. + * @class ValidationError + * @namespace parserlib.util + * @constructor + * @param {String} message The error message. + * @param {int} line The line at which the error occurred. + * @param {int} col The column at which the error occurred. + */ +function ValidationError(message, line, col){ + + /** + * The column at which the error occurred. + * @type int + * @property col + */ + this.col = col; + + /** + * The line at which the error occurred. + * @type int + * @property line + */ + this.line = line; + + /** + * The text representation of the unit. + * @type String + * @property text + */ + this.message = message; + +} + +//inherit from Error +ValidationError.prototype = new Error(); +//This file will likely change a lot! Very experimental! +/*global Properties, Validation, ValidationError, PropertyValueIterator, console*/ +var ValidationTypes = { + + isLiteral: function (part, literals) { + var text = part.text.toString().toLowerCase(), + args = literals.split(" | "), + i, len, found = false; + + for (i=0,len=args.length; i < len && !found; i++){ + if (text == args[i].toLowerCase()){ + found = true; + } + } + + return found; + }, + + isSimple: function(type) { + return !!this.simple[type]; + }, + + isComplex: function(type) { + return !!this.complex[type]; + }, + + /** + * Determines if the next part(s) of the given expression + * are any of the given types. + */ + isAny: function (expression, types) { + var args = types.split(" | "), + i, len, found = false; + + for (i=0,len=args.length; i < len && !found && expression.hasNext(); i++){ + found = this.isType(expression, args[i]); + } + + return found; + }, + + /** + * Determines if the next part(s) of the given expression + * are one of a group. + */ + isAnyOfGroup: function(expression, types) { + var args = types.split(" || "), + i, len, found = false; + + for (i=0,len=args.length; i < len && !found; i++){ + found = this.isType(expression, args[i]); + } + + return found ? args[i-1] : false; + }, + + /** + * Determines if the next part(s) of the given expression + * are of a given type. + */ + isType: function (expression, type) { + var part = expression.peek(), + result = false; + + if (type.charAt(0) != "<") { + result = this.isLiteral(part, type); + if (result) { + expression.next(); + } + } else if (this.simple[type]) { + result = this.simple[type](part); + if (result) { + expression.next(); + } + } else { + result = this.complex[type](expression); + } + + return result; + }, + + + + simple: { + + "<absolute-size>": function(part){ + return ValidationTypes.isLiteral(part, "xx-small | x-small | small | medium | large | x-large | xx-large"); + }, + + "<attachment>": function(part){ + return ValidationTypes.isLiteral(part, "scroll | fixed | local"); + }, + + "<attr>": function(part){ + return part.type == "function" && part.name == "attr"; + }, + + "<bg-image>": function(part){ + return this["<image>"](part) || this["<gradient>"](part) || part == "none"; + }, + + "<gradient>": function(part) { + return part.type == "function" && /^(?:\-(?:ms|moz|o|webkit)\-)?(?:repeating\-)?(?:radial\-|linear\-)?gradient/i.test(part); + }, + + "<box>": function(part){ + return ValidationTypes.isLiteral(part, "padding-box | border-box | content-box"); + }, + + "<content>": function(part){ + return part.type == "function" && part.name == "content"; + }, + + "<relative-size>": function(part){ + return ValidationTypes.isLiteral(part, "smaller | larger"); + }, + + //any identifier + "<ident>": function(part){ + return part.type == "identifier"; + }, + + "<length>": function(part){ + if (part.type == "function" && /^(?:\-(?:ms|moz|o|webkit)\-)?calc/i.test(part)){ + return true; + }else{ + return part.type == "length" || part.type == "number" || part.type == "integer" || part == "0"; + } + }, + + "<color>": function(part){ + return part.type == "color" || part == "transparent"; + }, + + "<number>": function(part){ + return part.type == "number" || this["<integer>"](part); + }, + + "<integer>": function(part){ + return part.type == "integer"; + }, + + "<line>": function(part){ + return part.type == "integer"; + }, + + "<angle>": function(part){ + return part.type == "angle"; + }, + + "<uri>": function(part){ + return part.type == "uri"; + }, + + "<image>": function(part){ + return this["<uri>"](part); + }, + + "<percentage>": function(part){ + return part.type == "percentage" || part == "0"; + }, + + "<border-width>": function(part){ + return this["<length>"](part) || ValidationTypes.isLiteral(part, "thin | medium | thick"); + }, + + "<border-style>": function(part){ + return ValidationTypes.isLiteral(part, "none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset"); + }, + + "<content-sizing>": function(part){ // http://www.w3.org/TR/css3-sizing/#width-height-keywords + return ValidationTypes.isLiteral(part, "fill-available | -moz-available | -webkit-fill-available | max-content | -moz-max-content | -webkit-max-content | min-content | -moz-min-content | -webkit-min-content | fit-content | -moz-fit-content | -webkit-fit-content"); + }, + + "<margin-width>": function(part){ + return this["<length>"](part) || this["<percentage>"](part) || ValidationTypes.isLiteral(part, "auto"); + }, + + "<padding-width>": function(part){ + return this["<length>"](part) || this["<percentage>"](part); + }, + + "<shape>": function(part){ + return part.type == "function" && (part.name == "rect" || part.name == "inset-rect"); + }, + + "<time>": function(part) { + return part.type == "time"; + }, + + "<flex-grow>": function(part){ + return this["<number>"](part); + }, + + "<flex-shrink>": function(part){ + return this["<number>"](part); + }, + + "<width>": function(part){ + return this["<margin-width>"](part); + }, + + "<flex-basis>": function(part){ + return this["<width>"](part); + }, + + "<flex-direction>": function(part){ + return ValidationTypes.isLiteral(part, "row | row-reverse | column | column-reverse"); + }, + + "<flex-wrap>": function(part){ + return ValidationTypes.isLiteral(part, "nowrap | wrap | wrap-reverse"); + } + }, + + complex: { + + "<bg-position>": function(expression){ + var types = this, + result = false, + numeric = "<percentage> | <length>", + xDir = "left | right", + yDir = "top | bottom", + count = 0, + hasNext = function() { + return expression.hasNext() && expression.peek() != ","; + }; + + while (expression.peek(count) && expression.peek(count) != ",") { + count++; + } + +/* +<position> = [ + [ left | center | right | top | bottom | <percentage> | <length> ] +| + [ left | center | right | <percentage> | <length> ] + [ top | center | bottom | <percentage> | <length> ] +| + [ center | [ left | right ] [ <percentage> | <length> ]? ] && + [ center | [ top | bottom ] [ <percentage> | <length> ]? ] +] +*/ + + if (count < 3) { + if (ValidationTypes.isAny(expression, xDir + " | center | " + numeric)) { + result = true; + ValidationTypes.isAny(expression, yDir + " | center | " + numeric); + } else if (ValidationTypes.isAny(expression, yDir)) { + result = true; + ValidationTypes.isAny(expression, xDir + " | center"); + } + } else { + if (ValidationTypes.isAny(expression, xDir)) { + if (ValidationTypes.isAny(expression, yDir)) { + result = true; + ValidationTypes.isAny(expression, numeric); + } else if (ValidationTypes.isAny(expression, numeric)) { + if (ValidationTypes.isAny(expression, yDir)) { + result = true; + ValidationTypes.isAny(expression, numeric); + } else if (ValidationTypes.isAny(expression, "center")) { + result = true; + } + } + } else if (ValidationTypes.isAny(expression, yDir)) { + if (ValidationTypes.isAny(expression, xDir)) { + result = true; + ValidationTypes.isAny(expression, numeric); + } else if (ValidationTypes.isAny(expression, numeric)) { + if (ValidationTypes.isAny(expression, xDir)) { + result = true; + ValidationTypes.isAny(expression, numeric); + } else if (ValidationTypes.isAny(expression, "center")) { + result = true; + } + } + } else if (ValidationTypes.isAny(expression, "center")) { + if (ValidationTypes.isAny(expression, xDir + " | " + yDir)) { + result = true; + ValidationTypes.isAny(expression, numeric); + } + } + } + + return result; + }, + + "<bg-size>": function(expression){ + //<bg-size> = [ <length> | <percentage> | auto ]{1,2} | cover | contain + var types = this, + result = false, + numeric = "<percentage> | <length> | auto", + part, + i, len; + + if (ValidationTypes.isAny(expression, "cover | contain")) { + result = true; + } else if (ValidationTypes.isAny(expression, numeric)) { + result = true; + ValidationTypes.isAny(expression, numeric); + } + + return result; + }, + + "<repeat-style>": function(expression){ + //repeat-x | repeat-y | [repeat | space | round | no-repeat]{1,2} + var result = false, + values = "repeat | space | round | no-repeat", + part; + + if (expression.hasNext()){ + part = expression.next(); + + if (ValidationTypes.isLiteral(part, "repeat-x | repeat-y")) { + result = true; + } else if (ValidationTypes.isLiteral(part, values)) { + result = true; + + if (expression.hasNext() && ValidationTypes.isLiteral(expression.peek(), values)) { + expression.next(); + } + } + } + + return result; + + }, + + "<shadow>": function(expression) { + //inset? && [ <length>{2,4} && <color>? ] + var result = false, + count = 0, + inset = false, + color = false, + part; + + if (expression.hasNext()) { + + if (ValidationTypes.isAny(expression, "inset")){ + inset = true; + } + + if (ValidationTypes.isAny(expression, "<color>")) { + color = true; + } + + while (ValidationTypes.isAny(expression, "<length>") && count < 4) { + count++; + } + + + if (expression.hasNext()) { + if (!color) { + ValidationTypes.isAny(expression, "<color>"); + } + + if (!inset) { + ValidationTypes.isAny(expression, "inset"); + } + + } + + result = (count >= 2 && count <= 4); + + } + + return result; + }, + + "<x-one-radius>": function(expression) { + //[ <length> | <percentage> ] [ <length> | <percentage> ]? + var result = false, + simple = "<length> | <percentage> | inherit"; + + if (ValidationTypes.isAny(expression, simple)){ + result = true; + ValidationTypes.isAny(expression, simple); + } + + return result; + }, + + "<flex>": function(expression) { + // http://www.w3.org/TR/2014/WD-css-flexbox-1-20140325/#flex-property + // none | [ <flex-grow> <flex-shrink>? || <flex-basis> ] + // Valid syntaxes, according to https://developer.mozilla.org/en-US/docs/Web/CSS/flex#Syntax + // * none + // * <flex-grow> + // * <flex-basis> + // * <flex-grow> <flex-basis> + // * <flex-grow> <flex-shrink> + // * <flex-grow> <flex-shrink> <flex-basis> + // * inherit + var part, + result = false; + if (ValidationTypes.isAny(expression, "none | inherit")) { + result = true; + } else { + if (ValidationTypes.isType(expression, "<flex-grow>")) { + if (expression.peek()) { + if (ValidationTypes.isType(expression, "<flex-shrink>")) { + if (expression.peek()) { + result = ValidationTypes.isType(expression, "<flex-basis>"); + } else { + result = true; + } + } else if (ValidationTypes.isType(expression, "<flex-basis>")) { + result = expression.peek() === null; + } + } else { + result = true; + } + } else if (ValidationTypes.isType(expression, "<flex-basis>")) { + result = true; + } + } + + if (!result) { + // Generate a more verbose error than "Expected <flex>..." + part = expression.peek(); + throw new ValidationError("Expected (none | [ <flex-grow> <flex-shrink>? || <flex-basis> ]) but found '" + expression.value.text + "'.", part.line, part.col); + } + + return result; + } + } +}; + +parserlib.css = { +Colors :Colors, +Combinator :Combinator, +Parser :Parser, +PropertyName :PropertyName, +PropertyValue :PropertyValue, +PropertyValuePart :PropertyValuePart, +MediaFeature :MediaFeature, +MediaQuery :MediaQuery, +Selector :Selector, +SelectorPart :SelectorPart, +SelectorSubPart :SelectorSubPart, +Specificity :Specificity, +TokenStream :TokenStream, +Tokens :Tokens, +ValidationError :ValidationError +}; +})(); + +(function(){ +for(var prop in parserlib){ +exports[prop] = parserlib[prop]; +} +})(); + + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +// shim for Node's 'util' package +// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/). +var util = { + isArray: function (ar) { + return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]'); + }, + isDate: function (d) { + return typeof d === 'object' && objectToString(d) === '[object Date]'; + }, + isRegExp: function (re) { + return typeof re === 'object' && objectToString(re) === '[object RegExp]'; + }, + getRegExpFlags: function (re) { + var flags = ''; + re.global && (flags += 'g'); + re.ignoreCase && (flags += 'i'); + re.multiline && (flags += 'm'); + return flags; + } +}; + + +if (typeof module === 'object') + module.exports = clone; + +/** + * Clones (copies) an Object using deep copying. + * + * This function supports circular references by default, but if you are certain + * there are no circular references in your object, you can save some CPU time + * by calling clone(obj, false). + * + * Caution: if `circular` is false and `parent` contains circular references, + * your program may enter an infinite loop and crash. + * + * @param `parent` - the object to be cloned + * @param `circular` - set to true if the object to be cloned may contain + * circular references. (optional - true by default) + * @param `depth` - set to a number if the object is only to be cloned to + * a particular depth. (optional - defaults to Infinity) + * @param `prototype` - sets the prototype to be used when cloning an object. + * (optional - defaults to parent prototype). +*/ + +function clone(parent, circular, depth, prototype) { + // maintain two arrays for circular references, where corresponding parents + // and children have the same index + var allParents = []; + var allChildren = []; + + var useBuffer = typeof Buffer != 'undefined'; + + if (typeof circular == 'undefined') + circular = true; + + if (typeof depth == 'undefined') + depth = Infinity; + + // recurse this function so we don't reset allParents and allChildren + function _clone(parent, depth) { + // cloning null always returns null + if (parent === null) + return null; + + if (depth == 0) + return parent; + + var child; + if (typeof parent != 'object') { + return parent; + } + + if (util.isArray(parent)) { + child = []; + } else if (util.isRegExp(parent)) { + child = new RegExp(parent.source, util.getRegExpFlags(parent)); + if (parent.lastIndex) child.lastIndex = parent.lastIndex; + } else if (util.isDate(parent)) { + child = new Date(parent.getTime()); + } else if (useBuffer && Buffer.isBuffer(parent)) { + child = new Buffer(parent.length); + parent.copy(child); + return child; + } else { + if (typeof prototype == 'undefined') child = Object.create(Object.getPrototypeOf(parent)); + else child = Object.create(prototype); + } + + if (circular) { + var index = allParents.indexOf(parent); + + if (index != -1) { + return allChildren[index]; + } + allParents.push(parent); + allChildren.push(child); + } + + for (var i in parent) { + child[i] = _clone(parent[i], depth - 1); + } + + return child; + } + + return _clone(parent, depth); +} + +/** + * Simple flat clone using prototype, accepts only objects, usefull for property + * override on FLAT configuration object (no nested props). + * + * USE WITH CAUTION! This may not behave as you wish if you do not know how this + * works. + */ +clone.clonePrototype = function(parent) { + if (parent === null) + return null; + + var c = function () {}; + c.prototype = parent; + return new c(); +}; + +/** + * Main CSSLint object. + * @class CSSLint + * @static + * @extends parserlib.util.EventTarget + */ + +/* global parserlib, clone, Reporter */ +/* exported CSSLint */ + +var CSSLint = (function(){ + + var rules = [], + formatters = [], + embeddedRuleset = /\/\*csslint([^\*]*)\*\//, + api = new parserlib.util.EventTarget(); + + api.version = "@VERSION@"; + + //------------------------------------------------------------------------- + // Rule Management + //------------------------------------------------------------------------- + + /** + * Adds a new rule to the engine. + * @param {Object} rule The rule to add. + * @method addRule + */ + api.addRule = function(rule){ + rules.push(rule); + rules[rule.id] = rule; + }; + + /** + * Clears all rule from the engine. + * @method clearRules + */ + api.clearRules = function(){ + rules = []; + }; + + /** + * Returns the rule objects. + * @return An array of rule objects. + * @method getRules + */ + api.getRules = function(){ + return [].concat(rules).sort(function(a,b){ + return a.id > b.id ? 1 : 0; + }); + }; + + /** + * Returns a ruleset configuration object with all current rules. + * @return A ruleset object. + * @method getRuleset + */ + api.getRuleset = function() { + var ruleset = {}, + i = 0, + len = rules.length; + + while (i < len){ + ruleset[rules[i++].id] = 1; //by default, everything is a warning + } + + return ruleset; + }; + + /** + * Returns a ruleset object based on embedded rules. + * @param {String} text A string of css containing embedded rules. + * @param {Object} ruleset A ruleset object to modify. + * @return {Object} A ruleset object. + * @method getEmbeddedRuleset + */ + function applyEmbeddedRuleset(text, ruleset){ + var valueMap, + embedded = text && text.match(embeddedRuleset), + rules = embedded && embedded[1]; + + if (rules) { + valueMap = { + "true": 2, // true is error + "": 1, // blank is warning + "false": 0, // false is ignore + + "2": 2, // explicit error + "1": 1, // explicit warning + "0": 0 // explicit ignore + }; + + rules.toLowerCase().split(",").forEach(function(rule){ + var pair = rule.split(":"), + property = pair[0] || "", + value = pair[1] || ""; + + ruleset[property.trim()] = valueMap[value.trim()]; + }); + } + + return ruleset; + } + + //------------------------------------------------------------------------- + // Formatters + //------------------------------------------------------------------------- + + /** + * Adds a new formatter to the engine. + * @param {Object} formatter The formatter to add. + * @method addFormatter + */ + api.addFormatter = function(formatter) { + // formatters.push(formatter); + formatters[formatter.id] = formatter; + }; + + /** + * Retrieves a formatter for use. + * @param {String} formatId The name of the format to retrieve. + * @return {Object} The formatter or undefined. + * @method getFormatter + */ + api.getFormatter = function(formatId){ + return formatters[formatId]; + }; + + /** + * Formats the results in a particular format for a single file. + * @param {Object} result The results returned from CSSLint.verify(). + * @param {String} filename The filename for which the results apply. + * @param {String} formatId The name of the formatter to use. + * @param {Object} options (Optional) for special output handling. + * @return {String} A formatted string for the results. + * @method format + */ + api.format = function(results, filename, formatId, options) { + var formatter = this.getFormatter(formatId), + result = null; + + if (formatter){ + result = formatter.startFormat(); + result += formatter.formatResults(results, filename, options || {}); + result += formatter.endFormat(); + } + + return result; + }; + + /** + * Indicates if the given format is supported. + * @param {String} formatId The ID of the format to check. + * @return {Boolean} True if the format exists, false if not. + * @method hasFormat + */ + api.hasFormat = function(formatId){ + return formatters.hasOwnProperty(formatId); + }; + + //------------------------------------------------------------------------- + // Verification + //------------------------------------------------------------------------- + + /** + * Starts the verification process for the given CSS text. + * @param {String} text The CSS text to verify. + * @param {Object} ruleset (Optional) List of rules to apply. If null, then + * all rules are used. If a rule has a value of 1 then it's a warning, + * a value of 2 means it's an error. + * @return {Object} Results of the verification. + * @method verify + */ + api.verify = function(text, ruleset){ + + var i = 0, + reporter, + lines, + report, + parser = new parserlib.css.Parser({ starHack: true, ieFilters: true, + underscoreHack: true, strict: false }); + + // normalize line endings + lines = text.replace(/\n\r?/g, "$split$").split("$split$"); + + if (!ruleset){ + ruleset = this.getRuleset(); + } + + if (embeddedRuleset.test(text)){ + //defensively copy so that caller's version does not get modified + ruleset = clone(ruleset); + ruleset = applyEmbeddedRuleset(text, ruleset); + } + + reporter = new Reporter(lines, ruleset); + + ruleset.errors = 2; //always report parsing errors as errors + for (i in ruleset){ + if(ruleset.hasOwnProperty(i) && ruleset[i]){ + if (rules[i]){ + rules[i].init(parser, reporter); + } + } + } + + + //capture most horrible error type + try { + parser.parse(text); + } catch (ex) { + reporter.error("Fatal error, cannot continue: " + ex.message, ex.line, ex.col, {}); + } + + report = { + messages : reporter.messages, + stats : reporter.stats, + ruleset : reporter.ruleset + }; + + //sort by line numbers, rollups at the bottom + report.messages.sort(function (a, b){ + if (a.rollup && !b.rollup){ + return 1; + } else if (!a.rollup && b.rollup){ + return -1; + } else { + return a.line - b.line; + } + }); + + return report; + }; + + //------------------------------------------------------------------------- + // Publish the API + //------------------------------------------------------------------------- + + return api; + +})(); + +/** + * An instance of Report is used to report results of the + * verification back to the main API. + * @class Reporter + * @constructor + * @param {String[]} lines The text lines of the source. + * @param {Object} ruleset The set of rules to work with, including if + * they are errors or warnings. + */ +function Reporter(lines, ruleset){ + + /** + * List of messages being reported. + * @property messages + * @type String[] + */ + this.messages = []; + + /** + * List of statistics being reported. + * @property stats + * @type String[] + */ + this.stats = []; + + /** + * Lines of code being reported on. Used to provide contextual information + * for messages. + * @property lines + * @type String[] + */ + this.lines = lines; + + /** + * Information about the rules. Used to determine whether an issue is an + * error or warning. + * @property ruleset + * @type Object + */ + this.ruleset = ruleset; +} + +Reporter.prototype = { + + //restore constructor + constructor: Reporter, + + /** + * Report an error. + * @param {String} message The message to store. + * @param {int} line The line number. + * @param {int} col The column number. + * @param {Object} rule The rule this message relates to. + * @method error + */ + error: function(message, line, col, rule){ + this.messages.push({ + type : "error", + line : line, + col : col, + message : message, + evidence: this.lines[line-1], + rule : rule || {} + }); + }, + + /** + * Report an warning. + * @param {String} message The message to store. + * @param {int} line The line number. + * @param {int} col The column number. + * @param {Object} rule The rule this message relates to. + * @method warn + * @deprecated Use report instead. + */ + warn: function(message, line, col, rule){ + this.report(message, line, col, rule); + }, + + /** + * Report an issue. + * @param {String} message The message to store. + * @param {int} line The line number. + * @param {int} col The column number. + * @param {Object} rule The rule this message relates to. + * @method report + */ + report: function(message, line, col, rule){ + this.messages.push({ + type : this.ruleset[rule.id] === 2 ? "error" : "warning", + line : line, + col : col, + message : message, + evidence: this.lines[line-1], + rule : rule + }); + }, + + /** + * Report some informational text. + * @param {String} message The message to store. + * @param {int} line The line number. + * @param {int} col The column number. + * @param {Object} rule The rule this message relates to. + * @method info + */ + info: function(message, line, col, rule){ + this.messages.push({ + type : "info", + line : line, + col : col, + message : message, + evidence: this.lines[line-1], + rule : rule + }); + }, + + /** + * Report some rollup error information. + * @param {String} message The message to store. + * @param {Object} rule The rule this message relates to. + * @method rollupError + */ + rollupError: function(message, rule){ + this.messages.push({ + type : "error", + rollup : true, + message : message, + rule : rule + }); + }, + + /** + * Report some rollup warning information. + * @param {String} message The message to store. + * @param {Object} rule The rule this message relates to. + * @method rollupWarn + */ + rollupWarn: function(message, rule){ + this.messages.push({ + type : "warning", + rollup : true, + message : message, + rule : rule + }); + }, + + /** + * Report a statistic. + * @param {String} name The name of the stat to store. + * @param {Variant} value The value of the stat. + * @method stat + */ + stat: function(name, value){ + this.stats[name] = value; + } +}; + +//expose for testing purposes +CSSLint._Reporter = Reporter; + +/* + * Utility functions that make life easier. + */ +CSSLint.Util = { + /* + * Adds all properties from supplier onto receiver, + * overwriting if the same name already exists on + * reciever. + * @param {Object} The object to receive the properties. + * @param {Object} The object to provide the properties. + * @return {Object} The receiver + */ + mix: function(receiver, supplier){ + var prop; + + for (prop in supplier){ + if (supplier.hasOwnProperty(prop)){ + receiver[prop] = supplier[prop]; + } + } + + return prop; + }, + + /* + * Polyfill for array indexOf() method. + * @param {Array} values The array to search. + * @param {Variant} value The value to search for. + * @return {int} The index of the value if found, -1 if not. + */ + indexOf: function(values, value){ + if (values.indexOf){ + return values.indexOf(value); + } else { + for (var i=0, len=values.length; i < len; i++){ + if (values[i] === value){ + return i; + } + } + return -1; + } + }, + + /* + * Polyfill for array forEach() method. + * @param {Array} values The array to operate on. + * @param {Function} func The function to call on each item. + * @return {void} + */ + forEach: function(values, func) { + if (values.forEach){ + return values.forEach(func); + } else { + for (var i=0, len=values.length; i < len; i++){ + func(values[i], i, values); + } + } + } +}; + +/* + * Rule: Don't use adjoining classes (.foo.bar). + */ + +CSSLint.addRule({ + + //rule information + id: "adjoining-classes", + name: "Disallow adjoining classes", + desc: "Don't use adjoining classes.", + browsers: "IE6", + + //initialization + init: function(parser, reporter){ + var rule = this; + parser.addListener("startrule", function(event){ + var selectors = event.selectors, + selector, + part, + modifier, + classCount, + i, j, k; + + for (i=0; i < selectors.length; i++){ + selector = selectors[i]; + for (j=0; j < selector.parts.length; j++){ + part = selector.parts[j]; + if (part.type === parser.SELECTOR_PART_TYPE){ + classCount = 0; + for (k=0; k < part.modifiers.length; k++){ + modifier = part.modifiers[k]; + if (modifier.type === "class"){ + classCount++; + } + if (classCount > 1){ + reporter.report("Don't use adjoining classes.", part.line, part.col, rule); + } + } + } + } + } + }); + } + +}); + +/* + * Rule: Don't use width or height when using padding or border. + */ +CSSLint.addRule({ + + //rule information + id: "box-model", + name: "Beware of broken box size", + desc: "Don't use width or height when using padding or border.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + widthProperties = { + border: 1, + "border-left": 1, + "border-right": 1, + padding: 1, + "padding-left": 1, + "padding-right": 1 + }, + heightProperties = { + border: 1, + "border-bottom": 1, + "border-top": 1, + padding: 1, + "padding-bottom": 1, + "padding-top": 1 + }, + properties, + boxSizing = false; + + function startRule(){ + properties = {}; + boxSizing = false; + } + + function endRule(){ + var prop, value; + + if (!boxSizing) { + if (properties.height){ + for (prop in heightProperties){ + if (heightProperties.hasOwnProperty(prop) && properties[prop]){ + value = properties[prop].value; + //special case for padding + if (!(prop === "padding" && value.parts.length === 2 && value.parts[0].value === 0)){ + reporter.report("Using height with " + prop + " can sometimes make elements larger than you expect.", properties[prop].line, properties[prop].col, rule); + } + } + } + } + + if (properties.width){ + for (prop in widthProperties){ + if (widthProperties.hasOwnProperty(prop) && properties[prop]){ + value = properties[prop].value; + + if (!(prop === "padding" && value.parts.length === 2 && value.parts[1].value === 0)){ + reporter.report("Using width with " + prop + " can sometimes make elements larger than you expect.", properties[prop].line, properties[prop].col, rule); + } + } + } + } + } + } + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + parser.addListener("startpage", startRule); + parser.addListener("startpagemargin", startRule); + parser.addListener("startkeyframerule", startRule); + + parser.addListener("property", function(event){ + var name = event.property.text.toLowerCase(); + + if (heightProperties[name] || widthProperties[name]){ + if (!/^0\S*$/.test(event.value) && !(name === "border" && event.value.toString() === "none")){ + properties[name] = { line: event.property.line, col: event.property.col, value: event.value }; + } + } else { + if (/^(width|height)/i.test(name) && /^(length|percentage)/.test(event.value.parts[0].type)){ + properties[name] = 1; + } else if (name === "box-sizing") { + boxSizing = true; + } + } + + }); + + parser.addListener("endrule", endRule); + parser.addListener("endfontface", endRule); + parser.addListener("endpage", endRule); + parser.addListener("endpagemargin", endRule); + parser.addListener("endkeyframerule", endRule); + } + +}); + +/* + * Rule: box-sizing doesn't work in IE6 and IE7. + */ + +CSSLint.addRule({ + + //rule information + id: "box-sizing", + name: "Disallow use of box-sizing", + desc: "The box-sizing properties isn't supported in IE6 and IE7.", + browsers: "IE6, IE7", + tags: ["Compatibility"], + + //initialization + init: function(parser, reporter){ + var rule = this; + + parser.addListener("property", function(event){ + var name = event.property.text.toLowerCase(); + + if (name === "box-sizing"){ + reporter.report("The box-sizing property isn't supported in IE6 and IE7.", event.line, event.col, rule); + } + }); + } + +}); + +/* + * Rule: Use the bulletproof @font-face syntax to avoid 404's in old IE + * (http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax) + */ + +CSSLint.addRule({ + + //rule information + id: "bulletproof-font-face", + name: "Use the bulletproof @font-face syntax", + desc: "Use the bulletproof @font-face syntax to avoid 404's in old IE (http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax).", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + fontFaceRule = false, + firstSrc = true, + ruleFailed = false, + line, col; + + // Mark the start of a @font-face declaration so we only test properties inside it + parser.addListener("startfontface", function(){ + fontFaceRule = true; + }); + + parser.addListener("property", function(event){ + // If we aren't inside an @font-face declaration then just return + if (!fontFaceRule) { + return; + } + + var propertyName = event.property.toString().toLowerCase(), + value = event.value.toString(); + + // Set the line and col numbers for use in the endfontface listener + line = event.line; + col = event.col; + + // This is the property that we care about, we can ignore the rest + if (propertyName === "src") { + var regex = /^\s?url\(['"].+\.eot\?.*['"]\)\s*format\(['"]embedded-opentype['"]\).*$/i; + + // We need to handle the advanced syntax with two src properties + if (!value.match(regex) && firstSrc) { + ruleFailed = true; + firstSrc = false; + } else if (value.match(regex) && !firstSrc) { + ruleFailed = false; + } + } + + + }); + + // Back to normal rules that we don't need to test + parser.addListener("endfontface", function(){ + fontFaceRule = false; + + if (ruleFailed) { + reporter.report("@font-face declaration doesn't follow the fontspring bulletproof syntax.", line, col, rule); + } + }); + } +}); + +/* + * Rule: Include all compatible vendor prefixes to reach a wider + * range of users. + */ + +CSSLint.addRule({ + + //rule information + id: "compatible-vendor-prefixes", + name: "Require compatible vendor prefixes", + desc: "Include all compatible vendor prefixes to reach a wider range of users.", + browsers: "All", + + //initialization + init: function (parser, reporter) { + var rule = this, + compatiblePrefixes, + properties, + prop, + variations, + prefixed, + i, + len, + inKeyFrame = false, + arrayPush = Array.prototype.push, + applyTo = []; + + // See http://peter.sh/experiments/vendor-prefixed-css-property-overview/ for details + compatiblePrefixes = { + "animation" : "webkit moz", + "animation-delay" : "webkit moz", + "animation-direction" : "webkit moz", + "animation-duration" : "webkit moz", + "animation-fill-mode" : "webkit moz", + "animation-iteration-count" : "webkit moz", + "animation-name" : "webkit moz", + "animation-play-state" : "webkit moz", + "animation-timing-function" : "webkit moz", + "appearance" : "webkit moz", + "border-end" : "webkit moz", + "border-end-color" : "webkit moz", + "border-end-style" : "webkit moz", + "border-end-width" : "webkit moz", + "border-image" : "webkit moz o", + "border-radius" : "webkit", + "border-start" : "webkit moz", + "border-start-color" : "webkit moz", + "border-start-style" : "webkit moz", + "border-start-width" : "webkit moz", + "box-align" : "webkit moz ms", + "box-direction" : "webkit moz ms", + "box-flex" : "webkit moz ms", + "box-lines" : "webkit ms", + "box-ordinal-group" : "webkit moz ms", + "box-orient" : "webkit moz ms", + "box-pack" : "webkit moz ms", + "box-sizing" : "webkit moz", + "box-shadow" : "webkit moz", + "column-count" : "webkit moz ms", + "column-gap" : "webkit moz ms", + "column-rule" : "webkit moz ms", + "column-rule-color" : "webkit moz ms", + "column-rule-style" : "webkit moz ms", + "column-rule-width" : "webkit moz ms", + "column-width" : "webkit moz ms", + "hyphens" : "epub moz", + "line-break" : "webkit ms", + "margin-end" : "webkit moz", + "margin-start" : "webkit moz", + "marquee-speed" : "webkit wap", + "marquee-style" : "webkit wap", + "padding-end" : "webkit moz", + "padding-start" : "webkit moz", + "tab-size" : "moz o", + "text-size-adjust" : "webkit ms", + "transform" : "webkit moz ms o", + "transform-origin" : "webkit moz ms o", + "transition" : "webkit moz o", + "transition-delay" : "webkit moz o", + "transition-duration" : "webkit moz o", + "transition-property" : "webkit moz o", + "transition-timing-function" : "webkit moz o", + "user-modify" : "webkit moz", + "user-select" : "webkit moz ms", + "word-break" : "epub ms", + "writing-mode" : "epub ms" + }; + + + for (prop in compatiblePrefixes) { + if (compatiblePrefixes.hasOwnProperty(prop)) { + variations = []; + prefixed = compatiblePrefixes[prop].split(" "); + for (i = 0, len = prefixed.length; i < len; i++) { + variations.push("-" + prefixed[i] + "-" + prop); + } + compatiblePrefixes[prop] = variations; + arrayPush.apply(applyTo, variations); + } + } + + parser.addListener("startrule", function () { + properties = []; + }); + + parser.addListener("startkeyframes", function (event) { + inKeyFrame = event.prefix || true; + }); + + parser.addListener("endkeyframes", function () { + inKeyFrame = false; + }); + + parser.addListener("property", function (event) { + var name = event.property; + if (CSSLint.Util.indexOf(applyTo, name.text) > -1) { + + // e.g., -moz-transform is okay to be alone in @-moz-keyframes + if (!inKeyFrame || typeof inKeyFrame !== "string" || + name.text.indexOf("-" + inKeyFrame + "-") !== 0) { + properties.push(name); + } + } + }); + + parser.addListener("endrule", function () { + if (!properties.length) { + return; + } + + var propertyGroups = {}, + i, + len, + name, + prop, + variations, + value, + full, + actual, + item, + propertiesSpecified; + + for (i = 0, len = properties.length; i < len; i++) { + name = properties[i]; + + for (prop in compatiblePrefixes) { + if (compatiblePrefixes.hasOwnProperty(prop)) { + variations = compatiblePrefixes[prop]; + if (CSSLint.Util.indexOf(variations, name.text) > -1) { + if (!propertyGroups[prop]) { + propertyGroups[prop] = { + full : variations.slice(0), + actual : [], + actualNodes: [] + }; + } + if (CSSLint.Util.indexOf(propertyGroups[prop].actual, name.text) === -1) { + propertyGroups[prop].actual.push(name.text); + propertyGroups[prop].actualNodes.push(name); + } + } + } + } + } + + for (prop in propertyGroups) { + if (propertyGroups.hasOwnProperty(prop)) { + value = propertyGroups[prop]; + full = value.full; + actual = value.actual; + + if (full.length > actual.length) { + for (i = 0, len = full.length; i < len; i++) { + item = full[i]; + if (CSSLint.Util.indexOf(actual, item) === -1) { + propertiesSpecified = (actual.length === 1) ? actual[0] : (actual.length === 2) ? actual.join(" and ") : actual.join(", "); + reporter.report("The property " + item + " is compatible with " + propertiesSpecified + " and should be included as well.", value.actualNodes[0].line, value.actualNodes[0].col, rule); + } + } + + } + } + } + }); + } +}); + +/* + * Rule: Certain properties don't play well with certain display values. + * - float should not be used with inline-block + * - height, width, margin-top, margin-bottom, float should not be used with inline + * - vertical-align should not be used with block + * - margin, float should not be used with table-* + */ + +CSSLint.addRule({ + + //rule information + id: "display-property-grouping", + name: "Require properties appropriate for display", + desc: "Certain properties shouldn't be used with certain display property values.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + var propertiesToCheck = { + display: 1, + "float": "none", + height: 1, + width: 1, + margin: 1, + "margin-left": 1, + "margin-right": 1, + "margin-bottom": 1, + "margin-top": 1, + padding: 1, + "padding-left": 1, + "padding-right": 1, + "padding-bottom": 1, + "padding-top": 1, + "vertical-align": 1 + }, + properties; + + function reportProperty(name, display, msg){ + if (properties[name]){ + if (typeof propertiesToCheck[name] !== "string" || properties[name].value.toLowerCase() !== propertiesToCheck[name]){ + reporter.report(msg || name + " can't be used with display: " + display + ".", properties[name].line, properties[name].col, rule); + } + } + } + + function startRule(){ + properties = {}; + } + + function endRule(){ + + var display = properties.display ? properties.display.value : null; + if (display){ + switch(display){ + + case "inline": + //height, width, margin-top, margin-bottom, float should not be used with inline + reportProperty("height", display); + reportProperty("width", display); + reportProperty("margin", display); + reportProperty("margin-top", display); + reportProperty("margin-bottom", display); + reportProperty("float", display, "display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug)."); + break; + + case "block": + //vertical-align should not be used with block + reportProperty("vertical-align", display); + break; + + case "inline-block": + //float should not be used with inline-block + reportProperty("float", display); + break; + + default: + //margin, float should not be used with table + if (display.indexOf("table-") === 0){ + reportProperty("margin", display); + reportProperty("margin-left", display); + reportProperty("margin-right", display); + reportProperty("margin-top", display); + reportProperty("margin-bottom", display); + reportProperty("float", display); + } + + //otherwise do nothing + } + } + + } + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + parser.addListener("startkeyframerule", startRule); + parser.addListener("startpagemargin", startRule); + parser.addListener("startpage", startRule); + + parser.addListener("property", function(event){ + var name = event.property.text.toLowerCase(); + + if (propertiesToCheck[name]){ + properties[name] = { value: event.value.text, line: event.property.line, col: event.property.col }; + } + }); + + parser.addListener("endrule", endRule); + parser.addListener("endfontface", endRule); + parser.addListener("endkeyframerule", endRule); + parser.addListener("endpagemargin", endRule); + parser.addListener("endpage", endRule); + + } + +}); + +/* + * Rule: Disallow duplicate background-images (using url). + */ + +CSSLint.addRule({ + + //rule information + id: "duplicate-background-images", + name: "Disallow duplicate background images", + desc: "Every background-image should be unique. Use a common class for e.g. sprites.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + stack = {}; + + parser.addListener("property", function(event){ + var name = event.property.text, + value = event.value, + i, len; + + if (name.match(/background/i)) { + for (i=0, len=value.parts.length; i < len; i++) { + if (value.parts[i].type === "uri") { + if (typeof stack[value.parts[i].uri] === "undefined") { + stack[value.parts[i].uri] = event; + } + else { + reporter.report("Background image '" + value.parts[i].uri + "' was used multiple times, first declared at line " + stack[value.parts[i].uri].line + ", col " + stack[value.parts[i].uri].col + ".", event.line, event.col, rule); + } + } + } + } + }); + } +}); + +/* + * Rule: Duplicate properties must appear one after the other. If an already-defined + * property appears somewhere else in the rule, then it's likely an error. + */ + +CSSLint.addRule({ + + //rule information + id: "duplicate-properties", + name: "Disallow duplicate properties", + desc: "Duplicate properties must appear one after the other.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + properties, + lastProperty; + + function startRule(){ + properties = {}; + } + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + parser.addListener("startpage", startRule); + parser.addListener("startpagemargin", startRule); + parser.addListener("startkeyframerule", startRule); + + parser.addListener("property", function(event){ + var property = event.property, + name = property.text.toLowerCase(); + + if (properties[name] && (lastProperty !== name || properties[name] === event.value.text)){ + reporter.report("Duplicate property '" + event.property + "' found.", event.line, event.col, rule); + } + + properties[name] = event.value.text; + lastProperty = name; + + }); + + + } + +}); + +/* + * Rule: Style rules without any properties defined should be removed. + */ + +CSSLint.addRule({ + + //rule information + id: "empty-rules", + name: "Disallow empty rules", + desc: "Rules without any properties specified should be removed.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + count = 0; + + parser.addListener("startrule", function(){ + count=0; + }); + + parser.addListener("property", function(){ + count++; + }); + + parser.addListener("endrule", function(event){ + var selectors = event.selectors; + if (count === 0){ + reporter.report("Rule is empty.", selectors[0].line, selectors[0].col, rule); + } + }); + } + +}); + +/* + * Rule: There should be no syntax errors. (Duh.) + */ + +CSSLint.addRule({ + + //rule information + id: "errors", + name: "Parsing Errors", + desc: "This rule looks for recoverable syntax errors.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + parser.addListener("error", function(event){ + reporter.error(event.message, event.line, event.col, rule); + }); + + } + +}); + +CSSLint.addRule({ + + //rule information + id: "fallback-colors", + name: "Require fallback colors", + desc: "For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color.", + browsers: "IE6,IE7,IE8", + + //initialization + init: function(parser, reporter){ + var rule = this, + lastProperty, + propertiesToCheck = { + color: 1, + background: 1, + "border-color": 1, + "border-top-color": 1, + "border-right-color": 1, + "border-bottom-color": 1, + "border-left-color": 1, + border: 1, + "border-top": 1, + "border-right": 1, + "border-bottom": 1, + "border-left": 1, + "background-color": 1 + }, + properties; + + function startRule(){ + properties = {}; + lastProperty = null; + } + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + parser.addListener("startpage", startRule); + parser.addListener("startpagemargin", startRule); + parser.addListener("startkeyframerule", startRule); + + parser.addListener("property", function(event){ + var property = event.property, + name = property.text.toLowerCase(), + parts = event.value.parts, + i = 0, + colorType = "", + len = parts.length; + + if(propertiesToCheck[name]){ + while(i < len){ + if (parts[i].type === "color"){ + if ("alpha" in parts[i] || "hue" in parts[i]){ + + if (/([^\)]+)\(/.test(parts[i])){ + colorType = RegExp.$1.toUpperCase(); + } + + if (!lastProperty || (lastProperty.property.text.toLowerCase() !== name || lastProperty.colorType !== "compat")){ + reporter.report("Fallback " + name + " (hex or RGB) should precede " + colorType + " " + name + ".", event.line, event.col, rule); + } + } else { + event.colorType = "compat"; + } + } + + i++; + } + } + + lastProperty = event; + }); + + } + +}); + +/* + * Rule: You shouldn't use more than 10 floats. If you do, there's probably + * room for some abstraction. + */ + +CSSLint.addRule({ + + //rule information + id: "floats", + name: "Disallow too many floats", + desc: "This rule tests if the float property is used too many times", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + var count = 0; + + //count how many times "float" is used + parser.addListener("property", function(event){ + if (event.property.text.toLowerCase() === "float" && + event.value.text.toLowerCase() !== "none"){ + count++; + } + }); + + //report the results + parser.addListener("endstylesheet", function(){ + reporter.stat("floats", count); + if (count >= 10){ + reporter.rollupWarn("Too many floats (" + count + "), you're probably using them for layout. Consider using a grid system instead.", rule); + } + }); + } + +}); + +/* + * Rule: Avoid too many @font-face declarations in the same stylesheet. + */ + +CSSLint.addRule({ + + //rule information + id: "font-faces", + name: "Don't use too many web fonts", + desc: "Too many different web fonts in the same stylesheet.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + count = 0; + + + parser.addListener("startfontface", function(){ + count++; + }); + + parser.addListener("endstylesheet", function(){ + if (count > 5){ + reporter.rollupWarn("Too many @font-face declarations (" + count + ").", rule); + } + }); + } + +}); + +/* + * Rule: You shouldn't need more than 9 font-size declarations. + */ + +CSSLint.addRule({ + + //rule information + id: "font-sizes", + name: "Disallow too many font sizes", + desc: "Checks the number of font-size declarations.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + count = 0; + + //check for use of "font-size" + parser.addListener("property", function(event){ + if (event.property.toString() === "font-size"){ + count++; + } + }); + + //report the results + parser.addListener("endstylesheet", function(){ + reporter.stat("font-sizes", count); + if (count >= 10){ + reporter.rollupWarn("Too many font-size declarations (" + count + "), abstraction needed.", rule); + } + }); + } + +}); + +/* + * Rule: When using a vendor-prefixed gradient, make sure to use them all. + */ + +CSSLint.addRule({ + + //rule information + id: "gradients", + name: "Require all gradient definitions", + desc: "When using a vendor-prefixed gradient, make sure to use them all.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + gradients; + + parser.addListener("startrule", function(){ + gradients = { + moz: 0, + webkit: 0, + oldWebkit: 0, + o: 0 + }; + }); + + parser.addListener("property", function(event){ + + if (/\-(moz|o|webkit)(?:\-(?:linear|radial))\-gradient/i.test(event.value)){ + gradients[RegExp.$1] = 1; + } else if (/\-webkit\-gradient/i.test(event.value)){ + gradients.oldWebkit = 1; + } + + }); + + parser.addListener("endrule", function(event){ + var missing = []; + + if (!gradients.moz){ + missing.push("Firefox 3.6+"); + } + + if (!gradients.webkit){ + missing.push("Webkit (Safari 5+, Chrome)"); + } + + if (!gradients.oldWebkit){ + missing.push("Old Webkit (Safari 4+, Chrome)"); + } + + if (!gradients.o){ + missing.push("Opera 11.1+"); + } + + if (missing.length && missing.length < 4){ + reporter.report("Missing vendor-prefixed CSS gradients for " + missing.join(", ") + ".", event.selectors[0].line, event.selectors[0].col, rule); + } + + }); + + } + +}); + +/* + * Rule: Don't use IDs for selectors. + */ + +CSSLint.addRule({ + + //rule information + id: "ids", + name: "Disallow IDs in selectors", + desc: "Selectors should not contain IDs.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + parser.addListener("startrule", function(event){ + var selectors = event.selectors, + selector, + part, + modifier, + idCount, + i, j, k; + + for (i=0; i < selectors.length; i++){ + selector = selectors[i]; + idCount = 0; + + for (j=0; j < selector.parts.length; j++){ + part = selector.parts[j]; + if (part.type === parser.SELECTOR_PART_TYPE){ + for (k=0; k < part.modifiers.length; k++){ + modifier = part.modifiers[k]; + if (modifier.type === "id"){ + idCount++; + } + } + } + } + + if (idCount === 1){ + reporter.report("Don't use IDs in selectors.", selector.line, selector.col, rule); + } else if (idCount > 1){ + reporter.report(idCount + " IDs in the selector, really?", selector.line, selector.col, rule); + } + } + + }); + } + +}); + +/* + * Rule: Don't use @import, use <link> instead. + */ + +CSSLint.addRule({ + + //rule information + id: "import", + name: "Disallow @import", + desc: "Don't use @import, use <link> instead.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + parser.addListener("import", function(event){ + reporter.report("@import prevents parallel downloads, use <link> instead.", event.line, event.col, rule); + }); + + } + +}); + +/* + * Rule: Make sure !important is not overused, this could lead to specificity + * war. Display a warning on !important declarations, an error if it's + * used more at least 10 times. + */ + +CSSLint.addRule({ + + //rule information + id: "important", + name: "Disallow !important", + desc: "Be careful when using !important declaration", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + count = 0; + + //warn that important is used and increment the declaration counter + parser.addListener("property", function(event){ + if (event.important === true){ + count++; + reporter.report("Use of !important", event.line, event.col, rule); + } + }); + + //if there are more than 10, show an error + parser.addListener("endstylesheet", function(){ + reporter.stat("important", count); + if (count >= 10){ + reporter.rollupWarn("Too many !important declarations (" + count + "), try to use less than 10 to avoid specificity issues.", rule); + } + }); + } + +}); + +/* + * Rule: Properties should be known (listed in CSS3 specification) or + * be a vendor-prefixed property. + */ + +CSSLint.addRule({ + + //rule information + id: "known-properties", + name: "Require use of known properties", + desc: "Properties should be known (listed in CSS3 specification) or be a vendor-prefixed property.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + parser.addListener("property", function(event){ + + // the check is handled entirely by the parser-lib (https://github.com/nzakas/parser-lib) + if (event.invalid) { + reporter.report(event.invalid.message, event.line, event.col, rule); + } + + }); + } + +}); + +/* + * Rule: All properties should be in alphabetical order.. + */ +/*global CSSLint*/ +CSSLint.addRule({ + + //rule information + id: "order-alphabetical", + name: "Alphabetical order", + desc: "Assure properties are in alphabetical order", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + properties; + + var startRule = function () { + properties = []; + }; + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + parser.addListener("startpage", startRule); + parser.addListener("startpagemargin", startRule); + parser.addListener("startkeyframerule", startRule); + + parser.addListener("property", function(event){ + var name = event.property.text, + lowerCasePrefixLessName = name.toLowerCase().replace(/^-.*?-/, ""); + + properties.push(lowerCasePrefixLessName); + }); + + parser.addListener("endrule", function(event){ + var currentProperties = properties.join(","), + expectedProperties = properties.sort().join(","); + + if (currentProperties !== expectedProperties){ + reporter.report("Rule doesn't have all its properties in alphabetical ordered.", event.line, event.col, rule); + } + }); + } + +}); + +/* + * Rule: outline: none or outline: 0 should only be used in a :focus rule + * and only if there are other properties in the same rule. + */ + +CSSLint.addRule({ + + //rule information + id: "outline-none", + name: "Disallow outline: none", + desc: "Use of outline: none or outline: 0 should be limited to :focus rules.", + browsers: "All", + tags: ["Accessibility"], + + //initialization + init: function(parser, reporter){ + var rule = this, + lastRule; + + function startRule(event){ + if (event.selectors){ + lastRule = { + line: event.line, + col: event.col, + selectors: event.selectors, + propCount: 0, + outline: false + }; + } else { + lastRule = null; + } + } + + function endRule(){ + if (lastRule){ + if (lastRule.outline){ + if (lastRule.selectors.toString().toLowerCase().indexOf(":focus") === -1){ + reporter.report("Outlines should only be modified using :focus.", lastRule.line, lastRule.col, rule); + } else if (lastRule.propCount === 1) { + reporter.report("Outlines shouldn't be hidden unless other visual changes are made.", lastRule.line, lastRule.col, rule); + } + } + } + } + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + parser.addListener("startpage", startRule); + parser.addListener("startpagemargin", startRule); + parser.addListener("startkeyframerule", startRule); + + parser.addListener("property", function(event){ + var name = event.property.text.toLowerCase(), + value = event.value; + + if (lastRule){ + lastRule.propCount++; + if (name === "outline" && (value.toString() === "none" || value.toString() === "0")){ + lastRule.outline = true; + } + } + + }); + + parser.addListener("endrule", endRule); + parser.addListener("endfontface", endRule); + parser.addListener("endpage", endRule); + parser.addListener("endpagemargin", endRule); + parser.addListener("endkeyframerule", endRule); + + } + +}); + +/* + * Rule: Don't use classes or IDs with elements (a.foo or a#foo). + */ + +CSSLint.addRule({ + + //rule information + id: "overqualified-elements", + name: "Disallow overqualified elements", + desc: "Don't use classes or IDs with elements (a.foo or a#foo).", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + classes = {}; + + parser.addListener("startrule", function(event){ + var selectors = event.selectors, + selector, + part, + modifier, + i, j, k; + + for (i=0; i < selectors.length; i++){ + selector = selectors[i]; + + for (j=0; j < selector.parts.length; j++){ + part = selector.parts[j]; + if (part.type === parser.SELECTOR_PART_TYPE){ + for (k=0; k < part.modifiers.length; k++){ + modifier = part.modifiers[k]; + if (part.elementName && modifier.type === "id"){ + reporter.report("Element (" + part + ") is overqualified, just use " + modifier + " without element name.", part.line, part.col, rule); + } else if (modifier.type === "class"){ + + if (!classes[modifier]){ + classes[modifier] = []; + } + classes[modifier].push({ modifier: modifier, part: part }); + } + } + } + } + } + }); + + parser.addListener("endstylesheet", function(){ + + var prop; + for (prop in classes){ + if (classes.hasOwnProperty(prop)){ + + //one use means that this is overqualified + if (classes[prop].length === 1 && classes[prop][0].part.elementName){ + reporter.report("Element (" + classes[prop][0].part + ") is overqualified, just use " + classes[prop][0].modifier + " without element name.", classes[prop][0].part.line, classes[prop][0].part.col, rule); + } + } + } + }); + } + +}); + +/* + * Rule: Headings (h1-h6) should not be qualified (namespaced). + */ + +CSSLint.addRule({ + + //rule information + id: "qualified-headings", + name: "Disallow qualified headings", + desc: "Headings should not be qualified (namespaced).", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + parser.addListener("startrule", function(event){ + var selectors = event.selectors, + selector, + part, + i, j; + + for (i=0; i < selectors.length; i++){ + selector = selectors[i]; + + for (j=0; j < selector.parts.length; j++){ + part = selector.parts[j]; + if (part.type === parser.SELECTOR_PART_TYPE){ + if (part.elementName && /h[1-6]/.test(part.elementName.toString()) && j > 0){ + reporter.report("Heading (" + part.elementName + ") should not be qualified.", part.line, part.col, rule); + } + } + } + } + }); + } + +}); + +/* + * Rule: Selectors that look like regular expressions are slow and should be avoided. + */ + +CSSLint.addRule({ + + //rule information + id: "regex-selectors", + name: "Disallow selectors that look like regexs", + desc: "Selectors that look like regular expressions are slow and should be avoided.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + parser.addListener("startrule", function(event){ + var selectors = event.selectors, + selector, + part, + modifier, + i, j, k; + + for (i=0; i < selectors.length; i++){ + selector = selectors[i]; + for (j=0; j < selector.parts.length; j++){ + part = selector.parts[j]; + if (part.type === parser.SELECTOR_PART_TYPE){ + for (k=0; k < part.modifiers.length; k++){ + modifier = part.modifiers[k]; + if (modifier.type === "attribute"){ + if (/([\~\|\^\$\*]=)/.test(modifier)){ + reporter.report("Attribute selectors with " + RegExp.$1 + " are slow!", modifier.line, modifier.col, rule); + } + } + + } + } + } + } + }); + } + +}); + +/* + * Rule: Total number of rules should not exceed x. + */ + +CSSLint.addRule({ + + //rule information + id: "rules-count", + name: "Rules Count", + desc: "Track how many rules there are.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var count = 0; + + //count each rule + parser.addListener("startrule", function(){ + count++; + }); + + parser.addListener("endstylesheet", function(){ + reporter.stat("rule-count", count); + }); + } + +}); + +/* + * Rule: Warn people with approaching the IE 4095 limit + */ + +CSSLint.addRule({ + + //rule information + id: "selector-max-approaching", + name: "Warn when approaching the 4095 selector limit for IE", + desc: "Will warn when selector count is >= 3800 selectors.", + browsers: "IE", + + //initialization + init: function(parser, reporter) { + var rule = this, count = 0; + + parser.addListener("startrule", function(event) { + count += event.selectors.length; + }); + + parser.addListener("endstylesheet", function() { + if (count >= 3800) { + reporter.report("You have " + count + " selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,rule); + } + }); + } + +}); + +/* + * Rule: Warn people past the IE 4095 limit + */ + +CSSLint.addRule({ + + //rule information + id: "selector-max", + name: "Error when past the 4095 selector limit for IE", + desc: "Will error when selector count is > 4095.", + browsers: "IE", + + //initialization + init: function(parser, reporter){ + var rule = this, count = 0; + + parser.addListener("startrule", function(event) { + count += event.selectors.length; + }); + + parser.addListener("endstylesheet", function() { + if (count > 4095) { + reporter.report("You have " + count + " selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,rule); + } + }); + } + +}); + +/* + * Rule: Avoid new-line characters in selectors. + */ + +CSSLint.addRule({ + + //rule information + id: "selector-newline", + name: "Disallow new-line characters in selectors", + desc: "New-line characters in selectors are usually a forgotten comma and not a descendant combinator.", + browsers: "All", + + //initialization + init: function(parser, reporter) { + var rule = this; + + function startRule(event) { + var i, len, selector, p, n, pLen, part, part2, type, currentLine, nextLine, + selectors = event.selectors; + + for (i = 0, len = selectors.length; i < len; i++) { + selector = selectors[i]; + for (p = 0, pLen = selector.parts.length; p < pLen; p++) { + for (n = p + 1; n < pLen; n++) { + part = selector.parts[p]; + part2 = selector.parts[n]; + type = part.type; + currentLine = part.line; + nextLine = part2.line; + + if (type === "descendant" && nextLine > currentLine) { + reporter.report("newline character found in selector (forgot a comma?)", currentLine, selectors[i].parts[0].col, rule); + } + } + } + + } + } + + parser.addListener("startrule", startRule); + + } +}); + +/* + * Rule: Use shorthand properties where possible. + * + */ + +CSSLint.addRule({ + + //rule information + id: "shorthand", + name: "Require shorthand properties", + desc: "Use shorthand properties where possible.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + prop, i, len, + propertiesToCheck = {}, + properties, + mapping = { + "margin": [ + "margin-top", + "margin-bottom", + "margin-left", + "margin-right" + ], + "padding": [ + "padding-top", + "padding-bottom", + "padding-left", + "padding-right" + ] + }; + + //initialize propertiesToCheck + for (prop in mapping){ + if (mapping.hasOwnProperty(prop)){ + for (i=0, len=mapping[prop].length; i < len; i++){ + propertiesToCheck[mapping[prop][i]] = prop; + } + } + } + + function startRule(){ + properties = {}; + } + + //event handler for end of rules + function endRule(event){ + + var prop, i, len, total; + + //check which properties this rule has + for (prop in mapping){ + if (mapping.hasOwnProperty(prop)){ + total=0; + + for (i=0, len=mapping[prop].length; i < len; i++){ + total += properties[mapping[prop][i]] ? 1 : 0; + } + + if (total === mapping[prop].length){ + reporter.report("The properties " + mapping[prop].join(", ") + " can be replaced by " + prop + ".", event.line, event.col, rule); + } + } + } + } + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + + //check for use of "font-size" + parser.addListener("property", function(event){ + var name = event.property.toString().toLowerCase(); + + if (propertiesToCheck[name]){ + properties[name] = 1; + } + }); + + parser.addListener("endrule", endRule); + parser.addListener("endfontface", endRule); + + } + +}); + +/* + * Rule: Don't use properties with a star prefix. + * + */ + +CSSLint.addRule({ + + //rule information + id: "star-property-hack", + name: "Disallow properties with a star prefix", + desc: "Checks for the star property hack (targets IE6/7)", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + //check if property name starts with "*" + parser.addListener("property", function(event){ + var property = event.property; + + if (property.hack === "*") { + reporter.report("Property with star prefix found.", event.property.line, event.property.col, rule); + } + }); + } +}); + +/* + * Rule: Don't use text-indent for image replacement if you need to support rtl. + * + */ + +CSSLint.addRule({ + + //rule information + id: "text-indent", + name: "Disallow negative text-indent", + desc: "Checks for text indent less than -99px", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + textIndent, + direction; + + + function startRule(){ + textIndent = false; + direction = "inherit"; + } + + //event handler for end of rules + function endRule(){ + if (textIndent && direction !== "ltr"){ + reporter.report("Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.", textIndent.line, textIndent.col, rule); + } + } + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + + //check for use of "font-size" + parser.addListener("property", function(event){ + var name = event.property.toString().toLowerCase(), + value = event.value; + + if (name === "text-indent" && value.parts[0].value < -99){ + textIndent = event.property; + } else if (name === "direction" && value.toString() === "ltr"){ + direction = "ltr"; + } + }); + + parser.addListener("endrule", endRule); + parser.addListener("endfontface", endRule); + + } + +}); + +/* + * Rule: Don't use properties with a underscore prefix. + * + */ + +CSSLint.addRule({ + + //rule information + id: "underscore-property-hack", + name: "Disallow properties with an underscore prefix", + desc: "Checks for the underscore property hack (targets IE6)", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + //check if property name starts with "_" + parser.addListener("property", function(event){ + var property = event.property; + + if (property.hack === "_") { + reporter.report("Property with underscore prefix found.", event.property.line, event.property.col, rule); + } + }); + } +}); + +/* + * Rule: Headings (h1-h6) should be defined only once. + */ + +CSSLint.addRule({ + + //rule information + id: "unique-headings", + name: "Headings should only be defined once", + desc: "Headings should be defined only once.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + var headings = { + h1: 0, + h2: 0, + h3: 0, + h4: 0, + h5: 0, + h6: 0 + }; + + parser.addListener("startrule", function(event){ + var selectors = event.selectors, + selector, + part, + pseudo, + i, j; + + for (i=0; i < selectors.length; i++){ + selector = selectors[i]; + part = selector.parts[selector.parts.length-1]; + + if (part.elementName && /(h[1-6])/i.test(part.elementName.toString())){ + + for (j=0; j < part.modifiers.length; j++){ + if (part.modifiers[j].type === "pseudo"){ + pseudo = true; + break; + } + } + + if (!pseudo){ + headings[RegExp.$1]++; + if (headings[RegExp.$1] > 1) { + reporter.report("Heading (" + part.elementName + ") has already been defined.", part.line, part.col, rule); + } + } + } + } + }); + + parser.addListener("endstylesheet", function(){ + var prop, + messages = []; + + for (prop in headings){ + if (headings.hasOwnProperty(prop)){ + if (headings[prop] > 1){ + messages.push(headings[prop] + " " + prop + "s"); + } + } + } + + if (messages.length){ + reporter.rollupWarn("You have " + messages.join(", ") + " defined in this stylesheet.", rule); + } + }); + } + +}); + +/* + * Rule: Don't use universal selector because it's slow. + */ + +CSSLint.addRule({ + + //rule information + id: "universal-selector", + name: "Disallow universal selector", + desc: "The universal selector (*) is known to be slow.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + parser.addListener("startrule", function(event){ + var selectors = event.selectors, + selector, + part, + i; + + for (i=0; i < selectors.length; i++){ + selector = selectors[i]; + + part = selector.parts[selector.parts.length-1]; + if (part.elementName === "*"){ + reporter.report(rule.desc, part.line, part.col, rule); + } + } + }); + } + +}); + +/* + * Rule: Don't use unqualified attribute selectors because they're just like universal selectors. + */ + +CSSLint.addRule({ + + //rule information + id: "unqualified-attributes", + name: "Disallow unqualified attribute selectors", + desc: "Unqualified attribute selectors are known to be slow.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + parser.addListener("startrule", function(event){ + + var selectors = event.selectors, + selector, + part, + modifier, + i, k; + + for (i=0; i < selectors.length; i++){ + selector = selectors[i]; + + part = selector.parts[selector.parts.length-1]; + if (part.type === parser.SELECTOR_PART_TYPE){ + for (k=0; k < part.modifiers.length; k++){ + modifier = part.modifiers[k]; + if (modifier.type === "attribute" && (!part.elementName || part.elementName === "*")){ + reporter.report(rule.desc, part.line, part.col, rule); + } + } + } + + } + }); + } + +}); + +/* + * Rule: When using a vendor-prefixed property, make sure to + * include the standard one. + */ + +CSSLint.addRule({ + + //rule information + id: "vendor-prefix", + name: "Require standard property with vendor prefix", + desc: "When using a vendor-prefixed property, make sure to include the standard one.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this, + properties, + num, + propertiesToCheck = { + "-webkit-border-radius": "border-radius", + "-webkit-border-top-left-radius": "border-top-left-radius", + "-webkit-border-top-right-radius": "border-top-right-radius", + "-webkit-border-bottom-left-radius": "border-bottom-left-radius", + "-webkit-border-bottom-right-radius": "border-bottom-right-radius", + + "-o-border-radius": "border-radius", + "-o-border-top-left-radius": "border-top-left-radius", + "-o-border-top-right-radius": "border-top-right-radius", + "-o-border-bottom-left-radius": "border-bottom-left-radius", + "-o-border-bottom-right-radius": "border-bottom-right-radius", + + "-moz-border-radius": "border-radius", + "-moz-border-radius-topleft": "border-top-left-radius", + "-moz-border-radius-topright": "border-top-right-radius", + "-moz-border-radius-bottomleft": "border-bottom-left-radius", + "-moz-border-radius-bottomright": "border-bottom-right-radius", + + "-moz-column-count": "column-count", + "-webkit-column-count": "column-count", + + "-moz-column-gap": "column-gap", + "-webkit-column-gap": "column-gap", + + "-moz-column-rule": "column-rule", + "-webkit-column-rule": "column-rule", + + "-moz-column-rule-style": "column-rule-style", + "-webkit-column-rule-style": "column-rule-style", + + "-moz-column-rule-color": "column-rule-color", + "-webkit-column-rule-color": "column-rule-color", + + "-moz-column-rule-width": "column-rule-width", + "-webkit-column-rule-width": "column-rule-width", + + "-moz-column-width": "column-width", + "-webkit-column-width": "column-width", + + "-webkit-column-span": "column-span", + "-webkit-columns": "columns", + + "-moz-box-shadow": "box-shadow", + "-webkit-box-shadow": "box-shadow", + + "-moz-transform" : "transform", + "-webkit-transform" : "transform", + "-o-transform" : "transform", + "-ms-transform" : "transform", + + "-moz-transform-origin" : "transform-origin", + "-webkit-transform-origin" : "transform-origin", + "-o-transform-origin" : "transform-origin", + "-ms-transform-origin" : "transform-origin", + + "-moz-box-sizing" : "box-sizing", + "-webkit-box-sizing" : "box-sizing" + }; + + //event handler for beginning of rules + function startRule(){ + properties = {}; + num = 1; + } + + //event handler for end of rules + function endRule(){ + var prop, + i, + len, + needed, + actual, + needsStandard = []; + + for (prop in properties){ + if (propertiesToCheck[prop]){ + needsStandard.push({ actual: prop, needed: propertiesToCheck[prop]}); + } + } + + for (i=0, len=needsStandard.length; i < len; i++){ + needed = needsStandard[i].needed; + actual = needsStandard[i].actual; + + if (!properties[needed]){ + reporter.report("Missing standard property '" + needed + "' to go along with '" + actual + "'.", properties[actual][0].name.line, properties[actual][0].name.col, rule); + } else { + //make sure standard property is last + if (properties[needed][0].pos < properties[actual][0].pos){ + reporter.report("Standard property '" + needed + "' should come after vendor-prefixed property '" + actual + "'.", properties[actual][0].name.line, properties[actual][0].name.col, rule); + } + } + } + + } + + parser.addListener("startrule", startRule); + parser.addListener("startfontface", startRule); + parser.addListener("startpage", startRule); + parser.addListener("startpagemargin", startRule); + parser.addListener("startkeyframerule", startRule); + + parser.addListener("property", function(event){ + var name = event.property.text.toLowerCase(); + + if (!properties[name]){ + properties[name] = []; + } + + properties[name].push({ name: event.property, value : event.value, pos:num++ }); + }); + + parser.addListener("endrule", endRule); + parser.addListener("endfontface", endRule); + parser.addListener("endpage", endRule); + parser.addListener("endpagemargin", endRule); + parser.addListener("endkeyframerule", endRule); + } + +}); + +/* + * Rule: You don't need to specify units when a value is 0. + */ + +CSSLint.addRule({ + + //rule information + id: "zero-units", + name: "Disallow units for 0 values", + desc: "You don't need to specify units when a value is 0.", + browsers: "All", + + //initialization + init: function(parser, reporter){ + var rule = this; + + //count how many times "float" is used + parser.addListener("property", function(event){ + var parts = event.value.parts, + i = 0, + len = parts.length; + + while(i < len){ + if ((parts[i].units || parts[i].type === "percentage") && parts[i].value === 0 && parts[i].type !== "time"){ + reporter.report("Values of 0 shouldn't have units specified.", parts[i].line, parts[i].col, rule); + } + i++; + } + + }); + + } + +}); + +(function() { + + /** + * Replace special characters before write to output. + * + * Rules: + * - single quotes is the escape sequence for double-quotes + * - & is the escape sequence for & + * - < is the escape sequence for < + * - > is the escape sequence for > + * + * @param {String} message to escape + * @return escaped message as {String} + */ + var xmlEscape = function(str) { + if (!str || str.constructor !== String) { + return ""; + } + + return str.replace(/[\"&><]/g, function(match) { + switch (match) { + case "\"": + return """; + case "&": + return "&"; + case "<": + return "<"; + case ">": + return ">"; + } + }); + }; + + CSSLint.addFormatter({ + //format information + id: "checkstyle-xml", + name: "Checkstyle XML format", + + /** + * Return opening root XML tag. + * @return {String} to prepend before all results + */ + startFormat: function(){ + return "<?xml version=\"1.0\" encoding=\"utf-8\"?><checkstyle>"; + }, + + /** + * Return closing root XML tag. + * @return {String} to append after all results + */ + endFormat: function(){ + return "</checkstyle>"; + }, + + /** + * Returns message when there is a file read error. + * @param {String} filename The name of the file that caused the error. + * @param {String} message The error message + * @return {String} The error message. + */ + readError: function(filename, message) { + return "<file name=\"" + xmlEscape(filename) + "\"><error line=\"0\" column=\"0\" severty=\"error\" message=\"" + xmlEscape(message) + "\"></error></file>"; + }, + + /** + * Given CSS Lint results for a file, return output for this format. + * @param results {Object} with error and warning messages + * @param filename {String} relative file path + * @param options {Object} (UNUSED for now) specifies special handling of output + * @return {String} output for results + */ + formatResults: function(results, filename/*, options*/) { + var messages = results.messages, + output = []; + + /** + * Generate a source string for a rule. + * Checkstyle source strings usually resemble Java class names e.g + * net.csslint.SomeRuleName + * @param {Object} rule + * @return rule source as {String} + */ + var generateSource = function(rule) { + if (!rule || !("name" in rule)) { + return ""; + } + return "net.csslint." + rule.name.replace(/\s/g,""); + }; + + + + if (messages.length > 0) { + output.push("<file name=\""+filename+"\">"); + CSSLint.Util.forEach(messages, function (message) { + //ignore rollups for now + if (!message.rollup) { + output.push("<error line=\"" + message.line + "\" column=\"" + message.col + "\" severity=\"" + message.type + "\"" + + " message=\"" + xmlEscape(message.message) + "\" source=\"" + generateSource(message.rule) +"\"/>"); + } + }); + output.push("</file>"); + } + + return output.join(""); + } + }); + +}()); + +CSSLint.addFormatter({ + //format information + id: "compact", + name: "Compact, 'porcelain' format", + + /** + * Return content to be printed before all file results. + * @return {String} to prepend before all results + */ + startFormat: function() { + return ""; + }, + + /** + * Return content to be printed after all file results. + * @return {String} to append after all results + */ + endFormat: function() { + return ""; + }, + + /** + * Given CSS Lint results for a file, return output for this format. + * @param results {Object} with error and warning messages + * @param filename {String} relative file path + * @param options {Object} (Optional) specifies special handling of output + * @return {String} output for results + */ + formatResults: function(results, filename, options) { + var messages = results.messages, + output = ""; + options = options || {}; + + /** + * Capitalize and return given string. + * @param str {String} to capitalize + * @return {String} capitalized + */ + var capitalize = function(str) { + return str.charAt(0).toUpperCase() + str.slice(1); + }; + + if (messages.length === 0) { + return options.quiet ? "" : filename + ": Lint Free!"; + } + + CSSLint.Util.forEach(messages, function(message) { + if (message.rollup) { + output += filename + ": " + capitalize(message.type) + " - " + message.message + "\n"; + } else { + output += filename + ": " + "line " + message.line + + ", col " + message.col + ", " + capitalize(message.type) + " - " + message.message + " (" + message.rule.id + ")\n"; + } + }); + + return output; + } +}); + +CSSLint.addFormatter({ + //format information + id: "csslint-xml", + name: "CSSLint XML format", + + /** + * Return opening root XML tag. + * @return {String} to prepend before all results + */ + startFormat: function(){ + return "<?xml version=\"1.0\" encoding=\"utf-8\"?><csslint>"; + }, + + /** + * Return closing root XML tag. + * @return {String} to append after all results + */ + endFormat: function(){ + return "</csslint>"; + }, + + /** + * Given CSS Lint results for a file, return output for this format. + * @param results {Object} with error and warning messages + * @param filename {String} relative file path + * @param options {Object} (UNUSED for now) specifies special handling of output + * @return {String} output for results + */ + formatResults: function(results, filename/*, options*/) { + var messages = results.messages, + output = []; + + /** + * Replace special characters before write to output. + * + * Rules: + * - single quotes is the escape sequence for double-quotes + * - & is the escape sequence for & + * - < is the escape sequence for < + * - > is the escape sequence for > + * + * @param {String} message to escape + * @return escaped message as {String} + */ + var escapeSpecialCharacters = function(str) { + if (!str || str.constructor !== String) { + return ""; + } + return str.replace(/\"/g, "'").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"); + }; + + if (messages.length > 0) { + output.push("<file name=\""+filename+"\">"); + CSSLint.Util.forEach(messages, function (message) { + if (message.rollup) { + output.push("<issue severity=\"" + message.type + "\" reason=\"" + escapeSpecialCharacters(message.message) + "\" evidence=\"" + escapeSpecialCharacters(message.evidence) + "\"/>"); + } else { + output.push("<issue line=\"" + message.line + "\" char=\"" + message.col + "\" severity=\"" + message.type + "\"" + + " reason=\"" + escapeSpecialCharacters(message.message) + "\" evidence=\"" + escapeSpecialCharacters(message.evidence) + "\"/>"); + } + }); + output.push("</file>"); + } + + return output.join(""); + } +}); + +CSSLint.addFormatter({ + //format information + id: "junit-xml", + name: "JUNIT XML format", + + /** + * Return opening root XML tag. + * @return {String} to prepend before all results + */ + startFormat: function(){ + return "<?xml version=\"1.0\" encoding=\"utf-8\"?><testsuites>"; + }, + + /** + * Return closing root XML tag. + * @return {String} to append after all results + */ + endFormat: function() { + return "</testsuites>"; + }, + + /** + * Given CSS Lint results for a file, return output for this format. + * @param results {Object} with error and warning messages + * @param filename {String} relative file path + * @param options {Object} (UNUSED for now) specifies special handling of output + * @return {String} output for results + */ + formatResults: function(results, filename/*, options*/) { + + var messages = results.messages, + output = [], + tests = { + "error": 0, + "failure": 0 + }; + + /** + * Generate a source string for a rule. + * JUNIT source strings usually resemble Java class names e.g + * net.csslint.SomeRuleName + * @param {Object} rule + * @return rule source as {String} + */ + var generateSource = function(rule) { + if (!rule || !("name" in rule)) { + return ""; + } + return "net.csslint." + rule.name.replace(/\s/g,""); + }; + + /** + * Replace special characters before write to output. + * + * Rules: + * - single quotes is the escape sequence for double-quotes + * - < is the escape sequence for < + * - > is the escape sequence for > + * + * @param {String} message to escape + * @return escaped message as {String} + */ + var escapeSpecialCharacters = function(str) { + + if (!str || str.constructor !== String) { + return ""; + } + + return str.replace(/\"/g, "'").replace(/</g, "<").replace(/>/g, ">"); + + }; + + if (messages.length > 0) { + + messages.forEach(function (message) { + + // since junit has no warning class + // all issues as errors + var type = message.type === "warning" ? "error" : message.type; + + //ignore rollups for now + if (!message.rollup) { + + // build the test case seperately, once joined + // we'll add it to a custom array filtered by type + output.push("<testcase time=\"0\" name=\"" + generateSource(message.rule) + "\">"); + output.push("<" + type + " message=\"" + escapeSpecialCharacters(message.message) + "\"><![CDATA[" + message.line + ":" + message.col + ":" + escapeSpecialCharacters(message.evidence) + "]]></" + type + ">"); + output.push("</testcase>"); + + tests[type] += 1; + + } + + }); + + output.unshift("<testsuite time=\"0\" tests=\"" + messages.length + "\" skipped=\"0\" errors=\"" + tests.error + "\" failures=\"" + tests.failure + "\" package=\"net.csslint\" name=\"" + filename + "\">"); + output.push("</testsuite>"); + + } + + return output.join(""); + + } +}); + +CSSLint.addFormatter({ + //format information + id: "lint-xml", + name: "Lint XML format", + + /** + * Return opening root XML tag. + * @return {String} to prepend before all results + */ + startFormat: function(){ + return "<?xml version=\"1.0\" encoding=\"utf-8\"?><lint>"; + }, + + /** + * Return closing root XML tag. + * @return {String} to append after all results + */ + endFormat: function(){ + return "</lint>"; + }, + + /** + * Given CSS Lint results for a file, return output for this format. + * @param results {Object} with error and warning messages + * @param filename {String} relative file path + * @param options {Object} (UNUSED for now) specifies special handling of output + * @return {String} output for results + */ + formatResults: function(results, filename/*, options*/) { + var messages = results.messages, + output = []; + + /** + * Replace special characters before write to output. + * + * Rules: + * - single quotes is the escape sequence for double-quotes + * - & is the escape sequence for & + * - < is the escape sequence for < + * - > is the escape sequence for > + * + * @param {String} message to escape + * @return escaped message as {String} + */ + var escapeSpecialCharacters = function(str) { + if (!str || str.constructor !== String) { + return ""; + } + return str.replace(/\"/g, "'").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"); + }; + + if (messages.length > 0) { + + output.push("<file name=\""+filename+"\">"); + CSSLint.Util.forEach(messages, function (message) { + if (message.rollup) { + output.push("<issue severity=\"" + message.type + "\" reason=\"" + escapeSpecialCharacters(message.message) + "\" evidence=\"" + escapeSpecialCharacters(message.evidence) + "\"/>"); + } else { + output.push("<issue line=\"" + message.line + "\" char=\"" + message.col + "\" severity=\"" + message.type + "\"" + + " reason=\"" + escapeSpecialCharacters(message.message) + "\" evidence=\"" + escapeSpecialCharacters(message.evidence) + "\"/>"); + } + }); + output.push("</file>"); + } + + return output.join(""); + } +}); + +CSSLint.addFormatter({ + //format information + id: "text", + name: "Plain Text", + + /** + * Return content to be printed before all file results. + * @return {String} to prepend before all results + */ + startFormat: function() { + return ""; + }, + + /** + * Return content to be printed after all file results. + * @return {String} to append after all results + */ + endFormat: function() { + return ""; + }, + + /** + * Given CSS Lint results for a file, return output for this format. + * @param results {Object} with error and warning messages + * @param filename {String} relative file path + * @param options {Object} (Optional) specifies special handling of output + * @return {String} output for results + */ + formatResults: function(results, filename, options) { + var messages = results.messages, + output = ""; + options = options || {}; + + if (messages.length === 0) { + return options.quiet ? "" : "\n\ncsslint: No errors in " + filename + "."; + } + + output = "\n\ncsslint: There "; + if (messages.length === 1) { + output += "is 1 problem"; + } else { + output += "are " + messages.length + " problems"; + } + output += " in " + filename + "."; + + var pos = filename.lastIndexOf("/"), + shortFilename = filename; + + if (pos === -1){ + pos = filename.lastIndexOf("\\"); + } + if (pos > -1){ + shortFilename = filename.substring(pos+1); + } + + CSSLint.Util.forEach(messages, function (message, i) { + output = output + "\n\n" + shortFilename; + if (message.rollup) { + output += "\n" + (i+1) + ": " + message.type; + output += "\n" + message.message; + } else { + output += "\n" + (i+1) + ": " + message.type + " at line " + message.line + ", col " + message.col; + output += "\n" + message.message; + output += "\n" + message.evidence; + } + }); + + return output; + } +}); + +module.exports.CSSLint = CSSLint; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/css_completions.js b/plugins/node_modules/ace/lib/ace/mode/css_completions.js new file mode 100644 index 00000000..ae38bfad --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/css_completions.js @@ -0,0 +1,213 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var propertyMap = { + "background": {"#$0": 1}, + "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, + "background-image": {"url('/$0')": 1}, + "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, + "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, + "background-attachment": {"scroll": 1, "fixed": 1}, + "background-size": {"cover": 1, "contain": 1}, + "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, + "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, + "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, + "border-color": {"#$0": 1}, + "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, + "border-collapse": {"collapse": 1, "separate": 1}, + "bottom": {"px": 1, "em": 1, "%": 1}, + "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, + "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, + "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, + "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, + "empty-cells": {"show": 1, "hide": 1}, + "float": {"left": 1, "right": 1, "none": 1}, + "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, + "font-size": {"px": 1, "em": 1, "%": 1}, + "font-weight": {"bold": 1, "normal": 1}, + "font-style": {"italic": 1, "normal": 1}, + "font-variant": {"normal": 1, "small-caps": 1}, + "height": {"px": 1, "em": 1, "%": 1}, + "left": {"px": 1, "em": 1, "%": 1}, + "letter-spacing": {"normal": 1}, + "line-height": {"normal": 1}, + "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, + "margin": {"px": 1, "em": 1, "%": 1}, + "margin-right": {"px": 1, "em": 1, "%": 1}, + "margin-left": {"px": 1, "em": 1, "%": 1}, + "margin-top": {"px": 1, "em": 1, "%": 1}, + "margin-bottom": {"px": 1, "em": 1, "%": 1}, + "max-height": {"px": 1, "em": 1, "%": 1}, + "max-width": {"px": 1, "em": 1, "%": 1}, + "min-height": {"px": 1, "em": 1, "%": 1}, + "min-width": {"px": 1, "em": 1, "%": 1}, + "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, + "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, + "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, + "padding": {"px": 1, "em": 1, "%": 1}, + "padding-top": {"px": 1, "em": 1, "%": 1}, + "padding-right": {"px": 1, "em": 1, "%": 1}, + "padding-bottom": {"px": 1, "em": 1, "%": 1}, + "padding-left": {"px": 1, "em": 1, "%": 1}, + "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, + "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, + "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, + "right": {"px": 1, "em": 1, "%": 1}, + "table-layout": {"fixed": 1, "auto": 1}, + "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, + "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, + "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, + "top": {"px": 1, "em": 1, "%": 1}, + "vertical-align": {"top": 1, "bottom": 1}, + "visibility": {"hidden": 1, "visible": 1}, + "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, + "width": {"px": 1, "em": 1, "%": 1}, + "word-spacing": {"normal": 1}, + + // opacity + "filter": {"alpha(opacity=$0100)": 1}, + + "text-shadow": {"$02px 2px 2px #777": 1}, + "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + + // border radius + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + + // dropshadows + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + + // transformations + "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, + "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, + "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } +}; + +var CssCompletions = function() { + +}; + +(function() { + + this.completionsDefined = false; + + this.defineCompletions = function() { + //fill in missing properties + if (document) { + var style = document.createElement('c').style; + + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + + var name = i.replace(/[A-Z]/g, function(x) { + return '-' + x.toLowerCase(); + }); + + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + + this.completionsDefined = true; + }; + + this.getCompletions = function(state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + + var token = session.getTokenAt(pos.row, pos.column); + + if (!token) + return []; + if (state==='ruleset'){ + //css attribute value + var line = session.getLine(pos.row).substr(0, pos.column); + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + + return this.getPropertyValueCompletions(state, session, pos, prefix); + } else { + return this.getPropertyCompletions(state, session, pos, prefix); + } + } + + return []; + }; + + this.getPropertyCompletions = function(state, session, pos, prefix) { + var properties = Object.keys(propertyMap); + return properties.map(function(property){ + return { + caption: property, + snippet: property + ': $0;', + meta: "property", + score: Number.MAX_VALUE + }; + }); + }; + + this.getPropertyValueCompletions = function(state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function(value){ + return { + caption: value, + snippet: value, + meta: "property value", + score: Number.MAX_VALUE + }; + }); + }; + +}).call(CssCompletions.prototype); + +exports.CssCompletions = CssCompletions; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/css_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/css_highlight_rules.js new file mode 100644 index 00000000..153ea5a0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/css_highlight_rules.js @@ -0,0 +1,227 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + + +/* Exports are for Stylus and Less highlighters */ +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; + +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; + +var CssHighlightRules = function() { + + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [{ + include : ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token : "constant.numeric", + regex : numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + + "media": [{ + include : ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] + }], + + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { + token : "paren.rparen", + regex : "\\}", + next : "start" + }, { + include : ["strings", "url", "comments"] + }, { + token : ["constant.numeric", "keyword"], + regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" + }, { + token : "constant.numeric", + regex : numRe + }, { + token : "constant.numeric", // hex6 color + regex : "#[a-f0-9]{6}" + }, { + token : "constant.numeric", // hex3 color + regex : "#[a-f0-9]{3}" + }, { + token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex : pseudoElements + }, { + token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex : pseudoClasses + }, { + include: "url" + }, { + token : keywordMapper, + regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + + }; + + this.normalizeRules(); +}; + +oop.inherits(CssHighlightRules, TextHighlightRules); + +exports.CssHighlightRules = CssHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/css_test.js b/plugins/node_modules/ace/lib/ace/mode/css_test.js new file mode 100644 index 00000000..d9e65575 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/css_test.js @@ -0,0 +1,78 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var CssMode = require("./css").Mode; +var assert = require("../test/assertions"); + +module.exports = { + + name: "CSS", + + setUp : function() { + this.mode = new CssMode(); + }, + + "test: toggle comment lines" : function() { + var session = new EditSession([" abc", "cde", "fg"].join("\n")); + + var comment = this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal(["/* abc*/", "/*cde*/", "fg"].join("\n"), session.toString()); + }, + + + "test: lines should keep indentation" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", " abc", " ")); + assert.equal("\t", this.mode.getNextLineIndent("start", "\tabc", " ")); + }, + + "test: new line after { should increase indent" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", " abc{", " ")); + assert.equal("\t ", this.mode.getNextLineIndent("start", "\tabc { ", " ")); + }, + + "test: no indent increase after { in a comment" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", " /*{", " ")); + assert.equal(" ", this.mode.getNextLineIndent("start", " /*{ ", " ")); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/css_worker.js b/plugins/node_modules/ace/lib/ace/mode/css_worker.js new file mode 100644 index 00000000..d92e23fc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/css_worker.js @@ -0,0 +1,100 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var Mirror = require("../worker/mirror").Mirror; +var CSSLint = require("./css/csslint").CSSLint; + +var Worker = exports.Worker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(400); + this.ruleset = null; + this.setDisabledRules("ids|order-alphabetical"); + this.setInfoRules( + "adjoining-classes|qualified-headings|zero-units|gradients|" + + "import|outline-none|vendor-prefix" + ); +}; + +oop.inherits(Worker, Mirror); + +(function() { + this.setInfoRules = function(ruleNames) { + if (typeof ruleNames == "string") + ruleNames = ruleNames.split("|"); + this.infoRules = lang.arrayToMap(ruleNames); + this.doc.getValue() && this.deferredUpdate.schedule(100); + }; + + this.setDisabledRules = function(ruleNames) { + if (!ruleNames) { + this.ruleset = null; + } else { + if (typeof ruleNames == "string") + ruleNames = ruleNames.split("|"); + var all = {}; + + CSSLint.getRules().forEach(function(x){ + all[x.id] = true; + }); + ruleNames.forEach(function(x) { + delete all[x]; + }); + + this.ruleset = all; + } + this.doc.getValue() && this.deferredUpdate.schedule(100); + }; + + this.onUpdate = function() { + var value = this.doc.getValue(); + if (!value) + return this.sender.emit("annotate", []); + var infoRules = this.infoRules; + + var result = CSSLint.verify(value, this.ruleset); + this.sender.emit("annotate", result.messages.map(function(msg) { + return { + row: msg.line - 1, + column: msg.col - 1, + text: msg.message, + type: infoRules[msg.rule.id] ? "info" : msg.type, + rule: msg.rule.name + }; + })); + }; + +}).call(Worker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/css_worker_test.js b/plugins/node_modules/ace/lib/ace/mode/css_worker_test.js new file mode 100644 index 00000000..5d5243e2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/css_worker_test.js @@ -0,0 +1,68 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var assert = require("../test/assertions"); +var Worker = require("./css_worker").Worker; + + +module.exports = { + setUp : function() { + this.sender = { + on: function() {}, + callback: function(data, id) { + this.data = data; + }, + events: [], + emit: function(type, e) { + this.events.push([type, e]); + } + }; + }, + + "test check for syntax error": function() { + var worker = new Worker(this.sender); + worker.setValue("Juhu Kinners"); + worker.deferredUpdate.call(); + assert.equal(this.sender.events[0][1][0].type, "error"); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/curly.js b/plugins/node_modules/ace/lib/ace/mode/curly.js new file mode 100644 index 00000000..d2bca1cf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/curly.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Libo Cannici <libo AT zendesk DOT com> + * + * + * + * ***** END LICENSE BLOCK ***** */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +// defines the parent mode +var HtmlMode = require("./html").Mode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var HtmlFoldMode = require("./folding/html").FoldMode; + +// defines the language specific highlighters and folding rules +var CurlyHighlightRules = require("./curly_highlight_rules").CurlyHighlightRules; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = CurlyHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new HtmlFoldMode(); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + this.$id = "ace/mode/curly"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/curly_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/curly_highlight_rules.js new file mode 100644 index 00000000..92e6f539 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/curly_highlight_rules.js @@ -0,0 +1,66 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Libo Cannici <libo AT zendesk DOT com> + * + * + * + * ***** END LICENSE BLOCK ***** */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + + +var CurlyHighlightRules = function() { + HtmlHighlightRules.call(this); + + this.$rules["start"].unshift({ + token: "variable", + regex: "{{", + push: "curly-start" + }); + + this.$rules["curly-start"] = [{ + token: "variable", + regex: "}}", + next: "pop" + }]; + + this.normalizeRules(); +}; + +oop.inherits(CurlyHighlightRules, HtmlHighlightRules); + +exports.CurlyHighlightRules = CurlyHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/d.js b/plugins/node_modules/ace/lib/ace/mode/d.js new file mode 100644 index 00000000..e48aced2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/d.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var DHighlightRules = require("./d_highlight_rules").DHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = DHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/d"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/d_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/d_highlight_rules.js new file mode 100644 index 00000000..2509bb16 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/d_highlight_rules.js @@ -0,0 +1,334 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var DHighlightRules = function() { + + var keywords = ( + "this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|"+ + "typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters" + ); + + var keywordControls = ( + "break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|" + + "return|switch|while|catch|try|throw|finally|version|assert|unittest|with" + ); + + var types = ( + "auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|" + + "cfloat|creal|cdouble|cent|ifloat|ireal|idouble|" + + "int|long|short|void|uint|ulong|ushort|ucent|" + + "function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object" + ); + + var modifiers = ( + "abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|" + + "ref|immutable|lazy|nothrow|override|package|pragma|private|protected|" + + "public|pure|scope|shared|__gshared|synchronized|static|volatile" + ); + + var storages = ( + "class|struct|union|template|interface|enum|macro" + ); + + var stringEscapesSeq = { + token: "constant.language.escape", + regex: "\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\"\\?0abfnrtv\\\\])|" + + "(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))" + }; + + var builtinConstants = ( + "null|true|false|"+ + "__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|"+ + "__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__" + ); + + var operators = ( + "/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|" + + "\\+\\=|\\+\\+|\\<|\\<\\=|\\<\\<|\\<\\<\\=|\\<\\>|\\<\\>\\=|\\>|\\>\\=|\\>\\>\\=|" + + "\\>\\>\\>\\=|\\>\\>|\\>\\>\\>|\\!|\\!\\=|\\!\\<\\>|\\!\\<\\>\\=|\\!\\<|\\!\\<\\=|" + + "\\!\\>|\\!\\>\\=|\\?|\\$|\\=|\\=\\=|\\*|\\*\\=|%|%\\=|" + + "\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#" + ); + + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "keyword.modifier" : modifiers, + "keyword.control" : keywordControls, + "keyword.type" : types, + "keyword": keywords, + "keyword.storage": storages, + "punctation": "\\.|\\,|;|\\.\\.|\\.\\.\\.", + "keyword.operator" : operators, + "constant.language": builtinConstants + }, "identifier"); + + var identifierRe = "[a-zA-Z_\u00a1-\uffff][a-zA-Z\\d_\u00a1-\uffff]*\\b"; + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { //-------------------------------------------------------- COMMENTS + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "star-comment" + }, { + token: "comment.shebang", + regex: "^\\s*#!.*" + }, { + token : "comment", + regex : "\\/\\+", + next: "plus-comment" + }, { //-------------------------------------------------------- STRINGS + onMatch: function(value, currentState, state) { + state.unshift(this.next, value.substr(2)); + return "string"; + }, + regex: 'q"(?:[\\[\\(\\{\\<]+)', + next: 'operator-heredoc-string' + }, { + onMatch: function(value, currentState, state) { + state.unshift(this.next, value.substr(2)); + return "string"; + }, + regex: 'q"(?:[a-zA-Z_]+)$', + next: 'identifier-heredoc-string' + }, { + token : "string", // multi line string start + regex : '[xr]?"', + next : "quote-string" + }, { + token : "string", // multi line string start + regex : '[xr]?`', + next : "backtick-string" + }, { + token : "string", // single line + regex : "[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?" + }, { //-------------------------------------------------------- RULES + token: ["keyword", "text", "paren.lparen"], + regex: /(asm)(\s*)({)/, + next: "d-asm" + }, { + token: ["keyword", "text", "paren.lparen", "constant.language"], + regex: "(__traits)(\\s*)(\\()("+identifierRe+")" + }, { // import|module abc + token: ["keyword", "text", "variable.module"], + regex: "(import|module)(\\s+)((?:"+identifierRe+"\\.?)*)" + }, { // storage Name + token: ["keyword.storage", "text", "entity.name.type"], + regex: "("+storages+")(\\s*)("+identifierRe+")" + }, { // alias|typedef foo bar; + token: ["keyword", "text", "variable.storage", "text"], + regex: "(alias|typedef)(\\s*)("+identifierRe+")(\\s*)" + }, { //-------------------------------------------------------- OTHERS + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b" + }, { + token: "entity.other.attribute-name", + regex: "@"+identifierRe + }, { + token : keywordMapper, + regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token : "keyword.operator", + regex : operators + }, { + token : "punctuation.operator", + regex : "\\?|\\:|\\,|\\;|\\.|\\:" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "star-comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken: 'comment' + } + ], + "plus-comment" : [ + { + token : "comment", // closing comment + regex : "\\+\\/", + next : "start" + }, { + defaultToken: 'comment' + } + ], + + "quote-string" : [ + stringEscapesSeq, + { + token : "string", + regex : '"[cdw]?', + next : "start" + }, { + defaultToken: 'string' + } + ], + + "backtick-string" : [ + stringEscapesSeq, + { + token : "string", + regex : '`[cdw]?', + next : "start" + }, { + defaultToken: 'string' + } + ], + + "operator-heredoc-string": [ + { + onMatch: function(value, currentState, state) { + value = value.substring(value.length-2, value.length-1); + var map = {'>':'<',']':'[',')':'(','}':'{'}; + if(Object.keys(map).indexOf(value) != -1) + value = map[value]; + if(value != state[1]) return "string"; + state.shift(); + state.shift(); + + return "string"; + }, + regex: '(?:[\\]\\)}>]+)"', + next: 'start' + }, { + token: 'string', + regex: '[^\\]\\)}>]+' + } + ], + + "identifier-heredoc-string": [ + { + onMatch: function(value, currentState, state) { + value = value.substring(0, value.length-1); + if(value != state[1]) return "string"; + state.shift(); + state.shift(); + + return "string"; + }, + regex: '^(?:[A-Za-z_][a-zA-Z0-9]+)"', + next: 'start' + }, { + token: 'string', + regex: '[^\\]\\)}>]+' + } + ], + + "d-asm": [ + { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: 'keyword.instruction', + regex: '[a-zA-Z]+', + next: 'd-asm-instruction' + }, { + token: "text", + regex: "\\s+" + } + ], + + // minimal asm support + 'd-asm-instruction': [ + { + token: 'constant.language', + regex: /AL|AH|AX|EAX|BL|BH|BX|EBX|CL|CH|CX|ECX|DL|DH|DX|EDX|BP|EBP|SP|ESP|DI|EDI|SI|ESI/i + }, { + token: 'identifier', + regex: '[a-zA-Z]+' + }, { + token: 'string', + regex: '".*"' + }, { + token: 'comment', + regex: '//.*$' + }, { + token: 'constant.numeric', + regex: '[0-9.xA-F]+' + }, { + token: 'punctuation.operator', + regex: '\\,' + }, { + token: 'punctuation.operator', + regex: ';', + next: 'd-asm' + }, { + token: 'text', + regex: '\\s+' + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +DHighlightRules.metaData = { + comment: 'D language', + fileTypes: [ 'd', 'di' ], + firstLineMatch: '^#!.*\\b[glr]?dmd\\b.', + foldingStartMarker: '(?x)/\\*\\*(?!\\*)|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))', + foldingStopMarker: '(?<!\\*)\\*\\*/|^\\s*\\}', + keyEquivalent: '^~D', + name: 'D', + scopeName: 'source.d' +}; +oop.inherits(DHighlightRules, TextHighlightRules); + +exports.DHighlightRules = DHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/dart.js b/plugins/node_modules/ace/lib/ace/mode/dart.js new file mode 100644 index 00000000..ba9fff18 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/dart.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var CMode = require("./c_cpp").Mode; +var DartHighlightRules = require("./dart_highlight_rules").DartHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + CMode.call(this); + this.HighlightRules = DartHighlightRules; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, CMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/dart"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/dart_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/dart_highlight_rules.js new file mode 100644 index 00000000..2c7da53f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/dart_highlight_rules.js @@ -0,0 +1,184 @@ +/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 958518BC-799F-477A-99F9-5B28EBF230F6) */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var DartHighlightRules = function() { + + var constantLanguage = "true|false|null"; + var variableLanguage = "this|super"; + var keywordControl = "try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await"; + var keywordDeclaration = "abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum"; + var storageModifier = "static|final|const"; + var storageType = "void|bool|num|int|double|dynamic|var|String"; + + var keywordMapper = this.createKeywordMapper({ + "constant.language.dart": constantLanguage, + "variable.language.dart": variableLanguage, + "keyword.control.dart": keywordControl, + "keyword.declaration.dart": keywordDeclaration, + "storage.modifier.dart": storageModifier, + "storage.type.primitive.dart": storageType + }, "identifier"); + + var stringfill = { + defaultToken : "string" + }; + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = + { + "start": [ + { + token : "comment", + regex : /\/\/.*$/ + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : /\/\*/, + next : "comment" + }, + { + token: ["meta.preprocessor.script.dart"], + regex: "^(#!.*)$" + }, + { + token: "keyword.other.import.dart", + regex: "(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)" + }, + { + token : ["keyword.other.import.dart", "text"], + regex : "(?:\\b)(prefix)(\\s*:)" + }, + { + regex: "\\bas\\b", + token: "keyword.cast.dart" + }, + { + regex: "\\?|:", + token: "keyword.control.ternary.dart" + }, + { + regex: "(?:\\b)(is\\!?)(?:\\b)", + token: ["keyword.operator.dart"] + }, + { + regex: "(<<|>>>?|~|\\^|\\||&)", + token: ["keyword.operator.bitwise.dart"] + }, + { + regex: "((?:&|\\^|\\||<<|>>>?)=)", + token: ["keyword.operator.assignment.bitwise.dart"] + }, + { + regex: "(===?|!==?|<=?|>=?)", + token: ["keyword.operator.comparison.dart"] + }, + { + regex: "((?:[+*/%-]|\\~)=)", + token: ["keyword.operator.assignment.arithmetic.dart"] + }, + { + regex: "=", + token: "keyword.operator.assignment.dart" + }, + { + token : "string", + regex : "'''", + next : "qdoc" + }, + { + token : "string", + regex : '"""', + next : "qqdoc" + }, + { + token : "string", + regex : "'", + next : "qstring" + }, + { + token : "string", + regex : '"', + next : "qqstring" + }, + { + regex: "(\\-\\-|\\+\\+)", + token: ["keyword.operator.increment-decrement.dart"] + }, + { + regex: "(\\-|\\+|\\*|\\/|\\~\\/|%)", + token: ["keyword.operator.arithmetic.dart"] + }, + { + regex: "(!|&&|\\|\\|)", + token: ["keyword.operator.logical.dart"] + }, + { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, + { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, + { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "qdoc" : [ + { + token : "string", + regex : ".*?'''", + next : "start" + }, stringfill], + + "qqdoc" : [ + { + token : "string", + regex : '.*?"""', + next : "start" + }, stringfill], + + "qstring" : [ + { + token : "string", + regex : "[^\\\\']*(?:\\\\.[^\\\\']*)*'", + next : "start" + }, stringfill], + + "qqstring" : [ + { + token : "string", + regex : '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', + next : "start" + }, stringfill] +}; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(DartHighlightRules, TextHighlightRules); + +exports.DartHighlightRules = DartHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/diff.js b/plugins/node_modules/ace/lib/ace/mode/diff.js new file mode 100644 index 00000000..f3c46a1b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/diff.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./diff_highlight_rules").DiffHighlightRules; +var FoldMode = require("./folding/diff").FoldMode; + +var Mode = function() { + this.HighlightRules = HighlightRules; + this.foldingRules = new FoldMode(["diff", "@@|\\*{5}"], "i"); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.$id = "ace/mode/diff"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/diff_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/diff_highlight_rules.js new file mode 100644 index 00000000..dd99e8c1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/diff_highlight_rules.js @@ -0,0 +1,108 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var DiffHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [{ + regex: "^(?:\\*{15}|={67}|-{3}|\\+{3})$", + token: "punctuation.definition.separator.diff", + "name": "keyword" + }, { //diff.range.unified + regex: "^(@@)(\\s*.+?\\s*)(@@)(.*)$", + token: [ + "constant", + "constant.numeric", + "constant", + "comment.doc.tag" + ] + }, { //diff.range.normal + regex: "^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$", + token: [ + "constant.numeric", + "punctuation.definition.range.diff", + "constant.function", + "constant.numeric", + "punctuation.definition.range.diff", + "invalid" + ], + "name": "meta." + }, { + regex: "^(\\-{3}|\\+{3}|\\*{3})( .+)$", + token: [ + "constant.numeric", + "meta.tag" + ] + }, { // added + regex: "^([!+>])(.*?)(\\s*)$", + token: [ + "support.constant", + "text", + "invalid" + ] + }, { // removed + regex: "^([<\\-])(.*?)(\\s*)$", + token: [ + "support.function", + "string", + "invalid" + ] + }, { + regex: "^(diff)(\\s+--\\w+)?(.+?)( .+)?$", + token: ["variable", "variable", "keyword", "variable"] + }, { + regex: "^Index.+$", + token: "variable" + }, { + regex: "^\\s+$", + token: "text" + }, { + regex: "\\s*$", + token: "invalid" + }, { + defaultToken: "invisible", + caseInsensitive: true + } + ] + }; +}; + +oop.inherits(DiffHighlightRules, TextHighlightRules); + +exports.DiffHighlightRules = DiffHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/django.js b/plugins/node_modules/ace/lib/ace/mode/django.js new file mode 100644 index 00000000..59f9cb3a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/django.js @@ -0,0 +1,114 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var DjangoHighlightRules = function(){ + this.$rules = { + 'start': [{ + token: "string", + regex: '".*?"' + }, { + token: "string", + regex: "'.*?'" + }, { + token: "constant", + regex: '[0-9]+' + }, { + token: "variable", + regex: "[-_a-zA-Z0-9:]+" + }], + 'tag': [{ + token: "entity.name.function", + regex: "[a-zA-Z][_a-zA-Z0-9]*", + next: "start" + }] + }; +}; + +oop.inherits(DjangoHighlightRules, TextHighlightRules); + +var DjangoHtmlHighlightRules = function() { + this.$rules = new HtmlHighlightRules().getRules(); + + for (var i in this.$rules) { + this.$rules[i].unshift({ + token: "comment.line", + regex: "\\{#.*?#\\}" + }, { + token: "comment.block", + regex: "\\{\\%\\s*comment\\s*\\%\\}", + merge: true, + next: "django-comment" + }, { + token: "constant.language", + regex: "\\{\\{", + next: "django-start" + }, { + token: "constant.language", + regex: "\\{\\%", + next: "django-tag" + }); + this.embedRules(DjangoHighlightRules, "django-", [{ + token: "comment.block", + regex: "\\{\\%\\s*endcomment\\s*\\%\\}", + merge: true, + next: "start" + }, { + token: "constant.language", + regex: "\\%\\}", + next: "start" + }, { + token: "constant.language", + regex: "\\}\\}", + next: "start" + }]); + } +}; + +oop.inherits(DjangoHtmlHighlightRules, HtmlHighlightRules); + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = DjangoHtmlHighlightRules; +}; +oop.inherits(Mode, HtmlMode); + +(function() { + this.$id = "ace/mode/django"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/doc_comment_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/doc_comment_highlight_rules.js new file mode 100644 index 00000000..cfa71d44 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/doc_comment_highlight_rules.js @@ -0,0 +1,79 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var DocCommentHighlightRules = function() { + this.$rules = { + "start" : [ { + token : "comment.doc.tag", + regex : "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken : "comment.doc", + caseInsensitive: true + }] + }; +}; + +oop.inherits(DocCommentHighlightRules, TextHighlightRules); + +DocCommentHighlightRules.getTagRule = function(start) { + return { + token : "comment.doc.tag.storage.type", + regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; + +DocCommentHighlightRules.getStartRule = function(start) { + return { + token : "comment.doc", // doc comment + regex : "\\/\\*(?=\\*)", + next : start + }; +}; + +DocCommentHighlightRules.getEndRule = function (start) { + return { + token : "comment.doc", // closing comment + regex : "\\*\\/", + next : start + }; +}; + + +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/dockerfile.js b/plugins/node_modules/ace/lib/ace/mode/dockerfile.js new file mode 100644 index 00000000..26d546b4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/dockerfile.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var ShMode = require("./sh").Mode; +var DockerfileHighlightRules = require("./dockerfile_highlight_rules").DockerfileHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + ShMode.call(this); + + this.HighlightRules = DockerfileHighlightRules; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, ShMode); + +(function() { + this.$id = "ace/mode/dockerfile"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/dockerfile_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/dockerfile_highlight_rules.js new file mode 100644 index 00000000..f6f0a94c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/dockerfile_highlight_rules.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; + +var DockerfileHighlightRules = function() { + ShHighlightRules.call(this); + + var startRules = this.$rules.start; + for (var i = 0; i < startRules.length; i++) { + if (startRules[i].token == "variable.language") { + startRules.splice(i, 0, { + token: "constant.language", + regex: "(?:^(?:FROM|MAINTAINER|RUN|CMD|EXPOSE|ENV|ADD|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|COPY|LABEL)\\b)", + caseInsensitive: true + }); + break; + } + } + +}; + +oop.inherits(DockerfileHighlightRules, ShHighlightRules); + +exports.DockerfileHighlightRules = DockerfileHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/dot.js b/plugins/node_modules/ace/lib/ace/mode/dot.js new file mode 100644 index 00000000..7a347e72 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/dot.js @@ -0,0 +1,56 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var DotHighlightRules = require("./dot_highlight_rules").DotHighlightRules; +var DotFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = DotHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new DotFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ["//", "#"]; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/dot"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/dot_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/dot_highlight_rules.js new file mode 100644 index 00000000..6f429381 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/dot_highlight_rules.js @@ -0,0 +1,123 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; + +var DotHighlightRules = function() { + + var keywords = lang.arrayToMap( + ("strict|node|edge|graph|digraph|subgraph").split("|") + ); + + var attributes = lang.arrayToMap( + ("damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z").split("|") + ); + + this.$rules = { + "start" : [ + { + token : "comment", + regex : /\/\/.*$/ + }, { + token : "comment", + regex : /#.*$/ + }, { + token : "comment", // multi line comment + merge : true, + regex : /\/\*/, + next : "comment" + }, { + token : "string", + regex : "'(?=.)", + next : "qstring" + }, { + token : "string", + regex : '"(?=.)', + next : "qqstring" + }, { + token : "constant.numeric", + regex : /[+\-]?\d+(?:(?:\.\d*)?(?:[eE][+\-]?\d+)?)?\b/ + }, { + token : "keyword.operator", + regex : /\+|=|\->/ + }, { + token : "punctuation.operator", + regex : /,|;/ + }, { + token : "paren.lparen", + regex : /[\[{]/ + }, { + token : "paren.rparen", + regex : /[\]}]/ + }, { + token: "comment", + regex: /^#!.*$/ + }, { + token: function(value) { + if (keywords.hasOwnProperty(value.toLowerCase())) { + return "keyword"; + } + else if (attributes.hasOwnProperty(value.toLowerCase())) { + return "variable"; + } + else { + return "text"; + } + }, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "qqstring" : [ + { + token : "string", + regex : '[^"\\\\]+', + merge : true + }, { + token : "string", + regex : "\\\\$", + next : "qqstring", + merge : true + }, { + token : "string", + regex : '"|$', + next : "start", + merge : true + } + ], + "qstring" : [ + { + token : "string", + regex : "[^'\\\\]+", + merge : true + }, { + token : "string", + regex : "\\\\$", + next : "qstring", + merge : true + }, { + token : "string", + regex : "'|$", + next : "start", + merge : true + } + ] + }; +}; + +oop.inherits(DotHighlightRules, TextHighlightRules); + +exports.DotHighlightRules = DotHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/drools.js b/plugins/node_modules/ace/lib/ace/mode/drools.js new file mode 100644 index 00000000..3a361ec8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/drools.js @@ -0,0 +1,55 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var DroolsHighlightRules = require("./drools_highlight_rules").DroolsHighlightRules; +var DroolsFoldMode = require("./folding/drools").FoldMode; + +var Mode = function() { + this.HighlightRules = DroolsHighlightRules; + this.foldingRules = new DroolsFoldMode(); + this.$behaviour = this.$defaultBehaviour; + +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.$id = "ace/mode/drools"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/drools_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/drools_highlight_rules.js new file mode 100644 index 00000000..f8ac5c2f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/drools_highlight_rules.js @@ -0,0 +1,261 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; + +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var packageIdentifierRe = "[a-zA-Z\\$_\u00a1-\uffff][\\.a-zA-Z\\d\\$_\u00a1-\uffff]*"; + +var DroolsHighlightRules = function() { + + var keywords = ("date|effective|expires|lock|on|active|no|loop|auto|focus" + + "|activation|group|agenda|ruleflow|duration|timer|calendars|refract|direct" + + "|dialect|salience|enabled|attributes|extends|template" + + "|function|contains|matches|eval|excludes|soundslike" + + "|memberof|not|in|or|and|exists|forall|over|from|entry|point|accumulate|acc|collect" + + "|action|reverse|result|end|init|instanceof|extends|super|boolean|char|byte|short" + + "|int|long|float|double|this|void|class|new|case|final|if|else|for|while|do" + + "|default|try|catch|finally|switch|synchronized|return|throw|break|continue|assert" + + "|modify|static|public|protected|private|abstract|native|transient|volatile" + + "|strictfp|throws|interface|enum|implements|type|window|trait|no-loop|str" + ); + + var langClasses = ( + "AbstractMethodError|AssertionError|ClassCircularityError|"+ + "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ + "ExceptionInInitializerError|IllegalAccessError|"+ + "IllegalThreadStateException|InstantiationError|InternalError|"+ + "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ + "SuppressWarnings|TypeNotPresentException|UnknownError|"+ + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ + "InstantiationException|IndexOutOfBoundsException|"+ + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ + "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ + "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ + "ArrayStoreException|ClassCastException|LinkageError|"+ + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ + "Cloneable|Class|CharSequence|Comparable|String|Object" + ); + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "constant.language": "null", + "support.class" : langClasses, + "support.function" : "retract|update|modify|insert" + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + var stringRules = function() { + return [{ + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }]; + }; + + + var basicPreRules = function(blockCommentRules) { + return [{ + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : blockCommentRules + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }]; + }; + + var blockCommentRules = function(returnRule) { + return [ + { + token : "comment.block", // closing comment + regex : "\\*\\/", + next : returnRule + }, { + defaultToken : "comment.block" + } + ]; + }; + + var basicPostRules = function() { + return [{ + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + }]; + }; + + + this.$rules = { + "start" : [].concat(basicPreRules("block.comment"), [ + { + token : "entity.name.type", + regex : "@[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + // package com.example + token : ["keyword","text","entity.name.type"], + regex : "(package)(\\s+)(" + packageIdentifierRe +")" + }, { + // import function com.Util.staticMethod + token : ["keyword","text","keyword","text","entity.name.type"], + regex : "(import)(\\s+)(function)(\\s+)(" + packageIdentifierRe +")" + }, { + // import function com.Util.staticMethod + token : ["keyword","text","entity.name.type"], + regex : "(import)(\\s+)(" + packageIdentifierRe +")" + }, { + // global com.example.Type identifier + token : ["keyword","text","entity.name.type","text","variable"], + regex : "(global)(\\s+)(" + packageIdentifierRe +")(\\s+)(" + identifierRe +")" + }, { + // declare trait DeclaredType + token : ["keyword","text","keyword","text","entity.name.type"], + regex : "(declare)(\\s+)(trait)(\\s+)(" + identifierRe +")" + }, { + // declare trait DeclaredType + token : ["keyword","text","entity.name.type"], + regex : "(declare)(\\s+)(" + identifierRe +")" + }, { + // declare trait DeclaredType + token : ["keyword","text","entity.name.type"], + regex : "(extends)(\\s+)(" + packageIdentifierRe +")" + }, { + // rule ... + token : ["keyword","text"], + regex : "(rule)(\\s+)", + next : "asset.name" + }], + stringRules(), + [{ + // variable : + token : ["variable.other","text","text"], + regex : "(" + identifierRe + ")(\\s*)(:)" + }, { + // query ... + token : ["keyword","text"], + regex : "(query)(\\s+)", + next : "asset.name" + }, { + // when ... + token : ["keyword","text"], + regex : "(when)(\\s*)" + }, { + // then <java/mvel code> end + token : ["keyword","text"], + regex : "(then)(\\s*)", + next : "java-start" + }, { + token : "paren.lparen", + regex : /[\[({]/ + }, { + token : "paren.rparen", + regex : /[\])}]/ + }], basicPostRules()), + "block.comment" : blockCommentRules("start"), + "asset.name" : [ + { + token : "entity.name", + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "entity.name", + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "entity.name", + regex : identifierRe + }, { + regex: "", + token: "empty", + next: "start" + }] + }; + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); + + this.embedRules(JavaHighlightRules, "java-", [ + { + token : "support.function", + regex: "\\b(insert|modify|retract|update)\\b" + }, { + token : "keyword", + regex: "\\bend\\b", + next : "start" + }]); + +}; + +oop.inherits(DroolsHighlightRules, TextHighlightRules); + +exports.DroolsHighlightRules = DroolsHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/eiffel.js b/plugins/node_modules/ace/lib/ace/mode/eiffel.js new file mode 100644 index 00000000..187ced1b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/eiffel.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var EiffelHighlightRules = require("./eiffel_highlight_rules").EiffelHighlightRules; + +var Mode = function() { + this.HighlightRules = EiffelHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.$id = "ace/mode/eiffel"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/eiffel_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/eiffel_highlight_rules.js new file mode 100644 index 00000000..07cf1df9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/eiffel_highlight_rules.js @@ -0,0 +1,136 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var EiffelHighlightRules = function() { + var keywords = "across|agent|alias|all|attached|as|assign|attribute|check|" + + "class|convert|create|debug|deferred|detachable|do|else|elseif|end|" + + "ensure|expanded|export|external|feature|from|frozen|if|inherit|" + + "inspect|invariant|like|local|loop|not|note|obsolete|old|once|" + + "Precursor|redefine|rename|require|rescue|retry|select|separate|" + + "some|then|undefine|until|variant|when"; + + var operatorKeywords = "and|implies|or|xor"; + + var languageConstants = "Void"; + + var booleanConstants = "True|False"; + + var languageVariables = "Current|Result"; + + var keywordMapper = this.createKeywordMapper({ + "constant.language": languageConstants, + "constant.language.boolean": booleanConstants, + "variable.language": languageVariables, + "keyword.operator": operatorKeywords, + "keyword": keywords + }, "identifier", true); + + var simpleString = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/; + + this.$rules = { + "start": [{ + token : "string.quoted.other", // Aligned-verbatim-strings (verbatim option not supported) + regex : /"\[/, + next: "aligned_verbatim_string" + }, { + token : "string.quoted.other", // Non-aligned-verbatim-strings (verbatim option not supported) + regex : /"\{/, + next: "non-aligned_verbatim_string" + }, { + token : "string.quoted.double", + regex : /"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/ + }, { + token : "comment.line.double-dash", + regex : /--.*/ + }, { + token : "constant.character", + regex : /'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/ + }, { + token : "constant.numeric", // hexa | octal | bin + regex : /\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/ + }, { + token : "constant.numeric", + regex : /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/ + }, { + token : "paren.lparen", + regex : /[\[({]|<<|\|\(/ + }, { + token : "paren.rparen", + regex : /[\])}]|>>|\|\)/ + }, { + token : "keyword.operator", // punctuation + regex : /:=|->|\.(?=\w)|[;,:?]/ + }, { + token : "keyword.operator", + regex : /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/ + }, { + token : function (v) { + var result = keywordMapper(v); + if (result === "identifier" && v === v.toUpperCase()) { + result = "entity.name.type"; + } + return result; + }, + regex : /[a-zA-Z][a-zA-Z\d_]*\b/ + }, { + token : "text", + regex : /\s+/ + } + ], + "aligned_verbatim_string" : [{ + token : "string", + regex : /]"/, + next : "start" + }, { + token : "string", + regex : simpleString + } + ], + "non-aligned_verbatim_string" : [{ + token : "string.quoted.other", + regex : /}"/, + next : "start" + }, { + token : "string.quoted.other", + regex : simpleString + } + ]}; +}; + +oop.inherits(EiffelHighlightRules, TextHighlightRules); + +exports.EiffelHighlightRules = EiffelHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/ejs.js b/plugins/node_modules/ace/lib/ace/mode/ejs.js new file mode 100644 index 00000000..3bf9edb2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ejs.js @@ -0,0 +1,97 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; + +var EjsHighlightRules = function(start, end) { + HtmlHighlightRules.call(this); + + if (!start) + start = "(?:<%|<\\?|{{)"; + if (!end) + end = "(?:%>|\\?>|}})"; + + for (var i in this.$rules) { + this.$rules[i].unshift({ + token : "markup.list.meta.tag", + regex : start + "(?![>}])[-=]?", + push : "ejs-start" + }); + } + + this.embedRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "ejs-", [{ + token : "markup.list.meta.tag", + regex : "-?" + end, + next : "pop" + }, { + token: "comment", + regex: "//.*?" + end, + next: "pop" + }]); + + this.normalizeRules(); +}; + + +oop.inherits(EjsHighlightRules, HtmlHighlightRules); + +exports.EjsHighlightRules = EjsHighlightRules; + + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var RubyMode = require("./ruby").Mode; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = EjsHighlightRules; + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode, + "ejs-": JavaScriptMode + }); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + + this.$id = "ace/mode/ejs"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/elixir.js b/plugins/node_modules/ace/lib/ace/mode/elixir.js new file mode 100644 index 00000000..b17355c4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/elixir.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = ElixirHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "#"; + // this.blockComment = {start: ""/*"", end: ""*/""}; + // Extra logic goes here. + this.$id = "ace/mode/elixir"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/elixir_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/elixir_highlight_rules.js new file mode 100644 index 00000000..f8f93606 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/elixir_highlight_rules.js @@ -0,0 +1,433 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from https://raw.githubusercontent.com/elixir-lang/elixir-tmbundle/master/Syntaxes/Elixir.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ElixirHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: + [ 'meta.module.elixir', + 'keyword.control.module.elixir', + 'meta.module.elixir', + 'entity.name.type.module.elixir' ], + regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc (?:~[a-z])?"""', + push: + [ { token: 'comment.documentation.heredoc', + regex: '\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.heredoc' } ], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc ~[A-Z]"""', + push: + [ { token: 'comment.documentation.heredoc', + regex: '\\s*"""', + next: 'pop' }, + { defaultToken: 'comment.documentation.heredoc' } ], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'', + push: + [ { token: 'comment.documentation.heredoc', + regex: '\\s*\'\'\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.heredoc' } ], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc ~[A-Z]\'\'\'', + push: + [ { token: 'comment.documentation.heredoc', + regex: '\\s*\'\'\'', + next: 'pop' }, + { defaultToken: 'comment.documentation.heredoc' } ], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.false', + regex: '@(?:module|type)?doc false', + comment: '@doc false is treated as documentation' }, + { token: 'comment.documentation.string', + regex: '@(?:module|type)?doc "', + push: + [ { token: 'comment.documentation.string', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.string' } ], + comment: '@doc with string is treated as documentation' }, + { token: 'keyword.control.elixir', + regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])' }, + { token: 'keyword.operator.elixir', + regex: '\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b', + comment: ' as above, just doesn\'t need a \'end\' and does a logic operation' }, + { token: 'constant.language.elixir', + regex: '\\b(?:nil|true|false)\\b(?![?!])' }, + { token: 'variable.language.elixir', + regex: '\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])' }, + { token: + [ 'punctuation.definition.variable.elixir', + 'variable.other.readwrite.module.elixir' ], + regex: '(@)([a-zA-Z_]\\w*)' }, + { token: + [ 'punctuation.definition.variable.elixir', + 'variable.other.anonymous.elixir' ], + regex: '(&)(\\d*)' }, + { token: 'variable.other.constant.elixir', + regex: '\\b[A-Z]\\w*\\b' }, + { token: 'constant.numeric.elixir', + regex: '\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' }, + { token: 'punctuation.definition.constant.elixir', + regex: ':\'', + push: + [ { token: 'punctuation.definition.constant.elixir', + regex: '\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] }, + { token: 'punctuation.definition.constant.elixir', + regex: ':"', + push: + [ { token: 'punctuation.definition.constant.elixir', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '(?:\'\'\')', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>\'\'\')', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*\'\'\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ], + comment: 'Single-quoted heredocs' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '\'', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'support.function.variable.quoted.single.elixir' } ], + comment: 'single quoted string (allows for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '(?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>""")', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.heredoc.elixir' } ], + comment: 'Double-quoted heredocs' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '"', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.elixir' } ], + comment: 'double quoted string (allows for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z](?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '~[a-z](?>""")', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.heredoc.elixir' } ], + comment: 'Double-quoted heredocs sigils' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\{', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\\}[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' } ], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\[', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\\][a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' } ], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\<', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\\>[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' } ], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\(', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\\)[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' } ], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z][^\\w]', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '[^\\w][a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' } ], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z](?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '~[A-Z](?>""")', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], + comment: 'Double-quoted heredocs sigils' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\{', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\\}[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\[', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\\][a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\<', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\\>[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\(', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '\\)[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z][^\\w]', + push: + [ { token: 'punctuation.definition.string.end.elixir', + regex: '[^\\w][a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], + comment: 'sigil (without interpolation)' }, + { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'], + regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)', + comment: 'symbols' }, + { token: 'punctuation.definition.constant.elixir', + regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)', + comment: 'symbols' }, + { token: + [ 'punctuation.definition.comment.elixir', + 'comment.line.number-sign.elixir' ], + regex: '(#)(.*)' }, + { token: 'constant.numeric.elixir', + regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])', + comment: '\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (3rd alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t' }, + /* { token: 'punctuation.separator.variable.elixir', + regex: '(?<=\\{|do|\\{\\s|do\\s)\\|', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<=\\{|do|\\{\\s|do\\s)(\\|)', + push: + [ { token: 'punctuation.separator.variable.elixir', + regex: '\\|', + next: 'pop' }, + { token: 'variable.other.block.elixir', + regex: '[_a-zA-Z][_a-zA-Z0-9]*' }, + { token: 'punctuation.separator.variable.elixir', regex: ',' } ] },*/ + { token: 'keyword.operator.assignment.augmented.elixir', + regex: '\\+=|\\-=|\\|\\|=|~=|&&=' }, + { token: 'keyword.operator.comparison.elixir', + regex: '===?|!==?|<=?|>=?' }, + { token: 'keyword.operator.bitwise.elixir', + regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' }, + { token: 'keyword.operator.logical.elixir', + regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b', + originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' }, + { token: 'keyword.operator.arithmetic.elixir', + regex: '\\*|\\+|\\-|/' }, + { token: 'keyword.operator.other.elixir', + regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' }, + { token: 'keyword.operator.assignment.elixir', regex: '=' }, + { token: 'punctuation.separator.other.elixir', regex: ':' }, + { token: 'punctuation.separator.statement.elixir', + regex: '\\;' }, + { token: 'punctuation.separator.object.elixir', regex: ',' }, + { token: 'punctuation.separator.method.elixir', regex: '\\.' }, + { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' }, + { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' }, + { token: 'punctuation.section.function.elixir', + regex: '\\(|\\)' } ], + '#escaped_char': + [ { token: 'constant.character.escape.elixir', + regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' } ], + '#interpolated_elixir': + [ { token: + [ 'source.elixir.embedded.source', + 'source.elixir.embedded.source.empty' ], + regex: '(#\\{)(\\})' }, + { todo: + { token: 'punctuation.section.embedded.elixir', + regex: '#\\{', + push: + [ { token: 'punctuation.section.embedded.elixir', + regex: '\\}', + next: 'pop' }, + { include: '#nest_curly_and_self' }, + { include: '$self' }, + { defaultToken: 'source.elixir.embedded.source' } ] } } ], + '#nest_curly_and_self': + [ { token: 'punctuation.section.scope.elixir', + regex: '\\{', + push: + [ { token: 'punctuation.section.scope.elixir', + regex: '\\}', + next: 'pop' }, + { include: '#nest_curly_and_self' } ] }, + { include: '$self' } ], + '#regex_sub': + [ { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { token: + [ 'punctuation.definition.arbitrary-repitition.elixir', + 'string.regexp.arbitrary-repitition.elixir', + 'string.regexp.arbitrary-repitition.elixir', + 'punctuation.definition.arbitrary-repitition.elixir' ], + regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' }, + { token: 'punctuation.definition.character-class.elixir', + regex: '\\[(?:\\^?\\])?', + push: + [ { token: 'punctuation.definition.character-class.elixir', + regex: '\\]', + next: 'pop' }, + { include: '#escaped_char' }, + { defaultToken: 'string.regexp.character-class.elixir' } ] }, + { token: 'punctuation.definition.group.elixir', + regex: '\\(', + push: + [ { token: 'punctuation.definition.group.elixir', + regex: '\\)', + next: 'pop' }, + { include: '#regex_sub' }, + { defaultToken: 'string.regexp.group.elixir' } ] }, + { token: + [ 'punctuation.definition.comment.elixir', + 'comment.line.number-sign.elixir' ], + regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)', + originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$', + comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] }; + + this.normalizeRules(); +}; + +ElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.', + fileTypes: [ 'ex', 'exs' ], + firstLineMatch: '^#!/.*\\belixir', + foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$', + foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)', + keyEquivalent: '^~E', + name: 'Elixir', + scopeName: 'source.elixir' }; + + +oop.inherits(ElixirHighlightRules, TextHighlightRules); + +exports.ElixirHighlightRules = ElixirHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/elm.js b/plugins/node_modules/ace/lib/ace/mode/elm.js new file mode 100644 index 00000000..329e8131 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/elm.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./elm_highlight_rules").ElmHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = HighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = {start: "{-", end: "-}", nestable: true}; + // Extra logic goes here. + this.$id = "ace/mode/elm"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/elm_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/elm_highlight_rules.js new file mode 100644 index 00000000..57a13af5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/elm_highlight_rules.js @@ -0,0 +1,167 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +// TODO check with https://github.com/deadfoxygrandpa/Elm.tmLanguage + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ElmHighlightRules = function() { + var keywordMapper = this.createKeywordMapper({ + "keyword": "as|case|class|data|default|deriving|do|else|export|foreign|" + + "hiding|jsevent|if|import|in|infix|infixl|infixr|instance|let|" + + "module|newtype|of|open|then|type|where|_|port|\u03BB" + }, "identifier"); + + var escapeRe = /\\(\d+|['"\\&trnbvf])/; + + var smallRe = /[a-z_]/.source; + var largeRe = /[A-Z]/.source; + var idRe = /[a-z_A-Z0-9']/.source; + + this.$rules = { + start: [{ + token: "string.start", + regex: '"', + next: "string" + }, { + token: "string.character", + regex: "'(?:" + escapeRe.source + "|.)'?" + }, { + regex: /0(?:[xX][0-9A-Fa-f]+|[oO][0-7]+)|\d+(\.\d+)?([eE][-+]?\d*)?/, + token: "constant.numeric" + }, { + token: "comment", + regex: "--.*" + }, { + token : "keyword", + regex : /\.\.|\||:|=|\\|"|->|<-|\u2192/ + }, { + token : "keyword.operator", + regex : /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]+/ + }, { + token : "operator.punctuation", + regex : /[,;`]/ + }, { + regex : largeRe + idRe + "+\\.?", + token : function(value) { + if (value[value.length - 1] == ".") + return "entity.name.function"; + return "constant.language"; + } + }, { + regex : "^" + smallRe + idRe + "+", + token : function(value) { + return "constant.language"; + } + }, { + token : keywordMapper, + regex : "[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b" + }, { + regex: "{-#?", + token: "comment.start", + onMatch: function(value, currentState, stack) { + this.next = value.length == 2 ? "blockComment" : "docComment"; + return this.token; + } + }, { + token: "variable.language", + regex: /\[markdown\|/, + next: "markdown" + }, { + token: "paren.lparen", + regex: /[\[({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + } ], + markdown: [{ + regex: /\|\]/, + next: "start" + }, { + defaultToken : "string" + }], + blockComment: [{ + regex: "{-", + token: "comment.start", + push: "blockComment" + }, { + regex: "-}", + token: "comment.end", + next: "pop" + }, { + defaultToken: "comment" + }], + docComment: [{ + regex: "{-", + token: "comment.start", + push: "docComment" + }, { + regex: "-}", + token: "comment.end", + next: "pop" + }, { + defaultToken: "doc.comment" + }], + string: [{ + token: "constant.language.escape", + regex: escapeRe + }, { + token: "text", + regex: /\\(\s|$)/, + next: "stringGap" + }, { + token: "string.end", + regex: '"', + next: "start" + }, { + defaultToken: "string" + }], + stringGap: [{ + token: "text", + regex: /\\/, + next: "string" + }, { + token: "error", + regex: "", + next: "start" + }] + }; + + this.normalizeRules(); +}; + +oop.inherits(ElmHighlightRules, TextHighlightRules); + +exports.ElmHighlightRules = ElmHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/erlang.js b/plugins/node_modules/ace/lib/ace/mode/erlang.js new file mode 100644 index 00000000..7ab9c026 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/erlang.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ErlangHighlightRules = require("./erlang_highlight_rules").ErlangHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = ErlangHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "%"; + this.blockComment = null; + this.$id = "ace/mode/erlang"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/erlang_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/erlang_highlight_rules.js new file mode 100644 index 00000000..77ce8042 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/erlang_highlight_rules.js @@ -0,0 +1,876 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from tm bundles\erlang.tmbundle\Syntaxes\Erlang.plist (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ErlangHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { include: '#module-directive' }, + { include: '#import-export-directive' }, + { include: '#behaviour-directive' }, + { include: '#record-directive' }, + { include: '#define-directive' }, + { include: '#macro-directive' }, + { include: '#directive' }, + { include: '#function' }, + { include: '#everything-else' } ], + '#atom': + [ { token: 'punctuation.definition.symbol.begin.erlang', + regex: '\'', + push: + [ { token: 'punctuation.definition.symbol.end.erlang', + regex: '\'', + next: 'pop' }, + { token: + [ 'punctuation.definition.escape.erlang', + 'constant.other.symbol.escape.erlang', + 'punctuation.definition.escape.erlang', + 'constant.other.symbol.escape.erlang', + 'constant.other.symbol.escape.erlang' ], + regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, + { token: 'invalid.illegal.atom.erlang', regex: '\\\\\\^?.?' }, + { defaultToken: 'constant.other.symbol.quoted.single.erlang' } ] }, + { token: 'constant.other.symbol.unquoted.erlang', + regex: '[a-z][a-zA-Z\\d@_]*' } ], + '#behaviour-directive': + [ { token: + [ 'meta.directive.behaviour.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.behaviour.erlang', + 'keyword.control.directive.behaviour.erlang', + 'meta.directive.behaviour.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.behaviour.erlang', + 'entity.name.type.class.behaviour.definition.erlang', + 'meta.directive.behaviour.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.behaviour.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' } ], + '#binary': + [ { token: 'punctuation.definition.binary.begin.erlang', + regex: '<<', + push: + [ { token: 'punctuation.definition.binary.end.erlang', + regex: '>>', + next: 'pop' }, + { token: + [ 'punctuation.separator.binary.erlang', + 'punctuation.separator.value-size.erlang' ], + regex: '(,)|(:)' }, + { include: '#internal-type-specifiers' }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.binary.erlang' } ] } ], + '#character': + [ { token: + [ 'punctuation.definition.character.erlang', + 'punctuation.definition.escape.erlang', + 'constant.character.escape.erlang', + 'punctuation.definition.escape.erlang', + 'constant.character.escape.erlang', + 'constant.character.escape.erlang' ], + regex: '(\\$)(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, + { token: 'invalid.illegal.character.erlang', + regex: '\\$\\\\\\^?.?' }, + { token: + [ 'punctuation.definition.character.erlang', + 'constant.character.erlang' ], + regex: '(\\$)(\\S)' }, + { token: 'invalid.illegal.character.erlang', regex: '\\$.?' } ], + '#comment': + [ { token: 'punctuation.definition.comment.erlang', + regex: '%.*$', + push_: + [ { token: 'comment.line.percentage.erlang', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.percentage.erlang' } ] } ], + '#define-directive': + [ { token: + [ 'meta.directive.define.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.define.erlang', + 'keyword.control.directive.define.erlang', + 'meta.directive.define.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.define.erlang', + 'entity.name.function.macro.definition.erlang', + 'meta.directive.define.erlang', + 'punctuation.separator.parameters.erlang' ], + regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)', + push: + [ { token: + [ 'punctuation.definition.parameters.end.erlang', + 'meta.directive.define.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '(\\))(\\s*)(\\.)', + next: 'pop' }, + { include: '#everything-else' }, + { defaultToken: 'meta.directive.define.erlang' } ] }, + { token: 'meta.directive.define.erlang', + regex: '(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()', + push: + [ { token: + [ 'punctuation.definition.parameters.end.erlang', + 'meta.directive.define.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '(\\))(\\s*)(\\.)', + next: 'pop' }, + { token: + [ 'text', + 'punctuation.section.directive.begin.erlang', + 'text', + 'keyword.control.directive.define.erlang', + 'text', + 'punctuation.definition.parameters.begin.erlang', + 'text', + 'entity.name.function.macro.definition.erlang', + 'text', + 'punctuation.definition.parameters.begin.erlang' ], + regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()', + push: + [ { token: + [ 'punctuation.definition.parameters.end.erlang', + 'text', + 'punctuation.separator.parameters.erlang' ], + regex: '(\\))(\\s*)(,)', + next: 'pop' }, + { token: 'punctuation.separator.parameters.erlang', regex: ',' }, + { include: '#everything-else' } ] }, + { token: 'punctuation.separator.define.erlang', + regex: '\\|\\||\\||:|;|,|\\.|->' }, + { include: '#everything-else' }, + { defaultToken: 'meta.directive.define.erlang' } ] } ], + '#directive': + [ { token: + [ 'meta.directive.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.erlang', + 'keyword.control.directive.erlang', + 'meta.directive.erlang', + 'punctuation.definition.parameters.begin.erlang' ], + regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)', + push: + [ { token: + [ 'punctuation.definition.parameters.end.erlang', + 'meta.directive.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '(\\)?)(\\s*)(\\.)', + next: 'pop' }, + { include: '#everything-else' }, + { defaultToken: 'meta.directive.erlang' } ] }, + { token: + [ 'meta.directive.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.erlang', + 'keyword.control.directive.erlang', + 'meta.directive.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)' } ], + '#everything-else': + [ { include: '#comment' }, + { include: '#record-usage' }, + { include: '#macro-usage' }, + { include: '#expression' }, + { include: '#keyword' }, + { include: '#textual-operator' }, + { include: '#function-call' }, + { include: '#tuple' }, + { include: '#list' }, + { include: '#binary' }, + { include: '#parenthesized-expression' }, + { include: '#character' }, + { include: '#number' }, + { include: '#atom' }, + { include: '#string' }, + { include: '#symbolic-operator' }, + { include: '#variable' } ], + '#expression': + [ { token: 'keyword.control.if.erlang', + regex: '\\bif\\b', + push: + [ { token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.if.erlang' } ] }, + { token: 'keyword.control.case.erlang', + regex: '\\bcase\\b', + push: + [ { token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.case.erlang' } ] }, + { token: 'keyword.control.receive.erlang', + regex: '\\breceive\\b', + push: + [ { token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.receive.erlang' } ] }, + { token: + [ 'keyword.control.fun.erlang', + 'text', + 'entity.name.type.class.module.erlang', + 'text', + 'punctuation.separator.module-function.erlang', + 'text', + 'entity.name.function.erlang', + 'text', + 'punctuation.separator.function-arity.erlang' ], + regex: '\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)' }, + { token: 'keyword.control.fun.erlang', + regex: '\\bfun\\b', + push: + [ { token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { token: 'text', + regex: '(?=\\()', + push: + [ { token: 'punctuation.separator.clauses.erlang', + regex: ';|(?=\\bend\\b)', + next: 'pop' }, + { include: '#internal-function-parts' } ] }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.fun.erlang' } ] }, + { token: 'keyword.control.try.erlang', + regex: '\\btry\\b', + push: + [ { token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.try.erlang' } ] }, + { token: 'keyword.control.begin.erlang', + regex: '\\bbegin\\b', + push: + [ { token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.begin.erlang' } ] }, + { token: 'keyword.control.query.erlang', + regex: '\\bquery\\b', + push: + [ { token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.query.erlang' } ] } ], + '#function': + [ { token: + [ 'meta.function.erlang', + 'entity.name.function.definition.erlang', + 'meta.function.erlang' ], + regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()', + push: + [ { token: 'punctuation.terminator.function.erlang', + regex: '\\.', + next: 'pop' }, + { token: [ 'text', 'entity.name.function.erlang', 'text' ], + regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()' }, + { token: 'text', + regex: '(?=\\()', + push: + [ { token: 'punctuation.separator.clauses.erlang', + regex: ';|(?=\\.)', + next: 'pop' }, + { include: '#parenthesized-expression' }, + { include: '#internal-function-parts' } ] }, + { include: '#everything-else' }, + { defaultToken: 'meta.function.erlang' } ] } ], + '#function-call': + [ { token: 'meta.function-call.erlang', + regex: '(?=(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*\\())', + push: + [ { token: 'punctuation.definition.parameters.end.erlang', + regex: '\\)', + next: 'pop' }, + { token: + [ 'entity.name.type.class.module.erlang', + 'text', + 'punctuation.separator.module-function.erlang', + 'text', + 'entity.name.function.guard.erlang', + 'text', + 'punctuation.definition.parameters.begin.erlang' ], + regex: '(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()', + push: + [ { token: 'text', regex: '(?=\\))', next: 'pop' }, + { token: 'punctuation.separator.parameters.erlang', regex: ',' }, + { include: '#everything-else' } ] }, + { token: + [ 'entity.name.type.class.module.erlang', + 'text', + 'punctuation.separator.module-function.erlang', + 'text', + 'entity.name.function.erlang', + 'text', + 'punctuation.definition.parameters.begin.erlang' ], + regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\()', + push: + [ { token: 'text', regex: '(?=\\))', next: 'pop' }, + { token: 'punctuation.separator.parameters.erlang', regex: ',' }, + { include: '#everything-else' } ] }, + { defaultToken: 'meta.function-call.erlang' } ] } ], + '#import-export-directive': + [ { token: + [ 'meta.directive.import.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.import.erlang', + 'keyword.control.directive.import.erlang', + 'meta.directive.import.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.import.erlang', + 'entity.name.type.class.module.erlang', + 'meta.directive.import.erlang', + 'punctuation.separator.parameters.erlang' ], + regex: '^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', + push: + [ { token: + [ 'punctuation.definition.parameters.end.erlang', + 'meta.directive.import.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '(\\))(\\s*)(\\.)', + next: 'pop' }, + { include: '#internal-function-list' }, + { defaultToken: 'meta.directive.import.erlang' } ] }, + { token: + [ 'meta.directive.export.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.export.erlang', + 'keyword.control.directive.export.erlang', + 'meta.directive.export.erlang', + 'punctuation.definition.parameters.begin.erlang' ], + regex: '^(\\s*)(-)(\\s*)(export)(\\s*)(\\()', + push: + [ { token: + [ 'punctuation.definition.parameters.end.erlang', + 'meta.directive.export.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '(\\))(\\s*)(\\.)', + next: 'pop' }, + { include: '#internal-function-list' }, + { defaultToken: 'meta.directive.export.erlang' } ] } ], + '#internal-expression-punctuation': + [ { token: + [ 'punctuation.separator.clause-head-body.erlang', + 'punctuation.separator.clauses.erlang', + 'punctuation.separator.expressions.erlang' ], + regex: '(->)|(;)|(,)' } ], + '#internal-function-list': + [ { token: 'punctuation.definition.list.begin.erlang', + regex: '\\[', + push: + [ { token: 'punctuation.definition.list.end.erlang', + regex: '\\]', + next: 'pop' }, + { token: + [ 'entity.name.function.erlang', + 'text', + 'punctuation.separator.function-arity.erlang' ], + regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(/)', + push: + [ { token: 'punctuation.separator.list.erlang', + regex: ',|(?=\\])', + next: 'pop' }, + { include: '#everything-else' } ] }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.list.function.erlang' } ] } ], + '#internal-function-parts': + [ { token: 'text', + regex: '(?=\\()', + push: + [ { token: 'punctuation.separator.clause-head-body.erlang', + regex: '->', + next: 'pop' }, + { token: 'punctuation.definition.parameters.begin.erlang', + regex: '\\(', + push: + [ { token: 'punctuation.definition.parameters.end.erlang', + regex: '\\)', + next: 'pop' }, + { token: 'punctuation.separator.parameters.erlang', regex: ',' }, + { include: '#everything-else' } ] }, + { token: 'punctuation.separator.guards.erlang', regex: ',|;' }, + { include: '#everything-else' } ] }, + { token: 'punctuation.separator.expressions.erlang', + regex: ',' }, + { include: '#everything-else' } ], + '#internal-record-body': + [ { token: 'punctuation.definition.class.record.begin.erlang', + regex: '\\{', + push: + [ { token: 'meta.structure.record.erlang', + regex: '(?=\\})', + next: 'pop' }, + { token: + [ 'variable.other.field.erlang', + 'variable.language.omitted.field.erlang', + 'text', + 'keyword.operator.assignment.erlang' ], + regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')|(_))(\\s*)(=|::)', + push: + [ { token: 'punctuation.separator.class.record.erlang', + regex: ',|(?=\\})', + next: 'pop' }, + { include: '#everything-else' } ] }, + { token: + [ 'variable.other.field.erlang', + 'text', + 'punctuation.separator.class.record.erlang' ], + regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)((?:,)?)' }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.record.erlang' } ] } ], + '#internal-type-specifiers': + [ { token: 'punctuation.separator.value-type.erlang', + regex: '/', + push: + [ { token: 'text', regex: '(?=,|:|>>)', next: 'pop' }, + { token: + [ 'storage.type.erlang', + 'storage.modifier.signedness.erlang', + 'storage.modifier.endianness.erlang', + 'storage.modifier.unit.erlang', + 'punctuation.separator.type-specifiers.erlang' ], + regex: '(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)' } ] } ], + '#keyword': + [ { token: 'keyword.control.erlang', + regex: '\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b' } ], + '#list': + [ { token: 'punctuation.definition.list.begin.erlang', + regex: '\\[', + push: + [ { token: 'punctuation.definition.list.end.erlang', + regex: '\\]', + next: 'pop' }, + { token: 'punctuation.separator.list.erlang', + regex: '\\||\\|\\||,' }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.list.erlang' } ] } ], + '#macro-directive': + [ { token: + [ 'meta.directive.ifdef.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.ifdef.erlang', + 'keyword.control.directive.ifdef.erlang', + 'meta.directive.ifdef.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.ifdef.erlang', + 'entity.name.function.macro.erlang', + 'meta.directive.ifdef.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.ifdef.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, + { token: + [ 'meta.directive.ifndef.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.ifndef.erlang', + 'keyword.control.directive.ifndef.erlang', + 'meta.directive.ifndef.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.ifndef.erlang', + 'entity.name.function.macro.erlang', + 'meta.directive.ifndef.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.ifndef.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, + { token: + [ 'meta.directive.undef.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.undef.erlang', + 'keyword.control.directive.undef.erlang', + 'meta.directive.undef.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.undef.erlang', + 'entity.name.function.macro.erlang', + 'meta.directive.undef.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.undef.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' } ], + '#macro-usage': + [ { token: + [ 'keyword.operator.macro.erlang', + 'meta.macro-usage.erlang', + 'entity.name.function.macro.erlang' ], + regex: '(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)' } ], + '#module-directive': + [ { token: + [ 'meta.directive.module.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.module.erlang', + 'keyword.control.directive.module.erlang', + 'meta.directive.module.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.module.erlang', + 'entity.name.type.class.module.definition.erlang', + 'meta.directive.module.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.module.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' } ], + '#number': + [ { token: 'text', + regex: '(?=\\d)', + push: + [ { token: 'text', regex: '(?!\\d)', next: 'pop' }, + { token: + [ 'constant.numeric.float.erlang', + 'punctuation.separator.integer-float.erlang', + 'constant.numeric.float.erlang', + 'punctuation.separator.float-exponent.erlang' ], + regex: '(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)' }, + { token: + [ 'constant.numeric.integer.binary.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.binary.erlang' ], + regex: '(2)(#)([0-1]+)' }, + { token: + [ 'constant.numeric.integer.base-3.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-3.erlang' ], + regex: '(3)(#)([0-2]+)' }, + { token: + [ 'constant.numeric.integer.base-4.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-4.erlang' ], + regex: '(4)(#)([0-3]+)' }, + { token: + [ 'constant.numeric.integer.base-5.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-5.erlang' ], + regex: '(5)(#)([0-4]+)' }, + { token: + [ 'constant.numeric.integer.base-6.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-6.erlang' ], + regex: '(6)(#)([0-5]+)' }, + { token: + [ 'constant.numeric.integer.base-7.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-7.erlang' ], + regex: '(7)(#)([0-6]+)' }, + { token: + [ 'constant.numeric.integer.octal.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.octal.erlang' ], + regex: '(8)(#)([0-7]+)' }, + { token: + [ 'constant.numeric.integer.base-9.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-9.erlang' ], + regex: '(9)(#)([0-8]+)' }, + { token: + [ 'constant.numeric.integer.decimal.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.decimal.erlang' ], + regex: '(10)(#)(\\d+)' }, + { token: + [ 'constant.numeric.integer.base-11.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-11.erlang' ], + regex: '(11)(#)([\\daA]+)' }, + { token: + [ 'constant.numeric.integer.base-12.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-12.erlang' ], + regex: '(12)(#)([\\da-bA-B]+)' }, + { token: + [ 'constant.numeric.integer.base-13.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-13.erlang' ], + regex: '(13)(#)([\\da-cA-C]+)' }, + { token: + [ 'constant.numeric.integer.base-14.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-14.erlang' ], + regex: '(14)(#)([\\da-dA-D]+)' }, + { token: + [ 'constant.numeric.integer.base-15.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-15.erlang' ], + regex: '(15)(#)([\\da-eA-E]+)' }, + { token: + [ 'constant.numeric.integer.hexadecimal.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.hexadecimal.erlang' ], + regex: '(16)(#)([\\da-fA-F]+)' }, + { token: + [ 'constant.numeric.integer.base-17.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-17.erlang' ], + regex: '(17)(#)([\\da-gA-G]+)' }, + { token: + [ 'constant.numeric.integer.base-18.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-18.erlang' ], + regex: '(18)(#)([\\da-hA-H]+)' }, + { token: + [ 'constant.numeric.integer.base-19.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-19.erlang' ], + regex: '(19)(#)([\\da-iA-I]+)' }, + { token: + [ 'constant.numeric.integer.base-20.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-20.erlang' ], + regex: '(20)(#)([\\da-jA-J]+)' }, + { token: + [ 'constant.numeric.integer.base-21.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-21.erlang' ], + regex: '(21)(#)([\\da-kA-K]+)' }, + { token: + [ 'constant.numeric.integer.base-22.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-22.erlang' ], + regex: '(22)(#)([\\da-lA-L]+)' }, + { token: + [ 'constant.numeric.integer.base-23.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-23.erlang' ], + regex: '(23)(#)([\\da-mA-M]+)' }, + { token: + [ 'constant.numeric.integer.base-24.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-24.erlang' ], + regex: '(24)(#)([\\da-nA-N]+)' }, + { token: + [ 'constant.numeric.integer.base-25.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-25.erlang' ], + regex: '(25)(#)([\\da-oA-O]+)' }, + { token: + [ 'constant.numeric.integer.base-26.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-26.erlang' ], + regex: '(26)(#)([\\da-pA-P]+)' }, + { token: + [ 'constant.numeric.integer.base-27.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-27.erlang' ], + regex: '(27)(#)([\\da-qA-Q]+)' }, + { token: + [ 'constant.numeric.integer.base-28.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-28.erlang' ], + regex: '(28)(#)([\\da-rA-R]+)' }, + { token: + [ 'constant.numeric.integer.base-29.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-29.erlang' ], + regex: '(29)(#)([\\da-sA-S]+)' }, + { token: + [ 'constant.numeric.integer.base-30.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-30.erlang' ], + regex: '(30)(#)([\\da-tA-T]+)' }, + { token: + [ 'constant.numeric.integer.base-31.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-31.erlang' ], + regex: '(31)(#)([\\da-uA-U]+)' }, + { token: + [ 'constant.numeric.integer.base-32.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-32.erlang' ], + regex: '(32)(#)([\\da-vA-V]+)' }, + { token: + [ 'constant.numeric.integer.base-33.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-33.erlang' ], + regex: '(33)(#)([\\da-wA-W]+)' }, + { token: + [ 'constant.numeric.integer.base-34.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-34.erlang' ], + regex: '(34)(#)([\\da-xA-X]+)' }, + { token: + [ 'constant.numeric.integer.base-35.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-35.erlang' ], + regex: '(35)(#)([\\da-yA-Y]+)' }, + { token: + [ 'constant.numeric.integer.base-36.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-36.erlang' ], + regex: '(36)(#)([\\da-zA-Z]+)' }, + { token: 'invalid.illegal.integer.erlang', + regex: '\\d+#[\\da-zA-Z]+' }, + { token: 'constant.numeric.integer.decimal.erlang', + regex: '\\d+' } ] } ], + '#parenthesized-expression': + [ { token: 'punctuation.section.expression.begin.erlang', + regex: '\\(', + push: + [ { token: 'punctuation.section.expression.end.erlang', + regex: '\\)', + next: 'pop' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.parenthesized' } ] } ], + '#record-directive': + [ { token: + [ 'meta.directive.record.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.record.erlang', + 'keyword.control.directive.import.erlang', + 'meta.directive.record.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.record.erlang', + 'entity.name.type.class.record.definition.erlang', + 'meta.directive.record.erlang', + 'punctuation.separator.parameters.erlang' ], + regex: '^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', + push: + [ { token: + [ 'punctuation.definition.class.record.end.erlang', + 'meta.directive.record.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.record.erlang', + 'punctuation.section.directive.end.erlang' ], + regex: '(\\})(\\s*)(\\))(\\s*)(\\.)', + next: 'pop' }, + { include: '#internal-record-body' }, + { defaultToken: 'meta.directive.record.erlang' } ] } ], + '#record-usage': + [ { token: + [ 'keyword.operator.record.erlang', + 'meta.record-usage.erlang', + 'entity.name.type.class.record.erlang', + 'meta.record-usage.erlang', + 'punctuation.separator.record-field.erlang', + 'meta.record-usage.erlang', + 'variable.other.field.erlang' ], + regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')' }, + { token: + [ 'keyword.operator.record.erlang', + 'meta.record-usage.erlang', + 'entity.name.type.class.record.erlang' ], + regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')', + push: + [ { token: 'punctuation.definition.class.record.end.erlang', + regex: '\\}', + next: 'pop' }, + { include: '#internal-record-body' }, + { defaultToken: 'meta.record-usage.erlang' } ] } ], + '#string': + [ { token: 'punctuation.definition.string.begin.erlang', + regex: '"', + push: + [ { token: 'punctuation.definition.string.end.erlang', + regex: '"', + next: 'pop' }, + { token: + [ 'punctuation.definition.escape.erlang', + 'constant.character.escape.erlang', + 'punctuation.definition.escape.erlang', + 'constant.character.escape.erlang', + 'constant.character.escape.erlang' ], + regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, + { token: 'invalid.illegal.string.erlang', regex: '\\\\\\^?.?' }, + { token: + [ 'punctuation.definition.placeholder.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'constant.other.placeholder.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'constant.other.placeholder.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'constant.other.placeholder.erlang', + 'constant.other.placeholder.erlang' ], + regex: '(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])' }, + { token: + [ 'punctuation.definition.placeholder.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'constant.other.placeholder.erlang', + 'constant.other.placeholder.erlang' ], + regex: '(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])' }, + { token: 'invalid.illegal.string.erlang', regex: '~.?' }, + { defaultToken: 'string.quoted.double.erlang' } ] } ], + '#symbolic-operator': + [ { token: 'keyword.operator.symbolic.erlang', + regex: '\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::' } ], + '#textual-operator': + [ { token: 'keyword.operator.textual.erlang', + regex: '\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b' } ], + '#tuple': + [ { token: 'punctuation.definition.tuple.begin.erlang', + regex: '\\{', + push: + [ { token: 'punctuation.definition.tuple.end.erlang', + regex: '\\}', + next: 'pop' }, + { token: 'punctuation.separator.tuple.erlang', regex: ',' }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.tuple.erlang' } ] } ], + '#variable': + [ { token: [ 'variable.other.erlang', 'variable.language.omitted.erlang' ], + regex: '(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)' } ] }; + + this.normalizeRules(); +}; + +ErlangHighlightRules.metaData = { comment: 'The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp', + fileTypes: [ 'erl', 'hrl' ], + keyEquivalent: '^~E', + name: 'Erlang', + scopeName: 'source.erlang' }; + + +oop.inherits(ErlangHighlightRules, TextHighlightRules); + +exports.ErlangHighlightRules = ErlangHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/asciidoc.js b/plugins/node_modules/ace/lib/ace/mode/folding/asciidoc.js new file mode 100644 index 00000000..6722fe08 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/asciidoc.js @@ -0,0 +1,142 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; + +var FoldMode = exports.FoldMode = function() {}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + this.foldingStartMarker = /^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/; + this.singleLineHeadingRe = /^={1,5}(?=\s+\S)/; + + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + if (!this.foldingStartMarker.test(line)) + return ""; + + if (line[0] == "=") { + if (this.singleLineHeadingRe.test(line)) + return "start"; + if (session.getLine(row - 1).length != session.getLine(row).length) + return ""; + return "start"; + } + if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") + return "end"; + return "start"; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.getLine(row); + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (!line.match(this.foldingStartMarker)) + return; + + var token; + function getTokenType(row) { + token = session.getTokens(row)[0]; + return token && token.type; + } + + var levels = ["=","-","~","^","+"]; + var heading = "markup.heading"; + var singleLineHeadingRe = this.singleLineHeadingRe; + function getLevel() { + var match = token.value.match(singleLineHeadingRe); + if (match) + return match[0].length; + var level = levels.indexOf(token.value[0]) + 1; + if (level == 1) { + if (session.getLine(row - 1).length != session.getLine(row).length) + return Infinity; + } + return level; + } + + if (getTokenType(row) == heading) { + var startHeadingLevel = getLevel(); + while (++row < maxRow) { + if (getTokenType(row) != heading) + continue; + var level = getLevel(); + if (level <= startHeadingLevel) + break; + } + + var isSingleLineHeading = token && token.value.match(this.singleLineHeadingRe); + endRow = isSingleLineHeading ? row - 1 : row - 2; + + if (endRow > startRow) { + while (endRow > startRow && (!getTokenType(endRow) || token.value[0] == "[")) + endRow--; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + } else { + var state = session.bgTokenizer.getState(row); + if (state == "dissallowDelimitedBlock") { + while (row -- > 0) { + if (session.bgTokenizer.getState(row).lastIndexOf("Block") == -1) + break; + } + endRow = row + 1; + if (endRow < startRow) { + var endColumn = session.getLine(row).length; + return new Range(endRow, 5, startRow, startColumn - 5); + } + } else { + while (++row < maxRow) { + if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") + break; + } + endRow = row; + if (endRow > startRow) { + var endColumn = session.getLine(row).length; + return new Range(startRow, 5, endRow, endColumn - 5); + } + } + } + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/c9search.js b/plugins/node_modules/ace/lib/ace/mode/folding/c9search.js new file mode 100644 index 00000000..50fe682f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/c9search.js @@ -0,0 +1,83 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function() {}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /^(\S.*:|Searching for.*)$/; + this.foldingStopMarker = /^(\s+|Found.*)$/; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var lines = session.doc.getAllLines(row); + var line = lines[row]; + var level1 = /^(Found.*|Searching for.*)$/; + var level2 = /^(\S.*:|\s*)$/; + var re = level1.test(line) ? level1 : level2; + + var startRow = row; + var endRow = row; + + if (this.foldingStartMarker.test(line)) { + for (var i = row + 1, l = session.getLength(); i < l; i++) { + if (re.test(lines[i])) + break; + } + endRow = i; + } + else if (this.foldingStopMarker.test(line)) { + for (var i = row - 1; i >= 0; i--) { + line = lines[i]; + if (re.test(line)) + break; + } + startRow = i; + } + if (startRow != endRow) { + var col = line.length; + if (re === level1) + col = line.search(/\(Found[^)]+\)$|$/); + return new Range(startRow, col, endRow, 0); + } + }; + +}).call(FoldMode.prototype); + +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/coffee.js b/plugins/node_modules/ace/lib/ace/mode/folding/coffee.js new file mode 100644 index 00000000..fe03a568 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/coffee.js @@ -0,0 +1,120 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; + +var FoldMode = exports.FoldMode = function() {}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + + if (level == -1) + continue; + + if (line[level] != "#") + break; + + endRow = row; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + + // must return "" if there's no fold, to enable caching + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + + // documentation comments + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + + if (prevIndent!= -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + + if (indent < nextIndent) + return "start"; + else + return ""; + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/coffee_test.js b/plugins/node_modules/ace/lib/ace/mode/folding/coffee_test.js new file mode 100644 index 00000000..60c519fe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/coffee_test.js @@ -0,0 +1,101 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") + require("amd-loader"); + +define(function(require, exports, module) { +"use strict"; + +var CoffeeMode = require("../coffee").Mode; +var EditSession = require("../../edit_session").EditSession; +var assert = require("../../test/assertions"); +function testFoldWidgets(array) { + var session = array.filter(function(_, i){return i % 2 == 1;}); + session = new EditSession(session); + var mode = new CoffeeMode(); + session.setFoldStyle("markbeginend"); + session.setMode(mode); + + var widgets = array.filter(function(_, i){return i % 2 == 0;}); + widgets.forEach(function(w, i){ + session.foldWidgets[i] = session.getFoldWidget(i); + }); + widgets.forEach(function(w, i){ + w = w.split(","); + var type = w[0] == ">" ? "start" : w[0] == "<" ? "end" : ""; + assert.equal(session.foldWidgets[i], type); + if (!type) + return; + var range = session.getFoldWidgetRange(i); + if (!w[1]) { + assert.equal(range, null); + return; + } + assert.equal(range.start.row, i); + assert.equal(range.end.row - range.start.row, parseInt(w[1])); + testColumn(w[2], range.start); + testColumn(w[3], range.end); + }); + + function testColumn(w, pos) { + if (!w) + return; + if (w == "l") + w = session.getLine(pos.row).length; + else + w = parseInt(w); + assert.equal(pos.column, w); + } +} +module.exports = { + "test: coffee script indentation based folding": function() { + testFoldWidgets([ + '>,1,l,l', ' ## indented comment', + '', ' # ', + '', '', + '>,1,l,l', ' # plain comment', + '', ' # ', + '>,2', ' function (x)=>', + '', ' ', + '', ' x++', + '', ' ', + '', ' ', + '>,2', ' bar = ', + '', ' foo: 1', + '', ' baz: lighter' + ]); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) + require("asyncjs").test.testcase(module.exports).exec(); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/csharp.js b/plugins/node_modules/ace/lib/ace/mode/folding/csharp.js new file mode 100644 index 00000000..67df7be0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/csharp.js @@ -0,0 +1,137 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var CFoldMode = require("./cstyle").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, CFoldMode); + +(function() { + this.usingRe = /^\s*using \S/; + + this.getFoldWidgetRangeBase = this.getFoldWidgetRange; + this.getFoldWidgetBase = this.getFoldWidget; + + this.getFoldWidget = function(session, foldStyle, row) { + var fw = this.getFoldWidgetBase(session, foldStyle, row); + if (!fw) { + var line = session.getLine(row); + if (/^\s*#region\b/.test(line)) + return "start"; + var usingRe = this.usingRe; + if (usingRe.test(line)) { + var prev = session.getLine(row - 1); + var next = session.getLine(row + 1); + if (!usingRe.test(prev) && usingRe.test(next)) + return "start"; + } + } + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var range = this.getFoldWidgetRangeBase(session, foldStyle, row); + if (range) + return range; + + var line = session.getLine(row); + if (this.usingRe.test(line)) + return this.getUsingStatementBlock(session, line, row); + + if (/^\s*#region\b/.test(line)) + return this.getRegionBlock(session, line, row); + }; + + this.getUsingStatementBlock = function(session, line, row) { + var startColumn = line.match(this.usingRe)[0].length - 1; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + + while (++row < maxRow) { + line = session.getLine(row); + if (/^\s*$/.test(line)) + continue; + if (!this.usingRe.test(line)) + break; + + endRow = row; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + + this.getRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*#(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + + if (!depth) + break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/cstyle.js b/plugins/node_modules/ace/lib/ace/mode/folding/cstyle.js new file mode 100644 index 00000000..363a52fe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/cstyle.js @@ -0,0 +1,192 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + + //prevent naming conflict with any modes that inherit from cstyle and override this (like csharp) + this._getFoldWidgetBase = this.getFoldWidget; + + /** + * Gets fold widget with some non-standard extras: + * + * @example lineCommentRegionStart + * //#region [optional description] + * + * @example blockCommentRegionStart + * /*#region [optional description] *[/] + * + * @example tripleStarFoldingSection + * /*** this folds even though 1 line because it has 3 stars ***[/] + * + * @note the pound symbol for region tags is optional + */ + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + + if (this.singleLineBlockCommentRe.test(line)) { + // No widget for single line block comment unless region or triple star + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + + var fw = this._getFoldWidgetBase(session, foldStyle, row); + + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } else if (foldStyle != "all") + range = null; + } + + return range; + } + + if (foldStyle === "markbegin") + return; + + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + + return session.getCommentFoldRange(row, i, -1); + } + }; + + this.getSectionRange = function(session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { + row = subRange.end.row; + } else if (startIndent == indent) { + break; + } + } + endRow = row; + } + + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + + /** + * gets comment region block with end region assumed to be start of comment in any cstyle mode or SQL mode (--) which inherits from this. + * There may optionally be a pound symbol before the region/endregion statement + */ + this.getCommentRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth--; + else depth++; + + if (!depth) break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/cstyle_test.js b/plugins/node_modules/ace/lib/ace/mode/folding/cstyle_test.js new file mode 100644 index 00000000..f199c916 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/cstyle_test.js @@ -0,0 +1,109 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") + require("amd-loader"); + +define(function(require, exports, module) { +"use strict"; + +var JavaScriptMode = require("../javascript").Mode; +var EditSession = require("../../edit_session").EditSession; +var assert = require("../../test/assertions"); + +module.exports = { + + "test: fold comments": function() { + var session = new EditSession([ + '/*', + 'stuff', + '*/' + ]); + + var mode = new JavaScriptMode(); + session.setFoldStyle("markbeginend"); + session.setMode(mode); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(2), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 2, 2, 0); + assert.range(session.getFoldWidgetRange(2), 0, 2, 2, 0); + }, + + "test: fold doc style comments": function() { + var session = new EditSession([ + '/**', + ' * stuff', + ' * *** */' + ]); + + var mode = new JavaScriptMode(); + session.setFoldStyle("markbeginend"); + session.setMode(mode); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(2), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 2, 2, 7); + assert.range(session.getFoldWidgetRange(2), 0, 2, 2, 7); + }, + + "test: fold sections": function() { + var session = new EditSession([ + '/* section0 */', + '{', + ' /* section1 */', + ' stuff', + ' ', + ' /* section2 */', + ' ', + ' stuff', + ' ', + ' }', + 'foo' + ]); + + var mode = new JavaScriptMode(); + session.setFoldStyle("markbegin"); + session.setMode(mode); + + assert.range(session.getFoldWidgetRange(0, true), 0, 14, 10, 3); + assert.range(session.getFoldWidgetRange(2, true), 2, 18, 3, 9); + assert.range(session.getFoldWidgetRange(5, true), 5, 18, 7, 9); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) + require("asyncjs").test.testcase(module.exports).exec(); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/diff.js b/plugins/node_modules/ace/lib/ace/mode/folding/diff.js new file mode 100644 index 00000000..54185ad1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/diff.js @@ -0,0 +1,69 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; + +var FoldMode = exports.FoldMode = function(levels, flag) { + this.regExpList = levels; + this.flag = flag; + this.foldingStartMarker = RegExp("^(" + levels.join("|") + ")", this.flag); +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.getLine(row); + var start = {row: row, column: line.length}; + + var regList = this.regExpList; + for (var i = 1; i <= regList.length; i++) { + var re = RegExp("^(" + regList.slice(0, i).join("|") + ")", this.flag); + if (re.test(line)) + break; + } + + for (var l = session.getLength(); ++row < l; ) { + line = session.getLine(row); + if (re.test(line)) + break; + } + if (row == start.row + 1) + return; + return new Range(start.row, start.column, row - 1, line.length); + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/drools.js b/plugins/node_modules/ace/lib/ace/mode/folding/drools.js new file mode 100644 index 00000000..16aea52c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/drools.js @@ -0,0 +1,49 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var TokenIterator = require("../../token_iterator").TokenIterator; + +var FoldMode = exports.FoldMode = function() {}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + // regular expressions that identify starting and stopping points + this.foldingStartMarker = /\b(rule|declare|query|when|then)\b/; + this.foldingStopMarker = /\bend\b/; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.getLine(row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) { + var position = {row: row, column: line.length}; + var iterator = new TokenIterator(session, position.row, position.column); + var seek = "end"; + var token = iterator.getCurrentToken(); + if (token.value == "when") { + seek = "then"; + } + while (token) { + if (token.value == seek) { + return Range.fromPoints(position ,{ + row: iterator.getCurrentTokenRow(), + column: iterator.getCurrentTokenColumn() + }); + } + token = iterator.stepForward(); + } + } + + } + // test each line, and return a range of segments to collapse + }; + +}).call(FoldMode.prototype); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/fold_mode.js b/plugins/node_modules/ace/lib/ace/mode/folding/fold_mode.js new file mode 100644 index 00000000..7a6e9ec8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/fold_mode.js @@ -0,0 +1,120 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("../../range").Range; + +var FoldMode = exports.FoldMode = function() {}; + +(function() { + + this.foldingStartMarker = null; + this.foldingStopMarker = null; + + // must return "" if there's no fold, to enable caching + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + if (this.foldingStartMarker.test(line)) + return "start"; + if (foldStyle == "markbeginend" + && this.foldingStopMarker + && this.foldingStopMarker.test(line)) + return "end"; + return ""; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + return null; + }; + + this.indentationBlock = function(session, row, column) { + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1) + return; + + var startColumn = column || line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + + while (++row < maxRow) { + var level = session.getLine(row).search(re); + + if (level == -1) + continue; + + if (level <= startLevel) + break; + + endRow = row; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + + this.openingBracketBlock = function(session, bracket, row, column, typeRe) { + var start = {row: row, column: column + 1}; + var end = session.$findClosingBracket(bracket, start, typeRe); + if (!end) + return; + + var fw = session.foldWidgets[end.row]; + if (fw == null) + fw = session.getFoldWidget(end.row); + + if (fw == "start" && end.row > start.row) { + end.row --; + end.column = session.getLine(end.row).length; + } + return Range.fromPoints(start, end); + }; + + this.closingBracketBlock = function(session, bracket, row, column, typeRe) { + var end = {row: row, column: column}; + var start = session.$findOpeningBracket(bracket, end); + + if (!start) + return; + + start.column++; + end.column--; + + return Range.fromPoints(start, end); + }; +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/haskell_cabal.js b/plugins/node_modules/ace/lib/ace/mode/folding/haskell_cabal.js new file mode 100644 index 00000000..fef69e93 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/haskell_cabal.js @@ -0,0 +1,115 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +/* +* Folding mode for Cabal files (Haskell): allow folding each seaction, including +* the initial general section. +*/ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; + +var FoldMode = exports.FoldMode = function() {}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + /** + is the row a heading? + */ + this.isHeading = function (session,row) { + var heading = "markup.heading"; + var token = session.getTokens(row)[0]; + return row==0 || (token && token.type.lastIndexOf(heading, 0) === 0); + }; + + this.getFoldWidget = function(session, foldStyle, row) { + if (this.isHeading(session,row)){ + return "start"; + } else if (foldStyle === "markbeginend" && !(/^\s*$/.test(session.getLine(row)))){ + var maxRow = session.getLength(); + while (++row < maxRow) { + if (!(/^\s*$/.test(session.getLine(row)))){ + break; + } + } + if (row==maxRow || this.isHeading(session,row)){ + return "end"; + } + } + return ""; + }; + + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.getLine(row); + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + // go until next heading + if (this.isHeading(session,row)) { + while (++row < maxRow) { + if (this.isHeading(session,row)){ + row--; + break; + } + } + + endRow = row; + // remove empty lines at end + if (endRow > startRow) { + while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) + endRow--; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + // go back to heading + } else if (this.getFoldWidget(session, foldStyle, row)==="end"){ + var endRow = row; + var endColumn = session.getLine(endRow).length; + while (--row>=0){ + if (this.isHeading(session,row)){ + break; + } + } + var line = session.getLine(row); + var startColumn = line.length; + return new Range(row, startColumn, endRow, endColumn); + } + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/html.js b/plugins/node_modules/ace/lib/ace/mode/folding/html.js new file mode 100644 index 00000000..5edbe0b8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/html.js @@ -0,0 +1,48 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; + +var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; + +oop.inherits(FoldMode, MixedFoldMode); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/html_test.js b/plugins/node_modules/ace/lib/ace/mode/folding/html_test.js new file mode 100644 index 00000000..8291eae1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/html_test.js @@ -0,0 +1,186 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") + require("amd-loader"); + +define(function(require, exports, module) { +"use strict"; + +var HtmlMode = require("../html").Mode; +var EditSession = require("../../edit_session").EditSession; +var assert = require("../../test/assertions"); + +module.exports = { + + "test: fold mixed html and javascript": function() { + var session = new EditSession([ + '<script type="text/javascript"> ', + 'function() foo {', + ' var bar = 1;', + '}', + '</script>' + ]); + + var mode = new HtmlMode(); + session.setMode(mode); + session.setFoldStyle("markbeginend"); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), "start"); + assert.equal(session.getFoldWidget(2), ""); + assert.equal(session.getFoldWidget(3), "end"); + assert.equal(session.getFoldWidget(4), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 31, 4, 0); + assert.range(session.getFoldWidgetRange(4), 0, 31, 4, 0); + + assert.range(session.getFoldWidgetRange(1), 1, 16, 3, 0); + assert.range(session.getFoldWidgetRange(3), 1, 16, 3, 0); + }, + + "test: fold mixed html and css": function() { + var session = new EditSession([ + '<style type="text/css">', + ' .text-layer {', + ' font-family: Monaco, "Courier New", monospace;', + ' }', + '</style>' + ]); + + var mode = new HtmlMode(); + session.setMode(mode); + session.setFoldStyle("markbeginend"); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), "start"); + assert.equal(session.getFoldWidget(2), ""); + assert.equal(session.getFoldWidget(3), "end"); + assert.equal(session.getFoldWidget(4), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 23, 4, 0); + assert.range(session.getFoldWidgetRange(4), 0, 23, 4, 0); + + assert.range(session.getFoldWidgetRange(1), 1, 17, 3, 4); + assert.range(session.getFoldWidgetRange(3), 1, 17, 3, 4); + }, + + "test: fold should skip self closing elements": function() { + var session = new EditSession([ + '<body>', + '<br />', + '</body>' + ]); + + var mode = new HtmlMode(); + session.setMode(mode); + session.setFoldStyle("markbeginend"); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(2), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 6, 2, 0); + assert.range(session.getFoldWidgetRange(2), 0, 6, 2, 0); + }, + + "test: fold should skip void elements": function() { + var session = new EditSession([ + '<body>', + '<br>', + '</body>' + ]); + + var mode = new HtmlMode(); + session.setMode(mode); + session.setFoldStyle("markbeginend"); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(2), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 6, 2, 0); + assert.range(session.getFoldWidgetRange(2), 0, 6, 2, 0); + }, + + "test: fold multiple unclosed elements": function() { + var session = new EditSession([ + '<div>', + '<p>', + 'juhu', + '<p>', + 'kinners', + '</div>' + ]); + + var mode = new HtmlMode(); + session.setMode(mode); + session.setFoldStyle("markbeginend"); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), "start"); + assert.equal(session.getFoldWidget(2), ""); + assert.equal(session.getFoldWidget(3), "start"); + assert.equal(session.getFoldWidget(4), ""); + assert.equal(session.getFoldWidget(5), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 5, 5, 0); + assert.range(session.getFoldWidgetRange(5), 0, 5, 5, 0); + }, + + "test: fold multiple nested optional elements": function() { + var session = new EditSession([ + '<p>', + '<li>', + '<p>juhu', + '<p>', + 'kinners', + '</li>' + ]); + + var mode = new HtmlMode(); + session.setMode(mode); + session.setFoldStyle("markbeginend"); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), "start"); + assert.equal(session.getFoldWidget(2), "start"); + assert.equal(session.getFoldWidget(3), "start"); + assert.equal(session.getFoldWidget(4), ""); + assert.equal(session.getFoldWidget(5), "end"); + + assert.range(session.getFoldWidgetRange(1), 1, 4, 5, 0); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) + require("asyncjs").test.testcase(module.exports).exec(); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/ini.js b/plugins/node_modules/ace/lib/ace/mode/folding/ini.js new file mode 100644 index 00000000..ef4eaa0b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/ini.js @@ -0,0 +1,80 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function() { +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var re = this.foldingStartMarker; + var line = session.getLine(row); + + var m = line.match(re); + + if (!m) return; + + var startName = m[1] + "."; + + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + + while (++row < maxRow) { + line = session.getLine(row); + if (/^\s*$/.test(line)) + continue; + m = line.match(re); + if (m && m[1].lastIndexOf(startName, 0) !== 0) + break; + + endRow = row; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/latex.js b/plugins/node_modules/ace/lib/ace/mode/folding/latex.js new file mode 100644 index 00000000..e399cccd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/latex.js @@ -0,0 +1,180 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var TokenIterator = require("../../token_iterator").TokenIterator; +var keywordLevels = { + "\\subparagraph": 1, + "\\paragraph": 2, + "\\subsubsubsection": 3, + "\\subsubsection": 4, + "\\subsection": 5, + "\\section": 6, + "\\chapter": 7, + "\\part": 8, + "\\begin": 9, + "\\end": 10 +}; + +var FoldMode = exports.FoldMode = function() {}; + +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /^\s*\\(begin)|\s*\\(part|chapter|(?:sub)*(?:section|paragraph))\b|{\s*$/; + this.foldingStopMarker = /^\s*\\(end)\b|^\s*}/; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.doc.getLine(row); + var match = this.foldingStartMarker.exec(line); + if (match) { + if (match[1]) + return this.latexBlock(session, row, match[0].length - 1); + if (match[2]) + return this.latexSection(session, row, match[0].length - 1); + + return this.openingBracketBlock(session, "{", row, match.index); + } + + var match = this.foldingStopMarker.exec(line); + if (match) { + if (match[1]) + return this.latexBlock(session, row, match[0].length - 1); + + return this.closingBracketBlock(session, "}", row, match.index + match[0].length); + } + }; + + this.latexBlock = function(session, row, column, returnRange) { + var keywords = { + "\\begin": 1, + "\\end": -1 + }; + + var stream = new TokenIterator(session, row, column); + var token = stream.getCurrentToken(); + if (!token || !(token.type == "storage.type" || token.type == "constant.character.escape")) + return; + + var val = token.value; + var dir = keywords[val]; + + var getType = function() { + var token = stream.stepForward(); + var type = token.type == "lparen" ?stream.stepForward().value : ""; + if (dir === -1) { + stream.stepBackward(); + if (type) + stream.stepBackward(); + } + return type; + }; + var stack = [getType()]; + var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; + var startRow = row; + + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + while(token = stream.step()) { + if (!token || !(token.type == "storage.type" || token.type == "constant.character.escape")) + continue; + var level = keywords[token.value]; + if (!level) + continue; + var type = getType(); + if (level === dir) + stack.unshift(type); + else if (stack.shift() !== type || !stack.length) + break; + } + + if (stack.length) + return; + + if (dir == 1) { + stream.stepBackward(); + stream.stepBackward(); + } + + if (returnRange) + return stream.getCurrentTokenRange(); + + var row = stream.getCurrentTokenRow(); + if (dir === -1) + return new Range(row, session.getLine(row).length, startRow, startColumn); + else + return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); + }; + + this.latexSection = function(session, row, column) { + var stream = new TokenIterator(session, row, column); + var token = stream.getCurrentToken(); + if (!token || token.type != "storage.type") + return; + + var startLevel = keywordLevels[token.value] || 0; + var stackDepth = 0; + var endRow = row; + + while(token = stream.stepForward()) { + if (token.type !== "storage.type") + continue; + var level = keywordLevels[token.value] || 0; + + if (level >= 9) { + if (!stackDepth) + endRow = stream.getCurrentTokenRow() - 1; + stackDepth += level == 9 ? 1 : - 1; + if (stackDepth < 0) + break; + } else if (level >= startLevel) + break; + } + + if (!stackDepth) + endRow = stream.getCurrentTokenRow() - 1; + + while (endRow > row && !/\S/.test(session.getLine(endRow))) + endRow--; + + return new Range( + row, session.getLine(row).length, + endRow, session.getLine(endRow).length + ); + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/lua.js b/plugins/node_modules/ace/lib/ace/mode/folding/lua.js new file mode 100644 index 00000000..f4b52334 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/lua.js @@ -0,0 +1,163 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var TokenIterator = require("../../token_iterator").TokenIterator; + + +var FoldMode = exports.FoldMode = function() {}; + +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/; + this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/; + + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + + if (isStart && !isEnd) { + var match = line.match(this.foldingStartMarker); + if (match[1] == "then" && /\belseif\b/.test(line)) + return; + if (match[1]) { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return "start"; + } else if (match[2]) { + var type = session.bgTokenizer.getState(row) || ""; + if (type[0] == "bracketedComment" || type[0] == "bracketedString") + return "start"; + } else { + return "start"; + } + } + if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) + return ""; + + var match = line.match(this.foldingStopMarker); + if (match[0] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return "end"; + } else if (match[0][0] === "]") { + var type = session.bgTokenizer.getState(row - 1) || ""; + if (type[0] == "bracketedComment" || type[0] == "bracketedString") + return "end"; + } else + return "end"; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.doc.getLine(row); + var match = this.foldingStartMarker.exec(line); + if (match) { + if (match[1]) + return this.luaBlock(session, row, match.index + 1); + + if (match[2]) + return session.getCommentFoldRange(row, match.index + 1); + + return this.openingBracketBlock(session, "{", row, match.index); + } + + var match = this.foldingStopMarker.exec(line); + if (match) { + if (match[0] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return this.luaBlock(session, row, match.index + 1); + } + + if (match[0][0] === "]") + return session.getCommentFoldRange(row, match.index + 1); + + return this.closingBracketBlock(session, "}", row, match.index + match[0].length); + } + }; + + this.luaBlock = function(session, row, column) { + var stream = new TokenIterator(session, row, column); + var indentKeywords = { + "function": 1, + "do": 1, + "then": 1, + "elseif": -1, + "end": -1, + "repeat": 1, + "until": -1 + }; + + var token = stream.getCurrentToken(); + if (!token || token.type != "keyword") + return; + + var val = token.value; + var stack = [val]; + var dir = indentKeywords[val]; + + if (!dir) + return; + + var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; + var startRow = row; + + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + while(token = stream.step()) { + if (token.type !== "keyword") + continue; + var level = dir * indentKeywords[token.value]; + + if (level > 0) { + stack.unshift(token.value); + } else if (level <= 0) { + stack.shift(); + if (!stack.length && token.value != "elseif") + break; + if (level === 0) + stack.unshift(token.value); + } + } + + var row = stream.getCurrentTokenRow(); + if (dir === -1) + return new Range(row, session.getLine(row).length, startRow, startColumn); + else + return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/markdown.js b/plugins/node_modules/ace/lib/ace/mode/folding/markdown.js new file mode 100644 index 00000000..aae7179a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/markdown.js @@ -0,0 +1,125 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; + +var FoldMode = exports.FoldMode = function() {}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; + + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + if (!this.foldingStartMarker.test(line)) + return ""; + + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) == "start") + return "end"; + return "start"; + } + + return "start"; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.getLine(row); + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (!line.match(this.foldingStartMarker)) + return; + + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) !== "start") { + while (++row < maxRow) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(startRow, startColumn, row, 0); + } else { + while (row -- > 0) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(row, line.length, startRow, 0); + } + } + + var token; + function isHeading(row) { + token = session.getTokens(row)[0]; + return token && token.type.lastIndexOf(heading, 0) === 0; + } + + var heading = "markup.heading"; + function getLevel() { + var ch = token.value[0]; + if (ch == "=") return 6; + if (ch == "-") return 5; + return 7 - token.value.search(/[^#]/); + } + + if (isHeading(row)) { + var startHeadingLevel = getLevel(); + while (++row < maxRow) { + if (!isHeading(row)) + continue; + var level = getLevel(); + if (level >= startHeadingLevel) + break; + } + + endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); + + if (endRow > startRow) { + while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) + endRow--; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + } + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/mixed.js b/plugins/node_modules/ace/lib/ace/mode/folding/mixed.js new file mode 100644 index 00000000..40d2cda8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/mixed.js @@ -0,0 +1,83 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(defaultMode, subModes) { + this.defaultMode = defaultMode; + this.subModes = subModes; +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + + this.$getMode = function(state) { + if (typeof state != "string") + state = state[0]; + for (var key in this.subModes) { + if (state.indexOf(key) === 0) + return this.subModes[key]; + } + return null; + }; + + this.$tryMode = function(state, session, foldStyle, row) { + var mode = this.$getMode(state); + return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); + }; + + this.getFoldWidget = function(session, foldStyle, row) { + return ( + this.$tryMode(session.getState(row-1), session, foldStyle, row) || + this.$tryMode(session.getState(row), session, foldStyle, row) || + this.defaultMode.getFoldWidget(session, foldStyle, row) + ); + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var mode = this.$getMode(session.getState(row-1)); + + if (!mode || !mode.getFoldWidget(session, foldStyle, row)) + mode = this.$getMode(session.getState(row)); + + if (!mode || !mode.getFoldWidget(session, foldStyle, row)) + mode = this.defaultMode; + + return mode.getFoldWidgetRange(session, foldStyle, row); + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/pythonic.js b/plugins/node_modules/ace/lib/ace/mode/folding/pythonic.js new file mode 100644 index 00000000..fd799e19 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/pythonic.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(markers) { + this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.getLine(row); + var match = line.match(this.foldingStartMarker); + if (match) { + if (match[1]) + return this.openingBracketBlock(session, match[1], row, match.index); + if (match[2]) + return this.indentationBlock(session, row, match.index + match[2].length); + return this.indentationBlock(session, row); + } + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/pythonic_test.js b/plugins/node_modules/ace/lib/ace/mode/folding/pythonic_test.js new file mode 100644 index 00000000..e30785b8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/pythonic_test.js @@ -0,0 +1,98 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") + require("amd-loader"); + +define(function(require, exports, module) { +"use strict"; + +var PythonMode = require("../python").Mode; +var EditSession = require("../../edit_session").EditSession; +var assert = require("../../test/assertions"); + +module.exports = { + + "test: bracket folding": function() { + var session = new EditSession([ + '[ ', + 'stuff', + ']', + '[ ', + '{ ', + '[ #-' + ]); + + var mode = new PythonMode(); + session.setFoldStyle("markbeginend"); + session.setMode(mode); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(2), ""); + assert.equal(session.getFoldWidget(3), "start"); + assert.equal(session.getFoldWidget(4), "start"); + assert.equal(session.getFoldWidget(5), ""); + + assert.range(session.getFoldWidgetRange(0), 0, 1, 2, 0); + assert.equal(session.getFoldWidgetRange(3), null); + assert.equal(session.getFoldWidgetRange(5), null); + }, + + "test: indentation folding": function() { + var session = new EditSession([ + 'def a: #', + '', + ' b:', + ' c', + ' ', + ' c', + '', + ' ', + '' + ]); + + var mode = new PythonMode(); + session.setFoldStyle("markbeginend"); + session.setMode(mode); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(2), "start"); + + assert.range(session.getFoldWidgetRange(0), 0, 6, 5, 3); + assert.range(session.getFoldWidgetRange(2), 2, 3, 5, 3); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) + require("asyncjs").test.testcase(module.exports).exec(); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/sqlserver.js b/plugins/node_modules/ace/lib/ace/mode/folding/sqlserver.js new file mode 100644 index 00000000..b3fd4e93 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/sqlserver.js @@ -0,0 +1,111 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./cstyle").FoldMode; + +var FoldMode = exports.FoldMode = function() {}; + +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + /** + * Inheriting cstyle folding because it handles the region comment folding + * and special block comment folding appropriately. + * + * Cstyle's getCommentRegionBlock() contains the sql comment characters '--' for end region block. + */ + + this.foldingStartMarker = /(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i; + // this.foldingStopMarker = /(\bEND\b)|^[\s\*]*(\*\/)/i; + this.startRegionRe = /^\s*(\/\*|--)#?region\b/; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) return this.getBeginEndBlock(session, row, i, match[1]); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") range = null; + } + + return range; + } + + if (foldStyle === "markbegin") return; + //TODO: add support for end folding markers + return; + }; + + /** + * @returns {range} folding block for sequence that starts with 'CASE' or 'BEGIN' and ends with 'END' + * @param {string} matchSequence - the sequence of charaters that started the fold widget, which should remain visible when the fold widget is folded + */ + this.getBeginEndBlock = function(session, row, column, matchSequence) { + var start = { + row: row, + column: column + matchSequence.length + }; + var maxRow = session.getLength(); + var line; + + var depth = 1; + var re = /(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth++; + else depth--; + + if (!depth) break; + } + var endRow = row; + if (endRow > start.row) { + return new Range(start.row, start.column, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/velocity.js b/plugins/node_modules/ace/lib/ace/mode/folding/velocity.js new file mode 100644 index 00000000..ce235b49 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/velocity.js @@ -0,0 +1,120 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; + +var FoldMode = exports.FoldMode = function() {}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "##") + return; + + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + + if (level == -1) + continue; + + if (line[level] != "##") + break; + + endRow = row; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + + // must return "" if there's no fold, to enable caching + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + + // documentation comments + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "##" && next[indent] == "##") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } else if (prevIndent == indent && line[indent] == "##" && prev[indent] == "##") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + + if (prevIndent!= -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + + if (indent < nextIndent) + return "start"; + else + return ""; + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/xml.js b/plugins/node_modules/ace/lib/ace/mode/folding/xml.js new file mode 100644 index 00000000..21142b5c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/xml.js @@ -0,0 +1,286 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var lang = require("../../lib/lang"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var TokenIterator = require("../../token_iterator").TokenIterator; + +var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) { + BaseFoldMode.call(this); + this.voidElements = voidElements || {}; + this.optionalEndTags = oop.mixin({}, this.voidElements); + if (optionalEndTags) + oop.mixin(this.optionalEndTags, optionalEndTags); + +}; +oop.inherits(FoldMode, BaseFoldMode); + +var Tag = function() { + this.tagName = ""; + this.closing = false; + this.selfClosing = false; + this.start = {row: 0, column: 0}; + this.end = {row: 0, column: 0}; +}; + +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} + +(function() { + + this.getFoldWidget = function(session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + + if (!tag) + return this.getCommentFoldWidget(session, row); + + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle == "markbeginend" ? "end" : ""; + + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + + return "start"; + }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + }; + + /* + * returns a first tag (or a fragment) in a line + */ + this._getFirstTagInLine = function(session, row) { + var tokens = session.getTokens(row); + var tag = new Tag(); + + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (is(token, "tag-open")) { + tag.end.column = tag.start.column + token.value.length; + tag.closing = is(token, "end-tag-open"); + token = tokens[++i]; + if (!token) + return null; + tag.tagName = token.value; + tag.end.column += token.value.length; + for (i++; i < tokens.length; i++) { + token = tokens[i]; + tag.end.column += token.value.length; + if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + break; + } + } + return tag; + } else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + + return null; + }; + + this._findEndTagInLine = function(session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + + /* + * reads a full tag and places the iterator after the tag + */ + this._readTagForward = function(iterator) { + var token = iterator.getCurrentToken(); + if (!token) + return null; + + var tag = new Tag(); + do { + if (is(token, "tag-open")) { + tag.closing = is(token, "end-tag-open"); + tag.start.row = iterator.getCurrentTokenRow(); + tag.start.column = iterator.getCurrentTokenColumn(); + } else if (is(token, "tag-name")) { + tag.tagName = token.value; + } else if (is(token, "tag-close")) { + tag.selfClosing = token.value == "/>"; + tag.end.row = iterator.getCurrentTokenRow(); + tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; + iterator.stepForward(); + return tag; + } + } while(token = iterator.stepForward()); + + return null; + }; + + this._readTagBackward = function(iterator) { + var token = iterator.getCurrentToken(); + if (!token) + return null; + + var tag = new Tag(); + do { + if (is(token, "tag-open")) { + tag.closing = is(token, "end-tag-open"); + tag.start.row = iterator.getCurrentTokenRow(); + tag.start.column = iterator.getCurrentTokenColumn(); + iterator.stepBackward(); + return tag; + } else if (is(token, "tag-name")) { + tag.tagName = token.value; + } else if (is(token, "tag-close")) { + tag.selfClosing = token.value == "/>"; + tag.end.row = iterator.getCurrentTokenRow(); + tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; + } + } while(token = iterator.stepBackward()); + + return null; + }; + + this._pop = function(stack, tag) { + while (stack.length) { + + var top = stack[stack.length-1]; + if (!tag || top.tagName == tag.tagName) { + return stack.pop(); + } + else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { + stack.pop(); + continue; + } else { + return null; + } + } + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var firstTag = this._getFirstTagInLine(session, row); + + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + + var isBackward = firstTag.closing || firstTag.selfClosing; + var stack = []; + var tag; + + if (!isBackward) { + var iterator = new TokenIterator(session, row, firstTag.start.column); + var start = { + row: row, + column: firstTag.start.column + firstTag.tagName.length + 2 + }; + if (firstTag.start.row == firstTag.end.row) + start.column = firstTag.end.column; + while (tag = this._readTagForward(iterator)) { + if (tag.selfClosing) { + if (!stack.length) { + tag.start.column += tag.tagName.length + 2; + tag.end.column -= 2; + return Range.fromPoints(tag.start, tag.end); + } else + continue; + } + + if (tag.closing) { + this._pop(stack, tag); + if (stack.length == 0) + return Range.fromPoints(start, tag.start); + } + else { + stack.push(tag); + } + } + } + else { + var iterator = new TokenIterator(session, row, firstTag.end.column); + var end = { + row: row, + column: firstTag.start.column + }; + + while (tag = this._readTagBackward(iterator)) { + if (tag.selfClosing) { + if (!stack.length) { + tag.start.column += tag.tagName.length + 2; + tag.end.column -= 2; + return Range.fromPoints(tag.start, tag.end); + } else + continue; + } + + if (!tag.closing) { + this._pop(stack, tag); + if (stack.length == 0) { + tag.start.column += tag.tagName.length + 2; + if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) + tag.start.column = tag.end.column; + return Range.fromPoints(tag.start, end); + } + } + else { + stack.push(tag); + } + } + } + + }; + +}).call(FoldMode.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/folding/xml_test.js b/plugins/node_modules/ace/lib/ace/mode/folding/xml_test.js new file mode 100644 index 00000000..ec07cc05 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/folding/xml_test.js @@ -0,0 +1,110 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") + require("amd-loader"); + +define(function(require, exports, module) { +"use strict"; + +var XmlMode = require("../xml").Mode; +var EditSession = require("../../edit_session").EditSession; +var assert = require("../../test/assertions"); + +module.exports = { + + "test: fold multi line self closing element": function() { + var session = new EditSession([ + '<person', + ' firstname="fabian"', + ' lastname="jakobs"/>' + ]); + + var mode = new XmlMode(); + session.setFoldStyle("markbeginend"); + session.setMode(mode); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(2), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 8, 2, 19); + assert.range(session.getFoldWidgetRange(2), 0, 8, 2, 19); + }, + + "test: fold should skip self closing elements": function() { + var session = new EditSession([ + '<person>', + ' <attrib value="fabian"/>', + '</person>' + ]); + + var mode = new XmlMode(); + session.setFoldStyle("markbeginend"); + session.setMode(mode); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(2), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 8, 2, 0); + assert.range(session.getFoldWidgetRange(2), 0, 8, 2, 0); + }, + + "test: fold should skip multi line self closing elements": function() { + var session = new EditSession([ + '<person>', + ' <attib', + ' key="name"', + ' value="fabian"/>', + '</person>' + ]); + + var mode = new XmlMode(); + session.setMode(mode); + session.setFoldStyle("markbeginend"); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), "start"); + assert.equal(session.getFoldWidget(2), ""); + assert.equal(session.getFoldWidget(3), "end"); + assert.equal(session.getFoldWidget(4), "end"); + + assert.range(session.getFoldWidgetRange(0), 0, 8, 4, 0); + assert.range(session.getFoldWidgetRange(1), 1, 9, 3, 19); + assert.range(session.getFoldWidgetRange(3), 1, 9, 3, 19); + assert.range(session.getFoldWidgetRange(4), 0, 8, 4, 0); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) + require("asyncjs").test.testcase(module.exports).exec(); diff --git a/plugins/node_modules/ace/lib/ace/mode/forth.js b/plugins/node_modules/ace/lib/ace/mode/forth.js new file mode 100644 index 00000000..21f45ffd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/forth.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ForthHighlightRules = require("./forth_highlight_rules").ForthHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = ForthHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = null; + this.$id = "ace/mode/forth"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/forth_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/forth_highlight_rules.js new file mode 100644 index 00000000..cab3d879 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/forth_highlight_rules.js @@ -0,0 +1,164 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from https://raw.github.com/vze26m98/Forth.tmbundle/master/Syntaxes/Forth.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ForthHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: [ { include: '#forth' } ], + '#comment': + [ { token: 'comment.line.double-dash.forth', + regex: '(?:^|\\s)--\\s.*$', + comment: 'line comments for iForth' }, + { token: 'comment.line.backslash.forth', + regex: '(?:^|\\s)\\\\[\\s\\S]*$', + comment: 'ANSI line comment' }, + { token: 'comment.line.backslash-g.forth', + regex: '(?:^|\\s)\\\\[Gg] .*$', + comment: 'gForth line comment' }, + { token: 'comment.block.forth', + regex: '(?:^|\\s)\\(\\*(?=\\s|$)', + push: + [ { token: 'comment.block.forth', + regex: '(?:^|\\s)\\*\\)(?=\\s|$)', + next: 'pop' }, + { defaultToken: 'comment.block.forth' } ], + comment: 'multiline comments for iForth' }, + { token: 'comment.block.documentation.forth', + regex: '\\bDOC\\b', + caseInsensitive: true, + push: + [ { token: 'comment.block.documentation.forth', + regex: '\\bENDDOC\\b', + caseInsensitive: true, + next: 'pop' }, + { defaultToken: 'comment.block.documentation.forth' } ], + comment: 'documentation comments for iForth' }, + { token: 'comment.line.parentheses.forth', + regex: '(?:^|\\s)\\.?\\( [^)]*\\)', + comment: 'ANSI line comment' } ], + '#constant': + [ { token: 'constant.language.forth', + regex: '(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)', + caseInsensitive: true}, + { token: 'constant.numeric.forth', + regex: '(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)'}, + { token: 'constant.character.forth', + regex: '(?:^|\\s)(?:[&^]\\S|(?:"|\')\\S(?:"|\'))(?=\\s|$)'}], + '#forth': + [ { include: '#constant' }, + { include: '#comment' }, + { include: '#string' }, + { include: '#word' }, + { include: '#variable' }, + { include: '#storage' }, + { include: '#word-def' } ], + '#storage': + [ { token: 'storage.type.forth', + regex: '(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)', + caseInsensitive: true}], + '#string': + [ { token: 'string.quoted.double.forth', + regex: '(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")', + caseInsensitive: true}, + { token: 'string.unquoted.forth', + regex: '(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)', + caseInsensitive: true}], + '#variable': + [ { token: 'variable.language.forth', + regex: '\\b(?:I|J)\\b', + caseInsensitive: true } ], + '#word': + [ { token: 'keyword.control.immediate.forth', + regex: '(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)', + caseInsensitive: true}, + { token: 'keyword.other.immediate.forth', + regex: '(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT\'S|])(?=\\s|$)', + caseInsensitive: true}, + { token: 'keyword.control.compile-only.forth', + regex: '(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)', + caseInsensitive: true}, + { token: 'keyword.other.compile-only.forth', + regex: '(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\[\'\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]|<COMPILATION|<INTERPRETATION|ASSERT\\(|ASSERT0\\(|ASSERT1\\(|ASSERT2\\(|ASSERT3\\(|COMPILATION>|DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)', + caseInsensitive: true}, + { token: 'keyword.other.non-immediate.forth', + regex: '(?:^|\\s)(?:\'|<IS>|<TO>|CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)', + caseInsensitive: true}, + { token: 'keyword.other.warning.forth', + regex: '(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)', + caseInsensitive: true}], + '#word-def': + [ { token: + [ 'keyword.other.compile-only.forth', + 'keyword.other.compile-only.forth', + 'meta.block.forth', + 'entity.name.function.forth' ], + regex: '(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)', + caseInsensitive: true, + push: + [ { token: 'keyword.other.compile-only.forth', + regex: ';(?:CODE)?', + caseInsensitive: true, + next: 'pop' }, + { include: '#constant' }, + { include: '#comment' }, + { include: '#string' }, + { include: '#word' }, + { include: '#variable' }, + { include: '#storage' }, + { defaultToken: 'meta.block.forth' } ] } ] }; + + this.normalizeRules(); +}; + +ForthHighlightRules.metaData = { fileTypes: [ 'frt', 'fs', 'ldr', 'fth', '4th' ], + foldingStartMarker: '/\\*\\*|\\{\\s*$', + foldingStopMarker: '\\*\\*/|^\\s*\\}', + keyEquivalent: '^~F', + name: 'Forth', + scopeName: 'source.forth' }; + + +oop.inherits(ForthHighlightRules, TextHighlightRules); + +exports.ForthHighlightRules = ForthHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/fortran.js b/plugins/node_modules/ace/lib/ace/mode/fortran.js new file mode 100644 index 00000000..a47e3573 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/fortran.js @@ -0,0 +1,113 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* Derived from Python rules */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var FortranHighlightRules = require("./fortran_highlight_rules").FortranHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Range = require("../range").Range; + +var Mode = function() { + this.HighlightRules = FortranHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "!"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + var outdents = { + "return": 1, + "break": 1, + "continue": 1, + "RETURN": 1, + "BREAK": 1, + "CONTINUE": 1 + }; + + this.checkOutdent = function(state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + + if (!tokens) + return false; + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + + if (!last) + return false; + + return (last.type == "keyword" && outdents[last.value]); + }; + + this.autoOutdent = function(state, doc, row) { + + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + }; + + this.$id = "ace/mode/fortran"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/fortran_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/fortran_highlight_rules.js new file mode 100644 index 00000000..8d50db54 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/fortran_highlight_rules.js @@ -0,0 +1,233 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* Derived from Python highlighing rules */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var FortranHighlightRules = function() { + + var keywords = ( + "call|case|contains|continue|cycle|do|else|elseif|end|enddo|endif|function|"+ + "if|implicit|in|include|inout|intent|module|none|only|out|print|program|return|"+ + "select|status|stop|subroutine|" + + "return|then|use|while|write|"+ + "CALL|CASE|CONTAINS|CONTINUE|CYCLE|DO|ELSE|ELSEIF|END|ENDDO|ENDIF|FUNCTION|"+ + "IF|IMPLICIT|IN|INCLUDE|INOUT|INTENT|MODULE|NONE|ONLY|OUT|PRINT|PROGRAM|RETURN|"+ + "SELECT|STATUS|STOP|SUBROUTINE|" + + "RETURN|THEN|USE|WHILE|WRITE" + ); + + var keywordOperators = ( + "and|or|not|eq|ne|gt|ge|lt|le|" + + "AND|OR|NOT|EQ|NE|GT|GE|LT|LE" + ); + + var builtinConstants = ( + "true|false|TRUE|FALSE" + ); + + var builtinFunctions = ( + "abs|achar|acos|acosh|adjustl|adjustr|aimag|aint|all|allocate|"+ + "anint|any|asin|asinh|associated|atan|atan2|atanh|"+ + "bessel_j0|bessel_j1|bessel_jn|bessel_y0|bessel_y1|bessel_yn|"+ + "bge|bgt|bit_size|ble|blt|btest|ceiling|char|cmplx|conjg|cos|cosh|"+ + "count|cpu_time|cshift|date_and_time|dble|deallocate|digits|dim|dot_product|dprod|"+ + "dshiftl|dshiftr|dsqrt|eoshift|epsilon|erf|erfc|erfc_scaled|exp|float|floor|"+ + "format|fraction|gamma|input|len|lge|lgt|lle|llt|log|log10|maskl|maskr|matmul|max|maxloc|maxval|"+ + "merge|min|minloc|minval|mod|modulo|nint|not|norm2|null|nullify|pack|parity|popcnt|poppar|"+ + "precision|present|product|radix|random_number|random_seed|range|repeat|reshape|round|"+ + "rrspacing|same_type_as|scale|scan|selected_char_kind|selected_int_kind|selected_real_kind|"+ + "set_exponent|shape|shifta|shiftl|shiftr|sign|sin|sinh|size|sngl|spacing|spread|"+ + "sqrt|sum|system_clock|tan|tanh|tiny|trailz|transfer|transpose|trim|ubound|unpack|verify|" + + "ABS|ACHAR|ACOS|ACOSH|ADJUSTL|ADJUSTR|AIMAG|AINT|ALL|ALLOCATE|"+ + "ANINT|ANY|ASIN|ASINH|ASSOCIATED|ATAN|ATAN2|ATANH|"+ + "BESSEL_J0|BESSEL_J1|BESSEL_JN|BESSEL_Y0|BESSEL_Y1|BESSEL_YN|"+ + "BGE|BGT|BIT_SIZE|BLE|BLT|BTEST|CEILING|CHAR|CMPLX|CONJG|COS|COSH|"+ + "COUNT|CPU_TIME|CSHIFT|DATE_AND_TIME|DBLE|DEALLOCATE|DIGITS|DIM|DOT_PRODUCT|DPROD|"+ + "DSHIFTL|DSHIFTR|DSQRT|EOSHIFT|EPSILON|ERF|ERFC|ERFC_SCALED|EXP|FLOAT|FLOOR|"+ + "FORMAT|FRACTION|GAMMA|INPUT|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|MASKL|MASKR|MATMUL|MAX|MAXLOC|MAXVAL|"+ + "MERGE|MIN|MINLOC|MINVAL|MOD|MODULO|NINT|NOT|NORM2|NULL|NULLIFY|PACK|PARITY|POPCNT|POPPAR|"+ + "PRECISION|PRESENT|PRODUCT|RADIX|RANDOM_NUMBER|RANDOM_SEED|RANGE|REPEAT|RESHAPE|ROUND|"+ + "RRSPACING|SAME_TYPE_AS|SCALE|SCAN|SELECTED_CHAR_KIND|SELECTED_INT_KIND|SELECTED_REAL_KIND|"+ + "SET_EXPONENT|SHAPE|SHIFTA|SHIFTL|SHIFTR|SIGN|SIN|SINH|SIZE|SNGL|SPACING|SPREAD|"+ + "SQRT|SUM|SYSTEM_CLOCK|TAN|TANH|TINY|TRAILZ|TRANSFER|TRANSPOSE|TRIM|UBOUND|UNPACK|VERIFY" + ); + + var storageType = ( + "logical|character|integer|real|type|" + + "LOGICAL|CHARACTER|INTEGER|REAL|TYPE" + ); + + var storageModifiers = ( + "allocatable|dimension|intent|parameter|pointer|target|private|public|" + + "ALLOCATABLE|DIMENSION|INTENT|PARAMETER|POINTER|TARGET|PRIVATE|PUBLIC" + ); + + var keywordMapper = this.createKeywordMapper({ + "invalid.deprecated": "debugger", + "support.function": builtinFunctions, + "constant.language": builtinConstants, + "keyword": keywords, + "keyword.operator": keywordOperators, + "storage.type": storageType, + "storage.modifier" : storageModifiers + }, "identifier"); + + var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; + + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var octInteger = "(?:0[oO]?[0-7]+)"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var binInteger = "(?:0[bB][01]+)"; + var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; + + var exponent = "(?:[eE][+-]?\\d+)"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; + + this.$rules = { + "start" : [ { + token : "comment", + regex : "!.*$" + }, { + token : "string", // multi line """ string start + regex : strPre + '"{3}', + next : "qqstring3" + }, { + token : "string", // " string + regex : strPre + '"(?=.)', + next : "qqstring" + }, { + token : "string", // multi line ''' string start + regex : strPre + "'{3}", + next : "qstring3" + }, { + token : "string", // ' string + regex : strPre + "'(?=.)", + next : "qstring" + }, { + token : "constant.numeric", // imaginary + regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token : "constant.numeric", // float + regex : floatNumber + }, { + token : "constant.numeric", // long integer + regex : integer + "[lL]\\b" + }, { + token : "constant.numeric", // integer + regex : integer + "\\b" + }, { + token : "keyword", // pre-compiler directives + regex : "#\\s*(?:include|import|define|undef|INCLUDE|IMPORT|DEFINE|UNDEF)\\b" + }, { + token : "keyword", // special case pre-compiler directive + regex : "#\\s*(?:endif|ifdef|else|elseif|ifndef|ENDIF|IFDEF|ELSE|ELSEIF|IFNDEF)\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token : "paren.lparen", + regex : "[\\[\\(\\{]" + }, { + token : "paren.rparen", + regex : "[\\]\\)\\}]" + }, { + token : "text", + regex : "\\s+" + } ], + "qqstring3" : [ { + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", // multi line """ string end + regex : '"{3}', + next : "start" + }, { + defaultToken : "string" + } ], + "qstring3" : [ { + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", // multi line """ string end + regex : '"{3}', + next : "start" + }, { + defaultToken : "string" + } ], + "qqstring" : [{ + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", + regex : "\\\\$", + next : "qqstring" + }, { + token : "string", + regex : '"|$', + next : "start" + }, { + defaultToken: "string" + }], + "qstring" : [{ + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", + regex : "\\\\$", + next : "qstring" + }, { + token : "string", + regex : "'|$", + next : "start" + }, { + defaultToken: "string" + }] + }; +}; + +oop.inherits(FortranHighlightRules, TextHighlightRules); + +exports.FortranHighlightRules = FortranHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/ftl.js b/plugins/node_modules/ace/lib/ace/mode/ftl.js new file mode 100644 index 00000000..949671c3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ftl.js @@ -0,0 +1,50 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var FtlHighlightRules = require("./ftl_highlight_rules").FtlHighlightRules; + +var Mode = function() { + this.HighlightRules = FtlHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.$id = "ace/mode/ftl"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/ftl_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/ftl_highlight_rules.js new file mode 100644 index 00000000..89069bbe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ftl_highlight_rules.js @@ -0,0 +1,194 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var FtlLangHighlightRules = function () { + + var stringBuiltIns = "\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|" + + "ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|" + + "left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|" + + "upper_case|word_list|xhtml|xml"; + var numberBuiltIns = "c|round|floor|ceiling"; + var dateBuiltIns = "iso_[a-z_]+"; + var seqBuiltIns = "first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk"; + var hashBuiltIns = "keys|values"; + var xmlBuiltIns = "children|parent|root|ancestors|node_name|node_type|node_namespace"; + var expertBuiltIns = "byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|" + + "eval|has_content|interpret|is_[a-z_]+|namespacenew"; + var allBuiltIns = stringBuiltIns + numberBuiltIns + dateBuiltIns + seqBuiltIns + hashBuiltIns + + xmlBuiltIns + expertBuiltIns; + + var deprecatedBuiltIns = "default|exists|if_exists|web_safe"; + + var variables = "data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|" + + "now|output_encoding|template_name|url_escaping_charset|vars|version"; + + var operators = "gt|gte|lt|lte|as|in|using"; + + var reserved = "true|false"; + + var attributes = "encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|" + + "url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|" + + "attributes"; + + this.$rules = { + "start" : [{ + token : "constant.character.entity", + regex : /&[^;]+;/ + }, { + token : "support.function", + regex : "\\?("+allBuiltIns+")" + }, { + token : "support.function.deprecated", + regex : "\\?("+deprecatedBuiltIns+")" + }, { + token : "language.variable", + regex : "\\.(?:"+variables+")" + }, { + token : "constant.language", + regex : "\\b("+reserved+")\\b" + }, { + token : "keyword.operator", + regex : "\\b(?:"+operators+")\\b" + }, { + token : "entity.other.attribute-name", + regex : attributes + }, { + token : "string", // + regex : /['"]/, + next : "qstring" + }, { + // Deal with variable names that contains number + // e.g. <#if var42 == 42 > + token : function(value) { + if (value.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")) { + return "constant.numeric"; + } else { + return "variable"; + } + }, + regex : /[\w.+\-]+/ + }, { + token : "keyword.operator", + regex : "!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + }], + + "qstring" : [{ + token : "constant.character.escape", + regex : '\\\\[nrtvef\\\\"$]' + }, { + token : "string", + regex : /['"]/, + next : "start" + }, { + defaultToken : "string" + }] + }; +}; + +oop.inherits(FtlLangHighlightRules, TextHighlightRules); + +var FtlHighlightRules = function() { + HtmlHighlightRules.call(this); + + var directives = "assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|" + + "ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|" + + "setting|stop|switch|t|visit"; + + var startRules = [ + { + token : "comment", + regex : "<#--", + next : "ftl-dcomment" + }, { + token : "string.interpolated", + regex : "\\${", + push : "ftl-start" + }, { + token : "keyword.function", + regex : "</?#("+directives+")", + push : "ftl-start" + }, { + token : "keyword.other", + regex : "</?@[a-zA-Z\\.]+", + push : "ftl-start" + } + ]; + + var endRules = [ + { + token : "keyword", + regex : "/?>", + next : "pop" + }, { + token : "string.interpolated", + regex : "}", + next : "pop" + } + ]; + + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + + this.embedRules(FtlLangHighlightRules, "ftl-", endRules, ["start"]); + + this.addRules({ + "ftl-dcomment" : [{ + token : "comment", + regex : "-->", + next : "pop" + }, { + defaultToken : "comment" + }] + }); + + this.normalizeRules(); +}; + +oop.inherits(FtlHighlightRules, HtmlHighlightRules); + +exports.FtlHighlightRules = FtlHighlightRules; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/gcode.js b/plugins/node_modules/ace/lib/ace/mode/gcode.js new file mode 100644 index 00000000..6fa8e766 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/gcode.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + "use strict"; + + var oop = require("../lib/oop"); + var TextMode = require("./text").Mode; + var GcodeHighlightRules = require("./gcode_highlight_rules").GcodeHighlightRules; + var Range = require("../range").Range; + + var Mode = function() { + this.HighlightRules = GcodeHighlightRules; + this.$behaviour = this.$defaultBehaviour; + }; + oop.inherits(Mode, TextMode); + + (function() { + this.$id = "ace/mode/gcode"; + }).call(Mode.prototype); + + exports.Mode = Mode; + +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/gcode_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/gcode_highlight_rules.js new file mode 100644 index 00000000..5fe8ff26 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/gcode_highlight_rules.js @@ -0,0 +1,94 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + "use strict"; + + var oop = require("../lib/oop"); + var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + + var GcodeHighlightRules = function() { + + var keywords = ( + "IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL" + ); + + var builtinConstants = ( + "PI" + ); + + var builtinFunctions = ( + "ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN" + ); + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants + }, "identifier", true); + + this.$rules = { + "start" : [ { + token : "comment", + regex : "\\(.*\\)" + }, { + token : "comment", // block number + regex : "([N])([0-9]+)" + }, { + token : "string", // " string + regex : "([G])([0-9]+\\.?[0-9]?)" + }, { + token : "string", // ' string + regex : "([M])([0-9]+\\.?[0-9]?)" + }, { + token : "constant.numeric", // float + regex : "([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)" + }, { + token : keywordMapper, + regex : "[A-Z]" + }, { + token : "keyword.operator", + regex : "EQ|LT|GT|NE|GE|LE|OR|XOR" + }, { + token : "paren.lparen", + regex : "[\\[]" + }, { + token : "paren.rparen", + regex : "[\\]]" + }, { + token : "text", + regex : "\\s+" + } ] + }; + }; + + oop.inherits(GcodeHighlightRules, TextHighlightRules); + + exports.GcodeHighlightRules = GcodeHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/gherkin.js b/plugins/node_modules/ace/lib/ace/mode/gherkin.js new file mode 100644 index 00000000..33bb92d4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/gherkin.js @@ -0,0 +1,81 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GherkinHighlightRules = require("./gherkin_highlight_rules").GherkinHighlightRules; + +var Mode = function() { + this.HighlightRules = GherkinHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "#"; + this.$id = "ace/mode/gherkin"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + var space2 = " "; + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + console.log(state); + + if(line.match("[ ]*\\|")) { + indent += "| "; + } + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + + if (state == "start") { + if (line.match("Scenario:|Feature:|Scenario Outline:|Background:")) { + indent += space2; + } else if(line.match("(Given|Then).+(:)$|Examples:")) { + indent += space2; + } else if(line.match("\\*.+")) { + indent += "* "; + } + } + + + return indent; + }; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/gherkin_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/gherkin_highlight_rules.js new file mode 100644 index 00000000..86c221b4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/gherkin_highlight_rules.js @@ -0,0 +1,150 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; + +var GherkinHighlightRules = function() { + var languages = [{ + name: "en", + labels: "Feature|Background|Scenario(?: Outline)?|Examples", + keywords: "Given|When|Then|And|But" + } + /* TODO find a way to enable this when first line in the file is # language: pl + , { + name: "pl", + labels: "WÅ‚aÅ›ciwość|Funkcja|Aspekt|Potrzeba biznesowa|ZaÅ‚ożenia|Scenariusz|Szablon scenariusza|PrzykÅ‚ady", + keywords: "MajÄ…c|ZakÅ‚adajÄ…c(?:, że)?|Jeżeli|JeÅ›li|Gdy|Kiedy|Wtedy|Oraz|I|Ale" + } + */]; + + var labels = languages.map(function(l) { + return l.labels; + }).join("|"); + var keywords = languages.map(function(l) { + return l.keywords; + }).join("|"); + + // need to include constant ints + this.$rules = { + start : [{ + token: "constant.numeric", + regex: "(?:(?:[1-9]\\d*)|(?:0))" + }, { + token : "comment", + regex : "#.*$" + }, { + token : "keyword", + regex : "(?:" + labels + "):|(?:" + keywords + ")\\b" + }, { + token : "keyword", + regex : "\\*" + }, { + token : "string", // multi line """ string start + regex : '"{3}', + next : "qqstring3" + }, { + token : "string", // " string + regex : '"', + next : "qqstring" + }, { + token : "text", + regex : "^\\s*(?=@[\\w])", + next : [{ + token : "text", + regex : "\\s+" + }, { + token : "variable.parameter", + regex : "@[\\w]+" + }, { + token : "empty", + regex : "", + next : "start" + }] + }, { + token : "comment", + regex : "<[^>]+>" + }, { + token : "comment", + regex : "\\|(?=.)", + next : "table-item" + }, { + token : "comment", + regex : "\\|$", + next : "start" + }], + "qqstring3" : [ { + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", // multi line """ string end + regex : '"{3}', + next : "start" + }, { + defaultToken : "string" + }], + "qqstring" : [{ + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", + regex : "\\\\$", + next : "qqstring" + }, { + token : "string", + regex : '"|$', + next : "start" + }, { + defaultToken: "string" + }], + "table-item" : [{ + token : "comment", + regex : /$/, + next : "start" + }, { + token : "comment", + regex : /\|/ + }, { + token : "string", + regex : /\\./ + }, { + defaultToken : "string" + }] + }; + this.normalizeRules(); +}; + +oop.inherits(GherkinHighlightRules, TextHighlightRules); + +exports.GherkinHighlightRules = GherkinHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/gitignore.js b/plugins/node_modules/ace/lib/ace/mode/gitignore.js new file mode 100644 index 00000000..17c03a9d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/gitignore.js @@ -0,0 +1,21 @@ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GitignoreHighlightRules = require("./gitignore_highlight_rules").GitignoreHighlightRules; + +var Mode = function() { + this.HighlightRules = GitignoreHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "#"; + this.$id = "ace/mode/gitignore"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/gitignore_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/gitignore_highlight_rules.js new file mode 100644 index 00000000..cfa42afa --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/gitignore_highlight_rules.js @@ -0,0 +1,31 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var GitignoreHighlightRules = function() { + this.$rules = { + "start" : [ + { + token : "comment", + regex : /^\s*#.*$/ + }, { + token : "keyword", // negated patterns + regex : /^\s*!.*$/ + } + ] + }; + + this.normalizeRules(); +}; + +GitignoreHighlightRules.metaData = { + fileTypes: ['gitignore'], + name: 'Gitignore' +}; + +oop.inherits(GitignoreHighlightRules, TextHighlightRules); + +exports.GitignoreHighlightRules = GitignoreHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/glsl.js b/plugins/node_modules/ace/lib/ace/mode/glsl.js new file mode 100644 index 00000000..dab63106 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/glsl.js @@ -0,0 +1,56 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var CMode = require("./c_cpp").Mode; +var glslHighlightRules = require("./glsl_highlight_rules").glslHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = glslHighlightRules; + + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, CMode); + +(function() { + this.$id = "ace/mode/glsl"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/glsl_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/glsl_highlight_rules.js new file mode 100644 index 00000000..22218fbe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/glsl_highlight_rules.js @@ -0,0 +1,81 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; + +var glslHighlightRules = function() { + + var keywords = ( + "attribute|const|uniform|varying|break|continue|do|for|while|" + + "if|else|in|out|inout|float|int|void|bool|true|false|" + + "lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|" + + "mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|" + + "samplerCube|struct" + ); + + var buildinConstants = ( + "radians|degrees|sin|cos|tan|asin|acos|atan|pow|" + + "exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|" + + "min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|" + + "normalize|faceforward|reflect|refract|matrixCompMult|lessThan|" + + "lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|" + + "not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|" + + "texture2DProjLod|textureCube|textureCubeLod|" + + "gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|" + + "gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|" + + "gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|" + + "gl_DepthRangeParameters|gl_DepthRange|" + + // The following two are only for MIME x-shader/x-vertex. + "gl_Position|gl_PointSize|" + + // The following five are only for MIME x-shader/x-fragment. + "gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData" + ); + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "constant.language": buildinConstants + }, "identifier"); + + this.$rules = new c_cppHighlightRules().$rules; + this.$rules.start.forEach(function(rule) { + if (typeof rule.token == "function") + rule.token = keywordMapper; + }); +}; + +oop.inherits(glslHighlightRules, c_cppHighlightRules); + +exports.glslHighlightRules = glslHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/gobstones.js b/plugins/node_modules/ace/lib/ace/mode/gobstones.js new file mode 100644 index 00000000..f4fd08d6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/gobstones.js @@ -0,0 +1,26 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptMode = require("./javascript").Mode; +var GobstonesHighlightRules = require("./gobstones_highlight_rules").GobstonesHighlightRules; + +var Mode = function() { + JavaScriptMode.call(this); + this.HighlightRules = GobstonesHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, JavaScriptMode); + +(function() { + + this.createWorker = function(session) { + return null; + }; + + this.$id = "ace/mode/gobstones"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/gobstones_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/gobstones_highlight_rules.js new file mode 100644 index 00000000..5ccbf161 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/gobstones_highlight_rules.js @@ -0,0 +1,111 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var GobstonesHighlightRules = function() { + + var keywords = ( + "program|procedure|function|interactive|if|then|else|switch|repeat|while|foreach|in|not|div|mod|Skip|return" + ); + + var buildinConstants = ( + "False|True" + ); + + + var langClasses = ( + "Poner|Sacar|Mover|IrAlBorde|VaciarTablero|" + + "nroBolitas|hayBolitas|puedeMover|siguiente|previo|opuesto|minBool|maxBool|" + + "minDir|maxDir|minColor|maxColor" + ); + + var supportType = ( + "Verde|Rojo|Azul|Negro|Norte|Sur|Este|Oeste" + ); + + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": langClasses, + "support.type": supportType + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + { + token : "comment", + regex : "\\-\\-.*$" + }, + { + token : "comment", + regex : "#.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token : "constant.numeric", // float + regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token : "constant.language.boolean", + regex : "(?:True|False)\\b" + }, { + token : "keyword.operator", + regex : ":=|\\.\\.|,|;|\\|\\||\\/\\/|\\+|\\-|\\^|\\*|>|<|>=|=>|==|&&" + }, { + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(GobstonesHighlightRules, TextHighlightRules); + +exports.GobstonesHighlightRules = GobstonesHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/golang.js b/plugins/node_modules/ace/lib/ace/mode/golang.js new file mode 100644 index 00000000..012ae5be --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/golang.js @@ -0,0 +1,56 @@ +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = GolangHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = new CstyleBehaviour(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + };//end getNextLineIndent + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/golang"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/golang_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/golang_highlight_rules.js new file mode 100644 index 00000000..c2dcef94 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/golang_highlight_rules.js @@ -0,0 +1,119 @@ +define(function(require, exports, module) { + var oop = require("../lib/oop"); + var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; + var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + + var GolangHighlightRules = function() { + var keywords = ( + "else|break|case|return|goto|if|const|select|" + + "continue|struct|default|switch|for|range|" + + "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + + "select|type|var" + ); + var builtinTypes = ( + "string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + + "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error" + ); + var builtinFunctions = ( + "new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append" + ); + var builtinConstants = ("nil|true|false|iota"); + + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": builtinConstants, + "support.function": builtinFunctions, + "support.type": builtinTypes + }, ""); + + var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment.start", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string", // single line + regex : /"(?:[^"\\]|\\.)*?"/ + }, { + token : "string", // raw + regex : '`', + next : "bqstring" + }, { + token : "constant.numeric", // rune + regex : "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : ["keyword", "text", "entity.name.function"], + regex : "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" + }, { + token : function(val) { + if (val[val.length - 1] == "(") { + return [{ + type: keywordMapper(val.slice(0, -1)) || "support.function", + value: val.slice(0, -1) + }, { + type: "paren.lparen", + value: val.slice(-1) + }]; + } + + return keywordMapper(val) || "identifier"; + }, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" + }, { + token : "keyword.operator", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" + }, { + token : "punctuation.operator", + regex : "\\?|\\:|\\,|\\;|\\." + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment.end", + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "bqstring" : [ + { + token : "string", + regex : '`', + next : "start" + }, { + defaultToken : "string" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); + }; + oop.inherits(GolangHighlightRules, TextHighlightRules); + + exports.GolangHighlightRules = GolangHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/graphqlschema.js b/plugins/node_modules/ace/lib/ace/mode/graphqlschema.js new file mode 100644 index 00000000..a23fd32d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/graphqlschema.js @@ -0,0 +1,51 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GraphQLSchemaHighlightRules = require("./graphqlschema_highlight_rules").GraphQLSchemaHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = GraphQLSchemaHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "#"; + this.$id = "ace/mode/graphqlschema"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/graphqlschema_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/graphqlschema_highlight_rules.js new file mode 100644 index 00000000..4cb095d8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/graphqlschema_highlight_rules.js @@ -0,0 +1,74 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var GraphQLSchemaHighlightRules = function() { + + var keywords = ( + "type|interface|union|enum|schema|input|implements|extends|scalar" + ); + + var dataTypes = ( + "Int|Float|String|ID|Boolean" + ); + + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "storage.type": dataTypes + }, "identifier"); + + this.$rules = { + "start" : [ { + token : "comment", + regex : "#.*$" + }, { + token : "paren.lparen", + regex : /[\[({]/, + next : "start" + }, { + token : "paren.rparen", + regex : /[\])}]/ + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + } ] + }; + this.normalizeRules(); +}; + +oop.inherits(GraphQLSchemaHighlightRules, TextHighlightRules); + +exports.GraphQLSchemaHighlightRules = GraphQLSchemaHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/groovy.js b/plugins/node_modules/ace/lib/ace/mode/groovy.js new file mode 100644 index 00000000..107998bf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/groovy.js @@ -0,0 +1,24 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptMode = require("./javascript").Mode; +var GroovyHighlightRules = require("./groovy_highlight_rules").GroovyHighlightRules; + +var Mode = function() { + JavaScriptMode.call(this); + this.HighlightRules = GroovyHighlightRules; +}; +oop.inherits(Mode, JavaScriptMode); + +(function() { + + this.createWorker = function(session) { + return null; + }; + + this.$id = "ace/mode/groovy"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/groovy_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/groovy_highlight_rules.js new file mode 100644 index 00000000..e0a49141 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/groovy_highlight_rules.js @@ -0,0 +1,172 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var GroovyHighlightRules = function() { + + var keywords = ( + "assert|with|abstract|continue|for|new|switch|" + + "assert|default|goto|package|synchronized|" + + "boolean|do|if|private|this|" + + "break|double|implements|protected|throw|" + + "byte|else|import|public|throws|" + + "case|enum|instanceof|return|transient|" + + "catch|extends|int|short|try|" + + "char|final|interface|static|void|" + + "class|finally|long|strictfp|volatile|" + + "def|float|native|super|while" + ); + + var buildinConstants = ( + "null|Infinity|NaN|undefined" + ); + + var langClasses = ( + "AbstractMethodError|AssertionError|ClassCircularityError|"+ + "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ + "ExceptionInInitializerError|IllegalAccessError|"+ + "IllegalThreadStateException|InstantiationError|InternalError|"+ + "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ + "SuppressWarnings|TypeNotPresentException|UnknownError|"+ + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ + "InstantiationException|IndexOutOfBoundsException|"+ + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ + "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ + "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ + "ArrayStoreException|ClassCastException|LinkageError|"+ + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ + "Cloneable|Class|CharSequence|Comparable|String|Object" + ); + + // TODO var importClasses = ""; + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "support.function": langClasses, + "constant.language": buildinConstants + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token : "string", + regex : '"""', + next : "qqstring" + }, { + token : "string", + regex : "'''", + next : "qstring" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "qqstring" : [ + { + token : "constant.language.escape", + regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/ + }, { + token : "constant.language.escape", + regex : /\$[\w\d]+/ + }, { + token : "constant.language.escape", + regex : /\$\{[^"\}]+\}?/ + }, { + token : "string", + regex : '"{3,5}', + next : "start" + }, { + token : "string", + regex : '.+?' + } + ], + "qstring" : [ + { + token : "constant.language.escape", + regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/ + }, { + token : "string", + regex : "'{3,5}", + next : "start" + }, { + token : "string", + regex : ".+?" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(GroovyHighlightRules, TextHighlightRules); + +exports.GroovyHighlightRules = GroovyHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/haml.js b/plugins/node_modules/ace/lib/ace/mode/haml.js new file mode 100644 index 00000000..bce4e1e9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/haml.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Garen J. Torikian < gjtorikian AT gmail DOT com > + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HamlHighlightRules = require("./haml_highlight_rules").HamlHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = HamlHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + + this.$id = "ace/mode/haml"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/haml_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/haml_highlight_rules.js new file mode 100644 index 00000000..f5cc7e2c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/haml_highlight_rules.js @@ -0,0 +1,145 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var RubyExports = require("./ruby_highlight_rules"); +var RubyHighlightRules = RubyExports.RubyHighlightRules; + +var HamlHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + HtmlHighlightRules.call(this); + + this.$rules = { + "start": [ + { + token: "comment.block", // multiline HTML comment + regex: /^\/$/, + next: "comment" + }, + { + token: "comment.block", // multiline HAML comment + regex: /^\-#$/, + next: "comment" + }, + { + token: "comment.line", // HTML comment + regex: /\/\s*.*/ + }, + { + token: "comment.line", // HAML comment + regex: /-#\s*.*/ + }, + { + token: "keyword.other.doctype", + regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" + }, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + { + token: "meta.tag.haml", + regex: /(%[\w:\-]+)/ + }, + { + token: "keyword.attribute-name.class.haml", + regex: /\.[\w-]+/ + }, + { + token: "keyword.attribute-name.id.haml", + regex: /#[\w-]+/, + next: "element_class" + }, + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + RubyExports.constantOtherSymbol, + { + token: "text", + regex: /=|-|~/, + next: "embedded_ruby" + } + ], + "element_class": [ + { + token: "keyword.attribute-name.class.haml", + regex: /\.[\w-]+/ + }, + { + token: "punctuation.section", + regex: /\{/, + next: "element_attributes" + }, + RubyExports.constantOtherSymbol, + { + token: "empty", + regex: "$|(?!\\.|#|\\{|\\[|=|-|~|\\/])", + next: "start" + } + ], + "element_attributes": [ + RubyExports.constantOtherSymbol, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + { + token: "punctuation.section", + regex: /$|\}/, + next: "start" + } + ], + "embedded_ruby": [ + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + RubyExports.instanceVariable, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + { + token : "support.class", // class name + regex : "[A-Z][a-zA-Z_\\d]+" + }, + { + token : new RubyHighlightRules().getKeywords(), + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token : ["keyword", "text", "text"], + regex : "(?:do|\\{)(?: \\|[^|]+\\|)?$", + next : "start" + }, + { + token : ["text"], + regex : "^$", + next : "start" + }, + { + token : ["text"], + regex : "^(?!.*\\|\\s*$)", + next : "start" + } + ], + "comment": [ + { + token: "comment.block", + regex: /^$/, + next: "start" + }, + { + token: "comment.block", // comment spanning the whole line + regex: /\s+.*/ + } + ] + + }; + + this.normalizeRules(); +}; + +oop.inherits(HamlHighlightRules, HtmlHighlightRules); + +exports.HamlHighlightRules = HamlHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/handlebars.js b/plugins/node_modules/ace/lib/ace/mode/handlebars.js new file mode 100644 index 00000000..b29666ed --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/handlebars.js @@ -0,0 +1,26 @@ +/* global define */ + +define(function(require, exports, module) { + "use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var HandlebarsHighlightRules = require("./handlebars_highlight_rules").HandlebarsHighlightRules; +var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = HandlebarsHighlightRules; + this.$behaviour = new HtmlBehaviour(); +}; + +oop.inherits(Mode, HtmlMode); + +(function() { + this.blockComment = {start: "{{!--", end: "--}}"}; + this.$id = "ace/mode/handlebars"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/handlebars_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/handlebars_highlight_rules.js new file mode 100644 index 00000000..f91a48ec --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/handlebars_highlight_rules.js @@ -0,0 +1,72 @@ +/* global define */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + +function pop2(currentState, stack) { + stack.splice(0, 3); + return stack.shift() || "start"; +} +var HandlebarsHighlightRules = function() { + HtmlHighlightRules.call(this); + var hbs = { + regex : "(?={{)", + push : "handlebars" + }; + for (var key in this.$rules) { + this.$rules[key].unshift(hbs); + } + this.$rules.handlebars = [{ + token : "comment.start", + regex : "{{!--", + push : [{ + token : "comment.end", + regex : "--}}", + next : pop2 + }, { + defaultToken : "comment" + }] + }, { + token : "comment.start", + regex : "{{!", + push : [{ + token : "comment.end", + regex : "}}", + next : pop2 + }, { + defaultToken : "comment" + }] + }, { + token : "support.function", // unescaped variable + regex : "{{{", + push : [{ + token : "support.function", + regex : "}}}", + next : pop2 + }, { + token : "variable.parameter", + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" + }] + }, { + token : "storage.type.start", // begin section + regex : "{{[#\\^/&]?", + push : [{ + token : "storage.type.end", + regex : "}}", + next : pop2 + }, { + token : "variable.parameter", + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" + }] + }]; + + this.normalizeRules(); +}; + +oop.inherits(HandlebarsHighlightRules, HtmlHighlightRules); + +exports.HandlebarsHighlightRules = HandlebarsHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/haskell.js b/plugins/node_modules/ace/lib/ace/mode/haskell.js new file mode 100644 index 00000000..1a064417 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/haskell.js @@ -0,0 +1,63 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HaskellHighlightRules = require("./haskell_highlight_rules").HaskellHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = HaskellHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = null; + this.$id = "ace/mode/haskell"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/haskell_cabal.js b/plugins/node_modules/ace/lib/ace/mode/haskell_cabal.js new file mode 100644 index 00000000..2e2880c7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/haskell_cabal.js @@ -0,0 +1,61 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ +/** +* Haskell Cabal files mode (https://www.haskell.org/cabal/users-guide/developing-packages.html) +**/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CabalHighlightRules = require("./haskell_cabal_highlight_rules").CabalHighlightRules; +var FoldMode = require("./folding/haskell_cabal").FoldMode; + +var Mode = function() { + this.HighlightRules = CabalHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = null; + this.$id = "ace/mode/haskell_cabal"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/haskell_cabal_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/haskell_cabal_highlight_rules.js new file mode 100644 index 00000000..673aeade --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/haskell_cabal_highlight_rules.js @@ -0,0 +1,68 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + /** + * Haskell Cabal files highlighter (https://www.haskell.org/cabal/users-guide/developing-packages.html) + **/ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var CabalHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + this.$rules = { + "start" : [ + { + token : "comment", + regex : "^\\s*--.*$" + }, { + token: ["keyword"], + regex: /^(\s*\w.*?)(:(?:\s+|$))/ + }, { + token : "constant.numeric", // float + regex : /[\d_]+(?:(?:[\.\d_]*)?)/ + }, { + token : "constant.language.boolean", + regex : "(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" + }, { + token : "markup.heading", + regex : /^(\w.*)$/ + } + ]}; + +}; + +oop.inherits(CabalHighlightRules, TextHighlightRules); + +exports.CabalHighlightRules = CabalHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/haskell_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/haskell_highlight_rules.js new file mode 100644 index 00000000..225218a1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/haskell_highlight_rules.js @@ -0,0 +1,246 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from tm bundles\haskell.tmbundle\Syntaxes\Haskell.plist (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var HaskellHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: + [ 'punctuation.definition.entity.haskell', + 'keyword.operator.function.infix.haskell', + 'punctuation.definition.entity.haskell' ], + regex: '(`)([a-zA-Z_\']*?)(`)', + comment: 'In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10]).' }, + { token: 'constant.language.unit.haskell', regex: '\\(\\)' }, + { token: 'constant.language.empty-list.haskell', + regex: '\\[\\]' }, + { token: 'keyword.other.haskell', + regex: '\\b(module|signature)\\b', + push: + [ { token: 'keyword.other.haskell', regex: '\\bwhere\\b', next: 'pop' }, + { include: '#module_name' }, + { include: '#module_exports' }, + { token: 'invalid', regex: '[a-z]+' }, + { defaultToken: 'meta.declaration.module.haskell' } ] }, + { token: 'keyword.other.haskell', + regex: '\\bclass\\b', + push: + [ { token: 'keyword.other.haskell', + regex: '\\bwhere\\b', + next: 'pop' }, + { token: 'support.class.prelude.haskell', + regex: '\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b' }, + { token: 'entity.other.inherited-class.haskell', + regex: '[A-Z][A-Za-z_\']*' }, + { token: 'variable.other.generic-type.haskell', + regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, + { defaultToken: 'meta.declaration.class.haskell' } ] }, + { token: 'keyword.other.haskell', + regex: '\\binstance\\b', + push: + [ { token: 'keyword.other.haskell', + regex: '\\bwhere\\b|$', + next: 'pop' }, + { include: '#type_signature' }, + { defaultToken: 'meta.declaration.instance.haskell' } ] }, + { token: 'keyword.other.haskell', + regex: 'import', + push: + [ { token: 'meta.import.haskell', regex: '$|;|^', next: 'pop' }, + { token: 'keyword.other.haskell', regex: 'qualified|as|hiding' }, + { include: '#module_name' }, + { include: '#module_exports' }, + { defaultToken: 'meta.import.haskell' } ] }, + { token: [ 'keyword.other.haskell', 'meta.deriving.haskell' ], + regex: '(deriving)(\\s*\\()', + push: + [ { token: 'meta.deriving.haskell', regex: '\\)', next: 'pop' }, + { token: 'entity.other.inherited-class.haskell', + regex: '\\b[A-Z][a-zA-Z_\']*' }, + { defaultToken: 'meta.deriving.haskell' } ] }, + { token: 'keyword.other.haskell', + regex: '\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b' }, + { token: 'keyword.operator.haskell', regex: '\\binfix[lr]?\\b' }, + { token: 'keyword.control.haskell', + regex: '\\b(?:do|if|then|else)\\b' }, + { token: 'constant.numeric.float.haskell', + regex: '\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b', + comment: 'Floats are always decimal' }, + { token: 'constant.numeric.haskell', + regex: '\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b' }, + { token: + [ 'meta.preprocessor.c', + 'punctuation.definition.preprocessor.c', + 'meta.preprocessor.c' ], + regex: '^(\\s*)(#)(\\s*\\w+)', + comment: 'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.' }, + { include: '#pragma' }, + { token: 'punctuation.definition.string.begin.haskell', + regex: '"', + push: + [ { token: 'punctuation.definition.string.end.haskell', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.haskell', + regex: '\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&])' }, + { token: 'constant.character.escape.octal.haskell', + regex: '\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+' }, + { token: 'constant.character.escape.control.haskell', + regex: '\\^[A-Z@\\[\\]\\\\\\^_]' }, + { defaultToken: 'string.quoted.double.haskell' } ] }, + { token: + [ 'punctuation.definition.string.begin.haskell', + 'string.quoted.single.haskell', + 'constant.character.escape.haskell', + 'constant.character.escape.octal.haskell', + 'constant.character.escape.hexadecimal.haskell', + 'constant.character.escape.control.haskell', + 'punctuation.definition.string.end.haskell' ], + regex: '(\')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(\')' }, + { token: + [ 'meta.function.type-declaration.haskell', + 'entity.name.function.haskell', + 'meta.function.type-declaration.haskell', + 'keyword.other.double-colon.haskell' ], + regex: '^(\\s*)([a-z_][a-zA-Z0-9_\']*|\\([|!%$+\\-.,=</>]+\\))(\\s*)(::)', + push: + [ { token: 'meta.function.type-declaration.haskell', + regex: '$', + next: 'pop' }, + { include: '#type_signature' }, + { defaultToken: 'meta.function.type-declaration.haskell' } ] }, + { token: 'support.constant.haskell', + regex: '\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b' }, + { token: 'constant.other.haskell', regex: '\\b[A-Z]\\w*\\b' }, + { include: '#comments' }, + { token: 'support.function.prelude.haskell', + regex: '\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b' }, + { include: '#infix_op' }, + { token: 'keyword.operator.haskell', + regex: '[|!%$?~+:\\-.=</>\\\\]+', + comment: 'In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.' }, + { token: 'punctuation.separator.comma.haskell', regex: ',' } ], + '#block_comment': + [ { token: 'punctuation.definition.comment.haskell', + regex: '\\{-(?!#)', + push: + [ { include: '#block_comment' }, + { token: 'punctuation.definition.comment.haskell', + regex: '-\\}', + next: 'pop' }, + { defaultToken: 'comment.block.haskell' } ] } ], + '#comments': + [ { token: 'punctuation.definition.comment.haskell', + regex: '--.*', + push_: + [ { token: 'comment.line.double-dash.haskell', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-dash.haskell' } ] }, + { include: '#block_comment' } ], + '#infix_op': + [ { token: 'entity.name.function.infix.haskell', + regex: '\\([|!%$+:\\-.=</>]+\\)|\\(,+\\)' } ], + '#module_exports': + [ { token: 'meta.declaration.exports.haskell', + regex: '\\(', + push: + [ { token: 'meta.declaration.exports.haskell.end', + regex: '\\)', + next: 'pop' }, + { token: 'entity.name.function.haskell', + regex: '\\b[a-z][a-zA-Z_\']*' }, + { token: 'storage.type.haskell', regex: '\\b[A-Z][A-Za-z_\']*' }, + { token: 'punctuation.separator.comma.haskell', regex: ',' }, + { include: '#infix_op' }, + { token: 'meta.other.unknown.haskell', + regex: '\\(.*?\\)', + comment: 'So named because I don\'t know what to call this.' }, + { defaultToken: 'meta.declaration.exports.haskell.end' } ] } ], + '#module_name': + [ { token: 'support.other.module.haskell', + regex: '[A-Z][A-Za-z._\']*' } ], + '#pragma': + [ { token: 'meta.preprocessor.haskell', + regex: '\\{-#', + push: + [ { token: 'meta.preprocessor.haskell', + regex: '#-\\}', + next: 'pop' }, + { token: 'keyword.other.preprocessor.haskell', + regex: '\\b(?:LANGUAGE|UNPACK|INLINE)\\b' }, + { defaultToken: 'meta.preprocessor.haskell' } ] } ], + '#type_signature': + [ { token: + [ 'meta.class-constraint.haskell', + 'entity.other.inherited-class.haskell', + 'meta.class-constraint.haskell', + 'variable.other.generic-type.haskell', + 'meta.class-constraint.haskell', + 'keyword.other.big-arrow.haskell' ], + regex: '(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_\']*)(\\)\\s*)(=>)' }, + { include: '#pragma' }, + { token: 'keyword.other.arrow.haskell', regex: '->' }, + { token: 'keyword.other.big-arrow.haskell', regex: '=>' }, + { token: 'support.type.prelude.haskell', + regex: '\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b' }, + { token: 'variable.other.generic-type.haskell', + regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, + { token: 'storage.type.haskell', + regex: '\\b[A-Z][a-zA-Z0-9_\']*\\b' }, + { token: 'support.constant.unit.haskell', regex: '\\(\\)' }, + { include: '#comments' } ] }; + + this.normalizeRules(); +}; + +HaskellHighlightRules.metaData = { fileTypes: [ 'hs' ], + keyEquivalent: '^~H', + name: 'Haskell', + scopeName: 'source.haskell' }; + + +oop.inherits(HaskellHighlightRules, TextHighlightRules); + +exports.HaskellHighlightRules = HaskellHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/haxe.js b/plugins/node_modules/ace/lib/ace/mode/haxe.js new file mode 100644 index 00000000..e2ac5a26 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/haxe.js @@ -0,0 +1,56 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HaxeHighlightRules = require("./haxe_highlight_rules").HaxeHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = HaxeHighlightRules; + + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/haxe"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/haxe_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/haxe_highlight_rules.js new file mode 100644 index 00000000..2b528873 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/haxe_highlight_rules.js @@ -0,0 +1,97 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); + +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var HaxeHighlightRules = function() { + + var keywords = ( + "break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std" + ); + + var buildinConstants = ( + "null|true|false" + ); + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "constant.language": buildinConstants + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "punctuation.operator", + regex : "\\?|\\:|\\,|\\;|\\." + }, { + token : "paren.lparen", + regex : "[[({<]" + }, { + token : "paren.rparen", + regex : "[\\])}>]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(HaxeHighlightRules, TextHighlightRules); + +exports.HaxeHighlightRules = HaxeHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/hjson.js b/plugins/node_modules/ace/lib/ace/mode/hjson.js new file mode 100644 index 00000000..72aac0a1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/hjson.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HjsonHighlightRules = require("./hjson_highlight_rules").HjsonHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = HjsonHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/hjson"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/hjson_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/hjson_highlight_rules.js new file mode 100644 index 00000000..115bfdad --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/hjson_highlight_rules.js @@ -0,0 +1,221 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from Hjson.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var HjsonHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + include: "#comments" + }, { + include: "#rootObject" + }, { + include: "#value" + }], + "#array": [{ + token: "paren.lparen", + regex: /\[/, + push: [{ + token: "paren.rparen", + regex: /\]/, + next: "pop" + }, { + include: "#value" + }, { + include: "#comments" + }, { + token: "text", + regex: /,|$/ + }, { + token: "invalid.illegal", + regex: /[^\s\]]/ + }, { + defaultToken: "array" + }] + }], + "#comments": [{ + token: [ + "comment.punctuation", + "comment.line" + ], + regex: /(#)(.*$)/ + }, { + token: "comment.punctuation", + regex: /\/\*/, + push: [{ + token: "comment.punctuation", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block" + }] + }, { + token: [ + "comment.punctuation", + "comment.line" + ], + regex: /(\/\/)(.*$)/ + }], + "#constant": [{ + token: "constant", + regex: /\b(?:true|false|null)\b/ + }], + "#keyname": [{ + token: "keyword", + regex: /(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*(?=:)/ + }], + "#mstring": [{ + token: "string", + regex: /'''/, + push: [{ + token: "string", + regex: /'''/, + next: "pop" + }, { + defaultToken: "string" + }] + }], + "#number": [{ + token: "constant.numeric", + regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/, + comment: "handles integer and decimal numbers" + }], + "#object": [{ + token: "paren.lparen", + regex: /\{/, + push: [{ + token: "paren.rparen", + regex: /\}/, + next: "pop" + }, { + include: "#keyname" + }, { + include: "#value" + }, { + token: "text", + regex: /:/ + }, { + token: "text", + regex: /,/ + }, { + defaultToken: "paren" + }] + }], + "#rootObject": [{ + token: "paren", + regex: /(?=\s*(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*:)/, + push: [{ + token: "paren.rparen", + regex: /---none---/, + next: "pop" + }, { + include: "#keyname" + }, { + include: "#value" + }, { + token: "text", + regex: /:/ + }, { + token: "text", + regex: /,/ + }, { + defaultToken: "paren" + }] + }], + "#string": [{ + token: "string", + regex: /"/, + push: [{ + token: "string", + regex: /"/, + next: "pop" + }, { + token: "constant.language.escape", + regex: /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/ + }, { + token: "invalid.illegal", + regex: /\\./ + }, { + defaultToken: "string" + }] + }], + "#ustring": [{ + token: "string", + regex: /\b[^:,0-9\-\{\[\}\]\s].*$/ + }], + "#value": [{ + include: "#constant" + }, { + include: "#number" + }, { + include: "#string" + }, { + include: "#array" + }, { + include: "#object" + }, { + include: "#comments" + }, { + include: "#mstring" + }, { + include: "#ustring" + }] + }; + + this.normalizeRules(); +}; + +HjsonHighlightRules.metaData = { + fileTypes: ["hjson"], + foldingStartMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [{\\[] # the start of an object or array\n (?! # but not followed by\n .* # whatever\n [}\\]] # and the close of an object or array\n ,? # an optional comma\n \\s* # some optional space\n $ # at the end of the line\n )\n | # ...or...\n [{\\[] # the start of an object or array\n \\s* # some optional space\n $ # at the end of the line\n )", + foldingStopMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [}\\]] # and the close of an object or array\n )", + keyEquivalent: "^~J", + name: "Hjson", + scopeName: "source.hjson" +}; + + +oop.inherits(HjsonHighlightRules, TextHighlightRules); + +exports.HjsonHighlightRules = HjsonHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/html.js b/plugins/node_modules/ace/lib/ace/mode/html.js new file mode 100644 index 00000000..9382b76f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html.js @@ -0,0 +1,106 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +// var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; + +// http://www.w3.org/TR/html5/syntax.html#void-elements +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; + +var Mode = function(options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + // this.$completer = new HtmlCompletions(); + + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.blockComment = {start: "<!--", end: "-->"}; + + this.voidElements = lang.arrayToMap(voidElements); + + this.getNextLineIndent = function(state, line, tab) { + return this.$getIndent(line); + }; + + this.checkOutdent = function(state, line, input) { + return false; + }; + + this.getCompletions = function(state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + + this.createWorker = function(session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + + if (this.fragmentContext) + worker.call("setOptions", [{context: this.fragmentContext}]); + + worker.on("error", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/html"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/html/saxparser.js b/plugins/node_modules/ace/lib/ace/mode/html/saxparser.js new file mode 100644 index 00000000..e19e1fc4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html/saxparser.js @@ -0,0 +1,10430 @@ +define(function(require, exports, module) { +module.exports = (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({ +1:[function(_dereq_,module,exports){ +function isScopeMarker(node) { + if (node.namespaceURI === "http://www.w3.org/1999/xhtml") { + return node.localName === "applet" + || node.localName === "caption" + || node.localName === "marquee" + || node.localName === "object" + || node.localName === "table" + || node.localName === "td" + || node.localName === "th"; + } + if (node.namespaceURI === "http://www.w3.org/1998/Math/MathML") { + return node.localName === "mi" + || node.localName === "mo" + || node.localName === "mn" + || node.localName === "ms" + || node.localName === "mtext" + || node.localName === "annotation-xml"; + } + if (node.namespaceURI === "http://www.w3.org/2000/svg") { + return node.localName === "foreignObject" + || node.localName === "desc" + || node.localName === "title"; + } +} + +function isListItemScopeMarker(node) { + return isScopeMarker(node) + || (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'ol') + || (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'ul'); +} + +function isTableScopeMarker(node) { + return (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'table') + || (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'html'); +} + +function isTableBodyScopeMarker(node) { + return (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'tbody') + || (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'tfoot') + || (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'thead') + || (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'html'); +} + +function isTableRowScopeMarker(node) { + return (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'tr') + || (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'html'); +} + +function isButtonScopeMarker(node) { + return isScopeMarker(node) + || (node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'button'); +} + +function isSelectScopeMarker(node) { + return !(node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'optgroup') + && !(node.namespaceURI === "http://www.w3.org/1999/xhtml" && node.localName === 'option'); +} + +/** + * Represents a stack of open elements + * @constructor + */ +function ElementStack() { + this.elements = []; + this.rootNode = null; + this.headElement = null; + this.bodyElement = null; +} + +/** + * + * @param {String} localName + * @param {Function} isMarker + * @return {Boolean} + * @private + */ +ElementStack.prototype._inScope = function(localName, isMarker) { + for (var i = this.elements.length - 1; i >= 0; i--) { + var node = this.elements[i]; + if (node.localName === localName) + return true; + if (isMarker(node)) + return false; + } +}; + +/** + * Pushes the item on the stack top + * @param {StackItem} item + */ +ElementStack.prototype.push = function(item) { + this.elements.push(item); +}; + +/** + * Pushes the item on the stack top + * @param {StackItem} item HTML element stack item + */ +ElementStack.prototype.pushHtmlElement = function(item) { + this.rootNode = item.node; + this.push(item); +}; + +/** + * Pushes the item on the stack top + * @param {StackItem} item HEAD element stack item + */ +ElementStack.prototype.pushHeadElement = function(item) { + this.headElement = item.node; + this.push(item); +}; + +/** + * Pushes the item on the stack top + * @param {StackItem} item BODY element stack item + */ +ElementStack.prototype.pushBodyElement = function(item) { + this.bodyElement = item.node; + this.push(item); +}; + +/** + * Pops the topmost item + * @return {StackItem} + */ +ElementStack.prototype.pop = function() { + return this.elements.pop(); +}; + +/** + * Removes the item from the element stack + * @param {StackItem} item The item to remove + */ +ElementStack.prototype.remove = function(item) { + this.elements.splice(this.elements.indexOf(item), 1); +}; + +/** + * Pops until an element with a given localName is popped + * @param {String} localName + */ +ElementStack.prototype.popUntilPopped = function(localName) { + var element; + do { + element = this.pop(); + } while (element.localName != localName); +}; + +ElementStack.prototype.popUntilTableScopeMarker = function() { + while (!isTableScopeMarker(this.top)) + this.pop(); +}; + +ElementStack.prototype.popUntilTableBodyScopeMarker = function() { + while (!isTableBodyScopeMarker(this.top)) + this.pop(); +}; + +ElementStack.prototype.popUntilTableRowScopeMarker = function() { + while (!isTableRowScopeMarker(this.top)) + this.pop(); +}; + +/** + * + * @param {Number} index + * @return {StackItem} + */ +ElementStack.prototype.item = function(index) { + return this.elements[index]; +}; + +/** + * + * @param {StackItem} element + * @return {Boolean} + */ +ElementStack.prototype.contains = function(element) { + return this.elements.indexOf(element) !== -1; +}; + +/** + * + * @param {String} localName + * @return {Boolean} + */ +ElementStack.prototype.inScope = function(localName) { + return this._inScope(localName, isScopeMarker); +}; + +/** + * + * @param {String} localName + * @return {Boolean} + */ +ElementStack.prototype.inListItemScope = function(localName) { + return this._inScope(localName, isListItemScopeMarker); +}; + +/** + * + * @param {String} localName + * @return {Boolean} + */ +ElementStack.prototype.inTableScope = function(localName) { + return this._inScope(localName, isTableScopeMarker); +}; + +/** + * + * @param {String} localName + * @return {Boolean} + */ +ElementStack.prototype.inButtonScope = function(localName) { + return this._inScope(localName, isButtonScopeMarker); +}; + +/** + * + * @param {String} localName + * @return {Boolean} + */ +ElementStack.prototype.inSelectScope = function(localName) { + return this._inScope(localName, isSelectScopeMarker); +}; + +/** + * + * @return {Boolean} + */ +ElementStack.prototype.hasNumberedHeaderElementInScope = function() { + for (var i = this.elements.length - 1; i >= 0; i--) { + var node = this.elements[i]; + if (node.isNumberedHeader()) + return true; + if (isScopeMarker(node)) + return false; + } +}; + +/** + * + * @param {Object} element + * @return {StackItem} + */ +ElementStack.prototype.furthestBlockForFormattingElement = function(element) { + var furthestBlock = null; + for (var i = this.elements.length - 1; i >= 0; i--) { + var node = this.elements[i]; + if (node.node === element) + break; + if (node.isSpecial()) + furthestBlock = node; + } + return furthestBlock; +}; + +/** + * + * @param {String} localName + * @return {Number} + */ +ElementStack.prototype.findIndex = function(localName) { + for (var i = this.elements.length - 1; i >= 0; i--) { + if (this.elements[i].localName == localName) + return i; + } + return -1; +}; + +ElementStack.prototype.remove_openElements_until = function(callback) { + var finished = false; + var element; + while (!finished) { + element = this.elements.pop(); + finished = callback(element); + } + return element; +}; + +Object.defineProperty(ElementStack.prototype, 'top', { + get: function() { + return this.elements[this.elements.length - 1]; + } +}); + +Object.defineProperty(ElementStack.prototype, 'length', { + get: function() { + return this.elements.length; + } +}); + +exports.ElementStack = ElementStack; + +}, +{}], +2:[function(_dereq_,module,exports){ +var entities = _dereq_('html5-entities'); +var InputStream = _dereq_('./InputStream').InputStream; + +var namedEntityPrefixes = {}; +Object.keys(entities).forEach(function (entityKey) { + for (var i = 0; i < entityKey.length; i++) { + namedEntityPrefixes[entityKey.substring(0, i + 1)] = true; + } +}); + +function isAlphaNumeric(c) { + return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); +} + +function isHexDigit(c) { + return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); +} + +function isDecimalDigit(c) { + return (c >= '0' && c <= '9'); +} + +var EntityParser = {}; + +EntityParser.consumeEntity = function(buffer, tokenizer, additionalAllowedCharacter) { + var decodedCharacter = ''; + var consumedCharacters = ''; + var ch = buffer.char(); + if (ch === InputStream.EOF) + return false; + consumedCharacters += ch; + if (ch == '\t' || ch == '\n' || ch == '\v' || ch == ' ' || ch == '<' || ch == '&') { + buffer.unget(consumedCharacters); + return false; + } + if (additionalAllowedCharacter === ch) { + buffer.unget(consumedCharacters); + return false; + } + if (ch == '#') { + ch = buffer.shift(1); + if (ch === InputStream.EOF) { + tokenizer._parseError("expected-numeric-entity-but-got-eof"); + buffer.unget(consumedCharacters); + return false; + } + consumedCharacters += ch; + var radix = 10; + var isDigit = isDecimalDigit; + if (ch == 'x' || ch == 'X') { + radix = 16; + isDigit = isHexDigit; + ch = buffer.shift(1); + if (ch === InputStream.EOF) { + tokenizer._parseError("expected-numeric-entity-but-got-eof"); + buffer.unget(consumedCharacters); + return false; + } + consumedCharacters += ch; + } + if (isDigit(ch)) { + var code = ''; + while (ch !== InputStream.EOF && isDigit(ch)) { + code += ch; + ch = buffer.char(); + } + code = parseInt(code, radix); + var replacement = this.replaceEntityNumbers(code); + if (replacement) { + tokenizer._parseError("invalid-numeric-entity-replaced"); + code = replacement; + } + if (code > 0xFFFF && code <= 0x10FFFF) { + // we substract 0x10000 from cp to get a 20-bits number + // in the range 0..0xFFFF + code -= 0x10000; + // we add 0xD800 to the number formed by the first 10 bits + // to give the first byte + var first = ((0xffc00 & code) >> 10) + 0xD800; + // we add 0xDC00 to the number formed by the low 10 bits + // to give the second byte + var second = (0x3ff & code) + 0xDC00; + decodedCharacter = String.fromCharCode(first, second); + } else + decodedCharacter = String.fromCharCode(code); + if (ch !== ';') { + tokenizer._parseError("numeric-entity-without-semicolon"); + buffer.unget(ch); + } + return decodedCharacter; + } + buffer.unget(consumedCharacters); + tokenizer._parseError("expected-numeric-entity"); + return false; + } + if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { + var mostRecentMatch = ''; + while (namedEntityPrefixes[consumedCharacters]) { + if (entities[consumedCharacters]) { + mostRecentMatch = consumedCharacters; + } + if (ch == ';') + break; + ch = buffer.char(); + if (ch === InputStream.EOF) + break; + consumedCharacters += ch; + } + if (!mostRecentMatch) { + tokenizer._parseError("expected-named-entity"); + buffer.unget(consumedCharacters); + return false; + } + decodedCharacter = entities[mostRecentMatch]; + if (ch === ';' || !additionalAllowedCharacter || !(isAlphaNumeric(ch) || ch === '=')) { + if (consumedCharacters.length > mostRecentMatch.length) { + buffer.unget(consumedCharacters.substring(mostRecentMatch.length)); + } + if (ch !== ';') { + tokenizer._parseError("named-entity-without-semicolon"); + } + return decodedCharacter; + } + buffer.unget(consumedCharacters); + return false; + } +}; + +EntityParser.replaceEntityNumbers = function(c) { + switch(c) { + case 0x00: return 0xFFFD; // REPLACEMENT CHARACTER + case 0x13: return 0x0010; // Carriage return + case 0x80: return 0x20AC; // EURO SIGN + case 0x81: return 0x0081; // <control> + case 0x82: return 0x201A; // SINGLE LOW-9 QUOTATION MARK + case 0x83: return 0x0192; // LATIN SMALL LETTER F WITH HOOK + case 0x84: return 0x201E; // DOUBLE LOW-9 QUOTATION MARK + case 0x85: return 0x2026; // HORIZONTAL ELLIPSIS + case 0x86: return 0x2020; // DAGGER + case 0x87: return 0x2021; // DOUBLE DAGGER + case 0x88: return 0x02C6; // MODIFIER LETTER CIRCUMFLEX ACCENT + case 0x89: return 0x2030; // PER MILLE SIGN + case 0x8A: return 0x0160; // LATIN CAPITAL LETTER S WITH CARON + case 0x8B: return 0x2039; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK + case 0x8C: return 0x0152; // LATIN CAPITAL LIGATURE OE + case 0x8D: return 0x008D; // <control> + case 0x8E: return 0x017D; // LATIN CAPITAL LETTER Z WITH CARON + case 0x8F: return 0x008F; // <control> + case 0x90: return 0x0090; // <control> + case 0x91: return 0x2018; // LEFT SINGLE QUOTATION MARK + case 0x92: return 0x2019; // RIGHT SINGLE QUOTATION MARK + case 0x93: return 0x201C; // LEFT DOUBLE QUOTATION MARK + case 0x94: return 0x201D; // RIGHT DOUBLE QUOTATION MARK + case 0x95: return 0x2022; // BULLET + case 0x96: return 0x2013; // EN DASH + case 0x97: return 0x2014; // EM DASH + case 0x98: return 0x02DC; // SMALL TILDE + case 0x99: return 0x2122; // TRADE MARK SIGN + case 0x9A: return 0x0161; // LATIN SMALL LETTER S WITH CARON + case 0x9B: return 0x203A; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + case 0x9C: return 0x0153; // LATIN SMALL LIGATURE OE + case 0x9D: return 0x009D; // <control> + case 0x9E: return 0x017E; // LATIN SMALL LETTER Z WITH CARON + case 0x9F: return 0x0178; // LATIN CAPITAL LETTER Y WITH DIAERESIS + default: + if ((c >= 0xD800 && c <= 0xDFFF) || c > 0x10FFFF) { + return 0xFFFD; + } else if ((c >= 0x0001 && c <= 0x0008) || (c >= 0x000E && c <= 0x001F) || + (c >= 0x007F && c <= 0x009F) || (c >= 0xFDD0 && c <= 0xFDEF) || + c == 0x000B || c == 0xFFFE || c == 0x1FFFE || c == 0x2FFFFE || + c == 0x2FFFF || c == 0x3FFFE || c == 0x3FFFF || c == 0x4FFFE || + c == 0x4FFFF || c == 0x5FFFE || c == 0x5FFFF || c == 0x6FFFE || + c == 0x6FFFF || c == 0x7FFFE || c == 0x7FFFF || c == 0x8FFFE || + c == 0x8FFFF || c == 0x9FFFE || c == 0x9FFFF || c == 0xAFFFE || + c == 0xAFFFF || c == 0xBFFFE || c == 0xBFFFF || c == 0xCFFFE || + c == 0xCFFFF || c == 0xDFFFE || c == 0xDFFFF || c == 0xEFFFE || + c == 0xEFFFF || c == 0xFFFFE || c == 0xFFFFF || c == 0x10FFFE || + c == 0x10FFFF) { + return c; + } + } +}; + +exports.EntityParser = EntityParser; + +}, +{"./InputStream":3,"html5-entities":12}], +3:[function(_dereq_,module,exports){ +// FIXME convert CR to LF http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#input-stream +function InputStream() { + this.data = ''; + this.start = 0; + this.committed = 0; + this.eof = false; + this.lastLocation = {line: 0, column: 0}; +} + +InputStream.EOF = -1; + +InputStream.DRAIN = -2; + +InputStream.prototype = { + slice: function() { + if(this.start >= this.data.length) { + if(!this.eof) throw InputStream.DRAIN; + return InputStream.EOF; + } + return this.data.slice(this.start, this.data.length); + }, + char: function() { + if(!this.eof && this.start >= this.data.length - 1) throw InputStream.DRAIN; + if(this.start >= this.data.length) { + return InputStream.EOF; + } + var ch = this.data[this.start++]; + if (ch === '\r') + ch = '\n'; + return ch; + }, + advance: function(amount) { + this.start += amount; + if(this.start >= this.data.length) { + if(!this.eof) throw InputStream.DRAIN; + return InputStream.EOF; + } else { + if(this.committed > this.data.length / 2) { + // Sliiiide + this.lastLocation = this.location(); + this.data = this.data.slice(this.committed); + this.start = this.start - this.committed; + this.committed = 0; + } + } + }, + matchWhile: function(re) { + if(this.eof && this.start >= this.data.length ) return ''; + var r = new RegExp("^"+re+"+"); + var m = r.exec(this.slice()); + if(m) { + if(!this.eof && m[0].length == this.data.length - this.start) throw InputStream.DRAIN; + this.advance(m[0].length); + return m[0]; + } else { + return ''; + } + }, + matchUntil: function(re) { + var m, s; + s = this.slice(); + if(s === InputStream.EOF) { + return ''; + } else if(m = new RegExp(re + (this.eof ? "|$" : "")).exec(s)) { + var t = this.data.slice(this.start, this.start + m.index); + this.advance(m.index); + return t.replace(/\r/g, '\n').replace(/\n{2,}/g, '\n'); + } else { + throw InputStream.DRAIN; + } + }, + append: function(data) { + this.data += data; + }, + shift: function(n) { + if(!this.eof && this.start + n >= this.data.length) throw InputStream.DRAIN; + if(this.eof && this.start >= this.data.length) return InputStream.EOF; + var d = this.data.slice(this.start, this.start + n).toString(); + this.advance(Math.min(n, this.data.length - this.start)); + return d; + }, + peek: function(n) { + if(!this.eof && this.start + n >= this.data.length) throw InputStream.DRAIN; + if(this.eof && this.start >= this.data.length) return InputStream.EOF; + return this.data.slice(this.start, Math.min(this.start + n, this.data.length)).toString(); + }, + length: function() { + return this.data.length - this.start - 1; + }, + unget: function(d) { + if(d === InputStream.EOF) return; + this.start -= (d.length); + }, + undo: function() { + this.start = this.committed; + }, + commit: function() { + this.committed = this.start; + }, + location: function() { + var lastLine = this.lastLocation.line; + var lastColumn = this.lastLocation.column; + var read = this.data.slice(0, this.committed); + var newlines = read.match(/\n/g); + var line = newlines ? lastLine + newlines.length : lastLine; + var column = newlines ? read.length - read.lastIndexOf('\n') - 1 : lastColumn + read.length; + return {line: line, column: column}; + } +}; + +exports.InputStream = InputStream; + +}, +{}], +4:[function(_dereq_,module,exports){ +var SpecialElements = { + "http://www.w3.org/1999/xhtml": [ + 'address', + 'applet', + 'area', + 'article', + 'aside', + 'base', + 'basefont', + 'bgsound', + 'blockquote', + 'body', + 'br', + 'button', + 'caption', + 'center', + 'col', + 'colgroup', + 'dd', + 'details', + 'dir', + 'div', + 'dl', + 'dt', + 'embed', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'frame', + 'frameset', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hgroup', + 'hr', + 'html', + 'iframe', + 'img', + 'input', + 'isindex', + 'li', + 'link', + 'listing', + 'main', + 'marquee', + 'menu', + 'menuitem', + 'meta', + 'nav', + 'noembed', + 'noframes', + 'noscript', + 'object', + 'ol', + 'p', + 'param', + 'plaintext', + 'pre', + 'script', + 'section', + 'select', + 'source', + 'style', + 'summary', + 'table', + 'tbody', + 'td', + 'textarea', + 'tfoot', + 'th', + 'thead', + 'title', + 'tr', + 'track', + 'ul', + 'wbr', + 'xmp' + ], + "http://www.w3.org/1998/Math/MathML": [ + 'mi', + 'mo', + 'mn', + 'ms', + 'mtext', + 'annotation-xml' + ], + "http://www.w3.org/2000/svg": [ + 'foreignObject', + 'desc', + 'title' + ] +}; + + +function StackItem(namespaceURI, localName, attributes, node) { + this.localName = localName; + this.namespaceURI = namespaceURI; + this.attributes = attributes; + this.node = node; +} + +// http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#special +StackItem.prototype.isSpecial = function() { + return this.namespaceURI in SpecialElements && + SpecialElements[this.namespaceURI].indexOf(this.localName) > -1; +}; + +StackItem.prototype.isFosterParenting = function() { + if (this.namespaceURI === "http://www.w3.org/1999/xhtml") { + return this.localName === 'table' || + this.localName === 'tbody' || + this.localName === 'tfoot' || + this.localName === 'thead' || + this.localName === 'tr'; + } + return false; +}; + +StackItem.prototype.isNumberedHeader = function() { + if (this.namespaceURI === "http://www.w3.org/1999/xhtml") { + return this.localName === 'h1' || + this.localName === 'h2' || + this.localName === 'h3' || + this.localName === 'h4' || + this.localName === 'h5' || + this.localName === 'h6'; + } + return false; +}; + +StackItem.prototype.isForeign = function() { + return this.namespaceURI != "http://www.w3.org/1999/xhtml"; +}; + +function getAttribute(item, name) { + for (var i = 0; i < item.attributes.length; i++) { + if (item.attributes[i].nodeName == name) + return item.attributes[i].nodeValue; + } + return null; +} + +StackItem.prototype.isHtmlIntegrationPoint = function() { + if (this.namespaceURI === "http://www.w3.org/1998/Math/MathML") { + if (this.localName !== "annotation-xml") + return false; + var encoding = getAttribute(this, 'encoding'); + if (!encoding) + return false; + encoding = encoding.toLowerCase(); + return encoding === "text/html" || encoding === "application/xhtml+xml"; + } + if (this.namespaceURI === "http://www.w3.org/2000/svg") { + return this.localName === "foreignObject" + || this.localName === "desc" + || this.localName === "title"; + } + return false; +}; + +StackItem.prototype.isMathMLTextIntegrationPoint = function() { + if (this.namespaceURI === "http://www.w3.org/1998/Math/MathML") { + return this.localName === "mi" + || this.localName === "mo" + || this.localName === "mn" + || this.localName === "ms" + || this.localName === "mtext"; + } + return false; +}; + +exports.StackItem = StackItem; + +}, +{}], +5:[function(_dereq_,module,exports){ +var InputStream = _dereq_('./InputStream').InputStream; +var EntityParser = _dereq_('./EntityParser').EntityParser; + +function isWhitespace(c){ + return c === " " || c === "\n" || c === "\t" || c === "\r" || c === "\f"; +} + +function isAlpha(c) { + return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'); +} + +/** + * + * @param {Object} tokenHandler + * @constructor + */ +function Tokenizer(tokenHandler) { + this._tokenHandler = tokenHandler; + this._state = Tokenizer.DATA; + this._inputStream = new InputStream(); + this._currentToken = null; + this._temporaryBuffer = ''; + this._additionalAllowedCharacter = ''; +} + +Tokenizer.prototype._parseError = function(code, args) { + this._tokenHandler.parseError(code, args); +}; + +Tokenizer.prototype._emitToken = function(token) { + if (token.type === 'StartTag') { + for (var i = 1; i < token.data.length; i++) { + if (!token.data[i].nodeName) + token.data.splice(i--, 1); + } + } else if (token.type === 'EndTag') { + if (token.selfClosing) { + this._parseError('self-closing-flag-on-end-tag'); + } + if (token.data.length !== 0) { + this._parseError('attributes-in-end-tag'); + } + } + this._tokenHandler.processToken(token); + if (token.type === 'StartTag' && token.selfClosing && !this._tokenHandler.isSelfClosingFlagAcknowledged()) { + this._parseError('non-void-element-with-trailing-solidus', {name: token.name}); + } +}; + +Tokenizer.prototype._emitCurrentToken = function() { + this._state = Tokenizer.DATA; + this._emitToken(this._currentToken); +}; + +Tokenizer.prototype._currentAttribute = function() { + return this._currentToken.data[this._currentToken.data.length - 1]; +}; + +Tokenizer.prototype.setState = function(state) { + this._state = state; +}; + +Tokenizer.prototype.tokenize = function(source) { + // FIXME proper tokenizer states + Tokenizer.DATA = data_state; + Tokenizer.RCDATA = rcdata_state; + Tokenizer.RAWTEXT = rawtext_state; + Tokenizer.SCRIPT_DATA = script_data_state; + Tokenizer.PLAINTEXT = plaintext_state; + + + this._state = Tokenizer.DATA; + + this._inputStream.append(source); + + this._tokenHandler.startTokenization(this); + + this._inputStream.eof = true; + + var tokenizer = this; + + while (this._state.call(this, this._inputStream)); + + + function data_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._emitToken({type: 'EOF', data: null}); + return false; + } else if (data === '&') { + tokenizer.setState(character_reference_in_data_state); + } else if (data === '<') { + tokenizer.setState(tag_open_state); + } else if (data === '\u0000') { + tokenizer._emitToken({type: 'Characters', data: data}); + buffer.commit(); + } else { + var chars = buffer.matchUntil("&|<|\u0000"); + tokenizer._emitToken({type: 'Characters', data: data + chars}); + buffer.commit(); + } + return true; + } + + function character_reference_in_data_state(buffer) { + var character = EntityParser.consumeEntity(buffer, tokenizer); + tokenizer.setState(data_state); + tokenizer._emitToken({type: 'Characters', data: character || '&'}); + return true; + } + + function rcdata_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._emitToken({type: 'EOF', data: null}); + return false; + } else if (data === '&') { + tokenizer.setState(character_reference_in_rcdata_state); + } else if (data === '<') { + tokenizer.setState(rcdata_less_than_sign_state); + } else if (data === "\u0000") { + tokenizer._parseError("invalid-codepoint"); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + buffer.commit(); + } else { + var chars = buffer.matchUntil("&|<|\u0000"); + tokenizer._emitToken({type: 'Characters', data: data + chars}); + buffer.commit(); + } + return true; + } + + function character_reference_in_rcdata_state(buffer) { + var character = EntityParser.consumeEntity(buffer, tokenizer); + tokenizer.setState(rcdata_state); + tokenizer._emitToken({type: 'Characters', data: character || '&'}); + return true; + } + + function rawtext_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._emitToken({type: 'EOF', data: null}); + return false; + } else if (data === '<') { + tokenizer.setState(rawtext_less_than_sign_state); + } else if (data === "\u0000") { + tokenizer._parseError("invalid-codepoint"); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + buffer.commit(); + } else { + var chars = buffer.matchUntil("<|\u0000"); + tokenizer._emitToken({type: 'Characters', data: data + chars}); + } + return true; + } + + function plaintext_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._emitToken({type: 'EOF', data: null}); + return false; + } else if (data === "\u0000") { + tokenizer._parseError("invalid-codepoint"); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + buffer.commit(); + } else { + var chars = buffer.matchUntil("\u0000"); + tokenizer._emitToken({type: 'Characters', data: data + chars}); + } + return true; + } + + + function script_data_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._emitToken({type: 'EOF', data: null}); + return false; + } else if (data === '<') { + tokenizer.setState(script_data_less_than_sign_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + buffer.commit(); + } else { + var chars = buffer.matchUntil("<|\u0000"); + tokenizer._emitToken({type: 'Characters', data: data + chars}); + } + return true; + } + + function rcdata_less_than_sign_state(buffer) { + var data = buffer.char(); + if (data === "/") { + this._temporaryBuffer = ''; + tokenizer.setState(rcdata_end_tag_open_state); + } else { + tokenizer._emitToken({type: 'Characters', data: '<'}); + buffer.unget(data); + tokenizer.setState(rcdata_state); + } + return true; + } + + function rcdata_end_tag_open_state(buffer) { + var data = buffer.char(); + if (isAlpha(data)) { + this._temporaryBuffer += data; + tokenizer.setState(rcdata_end_tag_name_state); + } else { + tokenizer._emitToken({type: 'Characters', data: '</'}); + buffer.unget(data); + tokenizer.setState(rcdata_state); + } + return true; + } + + function rcdata_end_tag_name_state(buffer) { + var appropriate = tokenizer._currentToken && (tokenizer._currentToken.name === this._temporaryBuffer.toLowerCase()); + var data = buffer.char(); + if (isWhitespace(data) && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: this._temporaryBuffer, data: [], selfClosing: false}; + tokenizer.setState(before_attribute_name_state); + } else if (data === '/' && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: this._temporaryBuffer, data: [], selfClosing: false}; + tokenizer.setState(self_closing_tag_state); + } else if (data === '>' && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: this._temporaryBuffer, data: [], selfClosing: false}; + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } else if (isAlpha(data)) { + this._temporaryBuffer += data; + buffer.commit(); + } else { + tokenizer._emitToken({type: 'Characters', data: '</' + this._temporaryBuffer}); + buffer.unget(data); + tokenizer.setState(rcdata_state); + } + return true; + } + + function rawtext_less_than_sign_state(buffer) { + var data = buffer.char(); + if (data === "/") { + this._temporaryBuffer = ''; + tokenizer.setState(rawtext_end_tag_open_state); + } else { + tokenizer._emitToken({type: 'Characters', data: '<'}); + buffer.unget(data); + tokenizer.setState(rawtext_state); + } + return true; + } + + function rawtext_end_tag_open_state(buffer) { + var data = buffer.char(); + if (isAlpha(data)) { + this._temporaryBuffer += data; + tokenizer.setState(rawtext_end_tag_name_state); + } else { + tokenizer._emitToken({type: 'Characters', data: '</'}); + buffer.unget(data); + tokenizer.setState(rawtext_state); + } + return true; + } + + function rawtext_end_tag_name_state(buffer) { + var appropriate = tokenizer._currentToken && (tokenizer._currentToken.name === this._temporaryBuffer.toLowerCase()); + var data = buffer.char(); + if (isWhitespace(data) && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: this._temporaryBuffer, data: [], selfClosing: false}; + tokenizer.setState(before_attribute_name_state); + } else if (data === '/' && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: this._temporaryBuffer, data: [], selfClosing: false}; + tokenizer.setState(self_closing_tag_state); + } else if (data === '>' && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: this._temporaryBuffer, data: [], selfClosing: false}; + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } else if (isAlpha(data)) { + this._temporaryBuffer += data; + buffer.commit(); + } else { + tokenizer._emitToken({type: 'Characters', data: '</' + this._temporaryBuffer}); + buffer.unget(data); + tokenizer.setState(rawtext_state); + } + return true; + } + + function script_data_less_than_sign_state(buffer) { + var data = buffer.char(); + if (data === "/") { + this._temporaryBuffer = ''; + tokenizer.setState(script_data_end_tag_open_state); + } else if (data === '!') { + tokenizer._emitToken({type: 'Characters', data: '<!'}); + tokenizer.setState(script_data_escape_start_state); + } else { + tokenizer._emitToken({type: 'Characters', data: '<'}); + buffer.unget(data); + tokenizer.setState(script_data_state); + } + return true; + } + + function script_data_end_tag_open_state(buffer) { + var data = buffer.char(); + if (isAlpha(data)) { + this._temporaryBuffer += data; + tokenizer.setState(script_data_end_tag_name_state); + } else { + tokenizer._emitToken({type: 'Characters', data: '</'}); + buffer.unget(data); + tokenizer.setState(script_data_state); + } + return true; + } + + function script_data_end_tag_name_state(buffer) { + var appropriate = tokenizer._currentToken && (tokenizer._currentToken.name === this._temporaryBuffer.toLowerCase()); + var data = buffer.char(); + if (isWhitespace(data) && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: 'script', data: [], selfClosing: false}; + tokenizer.setState(before_attribute_name_state); + } else if (data === '/' && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: 'script', data: [], selfClosing: false}; + tokenizer.setState(self_closing_tag_state); + } else if (data === '>' && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: 'script', data: [], selfClosing: false}; + tokenizer._emitCurrentToken(); + } else if (isAlpha(data)) { + this._temporaryBuffer += data; + buffer.commit(); + } else { + tokenizer._emitToken({type: 'Characters', data: '</' + this._temporaryBuffer}); + buffer.unget(data); + tokenizer.setState(script_data_state); + } + return true; + } + + function script_data_escape_start_state(buffer) { + var data = buffer.char(); + if (data === '-') { + tokenizer._emitToken({type: 'Characters', data: '-'}); + tokenizer.setState(script_data_escape_start_dash_state); + } else { + buffer.unget(data); + tokenizer.setState(script_data_state); + } + return true; + } + + function script_data_escape_start_dash_state(buffer) { + var data = buffer.char(); + if (data === '-') { + tokenizer._emitToken({type: 'Characters', data: '-'}); + tokenizer.setState(script_data_escaped_dash_dash_state); + } else { + buffer.unget(data); + tokenizer.setState(script_data_state); + } + return true; + } + + function script_data_escaped_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer._emitToken({type: 'Characters', data: '-'}); + tokenizer.setState(script_data_escaped_dash_state); + } else if (data === '<') { + tokenizer.setState(script_data_escaped_less_then_sign_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + buffer.commit(); + } else { + var chars = buffer.matchUntil('<|-|\u0000'); + tokenizer._emitToken({type: 'Characters', data: data + chars}); + } + return true; + } + + function script_data_escaped_dash_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer._emitToken({type: 'Characters', data: '-'}); + tokenizer.setState(script_data_escaped_dash_dash_state); + } else if (data === '<') { + tokenizer.setState(script_data_escaped_less_then_sign_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + tokenizer.setState(script_data_escaped_state); + } else { + tokenizer._emitToken({type: 'Characters', data: data}); + tokenizer.setState(script_data_escaped_state); + } + return true; + } + + function script_data_escaped_dash_dash_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError('eof-in-script'); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '<') { + tokenizer.setState(script_data_escaped_less_then_sign_state); + } else if (data === '>') { + tokenizer._emitToken({type: 'Characters', data: '>'}); + tokenizer.setState(script_data_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + tokenizer.setState(script_data_escaped_state); + } else { + tokenizer._emitToken({type: 'Characters', data: data}); + tokenizer.setState(script_data_escaped_state); + } + return true; + } + + function script_data_escaped_less_then_sign_state(buffer) { + var data = buffer.char(); + if (data === '/') { + this._temporaryBuffer = ''; + tokenizer.setState(script_data_escaped_end_tag_open_state); + } else if (isAlpha(data)) { + tokenizer._emitToken({type: 'Characters', data: '<' + data}); + this._temporaryBuffer = data; + tokenizer.setState(script_data_double_escape_start_state); + } else { + tokenizer._emitToken({type: 'Characters', data: '<'}); + buffer.unget(data); + tokenizer.setState(script_data_escaped_state); + } + return true; + } + + function script_data_escaped_end_tag_open_state(buffer) { + var data = buffer.char(); + if (isAlpha(data)) { + this._temporaryBuffer = data; + tokenizer.setState(script_data_escaped_end_tag_name_state); + } else { + tokenizer._emitToken({type: 'Characters', data: '</'}); + buffer.unget(data); + tokenizer.setState(script_data_escaped_state); + } + return true; + } + + function script_data_escaped_end_tag_name_state(buffer) { + var appropriate = tokenizer._currentToken && (tokenizer._currentToken.name === this._temporaryBuffer.toLowerCase()); + var data = buffer.char(); + if (isWhitespace(data) && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: 'script', data: [], selfClosing: false}; + tokenizer.setState(before_attribute_name_state); + } else if (data === '/' && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: 'script', data: [], selfClosing: false}; + tokenizer.setState(self_closing_tag_state); + } else if (data === '>' && appropriate) { + tokenizer._currentToken = {type: 'EndTag', name: 'script', data: [], selfClosing: false}; + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (isAlpha(data)) { + this._temporaryBuffer += data; + buffer.commit(); + } else { + tokenizer._emitToken({type: 'Characters', data: '</' + this._temporaryBuffer}); + buffer.unget(data); + tokenizer.setState(script_data_escaped_state); + } + return true; + } + + function script_data_double_escape_start_state(buffer) { + var data = buffer.char(); + if (isWhitespace(data) || data === '/' || data === '>') { + tokenizer._emitToken({type: 'Characters', data: data}); + if (this._temporaryBuffer.toLowerCase() === 'script') + tokenizer.setState(script_data_double_escaped_state); + else + tokenizer.setState(script_data_escaped_state); + } else if (isAlpha(data)) { + tokenizer._emitToken({type: 'Characters', data: data}); + this._temporaryBuffer += data; + buffer.commit(); + } else { + buffer.unget(data); + tokenizer.setState(script_data_escaped_state); + } + return true; + } + + function script_data_double_escaped_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError('eof-in-script'); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer._emitToken({type: 'Characters', data: '-'}); + tokenizer.setState(script_data_double_escaped_dash_state); + } else if (data === '<') { + tokenizer._emitToken({type: 'Characters', data: '<'}); + tokenizer.setState(script_data_double_escaped_less_than_sign_state); + } else if (data === '\u0000') { + tokenizer._parseError('invalid-codepoint'); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + buffer.commit(); + } else { + tokenizer._emitToken({type: 'Characters', data: data}); + buffer.commit(); + } + return true; + } + + function script_data_double_escaped_dash_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError('eof-in-script'); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer._emitToken({type: 'Characters', data: '-'}); + tokenizer.setState(script_data_double_escaped_dash_dash_state); + } else if (data === '<') { + tokenizer._emitToken({type: 'Characters', data: '<'}); + tokenizer.setState(script_data_double_escaped_less_than_sign_state); + } else if (data === '\u0000') { + tokenizer._parseError('invalid-codepoint'); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + tokenizer.setState(script_data_double_escaped_state); + } else { + tokenizer._emitToken({type: 'Characters', data: data}); + tokenizer.setState(script_data_double_escaped_state); + } + return true; + } + + function script_data_double_escaped_dash_dash_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError('eof-in-script'); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer._emitToken({type: 'Characters', data: '-'}); + buffer.commit(); + } else if (data === '<') { + tokenizer._emitToken({type: 'Characters', data: '<'}); + tokenizer.setState(script_data_double_escaped_less_than_sign_state); + } else if (data === '>') { + tokenizer._emitToken({type: 'Characters', data: '>'}); + tokenizer.setState(script_data_state); + } else if (data === '\u0000') { + tokenizer._parseError('invalid-codepoint'); + tokenizer._emitToken({type: 'Characters', data: '\uFFFD'}); + tokenizer.setState(script_data_double_escaped_state); + } else { + tokenizer._emitToken({type: 'Characters', data: data}); + tokenizer.setState(script_data_double_escaped_state); + } + return true; + } + + function script_data_double_escaped_less_than_sign_state(buffer) { + var data = buffer.char(); + if (data === '/') { + tokenizer._emitToken({type: 'Characters', data: '/'}); + this._temporaryBuffer = ''; + tokenizer.setState(script_data_double_escape_end_state); + } else { + buffer.unget(data); + tokenizer.setState(script_data_double_escaped_state); + } + return true; + } + + function script_data_double_escape_end_state(buffer) { + var data = buffer.char(); + if (isWhitespace(data) || data === '/' || data === '>') { + tokenizer._emitToken({type: 'Characters', data: data}); + if (this._temporaryBuffer.toLowerCase() === 'script') + tokenizer.setState(script_data_escaped_state); + else + tokenizer.setState(script_data_double_escaped_state); + } else if (isAlpha(data)) { + tokenizer._emitToken({type: 'Characters', data: data}); + this._temporaryBuffer += data; + buffer.commit(); + } else { + buffer.unget(data); + tokenizer.setState(script_data_double_escaped_state); + } + return true; + } + + function tag_open_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("bare-less-than-sign-at-eof"); + tokenizer._emitToken({type: 'Characters', data: '<'}); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isAlpha(data)) { + tokenizer._currentToken = {type: 'StartTag', name: data.toLowerCase(), data: []}; + tokenizer.setState(tag_name_state); + } else if (data === '!') { + tokenizer.setState(markup_declaration_open_state); + } else if (data === '/') { + tokenizer.setState(close_tag_open_state); + } else if (data === '>') { + // XXX In theory it could be something besides a tag name. But + // do we really care? + tokenizer._parseError("expected-tag-name-but-got-right-bracket"); + tokenizer._emitToken({type: 'Characters', data: "<>"}); + tokenizer.setState(data_state); + } else if (data === '?') { + // XXX In theory it could be something besides a tag name. But + // do we really care? + tokenizer._parseError("expected-tag-name-but-got-question-mark"); + buffer.unget(data); + tokenizer.setState(bogus_comment_state); + } else { + // XXX + tokenizer._parseError("expected-tag-name"); + tokenizer._emitToken({type: 'Characters', data: "<"}); + buffer.unget(data); + tokenizer.setState(data_state); + } + return true; + } + + function close_tag_open_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("expected-closing-tag-but-got-eof"); + tokenizer._emitToken({type: 'Characters', data: '</'}); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isAlpha(data)) { + tokenizer._currentToken = {type: 'EndTag', name: data.toLowerCase(), data: []}; + tokenizer.setState(tag_name_state); + } else if (data === '>') { + tokenizer._parseError("expected-closing-tag-but-got-right-bracket"); + tokenizer.setState(data_state); + } else { + tokenizer._parseError("expected-closing-tag-but-got-char", {data: data}); // param 1 is datavars: + buffer.unget(data); + tokenizer.setState(bogus_comment_state); + } + return true; + } + + function tag_name_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError('eof-in-tag-name'); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + tokenizer.setState(before_attribute_name_state); + } else if (isAlpha(data)) { + tokenizer._currentToken.name += data.toLowerCase(); + } else if (data === '>') { + tokenizer._emitCurrentToken(); + } else if (data === '/') { + tokenizer.setState(self_closing_tag_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentToken.name += "\uFFFD"; + } else { + tokenizer._currentToken.name += data; + } + buffer.commit(); + + return true; + } + + function before_attribute_name_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("expected-attribute-name-but-got-eof"); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + return true; + } else if (isAlpha(data)) { + tokenizer._currentToken.data.push({nodeName: data.toLowerCase(), nodeValue: ""}); + tokenizer.setState(attribute_name_state); + } else if (data === '>') { + tokenizer._emitCurrentToken(); + } else if (data === '/') { + tokenizer.setState(self_closing_tag_state); + } else if (data === "'" || data === '"' || data === '=' || data === '<') { + tokenizer._parseError("invalid-character-in-attribute-name"); + tokenizer._currentToken.data.push({nodeName: data, nodeValue: ""}); + tokenizer.setState(attribute_name_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentToken.data.push({nodeName: "\uFFFD", nodeValue: ""}); + } else { + tokenizer._currentToken.data.push({nodeName: data, nodeValue: ""}); + tokenizer.setState(attribute_name_state); + } + return true; + } + + function attribute_name_state(buffer) { + var data = buffer.char(); + var leavingThisState = true; + var shouldEmit = false; + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-attribute-name"); + buffer.unget(data); + tokenizer.setState(data_state); + shouldEmit = true; + } else if (data === '=') { + tokenizer.setState(before_attribute_value_state); + } else if (isAlpha(data)) { + tokenizer._currentAttribute().nodeName += data.toLowerCase(); + leavingThisState = false; + } else if (data === '>') { + // XXX If we emit here the attributes are converted to a dict + // without being checked and when the code below runs we error + // because data is a dict not a list + shouldEmit = true; + } else if (isWhitespace(data)) { + tokenizer.setState(after_attribute_name_state); + } else if (data === '/') { + tokenizer.setState(self_closing_tag_state); + } else if (data === "'" || data === '"') { + tokenizer._parseError("invalid-character-in-attribute-name"); + tokenizer._currentAttribute().nodeName += data; + leavingThisState = false; + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentAttribute().nodeName += "\uFFFD"; + } else { + tokenizer._currentAttribute().nodeName += data; + leavingThisState = false; + } + + if (leavingThisState) { + // Attributes are not dropped at this stage. That happens when the + // start tag token is emitted so values can still be safely appended + // to attributes, but we do want to report the parse error in time. + var attributes = tokenizer._currentToken.data; + var currentAttribute = attributes[attributes.length - 1]; + for (var i = attributes.length - 2; i >= 0; i--) { + if (currentAttribute.nodeName === attributes[i].nodeName) { + tokenizer._parseError("duplicate-attribute", {name: currentAttribute.nodeName}); + currentAttribute.nodeName = null; + break; + } + } + if (shouldEmit) + tokenizer._emitCurrentToken(); + } else { + buffer.commit(); + } + return true; + } + + function after_attribute_name_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("expected-end-of-tag-but-got-eof"); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + return true; + } else if (data === '=') { + tokenizer.setState(before_attribute_value_state); + } else if (data === '>') { + tokenizer._emitCurrentToken(); + } else if (isAlpha(data)) { + tokenizer._currentToken.data.push({nodeName: data, nodeValue: ""}); + tokenizer.setState(attribute_name_state); + } else if (data === '/') { + tokenizer.setState(self_closing_tag_state); + } else if (data === "'" || data === '"' || data === '<') { + tokenizer._parseError("invalid-character-after-attribute-name"); + tokenizer._currentToken.data.push({nodeName: data, nodeValue: ""}); + tokenizer.setState(attribute_name_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentToken.data.push({nodeName: "\uFFFD", nodeValue: ""}); + } else { + tokenizer._currentToken.data.push({nodeName: data, nodeValue: ""}); + tokenizer.setState(attribute_name_state); + } + return true; + } + + function before_attribute_value_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("expected-attribute-value-but-got-eof"); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + return true; + } else if (data === '"') { + tokenizer.setState(attribute_value_double_quoted_state); + } else if (data === '&') { + tokenizer.setState(attribute_value_unquoted_state); + buffer.unget(data); + } else if (data === "'") { + tokenizer.setState(attribute_value_single_quoted_state); + } else if (data === '>') { + tokenizer._parseError("expected-attribute-value-but-got-right-bracket"); + tokenizer._emitCurrentToken(); + } else if (data === '=' || data === '<' || data === '`') { + tokenizer._parseError("unexpected-character-in-unquoted-attribute-value"); + tokenizer._currentAttribute().nodeValue += data; + tokenizer.setState(attribute_value_unquoted_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentAttribute().nodeValue += "\uFFFD"; + } else { + tokenizer._currentAttribute().nodeValue += data; + tokenizer.setState(attribute_value_unquoted_state); + } + + return true; + } + + function attribute_value_double_quoted_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-attribute-value-double-quote"); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '"') { + tokenizer.setState(after_attribute_value_state); + } else if (data === '&') { + this._additionalAllowedCharacter = '"'; + tokenizer.setState(character_reference_in_attribute_value_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentAttribute().nodeValue += "\uFFFD"; + } else { + var s = buffer.matchUntil('[\0"&]'); + data = data + s; + tokenizer._currentAttribute().nodeValue += data; + } + return true; + } + + function attribute_value_single_quoted_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-attribute-value-single-quote"); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === "'") { + tokenizer.setState(after_attribute_value_state); + } else if (data === '&') { + this._additionalAllowedCharacter = "'"; + tokenizer.setState(character_reference_in_attribute_value_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentAttribute().nodeValue += "\uFFFD"; + } else { + tokenizer._currentAttribute().nodeValue += data + buffer.matchUntil("\u0000|['&]"); + } + return true; + } + + function attribute_value_unquoted_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-after-attribute-value"); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + tokenizer.setState(before_attribute_name_state); + } else if (data === '&') { + this._additionalAllowedCharacter = ">"; + tokenizer.setState(character_reference_in_attribute_value_state); + } else if (data === '>') { + tokenizer._emitCurrentToken(); + } else if (data === '"' || data === "'" || data === '=' || data === '`' || data === '<') { + tokenizer._parseError("unexpected-character-in-unquoted-attribute-value"); + tokenizer._currentAttribute().nodeValue += data; + buffer.commit(); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentAttribute().nodeValue += "\uFFFD"; + } else { + var o = buffer.matchUntil("\u0000|["+ "\t\n\v\f\x20\r" + "&<>\"'=`" +"]"); + if (o === InputStream.EOF) { + tokenizer._parseError("eof-in-attribute-value-no-quotes"); + tokenizer._emitCurrentToken(); + } + // Commit here since this state is re-enterable and its outcome won't change with more data. + buffer.commit(); + tokenizer._currentAttribute().nodeValue += data + o; + } + return true; + } + + function character_reference_in_attribute_value_state(buffer) { + var character = EntityParser.consumeEntity(buffer, tokenizer, this._additionalAllowedCharacter); + this._currentAttribute().nodeValue += character || '&'; + // We're supposed to switch back to the attribute value state that + // we were in when we were switched into this state. Rather than + // keeping track of this explictly, we observe that the previous + // state can be determined by additionalAllowedCharacter. + if (this._additionalAllowedCharacter === '"') + tokenizer.setState(attribute_value_double_quoted_state); + else if (this._additionalAllowedCharacter === '\'') + tokenizer.setState(attribute_value_single_quoted_state); + else if (this._additionalAllowedCharacter === '>') + tokenizer.setState(attribute_value_unquoted_state); + return true; + } + + function after_attribute_value_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-after-attribute-value"); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + tokenizer.setState(before_attribute_name_state); + } else if (data === '>') { + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (data === '/') { + tokenizer.setState(self_closing_tag_state); + } else { + tokenizer._parseError("unexpected-character-after-attribute-value"); + buffer.unget(data); + tokenizer.setState(before_attribute_name_state); + } + return true; + } + + function self_closing_tag_state(buffer) { + var c = buffer.char(); + if (c === InputStream.EOF) { + tokenizer._parseError("unexpected-eof-after-solidus-in-tag"); + buffer.unget(c); + tokenizer.setState(data_state); + } else if (c === '>') { + tokenizer._currentToken.selfClosing = true; + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else { + tokenizer._parseError("unexpected-character-after-solidus-in-tag"); + buffer.unget(c); + tokenizer.setState(before_attribute_name_state); + } + return true; + } + + function bogus_comment_state(buffer) { + var data = buffer.matchUntil('>'); + data = data.replace(/\u0000/g, "\uFFFD"); + buffer.char(); + tokenizer._emitToken({type: 'Comment', data: data}); + tokenizer.setState(data_state); + return true; + } + + function markup_declaration_open_state(buffer) { + var chars = buffer.shift(2); + if (chars === '--') { + tokenizer._currentToken = {type: 'Comment', data: ''}; + tokenizer.setState(comment_start_state); + } else { + var newchars = buffer.shift(5); + if (newchars === InputStream.EOF || chars === InputStream.EOF) { + tokenizer._parseError("expected-dashes-or-doctype"); + tokenizer.setState(bogus_comment_state); + buffer.unget(chars); + return true; + } + + chars += newchars; + if (chars.toUpperCase() === 'DOCTYPE') { + tokenizer._currentToken = {type: 'Doctype', name: '', publicId: null, systemId: null, forceQuirks: false}; + tokenizer.setState(doctype_state); + } else if (tokenizer._tokenHandler.isCdataSectionAllowed() && chars === '[CDATA[') { + tokenizer.setState(cdata_section_state); + } else { + tokenizer._parseError("expected-dashes-or-doctype"); + buffer.unget(chars); + tokenizer.setState(bogus_comment_state); + } + } + return true; + } + + function cdata_section_state(buffer) { + var data = buffer.matchUntil(']]>'); + // skip ]]> + buffer.shift(3); + if (data) { + tokenizer._emitToken({type: 'Characters', data: data}); + } + tokenizer.setState(data_state); + return true; + } + + function comment_start_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-comment"); + tokenizer._emitToken(tokenizer._currentToken); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer.setState(comment_start_dash_state); + } else if (data === '>') { + tokenizer._parseError("incorrect-comment"); + tokenizer._emitToken(tokenizer._currentToken); + tokenizer.setState(data_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentToken.data += "\uFFFD"; + } else { + tokenizer._currentToken.data += data; + tokenizer.setState(comment_state); + } + return true; + } + + function comment_start_dash_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-comment"); + tokenizer._emitToken(tokenizer._currentToken); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer.setState(comment_end_state); + } else if (data === '>') { + tokenizer._parseError("incorrect-comment"); + tokenizer._emitToken(tokenizer._currentToken); + tokenizer.setState(data_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentToken.data += "\uFFFD"; + } else { + tokenizer._currentToken.data += '-' + data; + tokenizer.setState(comment_state); + } + return true; + } + + function comment_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-comment"); + tokenizer._emitToken(tokenizer._currentToken); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer.setState(comment_end_dash_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentToken.data += "\uFFFD"; + } else { + tokenizer._currentToken.data += data; + buffer.commit(); + } + return true; + } + + function comment_end_dash_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-comment-end-dash"); + tokenizer._emitToken(tokenizer._currentToken); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer.setState(comment_end_state); + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentToken.data += "-\uFFFD"; + tokenizer.setState(comment_state); + } else { + tokenizer._currentToken.data += '-' + data + buffer.matchUntil('\u0000|-'); + // Consume the next character which is either a "-" or an :EOF as + // well so if there's a "-" directly after the "-" we go nicely to + // the "comment end state" without emitting a tokenizer._parseError there. + buffer.char(); + } + return true; + } + + function comment_end_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-comment-double-dash"); + tokenizer._emitToken(tokenizer._currentToken); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '>') { + tokenizer._emitToken(tokenizer._currentToken); + tokenizer.setState(data_state); + } else if (data === '!') { + tokenizer._parseError("unexpected-bang-after-double-dash-in-comment"); + tokenizer.setState(comment_end_bang_state); + } else if (data === '-') { + tokenizer._parseError("unexpected-dash-after-double-dash-in-comment"); + tokenizer._currentToken.data += data; + } else if (data === '\u0000') { + tokenizer._parseError("invalid-codepoint"); + tokenizer._currentToken.data += "--\uFFFD"; + tokenizer.setState(comment_state); + } else { + // XXX + tokenizer._parseError("unexpected-char-in-comment"); + tokenizer._currentToken.data += '--' + data; + tokenizer.setState(comment_state); + } + return true; + } + + function comment_end_bang_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-comment-end-bang-state"); + tokenizer._emitToken(tokenizer._currentToken); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '>') { + tokenizer._emitToken(tokenizer._currentToken); + tokenizer.setState(data_state); + } else if (data === '-') { + tokenizer._currentToken.data += '--!'; + tokenizer.setState(comment_end_dash_state); + } else { + tokenizer._currentToken.data += '--!' + data; + tokenizer.setState(comment_state); + } + return true; + } + + function doctype_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("expected-doctype-name-but-got-eof"); + tokenizer._currentToken.forceQuirks = true; + buffer.unget(data); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (isWhitespace(data)) { + tokenizer.setState(before_doctype_name_state); + } else { + tokenizer._parseError("need-space-after-doctype"); + buffer.unget(data); + tokenizer.setState(before_doctype_name_state); + } + return true; + } + + function before_doctype_name_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("expected-doctype-name-but-got-eof"); + tokenizer._currentToken.forceQuirks = true; + buffer.unget(data); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (isWhitespace(data)) { + // pass + } else if (data === '>') { + tokenizer._parseError("expected-doctype-name-but-got-right-bracket"); + tokenizer._currentToken.forceQuirks = true; + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else { + if (isAlpha(data)) + data = data.toLowerCase(); + tokenizer._currentToken.name = data; + tokenizer.setState(doctype_name_state); + } + return true; + } + + function doctype_name_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._currentToken.forceQuirks = true; + buffer.unget(data); + tokenizer._parseError("eof-in-doctype-name"); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (isWhitespace(data)) { + tokenizer.setState(after_doctype_name_state); + } else if (data === '>') { + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else { + if (isAlpha(data)) + data = data.toLowerCase(); + tokenizer._currentToken.name += data; + buffer.commit(); + } + return true; + } + + function after_doctype_name_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._currentToken.forceQuirks = true; + buffer.unget(data); + tokenizer._parseError("eof-in-doctype"); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (isWhitespace(data)) { + // pass + } else if (data === '>') { + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else { + if (['p', 'P'].indexOf(data) > -1) { + var expected = [['u', 'U'], ['b', 'B'], ['l', 'L'], ['i', 'I'], ['c', 'C']]; + var matched = expected.every(function(expected){ + data = buffer.char(); + return expected.indexOf(data) > -1; + }); + if (matched) { + tokenizer.setState(after_doctype_public_keyword_state); + return true; + } + } else if (['s', 'S'].indexOf(data) > -1) { + var expected = [['y', 'Y'], ['s', 'S'], ['t', 'T'], ['e', 'E'], ['m', 'M']]; + var matched = expected.every(function(expected){ + data = buffer.char(); + return expected.indexOf(data) > -1; + }); + if (matched) { + tokenizer.setState(after_doctype_system_keyword_state); + return true; + } + } + + // All the characters read before the current 'data' will be + // [a-zA-Z], so they're garbage in the bogus doctype and can be + // discarded; only the latest character might be '>' or EOF + // and needs to be ungetted + buffer.unget(data); + tokenizer._currentToken.forceQuirks = true; + + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + buffer.unget(data); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else { + tokenizer._parseError("expected-space-or-right-bracket-in-doctype", {data: data}); + tokenizer.setState(bogus_doctype_state); + } + } + return true; + } + + function after_doctype_public_keyword_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + buffer.unget(data); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (isWhitespace(data)) { + tokenizer.setState(before_doctype_public_identifier_state); + } else if (data === "'" || data === '"') { + tokenizer._parseError("unexpected-char-in-doctype"); + buffer.unget(data); + tokenizer.setState(before_doctype_public_identifier_state); + } else { + buffer.unget(data); + tokenizer.setState(before_doctype_public_identifier_state); + } + return true; + } + + function before_doctype_public_identifier_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + buffer.unget(data); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (isWhitespace(data)) { + // pass + } else if (data === '"') { + tokenizer._currentToken.publicId = ''; + tokenizer.setState(doctype_public_identifier_double_quoted_state); + } else if (data === "'") { + tokenizer._currentToken.publicId = ''; + tokenizer.setState(doctype_public_identifier_single_quoted_state); + } else if (data === '>') { + tokenizer._parseError("unexpected-end-of-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else { + tokenizer._parseError("unexpected-char-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer.setState(bogus_doctype_state); + } + return true; + } + + function doctype_public_identifier_double_quoted_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + buffer.unget(data); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (data === '"') { + tokenizer.setState(after_doctype_public_identifier_state); + } else if (data === '>') { + tokenizer._parseError("unexpected-end-of-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else { + tokenizer._currentToken.publicId += data; + } + return true; + } + + function doctype_public_identifier_single_quoted_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + buffer.unget(data); + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (data === "'") { + tokenizer.setState(after_doctype_public_identifier_state); + } else if (data === '>') { + tokenizer._parseError("unexpected-end-of-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else { + tokenizer._currentToken.publicId += data; + } + return true; + } + + function after_doctype_public_identifier_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + tokenizer.setState(between_doctype_public_and_system_identifiers_state); + } else if (data === '>') { + tokenizer.setState(data_state); + tokenizer._emitCurrentToken(); + } else if (data === '"') { + tokenizer._parseError("unexpected-char-in-doctype"); + tokenizer._currentToken.systemId = ''; + tokenizer.setState(doctype_system_identifier_double_quoted_state); + } else if (data === "'") { + tokenizer._parseError("unexpected-char-in-doctype"); + tokenizer._currentToken.systemId = ''; + tokenizer.setState(doctype_system_identifier_single_quoted_state); + } else { + tokenizer._parseError("unexpected-char-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer.setState(bogus_doctype_state); + } + return true; + } + + function between_doctype_public_and_system_identifiers_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + // pass + } else if (data === '>') { + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } else if (data === '"') { + tokenizer._currentToken.systemId = ''; + tokenizer.setState(doctype_system_identifier_double_quoted_state); + } else if (data === "'") { + tokenizer._currentToken.systemId = ''; + tokenizer.setState(doctype_system_identifier_single_quoted_state); + } else { + tokenizer._parseError("unexpected-char-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer.setState(bogus_doctype_state); + } + return true; + } + + function after_doctype_system_keyword_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + tokenizer.setState(before_doctype_system_identifier_state); + } else if (data === "'" || data === '"') { + tokenizer._parseError("unexpected-char-in-doctype"); + buffer.unget(data); + tokenizer.setState(before_doctype_system_identifier_state); + } else { + buffer.unget(data); + tokenizer.setState(before_doctype_system_identifier_state); + } + return true; + } + + function before_doctype_system_identifier_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + // pass + } else if (data === '"') { + tokenizer._currentToken.systemId = ''; + tokenizer.setState(doctype_system_identifier_double_quoted_state); + } else if (data === "'") { + tokenizer._currentToken.systemId = ''; + tokenizer.setState(doctype_system_identifier_single_quoted_state); + } else if (data === '>') { + tokenizer._parseError("unexpected-end-of-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } else { + tokenizer._parseError("unexpected-char-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer.setState(bogus_doctype_state); + } + return true; + } + + function doctype_system_identifier_double_quoted_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === '"') { + tokenizer.setState(after_doctype_system_identifier_state); + } else if (data === '>') { + tokenizer._parseError("unexpected-end-of-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } else { + tokenizer._currentToken.systemId += data; + } + return true; + } + + function doctype_system_identifier_single_quoted_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (data === "'") { + tokenizer.setState(after_doctype_system_identifier_state); + } else if (data === '>') { + tokenizer._parseError("unexpected-end-of-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } else { + tokenizer._currentToken.systemId += data; + } + return true; + } + + function after_doctype_system_identifier_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + tokenizer._parseError("eof-in-doctype"); + tokenizer._currentToken.forceQuirks = true; + tokenizer._emitCurrentToken(); + buffer.unget(data); + tokenizer.setState(data_state); + } else if (isWhitespace(data)) { + // pass + } else if (data === '>') { + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } else { + tokenizer._parseError("unexpected-char-in-doctype"); + tokenizer.setState(bogus_doctype_state); + } + return true; + } + + function bogus_doctype_state(buffer) { + var data = buffer.char(); + if (data === InputStream.EOF) { + buffer.unget(data); + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } else if (data === '>') { + tokenizer._emitCurrentToken(); + tokenizer.setState(data_state); + } + return true; + } +}; + +Object.defineProperty(Tokenizer.prototype, 'lineNumber', { + get: function() { + return this._inputStream.location().line; + } +}); + +Object.defineProperty(Tokenizer.prototype, 'columnNumber', { + get: function() { + return this._inputStream.location().column; + } +}); + +exports.Tokenizer = Tokenizer; + +}, +{"./EntityParser":2,"./InputStream":3}], +6:[function(_dereq_,module,exports){ +var assert = _dereq_('assert'); + +var messages = _dereq_('./messages.json'); +var constants = _dereq_('./constants'); + +var EventEmitter = _dereq_('events').EventEmitter; + +var Tokenizer = _dereq_('./Tokenizer').Tokenizer; +var ElementStack = _dereq_('./ElementStack').ElementStack; +var StackItem = _dereq_('./StackItem').StackItem; + +var Marker = {}; + +function isWhitespace(ch) { + return ch === " " || ch === "\n" || ch === "\t" || ch === "\r" || ch === "\f"; +} + +function isWhitespaceOrReplacementCharacter(ch) { + return isWhitespace(ch) || ch === '\uFFFD'; +} + +function isAllWhitespace(characters) { + for (var i = 0; i < characters.length; i++) { + var ch = characters[i]; + if (!isWhitespace(ch)) + return false; + } + return true; +} + +function isAllWhitespaceOrReplacementCharacters(characters) { + for (var i = 0; i < characters.length; i++) { + var ch = characters[i]; + if (!isWhitespaceOrReplacementCharacter(ch)) + return false; + } + return true; +} + +function getAttribute(node, name) { + for (var i = 0; i < node.attributes.length; i++) { + var attribute = node.attributes[i]; + if (attribute.nodeName === name) { + return attribute; + } + } + return null; +} + +function CharacterBuffer(characters) { + this.characters = characters; + this.current = 0; + this.end = this.characters.length; +} + +CharacterBuffer.prototype.skipAtMostOneLeadingNewline = function() { + if (this.characters[this.current] === '\n') + this.current++; +}; + +CharacterBuffer.prototype.skipLeadingWhitespace = function() { + while (isWhitespace(this.characters[this.current])) { + if (++this.current == this.end) + return; + } +}; + +CharacterBuffer.prototype.skipLeadingNonWhitespace = function() { + while (!isWhitespace(this.characters[this.current])) { + if (++this.current == this.end) + return; + } +}; + +CharacterBuffer.prototype.takeRemaining = function() { + return this.characters.substring(this.current); +}; + +CharacterBuffer.prototype.takeLeadingWhitespace = function() { + var start = this.current; + this.skipLeadingWhitespace(); + if (start === this.current) + return ""; + return this.characters.substring(start, this.current - start); +}; + +Object.defineProperty(CharacterBuffer.prototype, 'length', { + get: function(){ + return this.end - this.current; + } +}); + +/** + * + * @constructor + */ +function TreeBuilder() { + this.tokenizer = null; + this.errorHandler = null; + this.scriptingEnabled = false; + this.document = null; + this.head = null; + this.form = null; + this.openElements = new ElementStack(); + this.activeFormattingElements = []; + this.insertionMode = null; + this.insertionModeName = ""; + this.originalInsertionMode = ""; + this.inQuirksMode = false; // TODO quirks mode + this.compatMode = "no quirks"; + this.framesetOk = true; + this.redirectAttachToFosterParent = false; + this.selfClosingFlagAcknowledged = false; + this.context = ""; + this.pendingTableCharacters = []; + this.shouldSkipLeadingNewline = false; + + var tree = this; + var modes = this.insertionModes = {}; + modes.base = { + end_tag_handlers: {"-default": 'endTagOther'}, + start_tag_handlers: {"-default": 'startTagOther'}, + processEOF: function() { + tree.generateImpliedEndTags(); + if (tree.openElements.length > 2) { + tree.parseError('expected-closing-tag-but-got-eof'); + } else if (tree.openElements.length == 2 && + tree.openElements.item(1).localName != 'body') { + // This happens for framesets or something? + tree.parseError('expected-closing-tag-but-got-eof'); + } else if (tree.context && tree.openElements.length > 1) { + // XXX This is not what the specification says. Not sure what to do here. + //tree.parseError('eof-in-innerhtml'); + } + }, + processComment: function(data) { + // For most phases the following is forceQuirks. Where it's not it will be + // overridden. + tree.insertComment(data, tree.currentStackItem().node); + }, + processDoctype: function(name, publicId, systemId, forceQuirks) { + tree.parseError('unexpected-doctype'); + }, + processStartTag: function(name, attributes, selfClosing) { + if (this[this.start_tag_handlers[name]]) { + this[this.start_tag_handlers[name]](name, attributes, selfClosing); + } else if (this[this.start_tag_handlers["-default"]]) { + this[this.start_tag_handlers["-default"]](name, attributes, selfClosing); + } else { + throw(new Error("No handler found for "+name)); + } + }, + processEndTag: function(name) { + if (this[this.end_tag_handlers[name]]) { + this[this.end_tag_handlers[name]](name); + } else if (this[this.end_tag_handlers["-default"]]) { + this[this.end_tag_handlers["-default"]](name); + } else { + throw(new Error("No handler found for "+name)); + } + }, + startTagHtml: function(name, attributes) { + modes.inBody.startTagHtml(name, attributes); + } + }; + + modes.initial = Object.create(modes.base); + + modes.initial.processEOF = function() { + tree.parseError("expected-doctype-but-got-eof"); + this.anythingElse(); + tree.insertionMode.processEOF(); + }; + + modes.initial.processComment = function(data) { + tree.insertComment(data, tree.document); + }; + + modes.initial.processDoctype = function(name, publicId, systemId, forceQuirks) { + tree.insertDoctype(name || '', publicId || '', systemId || ''); + + if (forceQuirks || name != 'html' || (publicId != null && ([ + "+//silmaril//dtd html pro v0r11 19970101//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//ietf//dtd html//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//", + "html" + ].some(publicIdStartsWith) + || [ + "-//w3o//dtd w3 html strict 3.0//en//", + "-/w3c/dtd html 4.0 transitional/en", + "html" + ].indexOf(publicId.toLowerCase()) > -1 + || (systemId == null && [ + "-//w3c//dtd html 4.01 transitional//", + "-//w3c//dtd html 4.01 frameset//" + ].some(publicIdStartsWith))) + ) + || (systemId != null && (systemId.toLowerCase() == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd")) + ) { + tree.compatMode = "quirks"; + tree.parseError("quirky-doctype"); + } else if (publicId != null && ([ + "-//w3c//dtd xhtml 1.0 transitional//", + "-//w3c//dtd xhtml 1.0 frameset//" + ].some(publicIdStartsWith) + || (systemId != null && [ + "-//w3c//dtd html 4.01 transitional//", + "-//w3c//dtd html 4.01 frameset//" + ].indexOf(publicId.toLowerCase()) > -1)) + ) { + tree.compatMode = "limited quirks"; + tree.parseError("almost-standards-doctype"); + } else { + if ((publicId == "-//W3C//DTD HTML 4.0//EN" && (systemId == null || systemId == "http://www.w3.org/TR/REC-html40/strict.dtd")) + || (publicId == "-//W3C//DTD HTML 4.01//EN" && (systemId == null || systemId == "http://www.w3.org/TR/html4/strict.dtd")) + || (publicId == "-//W3C//DTD XHTML 1.0 Strict//EN" && (systemId == "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")) + || (publicId == "-//W3C//DTD XHTML 1.1//EN" && (systemId == "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd")) + ) { + // warning + //tree.warn("obsolete-doctype"); + } else if (!((systemId == null || systemId == "about:legacy-compat") && publicId == null)) { + tree.parseError("unknown-doctype"); + } + } + tree.setInsertionMode('beforeHTML'); + function publicIdStartsWith(string) { + return publicId.toLowerCase().indexOf(string) === 0; + } + }; + + modes.initial.processCharacters = function(buffer) { + buffer.skipLeadingWhitespace(); + if (!buffer.length) + return; + tree.parseError('expected-doctype-but-got-chars'); + this.anythingElse(); + tree.insertionMode.processCharacters(buffer); + }; + + modes.initial.processStartTag = function(name, attributes, selfClosing) { + tree.parseError('expected-doctype-but-got-start-tag', {name: name}); + this.anythingElse(); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.initial.processEndTag = function(name) { + tree.parseError('expected-doctype-but-got-end-tag', {name: name}); + this.anythingElse(); + tree.insertionMode.processEndTag(name); + }; + + modes.initial.anythingElse = function() { + tree.compatMode = 'quirks'; + tree.setInsertionMode('beforeHTML'); + }; + + modes.beforeHTML = Object.create(modes.base); + + modes.beforeHTML.start_tag_handlers = { + html: 'startTagHtml', + '-default': 'startTagOther' + }; + + modes.beforeHTML.processEOF = function() { + this.anythingElse(); + tree.insertionMode.processEOF(); + }; + + modes.beforeHTML.processComment = function(data) { + tree.insertComment(data, tree.document); + }; + + modes.beforeHTML.processCharacters = function(buffer) { + buffer.skipLeadingWhitespace(); + if (!buffer.length) + return; + this.anythingElse(); + tree.insertionMode.processCharacters(buffer); + }; + + modes.beforeHTML.startTagHtml = function(name, attributes, selfClosing) { + tree.insertHtmlElement(attributes); + tree.setInsertionMode('beforeHead'); + }; + + modes.beforeHTML.startTagOther = function(name, attributes, selfClosing) { + this.anythingElse(); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.beforeHTML.processEndTag = function(name) { + this.anythingElse(); + tree.insertionMode.processEndTag(name); + }; + + modes.beforeHTML.anythingElse = function() { + tree.insertHtmlElement(); + tree.setInsertionMode('beforeHead'); + }; + + modes.afterAfterBody = Object.create(modes.base); + + modes.afterAfterBody.start_tag_handlers = { + html: 'startTagHtml', + '-default': 'startTagOther' + }; + + modes.afterAfterBody.processComment = function(data) { + tree.insertComment(data, tree.document); + }; + + modes.afterAfterBody.processDoctype = function(data) { + modes.inBody.processDoctype(data); + }; + + modes.afterAfterBody.startTagHtml = function(data, attributes) { + modes.inBody.startTagHtml(data, attributes); + }; + + modes.afterAfterBody.startTagOther = function(name, attributes, selfClosing) { + tree.parseError('unexpected-start-tag', {name: name}); + tree.setInsertionMode('inBody'); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.afterAfterBody.endTagOther = function(name) { + tree.parseError('unexpected-end-tag', {name: name}); + tree.setInsertionMode('inBody'); + tree.insertionMode.processEndTag(name); + }; + + modes.afterAfterBody.processCharacters = function(data) { + if (!isAllWhitespace(data.characters)) { + tree.parseError('unexpected-char-after-body'); + tree.setInsertionMode('inBody'); + return tree.insertionMode.processCharacters(data); + } + modes.inBody.processCharacters(data); + }; + + modes.afterBody = Object.create(modes.base); + + modes.afterBody.end_tag_handlers = { + html: 'endTagHtml', + '-default': 'endTagOther' + }; + + modes.afterBody.processComment = function(data) { + // This is needed because data is to be appended to the html element here + // and not to whatever is currently open. + tree.insertComment(data, tree.openElements.rootNode); + }; + + modes.afterBody.processCharacters = function(data) { + if (!isAllWhitespace(data.characters)) { + tree.parseError('unexpected-char-after-body'); + tree.setInsertionMode('inBody'); + return tree.insertionMode.processCharacters(data); + } + modes.inBody.processCharacters(data); + }; + + modes.afterBody.processStartTag = function(name, attributes, selfClosing) { + tree.parseError('unexpected-start-tag-after-body', {name: name}); + tree.setInsertionMode('inBody'); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.afterBody.endTagHtml = function(name) { + if (tree.context) { + tree.parseError('end-html-in-innerhtml'); + } else { + // XXX This may need to be done, not sure + // Don't set last_phase to the current phase but to the inBody phase + // instead. No need for extra parseErrors if there's something after + // </html>. + // Try <!doctype html>X</html>X for instance + tree.setInsertionMode('afterAfterBody'); + } + }; + + modes.afterBody.endTagOther = function(name) { + tree.parseError('unexpected-end-tag-after-body', {name: name}); + tree.setInsertionMode('inBody'); + tree.insertionMode.processEndTag(name); + }; + + modes.afterFrameset = Object.create(modes.base); + + modes.afterFrameset.start_tag_handlers = { + html: 'startTagHtml', + noframes: 'startTagNoframes', + '-default': 'startTagOther' + }; + + modes.afterFrameset.end_tag_handlers = { + html: 'endTagHtml', + '-default': 'endTagOther' + }; + + modes.afterFrameset.processCharacters = function(buffer) { + var characters = buffer.takeRemaining(); + var whitespace = ""; + for (var i = 0; i < characters.length; i++) { + var ch = characters[i]; + if (isWhitespace(ch)) + whitespace += ch; + } + if (whitespace) { + tree.insertText(whitespace); + } + if (whitespace.length < characters.length) + tree.parseError('expected-eof-but-got-char'); + }; + + modes.afterFrameset.startTagNoframes = function(name, attributes) { + modes.inHead.processStartTag(name, attributes); + }; + + modes.afterFrameset.startTagOther = function(name, attributes) { + tree.parseError("unexpected-start-tag-after-frameset", {name: name}); + }; + + modes.afterFrameset.endTagHtml = function(name) { + tree.setInsertionMode('afterAfterFrameset'); + }; + + modes.afterFrameset.endTagOther = function(name) { + tree.parseError("unexpected-end-tag-after-frameset", {name: name}); + }; + + modes.beforeHead = Object.create(modes.base); + + modes.beforeHead.start_tag_handlers = { + html: 'startTagHtml', + head: 'startTagHead', + '-default': 'startTagOther' + }; + + modes.beforeHead.end_tag_handlers = { + html: 'endTagImplyHead', + head: 'endTagImplyHead', + body: 'endTagImplyHead', + br: 'endTagImplyHead', + '-default': 'endTagOther' + }; + + modes.beforeHead.processEOF = function() { + this.startTagHead('head', []); + tree.insertionMode.processEOF(); + }; + + modes.beforeHead.processCharacters = function(buffer) { + buffer.skipLeadingWhitespace(); + if (!buffer.length) + return; + this.startTagHead('head', []); + tree.insertionMode.processCharacters(buffer); + }; + + modes.beforeHead.startTagHead = function(name, attributes) { + tree.insertHeadElement(attributes); + tree.setInsertionMode('inHead'); + }; + + modes.beforeHead.startTagOther = function(name, attributes, selfClosing) { + this.startTagHead('head', []); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.beforeHead.endTagImplyHead = function(name) { + this.startTagHead('head', []); + tree.insertionMode.processEndTag(name); + }; + + modes.beforeHead.endTagOther = function(name) { + tree.parseError('end-tag-after-implied-root', {name: name}); + }; + + modes.inHead = Object.create(modes.base); + + modes.inHead.start_tag_handlers = { + html: 'startTagHtml', + head: 'startTagHead', + title: 'startTagTitle', + script: 'startTagScript', + style: 'startTagNoFramesStyle', + noscript: 'startTagNoScript', + noframes: 'startTagNoFramesStyle', + base: 'startTagBaseBasefontBgsoundLink', + basefont: 'startTagBaseBasefontBgsoundLink', + bgsound: 'startTagBaseBasefontBgsoundLink', + link: 'startTagBaseBasefontBgsoundLink', + meta: 'startTagMeta', + "-default": 'startTagOther' + }; + + modes.inHead.end_tag_handlers = { + head: 'endTagHead', + html: 'endTagHtmlBodyBr', + body: 'endTagHtmlBodyBr', + br: 'endTagHtmlBodyBr', + "-default": 'endTagOther' + }; + + modes.inHead.processEOF = function() { + var name = tree.currentStackItem().localName; + if (['title', 'style', 'script'].indexOf(name) != -1) { + tree.parseError("expected-named-closing-tag-but-got-eof", {name: name}); + tree.popElement(); + } + + this.anythingElse(); + + tree.insertionMode.processEOF(); + }; + + modes.inHead.processCharacters = function(buffer) { + var leadingWhitespace = buffer.takeLeadingWhitespace(); + if (leadingWhitespace) + tree.insertText(leadingWhitespace); + if (!buffer.length) + return; + this.anythingElse(); + tree.insertionMode.processCharacters(buffer); + }; + + modes.inHead.startTagHtml = function(name, attributes) { + modes.inBody.processStartTag(name, attributes); + }; + + modes.inHead.startTagHead = function(name, attributes) { + tree.parseError('two-heads-are-not-better-than-one'); + }; + + modes.inHead.startTagTitle = function(name, attributes) { + tree.processGenericRCDATAStartTag(name, attributes); + }; + + modes.inHead.startTagNoScript = function(name, attributes) { + if (tree.scriptingEnabled) + return tree.processGenericRawTextStartTag(name, attributes); + tree.insertElement(name, attributes); + tree.setInsertionMode('inHeadNoscript'); + }; + + modes.inHead.startTagNoFramesStyle = function(name, attributes) { + // XXX Need to decide whether to implement the scripting disabled case + tree.processGenericRawTextStartTag(name, attributes); + }; + + modes.inHead.startTagScript = function(name, attributes) { + tree.insertElement(name, attributes); + tree.tokenizer.setState(Tokenizer.SCRIPT_DATA); + tree.originalInsertionMode = tree.insertionModeName; + tree.setInsertionMode('text'); + }; + + modes.inHead.startTagBaseBasefontBgsoundLink = function(name, attributes) { + tree.insertSelfClosingElement(name, attributes); + }; + + modes.inHead.startTagMeta = function(name, attributes) { + tree.insertSelfClosingElement(name, attributes); + // @todo process charset attributes + }; + + modes.inHead.startTagOther = function(name, attributes, selfClosing) { + this.anythingElse(); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.inHead.endTagHead = function(name) { + if (tree.openElements.item(tree.openElements.length - 1).localName == 'head') { + tree.openElements.pop(); + } else { + tree.parseError('unexpected-end-tag', {name: 'head'}); + } + tree.setInsertionMode('afterHead'); + }; + + modes.inHead.endTagHtmlBodyBr = function(name) { + this.anythingElse(); + tree.insertionMode.processEndTag(name); + }; + + modes.inHead.endTagOther = function(name) { + tree.parseError('unexpected-end-tag', {name: name}); + }; + + modes.inHead.anythingElse = function() { + this.endTagHead('head'); + }; + + modes.afterHead = Object.create(modes.base); + + modes.afterHead.start_tag_handlers = { + html: 'startTagHtml', + head: 'startTagHead', + body: 'startTagBody', + frameset: 'startTagFrameset', + base: 'startTagFromHead', + link: 'startTagFromHead', + meta: 'startTagFromHead', + script: 'startTagFromHead', + // XXX noframes: 'startTagFromHead' ? + style: 'startTagFromHead', + title: 'startTagFromHead', + "-default": 'startTagOther' + }; + + modes.afterHead.end_tag_handlers = { + body: 'endTagBodyHtmlBr', + html: 'endTagBodyHtmlBr', + br: 'endTagBodyHtmlBr', + "-default": 'endTagOther' + }; + + modes.afterHead.processEOF = function() { + this.anythingElse(); + tree.insertionMode.processEOF(); + }; + + modes.afterHead.processCharacters = function(buffer) { + var leadingWhitespace = buffer.takeLeadingWhitespace(); + if (leadingWhitespace) + tree.insertText(leadingWhitespace); + if (!buffer.length) + return; + this.anythingElse(); + tree.insertionMode.processCharacters(buffer); + }; + + modes.afterHead.startTagHtml = function(name, attributes) { + modes.inBody.processStartTag(name, attributes); + }; + + modes.afterHead.startTagBody = function(name, attributes) { + tree.framesetOk = false; + tree.insertBodyElement(attributes); + tree.setInsertionMode('inBody'); + }; + + modes.afterHead.startTagFrameset = function(name, attributes) { + tree.insertElement(name, attributes); + tree.setInsertionMode('inFrameset'); + }; + + modes.afterHead.startTagFromHead = function(name, attributes, selfClosing) { + tree.parseError("unexpected-start-tag-out-of-my-head", {name: name}); + // FIXME head pointer + tree.openElements.push(tree.head); + modes.inHead.processStartTag(name, attributes, selfClosing); + tree.openElements.remove(tree.head); + }; + + modes.afterHead.startTagHead = function(name, attributes, selfClosing) { + tree.parseError('unexpected-start-tag', {name: name}); + }; + + modes.afterHead.startTagOther = function(name, attributes, selfClosing) { + this.anythingElse(); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.afterHead.endTagBodyHtmlBr = function(name) { + this.anythingElse(); + tree.insertionMode.processEndTag(name); + }; + + modes.afterHead.endTagOther = function(name) { + tree.parseError('unexpected-end-tag', {name: name}); + }; + + modes.afterHead.anythingElse = function() { + tree.insertBodyElement([]); + tree.setInsertionMode('inBody'); + tree.framesetOk = true; + } + + modes.inBody = Object.create(modes.base); + + modes.inBody.start_tag_handlers = { + html: 'startTagHtml', + head: 'startTagMisplaced', + base: 'startTagProcessInHead', + basefont: 'startTagProcessInHead', + bgsound: 'startTagProcessInHead', + link: 'startTagProcessInHead', + meta: 'startTagProcessInHead', + noframes: 'startTagProcessInHead', + script: 'startTagProcessInHead', + style: 'startTagProcessInHead', + title: 'startTagProcessInHead', + body: 'startTagBody', + form: 'startTagForm', + plaintext: 'startTagPlaintext', + a: 'startTagA', + button: 'startTagButton', + xmp: 'startTagXmp', + table: 'startTagTable', + hr: 'startTagHr', + image: 'startTagImage', + input: 'startTagInput', + textarea: 'startTagTextarea', + select: 'startTagSelect', + isindex: 'startTagIsindex', + applet: 'startTagAppletMarqueeObject', + marquee: 'startTagAppletMarqueeObject', + object: 'startTagAppletMarqueeObject', + li: 'startTagListItem', + dd: 'startTagListItem', + dt: 'startTagListItem', + address: 'startTagCloseP', + article: 'startTagCloseP', + aside: 'startTagCloseP', + blockquote: 'startTagCloseP', + center: 'startTagCloseP', + details: 'startTagCloseP', + dir: 'startTagCloseP', + div: 'startTagCloseP', + dl: 'startTagCloseP', + fieldset: 'startTagCloseP', + figcaption: 'startTagCloseP', + figure: 'startTagCloseP', + footer: 'startTagCloseP', + header: 'startTagCloseP', + hgroup: 'startTagCloseP', + main: 'startTagCloseP', + menu: 'startTagCloseP', + nav: 'startTagCloseP', + ol: 'startTagCloseP', + p: 'startTagCloseP', + section: 'startTagCloseP', + summary: 'startTagCloseP', + ul: 'startTagCloseP', + listing: 'startTagPreListing', + pre: 'startTagPreListing', + b: 'startTagFormatting', + big: 'startTagFormatting', + code: 'startTagFormatting', + em: 'startTagFormatting', + font: 'startTagFormatting', + i: 'startTagFormatting', + s: 'startTagFormatting', + small: 'startTagFormatting', + strike: 'startTagFormatting', + strong: 'startTagFormatting', + tt: 'startTagFormatting', + u: 'startTagFormatting', + nobr: 'startTagNobr', + area: 'startTagVoidFormatting', + br: 'startTagVoidFormatting', + embed: 'startTagVoidFormatting', + img: 'startTagVoidFormatting', + keygen: 'startTagVoidFormatting', + wbr: 'startTagVoidFormatting', + param: 'startTagParamSourceTrack', + source: 'startTagParamSourceTrack', + track: 'startTagParamSourceTrack', + iframe: 'startTagIFrame', + noembed: 'startTagRawText', + noscript: 'startTagRawText', + h1: 'startTagHeading', + h2: 'startTagHeading', + h3: 'startTagHeading', + h4: 'startTagHeading', + h5: 'startTagHeading', + h6: 'startTagHeading', + caption: 'startTagMisplaced', + col: 'startTagMisplaced', + colgroup: 'startTagMisplaced', + frame: 'startTagMisplaced', + frameset: 'startTagFrameset', + tbody: 'startTagMisplaced', + td: 'startTagMisplaced', + tfoot: 'startTagMisplaced', + th: 'startTagMisplaced', + thead: 'startTagMisplaced', + tr: 'startTagMisplaced', + option: 'startTagOptionOptgroup', + optgroup: 'startTagOptionOptgroup', + math: 'startTagMath', + svg: 'startTagSVG', + rt: 'startTagRpRt', + rp: 'startTagRpRt', + "-default": 'startTagOther' + }; + + modes.inBody.end_tag_handlers = { + p: 'endTagP', + body: 'endTagBody', + html: 'endTagHtml', + address: 'endTagBlock', + article: 'endTagBlock', + aside: 'endTagBlock', + blockquote: 'endTagBlock', + button: 'endTagBlock', + center: 'endTagBlock', + details: 'endTagBlock', + dir: 'endTagBlock', + div: 'endTagBlock', + dl: 'endTagBlock', + fieldset: 'endTagBlock', + figcaption: 'endTagBlock', + figure: 'endTagBlock', + footer: 'endTagBlock', + header: 'endTagBlock', + hgroup: 'endTagBlock', + listing: 'endTagBlock', + main: 'endTagBlock', + menu: 'endTagBlock', + nav: 'endTagBlock', + ol: 'endTagBlock', + pre: 'endTagBlock', + section: 'endTagBlock', + summary: 'endTagBlock', + ul: 'endTagBlock', + form: 'endTagForm', + applet: 'endTagAppletMarqueeObject', + marquee: 'endTagAppletMarqueeObject', + object: 'endTagAppletMarqueeObject', + dd: 'endTagListItem', + dt: 'endTagListItem', + li: 'endTagListItem', + h1: 'endTagHeading', + h2: 'endTagHeading', + h3: 'endTagHeading', + h4: 'endTagHeading', + h5: 'endTagHeading', + h6: 'endTagHeading', + a: 'endTagFormatting', + b: 'endTagFormatting', + big: 'endTagFormatting', + code: 'endTagFormatting', + em: 'endTagFormatting', + font: 'endTagFormatting', + i: 'endTagFormatting', + nobr: 'endTagFormatting', + s: 'endTagFormatting', + small: 'endTagFormatting', + strike: 'endTagFormatting', + strong: 'endTagFormatting', + tt: 'endTagFormatting', + u: 'endTagFormatting', + br: 'endTagBr', + "-default": 'endTagOther' + }; + + modes.inBody.processCharacters = function(buffer) { + if (tree.shouldSkipLeadingNewline) { + tree.shouldSkipLeadingNewline = false; + buffer.skipAtMostOneLeadingNewline(); + } + tree.reconstructActiveFormattingElements(); + var characters = buffer.takeRemaining(); + characters = characters.replace(/\u0000/g, function(match, index){ + // @todo position + tree.parseError("invalid-codepoint"); + return ''; + }); + if (!characters) + return; + tree.insertText(characters); + if (tree.framesetOk && !isAllWhitespaceOrReplacementCharacters(characters)) + tree.framesetOk = false; + }; + + modes.inBody.startTagHtml = function(name, attributes) { + tree.parseError('non-html-root'); + tree.addAttributesToElement(tree.openElements.rootNode, attributes); + }; + + modes.inBody.startTagProcessInHead = function(name, attributes) { + modes.inHead.processStartTag(name, attributes); + }; + + modes.inBody.startTagBody = function(name, attributes) { + tree.parseError('unexpected-start-tag', {name: 'body'}); + if (tree.openElements.length == 1 || + tree.openElements.item(1).localName != 'body') { + assert.ok(tree.context); + } else { + tree.framesetOk = false; + tree.addAttributesToElement(tree.openElements.bodyElement, attributes); + } + }; + + modes.inBody.startTagFrameset = function(name, attributes) { + tree.parseError('unexpected-start-tag', {name: 'frameset'}); + if (tree.openElements.length == 1 || + tree.openElements.item(1).localName != 'body') { + assert.ok(tree.context); + } else if (tree.framesetOk) { + tree.detachFromParent(tree.openElements.bodyElement); + while (tree.openElements.length > 1) + tree.openElements.pop(); + tree.insertElement(name, attributes); + tree.setInsertionMode('inFrameset'); + } + }; + + modes.inBody.startTagCloseP = function(name, attributes) { + if (tree.openElements.inButtonScope('p')) + this.endTagP('p'); + tree.insertElement(name, attributes); + }; + + modes.inBody.startTagPreListing = function(name, attributes) { + if (tree.openElements.inButtonScope('p')) + this.endTagP('p'); + tree.insertElement(name, attributes); + tree.framesetOk = false; + tree.shouldSkipLeadingNewline = true; + }; + + modes.inBody.startTagForm = function(name, attributes) { + if (tree.form) { + tree.parseError('unexpected-start-tag', {name: name}); + } else { + if (tree.openElements.inButtonScope('p')) + this.endTagP('p'); + tree.insertElement(name, attributes); + tree.form = tree.currentStackItem(); + } + }; + + modes.inBody.startTagRpRt = function(name, attributes) { + if (tree.openElements.inScope('ruby')) { + tree.generateImpliedEndTags(); + if (tree.currentStackItem().localName != 'ruby') { + tree.parseError('unexpected-start-tag', {name: name}); + } + } + tree.insertElement(name, attributes); + }; + + modes.inBody.startTagListItem = function(name, attributes) { + /// @todo: Fix according to current spec. http://www.w3.org/TR/html5/tree-construction.html#parsing-main-inbody + var stopNames = {li: ['li'], dd: ['dd', 'dt'], dt: ['dd', 'dt']}; + var stopName = stopNames[name]; + + var els = tree.openElements; + for (var i = els.length - 1; i >= 0; i--) { + var node = els.item(i); + if (stopName.indexOf(node.localName) != -1) { + tree.insertionMode.processEndTag(node.localName); + break; + } + + // todo isScoping() + if (node.isSpecial() && node.localName !== 'p' && node.localName !== 'address' && node.localName !== 'div') + break; + } + if (tree.openElements.inButtonScope('p')) + this.endTagP('p'); + + // Always insert an <li> element + tree.insertElement(name, attributes); + tree.framesetOk = false; + }; + + modes.inBody.startTagPlaintext = function(name, attributes) { + if (tree.openElements.inButtonScope('p')) + this.endTagP('p'); + tree.insertElement(name, attributes); + tree.tokenizer.setState(Tokenizer.PLAINTEXT); + }; + + modes.inBody.startTagHeading = function(name, attributes) { + if (tree.openElements.inButtonScope('p')) + this.endTagP('p'); + if (tree.currentStackItem().isNumberedHeader()) { + tree.parseError('unexpected-start-tag', {name: name}); + tree.popElement(); + } + tree.insertElement(name, attributes); + }; + + modes.inBody.startTagA = function(name, attributes) { + var activeA = tree.elementInActiveFormattingElements('a'); + if (activeA) { + tree.parseError("unexpected-start-tag-implies-end-tag", {startName: "a", endName: "a"}); + tree.adoptionAgencyEndTag('a'); + if (tree.openElements.contains(activeA)) + tree.openElements.remove(activeA); + tree.removeElementFromActiveFormattingElements(activeA); + } + tree.reconstructActiveFormattingElements(); + tree.insertFormattingElement(name, attributes); + }; + + modes.inBody.startTagFormatting = function(name, attributes) { + tree.reconstructActiveFormattingElements(); + tree.insertFormattingElement(name, attributes); + }; + + modes.inBody.startTagNobr = function(name, attributes) { + tree.reconstructActiveFormattingElements(); + if (tree.openElements.inScope('nobr')) { + tree.parseError("unexpected-start-tag-implies-end-tag", {startName: 'nobr', endName: 'nobr'}); + this.processEndTag('nobr'); + // XXX Need tests that trigger the following + tree.reconstructActiveFormattingElements(); + } + tree.insertFormattingElement(name, attributes); + }; + + modes.inBody.startTagButton = function(name, attributes) { + if (tree.openElements.inScope('button')) { + tree.parseError('unexpected-start-tag-implies-end-tag', {startName: 'button', endName: 'button'}); + this.processEndTag('button'); + tree.insertionMode.processStartTag(name, attributes); + } else { + tree.framesetOk = false; + tree.reconstructActiveFormattingElements(); + tree.insertElement(name, attributes); + } + }; + + modes.inBody.startTagAppletMarqueeObject = function(name, attributes) { + tree.reconstructActiveFormattingElements(); + tree.insertElement(name, attributes); + tree.activeFormattingElements.push(Marker); + tree.framesetOk = false; + }; + + modes.inBody.endTagAppletMarqueeObject = function(name) { + if (!tree.openElements.inScope(name)) { + tree.parseError("unexpected-end-tag", {name: name}); + } else { + tree.generateImpliedEndTags(); + if (tree.currentStackItem().localName != name) { + tree.parseError('end-tag-too-early', {name: name}); + } + tree.openElements.popUntilPopped(name); + tree.clearActiveFormattingElements(); + } + }; + + modes.inBody.startTagXmp = function(name, attributes) { + if (tree.openElements.inButtonScope('p')) + this.processEndTag('p'); + tree.reconstructActiveFormattingElements(); + tree.processGenericRawTextStartTag(name, attributes); + tree.framesetOk = false; + }; + + modes.inBody.startTagTable = function(name, attributes) { + if (tree.compatMode !== "quirks") + if (tree.openElements.inButtonScope('p')) + this.processEndTag('p'); + tree.insertElement(name, attributes); + tree.setInsertionMode('inTable'); + tree.framesetOk = false; + }; + + modes.inBody.startTagVoidFormatting = function(name, attributes) { + tree.reconstructActiveFormattingElements(); + tree.insertSelfClosingElement(name, attributes); + tree.framesetOk = false; + }; + + modes.inBody.startTagParamSourceTrack = function(name, attributes) { + tree.insertSelfClosingElement(name, attributes); + }; + + modes.inBody.startTagHr = function(name, attributes) { + if (tree.openElements.inButtonScope('p')) + this.endTagP('p'); + tree.insertSelfClosingElement(name, attributes); + tree.framesetOk = false; + }; + + modes.inBody.startTagImage = function(name, attributes) { + // No, really... + tree.parseError('unexpected-start-tag-treated-as', {originalName: 'image', newName: 'img'}); + this.processStartTag('img', attributes); + }; + + modes.inBody.startTagInput = function(name, attributes) { + var currentFramesetOk = tree.framesetOk; + this.startTagVoidFormatting(name, attributes); + for (var key in attributes) { + // input type=hidden doesn't change framesetOk + if (attributes[key].nodeName == 'type') { + if (attributes[key].nodeValue.toLowerCase() == 'hidden') + tree.framesetOk = currentFramesetOk; + break; + } + } + }; + + modes.inBody.startTagIsindex = function(name, attributes) { + tree.parseError('deprecated-tag', {name: 'isindex'}); + tree.selfClosingFlagAcknowledged = true; + if (tree.form) + return; + var formAttributes = []; + var inputAttributes = []; + var prompt = "This is a searchable index. Enter search keywords: "; + for (var key in attributes) { + switch (attributes[key].nodeName) { + case 'action': + formAttributes.push({nodeName: 'action', + nodeValue: attributes[key].nodeValue}); + break; + case 'prompt': + prompt = attributes[key].nodeValue; + break; + case 'name': + break; + default: + inputAttributes.push({nodeName: attributes[key].nodeName, + nodeValue: attributes[key].nodeValue}); + } + } + inputAttributes.push({nodeName: 'name', nodeValue: 'isindex'}); + this.processStartTag('form', formAttributes); + this.processStartTag('hr'); + this.processStartTag('label'); + this.processCharacters(new CharacterBuffer(prompt)); + this.processStartTag('input', inputAttributes); + this.processEndTag('label'); + this.processStartTag('hr'); + this.processEndTag('form'); + }; + + modes.inBody.startTagTextarea = function(name, attributes) { + // XXX Form element pointer checking here as well... + tree.insertElement(name, attributes); + tree.tokenizer.setState(Tokenizer.RCDATA); + tree.originalInsertionMode = tree.insertionModeName; + tree.shouldSkipLeadingNewline = true; + tree.framesetOk = false; + tree.setInsertionMode('text'); + }; + + modes.inBody.startTagIFrame = function(name, attributes) { + tree.framesetOk = false; + this.startTagRawText(name, attributes); + }; + + modes.inBody.startTagRawText = function(name, attributes) { + tree.processGenericRawTextStartTag(name, attributes); + }; + + modes.inBody.startTagSelect = function(name, attributes) { + tree.reconstructActiveFormattingElements(); + tree.insertElement(name, attributes); + tree.framesetOk = false; + var insertionModeName = tree.insertionModeName; + if (insertionModeName == 'inTable' || + insertionModeName == 'inCaption' || + insertionModeName == 'inColumnGroup' || + insertionModeName == 'inTableBody' || + insertionModeName == 'inRow' || + insertionModeName == 'inCell') { + tree.setInsertionMode('inSelectInTable'); + } else { + tree.setInsertionMode('inSelect'); + } + }; + + modes.inBody.startTagMisplaced = function(name, attributes) { + tree.parseError('unexpected-start-tag-ignored', {name: name}); + }; + + modes.inBody.endTagMisplaced = function(name) { + // This handles elements with end tags in other insertion modes. + tree.parseError("unexpected-end-tag", {name: name}); + }; + + modes.inBody.endTagBr = function(name) { + tree.parseError("unexpected-end-tag-treated-as", {originalName: "br", newName: "br element"}); + tree.reconstructActiveFormattingElements(); + tree.insertElement(name, []); + tree.popElement(); + }; + + modes.inBody.startTagOptionOptgroup = function(name, attributes) { + if (tree.currentStackItem().localName == 'option') + tree.popElement(); + tree.reconstructActiveFormattingElements(); + tree.insertElement(name, attributes); + }; + + modes.inBody.startTagOther = function(name, attributes) { + tree.reconstructActiveFormattingElements(); + tree.insertElement(name, attributes); + }; + + modes.inBody.endTagOther = function(name) { + var node; + for (var i = tree.openElements.length - 1; i > 0; i--) { + node = tree.openElements.item(i); + if (node.localName == name) { + tree.generateImpliedEndTags(name); + if (tree.currentStackItem().localName != name) + tree.parseError('unexpected-end-tag', {name: name}); + // todo optimize + tree.openElements.remove_openElements_until(function(x) {return x === node;}); + break; + } + if (node.isSpecial()) { + tree.parseError('unexpected-end-tag', {name: name}); + break; + } + } + }; + + modes.inBody.startTagMath = function(name, attributes, selfClosing) { + tree.reconstructActiveFormattingElements(); + attributes = tree.adjustMathMLAttributes(attributes); + attributes = tree.adjustForeignAttributes(attributes); + tree.insertForeignElement(name, attributes, "http://www.w3.org/1998/Math/MathML", selfClosing); + // Need to get the parse error right for the case where the token + // has a namespace not equal to the xmlns attribute + }; + + modes.inBody.startTagSVG = function(name, attributes, selfClosing) { + tree.reconstructActiveFormattingElements(); + attributes = tree.adjustSVGAttributes(attributes); + attributes = tree.adjustForeignAttributes(attributes); + tree.insertForeignElement(name, attributes, "http://www.w3.org/2000/svg", selfClosing); + // Need to get the parse error right for the case where the token + // has a namespace not equal to the xmlns attribute + }; + + modes.inBody.endTagP = function(name) { + if (!tree.openElements.inButtonScope('p')) { + tree.parseError('unexpected-end-tag', {name: 'p'}); + this.startTagCloseP('p', []); + this.endTagP('p'); + } else { + tree.generateImpliedEndTags('p'); + if (tree.currentStackItem().localName != 'p') + tree.parseError('unexpected-implied-end-tag', {name: 'p'}); + tree.openElements.popUntilPopped(name); + } + }; + + modes.inBody.endTagBody = function(name) { + if (!tree.openElements.inScope('body')) { + tree.parseError('unexpected-end-tag', {name: name}); + return; + } + + /// @todo Emit parse error on end tags other than the ones listed in http://www.w3.org/TR/html5/tree-construction.html#parsing-main-inbody + // ['dd', 'dt', 'li', 'optgroup', 'option', 'p', 'rp', 'rt', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'body', 'html'] + if (tree.currentStackItem().localName != 'body') { + tree.parseError('expected-one-end-tag-but-got-another', { + expectedName: tree.currentStackItem().localName, + gotName: name + }); + } + tree.setInsertionMode('afterBody'); + }; + + modes.inBody.endTagHtml = function(name) { + if (!tree.openElements.inScope('body')) { + tree.parseError('unexpected-end-tag', {name: name}); + return; + } + + /// @todo Emit parse error on end tags other than the ones listed in http://www.w3.org/TR/html5/tree-construction.html#parsing-main-inbody + // ['dd', 'dt', 'li', 'optgroup', 'option', 'p', 'rp', 'rt', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'body', 'html'] + if (tree.currentStackItem().localName != 'body') { + tree.parseError('expected-one-end-tag-but-got-another', { + expectedName: tree.currentStackItem().localName, + gotName: name + }); + } + tree.setInsertionMode('afterBody'); + tree.insertionMode.processEndTag(name); + }; + + modes.inBody.endTagBlock = function(name) { + if (!tree.openElements.inScope(name)) { + tree.parseError('unexpected-end-tag', {name: name}); + } else { + tree.generateImpliedEndTags(); + if (tree.currentStackItem().localName != name) { + tree.parseError('end-tag-too-early', {name: name}); + } + tree.openElements.popUntilPopped(name); + } + }; + + modes.inBody.endTagForm = function(name) { + var node = tree.form; + tree.form = null; + if (!node || !tree.openElements.inScope(name)) { + tree.parseError('unexpected-end-tag', {name: name}); + } else { + tree.generateImpliedEndTags(); + if (tree.currentStackItem() != node) { + tree.parseError('end-tag-too-early-ignored', {name: 'form'}); + } + tree.openElements.remove(node); + } + }; + + modes.inBody.endTagListItem = function(name) { + if (!tree.openElements.inListItemScope(name)) { + tree.parseError('unexpected-end-tag', {name: name}); + } else { + tree.generateImpliedEndTags(name); + if (tree.currentStackItem().localName != name) + tree.parseError('end-tag-too-early', {name: name}); + tree.openElements.popUntilPopped(name); + } + }; + + modes.inBody.endTagHeading = function(name) { + if (!tree.openElements.hasNumberedHeaderElementInScope()) { + tree.parseError('unexpected-end-tag', {name: name}); + return; + } + tree.generateImpliedEndTags(); + if (tree.currentStackItem().localName != name) + tree.parseError('end-tag-too-early', {name: name}); + + tree.openElements.remove_openElements_until(function(e) { + return e.isNumberedHeader(); + }); + }; + + modes.inBody.endTagFormatting = function(name, attributes) { + if (!tree.adoptionAgencyEndTag(name)) + this.endTagOther(name, attributes); + }; + + modes.inCaption = Object.create(modes.base); + + modes.inCaption.start_tag_handlers = { + html: 'startTagHtml', + caption: 'startTagTableElement', + col: 'startTagTableElement', + colgroup: 'startTagTableElement', + tbody: 'startTagTableElement', + td: 'startTagTableElement', + tfoot: 'startTagTableElement', + thead: 'startTagTableElement', + tr: 'startTagTableElement', + '-default': 'startTagOther' + }; + + modes.inCaption.end_tag_handlers = { + caption: 'endTagCaption', + table: 'endTagTable', + body: 'endTagIgnore', + col: 'endTagIgnore', + colgroup: 'endTagIgnore', + html: 'endTagIgnore', + tbody: 'endTagIgnore', + td: 'endTagIgnore', + tfood: 'endTagIgnore', + thead: 'endTagIgnore', + tr: 'endTagIgnore', + '-default': 'endTagOther' + }; + + modes.inCaption.processCharacters = function(data) { + modes.inBody.processCharacters(data); + }; + + modes.inCaption.startTagTableElement = function(name, attributes) { + tree.parseError('unexpected-end-tag', {name: name}); + var ignoreEndTag = !tree.openElements.inTableScope('caption'); + tree.insertionMode.processEndTag('caption'); + if (!ignoreEndTag) tree.insertionMode.processStartTag(name, attributes); + }; + + modes.inCaption.startTagOther = function(name, attributes, selfClosing) { + modes.inBody.processStartTag(name, attributes, selfClosing); + }; + + modes.inCaption.endTagCaption = function(name) { + if (!tree.openElements.inTableScope('caption')) { + // context case + assert.ok(tree.context); + tree.parseError('unexpected-end-tag', {name: name}); + } else { + // AT this code is quite similar to endTagTable in inTable + tree.generateImpliedEndTags(); + if (tree.currentStackItem().localName != 'caption') { + // @todo this is confusing for implied end tag + tree.parseError('expected-one-end-tag-but-got-another', { + gotName: "caption", + expectedName: tree.currentStackItem().localName + }); + } + tree.openElements.popUntilPopped('caption'); + tree.clearActiveFormattingElements(); + tree.setInsertionMode('inTable'); + } + }; + + modes.inCaption.endTagTable = function(name) { + tree.parseError("unexpected-end-table-in-caption"); + var ignoreEndTag = !tree.openElements.inTableScope('caption'); + tree.insertionMode.processEndTag('caption'); + if (!ignoreEndTag) tree.insertionMode.processEndTag(name); + }; + + modes.inCaption.endTagIgnore = function(name) { + tree.parseError('unexpected-end-tag', {name: name}); + }; + + modes.inCaption.endTagOther = function(name) { + modes.inBody.processEndTag(name); + }; + + modes.inCell = Object.create(modes.base); + + modes.inCell.start_tag_handlers = { + html: 'startTagHtml', + caption: 'startTagTableOther', + col: 'startTagTableOther', + colgroup: 'startTagTableOther', + tbody: 'startTagTableOther', + td: 'startTagTableOther', + tfoot: 'startTagTableOther', + th: 'startTagTableOther', + thead: 'startTagTableOther', + tr: 'startTagTableOther', + '-default': 'startTagOther' + }; + + modes.inCell.end_tag_handlers = { + td: 'endTagTableCell', + th: 'endTagTableCell', + body: 'endTagIgnore', + caption: 'endTagIgnore', + col: 'endTagIgnore', + colgroup: 'endTagIgnore', + html: 'endTagIgnore', + table: 'endTagImply', + tbody: 'endTagImply', + tfoot: 'endTagImply', + thead: 'endTagImply', + tr: 'endTagImply', + '-default': 'endTagOther' + }; + + modes.inCell.processCharacters = function(data) { + modes.inBody.processCharacters(data); + }; + + modes.inCell.startTagTableOther = function(name, attributes, selfClosing) { + if (tree.openElements.inTableScope('td') || tree.openElements.inTableScope('th')) { + this.closeCell(); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + } else { + // context case + tree.parseError('unexpected-start-tag', {name: name}); + } + }; + + modes.inCell.startTagOther = function(name, attributes, selfClosing) { + modes.inBody.processStartTag(name, attributes, selfClosing); + }; + + modes.inCell.endTagTableCell = function(name) { + if (tree.openElements.inTableScope(name)) { + tree.generateImpliedEndTags(name); + if (tree.currentStackItem().localName != name.toLowerCase()) { + tree.parseError('unexpected-cell-end-tag', {name: name}); + tree.openElements.popUntilPopped(name); + } else { + tree.popElement(); + } + tree.clearActiveFormattingElements(); + tree.setInsertionMode('inRow'); + } else { + tree.parseError('unexpected-end-tag', {name: name}); + } + }; + + modes.inCell.endTagIgnore = function(name) { + tree.parseError('unexpected-end-tag', {name: name}); + }; + + modes.inCell.endTagImply = function(name) { + if (tree.openElements.inTableScope(name)) { + this.closeCell(); + tree.insertionMode.processEndTag(name); + } else { + // sometimes context case + tree.parseError('unexpected-end-tag', {name: name}); + } + }; + + modes.inCell.endTagOther = function(name) { + modes.inBody.processEndTag(name); + }; + + modes.inCell.closeCell = function() { + if (tree.openElements.inTableScope('td')) { + this.endTagTableCell('td'); + } else if (tree.openElements.inTableScope('th')) { + this.endTagTableCell('th'); + } + }; + + + modes.inColumnGroup = Object.create(modes.base); + + modes.inColumnGroup.start_tag_handlers = { + html: 'startTagHtml', + col: 'startTagCol', + '-default': 'startTagOther' + }; + + modes.inColumnGroup.end_tag_handlers = { + colgroup: 'endTagColgroup', + col: 'endTagCol', + '-default': 'endTagOther' + }; + + modes.inColumnGroup.ignoreEndTagColgroup = function() { + return tree.currentStackItem().localName == 'html'; + }; + + modes.inColumnGroup.processCharacters = function(buffer) { + var leadingWhitespace = buffer.takeLeadingWhitespace(); + if (leadingWhitespace) + tree.insertText(leadingWhitespace); + if (!buffer.length) + return; + var ignoreEndTag = this.ignoreEndTagColgroup(); + this.endTagColgroup('colgroup'); + if (!ignoreEndTag) tree.insertionMode.processCharacters(buffer); + }; + + modes.inColumnGroup.startTagCol = function(name, attributes) { + tree.insertSelfClosingElement(name, attributes); + }; + + modes.inColumnGroup.startTagOther = function(name, attributes, selfClosing) { + var ignoreEndTag = this.ignoreEndTagColgroup(); + this.endTagColgroup('colgroup'); + if (!ignoreEndTag) tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.inColumnGroup.endTagColgroup = function(name) { + if (this.ignoreEndTagColgroup()) { + // context case + assert.ok(tree.context); + tree.parseError('unexpected-end-tag', {name: name}); + } else { + tree.popElement(); + tree.setInsertionMode('inTable'); + } + }; + + modes.inColumnGroup.endTagCol = function(name) { + tree.parseError("no-end-tag", {name: 'col'}); + }; + + modes.inColumnGroup.endTagOther = function(name) { + var ignoreEndTag = this.ignoreEndTagColgroup(); + this.endTagColgroup('colgroup'); + if (!ignoreEndTag) tree.insertionMode.processEndTag(name) ; + }; + + modes.inForeignContent = Object.create(modes.base); + + modes.inForeignContent.processStartTag = function(name, attributes, selfClosing) { + if (['b', 'big', 'blockquote', 'body', 'br', 'center', 'code', 'dd', 'div', 'dl', 'dt', 'em', 'embed', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'i', 'img', 'li', 'listing', 'menu', 'meta', 'nobr', 'ol', 'p', 'pre', 'ruby', 's', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'table', 'tt', 'u', 'ul', 'var'].indexOf(name) != -1 + || (name == 'font' && attributes.some(function(attr){ return ['color', 'face', 'size'].indexOf(attr.nodeName) >= 0 }))) { + tree.parseError('unexpected-html-element-in-foreign-content', {name: name}); + while (tree.currentStackItem().isForeign() + && !tree.currentStackItem().isHtmlIntegrationPoint() + && !tree.currentStackItem().isMathMLTextIntegrationPoint()) { + tree.openElements.pop(); + } + tree.insertionMode.processStartTag(name, attributes, selfClosing); + return; + } + if (tree.currentStackItem().namespaceURI == "http://www.w3.org/1998/Math/MathML") { + attributes = tree.adjustMathMLAttributes(attributes); + } + if (tree.currentStackItem().namespaceURI == "http://www.w3.org/2000/svg") { + name = tree.adjustSVGTagNameCase(name); + attributes = tree.adjustSVGAttributes(attributes); + } + attributes = tree.adjustForeignAttributes(attributes); + tree.insertForeignElement(name, attributes, tree.currentStackItem().namespaceURI, selfClosing); + }; + + modes.inForeignContent.processEndTag = function(name) { + var node = tree.currentStackItem(); + var index = tree.openElements.length - 1; + if (node.localName.toLowerCase() != name) + tree.parseError("unexpected-end-tag", {name: name}); + + while (true) { + if (index === 0) + break; + if (node.localName.toLowerCase() == name) { + while (tree.openElements.pop() != node); + break; + } + index -= 1; + node = tree.openElements.item(index); + if (node.isForeign()) { + continue; + } else { + tree.insertionMode.processEndTag(name); + break; + } + } + }; + + modes.inForeignContent.processCharacters = function(buffer) { + var characters = buffer.takeRemaining(); + characters = characters.replace(/\u0000/g, function(match, index){ + // @todo position + tree.parseError('invalid-codepoint'); + return '\uFFFD'; + }); + if (tree.framesetOk && !isAllWhitespaceOrReplacementCharacters(characters)) + tree.framesetOk = false; + tree.insertText(characters); + }; + + modes.inHeadNoscript = Object.create(modes.base); + + modes.inHeadNoscript.start_tag_handlers = { + html: 'startTagHtml', + basefont: 'startTagBasefontBgsoundLinkMetaNoframesStyle', + bgsound: 'startTagBasefontBgsoundLinkMetaNoframesStyle', + link: 'startTagBasefontBgsoundLinkMetaNoframesStyle', + meta: 'startTagBasefontBgsoundLinkMetaNoframesStyle', + noframes: 'startTagBasefontBgsoundLinkMetaNoframesStyle', + style: 'startTagBasefontBgsoundLinkMetaNoframesStyle', + head: 'startTagHeadNoscript', + noscript: 'startTagHeadNoscript', + "-default": 'startTagOther' + }; + + modes.inHeadNoscript.end_tag_handlers = { + noscript: 'endTagNoscript', + br: 'endTagBr', + '-default': 'endTagOther' + }; + + modes.inHeadNoscript.processCharacters = function(buffer) { + var leadingWhitespace = buffer.takeLeadingWhitespace(); + if (leadingWhitespace) + tree.insertText(leadingWhitespace); + if (!buffer.length) + return; + // FIXME error message + tree.parseError("unexpected-char-in-frameset"); + this.anythingElse(); + tree.insertionMode.processCharacters(buffer); + }; + + modes.inHeadNoscript.processComment = function(data) { + modes.inHead.processComment(data); + }; + + modes.inHeadNoscript.startTagBasefontBgsoundLinkMetaNoframesStyle = function(name, attributes) { + modes.inHead.processStartTag(name, attributes); + }; + + modes.inHeadNoscript.startTagHeadNoscript = function(name, attributes) { + // FIXME error message + tree.parseError("unexpected-start-tag-in-frameset", {name: name}); + }; + + modes.inHeadNoscript.startTagOther = function(name, attributes) { + // FIXME error message + tree.parseError("unexpected-start-tag-in-frameset", {name: name}); + this.anythingElse(); + tree.insertionMode.processStartTag(name, attributes); + }; + + modes.inHeadNoscript.endTagBr = function(name, attributes) { + // FIXME error message + tree.parseError("unexpected-end-tag-in-frameset", {name: name}); + this.anythingElse(); + tree.insertionMode.processEndTag(name, attributes); + }; + + modes.inHeadNoscript.endTagNoscript = function(name, attributes) { + tree.popElement(); + tree.setInsertionMode('inHead'); + }; + + modes.inHeadNoscript.endTagOther = function(name, attributes) { + // FIXME error message + tree.parseError("unexpected-end-tag-in-frameset", {name: name}); + }; + + modes.inHeadNoscript.anythingElse = function() { + tree.popElement(); + tree.setInsertionMode('inHead'); + }; + + + modes.inFrameset = Object.create(modes.base); + + modes.inFrameset.start_tag_handlers = { + html: 'startTagHtml', + frameset: 'startTagFrameset', + frame: 'startTagFrame', + noframes: 'startTagNoframes', + "-default": 'startTagOther' + }; + + modes.inFrameset.end_tag_handlers = { + frameset: 'endTagFrameset', + noframes: 'endTagNoframes', + '-default': 'endTagOther' + }; + + modes.inFrameset.processCharacters = function(data) { + tree.parseError("unexpected-char-in-frameset"); + }; + + modes.inFrameset.startTagFrameset = function(name, attributes) { + tree.insertElement(name, attributes); + }; + + modes.inFrameset.startTagFrame = function(name, attributes) { + tree.insertSelfClosingElement(name, attributes); + }; + + modes.inFrameset.startTagNoframes = function(name, attributes) { + modes.inBody.processStartTag(name, attributes); + }; + + modes.inFrameset.startTagOther = function(name, attributes) { + tree.parseError("unexpected-start-tag-in-frameset", {name: name}); + }; + + modes.inFrameset.endTagFrameset = function(name, attributes) { + if (tree.currentStackItem().localName == 'html') { + // context case + tree.parseError("unexpected-frameset-in-frameset-innerhtml"); + } else { + tree.popElement(); + } + + if (!tree.context && tree.currentStackItem().localName != 'frameset') { + // If we're not in context mode an the current node is not a "frameset" element (anymore) then switch + tree.setInsertionMode('afterFrameset'); + } + }; + + modes.inFrameset.endTagNoframes = function(name) { + modes.inBody.processEndTag(name); + }; + + modes.inFrameset.endTagOther = function(name) { + tree.parseError("unexpected-end-tag-in-frameset", {name: name}); + }; + + modes.inTable = Object.create(modes.base); + + modes.inTable.start_tag_handlers = { + html: 'startTagHtml', + caption: 'startTagCaption', + colgroup: 'startTagColgroup', + col: 'startTagCol', + table: 'startTagTable', + tbody: 'startTagRowGroup', + tfoot: 'startTagRowGroup', + thead: 'startTagRowGroup', + td: 'startTagImplyTbody', + th: 'startTagImplyTbody', + tr: 'startTagImplyTbody', + style: 'startTagStyleScript', + script: 'startTagStyleScript', + input: 'startTagInput', + form: 'startTagForm', + '-default': 'startTagOther' + }; + + modes.inTable.end_tag_handlers = { + table: 'endTagTable', + body: 'endTagIgnore', + caption: 'endTagIgnore', + col: 'endTagIgnore', + colgroup: 'endTagIgnore', + html: 'endTagIgnore', + tbody: 'endTagIgnore', + td: 'endTagIgnore', + tfoot: 'endTagIgnore', + th: 'endTagIgnore', + thead: 'endTagIgnore', + tr: 'endTagIgnore', + '-default': 'endTagOther' + }; + + modes.inTable.processCharacters = function(data) { + if (tree.currentStackItem().isFosterParenting()) { + var originalInsertionMode = tree.insertionModeName; + tree.setInsertionMode('inTableText'); + tree.originalInsertionMode = originalInsertionMode; + tree.insertionMode.processCharacters(data); + } else { + tree.redirectAttachToFosterParent = true; + modes.inBody.processCharacters(data); + tree.redirectAttachToFosterParent = false; + } + }; + + modes.inTable.startTagCaption = function(name, attributes) { + tree.openElements.popUntilTableScopeMarker(); + tree.activeFormattingElements.push(Marker); + tree.insertElement(name, attributes); + tree.setInsertionMode('inCaption'); + }; + + modes.inTable.startTagColgroup = function(name, attributes) { + tree.openElements.popUntilTableScopeMarker(); + tree.insertElement(name, attributes); + tree.setInsertionMode('inColumnGroup'); + }; + + modes.inTable.startTagCol = function(name, attributes) { + this.startTagColgroup('colgroup', []); + tree.insertionMode.processStartTag(name, attributes); + }; + + modes.inTable.startTagRowGroup = function(name, attributes) { + tree.openElements.popUntilTableScopeMarker(); + tree.insertElement(name, attributes); + tree.setInsertionMode('inTableBody'); + }; + + modes.inTable.startTagImplyTbody = function(name, attributes) { + this.startTagRowGroup('tbody', []); + tree.insertionMode.processStartTag(name, attributes); + }; + + modes.inTable.startTagTable = function(name, attributes) { + tree.parseError("unexpected-start-tag-implies-end-tag", + {startName: "table", endName: "table"}); + tree.insertionMode.processEndTag('table'); + if (!tree.context) tree.insertionMode.processStartTag(name, attributes); + }; + + modes.inTable.startTagStyleScript = function(name, attributes) { + modes.inHead.processStartTag(name, attributes); + }; + + modes.inTable.startTagInput = function(name, attributes) { + for (var key in attributes) { + if (attributes[key].nodeName.toLowerCase() == 'type') { + if (attributes[key].nodeValue.toLowerCase() == 'hidden') { + tree.parseError("unexpected-hidden-input-in-table"); + tree.insertElement(name, attributes); + // XXX associate with form + tree.openElements.pop(); + return; + } + break; + } + } + this.startTagOther(name, attributes); + }; + + modes.inTable.startTagForm = function(name, attributes) { + tree.parseError("unexpected-form-in-table"); + if (!tree.form) { + tree.insertElement(name, attributes); + tree.form = tree.currentStackItem(); + tree.openElements.pop(); + } + }; + + modes.inTable.startTagOther = function(name, attributes, selfClosing) { + tree.parseError("unexpected-start-tag-implies-table-voodoo", {name: name}); + tree.redirectAttachToFosterParent = true; + modes.inBody.processStartTag(name, attributes, selfClosing); + tree.redirectAttachToFosterParent = false; + }; + + modes.inTable.endTagTable = function(name) { + if (tree.openElements.inTableScope(name)) { + tree.generateImpliedEndTags(); + if (tree.currentStackItem().localName != name) { + tree.parseError("end-tag-too-early-named", {gotName: 'table', expectedName: tree.currentStackItem().localName}); + } + + tree.openElements.popUntilPopped('table'); + tree.resetInsertionMode(); + } else { + assert.ok(tree.context); + tree.parseError('unexpected-end-tag', {name: name}); + } + }; + + modes.inTable.endTagIgnore = function(name) { + tree.parseError("unexpected-end-tag", {name: name}); + }; + + modes.inTable.endTagOther = function(name) { + tree.parseError("unexpected-end-tag-implies-table-voodoo", {name: name}); + // Make all the special element rearranging voodoo kick in + tree.redirectAttachToFosterParent = true; + // Process the end tag in the "in body" mode + modes.inBody.processEndTag(name); + tree.redirectAttachToFosterParent = false; + }; + + modes.inTableText = Object.create(modes.base); + + modes.inTableText.flushCharacters = function() { + var characters = tree.pendingTableCharacters.join(''); + if (!isAllWhitespace(characters)) { + tree.redirectAttachToFosterParent = true; + tree.reconstructActiveFormattingElements(); + tree.insertText(characters); + tree.framesetOk = false; + tree.redirectAttachToFosterParent = false; + } else { + tree.insertText(characters); + } + tree.pendingTableCharacters = []; + }; + + modes.inTableText.processComment = function(data) { + this.flushCharacters(); + tree.setInsertionMode(tree.originalInsertionMode); + tree.insertionMode.processComment(data); + }; + + modes.inTableText.processEOF = function(data) { + this.flushCharacters(); + tree.setInsertionMode(tree.originalInsertionMode); + tree.insertionMode.processEOF(); + }; + + modes.inTableText.processCharacters = function(buffer) { + var characters = buffer.takeRemaining(); + characters = characters.replace(/\u0000/g, function(match, index){ + // @todo position + tree.parseError("invalid-codepoint"); + return ''; + }); + if (!characters) + return; + tree.pendingTableCharacters.push(characters); + }; + + modes.inTableText.processStartTag = function(name, attributes, selfClosing) { + this.flushCharacters(); + tree.setInsertionMode(tree.originalInsertionMode); + tree.insertionMode.processStartTag(name, attributes, selfClosing); + }; + + modes.inTableText.processEndTag = function(name, attributes) { + this.flushCharacters(); + tree.setInsertionMode(tree.originalInsertionMode); + tree.insertionMode.processEndTag(name, attributes); + }; + + modes.inTableBody = Object.create(modes.base); + + modes.inTableBody.start_tag_handlers = { + html: 'startTagHtml', + tr: 'startTagTr', + td: 'startTagTableCell', + th: 'startTagTableCell', + caption: 'startTagTableOther', + col: 'startTagTableOther', + colgroup: 'startTagTableOther', + tbody: 'startTagTableOther', + tfoot: 'startTagTableOther', + thead: 'startTagTableOther', + '-default': 'startTagOther' + }; + + modes.inTableBody.end_tag_handlers = { + table: 'endTagTable', + tbody: 'endTagTableRowGroup', + tfoot: 'endTagTableRowGroup', + thead: 'endTagTableRowGroup', + body: 'endTagIgnore', + caption: 'endTagIgnore', + col: 'endTagIgnore', + colgroup: 'endTagIgnore', + html: 'endTagIgnore', + td: 'endTagIgnore', + th: 'endTagIgnore', + tr: 'endTagIgnore', + '-default': 'endTagOther' + }; + + modes.inTableBody.processCharacters = function(data) { + modes.inTable.processCharacters(data); + }; + + modes.inTableBody.startTagTr = function(name, attributes) { + tree.openElements.popUntilTableBodyScopeMarker(); + tree.insertElement(name, attributes); + tree.setInsertionMode('inRow'); + }; + + modes.inTableBody.startTagTableCell = function(name, attributes) { + tree.parseError("unexpected-cell-in-table-body", {name: name}); + this.startTagTr('tr', []); + tree.insertionMode.processStartTag(name, attributes); + }; + + modes.inTableBody.startTagTableOther = function(name, attributes) { + // XXX any ideas on how to share this with endTagTable + if (tree.openElements.inTableScope('tbody') || tree.openElements.inTableScope('thead') || tree.openElements.inTableScope('tfoot')) { + tree.openElements.popUntilTableBodyScopeMarker(); + this.endTagTableRowGroup(tree.currentStackItem().localName); + tree.insertionMode.processStartTag(name, attributes); + } else { + // context case + tree.parseError('unexpected-start-tag', {name: name}); + } + }; + + modes.inTableBody.startTagOther = function(name, attributes) { + modes.inTable.processStartTag(name, attributes); + }; + + modes.inTableBody.endTagTableRowGroup = function(name) { + if (tree.openElements.inTableScope(name)) { + tree.openElements.popUntilTableBodyScopeMarker(); + tree.popElement(); + tree.setInsertionMode('inTable'); + } else { + tree.parseError('unexpected-end-tag-in-table-body', {name: name}); + } + }; + + modes.inTableBody.endTagTable = function(name) { + if (tree.openElements.inTableScope('tbody') || tree.openElements.inTableScope('thead') || tree.openElements.inTableScope('tfoot')) { + tree.openElements.popUntilTableBodyScopeMarker(); + this.endTagTableRowGroup(tree.currentStackItem().localName); + tree.insertionMode.processEndTag(name); + } else { + // context case + tree.parseError('unexpected-end-tag', {name: name}); + } + }; + + modes.inTableBody.endTagIgnore = function(name) { + tree.parseError("unexpected-end-tag-in-table-body", {name: name}); + }; + + modes.inTableBody.endTagOther = function(name) { + modes.inTable.processEndTag(name); + }; + + modes.inSelect = Object.create(modes.base); + + modes.inSelect.start_tag_handlers = { + html: 'startTagHtml', + option: 'startTagOption', + optgroup: 'startTagOptgroup', + select: 'startTagSelect', + input: 'startTagInput', + keygen: 'startTagInput', + textarea: 'startTagInput', + script: 'startTagScript', + '-default': 'startTagOther' + }; + + modes.inSelect.end_tag_handlers = { + option: 'endTagOption', + optgroup: 'endTagOptgroup', + select: 'endTagSelect', + caption: 'endTagTableElements', + table: 'endTagTableElements', + tbody: 'endTagTableElements', + tfoot: 'endTagTableElements', + thead: 'endTagTableElements', + tr: 'endTagTableElements', + td: 'endTagTableElements', + th: 'endTagTableElements', + '-default': 'endTagOther' + }; + + modes.inSelect.processCharacters = function(buffer) { + var data = buffer.takeRemaining(); + data = data.replace(/\u0000/g, function(match, index){ + // @todo position + tree.parseError("invalid-codepoint"); + return ''; + }); + if (!data) + return; + tree.insertText(data); + }; + + modes.inSelect.startTagOption = function(name, attributes) { + // we need to imply </option> if <option> is the current node + if (tree.currentStackItem().localName == 'option') + tree.popElement(); + tree.insertElement(name, attributes); + }; + + modes.inSelect.startTagOptgroup = function(name, attributes) { + if (tree.currentStackItem().localName == 'option') + tree.popElement(); + if (tree.currentStackItem().localName == 'optgroup') + tree.popElement(); + tree.insertElement(name, attributes); + }; + + modes.inSelect.endTagOption = function(name) { + if (tree.currentStackItem().localName !== 'option') { + tree.parseError('unexpected-end-tag-in-select', {name: name}); + return; + } + tree.popElement(); + }; + + modes.inSelect.endTagOptgroup = function(name) { + // </optgroup> implicitly closes <option> + if (tree.currentStackItem().localName == 'option' && tree.openElements.item(tree.openElements.length - 2).localName == 'optgroup') { + tree.popElement(); + } + + // it also closes </optgroup> + if (tree.currentStackItem().localName == 'optgroup') { + tree.popElement(); + } else { + // But nothing else + tree.parseError('unexpected-end-tag-in-select', {name: 'optgroup'}); + } + }; + + modes.inSelect.startTagSelect = function(name) { + tree.parseError("unexpected-select-in-select"); + this.endTagSelect('select'); + }; + + modes.inSelect.endTagSelect = function(name) { + if (tree.openElements.inTableScope('select')) { + tree.openElements.popUntilPopped('select'); + tree.resetInsertionMode(); + } else { + // context case + tree.parseError('unexpected-end-tag', {name: name}); + } + }; + + modes.inSelect.startTagInput = function(name, attributes) { + tree.parseError("unexpected-input-in-select"); + if (tree.openElements.inSelectScope('select')) { + this.endTagSelect('select'); + tree.insertionMode.processStartTag(name, attributes); + } + }; + + modes.inSelect.startTagScript = function(name, attributes) { + modes.inHead.processStartTag(name, attributes); + }; + + modes.inSelect.endTagTableElements = function(name) { + tree.parseError('unexpected-end-tag-in-select', {name: name}); + if (tree.openElements.inTableScope(name)) { + this.endTagSelect('select'); + tree.insertionMode.processEndTag(name); + } + }; + + modes.inSelect.startTagOther = function(name, attributes) { + tree.parseError("unexpected-start-tag-in-select", {name: name}); + }; + + modes.inSelect.endTagOther = function(name) { + tree.parseError('unexpected-end-tag-in-select', {name: name}); + }; + + modes.inSelectInTable = Object.create(modes.base); + + modes.inSelectInTable.start_tag_handlers = { + caption: 'startTagTable', + table: 'startTagTable', + tbody: 'startTagTable', + tfoot: 'startTagTable', + thead: 'startTagTable', + tr: 'startTagTable', + td: 'startTagTable', + th: 'startTagTable', + '-default': 'startTagOther' + }; + + modes.inSelectInTable.end_tag_handlers = { + caption: 'endTagTable', + table: 'endTagTable', + tbody: 'endTagTable', + tfoot: 'endTagTable', + thead: 'endTagTable', + tr: 'endTagTable', + td: 'endTagTable', + th: 'endTagTable', + '-default': 'endTagOther' + }; + + modes.inSelectInTable.processCharacters = function(data) { + modes.inSelect.processCharacters(data); + }; + + modes.inSelectInTable.startTagTable = function(name, attributes) { + tree.parseError("unexpected-table-element-start-tag-in-select-in-table", {name: name}); + this.endTagOther("select"); + tree.insertionMode.processStartTag(name, attributes); + }; + + modes.inSelectInTable.startTagOther = function(name, attributes, selfClosing) { + modes.inSelect.processStartTag(name, attributes, selfClosing); + }; + + modes.inSelectInTable.endTagTable = function(name) { + tree.parseError("unexpected-table-element-end-tag-in-select-in-table", {name: name}); + if (tree.openElements.inTableScope(name)) { + this.endTagOther("select"); + tree.insertionMode.processEndTag(name); + } + }; + + modes.inSelectInTable.endTagOther = function(name) { + modes.inSelect.processEndTag(name); + }; + + modes.inRow = Object.create(modes.base); + + modes.inRow.start_tag_handlers = { + html: 'startTagHtml', + td: 'startTagTableCell', + th: 'startTagTableCell', + caption: 'startTagTableOther', + col: 'startTagTableOther', + colgroup: 'startTagTableOther', + tbody: 'startTagTableOther', + tfoot: 'startTagTableOther', + thead: 'startTagTableOther', + tr: 'startTagTableOther', + '-default': 'startTagOther' + }; + + modes.inRow.end_tag_handlers = { + tr: 'endTagTr', + table: 'endTagTable', + tbody: 'endTagTableRowGroup', + tfoot: 'endTagTableRowGroup', + thead: 'endTagTableRowGroup', + body: 'endTagIgnore', + caption: 'endTagIgnore', + col: 'endTagIgnore', + colgroup: 'endTagIgnore', + html: 'endTagIgnore', + td: 'endTagIgnore', + th: 'endTagIgnore', + '-default': 'endTagOther' + }; + + modes.inRow.processCharacters = function(data) { + modes.inTable.processCharacters(data); + }; + + modes.inRow.startTagTableCell = function(name, attributes) { + tree.openElements.popUntilTableRowScopeMarker(); + tree.insertElement(name, attributes); + tree.setInsertionMode('inCell'); + tree.activeFormattingElements.push(Marker); + }; + + modes.inRow.startTagTableOther = function(name, attributes) { + var ignoreEndTag = this.ignoreEndTagTr(); + this.endTagTr('tr'); + // XXX how are we sure it's always ignored in the context case? + if (!ignoreEndTag) tree.insertionMode.processStartTag(name, attributes); + }; + + modes.inRow.startTagOther = function(name, attributes, selfClosing) { + modes.inTable.processStartTag(name, attributes, selfClosing); + }; + + modes.inRow.endTagTr = function(name) { + if (this.ignoreEndTagTr()) { + assert.ok(tree.context); + tree.parseError('unexpected-end-tag', {name: name}); + } else { + tree.openElements.popUntilTableRowScopeMarker(); + tree.popElement(); + tree.setInsertionMode('inTableBody'); + } + }; + + modes.inRow.endTagTable = function(name) { + var ignoreEndTag = this.ignoreEndTagTr(); + this.endTagTr('tr'); + // Reprocess the current tag if the tr end tag was not ignored + // XXX how are we sure it's always ignored in the context case? + if (!ignoreEndTag) tree.insertionMode.processEndTag(name); + }; + + modes.inRow.endTagTableRowGroup = function(name) { + if (tree.openElements.inTableScope(name)) { + this.endTagTr('tr'); + tree.insertionMode.processEndTag(name); + } else { + // context case + tree.parseError('unexpected-end-tag', {name: name}); + } + }; + + modes.inRow.endTagIgnore = function(name) { + tree.parseError("unexpected-end-tag-in-table-row", {name: name}); + }; + + modes.inRow.endTagOther = function(name) { + modes.inTable.processEndTag(name); + }; + + modes.inRow.ignoreEndTagTr = function() { + return !tree.openElements.inTableScope('tr'); + }; + + modes.afterAfterFrameset = Object.create(modes.base); + + modes.afterAfterFrameset.start_tag_handlers = { + html: 'startTagHtml', + noframes: 'startTagNoFrames', + '-default': 'startTagOther' + }; + + modes.afterAfterFrameset.processEOF = function() {}; + + modes.afterAfterFrameset.processComment = function(data) { + tree.insertComment(data, tree.document); + }; + + modes.afterAfterFrameset.processCharacters = function(buffer) { + var characters = buffer.takeRemaining(); + var whitespace = ""; + for (var i = 0; i < characters.length; i++) { + var ch = characters[i]; + if (isWhitespace(ch)) + whitespace += ch; + } + if (whitespace) { + tree.reconstructActiveFormattingElements(); + tree.insertText(whitespace); + } + if (whitespace.length < characters.length) + tree.parseError('expected-eof-but-got-char'); + }; + + modes.afterAfterFrameset.startTagNoFrames = function(name, attributes) { + modes.inHead.processStartTag(name, attributes); + }; + + modes.afterAfterFrameset.startTagOther = function(name, attributes, selfClosing) { + tree.parseError('expected-eof-but-got-start-tag', {name: name}); + }; + + modes.afterAfterFrameset.processEndTag = function(name, attributes) { + tree.parseError('expected-eof-but-got-end-tag', {name: name}); + }; + + modes.text = Object.create(modes.base); + + modes.text.start_tag_handlers = { + '-default': 'startTagOther' + }; + + modes.text.end_tag_handlers = { + script: 'endTagScript', + '-default': 'endTagOther' + }; + + modes.text.processCharacters = function(buffer) { + if (tree.shouldSkipLeadingNewline) { + tree.shouldSkipLeadingNewline = false; + buffer.skipAtMostOneLeadingNewline(); + } + var data = buffer.takeRemaining(); + if (!data) + return; + tree.insertText(data); + }; + + modes.text.processEOF = function() { + tree.parseError("expected-named-closing-tag-but-got-eof", + {name: tree.currentStackItem().localName}); + tree.openElements.pop(); + tree.setInsertionMode(tree.originalInsertionMode); + tree.insertionMode.processEOF(); + }; + + modes.text.startTagOther = function(name) { + throw "Tried to process start tag " + name + " in RCDATA/RAWTEXT mode"; + }; + + modes.text.endTagScript = function(name) { + var node = tree.openElements.pop(); + assert.ok(node.localName == 'script'); + tree.setInsertionMode(tree.originalInsertionMode); + }; + + modes.text.endTagOther = function(name) { + tree.openElements.pop(); + tree.setInsertionMode(tree.originalInsertionMode); + }; +} + +TreeBuilder.prototype.setInsertionMode = function(name) { + this.insertionMode = this.insertionModes[name]; + this.insertionModeName = name; +}; + +/** + * Adoption agency algorithm (http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoption-agency-algorithm) + * @param {String} name A tag name subject for which the algorithm is being run + * @return {Boolean} Returns false if the algorithm was aborted + */ +TreeBuilder.prototype.adoptionAgencyEndTag = function(name) { + var outerIterationLimit = 8; + var innerIterationLimit = 3; + var formattingElement; + + function isActiveFormattingElement(el) { + return el === formattingElement; + } + + var outerLoopCounter = 0; + + while (outerLoopCounter++ < outerIterationLimit) { + // 4. + formattingElement = this.elementInActiveFormattingElements(name); + + if (!formattingElement || (this.openElements.contains(formattingElement) && !this.openElements.inScope(formattingElement.localName))) { + this.parseError('adoption-agency-1.1', {name: name}); + return false; + } + if (!this.openElements.contains(formattingElement)) { + this.parseError('adoption-agency-1.2', {name: name}); + this.removeElementFromActiveFormattingElements(formattingElement); + return true; + } + if (!this.openElements.inScope(formattingElement.localName)) { + this.parseError('adoption-agency-4.4', {name: name}); + } + + if (formattingElement != this.currentStackItem()) { + this.parseError('adoption-agency-1.3', {name: name}); + } + + // Start of the adoption agency algorithm proper + // todo ElementStack + var furthestBlock = this.openElements.furthestBlockForFormattingElement(formattingElement.node); + + if (!furthestBlock) { + this.openElements.remove_openElements_until(isActiveFormattingElement); + this.removeElementFromActiveFormattingElements(formattingElement); + return true; + } + + var afeIndex = this.openElements.elements.indexOf(formattingElement); + var commonAncestor = this.openElements.item(afeIndex - 1); + + var bookmark = this.activeFormattingElements.indexOf(formattingElement); + + var node = furthestBlock; + var lastNode = furthestBlock; + var index = this.openElements.elements.indexOf(node); + + var innerLoopCounter = 0; + while (innerLoopCounter++ < innerIterationLimit) { + index -= 1; + node = this.openElements.item(index); + if (this.activeFormattingElements.indexOf(node) < 0) { + this.openElements.elements.splice(index, 1); + continue; + } + if (node == formattingElement) + break; + + if (lastNode == furthestBlock) + bookmark = this.activeFormattingElements.indexOf(node) + 1; + + var clone = this.createElement(node.namespaceURI, node.localName, node.attributes); + var newNode = new StackItem(node.namespaceURI, node.localName, node.attributes, clone); + + this.activeFormattingElements[this.activeFormattingElements.indexOf(node)] = newNode; + this.openElements.elements[this.openElements.elements.indexOf(node)] = newNode; + + node = newNode; + this.detachFromParent(lastNode.node); + this.attachNode(lastNode.node, node.node); + lastNode = node; + } + + this.detachFromParent(lastNode.node); + if (commonAncestor.isFosterParenting()) { + this.insertIntoFosterParent(lastNode.node); + } else { + this.attachNode(lastNode.node, commonAncestor.node); + } + + var clone = this.createElement("http://www.w3.org/1999/xhtml", formattingElement.localName, formattingElement.attributes); + var formattingClone = new StackItem(formattingElement.namespaceURI, formattingElement.localName, formattingElement.attributes, clone); + + this.reparentChildren(furthestBlock.node, clone); + this.attachNode(clone, furthestBlock.node); + + this.removeElementFromActiveFormattingElements(formattingElement); + this.activeFormattingElements.splice(Math.min(bookmark, this.activeFormattingElements.length), 0, formattingClone); + + this.openElements.remove(formattingElement); + this.openElements.elements.splice(this.openElements.elements.indexOf(furthestBlock) + 1, 0, formattingClone); + } + + return true; +}; + +TreeBuilder.prototype.start = function() { + throw "Not mplemented"; +}; + +TreeBuilder.prototype.startTokenization = function(tokenizer) { + this.tokenizer = tokenizer; + this.compatMode = "no quirks"; + this.originalInsertionMode = "initial"; + this.framesetOk = true; + this.openElements = new ElementStack(); + this.activeFormattingElements = []; + this.start(); + if (this.context) { + switch(this.context) { + case 'title': + case 'textarea': + this.tokenizer.setState(Tokenizer.RCDATA); + break; + case 'style': + case 'xmp': + case 'iframe': + case 'noembed': + case 'noframes': + this.tokenizer.setState(Tokenizer.RAWTEXT); + break; + case 'script': + this.tokenizer.setState(Tokenizer.SCRIPT_DATA); + break; + case 'noscript': + if (this.scriptingEnabled) + this.tokenizer.setState(Tokenizer.RAWTEXT); + break; + case 'plaintext': + this.tokenizer.setState(Tokenizer.PLAINTEXT); + break; + } + this.insertHtmlElement(); + this.resetInsertionMode(); + // todo form pointer + } else { + this.setInsertionMode('initial'); + } +}; + +TreeBuilder.prototype.processToken = function(token) { + this.selfClosingFlagAcknowledged = false; + + var currentNode = this.openElements.top || null; + var insertionMode; + if (!currentNode || !currentNode.isForeign() || + (currentNode.isMathMLTextIntegrationPoint() && + ((token.type == 'StartTag' && + !(token.name in {mglyph:0, malignmark:0})) || + (token.type === 'Characters')) + ) || + (currentNode.namespaceURI == "http://www.w3.org/1998/Math/MathML" && + currentNode.localName == 'annotation-xml' && + token.type == 'StartTag' && token.name == 'svg' + ) || + (currentNode.isHtmlIntegrationPoint() && + token.type in {StartTag:0, Characters:0} + ) || + token.type == 'EOF' + ) { + insertionMode = this.insertionMode; + } else { + insertionMode = this.insertionModes.inForeignContent; + } + switch(token.type) { + case 'Characters': + var buffer = new CharacterBuffer(token.data); + insertionMode.processCharacters(buffer); + break; + case 'Comment': + insertionMode.processComment(token.data); + break; + case 'StartTag': + insertionMode.processStartTag(token.name, token.data, token.selfClosing); + break; + case 'EndTag': + insertionMode.processEndTag(token.name); + break; + case 'Doctype': + insertionMode.processDoctype(token.name, token.publicId, token.systemId, token.forceQuirks); + break; + case 'EOF': + insertionMode.processEOF(); + break; + } +}; + +/** + * + * @return {Boolean} + */ +TreeBuilder.prototype.isCdataSectionAllowed = function() { + return this.openElements.length > 0 && this.currentStackItem().isForeign(); +}; + +/** + * + * @return {Boolean} + */ +TreeBuilder.prototype.isSelfClosingFlagAcknowledged = function() { + return this.selfClosingFlagAcknowledged; +}; + +TreeBuilder.prototype.createElement = function(namespaceURI, localName, attributes) { + throw new Error("Not implemented"); +}; + +TreeBuilder.prototype.attachNode = function(child, parent) { + throw new Error("Not implemented"); +}; + +TreeBuilder.prototype.attachNodeToFosterParent = function(child, table, stackParent) { + throw new Error("Not implemented"); +}; + +TreeBuilder.prototype.detachFromParent = function(node) { + throw new Error("Not implemented"); +}; + +TreeBuilder.prototype.addAttributesToElement = function(element, attributes) { + throw new Error("Not implemented"); +}; + +TreeBuilder.prototype.insertHtmlElement = function(attributes) { + var root = this.createElement("http://www.w3.org/1999/xhtml", 'html', attributes); + this.attachNode(root, this.document); + this.openElements.pushHtmlElement(new StackItem("http://www.w3.org/1999/xhtml", 'html', attributes, root)); + return root; +}; + +TreeBuilder.prototype.insertHeadElement = function(attributes) { + var element = this.createElement("http://www.w3.org/1999/xhtml", "head", attributes); + this.head = new StackItem("http://www.w3.org/1999/xhtml", "head", attributes, element); + this.attachNode(element, this.openElements.top.node); + this.openElements.pushHeadElement(this.head); + return element; +}; + +TreeBuilder.prototype.insertBodyElement = function(attributes) { + var element = this.createElement("http://www.w3.org/1999/xhtml", "body", attributes); + this.attachNode(element, this.openElements.top.node); + this.openElements.pushBodyElement(new StackItem("http://www.w3.org/1999/xhtml", "body", attributes, element)); + return element; +}; + +TreeBuilder.prototype.insertIntoFosterParent = function(node) { + var tableIndex = this.openElements.findIndex('table'); + var tableElement = this.openElements.item(tableIndex).node; + if (tableIndex === 0) + return this.attachNode(node, tableElement); + this.attachNodeToFosterParent(node, tableElement, this.openElements.item(tableIndex - 1).node); +}; + +TreeBuilder.prototype.insertElement = function(name, attributes, namespaceURI, selfClosing) { + if (!namespaceURI) + namespaceURI = "http://www.w3.org/1999/xhtml"; + var element = this.createElement(namespaceURI, name, attributes); + if (this.shouldFosterParent()) + this.insertIntoFosterParent(element); + else + this.attachNode(element, this.openElements.top.node); + if (!selfClosing) + this.openElements.push(new StackItem(namespaceURI, name, attributes, element)); +}; + +TreeBuilder.prototype.insertFormattingElement = function(name, attributes) { + this.insertElement(name, attributes, "http://www.w3.org/1999/xhtml"); + this.appendElementToActiveFormattingElements(this.currentStackItem()); +}; + +TreeBuilder.prototype.insertSelfClosingElement = function(name, attributes) { + this.selfClosingFlagAcknowledged = true; + this.insertElement(name, attributes, "http://www.w3.org/1999/xhtml", true); +}; + +TreeBuilder.prototype.insertForeignElement = function(name, attributes, namespaceURI, selfClosing) { + if (selfClosing) + this.selfClosingFlagAcknowledged = true; + this.insertElement(name, attributes, namespaceURI, selfClosing); +}; + +TreeBuilder.prototype.insertComment = function(data, parent) { + throw new Error("Not implemented"); +}; + +TreeBuilder.prototype.insertDoctype = function(name, publicId, systemId) { + throw new Error("Not implemented"); +}; + +TreeBuilder.prototype.insertText = function(data) { + throw new Error("Not implemented"); +}; + +/** + * Returns topmost open element + * @return {StackItem} + */ +TreeBuilder.prototype.currentStackItem = function() { + return this.openElements.top; +}; + +/** + * Populates current open element + * @return {StackItem} + */ +TreeBuilder.prototype.popElement = function() { + return this.openElements.pop(); +}; + +/** + * Returns true if redirect is required and current open element causes foster parenting + * @return {Boolean} + */ +TreeBuilder.prototype.shouldFosterParent = function() { + return this.redirectAttachToFosterParent && this.currentStackItem().isFosterParenting(); +}; + +/** + * Implements http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#closing-elements-that-have-implied-end-tags + * @param {String} [exclude] Ignore specific tag name + */ +TreeBuilder.prototype.generateImpliedEndTags = function(exclude) { + // FIXME get rid of the recursion + var name = this.openElements.top.localName; + if (['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'].indexOf(name) != -1 && name != exclude) { + this.popElement(); + this.generateImpliedEndTags(exclude); + } +}; + +/** + * Performs http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#reconstruct-the-active-formatting-elements + */ +TreeBuilder.prototype.reconstructActiveFormattingElements = function() { + // Within this algorithm the order of steps decribed in the specification + // is not quite the same as the order of steps in the code. It should still + // do the same though. + + // Step 1: stop if there's nothing to do + if (this.activeFormattingElements.length === 0) + return; + + // Step 2 and 3: start with the last element + var i = this.activeFormattingElements.length - 1; + var entry = this.activeFormattingElements[i]; + if (entry == Marker || this.openElements.contains(entry)) + return; + + while (entry != Marker && !this.openElements.contains(entry)) { + i -= 1; + entry = this.activeFormattingElements[i]; + if (!entry) + break; + } + + while (true) { + i += 1; + entry = this.activeFormattingElements[i]; + this.insertElement(entry.localName, entry.attributes); + var element = this.currentStackItem(); + this.activeFormattingElements[i] = element; + if (element == this.activeFormattingElements[this.activeFormattingElements.length -1]) + break; + } + +}; + +/** + * + * @param {StackItem} item + */ +TreeBuilder.prototype.ensureNoahsArkCondition = function(item) { + var kNoahsArkCapacity = 3; + if (this.activeFormattingElements.length < kNoahsArkCapacity) + return; + var candidates = []; + var newItemAttributeCount = item.attributes.length; + for (var i = this.activeFormattingElements.length - 1; i >= 0; i--) { + var candidate = this.activeFormattingElements[i]; + if (candidate === Marker) + break; + if (item.localName !== candidate.localName || item.namespaceURI !== candidate.namespaceURI) + continue; + if (candidate.attributes.length != newItemAttributeCount) + continue; + candidates.push(candidate); + } + if (candidates.length < kNoahsArkCapacity) + return; + + var remainingCandidates = []; + var attributes = item.attributes; + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + + for (var j = 0; j < candidates.length; j++) { + var candidate = candidates[j]; + var candidateAttribute = getAttribute(candidate, attribute.nodeName); + if (candidateAttribute && candidateAttribute.nodeValue === attribute.nodeValue) + remainingCandidates.push(candidate); + } + if (remainingCandidates.length < kNoahsArkCapacity) + return; + candidates = remainingCandidates; + remainingCandidates = []; + } + // Inductively, we shouldn't spin this loop very many times. It's possible, + // however, that we wil spin the loop more than once because of how the + // formatting element list gets permuted. + for (var i = kNoahsArkCapacity - 1; i < candidates.length; i++) + this.removeElementFromActiveFormattingElements(candidates[i]); +}; + +/** + * + * @param {StackItem} item + */ +TreeBuilder.prototype.appendElementToActiveFormattingElements = function(item) { + this.ensureNoahsArkCondition(item); + this.activeFormattingElements.push(item); +}; + +/** + * + * @param {StackItem} item + */ +TreeBuilder.prototype.removeElementFromActiveFormattingElements = function(item) { + var index = this.activeFormattingElements.indexOf(item); + if (index >= 0) + this.activeFormattingElements.splice(index, 1); +}; + +TreeBuilder.prototype.elementInActiveFormattingElements = function(name) { + var els = this.activeFormattingElements; + for (var i = els.length - 1; i >= 0; i--) { + if (els[i] == Marker) break; + if (els[i].localName == name) return els[i]; + } + return false; +}; + +TreeBuilder.prototype.clearActiveFormattingElements = function() { + while (!(this.activeFormattingElements.length === 0 || this.activeFormattingElements.pop() == Marker)); +}; + +TreeBuilder.prototype.reparentChildren = function(oldParent, newParent) { + throw new Error("Not implemented"); +}; + +/** + * + * @param {String} context A context element name for fragment parsing + */ +TreeBuilder.prototype.setFragmentContext = function(context) { + // Steps 4.2-4.6 of the HTML5 Fragment Case parsing algorithm: + // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#fragment-case + // For efficiency, we skip step 4.2 ("Let root be a new html element with no attributes") + // and instead use the DocumentFragment as a root node. + //m_tree.openElements()->pushRootNode(HTMLStackItem::create(fragment, HTMLStackItem::ItemForDocumentFragmentNode)); + this.context = context; +}; + +/** + * + * @param {String} code + * @param {Object} [args] + */ +TreeBuilder.prototype.parseError = function(code, args) { + // FIXME: this.errors.push([this.tokenizer.position, code, data]); + if (!this.errorHandler) + return; + var message = formatMessage(messages[code], args); + this.errorHandler.error(message, this.tokenizer._inputStream.location(), code); +}; + +/** + * Resets the insertion mode (http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#reset-the-insertion-mode-appropriately) + */ +TreeBuilder.prototype.resetInsertionMode = function() { + var last = false; + var node = null; + for (var i = this.openElements.length - 1; i >= 0; i--) { + node = this.openElements.item(i); + if (i === 0) { + assert.ok(this.context); + last = true; + node = new StackItem("http://www.w3.org/1999/xhtml", this.context, [], null); + } + + if (node.namespaceURI === "http://www.w3.org/1999/xhtml") { + // TODO template tag + if (node.localName === 'select') + // FIXME handle inSelectInTable + return this.setInsertionMode('inSelect'); + if (node.localName === 'td' || node.localName === 'th') + return this.setInsertionMode('inCell'); + if (node.localName === 'tr') + return this.setInsertionMode('inRow'); + if (node.localName === 'tbody' || node.localName === 'thead' || node.localName === 'tfoot') + return this.setInsertionMode('inTableBody'); + if (node.localName === 'caption') + return this.setInsertionMode('inCaption'); + if (node.localName === 'colgroup') + return this.setInsertionMode('inColumnGroup'); + if (node.localName === 'table') + return this.setInsertionMode('inTable'); + if (node.localName === 'head' && !last) + return this.setInsertionMode('inHead'); + if (node.localName === 'body') + return this.setInsertionMode('inBody'); + if (node.localName === 'frameset') + return this.setInsertionMode('inFrameset'); + if (node.localName === 'html') + if (!this.openElements.headElement) + return this.setInsertionMode('beforeHead'); + else + return this.setInsertionMode('afterHead'); + } + + if (last) + return this.setInsertionMode('inBody'); + } +}; + +TreeBuilder.prototype.processGenericRCDATAStartTag = function(name, attributes) { + this.insertElement(name, attributes); + this.tokenizer.setState(Tokenizer.RCDATA); + this.originalInsertionMode = this.insertionModeName; + this.setInsertionMode('text'); +}; + +TreeBuilder.prototype.processGenericRawTextStartTag = function(name, attributes) { + this.insertElement(name, attributes); + this.tokenizer.setState(Tokenizer.RAWTEXT); + this.originalInsertionMode = this.insertionModeName; + this.setInsertionMode('text'); +}; + +TreeBuilder.prototype.adjustMathMLAttributes = function(attributes) { + attributes.forEach(function(a) { + a.namespaceURI = "http://www.w3.org/1998/Math/MathML"; + if (constants.MATHMLAttributeMap[a.nodeName]) + a.nodeName = constants.MATHMLAttributeMap[a.nodeName]; + }); + return attributes; +}; + +TreeBuilder.prototype.adjustSVGTagNameCase = function(name) { + return constants.SVGTagMap[name] || name; +}; + +TreeBuilder.prototype.adjustSVGAttributes = function(attributes) { + attributes.forEach(function(a) { + a.namespaceURI = "http://www.w3.org/2000/svg"; + if (constants.SVGAttributeMap[a.nodeName]) + a.nodeName = constants.SVGAttributeMap[a.nodeName]; + }); + return attributes; +}; + +TreeBuilder.prototype.adjustForeignAttributes = function(attributes) { + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + var adjusted = constants.ForeignAttributeMap[attribute.nodeName]; + if (adjusted) { + attribute.nodeName = adjusted.localName; + attribute.prefix = adjusted.prefix; + attribute.namespaceURI = adjusted.namespaceURI; + } + } + return attributes; +}; + +function formatMessage(format, args) { + return format.replace(new RegExp('{[0-9a-z-]+}', 'gi'), function(match) { + return args[match.slice(1, -1)] || match; + }); +} + +exports.TreeBuilder = TreeBuilder; + +}, +{"./ElementStack":1,"./StackItem":4,"./Tokenizer":5,"./constants":7,"./messages.json":8,"assert":13,"events":16}], +7:[function(_dereq_,module,exports){ +exports.SVGTagMap = { + "altglyph": "altGlyph", + "altglyphdef": "altGlyphDef", + "altglyphitem": "altGlyphItem", + "animatecolor": "animateColor", + "animatemotion": "animateMotion", + "animatetransform": "animateTransform", + "clippath": "clipPath", + "feblend": "feBlend", + "fecolormatrix": "feColorMatrix", + "fecomponenttransfer": "feComponentTransfer", + "fecomposite": "feComposite", + "feconvolvematrix": "feConvolveMatrix", + "fediffuselighting": "feDiffuseLighting", + "fedisplacementmap": "feDisplacementMap", + "fedistantlight": "feDistantLight", + "feflood": "feFlood", + "fefunca": "feFuncA", + "fefuncb": "feFuncB", + "fefuncg": "feFuncG", + "fefuncr": "feFuncR", + "fegaussianblur": "feGaussianBlur", + "feimage": "feImage", + "femerge": "feMerge", + "femergenode": "feMergeNode", + "femorphology": "feMorphology", + "feoffset": "feOffset", + "fepointlight": "fePointLight", + "fespecularlighting": "feSpecularLighting", + "fespotlight": "feSpotLight", + "fetile": "feTile", + "feturbulence": "feTurbulence", + "foreignobject": "foreignObject", + "glyphref": "glyphRef", + "lineargradient": "linearGradient", + "radialgradient": "radialGradient", + "textpath": "textPath" +}; + +exports.MATHMLAttributeMap = { + definitionurl: 'definitionURL' +}; + +exports.SVGAttributeMap = { + attributename: 'attributeName', + attributetype: 'attributeType', + basefrequency: 'baseFrequency', + baseprofile: 'baseProfile', + calcmode: 'calcMode', + clippathunits: 'clipPathUnits', + contentscripttype: 'contentScriptType', + contentstyletype: 'contentStyleType', + diffuseconstant: 'diffuseConstant', + edgemode: 'edgeMode', + externalresourcesrequired: 'externalResourcesRequired', + filterres: 'filterRes', + filterunits: 'filterUnits', + glyphref: 'glyphRef', + gradienttransform: 'gradientTransform', + gradientunits: 'gradientUnits', + kernelmatrix: 'kernelMatrix', + kernelunitlength: 'kernelUnitLength', + keypoints: 'keyPoints', + keysplines: 'keySplines', + keytimes: 'keyTimes', + lengthadjust: 'lengthAdjust', + limitingconeangle: 'limitingConeAngle', + markerheight: 'markerHeight', + markerunits: 'markerUnits', + markerwidth: 'markerWidth', + maskcontentunits: 'maskContentUnits', + maskunits: 'maskUnits', + numoctaves: 'numOctaves', + pathlength: 'pathLength', + patterncontentunits: 'patternContentUnits', + patterntransform: 'patternTransform', + patternunits: 'patternUnits', + pointsatx: 'pointsAtX', + pointsaty: 'pointsAtY', + pointsatz: 'pointsAtZ', + preservealpha: 'preserveAlpha', + preserveaspectratio: 'preserveAspectRatio', + primitiveunits: 'primitiveUnits', + refx: 'refX', + refy: 'refY', + repeatcount: 'repeatCount', + repeatdur: 'repeatDur', + requiredextensions: 'requiredExtensions', + requiredfeatures: 'requiredFeatures', + specularconstant: 'specularConstant', + specularexponent: 'specularExponent', + spreadmethod: 'spreadMethod', + startoffset: 'startOffset', + stddeviation: 'stdDeviation', + stitchtiles: 'stitchTiles', + surfacescale: 'surfaceScale', + systemlanguage: 'systemLanguage', + tablevalues: 'tableValues', + targetx: 'targetX', + targety: 'targetY', + textlength: 'textLength', + viewbox: 'viewBox', + viewtarget: 'viewTarget', + xchannelselector: 'xChannelSelector', + ychannelselector: 'yChannelSelector', + zoomandpan: 'zoomAndPan' +}; + +exports.ForeignAttributeMap = { + "xlink:actuate": {prefix: "xlink", localName: "actuate", namespaceURI: "http://www.w3.org/1999/xlink"}, + "xlink:arcrole": {prefix: "xlink", localName: "arcrole", namespaceURI: "http://www.w3.org/1999/xlink"}, + "xlink:href": {prefix: "xlink", localName: "href", namespaceURI: "http://www.w3.org/1999/xlink"}, + "xlink:role": {prefix: "xlink", localName: "role", namespaceURI: "http://www.w3.org/1999/xlink"}, + "xlink:show": {prefix: "xlink", localName: "show", namespaceURI: "http://www.w3.org/1999/xlink"}, + "xlink:title": {prefix: "xlink", localName: "title", namespaceURI: "http://www.w3.org/1999/xlink"}, + "xlink:type": {prefix: "xlink", localName: "title", namespaceURI: "http://www.w3.org/1999/xlink"}, + "xml:base": {prefix: "xml", localName: "base", namespaceURI: "http://www.w3.org/XML/1998/namespace"}, + "xml:lang": {prefix: "xml", localName: "lang", namespaceURI: "http://www.w3.org/XML/1998/namespace"}, + "xml:space": {prefix: "xml", localName: "space", namespaceURI: "http://www.w3.org/XML/1998/namespace"}, + "xmlns": {prefix: null, localName: "xmlns", namespaceURI: "http://www.w3.org/2000/xmlns/"}, + "xmlns:xlink": {prefix: "xmlns", localName: "xlink", namespaceURI: "http://www.w3.org/2000/xmlns/"}, +}; +}, +{}], +8:[function(_dereq_,module,exports){ +module.exports={ + "null-character": + "Null character in input stream, replaced with U+FFFD.", + "invalid-codepoint": + "Invalid codepoint in stream", + "incorrectly-placed-solidus": + "Solidus (/) incorrectly placed in tag.", + "incorrect-cr-newline-entity": + "Incorrect CR newline entity, replaced with LF.", + "illegal-windows-1252-entity": + "Entity used with illegal number (windows-1252 reference).", + "cant-convert-numeric-entity": + "Numeric entity couldn't be converted to character (codepoint U+{charAsInt}).", + "invalid-numeric-entity-replaced": + "Numeric entity represents an illegal codepoint. Expanded to the C1 controls range.", + "numeric-entity-without-semicolon": + "Numeric entity didn't end with ';'.", + "expected-numeric-entity-but-got-eof": + "Numeric entity expected. Got end of file instead.", + "expected-numeric-entity": + "Numeric entity expected but none found.", + "named-entity-without-semicolon": + "Named entity didn't end with ';'.", + "expected-named-entity": + "Named entity expected. Got none.", + "attributes-in-end-tag": + "End tag contains unexpected attributes.", + "self-closing-flag-on-end-tag": + "End tag contains unexpected self-closing flag.", + "bare-less-than-sign-at-eof": + "End of file after <.", + "expected-tag-name-but-got-right-bracket": + "Expected tag name. Got '>' instead.", + "expected-tag-name-but-got-question-mark": + "Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)", + "expected-tag-name": + "Expected tag name. Got something else instead.", + "expected-closing-tag-but-got-right-bracket": + "Expected closing tag. Got '>' instead. Ignoring '</>'.", + "expected-closing-tag-but-got-eof": + "Expected closing tag. Unexpected end of file.", + "expected-closing-tag-but-got-char": + "Expected closing tag. Unexpected character '{data}' found.", + "eof-in-tag-name": + "Unexpected end of file in the tag name.", + "expected-attribute-name-but-got-eof": + "Unexpected end of file. Expected attribute name instead.", + "eof-in-attribute-name": + "Unexpected end of file in attribute name.", + "invalid-character-in-attribute-name": + "Invalid character in attribute name.", + "duplicate-attribute": + "Dropped duplicate attribute '{name}' on tag.", + "expected-end-of-tag-but-got-eof": + "Unexpected end of file. Expected = or end of tag.", + "expected-attribute-value-but-got-eof": + "Unexpected end of file. Expected attribute value.", + "expected-attribute-value-but-got-right-bracket": + "Expected attribute value. Got '>' instead.", + "unexpected-character-in-unquoted-attribute-value": + "Unexpected character in unquoted attribute", + "invalid-character-after-attribute-name": + "Unexpected character after attribute name.", + "unexpected-character-after-attribute-value": + "Unexpected character after attribute value.", + "eof-in-attribute-value-double-quote": + "Unexpected end of file in attribute value (\").", + "eof-in-attribute-value-single-quote": + "Unexpected end of file in attribute value (').", + "eof-in-attribute-value-no-quotes": + "Unexpected end of file in attribute value.", + "eof-after-attribute-value": + "Unexpected end of file after attribute value.", + "unexpected-eof-after-solidus-in-tag": + "Unexpected end of file in tag. Expected >.", + "unexpected-character-after-solidus-in-tag": + "Unexpected character after / in tag. Expected >.", + "expected-dashes-or-doctype": + "Expected '--' or 'DOCTYPE'. Not found.", + "unexpected-bang-after-double-dash-in-comment": + "Unexpected ! after -- in comment.", + "incorrect-comment": + "Incorrect comment.", + "eof-in-comment": + "Unexpected end of file in comment.", + "eof-in-comment-end-dash": + "Unexpected end of file in comment (-).", + "unexpected-dash-after-double-dash-in-comment": + "Unexpected '-' after '--' found in comment.", + "eof-in-comment-double-dash": + "Unexpected end of file in comment (--).", + "eof-in-comment-end-bang-state": + "Unexpected end of file in comment.", + "unexpected-char-in-comment": + "Unexpected character in comment found.", + "need-space-after-doctype": + "No space after literal string 'DOCTYPE'.", + "expected-doctype-name-but-got-right-bracket": + "Unexpected > character. Expected DOCTYPE name.", + "expected-doctype-name-but-got-eof": + "Unexpected end of file. Expected DOCTYPE name.", + "eof-in-doctype-name": + "Unexpected end of file in DOCTYPE name.", + "eof-in-doctype": + "Unexpected end of file in DOCTYPE.", + "expected-space-or-right-bracket-in-doctype": + "Expected space or '>'. Got '{data}'.", + "unexpected-end-of-doctype": + "Unexpected end of DOCTYPE.", + "unexpected-char-in-doctype": + "Unexpected character in DOCTYPE.", + "eof-in-bogus-doctype": + "Unexpected end of file in bogus doctype.", + "eof-in-innerhtml": + "Unexpected EOF in inner html mode.", + "unexpected-doctype": + "Unexpected DOCTYPE. Ignored.", + "non-html-root": + "html needs to be the first start tag.", + "expected-doctype-but-got-eof": + "Unexpected End of file. Expected DOCTYPE.", + "unknown-doctype": + "Erroneous DOCTYPE. Expected <!DOCTYPE html>.", + "quirky-doctype": + "Quirky doctype. Expected <!DOCTYPE html>.", + "almost-standards-doctype": + "Almost standards mode doctype. Expected <!DOCTYPE html>.", + "obsolete-doctype": + "Obsolete doctype. Expected <!DOCTYPE html>.", + "expected-doctype-but-got-chars": + "Non-space characters found without seeing a doctype first. Expected e.g. <!DOCTYPE html>.", + "expected-doctype-but-got-start-tag": + "Start tag seen without seeing a doctype first. Expected e.g. <!DOCTYPE html>.", + "expected-doctype-but-got-end-tag": + "End tag seen without seeing a doctype first. Expected e.g. <!DOCTYPE html>.", + "end-tag-after-implied-root": + "Unexpected end tag ({name}) after the (implied) root element.", + "expected-named-closing-tag-but-got-eof": + "Unexpected end of file. Expected end tag ({name}).", + "two-heads-are-not-better-than-one": + "Unexpected start tag head in existing head. Ignored.", + "unexpected-end-tag": + "Unexpected end tag ({name}). Ignored.", + "unexpected-implied-end-tag": + "End tag {name} implied, but there were open elements.", + "unexpected-start-tag-out-of-my-head": + "Unexpected start tag ({name}) that can be in head. Moved.", + "unexpected-start-tag": + "Unexpected start tag ({name}).", + "missing-end-tag": + "Missing end tag ({name}).", + "missing-end-tags": + "Missing end tags ({name}).", + "unexpected-start-tag-implies-end-tag": + "Unexpected start tag ({startName}) implies end tag ({endName}).", + "unexpected-start-tag-treated-as": + "Unexpected start tag ({originalName}). Treated as {newName}.", + "deprecated-tag": + "Unexpected start tag {name}. Don't use it!", + "unexpected-start-tag-ignored": + "Unexpected start tag {name}. Ignored.", + "expected-one-end-tag-but-got-another": + "Unexpected end tag ({gotName}). Missing end tag ({expectedName}).", + "end-tag-too-early": + "End tag ({name}) seen too early. Expected other end tag.", + "end-tag-too-early-named": + "Unexpected end tag ({gotName}). Expected end tag ({expectedName}.", + "end-tag-too-early-ignored": + "End tag ({name}) seen too early. Ignored.", + "adoption-agency-1.1": + "End tag ({name}) violates step 1, paragraph 1 of the adoption agency algorithm.", + "adoption-agency-1.2": + "End tag ({name}) violates step 1, paragraph 2 of the adoption agency algorithm.", + "adoption-agency-1.3": + "End tag ({name}) violates step 1, paragraph 3 of the adoption agency algorithm.", + "adoption-agency-4.4": + "End tag ({name}) violates step 4, paragraph 4 of the adoption agency algorithm.", + "unexpected-end-tag-treated-as": + "Unexpected end tag ({originalName}). Treated as {newName}.", + "no-end-tag": + "This element ({name}) has no end tag.", + "unexpected-implied-end-tag-in-table": + "Unexpected implied end tag ({name}) in the table phase.", + "unexpected-implied-end-tag-in-table-body": + "Unexpected implied end tag ({name}) in the table body phase.", + "unexpected-char-implies-table-voodoo": + "Unexpected non-space characters in table context caused voodoo mode.", + "unexpected-hidden-input-in-table": + "Unexpected input with type hidden in table context.", + "unexpected-form-in-table": + "Unexpected form in table context.", + "unexpected-start-tag-implies-table-voodoo": + "Unexpected start tag ({name}) in table context caused voodoo mode.", + "unexpected-end-tag-implies-table-voodoo": + "Unexpected end tag ({name}) in table context caused voodoo mode.", + "unexpected-cell-in-table-body": + "Unexpected table cell start tag ({name}) in the table body phase.", + "unexpected-cell-end-tag": + "Got table cell end tag ({name}) while required end tags are missing.", + "unexpected-end-tag-in-table-body": + "Unexpected end tag ({name}) in the table body phase. Ignored.", + "unexpected-implied-end-tag-in-table-row": + "Unexpected implied end tag ({name}) in the table row phase.", + "unexpected-end-tag-in-table-row": + "Unexpected end tag ({name}) in the table row phase. Ignored.", + "unexpected-select-in-select": + "Unexpected select start tag in the select phase treated as select end tag.", + "unexpected-input-in-select": + "Unexpected input start tag in the select phase.", + "unexpected-start-tag-in-select": + "Unexpected start tag token ({name}) in the select phase. Ignored.", + "unexpected-end-tag-in-select": + "Unexpected end tag ({name}) in the select phase. Ignored.", + "unexpected-table-element-start-tag-in-select-in-table": + "Unexpected table element start tag ({name}) in the select in table phase.", + "unexpected-table-element-end-tag-in-select-in-table": + "Unexpected table element end tag ({name}) in the select in table phase.", + "unexpected-char-after-body": + "Unexpected non-space characters in the after body phase.", + "unexpected-start-tag-after-body": + "Unexpected start tag token ({name}) in the after body phase.", + "unexpected-end-tag-after-body": + "Unexpected end tag token ({name}) in the after body phase.", + "unexpected-char-in-frameset": + "Unepxected characters in the frameset phase. Characters ignored.", + "unexpected-start-tag-in-frameset": + "Unexpected start tag token ({name}) in the frameset phase. Ignored.", + "unexpected-frameset-in-frameset-innerhtml": + "Unexpected end tag token (frameset in the frameset phase (innerHTML).", + "unexpected-end-tag-in-frameset": + "Unexpected end tag token ({name}) in the frameset phase. Ignored.", + "unexpected-char-after-frameset": + "Unexpected non-space characters in the after frameset phase. Ignored.", + "unexpected-start-tag-after-frameset": + "Unexpected start tag ({name}) in the after frameset phase. Ignored.", + "unexpected-end-tag-after-frameset": + "Unexpected end tag ({name}) in the after frameset phase. Ignored.", + "expected-eof-but-got-char": + "Unexpected non-space characters. Expected end of file.", + "expected-eof-but-got-start-tag": + "Unexpected start tag ({name}). Expected end of file.", + "expected-eof-but-got-end-tag": + "Unexpected end tag ({name}). Expected end of file.", + "unexpected-end-table-in-caption": + "Unexpected end table tag in caption. Generates implied end caption.", + "end-html-in-innerhtml": + "Unexpected html end tag in inner html mode.", + "eof-in-table": + "Unexpected end of file. Expected table content.", + "eof-in-script": + "Unexpected end of file. Expected script content.", + "non-void-element-with-trailing-solidus": + "Trailing solidus not allowed on element {name}.", + "unexpected-html-element-in-foreign-content": + "HTML start tag \"{name}\" in a foreign namespace context.", + "unexpected-start-tag-in-table": + "Unexpected {name}. Expected table content." +} +}, +{}], +9:[function(_dereq_,module,exports){ +var SAXTreeBuilder = _dereq_('./SAXTreeBuilder').SAXTreeBuilder; +var Tokenizer = _dereq_('../Tokenizer').Tokenizer; +var TreeParser = _dereq_('./TreeParser').TreeParser; + +function SAXParser() { + this.contentHandler = null; + this._errorHandler = null; + this._treeBuilder = new SAXTreeBuilder(); + this._tokenizer = new Tokenizer(this._treeBuilder); + this._scriptingEnabled = false; +} + +SAXParser.prototype.parse = function(source) { + this._tokenizer.tokenize(source); + var document = this._treeBuilder.document; + if (document) { + new TreeParser(this.contentHandler).parse(document); + } +}; + +SAXParser.prototype.parseFragment = function(source, context) { + this._treeBuilder.setFragmentContext(context); + this._tokenizer.tokenize(source); + var fragment = this._treeBuilder.getFragment(); + if (fragment) { + new TreeParser(this.contentHandler).parse(fragment); + } +}; + +Object.defineProperty(SAXParser.prototype, 'scriptingEnabled', { + get: function() { + return this._scriptingEnabled; + }, + set: function(value) { + this._scriptingEnabled = value; + this._treeBuilder.scriptingEnabled = value; + } +}); + +Object.defineProperty(SAXParser.prototype, 'errorHandler', { + get: function() { + return this._errorHandler; + }, + set: function(value) { + this._errorHandler = value; + this._treeBuilder.errorHandler = value; + } +}); + +exports.SAXParser = SAXParser; + +}, +{"../Tokenizer":5,"./SAXTreeBuilder":10,"./TreeParser":11}], +10:[function(_dereq_,module,exports){ +var util = _dereq_('util'); +var TreeBuilder = _dereq_('../TreeBuilder').TreeBuilder; + +function SAXTreeBuilder() { + TreeBuilder.call(this); +} + +util.inherits(SAXTreeBuilder, TreeBuilder); + +SAXTreeBuilder.prototype.start = function(tokenizer) { + this.document = new Document(this.tokenizer); +}; + +SAXTreeBuilder.prototype.end = function() { + this.document.endLocator = this.tokenizer; +}; + +SAXTreeBuilder.prototype.insertDoctype = function(name, publicId, systemId) { + var doctype = new DTD(this.tokenizer, name, publicId, systemId); + doctype.endLocator = this.tokenizer; + this.document.appendChild(doctype); +}; + +SAXTreeBuilder.prototype.createElement = function(namespaceURI, localName, attributes) { + var element = new Element(this.tokenizer, namespaceURI, localName, localName, attributes || []); + return element; +}; + +SAXTreeBuilder.prototype.insertComment = function(data, parent) { + if (!parent) + parent = this.currentStackItem(); + var comment = new Comment(this.tokenizer, data); + parent.appendChild(comment); +}; + +SAXTreeBuilder.prototype.appendCharacters = function(parent, data) { + var text = new Characters(this.tokenizer, data); + parent.appendChild(text); +}; + +SAXTreeBuilder.prototype.insertText = function(data) { + if (this.redirectAttachToFosterParent && this.openElements.top.isFosterParenting()) { + var tableIndex = this.openElements.findIndex('table'); + var tableItem = this.openElements.item(tableIndex); + var table = tableItem.node; + if (tableIndex === 0) { + return this.appendCharacters(table, data); + } + var text = new Characters(this.tokenizer, data); + var parent = table.parentNode; + if (parent) { + parent.insertBetween(text, table.previousSibling, table); + return; + } + var stackParent = this.openElements.item(tableIndex - 1).node; + stackParent.appendChild(text); + return; + } + this.appendCharacters(this.currentStackItem().node, data); +}; + +SAXTreeBuilder.prototype.attachNode = function(node, parent) { + parent.appendChild(node); +}; + +SAXTreeBuilder.prototype.attachNodeToFosterParent = function(child, table, stackParent) { + var parent = table.parentNode; + if (parent) + parent.insertBetween(child, table.previousSibling, table); + else + stackParent.appendChild(child); +}; + +SAXTreeBuilder.prototype.detachFromParent = function(element) { + element.detach(); +}; + +SAXTreeBuilder.prototype.reparentChildren = function(oldParent, newParent) { + newParent.appendChildren(oldParent.firstChild); +}; + +SAXTreeBuilder.prototype.getFragment = function() { + var fragment = new DocumentFragment(); + this.reparentChildren(this.openElements.rootNode, fragment); + return fragment; +}; + +function getAttribute(node, name) { + for (var i = 0; i < node.attributes.length; i++) { + var attribute = node.attributes[i]; + if (attribute.nodeName === name) + return attribute.nodeValue; + } +} + +SAXTreeBuilder.prototype.addAttributesToElement = function(element, attributes) { + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + if (!getAttribute(element, attribute.nodeName)) + element.attributes.push(attribute); + } +}; + +var NodeType = { + /** + * A CDATA section. + */ + CDATA: 1, + /** + * A run of characters. + */ + CHARACTERS: 2, + /** + * A comment. + */ + COMMENT: 3, + /** + * A document. + */ + DOCUMENT: 4, + /** + * A document fragment. + */ + DOCUMENT_FRAGMENT: 5, + /** + * A DTD. + */ + DTD: 6, + /** + * An element. + */ + ELEMENT: 7, + /** + * An entity. + */ + ENTITY: 8, + /** + * A run of ignorable whitespace. + */ + IGNORABLE_WHITESPACE: 9, + /** + * A processing instruction. + */ + PROCESSING_INSTRUCTION: 10, + /** + * A skipped entity. + */ + SKIPPED_ENTITY: 11 +}; +/** + * The common node superclass. + * @version $Id$ + * @author hsivonen + */ +function Node(locator) { + if (!locator) { + this.columnNumber = -1; + this.lineNumber = -1; + } else { + this.columnNumber = locator.columnNumber; + this.lineNumber = locator.lineNumber; + } + this.parentNode = null; + this.nextSibling = null; + this.firstChild = null; +} + +/** + * Visit the node. + * + * @param treeParser the visitor + * @throws SAXException if stuff goes wrong + */ +Node.prototype.visit = function(treeParser) { + throw new Error("Not Implemented"); +}; + +/** + * Revisit the node. + * + * @param treeParser the visitor + * @throws SAXException if stuff goes wrong + */ +Node.prototype.revisit = function(treeParser) { + return; +}; + + +// Subclass-specific accessors that are hoisted here to +// avoid casting. + +/** + * Detach this node from its parent. + */ +Node.prototype.detach = function() { + if (this.parentNode !== null) { + this.parentNode.removeChild(this); + this.parentNode = null; + } +}; + +Object.defineProperty(Node.prototype, 'previousSibling', { + get: function() { + var prev = null; + var next = this.parentNode.firstChild; + for(;;) { + if (this == next) { + return prev; + } + prev = next; + next = next.nextSibling; + } + } +}); + + +function ParentNode(locator) { + Node.call(this, locator); + this.lastChild = null; + this._endLocator = null; +} + +ParentNode.prototype = Object.create(Node.prototype); + +/** + * Insert a new child before a pre-existing child and return the newly inserted child. + * @param child the new child + * @param sibling the existing child before which to insert (must be a child of this node) or <code>null</code> to append + * @return <code>child</code> + */ +ParentNode.prototype.insertBefore = function(child, sibling) { + //assert sibling == null || this == sibling.getParentNode(); + if (!sibling) { + return this.appendChild(child); + } + child.detach(); + child.parentNode = this; + if (this.firstChild == sibling) { + child.nextSibling = sibling; + this.firstChild = child; + } else { + var prev = this.firstChild; + var next = this.firstChild.nextSibling; + while (next != sibling) { + prev = next; + next = next.nextSibling; + } + prev.nextSibling = child; + child.nextSibling = next; + } + return child; +}; + +ParentNode.prototype.insertBetween = function(child, prev, next) { + // assert prev == null || this == prev.getParentNode(); + // assert next == null || this == next.getParentNode(); + // assert prev != null || next == firstChild; + // assert next != null || prev == lastChild; + // assert prev == null || next == null || prev.getNextSibling() == next; + if (!next) { + return this.appendChild(child); + } + child.detach(); + child.parentNode = this; + child.nextSibling = next; + if (!prev) { + firstChild = child; + } else { + prev.nextSibling = child; + } + return child; +}; + +/** + * Append a child to this node and return the child. + * + * @param child the child to append. + * @return <code>child</code> + */ +ParentNode.prototype.appendChild = function(child) { + child.detach(); + child.parentNode = this; + if (!this.firstChild) { + this.firstChild = child; + } else { + this.lastChild.nextSibling = child; + } + this.lastChild = child; + return child; +}; + +/** + * Append the children of another node to this node removing them from the other node . + * @param parent the other node whose children to append to this one + */ +ParentNode.prototype.appendChildren = function(parent) { + var child = parent.firstChild; + if (!child) { + return; + } + var another = parent; + if (!this.firstChild) { + this.firstChild = child; + } else { + this.lastChild.nextSibling = child; + } + this.lastChild = another.lastChild; + do { + child.parentNode = this; + } while ((child = child.nextSibling)); + another.firstChild = null; + another.lastChild = null; +}; + +/** + * Remove a child from this node. + * @param node the child to remove + */ +ParentNode.prototype.removeChild = function(node) { + //assert this == node.getParentNode(); + if (this.firstChild == node) { + this.firstChild = node.nextSibling; + if (this.lastChild == node) { + this.lastChild = null; + } + } else { + var prev = this.firstChild; + var next = this.firstChild.nextSibling; + while (next != node) { + prev = next; + next = next.nextSibling; + } + prev.nextSibling = node.nextSibling; + if (this.lastChild == node) { + this.lastChild = prev; + } + } + node.parentNode = null; + return node; +}; + +Object.defineProperty(ParentNode.prototype, 'endLocator', { + get: function() { + return this._endLocator; + }, + set: function(endLocator) { + this._endLocator = { + lineNumber: endLocator.lineNumber, + columnNumber: endLocator.columnNumber + }; + } +}); + +/** + * A document. + * @version $Id$ + * @author hsivonen + */ +function Document (locator) { + ParentNode.call(this, locator); + this.nodeType = NodeType.DOCUMENT; +} + +Document.prototype = Object.create(ParentNode.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +Document.prototype.visit = function(treeParser) { + treeParser.startDocument(this); +}; + +/** + * @see nu.validator.saxtree.Node#revisit(nu.validator.saxtree.TreeParser) + */ +Document.prototype.revisit = function(treeParser) { + treeParser.endDocument(this.endLocator); +}; + +/** + * A document fragment. + * + * @version $Id$ + * @author hsivonen + */ + +/** + * The constructor. + */ +function DocumentFragment() { + ParentNode.call(this, new Locator()); + this.nodeType = NodeType.DOCUMENT_FRAGMENT; +} + +DocumentFragment.prototype = Object.create(ParentNode.prototype); +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +DocumentFragment.prototype.visit = function(treeParser) { + // nothing +}; + +/** + * An element. + * @version $Id$ + * @author hsivonen + */ +function Element(locator, uri, localName, qName, atts, prefixMappings) { + ParentNode.call(this, locator); + this.uri = uri; + this.localName = localName; + this.qName = qName; + this.attributes = atts; + this.prefixMappings = prefixMappings; + this.nodeType = NodeType.ELEMENT; +} + +Element.prototype = Object.create(ParentNode.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +Element.prototype.visit = function(treeParser) { + if (this.prefixMappings) { + for (var key in prefixMappings) { + var mapping = prefixMappings[key]; + treeParser.startPrefixMapping(mapping.getPrefix(), + mapping.getUri(), this); + } + } + treeParser.startElement(this.uri, this.localName, this.qName, this.attributes, this); +}; + +/** + * @see nu.validator.saxtree.Node#revisit(nu.validator.saxtree.TreeParser) + */ +Element.prototype.revisit = function(treeParser) { + treeParser.endElement(this.uri, this.localName, this.qName, this.endLocator); + if (this.prefixMappings) { + for (var key in prefixMappings) { + var mapping = prefixMappings[key]; + treeParser.endPrefixMapping(mapping.getPrefix(), this.endLocator); + } + } +}; + +/** + * The constructor. + * @param locator the locator + * @param {String} data the buffer + */ +function Characters(locator, data){ + Node.call(this, locator); + this.data = data; + this.nodeType = NodeType.CHARACTERS; +} + +Characters.prototype = Object.create(Node.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +Characters.prototype.visit = function (treeParser) { + treeParser.characters(this.data, 0, this.data.length, this); +}; + +/** + * The constructor. + * @param buf the buffer + * @param start the offset + * @param length the length + */ +function IgnorableWhitespace(locator, data) { + Node.call(this, locator); + this.data = data; + this.nodeType = NodeType.IGNORABLE_WHITESPACE; +} + +IgnorableWhitespace.prototype = Object.create(Node.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +IgnorableWhitespace.prototype.visit = function(treeParser) { + treeParser.ignorableWhitespace(this.data, 0, this.data.length, this); +}; + +/** + * A comment. + * + * @version $Id$ + * @author hsivonen + */ + +/** + * The constructor. + * @param locator the locator + * @param buf the buffer + * @param start the offset + * @param length the length + */ +function Comment(locator, data) { + Node.call(this, locator); + this.data = data; + this.nodeType = NodeType.COMMENT; +} + +Comment.prototype = Object.create(Node.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +Comment.prototype.visit = function(treeParser) { + treeParser.comment(this.data, 0, this.data.length, this); +}; + +/** + * A CDATA section. + * @version $Id$ + * @author hsivonen + */ +/** + * The constructor. + * @param locator the locator + */ +function CDATA(locator) { + ParentNode.call(this, locator); + this.nodeType = NodeType.CDATA; +} + +CDATA.prototype = Object.create(ParentNode.prototype); + +/** + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +CDATA.prototype.visit = function(treeParser) { + treeParser.startCDATA(this); +}; + +/** + * + * @throws SAXException if things go wrong + * @see nu.validator.saxtree.Node#revisit(nu.validator.saxtree.TreeParser) + */ +CDATA.prototype.revisit = function(treeParser) { + treeParser.endCDATA(this.endLocator); +}; + +/** + * An entity. + * @version $Id$ + * @author hsivonen + */ + +/** + * The constructor. + * @param locator the locator + * @param name the name + */ +function Entity(name) { + ParentNode.call(this); + this.name = name; + this.nodeType = NodeType.ENTITY; +} + +Entity.prototype = Object.create(ParentNode.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +Entity.prototype.visit = function(treeParser) { + treeParser.startEntity(this.name, this); +}; + +/** + * @see nu.validator.saxtree.Node#revisit(nu.validator.saxtree.TreeParser) + */ +Entity.prototype.revisit = function(treeParser) { + treeParser.endEntity(this.name); +}; + +/** + * A skipped entity. + * @version $Id$ + * @author hsivonen + */ + +/** + * Constructor. + * @param locator the locator + * @param name the name + */ + +function SkippedEntity(name) { + Node.call(this); + this.name = name; + this.nodeType = NodeType.SKIPPED_ENTITY; +} + +SkippedEntity.prototype = Object.create(Node.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +SkippedEntity.prototype.visit = function(treeParser) { + treeParser.skippedEntity(this.name, this); +}; + +/** + * A processing instruction. + * @version $Id$ + * @author hsivonen + */ + +/** + * PI target. + */ +//private final String target; + +/** + * PI data. + */ +//private final String data; + +/** + * Constructor. + * @param locator the locator + * @param target PI target + * @param data PI data + */ +function ProcessingInstruction(target, data) { + Node.call(this); + this.target = target; + this.data = data; +} + +ProcessingInstruction.prototype = Object.create(Node.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +ProcessingInstruction.prototype.visit = function(treeParser) { + treeParser.processingInstruction(this.target, this.data, this); +}; + +/** + * + * @see nu.validator.saxtree.Node#getNodeType() + */ +ProcessingInstruction.prototype.getNodeType = function() { + return NodeType.PROCESSING_INSTRUCTION; +}; + +/** + * The constructor. + * @param locator the locator + * @param name the name + * @param publicIdentifier the public id + * @param systemIdentifier the system id + */ +function DTD(name, publicIdentifier, systemIdentifier) { + ParentNode.call(this); + this.name = name; + this.publicIdentifier = publicIdentifier; + this.systemIdentifier = systemIdentifier; + this.nodeType = NodeType.DTD; +} + +DTD.prototype = Object.create(ParentNode.prototype); + +/** + * + * @see nu.validator.saxtree.Node#visit(nu.validator.saxtree.TreeParser) + */ +DTD.prototype.visit = function(treeParser) { + treeParser.startDTD(this.name, this.publicIdentifier, this.systemIdentifier, this); +}; + +/** + * @see nu.validator.saxtree.Node#revisit(nu.validator.saxtree.TreeParser) + */ +DTD.prototype.revisit = function(treeParser) { + treeParser.endDTD(); +}; + +exports.SAXTreeBuilder = SAXTreeBuilder; + +}, +{"../TreeBuilder":6,"util":20}], +11:[function(_dereq_,module,exports){ +/** + * A tree visitor that replays a tree as SAX events. + * @version $Id$ + * @author hsivonen + */ + +/** + * The constructor. + * + * @param contentHandler + * must not be <code>null</code> + * @param lexicalHandler + * may be <code>null</code> + */ +function TreeParser(contentHandler, lexicalHandler){ + + /** + * The content handler. + */ + this.contentHandler; + + /** + * The lexical handler. + */ + this.lexicalHandler; + + /** + * The current locator. + */ + this.locatorDelegate; + + if (!contentHandler) { + throw new IllegalArgumentException("contentHandler was null."); + } + this.contentHandler = contentHandler; + if (!lexicalHandler) { + this.lexicalHandler = new NullLexicalHandler(); + } else { + this.lexicalHandler = lexicalHandler; + } +} + +/** + * Causes SAX events for the tree rooted at the argument to be emitted. + * <code>startDocument()</code> and <code>endDocument()</code> are only + * emitted for a <code>Document</code> node. + * + * @param node + * the root + * @throws SAXException + */ +TreeParser.prototype.parse = function(node) { + this.contentHandler.documentLocator = this; + var current = node; + var next; + for (;;) { + current.visit(this); + if (next = current.firstChild) { + current = next; + continue; + } + for (;;) { + current.revisit(this); + if (current == node) { + return; + } + if (next = current.nextSibling) { + current = next; + break; + } + current = current.parentNode; + } + } +}; + +/** + * @see org.xml.sax.ContentHandler#characters(char[], int, int) + */ +TreeParser.prototype.characters = function(ch, start, length, locator) { + this.locatorDelegate = locator; + this.contentHandler.characters(ch, start, length); +}; + +/** + * @see org.xml.sax.ContentHandler#endDocument() + */ +TreeParser.prototype.endDocument = function(locator) { + this.locatorDelegate = locator; + this.contentHandler.endDocument(); +}; + +/** + * @see org.xml.sax.ContentHandler#endElement(java.lang.String, + * java.lang.String, java.lang.String) + */ +TreeParser.prototype.endElement = function(uri, localName, qName, locator) { + this.locatorDelegate = locator; + this.contentHandler.endElement(uri, localName, qName); +}; + +/** + * @see org.xml.sax.ContentHandler#endPrefixMapping(java.lang.String) + */ +TreeParser.prototype.endPrefixMapping = function(prefix, locator) { + this.locatorDelegate = locator; + this.contentHandler.endPrefixMapping(prefix); +}; + +/** + * @see org.xml.sax.ContentHandler#ignorableWhitespace(char[], int, int) + */ +TreeParser.prototype.ignorableWhitespace = function(ch, start, length, locator) { + this.locatorDelegate = locator; + this.contentHandler.ignorableWhitespace(ch, start, length); +}; + +/** + * @see org.xml.sax.ContentHandler#processingInstruction(java.lang.String, + * java.lang.String) + */ +TreeParser.prototype.processingInstruction = function(target, data, locator) { + this.locatorDelegate = locator; + this.contentHandler.processingInstruction(target, data); +}; + +/** + * @see org.xml.sax.ContentHandler#skippedEntity(java.lang.String) + */ +TreeParser.prototype.skippedEntity = function(name, locator) { + this.locatorDelegate = locator; + this.contentHandler.skippedEntity(name); +}; + +/** + * @see org.xml.sax.ContentHandler#startDocument() + */ +TreeParser.prototype.startDocument = function(locator) { + this.locatorDelegate = locator; + this.contentHandler.startDocument(); +}; + +/** + * @see org.xml.sax.ContentHandler#startElement(java.lang.String, + * java.lang.String, java.lang.String, org.xml.sax.Attributes) + */ +TreeParser.prototype.startElement = function(uri, localName, qName, atts, locator) { + this.locatorDelegate = locator; + this.contentHandler.startElement(uri, localName, qName, atts); +}; + +/** + * @see org.xml.sax.ContentHandler#startPrefixMapping(java.lang.String, + * java.lang.String) + */ +TreeParser.prototype.startPrefixMapping = function(prefix, uri, locator) { + this.locatorDelegate = locator; + this.contentHandler.startPrefixMapping(prefix, uri); +}; + +/** + * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int) + */ +TreeParser.prototype.comment = function(ch, start, length, locator) { + this.locatorDelegate = locator; + this.lexicalHandler.comment(ch, start, length); +}; + +/** + * @see org.xml.sax.ext.LexicalHandler#endCDATA() + */ +TreeParser.prototype.endCDATA = function(locator) { + this.locatorDelegate = locator; + this.lexicalHandler.endCDATA(); +}; + +/** + * @see org.xml.sax.ext.LexicalHandler#endDTD() + */ +TreeParser.prototype.endDTD = function(locator) { + this.locatorDelegate = locator; + this.lexicalHandler.endDTD(); +}; + +/** + * @see org.xml.sax.ext.LexicalHandler#endEntity(java.lang.String) + */ +TreeParser.prototype.endEntity = function(name, locator) { + this.locatorDelegate = locator; + this.lexicalHandler.endEntity(name); +}; + +/** + * @see org.xml.sax.ext.LexicalHandler#startCDATA() + */ +TreeParser.prototype.startCDATA = function(locator) { + this.locatorDelegate = locator; + this.lexicalHandler.startCDATA(); +}; + +/** + * @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String, + * java.lang.String, java.lang.String) + */ +TreeParser.prototype.startDTD = function(name, publicId, systemId, locator) { + this.locatorDelegate = locator; + this.lexicalHandler.startDTD(name, publicId, systemId); +}; + +/** + * @see org.xml.sax.ext.LexicalHandler#startEntity(java.lang.String) + */ +TreeParser.prototype.startEntity = function(name, locator) { + this.locatorDelegate = locator; + this.lexicalHandler.startEntity(name); +}; + +Object.defineProperty(TreeParser.prototype, 'columnNumber', { + get: function() { + if (!this.locatorDelegate) + return -1; + else + return this.locatorDelegate.columnNumber; + } +}); + +Object.defineProperty(TreeParser.prototype, 'lineNumber', { + get: function() { + if (!this.locatorDelegate) + return -1; + else + return this.locatorDelegate.lineNumber; + } +}); + +/** + * A lexical handler that does nothing. + * @version $Id$ + * @author hsivonen + */ +// implements LexicalHandler +function NullLexicalHandler() { + +} + +NullLexicalHandler.prototype.comment = function() {}; +NullLexicalHandler.prototype.endCDATA = function() {}; +NullLexicalHandler.prototype.endDTD = function() {}; +NullLexicalHandler.prototype.endEntity = function() {}; +NullLexicalHandler.prototype.startCDATA = function() {}; +NullLexicalHandler.prototype.startDTD = function() {}; +NullLexicalHandler.prototype.startEntity = function() {}; + +exports.TreeParser = TreeParser; + +}, +{}], +12:[function(_dereq_,module,exports){ +module.exports = { + "Aacute;": "\u00C1", + "Aacute": "\u00C1", + "aacute;": "\u00E1", + "aacute": "\u00E1", + "Abreve;": "\u0102", + "abreve;": "\u0103", + "ac;": "\u223E", + "acd;": "\u223F", + "acE;": "\u223E\u0333", + "Acirc;": "\u00C2", + "Acirc": "\u00C2", + "acirc;": "\u00E2", + "acirc": "\u00E2", + "acute;": "\u00B4", + "acute": "\u00B4", + "Acy;": "\u0410", + "acy;": "\u0430", + "AElig;": "\u00C6", + "AElig": "\u00C6", + "aelig;": "\u00E6", + "aelig": "\u00E6", + "af;": "\u2061", + "Afr;": "\uD835\uDD04", + "afr;": "\uD835\uDD1E", + "Agrave;": "\u00C0", + "Agrave": "\u00C0", + "agrave;": "\u00E0", + "agrave": "\u00E0", + "alefsym;": "\u2135", + "aleph;": "\u2135", + "Alpha;": "\u0391", + "alpha;": "\u03B1", + "Amacr;": "\u0100", + "amacr;": "\u0101", + "amalg;": "\u2A3F", + "amp;": "\u0026", + "amp": "\u0026", + "AMP;": "\u0026", + "AMP": "\u0026", + "andand;": "\u2A55", + "And;": "\u2A53", + "and;": "\u2227", + "andd;": "\u2A5C", + "andslope;": "\u2A58", + "andv;": "\u2A5A", + "ang;": "\u2220", + "ange;": "\u29A4", + "angle;": "\u2220", + "angmsdaa;": "\u29A8", + "angmsdab;": "\u29A9", + "angmsdac;": "\u29AA", + "angmsdad;": "\u29AB", + "angmsdae;": "\u29AC", + "angmsdaf;": "\u29AD", + "angmsdag;": "\u29AE", + "angmsdah;": "\u29AF", + "angmsd;": "\u2221", + "angrt;": "\u221F", + "angrtvb;": "\u22BE", + "angrtvbd;": "\u299D", + "angsph;": "\u2222", + "angst;": "\u00C5", + "angzarr;": "\u237C", + "Aogon;": "\u0104", + "aogon;": "\u0105", + "Aopf;": "\uD835\uDD38", + "aopf;": "\uD835\uDD52", + "apacir;": "\u2A6F", + "ap;": "\u2248", + "apE;": "\u2A70", + "ape;": "\u224A", + "apid;": "\u224B", + "apos;": "\u0027", + "ApplyFunction;": "\u2061", + "approx;": "\u2248", + "approxeq;": "\u224A", + "Aring;": "\u00C5", + "Aring": "\u00C5", + "aring;": "\u00E5", + "aring": "\u00E5", + "Ascr;": "\uD835\uDC9C", + "ascr;": "\uD835\uDCB6", + "Assign;": "\u2254", + "ast;": "\u002A", + "asymp;": "\u2248", + "asympeq;": "\u224D", + "Atilde;": "\u00C3", + "Atilde": "\u00C3", + "atilde;": "\u00E3", + "atilde": "\u00E3", + "Auml;": "\u00C4", + "Auml": "\u00C4", + "auml;": "\u00E4", + "auml": "\u00E4", + "awconint;": "\u2233", + "awint;": "\u2A11", + "backcong;": "\u224C", + "backepsilon;": "\u03F6", + "backprime;": "\u2035", + "backsim;": "\u223D", + "backsimeq;": "\u22CD", + "Backslash;": "\u2216", + "Barv;": "\u2AE7", + "barvee;": "\u22BD", + "barwed;": "\u2305", + "Barwed;": "\u2306", + "barwedge;": "\u2305", + "bbrk;": "\u23B5", + "bbrktbrk;": "\u23B6", + "bcong;": "\u224C", + "Bcy;": "\u0411", + "bcy;": "\u0431", + "bdquo;": "\u201E", + "becaus;": "\u2235", + "because;": "\u2235", + "Because;": "\u2235", + "bemptyv;": "\u29B0", + "bepsi;": "\u03F6", + "bernou;": "\u212C", + "Bernoullis;": "\u212C", + "Beta;": "\u0392", + "beta;": "\u03B2", + "beth;": "\u2136", + "between;": "\u226C", + "Bfr;": "\uD835\uDD05", + "bfr;": "\uD835\uDD1F", + "bigcap;": "\u22C2", + "bigcirc;": "\u25EF", + "bigcup;": "\u22C3", + "bigodot;": "\u2A00", + "bigoplus;": "\u2A01", + "bigotimes;": "\u2A02", + "bigsqcup;": "\u2A06", + "bigstar;": "\u2605", + "bigtriangledown;": "\u25BD", + "bigtriangleup;": "\u25B3", + "biguplus;": "\u2A04", + "bigvee;": "\u22C1", + "bigwedge;": "\u22C0", + "bkarow;": "\u290D", + "blacklozenge;": "\u29EB", + "blacksquare;": "\u25AA", + "blacktriangle;": "\u25B4", + "blacktriangledown;": "\u25BE", + "blacktriangleleft;": "\u25C2", + "blacktriangleright;": "\u25B8", + "blank;": "\u2423", + "blk12;": "\u2592", + "blk14;": "\u2591", + "blk34;": "\u2593", + "block;": "\u2588", + "bne;": "\u003D\u20E5", + "bnequiv;": "\u2261\u20E5", + "bNot;": "\u2AED", + "bnot;": "\u2310", + "Bopf;": "\uD835\uDD39", + "bopf;": "\uD835\uDD53", + "bot;": "\u22A5", + "bottom;": "\u22A5", + "bowtie;": "\u22C8", + "boxbox;": "\u29C9", + "boxdl;": "\u2510", + "boxdL;": "\u2555", + "boxDl;": "\u2556", + "boxDL;": "\u2557", + "boxdr;": "\u250C", + "boxdR;": "\u2552", + "boxDr;": "\u2553", + "boxDR;": "\u2554", + "boxh;": "\u2500", + "boxH;": "\u2550", + "boxhd;": "\u252C", + "boxHd;": "\u2564", + "boxhD;": "\u2565", + "boxHD;": "\u2566", + "boxhu;": "\u2534", + "boxHu;": "\u2567", + "boxhU;": "\u2568", + "boxHU;": "\u2569", + "boxminus;": "\u229F", + "boxplus;": "\u229E", + "boxtimes;": "\u22A0", + "boxul;": "\u2518", + "boxuL;": "\u255B", + "boxUl;": "\u255C", + "boxUL;": "\u255D", + "boxur;": "\u2514", + "boxuR;": "\u2558", + "boxUr;": "\u2559", + "boxUR;": "\u255A", + "boxv;": "\u2502", + "boxV;": "\u2551", + "boxvh;": "\u253C", + "boxvH;": "\u256A", + "boxVh;": "\u256B", + "boxVH;": "\u256C", + "boxvl;": "\u2524", + "boxvL;": "\u2561", + "boxVl;": "\u2562", + "boxVL;": "\u2563", + "boxvr;": "\u251C", + "boxvR;": "\u255E", + "boxVr;": "\u255F", + "boxVR;": "\u2560", + "bprime;": "\u2035", + "breve;": "\u02D8", + "Breve;": "\u02D8", + "brvbar;": "\u00A6", + "brvbar": "\u00A6", + "bscr;": "\uD835\uDCB7", + "Bscr;": "\u212C", + "bsemi;": "\u204F", + "bsim;": "\u223D", + "bsime;": "\u22CD", + "bsolb;": "\u29C5", + "bsol;": "\u005C", + "bsolhsub;": "\u27C8", + "bull;": "\u2022", + "bullet;": "\u2022", + "bump;": "\u224E", + "bumpE;": "\u2AAE", + "bumpe;": "\u224F", + "Bumpeq;": "\u224E", + "bumpeq;": "\u224F", + "Cacute;": "\u0106", + "cacute;": "\u0107", + "capand;": "\u2A44", + "capbrcup;": "\u2A49", + "capcap;": "\u2A4B", + "cap;": "\u2229", + "Cap;": "\u22D2", + "capcup;": "\u2A47", + "capdot;": "\u2A40", + "CapitalDifferentialD;": "\u2145", + "caps;": "\u2229\uFE00", + "caret;": "\u2041", + "caron;": "\u02C7", + "Cayleys;": "\u212D", + "ccaps;": "\u2A4D", + "Ccaron;": "\u010C", + "ccaron;": "\u010D", + "Ccedil;": "\u00C7", + "Ccedil": "\u00C7", + "ccedil;": "\u00E7", + "ccedil": "\u00E7", + "Ccirc;": "\u0108", + "ccirc;": "\u0109", + "Cconint;": "\u2230", + "ccups;": "\u2A4C", + "ccupssm;": "\u2A50", + "Cdot;": "\u010A", + "cdot;": "\u010B", + "cedil;": "\u00B8", + "cedil": "\u00B8", + "Cedilla;": "\u00B8", + "cemptyv;": "\u29B2", + "cent;": "\u00A2", + "cent": "\u00A2", + "centerdot;": "\u00B7", + "CenterDot;": "\u00B7", + "cfr;": "\uD835\uDD20", + "Cfr;": "\u212D", + "CHcy;": "\u0427", + "chcy;": "\u0447", + "check;": "\u2713", + "checkmark;": "\u2713", + "Chi;": "\u03A7", + "chi;": "\u03C7", + "circ;": "\u02C6", + "circeq;": "\u2257", + "circlearrowleft;": "\u21BA", + "circlearrowright;": "\u21BB", + "circledast;": "\u229B", + "circledcirc;": "\u229A", + "circleddash;": "\u229D", + "CircleDot;": "\u2299", + "circledR;": "\u00AE", + "circledS;": "\u24C8", + "CircleMinus;": "\u2296", + "CirclePlus;": "\u2295", + "CircleTimes;": "\u2297", + "cir;": "\u25CB", + "cirE;": "\u29C3", + "cire;": "\u2257", + "cirfnint;": "\u2A10", + "cirmid;": "\u2AEF", + "cirscir;": "\u29C2", + "ClockwiseContourIntegral;": "\u2232", + "CloseCurlyDoubleQuote;": "\u201D", + "CloseCurlyQuote;": "\u2019", + "clubs;": "\u2663", + "clubsuit;": "\u2663", + "colon;": "\u003A", + "Colon;": "\u2237", + "Colone;": "\u2A74", + "colone;": "\u2254", + "coloneq;": "\u2254", + "comma;": "\u002C", + "commat;": "\u0040", + "comp;": "\u2201", + "compfn;": "\u2218", + "complement;": "\u2201", + "complexes;": "\u2102", + "cong;": "\u2245", + "congdot;": "\u2A6D", + "Congruent;": "\u2261", + "conint;": "\u222E", + "Conint;": "\u222F", + "ContourIntegral;": "\u222E", + "copf;": "\uD835\uDD54", + "Copf;": "\u2102", + "coprod;": "\u2210", + "Coproduct;": "\u2210", + "copy;": "\u00A9", + "copy": "\u00A9", + "COPY;": "\u00A9", + "COPY": "\u00A9", + "copysr;": "\u2117", + "CounterClockwiseContourIntegral;": "\u2233", + "crarr;": "\u21B5", + "cross;": "\u2717", + "Cross;": "\u2A2F", + "Cscr;": "\uD835\uDC9E", + "cscr;": "\uD835\uDCB8", + "csub;": "\u2ACF", + "csube;": "\u2AD1", + "csup;": "\u2AD0", + "csupe;": "\u2AD2", + "ctdot;": "\u22EF", + "cudarrl;": "\u2938", + "cudarrr;": "\u2935", + "cuepr;": "\u22DE", + "cuesc;": "\u22DF", + "cularr;": "\u21B6", + "cularrp;": "\u293D", + "cupbrcap;": "\u2A48", + "cupcap;": "\u2A46", + "CupCap;": "\u224D", + "cup;": "\u222A", + "Cup;": "\u22D3", + "cupcup;": "\u2A4A", + "cupdot;": "\u228D", + "cupor;": "\u2A45", + "cups;": "\u222A\uFE00", + "curarr;": "\u21B7", + "curarrm;": "\u293C", + "curlyeqprec;": "\u22DE", + "curlyeqsucc;": "\u22DF", + "curlyvee;": "\u22CE", + "curlywedge;": "\u22CF", + "curren;": "\u00A4", + "curren": "\u00A4", + "curvearrowleft;": "\u21B6", + "curvearrowright;": "\u21B7", + "cuvee;": "\u22CE", + "cuwed;": "\u22CF", + "cwconint;": "\u2232", + "cwint;": "\u2231", + "cylcty;": "\u232D", + "dagger;": "\u2020", + "Dagger;": "\u2021", + "daleth;": "\u2138", + "darr;": "\u2193", + "Darr;": "\u21A1", + "dArr;": "\u21D3", + "dash;": "\u2010", + "Dashv;": "\u2AE4", + "dashv;": "\u22A3", + "dbkarow;": "\u290F", + "dblac;": "\u02DD", + "Dcaron;": "\u010E", + "dcaron;": "\u010F", + "Dcy;": "\u0414", + "dcy;": "\u0434", + "ddagger;": "\u2021", + "ddarr;": "\u21CA", + "DD;": "\u2145", + "dd;": "\u2146", + "DDotrahd;": "\u2911", + "ddotseq;": "\u2A77", + "deg;": "\u00B0", + "deg": "\u00B0", + "Del;": "\u2207", + "Delta;": "\u0394", + "delta;": "\u03B4", + "demptyv;": "\u29B1", + "dfisht;": "\u297F", + "Dfr;": "\uD835\uDD07", + "dfr;": "\uD835\uDD21", + "dHar;": "\u2965", + "dharl;": "\u21C3", + "dharr;": "\u21C2", + "DiacriticalAcute;": "\u00B4", + "DiacriticalDot;": "\u02D9", + "DiacriticalDoubleAcute;": "\u02DD", + "DiacriticalGrave;": "\u0060", + "DiacriticalTilde;": "\u02DC", + "diam;": "\u22C4", + "diamond;": "\u22C4", + "Diamond;": "\u22C4", + "diamondsuit;": "\u2666", + "diams;": "\u2666", + "die;": "\u00A8", + "DifferentialD;": "\u2146", + "digamma;": "\u03DD", + "disin;": "\u22F2", + "div;": "\u00F7", + "divide;": "\u00F7", + "divide": "\u00F7", + "divideontimes;": "\u22C7", + "divonx;": "\u22C7", + "DJcy;": "\u0402", + "djcy;": "\u0452", + "dlcorn;": "\u231E", + "dlcrop;": "\u230D", + "dollar;": "\u0024", + "Dopf;": "\uD835\uDD3B", + "dopf;": "\uD835\uDD55", + "Dot;": "\u00A8", + "dot;": "\u02D9", + "DotDot;": "\u20DC", + "doteq;": "\u2250", + "doteqdot;": "\u2251", + "DotEqual;": "\u2250", + "dotminus;": "\u2238", + "dotplus;": "\u2214", + "dotsquare;": "\u22A1", + "doublebarwedge;": "\u2306", + "DoubleContourIntegral;": "\u222F", + "DoubleDot;": "\u00A8", + "DoubleDownArrow;": "\u21D3", + "DoubleLeftArrow;": "\u21D0", + "DoubleLeftRightArrow;": "\u21D4", + "DoubleLeftTee;": "\u2AE4", + "DoubleLongLeftArrow;": "\u27F8", + "DoubleLongLeftRightArrow;": "\u27FA", + "DoubleLongRightArrow;": "\u27F9", + "DoubleRightArrow;": "\u21D2", + "DoubleRightTee;": "\u22A8", + "DoubleUpArrow;": "\u21D1", + "DoubleUpDownArrow;": "\u21D5", + "DoubleVerticalBar;": "\u2225", + "DownArrowBar;": "\u2913", + "downarrow;": "\u2193", + "DownArrow;": "\u2193", + "Downarrow;": "\u21D3", + "DownArrowUpArrow;": "\u21F5", + "DownBreve;": "\u0311", + "downdownarrows;": "\u21CA", + "downharpoonleft;": "\u21C3", + "downharpoonright;": "\u21C2", + "DownLeftRightVector;": "\u2950", + "DownLeftTeeVector;": "\u295E", + "DownLeftVectorBar;": "\u2956", + "DownLeftVector;": "\u21BD", + "DownRightTeeVector;": "\u295F", + "DownRightVectorBar;": "\u2957", + "DownRightVector;": "\u21C1", + "DownTeeArrow;": "\u21A7", + "DownTee;": "\u22A4", + "drbkarow;": "\u2910", + "drcorn;": "\u231F", + "drcrop;": "\u230C", + "Dscr;": "\uD835\uDC9F", + "dscr;": "\uD835\uDCB9", + "DScy;": "\u0405", + "dscy;": "\u0455", + "dsol;": "\u29F6", + "Dstrok;": "\u0110", + "dstrok;": "\u0111", + "dtdot;": "\u22F1", + "dtri;": "\u25BF", + "dtrif;": "\u25BE", + "duarr;": "\u21F5", + "duhar;": "\u296F", + "dwangle;": "\u29A6", + "DZcy;": "\u040F", + "dzcy;": "\u045F", + "dzigrarr;": "\u27FF", + "Eacute;": "\u00C9", + "Eacute": "\u00C9", + "eacute;": "\u00E9", + "eacute": "\u00E9", + "easter;": "\u2A6E", + "Ecaron;": "\u011A", + "ecaron;": "\u011B", + "Ecirc;": "\u00CA", + "Ecirc": "\u00CA", + "ecirc;": "\u00EA", + "ecirc": "\u00EA", + "ecir;": "\u2256", + "ecolon;": "\u2255", + "Ecy;": "\u042D", + "ecy;": "\u044D", + "eDDot;": "\u2A77", + "Edot;": "\u0116", + "edot;": "\u0117", + "eDot;": "\u2251", + "ee;": "\u2147", + "efDot;": "\u2252", + "Efr;": "\uD835\uDD08", + "efr;": "\uD835\uDD22", + "eg;": "\u2A9A", + "Egrave;": "\u00C8", + "Egrave": "\u00C8", + "egrave;": "\u00E8", + "egrave": "\u00E8", + "egs;": "\u2A96", + "egsdot;": "\u2A98", + "el;": "\u2A99", + "Element;": "\u2208", + "elinters;": "\u23E7", + "ell;": "\u2113", + "els;": "\u2A95", + "elsdot;": "\u2A97", + "Emacr;": "\u0112", + "emacr;": "\u0113", + "empty;": "\u2205", + "emptyset;": "\u2205", + "EmptySmallSquare;": "\u25FB", + "emptyv;": "\u2205", + "EmptyVerySmallSquare;": "\u25AB", + "emsp13;": "\u2004", + "emsp14;": "\u2005", + "emsp;": "\u2003", + "ENG;": "\u014A", + "eng;": "\u014B", + "ensp;": "\u2002", + "Eogon;": "\u0118", + "eogon;": "\u0119", + "Eopf;": "\uD835\uDD3C", + "eopf;": "\uD835\uDD56", + "epar;": "\u22D5", + "eparsl;": "\u29E3", + "eplus;": "\u2A71", + "epsi;": "\u03B5", + "Epsilon;": "\u0395", + "epsilon;": "\u03B5", + "epsiv;": "\u03F5", + "eqcirc;": "\u2256", + "eqcolon;": "\u2255", + "eqsim;": "\u2242", + "eqslantgtr;": "\u2A96", + "eqslantless;": "\u2A95", + "Equal;": "\u2A75", + "equals;": "\u003D", + "EqualTilde;": "\u2242", + "equest;": "\u225F", + "Equilibrium;": "\u21CC", + "equiv;": "\u2261", + "equivDD;": "\u2A78", + "eqvparsl;": "\u29E5", + "erarr;": "\u2971", + "erDot;": "\u2253", + "escr;": "\u212F", + "Escr;": "\u2130", + "esdot;": "\u2250", + "Esim;": "\u2A73", + "esim;": "\u2242", + "Eta;": "\u0397", + "eta;": "\u03B7", + "ETH;": "\u00D0", + "ETH": "\u00D0", + "eth;": "\u00F0", + "eth": "\u00F0", + "Euml;": "\u00CB", + "Euml": "\u00CB", + "euml;": "\u00EB", + "euml": "\u00EB", + "euro;": "\u20AC", + "excl;": "\u0021", + "exist;": "\u2203", + "Exists;": "\u2203", + "expectation;": "\u2130", + "exponentiale;": "\u2147", + "ExponentialE;": "\u2147", + "fallingdotseq;": "\u2252", + "Fcy;": "\u0424", + "fcy;": "\u0444", + "female;": "\u2640", + "ffilig;": "\uFB03", + "fflig;": "\uFB00", + "ffllig;": "\uFB04", + "Ffr;": "\uD835\uDD09", + "ffr;": "\uD835\uDD23", + "filig;": "\uFB01", + "FilledSmallSquare;": "\u25FC", + "FilledVerySmallSquare;": "\u25AA", + "fjlig;": "\u0066\u006A", + "flat;": "\u266D", + "fllig;": "\uFB02", + "fltns;": "\u25B1", + "fnof;": "\u0192", + "Fopf;": "\uD835\uDD3D", + "fopf;": "\uD835\uDD57", + "forall;": "\u2200", + "ForAll;": "\u2200", + "fork;": "\u22D4", + "forkv;": "\u2AD9", + "Fouriertrf;": "\u2131", + "fpartint;": "\u2A0D", + "frac12;": "\u00BD", + "frac12": "\u00BD", + "frac13;": "\u2153", + "frac14;": "\u00BC", + "frac14": "\u00BC", + "frac15;": "\u2155", + "frac16;": "\u2159", + "frac18;": "\u215B", + "frac23;": "\u2154", + "frac25;": "\u2156", + "frac34;": "\u00BE", + "frac34": "\u00BE", + "frac35;": "\u2157", + "frac38;": "\u215C", + "frac45;": "\u2158", + "frac56;": "\u215A", + "frac58;": "\u215D", + "frac78;": "\u215E", + "frasl;": "\u2044", + "frown;": "\u2322", + "fscr;": "\uD835\uDCBB", + "Fscr;": "\u2131", + "gacute;": "\u01F5", + "Gamma;": "\u0393", + "gamma;": "\u03B3", + "Gammad;": "\u03DC", + "gammad;": "\u03DD", + "gap;": "\u2A86", + "Gbreve;": "\u011E", + "gbreve;": "\u011F", + "Gcedil;": "\u0122", + "Gcirc;": "\u011C", + "gcirc;": "\u011D", + "Gcy;": "\u0413", + "gcy;": "\u0433", + "Gdot;": "\u0120", + "gdot;": "\u0121", + "ge;": "\u2265", + "gE;": "\u2267", + "gEl;": "\u2A8C", + "gel;": "\u22DB", + "geq;": "\u2265", + "geqq;": "\u2267", + "geqslant;": "\u2A7E", + "gescc;": "\u2AA9", + "ges;": "\u2A7E", + "gesdot;": "\u2A80", + "gesdoto;": "\u2A82", + "gesdotol;": "\u2A84", + "gesl;": "\u22DB\uFE00", + "gesles;": "\u2A94", + "Gfr;": "\uD835\uDD0A", + "gfr;": "\uD835\uDD24", + "gg;": "\u226B", + "Gg;": "\u22D9", + "ggg;": "\u22D9", + "gimel;": "\u2137", + "GJcy;": "\u0403", + "gjcy;": "\u0453", + "gla;": "\u2AA5", + "gl;": "\u2277", + "glE;": "\u2A92", + "glj;": "\u2AA4", + "gnap;": "\u2A8A", + "gnapprox;": "\u2A8A", + "gne;": "\u2A88", + "gnE;": "\u2269", + "gneq;": "\u2A88", + "gneqq;": "\u2269", + "gnsim;": "\u22E7", + "Gopf;": "\uD835\uDD3E", + "gopf;": "\uD835\uDD58", + "grave;": "\u0060", + "GreaterEqual;": "\u2265", + "GreaterEqualLess;": "\u22DB", + "GreaterFullEqual;": "\u2267", + "GreaterGreater;": "\u2AA2", + "GreaterLess;": "\u2277", + "GreaterSlantEqual;": "\u2A7E", + "GreaterTilde;": "\u2273", + "Gscr;": "\uD835\uDCA2", + "gscr;": "\u210A", + "gsim;": "\u2273", + "gsime;": "\u2A8E", + "gsiml;": "\u2A90", + "gtcc;": "\u2AA7", + "gtcir;": "\u2A7A", + "gt;": "\u003E", + "gt": "\u003E", + "GT;": "\u003E", + "GT": "\u003E", + "Gt;": "\u226B", + "gtdot;": "\u22D7", + "gtlPar;": "\u2995", + "gtquest;": "\u2A7C", + "gtrapprox;": "\u2A86", + "gtrarr;": "\u2978", + "gtrdot;": "\u22D7", + "gtreqless;": "\u22DB", + "gtreqqless;": "\u2A8C", + "gtrless;": "\u2277", + "gtrsim;": "\u2273", + "gvertneqq;": "\u2269\uFE00", + "gvnE;": "\u2269\uFE00", + "Hacek;": "\u02C7", + "hairsp;": "\u200A", + "half;": "\u00BD", + "hamilt;": "\u210B", + "HARDcy;": "\u042A", + "hardcy;": "\u044A", + "harrcir;": "\u2948", + "harr;": "\u2194", + "hArr;": "\u21D4", + "harrw;": "\u21AD", + "Hat;": "\u005E", + "hbar;": "\u210F", + "Hcirc;": "\u0124", + "hcirc;": "\u0125", + "hearts;": "\u2665", + "heartsuit;": "\u2665", + "hellip;": "\u2026", + "hercon;": "\u22B9", + "hfr;": "\uD835\uDD25", + "Hfr;": "\u210C", + "HilbertSpace;": "\u210B", + "hksearow;": "\u2925", + "hkswarow;": "\u2926", + "hoarr;": "\u21FF", + "homtht;": "\u223B", + "hookleftarrow;": "\u21A9", + "hookrightarrow;": "\u21AA", + "hopf;": "\uD835\uDD59", + "Hopf;": "\u210D", + "horbar;": "\u2015", + "HorizontalLine;": "\u2500", + "hscr;": "\uD835\uDCBD", + "Hscr;": "\u210B", + "hslash;": "\u210F", + "Hstrok;": "\u0126", + "hstrok;": "\u0127", + "HumpDownHump;": "\u224E", + "HumpEqual;": "\u224F", + "hybull;": "\u2043", + "hyphen;": "\u2010", + "Iacute;": "\u00CD", + "Iacute": "\u00CD", + "iacute;": "\u00ED", + "iacute": "\u00ED", + "ic;": "\u2063", + "Icirc;": "\u00CE", + "Icirc": "\u00CE", + "icirc;": "\u00EE", + "icirc": "\u00EE", + "Icy;": "\u0418", + "icy;": "\u0438", + "Idot;": "\u0130", + "IEcy;": "\u0415", + "iecy;": "\u0435", + "iexcl;": "\u00A1", + "iexcl": "\u00A1", + "iff;": "\u21D4", + "ifr;": "\uD835\uDD26", + "Ifr;": "\u2111", + "Igrave;": "\u00CC", + "Igrave": "\u00CC", + "igrave;": "\u00EC", + "igrave": "\u00EC", + "ii;": "\u2148", + "iiiint;": "\u2A0C", + "iiint;": "\u222D", + "iinfin;": "\u29DC", + "iiota;": "\u2129", + "IJlig;": "\u0132", + "ijlig;": "\u0133", + "Imacr;": "\u012A", + "imacr;": "\u012B", + "image;": "\u2111", + "ImaginaryI;": "\u2148", + "imagline;": "\u2110", + "imagpart;": "\u2111", + "imath;": "\u0131", + "Im;": "\u2111", + "imof;": "\u22B7", + "imped;": "\u01B5", + "Implies;": "\u21D2", + "incare;": "\u2105", + "in;": "\u2208", + "infin;": "\u221E", + "infintie;": "\u29DD", + "inodot;": "\u0131", + "intcal;": "\u22BA", + "int;": "\u222B", + "Int;": "\u222C", + "integers;": "\u2124", + "Integral;": "\u222B", + "intercal;": "\u22BA", + "Intersection;": "\u22C2", + "intlarhk;": "\u2A17", + "intprod;": "\u2A3C", + "InvisibleComma;": "\u2063", + "InvisibleTimes;": "\u2062", + "IOcy;": "\u0401", + "iocy;": "\u0451", + "Iogon;": "\u012E", + "iogon;": "\u012F", + "Iopf;": "\uD835\uDD40", + "iopf;": "\uD835\uDD5A", + "Iota;": "\u0399", + "iota;": "\u03B9", + "iprod;": "\u2A3C", + "iquest;": "\u00BF", + "iquest": "\u00BF", + "iscr;": "\uD835\uDCBE", + "Iscr;": "\u2110", + "isin;": "\u2208", + "isindot;": "\u22F5", + "isinE;": "\u22F9", + "isins;": "\u22F4", + "isinsv;": "\u22F3", + "isinv;": "\u2208", + "it;": "\u2062", + "Itilde;": "\u0128", + "itilde;": "\u0129", + "Iukcy;": "\u0406", + "iukcy;": "\u0456", + "Iuml;": "\u00CF", + "Iuml": "\u00CF", + "iuml;": "\u00EF", + "iuml": "\u00EF", + "Jcirc;": "\u0134", + "jcirc;": "\u0135", + "Jcy;": "\u0419", + "jcy;": "\u0439", + "Jfr;": "\uD835\uDD0D", + "jfr;": "\uD835\uDD27", + "jmath;": "\u0237", + "Jopf;": "\uD835\uDD41", + "jopf;": "\uD835\uDD5B", + "Jscr;": "\uD835\uDCA5", + "jscr;": "\uD835\uDCBF", + "Jsercy;": "\u0408", + "jsercy;": "\u0458", + "Jukcy;": "\u0404", + "jukcy;": "\u0454", + "Kappa;": "\u039A", + "kappa;": "\u03BA", + "kappav;": "\u03F0", + "Kcedil;": "\u0136", + "kcedil;": "\u0137", + "Kcy;": "\u041A", + "kcy;": "\u043A", + "Kfr;": "\uD835\uDD0E", + "kfr;": "\uD835\uDD28", + "kgreen;": "\u0138", + "KHcy;": "\u0425", + "khcy;": "\u0445", + "KJcy;": "\u040C", + "kjcy;": "\u045C", + "Kopf;": "\uD835\uDD42", + "kopf;": "\uD835\uDD5C", + "Kscr;": "\uD835\uDCA6", + "kscr;": "\uD835\uDCC0", + "lAarr;": "\u21DA", + "Lacute;": "\u0139", + "lacute;": "\u013A", + "laemptyv;": "\u29B4", + "lagran;": "\u2112", + "Lambda;": "\u039B", + "lambda;": "\u03BB", + "lang;": "\u27E8", + "Lang;": "\u27EA", + "langd;": "\u2991", + "langle;": "\u27E8", + "lap;": "\u2A85", + "Laplacetrf;": "\u2112", + "laquo;": "\u00AB", + "laquo": "\u00AB", + "larrb;": "\u21E4", + "larrbfs;": "\u291F", + "larr;": "\u2190", + "Larr;": "\u219E", + "lArr;": "\u21D0", + "larrfs;": "\u291D", + "larrhk;": "\u21A9", + "larrlp;": "\u21AB", + "larrpl;": "\u2939", + "larrsim;": "\u2973", + "larrtl;": "\u21A2", + "latail;": "\u2919", + "lAtail;": "\u291B", + "lat;": "\u2AAB", + "late;": "\u2AAD", + "lates;": "\u2AAD\uFE00", + "lbarr;": "\u290C", + "lBarr;": "\u290E", + "lbbrk;": "\u2772", + "lbrace;": "\u007B", + "lbrack;": "\u005B", + "lbrke;": "\u298B", + "lbrksld;": "\u298F", + "lbrkslu;": "\u298D", + "Lcaron;": "\u013D", + "lcaron;": "\u013E", + "Lcedil;": "\u013B", + "lcedil;": "\u013C", + "lceil;": "\u2308", + "lcub;": "\u007B", + "Lcy;": "\u041B", + "lcy;": "\u043B", + "ldca;": "\u2936", + "ldquo;": "\u201C", + "ldquor;": "\u201E", + "ldrdhar;": "\u2967", + "ldrushar;": "\u294B", + "ldsh;": "\u21B2", + "le;": "\u2264", + "lE;": "\u2266", + "LeftAngleBracket;": "\u27E8", + "LeftArrowBar;": "\u21E4", + "leftarrow;": "\u2190", + "LeftArrow;": "\u2190", + "Leftarrow;": "\u21D0", + "LeftArrowRightArrow;": "\u21C6", + "leftarrowtail;": "\u21A2", + "LeftCeiling;": "\u2308", + "LeftDoubleBracket;": "\u27E6", + "LeftDownTeeVector;": "\u2961", + "LeftDownVectorBar;": "\u2959", + "LeftDownVector;": "\u21C3", + "LeftFloor;": "\u230A", + "leftharpoondown;": "\u21BD", + "leftharpoonup;": "\u21BC", + "leftleftarrows;": "\u21C7", + "leftrightarrow;": "\u2194", + "LeftRightArrow;": "\u2194", + "Leftrightarrow;": "\u21D4", + "leftrightarrows;": "\u21C6", + "leftrightharpoons;": "\u21CB", + "leftrightsquigarrow;": "\u21AD", + "LeftRightVector;": "\u294E", + "LeftTeeArrow;": "\u21A4", + "LeftTee;": "\u22A3", + "LeftTeeVector;": "\u295A", + "leftthreetimes;": "\u22CB", + "LeftTriangleBar;": "\u29CF", + "LeftTriangle;": "\u22B2", + "LeftTriangleEqual;": "\u22B4", + "LeftUpDownVector;": "\u2951", + "LeftUpTeeVector;": "\u2960", + "LeftUpVectorBar;": "\u2958", + "LeftUpVector;": "\u21BF", + "LeftVectorBar;": "\u2952", + "LeftVector;": "\u21BC", + "lEg;": "\u2A8B", + "leg;": "\u22DA", + "leq;": "\u2264", + "leqq;": "\u2266", + "leqslant;": "\u2A7D", + "lescc;": "\u2AA8", + "les;": "\u2A7D", + "lesdot;": "\u2A7F", + "lesdoto;": "\u2A81", + "lesdotor;": "\u2A83", + "lesg;": "\u22DA\uFE00", + "lesges;": "\u2A93", + "lessapprox;": "\u2A85", + "lessdot;": "\u22D6", + "lesseqgtr;": "\u22DA", + "lesseqqgtr;": "\u2A8B", + "LessEqualGreater;": "\u22DA", + "LessFullEqual;": "\u2266", + "LessGreater;": "\u2276", + "lessgtr;": "\u2276", + "LessLess;": "\u2AA1", + "lesssim;": "\u2272", + "LessSlantEqual;": "\u2A7D", + "LessTilde;": "\u2272", + "lfisht;": "\u297C", + "lfloor;": "\u230A", + "Lfr;": "\uD835\uDD0F", + "lfr;": "\uD835\uDD29", + "lg;": "\u2276", + "lgE;": "\u2A91", + "lHar;": "\u2962", + "lhard;": "\u21BD", + "lharu;": "\u21BC", + "lharul;": "\u296A", + "lhblk;": "\u2584", + "LJcy;": "\u0409", + "ljcy;": "\u0459", + "llarr;": "\u21C7", + "ll;": "\u226A", + "Ll;": "\u22D8", + "llcorner;": "\u231E", + "Lleftarrow;": "\u21DA", + "llhard;": "\u296B", + "lltri;": "\u25FA", + "Lmidot;": "\u013F", + "lmidot;": "\u0140", + "lmoustache;": "\u23B0", + "lmoust;": "\u23B0", + "lnap;": "\u2A89", + "lnapprox;": "\u2A89", + "lne;": "\u2A87", + "lnE;": "\u2268", + "lneq;": "\u2A87", + "lneqq;": "\u2268", + "lnsim;": "\u22E6", + "loang;": "\u27EC", + "loarr;": "\u21FD", + "lobrk;": "\u27E6", + "longleftarrow;": "\u27F5", + "LongLeftArrow;": "\u27F5", + "Longleftarrow;": "\u27F8", + "longleftrightarrow;": "\u27F7", + "LongLeftRightArrow;": "\u27F7", + "Longleftrightarrow;": "\u27FA", + "longmapsto;": "\u27FC", + "longrightarrow;": "\u27F6", + "LongRightArrow;": "\u27F6", + "Longrightarrow;": "\u27F9", + "looparrowleft;": "\u21AB", + "looparrowright;": "\u21AC", + "lopar;": "\u2985", + "Lopf;": "\uD835\uDD43", + "lopf;": "\uD835\uDD5D", + "loplus;": "\u2A2D", + "lotimes;": "\u2A34", + "lowast;": "\u2217", + "lowbar;": "\u005F", + "LowerLeftArrow;": "\u2199", + "LowerRightArrow;": "\u2198", + "loz;": "\u25CA", + "lozenge;": "\u25CA", + "lozf;": "\u29EB", + "lpar;": "\u0028", + "lparlt;": "\u2993", + "lrarr;": "\u21C6", + "lrcorner;": "\u231F", + "lrhar;": "\u21CB", + "lrhard;": "\u296D", + "lrm;": "\u200E", + "lrtri;": "\u22BF", + "lsaquo;": "\u2039", + "lscr;": "\uD835\uDCC1", + "Lscr;": "\u2112", + "lsh;": "\u21B0", + "Lsh;": "\u21B0", + "lsim;": "\u2272", + "lsime;": "\u2A8D", + "lsimg;": "\u2A8F", + "lsqb;": "\u005B", + "lsquo;": "\u2018", + "lsquor;": "\u201A", + "Lstrok;": "\u0141", + "lstrok;": "\u0142", + "ltcc;": "\u2AA6", + "ltcir;": "\u2A79", + "lt;": "\u003C", + "lt": "\u003C", + "LT;": "\u003C", + "LT": "\u003C", + "Lt;": "\u226A", + "ltdot;": "\u22D6", + "lthree;": "\u22CB", + "ltimes;": "\u22C9", + "ltlarr;": "\u2976", + "ltquest;": "\u2A7B", + "ltri;": "\u25C3", + "ltrie;": "\u22B4", + "ltrif;": "\u25C2", + "ltrPar;": "\u2996", + "lurdshar;": "\u294A", + "luruhar;": "\u2966", + "lvertneqq;": "\u2268\uFE00", + "lvnE;": "\u2268\uFE00", + "macr;": "\u00AF", + "macr": "\u00AF", + "male;": "\u2642", + "malt;": "\u2720", + "maltese;": "\u2720", + "Map;": "\u2905", + "map;": "\u21A6", + "mapsto;": "\u21A6", + "mapstodown;": "\u21A7", + "mapstoleft;": "\u21A4", + "mapstoup;": "\u21A5", + "marker;": "\u25AE", + "mcomma;": "\u2A29", + "Mcy;": "\u041C", + "mcy;": "\u043C", + "mdash;": "\u2014", + "mDDot;": "\u223A", + "measuredangle;": "\u2221", + "MediumSpace;": "\u205F", + "Mellintrf;": "\u2133", + "Mfr;": "\uD835\uDD10", + "mfr;": "\uD835\uDD2A", + "mho;": "\u2127", + "micro;": "\u00B5", + "micro": "\u00B5", + "midast;": "\u002A", + "midcir;": "\u2AF0", + "mid;": "\u2223", + "middot;": "\u00B7", + "middot": "\u00B7", + "minusb;": "\u229F", + "minus;": "\u2212", + "minusd;": "\u2238", + "minusdu;": "\u2A2A", + "MinusPlus;": "\u2213", + "mlcp;": "\u2ADB", + "mldr;": "\u2026", + "mnplus;": "\u2213", + "models;": "\u22A7", + "Mopf;": "\uD835\uDD44", + "mopf;": "\uD835\uDD5E", + "mp;": "\u2213", + "mscr;": "\uD835\uDCC2", + "Mscr;": "\u2133", + "mstpos;": "\u223E", + "Mu;": "\u039C", + "mu;": "\u03BC", + "multimap;": "\u22B8", + "mumap;": "\u22B8", + "nabla;": "\u2207", + "Nacute;": "\u0143", + "nacute;": "\u0144", + "nang;": "\u2220\u20D2", + "nap;": "\u2249", + "napE;": "\u2A70\u0338", + "napid;": "\u224B\u0338", + "napos;": "\u0149", + "napprox;": "\u2249", + "natural;": "\u266E", + "naturals;": "\u2115", + "natur;": "\u266E", + "nbsp;": "\u00A0", + "nbsp": "\u00A0", + "nbump;": "\u224E\u0338", + "nbumpe;": "\u224F\u0338", + "ncap;": "\u2A43", + "Ncaron;": "\u0147", + "ncaron;": "\u0148", + "Ncedil;": "\u0145", + "ncedil;": "\u0146", + "ncong;": "\u2247", + "ncongdot;": "\u2A6D\u0338", + "ncup;": "\u2A42", + "Ncy;": "\u041D", + "ncy;": "\u043D", + "ndash;": "\u2013", + "nearhk;": "\u2924", + "nearr;": "\u2197", + "neArr;": "\u21D7", + "nearrow;": "\u2197", + "ne;": "\u2260", + "nedot;": "\u2250\u0338", + "NegativeMediumSpace;": "\u200B", + "NegativeThickSpace;": "\u200B", + "NegativeThinSpace;": "\u200B", + "NegativeVeryThinSpace;": "\u200B", + "nequiv;": "\u2262", + "nesear;": "\u2928", + "nesim;": "\u2242\u0338", + "NestedGreaterGreater;": "\u226B", + "NestedLessLess;": "\u226A", + "NewLine;": "\u000A", + "nexist;": "\u2204", + "nexists;": "\u2204", + "Nfr;": "\uD835\uDD11", + "nfr;": "\uD835\uDD2B", + "ngE;": "\u2267\u0338", + "nge;": "\u2271", + "ngeq;": "\u2271", + "ngeqq;": "\u2267\u0338", + "ngeqslant;": "\u2A7E\u0338", + "nges;": "\u2A7E\u0338", + "nGg;": "\u22D9\u0338", + "ngsim;": "\u2275", + "nGt;": "\u226B\u20D2", + "ngt;": "\u226F", + "ngtr;": "\u226F", + "nGtv;": "\u226B\u0338", + "nharr;": "\u21AE", + "nhArr;": "\u21CE", + "nhpar;": "\u2AF2", + "ni;": "\u220B", + "nis;": "\u22FC", + "nisd;": "\u22FA", + "niv;": "\u220B", + "NJcy;": "\u040A", + "njcy;": "\u045A", + "nlarr;": "\u219A", + "nlArr;": "\u21CD", + "nldr;": "\u2025", + "nlE;": "\u2266\u0338", + "nle;": "\u2270", + "nleftarrow;": "\u219A", + "nLeftarrow;": "\u21CD", + "nleftrightarrow;": "\u21AE", + "nLeftrightarrow;": "\u21CE", + "nleq;": "\u2270", + "nleqq;": "\u2266\u0338", + "nleqslant;": "\u2A7D\u0338", + "nles;": "\u2A7D\u0338", + "nless;": "\u226E", + "nLl;": "\u22D8\u0338", + "nlsim;": "\u2274", + "nLt;": "\u226A\u20D2", + "nlt;": "\u226E", + "nltri;": "\u22EA", + "nltrie;": "\u22EC", + "nLtv;": "\u226A\u0338", + "nmid;": "\u2224", + "NoBreak;": "\u2060", + "NonBreakingSpace;": "\u00A0", + "nopf;": "\uD835\uDD5F", + "Nopf;": "\u2115", + "Not;": "\u2AEC", + "not;": "\u00AC", + "not": "\u00AC", + "NotCongruent;": "\u2262", + "NotCupCap;": "\u226D", + "NotDoubleVerticalBar;": "\u2226", + "NotElement;": "\u2209", + "NotEqual;": "\u2260", + "NotEqualTilde;": "\u2242\u0338", + "NotExists;": "\u2204", + "NotGreater;": "\u226F", + "NotGreaterEqual;": "\u2271", + "NotGreaterFullEqual;": "\u2267\u0338", + "NotGreaterGreater;": "\u226B\u0338", + "NotGreaterLess;": "\u2279", + "NotGreaterSlantEqual;": "\u2A7E\u0338", + "NotGreaterTilde;": "\u2275", + "NotHumpDownHump;": "\u224E\u0338", + "NotHumpEqual;": "\u224F\u0338", + "notin;": "\u2209", + "notindot;": "\u22F5\u0338", + "notinE;": "\u22F9\u0338", + "notinva;": "\u2209", + "notinvb;": "\u22F7", + "notinvc;": "\u22F6", + "NotLeftTriangleBar;": "\u29CF\u0338", + "NotLeftTriangle;": "\u22EA", + "NotLeftTriangleEqual;": "\u22EC", + "NotLess;": "\u226E", + "NotLessEqual;": "\u2270", + "NotLessGreater;": "\u2278", + "NotLessLess;": "\u226A\u0338", + "NotLessSlantEqual;": "\u2A7D\u0338", + "NotLessTilde;": "\u2274", + "NotNestedGreaterGreater;": "\u2AA2\u0338", + "NotNestedLessLess;": "\u2AA1\u0338", + "notni;": "\u220C", + "notniva;": "\u220C", + "notnivb;": "\u22FE", + "notnivc;": "\u22FD", + "NotPrecedes;": "\u2280", + "NotPrecedesEqual;": "\u2AAF\u0338", + "NotPrecedesSlantEqual;": "\u22E0", + "NotReverseElement;": "\u220C", + "NotRightTriangleBar;": "\u29D0\u0338", + "NotRightTriangle;": "\u22EB", + "NotRightTriangleEqual;": "\u22ED", + "NotSquareSubset;": "\u228F\u0338", + "NotSquareSubsetEqual;": "\u22E2", + "NotSquareSuperset;": "\u2290\u0338", + "NotSquareSupersetEqual;": "\u22E3", + "NotSubset;": "\u2282\u20D2", + "NotSubsetEqual;": "\u2288", + "NotSucceeds;": "\u2281", + "NotSucceedsEqual;": "\u2AB0\u0338", + "NotSucceedsSlantEqual;": "\u22E1", + "NotSucceedsTilde;": "\u227F\u0338", + "NotSuperset;": "\u2283\u20D2", + "NotSupersetEqual;": "\u2289", + "NotTilde;": "\u2241", + "NotTildeEqual;": "\u2244", + "NotTildeFullEqual;": "\u2247", + "NotTildeTilde;": "\u2249", + "NotVerticalBar;": "\u2224", + "nparallel;": "\u2226", + "npar;": "\u2226", + "nparsl;": "\u2AFD\u20E5", + "npart;": "\u2202\u0338", + "npolint;": "\u2A14", + "npr;": "\u2280", + "nprcue;": "\u22E0", + "nprec;": "\u2280", + "npreceq;": "\u2AAF\u0338", + "npre;": "\u2AAF\u0338", + "nrarrc;": "\u2933\u0338", + "nrarr;": "\u219B", + "nrArr;": "\u21CF", + "nrarrw;": "\u219D\u0338", + "nrightarrow;": "\u219B", + "nRightarrow;": "\u21CF", + "nrtri;": "\u22EB", + "nrtrie;": "\u22ED", + "nsc;": "\u2281", + "nsccue;": "\u22E1", + "nsce;": "\u2AB0\u0338", + "Nscr;": "\uD835\uDCA9", + "nscr;": "\uD835\uDCC3", + "nshortmid;": "\u2224", + "nshortparallel;": "\u2226", + "nsim;": "\u2241", + "nsime;": "\u2244", + "nsimeq;": "\u2244", + "nsmid;": "\u2224", + "nspar;": "\u2226", + "nsqsube;": "\u22E2", + "nsqsupe;": "\u22E3", + "nsub;": "\u2284", + "nsubE;": "\u2AC5\u0338", + "nsube;": "\u2288", + "nsubset;": "\u2282\u20D2", + "nsubseteq;": "\u2288", + "nsubseteqq;": "\u2AC5\u0338", + "nsucc;": "\u2281", + "nsucceq;": "\u2AB0\u0338", + "nsup;": "\u2285", + "nsupE;": "\u2AC6\u0338", + "nsupe;": "\u2289", + "nsupset;": "\u2283\u20D2", + "nsupseteq;": "\u2289", + "nsupseteqq;": "\u2AC6\u0338", + "ntgl;": "\u2279", + "Ntilde;": "\u00D1", + "Ntilde": "\u00D1", + "ntilde;": "\u00F1", + "ntilde": "\u00F1", + "ntlg;": "\u2278", + "ntriangleleft;": "\u22EA", + "ntrianglelefteq;": "\u22EC", + "ntriangleright;": "\u22EB", + "ntrianglerighteq;": "\u22ED", + "Nu;": "\u039D", + "nu;": "\u03BD", + "num;": "\u0023", + "numero;": "\u2116", + "numsp;": "\u2007", + "nvap;": "\u224D\u20D2", + "nvdash;": "\u22AC", + "nvDash;": "\u22AD", + "nVdash;": "\u22AE", + "nVDash;": "\u22AF", + "nvge;": "\u2265\u20D2", + "nvgt;": "\u003E\u20D2", + "nvHarr;": "\u2904", + "nvinfin;": "\u29DE", + "nvlArr;": "\u2902", + "nvle;": "\u2264\u20D2", + "nvlt;": "\u003C\u20D2", + "nvltrie;": "\u22B4\u20D2", + "nvrArr;": "\u2903", + "nvrtrie;": "\u22B5\u20D2", + "nvsim;": "\u223C\u20D2", + "nwarhk;": "\u2923", + "nwarr;": "\u2196", + "nwArr;": "\u21D6", + "nwarrow;": "\u2196", + "nwnear;": "\u2927", + "Oacute;": "\u00D3", + "Oacute": "\u00D3", + "oacute;": "\u00F3", + "oacute": "\u00F3", + "oast;": "\u229B", + "Ocirc;": "\u00D4", + "Ocirc": "\u00D4", + "ocirc;": "\u00F4", + "ocirc": "\u00F4", + "ocir;": "\u229A", + "Ocy;": "\u041E", + "ocy;": "\u043E", + "odash;": "\u229D", + "Odblac;": "\u0150", + "odblac;": "\u0151", + "odiv;": "\u2A38", + "odot;": "\u2299", + "odsold;": "\u29BC", + "OElig;": "\u0152", + "oelig;": "\u0153", + "ofcir;": "\u29BF", + "Ofr;": "\uD835\uDD12", + "ofr;": "\uD835\uDD2C", + "ogon;": "\u02DB", + "Ograve;": "\u00D2", + "Ograve": "\u00D2", + "ograve;": "\u00F2", + "ograve": "\u00F2", + "ogt;": "\u29C1", + "ohbar;": "\u29B5", + "ohm;": "\u03A9", + "oint;": "\u222E", + "olarr;": "\u21BA", + "olcir;": "\u29BE", + "olcross;": "\u29BB", + "oline;": "\u203E", + "olt;": "\u29C0", + "Omacr;": "\u014C", + "omacr;": "\u014D", + "Omega;": "\u03A9", + "omega;": "\u03C9", + "Omicron;": "\u039F", + "omicron;": "\u03BF", + "omid;": "\u29B6", + "ominus;": "\u2296", + "Oopf;": "\uD835\uDD46", + "oopf;": "\uD835\uDD60", + "opar;": "\u29B7", + "OpenCurlyDoubleQuote;": "\u201C", + "OpenCurlyQuote;": "\u2018", + "operp;": "\u29B9", + "oplus;": "\u2295", + "orarr;": "\u21BB", + "Or;": "\u2A54", + "or;": "\u2228", + "ord;": "\u2A5D", + "order;": "\u2134", + "orderof;": "\u2134", + "ordf;": "\u00AA", + "ordf": "\u00AA", + "ordm;": "\u00BA", + "ordm": "\u00BA", + "origof;": "\u22B6", + "oror;": "\u2A56", + "orslope;": "\u2A57", + "orv;": "\u2A5B", + "oS;": "\u24C8", + "Oscr;": "\uD835\uDCAA", + "oscr;": "\u2134", + "Oslash;": "\u00D8", + "Oslash": "\u00D8", + "oslash;": "\u00F8", + "oslash": "\u00F8", + "osol;": "\u2298", + "Otilde;": "\u00D5", + "Otilde": "\u00D5", + "otilde;": "\u00F5", + "otilde": "\u00F5", + "otimesas;": "\u2A36", + "Otimes;": "\u2A37", + "otimes;": "\u2297", + "Ouml;": "\u00D6", + "Ouml": "\u00D6", + "ouml;": "\u00F6", + "ouml": "\u00F6", + "ovbar;": "\u233D", + "OverBar;": "\u203E", + "OverBrace;": "\u23DE", + "OverBracket;": "\u23B4", + "OverParenthesis;": "\u23DC", + "para;": "\u00B6", + "para": "\u00B6", + "parallel;": "\u2225", + "par;": "\u2225", + "parsim;": "\u2AF3", + "parsl;": "\u2AFD", + "part;": "\u2202", + "PartialD;": "\u2202", + "Pcy;": "\u041F", + "pcy;": "\u043F", + "percnt;": "\u0025", + "period;": "\u002E", + "permil;": "\u2030", + "perp;": "\u22A5", + "pertenk;": "\u2031", + "Pfr;": "\uD835\uDD13", + "pfr;": "\uD835\uDD2D", + "Phi;": "\u03A6", + "phi;": "\u03C6", + "phiv;": "\u03D5", + "phmmat;": "\u2133", + "phone;": "\u260E", + "Pi;": "\u03A0", + "pi;": "\u03C0", + "pitchfork;": "\u22D4", + "piv;": "\u03D6", + "planck;": "\u210F", + "planckh;": "\u210E", + "plankv;": "\u210F", + "plusacir;": "\u2A23", + "plusb;": "\u229E", + "pluscir;": "\u2A22", + "plus;": "\u002B", + "plusdo;": "\u2214", + "plusdu;": "\u2A25", + "pluse;": "\u2A72", + "PlusMinus;": "\u00B1", + "plusmn;": "\u00B1", + "plusmn": "\u00B1", + "plussim;": "\u2A26", + "plustwo;": "\u2A27", + "pm;": "\u00B1", + "Poincareplane;": "\u210C", + "pointint;": "\u2A15", + "popf;": "\uD835\uDD61", + "Popf;": "\u2119", + "pound;": "\u00A3", + "pound": "\u00A3", + "prap;": "\u2AB7", + "Pr;": "\u2ABB", + "pr;": "\u227A", + "prcue;": "\u227C", + "precapprox;": "\u2AB7", + "prec;": "\u227A", + "preccurlyeq;": "\u227C", + "Precedes;": "\u227A", + "PrecedesEqual;": "\u2AAF", + "PrecedesSlantEqual;": "\u227C", + "PrecedesTilde;": "\u227E", + "preceq;": "\u2AAF", + "precnapprox;": "\u2AB9", + "precneqq;": "\u2AB5", + "precnsim;": "\u22E8", + "pre;": "\u2AAF", + "prE;": "\u2AB3", + "precsim;": "\u227E", + "prime;": "\u2032", + "Prime;": "\u2033", + "primes;": "\u2119", + "prnap;": "\u2AB9", + "prnE;": "\u2AB5", + "prnsim;": "\u22E8", + "prod;": "\u220F", + "Product;": "\u220F", + "profalar;": "\u232E", + "profline;": "\u2312", + "profsurf;": "\u2313", + "prop;": "\u221D", + "Proportional;": "\u221D", + "Proportion;": "\u2237", + "propto;": "\u221D", + "prsim;": "\u227E", + "prurel;": "\u22B0", + "Pscr;": "\uD835\uDCAB", + "pscr;": "\uD835\uDCC5", + "Psi;": "\u03A8", + "psi;": "\u03C8", + "puncsp;": "\u2008", + "Qfr;": "\uD835\uDD14", + "qfr;": "\uD835\uDD2E", + "qint;": "\u2A0C", + "qopf;": "\uD835\uDD62", + "Qopf;": "\u211A", + "qprime;": "\u2057", + "Qscr;": "\uD835\uDCAC", + "qscr;": "\uD835\uDCC6", + "quaternions;": "\u210D", + "quatint;": "\u2A16", + "quest;": "\u003F", + "questeq;": "\u225F", + "quot;": "\u0022", + "quot": "\u0022", + "QUOT;": "\u0022", + "QUOT": "\u0022", + "rAarr;": "\u21DB", + "race;": "\u223D\u0331", + "Racute;": "\u0154", + "racute;": "\u0155", + "radic;": "\u221A", + "raemptyv;": "\u29B3", + "rang;": "\u27E9", + "Rang;": "\u27EB", + "rangd;": "\u2992", + "range;": "\u29A5", + "rangle;": "\u27E9", + "raquo;": "\u00BB", + "raquo": "\u00BB", + "rarrap;": "\u2975", + "rarrb;": "\u21E5", + "rarrbfs;": "\u2920", + "rarrc;": "\u2933", + "rarr;": "\u2192", + "Rarr;": "\u21A0", + "rArr;": "\u21D2", + "rarrfs;": "\u291E", + "rarrhk;": "\u21AA", + "rarrlp;": "\u21AC", + "rarrpl;": "\u2945", + "rarrsim;": "\u2974", + "Rarrtl;": "\u2916", + "rarrtl;": "\u21A3", + "rarrw;": "\u219D", + "ratail;": "\u291A", + "rAtail;": "\u291C", + "ratio;": "\u2236", + "rationals;": "\u211A", + "rbarr;": "\u290D", + "rBarr;": "\u290F", + "RBarr;": "\u2910", + "rbbrk;": "\u2773", + "rbrace;": "\u007D", + "rbrack;": "\u005D", + "rbrke;": "\u298C", + "rbrksld;": "\u298E", + "rbrkslu;": "\u2990", + "Rcaron;": "\u0158", + "rcaron;": "\u0159", + "Rcedil;": "\u0156", + "rcedil;": "\u0157", + "rceil;": "\u2309", + "rcub;": "\u007D", + "Rcy;": "\u0420", + "rcy;": "\u0440", + "rdca;": "\u2937", + "rdldhar;": "\u2969", + "rdquo;": "\u201D", + "rdquor;": "\u201D", + "rdsh;": "\u21B3", + "real;": "\u211C", + "realine;": "\u211B", + "realpart;": "\u211C", + "reals;": "\u211D", + "Re;": "\u211C", + "rect;": "\u25AD", + "reg;": "\u00AE", + "reg": "\u00AE", + "REG;": "\u00AE", + "REG": "\u00AE", + "ReverseElement;": "\u220B", + "ReverseEquilibrium;": "\u21CB", + "ReverseUpEquilibrium;": "\u296F", + "rfisht;": "\u297D", + "rfloor;": "\u230B", + "rfr;": "\uD835\uDD2F", + "Rfr;": "\u211C", + "rHar;": "\u2964", + "rhard;": "\u21C1", + "rharu;": "\u21C0", + "rharul;": "\u296C", + "Rho;": "\u03A1", + "rho;": "\u03C1", + "rhov;": "\u03F1", + "RightAngleBracket;": "\u27E9", + "RightArrowBar;": "\u21E5", + "rightarrow;": "\u2192", + "RightArrow;": "\u2192", + "Rightarrow;": "\u21D2", + "RightArrowLeftArrow;": "\u21C4", + "rightarrowtail;": "\u21A3", + "RightCeiling;": "\u2309", + "RightDoubleBracket;": "\u27E7", + "RightDownTeeVector;": "\u295D", + "RightDownVectorBar;": "\u2955", + "RightDownVector;": "\u21C2", + "RightFloor;": "\u230B", + "rightharpoondown;": "\u21C1", + "rightharpoonup;": "\u21C0", + "rightleftarrows;": "\u21C4", + "rightleftharpoons;": "\u21CC", + "rightrightarrows;": "\u21C9", + "rightsquigarrow;": "\u219D", + "RightTeeArrow;": "\u21A6", + "RightTee;": "\u22A2", + "RightTeeVector;": "\u295B", + "rightthreetimes;": "\u22CC", + "RightTriangleBar;": "\u29D0", + "RightTriangle;": "\u22B3", + "RightTriangleEqual;": "\u22B5", + "RightUpDownVector;": "\u294F", + "RightUpTeeVector;": "\u295C", + "RightUpVectorBar;": "\u2954", + "RightUpVector;": "\u21BE", + "RightVectorBar;": "\u2953", + "RightVector;": "\u21C0", + "ring;": "\u02DA", + "risingdotseq;": "\u2253", + "rlarr;": "\u21C4", + "rlhar;": "\u21CC", + "rlm;": "\u200F", + "rmoustache;": "\u23B1", + "rmoust;": "\u23B1", + "rnmid;": "\u2AEE", + "roang;": "\u27ED", + "roarr;": "\u21FE", + "robrk;": "\u27E7", + "ropar;": "\u2986", + "ropf;": "\uD835\uDD63", + "Ropf;": "\u211D", + "roplus;": "\u2A2E", + "rotimes;": "\u2A35", + "RoundImplies;": "\u2970", + "rpar;": "\u0029", + "rpargt;": "\u2994", + "rppolint;": "\u2A12", + "rrarr;": "\u21C9", + "Rrightarrow;": "\u21DB", + "rsaquo;": "\u203A", + "rscr;": "\uD835\uDCC7", + "Rscr;": "\u211B", + "rsh;": "\u21B1", + "Rsh;": "\u21B1", + "rsqb;": "\u005D", + "rsquo;": "\u2019", + "rsquor;": "\u2019", + "rthree;": "\u22CC", + "rtimes;": "\u22CA", + "rtri;": "\u25B9", + "rtrie;": "\u22B5", + "rtrif;": "\u25B8", + "rtriltri;": "\u29CE", + "RuleDelayed;": "\u29F4", + "ruluhar;": "\u2968", + "rx;": "\u211E", + "Sacute;": "\u015A", + "sacute;": "\u015B", + "sbquo;": "\u201A", + "scap;": "\u2AB8", + "Scaron;": "\u0160", + "scaron;": "\u0161", + "Sc;": "\u2ABC", + "sc;": "\u227B", + "sccue;": "\u227D", + "sce;": "\u2AB0", + "scE;": "\u2AB4", + "Scedil;": "\u015E", + "scedil;": "\u015F", + "Scirc;": "\u015C", + "scirc;": "\u015D", + "scnap;": "\u2ABA", + "scnE;": "\u2AB6", + "scnsim;": "\u22E9", + "scpolint;": "\u2A13", + "scsim;": "\u227F", + "Scy;": "\u0421", + "scy;": "\u0441", + "sdotb;": "\u22A1", + "sdot;": "\u22C5", + "sdote;": "\u2A66", + "searhk;": "\u2925", + "searr;": "\u2198", + "seArr;": "\u21D8", + "searrow;": "\u2198", + "sect;": "\u00A7", + "sect": "\u00A7", + "semi;": "\u003B", + "seswar;": "\u2929", + "setminus;": "\u2216", + "setmn;": "\u2216", + "sext;": "\u2736", + "Sfr;": "\uD835\uDD16", + "sfr;": "\uD835\uDD30", + "sfrown;": "\u2322", + "sharp;": "\u266F", + "SHCHcy;": "\u0429", + "shchcy;": "\u0449", + "SHcy;": "\u0428", + "shcy;": "\u0448", + "ShortDownArrow;": "\u2193", + "ShortLeftArrow;": "\u2190", + "shortmid;": "\u2223", + "shortparallel;": "\u2225", + "ShortRightArrow;": "\u2192", + "ShortUpArrow;": "\u2191", + "shy;": "\u00AD", + "shy": "\u00AD", + "Sigma;": "\u03A3", + "sigma;": "\u03C3", + "sigmaf;": "\u03C2", + "sigmav;": "\u03C2", + "sim;": "\u223C", + "simdot;": "\u2A6A", + "sime;": "\u2243", + "simeq;": "\u2243", + "simg;": "\u2A9E", + "simgE;": "\u2AA0", + "siml;": "\u2A9D", + "simlE;": "\u2A9F", + "simne;": "\u2246", + "simplus;": "\u2A24", + "simrarr;": "\u2972", + "slarr;": "\u2190", + "SmallCircle;": "\u2218", + "smallsetminus;": "\u2216", + "smashp;": "\u2A33", + "smeparsl;": "\u29E4", + "smid;": "\u2223", + "smile;": "\u2323", + "smt;": "\u2AAA", + "smte;": "\u2AAC", + "smtes;": "\u2AAC\uFE00", + "SOFTcy;": "\u042C", + "softcy;": "\u044C", + "solbar;": "\u233F", + "solb;": "\u29C4", + "sol;": "\u002F", + "Sopf;": "\uD835\uDD4A", + "sopf;": "\uD835\uDD64", + "spades;": "\u2660", + "spadesuit;": "\u2660", + "spar;": "\u2225", + "sqcap;": "\u2293", + "sqcaps;": "\u2293\uFE00", + "sqcup;": "\u2294", + "sqcups;": "\u2294\uFE00", + "Sqrt;": "\u221A", + "sqsub;": "\u228F", + "sqsube;": "\u2291", + "sqsubset;": "\u228F", + "sqsubseteq;": "\u2291", + "sqsup;": "\u2290", + "sqsupe;": "\u2292", + "sqsupset;": "\u2290", + "sqsupseteq;": "\u2292", + "square;": "\u25A1", + "Square;": "\u25A1", + "SquareIntersection;": "\u2293", + "SquareSubset;": "\u228F", + "SquareSubsetEqual;": "\u2291", + "SquareSuperset;": "\u2290", + "SquareSupersetEqual;": "\u2292", + "SquareUnion;": "\u2294", + "squarf;": "\u25AA", + "squ;": "\u25A1", + "squf;": "\u25AA", + "srarr;": "\u2192", + "Sscr;": "\uD835\uDCAE", + "sscr;": "\uD835\uDCC8", + "ssetmn;": "\u2216", + "ssmile;": "\u2323", + "sstarf;": "\u22C6", + "Star;": "\u22C6", + "star;": "\u2606", + "starf;": "\u2605", + "straightepsilon;": "\u03F5", + "straightphi;": "\u03D5", + "strns;": "\u00AF", + "sub;": "\u2282", + "Sub;": "\u22D0", + "subdot;": "\u2ABD", + "subE;": "\u2AC5", + "sube;": "\u2286", + "subedot;": "\u2AC3", + "submult;": "\u2AC1", + "subnE;": "\u2ACB", + "subne;": "\u228A", + "subplus;": "\u2ABF", + "subrarr;": "\u2979", + "subset;": "\u2282", + "Subset;": "\u22D0", + "subseteq;": "\u2286", + "subseteqq;": "\u2AC5", + "SubsetEqual;": "\u2286", + "subsetneq;": "\u228A", + "subsetneqq;": "\u2ACB", + "subsim;": "\u2AC7", + "subsub;": "\u2AD5", + "subsup;": "\u2AD3", + "succapprox;": "\u2AB8", + "succ;": "\u227B", + "succcurlyeq;": "\u227D", + "Succeeds;": "\u227B", + "SucceedsEqual;": "\u2AB0", + "SucceedsSlantEqual;": "\u227D", + "SucceedsTilde;": "\u227F", + "succeq;": "\u2AB0", + "succnapprox;": "\u2ABA", + "succneqq;": "\u2AB6", + "succnsim;": "\u22E9", + "succsim;": "\u227F", + "SuchThat;": "\u220B", + "sum;": "\u2211", + "Sum;": "\u2211", + "sung;": "\u266A", + "sup1;": "\u00B9", + "sup1": "\u00B9", + "sup2;": "\u00B2", + "sup2": "\u00B2", + "sup3;": "\u00B3", + "sup3": "\u00B3", + "sup;": "\u2283", + "Sup;": "\u22D1", + "supdot;": "\u2ABE", + "supdsub;": "\u2AD8", + "supE;": "\u2AC6", + "supe;": "\u2287", + "supedot;": "\u2AC4", + "Superset;": "\u2283", + "SupersetEqual;": "\u2287", + "suphsol;": "\u27C9", + "suphsub;": "\u2AD7", + "suplarr;": "\u297B", + "supmult;": "\u2AC2", + "supnE;": "\u2ACC", + "supne;": "\u228B", + "supplus;": "\u2AC0", + "supset;": "\u2283", + "Supset;": "\u22D1", + "supseteq;": "\u2287", + "supseteqq;": "\u2AC6", + "supsetneq;": "\u228B", + "supsetneqq;": "\u2ACC", + "supsim;": "\u2AC8", + "supsub;": "\u2AD4", + "supsup;": "\u2AD6", + "swarhk;": "\u2926", + "swarr;": "\u2199", + "swArr;": "\u21D9", + "swarrow;": "\u2199", + "swnwar;": "\u292A", + "szlig;": "\u00DF", + "szlig": "\u00DF", + "Tab;": "\u0009", + "target;": "\u2316", + "Tau;": "\u03A4", + "tau;": "\u03C4", + "tbrk;": "\u23B4", + "Tcaron;": "\u0164", + "tcaron;": "\u0165", + "Tcedil;": "\u0162", + "tcedil;": "\u0163", + "Tcy;": "\u0422", + "tcy;": "\u0442", + "tdot;": "\u20DB", + "telrec;": "\u2315", + "Tfr;": "\uD835\uDD17", + "tfr;": "\uD835\uDD31", + "there4;": "\u2234", + "therefore;": "\u2234", + "Therefore;": "\u2234", + "Theta;": "\u0398", + "theta;": "\u03B8", + "thetasym;": "\u03D1", + "thetav;": "\u03D1", + "thickapprox;": "\u2248", + "thicksim;": "\u223C", + "ThickSpace;": "\u205F\u200A", + "ThinSpace;": "\u2009", + "thinsp;": "\u2009", + "thkap;": "\u2248", + "thksim;": "\u223C", + "THORN;": "\u00DE", + "THORN": "\u00DE", + "thorn;": "\u00FE", + "thorn": "\u00FE", + "tilde;": "\u02DC", + "Tilde;": "\u223C", + "TildeEqual;": "\u2243", + "TildeFullEqual;": "\u2245", + "TildeTilde;": "\u2248", + "timesbar;": "\u2A31", + "timesb;": "\u22A0", + "times;": "\u00D7", + "times": "\u00D7", + "timesd;": "\u2A30", + "tint;": "\u222D", + "toea;": "\u2928", + "topbot;": "\u2336", + "topcir;": "\u2AF1", + "top;": "\u22A4", + "Topf;": "\uD835\uDD4B", + "topf;": "\uD835\uDD65", + "topfork;": "\u2ADA", + "tosa;": "\u2929", + "tprime;": "\u2034", + "trade;": "\u2122", + "TRADE;": "\u2122", + "triangle;": "\u25B5", + "triangledown;": "\u25BF", + "triangleleft;": "\u25C3", + "trianglelefteq;": "\u22B4", + "triangleq;": "\u225C", + "triangleright;": "\u25B9", + "trianglerighteq;": "\u22B5", + "tridot;": "\u25EC", + "trie;": "\u225C", + "triminus;": "\u2A3A", + "TripleDot;": "\u20DB", + "triplus;": "\u2A39", + "trisb;": "\u29CD", + "tritime;": "\u2A3B", + "trpezium;": "\u23E2", + "Tscr;": "\uD835\uDCAF", + "tscr;": "\uD835\uDCC9", + "TScy;": "\u0426", + "tscy;": "\u0446", + "TSHcy;": "\u040B", + "tshcy;": "\u045B", + "Tstrok;": "\u0166", + "tstrok;": "\u0167", + "twixt;": "\u226C", + "twoheadleftarrow;": "\u219E", + "twoheadrightarrow;": "\u21A0", + "Uacute;": "\u00DA", + "Uacute": "\u00DA", + "uacute;": "\u00FA", + "uacute": "\u00FA", + "uarr;": "\u2191", + "Uarr;": "\u219F", + "uArr;": "\u21D1", + "Uarrocir;": "\u2949", + "Ubrcy;": "\u040E", + "ubrcy;": "\u045E", + "Ubreve;": "\u016C", + "ubreve;": "\u016D", + "Ucirc;": "\u00DB", + "Ucirc": "\u00DB", + "ucirc;": "\u00FB", + "ucirc": "\u00FB", + "Ucy;": "\u0423", + "ucy;": "\u0443", + "udarr;": "\u21C5", + "Udblac;": "\u0170", + "udblac;": "\u0171", + "udhar;": "\u296E", + "ufisht;": "\u297E", + "Ufr;": "\uD835\uDD18", + "ufr;": "\uD835\uDD32", + "Ugrave;": "\u00D9", + "Ugrave": "\u00D9", + "ugrave;": "\u00F9", + "ugrave": "\u00F9", + "uHar;": "\u2963", + "uharl;": "\u21BF", + "uharr;": "\u21BE", + "uhblk;": "\u2580", + "ulcorn;": "\u231C", + "ulcorner;": "\u231C", + "ulcrop;": "\u230F", + "ultri;": "\u25F8", + "Umacr;": "\u016A", + "umacr;": "\u016B", + "uml;": "\u00A8", + "uml": "\u00A8", + "UnderBar;": "\u005F", + "UnderBrace;": "\u23DF", + "UnderBracket;": "\u23B5", + "UnderParenthesis;": "\u23DD", + "Union;": "\u22C3", + "UnionPlus;": "\u228E", + "Uogon;": "\u0172", + "uogon;": "\u0173", + "Uopf;": "\uD835\uDD4C", + "uopf;": "\uD835\uDD66", + "UpArrowBar;": "\u2912", + "uparrow;": "\u2191", + "UpArrow;": "\u2191", + "Uparrow;": "\u21D1", + "UpArrowDownArrow;": "\u21C5", + "updownarrow;": "\u2195", + "UpDownArrow;": "\u2195", + "Updownarrow;": "\u21D5", + "UpEquilibrium;": "\u296E", + "upharpoonleft;": "\u21BF", + "upharpoonright;": "\u21BE", + "uplus;": "\u228E", + "UpperLeftArrow;": "\u2196", + "UpperRightArrow;": "\u2197", + "upsi;": "\u03C5", + "Upsi;": "\u03D2", + "upsih;": "\u03D2", + "Upsilon;": "\u03A5", + "upsilon;": "\u03C5", + "UpTeeArrow;": "\u21A5", + "UpTee;": "\u22A5", + "upuparrows;": "\u21C8", + "urcorn;": "\u231D", + "urcorner;": "\u231D", + "urcrop;": "\u230E", + "Uring;": "\u016E", + "uring;": "\u016F", + "urtri;": "\u25F9", + "Uscr;": "\uD835\uDCB0", + "uscr;": "\uD835\uDCCA", + "utdot;": "\u22F0", + "Utilde;": "\u0168", + "utilde;": "\u0169", + "utri;": "\u25B5", + "utrif;": "\u25B4", + "uuarr;": "\u21C8", + "Uuml;": "\u00DC", + "Uuml": "\u00DC", + "uuml;": "\u00FC", + "uuml": "\u00FC", + "uwangle;": "\u29A7", + "vangrt;": "\u299C", + "varepsilon;": "\u03F5", + "varkappa;": "\u03F0", + "varnothing;": "\u2205", + "varphi;": "\u03D5", + "varpi;": "\u03D6", + "varpropto;": "\u221D", + "varr;": "\u2195", + "vArr;": "\u21D5", + "varrho;": "\u03F1", + "varsigma;": "\u03C2", + "varsubsetneq;": "\u228A\uFE00", + "varsubsetneqq;": "\u2ACB\uFE00", + "varsupsetneq;": "\u228B\uFE00", + "varsupsetneqq;": "\u2ACC\uFE00", + "vartheta;": "\u03D1", + "vartriangleleft;": "\u22B2", + "vartriangleright;": "\u22B3", + "vBar;": "\u2AE8", + "Vbar;": "\u2AEB", + "vBarv;": "\u2AE9", + "Vcy;": "\u0412", + "vcy;": "\u0432", + "vdash;": "\u22A2", + "vDash;": "\u22A8", + "Vdash;": "\u22A9", + "VDash;": "\u22AB", + "Vdashl;": "\u2AE6", + "veebar;": "\u22BB", + "vee;": "\u2228", + "Vee;": "\u22C1", + "veeeq;": "\u225A", + "vellip;": "\u22EE", + "verbar;": "\u007C", + "Verbar;": "\u2016", + "vert;": "\u007C", + "Vert;": "\u2016", + "VerticalBar;": "\u2223", + "VerticalLine;": "\u007C", + "VerticalSeparator;": "\u2758", + "VerticalTilde;": "\u2240", + "VeryThinSpace;": "\u200A", + "Vfr;": "\uD835\uDD19", + "vfr;": "\uD835\uDD33", + "vltri;": "\u22B2", + "vnsub;": "\u2282\u20D2", + "vnsup;": "\u2283\u20D2", + "Vopf;": "\uD835\uDD4D", + "vopf;": "\uD835\uDD67", + "vprop;": "\u221D", + "vrtri;": "\u22B3", + "Vscr;": "\uD835\uDCB1", + "vscr;": "\uD835\uDCCB", + "vsubnE;": "\u2ACB\uFE00", + "vsubne;": "\u228A\uFE00", + "vsupnE;": "\u2ACC\uFE00", + "vsupne;": "\u228B\uFE00", + "Vvdash;": "\u22AA", + "vzigzag;": "\u299A", + "Wcirc;": "\u0174", + "wcirc;": "\u0175", + "wedbar;": "\u2A5F", + "wedge;": "\u2227", + "Wedge;": "\u22C0", + "wedgeq;": "\u2259", + "weierp;": "\u2118", + "Wfr;": "\uD835\uDD1A", + "wfr;": "\uD835\uDD34", + "Wopf;": "\uD835\uDD4E", + "wopf;": "\uD835\uDD68", + "wp;": "\u2118", + "wr;": "\u2240", + "wreath;": "\u2240", + "Wscr;": "\uD835\uDCB2", + "wscr;": "\uD835\uDCCC", + "xcap;": "\u22C2", + "xcirc;": "\u25EF", + "xcup;": "\u22C3", + "xdtri;": "\u25BD", + "Xfr;": "\uD835\uDD1B", + "xfr;": "\uD835\uDD35", + "xharr;": "\u27F7", + "xhArr;": "\u27FA", + "Xi;": "\u039E", + "xi;": "\u03BE", + "xlarr;": "\u27F5", + "xlArr;": "\u27F8", + "xmap;": "\u27FC", + "xnis;": "\u22FB", + "xodot;": "\u2A00", + "Xopf;": "\uD835\uDD4F", + "xopf;": "\uD835\uDD69", + "xoplus;": "\u2A01", + "xotime;": "\u2A02", + "xrarr;": "\u27F6", + "xrArr;": "\u27F9", + "Xscr;": "\uD835\uDCB3", + "xscr;": "\uD835\uDCCD", + "xsqcup;": "\u2A06", + "xuplus;": "\u2A04", + "xutri;": "\u25B3", + "xvee;": "\u22C1", + "xwedge;": "\u22C0", + "Yacute;": "\u00DD", + "Yacute": "\u00DD", + "yacute;": "\u00FD", + "yacute": "\u00FD", + "YAcy;": "\u042F", + "yacy;": "\u044F", + "Ycirc;": "\u0176", + "ycirc;": "\u0177", + "Ycy;": "\u042B", + "ycy;": "\u044B", + "yen;": "\u00A5", + "yen": "\u00A5", + "Yfr;": "\uD835\uDD1C", + "yfr;": "\uD835\uDD36", + "YIcy;": "\u0407", + "yicy;": "\u0457", + "Yopf;": "\uD835\uDD50", + "yopf;": "\uD835\uDD6A", + "Yscr;": "\uD835\uDCB4", + "yscr;": "\uD835\uDCCE", + "YUcy;": "\u042E", + "yucy;": "\u044E", + "yuml;": "\u00FF", + "yuml": "\u00FF", + "Yuml;": "\u0178", + "Zacute;": "\u0179", + "zacute;": "\u017A", + "Zcaron;": "\u017D", + "zcaron;": "\u017E", + "Zcy;": "\u0417", + "zcy;": "\u0437", + "Zdot;": "\u017B", + "zdot;": "\u017C", + "zeetrf;": "\u2128", + "ZeroWidthSpace;": "\u200B", + "Zeta;": "\u0396", + "zeta;": "\u03B6", + "zfr;": "\uD835\uDD37", + "Zfr;": "\u2128", + "ZHcy;": "\u0416", + "zhcy;": "\u0436", + "zigrarr;": "\u21DD", + "zopf;": "\uD835\uDD6B", + "Zopf;": "\u2124", + "Zscr;": "\uD835\uDCB5", + "zscr;": "\uD835\uDCCF", + "zwj;": "\u200D", + "zwnj;": "\u200C" +}; + +}, +{}], +13:[function(_dereq_,module,exports){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = _dereq_('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + try { + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +}, +{"util/":15}], +14:[function(_dereq_,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +}, +{}], +15:[function(_dereq_,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = _dereq_('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = _dereq_('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,_dereq_("/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +}, +{"./support/isBuffer":14,"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":18,"inherits":17}], +16:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + throw TypeError('Uncaught, unspecified "error" event.'); + } + return false; + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + console.trace(); + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +}, +{}], +17:[function(_dereq_,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +}, +{}], +18:[function(_dereq_,module,exports){ +// shim for using process in browser + +var process = module.exports = {}; + +process.nextTick = (function () { + var canSetImmediate = typeof window !== 'undefined' + && window.setImmediate; + var canPost = typeof window !== 'undefined' + && window.postMessage && window.addEventListener + ; + + if (canSetImmediate) { + return function (f) { return window.setImmediate(f) }; + } + + if (canPost) { + var queue = []; + window.addEventListener('message', function (ev) { + var source = ev.source; + if ((source === window || source === null) && ev.data === 'process-tick') { + ev.stopPropagation(); + if (queue.length > 0) { + var fn = queue.shift(); + fn(); + } + } + }, true); + + return function nextTick(fn) { + queue.push(fn); + window.postMessage('process-tick', '*'); + }; + } + + return function nextTick(fn) { + setTimeout(fn, 0); + }; +})(); + +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; + +function noop() {} + +process.on = noop; +process.once = noop; +process.off = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +} + +// TODO(shtylman) +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; + +}, +{}], +19:[function(_dereq_,module,exports){ +module.exports=_dereq_(14) +}, +{}], +20:[function(_dereq_,module,exports){ +module.exports=_dereq_(15) +}, +{"./support/isBuffer":19,"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":18,"inherits":17}]},{},[9]) +(9) + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/html_completions.js b/plugins/node_modules/ace/lib/ace/mode/html_completions.js new file mode 100644 index 00000000..679e4f82 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html_completions.js @@ -0,0 +1,359 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var TokenIterator = require("../token_iterator").TokenIterator; + +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; + +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; + +var globalAttributes = commonAttributes.concat(eventAttributes); + +var attributeMap = { + "html": {"manifest": 1}, + "head": {}, + "title": {}, + "base": {"href": 1, "target": 1}, + "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, + "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, + "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, + "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, + "noscript": {"href": 1}, + "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, + "section": {}, + "nav": {}, + "article": {"pubdate": 1}, + "aside": {}, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "header": {}, + "footer": {}, + "address": {}, + "main": {}, + "p": {}, + "hr": {}, + "pre": {}, + "blockquote": {"cite": 1}, + "ol": {"start": 1, "reversed": 1}, + "ul": {}, + "li": {"value": 1}, + "dl": {}, + "dt": {}, + "dd": {}, + "figure": {}, + "figcaption": {}, + "div": {}, + "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, + "em": {}, + "strong": {}, + "small": {}, + "s": {}, + "cite": {}, + "q": {"cite": 1}, + "dfn": {}, + "abbr": {}, + "data": {}, + "time": {"datetime": 1}, + "code": {}, + "var": {}, + "samp": {}, + "kbd": {}, + "sub": {}, + "sup": {}, + "i": {}, + "b": {}, + "u": {}, + "mark": {}, + "ruby": {}, + "rt": {}, + "rp": {}, + "bdi": {}, + "bdo": {}, + "span": {}, + "br": {}, + "wbr": {}, + "ins": {"cite": 1, "datetime": 1}, + "del": {"cite": 1, "datetime": 1}, + "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, + "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, + "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, + "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, + "param": {"name": 1, "value": 1}, + "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, + "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, + "source": {"src": 1, "type": 1, "media": 1}, + "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, + "canvas": {"width": 1, "height": 1}, + "map": {"name": 1}, + "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, + "svg": {}, + "math": {}, + "table": {"summary": 1}, + "caption": {}, + "colgroup": {"span": 1}, + "col": {"span": 1}, + "tbody": {}, + "thead": {}, + "tfoot": {}, + "tr": {}, + "td": {"headers": 1, "rowspan": 1, "colspan": 1}, + "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, + "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, + "fieldset": {"disabled": 1, "form": 1, "name": 1}, + "legend": {}, + "label": {"form": 1, "for": 1}, + "input": { + "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, + "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, + "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, + "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, + "datalist": {}, + "optgroup": {"disabled": 1, "label": 1}, + "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, + "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, + "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, + "output": {"for": 1, "form": 1, "name": 1}, + "progress": {"value": 1, "max": 1}, + "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, + "details": {"open": 1}, + "summary": {}, + "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, + "menu": {"type": 1, "label": 1}, + "dialog": {"open": 1} +}; + +var elements = Object.keys(attributeMap); + +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} + +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")){ + token = iterator.stepBackward(); + } + if (token) + return token.value; +} + +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")){ + token = iterator.stepBackward(); + } + if (token) + return token.value; +} + +var HtmlCompletions = function() { + +}; + +(function() { + + this.getCompletions = function(state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + + if (!token) + return []; + + // tag name + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + + // tag attribute + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + + // tag attribute values + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + + // HTML entities + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + + return []; + }; + + this.getTagCompletions = function(state, session, pos, prefix) { + return elements.map(function(element){ + return { + value: element, + meta: "tag", + score: Number.MAX_VALUE + }; + }); + }; + + this.getAttributeCompletions = function(state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function(attribute){ + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: Number.MAX_VALUE + }; + }); + }; + + this.getAttributeValueCompletions = function(state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function(value){ + return { + caption: value, + snippet: value, + meta: "attribute value", + score: Number.MAX_VALUE + }; + }); + }; + + this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + + return values.map(function(value){ + return { + caption: value, + snippet: value, + meta: "html entity", + score: Number.MAX_VALUE + }; + }); + }; + +}).call(HtmlCompletions.prototype); + +exports.HtmlCompletions = HtmlCompletions; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/html_elixir.js b/plugins/node_modules/ace/lib/ace/mode/html_elixir.js new file mode 100644 index 00000000..079399b8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html_elixir.js @@ -0,0 +1,59 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlElixirHighlightRules = require("./html_elixir_highlight_rules").HtmlElixirHighlightRules; +var HtmlMode = require("./html").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var ElixirMode = require("./elixir").Mode; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = HtmlElixirHighlightRules; + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode, + "elixir-": ElixirMode + }); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + + this.$id = "ace/mode/html_elixir"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/html_elixir_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/html_elixir_highlight_rules.js new file mode 100644 index 00000000..9d61ea10 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html_elixir_highlight_rules.js @@ -0,0 +1,84 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + "use strict"; + + var oop = require("../lib/oop"); + var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; + + var HtmlElixirHighlightRules = function() { + HtmlHighlightRules.call(this); + + var startRules = [ + { + regex: "<%%|%%>", + token: "constant.language.escape" + }, { + token : "comment.start.eex", + regex : "<%#", + push : [{ + token : "comment.end.eex", + regex: "%>", + next: "pop", + defaultToken:"comment" + }] + }, { + token : "support.elixir_tag", + regex : "<%+(?!>)[-=]?", + push : "elixir-start" + } + ]; + + var endRules = [ + { + token : "support.elixir_tag", + regex : "%>", + next : "pop" + }, { + token: "comment", + regex: "#(?:[^%]|%[^>])*" + } + ]; + + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + + this.embedRules(ElixirHighlightRules, "elixir-", endRules, ["start"]); + + this.normalizeRules(); + }; + + + oop.inherits(HtmlElixirHighlightRules, HtmlHighlightRules); + + exports.HtmlElixirHighlightRules = HtmlElixirHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/html_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/html_highlight_rules.js new file mode 100644 index 00000000..de8661b1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html_highlight_rules.js @@ -0,0 +1,111 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; + +var tagMap = lang.createMap({ + a : 'anchor', + button : 'form', + form : 'form', + img : 'image', + input : 'form', + label : 'form', + option : 'form', + script : 'script', + select : 'form', + textarea : 'form', + style : 'style', + table : 'table', + tbody : 'table', + td : 'table', + tfoot : 'table', + th : 'table', + tr : 'table' +}); + +var HtmlHighlightRules = function() { + XmlHighlightRules.call(this); + + this.addRules({ + attributes: [{ + include : "tag_whitespace" + }, { + token : "entity.other.attribute-name.xml", + regex : "[-_a-zA-Z0-9:.]+" + }, { + token : "keyword.operator.attribute-equals.xml", + regex : "=", + push : [{ + include: "tag_whitespace" + }, { + token : "string.unquoted.attribute-value.html", + regex : "[^<>='\"`\\s]+", + next : "pop" + }, { + token : "empty", + regex : "", + next : "pop" + }] + }, { + include : "attribute_value" + }], + tag: [{ + token : function(start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex : "(</?)([-_a-zA-Z0-9:.]+)", + next: "tag_stuff" + }], + tag_stuff: [ + {include : "attributes"}, + {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"} + ] + }); + + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); + + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; + +oop.inherits(HtmlHighlightRules, XmlHighlightRules); + +exports.HtmlHighlightRules = HtmlHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/html_ruby.js b/plugins/node_modules/ace/lib/ace/mode/html_ruby.js new file mode 100644 index 00000000..ab9aa083 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html_ruby.js @@ -0,0 +1,59 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlRubyHighlightRules = require("./html_ruby_highlight_rules").HtmlRubyHighlightRules; +var HtmlMode = require("./html").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var RubyMode = require("./ruby").Mode; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = HtmlRubyHighlightRules; + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode, + "ruby-": RubyMode + }); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + + this.$id = "ace/mode/html_ruby"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/html_ruby_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/html_ruby_highlight_rules.js new file mode 100644 index 00000000..47f113cf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html_ruby_highlight_rules.js @@ -0,0 +1,84 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + "use strict"; + + var oop = require("../lib/oop"); + var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; + + var HtmlRubyHighlightRules = function() { + HtmlHighlightRules.call(this); + + var startRules = [ + { + regex: "<%%|%%>", + token: "constant.language.escape" + }, { + token : "comment.start.erb", + regex : "<%#", + push : [{ + token : "comment.end.erb", + regex: "%>", + next: "pop", + defaultToken:"comment" + }] + }, { + token : "support.ruby_tag", + regex : "<%+(?!>)[-=]?", + push : "ruby-start" + } + ]; + + var endRules = [ + { + token : "support.ruby_tag", + regex : "%>", + next : "pop" + }, { + token: "comment", + regex: "#(?:[^%]|%[^>])*" + } + ]; + + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + + this.embedRules(RubyHighlightRules, "ruby-", endRules, ["start"]); + + this.normalizeRules(); + }; + + + oop.inherits(HtmlRubyHighlightRules, HtmlHighlightRules); + + exports.HtmlRubyHighlightRules = HtmlRubyHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/html_test.js b/plugins/node_modules/ace/lib/ace/mode/html_test.js new file mode 100644 index 00000000..10f3fea4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html_test.js @@ -0,0 +1,67 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var Range = require("../range").Range; +var HtmlMode = require("./html").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new HtmlMode(); + }, + + "test: toggle comment lines" : function() { + var session = new EditSession([" abc", "", "fg"]); + + var range = new Range(0, 3, 1, 1); + var comment = this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal([" <!--abc-->", "", "fg"].join("\n"), session.toString()); + }, + + "test: next line indent should be the same as the current line indent" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", " abc")); + assert.equal("", this.mode.getNextLineIndent("start", "abc")); + assert.equal("\t", this.mode.getNextLineIndent("start", "\tabc")); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/html_worker.js b/plugins/node_modules/ace/lib/ace/mode/html_worker.js new file mode 100644 index 00000000..ec595f31 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/html_worker.js @@ -0,0 +1,92 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var Mirror = require("../worker/mirror").Mirror; +var SAXParser = require("./html/saxparser").SAXParser; + +var errorTypes = { + "expected-doctype-but-got-start-tag": "info", + "expected-doctype-but-got-chars": "info", + "non-html-root": "info" +}; + +var Worker = exports.Worker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(400); + this.context = null; +}; + +oop.inherits(Worker, Mirror); + +(function() { + + this.setOptions = function(options) { + this.context = options.context; + }; + + this.onUpdate = function() { + var value = this.doc.getValue(); + if (!value) + return; + var parser = new SAXParser(); + var errors = []; + var noop = function(){}; + parser.contentHandler = { + startDocument: noop, + endDocument: noop, + startElement: noop, + endElement: noop, + characters: noop + }; + parser.errorHandler = { + error: function(message, location, code) { + errors.push({ + row: location.line, + column: location.column, + text: message, + type: errorTypes[code] || "error" + }); + } + }; + if (this.context) + parser.parseFragment(value, this.context); + else + parser.parse(value); + this.sender.emit("error", errors); + }; + +}).call(Worker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/ini.js b/plugins/node_modules/ace/lib/ace/mode/ini.js new file mode 100644 index 00000000..9a07397a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ini.js @@ -0,0 +1,54 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var IniHighlightRules = require("./ini_highlight_rules").IniHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/ini").FoldMode; + +var Mode = function() { + this.HighlightRules = IniHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = ";"; + this.blockComment = null; + this.$id = "ace/mode/ini"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/ini_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/ini_highlight_rules.js new file mode 100644 index 00000000..8ce3d949 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ini_highlight_rules.js @@ -0,0 +1,112 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from tool\tm bundles\ini.tmbundle\Syntaxes\Ini.plist (uuid: ) */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var escapeRe = "\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})"; + +var IniHighlightRules = function() { + this.$rules = { + start: [{ + token: 'punctuation.definition.comment.ini', + regex: '#.*', + push_: [{ + token: 'comment.line.number-sign.ini', + regex: '$|^', + next: 'pop' + }, { + defaultToken: 'comment.line.number-sign.ini' + }] + }, { + token: 'punctuation.definition.comment.ini', + regex: ';.*', + push_: [{ + token: 'comment.line.semicolon.ini', + regex: '$|^', + next: 'pop' + }, { + defaultToken: 'comment.line.semicolon.ini' + }] + }, { + token: ['keyword.other.definition.ini', 'text', 'punctuation.separator.key-value.ini'], + regex: '\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)' + }, { + token: ['punctuation.definition.entity.ini', 'constant.section.group-title.ini', 'punctuation.definition.entity.ini'], + regex: '^(\\[)(.*?)(\\])' + }, { + token: 'punctuation.definition.string.begin.ini', + regex: "'", + push: [{ + token: 'punctuation.definition.string.end.ini', + regex: "'", + next: 'pop' + }, { + token: "constant.language.escape", + regex: escapeRe + }, { + defaultToken: 'string.quoted.single.ini' + }] + }, { + token: 'punctuation.definition.string.begin.ini', + regex: '"', + push: [{ + token: "constant.language.escape", + regex: escapeRe + }, { + token: 'punctuation.definition.string.end.ini', + regex: '"', + next: 'pop' + }, { + defaultToken: 'string.quoted.double.ini' + }] + }] + }; + + this.normalizeRules(); +}; + +IniHighlightRules.metaData = { + fileTypes: ['ini', 'conf'], + keyEquivalent: '^~I', + name: 'Ini', + scopeName: 'source.ini' +}; + + +oop.inherits(IniHighlightRules, TextHighlightRules); + +exports.IniHighlightRules = IniHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/io.js b/plugins/node_modules/ace/lib/ace/mode/io.js new file mode 100644 index 00000000..fd1ecf85 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/io.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var IoHighlightRules = require("./io_highlight_rules").IoHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = IoHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + // Extra logic goes here. + this.$id = "ace/mode/io"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/io_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/io_highlight_rules.js new file mode 100644 index 00000000..34f3fb93 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/io_highlight_rules.js @@ -0,0 +1,120 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from tm bundles\io.tmbundle/Syntaxes/io.plist (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var IoHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: [ 'text', 'meta.empty-parenthesis.io' ], + regex: '(\\()(\\))', + comment: 'we match this to overload return inside () --Allan; scoping rules for what gets the scope have changed, so we now group the ) instead of the ( -- Rob' }, + { token: [ 'text', 'meta.comma-parenthesis.io' ], + regex: '(\\,)(\\))', + comment: 'We want to do the same for ,) -- Seckar; same as above -- Rob' }, + { token: 'keyword.control.io', + regex: '\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b' }, + { token: 'punctuation.definition.comment.io', + regex: '/\\*', + push: + [ { token: 'punctuation.definition.comment.io', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.io' } ] }, + { token: 'punctuation.definition.comment.io', + regex: '//', + push: + [ { token: 'comment.line.double-slash.io', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-slash.io' } ] }, + { token: 'punctuation.definition.comment.io', + regex: '#', + push: + [ { token: 'comment.line.number-sign.io', regex: '$', next: 'pop' }, + { defaultToken: 'comment.line.number-sign.io' } ] }, + { token: 'variable.language.io', + regex: '\\b(?:self|sender|target|proto|protos|parent)\\b', + comment: 'I wonder if some of this isn\'t variable.other.language? --Allan; scoping this as variable.language to match Objective-C\'s handling of \'self\', which is inconsistent with C++\'s handling of \'this\' but perhaps intentionally so -- Rob' }, + { token: 'keyword.operator.io', + regex: '<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b' }, + { token: 'constant.other.io', regex: '\\bGL[\\w_]+\\b' }, + { token: 'support.class.io', regex: '\\b[A-Z](?:\\w+)?\\b' }, + { token: 'support.function.io', + regex: '\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b' }, + { token: 'support.function.open-gl.io', + regex: '\\bgl(?:u|ut)?[A-Z]\\w+\\b' }, + { token: 'punctuation.definition.string.begin.io', + regex: '"""', + push: + [ { token: 'punctuation.definition.string.end.io', + regex: '"""', + next: 'pop' }, + { token: 'constant.character.escape.io', regex: '\\\\.' }, + { defaultToken: 'string.quoted.triple.io' } ] }, + { token: 'punctuation.definition.string.begin.io', + regex: '"', + push: + [ { token: 'punctuation.definition.string.end.io', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.io', regex: '\\\\.' }, + { defaultToken: 'string.quoted.double.io' } ] }, + { token: 'constant.numeric.io', + regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, + { token: 'variable.other.global.io', regex: 'Lobby\\b' }, + { token: 'constant.language.io', + regex: '\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b' } ] }; + + this.normalizeRules(); +}; + +IoHighlightRules.metaData = { fileTypes: [ 'io' ], + keyEquivalent: '^~I', + name: 'Io', + scopeName: 'source.io' }; + + +oop.inherits(IoHighlightRules, TextHighlightRules); + +exports.IoHighlightRules = IoHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/jack.js b/plugins/node_modules/ace/lib/ace/mode/jack.js new file mode 100644 index 00000000..73267c4b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jack.js @@ -0,0 +1,79 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./jack_highlight_rules").JackHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = HighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "--"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + + this.$id = "ace/mode/jack"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/jack_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/jack_highlight_rules.js new file mode 100644 index 00000000..edf7c856 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jack_highlight_rules.js @@ -0,0 +1,142 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var JackHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + this.$rules = { + "start" : [ + { + token : "string", + regex : '"', + next : "string2" + }, { + token : "string", + regex : "'", + next : "string1" + }, { + token : "constant.numeric", // hex + regex: "-?0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "(?:0|[-+]?[1-9][0-9]*)\\b" + }, { + token : "constant.binary", + regex : "<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : "constant.language.null", + regex : "null\\b" + }, { + token : "storage.type", + regex: "(?:Integer|Boolean|Null|String|Buffer|Tuple|List|Object|Function|Coroutine|Form)\\b" + }, { + token : "keyword", + regex : "(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b" + }, { + token : "language.builtin", + regex : "(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b" + }, { + token : "comment", + regex : "--.*$" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "storage.form", + regex : "@[a-z]+" + }, { + token : "constant.other.symbol", + regex : ':+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' + }, { + token : "variable", + regex : '[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' + }, { + token : "keyword.operator", + regex : "\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!" + }, { + token : "text", + regex : "\\s+" + } + ], + "string1" : [ + { + token : "constant.language.escape", + regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ + }, { + token : "string", + regex : "[^'\\\\]+" + }, { + token : "string", + regex : "'", + next : "start" + }, { + token : "string", + regex : "", + next : "start" + } + ], + "string2" : [ + { + token : "constant.language.escape", + regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ + }, { + token : "string", + regex : '[^"\\\\]+' + }, { + token : "string", + regex : '"', + next : "start" + }, { + token : "string", + regex : "", + next : "start" + } + ] + }; + +}; + +oop.inherits(JackHighlightRules, TextHighlightRules); + +exports.JackHighlightRules = JackHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/jade.js b/plugins/node_modules/ace/lib/ace/mode/jade.js new file mode 100644 index 00000000..fb202766 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jade.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Garen J. Torikian <gjtorikian @ gmail DOT com> + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JadeHighlightRules = require("./jade_highlight_rules").JadeHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = JadeHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.$id = "ace/mode/jade"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/jade_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/jade_highlight_rules.js new file mode 100644 index 00000000..9d5c7d03 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jade_highlight_rules.js @@ -0,0 +1,343 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Garen J. Torikian <gjtorikian @ gmail DOT com> + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: C5B73B98-5F2A-42E3-9F0E-028A74A9FE4B) +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; +var SassHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; +var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; +var CoffeeHighlightRules = require("./coffee_highlight_rules").CoffeeHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; + +function mixin_embed(tag, prefix) { + return { + token : "entity.name.function.jade", + regex : "^\\s*\\:" + tag, + next : prefix + "start" + }; +} + +var JadeHighlightRules = function() { + + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-6][0-7]?|" + // oct + "37[0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = + { + "start": [ + { + token: "keyword.control.import.include.jade", + regex: "\\s*\\binclude\\b" + }, + { + token: "keyword.other.doctype.jade", + regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" + }, + { + onMatch: function(value, currentState, stack) { + stack.unshift(this.next, value.length - 2, currentState); + return "comment"; + }, + regex: /^\s*\/\//, + next: "comment_block" + }, + mixin_embed("markdown", "markdown-"), + mixin_embed("sass", "sass-"), + mixin_embed("less", "less-"), + mixin_embed("coffee", "coffee-"), + /* + { + token: { + "2": { + "name": "entity.name.function.jade" + } + }, + regex: "^(\\s*)(\\:cdata)", + next: "state_9" + },*/ + // match stuff like: mixin dialog-title-desc(title, desc) + { + token: [ "storage.type.function.jade", + "entity.name.function.jade", + "punctuation.definition.parameters.begin.jade", + "variable.parameter.function.jade", + "punctuation.definition.parameters.end.jade" + ], + regex: "^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))" + }, + // match stuff like: mixin dialog-title-desc + { + token: [ "storage.type.function.jade", "entity.name.function.jade"], + regex: "^(\\s*mixin)( [\\w\\-]+)" + }, + { + token: "source.js.embedded.jade", + regex: "^\\s*(?:-|=|!=)", + next: "js-start" + }, + /*{ + token: "entity.name.tag.script.jade", + regex: "^\\s*script", + next: "js_code_tag" + },*/ + { + token: "string.interpolated.jade", + regex: "[#!]\\{[^\\}]+\\}" + }, + // Match any tag, id or class. skip AST filters + { + token: "meta.tag.any.jade", + regex: /^\s*(?!\w+:)(?:[\w-]+|(?=\.|#)])/, + next: "tag_single" + }, + { + token: "suport.type.attribute.id.jade", + regex: "#\\w+" + }, + { + token: "suport.type.attribute.class.jade", + regex: "\\.\\w+" + }, + { + token: "punctuation", + regex: "\\s*(?:\\()", + next: "tag_attributes" + } + ], + "comment_block": [ + {regex: /^\s*(?:\/\/)?/, onMatch: function(value, currentState, stack) { + if (value.length <= stack[1]) { + if (value.slice(-1) == "/") { + stack[1] = value.length - 2; + this.next = ""; + return "comment"; + } + stack.shift(); + stack.shift(); + this.next = stack.shift(); + return "text"; + } else { + this.next = ""; + return "comment"; + } + }, next: "start"}, + {defaultToken: "comment"} + ], + /* + + "state_9": [ + { + token: "TODO", + regex: "^(?!\\1\\s+)", + next: "start" + }, + { + token: "TODO", + regex: ".+", + next: "state_9" + } + ],*/ + /*"js_code": [ + { + token: "keyword.control.js", + regex: "\\beach\\b" + }, + { + token: "text", + regex: "$", + next: "start" + } + ],*/ + /*"js_code_tag": [ + { + "include": "source.js" + }, + { + token: "TODO", + regex: "^((?=(\\1)([\\w#\\.]|$\\n?))|^$\\n?)", + next: "start" + } + ],*/ + "tag_single": [ + { + token: "entity.other.attribute-name.class.jade", + regex: "\\.[\\w-]+" + }, + { + token: "entity.other.attribute-name.id.jade", + regex: "#[\\w-]+" + }, + { + token: ["text", "punctuation"], + regex: "($)|((?!\\.|#|=|-))", + next: "start" + } + ], + "tag_attributes": [ + { + token : "string", + regex : "'(?=.)", + next : "qstring" + }, + { + token : "string", + regex : '"(?=.)', + next : "qqstring" + }, + { + token: ["entity.other.attribute-name.jade", "punctuation"], + regex: "([a-zA-Z:\\.-]+)(=)?", + next: "attribute_strings" + }, + { + token: "punctuation", + regex: "\\)", + next: "start" + } + ], + "attribute_strings": [ + { + token : "string", + regex : "'(?=.)", + next : "qstring" + }, + { + token : "string", + regex : '"(?=.)', + next : "qqstring" + }, + { + token : "string", + regex : '(?=\\S)', + next : "tag_attributes" + } + ], + "qqstring" : [ + { + token : "constant.language.escape", + regex : escapedRe + }, { + token : "string", + regex : '[^"\\\\]+' + }, { + token : "string", + regex : "\\\\$", + next : "qqstring" + }, { + token : "string", + regex : '"|$', + next : "tag_attributes" + } + ], + "qstring" : [ + { + token : "constant.language.escape", + regex : escapedRe + }, { + token : "string", + regex : "[^'\\\\]+" + }, { + token : "string", + regex : "\\\\$", + next : "qstring" + }, { + token : "string", + regex : "'|$", + next : "tag_attributes" + } + ] +}; + + this.embedRules(JavaScriptHighlightRules, "js-", [{ + token: "text", + regex: ".$", + next: "start" + }]); +/* + this.embedRules(MarkdownHighlightRules, "markdown-", [{ + token : "support.function", + regex : "^\\1\\s+", + captures: "1", + next : "start" + }]); + + this.embedRules(SassHighlightRules, "sass-", [{ + token : "support.function", + regex : "^(?!\\1\\s+)", + captures: "1", + next : "start" + }]); + + this.embedRules(LessHighlightRules, "less-", [{ + token : "support.function", + regex : "^(?!\\1\\s+)", + captures: "1", + next : "start" + }]); + + this.embedRules(CoffeeHighlightRules, "coffee-", [{ + token : "support.function", + regex : "^(?!\\1\\s+)", + captures: "1", + next : "start" + }]); + + this.embedRules(JavaScriptHighlightRules, "js-", [{ + token : "support.function", + regex : "$", + captures: "1", + next : "start" + }]); */ +}; + +oop.inherits(JadeHighlightRules, TextHighlightRules); + +exports.JadeHighlightRules = JadeHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/java.js b/plugins/node_modules/ace/lib/ace/mode/java.js new file mode 100644 index 00000000..58df0c96 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/java.js @@ -0,0 +1,24 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptMode = require("./javascript").Mode; +var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; + +var Mode = function() { + JavaScriptMode.call(this); + this.HighlightRules = JavaHighlightRules; +}; +oop.inherits(Mode, JavaScriptMode); + +(function() { + + this.createWorker = function(session) { + return null; + }; + + this.$id = "ace/mode/java"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/java_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/java_highlight_rules.js new file mode 100644 index 00000000..add43eef --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/java_highlight_rules.js @@ -0,0 +1,128 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var JavaHighlightRules = function() { + + // taken from http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html + var keywords = ( + "abstract|continue|for|new|switch|" + + "assert|default|goto|package|synchronized|" + + "boolean|do|if|private|this|" + + "break|double|implements|protected|throw|" + + "byte|else|import|public|throws|" + + "case|enum|instanceof|return|transient|" + + "catch|extends|int|short|try|" + + "char|final|interface|static|void|" + + "class|finally|long|strictfp|volatile|" + + "const|float|native|super|while|" + + "var" + ); + + var buildinConstants = ("null|Infinity|NaN|undefined"); + + + var langClasses = ( + "AbstractMethodError|AssertionError|ClassCircularityError|"+ + "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ + "ExceptionInInitializerError|IllegalAccessError|"+ + "IllegalThreadStateException|InstantiationError|InternalError|"+ + "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ + "SuppressWarnings|TypeNotPresentException|UnknownError|"+ + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ + "InstantiationException|IndexOutOfBoundsException|"+ + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ + "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ + "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ + "ArrayStoreException|ClassCastException|LinkageError|"+ + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ + "Cloneable|Class|CharSequence|Comparable|String|Object" + ); + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": langClasses + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token : "constant.numeric", // float + regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(JavaHighlightRules, TextHighlightRules); + +exports.JavaHighlightRules = JavaHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/javascript.js b/plugins/node_modules/ace/lib/ace/mode/javascript.js new file mode 100644 index 00000000..509c271c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/javascript.js @@ -0,0 +1,116 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = JavaScriptHighlightRules; + + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + + worker.on("annotate", function(results) { + session.setAnnotations(results.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/javascript"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/javascript/jshint.js b/plugins/node_modules/ace/lib/ace/mode/javascript/jshint.js new file mode 100644 index 00000000..4bafb996 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/javascript/jshint.js @@ -0,0 +1,12375 @@ +define(function(require, exports, module) { +module.exports = (function outer (modules, cache, entry) { + var previousRequire = typeof require == "function" && require; + function newRequire(name, jumped){ + if(!cache[name]) { + if(!modules[name]) { + var currentRequire = typeof require == "function" && require; + if (!jumped && currentRequire) return currentRequire(name, true); + if (previousRequire) return previousRequire(name, true); + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + var m = cache[name] = {exports:{}}; + modules[name][0].call(m.exports, function(x){ + var id = modules[name][1][x]; + return newRequire(id ? id : x); + },m,m.exports,outer,modules,cache,entry); + } + return cache[name].exports; + } + for(var i=0;i<entry.length;i++) newRequire(entry[i]); + return newRequire(entry[0]); +}) +({"/node_modules/browserify/node_modules/events/events.js":[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],"/node_modules/jshint/data/ascii-identifier-data.js":[function(_dereq_,module,exports){ +var identifierStartTable = []; + +for (var i = 0; i < 128; i++) { + identifierStartTable[i] = + i === 36 || // $ + i >= 65 && i <= 90 || // A-Z + i === 95 || // _ + i >= 97 && i <= 122; // a-z +} + +var identifierPartTable = []; + +for (var i = 0; i < 128; i++) { + identifierPartTable[i] = + identifierStartTable[i] || // $, _, A-Z, a-z + i >= 48 && i <= 57; // 0-9 +} + +module.exports = { + asciiIdentifierStartTable: identifierStartTable, + asciiIdentifierPartTable: identifierPartTable +}; + +},{}],"/node_modules/jshint/lodash.js":[function(_dereq_,module,exports){ +(function (global){ +;(function() { + + var undefined; + + var VERSION = '3.7.0'; + + var FUNC_ERROR_TEXT = 'Expected a function'; + + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + + var arrayBufferTag = '[object ArrayBuffer]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + var reIsDeepProp = /\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g; + + var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, + reHasRegExpChars = RegExp(reRegExpChars.source); + + var reEscapeChar = /\\(\\)?/g; + + var reFlags = /\w*$/; + + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dateTag] = typedArrayTags[errorTag] = + typedArrayTags[funcTag] = typedArrayTags[mapTag] = + typedArrayTags[numberTag] = typedArrayTags[objectTag] = + typedArrayTags[regexpTag] = typedArrayTags[setTag] = + typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = + cloneableTags[dateTag] = cloneableTags[float32Tag] = + cloneableTags[float64Tag] = cloneableTags[int8Tag] = + cloneableTags[int16Tag] = cloneableTags[int32Tag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[stringTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[mapTag] = cloneableTags[setTag] = + cloneableTags[weakMapTag] = false; + + var objectTypes = { + 'function': true, + 'object': true + }; + + var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; + + var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; + + var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global; + + var freeSelf = objectTypes[typeof self] && self && self.Object && self; + + var freeWindow = objectTypes[typeof window] && window && window.Object && window; + + var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; + + var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this; + + function baseFindIndex(array, predicate, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return indexOfNaN(array, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + function baseIsFunction(value) { + return typeof value == 'function' || false; + } + + function baseToString(value) { + if (typeof value == 'string') { + return value; + } + return value == null ? '' : (value + ''); + } + + function indexOfNaN(array, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 0 : -1); + + while ((fromRight ? index-- : ++index < length)) { + var other = array[index]; + if (other !== other) { + return index; + } + } + return -1; + } + + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + var arrayProto = Array.prototype, + objectProto = Object.prototype; + + var fnToString = Function.prototype.toString; + + var hasOwnProperty = objectProto.hasOwnProperty; + + var objToString = objectProto.toString; + + var reIsNative = RegExp('^' + + escapeRegExp(objToString) + .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + var ArrayBuffer = isNative(ArrayBuffer = root.ArrayBuffer) && ArrayBuffer, + bufferSlice = isNative(bufferSlice = ArrayBuffer && new ArrayBuffer(0).slice) && bufferSlice, + floor = Math.floor, + getOwnPropertySymbols = isNative(getOwnPropertySymbols = Object.getOwnPropertySymbols) && getOwnPropertySymbols, + getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, + push = arrayProto.push, + preventExtensions = isNative(Object.preventExtensions = Object.preventExtensions) && preventExtensions, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + Uint8Array = isNative(Uint8Array = root.Uint8Array) && Uint8Array; + + var Float64Array = (function() { + try { + var func = isNative(func = root.Float64Array) && func, + result = new func(new ArrayBuffer(10), 0, 1) && func; + } catch(e) {} + return result; + }()); + + var nativeAssign = (function() { + var object = { '1': 0 }, + func = preventExtensions && isNative(func = Object.assign) && func; + + try { func(preventExtensions(object), 'xo'); } catch(e) {} + return !object[1] && func; + }()); + + var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, + nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, + nativeMax = Math.max, + nativeMin = Math.min; + + var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; + + var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0; + + var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; + + function lodash() { + } + + var support = lodash.support = {}; + + (function(x) { + var Ctor = function() { this.x = x; }, + object = { '0': x, 'length': x }, + props = []; + + Ctor.prototype = { 'valueOf': x, 'y': x }; + for (var key in new Ctor) { props.push(key); } + + support.funcDecomp = /\bthis\b/.test(function() { return this; }); + + support.funcNames = typeof Function.name == 'string'; + + try { + support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); + } catch(e) { + support.nonEnumArgs = true; + } + }(1, 0)); + + function arrayCopy(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + function arrayEach(array, iteratee) { + var index = -1, + length = array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + function arrayFilter(array, predicate) { + var index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[++resIndex] = value; + } + } + return result; + } + + function arrayMap(array, iteratee) { + var index = -1, + length = array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + function arrayMax(array) { + var index = -1, + length = array.length, + result = NEGATIVE_INFINITY; + + while (++index < length) { + var value = array[index]; + if (value > result) { + result = value; + } + } + return result; + } + + function arraySome(array, predicate) { + var index = -1, + length = array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + function assignWith(object, source, customizer) { + var props = keys(source); + push.apply(props, getSymbols(source)); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index], + value = object[key], + result = customizer(value, source[key], key, object, source); + + if ((result === result ? (result !== value) : (value === value)) || + (value === undefined && !(key in object))) { + object[key] = result; + } + } + return object; + } + + var baseAssign = nativeAssign || function(object, source) { + return source == null + ? object + : baseCopy(source, getSymbols(source), baseCopy(source, keys(source), object)); + }; + + function baseCopy(source, props, object) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + object[key] = source[key]; + } + return object; + } + + function baseCallback(func, thisArg, argCount) { + var type = typeof func; + if (type == 'function') { + return thisArg === undefined + ? func + : bindCallback(func, thisArg, argCount); + } + if (func == null) { + return identity; + } + if (type == 'object') { + return baseMatches(func); + } + return thisArg === undefined + ? property(func) + : baseMatchesProperty(func, thisArg); + } + + function baseClone(value, isDeep, customizer, key, object, stackA, stackB) { + var result; + if (customizer) { + result = object ? customizer(value, key, object) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return arrayCopy(value, result); + } + } else { + var tag = objToString.call(value), + isFunc = tag == funcTag; + + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = initCloneObject(isFunc ? {} : value); + if (!isDeep) { + return baseAssign(result, value); + } + } else { + return cloneableTags[tag] + ? initCloneByTag(value, tag, isDeep) + : (object ? value : {}); + } + } + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == value) { + return stackB[length]; + } + } + stackA.push(value); + stackB.push(result); + + (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { + result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB); + }); + return result; + } + + var baseEach = createBaseEach(baseForOwn); + + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + var baseFor = createBaseFor(); + + function baseForIn(object, iteratee) { + return baseFor(object, iteratee, keysIn); + } + + function baseForOwn(object, iteratee) { + return baseFor(object, iteratee, keys); + } + + function baseGet(object, path, pathKey) { + if (object == null) { + return; + } + if (pathKey !== undefined && pathKey in toObject(object)) { + path = [pathKey]; + } + var index = -1, + length = path.length; + + while (object != null && ++index < length) { + var result = object = object[path[index]]; + } + return result; + } + + function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) { + if (value === other) { + return value !== 0 || (1 / value == 1 / other); + } + var valType = typeof value, + othType = typeof other; + + if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') || + value == null || other == null) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); + } + + function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; + + if (!objIsArr) { + objTag = objToString.call(object); + if (objTag == argsTag) { + objTag = objectTag; + } else if (objTag != objectTag) { + objIsArr = isTypedArray(object); + } + } + if (!othIsArr) { + othTag = objToString.call(other); + if (othTag == argsTag) { + othTag = objectTag; + } else if (othTag != objectTag) { + othIsArr = isTypedArray(other); + } + } + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && !(objIsArr || objIsObj)) { + return equalByTag(object, other, objTag); + } + if (!isLoose) { + var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (valWrapped || othWrapped) { + return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isLoose, stackA, stackB); + } + } + if (!isSameTag) { + return false; + } + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == object) { + return stackB[length] == other; + } + } + stackA.push(object); + stackB.push(other); + + var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB); + + stackA.pop(); + stackB.pop(); + + return result; + } + + function baseIsMatch(object, props, values, strictCompareFlags, customizer) { + var index = -1, + length = props.length, + noCustomizer = !customizer; + + while (++index < length) { + if ((noCustomizer && strictCompareFlags[index]) + ? values[index] !== object[props[index]] + : !(props[index] in object) + ) { + return false; + } + } + index = -1; + while (++index < length) { + var key = props[index], + objValue = object[key], + srcValue = values[index]; + + if (noCustomizer && strictCompareFlags[index]) { + var result = objValue !== undefined || (key in object); + } else { + result = customizer ? customizer(objValue, srcValue, key) : undefined; + if (result === undefined) { + result = baseIsEqual(srcValue, objValue, customizer, true); + } + } + if (!result) { + return false; + } + } + return true; + } + + function baseMatches(source) { + var props = keys(source), + length = props.length; + + if (!length) { + return constant(true); + } + if (length == 1) { + var key = props[0], + value = source[key]; + + if (isStrictComparable(value)) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === value && (value !== undefined || (key in toObject(object))); + }; + } + } + var values = Array(length), + strictCompareFlags = Array(length); + + while (length--) { + value = source[props[length]]; + values[length] = value; + strictCompareFlags[length] = isStrictComparable(value); + } + return function(object) { + return object != null && baseIsMatch(toObject(object), props, values, strictCompareFlags); + }; + } + + function baseMatchesProperty(path, value) { + var isArr = isArray(path), + isCommon = isKey(path) && isStrictComparable(value), + pathKey = (path + ''); + + path = toPath(path); + return function(object) { + if (object == null) { + return false; + } + var key = pathKey; + object = toObject(object); + if ((isArr || !isCommon) && !(key in object)) { + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + if (object == null) { + return false; + } + key = last(path); + object = toObject(object); + } + return object[key] === value + ? (value !== undefined || (key in object)) + : baseIsEqual(value, object[key], null, true); + }; + } + + function baseMerge(object, source, customizer, stackA, stackB) { + if (!isObject(object)) { + return object; + } + var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source)); + if (!isSrcArr) { + var props = keys(source); + push.apply(props, getSymbols(source)); + } + arrayEach(props || source, function(srcValue, key) { + if (props) { + key = srcValue; + srcValue = source[key]; + } + if (isObjectLike(srcValue)) { + stackA || (stackA = []); + stackB || (stackB = []); + baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB); + } + else { + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = result === undefined; + + if (isCommon) { + result = srcValue; + } + if ((isSrcArr || result !== undefined) && + (isCommon || (result === result ? (result !== value) : (value === value)))) { + object[key] = result; + } + } + }); + return object; + } + + function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) { + var length = stackA.length, + srcValue = source[key]; + + while (length--) { + if (stackA[length] == srcValue) { + object[key] = stackB[length]; + return; + } + } + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = result === undefined; + + if (isCommon) { + result = srcValue; + if (isLength(srcValue.length) && (isArray(srcValue) || isTypedArray(srcValue))) { + result = isArray(value) + ? value + : (getLength(value) ? arrayCopy(value) : []); + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + result = isArguments(value) + ? toPlainObject(value) + : (isPlainObject(value) ? value : {}); + } + else { + isCommon = false; + } + } + stackA.push(srcValue); + stackB.push(result); + + if (isCommon) { + object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); + } else if (result === result ? (result !== value) : (value === value)) { + object[key] = result; + } + } + + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + function basePropertyDeep(path) { + var pathKey = (path + ''); + path = toPath(path); + return function(object) { + return baseGet(object, path, pathKey); + }; + } + + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + start = start == null ? 0 : (+start || 0); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : (+end || 0); + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + function baseValues(object, props) { + var index = -1, + length = props.length, + result = Array(length); + + while (++index < length) { + result[index] = object[props[index]]; + } + return result; + } + + function binaryIndex(array, value, retHighest) { + var low = 0, + high = array ? array.length : low; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (retHighest ? (computed <= value) : (computed < value)) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return binaryIndexBy(array, value, identity, retHighest); + } + + function binaryIndexBy(array, value, iteratee, retHighest) { + value = iteratee(value); + + var low = 0, + high = array ? array.length : 0, + valIsNaN = value !== value, + valIsUndef = value === undefined; + + while (low < high) { + var mid = floor((low + high) / 2), + computed = iteratee(array[mid]), + isReflexive = computed === computed; + + if (valIsNaN) { + var setLow = isReflexive || retHighest; + } else if (valIsUndef) { + setLow = isReflexive && (retHighest || computed !== undefined); + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + function bindCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + if (thisArg === undefined) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + case 5: return function(value, other, key, object, source) { + return func.call(thisArg, value, other, key, object, source); + }; + } + return function() { + return func.apply(thisArg, arguments); + }; + } + + function bufferClone(buffer) { + return bufferSlice.call(buffer, 0); + } + if (!bufferSlice) { + bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) { + var byteLength = buffer.byteLength, + floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0, + offset = floatLength * FLOAT64_BYTES_PER_ELEMENT, + result = new ArrayBuffer(byteLength); + + if (floatLength) { + var view = new Float64Array(result, 0, floatLength); + view.set(new Float64Array(buffer, 0, floatLength)); + } + if (byteLength != offset) { + view = new Uint8Array(result, offset); + view.set(new Uint8Array(buffer, offset)); + } + return result; + }; + } + + function createAssigner(assigner) { + return restParam(function(object, sources) { + var index = -1, + length = object == null ? 0 : sources.length, + customizer = length > 2 && sources[length - 2], + guard = length > 2 && sources[2], + thisArg = length > 1 && sources[length - 1]; + + if (typeof customizer == 'function') { + customizer = bindCallback(customizer, thisArg, 5); + length -= 2; + } else { + customizer = typeof thisArg == 'function' ? thisArg : null; + length -= (customizer ? 1 : 0); + } + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? null : customizer; + length = 1; + } + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, customizer); + } + } + return object; + }); + } + + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + var length = collection ? getLength(collection) : 0; + if (!isLength(length)) { + return eachFunc(collection, iteratee); + } + var index = fromRight ? length : -1, + iterable = toObject(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var iterable = toObject(object), + props = keysFunc(object), + length = props.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length)) { + var key = props[index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + function createFindIndex(fromRight) { + return function(array, predicate, thisArg) { + if (!(array && array.length)) { + return -1; + } + predicate = getCallback(predicate, thisArg, 3); + return baseFindIndex(array, predicate, fromRight); + }; + } + + function createForEach(arrayFunc, eachFunc) { + return function(collection, iteratee, thisArg) { + return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) + ? arrayFunc(collection, iteratee) + : eachFunc(collection, bindCallback(iteratee, thisArg, 3)); + }; + } + + function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) { + var index = -1, + arrLength = array.length, + othLength = other.length, + result = true; + + if (arrLength != othLength && !(isLoose && othLength > arrLength)) { + return false; + } + while (result && ++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + result = undefined; + if (customizer) { + result = isLoose + ? customizer(othValue, arrValue, index) + : customizer(arrValue, othValue, index); + } + if (result === undefined) { + if (isLoose) { + var othIndex = othLength; + while (othIndex--) { + othValue = other[othIndex]; + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB); + if (result) { + break; + } + } + } else { + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB); + } + } + } + return !!result; + } + + function equalByTag(object, other, tag) { + switch (tag) { + case boolTag: + case dateTag: + return +object == +other; + + case errorTag: + return object.name == other.name && object.message == other.message; + + case numberTag: + return (object != +object) + ? other != +other + : (object == 0 ? ((1 / object) == (1 / other)) : object == +other); + + case regexpTag: + case stringTag: + return object == (other + ''); + } + return false; + } + + function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) { + var objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isLoose) { + return false; + } + var skipCtor = isLoose, + index = -1; + + while (++index < objLength) { + var key = objProps[index], + result = isLoose ? key in other : hasOwnProperty.call(other, key); + + if (result) { + var objValue = object[key], + othValue = other[key]; + + result = undefined; + if (customizer) { + result = isLoose + ? customizer(othValue, objValue, key) + : customizer(objValue, othValue, key); + } + if (result === undefined) { + result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB); + } + } + if (!result) { + return false; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (!skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + return false; + } + } + return true; + } + + function getCallback(func, thisArg, argCount) { + var result = lodash.callback || callback; + result = result === callback ? baseCallback : result; + return argCount ? result(func, thisArg, argCount) : result; + } + + function getIndexOf(collection, target, fromIndex) { + var result = lodash.indexOf || indexOf; + result = result === indexOf ? baseIndexOf : result; + return collection ? result(collection, target, fromIndex) : result; + } + + var getLength = baseProperty('length'); + + var getSymbols = !getOwnPropertySymbols ? constant([]) : function(object) { + return getOwnPropertySymbols(toObject(object)); + }; + + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + function initCloneObject(object) { + var Ctor = object.constructor; + if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { + Ctor = Object; + } + return new Ctor; + } + + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return bufferClone(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + var buffer = object.buffer; + return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + var result = new Ctor(object.source, reFlags.exec(object)); + result.lastIndex = object.lastIndex; + } + return result; + } + + function isIndex(value, length) { + value = +value; + length = length == null ? MAX_SAFE_INTEGER : length; + return value > -1 && value % 1 == 0 && value < length; + } + + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number') { + var length = getLength(object), + prereq = isLength(length) && isIndex(index, length); + } else { + prereq = type == 'string' && index in object; + } + if (prereq) { + var other = object[index]; + return value === value ? (value === other) : (other !== other); + } + return false; + } + + function isKey(value, object) { + var type = typeof value; + if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') { + return true; + } + if (isArray(value)) { + return false; + } + var result = !reIsDeepProp.test(value); + return result || (object != null && value in toObject(object)); + } + + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + function isStrictComparable(value) { + return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value)); + } + + function shimIsPlainObject(value) { + var Ctor, + support = lodash.support; + + if (!(isObjectLike(value) && objToString.call(value) == objectTag) || + (!hasOwnProperty.call(value, 'constructor') && + (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { + return false; + } + var result; + baseForIn(value, function(subValue, key) { + result = key; + }); + return result === undefined || hasOwnProperty.call(value, result); + } + + function shimKeys(object) { + var props = keysIn(object), + propsLength = props.length, + length = propsLength && object.length, + support = lodash.support; + + var allowIndexes = length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))); + + var index = -1, + result = []; + + while (++index < propsLength) { + var key = props[index]; + if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { + result.push(key); + } + } + return result; + } + + function toObject(value) { + return isObject(value) ? value : Object(value); + } + + function toPath(value) { + if (isArray(value)) { + return value; + } + var result = []; + baseToString(value).replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + } + + var findLastIndex = createFindIndex(true); + + function indexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + if (typeof fromIndex == 'number') { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; + } else if (fromIndex) { + var index = binaryIndex(array, value), + other = array[index]; + + if (value === value ? (value === other) : (other !== other)) { + return index; + } + return -1; + } + return baseIndexOf(array, value, fromIndex || 0); + } + + function last(array) { + var length = array ? array.length : 0; + return length ? array[length - 1] : undefined; + } + + function slice(array, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + return baseSlice(array, start, end); + } + + function unzip(array) { + var index = -1, + length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0, + result = Array(length); + + while (++index < length) { + result[index] = arrayMap(array, baseProperty(index)); + } + return result; + } + + var zip = restParam(unzip); + + var forEach = createForEach(arrayEach, baseEach); + + function includes(collection, target, fromIndex, guard) { + var length = collection ? getLength(collection) : 0; + if (!isLength(length)) { + collection = values(collection); + length = collection.length; + } + if (!length) { + return false; + } + if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) { + fromIndex = 0; + } else { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); + } + return (typeof collection == 'string' || !isArray(collection) && isString(collection)) + ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1) + : (getIndexOf(collection, target, fromIndex) > -1); + } + + function reject(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = getCallback(predicate, thisArg, 3); + return func(collection, function(value, index, collection) { + return !predicate(value, index, collection); + }); + } + + function some(collection, predicate, thisArg) { + var func = isArray(collection) ? arraySome : baseSome; + if (thisArg && isIterateeCall(collection, predicate, thisArg)) { + predicate = null; + } + if (typeof predicate != 'function' || thisArg !== undefined) { + predicate = getCallback(predicate, thisArg, 3); + } + return func(collection, predicate); + } + + function restParam(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + rest = Array(length); + + while (++index < length) { + rest[index] = args[start + index]; + } + switch (start) { + case 0: return func.call(this, rest); + case 1: return func.call(this, args[0], rest); + case 2: return func.call(this, args[0], args[1], rest); + } + var otherArgs = Array(start + 1); + index = -1; + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = rest; + return func.apply(this, otherArgs); + }; + } + + function clone(value, isDeep, customizer, thisArg) { + if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) { + isDeep = false; + } + else if (typeof isDeep == 'function') { + thisArg = customizer; + customizer = isDeep; + isDeep = false; + } + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1); + return baseClone(value, isDeep, customizer); + } + + function isArguments(value) { + var length = isObjectLike(value) ? value.length : undefined; + return isLength(length) && objToString.call(value) == argsTag; + } + + var isArray = nativeIsArray || function(value) { + return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; + }; + + function isEmpty(value) { + if (value == null) { + return true; + } + var length = getLength(value); + if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) || + (isObjectLike(value) && isFunction(value.splice)))) { + return !length; + } + return !keys(value).length; + } + + var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { + return objToString.call(value) == funcTag; + }; + + function isObject(value) { + var type = typeof value; + return type == 'function' || (!!value && type == 'object'); + } + + function isNative(value) { + if (value == null) { + return false; + } + if (objToString.call(value) == funcTag) { + return reIsNative.test(fnToString.call(value)); + } + return isObjectLike(value) && reIsHostCtor.test(value); + } + + function isNumber(value) { + return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag); + } + + var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { + if (!(value && objToString.call(value) == objectTag)) { + return false; + } + var valueOf = value.valueOf, + objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); + + return objProto + ? (value == objProto || getPrototypeOf(value) == objProto) + : shimIsPlainObject(value); + }; + + function isString(value) { + return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag); + } + + function isTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)]; + } + + function toPlainObject(value) { + return baseCopy(value, keysIn(value)); + } + + var assign = createAssigner(function(object, source, customizer) { + return customizer + ? assignWith(object, source, customizer) + : baseAssign(object, source); + }); + + function has(object, path) { + if (object == null) { + return false; + } + var result = hasOwnProperty.call(object, path); + if (!result && !isKey(path)) { + path = toPath(path); + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + path = last(path); + result = object != null && hasOwnProperty.call(object, path); + } + return result; + } + + var keys = !nativeKeys ? shimKeys : function(object) { + if (object) { + var Ctor = object.constructor, + length = object.length; + } + if ((typeof Ctor == 'function' && Ctor.prototype === object) || + (typeof object != 'function' && isLength(length))) { + return shimKeys(object); + } + return isObject(object) ? nativeKeys(object) : []; + }; + + function keysIn(object) { + if (object == null) { + return []; + } + if (!isObject(object)) { + object = Object(object); + } + var length = object.length; + length = (length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0; + + var Ctor = object.constructor, + index = -1, + isProto = typeof Ctor == 'function' && Ctor.prototype === object, + result = Array(length), + skipIndexes = length > 0; + + while (++index < length) { + result[index] = (index + ''); + } + for (var key in object) { + if (!(skipIndexes && isIndex(key, length)) && + !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + var merge = createAssigner(baseMerge); + + function values(object) { + return baseValues(object, keys(object)); + } + + function escapeRegExp(string) { + string = baseToString(string); + return (string && reHasRegExpChars.test(string)) + ? string.replace(reRegExpChars, '\\$&') + : string; + } + + function callback(func, thisArg, guard) { + if (guard && isIterateeCall(func, thisArg, guard)) { + thisArg = null; + } + return baseCallback(func, thisArg); + } + + function constant(value) { + return function() { + return value; + }; + } + + function identity(value) { + return value; + } + + function property(path) { + return isKey(path) ? baseProperty(path) : basePropertyDeep(path); + } + + // Add functions that return wrapped values when chaining. + lodash.assign = assign; + lodash.callback = callback; + lodash.constant = constant; + lodash.forEach = forEach; + lodash.keys = keys; + lodash.keysIn = keysIn; + lodash.merge = merge; + lodash.property = property; + lodash.reject = reject; + lodash.restParam = restParam; + lodash.slice = slice; + lodash.toPlainObject = toPlainObject; + lodash.unzip = unzip; + lodash.values = values; + lodash.zip = zip; + + lodash.each = forEach; + lodash.extend = assign; + lodash.iteratee = callback; + + // Add functions that return unwrapped values when chaining. + lodash.clone = clone; + lodash.escapeRegExp = escapeRegExp; + lodash.findLastIndex = findLastIndex; + lodash.has = has; + lodash.identity = identity; + lodash.includes = includes; + lodash.indexOf = indexOf; + lodash.isArguments = isArguments; + lodash.isArray = isArray; + lodash.isEmpty = isEmpty; + lodash.isFunction = isFunction; + lodash.isNative = isNative; + lodash.isNumber = isNumber; + lodash.isObject = isObject; + lodash.isPlainObject = isPlainObject; + lodash.isString = isString; + lodash.isTypedArray = isTypedArray; + lodash.last = last; + lodash.some = some; + + lodash.any = some; + lodash.contains = includes; + lodash.include = includes; + + lodash.VERSION = VERSION; + + // Some AMD build optimizers like r.js check for condition patterns like the following: + if (freeExports && freeModule) { + if (moduleExports) { + (freeModule.exports = lodash)._ = lodash; + } + else { + freeExports._ = lodash; + } + } + else { + root._ = lodash; + } +}.call(this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],"/node_modules/jshint/src/jshint.js":[function(_dereq_,module,exports){ +/*! + * JSHint, by JSHint Community. + * + * This file (and this file only) is licensed under the same slightly modified + * MIT license that JSLint is. It stops evil-doers everywhere: + * + * Copyright (c) 2002 Douglas Crockford (www.JSLint.com) + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * The Software shall be used for Good, not Evil. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +/*jshint quotmark:double */ +/*global console:true */ +/*exported console */ + +var _ = _dereq_("../lodash"); +var events = _dereq_("events"); +var vars = _dereq_("./vars.js"); +var messages = _dereq_("./messages.js"); +var Lexer = _dereq_("./lex.js").Lexer; +var reg = _dereq_("./reg.js"); +var state = _dereq_("./state.js").state; +var style = _dereq_("./style.js"); +var options = _dereq_("./options.js"); +var scopeManager = _dereq_("./scope-manager.js"); + +// We build the application inside a function so that we produce only a singleton +// variable. That function will be invoked immediately, and its return value is +// the JSHINT function itself. + +var JSHINT = (function() { + "use strict"; + + var api, // Extension API + + // These are operators that should not be used with the ! operator. + bang = { + "<" : true, + "<=" : true, + "==" : true, + "===": true, + "!==": true, + "!=" : true, + ">" : true, + ">=" : true, + "+" : true, + "-" : true, + "*" : true, + "/" : true, + "%" : true + }, + + declared, // Globals that were declared using /*global ... */ syntax. + + functionicity = [ + "closure", "exception", "global", "label", + "outer", "unused", "var" + ], + + functions, // All of the functions + + inblock, + indent, + lookahead, + lex, + member, + membersOnly, + predefined, // Global variables defined by option + + stack, + urls, + + extraModules = [], + emitter = new events.EventEmitter(); + + function checkOption(name, t) { + name = name.trim(); + + if (/^[+-]W\d{3}$/g.test(name)) { + return true; + } + + if (options.validNames.indexOf(name) === -1) { + if (t.type !== "jslint" && !_.has(options.removed, name)) { + error("E001", t, name); + return false; + } + } + + return true; + } + + function isString(obj) { + return Object.prototype.toString.call(obj) === "[object String]"; + } + + function isIdentifier(tkn, value) { + if (!tkn) + return false; + + if (!tkn.identifier || tkn.value !== value) + return false; + + return true; + } + + function isReserved(token) { + if (!token.reserved) { + return false; + } + var meta = token.meta; + + if (meta && meta.isFutureReservedWord && state.inES5()) { + // ES3 FutureReservedWord in an ES5 environment. + if (!meta.es5) { + return false; + } + + // Some ES5 FutureReservedWord identifiers are active only + // within a strict mode environment. + if (meta.strictOnly) { + if (!state.option.strict && !state.isStrict()) { + return false; + } + } + + if (token.isProperty) { + return false; + } + } + + return true; + } + + function supplant(str, data) { + return str.replace(/\{([^{}]*)\}/g, function(a, b) { + var r = data[b]; + return typeof r === "string" || typeof r === "number" ? r : a; + }); + } + + function combine(dest, src) { + Object.keys(src).forEach(function(name) { + if (_.has(JSHINT.blacklist, name)) return; + dest[name] = src[name]; + }); + } + + function processenforceall() { + if (state.option.enforceall) { + for (var enforceopt in options.bool.enforcing) { + if (state.option[enforceopt] === undefined && + !options.noenforceall[enforceopt]) { + state.option[enforceopt] = true; + } + } + for (var relaxopt in options.bool.relaxing) { + if (state.option[relaxopt] === undefined) { + state.option[relaxopt] = false; + } + } + } + } + + function assume() { + processenforceall(); + + /** + * TODO: Remove in JSHint 3 + */ + if (!state.option.esversion && !state.option.moz) { + if (state.option.es3) { + state.option.esversion = 3; + } else if (state.option.esnext) { + state.option.esversion = 6; + } else { + state.option.esversion = 5; + } + } + + if (state.inES5()) { + combine(predefined, vars.ecmaIdentifiers[5]); + } + + if (state.inES6()) { + combine(predefined, vars.ecmaIdentifiers[6]); + } + + if (state.option.module) { + if (state.option.strict === true) { + state.option.strict = "global"; + } + /** + * TODO: Extend this restriction to *all* ES6-specific options. + */ + if (!state.inES6()) { + warning("W134", state.tokens.next, "module", 6); + } + } + + if (state.option.couch) { + combine(predefined, vars.couch); + } + + if (state.option.qunit) { + combine(predefined, vars.qunit); + } + + if (state.option.rhino) { + combine(predefined, vars.rhino); + } + + if (state.option.shelljs) { + combine(predefined, vars.shelljs); + combine(predefined, vars.node); + } + if (state.option.typed) { + combine(predefined, vars.typed); + } + + if (state.option.phantom) { + combine(predefined, vars.phantom); + if (state.option.strict === true) { + state.option.strict = "global"; + } + } + + if (state.option.prototypejs) { + combine(predefined, vars.prototypejs); + } + + if (state.option.node) { + combine(predefined, vars.node); + combine(predefined, vars.typed); + if (state.option.strict === true) { + state.option.strict = "global"; + } + } + + if (state.option.devel) { + combine(predefined, vars.devel); + } + + if (state.option.dojo) { + combine(predefined, vars.dojo); + } + + if (state.option.browser) { + combine(predefined, vars.browser); + combine(predefined, vars.typed); + } + + if (state.option.browserify) { + combine(predefined, vars.browser); + combine(predefined, vars.typed); + combine(predefined, vars.browserify); + if (state.option.strict === true) { + state.option.strict = "global"; + } + } + + if (state.option.nonstandard) { + combine(predefined, vars.nonstandard); + } + + if (state.option.jasmine) { + combine(predefined, vars.jasmine); + } + + if (state.option.jquery) { + combine(predefined, vars.jquery); + } + + if (state.option.mootools) { + combine(predefined, vars.mootools); + } + + if (state.option.worker) { + combine(predefined, vars.worker); + } + + if (state.option.wsh) { + combine(predefined, vars.wsh); + } + + if (state.option.globalstrict && state.option.strict !== false) { + state.option.strict = "global"; + } + + if (state.option.yui) { + combine(predefined, vars.yui); + } + + if (state.option.mocha) { + combine(predefined, vars.mocha); + } + } + + // Produce an error warning. + function quit(code, line, chr) { + var percentage = Math.floor((line / state.lines.length) * 100); + var message = messages.errors[code].desc; + + throw { + name: "JSHintError", + line: line, + character: chr, + message: message + " (" + percentage + "% scanned).", + raw: message, + code: code + }; + } + + function removeIgnoredMessages() { + var ignored = state.ignoredLines; + + if (_.isEmpty(ignored)) return; + JSHINT.errors = _.reject(JSHINT.errors, function(err) { return ignored[err.line] }); + } + + function warning(code, t, a, b, c, d) { + var ch, l, w, msg; + + if (/^W\d{3}$/.test(code)) { + if (state.ignored[code]) + return; + + msg = messages.warnings[code]; + } else if (/E\d{3}/.test(code)) { + msg = messages.errors[code]; + } else if (/I\d{3}/.test(code)) { + msg = messages.info[code]; + } + + t = t || state.tokens.next || {}; + if (t.id === "(end)") { // `~ + t = state.tokens.curr; + } + + l = t.line || 0; + ch = t.from || 0; + + w = { + id: "(error)", + raw: msg.desc, + code: msg.code, + evidence: state.lines[l - 1] || "", + line: l, + character: ch, + scope: JSHINT.scope, + a: a, + b: b, + c: c, + d: d + }; + + w.reason = supplant(msg.desc, w); + JSHINT.errors.push(w); + + removeIgnoredMessages(); + + if (JSHINT.errors.length >= state.option.maxerr) + quit("E043", l, ch); + + return w; + } + + function warningAt(m, l, ch, a, b, c, d) { + return warning(m, { + line: l, + from: ch + }, a, b, c, d); + } + + function error(m, t, a, b, c, d) { + warning(m, t, a, b, c, d); + } + + function errorAt(m, l, ch, a, b, c, d) { + return error(m, { + line: l, + from: ch + }, a, b, c, d); + } + + // Tracking of "internal" scripts, like eval containing a static string + function addInternalSrc(elem, src) { + var i; + i = { + id: "(internal)", + elem: elem, + value: src + }; + JSHINT.internals.push(i); + return i; + } + + function doOption() { + var nt = state.tokens.next; + var body = nt.body.match(/(-\s+)?[^\s,:]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g) || []; + + var predef = {}; + if (nt.type === "globals") { + body.forEach(function(g, idx) { + g = g.split(":"); + var key = (g[0] || "").trim(); + var val = (g[1] || "").trim(); + + if (key === "-" || !key.length) { + // Ignore trailing comma + if (idx > 0 && idx === body.length - 1) { + return; + } + error("E002", nt); + return; + } + + if (key.charAt(0) === "-") { + key = key.slice(1); + val = false; + + JSHINT.blacklist[key] = key; + delete predefined[key]; + } else { + predef[key] = (val === "true"); + } + }); + + combine(predefined, predef); + + for (var key in predef) { + if (_.has(predef, key)) { + declared[key] = nt; + } + } + } + + if (nt.type === "exported") { + body.forEach(function(e, idx) { + if (!e.length) { + // Ignore trailing comma + if (idx > 0 && idx === body.length - 1) { + return; + } + error("E002", nt); + return; + } + + state.funct["(scope)"].addExported(e); + }); + } + + if (nt.type === "members") { + membersOnly = membersOnly || {}; + + body.forEach(function(m) { + var ch1 = m.charAt(0); + var ch2 = m.charAt(m.length - 1); + + if (ch1 === ch2 && (ch1 === "\"" || ch1 === "'")) { + m = m + .substr(1, m.length - 2) + .replace("\\\"", "\""); + } + + membersOnly[m] = false; + }); + } + + var numvals = [ + "maxstatements", + "maxparams", + "maxdepth", + "maxcomplexity", + "maxerr", + "maxlen", + "indent" + ]; + + if (nt.type === "jshint" || nt.type === "jslint") { + body.forEach(function(g) { + g = g.split(":"); + var key = (g[0] || "").trim(); + var val = (g[1] || "").trim(); + + if (!checkOption(key, nt)) { + return; + } + + if (numvals.indexOf(key) >= 0) { + // GH988 - numeric options can be disabled by setting them to `false` + if (val !== "false") { + val = +val; + + if (typeof val !== "number" || !isFinite(val) || val <= 0 || Math.floor(val) !== val) { + error("E032", nt, g[1].trim()); + return; + } + + state.option[key] = val; + } else { + state.option[key] = key === "indent" ? 4 : false; + } + + return; + } + + if (key === "validthis") { + // `validthis` is valid only within a function scope. + + if (state.funct["(global)"]) + return void error("E009"); + + if (val !== "true" && val !== "false") + return void error("E002", nt); + + state.option.validthis = (val === "true"); + return; + } + + if (key === "quotmark") { + switch (val) { + case "true": + case "false": + state.option.quotmark = (val === "true"); + break; + case "double": + case "single": + state.option.quotmark = val; + break; + default: + error("E002", nt); + } + return; + } + + if (key === "shadow") { + switch (val) { + case "true": + state.option.shadow = true; + break; + case "outer": + state.option.shadow = "outer"; + break; + case "false": + case "inner": + state.option.shadow = "inner"; + break; + default: + error("E002", nt); + } + return; + } + + if (key === "unused") { + switch (val) { + case "true": + state.option.unused = true; + break; + case "false": + state.option.unused = false; + break; + case "vars": + case "strict": + state.option.unused = val; + break; + default: + error("E002", nt); + } + return; + } + + if (key === "latedef") { + switch (val) { + case "true": + state.option.latedef = true; + break; + case "false": + state.option.latedef = false; + break; + case "nofunc": + state.option.latedef = "nofunc"; + break; + default: + error("E002", nt); + } + return; + } + + if (key === "ignore") { + switch (val) { + case "line": + state.ignoredLines[nt.line] = true; + removeIgnoredMessages(); + break; + default: + error("E002", nt); + } + return; + } + + if (key === "strict") { + switch (val) { + case "true": + state.option.strict = true; + break; + case "false": + state.option.strict = false; + break; + case "func": + case "global": + case "implied": + state.option.strict = val; + break; + default: + error("E002", nt); + } + return; + } + + if (key === "module") { + /** + * TODO: Extend this restriction to *all* "environmental" options. + */ + if (!hasParsedCode(state.funct)) { + error("E055", state.tokens.next, "module"); + } + } + + /** + * TODO: Remove in JSHint 3 + */ + var esversions = { + es3 : 3, + es5 : 5, + esnext: 6 + }; + if (_.has(esversions, key)) { + switch (val) { + case "true": + state.option.moz = false; + state.option.esversion = esversions[key]; + break; + case "false": + if (!state.option.moz) { + state.option.esversion = 5; + } + break; + default: + error("E002", nt); + } + return; + } + + if (key === "esversion") { + switch (val) { + case "5": + if (state.inES5(true)) { + warning("I003"); + } + /* falls through */ + case "3": + case "6": + state.option.moz = false; + state.option.esversion = +val; + break; + case "2015": + state.option.moz = false; + state.option.esversion = 6; + break; + default: + error("E002", nt); + } + if (!hasParsedCode(state.funct)) { + error("E055", state.tokens.next, "esversion"); + } + return; + } + + var match = /^([+-])(W\d{3})$/g.exec(key); + if (match) { + // ignore for -W..., unignore for +W... + state.ignored[match[2]] = (match[1] === "-"); + return; + } + + var tn; + if (val === "true" || val === "false") { + if (nt.type === "jslint") { + tn = options.renamed[key] || key; + state.option[tn] = (val === "true"); + + if (options.inverted[tn] !== undefined) { + state.option[tn] = !state.option[tn]; + } + } else { + state.option[key] = (val === "true"); + } + + if (key === "newcap") { + state.option["(explicitNewcap)"] = true; + } + return; + } + + error("E002", nt); + }); + + assume(); + } + } + + // We need a peek function. If it has an argument, it peeks that much farther + // ahead. It is used to distinguish + // for ( var i in ... + // from + // for ( var i = ... + + function peek(p) { + var i = p || 0, j = lookahead.length, t; + + if (i < j) { + return lookahead[i]; + } + + while (j <= i) { + t = lookahead[j]; + if (!t) { + t = lookahead[j] = lex.token(); + } + j += 1; + } + + // Peeking past the end of the program should produce the "(end)" token. + if (!t && state.tokens.next.id === "(end)") { + return state.tokens.next; + } + + return t; + } + + function peekIgnoreEOL() { + var i = 0; + var t; + do { + t = peek(i++); + } while (t.id === "(endline)"); + return t; + } + + // Produce the next token. It looks for programming errors. + + function advance(id, t) { + + switch (state.tokens.curr.id) { + case "(number)": + if (state.tokens.next.id === ".") { + warning("W005", state.tokens.curr); + } + break; + case "-": + if (state.tokens.next.id === "-" || state.tokens.next.id === "--") { + warning("W006"); + } + break; + case "+": + if (state.tokens.next.id === "+" || state.tokens.next.id === "++") { + warning("W007"); + } + break; + } + + if (id && state.tokens.next.id !== id) { + if (t) { + if (state.tokens.next.id === "(end)") { + error("E019", t, t.id); + } else { + error("E020", state.tokens.next, id, t.id, t.line, state.tokens.next.value); + } + } else if (state.tokens.next.type !== "(identifier)" || state.tokens.next.value !== id) { + warning("W116", state.tokens.next, id, state.tokens.next.value); + } + } + + state.tokens.prev = state.tokens.curr; + state.tokens.curr = state.tokens.next; + for (;;) { + state.tokens.next = lookahead.shift() || lex.token(); + + if (!state.tokens.next) { // No more tokens left, give up + quit("E041", state.tokens.curr.line); + } + + if (state.tokens.next.id === "(end)" || state.tokens.next.id === "(error)") { + return; + } + + if (state.tokens.next.check) { + state.tokens.next.check(); + } + + if (state.tokens.next.isSpecial) { + if (state.tokens.next.type === "falls through") { + state.tokens.curr.caseFallsThrough = true; + } else { + doOption(); + } + } else { + if (state.tokens.next.id !== "(endline)") { + break; + } + } + } + } + + function isInfix(token) { + return token.infix || (!token.identifier && !token.template && !!token.led); + } + + function isEndOfExpr() { + var curr = state.tokens.curr; + var next = state.tokens.next; + if (next.id === ";" || next.id === "}" || next.id === ":") { + return true; + } + if (isInfix(next) === isInfix(curr) || (curr.id === "yield" && state.inMoz())) { + return curr.line !== startLine(next); + } + return false; + } + + function isBeginOfExpr(prev) { + return !prev.left && prev.arity !== "unary"; + } + + // This is the heart of JSHINT, the Pratt parser. In addition to parsing, it + // is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is + // like .nud except that it is only used on the first token of a statement. + // Having .fud makes it much easier to define statement-oriented languages like + // JavaScript. I retained Pratt's nomenclature. + + // .nud Null denotation + // .fud First null denotation + // .led Left denotation + // lbp Left binding power + // rbp Right binding power + + // They are elements of the parsing method called Top Down Operator Precedence. + + function expression(rbp, initial) { + var left, isArray = false, isObject = false, isLetExpr = false; + + state.nameStack.push(); + + // if current expression is a let expression + if (!initial && state.tokens.next.value === "let" && peek(0).value === "(") { + if (!state.inMoz()) { + warning("W118", state.tokens.next, "let expressions"); + } + isLetExpr = true; + // create a new block scope we use only for the current expression + state.funct["(scope)"].stack(); + advance("let"); + advance("("); + state.tokens.prev.fud(); + advance(")"); + } + + if (state.tokens.next.id === "(end)") + error("E006", state.tokens.curr); + + var isDangerous = + state.option.asi && + state.tokens.prev.line !== startLine(state.tokens.curr) && + _.contains(["]", ")"], state.tokens.prev.id) && + _.contains(["[", "("], state.tokens.curr.id); + + if (isDangerous) + warning("W014", state.tokens.curr, state.tokens.curr.id); + + advance(); + + if (initial) { + state.funct["(verb)"] = state.tokens.curr.value; + state.tokens.curr.beginsStmt = true; + } + + if (initial === true && state.tokens.curr.fud) { + left = state.tokens.curr.fud(); + } else { + if (state.tokens.curr.nud) { + left = state.tokens.curr.nud(); + } else { + error("E030", state.tokens.curr, state.tokens.curr.id); + } + + // TODO: use pratt mechanics rather than special casing template tokens + while ((rbp < state.tokens.next.lbp || state.tokens.next.type === "(template)") && + !isEndOfExpr()) { + isArray = state.tokens.curr.value === "Array"; + isObject = state.tokens.curr.value === "Object"; + + // #527, new Foo.Array(), Foo.Array(), new Foo.Object(), Foo.Object() + // Line breaks in IfStatement heads exist to satisfy the checkJSHint + // "Line too long." error. + if (left && (left.value || (left.first && left.first.value))) { + // If the left.value is not "new", or the left.first.value is a "." + // then safely assume that this is not "new Array()" and possibly + // not "new Object()"... + if (left.value !== "new" || + (left.first && left.first.value && left.first.value === ".")) { + isArray = false; + // ...In the case of Object, if the left.value and state.tokens.curr.value + // are not equal, then safely assume that this not "new Object()" + if (left.value !== state.tokens.curr.value) { + isObject = false; + } + } + } + + advance(); + + if (isArray && state.tokens.curr.id === "(" && state.tokens.next.id === ")") { + warning("W009", state.tokens.curr); + } + + if (isObject && state.tokens.curr.id === "(" && state.tokens.next.id === ")") { + warning("W010", state.tokens.curr); + } + + if (left && state.tokens.curr.led) { + left = state.tokens.curr.led(left); + } else { + error("E033", state.tokens.curr, state.tokens.curr.id); + } + } + } + if (isLetExpr) { + state.funct["(scope)"].unstack(); + } + + state.nameStack.pop(); + + return left; + } + + + // Functions for conformance of style. + + function startLine(token) { + return token.startLine || token.line; + } + + function nobreaknonadjacent(left, right) { + left = left || state.tokens.curr; + right = right || state.tokens.next; + if (!state.option.laxbreak && left.line !== startLine(right)) { + warning("W014", right, right.value); + } + } + + function nolinebreak(t) { + t = t || state.tokens.curr; + if (t.line !== startLine(state.tokens.next)) { + warning("E022", t, t.value); + } + } + + function nobreakcomma(left, right) { + if (left.line !== startLine(right)) { + if (!state.option.laxcomma) { + if (comma.first) { + warning("I001"); + comma.first = false; + } + warning("W014", left, right.value); + } + } + } + + function comma(opts) { + opts = opts || {}; + + if (!opts.peek) { + nobreakcomma(state.tokens.curr, state.tokens.next); + advance(","); + } else { + nobreakcomma(state.tokens.prev, state.tokens.curr); + } + + if (state.tokens.next.identifier && !(opts.property && state.inES5())) { + // Keywords that cannot follow a comma operator. + switch (state.tokens.next.value) { + case "break": + case "case": + case "catch": + case "continue": + case "default": + case "do": + case "else": + case "finally": + case "for": + case "if": + case "in": + case "instanceof": + case "return": + case "switch": + case "throw": + case "try": + case "var": + case "let": + case "while": + case "with": + error("E024", state.tokens.next, state.tokens.next.value); + return false; + } + } + + if (state.tokens.next.type === "(punctuator)") { + switch (state.tokens.next.value) { + case "}": + case "]": + case ",": + if (opts.allowTrailing) { + return true; + } + + /* falls through */ + case ")": + error("E024", state.tokens.next, state.tokens.next.value); + return false; + } + } + return true; + } + + // Functional constructors for making the symbols that will be inherited by + // tokens. + + function symbol(s, p) { + var x = state.syntax[s]; + if (!x || typeof x !== "object") { + state.syntax[s] = x = { + id: s, + lbp: p, + value: s + }; + } + return x; + } + + function delim(s) { + var x = symbol(s, 0); + x.delim = true; + return x; + } + + function stmt(s, f) { + var x = delim(s); + x.identifier = x.reserved = true; + x.fud = f; + return x; + } + + function blockstmt(s, f) { + var x = stmt(s, f); + x.block = true; + return x; + } + + function reserveName(x) { + var c = x.id.charAt(0); + if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z")) { + x.identifier = x.reserved = true; + } + return x; + } + + function prefix(s, f) { + var x = symbol(s, 150); + reserveName(x); + + x.nud = (typeof f === "function") ? f : function() { + this.arity = "unary"; + this.right = expression(150); + + if (this.id === "++" || this.id === "--") { + if (state.option.plusplus) { + warning("W016", this, this.id); + } else if (this.right && (!this.right.identifier || isReserved(this.right)) && + this.right.id !== "." && this.right.id !== "[") { + warning("W017", this); + } + + if (this.right && this.right.isMetaProperty) { + error("E031", this); + // detect increment/decrement of a const + // in the case of a.b, right will be the "." punctuator + } else if (this.right && this.right.identifier) { + state.funct["(scope)"].block.modify(this.right.value, this); + } + } + + return this; + }; + + return x; + } + + function type(s, f) { + var x = delim(s); + x.type = s; + x.nud = f; + return x; + } + + function reserve(name, func) { + var x = type(name, func); + x.identifier = true; + x.reserved = true; + return x; + } + + function FutureReservedWord(name, meta) { + var x = type(name, (meta && meta.nud) || function() { + return this; + }); + + meta = meta || {}; + meta.isFutureReservedWord = true; + + x.value = name; + x.identifier = true; + x.reserved = true; + x.meta = meta; + + return x; + } + + function reservevar(s, v) { + return reserve(s, function() { + if (typeof v === "function") { + v(this); + } + return this; + }); + } + + function infix(s, f, p, w) { + var x = symbol(s, p); + reserveName(x); + x.infix = true; + x.led = function(left) { + if (!w) { + nobreaknonadjacent(state.tokens.prev, state.tokens.curr); + } + if ((s === "in" || s === "instanceof") && left.id === "!") { + warning("W018", left, "!"); + } + if (typeof f === "function") { + return f(left, this); + } else { + this.left = left; + this.right = expression(p); + return this; + } + }; + return x; + } + + function application(s) { + var x = symbol(s, 42); + + x.led = function(left) { + nobreaknonadjacent(state.tokens.prev, state.tokens.curr); + + this.left = left; + this.right = doFunction({ type: "arrow", loneArg: left }); + return this; + }; + return x; + } + + function relation(s, f) { + var x = symbol(s, 100); + + x.led = function(left) { + nobreaknonadjacent(state.tokens.prev, state.tokens.curr); + this.left = left; + var right = this.right = expression(100); + + if (isIdentifier(left, "NaN") || isIdentifier(right, "NaN")) { + warning("W019", this); + } else if (f) { + f.apply(this, [left, right]); + } + + if (!left || !right) { + quit("E041", state.tokens.curr.line); + } + + if (left.id === "!") { + warning("W018", left, "!"); + } + + if (right.id === "!") { + warning("W018", right, "!"); + } + + return this; + }; + return x; + } + + function isPoorRelation(node) { + return node && + ((node.type === "(number)" && +node.value === 0) || + (node.type === "(string)" && node.value === "") || + (node.type === "null" && !state.option.eqnull) || + node.type === "true" || + node.type === "false" || + node.type === "undefined"); + } + + var typeofValues = {}; + typeofValues.legacy = [ + // E4X extended the `typeof` operator to return "xml" for the XML and + // XMLList types it introduced. + // Ref: 11.3.2 The typeof Operator + // http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-357.pdf + "xml", + // IE<9 reports "unknown" when the `typeof` operator is applied to an + // object existing across a COM+ bridge. In lieu of official documentation + // (which does not exist), see: + // http://robertnyman.com/2005/12/21/what-is-typeof-unknown/ + "unknown" + ]; + typeofValues.es3 = [ + "undefined", "boolean", "number", "string", "function", "object", + ]; + typeofValues.es3 = typeofValues.es3.concat(typeofValues.legacy); + typeofValues.es6 = typeofValues.es3.concat("symbol"); + + // Checks whether the 'typeof' operator is used with the correct + // value. For docs on 'typeof' see: + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof + function isTypoTypeof(left, right, state) { + var values; + + if (state.option.notypeof) + return false; + + if (!left || !right) + return false; + + values = state.inES6() ? typeofValues.es6 : typeofValues.es3; + + if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)") + return !_.contains(values, left.value); + + return false; + } + + function isGlobalEval(left, state) { + var isGlobal = false; + + // permit methods to refer to an "eval" key in their own context + if (left.type === "this" && state.funct["(context)"] === null) { + isGlobal = true; + } + // permit use of "eval" members of objects + else if (left.type === "(identifier)") { + if (state.option.node && left.value === "global") { + isGlobal = true; + } + + else if (state.option.browser && (left.value === "window" || left.value === "document")) { + isGlobal = true; + } + } + + return isGlobal; + } + + function findNativePrototype(left) { + var natives = [ + "Array", "ArrayBuffer", "Boolean", "Collator", "DataView", "Date", + "DateTimeFormat", "Error", "EvalError", "Float32Array", "Float64Array", + "Function", "Infinity", "Intl", "Int16Array", "Int32Array", "Int8Array", + "Iterator", "Number", "NumberFormat", "Object", "RangeError", + "ReferenceError", "RegExp", "StopIteration", "String", "SyntaxError", + "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", + "URIError" + ]; + + function walkPrototype(obj) { + if (typeof obj !== "object") return; + return obj.right === "prototype" ? obj : walkPrototype(obj.left); + } + + function walkNative(obj) { + while (!obj.identifier && typeof obj.left === "object") + obj = obj.left; + + if (obj.identifier && natives.indexOf(obj.value) >= 0) + return obj.value; + } + + var prototype = walkPrototype(left); + if (prototype) return walkNative(prototype); + } + + /** + * Checks the left hand side of an assignment for issues, returns if ok + * @param {token} left - the left hand side of the assignment + * @param {token=} assignToken - the token for the assignment, used for reporting + * @param {object=} options - optional object + * @param {boolean} options.allowDestructuring - whether to allow destructuting binding + * @returns {boolean} Whether the left hand side is OK + */ + function checkLeftSideAssign(left, assignToken, options) { + + var allowDestructuring = options && options.allowDestructuring; + + assignToken = assignToken || left; + + if (state.option.freeze) { + var nativeObject = findNativePrototype(left); + if (nativeObject) + warning("W121", left, nativeObject); + } + + if (left.identifier && !left.isMetaProperty) { + // reassign also calls modify + // but we are specific in order to catch function re-assignment + // and globals re-assignment + state.funct["(scope)"].block.reassign(left.value, left); + } + + if (left.id === ".") { + if (!left.left || left.left.value === "arguments" && !state.isStrict()) { + warning("E031", assignToken); + } + + state.nameStack.set(state.tokens.prev); + return true; + } else if (left.id === "{" || left.id === "[") { + if (allowDestructuring && state.tokens.curr.left.destructAssign) { + state.tokens.curr.left.destructAssign.forEach(function(t) { + if (t.id) { + state.funct["(scope)"].block.modify(t.id, t.token); + } + }); + } else { + if (left.id === "{" || !left.left) { + warning("E031", assignToken); + } else if (left.left.value === "arguments" && !state.isStrict()) { + warning("E031", assignToken); + } + } + + if (left.id === "[") { + state.nameStack.set(left.right); + } + + return true; + } else if (left.isMetaProperty) { + error("E031", assignToken); + return true; + } else if (left.identifier && !isReserved(left)) { + if (state.funct["(scope)"].labeltype(left.value) === "exception") { + warning("W022", left); + } + state.nameStack.set(left); + return true; + } + + if (left === state.syntax["function"]) { + warning("W023", state.tokens.curr); + } + + return false; + } + + function assignop(s, f, p) { + var x = infix(s, typeof f === "function" ? f : function(left, that) { + that.left = left; + + if (left && checkLeftSideAssign(left, that, { allowDestructuring: true })) { + that.right = expression(10); + return that; + } + + error("E031", that); + }, p); + + x.exps = true; + x.assign = true; + return x; + } + + + function bitwise(s, f, p) { + var x = symbol(s, p); + reserveName(x); + x.led = (typeof f === "function") ? f : function(left) { + if (state.option.bitwise) { + warning("W016", this, this.id); + } + this.left = left; + this.right = expression(p); + return this; + }; + return x; + } + + function bitwiseassignop(s) { + return assignop(s, function(left, that) { + if (state.option.bitwise) { + warning("W016", that, that.id); + } + + if (left && checkLeftSideAssign(left, that)) { + that.right = expression(10); + return that; + } + error("E031", that); + }, 20); + } + + function suffix(s) { + var x = symbol(s, 150); + + x.led = function(left) { + // this = suffix e.g. "++" punctuator + // left = symbol operated e.g. "a" identifier or "a.b" punctuator + if (state.option.plusplus) { + warning("W016", this, this.id); + } else if ((!left.identifier || isReserved(left)) && left.id !== "." && left.id !== "[") { + warning("W017", this); + } + + if (left.isMetaProperty) { + error("E031", this); + // detect increment/decrement of a const + // in the case of a.b, left will be the "." punctuator + } else if (left && left.identifier) { + state.funct["(scope)"].block.modify(left.value, left); + } + + this.left = left; + return this; + }; + return x; + } + + // fnparam means that this identifier is being defined as a function + // argument (see identifier()) + // prop means that this identifier is that of an object property + + function optionalidentifier(fnparam, prop, preserve) { + if (!state.tokens.next.identifier) { + return; + } + + if (!preserve) { + advance(); + } + + var curr = state.tokens.curr; + var val = state.tokens.curr.value; + + if (!isReserved(curr)) { + return val; + } + + if (prop) { + if (state.inES5()) { + return val; + } + } + + if (fnparam && val === "undefined") { + return val; + } + + warning("W024", state.tokens.curr, state.tokens.curr.id); + return val; + } + + // fnparam means that this identifier is being defined as a function + // argument + // prop means that this identifier is that of an object property + function identifier(fnparam, prop) { + var i = optionalidentifier(fnparam, prop, false); + if (i) { + return i; + } + + // parameter destructuring with rest operator + if (state.tokens.next.value === "...") { + if (!state.inES6(true)) { + warning("W119", state.tokens.next, "spread/rest operator", "6"); + } + advance(); + + if (checkPunctuator(state.tokens.next, "...")) { + warning("E024", state.tokens.next, "..."); + while (checkPunctuator(state.tokens.next, "...")) { + advance(); + } + } + + if (!state.tokens.next.identifier) { + warning("E024", state.tokens.curr, "..."); + return; + } + + return identifier(fnparam, prop); + } else { + error("E030", state.tokens.next, state.tokens.next.value); + + // The token should be consumed after a warning is issued so the parser + // can continue as though an identifier were found. The semicolon token + // should not be consumed in this way so that the parser interprets it as + // a statement delimeter; + if (state.tokens.next.id !== ";") { + advance(); + } + } + } + + + function reachable(controlToken) { + var i = 0, t; + if (state.tokens.next.id !== ";" || controlToken.inBracelessBlock) { + return; + } + for (;;) { + do { + t = peek(i); + i += 1; + } while (t.id !== "(end)" && t.id === "(comment)"); + + if (t.reach) { + return; + } + if (t.id !== "(endline)") { + if (t.id === "function") { + if (state.option.latedef === true) { + warning("W026", t); + } + break; + } + + warning("W027", t, t.value, controlToken.value); + break; + } + } + } + + function parseFinalSemicolon() { + if (state.tokens.next.id !== ";") { + // don't complain about unclosed templates / strings + if (state.tokens.next.isUnclosed) return advance(); + + var sameLine = startLine(state.tokens.next) === state.tokens.curr.line && + state.tokens.next.id !== "(end)"; + var blockEnd = checkPunctuator(state.tokens.next, "}"); + + if (sameLine && !blockEnd) { + errorAt("E058", state.tokens.curr.line, state.tokens.curr.character); + } else if (!state.option.asi) { + // If this is the last statement in a block that ends on + // the same line *and* option lastsemic is on, ignore the warning. + // Otherwise, complain about missing semicolon. + if ((blockEnd && !state.option.lastsemic) || !sameLine) { + warningAt("W033", state.tokens.curr.line, state.tokens.curr.character); + } + } + } else { + advance(";"); + } + } + + function statement() { + var i = indent, r, t = state.tokens.next, hasOwnScope = false; + + if (t.id === ";") { + advance(";"); + return; + } + + // Is this a labelled statement? + var res = isReserved(t); + + // We're being more tolerant here: if someone uses + // a FutureReservedWord as a label, we warn but proceed + // anyway. + + if (res && t.meta && t.meta.isFutureReservedWord && peek().id === ":") { + warning("W024", t, t.id); + res = false; + } + + if (t.identifier && !res && peek().id === ":") { + advance(); + advance(":"); + + hasOwnScope = true; + state.funct["(scope)"].stack(); + state.funct["(scope)"].block.addBreakLabel(t.value, { token: state.tokens.curr }); + + if (!state.tokens.next.labelled && state.tokens.next.value !== "{") { + warning("W028", state.tokens.next, t.value, state.tokens.next.value); + } + + state.tokens.next.label = t.value; + t = state.tokens.next; + } + + // Is it a lonely block? + + if (t.id === "{") { + // Is it a switch case block? + // + // switch (foo) { + // case bar: { <= here. + // ... + // } + // } + var iscase = (state.funct["(verb)"] === "case" && state.tokens.curr.value === ":"); + block(true, true, false, false, iscase); + return; + } + + // Parse the statement. + + r = expression(0, true); + + if (r && !(r.identifier && r.value === "function") && + !(r.type === "(punctuator)" && r.left && + r.left.identifier && r.left.value === "function")) { + if (!state.isStrict() && + state.option.strict === "global") { + warning("E007"); + } + } + + // Look for the final semicolon. + + if (!t.block) { + if (!state.option.expr && (!r || !r.exps)) { + warning("W030", state.tokens.curr); + } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") { + warning("W031", t); + } + parseFinalSemicolon(); + } + + + // Restore the indentation. + + indent = i; + if (hasOwnScope) { + state.funct["(scope)"].unstack(); + } + return r; + } + + + function statements() { + var a = [], p; + + while (!state.tokens.next.reach && state.tokens.next.id !== "(end)") { + if (state.tokens.next.id === ";") { + p = peek(); + + if (!p || (p.id !== "(" && p.id !== "[")) { + warning("W032"); + } + + advance(";"); + } else { + a.push(statement()); + } + } + return a; + } + + + /* + * read all directives + * recognizes a simple form of asi, but always + * warns, if it is used + */ + function directives() { + var i, p, pn; + + while (state.tokens.next.id === "(string)") { + p = peek(0); + if (p.id === "(endline)") { + i = 1; + do { + pn = peek(i++); + } while (pn.id === "(endline)"); + if (pn.id === ";") { + p = pn; + } else if (pn.value === "[" || pn.value === ".") { + // string -> [ | . is a valid production + break; + } else if (!state.option.asi || pn.value === "(") { + // string -> ( is not a valid production + warning("W033", state.tokens.next); + } + } else if (p.id === "." || p.id === "[") { + break; + } else if (p.id !== ";") { + warning("W033", p); + } + + advance(); + var directive = state.tokens.curr.value; + if (state.directive[directive] || + (directive === "use strict" && state.option.strict === "implied")) { + warning("W034", state.tokens.curr, directive); + } + + // there's no directive negation, so always set to true + state.directive[directive] = true; + + if (p.id === ";") { + advance(";"); + } + } + + if (state.isStrict()) { + if (!state.option["(explicitNewcap)"]) { + state.option.newcap = true; + } + state.option.undef = true; + } + } + + + /* + * Parses a single block. A block is a sequence of statements wrapped in + * braces. + * + * ordinary - true for everything but function bodies and try blocks. + * stmt - true if block can be a single statement (e.g. in if/for/while). + * isfunc - true if block is a function body + * isfatarrow - true if its a body of a fat arrow function + * iscase - true if block is a switch case block + */ + function block(ordinary, stmt, isfunc, isfatarrow, iscase) { + var a, + b = inblock, + old_indent = indent, + m, + t, + line, + d; + + inblock = ordinary; + + t = state.tokens.next; + + var metrics = state.funct["(metrics)"]; + metrics.nestedBlockDepth += 1; + metrics.verifyMaxNestedBlockDepthPerFunction(); + + if (state.tokens.next.id === "{") { + advance("{"); + + // create a new block scope + state.funct["(scope)"].stack(); + + line = state.tokens.curr.line; + if (state.tokens.next.id !== "}") { + indent += state.option.indent; + while (!ordinary && state.tokens.next.from > indent) { + indent += state.option.indent; + } + + if (isfunc) { + m = {}; + for (d in state.directive) { + if (_.has(state.directive, d)) { + m[d] = state.directive[d]; + } + } + directives(); + + if (state.option.strict && state.funct["(context)"]["(global)"]) { + if (!m["use strict"] && !state.isStrict()) { + warning("E007"); + } + } + } + + a = statements(); + + metrics.statementCount += a.length; + + indent -= state.option.indent; + } + + advance("}", t); + + if (isfunc) { + state.funct["(scope)"].validateParams(); + if (m) { + state.directive = m; + } + } + + state.funct["(scope)"].unstack(); + + indent = old_indent; + } else if (!ordinary) { + if (isfunc) { + state.funct["(scope)"].stack(); + + m = {}; + if (stmt && !isfatarrow && !state.inMoz()) { + error("W118", state.tokens.curr, "function closure expressions"); + } + + if (!stmt) { + for (d in state.directive) { + if (_.has(state.directive, d)) { + m[d] = state.directive[d]; + } + } + } + expression(10); + + if (state.option.strict && state.funct["(context)"]["(global)"]) { + if (!m["use strict"] && !state.isStrict()) { + warning("E007"); + } + } + + state.funct["(scope)"].unstack(); + } else { + error("E021", state.tokens.next, "{", state.tokens.next.value); + } + } else { + + // check to avoid let declaration not within a block + // though is fine inside for loop initializer section + state.funct["(noblockscopedvar)"] = state.tokens.next.id !== "for"; + state.funct["(scope)"].stack(); + + if (!stmt || state.option.curly) { + warning("W116", state.tokens.next, "{", state.tokens.next.value); + } + + state.tokens.next.inBracelessBlock = true; + indent += state.option.indent; + // test indentation only if statement is in new line + a = [statement()]; + indent -= state.option.indent; + + state.funct["(scope)"].unstack(); + delete state.funct["(noblockscopedvar)"]; + } + + // Don't clear and let it propagate out if it is "break", "return" or similar in switch case + switch (state.funct["(verb)"]) { + case "break": + case "continue": + case "return": + case "throw": + if (iscase) { + break; + } + + /* falls through */ + default: + state.funct["(verb)"] = null; + } + + inblock = b; + if (ordinary && state.option.noempty && (!a || a.length === 0)) { + warning("W035", state.tokens.prev); + } + metrics.nestedBlockDepth -= 1; + return a; + } + + + function countMember(m) { + if (membersOnly && typeof membersOnly[m] !== "boolean") { + warning("W036", state.tokens.curr, m); + } + if (typeof member[m] === "number") { + member[m] += 1; + } else { + member[m] = 1; + } + } + + // Build the syntax table by declaring the syntactic elements of the language. + + type("(number)", function() { + return this; + }); + + type("(string)", function() { + return this; + }); + + state.syntax["(identifier)"] = { + type: "(identifier)", + lbp: 0, + identifier: true, + + nud: function() { + var v = this.value; + + // If this identifier is the lone parameter to a shorthand "fat arrow" + // function definition, i.e. + // + // x => x; + // + // ...it should not be considered as a variable in the current scope. It + // will be added to the scope of the new function when the next token is + // parsed, so it can be safely ignored for now. + if (state.tokens.next.id === "=>") { + return this; + } + + if (!state.funct["(comparray)"].check(v)) { + state.funct["(scope)"].block.use(v, state.tokens.curr); + } + return this; + }, + + led: function() { + error("E033", state.tokens.next, state.tokens.next.value); + } + }; + + var baseTemplateSyntax = { + lbp: 0, + identifier: false, + template: true, + }; + state.syntax["(template)"] = _.extend({ + type: "(template)", + nud: doTemplateLiteral, + led: doTemplateLiteral, + noSubst: false + }, baseTemplateSyntax); + + state.syntax["(template middle)"] = _.extend({ + type: "(template middle)", + middle: true, + noSubst: false + }, baseTemplateSyntax); + + state.syntax["(template tail)"] = _.extend({ + type: "(template tail)", + tail: true, + noSubst: false + }, baseTemplateSyntax); + + state.syntax["(no subst template)"] = _.extend({ + type: "(template)", + nud: doTemplateLiteral, + led: doTemplateLiteral, + noSubst: true, + tail: true // mark as tail, since it's always the last component + }, baseTemplateSyntax); + + type("(regexp)", function() { + return this; + }); + + // ECMAScript parser + + delim("(endline)"); + delim("(begin)"); + delim("(end)").reach = true; + delim("(error)").reach = true; + delim("}").reach = true; + delim(")"); + delim("]"); + delim("\"").reach = true; + delim("'").reach = true; + delim(";"); + delim(":").reach = true; + delim("#"); + + reserve("else"); + reserve("case").reach = true; + reserve("catch"); + reserve("default").reach = true; + reserve("finally"); + reservevar("arguments", function(x) { + if (state.isStrict() && state.funct["(global)"]) { + warning("E008", x); + } + }); + reservevar("eval"); + reservevar("false"); + reservevar("Infinity"); + reservevar("null"); + reservevar("this", function(x) { + if (state.isStrict() && !isMethod() && + !state.option.validthis && ((state.funct["(statement)"] && + state.funct["(name)"].charAt(0) > "Z") || state.funct["(global)"])) { + warning("W040", x); + } + }); + reservevar("true"); + reservevar("undefined"); + + assignop("=", "assign", 20); + assignop("+=", "assignadd", 20); + assignop("-=", "assignsub", 20); + assignop("*=", "assignmult", 20); + assignop("/=", "assigndiv", 20).nud = function() { + error("E014"); + }; + assignop("%=", "assignmod", 20); + + bitwiseassignop("&="); + bitwiseassignop("|="); + bitwiseassignop("^="); + bitwiseassignop("<<="); + bitwiseassignop(">>="); + bitwiseassignop(">>>="); + infix(",", function(left, that) { + var expr; + that.exprs = [left]; + + if (state.option.nocomma) { + warning("W127"); + } + + if (!comma({ peek: true })) { + return that; + } + while (true) { + if (!(expr = expression(10))) { + break; + } + that.exprs.push(expr); + if (state.tokens.next.value !== "," || !comma()) { + break; + } + } + return that; + }, 10, true); + + infix("?", function(left, that) { + increaseComplexityCount(); + that.left = left; + that.right = expression(10); + advance(":"); + that["else"] = expression(10); + return that; + }, 30); + + var orPrecendence = 40; + infix("||", function(left, that) { + increaseComplexityCount(); + that.left = left; + that.right = expression(orPrecendence); + return that; + }, orPrecendence); + infix("&&", "and", 50); + bitwise("|", "bitor", 70); + bitwise("^", "bitxor", 80); + bitwise("&", "bitand", 90); + relation("==", function(left, right) { + var eqnull = state.option.eqnull && + ((left && left.value) === "null" || (right && right.value) === "null"); + + switch (true) { + case !eqnull && state.option.eqeqeq: + this.from = this.character; + warning("W116", this, "===", "=="); + break; + case isPoorRelation(left): + warning("W041", this, "===", left.value); + break; + case isPoorRelation(right): + warning("W041", this, "===", right.value); + break; + case isTypoTypeof(right, left, state): + warning("W122", this, right.value); + break; + case isTypoTypeof(left, right, state): + warning("W122", this, left.value); + break; + } + + return this; + }); + relation("===", function(left, right) { + if (isTypoTypeof(right, left, state)) { + warning("W122", this, right.value); + } else if (isTypoTypeof(left, right, state)) { + warning("W122", this, left.value); + } + return this; + }); + relation("!=", function(left, right) { + var eqnull = state.option.eqnull && + ((left && left.value) === "null" || (right && right.value) === "null"); + + if (!eqnull && state.option.eqeqeq) { + this.from = this.character; + warning("W116", this, "!==", "!="); + } else if (isPoorRelation(left)) { + warning("W041", this, "!==", left.value); + } else if (isPoorRelation(right)) { + warning("W041", this, "!==", right.value); + } else if (isTypoTypeof(right, left, state)) { + warning("W122", this, right.value); + } else if (isTypoTypeof(left, right, state)) { + warning("W122", this, left.value); + } + return this; + }); + relation("!==", function(left, right) { + if (isTypoTypeof(right, left, state)) { + warning("W122", this, right.value); + } else if (isTypoTypeof(left, right, state)) { + warning("W122", this, left.value); + } + return this; + }); + relation("<"); + relation(">"); + relation("<="); + relation(">="); + bitwise("<<", "shiftleft", 120); + bitwise(">>", "shiftright", 120); + bitwise(">>>", "shiftrightunsigned", 120); + infix("in", "in", 120); + infix("instanceof", "instanceof", 120); + infix("+", function(left, that) { + var right; + that.left = left; + that.right = right = expression(130); + + if (left && right && left.id === "(string)" && right.id === "(string)") { + left.value += right.value; + left.character = right.character; + if (!state.option.scripturl && reg.javascriptURL.test(left.value)) { + warning("W050", left); + } + return left; + } + + return that; + }, 130); + prefix("+", "num"); + prefix("+++", function() { + warning("W007"); + this.arity = "unary"; + this.right = expression(150); + return this; + }); + infix("+++", function(left) { + warning("W007"); + this.left = left; + this.right = expression(130); + return this; + }, 130); + infix("-", "sub", 130); + prefix("-", "neg"); + prefix("---", function() { + warning("W006"); + this.arity = "unary"; + this.right = expression(150); + return this; + }); + infix("---", function(left) { + warning("W006"); + this.left = left; + this.right = expression(130); + return this; + }, 130); + infix("*", "mult", 140); + infix("/", "div", 140); + infix("%", "mod", 140); + + suffix("++"); + prefix("++", "preinc"); + state.syntax["++"].exps = true; + + suffix("--"); + prefix("--", "predec"); + state.syntax["--"].exps = true; + prefix("delete", function() { + var p = expression(10); + if (!p) { + return this; + } + + if (p.id !== "." && p.id !== "[") { + warning("W051"); + } + this.first = p; + + // The `delete` operator accepts unresolvable references when not in strict + // mode, so the operand may be undefined. + if (p.identifier && !state.isStrict()) { + p.forgiveUndef = true; + } + return this; + }).exps = true; + + prefix("~", function() { + if (state.option.bitwise) { + warning("W016", this, "~"); + } + this.arity = "unary"; + this.right = expression(150); + return this; + }); + + prefix("...", function() { + if (!state.inES6(true)) { + warning("W119", this, "spread/rest operator", "6"); + } + + // TODO: Allow all AssignmentExpression + // once parsing permits. + // + // How to handle eg. number, boolean when the built-in + // prototype of may have an @@iterator definition? + // + // Number.prototype[Symbol.iterator] = function * () { + // yield this.valueOf(); + // }; + // + // var a = [ ...1 ]; + // console.log(a); // [1]; + // + // for (let n of [...10]) { + // console.log(n); + // } + // // 10 + // + // + // Boolean.prototype[Symbol.iterator] = function * () { + // yield this.valueOf(); + // }; + // + // var a = [ ...true ]; + // console.log(a); // [true]; + // + // for (let n of [...false]) { + // console.log(n); + // } + // // false + // + if (!state.tokens.next.identifier && + state.tokens.next.type !== "(string)" && + !checkPunctuators(state.tokens.next, ["[", "("])) { + + error("E030", state.tokens.next, state.tokens.next.value); + } + expression(150); + return this; + }); + + prefix("!", function() { + this.arity = "unary"; + this.right = expression(150); + + if (!this.right) { // '!' followed by nothing? Give up. + quit("E041", this.line || 0); + } + + if (bang[this.right.id] === true) { + warning("W018", this, "!"); + } + return this; + }); + + prefix("typeof", (function() { + var p = expression(150); + this.first = this.right = p; + + if (!p) { // 'typeof' followed by nothing? Give up. + quit("E041", this.line || 0, this.character || 0); + } + + // The `typeof` operator accepts unresolvable references, so the operand + // may be undefined. + if (p.identifier) { + p.forgiveUndef = true; + } + return this; + })); + prefix("new", function() { + var mp = metaProperty("target", function() { + if (!state.inES6(true)) { + warning("W119", state.tokens.prev, "new.target", "6"); + } + var inFunction, c = state.funct; + while (c) { + inFunction = !c["(global)"]; + if (!c["(arrow)"]) { break; } + c = c["(context)"]; + } + if (!inFunction) { + warning("W136", state.tokens.prev, "new.target"); + } + }); + if (mp) { return mp; } + + var c = expression(155), i; + if (c && c.id !== "function") { + if (c.identifier) { + c["new"] = true; + switch (c.value) { + case "Number": + case "String": + case "Boolean": + case "Math": + case "JSON": + warning("W053", state.tokens.prev, c.value); + break; + case "Symbol": + if (state.inES6()) { + warning("W053", state.tokens.prev, c.value); + } + break; + case "Function": + if (!state.option.evil) { + warning("W054"); + } + break; + case "Date": + case "RegExp": + case "this": + break; + default: + if (c.id !== "function") { + i = c.value.substr(0, 1); + if (state.option.newcap && (i < "A" || i > "Z") && + !state.funct["(scope)"].isPredefined(c.value)) { + warning("W055", state.tokens.curr); + } + } + } + } else { + if (c.id !== "." && c.id !== "[" && c.id !== "(") { + warning("W056", state.tokens.curr); + } + } + } else { + if (!state.option.supernew) + warning("W057", this); + } + if (state.tokens.next.id !== "(" && !state.option.supernew) { + warning("W058", state.tokens.curr, state.tokens.curr.value); + } + this.first = this.right = c; + return this; + }); + state.syntax["new"].exps = true; + + prefix("void").exps = true; + + infix(".", function(left, that) { + var m = identifier(false, true); + + if (typeof m === "string") { + countMember(m); + } + + that.left = left; + that.right = m; + + if (m && m === "hasOwnProperty" && state.tokens.next.value === "=") { + warning("W001"); + } + + if (left && left.value === "arguments" && (m === "callee" || m === "caller")) { + if (state.option.noarg) + warning("W059", left, m); + else if (state.isStrict()) + error("E008"); + } else if (!state.option.evil && left && left.value === "document" && + (m === "write" || m === "writeln")) { + warning("W060", left); + } + + if (!state.option.evil && (m === "eval" || m === "execScript")) { + if (isGlobalEval(left, state)) { + warning("W061"); + } + } + + return that; + }, 160, true); + + infix("(", function(left, that) { + if (state.option.immed && left && !left.immed && left.id === "function") { + warning("W062"); + } + + var n = 0; + var p = []; + + if (left) { + if (left.type === "(identifier)") { + if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) { + if ("Array Number String Boolean Date Object Error Symbol".indexOf(left.value) === -1) { + if (left.value === "Math") { + warning("W063", left); + } else if (state.option.newcap) { + warning("W064", left); + } + } + } + } + } + + if (state.tokens.next.id !== ")") { + for (;;) { + p[p.length] = expression(10); + n += 1; + if (state.tokens.next.id !== ",") { + break; + } + comma(); + } + } + + advance(")"); + + if (typeof left === "object") { + if (!state.inES5() && left.value === "parseInt" && n === 1) { + warning("W065", state.tokens.curr); + } + if (!state.option.evil) { + if (left.value === "eval" || left.value === "Function" || + left.value === "execScript") { + warning("W061", left); + + if (p[0] && [0].id === "(string)") { + addInternalSrc(left, p[0].value); + } + } else if (p[0] && p[0].id === "(string)" && + (left.value === "setTimeout" || + left.value === "setInterval")) { + warning("W066", left); + addInternalSrc(left, p[0].value); + + // window.setTimeout/setInterval + } else if (p[0] && p[0].id === "(string)" && + left.value === "." && + left.left.value === "window" && + (left.right === "setTimeout" || + left.right === "setInterval")) { + warning("W066", left); + addInternalSrc(left, p[0].value); + } + } + if (!left.identifier && left.id !== "." && left.id !== "[" && left.id !== "=>" && + left.id !== "(" && left.id !== "&&" && left.id !== "||" && left.id !== "?" && + !(state.inES6() && left["(name)"])) { + warning("W067", that); + } + } + + that.left = left; + return that; + }, 155, true).exps = true; + + prefix("(", function() { + var pn = state.tokens.next, pn1, i = -1; + var ret, triggerFnExpr, first, last; + var parens = 1; + var opening = state.tokens.curr; + var preceeding = state.tokens.prev; + var isNecessary = !state.option.singleGroups; + + do { + if (pn.value === "(") { + parens += 1; + } else if (pn.value === ")") { + parens -= 1; + } + + i += 1; + pn1 = pn; + pn = peek(i); + } while (!(parens === 0 && pn1.value === ")") && pn.value !== ";" && pn.type !== "(end)"); + + if (state.tokens.next.id === "function") { + triggerFnExpr = state.tokens.next.immed = true; + } + + // If the balanced grouping operator is followed by a "fat arrow", the + // current token marks the beginning of a "fat arrow" function and parsing + // should proceed accordingly. + if (pn.value === "=>") { + return doFunction({ type: "arrow", parsedOpening: true }); + } + + var exprs = []; + + if (state.tokens.next.id !== ")") { + for (;;) { + exprs.push(expression(10)); + + if (state.tokens.next.id !== ",") { + break; + } + + if (state.option.nocomma) { + warning("W127"); + } + + comma(); + } + } + + advance(")", this); + if (state.option.immed && exprs[0] && exprs[0].id === "function") { + if (state.tokens.next.id !== "(" && + state.tokens.next.id !== "." && state.tokens.next.id !== "[") { + warning("W068", this); + } + } + + if (!exprs.length) { + return; + } + if (exprs.length > 1) { + ret = Object.create(state.syntax[","]); + ret.exprs = exprs; + + first = exprs[0]; + last = exprs[exprs.length - 1]; + + if (!isNecessary) { + isNecessary = preceeding.assign || preceeding.delim; + } + } else { + ret = first = last = exprs[0]; + + if (!isNecessary) { + isNecessary = + // Used to distinguish from an ExpressionStatement which may not + // begin with the `{` and `function` tokens + (opening.beginsStmt && (ret.id === "{" || triggerFnExpr || isFunctor(ret))) || + // Used to signal that a function expression is being supplied to + // some other operator. + (triggerFnExpr && + // For parenthesis wrapping a function expression to be considered + // necessary, the grouping operator should be the left-hand-side of + // some other operator--either within the parenthesis or directly + // following them. + (!isEndOfExpr() || state.tokens.prev.id !== "}")) || + // Used to demarcate an arrow function as the left-hand side of some + // operator. + (isFunctor(ret) && !isEndOfExpr()) || + // Used as the return value of a single-statement arrow function + (ret.id === "{" && preceeding.id === "=>") || + // Used to delineate an integer number literal from a dereferencing + // punctuator (otherwise interpreted as a decimal point) + (ret.type === "(number)" && + checkPunctuator(pn, ".") && /^\d+$/.test(ret.value)); + } + } + + if (ret) { + // The operator may be necessary to override the default binding power of + // neighboring operators (whenever there is an operator in use within the + // first expression *or* the current group contains multiple expressions) + if (!isNecessary && (first.left || first.right || ret.exprs)) { + isNecessary = + (!isBeginOfExpr(preceeding) && first.lbp <= preceeding.lbp) || + (!isEndOfExpr() && last.lbp < state.tokens.next.lbp); + } + + if (!isNecessary) { + warning("W126", opening); + } + + ret.paren = true; + } + + return ret; + }); + + application("=>"); + + infix("[", function(left, that) { + var e = expression(10), s; + if (e && e.type === "(string)") { + if (!state.option.evil && (e.value === "eval" || e.value === "execScript")) { + if (isGlobalEval(left, state)) { + warning("W061"); + } + } + + countMember(e.value); + if (!state.option.sub && reg.identifier.test(e.value)) { + s = state.syntax[e.value]; + if (!s || !isReserved(s)) { + warning("W069", state.tokens.prev, e.value); + } + } + } + advance("]", that); + + if (e && e.value === "hasOwnProperty" && state.tokens.next.value === "=") { + warning("W001"); + } + + that.left = left; + that.right = e; + return that; + }, 160, true); + + function comprehensiveArrayExpression() { + var res = {}; + res.exps = true; + state.funct["(comparray)"].stack(); + + // Handle reversed for expressions, used in spidermonkey + var reversed = false; + if (state.tokens.next.value !== "for") { + reversed = true; + if (!state.inMoz()) { + warning("W116", state.tokens.next, "for", state.tokens.next.value); + } + state.funct["(comparray)"].setState("use"); + res.right = expression(10); + } + + advance("for"); + if (state.tokens.next.value === "each") { + advance("each"); + if (!state.inMoz()) { + warning("W118", state.tokens.curr, "for each"); + } + } + advance("("); + state.funct["(comparray)"].setState("define"); + res.left = expression(130); + if (_.contains(["in", "of"], state.tokens.next.value)) { + advance(); + } else { + error("E045", state.tokens.curr); + } + state.funct["(comparray)"].setState("generate"); + expression(10); + + advance(")"); + if (state.tokens.next.value === "if") { + advance("if"); + advance("("); + state.funct["(comparray)"].setState("filter"); + res.filter = expression(10); + advance(")"); + } + + if (!reversed) { + state.funct["(comparray)"].setState("use"); + res.right = expression(10); + } + + advance("]"); + state.funct["(comparray)"].unstack(); + return res; + } + + prefix("[", function() { + var blocktype = lookupBlockType(); + if (blocktype.isCompArray) { + if (!state.option.esnext && !state.inMoz()) { + warning("W118", state.tokens.curr, "array comprehension"); + } + return comprehensiveArrayExpression(); + } else if (blocktype.isDestAssign) { + this.destructAssign = destructuringPattern({ openingParsed: true, assignment: true }); + return this; + } + var b = state.tokens.curr.line !== startLine(state.tokens.next); + this.first = []; + if (b) { + indent += state.option.indent; + if (state.tokens.next.from === indent + state.option.indent) { + indent += state.option.indent; + } + } + while (state.tokens.next.id !== "(end)") { + while (state.tokens.next.id === ",") { + if (!state.option.elision) { + if (!state.inES5()) { + // Maintain compat with old options --- ES5 mode without + // elision=true will warn once per comma + warning("W070"); + } else { + warning("W128"); + do { + advance(","); + } while (state.tokens.next.id === ","); + continue; + } + } + advance(","); + } + + if (state.tokens.next.id === "]") { + break; + } + + this.first.push(expression(10)); + if (state.tokens.next.id === ",") { + comma({ allowTrailing: true }); + if (state.tokens.next.id === "]" && !state.inES5()) { + warning("W070", state.tokens.curr); + break; + } + } else { + break; + } + } + if (b) { + indent -= state.option.indent; + } + advance("]", this); + return this; + }); + + + function isMethod() { + return state.funct["(statement)"] && state.funct["(statement)"].type === "class" || + state.funct["(context)"] && state.funct["(context)"]["(verb)"] === "class"; + } + + + function isPropertyName(token) { + return token.identifier || token.id === "(string)" || token.id === "(number)"; + } + + + function propertyName(preserveOrToken) { + var id; + var preserve = true; + if (typeof preserveOrToken === "object") { + id = preserveOrToken; + } else { + preserve = preserveOrToken; + id = optionalidentifier(false, true, preserve); + } + + if (!id) { + if (state.tokens.next.id === "(string)") { + id = state.tokens.next.value; + if (!preserve) { + advance(); + } + } else if (state.tokens.next.id === "(number)") { + id = state.tokens.next.value.toString(); + if (!preserve) { + advance(); + } + } + } else if (typeof id === "object") { + if (id.id === "(string)" || id.id === "(identifier)") id = id.value; + else if (id.id === "(number)") id = id.value.toString(); + } + + if (id === "hasOwnProperty") { + warning("W001"); + } + + return id; + } + + /** + * @param {Object} [options] + * @param {token} [options.loneArg] The argument to the function in cases + * where it was defined using the + * single-argument shorthand. + * @param {bool} [options.parsedOpening] Whether the opening parenthesis has + * already been parsed. + * @returns {{ arity: number, params: Array.<string>}} + */ + function functionparams(options) { + var next; + var paramsIds = []; + var ident; + var tokens = []; + var t; + var pastDefault = false; + var pastRest = false; + var arity = 0; + var loneArg = options && options.loneArg; + + if (loneArg && loneArg.identifier === true) { + state.funct["(scope)"].addParam(loneArg.value, loneArg); + return { arity: 1, params: [ loneArg.value ] }; + } + + next = state.tokens.next; + + if (!options || !options.parsedOpening) { + advance("("); + } + + if (state.tokens.next.id === ")") { + advance(")"); + return; + } + + function addParam(addParamArgs) { + state.funct["(scope)"].addParam.apply(state.funct["(scope)"], addParamArgs); + } + + for (;;) { + arity++; + // are added to the param scope + var currentParams = []; + + if (_.contains(["{", "["], state.tokens.next.id)) { + tokens = destructuringPattern(); + for (t in tokens) { + t = tokens[t]; + if (t.id) { + paramsIds.push(t.id); + currentParams.push([t.id, t.token]); + } + } + } else { + if (checkPunctuator(state.tokens.next, "...")) pastRest = true; + ident = identifier(true); + if (ident) { + paramsIds.push(ident); + currentParams.push([ident, state.tokens.curr]); + } else { + // Skip invalid parameter. + while (!checkPunctuators(state.tokens.next, [",", ")"])) advance(); + } + } + + // It is valid to have a regular argument after a default argument + // since undefined can be used for missing parameters. Still warn as it is + // a possible code smell. + if (pastDefault) { + if (state.tokens.next.id !== "=") { + error("W138", state.tokens.current); + } + } + if (state.tokens.next.id === "=") { + if (!state.inES6()) { + warning("W119", state.tokens.next, "default parameters", "6"); + } + advance("="); + pastDefault = true; + expression(10); + } + + // now we have evaluated the default expression, add the variable to the param scope + currentParams.forEach(addParam); + + if (state.tokens.next.id === ",") { + if (pastRest) { + warning("W131", state.tokens.next); + } + comma(); + } else { + advance(")", next); + return { arity: arity, params: paramsIds }; + } + } + } + + function functor(name, token, overwrites) { + var funct = { + "(name)" : name, + "(breakage)" : 0, + "(loopage)" : 0, + "(tokens)" : {}, + "(properties)": {}, + + "(catch)" : false, + "(global)" : false, + + "(line)" : null, + "(character)" : null, + "(metrics)" : null, + "(statement)" : null, + "(context)" : null, + "(scope)" : null, + "(comparray)" : null, + "(generator)" : null, + "(arrow)" : null, + "(params)" : null + }; + + if (token) { + _.extend(funct, { + "(line)" : token.line, + "(character)": token.character, + "(metrics)" : createMetrics(token) + }); + } + + _.extend(funct, overwrites); + + if (funct["(context)"]) { + funct["(scope)"] = funct["(context)"]["(scope)"]; + funct["(comparray)"] = funct["(context)"]["(comparray)"]; + } + + return funct; + } + + function isFunctor(token) { + return "(scope)" in token; + } + + /** + * Determine if the parser has begun parsing executable code. + * + * @param {Token} funct - The current "functor" token + * + * @returns {boolean} + */ + function hasParsedCode(funct) { + return funct["(global)"] && !funct["(verb)"]; + } + + function doTemplateLiteral(left) { + // ASSERT: this.type === "(template)" + // jshint validthis: true + var ctx = this.context; + var noSubst = this.noSubst; + var depth = this.depth; + + if (!noSubst) { + while (!end()) { + if (!state.tokens.next.template || state.tokens.next.depth > depth) { + expression(0); // should probably have different rbp? + } else { + // skip template start / middle + advance(); + } + } + } + + return { + id: "(template)", + type: "(template)", + tag: left + }; + + function end() { + if (state.tokens.curr.template && state.tokens.curr.tail && + state.tokens.curr.context === ctx) return true; + var complete = (state.tokens.next.template && state.tokens.next.tail && + state.tokens.next.context === ctx); + if (complete) advance(); + return complete || state.tokens.next.isUnclosed; + } + } + + /** + * @param {Object} [options] + * @param {token} [options.name] The identifier belonging to the function (if + * any) + * @param {boolean} [options.statement] The statement that triggered creation + * of the current function. + * @param {string} [options.type] If specified, either "generator" or "arrow" + * @param {token} [options.loneArg] The argument to the function in cases + * where it was defined using the + * single-argument shorthand + * @param {bool} [options.parsedOpening] Whether the opening parenthesis has + * already been parsed + * @param {token} [options.classExprBinding] Define a function with this + * identifier in the new function's + * scope, mimicking the bahavior of + * class expression names within + * the body of member functions. + */ + function doFunction(options) { + var f, token, name, statement, classExprBinding, isGenerator, isArrow, ignoreLoopFunc; + var oldOption = state.option; + var oldIgnored = state.ignored; + + if (options) { + name = options.name; + statement = options.statement; + classExprBinding = options.classExprBinding; + isGenerator = options.type === "generator"; + isArrow = options.type === "arrow"; + ignoreLoopFunc = options.ignoreLoopFunc; + } + + state.option = Object.create(state.option); + state.ignored = Object.create(state.ignored); + + state.funct = functor(name || state.nameStack.infer(), state.tokens.next, { + "(statement)": statement, + "(context)": state.funct, + "(arrow)": isArrow, + "(generator)": isGenerator + }); + + f = state.funct; + token = state.tokens.curr; + token.funct = state.funct; + + functions.push(state.funct); + + // So that the function is available to itself and referencing itself is not + // seen as a closure, add the function name to a new scope, but do not + // test for unused (unused: false) + // it is a new block scope so that params can override it, it can be block scoped + // but declarations inside the function don't cause already declared error + state.funct["(scope)"].stack("functionouter"); + var internallyAccessibleName = name || classExprBinding; + if (internallyAccessibleName) { + state.funct["(scope)"].block.add(internallyAccessibleName, + classExprBinding ? "class" : "function", state.tokens.curr, false); + } + + // create the param scope (params added in functionparams) + state.funct["(scope)"].stack("functionparams"); + + var paramsInfo = functionparams(options); + + if (paramsInfo) { + state.funct["(params)"] = paramsInfo.params; + state.funct["(metrics)"].arity = paramsInfo.arity; + state.funct["(metrics)"].verifyMaxParametersPerFunction(); + } else { + state.funct["(metrics)"].arity = 0; + } + + if (isArrow) { + if (!state.inES6(true)) { + warning("W119", state.tokens.curr, "arrow function syntax (=>)", "6"); + } + + if (!options.loneArg) { + advance("=>"); + } + } + + block(false, true, true, isArrow); + + if (!state.option.noyield && isGenerator && + state.funct["(generator)"] !== "yielded") { + warning("W124", state.tokens.curr); + } + + state.funct["(metrics)"].verifyMaxStatementsPerFunction(); + state.funct["(metrics)"].verifyMaxComplexityPerFunction(); + state.funct["(unusedOption)"] = state.option.unused; + state.option = oldOption; + state.ignored = oldIgnored; + state.funct["(last)"] = state.tokens.curr.line; + state.funct["(lastcharacter)"] = state.tokens.curr.character; + + // unstack the params scope + state.funct["(scope)"].unstack(); // also does usage and label checks + + // unstack the function outer stack + state.funct["(scope)"].unstack(); + + state.funct = state.funct["(context)"]; + + if (!ignoreLoopFunc && !state.option.loopfunc && state.funct["(loopage)"]) { + // If the function we just parsed accesses any non-local variables + // trigger a warning. Otherwise, the function is safe even within + // a loop. + if (f["(isCapturing)"]) { + warning("W083", token); + } + } + + return f; + } + + function createMetrics(functionStartToken) { + return { + statementCount: 0, + nestedBlockDepth: -1, + ComplexityCount: 1, + arity: 0, + + verifyMaxStatementsPerFunction: function() { + if (state.option.maxstatements && + this.statementCount > state.option.maxstatements) { + warning("W071", functionStartToken, this.statementCount); + } + }, + + verifyMaxParametersPerFunction: function() { + if (_.isNumber(state.option.maxparams) && + this.arity > state.option.maxparams) { + warning("W072", functionStartToken, this.arity); + } + }, + + verifyMaxNestedBlockDepthPerFunction: function() { + if (state.option.maxdepth && + this.nestedBlockDepth > 0 && + this.nestedBlockDepth === state.option.maxdepth + 1) { + warning("W073", null, this.nestedBlockDepth); + } + }, + + verifyMaxComplexityPerFunction: function() { + var max = state.option.maxcomplexity; + var cc = this.ComplexityCount; + if (max && cc > max) { + warning("W074", functionStartToken, cc); + } + } + }; + } + + function increaseComplexityCount() { + state.funct["(metrics)"].ComplexityCount += 1; + } + + // Parse assignments that were found instead of conditionals. + // For example: if (a = 1) { ... } + + function checkCondAssignment(expr) { + var id, paren; + if (expr) { + id = expr.id; + paren = expr.paren; + if (id === "," && (expr = expr.exprs[expr.exprs.length - 1])) { + id = expr.id; + paren = paren || expr.paren; + } + } + switch (id) { + case "=": + case "+=": + case "-=": + case "*=": + case "%=": + case "&=": + case "|=": + case "^=": + case "/=": + if (!paren && !state.option.boss) { + warning("W084"); + } + } + } + + /** + * @param {object} props Collection of property descriptors for a given + * object. + */ + function checkProperties(props) { + // Check for lonely setters if in the ES5 mode. + if (state.inES5()) { + for (var name in props) { + if (props[name] && props[name].setterToken && !props[name].getterToken) { + warning("W078", props[name].setterToken); + } + } + } + } + + function metaProperty(name, c) { + if (checkPunctuator(state.tokens.next, ".")) { + var left = state.tokens.curr.id; + advance("."); + var id = identifier(); + state.tokens.curr.isMetaProperty = true; + if (name !== id) { + error("E057", state.tokens.prev, left, id); + } else { + c(); + } + return state.tokens.curr; + } + } + + (function(x) { + x.nud = function() { + var b, f, i, p, t, isGeneratorMethod = false, nextVal; + var props = Object.create(null); // All properties, including accessors + + b = state.tokens.curr.line !== startLine(state.tokens.next); + if (b) { + indent += state.option.indent; + if (state.tokens.next.from === indent + state.option.indent) { + indent += state.option.indent; + } + } + + var blocktype = lookupBlockType(); + if (blocktype.isDestAssign) { + this.destructAssign = destructuringPattern({ openingParsed: true, assignment: true }); + return this; + } + + for (;;) { + if (state.tokens.next.id === "}") { + break; + } + + nextVal = state.tokens.next.value; + if (state.tokens.next.identifier && + (peekIgnoreEOL().id === "," || peekIgnoreEOL().id === "}")) { + if (!state.inES6()) { + warning("W104", state.tokens.next, "object short notation", "6"); + } + i = propertyName(true); + saveProperty(props, i, state.tokens.next); + + expression(10); + + } else if (peek().id !== ":" && (nextVal === "get" || nextVal === "set")) { + advance(nextVal); + + if (!state.inES5()) { + error("E034"); + } + + i = propertyName(); + + // ES6 allows for get() {...} and set() {...} method + // definition shorthand syntax, so we don't produce an error + // if linting ECMAScript 6 code. + if (!i && !state.inES6()) { + error("E035"); + } + + // We don't want to save this getter unless it's an actual getter + // and not an ES6 concise method + if (i) { + saveAccessor(nextVal, props, i, state.tokens.curr); + } + + t = state.tokens.next; + f = doFunction(); + p = f["(params)"]; + + // Don't warn about getter/setter pairs if this is an ES6 concise method + if (nextVal === "get" && i && p) { + warning("W076", t, p[0], i); + } else if (nextVal === "set" && i && (!p || p.length !== 1)) { + warning("W077", t, i); + } + } else { + if (state.tokens.next.value === "*" && state.tokens.next.type === "(punctuator)") { + if (!state.inES6()) { + warning("W104", state.tokens.next, "generator functions", "6"); + } + advance("*"); + isGeneratorMethod = true; + } else { + isGeneratorMethod = false; + } + + if (state.tokens.next.id === "[") { + i = computedPropertyName(); + state.nameStack.set(i); + } else { + state.nameStack.set(state.tokens.next); + i = propertyName(); + saveProperty(props, i, state.tokens.next); + + if (typeof i !== "string") { + break; + } + } + + if (state.tokens.next.value === "(") { + if (!state.inES6()) { + warning("W104", state.tokens.curr, "concise methods", "6"); + } + doFunction({ type: isGeneratorMethod ? "generator" : null }); + } else { + advance(":"); + expression(10); + } + } + + countMember(i); + + if (state.tokens.next.id === ",") { + comma({ allowTrailing: true, property: true }); + if (state.tokens.next.id === ",") { + warning("W070", state.tokens.curr); + } else if (state.tokens.next.id === "}" && !state.inES5()) { + warning("W070", state.tokens.curr); + } + } else { + break; + } + } + if (b) { + indent -= state.option.indent; + } + advance("}", this); + + checkProperties(props); + + return this; + }; + x.fud = function() { + error("E036", state.tokens.curr); + }; + }(delim("{"))); + + function destructuringPattern(options) { + var isAssignment = options && options.assignment; + + if (!state.inES6()) { + warning("W104", state.tokens.curr, + isAssignment ? "destructuring assignment" : "destructuring binding", "6"); + } + + return destructuringPatternRecursive(options); + } + + function destructuringPatternRecursive(options) { + var ids; + var identifiers = []; + var openingParsed = options && options.openingParsed; + var isAssignment = options && options.assignment; + var recursiveOptions = isAssignment ? { assignment: isAssignment } : null; + var firstToken = openingParsed ? state.tokens.curr : state.tokens.next; + + var nextInnerDE = function() { + var ident; + if (checkPunctuators(state.tokens.next, ["[", "{"])) { + ids = destructuringPatternRecursive(recursiveOptions); + for (var id in ids) { + id = ids[id]; + identifiers.push({ id: id.id, token: id.token }); + } + } else if (checkPunctuator(state.tokens.next, ",")) { + identifiers.push({ id: null, token: state.tokens.curr }); + } else if (checkPunctuator(state.tokens.next, "(")) { + advance("("); + nextInnerDE(); + advance(")"); + } else { + var is_rest = checkPunctuator(state.tokens.next, "..."); + + if (isAssignment) { + var identifierToken = is_rest ? peek(0) : state.tokens.next; + if (!identifierToken.identifier) { + warning("E030", identifierToken, identifierToken.value); + } + var assignTarget = expression(155); + if (assignTarget) { + checkLeftSideAssign(assignTarget); + + // if the target was a simple identifier, add it to the list to return + if (assignTarget.identifier) { + ident = assignTarget.value; + } + } + } else { + ident = identifier(); + } + if (ident) { + identifiers.push({ id: ident, token: state.tokens.curr }); + } + return is_rest; + } + return false; + }; + var assignmentProperty = function() { + var id; + if (checkPunctuator(state.tokens.next, "[")) { + advance("["); + expression(10); + advance("]"); + advance(":"); + nextInnerDE(); + } else if (state.tokens.next.id === "(string)" || + state.tokens.next.id === "(number)") { + advance(); + advance(":"); + nextInnerDE(); + } else { + // this id will either be the property name or the property name and the assigning identifier + id = identifier(); + if (checkPunctuator(state.tokens.next, ":")) { + advance(":"); + nextInnerDE(); + } else if (id) { + // in this case we are assigning (not declaring), so check assignment + if (isAssignment) { + checkLeftSideAssign(state.tokens.curr); + } + identifiers.push({ id: id, token: state.tokens.curr }); + } + } + }; + if (checkPunctuator(firstToken, "[")) { + if (!openingParsed) { + advance("["); + } + if (checkPunctuator(state.tokens.next, "]")) { + warning("W137", state.tokens.curr); + } + var element_after_rest = false; + while (!checkPunctuator(state.tokens.next, "]")) { + if (nextInnerDE() && !element_after_rest && + checkPunctuator(state.tokens.next, ",")) { + warning("W130", state.tokens.next); + element_after_rest = true; + } + if (checkPunctuator(state.tokens.next, "=")) { + if (checkPunctuator(state.tokens.prev, "...")) { + advance("]"); + } else { + advance("="); + } + if (state.tokens.next.id === "undefined") { + warning("W080", state.tokens.prev, state.tokens.prev.value); + } + expression(10); + } + if (!checkPunctuator(state.tokens.next, "]")) { + advance(","); + } + } + advance("]"); + } else if (checkPunctuator(firstToken, "{")) { + + if (!openingParsed) { + advance("{"); + } + if (checkPunctuator(state.tokens.next, "}")) { + warning("W137", state.tokens.curr); + } + while (!checkPunctuator(state.tokens.next, "}")) { + assignmentProperty(); + if (checkPunctuator(state.tokens.next, "=")) { + advance("="); + if (state.tokens.next.id === "undefined") { + warning("W080", state.tokens.prev, state.tokens.prev.value); + } + expression(10); + } + if (!checkPunctuator(state.tokens.next, "}")) { + advance(","); + if (checkPunctuator(state.tokens.next, "}")) { + // Trailing comma + // ObjectBindingPattern: { BindingPropertyList , } + break; + } + } + } + advance("}"); + } + return identifiers; + } + + function destructuringPatternMatch(tokens, value) { + var first = value.first; + + if (!first) + return; + + _.zip(tokens, Array.isArray(first) ? first : [ first ]).forEach(function(val) { + var token = val[0]; + var value = val[1]; + + if (token && value) + token.first = value; + else if (token && token.first && !value) + warning("W080", token.first, token.first.value); + }); + } + + function blockVariableStatement(type, statement, context) { + // used for both let and const statements + + var prefix = context && context.prefix; + var inexport = context && context.inexport; + var isLet = type === "let"; + var isConst = type === "const"; + var tokens, lone, value, letblock; + + if (!state.inES6()) { + warning("W104", state.tokens.curr, type, "6"); + } + + if (isLet && state.tokens.next.value === "(") { + if (!state.inMoz()) { + warning("W118", state.tokens.next, "let block"); + } + advance("("); + state.funct["(scope)"].stack(); + letblock = true; + } else if (state.funct["(noblockscopedvar)"]) { + error("E048", state.tokens.curr, isConst ? "Const" : "Let"); + } + + statement.first = []; + for (;;) { + var names = []; + if (_.contains(["{", "["], state.tokens.next.value)) { + tokens = destructuringPattern(); + lone = false; + } else { + tokens = [ { id: identifier(), token: state.tokens.curr } ]; + lone = true; + } + + if (!prefix && isConst && state.tokens.next.id !== "=") { + warning("E012", state.tokens.curr, state.tokens.curr.value); + } + + for (var t in tokens) { + if (tokens.hasOwnProperty(t)) { + t = tokens[t]; + if (state.funct["(scope)"].block.isGlobal()) { + if (predefined[t.id] === false) { + warning("W079", t.token, t.id); + } + } + if (t.id && !state.funct["(noblockscopedvar)"]) { + state.funct["(scope)"].addlabel(t.id, { + type: type, + token: t.token }); + names.push(t.token); + + if (lone && inexport) { + state.funct["(scope)"].setExported(t.token.value, t.token); + } + } + } + } + + if (state.tokens.next.id === "=") { + advance("="); + if (!prefix && state.tokens.next.id === "undefined") { + warning("W080", state.tokens.prev, state.tokens.prev.value); + } + if (!prefix && peek(0).id === "=" && state.tokens.next.identifier) { + warning("W120", state.tokens.next, state.tokens.next.value); + } + // don't accept `in` in expression if prefix is used for ForIn/Of loop. + value = expression(prefix ? 120 : 10); + if (lone) { + tokens[0].first = value; + } else { + destructuringPatternMatch(names, value); + } + } + + statement.first = statement.first.concat(names); + + if (state.tokens.next.id !== ",") { + break; + } + comma(); + } + if (letblock) { + advance(")"); + block(true, true); + statement.block = true; + state.funct["(scope)"].unstack(); + } + + return statement; + } + + var conststatement = stmt("const", function(context) { + return blockVariableStatement("const", this, context); + }); + conststatement.exps = true; + + var letstatement = stmt("let", function(context) { + return blockVariableStatement("let", this, context); + }); + letstatement.exps = true; + + var varstatement = stmt("var", function(context) { + var prefix = context && context.prefix; + var inexport = context && context.inexport; + var tokens, lone, value; + + // If the `implied` option is set, bindings are set differently. + var implied = context && context.implied; + var report = !(context && context.ignore); + + this.first = []; + for (;;) { + var names = []; + if (_.contains(["{", "["], state.tokens.next.value)) { + tokens = destructuringPattern(); + lone = false; + } else { + tokens = [ { id: identifier(), token: state.tokens.curr } ]; + lone = true; + } + + if (!(prefix && implied) && report && state.option.varstmt) { + warning("W132", this); + } + + this.first = this.first.concat(names); + + for (var t in tokens) { + if (tokens.hasOwnProperty(t)) { + t = tokens[t]; + if (!implied && state.funct["(global)"]) { + if (predefined[t.id] === false) { + warning("W079", t.token, t.id); + } else if (state.option.futurehostile === false) { + if ((!state.inES5() && vars.ecmaIdentifiers[5][t.id] === false) || + (!state.inES6() && vars.ecmaIdentifiers[6][t.id] === false)) { + warning("W129", t.token, t.id); + } + } + } + if (t.id) { + if (implied === "for") { + + if (!state.funct["(scope)"].has(t.id)) { + if (report) warning("W088", t.token, t.id); + } + state.funct["(scope)"].block.use(t.id, t.token); + } else { + state.funct["(scope)"].addlabel(t.id, { + type: "var", + token: t.token }); + + if (lone && inexport) { + state.funct["(scope)"].setExported(t.id, t.token); + } + } + names.push(t.token); + } + } + } + + if (state.tokens.next.id === "=") { + state.nameStack.set(state.tokens.curr); + + advance("="); + if (!prefix && report && !state.funct["(loopage)"] && + state.tokens.next.id === "undefined") { + warning("W080", state.tokens.prev, state.tokens.prev.value); + } + if (peek(0).id === "=" && state.tokens.next.identifier) { + if (!prefix && report && + !state.funct["(params)"] || + state.funct["(params)"].indexOf(state.tokens.next.value) === -1) { + warning("W120", state.tokens.next, state.tokens.next.value); + } + } + // don't accept `in` in expression if prefix is used for ForIn/Of loop. + value = expression(prefix ? 120 : 10); + if (lone) { + tokens[0].first = value; + } else { + destructuringPatternMatch(names, value); + } + } + + if (state.tokens.next.id !== ",") { + break; + } + comma(); + } + + return this; + }); + varstatement.exps = true; + + blockstmt("class", function() { + return classdef.call(this, true); + }); + + function classdef(isStatement) { + + /*jshint validthis:true */ + if (!state.inES6()) { + warning("W104", state.tokens.curr, "class", "6"); + } + if (isStatement) { + // BindingIdentifier + this.name = identifier(); + + state.funct["(scope)"].addlabel(this.name, { + type: "class", + token: state.tokens.curr }); + } else if (state.tokens.next.identifier && state.tokens.next.value !== "extends") { + // BindingIdentifier(opt) + this.name = identifier(); + this.namedExpr = true; + } else { + this.name = state.nameStack.infer(); + } + classtail(this); + return this; + } + + function classtail(c) { + var wasInClassBody = state.inClassBody; + // ClassHeritage(opt) + if (state.tokens.next.value === "extends") { + advance("extends"); + c.heritage = expression(10); + } + + state.inClassBody = true; + advance("{"); + // ClassBody(opt) + c.body = classbody(c); + advance("}"); + state.inClassBody = wasInClassBody; + } + + function classbody(c) { + var name; + var isStatic; + var isGenerator; + var getset; + var props = Object.create(null); + var staticProps = Object.create(null); + var computed; + for (var i = 0; state.tokens.next.id !== "}"; ++i) { + name = state.tokens.next; + isStatic = false; + isGenerator = false; + getset = null; + + // The ES6 grammar for ClassElement includes the `;` token, but it is + // defined only as a placeholder to facilitate future language + // extensions. In ES6 code, it serves no purpose. + if (name.id === ";") { + warning("W032"); + advance(";"); + continue; + } + + if (name.id === "*") { + isGenerator = true; + advance("*"); + name = state.tokens.next; + } + if (name.id === "[") { + name = computedPropertyName(); + computed = true; + } else if (isPropertyName(name)) { + // Non-Computed PropertyName + advance(); + computed = false; + if (name.identifier && name.value === "static") { + if (checkPunctuator(state.tokens.next, "*")) { + isGenerator = true; + advance("*"); + } + if (isPropertyName(state.tokens.next) || state.tokens.next.id === "[") { + computed = state.tokens.next.id === "["; + isStatic = true; + name = state.tokens.next; + if (state.tokens.next.id === "[") { + name = computedPropertyName(); + } else advance(); + } + } + + if (name.identifier && (name.value === "get" || name.value === "set")) { + if (isPropertyName(state.tokens.next) || state.tokens.next.id === "[") { + computed = state.tokens.next.id === "["; + getset = name; + name = state.tokens.next; + if (state.tokens.next.id === "[") { + name = computedPropertyName(); + } else advance(); + } + } + } else { + warning("W052", state.tokens.next, state.tokens.next.value || state.tokens.next.type); + advance(); + continue; + } + + if (!checkPunctuator(state.tokens.next, "(")) { + // error --- class properties must be methods + error("E054", state.tokens.next, state.tokens.next.value); + while (state.tokens.next.id !== "}" && + !checkPunctuator(state.tokens.next, "(")) { + advance(); + } + if (state.tokens.next.value !== "(") { + doFunction({ statement: c }); + } + } + + if (!computed) { + // We don't know how to determine if we have duplicate computed property names :( + if (getset) { + saveAccessor( + getset.value, isStatic ? staticProps : props, name.value, name, true, isStatic); + } else { + if (name.value === "constructor") { + state.nameStack.set(c); + } else { + state.nameStack.set(name); + } + saveProperty(isStatic ? staticProps : props, name.value, name, true, isStatic); + } + } + + if (getset && name.value === "constructor") { + var propDesc = getset.value === "get" ? "class getter method" : "class setter method"; + error("E049", name, propDesc, "constructor"); + } else if (name.value === "prototype") { + error("E049", name, "class method", "prototype"); + } + + propertyName(name); + + doFunction({ + statement: c, + type: isGenerator ? "generator" : null, + classExprBinding: c.namedExpr ? c.name : null + }); + } + + checkProperties(props); + } + + blockstmt("function", function(context) { + var inexport = context && context.inexport; + var generator = false; + if (state.tokens.next.value === "*") { + advance("*"); + if (state.inES6({ strict: true })) { + generator = true; + } else { + warning("W119", state.tokens.curr, "function*", "6"); + } + } + if (inblock) { + warning("W082", state.tokens.curr); + } + var i = optionalidentifier(); + + state.funct["(scope)"].addlabel(i, { + type: "function", + token: state.tokens.curr }); + + if (i === undefined) { + warning("W025"); + } else if (inexport) { + state.funct["(scope)"].setExported(i, state.tokens.prev); + } + + doFunction({ + name: i, + statement: this, + type: generator ? "generator" : null, + ignoreLoopFunc: inblock // a declaration may already have warned + }); + if (state.tokens.next.id === "(" && state.tokens.next.line === state.tokens.curr.line) { + error("E039"); + } + return this; + }); + + prefix("function", function() { + var generator = false; + + if (state.tokens.next.value === "*") { + if (!state.inES6()) { + warning("W119", state.tokens.curr, "function*", "6"); + } + advance("*"); + generator = true; + } + + var i = optionalidentifier(); + doFunction({ name: i, type: generator ? "generator" : null }); + return this; + }); + + blockstmt("if", function() { + var t = state.tokens.next; + increaseComplexityCount(); + state.condition = true; + advance("("); + var expr = expression(0); + checkCondAssignment(expr); + + // When the if is within a for-in loop, check if the condition + // starts with a negation operator + var forinifcheck = null; + if (state.option.forin && state.forinifcheckneeded) { + state.forinifcheckneeded = false; // We only need to analyze the first if inside the loop + forinifcheck = state.forinifchecks[state.forinifchecks.length - 1]; + if (expr.type === "(punctuator)" && expr.value === "!") { + forinifcheck.type = "(negative)"; + } else { + forinifcheck.type = "(positive)"; + } + } + + advance(")", t); + state.condition = false; + var s = block(true, true); + + // When the if is within a for-in loop and the condition has a negative form, + // check if the body contains nothing but a continue statement + if (forinifcheck && forinifcheck.type === "(negative)") { + if (s && s[0] && s[0].type === "(identifier)" && s[0].value === "continue") { + forinifcheck.type = "(negative-with-continue)"; + } + } + + if (state.tokens.next.id === "else") { + advance("else"); + if (state.tokens.next.id === "if" || state.tokens.next.id === "switch") { + statement(); + } else { + block(true, true); + } + } + return this; + }); + + blockstmt("try", function() { + var b; + + function doCatch() { + advance("catch"); + advance("("); + + state.funct["(scope)"].stack("catchparams"); + + if (checkPunctuators(state.tokens.next, ["[", "{"])) { + var tokens = destructuringPattern(); + _.each(tokens, function(token) { + if (token.id) { + state.funct["(scope)"].addParam(token.id, token, "exception"); + } + }); + } else if (state.tokens.next.type !== "(identifier)") { + warning("E030", state.tokens.next, state.tokens.next.value); + } else { + // only advance if we have an identifier so we can continue parsing in the most common error - that no param is given. + state.funct["(scope)"].addParam(identifier(), state.tokens.curr, "exception"); + } + + if (state.tokens.next.value === "if") { + if (!state.inMoz()) { + warning("W118", state.tokens.curr, "catch filter"); + } + advance("if"); + expression(0); + } + + advance(")"); + + block(false); + + state.funct["(scope)"].unstack(); + } + + block(true); + + while (state.tokens.next.id === "catch") { + increaseComplexityCount(); + if (b && (!state.inMoz())) { + warning("W118", state.tokens.next, "multiple catch blocks"); + } + doCatch(); + b = true; + } + + if (state.tokens.next.id === "finally") { + advance("finally"); + block(true); + return; + } + + if (!b) { + error("E021", state.tokens.next, "catch", state.tokens.next.value); + } + + return this; + }); + + blockstmt("while", function() { + var t = state.tokens.next; + state.funct["(breakage)"] += 1; + state.funct["(loopage)"] += 1; + increaseComplexityCount(); + advance("("); + checkCondAssignment(expression(0)); + advance(")", t); + block(true, true); + state.funct["(breakage)"] -= 1; + state.funct["(loopage)"] -= 1; + return this; + }).labelled = true; + + blockstmt("with", function() { + var t = state.tokens.next; + if (state.isStrict()) { + error("E010", state.tokens.curr); + } else if (!state.option.withstmt) { + warning("W085", state.tokens.curr); + } + + advance("("); + expression(0); + advance(")", t); + block(true, true); + + return this; + }); + + blockstmt("switch", function() { + var t = state.tokens.next; + var g = false; + var noindent = false; + + state.funct["(breakage)"] += 1; + advance("("); + checkCondAssignment(expression(0)); + advance(")", t); + t = state.tokens.next; + advance("{"); + + if (state.tokens.next.from === indent) + noindent = true; + + if (!noindent) + indent += state.option.indent; + + this.cases = []; + + for (;;) { + switch (state.tokens.next.id) { + case "case": + switch (state.funct["(verb)"]) { + case "yield": + case "break": + case "case": + case "continue": + case "return": + case "switch": + case "throw": + break; + default: + // You can tell JSHint that you don't use break intentionally by + // adding a comment /* falls through */ on a line just before + // the next `case`. + if (!state.tokens.curr.caseFallsThrough) { + warning("W086", state.tokens.curr, "case"); + } + } + + advance("case"); + this.cases.push(expression(0)); + increaseComplexityCount(); + g = true; + advance(":"); + state.funct["(verb)"] = "case"; + break; + case "default": + switch (state.funct["(verb)"]) { + case "yield": + case "break": + case "continue": + case "return": + case "throw": + break; + default: + // Do not display a warning if 'default' is the first statement or if + // there is a special /* falls through */ comment. + if (this.cases.length) { + if (!state.tokens.curr.caseFallsThrough) { + warning("W086", state.tokens.curr, "default"); + } + } + } + + advance("default"); + g = true; + advance(":"); + break; + case "}": + if (!noindent) + indent -= state.option.indent; + + advance("}", t); + state.funct["(breakage)"] -= 1; + state.funct["(verb)"] = undefined; + return; + case "(end)": + error("E023", state.tokens.next, "}"); + return; + default: + indent += state.option.indent; + if (g) { + switch (state.tokens.curr.id) { + case ",": + error("E040"); + return; + case ":": + g = false; + statements(); + break; + default: + error("E025", state.tokens.curr); + return; + } + } else { + if (state.tokens.curr.id === ":") { + advance(":"); + error("E024", state.tokens.curr, ":"); + statements(); + } else { + error("E021", state.tokens.next, "case", state.tokens.next.value); + return; + } + } + indent -= state.option.indent; + } + } + return this; + }).labelled = true; + + stmt("debugger", function() { + if (!state.option.debug) { + warning("W087", this); + } + return this; + }).exps = true; + + (function() { + var x = stmt("do", function() { + state.funct["(breakage)"] += 1; + state.funct["(loopage)"] += 1; + increaseComplexityCount(); + + this.first = block(true, true); + advance("while"); + var t = state.tokens.next; + advance("("); + checkCondAssignment(expression(0)); + advance(")", t); + state.funct["(breakage)"] -= 1; + state.funct["(loopage)"] -= 1; + return this; + }); + x.labelled = true; + x.exps = true; + }()); + + blockstmt("for", function() { + var s, t = state.tokens.next; + var letscope = false; + var foreachtok = null; + + if (t.value === "each") { + foreachtok = t; + advance("each"); + if (!state.inMoz()) { + warning("W118", state.tokens.curr, "for each"); + } + } + + increaseComplexityCount(); + advance("("); + + // what kind of for(…) statement it is? for(…of…)? for(…in…)? for(…;…;…)? + var nextop; // contains the token of the "in" or "of" operator + var i = 0; + var inof = ["in", "of"]; + var level = 0; // BindingPattern "level" --- level 0 === no BindingPattern + var comma; // First comma punctuator at level 0 + var initializer; // First initializer at level 0 + + // If initial token is a BindingPattern, count it as such. + if (checkPunctuators(state.tokens.next, ["{", "["])) ++level; + do { + nextop = peek(i); + ++i; + if (checkPunctuators(nextop, ["{", "["])) ++level; + else if (checkPunctuators(nextop, ["}", "]"])) --level; + if (level < 0) break; + if (level === 0) { + if (!comma && checkPunctuator(nextop, ",")) comma = nextop; + else if (!initializer && checkPunctuator(nextop, "=")) initializer = nextop; + } + } while (level > 0 || !_.contains(inof, nextop.value) && nextop.value !== ";" && + nextop.type !== "(end)"); // Is this a JSCS bug? This looks really weird. + + // if we're in a for (… in|of …) statement + if (_.contains(inof, nextop.value)) { + if (!state.inES6() && nextop.value === "of") { + warning("W104", nextop, "for of", "6"); + } + + var ok = !(initializer || comma); + if (initializer) { + error("W133", comma, nextop.value, "initializer is forbidden"); + } + + if (comma) { + error("W133", comma, nextop.value, "more than one ForBinding"); + } + + if (state.tokens.next.id === "var") { + advance("var"); + state.tokens.curr.fud({ prefix: true }); + } else if (state.tokens.next.id === "let" || state.tokens.next.id === "const") { + advance(state.tokens.next.id); + // create a new block scope + letscope = true; + state.funct["(scope)"].stack(); + state.tokens.curr.fud({ prefix: true }); + } else { + // Parse as a var statement, with implied bindings. Ignore errors if an error + // was already reported + Object.create(varstatement).fud({ prefix: true, implied: "for", ignore: !ok }); + } + advance(nextop.value); + expression(20); + advance(")", t); + + if (nextop.value === "in" && state.option.forin) { + state.forinifcheckneeded = true; + + if (state.forinifchecks === undefined) { + state.forinifchecks = []; + } + + // Push a new for-in-if check onto the stack. The type will be modified + // when the loop's body is parsed and a suitable if statement exists. + state.forinifchecks.push({ + type: "(none)" + }); + } + + state.funct["(breakage)"] += 1; + state.funct["(loopage)"] += 1; + + s = block(true, true); + + if (nextop.value === "in" && state.option.forin) { + if (state.forinifchecks && state.forinifchecks.length > 0) { + var check = state.forinifchecks.pop(); + + if (// No if statement or not the first statement in loop body + s && s.length > 0 && (typeof s[0] !== "object" || s[0].value !== "if") || + // Positive if statement is not the only one in loop body + check.type === "(positive)" && s.length > 1 || + // Negative if statement but no continue + check.type === "(negative)") { + warning("W089", this); + } + } + + // Reset the flag in case no if statement was contained in the loop body + state.forinifcheckneeded = false; + } + + state.funct["(breakage)"] -= 1; + state.funct["(loopage)"] -= 1; + } else { + if (foreachtok) { + error("E045", foreachtok); + } + if (state.tokens.next.id !== ";") { + if (state.tokens.next.id === "var") { + advance("var"); + state.tokens.curr.fud(); + } else if (state.tokens.next.id === "let") { + advance("let"); + // create a new block scope + letscope = true; + state.funct["(scope)"].stack(); + state.tokens.curr.fud(); + } else { + for (;;) { + expression(0, "for"); + if (state.tokens.next.id !== ",") { + break; + } + comma(); + } + } + } + nolinebreak(state.tokens.curr); + advance(";"); + + // start loopage after the first ; as the next two expressions are executed + // on every loop + state.funct["(loopage)"] += 1; + if (state.tokens.next.id !== ";") { + checkCondAssignment(expression(0)); + } + nolinebreak(state.tokens.curr); + advance(";"); + if (state.tokens.next.id === ";") { + error("E021", state.tokens.next, ")", ";"); + } + if (state.tokens.next.id !== ")") { + for (;;) { + expression(0, "for"); + if (state.tokens.next.id !== ",") { + break; + } + comma(); + } + } + advance(")", t); + state.funct["(breakage)"] += 1; + block(true, true); + state.funct["(breakage)"] -= 1; + state.funct["(loopage)"] -= 1; + + } + // unstack loop blockscope + if (letscope) { + state.funct["(scope)"].unstack(); + } + return this; + }).labelled = true; + + + stmt("break", function() { + var v = state.tokens.next.value; + + if (!state.option.asi) + nolinebreak(this); + + if (state.tokens.next.id !== ";" && !state.tokens.next.reach && + state.tokens.curr.line === startLine(state.tokens.next)) { + if (!state.funct["(scope)"].funct.hasBreakLabel(v)) { + warning("W090", state.tokens.next, v); + } + this.first = state.tokens.next; + advance(); + } else { + if (state.funct["(breakage)"] === 0) + warning("W052", state.tokens.next, this.value); + } + + reachable(this); + + return this; + }).exps = true; + + + stmt("continue", function() { + var v = state.tokens.next.value; + + if (state.funct["(breakage)"] === 0) + warning("W052", state.tokens.next, this.value); + if (!state.funct["(loopage)"]) + warning("W052", state.tokens.next, this.value); + + if (!state.option.asi) + nolinebreak(this); + + if (state.tokens.next.id !== ";" && !state.tokens.next.reach) { + if (state.tokens.curr.line === startLine(state.tokens.next)) { + if (!state.funct["(scope)"].funct.hasBreakLabel(v)) { + warning("W090", state.tokens.next, v); + } + this.first = state.tokens.next; + advance(); + } + } + + reachable(this); + + return this; + }).exps = true; + + + stmt("return", function() { + if (this.line === startLine(state.tokens.next)) { + if (state.tokens.next.id !== ";" && !state.tokens.next.reach) { + this.first = expression(0); + + if (this.first && + this.first.type === "(punctuator)" && this.first.value === "=" && + !this.first.paren && !state.option.boss) { + warningAt("W093", this.first.line, this.first.character); + } + } + } else { + if (state.tokens.next.type === "(punctuator)" && + ["[", "{", "+", "-"].indexOf(state.tokens.next.value) > -1) { + nolinebreak(this); // always warn (Line breaking error) + } + } + + reachable(this); + + return this; + }).exps = true; + + (function(x) { + x.exps = true; + x.lbp = 25; + }(prefix("yield", function() { + var prev = state.tokens.prev; + if (state.inES6(true) && !state.funct["(generator)"]) { + // If it's a yield within a catch clause inside a generator then that's ok + if (!("(catch)" === state.funct["(name)"] && state.funct["(context)"]["(generator)"])) { + error("E046", state.tokens.curr, "yield"); + } + } else if (!state.inES6()) { + warning("W104", state.tokens.curr, "yield", "6"); + } + state.funct["(generator)"] = "yielded"; + var delegatingYield = false; + + if (state.tokens.next.value === "*") { + delegatingYield = true; + advance("*"); + } + + if (this.line === startLine(state.tokens.next) || !state.inMoz()) { + if (delegatingYield || + (state.tokens.next.id !== ";" && !state.option.asi && + !state.tokens.next.reach && state.tokens.next.nud)) { + + nobreaknonadjacent(state.tokens.curr, state.tokens.next); + this.first = expression(10); + + if (this.first.type === "(punctuator)" && this.first.value === "=" && + !this.first.paren && !state.option.boss) { + warningAt("W093", this.first.line, this.first.character); + } + } + + if (state.inMoz() && state.tokens.next.id !== ")" && + (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()) || prev.id === "yield")) { + error("E050", this); + } + } else if (!state.option.asi) { + nolinebreak(this); // always warn (Line breaking error) + } + return this; + }))); + + + stmt("throw", function() { + nolinebreak(this); + this.first = expression(20); + + reachable(this); + + return this; + }).exps = true; + + stmt("import", function() { + if (!state.inES6()) { + warning("W119", state.tokens.curr, "import", "6"); + } + + if (state.tokens.next.type === "(string)") { + // ModuleSpecifier :: StringLiteral + advance("(string)"); + return this; + } + + if (state.tokens.next.identifier) { + // ImportClause :: ImportedDefaultBinding + this.name = identifier(); + // Import bindings are immutable (see ES6 8.1.1.5.5) + state.funct["(scope)"].addlabel(this.name, { + type: "const", + token: state.tokens.curr }); + + if (state.tokens.next.value === ",") { + // ImportClause :: ImportedDefaultBinding , NameSpaceImport + // ImportClause :: ImportedDefaultBinding , NamedImports + advance(","); + // At this point, we intentionally fall through to continue matching + // either NameSpaceImport or NamedImports. + // Discussion: + // https://github.com/jshint/jshint/pull/2144#discussion_r23978406 + } else { + advance("from"); + advance("(string)"); + return this; + } + } + + if (state.tokens.next.id === "*") { + // ImportClause :: NameSpaceImport + advance("*"); + advance("as"); + if (state.tokens.next.identifier) { + this.name = identifier(); + // Import bindings are immutable (see ES6 8.1.1.5.5) + state.funct["(scope)"].addlabel(this.name, { + type: "const", + token: state.tokens.curr }); + } + } else { + // ImportClause :: NamedImports + advance("{"); + for (;;) { + if (state.tokens.next.value === "}") { + advance("}"); + break; + } + var importName; + if (state.tokens.next.type === "default") { + importName = "default"; + advance("default"); + } else { + importName = identifier(); + } + if (state.tokens.next.value === "as") { + advance("as"); + importName = identifier(); + } + + // Import bindings are immutable (see ES6 8.1.1.5.5) + state.funct["(scope)"].addlabel(importName, { + type: "const", + token: state.tokens.curr }); + + if (state.tokens.next.value === ",") { + advance(","); + } else if (state.tokens.next.value === "}") { + advance("}"); + break; + } else { + error("E024", state.tokens.next, state.tokens.next.value); + break; + } + } + } + + // FromClause + advance("from"); + advance("(string)"); + return this; + }).exps = true; + + stmt("export", function() { + var ok = true; + var token; + var identifier; + + if (!state.inES6()) { + warning("W119", state.tokens.curr, "export", "6"); + ok = false; + } + + if (!state.funct["(scope)"].block.isGlobal()) { + error("E053", state.tokens.curr); + ok = false; + } + + if (state.tokens.next.value === "*") { + // ExportDeclaration :: export * FromClause + advance("*"); + advance("from"); + advance("(string)"); + return this; + } + + if (state.tokens.next.type === "default") { + // ExportDeclaration :: + // export default [lookahead ïƒ { function, class }] AssignmentExpression[In] ; + // export default HoistableDeclaration + // export default ClassDeclaration + state.nameStack.set(state.tokens.next); + advance("default"); + var exportType = state.tokens.next.id; + if (exportType === "function" || exportType === "class") { + this.block = true; + } + + token = peek(); + + expression(10); + + identifier = token.value; + + if (this.block) { + state.funct["(scope)"].addlabel(identifier, { + type: exportType, + token: token }); + + state.funct["(scope)"].setExported(identifier, token); + } + + return this; + } + + if (state.tokens.next.value === "{") { + // ExportDeclaration :: export ExportClause + advance("{"); + var exportedTokens = []; + for (;;) { + if (!state.tokens.next.identifier) { + error("E030", state.tokens.next, state.tokens.next.value); + } + advance(); + + exportedTokens.push(state.tokens.curr); + + if (state.tokens.next.value === "as") { + advance("as"); + if (!state.tokens.next.identifier) { + error("E030", state.tokens.next, state.tokens.next.value); + } + advance(); + } + + if (state.tokens.next.value === ",") { + advance(","); + } else if (state.tokens.next.value === "}") { + advance("}"); + break; + } else { + error("E024", state.tokens.next, state.tokens.next.value); + break; + } + } + if (state.tokens.next.value === "from") { + // ExportDeclaration :: export ExportClause FromClause + advance("from"); + advance("(string)"); + } else if (ok) { + exportedTokens.forEach(function(token) { + state.funct["(scope)"].setExported(token.value, token); + }); + } + return this; + } + + if (state.tokens.next.id === "var") { + // ExportDeclaration :: export VariableStatement + advance("var"); + state.tokens.curr.fud({ inexport:true }); + } else if (state.tokens.next.id === "let") { + // ExportDeclaration :: export VariableStatement + advance("let"); + state.tokens.curr.fud({ inexport:true }); + } else if (state.tokens.next.id === "const") { + // ExportDeclaration :: export VariableStatement + advance("const"); + state.tokens.curr.fud({ inexport:true }); + } else if (state.tokens.next.id === "function") { + // ExportDeclaration :: export Declaration + this.block = true; + advance("function"); + state.syntax["function"].fud({ inexport:true }); + } else if (state.tokens.next.id === "class") { + // ExportDeclaration :: export Declaration + this.block = true; + advance("class"); + var classNameToken = state.tokens.next; + state.syntax["class"].fud(); + state.funct["(scope)"].setExported(classNameToken.value, classNameToken); + } else { + error("E024", state.tokens.next, state.tokens.next.value); + } + + return this; + }).exps = true; + + // Future Reserved Words + + FutureReservedWord("abstract"); + FutureReservedWord("boolean"); + FutureReservedWord("byte"); + FutureReservedWord("char"); + FutureReservedWord("class", { es5: true, nud: classdef }); + FutureReservedWord("double"); + FutureReservedWord("enum", { es5: true }); + FutureReservedWord("export", { es5: true }); + FutureReservedWord("extends", { es5: true }); + FutureReservedWord("final"); + FutureReservedWord("float"); + FutureReservedWord("goto"); + FutureReservedWord("implements", { es5: true, strictOnly: true }); + FutureReservedWord("import", { es5: true }); + FutureReservedWord("int"); + FutureReservedWord("interface", { es5: true, strictOnly: true }); + FutureReservedWord("long"); + FutureReservedWord("native"); + FutureReservedWord("package", { es5: true, strictOnly: true }); + FutureReservedWord("private", { es5: true, strictOnly: true }); + FutureReservedWord("protected", { es5: true, strictOnly: true }); + FutureReservedWord("public", { es5: true, strictOnly: true }); + FutureReservedWord("short"); + FutureReservedWord("static", { es5: true, strictOnly: true }); + FutureReservedWord("super", { es5: true }); + FutureReservedWord("synchronized"); + FutureReservedWord("transient"); + FutureReservedWord("volatile"); + + // this function is used to determine whether a squarebracket or a curlybracket + // expression is a comprehension array, destructuring assignment or a json value. + + var lookupBlockType = function() { + var pn, pn1, prev; + var i = -1; + var bracketStack = 0; + var ret = {}; + if (checkPunctuators(state.tokens.curr, ["[", "{"])) { + bracketStack += 1; + } + do { + prev = i === -1 ? state.tokens.curr : pn; + pn = i === -1 ? state.tokens.next : peek(i); + pn1 = peek(i + 1); + i = i + 1; + if (checkPunctuators(pn, ["[", "{"])) { + bracketStack += 1; + } else if (checkPunctuators(pn, ["]", "}"])) { + bracketStack -= 1; + } + if (bracketStack === 1 && pn.identifier && pn.value === "for" && + !checkPunctuator(prev, ".")) { + ret.isCompArray = true; + ret.notJson = true; + break; + } + if (bracketStack === 0 && checkPunctuators(pn, ["}", "]"])) { + if (pn1.value === "=") { + ret.isDestAssign = true; + ret.notJson = true; + break; + } else if (pn1.value === ".") { + ret.notJson = true; + break; + } + } + if (checkPunctuator(pn, ";")) { + ret.isBlock = true; + ret.notJson = true; + } + } while (bracketStack > 0 && pn.id !== "(end)"); + return ret; + }; + + function saveProperty(props, name, tkn, isClass, isStatic) { + var msg = ["key", "class method", "static class method"]; + msg = msg[(isClass || false) + (isStatic || false)]; + if (tkn.identifier) { + name = tkn.value; + } + + if (props[name] && name !== "__proto__") { + warning("W075", state.tokens.next, msg, name); + } else { + props[name] = Object.create(null); + } + + props[name].basic = true; + props[name].basictkn = tkn; + } + + /** + * @param {string} accessorType - Either "get" or "set" + * @param {object} props - a collection of all properties of the object to + * which the current accessor is being assigned + * @param {object} tkn - the identifier token representing the accessor name + * @param {boolean} isClass - whether the accessor is part of an ES6 Class + * definition + * @param {boolean} isStatic - whether the accessor is a static method + */ + function saveAccessor(accessorType, props, name, tkn, isClass, isStatic) { + var flagName = accessorType === "get" ? "getterToken" : "setterToken"; + var msg = ""; + + if (isClass) { + if (isStatic) { + msg += "static "; + } + msg += accessorType + "ter method"; + } else { + msg = "key"; + } + + state.tokens.curr.accessorType = accessorType; + state.nameStack.set(tkn); + + if (props[name]) { + if ((props[name].basic || props[name][flagName]) && name !== "__proto__") { + warning("W075", state.tokens.next, msg, name); + } + } else { + props[name] = Object.create(null); + } + + props[name][flagName] = tkn; + } + + function computedPropertyName() { + advance("["); + if (!state.inES6()) { + warning("W119", state.tokens.curr, "computed property names", "6"); + } + var value = expression(10); + advance("]"); + return value; + } + + /** + * Test whether a given token is a punctuator matching one of the specified values + * @param {Token} token + * @param {Array.<string>} values + * @returns {boolean} + */ + function checkPunctuators(token, values) { + if (token.type === "(punctuator)") { + return _.contains(values, token.value); + } + return false; + } + + /** + * Test whether a given token is a punctuator matching the specified value + * @param {Token} token + * @param {string} value + * @returns {boolean} + */ + function checkPunctuator(token, value) { + return token.type === "(punctuator)" && token.value === value; + } + + // Check whether this function has been reached for a destructuring assign with undeclared values + function destructuringAssignOrJsonValue() { + // lookup for the assignment (ECMAScript 6 only) + // if it has semicolons, it is a block, so go parse it as a block + // or it's not a block, but there are assignments, check for undeclared variables + + var block = lookupBlockType(); + if (block.notJson) { + if (!state.inES6() && block.isDestAssign) { + warning("W104", state.tokens.curr, "destructuring assignment", "6"); + } + statements(); + // otherwise parse json value + } else { + state.option.laxbreak = true; + state.jsonMode = true; + jsonValue(); + } + } + + // array comprehension parsing function + // parses and defines the three states of the list comprehension in order + // to avoid defining global variables, but keeping them to the list comprehension scope + // only. The order of the states are as follows: + // * "use" which will be the returned iterative part of the list comprehension + // * "define" which will define the variables local to the list comprehension + // * "filter" which will help filter out values + + var arrayComprehension = function() { + var CompArray = function() { + this.mode = "use"; + this.variables = []; + }; + var _carrays = []; + var _current; + function declare(v) { + var l = _current.variables.filter(function(elt) { + // if it has, change its undef state + if (elt.value === v) { + elt.undef = false; + return v; + } + }).length; + return l !== 0; + } + function use(v) { + var l = _current.variables.filter(function(elt) { + // and if it has been defined + if (elt.value === v && !elt.undef) { + if (elt.unused === true) { + elt.unused = false; + } + return v; + } + }).length; + // otherwise we warn about it + return (l === 0); + } + return { stack: function() { + _current = new CompArray(); + _carrays.push(_current); + }, + unstack: function() { + _current.variables.filter(function(v) { + if (v.unused) + warning("W098", v.token, v.raw_text || v.value); + if (v.undef) + state.funct["(scope)"].block.use(v.value, v.token); + }); + _carrays.splice(-1, 1); + _current = _carrays[_carrays.length - 1]; + }, + setState: function(s) { + if (_.contains(["use", "define", "generate", "filter"], s)) + _current.mode = s; + }, + check: function(v) { + if (!_current) { + return; + } + // When we are in "use" state of the list comp, we enqueue that var + if (_current && _current.mode === "use") { + if (use(v)) { + _current.variables.push({ + funct: state.funct, + token: state.tokens.curr, + value: v, + undef: true, + unused: false + }); + } + return true; + // When we are in "define" state of the list comp, + } else if (_current && _current.mode === "define") { + // check if the variable has been used previously + if (!declare(v)) { + _current.variables.push({ + funct: state.funct, + token: state.tokens.curr, + value: v, + undef: false, + unused: true + }); + } + return true; + // When we are in the "generate" state of the list comp, + } else if (_current && _current.mode === "generate") { + state.funct["(scope)"].block.use(v, state.tokens.curr); + return true; + // When we are in "filter" state, + } else if (_current && _current.mode === "filter") { + // we check whether current variable has been declared + if (use(v)) { + // if not we warn about it + state.funct["(scope)"].block.use(v, state.tokens.curr); + } + return true; + } + return false; + } + }; + }; + + + // Parse JSON + + function jsonValue() { + function jsonObject() { + var o = {}, t = state.tokens.next; + advance("{"); + if (state.tokens.next.id !== "}") { + for (;;) { + if (state.tokens.next.id === "(end)") { + error("E026", state.tokens.next, t.line); + } else if (state.tokens.next.id === "}") { + warning("W094", state.tokens.curr); + break; + } else if (state.tokens.next.id === ",") { + error("E028", state.tokens.next); + } else if (state.tokens.next.id !== "(string)") { + warning("W095", state.tokens.next, state.tokens.next.value); + } + if (o[state.tokens.next.value] === true) { + warning("W075", state.tokens.next, "key", state.tokens.next.value); + } else if ((state.tokens.next.value === "__proto__" && + !state.option.proto) || (state.tokens.next.value === "__iterator__" && + !state.option.iterator)) { + warning("W096", state.tokens.next, state.tokens.next.value); + } else { + o[state.tokens.next.value] = true; + } + advance(); + advance(":"); + jsonValue(); + if (state.tokens.next.id !== ",") { + break; + } + advance(","); + } + } + advance("}"); + } + + function jsonArray() { + var t = state.tokens.next; + advance("["); + if (state.tokens.next.id !== "]") { + for (;;) { + if (state.tokens.next.id === "(end)") { + error("E027", state.tokens.next, t.line); + } else if (state.tokens.next.id === "]") { + warning("W094", state.tokens.curr); + break; + } else if (state.tokens.next.id === ",") { + error("E028", state.tokens.next); + } + jsonValue(); + if (state.tokens.next.id !== ",") { + break; + } + advance(","); + } + } + advance("]"); + } + + switch (state.tokens.next.id) { + case "{": + jsonObject(); + break; + case "[": + jsonArray(); + break; + case "true": + case "false": + case "null": + case "(number)": + case "(string)": + advance(); + break; + case "-": + advance("-"); + advance("(number)"); + break; + default: + error("E003", state.tokens.next); + } + } + + var escapeRegex = function(str) { + return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); + }; + + // The actual JSHINT function itself. + var itself = function(s, o, g) { + var i, k, x, reIgnoreStr, reIgnore; + var optionKeys; + var newOptionObj = {}; + var newIgnoredObj = {}; + + o = _.clone(o); + state.reset(); + + if (o && o.scope) { + JSHINT.scope = o.scope; + } else { + JSHINT.errors = []; + JSHINT.undefs = []; + JSHINT.internals = []; + JSHINT.blacklist = {}; + JSHINT.scope = "(main)"; + } + + predefined = Object.create(null); + combine(predefined, vars.ecmaIdentifiers[3]); + combine(predefined, vars.reservedVars); + + combine(predefined, g || {}); + + declared = Object.create(null); + var exported = Object.create(null); // Variables that live outside the current file + + function each(obj, cb) { + if (!obj) + return; + + if (!Array.isArray(obj) && typeof obj === "object") + obj = Object.keys(obj); + + obj.forEach(cb); + } + + if (o) { + each(o.predef || null, function(item) { + var slice, prop; + + if (item[0] === "-") { + slice = item.slice(1); + JSHINT.blacklist[slice] = slice; + // remove from predefined if there + delete predefined[slice]; + } else { + prop = Object.getOwnPropertyDescriptor(o.predef, item); + predefined[item] = prop ? prop.value : false; + } + }); + + each(o.exported || null, function(item) { + exported[item] = true; + }); + + delete o.predef; + delete o.exported; + + optionKeys = Object.keys(o); + for (x = 0; x < optionKeys.length; x++) { + if (/^-W\d{3}$/g.test(optionKeys[x])) { + newIgnoredObj[optionKeys[x].slice(1)] = true; + } else { + var optionKey = optionKeys[x]; + newOptionObj[optionKey] = o[optionKey]; + if ((optionKey === "esversion" && o[optionKey] === 5) || + (optionKey === "es5" && o[optionKey])) { + warning("I003"); + } + + if (optionKeys[x] === "newcap" && o[optionKey] === false) + newOptionObj["(explicitNewcap)"] = true; + } + } + } + + state.option = newOptionObj; + state.ignored = newIgnoredObj; + + state.option.indent = state.option.indent || 4; + state.option.maxerr = state.option.maxerr || 50; + + indent = 1; + + var scopeManagerInst = scopeManager(state, predefined, exported, declared); + scopeManagerInst.on("warning", function(ev) { + warning.apply(null, [ ev.code, ev.token].concat(ev.data)); + }); + + scopeManagerInst.on("error", function(ev) { + error.apply(null, [ ev.code, ev.token ].concat(ev.data)); + }); + + state.funct = functor("(global)", null, { + "(global)" : true, + "(scope)" : scopeManagerInst, + "(comparray)" : arrayComprehension(), + "(metrics)" : createMetrics(state.tokens.next) + }); + + functions = [state.funct]; + urls = []; + stack = null; + member = {}; + membersOnly = null; + inblock = false; + lookahead = []; + + if (!isString(s) && !Array.isArray(s)) { + errorAt("E004", 0); + return false; + } + + api = { + get isJSON() { + return state.jsonMode; + }, + + getOption: function(name) { + return state.option[name] || null; + }, + + getCache: function(name) { + return state.cache[name]; + }, + + setCache: function(name, value) { + state.cache[name] = value; + }, + + warn: function(code, data) { + warningAt.apply(null, [ code, data.line, data.char ].concat(data.data)); + }, + + on: function(names, listener) { + names.split(" ").forEach(function(name) { + emitter.on(name, listener); + }.bind(this)); + } + }; + + emitter.removeAllListeners(); + (extraModules || []).forEach(function(func) { + func(api); + }); + + state.tokens.prev = state.tokens.curr = state.tokens.next = state.syntax["(begin)"]; + + if (o && o.ignoreDelimiters) { + + if (!Array.isArray(o.ignoreDelimiters)) { + o.ignoreDelimiters = [o.ignoreDelimiters]; + } + + o.ignoreDelimiters.forEach(function(delimiterPair) { + if (!delimiterPair.start || !delimiterPair.end) + return; + + reIgnoreStr = escapeRegex(delimiterPair.start) + + "[\\s\\S]*?" + + escapeRegex(delimiterPair.end); + + reIgnore = new RegExp(reIgnoreStr, "ig"); + + s = s.replace(reIgnore, function(match) { + return match.replace(/./g, " "); + }); + }); + } + + lex = new Lexer(s); + + lex.on("warning", function(ev) { + warningAt.apply(null, [ ev.code, ev.line, ev.character].concat(ev.data)); + }); + + lex.on("error", function(ev) { + errorAt.apply(null, [ ev.code, ev.line, ev.character ].concat(ev.data)); + }); + + lex.on("fatal", function(ev) { + quit("E041", ev.line, ev.from); + }); + + lex.on("Identifier", function(ev) { + emitter.emit("Identifier", ev); + }); + + lex.on("String", function(ev) { + emitter.emit("String", ev); + }); + + lex.on("Number", function(ev) { + emitter.emit("Number", ev); + }); + + lex.start(); + + // Check options + for (var name in o) { + if (_.has(o, name)) { + checkOption(name, state.tokens.curr); + } + } + + assume(); + + // combine the passed globals after we've assumed all our options + combine(predefined, g || {}); + + //reset values + comma.first = true; + + try { + advance(); + switch (state.tokens.next.id) { + case "{": + case "[": + destructuringAssignOrJsonValue(); + break; + default: + directives(); + + if (state.directive["use strict"]) { + if (state.option.strict !== "global") { + warning("W097", state.tokens.prev); + } + } + + statements(); + } + + if (state.tokens.next.id !== "(end)") { + quit("E041", state.tokens.curr.line); + } + + state.funct["(scope)"].unstack(); + + } catch (err) { + if (err && err.name === "JSHintError") { + var nt = state.tokens.next || {}; + JSHINT.errors.push({ + scope : "(main)", + raw : err.raw, + code : err.code, + reason : err.message, + line : err.line || nt.line, + character : err.character || nt.from + }, null); + } else { + throw err; + } + } + + // Loop over the listed "internals", and check them as well. + + if (JSHINT.scope === "(main)") { + o = o || {}; + + for (i = 0; i < JSHINT.internals.length; i += 1) { + k = JSHINT.internals[i]; + o.scope = k.elem; + itself(k.value, o, g); + } + } + + return JSHINT.errors.length === 0; + }; + + // Modules. + itself.addModule = function(func) { + extraModules.push(func); + }; + + itself.addModule(style.register); + + // Data summary. + itself.data = function() { + var data = { + functions: [], + options: state.option + }; + + var fu, f, i, j, n, globals; + + if (itself.errors.length) { + data.errors = itself.errors; + } + + if (state.jsonMode) { + data.json = true; + } + + var impliedGlobals = state.funct["(scope)"].getImpliedGlobals(); + if (impliedGlobals.length > 0) { + data.implieds = impliedGlobals; + } + + if (urls.length > 0) { + data.urls = urls; + } + + globals = state.funct["(scope)"].getUsedOrDefinedGlobals(); + if (globals.length > 0) { + data.globals = globals; + } + + for (i = 1; i < functions.length; i += 1) { + f = functions[i]; + fu = {}; + + for (j = 0; j < functionicity.length; j += 1) { + fu[functionicity[j]] = []; + } + + for (j = 0; j < functionicity.length; j += 1) { + if (fu[functionicity[j]].length === 0) { + delete fu[functionicity[j]]; + } + } + + fu.name = f["(name)"]; + fu.param = f["(params)"]; + fu.line = f["(line)"]; + fu.character = f["(character)"]; + fu.last = f["(last)"]; + fu.lastcharacter = f["(lastcharacter)"]; + + fu.metrics = { + complexity: f["(metrics)"].ComplexityCount, + parameters: f["(metrics)"].arity, + statements: f["(metrics)"].statementCount + }; + + data.functions.push(fu); + } + + var unuseds = state.funct["(scope)"].getUnuseds(); + if (unuseds.length > 0) { + data.unused = unuseds; + } + + for (n in member) { + if (typeof member[n] === "number") { + data.member = member; + break; + } + } + + return data; + }; + + itself.jshint = itself; + + return itself; +}()); + +// Make JSHINT a Node module, if possible. +if (typeof exports === "object" && exports) { + exports.JSHINT = JSHINT; +} + +},{"../lodash":"/node_modules/jshint/lodash.js","./lex.js":"/node_modules/jshint/src/lex.js","./messages.js":"/node_modules/jshint/src/messages.js","./options.js":"/node_modules/jshint/src/options.js","./reg.js":"/node_modules/jshint/src/reg.js","./scope-manager.js":"/node_modules/jshint/src/scope-manager.js","./state.js":"/node_modules/jshint/src/state.js","./style.js":"/node_modules/jshint/src/style.js","./vars.js":"/node_modules/jshint/src/vars.js","events":"/node_modules/browserify/node_modules/events/events.js"}],"/node_modules/jshint/src/lex.js":[function(_dereq_,module,exports){ +/* + * Lexical analysis and token construction. + */ + +"use strict"; + +var _ = _dereq_("../lodash"); +var events = _dereq_("events"); +var reg = _dereq_("./reg.js"); +var state = _dereq_("./state.js").state; + +var unicodeData = _dereq_("../data/ascii-identifier-data.js"); +var asciiIdentifierStartTable = unicodeData.asciiIdentifierStartTable; +var asciiIdentifierPartTable = unicodeData.asciiIdentifierPartTable; + +// Some of these token types are from JavaScript Parser API +// while others are specific to JSHint parser. +// JS Parser API: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API + +var Token = { + Identifier: 1, + Punctuator: 2, + NumericLiteral: 3, + StringLiteral: 4, + Comment: 5, + Keyword: 6, + NullLiteral: 7, + BooleanLiteral: 8, + RegExp: 9, + TemplateHead: 10, + TemplateMiddle: 11, + TemplateTail: 12, + NoSubstTemplate: 13 +}; + +var Context = { + Block: 1, + Template: 2 +}; + +// Object that handles postponed lexing verifications that checks the parsed +// environment state. + +function asyncTrigger() { + var _checks = []; + + return { + push: function(fn) { + _checks.push(fn); + }, + + check: function() { + for (var check = 0; check < _checks.length; ++check) { + _checks[check](); + } + + _checks.splice(0, _checks.length); + } + }; +} + +/* + * Lexer for JSHint. + * + * This object does a char-by-char scan of the provided source code + * and produces a sequence of tokens. + * + * var lex = new Lexer("var i = 0;"); + * lex.start(); + * lex.token(); // returns the next token + * + * You have to use the token() method to move the lexer forward + * but you don't have to use its return value to get tokens. In addition + * to token() method returning the next token, the Lexer object also + * emits events. + * + * lex.on("Identifier", function(data) { + * if (data.name.indexOf("_") >= 0) { + * // Produce a warning. + * } + * }); + * + * Note that the token() method returns tokens in a JSLint-compatible + * format while the event emitter uses a slightly modified version of + * Mozilla's JavaScript Parser API. Eventually, we will move away from + * JSLint format. + */ +function Lexer(source) { + var lines = source; + + if (typeof lines === "string") { + lines = lines + .replace(/\r\n/g, "\n") + .replace(/\r/g, "\n") + .split("\n"); + } + + // If the first line is a shebang (#!), make it a blank and move on. + // Shebangs are used by Node scripts. + + if (lines[0] && lines[0].substr(0, 2) === "#!") { + if (lines[0].indexOf("node") !== -1) { + state.option.node = true; + } + lines[0] = ""; + } + + this.emitter = new events.EventEmitter(); + this.source = source; + this.setLines(lines); + this.prereg = true; + + this.line = 0; + this.char = 1; + this.from = 1; + this.input = ""; + this.inComment = false; + this.context = []; + this.templateStarts = []; + + for (var i = 0; i < state.option.indent; i += 1) { + state.tab += " "; + } + + // Blank out non-multi-line-commented lines when ignoring linter errors + this.ignoreLinterErrors = false; +} + +Lexer.prototype = { + _lines: [], + + inContext: function(ctxType) { + return this.context.length > 0 && this.context[this.context.length - 1].type === ctxType; + }, + + pushContext: function(ctxType) { + this.context.push({ type: ctxType }); + }, + + popContext: function() { + return this.context.pop(); + }, + + isContext: function(context) { + return this.context.length > 0 && this.context[this.context.length - 1] === context; + }, + + currentContext: function() { + return this.context.length > 0 && this.context[this.context.length - 1]; + }, + + getLines: function() { + this._lines = state.lines; + return this._lines; + }, + + setLines: function(val) { + this._lines = val; + state.lines = this._lines; + }, + + /* + * Return the next i character without actually moving the + * char pointer. + */ + peek: function(i) { + return this.input.charAt(i || 0); + }, + + /* + * Move the char pointer forward i times. + */ + skip: function(i) { + i = i || 1; + this.char += i; + this.input = this.input.slice(i); + }, + + /* + * Subscribe to a token event. The API for this method is similar + * Underscore.js i.e. you can subscribe to multiple events with + * one call: + * + * lex.on("Identifier Number", function(data) { + * // ... + * }); + */ + on: function(names, listener) { + names.split(" ").forEach(function(name) { + this.emitter.on(name, listener); + }.bind(this)); + }, + + /* + * Trigger a token event. All arguments will be passed to each + * listener. + */ + trigger: function() { + this.emitter.emit.apply(this.emitter, Array.prototype.slice.call(arguments)); + }, + + /* + * Postpone a token event. the checking condition is set as + * last parameter, and the trigger function is called in a + * stored callback. To be later called using the check() function + * by the parser. This avoids parser's peek() to give the lexer + * a false context. + */ + triggerAsync: function(type, args, checks, fn) { + checks.push(function() { + if (fn()) { + this.trigger(type, args); + } + }.bind(this)); + }, + + /* + * Extract a punctuator out of the next sequence of characters + * or return 'null' if its not possible. + * + * This method's implementation was heavily influenced by the + * scanPunctuator function in the Esprima parser's source code. + */ + scanPunctuator: function() { + var ch1 = this.peek(); + var ch2, ch3, ch4; + + switch (ch1) { + // Most common single-character punctuators + case ".": + if ((/^[0-9]$/).test(this.peek(1))) { + return null; + } + if (this.peek(1) === "." && this.peek(2) === ".") { + return { + type: Token.Punctuator, + value: "..." + }; + } + /* falls through */ + case "(": + case ")": + case ";": + case ",": + case "[": + case "]": + case ":": + case "~": + case "?": + return { + type: Token.Punctuator, + value: ch1 + }; + + // A block/object opener + case "{": + this.pushContext(Context.Block); + return { + type: Token.Punctuator, + value: ch1 + }; + + // A block/object closer + case "}": + if (this.inContext(Context.Block)) { + this.popContext(); + } + return { + type: Token.Punctuator, + value: ch1 + }; + + // A pound sign (for Node shebangs) + case "#": + return { + type: Token.Punctuator, + value: ch1 + }; + + // We're at the end of input + case "": + return null; + } + + // Peek more characters + + ch2 = this.peek(1); + ch3 = this.peek(2); + ch4 = this.peek(3); + + // 4-character punctuator: >>>= + + if (ch1 === ">" && ch2 === ">" && ch3 === ">" && ch4 === "=") { + return { + type: Token.Punctuator, + value: ">>>=" + }; + } + + // 3-character punctuators: === !== >>> <<= >>= + + if (ch1 === "=" && ch2 === "=" && ch3 === "=") { + return { + type: Token.Punctuator, + value: "===" + }; + } + + if (ch1 === "!" && ch2 === "=" && ch3 === "=") { + return { + type: Token.Punctuator, + value: "!==" + }; + } + + if (ch1 === ">" && ch2 === ">" && ch3 === ">") { + return { + type: Token.Punctuator, + value: ">>>" + }; + } + + if (ch1 === "<" && ch2 === "<" && ch3 === "=") { + return { + type: Token.Punctuator, + value: "<<=" + }; + } + + if (ch1 === ">" && ch2 === ">" && ch3 === "=") { + return { + type: Token.Punctuator, + value: ">>=" + }; + } + + // Fat arrow punctuator + if (ch1 === "=" && ch2 === ">") { + return { + type: Token.Punctuator, + value: ch1 + ch2 + }; + } + + // 2-character punctuators: <= >= == != ++ -- << >> && || + // += -= *= %= &= |= ^= (but not /=, see below) + if (ch1 === ch2 && ("+-<>&|".indexOf(ch1) >= 0)) { + return { + type: Token.Punctuator, + value: ch1 + ch2 + }; + } + + if ("<>=!+-*%&|^".indexOf(ch1) >= 0) { + if (ch2 === "=") { + return { + type: Token.Punctuator, + value: ch1 + ch2 + }; + } + + return { + type: Token.Punctuator, + value: ch1 + }; + } + + // Special case: /=. + + if (ch1 === "/") { + if (ch2 === "=") { + return { + type: Token.Punctuator, + value: "/=" + }; + } + + return { + type: Token.Punctuator, + value: "/" + }; + } + + return null; + }, + + /* + * Extract a comment out of the next sequence of characters and/or + * lines or return 'null' if its not possible. Since comments can + * span across multiple lines this method has to move the char + * pointer. + * + * In addition to normal JavaScript comments (// and /*) this method + * also recognizes JSHint- and JSLint-specific comments such as + * /*jshint, /*jslint, /*globals and so on. + */ + scanComments: function() { + var ch1 = this.peek(); + var ch2 = this.peek(1); + var rest = this.input.substr(2); + var startLine = this.line; + var startChar = this.char; + var self = this; + + // Create a comment token object and make sure it + // has all the data JSHint needs to work with special + // comments. + + function commentToken(label, body, opt) { + var special = ["jshint", "jslint", "members", "member", "globals", "global", "exported"]; + var isSpecial = false; + var value = label + body; + var commentType = "plain"; + opt = opt || {}; + + if (opt.isMultiline) { + value += "*/"; + } + + body = body.replace(/\n/g, " "); + + if (label === "/*" && reg.fallsThrough.test(body)) { + isSpecial = true; + commentType = "falls through"; + } + + special.forEach(function(str) { + if (isSpecial) { + return; + } + + // Don't recognize any special comments other than jshint for single-line + // comments. This introduced many problems with legit comments. + if (label === "//" && str !== "jshint") { + return; + } + + if (body.charAt(str.length) === " " && body.substr(0, str.length) === str) { + isSpecial = true; + label = label + str; + body = body.substr(str.length); + } + + if (!isSpecial && body.charAt(0) === " " && body.charAt(str.length + 1) === " " && + body.substr(1, str.length) === str) { + isSpecial = true; + label = label + " " + str; + body = body.substr(str.length + 1); + } + + if (!isSpecial) { + return; + } + + switch (str) { + case "member": + commentType = "members"; + break; + case "global": + commentType = "globals"; + break; + default: + var options = body.split(":").map(function(v) { + return v.replace(/^\s+/, "").replace(/\s+$/, ""); + }); + + if (options.length === 2) { + switch (options[0]) { + case "ignore": + switch (options[1]) { + case "start": + self.ignoringLinterErrors = true; + isSpecial = false; + break; + case "end": + self.ignoringLinterErrors = false; + isSpecial = false; + break; + } + } + } + + commentType = str; + } + }); + + return { + type: Token.Comment, + commentType: commentType, + value: value, + body: body, + isSpecial: isSpecial, + isMultiline: opt.isMultiline || false, + isMalformed: opt.isMalformed || false + }; + } + + // End of unbegun comment. Raise an error and skip that input. + if (ch1 === "*" && ch2 === "/") { + this.trigger("error", { + code: "E018", + line: startLine, + character: startChar + }); + + this.skip(2); + return null; + } + + // Comments must start either with // or /* + if (ch1 !== "/" || (ch2 !== "*" && ch2 !== "/")) { + return null; + } + + // One-line comment + if (ch2 === "/") { + this.skip(this.input.length); // Skip to the EOL. + return commentToken("//", rest); + } + + var body = ""; + + /* Multi-line comment */ + if (ch2 === "*") { + this.inComment = true; + this.skip(2); + + while (this.peek() !== "*" || this.peek(1) !== "/") { + if (this.peek() === "") { // End of Line + body += "\n"; + + // If we hit EOF and our comment is still unclosed, + // trigger an error and end the comment implicitly. + if (!this.nextLine()) { + this.trigger("error", { + code: "E017", + line: startLine, + character: startChar + }); + + this.inComment = false; + return commentToken("/*", body, { + isMultiline: true, + isMalformed: true + }); + } + } else { + body += this.peek(); + this.skip(); + } + } + + this.skip(2); + this.inComment = false; + return commentToken("/*", body, { isMultiline: true }); + } + }, + + /* + * Extract a keyword out of the next sequence of characters or + * return 'null' if its not possible. + */ + scanKeyword: function() { + var result = /^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input); + var keywords = [ + "if", "in", "do", "var", "for", "new", + "try", "let", "this", "else", "case", + "void", "with", "enum", "while", "break", + "catch", "throw", "const", "yield", "class", + "super", "return", "typeof", "delete", + "switch", "export", "import", "default", + "finally", "extends", "function", "continue", + "debugger", "instanceof" + ]; + + if (result && keywords.indexOf(result[0]) >= 0) { + return { + type: Token.Keyword, + value: result[0] + }; + } + + return null; + }, + + /* + * Extract a JavaScript identifier out of the next sequence of + * characters or return 'null' if its not possible. In addition, + * to Identifier this method can also produce BooleanLiteral + * (true/false) and NullLiteral (null). + */ + scanIdentifier: function() { + var id = ""; + var index = 0; + var type, char; + + function isNonAsciiIdentifierStart(code) { + return code > 256; + } + + function isNonAsciiIdentifierPart(code) { + return code > 256; + } + + function isHexDigit(str) { + return (/^[0-9a-fA-F]$/).test(str); + } + + var readUnicodeEscapeSequence = function() { + /*jshint validthis:true */ + index += 1; + + if (this.peek(index) !== "u") { + return null; + } + + var ch1 = this.peek(index + 1); + var ch2 = this.peek(index + 2); + var ch3 = this.peek(index + 3); + var ch4 = this.peek(index + 4); + var code; + + if (isHexDigit(ch1) && isHexDigit(ch2) && isHexDigit(ch3) && isHexDigit(ch4)) { + code = parseInt(ch1 + ch2 + ch3 + ch4, 16); + + if (asciiIdentifierPartTable[code] || isNonAsciiIdentifierPart(code)) { + index += 5; + return "\\u" + ch1 + ch2 + ch3 + ch4; + } + + return null; + } + + return null; + }.bind(this); + + var getIdentifierStart = function() { + /*jshint validthis:true */ + var chr = this.peek(index); + var code = chr.charCodeAt(0); + + if (code === 92) { + return readUnicodeEscapeSequence(); + } + + if (code < 128) { + if (asciiIdentifierStartTable[code]) { + index += 1; + return chr; + } + + return null; + } + + if (isNonAsciiIdentifierStart(code)) { + index += 1; + return chr; + } + + return null; + }.bind(this); + + var getIdentifierPart = function() { + /*jshint validthis:true */ + var chr = this.peek(index); + var code = chr.charCodeAt(0); + + if (code === 92) { + return readUnicodeEscapeSequence(); + } + + if (code < 128) { + if (asciiIdentifierPartTable[code]) { + index += 1; + return chr; + } + + return null; + } + + if (isNonAsciiIdentifierPart(code)) { + index += 1; + return chr; + } + + return null; + }.bind(this); + + function removeEscapeSequences(id) { + return id.replace(/\\u([0-9a-fA-F]{4})/g, function(m0, codepoint) { + return String.fromCharCode(parseInt(codepoint, 16)); + }); + } + + char = getIdentifierStart(); + if (char === null) { + return null; + } + + id = char; + for (;;) { + char = getIdentifierPart(); + + if (char === null) { + break; + } + + id += char; + } + + switch (id) { + case "true": + case "false": + type = Token.BooleanLiteral; + break; + case "null": + type = Token.NullLiteral; + break; + default: + type = Token.Identifier; + } + + return { + type: type, + value: removeEscapeSequences(id), + text: id, + tokenLength: id.length + }; + }, + + /* + * Extract a numeric literal out of the next sequence of + * characters or return 'null' if its not possible. This method + * supports all numeric literals described in section 7.8.3 + * of the EcmaScript 5 specification. + * + * This method's implementation was heavily influenced by the + * scanNumericLiteral function in the Esprima parser's source code. + */ + scanNumericLiteral: function() { + var index = 0; + var value = ""; + var length = this.input.length; + var char = this.peek(index); + var bad; + var isAllowedDigit = isDecimalDigit; + var base = 10; + var isLegacy = false; + + function isDecimalDigit(str) { + return (/^[0-9]$/).test(str); + } + + function isOctalDigit(str) { + return (/^[0-7]$/).test(str); + } + + function isBinaryDigit(str) { + return (/^[01]$/).test(str); + } + + function isHexDigit(str) { + return (/^[0-9a-fA-F]$/).test(str); + } + + function isIdentifierStart(ch) { + return (ch === "$") || (ch === "_") || (ch === "\\") || + (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z"); + } + + // Numbers must start either with a decimal digit or a point. + + if (char !== "." && !isDecimalDigit(char)) { + return null; + } + + if (char !== ".") { + value = this.peek(index); + index += 1; + char = this.peek(index); + + if (value === "0") { + // Base-16 numbers. + if (char === "x" || char === "X") { + isAllowedDigit = isHexDigit; + base = 16; + + index += 1; + value += char; + } + + // Base-8 numbers. + if (char === "o" || char === "O") { + isAllowedDigit = isOctalDigit; + base = 8; + + if (!state.inES6(true)) { + this.trigger("warning", { + code: "W119", + line: this.line, + character: this.char, + data: [ "Octal integer literal", "6" ] + }); + } + + index += 1; + value += char; + } + + // Base-2 numbers. + if (char === "b" || char === "B") { + isAllowedDigit = isBinaryDigit; + base = 2; + + if (!state.inES6(true)) { + this.trigger("warning", { + code: "W119", + line: this.line, + character: this.char, + data: [ "Binary integer literal", "6" ] + }); + } + + index += 1; + value += char; + } + + // Legacy base-8 numbers. + if (isOctalDigit(char)) { + isAllowedDigit = isOctalDigit; + base = 8; + isLegacy = true; + bad = false; + + index += 1; + value += char; + } + + // Decimal numbers that start with '0' such as '09' are illegal + // but we still parse them and return as malformed. + + if (!isOctalDigit(char) && isDecimalDigit(char)) { + index += 1; + value += char; + } + } + + while (index < length) { + char = this.peek(index); + + if (isLegacy && isDecimalDigit(char)) { + // Numbers like '019' (note the 9) are not valid octals + // but we still parse them and mark as malformed. + bad = true; + } else if (!isAllowedDigit(char)) { + break; + } + value += char; + index += 1; + } + + if (isAllowedDigit !== isDecimalDigit) { + if (!isLegacy && value.length <= 2) { // 0x + return { + type: Token.NumericLiteral, + value: value, + isMalformed: true + }; + } + + if (index < length) { + char = this.peek(index); + if (isIdentifierStart(char)) { + return null; + } + } + + return { + type: Token.NumericLiteral, + value: value, + base: base, + isLegacy: isLegacy, + isMalformed: false + }; + } + } + + // Decimal digits. + + if (char === ".") { + value += char; + index += 1; + + while (index < length) { + char = this.peek(index); + if (!isDecimalDigit(char)) { + break; + } + value += char; + index += 1; + } + } + + // Exponent part. + + if (char === "e" || char === "E") { + value += char; + index += 1; + char = this.peek(index); + + if (char === "+" || char === "-") { + value += this.peek(index); + index += 1; + } + + char = this.peek(index); + if (isDecimalDigit(char)) { + value += char; + index += 1; + + while (index < length) { + char = this.peek(index); + if (!isDecimalDigit(char)) { + break; + } + value += char; + index += 1; + } + } else { + return null; + } + } + + if (index < length) { + char = this.peek(index); + if (isIdentifierStart(char)) { + return null; + } + } + + return { + type: Token.NumericLiteral, + value: value, + base: base, + isMalformed: !isFinite(value) + }; + }, + + + // Assumes previously parsed character was \ (=== '\\') and was not skipped. + scanEscapeSequence: function(checks) { + var allowNewLine = false; + var jump = 1; + this.skip(); + var char = this.peek(); + + switch (char) { + case "'": + this.triggerAsync("warning", { + code: "W114", + line: this.line, + character: this.char, + data: [ "\\'" ] + }, checks, function() {return state.jsonMode; }); + break; + case "b": + char = "\\b"; + break; + case "f": + char = "\\f"; + break; + case "n": + char = "\\n"; + break; + case "r": + char = "\\r"; + break; + case "t": + char = "\\t"; + break; + case "0": + char = "\\0"; + + // Octal literals fail in strict mode. + // Check if the number is between 00 and 07. + var n = parseInt(this.peek(1), 10); + this.triggerAsync("warning", { + code: "W115", + line: this.line, + character: this.char + }, checks, + function() { return n >= 0 && n <= 7 && state.isStrict(); }); + break; + case "u": + var hexCode = this.input.substr(1, 4); + var code = parseInt(hexCode, 16); + if (isNaN(code)) { + this.trigger("warning", { + code: "W052", + line: this.line, + character: this.char, + data: [ "u" + hexCode ] + }); + } + char = String.fromCharCode(code); + jump = 5; + break; + case "v": + this.triggerAsync("warning", { + code: "W114", + line: this.line, + character: this.char, + data: [ "\\v" ] + }, checks, function() { return state.jsonMode; }); + + char = "\v"; + break; + case "x": + var x = parseInt(this.input.substr(1, 2), 16); + + this.triggerAsync("warning", { + code: "W114", + line: this.line, + character: this.char, + data: [ "\\x-" ] + }, checks, function() { return state.jsonMode; }); + + char = String.fromCharCode(x); + jump = 3; + break; + case "\\": + char = "\\\\"; + break; + case "\"": + char = "\\\""; + break; + case "/": + break; + case "": + allowNewLine = true; + char = ""; + break; + } + + return { char: char, jump: jump, allowNewLine: allowNewLine }; + }, + + /* + * Extract a template literal out of the next sequence of characters + * and/or lines or return 'null' if its not possible. Since template + * literals can span across multiple lines, this method has to move + * the char pointer. + */ + scanTemplateLiteral: function(checks) { + var tokenType; + var value = ""; + var ch; + var startLine = this.line; + var startChar = this.char; + var depth = this.templateStarts.length; + + if (!state.inES6(true)) { + // Only lex template strings in ESNext mode. + return null; + } else if (this.peek() === "`") { + // Template must start with a backtick. + tokenType = Token.TemplateHead; + this.templateStarts.push({ line: this.line, char: this.char }); + depth = this.templateStarts.length; + this.skip(1); + this.pushContext(Context.Template); + } else if (this.inContext(Context.Template) && this.peek() === "}") { + // If we're in a template context, and we have a '}', lex a TemplateMiddle. + tokenType = Token.TemplateMiddle; + } else { + // Go lex something else. + return null; + } + + while (this.peek() !== "`") { + while ((ch = this.peek()) === "") { + value += "\n"; + if (!this.nextLine()) { + // Unclosed template literal --- point to the starting "`" + var startPos = this.templateStarts.pop(); + this.trigger("error", { + code: "E052", + line: startPos.line, + character: startPos.char + }); + return { + type: tokenType, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: true, + depth: depth, + context: this.popContext() + }; + } + } + + if (ch === '$' && this.peek(1) === '{') { + value += '${'; + this.skip(2); + return { + type: tokenType, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: false, + depth: depth, + context: this.currentContext() + }; + } else if (ch === '\\') { + var escape = this.scanEscapeSequence(checks); + value += escape.char; + this.skip(escape.jump); + } else if (ch !== '`') { + // Otherwise, append the value and continue. + value += ch; + this.skip(1); + } + } + + // Final value is either NoSubstTemplate or TemplateTail + tokenType = tokenType === Token.TemplateHead ? Token.NoSubstTemplate : Token.TemplateTail; + this.skip(1); + this.templateStarts.pop(); + + return { + type: tokenType, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: false, + depth: depth, + context: this.popContext() + }; + }, + + /* + * Extract a string out of the next sequence of characters and/or + * lines or return 'null' if its not possible. Since strings can + * span across multiple lines this method has to move the char + * pointer. + * + * This method recognizes pseudo-multiline JavaScript strings: + * + * var str = "hello\ + * world"; + */ + scanStringLiteral: function(checks) { + /*jshint loopfunc:true */ + var quote = this.peek(); + + // String must start with a quote. + if (quote !== "\"" && quote !== "'") { + return null; + } + + // In JSON strings must always use double quotes. + this.triggerAsync("warning", { + code: "W108", + line: this.line, + character: this.char // +1? + }, checks, function() { return state.jsonMode && quote !== "\""; }); + + var value = ""; + var startLine = this.line; + var startChar = this.char; + var allowNewLine = false; + + this.skip(); + + while (this.peek() !== quote) { + if (this.peek() === "") { // End Of Line + + // If an EOL is not preceded by a backslash, show a warning + // and proceed like it was a legit multi-line string where + // author simply forgot to escape the newline symbol. + // + // Another approach is to implicitly close a string on EOL + // but it generates too many false positives. + + if (!allowNewLine) { + this.trigger("warning", { + code: "W112", + line: this.line, + character: this.char + }); + } else { + allowNewLine = false; + + // Otherwise show a warning if multistr option was not set. + // For JSON, show warning no matter what. + + this.triggerAsync("warning", { + code: "W043", + line: this.line, + character: this.char + }, checks, function() { return !state.option.multistr; }); + + this.triggerAsync("warning", { + code: "W042", + line: this.line, + character: this.char + }, checks, function() { return state.jsonMode && state.option.multistr; }); + } + + // If we get an EOF inside of an unclosed string, show an + // error and implicitly close it at the EOF point. + + if (!this.nextLine()) { + this.trigger("error", { + code: "E029", + line: startLine, + character: startChar + }); + + return { + type: Token.StringLiteral, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: true, + quote: quote + }; + } + + } else { // Any character other than End Of Line + + allowNewLine = false; + var char = this.peek(); + var jump = 1; // A length of a jump, after we're done + // parsing this character. + + if (char < " ") { + // Warn about a control character in a string. + this.trigger("warning", { + code: "W113", + line: this.line, + character: this.char, + data: [ "<non-printable>" ] + }); + } + + // Special treatment for some escaped characters. + if (char === "\\") { + var parsed = this.scanEscapeSequence(checks); + char = parsed.char; + jump = parsed.jump; + allowNewLine = parsed.allowNewLine; + } + + value += char; + this.skip(jump); + } + } + + this.skip(); + return { + type: Token.StringLiteral, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: false, + quote: quote + }; + }, + + /* + * Extract a regular expression out of the next sequence of + * characters and/or lines or return 'null' if its not possible. + * + * This method is platform dependent: it accepts almost any + * regular expression values but then tries to compile and run + * them using system's RegExp object. This means that there are + * rare edge cases where one JavaScript engine complains about + * your regular expression while others don't. + */ + scanRegExp: function() { + var index = 0; + var length = this.input.length; + var char = this.peek(); + var value = char; + var body = ""; + var flags = []; + var malformed = false; + var isCharSet = false; + var terminated; + + var scanUnexpectedChars = function() { + // Unexpected control character + if (char < " ") { + malformed = true; + this.trigger("warning", { + code: "W048", + line: this.line, + character: this.char + }); + } + + // Unexpected escaped character + if (char === "<") { + malformed = true; + this.trigger("warning", { + code: "W049", + line: this.line, + character: this.char, + data: [ char ] + }); + } + }.bind(this); + + // Regular expressions must start with '/' + if (!this.prereg || char !== "/") { + return null; + } + + index += 1; + terminated = false; + + // Try to get everything in between slashes. A couple of + // cases aside (see scanUnexpectedChars) we don't really + // care whether the resulting expression is valid or not. + // We will check that later using the RegExp object. + + while (index < length) { + char = this.peek(index); + value += char; + body += char; + + if (isCharSet) { + if (char === "]") { + if (this.peek(index - 1) !== "\\" || this.peek(index - 2) === "\\") { + isCharSet = false; + } + } + + if (char === "\\") { + index += 1; + char = this.peek(index); + body += char; + value += char; + + scanUnexpectedChars(); + } + + index += 1; + continue; + } + + if (char === "\\") { + index += 1; + char = this.peek(index); + body += char; + value += char; + + scanUnexpectedChars(); + + if (char === "/") { + index += 1; + continue; + } + + if (char === "[") { + index += 1; + continue; + } + } + + if (char === "[") { + isCharSet = true; + index += 1; + continue; + } + + if (char === "/") { + body = body.substr(0, body.length - 1); + terminated = true; + index += 1; + break; + } + + index += 1; + } + + // A regular expression that was never closed is an + // error from which we cannot recover. + + if (!terminated) { + this.trigger("error", { + code: "E015", + line: this.line, + character: this.from + }); + + return void this.trigger("fatal", { + line: this.line, + from: this.from + }); + } + + // Parse flags (if any). + + while (index < length) { + char = this.peek(index); + if (!/[gim]/.test(char)) { + break; + } + flags.push(char); + value += char; + index += 1; + } + + // Check regular expression for correctness. + + try { + new RegExp(body, flags.join("")); + } catch (err) { + malformed = true; + this.trigger("error", { + code: "E016", + line: this.line, + character: this.char, + data: [ err.message ] // Platform dependent! + }); + } + + return { + type: Token.RegExp, + value: value, + flags: flags, + isMalformed: malformed + }; + }, + + /* + * Scan for any occurrence of non-breaking spaces. Non-breaking spaces + * can be mistakenly typed on OS X with option-space. Non UTF-8 web + * pages with non-breaking pages produce syntax errors. + */ + scanNonBreakingSpaces: function() { + return state.option.nonbsp ? + this.input.search(/(\u00A0)/) : -1; + }, + + /* + * Scan for characters that get silently deleted by one or more browsers. + */ + scanUnsafeChars: function() { + return this.input.search(reg.unsafeChars); + }, + + /* + * Produce the next raw token or return 'null' if no tokens can be matched. + * This method skips over all space characters. + */ + next: function(checks) { + this.from = this.char; + + // Move to the next non-space character. + var start; + if (/\s/.test(this.peek())) { + start = this.char; + + while (/\s/.test(this.peek())) { + this.from += 1; + this.skip(); + } + } + + // Methods that work with multi-line structures and move the + // character pointer. + + var match = this.scanComments() || + this.scanStringLiteral(checks) || + this.scanTemplateLiteral(checks); + + if (match) { + return match; + } + + // Methods that don't move the character pointer. + + match = + this.scanRegExp() || + this.scanPunctuator() || + this.scanKeyword() || + this.scanIdentifier() || + this.scanNumericLiteral(); + + if (match) { + this.skip(match.tokenLength || match.value.length); + return match; + } + + // No token could be matched, give up. + + return null; + }, + + /* + * Switch to the next line and reset all char pointers. Once + * switched, this method also checks for other minor warnings. + */ + nextLine: function() { + var char; + + if (this.line >= this.getLines().length) { + return false; + } + + this.input = this.getLines()[this.line]; + this.line += 1; + this.char = 1; + this.from = 1; + + var inputTrimmed = this.input.trim(); + + var startsWith = function() { + return _.some(arguments, function(prefix) { + return inputTrimmed.indexOf(prefix) === 0; + }); + }; + + var endsWith = function() { + return _.some(arguments, function(suffix) { + return inputTrimmed.indexOf(suffix, inputTrimmed.length - suffix.length) !== -1; + }); + }; + + // If we are ignoring linter errors, replace the input with empty string + // if it doesn't already at least start or end a multi-line comment + if (this.ignoringLinterErrors === true) { + if (!startsWith("/*", "//") && !(this.inComment && endsWith("*/"))) { + this.input = ""; + } + } + + char = this.scanNonBreakingSpaces(); + if (char >= 0) { + this.trigger("warning", { code: "W125", line: this.line, character: char + 1 }); + } + + this.input = this.input.replace(/\t/g, state.tab); + char = this.scanUnsafeChars(); + + if (char >= 0) { + this.trigger("warning", { code: "W100", line: this.line, character: char }); + } + + // If there is a limit on line length, warn when lines get too + // long. + + if (!this.ignoringLinterErrors && state.option.maxlen && + state.option.maxlen < this.input.length) { + var inComment = this.inComment || + startsWith.call(inputTrimmed, "//") || + startsWith.call(inputTrimmed, "/*"); + + var shouldTriggerError = !inComment || !reg.maxlenException.test(inputTrimmed); + + if (shouldTriggerError) { + this.trigger("warning", { code: "W101", line: this.line, character: this.input.length }); + } + } + + return true; + }, + + /* + * This is simply a synonym for nextLine() method with a friendlier + * public name. + */ + start: function() { + this.nextLine(); + }, + + /* + * Produce the next token. This function is called by advance() to get + * the next token. It returns a token in a JSLint-compatible format. + */ + token: function() { + /*jshint loopfunc:true */ + var checks = asyncTrigger(); + var token; + + + function isReserved(token, isProperty) { + if (!token.reserved) { + return false; + } + var meta = token.meta; + + if (meta && meta.isFutureReservedWord && state.inES5()) { + // ES3 FutureReservedWord in an ES5 environment. + if (!meta.es5) { + return false; + } + + // Some ES5 FutureReservedWord identifiers are active only + // within a strict mode environment. + if (meta.strictOnly) { + if (!state.option.strict && !state.isStrict()) { + return false; + } + } + + if (isProperty) { + return false; + } + } + + return true; + } + + // Produce a token object. + var create = function(type, value, isProperty, token) { + /*jshint validthis:true */ + var obj; + + if (type !== "(endline)" && type !== "(end)") { + this.prereg = false; + } + + if (type === "(punctuator)") { + switch (value) { + case ".": + case ")": + case "~": + case "#": + case "]": + case "++": + case "--": + this.prereg = false; + break; + default: + this.prereg = true; + } + + obj = Object.create(state.syntax[value] || state.syntax["(error)"]); + } + + if (type === "(identifier)") { + if (value === "return" || value === "case" || value === "typeof") { + this.prereg = true; + } + + if (_.has(state.syntax, value)) { + obj = Object.create(state.syntax[value] || state.syntax["(error)"]); + + // If this can't be a reserved keyword, reset the object. + if (!isReserved(obj, isProperty && type === "(identifier)")) { + obj = null; + } + } + } + + if (!obj) { + obj = Object.create(state.syntax[type]); + } + + obj.identifier = (type === "(identifier)"); + obj.type = obj.type || type; + obj.value = value; + obj.line = this.line; + obj.character = this.char; + obj.from = this.from; + if (obj.identifier && token) obj.raw_text = token.text || token.value; + if (token && token.startLine && token.startLine !== this.line) { + obj.startLine = token.startLine; + } + if (token && token.context) { + // Context of current token + obj.context = token.context; + } + if (token && token.depth) { + // Nested template depth + obj.depth = token.depth; + } + if (token && token.isUnclosed) { + // Mark token as unclosed string / template literal + obj.isUnclosed = token.isUnclosed; + } + + if (isProperty && obj.identifier) { + obj.isProperty = isProperty; + } + + obj.check = checks.check; + + return obj; + }.bind(this); + + for (;;) { + if (!this.input.length) { + if (this.nextLine()) { + return create("(endline)", ""); + } + + if (this.exhausted) { + return null; + } + + this.exhausted = true; + return create("(end)", ""); + } + + token = this.next(checks); + + if (!token) { + if (this.input.length) { + // Unexpected character. + this.trigger("error", { + code: "E024", + line: this.line, + character: this.char, + data: [ this.peek() ] + }); + + this.input = ""; + } + + continue; + } + + switch (token.type) { + case Token.StringLiteral: + this.triggerAsync("String", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value, + quote: token.quote + }, checks, function() { return true; }); + + return create("(string)", token.value, null, token); + + case Token.TemplateHead: + this.trigger("TemplateHead", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value + }); + return create("(template)", token.value, null, token); + + case Token.TemplateMiddle: + this.trigger("TemplateMiddle", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value + }); + return create("(template middle)", token.value, null, token); + + case Token.TemplateTail: + this.trigger("TemplateTail", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value + }); + return create("(template tail)", token.value, null, token); + + case Token.NoSubstTemplate: + this.trigger("NoSubstTemplate", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value + }); + return create("(no subst template)", token.value, null, token); + + case Token.Identifier: + this.triggerAsync("Identifier", { + line: this.line, + char: this.char, + from: this.form, + name: token.value, + raw_name: token.text, + isProperty: state.tokens.curr.id === "." + }, checks, function() { return true; }); + + /* falls through */ + case Token.Keyword: + case Token.NullLiteral: + case Token.BooleanLiteral: + return create("(identifier)", token.value, state.tokens.curr.id === ".", token); + + case Token.NumericLiteral: + if (token.isMalformed) { + this.trigger("warning", { + code: "W045", + line: this.line, + character: this.char, + data: [ token.value ] + }); + } + + this.triggerAsync("warning", { + code: "W114", + line: this.line, + character: this.char, + data: [ "0x-" ] + }, checks, function() { return token.base === 16 && state.jsonMode; }); + + this.triggerAsync("warning", { + code: "W115", + line: this.line, + character: this.char + }, checks, function() { + return state.isStrict() && token.base === 8 && token.isLegacy; + }); + + this.trigger("Number", { + line: this.line, + char: this.char, + from: this.from, + value: token.value, + base: token.base, + isMalformed: token.malformed + }); + + return create("(number)", token.value); + + case Token.RegExp: + return create("(regexp)", token.value); + + case Token.Comment: + state.tokens.curr.comment = true; + + if (token.isSpecial) { + return { + id: '(comment)', + value: token.value, + body: token.body, + type: token.commentType, + isSpecial: token.isSpecial, + line: this.line, + character: this.char, + from: this.from + }; + } + + break; + + case "": + break; + + default: + return create("(punctuator)", token.value); + } + } + } +}; + +exports.Lexer = Lexer; +exports.Context = Context; + +},{"../data/ascii-identifier-data.js":"/node_modules/jshint/data/ascii-identifier-data.js","../lodash":"/node_modules/jshint/lodash.js","./reg.js":"/node_modules/jshint/src/reg.js","./state.js":"/node_modules/jshint/src/state.js","events":"/node_modules/browserify/node_modules/events/events.js"}],"/node_modules/jshint/src/messages.js":[function(_dereq_,module,exports){ +"use strict"; + +var _ = _dereq_("../lodash"); + +var errors = { + // JSHint options + E001: "Bad option: '{a}'.", + E002: "Bad option value.", + + // JSHint input + E003: "Expected a JSON value.", + E004: "Input is neither a string nor an array of strings.", + E005: "Input is empty.", + E006: "Unexpected early end of program.", + + // Strict mode + E007: "Missing \"use strict\" statement.", + E008: "Strict violation.", + E009: "Option 'validthis' can't be used in a global scope.", + E010: "'with' is not allowed in strict mode.", + + // Constants + E011: "'{a}' has already been declared.", + E012: "const '{a}' is initialized to 'undefined'.", + E013: "Attempting to override '{a}' which is a constant.", + + // Regular expressions + E014: "A regular expression literal can be confused with '/='.", + E015: "Unclosed regular expression.", + E016: "Invalid regular expression.", + + // Tokens + E017: "Unclosed comment.", + E018: "Unbegun comment.", + E019: "Unmatched '{a}'.", + E020: "Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.", + E021: "Expected '{a}' and instead saw '{b}'.", + E022: "Line breaking error '{a}'.", + E023: "Missing '{a}'.", + E024: "Unexpected '{a}'.", + E025: "Missing ':' on a case clause.", + E026: "Missing '}' to match '{' from line {a}.", + E027: "Missing ']' to match '[' from line {a}.", + E028: "Illegal comma.", + E029: "Unclosed string.", + + // Everything else + E030: "Expected an identifier and instead saw '{a}'.", + E031: "Bad assignment.", // FIXME: Rephrase + E032: "Expected a small integer or 'false' and instead saw '{a}'.", + E033: "Expected an operator and instead saw '{a}'.", + E034: "get/set are ES5 features.", + E035: "Missing property name.", + E036: "Expected to see a statement and instead saw a block.", + E037: null, + E038: null, + E039: "Function declarations are not invocable. Wrap the whole function invocation in parens.", + E040: "Each value should have its own case label.", + E041: "Unrecoverable syntax error.", + E042: "Stopping.", + E043: "Too many errors.", + E044: null, + E045: "Invalid for each loop.", + E046: "A yield statement shall be within a generator function (with syntax: `function*`)", + E047: null, + E048: "{a} declaration not directly within block.", + E049: "A {a} cannot be named '{b}'.", + E050: "Mozilla requires the yield expression to be parenthesized here.", + E051: null, + E052: "Unclosed template literal.", + E053: "Export declaration must be in global scope.", + E054: "Class properties must be methods. Expected '(' but instead saw '{a}'.", + E055: "The '{a}' option cannot be set after any executable code.", + E056: "'{a}' was used before it was declared, which is illegal for '{b}' variables.", + E057: "Invalid meta property: '{a}.{b}'.", + E058: "Missing semicolon." +}; + +var warnings = { + W001: "'hasOwnProperty' is a really bad name.", + W002: "Value of '{a}' may be overwritten in IE 8 and earlier.", + W003: "'{a}' was used before it was defined.", + W004: "'{a}' is already defined.", + W005: "A dot following a number can be confused with a decimal point.", + W006: "Confusing minuses.", + W007: "Confusing plusses.", + W008: "A leading decimal point can be confused with a dot: '{a}'.", + W009: "The array literal notation [] is preferable.", + W010: "The object literal notation {} is preferable.", + W011: null, + W012: null, + W013: null, + W014: "Bad line breaking before '{a}'.", + W015: null, + W016: "Unexpected use of '{a}'.", + W017: "Bad operand.", + W018: "Confusing use of '{a}'.", + W019: "Use the isNaN function to compare with NaN.", + W020: "Read only.", + W021: "Reassignment of '{a}', which is is a {b}. " + + "Use 'var' or 'let' to declare bindings that may change.", + W022: "Do not assign to the exception parameter.", + W023: "Expected an identifier in an assignment and instead saw a function invocation.", + W024: "Expected an identifier and instead saw '{a}' (a reserved word).", + W025: "Missing name in function declaration.", + W026: "Inner functions should be listed at the top of the outer function.", + W027: "Unreachable '{a}' after '{b}'.", + W028: "Label '{a}' on {b} statement.", + W030: "Expected an assignment or function call and instead saw an expression.", + W031: "Do not use 'new' for side effects.", + W032: "Unnecessary semicolon.", + W033: "Missing semicolon.", + W034: "Unnecessary directive \"{a}\".", + W035: "Empty block.", + W036: "Unexpected /*member '{a}'.", + W037: "'{a}' is a statement label.", + W038: "'{a}' used out of scope.", + W039: "'{a}' is not allowed.", + W040: "Possible strict violation.", + W041: "Use '{a}' to compare with '{b}'.", + W042: "Avoid EOL escaping.", + W043: "Bad escaping of EOL. Use option multistr if needed.", + W044: "Bad or unnecessary escaping.", /* TODO(caitp): remove W044 */ + W045: "Bad number '{a}'.", + W046: "Don't use extra leading zeros '{a}'.", + W047: "A trailing decimal point can be confused with a dot: '{a}'.", + W048: "Unexpected control character in regular expression.", + W049: "Unexpected escaped character '{a}' in regular expression.", + W050: "JavaScript URL.", + W051: "Variables should not be deleted.", + W052: "Unexpected '{a}'.", + W053: "Do not use {a} as a constructor.", + W054: "The Function constructor is a form of eval.", + W055: "A constructor name should start with an uppercase letter.", + W056: "Bad constructor.", + W057: "Weird construction. Is 'new' necessary?", + W058: "Missing '()' invoking a constructor.", + W059: "Avoid arguments.{a}.", + W060: "document.write can be a form of eval.", + W061: "eval can be harmful.", + W062: "Wrap an immediate function invocation in parens " + + "to assist the reader in understanding that the expression " + + "is the result of a function, and not the function itself.", + W063: "Math is not a function.", + W064: "Missing 'new' prefix when invoking a constructor.", + W065: "Missing radix parameter.", + W066: "Implied eval. Consider passing a function instead of a string.", + W067: "Bad invocation.", + W068: "Wrapping non-IIFE function literals in parens is unnecessary.", + W069: "['{a}'] is better written in dot notation.", + W070: "Extra comma. (it breaks older versions of IE)", + W071: "This function has too many statements. ({a})", + W072: "This function has too many parameters. ({a})", + W073: "Blocks are nested too deeply. ({a})", + W074: "This function's cyclomatic complexity is too high. ({a})", + W075: "Duplicate {a} '{b}'.", + W076: "Unexpected parameter '{a}' in get {b} function.", + W077: "Expected a single parameter in set {a} function.", + W078: "Setter is defined without getter.", + W079: "Redefinition of '{a}'.", + W080: "It's not necessary to initialize '{a}' to 'undefined'.", + W081: null, + W082: "Function declarations should not be placed in blocks. " + + "Use a function expression or move the statement to the top of " + + "the outer function.", + W083: "Don't make functions within a loop.", + W084: "Assignment in conditional expression", + W085: "Don't use 'with'.", + W086: "Expected a 'break' statement before '{a}'.", + W087: "Forgotten 'debugger' statement?", + W088: "Creating global 'for' variable. Should be 'for (var {a} ...'.", + W089: "The body of a for in should be wrapped in an if statement to filter " + + "unwanted properties from the prototype.", + W090: "'{a}' is not a statement label.", + W091: null, + W093: "Did you mean to return a conditional instead of an assignment?", + W094: "Unexpected comma.", + W095: "Expected a string and instead saw {a}.", + W096: "The '{a}' key may produce unexpected results.", + W097: "Use the function form of \"use strict\".", + W098: "'{a}' is defined but never used.", + W099: null, + W100: "This character may get silently deleted by one or more browsers.", + W101: "Line is too long.", + W102: null, + W103: "The '{a}' property is deprecated.", + W104: "'{a}' is available in ES{b} (use 'esversion: {b}') or Mozilla JS extensions (use moz).", + W105: "Unexpected {a} in '{b}'.", + W106: "Identifier '{a}' is not in camel case.", + W107: "Script URL.", + W108: "Strings must use doublequote.", + W109: "Strings must use singlequote.", + W110: "Mixed double and single quotes.", + W112: "Unclosed string.", + W113: "Control character in string: {a}.", + W114: "Avoid {a}.", + W115: "Octal literals are not allowed in strict mode.", + W116: "Expected '{a}' and instead saw '{b}'.", + W117: "'{a}' is not defined.", + W118: "'{a}' is only available in Mozilla JavaScript extensions (use moz option).", + W119: "'{a}' is only available in ES{b} (use 'esversion: {b}').", + W120: "You might be leaking a variable ({a}) here.", + W121: "Extending prototype of native object: '{a}'.", + W122: "Invalid typeof value '{a}'", + W123: "'{a}' is already defined in outer scope.", + W124: "A generator function shall contain a yield statement.", + W125: "This line contains non-breaking spaces: http://jshint.com/doc/options/#nonbsp", + W126: "Unnecessary grouping operator.", + W127: "Unexpected use of a comma operator.", + W128: "Empty array elements require elision=true.", + W129: "'{a}' is defined in a future version of JavaScript. Use a " + + "different variable name to avoid migration issues.", + W130: "Invalid element after rest element.", + W131: "Invalid parameter after rest parameter.", + W132: "`var` declarations are forbidden. Use `let` or `const` instead.", + W133: "Invalid for-{a} loop left-hand-side: {b}.", + W134: "The '{a}' option is only available when linting ECMAScript {b} code.", + W135: "{a} may not be supported by non-browser environments.", + W136: "'{a}' must be in function scope.", + W137: "Empty destructuring.", + W138: "Regular parameters should not come after default parameters." +}; + +var info = { + I001: "Comma warnings can be turned off with 'laxcomma'.", + I002: null, + I003: "ES5 option is now set per default" +}; + +exports.errors = {}; +exports.warnings = {}; +exports.info = {}; + +_.each(errors, function(desc, code) { + exports.errors[code] = { code: code, desc: desc }; +}); + +_.each(warnings, function(desc, code) { + exports.warnings[code] = { code: code, desc: desc }; +}); + +_.each(info, function(desc, code) { + exports.info[code] = { code: code, desc: desc }; +}); + +},{"../lodash":"/node_modules/jshint/lodash.js"}],"/node_modules/jshint/src/name-stack.js":[function(_dereq_,module,exports){ +"use strict"; + +function NameStack() { + this._stack = []; +} + +Object.defineProperty(NameStack.prototype, "length", { + get: function() { + return this._stack.length; + } +}); + +/** + * Create a new entry in the stack. Useful for tracking names across + * expressions. + */ +NameStack.prototype.push = function() { + this._stack.push(null); +}; + +/** + * Discard the most recently-created name on the stack. + */ +NameStack.prototype.pop = function() { + this._stack.pop(); +}; + +/** + * Update the most recent name on the top of the stack. + * + * @param {object} token The token to consider as the source for the most + * recent name. + */ +NameStack.prototype.set = function(token) { + this._stack[this.length - 1] = token; +}; + +/** + * Generate a string representation of the most recent name. + * + * @returns {string} + */ +NameStack.prototype.infer = function() { + var nameToken = this._stack[this.length - 1]; + var prefix = ""; + var type; + + // During expected operation, the topmost entry on the stack will only + // reflect the current function's name when the function is declared without + // the `function` keyword (i.e. for in-line accessor methods). In other + // cases, the `function` expression itself will introduce an empty entry on + // the top of the stack, and this should be ignored. + if (!nameToken || nameToken.type === "class") { + nameToken = this._stack[this.length - 2]; + } + + if (!nameToken) { + return "(empty)"; + } + + type = nameToken.type; + + if (type !== "(string)" && type !== "(number)" && type !== "(identifier)" && type !== "default") { + return "(expression)"; + } + + if (nameToken.accessorType) { + prefix = nameToken.accessorType + " "; + } + + return prefix + nameToken.value; +}; + +module.exports = NameStack; + +},{}],"/node_modules/jshint/src/options.js":[function(_dereq_,module,exports){ +"use strict"; + +// These are the JSHint boolean options. +exports.bool = { + enforcing: { + + /** + * This option prohibits the use of bitwise operators such as `^` (XOR), + * `|` (OR) and others. Bitwise operators are very rare in JavaScript + * programs and quite often `&` is simply a mistyped `&&`. + */ + bitwise : true, + + /** + * + * This options prohibits overwriting prototypes of native objects such as + * `Array`, `Date` and so on. + * + * // jshint freeze:true + * Array.prototype.count = function (value) { return 4; }; + * // -> Warning: Extending prototype of native object: 'Array'. + */ + freeze : true, + + /** + * This option allows you to force all variable names to use either + * camelCase style or UPPER_CASE with underscores. + * + * @deprecated JSHint is limiting its scope to issues of code correctness. + * If you would like to enforce rules relating to code style, + * check out [the JSCS + * project](https://github.com/jscs-dev/node-jscs). + */ + camelcase : true, + + /** + * This option requires you to always put curly braces around blocks in + * loops and conditionals. JavaScript allows you to omit curly braces when + * the block consists of only one statement, for example: + * + * while (day) + * shuffle(); + * + * However, in some circumstances, it can lead to bugs (you'd think that + * `sleep()` is a part of the loop while in reality it is not): + * + * while (day) + * shuffle(); + * sleep(); + */ + curly : true, + + /** + * This options prohibits the use of `==` and `!=` in favor of `===` and + * `!==`. The former try to coerce values before comparing them which can + * lead to some unexpected results. The latter don't do any coercion so + * they are generally safer. If you would like to learn more about type + * coercion in JavaScript, we recommend [Truth, Equality and + * JavaScript](http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/) + * by Angus Croll. + */ + eqeqeq : true, + + /** + * This option enables warnings about the use of identifiers which are + * defined in future versions of JavaScript. Although overwriting them has + * no effect in contexts where they are not implemented, this practice can + * cause issues when migrating codebases to newer versions of the language. + */ + futurehostile: true, + + /** + * This option suppresses warnings about invalid `typeof` operator values. + * This operator has only [a limited set of possible return + * values](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof). + * By default, JSHint warns when you compare its result with an invalid + * value which often can be a typo. + * + * // 'fuction' instead of 'function' + * if (typeof a == "fuction") { // Invalid typeof value 'fuction' + * // ... + * } + * + * Do not use this option unless you're absolutely sure you don't want + * these checks. + */ + notypeof : true, + + /** + * This option tells JSHint that your code needs to adhere to ECMAScript 3 + * specification. Use this option if you need your program to be executable + * in older browsers—such as Internet Explorer 6/7/8/9—and other legacy + * JavaScript environments. + * + * @deprecated Use `esversion: 3` instead. + */ + es3 : true, + + /** + * This option enables syntax first defined in [the ECMAScript 5.1 + * specification](http://es5.github.io/). This includes allowing reserved + * keywords as object properties. + * + * @deprecated Use `esversion: 5` instead. + */ + es5 : true, + + /** + * This option requires all `for in` loops to filter object's items. The + * for in statement allows for looping through the names of all of the + * properties of an object including those inherited through the prototype + * chain. This behavior can lead to unexpected items in your object so it + * is generally safer to always filter inherited properties out as shown in + * the example: + * + * for (key in obj) { + * if (obj.hasOwnProperty(key)) { + * // We are sure that obj[key] belongs to the object and was not inherited. + * } + * } + * + * For more in-depth understanding of `for in` loops in JavaScript, read + * [Exploring JavaScript for-in + * loops](http://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/) + * by Angus Croll. + */ + forin : true, + + /** + * This option suppresses warnings about declaring variables inside of + * control + * structures while accessing them later from the outside. Even though + * JavaScript has only two real scopes—global and function—such practice + * leads to confusion among people new to the language and hard-to-debug + * bugs. This is why, by default, JSHint warns about variables that are + * used outside of their intended scope. + * + * function test() { + * if (true) { + * var x = 0; + * } + * + * x += 1; // Default: 'x' used out of scope. + * // No warning when funcscope:true + * } + */ + funcscope : true, + + /** + * This option prohibits the use of immediate function invocations without + * wrapping them in parentheses. Wrapping parentheses assists readers of + * your code in understanding that the expression is the result of a + * function, and not the function itself. + * + * @deprecated JSHint is limiting its scope to issues of code correctness. + * If you would like to enforce rules relating to code style, + * check out [the JSCS + * project](https://github.com/jscs-dev/node-jscs). + */ + immed : true, + + /** + * This option suppresses warnings about the `__iterator__` property. This + * property is not supported by all browsers so use it carefully. + */ + iterator : true, + + /** + * This option requires you to capitalize names of constructor functions. + * Capitalizing functions that are intended to be used with `new` operator + * is just a convention that helps programmers to visually distinguish + * constructor functions from other types of functions to help spot + * mistakes when using `this`. + * + * Not doing so won't break your code in any browsers or environments but + * it will be a bit harder to figure out—by reading the code—if the + * function was supposed to be used with or without new. And this is + * important because when the function that was intended to be used with + * `new` is used without it, `this` will point to the global object instead + * of a new object. + * + * @deprecated JSHint is limiting its scope to issues of code correctness. + * If you would like to enforce rules relating to code style, + * check out [the JSCS + * project](https://github.com/jscs-dev/node-jscs). + */ + newcap : true, + + /** + * This option prohibits the use of `arguments.caller` and + * `arguments.callee`. Both `.caller` and `.callee` make quite a few + * optimizations impossible so they were deprecated in future versions of + * JavaScript. In fact, ECMAScript 5 forbids the use of `arguments.callee` + * in strict mode. + */ + noarg : true, + + /** + * This option prohibits the use of the comma operator. When misused, the + * comma operator can obscure the value of a statement and promote + * incorrect code. + */ + nocomma : true, + + /** + * This option warns when you have an empty block in your code. JSLint was + * originally warning for all empty blocks and we simply made it optional. + * There were no studies reporting that empty blocks in JavaScript break + * your code in any way. + * + * @deprecated JSHint is limiting its scope to issues of code correctness. + * If you would like to enforce rules relating to code style, + * check out [the JSCS + * project](https://github.com/jscs-dev/node-jscs). + */ + noempty : true, + + /** + * This option warns about "non-breaking whitespace" characters. These + * characters can be entered with option-space on Mac computers and have a + * potential of breaking non-UTF8 web pages. + */ + nonbsp : true, + + /** + * This option prohibits the use of constructor functions for side-effects. + * Some people like to call constructor functions without assigning its + * result to any variable: + * + * new MyConstructor(); + * + * There is no advantage in this approach over simply calling + * `MyConstructor` since the object that the operator `new` creates isn't + * used anywhere so you should generally avoid constructors like this one. + */ + nonew : true, + + /** + * This option prohibits the use of explicitly undeclared variables. This + * option is very useful for spotting leaking and mistyped variables. + * + * // jshint undef:true + * + * function test() { + * var myVar = 'Hello, World'; + * console.log(myvar); // Oops, typoed here. JSHint with undef will complain + * } + * + * If your variable is defined in another file, you can use the `global` + * directive to tell JSHint about it. + */ + undef : true, + + /** + * This option prohibits the use of the grouping operator when it is not + * strictly required. Such usage commonly reflects a misunderstanding of + * unary operators, for example: + * + * // jshint singleGroups: true + * + * delete(obj.attr); // Warning: Unnecessary grouping operator. + */ + singleGroups: false, + + /** + * When set to true, the use of VariableStatements are forbidden. + * For example: + * + * // jshint varstmt: true + * + * var a; // Warning: `var` declarations are forbidden. Use `let` or `const` instead. + */ + varstmt: false, + + /** + * This option is a short hand for the most strict JSHint configuration as + * available in JSHint version 2.6.3. It enables all enforcing options and + * disables all relaxing options that were defined in that release. + * + * @deprecated The option cannot be maintained without automatically opting + * users in to new features. This can lead to unexpected + * warnings/errors in when upgrading between minor versions of + * JSHint. + */ + enforceall : false + }, + relaxing: { + + /** + * This option suppresses warnings about missing semicolons. There is a lot + * of FUD about semicolon spread by quite a few people in the community. + * The common myths are that semicolons are required all the time (they are + * not) and that they are unreliable. JavaScript has rules about semicolons + * which are followed by *all* browsers so it is up to you to decide + * whether you should or should not use semicolons in your code. + * + * For more information about semicolons in JavaScript read [An Open Letter + * to JavaScript Leaders Regarding + * Semicolons](http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding) + * by Isaac Schlueter and [JavaScript Semicolon + * Insertion](http://inimino.org/~inimino/blog/javascript_semicolons). + */ + asi : true, + + /** + * This option suppresses warnings about multi-line strings. Multi-line + * strings can be dangerous in JavaScript because all hell breaks loose if + * you accidentally put a whitespace in between the escape character (`\`) + * and a new line. + * + * Note that even though this option allows correct multi-line strings, it + * still warns about multi-line strings without escape characters or with + * anything in between the escape character and a whitespace. + * + * // jshint multistr:true + * + * var text = "Hello\ + * World"; // All good. + * + * text = "Hello + * World"; // Warning, no escape character. + * + * text = "Hello\ + * World"; // Warning, there is a space after \ + * + * @deprecated JSHint is limiting its scope to issues of code correctness. + * If you would like to enforce rules relating to code style, + * check out [the JSCS + * project](https://github.com/jscs-dev/node-jscs). + */ + multistr : true, + + /** + * This option suppresses warnings about the `debugger` statements in your + * code. + */ + debug : true, + + /** + * This option suppresses warnings about the use of assignments in cases + * where comparisons are expected. More often than not, code like `if (a = + * 10) {}` is a typo. However, it can be useful in cases like this one: + * + * for (var i = 0, person; person = people[i]; i++) {} + * + * You can silence this error on a per-use basis by surrounding the assignment + * with parenthesis, such as: + * + * for (var i = 0, person; (person = people[i]); i++) {} + */ + boss : true, + + /** + * This option suppresses warnings about the use of `eval`. The use of + * `eval` is discouraged because it can make your code vulnerable to + * various injection attacks and it makes it hard for JavaScript + * interpreter to do certain optimizations. + */ + evil : true, + + /** + * This option suppresses warnings about the use of global strict mode. + * Global strict mode can break third-party widgets so it is not + * recommended. + * + * For more info about strict mode see the `strict` option. + * + * @deprecated Use `strict: "global"`. + */ + globalstrict: true, + + /** + * This option prohibits the use of unary increment and decrement + * operators. Some people think that `++` and `--` reduces the quality of + * their coding styles and there are programming languages—such as + * Python—that go completely without these operators. + */ + plusplus : true, + + /** + * This option suppresses warnings about the `__proto__` property. + */ + proto : true, + + /** + * This option suppresses warnings about the use of script-targeted + * URLs—such as `javascript:...`. + */ + scripturl : true, + + /** + * This option suppresses warnings about using `[]` notation when it can be + * expressed in dot notation: `person['name']` vs. `person.name`. + * + * @deprecated JSHint is limiting its scope to issues of code correctness. + * If you would like to enforce rules relating to code style, + * check out [the JSCS + * project](https://github.com/jscs-dev/node-jscs). + */ + sub : true, + + /** + * This option suppresses warnings about "weird" constructions like + * `new function () { ... }` and `new Object;`. Such constructions are + * sometimes used to produce singletons in JavaScript: + * + * var singleton = new function() { + * var privateVar; + * + * this.publicMethod = function () {} + * this.publicMethod2 = function () {} + * }; + */ + supernew : true, + + /** + * This option suppresses most of the warnings about possibly unsafe line + * breakings in your code. It doesn't suppress warnings about comma-first + * coding style. To suppress those you have to use `laxcomma` (see below). + * + * @deprecated JSHint is limiting its scope to issues of code correctness. + * If you would like to enforce rules relating to code style, + * check out [the JSCS + * project](https://github.com/jscs-dev/node-jscs). + */ + laxbreak : true, + + /** + * This option suppresses warnings about comma-first coding style: + * + * var obj = { + * name: 'Anton' + * , handle: 'valueof' + * , role: 'SW Engineer' + * }; + * + * @deprecated JSHint is limiting its scope to issues of code correctness. + * If you would like to enforce rules relating to code style, + * check out [the JSCS + * project](https://github.com/jscs-dev/node-jscs). + */ + laxcomma : true, + + /** + * This option suppresses warnings about possible strict violations when + * the code is running in strict mode and you use `this` in a + * non-constructor function. You should use this option—in a function scope + * only—when you are positive that your use of `this` is valid in the + * strict mode (for example, if you call your function using + * `Function.call`). + * + * **Note:** This option can be used only inside of a function scope. + * JSHint will fail with an error if you will try to set this option + * globally. + */ + validthis : true, + + /** + * This option suppresses warnings about the use of the `with` statement. + * The semantics of the `with` statement can cause confusion among + * developers and accidental definition of global variables. + * + * More info: + * + * * [with Statement Considered + * Harmful](http://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/) + */ + withstmt : true, + + /** + * This options tells JSHint that your code uses Mozilla JavaScript + * extensions. Unless you develop specifically for the Firefox web browser + * you don't need this option. + * + * More info: + * + * * [New in JavaScript + * 1.7](https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.7) + */ + moz : true, + + /** + * This option suppresses warnings about generator functions with no + * `yield` statement in them. + */ + noyield : true, + + /** + * This option suppresses warnings about `== null` comparisons. Such + * comparisons are often useful when you want to check if a variable is + * `null` or `undefined`. + */ + eqnull : true, + + /** + * This option suppresses warnings about missing semicolons, but only when + * the semicolon is omitted for the last statement in a one-line block: + * + * var name = (function() { return 'Anton' }()); + * + * This is a very niche use case that is useful only when you use automatic + * JavaScript code generators. + */ + lastsemic : true, + + /** + * This option suppresses warnings about functions inside of loops. + * Defining functions inside of loops can lead to bugs such as this one: + * + * var nums = []; + * + * for (var i = 0; i < 10; i++) { + * nums[i] = function (j) { + * return i + j; + * }; + * } + * + * nums[0](2); // Prints 12 instead of 2 + * + * To fix the code above you need to copy the value of `i`: + * + * var nums = []; + * + * for (var i = 0; i < 10; i++) { + * (function (i) { + * nums[i] = function (j) { + * return i + j; + * }; + * }(i)); + * } + */ + loopfunc : true, + + /** + * This option suppresses warnings about the use of expressions where + * normally you would expect to see assignments or function calls. Most of + * the time, such code is a typo. However, it is not forbidden by the spec + * and that's why this warning is optional. + */ + expr : true, + + /** + * This option tells JSHint that your code uses ECMAScript 6 specific + * syntax. Note that these features are not finalized yet and not all + * browsers implement them. + * + * More info: + * + * * [Specification for ECMAScript + * 6](http://www.ecma-international.org/ecma-262/6.0/index.html) + * + * @deprecated Use `esversion: 6` instead. + */ + esnext : true, + + /** + * This option tells JSHint that your code uses ES3 array elision elements, + * or empty elements (for example, `[1, , , 4, , , 7]`). + */ + elision : true, + }, + + // Third party globals + environments: { + + /** + * This option defines globals exposed by the + * [MooTools](http://mootools.net/) JavaScript framework. + */ + mootools : true, + + /** + * This option defines globals exposed by + * [CouchDB](http://couchdb.apache.org/). CouchDB is a document-oriented + * database that can be queried and indexed in a MapReduce fashion using + * JavaScript. + */ + couch : true, + + /** + * This option defines globals exposed by [the Jasmine unit testing + * framework](https://jasmine.github.io/). + */ + jasmine : true, + + /** + * This option defines globals exposed by the [jQuery](http://jquery.com/) + * JavaScript library. + */ + jquery : true, + + /** + * This option defines globals available when your code is running inside + * of the Node runtime environment. [Node.js](http://nodejs.org/) is a + * server-side JavaScript environment that uses an asynchronous + * event-driven model. This option also skips some warnings that make sense + * in the browser environments but don't make sense in Node such as + * file-level `use strict` pragmas and `console.log` statements. + */ + node : true, + + /** + * This option defines globals exposed by [the QUnit unit testing + * framework](http://qunitjs.com/). + */ + qunit : true, + + /** + * This option defines globals available when your code is running inside + * of the Rhino runtime environment. [Rhino](http://www.mozilla.org/rhino/) + * is an open-source implementation of JavaScript written entirely in Java. + */ + rhino : true, + + /** + * This option defines globals exposed by [the ShellJS + * library](http://documentup.com/arturadib/shelljs). + */ + shelljs : true, + + /** + * This option defines globals exposed by the + * [Prototype](http://www.prototypejs.org/) JavaScript framework. + */ + prototypejs : true, + + /** + * This option defines globals exposed by the [YUI](http://yuilibrary.com/) + * JavaScript framework. + */ + yui : true, + + /** + * This option defines globals exposed by the "BDD" and "TDD" UIs of the + * [Mocha unit testing framework](http://mochajs.org/). + */ + mocha : true, + + /** + * This option informs JSHint that the input code describes an ECMAScript 6 + * module. All module code is interpreted as strict mode code. + */ + module : true, + + /** + * This option defines globals available when your code is running as a + * script for the [Windows Script + * Host](http://en.wikipedia.org/wiki/Windows_Script_Host). + */ + wsh : true, + + /** + * This option defines globals available when your code is running inside + * of a Web Worker. [Web + * Workers](https://developer.mozilla.org/en/Using_web_workers) provide a + * simple means for web content to run scripts in background threads. + */ + worker : true, + + /** + * This option defines non-standard but widely adopted globals such as + * `escape` and `unescape`. + */ + nonstandard : true, + + /** + * This option defines globals exposed by modern browsers: all the way from + * good old `document` and `navigator` to the HTML5 `FileReader` and other + * new developments in the browser world. + * + * **Note:** This option doesn't expose variables like `alert` or + * `console`. See option `devel` for more information. + */ + browser : true, + + /** + * This option defines globals available when using [the Browserify + * tool](http://browserify.org/) to build a project. + */ + browserify : true, + + /** + * This option defines globals that are usually used for logging poor-man's + * debugging: `console`, `alert`, etc. It is usually a good idea to not + * ship them in production because, for example, `console.log` breaks in + * legacy versions of Internet Explorer. + */ + devel : true, + + /** + * This option defines globals exposed by the [Dojo + * Toolkit](http://dojotoolkit.org/). + */ + dojo : true, + + /** + * This option defines globals for typed array constructors. + * + * More info: + * + * * [JavaScript typed + * arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays) + */ + typed : true, + + /** + * This option defines globals available when your core is running inside + * of the PhantomJS runtime environment. [PhantomJS](http://phantomjs.org/) + * is a headless WebKit scriptable with a JavaScript API. It has fast and + * native support for various web standards: DOM handling, CSS selector, + * JSON, Canvas, and SVG. + */ + phantom : true + }, + + // Obsolete options + obsolete: { + onecase : true, // if one case switch statements should be allowed + regexp : true, // if the . should not be allowed in regexp literals + regexdash : true // if unescaped first/last dash (-) inside brackets + // should be tolerated + } +}; + +// These are the JSHint options that can take any value +// (we use this object to detect invalid options) +exports.val = { + + /** + * This option lets you set the maximum length of a line. + * + * @deprecated JSHint is limiting its scope to issues of code correctness. If + * you would like to enforce rules relating to code style, check + * out [the JSCS project](https://github.com/jscs-dev/node-jscs). + */ + maxlen : false, + + /** + * This option sets a specific tab width for your code. + * + * @deprecated JSHint is limiting its scope to issues of code correctness. If + * you would like to enforce rules relating to code style, check + * out [the JSCS project](https://github.com/jscs-dev/node-jscs). + */ + indent : false, + + /** + * This options allows you to set the maximum amount of warnings JSHint will + * produce before giving up. Default is 50. + */ + maxerr : false, + + /** + * This option allows you to control which variables JSHint considers to be + * implicitly defined in the environment. Configure it with an array of + * string values. Prefixing a variable name with a hyphen (-) character will + * remove that name from the collection of predefined variables. + * + * JSHint will consider variables declared in this way to be read-only. + * + * This option cannot be specified in-line; it may only be used via the + * JavaScript API or from an external configuration file. + */ + predef : false, + + /** + * This option can be used to specify a white list of global variables that + * are not formally defined in the source code. This is most useful when + * combined with the `undef` option in order to suppress warnings for + * project-specific global variables. + * + * Setting an entry to `true` enables reading and writing to that variable. + * Setting it to `false` will trigger JSHint to consider that variable + * read-only. + * + * See also the "environment" options: a set of options to be used as short + * hand for enabling global variables defined in common JavaScript + * environments. + * + * To configure `globals` within an individual file, see [Inline + * Configuration](http://jshint.com/docs/#inline-configuration). + */ + globals : false, + + /** + * This option enforces the consistency of quotation marks used throughout + * your code. It accepts three values: `true` if you don't want to enforce + * one particular style but want some consistency, `"single"` if you want to + * allow only single quotes and `"double"` if you want to allow only double + * quotes. + * + * @deprecated JSHint is limiting its scope to issues of code correctness. If + * you would like to enforce rules relating to code style, check + * out [the JSCS project](https://github.com/jscs-dev/node-jscs). + */ + quotmark : false, + + scope : false, + + /** + * This option lets you set the max number of statements allowed per function: + * + * // jshint maxstatements:4 + * + * function main() { + * var i = 0; + * var j = 0; + * + * // Function declarations count as one statement. Their bodies + * // don't get taken into account for the outer function. + * function inner() { + * var i2 = 1; + * var j2 = 1; + * + * return i2 + j2; + * } + * + * j = i + j; + * return j; // JSHint: Too many statements per function. (5) + * } + */ + maxstatements: false, + + /** + * This option lets you control how nested do you want your blocks to be: + * + * // jshint maxdepth:2 + * + * function main(meaning) { + * var day = true; + * + * if (meaning === 42) { + * while (day) { + * shuffle(); + * + * if (tired) { // JSHint: Blocks are nested too deeply (3). + * sleep(); + * } + * } + * } + * } + */ + maxdepth : false, + + /** + * This option lets you set the max number of formal parameters allowed per + * function: + * + * // jshint maxparams:3 + * + * function login(request, onSuccess) { + * // ... + * } + * + * // JSHint: Too many parameters per function (4). + * function logout(request, isManual, whereAmI, onSuccess) { + * // ... + * } + */ + maxparams : false, + + /** + * This option lets you control cyclomatic complexity throughout your code. + * Cyclomatic complexity measures the number of linearly independent paths + * through a program's source code. Read more about [cyclomatic complexity on + * Wikipedia](http://en.wikipedia.org/wiki/Cyclomatic_complexity). + */ + maxcomplexity: false, + + /** + * This option suppresses warnings about variable shadowing i.e. declaring a + * variable that had been already declared somewhere in the outer scope. + * + * - "inner" - check for variables defined in the same scope only + * - "outer" - check for variables defined in outer scopes as well + * - false - same as inner + * - true - allow variable shadowing + */ + shadow : false, + + /** + * This option requires the code to run in ECMAScript 5's strict mode. + * [Strict mode](https://developer.mozilla.org/en/JavaScript/Strict_mode) + * is a way to opt in to a restricted variant of JavaScript. Strict mode + * eliminates some JavaScript pitfalls that didn't cause errors by changing + * them to produce errors. It also fixes mistakes that made it difficult + * for the JavaScript engines to perform certain optimizations. + * + * - "func" - there must be a `"use strict";` directive at function level + * - "global" - there must be a `"use strict";` directive at global level + * - "implied" - lint the code as if there is the `"use strict";` directive + * - false - disable warnings about strict mode + * - true - same as `"func"`, but environment options have precedence over + * this (e.g. `node`, `module`, `browserify` and `phantomjs` can + * set `strict: global`) + */ + strict : true, + + /** + * This option warns when you define and never use your variables. It is very + * useful for general code cleanup, especially when used in addition to + * `undef`. + * + * // jshint unused:true + * + * function test(a, b) { + * var c, d = 2; + * + * return a + d; + * } + * + * test(1, 2); + * + * // Line 3: 'b' was defined but never used. + * // Line 4: 'c' was defined but never used. + * + * In addition to that, this option will warn you about unused global + * variables declared via the `global` directive. + * + * This can be set to `vars` to only check for variables, not function + * parameters, or `strict` to check all variables and parameters. The + * default (true) behavior is to allow unused parameters that are followed by + * a used parameter. + */ + unused : true, + + /** + * This option prohibits the use of a variable before it was defined. + * JavaScript has function scope only and, in addition to that, all variables + * are always moved—or hoisted— to the top of the function. This behavior can + * lead to some very nasty bugs and that's why it is safer to always use + * variable only after they have been explicitly defined. + * + * Setting this option to "nofunc" will allow function declarations to be + * ignored. + * + * For more in-depth understanding of scoping and hoisting in JavaScript, + * read [JavaScript Scoping and + * Hoisting](http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting) + * by Ben Cherry. + */ + latedef : false, + + ignore : false, // start/end ignoring lines of code, bypassing the lexer + // start - start ignoring lines, including the current line + // end - stop ignoring lines, starting on the next line + // line - ignore warnings / errors for just a single line + // (this option does not bypass the lexer) + + ignoreDelimiters: false, // array of start/end delimiters used to ignore + // certain chunks from code + + /** + * This option is used to specify the ECMAScript version to which the code + * must adhere. It can assume one of the following values: + * - `3` - If you need your program to be executable + * in older browsers—such as Internet Explorer 6/7/8/9—and other legacy + * JavaScript environments + * - `5` - To enable syntax first defined in [the ECMAScript 5.1 + * specification](http://www.ecma-international.org/ecma-262/5.1/index.html). + * This includes allowing reserved keywords as object properties. + * - `6` - To tell JSHint that your code uses [ECMAScript + * 6](http://www.ecma-international.org/ecma-262/6.0/index.html) specific + * syntax. Note that not all browsers implement them. + */ + esversion: 5 +}; + +// These are JSHint boolean options which are shared with JSLint +// where the definition in JSHint is opposite JSLint +exports.inverted = { + bitwise : true, + forin : true, + newcap : true, + plusplus: true, + regexp : true, + undef : true, + + // Inverted and renamed, use JSHint name here + eqeqeq : true, + strict : true +}; + +exports.validNames = Object.keys(exports.val) + .concat(Object.keys(exports.bool.relaxing)) + .concat(Object.keys(exports.bool.enforcing)) + .concat(Object.keys(exports.bool.obsolete)) + .concat(Object.keys(exports.bool.environments)); + +// These are JSHint boolean options which are shared with JSLint +// where the name has been changed but the effect is unchanged +exports.renamed = { + eqeq : "eqeqeq", + windows: "wsh", + sloppy : "strict" +}; + +exports.removed = { + nomen: true, + onevar: true, + passfail: true, + white: true, + gcl: true, + smarttabs: true, + trailing: true +}; + +// Add options here which should not be automatically enforced by +// `enforceall`. +exports.noenforceall = { + varstmt: true, + strict: true +}; + +},{}],"/node_modules/jshint/src/reg.js":[function(_dereq_,module,exports){ +/* + * Regular expressions. Some of these are stupidly long. + */ + +/*jshint maxlen:1000 */ + +"use strict"; + +// Unsafe comment or string (ax) +exports.unsafeString = + /@cc|<\/?|script|\]\s*\]|<\s*!|</i; + +// Unsafe characters that are silently deleted by one or more browsers (cx) +exports.unsafeChars = + /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; + +// Characters in strings that need escaping (nx and nxg) +exports.needEsc = + /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; + +exports.needEscGlobal = + /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; + +// Star slash (lx) +exports.starSlash = /\*\//; + +// Identifier (ix) +exports.identifier = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/; + +// JavaScript URL (jx) +exports.javascriptURL = /^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i; + +// Catches /* falls through */ comments (ft) +exports.fallsThrough = /^\s*falls?\sthrough\s*$/; + +// very conservative rule (eg: only one space between the start of the comment and the first character) +// to relax the maxlen option +exports.maxlenException = /^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/; + +},{}],"/node_modules/jshint/src/scope-manager.js":[function(_dereq_,module,exports){ +"use strict"; + +var _ = _dereq_("../lodash"); +var events = _dereq_("events"); + +// Used to denote membership in lookup tables (a primitive value such as `true` +// would be silently rejected for the property name "__proto__" in some +// environments) +var marker = {}; + +/** + * Creates a scope manager that handles variables and labels, storing usages + * and resolving when variables are used and undefined + */ +var scopeManager = function(state, predefined, exported, declared) { + + var _current; + var _scopeStack = []; + + function _newScope(type) { + _current = { + "(labels)": Object.create(null), + "(usages)": Object.create(null), + "(breakLabels)": Object.create(null), + "(parent)": _current, + "(type)": type, + "(params)": (type === "functionparams" || type === "catchparams") ? [] : null + }; + _scopeStack.push(_current); + } + + _newScope("global"); + _current["(predefined)"] = predefined; + + var _currentFunctBody = _current; // this is the block after the params = function + + var usedPredefinedAndGlobals = Object.create(null); + var impliedGlobals = Object.create(null); + var unuseds = []; + var emitter = new events.EventEmitter(); + + function warning(code, token) { + emitter.emit("warning", { + code: code, + token: token, + data: _.slice(arguments, 2) + }); + } + + function error(code, token) { + emitter.emit("warning", { + code: code, + token: token, + data: _.slice(arguments, 2) + }); + } + + function _setupUsages(labelName) { + if (!_current["(usages)"][labelName]) { + _current["(usages)"][labelName] = { + "(modified)": [], + "(reassigned)": [], + "(tokens)": [] + }; + } + } + + var _getUnusedOption = function(unused_opt) { + if (unused_opt === undefined) { + unused_opt = state.option.unused; + } + + if (unused_opt === true) { + unused_opt = "last-param"; + } + + return unused_opt; + }; + + var _warnUnused = function(name, tkn, type, unused_opt) { + var line = tkn.line; + var chr = tkn.from; + var raw_name = tkn.raw_text || name; + + unused_opt = _getUnusedOption(unused_opt); + + var warnable_types = { + "vars": ["var"], + "last-param": ["var", "param"], + "strict": ["var", "param", "last-param"] + }; + + if (unused_opt) { + if (warnable_types[unused_opt] && warnable_types[unused_opt].indexOf(type) !== -1) { + warning("W098", { line: line, from: chr }, raw_name); + } + } + + // inconsistent - see gh-1894 + if (unused_opt || type === "var") { + unuseds.push({ + name: name, + line: line, + character: chr + }); + } + }; + + /** + * Checks the current scope for unused identifiers + */ + function _checkForUnused() { + // function params are handled specially + // assume that parameters are the only thing declared in the param scope + if (_current["(type)"] === "functionparams") { + _checkParams(); + return; + } + var curentLabels = _current["(labels)"]; + for (var labelName in curentLabels) { + if (curentLabels[labelName]) { + if (curentLabels[labelName]["(type)"] !== "exception" && + curentLabels[labelName]["(unused)"]) { + _warnUnused(labelName, curentLabels[labelName]["(token)"], "var"); + } + } + } + } + + /** + * Checks the current scope for unused parameters + * Must be called in a function parameter scope + */ + function _checkParams() { + var params = _current["(params)"]; + + if (!params) { + return; + } + + var param = params.pop(); + var unused_opt; + + while (param) { + var label = _current["(labels)"][param]; + + unused_opt = _getUnusedOption(state.funct["(unusedOption)"]); + + // 'undefined' is a special case for (function(window, undefined) { ... })(); + // patterns. + if (param === "undefined") + return; + + if (label["(unused)"]) { + _warnUnused(param, label["(token)"], "param", state.funct["(unusedOption)"]); + } else if (unused_opt === "last-param") { + return; + } + + param = params.pop(); + } + } + + /** + * Finds the relevant label's scope, searching from nearest outwards + * @returns {Object} the scope the label was found in + */ + function _getLabel(labelName) { + for (var i = _scopeStack.length - 1 ; i >= 0; --i) { + var scopeLabels = _scopeStack[i]["(labels)"]; + if (scopeLabels[labelName]) { + return scopeLabels; + } + } + } + + function usedSoFarInCurrentFunction(labelName) { + // used so far in this whole function and any sub functions + for (var i = _scopeStack.length - 1; i >= 0; i--) { + var current = _scopeStack[i]; + if (current["(usages)"][labelName]) { + return current["(usages)"][labelName]; + } + if (current === _currentFunctBody) { + break; + } + } + return false; + } + + function _checkOuterShadow(labelName, token) { + + // only check if shadow is outer + if (state.option.shadow !== "outer") { + return; + } + + var isGlobal = _currentFunctBody["(type)"] === "global", + isNewFunction = _current["(type)"] === "functionparams"; + + var outsideCurrentFunction = !isGlobal; + for (var i = 0; i < _scopeStack.length; i++) { + var stackItem = _scopeStack[i]; + + if (!isNewFunction && _scopeStack[i + 1] === _currentFunctBody) { + outsideCurrentFunction = false; + } + if (outsideCurrentFunction && stackItem["(labels)"][labelName]) { + warning("W123", token, labelName); + } + if (stackItem["(breakLabels)"][labelName]) { + warning("W123", token, labelName); + } + } + } + + function _latedefWarning(type, labelName, token) { + if (state.option.latedef) { + // if either latedef is strict and this is a function + // or this is not a function + if ((state.option.latedef === true && type === "function") || + type !== "function") { + warning("W003", token, labelName); + } + } + } + + var scopeManagerInst = { + + on: function(names, listener) { + names.split(" ").forEach(function(name) { + emitter.on(name, listener); + }); + }, + + isPredefined: function(labelName) { + return !this.has(labelName) && _.has(_scopeStack[0]["(predefined)"], labelName); + }, + + /** + * Tell the manager we are entering a new block of code + * @param {string} [type] - The type of the block. Valid values are + * "functionparams", "catchparams" and + * "functionouter" + */ + stack: function(type) { + var previousScope = _current; + _newScope(type); + + if (!type && previousScope["(type)"] === "functionparams") { + + _current["(isFuncBody)"] = true; + _current["(context)"] = _currentFunctBody; + _currentFunctBody = _current; + } + }, + + unstack: function() { + // jshint proto: true + var subScope = _scopeStack.length > 1 ? _scopeStack[_scopeStack.length - 2] : null; + var isUnstackingFunctionBody = _current === _currentFunctBody, + isUnstackingFunctionParams = _current["(type)"] === "functionparams", + isUnstackingFunctionOuter = _current["(type)"] === "functionouter"; + + var i, j; + var currentUsages = _current["(usages)"]; + var currentLabels = _current["(labels)"]; + var usedLabelNameList = Object.keys(currentUsages); + + if (currentUsages.__proto__ && usedLabelNameList.indexOf("__proto__") === -1) { + usedLabelNameList.push("__proto__"); + } + + for (i = 0; i < usedLabelNameList.length; i++) { + var usedLabelName = usedLabelNameList[i]; + + var usage = currentUsages[usedLabelName]; + var usedLabel = currentLabels[usedLabelName]; + if (usedLabel) { + var usedLabelType = usedLabel["(type)"]; + + if (usedLabel["(useOutsideOfScope)"] && !state.option.funcscope) { + var usedTokens = usage["(tokens)"]; + if (usedTokens) { + for (j = 0; j < usedTokens.length; j++) { + // Keep the consistency of https://github.com/jshint/jshint/issues/2409 + if (usedLabel["(function)"] === usedTokens[j]["(function)"]) { + error("W038", usedTokens[j], usedLabelName); + } + } + } + } + + // mark the label used + _current["(labels)"][usedLabelName]["(unused)"] = false; + + // check for modifying a const + if (usedLabelType === "const" && usage["(modified)"]) { + for (j = 0; j < usage["(modified)"].length; j++) { + error("E013", usage["(modified)"][j], usedLabelName); + } + } + + // check for re-assigning a function declaration + if ((usedLabelType === "function" || usedLabelType === "class") && + usage["(reassigned)"]) { + for (j = 0; j < usage["(reassigned)"].length; j++) { + error("W021", usage["(reassigned)"][j], usedLabelName, usedLabelType); + } + } + continue; + } + + if (isUnstackingFunctionOuter) { + state.funct["(isCapturing)"] = true; + } + + if (subScope) { + // not exiting the global scope, so copy the usage down in case its an out of scope usage + if (!subScope["(usages)"][usedLabelName]) { + subScope["(usages)"][usedLabelName] = usage; + if (isUnstackingFunctionBody) { + subScope["(usages)"][usedLabelName]["(onlyUsedSubFunction)"] = true; + } + } else { + var subScopeUsage = subScope["(usages)"][usedLabelName]; + subScopeUsage["(modified)"] = subScopeUsage["(modified)"].concat(usage["(modified)"]); + subScopeUsage["(tokens)"] = subScopeUsage["(tokens)"].concat(usage["(tokens)"]); + subScopeUsage["(reassigned)"] = + subScopeUsage["(reassigned)"].concat(usage["(reassigned)"]); + subScopeUsage["(onlyUsedSubFunction)"] = false; + } + } else { + // this is exiting global scope, so we finalise everything here - we are at the end of the file + if (typeof _current["(predefined)"][usedLabelName] === "boolean") { + + // remove the declared token, so we know it is used + delete declared[usedLabelName]; + + // note it as used so it can be reported + usedPredefinedAndGlobals[usedLabelName] = marker; + + // check for re-assigning a read-only (set to false) predefined + if (_current["(predefined)"][usedLabelName] === false && usage["(reassigned)"]) { + for (j = 0; j < usage["(reassigned)"].length; j++) { + warning("W020", usage["(reassigned)"][j]); + } + } + } + else { + // label usage is not predefined and we have not found a declaration + // so report as undeclared + if (usage["(tokens)"]) { + for (j = 0; j < usage["(tokens)"].length; j++) { + var undefinedToken = usage["(tokens)"][j]; + // if its not a forgiven undefined (e.g. typof x) + if (!undefinedToken.forgiveUndef) { + // if undef is on and undef was on when the token was defined + if (state.option.undef && !undefinedToken.ignoreUndef) { + warning("W117", undefinedToken, usedLabelName); + } + if (impliedGlobals[usedLabelName]) { + impliedGlobals[usedLabelName].line.push(undefinedToken.line); + } else { + impliedGlobals[usedLabelName] = { + name: usedLabelName, + line: [undefinedToken.line] + }; + } + } + } + } + } + } + } + + // if exiting the global scope, we can warn about declared globals that haven't been used yet + if (!subScope) { + Object.keys(declared) + .forEach(function(labelNotUsed) { + _warnUnused(labelNotUsed, declared[labelNotUsed], "var"); + }); + } + + // if we have a sub scope we can copy too and we are still within the function boundary + if (subScope && !isUnstackingFunctionBody && + !isUnstackingFunctionParams && !isUnstackingFunctionOuter) { + var labelNames = Object.keys(currentLabels); + for (i = 0; i < labelNames.length; i++) { + + var defLabelName = labelNames[i]; + + // if its function scoped and + // not already defined (caught with shadow, shouldn't also trigger out of scope) + if (!currentLabels[defLabelName]["(blockscoped)"] && + currentLabels[defLabelName]["(type)"] !== "exception" && + !this.funct.has(defLabelName, { excludeCurrent: true })) { + subScope["(labels)"][defLabelName] = currentLabels[defLabelName]; + // we do not warn about out of scope usages in the global scope + if (_currentFunctBody["(type)"] !== "global") { + subScope["(labels)"][defLabelName]["(useOutsideOfScope)"] = true; + } + delete currentLabels[defLabelName]; + } + } + } + + _checkForUnused(); + + _scopeStack.pop(); + if (isUnstackingFunctionBody) { + _currentFunctBody = _scopeStack[_.findLastIndex(_scopeStack, function(scope) { + // if function or if global (which is at the bottom so it will only return true if we call back) + return scope["(isFuncBody)"] || scope["(type)"] === "global"; + })]; + } + + _current = subScope; + }, + + /** + * Add a param to the current scope + * @param {string} labelName + * @param {Token} token + * @param {string} [type="param"] param type + */ + addParam: function(labelName, token, type) { + type = type || "param"; + + if (type === "exception") { + // if defined in the current function + var previouslyDefinedLabelType = this.funct.labeltype(labelName); + if (previouslyDefinedLabelType && previouslyDefinedLabelType !== "exception") { + // and has not been used yet in the current function scope + if (!state.option.node) { + warning("W002", state.tokens.next, labelName); + } + } + } + + // The variable was declared in the current scope + if (_.has(_current["(labels)"], labelName)) { + _current["(labels)"][labelName].duplicated = true; + + // The variable was declared in an outer scope + } else { + // if this scope has the variable defined, it's a re-definition error + _checkOuterShadow(labelName, token, type); + + _current["(labels)"][labelName] = { + "(type)" : type, + "(token)": token, + "(unused)": true }; + + _current["(params)"].push(labelName); + } + + if (_.has(_current["(usages)"], labelName)) { + var usage = _current["(usages)"][labelName]; + // if its in a sub function it is not necessarily an error, just latedef + if (usage["(onlyUsedSubFunction)"]) { + _latedefWarning(type, labelName, token); + } else { + // this is a clear illegal usage for block scoped variables + warning("E056", token, labelName, type); + } + } + }, + + validateParams: function() { + // This method only concerns errors for function parameters + if (_currentFunctBody["(type)"] === "global") { + return; + } + + var isStrict = state.isStrict(); + var currentFunctParamScope = _currentFunctBody["(parent)"]; + + if (!currentFunctParamScope["(params)"]) { + return; + } + + currentFunctParamScope["(params)"].forEach(function(labelName) { + var label = currentFunctParamScope["(labels)"][labelName]; + + if (label && label.duplicated) { + if (isStrict) { + warning("E011", label["(token)"], labelName); + } else if (state.option.shadow !== true) { + warning("W004", label["(token)"], labelName); + } + } + }); + }, + + getUsedOrDefinedGlobals: function() { + // jshint proto: true + var list = Object.keys(usedPredefinedAndGlobals); + + // If `__proto__` is used as a global variable name, its entry in the + // lookup table may not be enumerated by `Object.keys` (depending on the + // environment). + if (usedPredefinedAndGlobals.__proto__ === marker && + list.indexOf("__proto__") === -1) { + list.push("__proto__"); + } + + return list; + }, + + /** + * Gets an array of implied globals + * @returns {Array.<{ name: string, line: Array.<number>}>} + */ + getImpliedGlobals: function() { + // jshint proto: true + var values = _.values(impliedGlobals); + var hasProto = false; + + // If `__proto__` is an implied global variable, its entry in the lookup + // table may not be enumerated by `_.values` (depending on the + // environment). + if (impliedGlobals.__proto__) { + hasProto = values.some(function(value) { + return value.name === "__proto__"; + }); + + if (!hasProto) { + values.push(impliedGlobals.__proto__); + } + } + + return values; + }, + + /** + * Returns a list of unused variables + * @returns {Array} + */ + getUnuseds: function() { + return unuseds; + }, + + has: function(labelName) { + return Boolean(_getLabel(labelName)); + }, + + labeltype: function(labelName) { + // returns a labels type or null if not present + var scopeLabels = _getLabel(labelName); + if (scopeLabels) { + return scopeLabels[labelName]["(type)"]; + } + return null; + }, + + /** + * for the exported options, indicating a variable is used outside the file + */ + addExported: function(labelName) { + var globalLabels = _scopeStack[0]["(labels)"]; + if (_.has(declared, labelName)) { + // remove the declared token, so we know it is used + delete declared[labelName]; + } else if (_.has(globalLabels, labelName)) { + globalLabels[labelName]["(unused)"] = false; + } else { + for (var i = 1; i < _scopeStack.length; i++) { + var scope = _scopeStack[i]; + // if `scope.(type)` is not defined, it is a block scope + if (!scope["(type)"]) { + if (_.has(scope["(labels)"], labelName) && + !scope["(labels)"][labelName]["(blockscoped)"]) { + scope["(labels)"][labelName]["(unused)"] = false; + return; + } + } else { + break; + } + } + exported[labelName] = true; + } + }, + + /** + * Mark an indentifier as es6 module exported + */ + setExported: function(labelName, token) { + this.block.use(labelName, token); + }, + + /** + * adds an indentifier to the relevant current scope and creates warnings/errors as necessary + * @param {string} labelName + * @param {Object} opts + * @param {String} opts.type - the type of the label e.g. "param", "var", "let, "const", "function" + * @param {Token} opts.token - the token pointing at the declaration + */ + addlabel: function(labelName, opts) { + + var type = opts.type; + var token = opts.token; + var isblockscoped = type === "let" || type === "const" || type === "class"; + var isexported = (isblockscoped ? _current : _currentFunctBody)["(type)"] === "global" && + _.has(exported, labelName); + + // outer shadow check (inner is only on non-block scoped) + _checkOuterShadow(labelName, token, type); + + // if is block scoped (let or const) + if (isblockscoped) { + + var declaredInCurrentScope = _current["(labels)"][labelName]; + // for block scoped variables, params are seen in the current scope as the root function + // scope, so check these too. + if (!declaredInCurrentScope && _current === _currentFunctBody && + _current["(type)"] !== "global") { + declaredInCurrentScope = !!_currentFunctBody["(parent)"]["(labels)"][labelName]; + } + + // if its not already defined (which is an error, so ignore) and is used in TDZ + if (!declaredInCurrentScope && _current["(usages)"][labelName]) { + var usage = _current["(usages)"][labelName]; + // if its in a sub function it is not necessarily an error, just latedef + if (usage["(onlyUsedSubFunction)"]) { + _latedefWarning(type, labelName, token); + } else { + // this is a clear illegal usage for block scoped variables + warning("E056", token, labelName, type); + } + } + + // if this scope has the variable defined, its a re-definition error + if (declaredInCurrentScope) { + warning("E011", token, labelName); + } + else if (state.option.shadow === "outer") { + + // if shadow is outer, for block scope we want to detect any shadowing within this function + if (scopeManagerInst.funct.has(labelName)) { + warning("W004", token, labelName); + } + } + + scopeManagerInst.block.add(labelName, type, token, !isexported); + + } else { + + var declaredInCurrentFunctionScope = scopeManagerInst.funct.has(labelName); + + // check for late definition, ignore if already declared + if (!declaredInCurrentFunctionScope && usedSoFarInCurrentFunction(labelName)) { + _latedefWarning(type, labelName, token); + } + + // defining with a var or a function when a block scope variable of the same name + // is in scope is an error + if (scopeManagerInst.funct.has(labelName, { onlyBlockscoped: true })) { + warning("E011", token, labelName); + } else if (state.option.shadow !== true) { + // now since we didn't get any block scope variables, test for var/function + // shadowing + if (declaredInCurrentFunctionScope && labelName !== "__proto__") { + + // see https://github.com/jshint/jshint/issues/2400 + if (_currentFunctBody["(type)"] !== "global") { + warning("W004", token, labelName); + } + } + } + + scopeManagerInst.funct.add(labelName, type, token, !isexported); + + if (_currentFunctBody["(type)"] === "global") { + usedPredefinedAndGlobals[labelName] = marker; + } + } + }, + + funct: { + /** + * Returns the label type given certain options + * @param labelName + * @param {Object=} options + * @param {Boolean=} options.onlyBlockscoped - only include block scoped labels + * @param {Boolean=} options.excludeParams - exclude the param scope + * @param {Boolean=} options.excludeCurrent - exclude the current scope + * @returns {String} + */ + labeltype: function(labelName, options) { + var onlyBlockscoped = options && options.onlyBlockscoped; + var excludeParams = options && options.excludeParams; + var currentScopeIndex = _scopeStack.length - (options && options.excludeCurrent ? 2 : 1); + for (var i = currentScopeIndex; i >= 0; i--) { + var current = _scopeStack[i]; + if (current["(labels)"][labelName] && + (!onlyBlockscoped || current["(labels)"][labelName]["(blockscoped)"])) { + return current["(labels)"][labelName]["(type)"]; + } + var scopeCheck = excludeParams ? _scopeStack[ i - 1 ] : current; + if (scopeCheck && scopeCheck["(type)"] === "functionparams") { + return null; + } + } + return null; + }, + /** + * Returns if a break label exists in the function scope + * @param {string} labelName + * @returns {boolean} + */ + hasBreakLabel: function(labelName) { + for (var i = _scopeStack.length - 1; i >= 0; i--) { + var current = _scopeStack[i]; + + if (current["(breakLabels)"][labelName]) { + return true; + } + if (current["(type)"] === "functionparams") { + return false; + } + } + return false; + }, + /** + * Returns if the label is in the current function scope + * See scopeManager.funct.labelType for options + */ + has: function(labelName, options) { + return Boolean(this.labeltype(labelName, options)); + }, + + /** + * Adds a new function scoped variable + * see block.add for block scoped + */ + add: function(labelName, type, tok, unused) { + _current["(labels)"][labelName] = { + "(type)" : type, + "(token)": tok, + "(blockscoped)": false, + "(function)": _currentFunctBody, + "(unused)": unused }; + } + }, + + block: { + + /** + * is the current block global? + * @returns Boolean + */ + isGlobal: function() { + return _current["(type)"] === "global"; + }, + + use: function(labelName, token) { + + // if resolves to current function params, then do not store usage just resolve + // this is because function(a) { var a; a = a; } will resolve to the param, not + // to the unset var + // first check the param is used + var paramScope = _currentFunctBody["(parent)"]; + if (paramScope && paramScope["(labels)"][labelName] && + paramScope["(labels)"][labelName]["(type)"] === "param") { + + // then check its not declared by a block scope variable + if (!scopeManagerInst.funct.has(labelName, + { excludeParams: true, onlyBlockscoped: true })) { + paramScope["(labels)"][labelName]["(unused)"] = false; + } + } + + if (token && (state.ignored.W117 || state.option.undef === false)) { + token.ignoreUndef = true; + } + + _setupUsages(labelName); + + if (token) { + token["(function)"] = _currentFunctBody; + _current["(usages)"][labelName]["(tokens)"].push(token); + } + }, + + reassign: function(labelName, token) { + + this.modify(labelName, token); + + _current["(usages)"][labelName]["(reassigned)"].push(token); + }, + + modify: function(labelName, token) { + + _setupUsages(labelName); + + _current["(usages)"][labelName]["(modified)"].push(token); + }, + + /** + * Adds a new variable + */ + add: function(labelName, type, tok, unused) { + _current["(labels)"][labelName] = { + "(type)" : type, + "(token)": tok, + "(blockscoped)": true, + "(unused)": unused }; + }, + + addBreakLabel: function(labelName, opts) { + var token = opts.token; + if (scopeManagerInst.funct.hasBreakLabel(labelName)) { + warning("E011", token, labelName); + } + else if (state.option.shadow === "outer") { + if (scopeManagerInst.funct.has(labelName)) { + warning("W004", token, labelName); + } else { + _checkOuterShadow(labelName, token); + } + } + _current["(breakLabels)"][labelName] = token; + } + } + }; + return scopeManagerInst; +}; + +module.exports = scopeManager; + +},{"../lodash":"/node_modules/jshint/lodash.js","events":"/node_modules/browserify/node_modules/events/events.js"}],"/node_modules/jshint/src/state.js":[function(_dereq_,module,exports){ +"use strict"; +var NameStack = _dereq_("./name-stack.js"); + +var state = { + syntax: {}, + + /** + * Determine if the code currently being linted is strict mode code. + * + * @returns {boolean} + */ + isStrict: function() { + return this.directive["use strict"] || this.inClassBody || + this.option.module || this.option.strict === "implied"; + }, + + // Assumption: chronologically ES3 < ES5 < ES6 < Moz + + inMoz: function() { + return this.option.moz; + }, + + /** + * @param {boolean} strict - When `true`, only consider ES6 when in + * "esversion: 6" code and *not* in "moz". + */ + inES6: function() { + return this.option.moz || this.option.esversion >= 6; + }, + + /** + * @param {boolean} strict - When `true`, return `true` only when + * esversion is exactly 5 + */ + inES5: function(strict) { + if (strict) { + return (!this.option.esversion || this.option.esversion === 5) && !this.option.moz; + } + return !this.option.esversion || this.option.esversion >= 5 || this.option.moz; + }, + + + reset: function() { + this.tokens = { + prev: null, + next: null, + curr: null + }; + + this.option = {}; + this.funct = null; + this.ignored = {}; + this.directive = {}; + this.jsonMode = false; + this.jsonWarnings = []; + this.lines = []; + this.tab = ""; + this.cache = {}; // Node.JS doesn't have Map. Sniff. + this.ignoredLines = {}; + this.forinifcheckneeded = false; + this.nameStack = new NameStack(); + this.inClassBody = false; + } +}; + +exports.state = state; + +},{"./name-stack.js":"/node_modules/jshint/src/name-stack.js"}],"/node_modules/jshint/src/style.js":[function(_dereq_,module,exports){ +"use strict"; + +exports.register = function(linter) { + // Check for properties named __proto__. This special property was + // deprecated and then re-introduced for ES6. + + linter.on("Identifier", function style_scanProto(data) { + if (linter.getOption("proto")) { + return; + } + + if (data.name === "__proto__") { + linter.warn("W103", { + line: data.line, + char: data.char, + data: [ data.name, "6" ] + }); + } + }); + + // Check for properties named __iterator__. This is a special property + // available only in browsers with JavaScript 1.7 implementation, but + // it is deprecated for ES6 + + linter.on("Identifier", function style_scanIterator(data) { + if (linter.getOption("iterator")) { + return; + } + + if (data.name === "__iterator__") { + linter.warn("W103", { + line: data.line, + char: data.char, + data: [ data.name ] + }); + } + }); + + // Check that all identifiers are using camelCase notation. + // Exceptions: names like MY_VAR and _myVar. + + linter.on("Identifier", function style_scanCamelCase(data) { + if (!linter.getOption("camelcase")) { + return; + } + + if (data.name.replace(/^_+|_+$/g, "").indexOf("_") > -1 && !data.name.match(/^[A-Z0-9_]*$/)) { + linter.warn("W106", { + line: data.line, + char: data.from, + data: [ data.name ] + }); + } + }); + + // Enforce consistency in style of quoting. + + linter.on("String", function style_scanQuotes(data) { + var quotmark = linter.getOption("quotmark"); + var code; + + if (!quotmark) { + return; + } + + // If quotmark is set to 'single' warn about all double-quotes. + + if (quotmark === "single" && data.quote !== "'") { + code = "W109"; + } + + // If quotmark is set to 'double' warn about all single-quotes. + + if (quotmark === "double" && data.quote !== "\"") { + code = "W108"; + } + + // If quotmark is set to true, remember the first quotation style + // and then warn about all others. + + if (quotmark === true) { + if (!linter.getCache("quotmark")) { + linter.setCache("quotmark", data.quote); + } + + if (linter.getCache("quotmark") !== data.quote) { + code = "W110"; + } + } + + if (code) { + linter.warn(code, { + line: data.line, + char: data.char, + }); + } + }); + + linter.on("Number", function style_scanNumbers(data) { + if (data.value.charAt(0) === ".") { + // Warn about a leading decimal point. + linter.warn("W008", { + line: data.line, + char: data.char, + data: [ data.value ] + }); + } + + if (data.value.substr(data.value.length - 1) === ".") { + // Warn about a trailing decimal point. + linter.warn("W047", { + line: data.line, + char: data.char, + data: [ data.value ] + }); + } + + if (/^00+/.test(data.value)) { + // Multiple leading zeroes. + linter.warn("W046", { + line: data.line, + char: data.char, + data: [ data.value ] + }); + } + }); + + // Warn about script URLs. + + linter.on("String", function style_scanJavaScriptURLs(data) { + var re = /^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i; + + if (linter.getOption("scripturl")) { + return; + } + + if (re.test(data.value)) { + linter.warn("W107", { + line: data.line, + char: data.char + }); + } + }); +}; + +},{}],"/node_modules/jshint/src/vars.js":[function(_dereq_,module,exports){ +// jshint -W001 + +"use strict"; + +// Identifiers provided by the ECMAScript standard. + +exports.reservedVars = { + arguments : false, + NaN : false +}; + +exports.ecmaIdentifiers = { + 3: { + Array : false, + Boolean : false, + Date : false, + decodeURI : false, + decodeURIComponent : false, + encodeURI : false, + encodeURIComponent : false, + Error : false, + "eval" : false, + EvalError : false, + Function : false, + hasOwnProperty : false, + isFinite : false, + isNaN : false, + Math : false, + Number : false, + Object : false, + parseInt : false, + parseFloat : false, + RangeError : false, + ReferenceError : false, + RegExp : false, + String : false, + SyntaxError : false, + TypeError : false, + URIError : false + }, + 5: { + JSON : false + }, + 6: { + Map : false, + Promise : false, + Proxy : false, + Reflect : false, + Set : false, + Symbol : false, + WeakMap : false, + WeakSet : false + } +}; + +// Global variables commonly provided by a web browser environment. + +exports.browser = { + Audio : false, + Blob : false, + addEventListener : false, + applicationCache : false, + atob : false, + blur : false, + btoa : false, + cancelAnimationFrame : false, + CanvasGradient : false, + CanvasPattern : false, + CanvasRenderingContext2D: false, + CSS : false, + clearInterval : false, + clearTimeout : false, + close : false, + closed : false, + Comment : false, + CustomEvent : false, + DOMParser : false, + defaultStatus : false, + Document : false, + document : false, + DocumentFragment : false, + Element : false, + ElementTimeControl : false, + Event : false, + event : false, + fetch : false, + FileReader : false, + FormData : false, + focus : false, + frames : false, + getComputedStyle : false, + HTMLElement : false, + HTMLAnchorElement : false, + HTMLBaseElement : false, + HTMLBlockquoteElement: false, + HTMLBodyElement : false, + HTMLBRElement : false, + HTMLButtonElement : false, + HTMLCanvasElement : false, + HTMLCollection : false, + HTMLDirectoryElement : false, + HTMLDivElement : false, + HTMLDListElement : false, + HTMLFieldSetElement : false, + HTMLFontElement : false, + HTMLFormElement : false, + HTMLFrameElement : false, + HTMLFrameSetElement : false, + HTMLHeadElement : false, + HTMLHeadingElement : false, + HTMLHRElement : false, + HTMLHtmlElement : false, + HTMLIFrameElement : false, + HTMLImageElement : false, + HTMLInputElement : false, + HTMLIsIndexElement : false, + HTMLLabelElement : false, + HTMLLayerElement : false, + HTMLLegendElement : false, + HTMLLIElement : false, + HTMLLinkElement : false, + HTMLMapElement : false, + HTMLMenuElement : false, + HTMLMetaElement : false, + HTMLModElement : false, + HTMLObjectElement : false, + HTMLOListElement : false, + HTMLOptGroupElement : false, + HTMLOptionElement : false, + HTMLParagraphElement : false, + HTMLParamElement : false, + HTMLPreElement : false, + HTMLQuoteElement : false, + HTMLScriptElement : false, + HTMLSelectElement : false, + HTMLStyleElement : false, + HTMLTableCaptionElement: false, + HTMLTableCellElement : false, + HTMLTableColElement : false, + HTMLTableElement : false, + HTMLTableRowElement : false, + HTMLTableSectionElement: false, + HTMLTemplateElement : false, + HTMLTextAreaElement : false, + HTMLTitleElement : false, + HTMLUListElement : false, + HTMLVideoElement : false, + history : false, + Image : false, + Intl : false, + length : false, + localStorage : false, + location : false, + matchMedia : false, + MessageChannel : false, + MessageEvent : false, + MessagePort : false, + MouseEvent : false, + moveBy : false, + moveTo : false, + MutationObserver : false, + name : false, + Node : false, + NodeFilter : false, + NodeList : false, + Notification : false, + navigator : false, + onbeforeunload : true, + onblur : true, + onerror : true, + onfocus : true, + onload : true, + onresize : true, + onunload : true, + open : false, + openDatabase : false, + opener : false, + Option : false, + parent : false, + performance : false, + print : false, + Range : false, + requestAnimationFrame : false, + removeEventListener : false, + resizeBy : false, + resizeTo : false, + screen : false, + scroll : false, + scrollBy : false, + scrollTo : false, + sessionStorage : false, + setInterval : false, + setTimeout : false, + SharedWorker : false, + status : false, + SVGAElement : false, + SVGAltGlyphDefElement: false, + SVGAltGlyphElement : false, + SVGAltGlyphItemElement: false, + SVGAngle : false, + SVGAnimateColorElement: false, + SVGAnimateElement : false, + SVGAnimateMotionElement: false, + SVGAnimateTransformElement: false, + SVGAnimatedAngle : false, + SVGAnimatedBoolean : false, + SVGAnimatedEnumeration: false, + SVGAnimatedInteger : false, + SVGAnimatedLength : false, + SVGAnimatedLengthList: false, + SVGAnimatedNumber : false, + SVGAnimatedNumberList: false, + SVGAnimatedPathData : false, + SVGAnimatedPoints : false, + SVGAnimatedPreserveAspectRatio: false, + SVGAnimatedRect : false, + SVGAnimatedString : false, + SVGAnimatedTransformList: false, + SVGAnimationElement : false, + SVGCSSRule : false, + SVGCircleElement : false, + SVGClipPathElement : false, + SVGColor : false, + SVGColorProfileElement: false, + SVGColorProfileRule : false, + SVGComponentTransferFunctionElement: false, + SVGCursorElement : false, + SVGDefsElement : false, + SVGDescElement : false, + SVGDocument : false, + SVGElement : false, + SVGElementInstance : false, + SVGElementInstanceList: false, + SVGEllipseElement : false, + SVGExternalResourcesRequired: false, + SVGFEBlendElement : false, + SVGFEColorMatrixElement: false, + SVGFEComponentTransferElement: false, + SVGFECompositeElement: false, + SVGFEConvolveMatrixElement: false, + SVGFEDiffuseLightingElement: false, + SVGFEDisplacementMapElement: false, + SVGFEDistantLightElement: false, + SVGFEFloodElement : false, + SVGFEFuncAElement : false, + SVGFEFuncBElement : false, + SVGFEFuncGElement : false, + SVGFEFuncRElement : false, + SVGFEGaussianBlurElement: false, + SVGFEImageElement : false, + SVGFEMergeElement : false, + SVGFEMergeNodeElement: false, + SVGFEMorphologyElement: false, + SVGFEOffsetElement : false, + SVGFEPointLightElement: false, + SVGFESpecularLightingElement: false, + SVGFESpotLightElement: false, + SVGFETileElement : false, + SVGFETurbulenceElement: false, + SVGFilterElement : false, + SVGFilterPrimitiveStandardAttributes: false, + SVGFitToViewBox : false, + SVGFontElement : false, + SVGFontFaceElement : false, + SVGFontFaceFormatElement: false, + SVGFontFaceNameElement: false, + SVGFontFaceSrcElement: false, + SVGFontFaceUriElement: false, + SVGForeignObjectElement: false, + SVGGElement : false, + SVGGlyphElement : false, + SVGGlyphRefElement : false, + SVGGradientElement : false, + SVGHKernElement : false, + SVGICCColor : false, + SVGImageElement : false, + SVGLangSpace : false, + SVGLength : false, + SVGLengthList : false, + SVGLineElement : false, + SVGLinearGradientElement: false, + SVGLocatable : false, + SVGMPathElement : false, + SVGMarkerElement : false, + SVGMaskElement : false, + SVGMatrix : false, + SVGMetadataElement : false, + SVGMissingGlyphElement: false, + SVGNumber : false, + SVGNumberList : false, + SVGPaint : false, + SVGPathElement : false, + SVGPathSeg : false, + SVGPathSegArcAbs : false, + SVGPathSegArcRel : false, + SVGPathSegClosePath : false, + SVGPathSegCurvetoCubicAbs: false, + SVGPathSegCurvetoCubicRel: false, + SVGPathSegCurvetoCubicSmoothAbs: false, + SVGPathSegCurvetoCubicSmoothRel: false, + SVGPathSegCurvetoQuadraticAbs: false, + SVGPathSegCurvetoQuadraticRel: false, + SVGPathSegCurvetoQuadraticSmoothAbs: false, + SVGPathSegCurvetoQuadraticSmoothRel: false, + SVGPathSegLinetoAbs : false, + SVGPathSegLinetoHorizontalAbs: false, + SVGPathSegLinetoHorizontalRel: false, + SVGPathSegLinetoRel : false, + SVGPathSegLinetoVerticalAbs: false, + SVGPathSegLinetoVerticalRel: false, + SVGPathSegList : false, + SVGPathSegMovetoAbs : false, + SVGPathSegMovetoRel : false, + SVGPatternElement : false, + SVGPoint : false, + SVGPointList : false, + SVGPolygonElement : false, + SVGPolylineElement : false, + SVGPreserveAspectRatio: false, + SVGRadialGradientElement: false, + SVGRect : false, + SVGRectElement : false, + SVGRenderingIntent : false, + SVGSVGElement : false, + SVGScriptElement : false, + SVGSetElement : false, + SVGStopElement : false, + SVGStringList : false, + SVGStylable : false, + SVGStyleElement : false, + SVGSwitchElement : false, + SVGSymbolElement : false, + SVGTRefElement : false, + SVGTSpanElement : false, + SVGTests : false, + SVGTextContentElement: false, + SVGTextElement : false, + SVGTextPathElement : false, + SVGTextPositioningElement: false, + SVGTitleElement : false, + SVGTransform : false, + SVGTransformList : false, + SVGTransformable : false, + SVGURIReference : false, + SVGUnitTypes : false, + SVGUseElement : false, + SVGVKernElement : false, + SVGViewElement : false, + SVGViewSpec : false, + SVGZoomAndPan : false, + Text : false, + TextDecoder : false, + TextEncoder : false, + TimeEvent : false, + top : false, + URL : false, + WebGLActiveInfo : false, + WebGLBuffer : false, + WebGLContextEvent : false, + WebGLFramebuffer : false, + WebGLProgram : false, + WebGLRenderbuffer : false, + WebGLRenderingContext: false, + WebGLShader : false, + WebGLShaderPrecisionFormat: false, + WebGLTexture : false, + WebGLUniformLocation : false, + WebSocket : false, + window : false, + Window : false, + Worker : false, + XDomainRequest : false, + XMLHttpRequest : false, + XMLSerializer : false, + XPathEvaluator : false, + XPathException : false, + XPathExpression : false, + XPathNamespace : false, + XPathNSResolver : false, + XPathResult : false +}; + +exports.devel = { + alert : false, + confirm: false, + console: false, + Debug : false, + opera : false, + prompt : false +}; + +exports.worker = { + importScripts : true, + postMessage : true, + self : true, + FileReaderSync : true +}; + +// Widely adopted global names that are not part of ECMAScript standard +exports.nonstandard = { + escape : false, + unescape: false +}; + +// Globals provided by popular JavaScript environments. + +exports.couch = { + "require" : false, + respond : false, + getRow : false, + emit : false, + send : false, + start : false, + sum : false, + log : false, + exports : false, + module : false, + provides : false +}; + +exports.node = { + __filename : false, + __dirname : false, + GLOBAL : false, + global : false, + module : false, + require : false, + + // These globals are writeable because Node allows the following + // usage pattern: var Buffer = require("buffer").Buffer; + + Buffer : true, + console : true, + exports : true, + process : true, + setTimeout : true, + clearTimeout : true, + setInterval : true, + clearInterval : true, + setImmediate : true, // v0.9.1+ + clearImmediate: true // v0.9.1+ +}; + +exports.browserify = { + __filename : false, + __dirname : false, + global : false, + module : false, + require : false, + Buffer : true, + exports : true, + process : true +}; + +exports.phantom = { + phantom : true, + require : true, + WebPage : true, + console : true, // in examples, but undocumented + exports : true // v1.7+ +}; + +exports.qunit = { + asyncTest : false, + deepEqual : false, + equal : false, + expect : false, + module : false, + notDeepEqual : false, + notEqual : false, + notPropEqual : false, + notStrictEqual : false, + ok : false, + propEqual : false, + QUnit : false, + raises : false, + start : false, + stop : false, + strictEqual : false, + test : false, + "throws" : false +}; + +exports.rhino = { + defineClass : false, + deserialize : false, + gc : false, + help : false, + importClass : false, + importPackage: false, + "java" : false, + load : false, + loadClass : false, + Packages : false, + print : false, + quit : false, + readFile : false, + readUrl : false, + runCommand : false, + seal : false, + serialize : false, + spawn : false, + sync : false, + toint32 : false, + version : false +}; + +exports.shelljs = { + target : false, + echo : false, + exit : false, + cd : false, + pwd : false, + ls : false, + find : false, + cp : false, + rm : false, + mv : false, + mkdir : false, + test : false, + cat : false, + sed : false, + grep : false, + which : false, + dirs : false, + pushd : false, + popd : false, + env : false, + exec : false, + chmod : false, + config : false, + error : false, + tempdir : false +}; + +exports.typed = { + ArrayBuffer : false, + ArrayBufferView : false, + DataView : false, + Float32Array : false, + Float64Array : false, + Int16Array : false, + Int32Array : false, + Int8Array : false, + Uint16Array : false, + Uint32Array : false, + Uint8Array : false, + Uint8ClampedArray : false +}; + +exports.wsh = { + ActiveXObject : true, + Enumerator : true, + GetObject : true, + ScriptEngine : true, + ScriptEngineBuildVersion : true, + ScriptEngineMajorVersion : true, + ScriptEngineMinorVersion : true, + VBArray : true, + WSH : true, + WScript : true, + XDomainRequest : true +}; + +// Globals provided by popular JavaScript libraries. + +exports.dojo = { + dojo : false, + dijit : false, + dojox : false, + define : false, + "require": false +}; + +exports.jquery = { + "$" : false, + jQuery : false +}; + +exports.mootools = { + "$" : false, + "$$" : false, + Asset : false, + Browser : false, + Chain : false, + Class : false, + Color : false, + Cookie : false, + Core : false, + Document : false, + DomReady : false, + DOMEvent : false, + DOMReady : false, + Drag : false, + Element : false, + Elements : false, + Event : false, + Events : false, + Fx : false, + Group : false, + Hash : false, + HtmlTable : false, + IFrame : false, + IframeShim : false, + InputValidator: false, + instanceOf : false, + Keyboard : false, + Locale : false, + Mask : false, + MooTools : false, + Native : false, + Options : false, + OverText : false, + Request : false, + Scroller : false, + Slick : false, + Slider : false, + Sortables : false, + Spinner : false, + Swiff : false, + Tips : false, + Type : false, + typeOf : false, + URI : false, + Window : false +}; + +exports.prototypejs = { + "$" : false, + "$$" : false, + "$A" : false, + "$F" : false, + "$H" : false, + "$R" : false, + "$break" : false, + "$continue" : false, + "$w" : false, + Abstract : false, + Ajax : false, + Class : false, + Enumerable : false, + Element : false, + Event : false, + Field : false, + Form : false, + Hash : false, + Insertion : false, + ObjectRange : false, + PeriodicalExecuter: false, + Position : false, + Prototype : false, + Selector : false, + Template : false, + Toggle : false, + Try : false, + Autocompleter : false, + Builder : false, + Control : false, + Draggable : false, + Draggables : false, + Droppables : false, + Effect : false, + Sortable : false, + SortableObserver : false, + Sound : false, + Scriptaculous : false +}; + +exports.yui = { + YUI : false, + Y : false, + YUI_config: false +}; + +exports.mocha = { + // Global (for config etc.) + mocha : false, + // BDD + describe : false, + xdescribe : false, + it : false, + xit : false, + context : false, + xcontext : false, + before : false, + after : false, + beforeEach : false, + afterEach : false, + // TDD + suite : false, + test : false, + setup : false, + teardown : false, + suiteSetup : false, + suiteTeardown : false +}; + +exports.jasmine = { + jasmine : false, + describe : false, + xdescribe : false, + it : false, + xit : false, + beforeEach : false, + afterEach : false, + setFixtures : false, + loadFixtures: false, + spyOn : false, + expect : false, + // Jasmine 1.3 + runs : false, + waitsFor : false, + waits : false, + // Jasmine 2.1 + beforeAll : false, + afterAll : false, + fail : false, + fdescribe : false, + fit : false, + pending : false +}; + +},{}]},{},["/node_modules/jshint/src/jshint.js"]); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/javascript_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/javascript_highlight_rules.js new file mode 100644 index 00000000..a26af6e9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/javascript_highlight_rules.js @@ -0,0 +1,527 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +// TODO: Unicode escape sequences +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; + +var JavaScriptHighlightRules = function(options) { + // see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects + var keywordMapper = this.createKeywordMapper({ + "variable.language": + "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document" , // Pseudo + "keyword": + "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + // invalid or reserved + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", + "storage.type": + "const|let|var|function", + "constant.language": + "null|Infinity|NaN|undefined", + "support.function": + "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + + // keywords which can be followed by regular expressions + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "no_regex" : [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token : "string", + regex : "'(?=.)", + next : "qstring" + }, { + token : "string", + regex : '"(?=.)', + next : "qqstring" + }, { + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + // Sound.prototype.play = + token : [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text","keyword.operator" + ], + regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + next: "function_arguments" + }, { + // Sound.play = function() { } + token : [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + next: "function_arguments" + }, { + // play = function() { } + token : [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + next: "function_arguments" + }, { + // Sound.play = function play() { } + token : [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + // function myFunc(arg) { } + token : [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + // foobar: function() { } + token : [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + next: "function_arguments" + }, { + // : function() { } (this is for issues with 'foo': function() { }) + token : [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex : "(:)(\\s*)(function)(\\s*)(\\()", + next: "function_arguments" + }, { + // from "module-path" (this is the only case where 'from' should be a keyword) + token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", + regex : "(?:" + kwBeforeRe + ")\\b", + next : "start" + }, { + token : ["support.constant"], + regex : /that\b/ + }, { + token : ["storage.type", "punctuation.operator", "support.function.firebug"], + regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token : keywordMapper, + regex : identifierRe + }, { + token : "punctuation.operator", + regex : /[.](?![.])/, + next : "property" + }, { + token : "storage.type", + regex : /=>/ + }, { + token : "keyword.operator", + regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next : "start" + }, { + token : "punctuation.operator", + regex : /[?:,;.]/, + next : "start" + }, { + token : "paren.lparen", + regex : /[\[({]/, + next : "start" + }, { + token : "paren.rparen", + regex : /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token : "text", + regex : "\\s+" + }, { + // Sound.play = function play() { } + token : [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token : "punctuation.operator", + regex : /[.](?![.])/ + }, { + token : "support.function", + regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token : "support.function.dom", + regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token : "support.constant", + regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token : "identifier", + regex : identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + // regular expressions are only allowed after certain tokens. This + // makes sure we don't mix up regexps with the divison operator + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token : "text", + regex : "\\s+|^$", + next : "start" + }, { + // immediately return to the start mode without matching + // anything + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + // escapes + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + // flag + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + // invalid operators + token : "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + // operators + token : "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token : "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "function_arguments": [ + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "[, ]+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring" : [ + { + token : "constant.language.escape", + regex : escapedRe + }, { + token : "string", + regex : "\\\\$", + consumeLineEnd : true + }, { + token : "string", + regex : '"|$', + next : "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring" : [ + { + token : "constant.language.escape", + regex : escapedRe + }, { + token : "string", + regex : "\\\\$", + consumeLineEnd : true + }, { + token : "string", + regex : "'|$", + next : "no_regex" + }, { + defaultToken: "string" + } + ] + }; + + + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function(val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token : "string.quasi.start", + regex : /`/, + push : [{ + token : "constant.language.escape", + regex : escapedRe + }, { + token : "paren.quasi.start", + regex : /\${/, + push : "start" + }, { + token : "string.quasi.end", + regex : /`/, + next : "pop" + }, { + defaultToken: "string.quasi" + }] + }); + + if (!options || options.jsx != false) + JSX.call(this); + } + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("no_regex") ]); + + this.normalizeRules(); +}; + +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); + +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch : function(val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex : "</?" + tagRegex + "", + next: "jsxAttributes", + nextState: "jsx" + }; + this.$rules.start.unshift(jsxTag); + var jsxJsRule = { + regex: "{", + token: "paren.quasi.start", + push: "start" + }; + this.$rules.jsx = [ + jsxJsRule, + jsxTag, + {include : "reference"}, + {defaultToken: "string"} + ]; + this.$rules.jsxAttributes = [{ + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", + onMatch : function(value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{type: this.token, value: value}]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token : "entity.other.attribute-name.xml", + regex : tagRegex + }, { + token : "keyword.operator.attribute-equals.xml", + regex : "=" + }, { + token : "text.tag-whitespace.xml", + regex : "\\s+" + }, { + token : "string.attribute-value.xml", + regex : "'", + stateName : "jsx_attr_q", + push : [ + {token : "string.attribute-value.xml", regex: "'", next: "pop"}, + {include : "reference"}, + {defaultToken : "string.attribute-value.xml"} + ] + }, { + token : "string.attribute-value.xml", + regex : '"', + stateName : "jsx_attr_qq", + push : [ + {token : "string.attribute-value.xml", regex: '"', next: "pop"}, + {include : "reference"}, + {defaultToken : "string.attribute-value.xml"} + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token : "constant.language.escape.reference.xml", + regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} + +function comments(next) { + return [ + { + token : "comment", // multi line comment + regex : /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + {token : "comment", regex : "\\*\\/", next : next || "pop"}, + {defaultToken : "comment", caseInsensitive: true} + ] + }, { + token : "comment", + regex : "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + {token : "comment", regex : "$|^", next : next || "pop"}, + {defaultToken : "comment", caseInsensitive: true} + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/javascript_test.js b/plugins/node_modules/ace/lib/ace/mode/javascript_test.js new file mode 100644 index 00000000..fbe79ffb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/javascript_test.js @@ -0,0 +1,213 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var Tokenizer = require("../tokenizer").Tokenizer; +var JavaScriptMode = require("./javascript").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new JavaScriptMode(); + }, + + "test: getTokenizer() (smoke test)" : function() { + var tokenizer = this.mode.getTokenizer(); + + assert.ok(tokenizer instanceof Tokenizer); + + var tokens = tokenizer.getLineTokens("'juhu'", "start").tokens; + assert.equal("string", tokens[0].type); + }, + + "test: toggle comment lines should prepend '//' to each line" : function() { + var session = new EditSession([" abc", "cde", "fg"]); + session.setTabSize(1); + + this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal(["// abc", "// cde", "fg"].join("\n"), session.toString()); + }, + + "test: toggle comment on commented lines should remove leading '//' chars" : function() { + var session = new EditSession(["// abc", "//cde", "fg"]); + session.setTabSize(1); + + this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal([" abc", "cde", "fg"].join("\n"), session.toString()); + }, + + "test: toggle comment on all empty lines" : function() { + var session = new EditSession([" ", " ", " "]); + session.setTabSize(1); + + this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal([" // ", " // ", " "].join("\n"), session.toString()); + }, + + "test: toggle comment with empty lines" : function() { + var session = new EditSession([ + " abc", + "", + " cde", + " fg"]); + + var initial = session.toString(); + this.mode.toggleCommentLines("start", session, 0, 3); + assert.equal([ + " // abc", + "", + " // cde", + " // fg"].join("\n"), + session.toString() + ); + this.mode.toggleCommentLines("start", session, 0, 3); + assert.equal(initial, session.toString()); + }, + + "test: toggle comment lines twice should return the original text" : function() { + var session = new EditSession([" abc", "cde", "fg"]); + + this.mode.toggleCommentLines("start", session, 0, 2); + this.mode.toggleCommentLines("start", session, 0, 2); + assert.equal([" abc", "cde", "fg"].join("\n"), session.toString()); + }, + + "test: toggle comment on multiple lines with one commented line prepend '//' to each line" : function() { + var session = new EditSession([" // abc", " //cde", " fg"]); + session.setTabSize(1); + this.mode.toggleCommentLines("start", session, 0, 2); + assert.equal([" // // abc", " // //cde", " // fg"].join("\n"), session.toString()); + }, + + "test: toggle comment on a comment line with leading white space": function() { + var session = new EditSession(["//cde", " //fg"]); + + this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal(["cde", " fg"].join("\n"), session.toString()); + }, + + "test: toggle comment lines should take tabsize into account" : function() { + var session = new EditSession([" // abc", " // cde", "// fg"]); + session.setTabSize(2); + this.mode.toggleCommentLines("start", session, 0, 2); + assert.equal([" abc", " cde", " fg"].join("\n"), session.toString()); + session.setTabSize(4); + this.mode.toggleCommentLines("start", session, 0, 2); + assert.equal(["// abc", "// cde", "// fg"].join("\n"), session.toString()); + this.mode.toggleCommentLines("start", session, 0, 2); + assert.equal([" abc", " cde", " fg"].join("\n"), session.toString()); + + session.insert({row: 0, column: 0}, " "); + this.mode.toggleCommentLines("start", session, 0, 2); + assert.equal(["// abc", "// cde", "// fg"].join("\n"), session.toString()); + }, + //there doesn't seem to be any way to make this work + "!test: togglecomment on line with one space" : function() { + var session = new EditSession([" abc", " // cde", "// fg"]); + var initialValue = session + ""; + session.setTabSize(4); + this.mode.toggleCommentLines("start", session, 0, 0); + this.mode.toggleCommentLines("start", session, 0, 0); + assert.equal(initialValue, session.toString()); + }, + + "test: auto indent after opening brace" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", "if () {", " ")); + }, + + "test: auto indent after case" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", "case 'juhu':", " ")); + }, + + "test: no auto indent in object literal" : function() { + assert.equal("", this.mode.getNextLineIndent("start", "{ 'juhu':", " ")); + }, + + "test: no auto indent after opening brace in multi line comment" : function() { + assert.equal("", this.mode.getNextLineIndent("start", "/*if () {", " ")); + assert.equal(" ", this.mode.getNextLineIndent("comment", " abcd", " ")); + }, + + "test: no auto indent after opening brace in single line comment" : function() { + assert.equal("", this.mode.getNextLineIndent("start", "//if () {", " ")); + assert.equal(" ", this.mode.getNextLineIndent("start", " //if () {", " ")); + }, + + "test: no auto indent should add to existing indent" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", " if () {", " ")); + assert.equal(" ", this.mode.getNextLineIndent("start", " cde", " ")); + assert.equal(" ", this.mode.getNextLineIndent("start", "function foo(items) {", " ")); + }, + + "test: special indent in doc comments" : function() { + assert.equal(" * ", this.mode.getNextLineIndent("doc-start", "/**", " ")); + assert.equal(" * ", this.mode.getNextLineIndent("doc-start", " /**", " ")); + assert.equal(" * ", this.mode.getNextLineIndent("doc-start", " *", " ")); + assert.equal(" * ", this.mode.getNextLineIndent("doc-start", " *", " ")); + assert.equal(" ", this.mode.getNextLineIndent("doc-start", " abc", " ")); + }, + + "test: no indent after doc comments" : function() { + assert.equal("", this.mode.getNextLineIndent("doc-start", " */", " ")); + }, + + "test: trigger outdent if line is space and new text starts with closing brace" : function() { + assert.ok(this.mode.checkOutdent("start", " ", " }")); + assert.ok(!this.mode.checkOutdent("start", " a ", " }")); + assert.ok(!this.mode.checkOutdent("start", "", "}")); + assert.ok(!this.mode.checkOutdent("start", " ", "a }")); + assert.ok(!this.mode.checkOutdent("start", " }", "}")); + }, + + "test: auto outdent should indent the line with the same indent as the line with the matching opening brace" : function() { + var session = new EditSession([" function foo() {", " bla", " }"], new JavaScriptMode()); + this.mode.autoOutdent("start", session, 2); + assert.equal(" }", session.getLine(2)); + }, + + "test: no auto outdent if no matching brace is found" : function() { + var session = new EditSession([" function foo()", " bla", " }"]); + this.mode.autoOutdent("start", session, 2); + assert.equal(" }", session.getLine(2)); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/javascript_worker.js b/plugins/node_modules/ace/lib/ace/mode/javascript_worker.js new file mode 100644 index 00000000..b9743735 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/javascript_worker.js @@ -0,0 +1,185 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var lint = require("./javascript/jshint").JSHINT; + +function startRegex(arr) { + return RegExp("^(" + arr.join("|") + ")"); +} + +var disabledWarningsRe = startRegex([ + "Bad for in variable '(.+)'.", + 'Missing "use strict"' +]); +var errorsRe = startRegex([ + "Unexpected", + "Expected ", + "Confusing (plus|minus)", + "\\{a\\} unterminated regular expression", + "Unclosed ", + "Unmatched ", + "Unbegun comment", + "Bad invocation", + "Missing space after", + "Missing operator at" +]); +var infoRe = startRegex([ + "Expected an assignment", + "Bad escapement of EOL", + "Unexpected comma", + "Unexpected space", + "Missing radix parameter.", + "A leading decimal point can", + "\\['{a}'\\] is better written in dot notation.", + "'{a}' used out of scope" +]); + +var JavaScriptWorker = exports.JavaScriptWorker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(500); + this.setOptions(); +}; + +oop.inherits(JavaScriptWorker, Mirror); + +(function() { + this.setOptions = function(options) { + this.options = options || { + // undef: true, + // unused: true, + esnext: true, + moz: true, + devel: true, + browser: true, + node: true, + laxcomma: true, + laxbreak: true, + lastsemic: true, + onevar: false, + passfail: false, + maxerr: 100, + expr: true, + multistr: true, + globalstrict: true + }; + this.doc.getValue() && this.deferredUpdate.schedule(100); + }; + + this.changeOptions = function(newOptions) { + oop.mixin(this.options, newOptions); + this.doc.getValue() && this.deferredUpdate.schedule(100); + }; + + this.isValidJS = function(str) { + try { + // evaluated code can only create variables in this function + eval("throw 0;" + str); + } catch(e) { + if (e === 0) + return true; + } + return false; + }; + + this.onUpdate = function() { + var value = this.doc.getValue(); + value = value.replace(/^#!.*\n/, "\n"); + if (!value) + return this.sender.emit("annotate", []); + + var errors = []; + // jshint reports many false errors + // report them as error only if code is actually invalid + var maxErrorLevel = this.isValidJS(value) ? "warning" : "error"; + + // var start = new Date(); + lint(value, this.options, this.options.globals); + var results = lint.errors; + + var errorAdded = false; + for (var i = 0; i < results.length; i++) { + var error = results[i]; + if (!error) + continue; + var raw = error.raw; + var type = "warning"; + + if (raw == "Missing semicolon.") { + var str = error.evidence.substr(error.character); + str = str.charAt(str.search(/\S/)); + if (maxErrorLevel == "error" && str && /[\w\d{(['"]/.test(str)) { + error.reason = 'Missing ";" before statement'; + type = "error"; + } else { + type = "info"; + } + } + else if (disabledWarningsRe.test(raw)) { + continue; + } + else if (infoRe.test(raw)) { + type = "info"; + } + else if (errorsRe.test(raw)) { + errorAdded = true; + type = maxErrorLevel; + } + else if (raw == "'{a}' is not defined.") { + type = "warning"; + } + else if (raw == "'{a}' is defined but never used.") { + type = "info"; + } + + errors.push({ + row: error.line-1, + column: error.character-1, + text: error.reason, + type: type, + raw: raw + }); + + if (errorAdded) { + // break; + } + } + // console.log("lint time: " + (new Date() - start)); + + this.sender.emit("annotate", errors); + }; + +}).call(JavaScriptWorker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/javascript_worker_test.js b/plugins/node_modules/ace/lib/ace/mode/javascript_worker_test.js new file mode 100644 index 00000000..5d61fc89 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/javascript_worker_test.js @@ -0,0 +1,106 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var assert = require("../test/assertions"); +var JavaScriptWorker = require("./javascript_worker").JavaScriptWorker; + + +module.exports = { + setUp : function() { + this.sender = { + on: function() {}, + callback: function(data, id) { + this.data = data; + }, + events: [], + emit: function(type, e) { + this.events.push([type, e]); + } + }; + }, + + "test check for syntax error": function() { + var worker = new JavaScriptWorker(this.sender); + worker.setValue("Juhu Kinners"); + worker.deferredUpdate.call(); + + var error = this.sender.events[0][1][0]; + assert.equal(error.text, 'Missing ";" before statement'); + assert.equal(error.type, "error"); + assert.equal(error.row, 0); + assert.equal(error.column, 4); + }, + + "test invalid multi line string": function() { + var worker = new JavaScriptWorker(this.sender); + worker.setValue('"a\n\\nn"'); + worker.deferredUpdate.call(); + + var error = this.sender.events[0][1][0]; + assert.equal(error.text, "Unclosed string."); + assert.equal(error.type, "error"); + assert.equal(error.row, 0); + assert.equal(error.column, 2); + }, + + "test another invalid string": function() { + var worker = new JavaScriptWorker(this.sender); + worker.setValue("if('"); + worker.deferredUpdate.call(); + + var error = this.sender.events[0][1][0]; + assert.equal(error.text, "Unclosed string."); + assert.equal(error.type, "error"); + assert.equal(error.row, 0); + assert.equal(error.column, 4); + }, + + "test for each": function() { + var worker = new JavaScriptWorker(this.sender); + worker.setValue("for each(var i in x)"); + worker.deferredUpdate.call(); + + var error = this.sender.events[0][1][0]; + assert.equal(error.text, "Unexpected early end of program."); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/js_regex_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/js_regex_highlight_rules.js new file mode 100644 index 00000000..d54e2ca3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/js_regex_highlight_rules.js @@ -0,0 +1,94 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var escape = "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"; +var quantifier = "({\\d+\\b,?\\d*}|[+*?])(\\??)"; + +var JsRegexHighlightRules = function() { + this.$rules = { + "start": [{ + // operators + token : "keyword", + regex: "\\\\[bB]", + next: "no_quantifier" + }, { + token: "regexp.keyword.operator", + regex: escape + }, { + // flag + token: "string.regexp", + regex: "/\\w*", + next: "start" + }, { + token : ["string", "string.regex"], + regex: quantifier, + next: "no_quantifier" + }, { + // operators + token : "keyword", + regex: "[$^]|\\\\[bB]", + next: "no_quantifier" + }, { + // operators + token : "constant.language.escape", + regex: /\(\?[:=!]|\)|[()$^+*?]/, + next: "no_quantifier" + }, { + token : "constant.language.delimiter", + regex: /\|/, + next: "no_quantifier" + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "character_class" + }, { + token: "empty", + regex: "$", + next: "start" + } + ], + + + "character_class": [{ + regex: /\\[dDwWsS]/ + },{ + token: "markup.list", + regex: "(?:" + escape + "|.)-(?:[^\\]\\\\]|" + escape + ")" + }, { + token: "keyword", + regex: escape + }, { + token: "constant.language.escape", + regex: "]", + next: "start" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "start" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "no_quantifier":[{ + token: "invalid", + regex: quantifier + }, { + token: "invalid", + regex: "", + next: "start" + } + ] + + }; +}; + +oop.inherits(JsRegexHighlightRules, TextHighlightRules); + +exports.JsRegexHighlightRules = JsRegexHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/json.js b/plugins/node_modules/ace/lib/ace/mode/json.js new file mode 100644 index 00000000..cfb00dab --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/json.js @@ -0,0 +1,93 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; + +var Mode = function() { + this.HighlightRules = HighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); + worker.attachToDocument(session.getDocument()); + + worker.on("annotate", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + + this.$id = "ace/mode/json"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/json/json_parse.js b/plugins/node_modules/ace/lib/ace/mode/json/json_parse.js new file mode 100644 index 00000000..051ec7fa --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/json/json_parse.js @@ -0,0 +1,348 @@ +/* + http://www.JSON.org/json_parse.js + 2008-09-18 + + Public Domain. + + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + + This file creates a json_parse function. + + json_parse(text, reviver) + This method parses a JSON text to produce an object or array. + It can throw a SyntaxError exception. + + The optional reviver parameter is a function that can filter and + transform the results. It receives each of the keys and values, + and its return value is used instead of the original value. + If it returns what it received, then the structure is not modified. + If it returns undefined then the member is deleted. + + Example: + + // Parse the text. Values that look like ISO date strings will + // be converted to Date objects. + + myData = json_parse(text, function (key, value) { + var a; + if (typeof value === 'string') { + a = +/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); + if (a) { + return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], + +a[5], +a[6])); + } + } + return value; + }); + + This is a reference implementation. You are free to copy, modify, or + redistribute. + + This code should be minified before deployment. + See http://javascript.crockford.com/jsmin.html + + USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO + NOT CONTROL. +*/ + +/*members "", "\"", "\/", "\\", at, b, call, charAt, f, fromCharCode, + hasOwnProperty, message, n, name, push, r, t, text +*/ + +define(function(require, exports, module) { +"use strict"; + +// This is a function that can parse a JSON text, producing a JavaScript +// data structure. It is a simple, recursive descent parser. It does not use +// eval or regular expressions, so it can be used as a model for implementing +// a JSON parser in other languages. + +// We are defining the function inside of another function to avoid creating +// global variables. + + var at, // The index of the current character + ch, // The current character + escapee = { + '"': '"', + '\\': '\\', + '/': '/', + b: '\b', + f: '\f', + n: '\n', + r: '\r', + t: '\t' + }, + text, + + error = function (m) { + +// Call error when something is wrong. + + throw { + name: 'SyntaxError', + message: m, + at: at, + text: text + }; + }, + + next = function (c) { + +// If a c parameter is provided, verify that it matches the current character. + + if (c && c !== ch) { + error("Expected '" + c + "' instead of '" + ch + "'"); + } + +// Get the next character. When there are no more characters, +// return the empty string. + + ch = text.charAt(at); + at += 1; + return ch; + }, + + number = function () { + +// Parse a number value. + + var number, + string = ''; + + if (ch === '-') { + string = '-'; + next('-'); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + if (ch === '.') { + string += '.'; + while (next() && ch >= '0' && ch <= '9') { + string += ch; + } + } + if (ch === 'e' || ch === 'E') { + string += ch; + next(); + if (ch === '-' || ch === '+') { + string += ch; + next(); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + } + number = +string; + if (isNaN(number)) { + error("Bad number"); + } else { + return number; + } + }, + + string = function () { + +// Parse a string value. + + var hex, + i, + string = '', + uffff; + +// When parsing for string values, we must look for " and \ characters. + + if (ch === '"') { + while (next()) { + if (ch === '"') { + next(); + return string; + } else if (ch === '\\') { + next(); + if (ch === 'u') { + uffff = 0; + for (i = 0; i < 4; i += 1) { + hex = parseInt(next(), 16); + if (!isFinite(hex)) { + break; + } + uffff = uffff * 16 + hex; + } + string += String.fromCharCode(uffff); + } else if (typeof escapee[ch] === 'string') { + string += escapee[ch]; + } else { + break; + } + } else if (ch == "\n" || ch == "\r") { + break; + } else { + string += ch; + } + } + } + error("Bad string"); + }, + + white = function () { + +// Skip whitespace. + + while (ch && ch <= ' ') { + next(); + } + }, + + word = function () { + +// true, false, or null. + + switch (ch) { + case 't': + next('t'); + next('r'); + next('u'); + next('e'); + return true; + case 'f': + next('f'); + next('a'); + next('l'); + next('s'); + next('e'); + return false; + case 'n': + next('n'); + next('u'); + next('l'); + next('l'); + return null; + } + error("Unexpected '" + ch + "'"); + }, + + value, // Place holder for the value function. + + array = function () { + +// Parse an array value. + + var array = []; + + if (ch === '[') { + next('['); + white(); + if (ch === ']') { + next(']'); + return array; // empty array + } + while (ch) { + array.push(value()); + white(); + if (ch === ']') { + next(']'); + return array; + } + next(','); + white(); + } + } + error("Bad array"); + }, + + object = function () { + +// Parse an object value. + + var key, + object = {}; + + if (ch === '{') { + next('{'); + white(); + if (ch === '}') { + next('}'); + return object; // empty object + } + while (ch) { + key = string(); + white(); + next(':'); + if (Object.hasOwnProperty.call(object, key)) { + error('Duplicate key "' + key + '"'); + } + object[key] = value(); + white(); + if (ch === '}') { + next('}'); + return object; + } + next(','); + white(); + } + } + error("Bad object"); + }; + + value = function () { + +// Parse a JSON value. It could be an object, an array, a string, a number, +// or a word. + + white(); + switch (ch) { + case '{': + return object(); + case '[': + return array(); + case '"': + return string(); + case '-': + return number(); + default: + return ch >= '0' && ch <= '9' ? number() : word(); + } + }; + +// Return the json_parse function. It will have access to all of the above +// functions and variables. + + return function (source, reviver) { + var result; + + text = source; + at = 0; + ch = ' '; + result = value(); + white(); + if (ch) { + error("Syntax error"); + } + +// If there is a reviver function, we recursively walk the new structure, +// passing each name/value pair to the reviver function for possible +// transformation, starting with a temporary root object that holds the result +// in an empty key. If there is not a reviver function, we simply return the +// result. + + return typeof reviver === 'function' ? function walk(holder, key) { + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + }({'': result}, '') : result; + }; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/json_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/json_highlight_rules.js new file mode 100644 index 00000000..072a1020 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/json_highlight_rules.js @@ -0,0 +1,108 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var JsonHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + this.$rules = { + "start" : [ + { + token : "variable", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + }, { + token : "string", // single line + regex : '"', + next : "string" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : "text", // single quoted strings are not allowed + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "comment", // comments are not allowed, but who cares? + regex : "\\/\\/.*$" + }, { + token : "comment.start", // comments are not allowed, but who cares? + regex : "\\/\\*", + next : "comment" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "string" : [ + { + token : "constant.language.escape", + regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token : "string", + regex : '"|$', + next : "start" + }, { + defaultToken : "string" + } + ], + "comment" : [ + { + token : "comment.end", // comments are not allowed, but who cares? + regex : "\\*\\/", + next : "start" + }, { + defaultToken: "comment" + } + ] + }; + +}; + +oop.inherits(JsonHighlightRules, TextHighlightRules); + +exports.JsonHighlightRules = JsonHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/json_worker.js b/plugins/node_modules/ace/lib/ace/mode/json_worker.js new file mode 100644 index 00000000..168278ba --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/json_worker.js @@ -0,0 +1,67 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var parse = require("./json/json_parse"); + +var JsonWorker = exports.JsonWorker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(200); +}; + +oop.inherits(JsonWorker, Mirror); + +(function() { + + this.onUpdate = function() { + var value = this.doc.getValue(); + var errors = []; + try { + if (value) + parse(value); + } catch (e) { + var pos = this.doc.indexToPosition(e.at-1); + errors.push({ + row: pos.row, + column: pos.column, + text: e.message, + type: "error" + }); + } + this.sender.emit("annotate", errors); + }; + +}).call(JsonWorker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/json_worker_test.js b/plugins/node_modules/ace/lib/ace/mode/json_worker_test.js new file mode 100644 index 00000000..7113342d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/json_worker_test.js @@ -0,0 +1,102 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var assert = require("../test/assertions"); +var Worker = require("./json_worker").JsonWorker; + + +module.exports = { + setUp : function() { + this.sender = { + on: function() {}, + callback: function(data, id) { + this.data = data; + }, + events: [], + emit: function(type, e) { + this.events.push([type, e]); + } + }; + }, + + "test check valid json": function() { + var worker = new Worker(this.sender); + worker.setValue("{}"); + worker.deferredUpdate.call(); + + assert.equal(this.sender.events[0][1].length, 0); + }, + + "test check for syntax error": function() { + var worker = new Worker(this.sender); + worker.setValue([ + "{", + "juhu: 12", + "}" + ].join("\n")); + worker.deferredUpdate.call(); + + var event = this.sender.events[0]; + assert.equal(event[0], "annotate"); + assert.equal(event[1].length, 1); + assert.equal(event[1][0].type, "error"); + assert.equal(event[1][0].text, "Bad string"); + assert.equal(event[1][0].row, 1); + assert.equal(event[1][0].column, 0); + + }, + + "test check for syntax error at first char": function() { + var worker = new Worker(this.sender); + worker.setValue("x"); + worker.deferredUpdate.call(); + + var event = this.sender.events[0]; + assert.equal(event[0], "annotate"); + assert.equal(event[1][0].type, "error"); + assert.equal(event[1][0].text, "Unexpected 'x'"); + assert.equal(event[1][0].row, 0); + assert.equal(event[1][0].column, 0); + } + +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/jsoniq.js b/plugins/node_modules/ace/lib/ace/mode/jsoniq.js new file mode 100644 index 00000000..64dc9541 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jsoniq.js @@ -0,0 +1,203 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +define(function(require, exports, module) { +"use strict"; + +var WorkerClient = require("../worker/worker_client").WorkerClient; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JSONiqLexer = require("./xquery/jsoniq_lexer").JSONiqLexer; +var Range = require("../range").Range; +var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Anchor = require("../anchor").Anchor; + +var Mode = function() { + this.$tokenizer = new JSONiqLexer(); + this.$behaviour = new XQueryBehaviour(); + this.foldingRules = new CStyleFoldMode(); + this.$highlightRules = new TextHighlightRules(); +}; + +oop.inherits(Mode, TextMode); + +(function() { + + this.completer = { + getCompletions: function(editor, session, pos, prefix, callback) { + if (!session.$worker) + return callback(); + session.$worker.emit("complete", { data: { pos: pos, prefix: prefix } }); + session.$worker.on("complete", function(e){ + callback(null, e.data); + }); + } + }; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); + if (match) + indent += tab; + return indent; + }; + + this.checkOutdent = function(state, line, input) { + if (! /^\s+$/.test(line)) + return false; + + return /^\s*[\}\)]/.test(input); + }; + + this.autoOutdent = function(state, doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*[\}\)])/); + + if (!match) return 0; + + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({row: row, column: column}); + + if (!openBracePos || openBracePos.row == row) return 0; + + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column-1), indent); + }; + + this.toggleCommentLines = function(state, doc, startRow, endRow) { + var i, line; + var outdent = true; + var re = /^\s*\(:(.*):\)/; + + for (i=startRow; i<= endRow; i++) { + if (!re.test(doc.getLine(i))) { + outdent = false; + break; + } + } + + var range = new Range(0, 0, 0, 0); + for (i=startRow; i<= endRow; i++) { + line = doc.getLine(i); + range.start.row = i; + range.end.row = i; + range.end.column = line.length; + + doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)"); + } + }; + this.createWorker = function(session) { + + var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker"); + var that = this; + + worker.attachToDocument(session.getDocument()); + + worker.on("ok", function(e) { + session.clearAnnotations(); + }); + + worker.on("markers", function(e) { + session.clearAnnotations(); + that.addMarkers(e.data, session); + }); + + return worker; + }; + + this.removeMarkers = function(session) { + var markers = session.getMarkers(false); + for (var id in markers) { + // All language analysis' markers are prefixed with language_highlight + if (markers[id].clazz.indexOf('language_highlight_') === 0) { + session.removeMarker(id); + } + } + for (var i = 0; i < session.markerAnchors.length; i++) { + session.markerAnchors[i].detach(); + } + session.markerAnchors = []; + }; + + this.addMarkers = function(annos, mySession) { + var _self = this; + + if (!mySession.markerAnchors) mySession.markerAnchors = []; + this.removeMarkers(mySession); + mySession.languageAnnos = []; + annos.forEach(function(anno) { + // Certain annotations can temporarily be disabled + //if (_self.disabledMarkerTypes[anno.type]) + // return; + // Multi-line markers are not supported, and typically are a result from a bad error recover, ignore + //if(anno.pos.el && anno.pos.sl !== anno.pos.el) + // return; + // Using anchors here, to automaticaly move markers as text around the marker is updated + var anchor = new Anchor(mySession.getDocument(), anno.pos.sl, anno.pos.sc || 0); + mySession.markerAnchors.push(anchor); + var markerId; + var colDiff = anno.pos.ec - anno.pos.sc; + var rowDiff = anno.pos.el - anno.pos.sl; + var gutterAnno = { + guttertext: anno.message, + type: anno.level || "warning", + text: anno.message + // row will be filled in updateFloat() + }; + + function updateFloat(single) { + if (markerId) + mySession.removeMarker(markerId); + gutterAnno.row = anchor.row; + if (anno.pos.sc !== undefined && anno.pos.ec !== undefined) { + var range = new Range(anno.pos.sl, anno.pos.sc, anno.pos.el, anno.pos.ec); + //var range = Range.fromPoints(anchor.getPosition(), { + // row: anchor.row + rowDiff, + // column: anchor.column + colDiff + //}); + markerId = mySession.addMarker(range, "language_highlight_" + (anno.type ? anno.type : "default")); + } + if (single) mySession.setAnnotations(mySession.languageAnnos); + } + updateFloat(); + anchor.on("change", function() { + updateFloat(true); + }); + if (anno.message) mySession.languageAnnos.push(gutterAnno); + }); + mySession.setAnnotations(mySession.languageAnnos); + }; + + this.$id = "ace/mode/jsoniq"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/jsp.js b/plugins/node_modules/ace/lib/ace/mode/jsp.js new file mode 100644 index 00000000..c1cb0254 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jsp.js @@ -0,0 +1,55 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JspHighlightRules = require("./jsp_highlight_rules").JspHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = JspHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.$id = "ace/mode/jsp"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/jsp_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/jsp_highlight_rules.js new file mode 100644 index 00000000..6af5563a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jsp_highlight_rules.js @@ -0,0 +1,91 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; + +var JspHighlightRules = function() { + HtmlHighlightRules.call(this); + + var builtinVariables = 'request|response|out|session|' + + 'application|config|pageContext|page|Exception'; + + var keywords = 'page|include|taglib'; + + var startRules = [ + { + token : "comment", + regex : "<%--", + push : "jsp-dcomment" + }, { + token : "meta.tag", // jsp open tag + regex : "<%@?|<%=?|<%!?|<jsp:[^>]+>", + push : "jsp-start" + } + ]; + + var endRules = [ + { + token : "meta.tag", // jsp close tag + regex : "%>|<\\/jsp:[^>]+>", + next : "pop" + }, { + token: "variable.language", + regex : builtinVariables + }, { + token: "keyword", + regex : keywords + } + ]; + + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + + this.embedRules(JavaHighlightRules, "jsp-", endRules, ["start"]); + + this.addRules({ + "jsp-dcomment" : [{ + token : "comment", + regex : ".*?--%>", + next : "pop" + }] + }); + + this.normalizeRules(); +}; + +oop.inherits(JspHighlightRules, HtmlHighlightRules); + +exports.JspHighlightRules = JspHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/jssm.js b/plugins/node_modules/ace/lib/ace/mode/jssm.js new file mode 100644 index 00000000..b48b8962 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jssm.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JSSMHighlightRules = require("./jssm_highlight_rules").JSSMHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = JSSMHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + // Extra logic goes here. + this.$id = "ace/mode/jssm"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/jssm_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/jssm_highlight_rules.js new file mode 100644 index 00000000..5fd72ba5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jssm_highlight_rules.js @@ -0,0 +1,193 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from ./jssm.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var JSSMHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + token: "punctuation.definition.comment.mn", + regex: /\/\*/, + push: [{ + token: "punctuation.definition.comment.mn", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.jssm" + }], + comment: "block comment" + }, { + token: "comment.line.jssm", + regex: /\/\//, + push: [{ + token: "comment.line.jssm", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.line.jssm" + }], + comment: "block comment" + }, { + token: "entity.name.function", + regex: /\${/, + push: [{ + token: "entity.name.function", + regex: /}/, + next: "pop" + }, { + defaultToken: "keyword.other" + }], + comment: "js outcalls" + }, { + token: "constant.numeric", + regex: /[0-9]*\.[0-9]*\.[0-9]*/, + comment: "semver" + }, { + token: "constant.language.jssmLanguage", + regex: /graph_layout\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /machine_name\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /machine_version\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /jssm_version\s*:/, + comment: "jssm language tokens" + }, { + token: "keyword.control.transition.jssmArrow.legal_legal", + regex: /<->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_none", + regex: /<-/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_legal", + regex: /->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_main", + regex: /<=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_main", + regex: /=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_none", + regex: /<=/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_forced", + regex: /<~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_forced", + regex: /~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_none", + regex: /<~/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_main", + regex: /<-=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_legal", + regex: /<=->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_forced", + regex: /<-~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_legal", + regex: /<~->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_forced", + regex: /<=~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_main", + regex: /<~=>/, + comment: "transitions" + }, { + token: "constant.numeric.jssmProbability", + regex: /[0-9]+%/, + comment: "edge probability annotation" + }, { + token: "constant.character.jssmAction", + regex: /\'[^']*\'/, + comment: "action annotation" + }, { + token: "entity.name.tag.jssmLabel.doublequoted", + regex: /\"[^"]*\"/, + comment: "jssm label annotation" + }, { + token: "entity.name.tag.jssmLabel.atom", + regex: /[a-zA-Z0-9_.+&()#@!?,]/, + comment: "jssm label annotation" + }] + }; + + this.normalizeRules(); +}; + +JSSMHighlightRules.metaData = { + fileTypes: ["jssm", "jssm_state"], + name: "JSSM", + scopeName: "source.jssm" +}; + + +oop.inherits(JSSMHighlightRules, TextHighlightRules); + +exports.JSSMHighlightRules = JSSMHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/jsx.js b/plugins/node_modules/ace/lib/ace/mode/jsx.js new file mode 100644 index 00000000..2406a232 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jsx.js @@ -0,0 +1,56 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +function Mode() { + this.HighlightRules = JsxHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +} +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/jsx"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/jsx_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/jsx_highlight_rules.js new file mode 100644 index 00000000..394aed5c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/jsx_highlight_rules.js @@ -0,0 +1,119 @@ +define(function(require, exports, module) { +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var JsxHighlightRules = function() { + var keywords = lang.arrayToMap( + ("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + + "if|throw|" + + "delete|in|try|" + + "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + + "number|int|string|boolean|variant|" + + "log|assert").split("|") + ); + + var buildinConstants = lang.arrayToMap( + ("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|") + ); + + var reserved = lang.arrayToMap( + ("debugger|with|" + + "const|export|" + + "let|private|public|yield|protected|" + + "extern|native|as|operator|__fake__|__readonly__").split("|") + ); + + var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : [ + "storage.type", + "text", + "entity.name.function" + ], + regex : "(function)(\\s+)(" + identifierRe + ")" + }, { + token : function(value) { + if (value == "this") + return "variable.language"; + else if (value == "function") + return "storage.type"; + else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) + return "keyword"; + else if (buildinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) + return "language.support.class"; + else + return "identifier"; + }, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : identifierRe + }, { + token : "keyword.operator", + regex : "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "punctuation.operator", + regex : "\\?|\\:|\\,|\\;|\\." + }, { + token : "paren.lparen", + regex : "[[({<]" + }, { + token : "paren.rparen", + regex : "[\\])}>]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(JsxHighlightRules, TextHighlightRules); + +exports.JsxHighlightRules = JsxHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/julia.js b/plugins/node_modules/ace/lib/ace/mode/julia.js new file mode 100644 index 00000000..62f08c4f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/julia.js @@ -0,0 +1,63 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JuliaHighlightRules = require("./julia_highlight_rules").JuliaHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = JuliaHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "#"; + this.blockComment = ""; + this.$id = "ace/mode/julia"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/julia_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/julia_highlight_rules.js new file mode 100644 index 00000000..86f8bbeb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/julia_highlight_rules.js @@ -0,0 +1,170 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from https://raw.github.com/JuliaLang/julia/master/contrib/Julia.tmbundle/Syntaxes/Julia.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var JuliaHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { include: '#function_decl' }, + { include: '#function_call' }, + { include: '#type_decl' }, + { include: '#keyword' }, + { include: '#operator' }, + { include: '#number' }, + { include: '#string' }, + { include: '#comment' } ], + '#bracket': + [ { token: 'keyword.bracket.julia', + regex: '\\(|\\)|\\[|\\]|\\{|\\}|,' } ], + '#comment': + [ { token: + [ 'punctuation.definition.comment.julia', + 'comment.line.number-sign.julia' ], + regex: '(#)(?!\\{)(.*$)'} ], + '#function_call': + [ { token: [ 'support.function.julia', 'text' ], + regex: '([a-zA-Z0-9_]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*\\()'} ], + '#function_decl': + [ { token: [ 'keyword.other.julia', 'meta.function.julia', + 'entity.name.function.julia', 'meta.function.julia','text' ], + regex: '(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*)([(\\\\{])'} ], + '#keyword': + [ { token: 'keyword.other.julia', + regex: '\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b' }, + { token: 'keyword.control.julia', + regex: '\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b' }, + { token: 'storage.modifier.variable.julia', + regex: '\\b(?:global|local|const|export|import|importall|using)\\b' }, + { token: 'variable.macro.julia', regex: '@[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b' } ], + '#number': + [ { token: 'constant.numeric.julia', + regex: '\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b' } ], + '#operator': + [ { token: 'keyword.operator.update.julia', + regex: '=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>=' }, + { token: 'keyword.operator.ternary.julia', regex: '\\?|:' }, + { token: 'keyword.operator.boolean.julia', + regex: '\\|\\||&&|!' }, + { token: 'keyword.operator.arrow.julia', regex: '->|<-|-->' }, + { token: 'keyword.operator.relation.julia', + regex: '>|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>' }, + { token: 'keyword.operator.range.julia', regex: ':' }, + { token: 'keyword.operator.shift.julia', regex: '<<|>>' }, + { token: 'keyword.operator.bitwise.julia', regex: '\\||\\&|~' }, + { token: 'keyword.operator.arithmetic.julia', + regex: '\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^' }, + { token: 'keyword.operator.isa.julia', regex: '::' }, + { token: 'keyword.operator.dots.julia', + regex: '\\.(?=[a-zA-Z])|\\.\\.+' }, + { token: 'keyword.operator.interpolation.julia', + regex: '\\$#?(?=.)' }, + { token: [ 'variable', 'keyword.operator.transposed-variable.julia' ], + regex: '([\\w\\xff-\\u218e\\u2455-\\uffff]+)((?:\'|\\.\')*\\.?\')' }, + { token: 'text', + regex: '\\[|\\('}, + { token: [ 'text', 'keyword.operator.transposed-matrix.julia' ], + regex: "([\\]\\)])((?:'|\\.')*\\.?')"} ], + '#string': + [ { token: 'punctuation.definition.string.begin.julia', + regex: '\'', + push: + [ { token: 'punctuation.definition.string.end.julia', + regex: '\'', + next: 'pop' }, + { include: '#string_escaped_char' }, + { defaultToken: 'string.quoted.single.julia' } ] }, + { token: 'punctuation.definition.string.begin.julia', + regex: '"', + push: + [ { token: 'punctuation.definition.string.end.julia', + regex: '"', + next: 'pop' }, + { include: '#string_escaped_char' }, + { defaultToken: 'string.quoted.double.julia' } ] }, + { token: 'punctuation.definition.string.begin.julia', + regex: '\\b[\\w\\xff-\\u218e\\u2455-\\uffff]+"', + push: + [ { token: 'punctuation.definition.string.end.julia', + regex: '"[\\w\\xff-\\u218e\\u2455-\\uffff]*', + next: 'pop' }, + { include: '#string_custom_escaped_char' }, + { defaultToken: 'string.quoted.custom-double.julia' } ] }, + { token: 'punctuation.definition.string.begin.julia', + regex: '`', + push: + [ { token: 'punctuation.definition.string.end.julia', + regex: '`', + next: 'pop' }, + { include: '#string_escaped_char' }, + { defaultToken: 'string.quoted.backtick.julia' } ] } ], + '#string_custom_escaped_char': [ { token: 'constant.character.escape.julia', regex: '\\\\"' } ], + '#string_escaped_char': + [ { token: 'constant.character.escape.julia', + regex: '\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)' } ], + '#type_decl': + [ { token: + [ 'keyword.control.type.julia', + 'meta.type.julia', + 'entity.name.type.julia', + 'entity.other.inherited-class.julia', + 'punctuation.separator.inheritance.julia', + 'entity.other.inherited-class.julia' ], + regex: '(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?' }, + { token: [ 'other.typed-variable.julia', 'support.type.julia' ], + regex: '([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)' } ] }; + + this.normalizeRules(); +}; + +JuliaHighlightRules.metaData = { fileTypes: [ 'jl' ], + firstLineMatch: '^#!.*\\bjulia\\s*$', + foldingStartMarker: '^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$', + foldingStopMarker: '^\\s*(?:end)\\b.*$', + name: 'Julia', + scopeName: 'source.julia' }; + + +oop.inherits(JuliaHighlightRules, TextHighlightRules); + +exports.JuliaHighlightRules = JuliaHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/kotlin.js b/plugins/node_modules/ace/lib/ace/mode/kotlin.js new file mode 100644 index 00000000..9a0a5673 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/kotlin.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var KotlinHighlightRules = require("./kotlin_highlight_rules").KotlinHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = KotlinHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + // this.lineCommentStart = ""/\\*""; + // this.blockComment = {start: ""/*"", end: ""*/""}; + // Extra logic goes here. + this.$id = "ace/mode/kotlin"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/kotlin_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/kotlin_highlight_rules.js new file mode 100644 index 00000000..97bda177 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/kotlin_highlight_rules.js @@ -0,0 +1,663 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from Kotlin.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var KotlinHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + include: "#comments" + }, { + token: [ + "text", + "keyword.other.kotlin", + "text", + "entity.name.package.kotlin", + "text" + ], + regex: /^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*))?/ + }, { + include: "#imports" + }, { + include: "#statements" + }], + "#classes": [{ + token: "text", + regex: /(?=\s*(?:companion|class|object|interface))/, + push: [{ + token: "text", + regex: /}|(?=$)/, + next: "pop" + }, { + token: ["keyword.other.kotlin", "text"], + regex: /\b((?:companion\s*)?)(class|object|interface)\b/, + push: [{ + token: "text", + regex: /(?=<|{|\(|:)/, + next: "pop" + }, { + token: "keyword.other.kotlin", + regex: /\bobject\b/ + }, { + token: "entity.name.type.class.kotlin", + regex: /\w+/ + }] + }, { + token: "text", + regex: /</, + push: [{ + token: "text", + regex: />/, + next: "pop" + }, { + include: "#generics" + }] + }, { + token: "text", + regex: /\(/, + push: [{ + token: "text", + regex: /\)/, + next: "pop" + }, { + include: "#parameters" + }] + }, { + token: "keyword.operator.declaration.kotlin", + regex: /:/, + push: [{ + token: "text", + regex: /(?={|$)/, + next: "pop" + }, { + token: "entity.other.inherited-class.kotlin", + regex: /\w+/ + }, { + token: "text", + regex: /\(/, + push: [{ + token: "text", + regex: /\)/, + next: "pop" + }, { + include: "#expressions" + }] + }] + }, { + token: "text", + regex: /\{/, + push: [{ + token: "text", + regex: /\}/, + next: "pop" + }, { + include: "#statements" + }] + }] + }], + "#comments": [{ + token: "punctuation.definition.comment.kotlin", + regex: /\/\*/, + push: [{ + token: "punctuation.definition.comment.kotlin", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.kotlin" + }] + }, { + token: [ + "text", + "punctuation.definition.comment.kotlin", + "comment.line.double-slash.kotlin" + ], + regex: /(\s*)(\/\/)(.*$)/ + }], + "#constants": [{ + token: "constant.language.kotlin", + regex: /\b(?:true|false|null|this|super)\b/ + }, { + token: "constant.numeric.kotlin", + regex: /\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\b/ + }, { + token: "constant.other.kotlin", + regex: /\b[A-Z][A-Z0-9_]+\b/ + }], + "#expressions": [{ + token: "text", + regex: /\(/, + push: [{ + token: "text", + regex: /\)/, + next: "pop" + }, { + include: "#expressions" + }] + }, { + include: "#types" + }, { + include: "#strings" + }, { + include: "#constants" + }, { + include: "#comments" + }, { + include: "#keywords" + }], + "#functions": [{ + token: "text", + regex: /(?=\s*fun)/, + push: [{ + token: "text", + regex: /}|(?=$)/, + next: "pop" + }, { + token: "keyword.other.kotlin", + regex: /\bfun\b/, + push: [{ + token: "text", + regex: /(?=\()/, + next: "pop" + }, { + token: "text", + regex: /</, + push: [{ + token: "text", + regex: />/, + next: "pop" + }, { + include: "#generics" + }] + }, { + token: ["text", "entity.name.function.kotlin"], + regex: /((?:[\.<\?>\w]+\.)?)(\w+)/ + }] + }, { + token: "text", + regex: /\(/, + push: [{ + token: "text", + regex: /\)/, + next: "pop" + }, { + include: "#parameters" + }] + }, { + token: "keyword.operator.declaration.kotlin", + regex: /:/, + push: [{ + token: "text", + regex: /(?={|=|$)/, + next: "pop" + }, { + include: "#types" + }] + }, { + token: "text", + regex: /\{/, + push: [{ + token: "text", + regex: /(?=\})/, + next: "pop" + }, { + include: "#statements" + }] + }, { + token: "keyword.operator.assignment.kotlin", + regex: /=/, + push: [{ + token: "text", + regex: /(?=$)/, + next: "pop" + }, { + include: "#expressions" + }] + }] + }], + "#generics": [{ + token: "keyword.operator.declaration.kotlin", + regex: /:/, + push: [{ + token: "text", + regex: /(?=,|>)/, + next: "pop" + }, { + include: "#types" + }] + }, { + include: "#keywords" + }, { + token: "storage.type.generic.kotlin", + regex: /\w+/ + }], + "#getters-and-setters": [{ + token: ["entity.name.function.kotlin", "text"], + regex: /\b(get)\b(\s*\(\s*\))/, + push: [{ + token: "text", + regex: /\}|(?=\bset\b)|$/, + next: "pop" + }, { + token: "keyword.operator.assignment.kotlin", + regex: /=/, + push: [{ + token: "text", + regex: /(?=$|\bset\b)/, + next: "pop" + }, { + include: "#expressions" + }] + }, { + token: "text", + regex: /\{/, + push: [{ + token: "text", + regex: /\}/, + next: "pop" + }, { + include: "#expressions" + }] + }] + }, { + token: ["entity.name.function.kotlin", "text"], + regex: /\b(set)\b(\s*)(?=\()/, + push: [{ + token: "text", + regex: /\}|(?=\bget\b)|$/, + next: "pop" + }, { + token: "text", + regex: /\(/, + push: [{ + token: "text", + regex: /\)/, + next: "pop" + }, { + include: "#parameters" + }] + }, { + token: "keyword.operator.assignment.kotlin", + regex: /=/, + push: [{ + token: "text", + regex: /(?=$|\bset\b)/, + next: "pop" + }, { + include: "#expressions" + }] + }, { + token: "text", + regex: /\{/, + push: [{ + token: "text", + regex: /\}/, + next: "pop" + }, { + include: "#expressions" + }] + }] + }], + "#imports": [{ + token: [ + "text", + "keyword.other.kotlin", + "text", + "keyword.other.kotlin" + ], + regex: /^(\s*)(import)(\s+[^ $]+\s+)((?:as)?)/ + }], + "#keywords": [{ + token: "storage.modifier.kotlin", + regex: /\b(?:var|val|public|private|protected|abstract|final|enum|open|attribute|annotation|override|inline|var|val|vararg|lazy|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof)\b/ + }, { + token: "keyword.control.catch-exception.kotlin", + regex: /\b(?:try|catch|finally|throw)\b/ + }, { + token: "keyword.control.kotlin", + regex: /\b(?:if|else|while|for|do|return|when|where|break|continue)\b/ + }, { + token: "keyword.operator.kotlin", + regex: /\b(?:in|is|as|assert)\b/ + }, { + token: "keyword.operator.comparison.kotlin", + regex: /==|!=|===|!==|<=|>=|<|>/ + }, { + token: "keyword.operator.assignment.kotlin", + regex: /=/ + }, { + token: "keyword.operator.declaration.kotlin", + regex: /:/ + }, { + token: "keyword.operator.dot.kotlin", + regex: /\./ + }, { + token: "keyword.operator.increment-decrement.kotlin", + regex: /\-\-|\+\+/ + }, { + token: "keyword.operator.arithmetic.kotlin", + regex: /\-|\+|\*|\/|%/ + }, { + token: "keyword.operator.arithmetic.assign.kotlin", + regex: /\+=|\-=|\*=|\/=/ + }, { + token: "keyword.operator.logical.kotlin", + regex: /!|&&|\|\|/ + }, { + token: "keyword.operator.range.kotlin", + regex: /\.\./ + }, { + token: "punctuation.terminator.kotlin", + regex: /;/ + }], + "#namespaces": [{ + token: "keyword.other.kotlin", + regex: /\bnamespace\b/ + }, { + token: "text", + regex: /\{/, + push: [{ + token: "text", + regex: /\}/, + next: "pop" + }, { + include: "#statements" + }] + }], + "#parameters": [{ + token: "keyword.operator.declaration.kotlin", + regex: /:/, + push: [{ + token: "text", + regex: /(?=,|\)|=)/, + next: "pop" + }, { + include: "#types" + }] + }, { + token: "keyword.operator.declaration.kotlin", + regex: /=/, + push: [{ + token: "text", + regex: /(?=,|\))/, + next: "pop" + }, { + include: "#expressions" + }] + }, { + include: "#keywords" + }, { + token: "variable.parameter.function.kotlin", + regex: /\w+/ + }], + "#statements": [{ + include: "#namespaces" + }, { + include: "#typedefs" + }, { + include: "#classes" + }, { + include: "#functions" + }, { + include: "#variables" + }, { + include: "#getters-and-setters" + }, { + include: "#expressions" + }], + "#strings": [{ + token: "punctuation.definition.string.begin.kotlin", + regex: /"""/, + push: [{ + token: "punctuation.definition.string.end.kotlin", + regex: /"""/, + next: "pop" + }, { + token: "variable.parameter.template.kotlin", + regex: /\$\w+|\$\{[^\}]+\}/ + }, { + token: "constant.character.escape.kotlin", + regex: /\\./ + }, { + defaultToken: "string.quoted.third.kotlin" + }] + }, { + token: "punctuation.definition.string.begin.kotlin", + regex: /"/, + push: [{ + token: "punctuation.definition.string.end.kotlin", + regex: /"/, + next: "pop" + }, { + token: "variable.parameter.template.kotlin", + regex: /\$\w+|\$\{[^\}]+\}/ + }, { + token: "constant.character.escape.kotlin", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.kotlin" + }] + }, { + token: "punctuation.definition.string.begin.kotlin", + regex: /'/, + push: [{ + token: "punctuation.definition.string.end.kotlin", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.kotlin", + regex: /\\./ + }, { + defaultToken: "string.quoted.single.kotlin" + }] + }, { + token: "punctuation.definition.string.begin.kotlin", + regex: /`/, + push: [{ + token: "punctuation.definition.string.end.kotlin", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quoted.single.kotlin" + }] + }], + "#typedefs": [{ + token: "text", + regex: /(?=\s*type)/, + push: [{ + token: "text", + regex: /(?=$)/, + next: "pop" + }, { + token: "keyword.other.kotlin", + regex: /\btype\b/ + }, { + token: "text", + regex: /</, + push: [{ + token: "text", + regex: />/, + next: "pop" + }, { + include: "#generics" + }] + }, { + include: "#expressions" + }] + }], + "#types": [{ + token: "storage.type.buildin.kotlin", + regex: /\b(?:Any|Unit|String|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b/ + }, { + token: "storage.type.buildin.array.kotlin", + regex: /\b(?:IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b/ + }, { + token: [ + "storage.type.buildin.collection.kotlin", + "text" + ], + regex: /\b(Array|List|Map)(<\b)/, + push: [{ + token: "text", + regex: />/, + next: "pop" + }, { + include: "#types" + }, { + include: "#keywords" + }] + }, { + token: "text", + regex: /\w+</, + push: [{ + token: "text", + regex: />/, + next: "pop" + }, { + include: "#types" + }, { + include: "#keywords" + }] + }, { + token: ["keyword.operator.tuple.kotlin", "text"], + regex: /(#)(\()/, + push: [{ + token: "text", + regex: /\)/, + next: "pop" + }, { + include: "#expressions" + }] + }, { + token: "text", + regex: /\{/, + push: [{ + token: "text", + regex: /\}/, + next: "pop" + }, { + include: "#statements" + }] + }, { + token: "text", + regex: /\(/, + push: [{ + token: "text", + regex: /\)/, + next: "pop" + }, { + include: "#types" + }] + }, { + token: "keyword.operator.declaration.kotlin", + regex: /->/ + }], + "#variables": [{ + token: "text", + regex: /(?=\s*(?:var|val))/, + push: [{ + token: "text", + regex: /(?=:|=|$)/, + next: "pop" + }, { + token: "keyword.other.kotlin", + regex: /\b(?:var|val)\b/, + push: [{ + token: "text", + regex: /(?=:|=|$)/, + next: "pop" + }, { + token: "text", + regex: /</, + push: [{ + token: "text", + regex: />/, + next: "pop" + }, { + include: "#generics" + }] + }, { + token: ["text", "entity.name.variable.kotlin"], + regex: /((?:[\.<\?>\w]+\.)?)(\w+)/ + }] + }, { + token: "keyword.operator.declaration.kotlin", + regex: /:/, + push: [{ + token: "text", + regex: /(?==|$)/, + next: "pop" + }, { + include: "#types" + }, { + include: "#getters-and-setters" + }] + }, { + token: "keyword.operator.assignment.kotlin", + regex: /=/, + push: [{ + token: "text", + regex: /(?=$)/, + next: "pop" + }, { + include: "#expressions" + }, { + include: "#getters-and-setters" + }] + }] + }] + }; + + this.normalizeRules(); +}; + +KotlinHighlightRules.metaData = { + fileTypes: ["kt", "kts"], + name: "Kotlin", + scopeName: "source.Kotlin" +}; + + +oop.inherits(KotlinHighlightRules, TextHighlightRules); + +exports.KotlinHighlightRules = KotlinHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/latex.js b/plugins/node_modules/ace/lib/ace/mode/latex.js new file mode 100644 index 00000000..69256eae --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/latex.js @@ -0,0 +1,43 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LatexHighlightRules = require("./latex_highlight_rules").LatexHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var LatexFoldMode = require("./folding/latex").FoldMode; + +var Mode = function() { + this.HighlightRules = LatexHighlightRules; + this.foldingRules = new LatexFoldMode(); + this.$behaviour = new CstyleBehaviour({ braces: true }); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.type = "text"; + + this.lineCommentStart = "%"; + + this.$id = "ace/mode/latex"; + + this.getMatching = function(session, row, column) { + if (row == undefined) + row = session.selection.lead; + if (typeof row == "object") { + column = row.column; + row = row.row; + } + + var startToken = session.getTokenAt(row, column); + if (!startToken) + return; + if (startToken.value == "\\begin" || startToken.value == "\\end") { + return this.foldingRules.latexBlock(session, row, column, true); + } + }; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/latex_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/latex_highlight_rules.js new file mode 100644 index 00000000..1ee31977 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/latex_highlight_rules.js @@ -0,0 +1,105 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var LatexHighlightRules = function() { + + this.$rules = { + "start" : [{ + // A comment. Tex comments start with % and go to + // the end of the line + token : "comment", + regex : "%.*$" + }, { + // Documentclass and usepackage + token : ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"], + regex : "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})" + }, { + // A label + token : ["keyword","lparen", "variable.parameter", "rparen"], + regex : "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?" + }, { + // A Verbatim block + token : ["storage.type", "lparen", "variable.parameter", "rparen"], + regex : "(\\\\begin)({)(verbatim)(})", + next : "verbatim" + }, { + token : ["storage.type", "lparen", "variable.parameter", "rparen"], + regex : "(\\\\begin)({)(lstlisting)(})", + next : "lstlisting" + }, { + // A block + token : ["storage.type", "lparen", "variable.parameter", "rparen"], + regex : "(\\\\(?:begin|end))({)([\\w*]*)(})" + }, { + token : "storage.type", + regex : /\\verb\b\*?/, + next : [{ + token : ["keyword.operator", "string", "keyword.operator"], + regex : "(.)(.*?)(\\1|$)|", + next : "start" + }] + }, { + // A tex command e.g. \foo + token : "storage.type", + regex : "\\\\[a-zA-Z]+" + }, { + // Curly and square braces + token : "lparen", + regex : "[[({]" + }, { + // Curly and square braces + token : "rparen", + regex : "[\\])}]" + }, { + // Escaped character (including new line) + token : "constant.character.escape", + regex : "\\\\[^a-zA-Z]?" + }, { + // An equation + token : "string", + regex : "\\${1,2}", + next : "equation" + }], + "equation" : [{ + token : "comment", + regex : "%.*$" + }, { + token : "string", + regex : "\\${1,2}", + next : "start" + }, { + token : "constant.character.escape", + regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" + }, { + token : "error", + regex : "^\\s*$", + next : "start" + }, { + defaultToken : "string" + }], + "verbatim": [{ + token : ["storage.type", "lparen", "variable.parameter", "rparen"], + regex : "(\\\\end)({)(verbatim)(})", + next : "start" + }, { + defaultToken : "text" + }], + "lstlisting": [{ + token : ["storage.type", "lparen", "variable.parameter", "rparen"], + regex : "(\\\\end)({)(lstlisting)(})", + next : "start" + }, { + defaultToken : "text" + }] + }; + + this.normalizeRules(); +}; +oop.inherits(LatexHighlightRules, TextHighlightRules); + +exports.LatexHighlightRules = LatexHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/less.js b/plugins/node_modules/ace/lib/ace/mode/less.js new file mode 100644 index 00000000..0607614d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/less.js @@ -0,0 +1,92 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +// var CssCompletions = require("./css_completions").CssCompletions; + +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = LessHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + // this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + // ignore braces in comments + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.getCompletions = function(state, session, pos, prefix) { + // CSS completions only work with single (not nested) rulesets + return this.$completer.getCompletions("ruleset", session, pos, prefix); + }; + + this.$id = "ace/mode/less"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/less_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/less_highlight_rules.js new file mode 100644 index 00000000..f8793e02 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/less_highlight_rules.js @@ -0,0 +1,170 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CssHighlightRules = require('./css_highlight_rules'); + +var LessHighlightRules = function() { + + + var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + + "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" + + "or|and|when|not"; + + var keywords = keywordList.split('|'); + + var properties = CssHighlightRules.supportType.split('|'); + + var keywordMapper = this.createKeywordMapper({ + "support.constant": CssHighlightRules.supportConstant, + "keyword": keywordList, + "support.constant.color": CssHighlightRules.supportConstantColor, + "support.constant.fonts": CssHighlightRules.supportConstantFonts + }, "identifier", true); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : ["constant.numeric", "keyword"], + regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" + }, { + token : "constant.numeric", // hex6 color + regex : "#[a-f0-9]{6}" + }, { + token : "constant.numeric", // hex3 color + regex : "#[a-f0-9]{3}" + }, { + token : "constant.numeric", + regex : numRe + }, { + token : ["support.function", "paren.lparen", "string", "paren.rparen"], + regex : "(url)(\\()(.*)(\\))" + }, { + token : ["support.function", "paren.lparen"], + regex : "(:extend|[a-z0-9_\\-]+)(\\()" + }, { + token : function(value) { + if (keywords.indexOf(value.toLowerCase()) > -1) + return "keyword"; + else + return "variable"; + }, + regex : "[@\\$][a-z0-9_\\-@\\$]*\\b" + }, { + token : "variable", + regex : "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" + }, { + token : function(first, second) { + if(properties.indexOf(first.toLowerCase()) > -1) { + return ["support.type.property", "text"]; + } + else { + return ["support.type.unknownProperty", "text"]; + } + }, + regex : "([a-z0-9-_]+)(\\s*:)" + }, { + token : "keyword", + regex : "&" // special case - always treat as keyword + }, { + token : keywordMapper, + regex : "\\-?[@a-z_][@a-z0-9_\\-]*" + }, { + token: "variable.language", + regex: "#[a-z0-9-_]+" + }, { + token: "variable.language", + regex: "\\.[a-z0-9-_]+" + }, { + token: "variable.language", + regex: ":[a-z_][a-z0-9-_]*" + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + token : "keyword.operator", + regex : "<|>|<=|>=|=|!=|-|%|\\+|\\*" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + }, { + caseInsensitive: true + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ] + }; + this.normalizeRules(); +}; + +oop.inherits(LessHighlightRules, TextHighlightRules); + +exports.LessHighlightRules = LessHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/liquid.js b/plugins/node_modules/ace/lib/ace/mode/liquid.js new file mode 100644 index 00000000..e20124f7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/liquid.js @@ -0,0 +1,82 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LiquidHighlightRules = require("./liquid_highlight_rules").LiquidHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + +var Mode = function() { + this.HighlightRules = LiquidHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.blockComment = {start: "<!--", end: "-->"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/liquid"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/liquid_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/liquid_highlight_rules.js new file mode 100644 index 00000000..d609bfc8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/liquid_highlight_rules.js @@ -0,0 +1,131 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + +var LiquidHighlightRules = function() { + HtmlHighlightRules.call(this); + + // see: https://developer.mozilla.org/en/Liquid/Reference/Global_Objects + var functions = ( + // Standard Filters + "date|capitalize|downcase|upcase|first|last|join|sort|map|size|escape|" + + "escape_once|strip_html|strip_newlines|newline_to_br|replace|replace_first|" + + "truncate|truncatewords|prepend|append|minus|plus|times|divided_by|split" + ); + + var keywords = ( + // Standard Tags + "capture|endcapture|case|endcase|when|comment|endcomment|" + + "cycle|for|endfor|in|reversed|if|endif|else|elsif|include|endinclude|unless|endunless|" + + // Commonly used tags + "style|text|image|widget|plugin|marker|endmarker|tablerow|endtablerow" + ); + + var builtinVariables = 'forloop|tablerowloop'; + // "forloop\\.(length|index|index0|rindex|rindex0|first|last)|limit|offset|range" + + // "tablerowloop\\.(length|index|index0|rindex|rindex0|first|last|col|col0|"+ + // "col_first|col_last)" + + var definitions = ("assign"); + + var keywordMapper = this.createKeywordMapper({ + "variable.language": builtinVariables, + "keyword": keywords, + "support.function": functions, + "keyword.definition": definitions + }, "identifier"); + + // add liquid start tags to the HTML start tags + for (var rule in this.$rules) { + this.$rules[rule].unshift({ + token : "variable", + regex : "{%", + push : "liquid-start" + }, { + token : "variable", + regex : "{{", + push : "liquid-start" + }); + } + + this.addRules({ + "liquid-start" : [{ + token: "variable", + regex: "}}", + next: "pop" + }, { + token: "variable", + regex: "%}", + next: "pop" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "/|\\*|\\-|\\+|=|!=|\\?\\:" + }, { + token : "paren.lparen", + regex : /[\[\({]/ + }, { + token : "paren.rparen", + regex : /[\])}]/ + }, { + token : "text", + regex : "\\s+" + }] + }); + + this.normalizeRules(); +}; +oop.inherits(LiquidHighlightRules, TextHighlightRules); + +exports.LiquidHighlightRules = LiquidHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/lisp.js b/plugins/node_modules/ace/lib/ace/mode/lisp.js new file mode 100644 index 00000000..24060800 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lisp.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LispHighlightRules = require("./lisp_highlight_rules").LispHighlightRules; + +var Mode = function() { + this.HighlightRules = LispHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ";"; + + this.$id = "ace/mode/lisp"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/lisp_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/lisp_highlight_rules.js new file mode 100644 index 00000000..9afbf248 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lisp_highlight_rules.js @@ -0,0 +1,124 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Garen J. Torikian <gjtorikian @ gmail DOT com> + * + * ***** END LICENSE BLOCK ***** */ + + /* + THIS FILE WAS AUTOGENERATED BY Lisp.tmlanguage (UUID: 00D451C9-6B1D-11D9-8DFA-000D93589AF6) */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var LispHighlightRules = function() { + var keywordControl = "case|do|let|loop|if|else|when"; + var keywordOperator = "eq|neq|and|or"; + var constantLanguage = "null|nil"; + var supportFunctions = "cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn"; + + var keywordMapper = this.createKeywordMapper({ + "keyword.control": keywordControl, + "keyword.operator": keywordOperator, + "constant.language": constantLanguage, + "support.function": supportFunctions + }, "identifier", true); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = + { + "start": [ + { + token : "comment", + regex : ";.*$" + }, + { + token: ["storage.type.function-type.lisp", "text", "entity.name.function.lisp"], + regex: "(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" + }, + { + token: ["punctuation.definition.constant.character.lisp", "constant.character.lisp"], + regex: "(#)((?:\\w|[\\\\+-=<>'\"&#])+)" + }, + { + token: ["punctuation.definition.variable.lisp", "variable.other.global.lisp", "punctuation.definition.variable.lisp"], + regex: "(\\*)(\\S*)(\\*)" + }, + { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, + { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, + { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token : "string", + regex : '"(?=.)', + next : "qqstring" + } + ], + "qqstring": [ + { + token: "constant.character.escape.lisp", + regex: "\\\\." + }, + { + token : "string", + regex : '[^"\\\\]+' + }, { + token : "string", + regex : "\\\\$", + next : "qqstring" + }, { + token : "string", + regex : '"|$', + next : "start" + } + ] +}; + +}; + +oop.inherits(LispHighlightRules, TextHighlightRules); + +exports.LispHighlightRules = LispHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/livescript.js b/plugins/node_modules/ace/lib/ace/mode/livescript.js new file mode 100644 index 00000000..9d4ff4fe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/livescript.js @@ -0,0 +1,231 @@ +define(function(require, exports, module){ + var identifier, LiveScriptMode, keywordend, stringfill; + identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; + exports.Mode = LiveScriptMode = (function(superclass){ + var indenter, prototype = extend$((import$(LiveScriptMode, superclass).displayName = 'LiveScriptMode', LiveScriptMode), superclass).prototype, constructor = LiveScriptMode; + function LiveScriptMode(){ + var that; + this.$tokenizer = new (require('../tokenizer')).Tokenizer(LiveScriptMode.Rules); + if (that = require('../mode/matching_brace_outdent')) { + this.$outdent = new that.MatchingBraceOutdent; + } + this.$id = "ace/mode/livescript"; + } + indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); + prototype.getNextLineIndent = function(state, line, tab){ + var indent, tokens; + indent = this.$getIndent(line); + tokens = this.$tokenizer.getLineTokens(line, state).tokens; + if (!(tokens.length && tokens[tokens.length - 1].type === 'comment')) { + if (state === 'start' && indenter.test(line)) { + indent += tab; + } + } + return indent; + }; + prototype.lineCommentStart = "#"; + prototype.blockComment = {start: "###", end: "###"}; + prototype.checkOutdent = function(state, line, input){ + var ref$; + return (ref$ = this.$outdent) != null ? ref$.checkOutdent(line, input) : void 8; + }; + prototype.autoOutdent = function(state, doc, row){ + var ref$; + return (ref$ = this.$outdent) != null ? ref$.autoOutdent(doc, row) : void 8; + }; + return LiveScriptMode; + }(require('../mode/text').Mode)); + keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; + stringfill = { + defaultToken: 'string' + }; + LiveScriptMode.Rules = { + start: [ + { + token: 'keyword', + regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend + }, { + token: 'constant.language', + regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend + }, { + token: 'invalid.illegal', + regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend + }, { + token: 'language.support.class', + regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend + }, { + token: 'language.support.function', + regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend + }, { + token: 'variable.language', + regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend + }, { + token: 'identifier', + regex: identifier + '\\s*:(?![:=])' + }, { + token: 'variable', + regex: identifier + }, { + token: 'keyword.operator', + regex: '(?:\\.{3}|\\s+\\?)' + }, { + token: 'keyword.variable', + regex: '(?:@+|::|\\.\\.)', + next: 'key' + }, { + token: 'keyword.operator', + regex: '\\.\\s*', + next: 'key' + }, { + token: 'string', + regex: '\\\\\\S[^\\s,;)}\\]]*' + }, { + token: 'string.doc', + regex: '\'\'\'', + next: 'qdoc' + }, { + token: 'string.doc', + regex: '"""', + next: 'qqdoc' + }, { + token: 'string', + regex: '\'', + next: 'qstring' + }, { + token: 'string', + regex: '"', + next: 'qqstring' + }, { + token: 'string', + regex: '`', + next: 'js' + }, { + token: 'string', + regex: '<\\[', + next: 'words' + }, { + token: 'string.regex', + regex: '//', + next: 'heregex' + }, { + token: 'comment.doc', + regex: '/\\*', + next: 'comment' + }, { + token: 'comment', + regex: '#.*' + }, { + token: 'string.regex', + regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', + next: 'key' + }, { + token: 'constant.numeric', + regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' + }, { + token: 'lparen', + regex: '[({[]' + }, { + token: 'rparen', + regex: '[)}\\]]', + next: 'key' + }, { + token: 'keyword.operator', + regex: '[\\^!|&%+\\-]+' + }, { + token: 'text', + regex: '\\s+' + } + ], + heregex: [ + { + token: 'string.regex', + regex: '.*?//[gimy$?]{0,4}', + next: 'start' + }, { + token: 'string.regex', + regex: '\\s*#{' + }, { + token: 'comment.regex', + regex: '\\s+(?:#.*)?' + }, { + defaultToken: 'string.regex' + } + ], + key: [ + { + token: 'keyword.operator', + regex: '[.?@!]+' + }, { + token: 'identifier', + regex: identifier, + next: 'start' + }, { + token: 'text', + regex: '', + next: 'start' + } + ], + comment: [ + { + token: 'comment.doc', + regex: '.*?\\*/', + next: 'start' + }, { + defaultToken: 'comment.doc' + } + ], + qdoc: [ + { + token: 'string', + regex: ".*?'''", + next: 'key' + }, stringfill + ], + qqdoc: [ + { + token: 'string', + regex: '.*?"""', + next: 'key' + }, stringfill + ], + qstring: [ + { + token: 'string', + regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', + next: 'key' + }, stringfill + ], + qqstring: [ + { + token: 'string', + regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', + next: 'key' + }, stringfill + ], + js: [ + { + token: 'string', + regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', + next: 'key' + }, stringfill + ], + words: [ + { + token: 'string', + regex: '.*?\\]>', + next: 'key' + }, stringfill + ] + }; +function extend$(sub, sup){ + function fun(){} fun.prototype = (sub.superclass = sup).prototype; + (sub.prototype = new fun).constructor = sub; + if (typeof sup.extended == 'function') sup.extended(sub); + return sub; +} +function import$(obj, src){ + var own = {}.hasOwnProperty; + for (var key in src) if (own.call(src, key)) obj[key] = src[key]; + return obj; +} +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/logiql.js b/plugins/node_modules/ace/lib/ace/mode/logiql.js new file mode 100644 index 00000000..677d3267 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/logiql.js @@ -0,0 +1,139 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LogiQLHighlightRules = require("./logiql_highlight_rules").LogiQLHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; +var TokenIterator = require("../token_iterator").TokenIterator; +var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + +var Mode = function() { + this.HighlightRules = LogiQLHighlightRules; + this.foldingRules = new FoldMode(); + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (/comment|string/.test(endState)) + return indent; + if (tokens.length && tokens[tokens.length - 1].type == "comment.single") + return indent; + + var match = line.match(); + if (/(-->|<--|<-|->|{)\s*$/.test(line)) + indent += tab; + return indent; + }; + + this.checkOutdent = function(state, line, input) { + if (this.$outdent.checkOutdent(line, input)) + return true; + + if (input !== "\n" && input !== "\r\n") + return false; + + if (!/^\s+/.test(line)) + return false; + + return true; + }; + + this.autoOutdent = function(state, doc, row) { + if (this.$outdent.autoOutdent(doc, row)) + return; + var prevLine = doc.getLine(row); + var match = prevLine.match(/^\s+/); + var column = prevLine.lastIndexOf(".") + 1; + if (!match || !row || !column) return 0; + + var line = doc.getLine(row + 1); + var startRange = this.getMatching(doc, {row: row, column: column}); + if (!startRange || startRange.start.row == row) return 0; + + column = match[0].length; + var indent = this.$getIndent(doc.getLine(startRange.start.row)); + doc.replace(new Range(row + 1, 0, row + 1, column), indent); + }; + + this.getMatching = function(session, row, column) { + if (row == undefined) + row = session.selection.lead; + if (typeof row == "object") { + column = row.column; + row = row.row; + } + + var startToken = session.getTokenAt(row, column); + var KW_START = "keyword.start", KW_END = "keyword.end"; + var tok; + if (!startToken) + return; + if (startToken.type == KW_START) { + var it = new TokenIterator(session, row, column); + it.step = it.stepForward; + } else if (startToken.type == KW_END) { + var it = new TokenIterator(session, row, column); + it.step = it.stepBackward; + } else + return; + + while (tok = it.step()) { + if (tok.type == KW_START || tok.type == KW_END) + break; + } + if (!tok || tok.type == startToken.type) + return; + + var col = it.getCurrentTokenColumn(); + var row = it.getCurrentTokenRow(); + return new Range(row, col, row, col + tok.value.length); + }; + this.$id = "ace/mode/logiql"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/logiql_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/logiql_highlight_rules.js new file mode 100644 index 00000000..4a767653 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/logiql_highlight_rules.js @@ -0,0 +1,119 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* THIS FILE WAS AUTOGENERATED FROM tool\LogicBlox.tmbundle\Syntaxes\LogicBlox.tmLanguage (UUID: 59bf5022-e261-453f-b1cb-9f9fa0712413) */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var LogiQLHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: 'comment.block', + regex: '/\\*', + push: + [ { token: 'comment.block', regex: '\\*/', next: 'pop' }, + { defaultToken: 'comment.block' } ] + //A block comment. + }, + { token: 'comment.single', + regex: '//.*' + //A single line comment. + }, + { token: 'constant.numeric', + regex: '\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?' + //An integer constant. + //Or a Real number. + }, + { token: 'string', + regex: '"', + push: + [ { token: 'string', regex: '"', next: 'pop' }, + { defaultToken: 'string' } ] + //Strings + }, + { token: 'constant.language', + regex: '\\b(true|false)\\b' + //Boolean values. + }, + { token: 'entity.name.type.logicblox', + regex: '`[a-zA-Z_:]+(\\d|\\a)*\\b' + //LogicBlox Symbol + }, + { token: 'keyword.start', regex: '->', comment: 'Constraint' }, + { token: 'keyword.start', regex: '-->', comment: 'Level 1 Constraint'}, + { token: 'keyword.start', regex: '<-', comment: 'Rule' }, + { token: 'keyword.start', regex: '<--', comment: 'Level 1 Rule' }, + { token: 'keyword.end', regex: '\\.', comment: 'Terminator' }, + { token: 'keyword.other', regex: '!', comment: 'Negation' }, + { token: 'keyword.other', regex: ',', comment: 'Conjunction' }, + { token: 'keyword.other', regex: ';', comment: 'Disjunction' }, + { token: 'keyword.operator', regex: '<=|>=|!=|<|>', comment: 'Equality'}, + { token: 'keyword.other', regex: '@', comment: 'Equality' }, + { token: 'keyword.operator', regex: '\\+|-|\\*|/', comment: 'Arithmetic operations'}, + { token: 'keyword', regex: '::', comment: 'Colon colon' }, + { token: 'support.function', + regex: '\\b(agg\\s*<<)', + push: + [ { include: '$self' }, + { token: 'support.function', + regex: '>>', + next: 'pop' } ] + //Aggregations + }, + { token: 'storage.modifier', + regex: '\\b(lang:[\\w:]*)' + //All the lang system predicates + }, + { token: [ 'storage.type', 'text' ], + regex: '(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)' + //Module keywords + }, + { token: 'entity.name', + regex: '[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))' + //A predicate name. + }, + { token: 'variable.parameter', + regex: '([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))' + //A variable to a functional predicate. + } ] }; + + this.normalizeRules(); +}; + +oop.inherits(LogiQLHighlightRules, TextHighlightRules); + +exports.LogiQLHighlightRules = LogiQLHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/logiql_test.js b/plugins/node_modules/ace/lib/ace/mode/logiql_test.js new file mode 100644 index 00000000..169fe169 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/logiql_test.js @@ -0,0 +1,98 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var LogiQLMode = require("./logiql").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new LogiQLMode(); + }, + + "test: toggle comment lines should prepend '//' to each line" : function() { + var session = new EditSession([" abc", "cde", "fg"]); + + this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal(["// abc", "// cde", "fg"].join("\n"), session.toString()); + }, + + "test: auto indent after ->" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", "parent(a, b) ->", " ")); + }, + + "test: auto indent after <--" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", "foo <-- ", " ")); + }, + + "test: no auto indent in multi line comment" : function() { + assert.equal("", this.mode.getNextLineIndent("start", "/* -->", " ")); + assert.equal(" ", this.mode.getNextLineIndent("start", " /* ->", " ")); + assert.equal(" ", this.mode.getNextLineIndent("comment.block", " abcd", " ")); + }, + + "test: no auto indent after -> in single line comment" : function() { + assert.equal("", this.mode.getNextLineIndent("start", "//->", " ")); + assert.equal(" ", this.mode.getNextLineIndent("start", " //->", " ")); + }, + + "test: trigger outdent if line ends with ." : function() { + assert.ok(this.mode.checkOutdent("start", " ", "\n")); + assert.ok(this.mode.checkOutdent("start", " a ", "\r\n")); + assert.ok(!this.mode.checkOutdent("start", "", "}")); + assert.ok(!this.mode.checkOutdent("start", " ", "a }")); + assert.ok(!this.mode.checkOutdent("start", " }", "}")); + }, + + "test: auto outdent should indent the line with the same indent as the line with the matching ->" : function() { + var session = new EditSession([" bar (a, b) ->", " foo(a)[1.2]", " bla.", " "], new LogiQLMode()); + this.mode.autoOutdent("start", session, 2); + assert.equal(" ", session.getLine(3)); + }, + + "test: no auto outdent if no matching brace is found" : function() { + var session = new EditSession([" bar (a, b) ->", " foo(a)[1.2].", " bla.", " "], new LogiQLMode()); + this.mode.autoOutdent("start", session, 2); + assert.equal(" ", session.getLine(3)); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/lsl.js b/plugins/node_modules/ace/lib/ace/mode/lsl.js new file mode 100644 index 00000000..14a67244 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lsl.js @@ -0,0 +1,92 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Rules = require("./lsl_highlight_rules").LSLHighlightRules; +var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var TextMode = require("./text").Mode; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var oop = require("../lib/oop"); + +var Mode = function() { + this.HighlightRules = Rules; + this.$outdent = new Outdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ["//"]; + + this.blockComment = { + start: "/*", + end: "*/" + }; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type === "comment.block.lsl") { + return indent; + } + + if (state === "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/lsl"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/lsl_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/lsl_highlight_rules.js new file mode 100644 index 00000000..643906c9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lsl_highlight_rules.js @@ -0,0 +1,122 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +oop.inherits(LSLHighlightRules, TextHighlightRules); + +function LSLHighlightRules() { + var keywordMapper = this.createKeywordMapper({ + "constant.language.float.lsl" : "DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI", + "constant.language.integer.lsl": "ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FALSE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_BODY_SHAPE_TYPE|OBJECT_CHARACTER_TIME|OBJECT_CLICK_ACTION|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_HOVER_HEIGHT|OBJECT_LAST_OWNER_ID|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RENDER_WEIGHT|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASS_ALWAYS|PASS_IF_NOT_HANDLED|PASS_NEVER|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PAY_DEFAULT|PAY_HIDE|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PING_PONG|PRIM_ALPHA_MODE|PRIM_ALPHA_MODE_BLEND|PRIM_ALPHA_MODE_EMISSIVE|PRIM_ALPHA_MODE_MASK|PRIM_ALPHA_MODE_NONE|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_NORMAL|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POSITION|PRIM_POS_LOCAL|PRIM_ROTATION|PRIM_ROT_LOCAL|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_SPECULAR|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BF_DEST_COLOR|PSYS_PART_BF_ONE|PSYS_PART_BF_ONE_MINUS_DEST_COLOR|PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA|PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR|PSYS_PART_BF_SOURCE_ALPHA|PSYS_PART_BF_SOURCE_COLOR|PSYS_PART_BF_ZERO|PSYS_PART_BLEND_FUNC_DEST|PSYS_PART_BLEND_FUNC_SOURCE|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_GLOW|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_RIBBON_MASK|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_GLOW|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TRUE|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS|XP_ERROR_EXPERIENCES_DISABLED|XP_ERROR_EXPERIENCE_DISABLED|XP_ERROR_EXPERIENCE_SUSPENDED|XP_ERROR_INVALID_EXPERIENCE|XP_ERROR_INVALID_PARAMETERS|XP_ERROR_KEY_NOT_FOUND|XP_ERROR_MATURITY_EXCEEDED|XP_ERROR_NONE|XP_ERROR_NOT_FOUND|XP_ERROR_NOT_PERMITTED|XP_ERROR_NO_EXPERIENCE|XP_ERROR_QUOTA_EXCEEDED|XP_ERROR_RETRY_UPDATE|XP_ERROR_STORAGE_EXCEPTION|XP_ERROR_STORE_DISABLED|XP_ERROR_THROTTLED|XP_ERROR_UNKNOWN_ERROR", + "constant.language.integer.boolean.lsl" : "FALSE|TRUE", + "constant.language.quaternion.lsl" : "ZERO_ROTATION", + "constant.language.string.lsl" : "EOF|JSON_ARRAY|JSON_DELETE|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED", + "constant.language.vector.lsl" : "TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR", + "invalid.broken.lsl": "LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH", + "invalid.deprecated.lsl" : "ATTACH_LPEC|ATTACH_RPEC|DATA_RATING|OBJECT_ATTACHMENT_GEOMETRY_BYTES|OBJECT_ATTACHMENT_SURFACE_AREA|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llClearExperiencePermissions|llCloud|llGetExperienceList|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect", + "invalid.illegal.lsl": "event", + "invalid.unimplemented.lsl": "CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_EXPERIENCE|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PSYS_SRC_OBJ_REL_MASK|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera", + "reserved.godmode.lsl": "llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask", + "reserved.log.lsl" : "print", + "keyword.control.lsl" : "do|else|for|if|jump|return|while", + "storage.type.lsl" : "float|integer|key|list|quaternion|rotation|string|vector", + "support.function.lsl": "llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAgentInExperience|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCSV2List|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateKeyValue|llCreateLink|llDataSizeKeyValue|llDeleteCharacter|llDeleteKeyValue|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llEvade|llExecCharacterCmd|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetAttachedList|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetExperienceDetails|llGetExperienceErrorMessage|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGMTclock|llGetGeometricCenter|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMaxScaleFactor|llGetMemoryLimit|llGetMinScaleFactor|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimMediaParams|llGetPrimitiveParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFPS|llGetRegionFlags|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetSPMaxMemory|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llKeyCountKeyValue|llKeysKeyValue|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llListen|llListenControl|llListenRemove|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llMD5String|llManageEstateAccess|llMapDestination|llMessageLinked|llMinEventDelay|llModPow|llModifyLand|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llReadKeyValue|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestExperiencePermissions|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRotateTexture|llRound|llSHA1String|llSameGroup|llSay|llScaleByFactor|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimMediaParams|llSetPrimitiveParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnSit|llUnescapeURL|llUpdateCharacter|llUpdateKeyValue|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64", + "support.function.event.lsl" : "at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|experience_permissions|experience_permissions_denied|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result" + }, "identifier"); + + this.$rules = { + "start" : [ + { + token : "comment.line.double-slash.lsl", + regex : "\\/\\/.*$" + }, { + token : "comment.block.begin.lsl", + regex : "\\/\\*", + next : "comment" + }, { + token : "string.quoted.double.lsl", + start : '"', + end : '"', + next : [{ + token : "constant.character.escape.lsl", + regex : /\\[tn"\\]/ + }] + }, { + token : "constant.numeric.lsl", + regex : "(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b" + }, { + token : "entity.name.state.lsl", + regex : "\\b((state)\\s+[A-Za-z_]\\w*|default)\\b" + }, { + token : keywordMapper, + regex : "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token : "support.function.user-defined.lsl", + regex : /\b([a-zA-Z_]\w*)(?=\(.*?\))/ + }, { + token : "keyword.operator.lsl", + regex : "\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?" + }, { + token : "invalid.illegal.keyword.operator.lsl", + regex : ":=?" + }, { + token : "punctuation.operator.lsl", + regex : "\\,|\\;" + }, { + token : "paren.lparen.lsl", + regex : "[\\[\\(\\{]" + }, { + token : "paren.rparen.lsl", + regex : "[\\]\\)\\}]" + }, { + token : "text.lsl", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment.block.end.lsl", + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment.block.lsl" + } + ] + }; + this.normalizeRules(); +} + +exports.LSLHighlightRules = LSLHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/lua.js b/plugins/node_modules/ace/lib/ace/mode/lua.js new file mode 100644 index 00000000..51c9304c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lua.js @@ -0,0 +1,169 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; +var LuaFoldMode = require("./folding/lua").FoldMode; +var Range = require("../range").Range; +var WorkerClient = require("../worker/worker_client").WorkerClient; + +var Mode = function() { + this.HighlightRules = LuaHighlightRules; + + this.foldingRules = new LuaFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "--"; + this.blockComment = {start: "--[", end: "]--"}; + + var indentKeywords = { + "function": 1, + "then": 1, + "do": 1, + "else": 1, + "elseif": 1, + "repeat": 1, + "end": -1, + "until": -1 + }; + var outdentKeywords = [ + "else", + "elseif", + "end", + "until" + ]; + + function getNetIndentLevel(tokens) { + var level = 0; + // Support single-line blocks by decrementing the indent level if + // an ending token is found + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token.type == "keyword") { + if (token.value in indentKeywords) { + level += indentKeywords[token.value]; + } + } else if (token.type == "paren.lparen") { + level += token.value.length; + } else if (token.type == "paren.rparen") { + level -= token.value.length; + } + } + // Limit the level to +/- 1 since usually users only indent one level + // at a time regardless of the logical nesting level + if (level < 0) { + return -1; + } else if (level > 0) { + return 1; + } else { + return 0; + } + } + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + var level = 0; + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (state == "start") { + level = getNetIndentLevel(tokens); + } + if (level > 0) { + return indent + tab; + } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { + // Don't do a next-line outdent if we're going to do a real outdent of this line + if (!this.checkOutdent(state, line, "\n")) { + return indent.substr(0, indent.length - tab.length); + } + } + return indent; + }; + + this.checkOutdent = function(state, line, input) { + if (input != "\n" && input != "\r" && input != "\r\n") + return false; + + if (line.match(/^\s*[\)\}\]]$/)) + return true; + + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + + if (!tokens || !tokens.length) + return false; + + return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1); + }; + + this.autoOutdent = function(state, session, row) { + var prevLine = session.getLine(row - 1); + var prevIndent = this.$getIndent(prevLine).length; + var prevTokens = this.getTokenizer().getLineTokens(prevLine, "start").tokens; + var tabLength = session.getTabString().length; + var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens); + var curIndent = this.$getIndent(session.getLine(row)).length; + if (curIndent <= expectedIndent) { + // User already outdented // + return; + } + session.outdentRows(new Range(row, 0, row + 2, 0)); + }; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/lua_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + + worker.on("annotate", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/lua"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + + diff --git a/plugins/node_modules/ace/lib/ace/mode/lua/luaparse.js b/plugins/node_modules/ace/lib/ace/mode/lua/luaparse.js new file mode 100644 index 00000000..9be01838 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lua/luaparse.js @@ -0,0 +1,1989 @@ +define(function(require, exports, module) { +/*global exports:true module:true require:true define:true global:true */ + +(function (root, name, factory) { + factory(exports) +}(this, 'luaparse', function (exports) { + 'use strict'; + + exports.version = '0.1.4'; + + var input, options, length; + + // Options can be set either globally on the parser object through + // defaultOptions, or during the parse call. + var defaultOptions = exports.defaultOptions = { + // Explicitly tell the parser when the input ends. + wait: false + // Store comments as an array in the chunk object. + , comments: true + // Track identifier scopes by adding an isLocal attribute to each + // identifier-node. + , scope: false + // Store location information on each syntax node as + // `loc: { start: { line, column }, end: { line, column } }`. + , locations: false + // Store the start and end character locations on each syntax node as + // `range: [start, end]`. + , ranges: false + }; + + // The available tokens expressed as enum flags so they can be checked with + // bitwise operations. + + var EOF = 1, StringLiteral = 2, Keyword = 4, Identifier = 8 + , NumericLiteral = 16, Punctuator = 32, BooleanLiteral = 64 + , NilLiteral = 128, VarargLiteral = 256; + + exports.tokenTypes = { EOF: EOF, StringLiteral: StringLiteral + , Keyword: Keyword, Identifier: Identifier, NumericLiteral: NumericLiteral + , Punctuator: Punctuator, BooleanLiteral: BooleanLiteral + , NilLiteral: NilLiteral, VarargLiteral: VarargLiteral + }; + + // As this parser is a bit different from luas own, the error messages + // will be different in some situations. + + var errors = exports.errors = { + unexpected: 'Unexpected %1 \'%2\' near \'%3\'' + , expected: '\'%1\' expected near \'%2\'' + , expectedToken: '%1 expected near \'%2\'' + , unfinishedString: 'unfinished string near \'%1\'' + , malformedNumber: 'malformed number near \'%1\'' + }; + + // ### Abstract Syntax Tree + // + // The default AST structure is inspired by the Mozilla Parser API but can + // easily be customized by overriding these functions. + + var ast = exports.ast = { + labelStatement: function(label) { + return { + type: 'LabelStatement' + , label: label + }; + } + + , breakStatement: function() { + return { + type: 'BreakStatement' + }; + } + + , gotoStatement: function(label) { + return { + type: 'GotoStatement' + , label: label + }; + } + + , returnStatement: function(args) { + return { + type: 'ReturnStatement' + , 'arguments': args + }; + } + + , ifStatement: function(clauses) { + return { + type: 'IfStatement' + , clauses: clauses + }; + } + , ifClause: function(condition, body) { + return { + type: 'IfClause' + , condition: condition + , body: body + }; + } + , elseifClause: function(condition, body) { + return { + type: 'ElseifClause' + , condition: condition + , body: body + }; + } + , elseClause: function(body) { + return { + type: 'ElseClause' + , body: body + }; + } + + , whileStatement: function(condition, body) { + return { + type: 'WhileStatement' + , condition: condition + , body: body + }; + } + + , doStatement: function(body) { + return { + type: 'DoStatement' + , body: body + }; + } + + , repeatStatement: function(condition, body) { + return { + type: 'RepeatStatement' + , condition: condition + , body: body + }; + } + + , localStatement: function(variables, init) { + return { + type: 'LocalStatement' + , variables: variables + , init: init + }; + } + + , assignmentStatement: function(variables, init) { + return { + type: 'AssignmentStatement' + , variables: variables + , init: init + }; + } + + , callStatement: function(expression) { + return { + type: 'CallStatement' + , expression: expression + }; + } + + , functionStatement: function(identifier, parameters, isLocal, body) { + return { + type: 'FunctionDeclaration' + , identifier: identifier + , isLocal: isLocal + , parameters: parameters + , body: body + }; + } + + , forNumericStatement: function(variable, start, end, step, body) { + return { + type: 'ForNumericStatement' + , variable: variable + , start: start + , end: end + , step: step + , body: body + }; + } + + , forGenericStatement: function(variables, iterators, body) { + return { + type: 'ForGenericStatement' + , variables: variables + , iterators: iterators + , body: body + }; + } + + , chunk: function(body) { + return { + type: 'Chunk' + , body: body + }; + } + + , identifier: function(name) { + return { + type: 'Identifier' + , name: name + }; + } + + , literal: function(type, value, raw) { + type = (type === StringLiteral) ? 'StringLiteral' + : (type === NumericLiteral) ? 'NumericLiteral' + : (type === BooleanLiteral) ? 'BooleanLiteral' + : (type === NilLiteral) ? 'NilLiteral' + : 'VarargLiteral'; + + return { + type: type + , value: value + , raw: raw + }; + } + + , tableKey: function(key, value) { + return { + type: 'TableKey' + , key: key + , value: value + }; + } + , tableKeyString: function(key, value) { + return { + type: 'TableKeyString' + , key: key + , value: value + }; + } + , tableValue: function(value) { + return { + type: 'TableValue' + , value: value + }; + } + + + , tableConstructorExpression: function(fields) { + return { + type: 'TableConstructorExpression' + , fields: fields + }; + } + , binaryExpression: function(operator, left, right) { + var type = ('and' === operator || 'or' === operator) ? + 'LogicalExpression' : + 'BinaryExpression'; + + return { + type: type + , operator: operator + , left: left + , right: right + }; + } + , unaryExpression: function(operator, argument) { + return { + type: 'UnaryExpression' + , operator: operator + , argument: argument + }; + } + , memberExpression: function(base, indexer, identifier) { + return { + type: 'MemberExpression' + , indexer: indexer + , identifier: identifier + , base: base + }; + } + + , indexExpression: function(base, index) { + return { + type: 'IndexExpression' + , base: base + , index: index + }; + } + + , callExpression: function(base, args) { + return { + type: 'CallExpression' + , base: base + , 'arguments': args + }; + } + + , tableCallExpression: function(base, args) { + return { + type: 'TableCallExpression' + , base: base + , 'arguments': args + }; + } + + , stringCallExpression: function(base, argument) { + return { + type: 'StringCallExpression' + , base: base + , argument: argument + }; + } + + , comment: function(value, raw) { + return { + type: 'Comment' + , value: value + , raw: raw + }; + } + }; + + // Wrap up the node object. + + function finishNode(node) { + // Pop a `Marker` off the location-array and attach its location data. + if (trackLocations) { + var location = locations.pop(); + location.complete(); + if (options.locations) node.loc = location.loc; + if (options.ranges) node.range = location.range; + } + return node; + } + + + + // Helpers + // ------- + + var slice = Array.prototype.slice + , toString = Object.prototype.toString + , indexOf = function indexOf(array, element) { + for (var i = 0, length = array.length; i < length; i++) { + if (array[i] === element) return i; + } + return -1; + }; + + // Iterate through an array of objects and return the index of an object + // with a matching property. + + function indexOfObject(array, property, element) { + for (var i = 0, length = array.length; i < length; i++) { + if (array[i][property] === element) return i; + } + return -1; + } + + // A sprintf implementation using %index (beginning at 1) to input + // arguments in the format string. + // + // Example: + // + // // Unexpected function in token + // sprintf('Unexpected %2 in %1.', 'token', 'function'); + + function sprintf(format) { + var args = slice.call(arguments, 1); + format = format.replace(/%(\d)/g, function (match, index) { + return '' + args[index - 1] || ''; + }); + return format; + } + + // Returns a new object with the properties from all objectes passed as + // arguments. Last argument takes precedence. + // + // Example: + // + // this.options = extend(options, { output: false }); + + function extend() { + var args = slice.call(arguments) + , dest = {} + , src, prop; + + for (var i = 0, length = args.length; i < length; i++) { + src = args[i]; + for (prop in src) if (src.hasOwnProperty(prop)) { + dest[prop] = src[prop]; + } + } + return dest; + } + + // ### Error functions + + // #### Raise an exception. + // + // Raise an exception by passing a token, a string format and its paramters. + // + // The passed tokens location will automatically be added to the error + // message if it exists, if not it will default to the lexers current + // position. + // + // Example: + // + // // [1:0] expected [ near ( + // raise(token, "expected %1 near %2", '[', token.value); + + function raise(token) { + var message = sprintf.apply(null, slice.call(arguments, 1)) + , error, col; + + if ('undefined' !== typeof token.line) { + col = token.range[0] - token.lineStart; + error = new SyntaxError(sprintf('[%1:%2] %3', token.line, col, message)); + error.line = token.line; + error.index = token.range[0]; + error.column = col; + } else { + col = index - lineStart + 1; + error = new SyntaxError(sprintf('[%1:%2] %3', line, col, message)); + error.index = index; + error.line = line; + error.column = col; + } + throw error; + } + + // #### Raise an unexpected token error. + // + // Example: + // + // // expected <name> near '0' + // raiseUnexpectedToken('<name>', token); + + function raiseUnexpectedToken(type, token) { + raise(token, errors.expectedToken, type, token.value); + } + + // #### Raise a general unexpected error + // + // Usage should pass either a token object or a symbol string which was + // expected. We can also specify a nearby token such as <eof>, this will + // default to the currently active token. + // + // Example: + // + // // Unexpected symbol 'end' near '<eof>' + // unexpected(token); + // + // If there's no token in the buffer it means we have reached <eof>. + + function unexpected(found, near) { + if ('undefined' === typeof near) near = lookahead.value; + if ('undefined' !== typeof found.type) { + var type; + switch (found.type) { + case StringLiteral: type = 'string'; break; + case Keyword: type = 'keyword'; break; + case Identifier: type = 'identifier'; break; + case NumericLiteral: type = 'number'; break; + case Punctuator: type = 'symbol'; break; + case BooleanLiteral: type = 'boolean'; break; + case NilLiteral: + return raise(found, errors.unexpected, 'symbol', 'nil', near); + } + return raise(found, errors.unexpected, type, found.value, near); + } + return raise(found, errors.unexpected, 'symbol', found, near); + } + + // Lexer + // ----- + // + // The lexer, or the tokenizer reads the input string character by character + // and derives a token left-right. To be as efficient as possible the lexer + // prioritizes the common cases such as identifiers. It also works with + // character codes instead of characters as string comparisons was the + // biggest bottleneck of the parser. + // + // If `options.comments` is enabled, all comments encountered will be stored + // in an array which later will be appended to the chunk object. If disabled, + // they will simply be disregarded. + // + // When the lexer has derived a valid token, it will be returned as an object + // containing its value and as well as its position in the input string (this + // is always enabled to provide proper debug messages). + // + // `lex()` starts lexing and returns the following token in the stream. + + var index + , token + , previousToken + , lookahead + , comments + , tokenStart + , line + , lineStart; + + exports.lex = lex; + + function lex() { + skipWhiteSpace(); + + // Skip comments beginning with -- + while (45 === input.charCodeAt(index) && + 45 === input.charCodeAt(index + 1)) { + scanComment(); + skipWhiteSpace(); + } + if (index >= length) return { + type : EOF + , value: '<eof>' + , line: line + , lineStart: lineStart + , range: [index, index] + }; + + var charCode = input.charCodeAt(index) + , next = input.charCodeAt(index + 1); + + // Memorize the range index where the token begins. + tokenStart = index; + if (isIdentifierStart(charCode)) return scanIdentifierOrKeyword(); + + switch (charCode) { + case 39: case 34: // '" + return scanStringLiteral(); + + // 0-9 + case 48: case 49: case 50: case 51: case 52: case 53: + case 54: case 55: case 56: case 57: + return scanNumericLiteral(); + + case 46: // . + // If the dot is followed by a digit it's a float. + if (isDecDigit(next)) return scanNumericLiteral(); + if (46 === next) { + if (46 === input.charCodeAt(index + 2)) return scanVarargLiteral(); + return scanPunctuator('..'); + } + return scanPunctuator('.'); + + case 61: // = + if (61 === next) return scanPunctuator('=='); + return scanPunctuator('='); + + case 62: // > + if (61 === next) return scanPunctuator('>='); + return scanPunctuator('>'); + + case 60: // < + if (61 === next) return scanPunctuator('<='); + return scanPunctuator('<'); + + case 126: // ~ + if (61 === next) return scanPunctuator('~='); + return scanPunctuator('~'); + + case 58: // : + if (58 === next) return scanPunctuator('::'); + return scanPunctuator(':'); + + case 91: // [ + // Check for a multiline string, they begin with [= or [[ + if (91 === next || 61 === next) return scanLongStringLiteral(); + return scanPunctuator('['); + + // \* / ^ % , { } ] ( ) ; # - + + case 42: case 47: case 94: case 37: case 44: case 123: case 125: + case 93: case 40: case 41: case 59: case 35: case 45: case 43: + return scanPunctuator(input.charAt(index)); + } + + return unexpected(input.charAt(index)); + } + + // Whitespace has no semantic meaning in lua so simply skip ahead while + // tracking the encounted newlines. Newlines are also tracked in all + // token functions where multiline values are allowed. + + function skipWhiteSpace() { + while (index < length) { + var charCode = input.charCodeAt(index); + if (isWhiteSpace(charCode)) { + index++; + } else if (isLineTerminator(charCode)) { + line++; + lineStart = ++index; + } else { + break; + } + } + } + + // Identifiers, keywords, booleans and nil all look the same syntax wise. We + // simply go through them one by one and defaulting to an identifier if no + // previous case matched. + + function scanIdentifierOrKeyword() { + var value, type; + + // Slicing the input string is prefered before string concatenation in a + // loop for performance reasons. + while (isIdentifierPart(input.charCodeAt(++index))); + value = input.slice(tokenStart, index); + + // Decide on the token type and possibly cast the value. + if (isKeyword(value)) { + type = Keyword; + } else if ('true' === value || 'false' === value) { + type = BooleanLiteral; + value = ('true' === value); + } else if ('nil' === value) { + type = NilLiteral; + value = null; + } else { + type = Identifier; + } + + return { + type: type + , value: value + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + // Once a punctuator reaches this function it should already have been + // validated so we simply return it as a token. + + function scanPunctuator(value) { + index += value.length; + return { + type: Punctuator + , value: value + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + // A vararg literal consists of three dots. + + function scanVarargLiteral() { + index += 3; + return { + type: VarargLiteral + , value: '...' + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + // Find the string literal by matching the delimiter marks used. + + function scanStringLiteral() { + var delimiter = input.charCodeAt(index++) + , stringStart = index + , string = '' + , charCode; + + while (index < length) { + charCode = input.charCodeAt(index++); + if (delimiter === charCode) break; + if (92 === charCode) { // \ + string += input.slice(stringStart, index - 1) + readEscapeSequence(); + stringStart = index; + } + // EOF or `\n` terminates a string literal. If we haven't found the + // ending delimiter by now, raise an exception. + else if (index >= length || isLineTerminator(charCode)) { + string += input.slice(stringStart, index - 1); + raise({}, errors.unfinishedString, string + String.fromCharCode(charCode)); + } + } + string += input.slice(stringStart, index - 1); + + return { + type: StringLiteral + , value: string + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + // Expect a multiline string literal and return it as a regular string + // literal, if it doesn't validate into a valid multiline string, throw an + // exception. + + function scanLongStringLiteral() { + var string = readLongString(); + // Fail if it's not a multiline literal. + if (false === string) raise(token, errors.expected, '[', token.value); + + return { + type: StringLiteral + , value: string + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + // Numeric literals will be returned as floating-point numbers instead of + // strings. The raw value should be retrieved from slicing the input string + // later on in the process. + // + // If a hexadecimal number is encountered, it will be converted. + + function scanNumericLiteral() { + var character = input.charAt(index) + , next = input.charAt(index + 1); + + var value = ('0' === character && 'xX'.indexOf(next || null) >= 0) ? + readHexLiteral() : readDecLiteral(); + + return { + type: NumericLiteral + , value: value + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + // Lua hexadecimals have an optional fraction part and an optional binary + // exoponent part. These are not included in JavaScript so we will compute + // all three parts separately and then sum them up at the end of the function + // with the following algorithm. + // + // Digit := toDec(digit) + // Fraction := toDec(fraction) / 16 ^ fractionCount + // BinaryExp := 2 ^ binaryExp + // Number := ( Digit + Fraction ) * BinaryExp + + function readHexLiteral() { + var fraction = 0 // defaults to 0 as it gets summed + , binaryExponent = 1 // defaults to 1 as it gets multiplied + , binarySign = 1 // positive + , digit, fractionStart, exponentStart, digitStart; + + digitStart = index += 2; // Skip 0x part + + // A minimum of one hex digit is required. + if (!isHexDigit(input.charCodeAt(index))) + raise({}, errors.malformedNumber, input.slice(tokenStart, index)); + + while (isHexDigit(input.charCodeAt(index))) index++; + // Convert the hexadecimal digit to base 10. + digit = parseInt(input.slice(digitStart, index), 16); + + // Fraction part i optional. + if ('.' === input.charAt(index)) { + fractionStart = ++index; + + while (isHexDigit(input.charCodeAt(index))) index++; + fraction = input.slice(fractionStart, index); + + // Empty fraction parts should default to 0, others should be converted + // 0.x form so we can use summation at the end. + fraction = (fractionStart === index) ? 0 + : parseInt(fraction, 16) / Math.pow(16, index - fractionStart); + } + + // Binary exponents are optional + if ('pP'.indexOf(input.charAt(index) || null) >= 0) { + index++; + + // Sign part is optional and defaults to 1 (positive). + if ('+-'.indexOf(input.charAt(index) || null) >= 0) + binarySign = ('+' === input.charAt(index++)) ? 1 : -1; + + exponentStart = index; + + // The binary exponent sign requires a decimal digit. + if (!isDecDigit(input.charCodeAt(index))) + raise({}, errors.malformedNumber, input.slice(tokenStart, index)); + + while (isDecDigit(input.charCodeAt(index))) index++; + binaryExponent = input.slice(exponentStart, index); + + // Calculate the binary exponent of the number. + binaryExponent = Math.pow(2, binaryExponent * binarySign); + } + + return (digit + fraction) * binaryExponent; + } + + // Decimal numbers are exactly the same in Lua and in JavaScript, because of + // this we check where the token ends and then parse it with native + // functions. + + function readDecLiteral() { + while (isDecDigit(input.charCodeAt(index))) index++; + // Fraction part is optional + if ('.' === input.charAt(index)) { + index++; + // Fraction part defaults to 0 + while (isDecDigit(input.charCodeAt(index))) index++; + } + // Exponent part is optional. + if ('eE'.indexOf(input.charAt(index) || null) >= 0) { + index++; + // Sign part is optional. + if ('+-'.indexOf(input.charAt(index) || null) >= 0) index++; + // An exponent is required to contain at least one decimal digit. + if (!isDecDigit(input.charCodeAt(index))) + raise({}, errors.malformedNumber, input.slice(tokenStart, index)); + + while (isDecDigit(input.charCodeAt(index))) index++; + } + + return parseFloat(input.slice(tokenStart, index)); + } + + + // Translate escape sequences to the actual characters. + + function readEscapeSequence() { + var sequenceStart = index; + switch (input.charAt(index)) { + // Lua allow the following escape sequences. + // We don't escape the bell sequence. + case 'n': index++; return '\n'; + case 'r': index++; return '\r'; + case 't': index++; return '\t'; + case 'v': index++; return '\x0B'; + case 'b': index++; return '\b'; + case 'f': index++; return '\f'; + // Skips the following span of white-space. + case 'z': index++; skipWhiteSpace(); return ''; + // Byte representation should for now be returned as is. + case 'x': + // \xXX, where XX is a sequence of exactly two hexadecimal digits + if (isHexDigit(input.charCodeAt(index + 1)) && + isHexDigit(input.charCodeAt(index + 2))) { + index += 3; + // Return it as is, without translating the byte. + return '\\' + input.slice(sequenceStart, index); + } + return '\\' + input.charAt(index++); + default: + // \ddd, where ddd is a sequence of up to three decimal digits. + if (isDecDigit(input.charCodeAt(index))) { + while (isDecDigit(input.charCodeAt(++index))); + return '\\' + input.slice(sequenceStart, index); + } + // Simply return the \ as is, it's not escaping any sequence. + return input.charAt(index++); + } + } + + // Comments begin with -- after which it will be decided if they are + // multiline comments or not. + // + // The multiline functionality works the exact same way as with string + // literals so we reuse the functionality. + + function scanComment() { + tokenStart = index; + index += 2; // -- + + var character = input.charAt(index) + , content = '' + , isLong = false + , commentStart = index + , lineStartComment = lineStart + , lineComment = line; + + if ('[' === character) { + content = readLongString(); + // This wasn't a multiline comment after all. + if (false === content) content = character; + else isLong = true; + } + // Scan until next line as long as it's not a multiline comment. + if (!isLong) { + while (index < length) { + if (isLineTerminator(input.charCodeAt(index))) break; + index++; + } + if (options.comments) content = input.slice(commentStart, index); + } + + if (options.comments) { + var node = ast.comment(content, input.slice(tokenStart, index)); + + // `Marker`s depend on tokens available in the parser and as comments are + // intercepted in the lexer all location data is set manually. + if (options.locations) { + node.loc = { + start: { line: lineComment, column: tokenStart - lineStartComment } + , end: { line: line, column: index - lineStart } + }; + } + if (options.ranges) { + node.range = [tokenStart, index]; + } + comments.push(node); + } + } + + // Read a multiline string by calculating the depth of `=` characters and + // then appending until an equal depth is found. + + function readLongString() { + var level = 0 + , content = '' + , terminator = false + , character, stringStart; + + index++; // [ + + // Calculate the depth of the comment. + while ('=' === input.charAt(index + level)) level++; + // Exit, this is not a long string afterall. + if ('[' !== input.charAt(index + level)) return false; + + index += level + 1; + + // If the first character is a newline, ignore it and begin on next line. + if (isLineTerminator(input.charCodeAt(index))) { + line++; + lineStart = index++; + } + + stringStart = index; + while (index < length) { + character = input.charAt(index++); + + // We have to keep track of newlines as `skipWhiteSpace()` does not get + // to scan this part. + if (isLineTerminator(character.charCodeAt(0))) { + line++; + lineStart = index; + } + + // Once the delimiter is found, iterate through the depth count and see + // if it matches. + if (']' === character) { + terminator = true; + for (var i = 0; i < level; i++) { + if ('=' !== input.charAt(index + i)) terminator = false; + } + if (']' !== input.charAt(index + level)) terminator = false; + } + + // We reached the end of the multiline string. Get out now. + if (terminator) break; + } + content += input.slice(stringStart, index - 1); + index += level + 1; + + return content; + } + + // ## Lex functions and helpers. + + // Read the next token. + // + // This is actually done by setting the current token to the lookahead and + // reading in the new lookahead token. + + function next() { + previousToken = token; + token = lookahead; + lookahead = lex(); + } + + // Consume a token if its value matches. Once consumed or not, return the + // success of the operation. + + function consume(value) { + if (value === token.value) { + next(); + return true; + } + return false; + } + + // Expect the next token value to match. If not, throw an exception. + + function expect(value) { + if (value === token.value) next(); + else raise(token, errors.expected, value, token.value); + } + + // ### Validation functions + + function isWhiteSpace(charCode) { + return 9 === charCode || 32 === charCode || 0xB === charCode || 0xC === charCode; + } + + function isLineTerminator(charCode) { + return 10 === charCode || 13 === charCode; + } + + function isDecDigit(charCode) { + return charCode >= 48 && charCode <= 57; + } + + function isHexDigit(charCode) { + return (charCode >= 48 && charCode <= 57) || (charCode >= 97 && charCode <= 102) || (charCode >= 65 && charCode <= 70); + } + + // From [Lua 5.2](http://www.lua.org/manual/5.2/manual.html#8.1) onwards + // identifiers cannot use locale-dependet letters. + + function isIdentifierStart(charCode) { + return (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || 95 === charCode; + } + + function isIdentifierPart(charCode) { + return (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || 95 === charCode || (charCode >= 48 && charCode <= 57); + } + + // [3.1 Lexical Conventions](http://www.lua.org/manual/5.2/manual.html#3.1) + // + // `true`, `false` and `nil` will not be considered keywords, but literals. + + function isKeyword(id) { + switch (id.length) { + case 2: + return 'do' === id || 'if' === id || 'in' === id || 'or' === id; + case 3: + return 'and' === id || 'end' === id || 'for' === id || 'not' === id; + case 4: + return 'else' === id || 'goto' === id || 'then' === id; + case 5: + return 'break' === id || 'local' === id || 'until' === id || 'while' === id; + case 6: + return 'elseif' === id || 'repeat' === id || 'return' === id; + case 8: + return 'function' === id; + } + return false; + } + + function isUnary(token) { + if (Punctuator === token.type) return '#-~'.indexOf(token.value) >= 0; + if (Keyword === token.type) return 'not' === token.value; + return false; + } + + // @TODO this needs to be rethought. + function isCallExpression(expression) { + switch (expression.type) { + case 'CallExpression': + case 'TableCallExpression': + case 'StringCallExpression': + return true; + } + return false; + } + + // Check if the token syntactically closes a block. + + function isBlockFollow(token) { + if (EOF === token.type) return true; + if (Keyword !== token.type) return false; + switch (token.value) { + case 'else': case 'elseif': + case 'end': case 'until': + return true; + default: + return false; + } + } + + // Scope + // ----- + + // Store each block scope as a an array of identifier names. Each scope is + // stored in an FILO-array. + var scopes + // The current scope index + , scopeDepth + // A list of all global identifier nodes. + , globals; + + // Create a new scope inheriting all declarations from the previous scope. + function createScope() { + scopes.push(Array.apply(null, scopes[scopeDepth++])); + } + + // Exit and remove the current scope. + function exitScope() { + scopes.pop(); + scopeDepth--; + } + + // Add identifier name to the current scope if it doesnt already exist. + function scopeIdentifierName(name) { + if (-1 !== indexOf(scopes[scopeDepth], name)) return; + scopes[scopeDepth].push(name); + } + + // Add identifier to the current scope + function scopeIdentifier(node) { + scopeIdentifierName(node.name); + attachScope(node, true); + } + + // Attach scope information to node. If the node is global, store it in the + // globals array so we can return the information to the user. + function attachScope(node, isLocal) { + if (!isLocal && -1 === indexOfObject(globals, 'name', node.name)) + globals.push(node); + + node.isLocal = isLocal; + } + + // Is the identifier name available in this scope. + function scopeHasName(name) { + return (-1 !== indexOf(scopes[scopeDepth], name)); + } + + // Location tracking + // ----------------- + // + // Locations are stored in FILO-array as a `Marker` object consisting of both + // `loc` and `range` data. Once a `Marker` is popped off the list an end + // location is added and the data is attached to a syntax node. + + var locations = [] + , trackLocations; + + function createLocationMarker() { + return new Marker(token); + } + + function Marker(token) { + if (options.locations) { + this.loc = { + start: { + line: token.line + , column: token.range[0] - token.lineStart + } + , end: { + line: 0 + , column: 0 + } + }; + } + if (options.ranges) this.range = [token.range[0], 0]; + } + + // Complete the location data stored in the `Marker` by adding the location + // of the *previous token* as an end location. + Marker.prototype.complete = function() { + if (options.locations) { + this.loc.end.line = previousToken.line; + this.loc.end.column = previousToken.range[1] - previousToken.lineStart; + } + if (options.ranges) { + this.range[1] = previousToken.range[1]; + } + }; + + // Create a new `Marker` and add it to the FILO-array. + function markLocation() { + if (trackLocations) locations.push(createLocationMarker()); + } + + // Push an arbitrary `Marker` object onto the FILO-array. + function pushLocation(marker) { + if (trackLocations) locations.push(marker); + } + + // Parse functions + // --------------- + + // Chunk is the main program object. Syntactically it's the same as a block. + // + // chunk ::= block + + function parseChunk() { + next(); + markLocation(); + var body = parseBlock(); + if (EOF !== token.type) unexpected(token); + // If the body is empty no previousToken exists when finishNode runs. + if (trackLocations && !body.length) previousToken = token; + return finishNode(ast.chunk(body)); + } + + // A block contains a list of statements with an optional return statement + // as its last statement. + // + // block ::= {stat} [retstat] + + function parseBlock(terminator) { + var block = [] + , statement; + + // Each block creates a new scope. + if (options.scope) createScope(); + + while (!isBlockFollow(token)) { + // Return has to be the last statement in a block. + if ('return' === token.value) { + block.push(parseStatement()); + break; + } + statement = parseStatement(); + // Statements are only added if they are returned, this allows us to + // ignore some statements, such as EmptyStatement. + if (statement) block.push(statement); + } + + if (options.scope) exitScope(); + // Doesn't really need an ast node + return block; + } + + // There are two types of statements, simple and compound. + // + // statement ::= break | goto | do | while | repeat | return + // | if | for | function | local | label | assignment + // | functioncall | ';' + + function parseStatement() { + markLocation(); + if (Keyword === token.type) { + switch (token.value) { + case 'local': next(); return parseLocalStatement(); + case 'if': next(); return parseIfStatement(); + case 'return': next(); return parseReturnStatement(); + case 'function': next(); + var name = parseFunctionName(); + return parseFunctionDeclaration(name); + case 'while': next(); return parseWhileStatement(); + case 'for': next(); return parseForStatement(); + case 'repeat': next(); return parseRepeatStatement(); + case 'break': next(); return parseBreakStatement(); + case 'do': next(); return parseDoStatement(); + case 'goto': next(); return parseGotoStatement(); + } + } + + if (Punctuator === token.type) { + if (consume('::')) return parseLabelStatement(); + } + // Assignments memorizes the location and pushes it manually for wrapper + // nodes. Additionally empty `;` statements should not mark a location. + if (trackLocations) locations.pop(); + + // When a `;` is encounted, simply eat it without storing it. + if (consume(';')) return; + + return parseAssignmentOrCallStatement(); + } + + // ## Statements + + // label ::= '::' Name '::' + + function parseLabelStatement() { + var name = token.value + , label = parseIdentifier(); + + if (options.scope) { + scopeIdentifierName('::' + name + '::'); + attachScope(label, true); + } + + expect('::'); + return finishNode(ast.labelStatement(label)); + } + + // break ::= 'break' + + function parseBreakStatement() { + return finishNode(ast.breakStatement()); + } + + // goto ::= 'goto' Name + + function parseGotoStatement() { + var name = token.value + , label = parseIdentifier(); + + if (options.scope) label.isLabel = scopeHasName('::' + name + '::'); + return finishNode(ast.gotoStatement(label)); + } + + // do ::= 'do' block 'end' + + function parseDoStatement() { + var body = parseBlock(); + expect('end'); + return finishNode(ast.doStatement(body)); + } + + // while ::= 'while' exp 'do' block 'end' + + function parseWhileStatement() { + var condition = parseExpectedExpression(); + expect('do'); + var body = parseBlock(); + expect('end'); + return finishNode(ast.whileStatement(condition, body)); + } + + // repeat ::= 'repeat' block 'until' exp + + function parseRepeatStatement() { + var body = parseBlock(); + expect('until'); + var condition = parseExpectedExpression(); + return finishNode(ast.repeatStatement(condition, body)); + } + + // retstat ::= 'return' [exp {',' exp}] [';'] + + function parseReturnStatement() { + var expressions = []; + + if ('end' !== token.value) { + var expression = parseExpression(); + if (null != expression) expressions.push(expression); + while (consume(',')) { + expression = parseExpectedExpression(); + expressions.push(expression); + } + consume(';'); // grammar tells us ; is optional here. + } + return finishNode(ast.returnStatement(expressions)); + } + + // if ::= 'if' exp 'then' block {elif} ['else' block] 'end' + // elif ::= 'elseif' exp 'then' block + + function parseIfStatement() { + var clauses = [] + , condition + , body + , marker; + + // IfClauses begin at the same location as the parent IfStatement. + // It ends at the start of `end`, `else`, or `elseif`. + if (trackLocations) { + marker = locations[locations.length - 1]; + locations.push(marker); + } + condition = parseExpectedExpression(); + expect('then'); + body = parseBlock(); + clauses.push(finishNode(ast.ifClause(condition, body))); + + if (trackLocations) marker = createLocationMarker(); + while (consume('elseif')) { + pushLocation(marker); + condition = parseExpectedExpression(); + expect('then'); + body = parseBlock(); + clauses.push(finishNode(ast.elseifClause(condition, body))); + if (trackLocations) marker = createLocationMarker(); + } + + if (consume('else')) { + // Include the `else` in the location of ElseClause. + if (trackLocations) { + marker = new Marker(previousToken); + locations.push(marker); + } + body = parseBlock(); + clauses.push(finishNode(ast.elseClause(body))); + } + + expect('end'); + return finishNode(ast.ifStatement(clauses)); + } + + // There are two types of for statements, generic and numeric. + // + // for ::= Name '=' exp ',' exp [',' exp] 'do' block 'end' + // for ::= namelist 'in' explist 'do' block 'end' + // namelist ::= Name {',' Name} + // explist ::= exp {',' exp} + + function parseForStatement() { + var variable = parseIdentifier() + , body; + + // The start-identifier is local. + if (options.scope) scopeIdentifier(variable); + + // If the first expression is followed by a `=` punctuator, this is a + // Numeric For Statement. + if (consume('=')) { + // Start expression + var start = parseExpectedExpression(); + expect(','); + // End expression + var end = parseExpectedExpression(); + // Optional step expression + var step = consume(',') ? parseExpectedExpression() : null; + + expect('do'); + body = parseBlock(); + expect('end'); + + return finishNode(ast.forNumericStatement(variable, start, end, step, body)); + } + // If not, it's a Generic For Statement + else { + // The namelist can contain one or more identifiers. + var variables = [variable]; + while (consume(',')) { + variable = parseIdentifier(); + // Each variable in the namelist is locally scoped. + if (options.scope) scopeIdentifier(variable); + variables.push(variable); + } + expect('in'); + var iterators = []; + + // One or more expressions in the explist. + do { + var expression = parseExpectedExpression(); + iterators.push(expression); + } while (consume(',')); + + expect('do'); + body = parseBlock(); + expect('end'); + + return finishNode(ast.forGenericStatement(variables, iterators, body)); + } + } + + // Local statements can either be variable assignments or function + // definitions. If a function definition is found, it will be delegated to + // `parseFunctionDeclaration()` with the isLocal flag. + // + // This AST structure might change into a local assignment with a function + // child. + // + // local ::= 'local' 'function' Name funcdecl + // | 'local' Name {',' Name} ['=' exp {',' exp} + + function parseLocalStatement() { + var name; + + if (Identifier === token.type) { + var variables = [] + , init = []; + + do { + name = parseIdentifier(); + + variables.push(name); + } while (consume(',')); + + if (consume('=')) { + do { + var expression = parseExpectedExpression(); + init.push(expression); + } while (consume(',')); + } + + // Declarations doesn't exist before the statement has been evaluated. + // Therefore assignments can't use their declarator. And the identifiers + // shouldn't be added to the scope until the statement is complete. + if (options.scope) { + for (var i = 0, l = variables.length; i < l; i++) { + scopeIdentifier(variables[i]); + } + } + + return finishNode(ast.localStatement(variables, init)); + } + if (consume('function')) { + name = parseIdentifier(); + if (options.scope) scopeIdentifier(name); + + // MemberExpressions are not allowed in local function statements. + return parseFunctionDeclaration(name, true); + } else { + raiseUnexpectedToken('<name>', token); + } + } + + // assignment ::= varlist '=' explist + // varlist ::= prefixexp {',' prefixexp} + // explist ::= exp {',' exp} + // + // call ::= callexp + // callexp ::= prefixexp args | prefixexp ':' Name args + + function parseAssignmentOrCallStatement() { + // Keep a reference to the previous token for better error messages in case + // of invalid statement + var previous = token + , expression, marker; + + if (trackLocations) marker = createLocationMarker(); + expression = parsePrefixExpression(); + + if (null == expression) return unexpected(token); + if (',='.indexOf(token.value) >= 0) { + var variables = [expression] + , init = [] + , exp; + + while (consume(',')) { + exp = parsePrefixExpression(); + if (null == exp) raiseUnexpectedToken('<expression>', token); + variables.push(exp); + } + expect('='); + do { + exp = parseExpectedExpression(); + init.push(exp); + } while (consume(',')); + + pushLocation(marker); + return finishNode(ast.assignmentStatement(variables, init)); + } + if (isCallExpression(expression)) { + pushLocation(marker); + return finishNode(ast.callStatement(expression)); + } + // The prefix expression was neither part of an assignment or a + // callstatement, however as it was valid it's been consumed, so raise + // the exception on the previous token to provide a helpful message. + return unexpected(previous); + } + + + + // ### Non-statements + + // Identifier ::= Name + + function parseIdentifier() { + markLocation(); + var identifier = token.value; + if (Identifier !== token.type) raiseUnexpectedToken('<name>', token); + next(); + return finishNode(ast.identifier(identifier)); + } + + // Parse the functions parameters and body block. The name should already + // have been parsed and passed to this declaration function. By separating + // this we allow for anonymous functions in expressions. + // + // For local functions there's a boolean parameter which needs to be set + // when parsing the declaration. + // + // funcdecl ::= '(' [parlist] ')' block 'end' + // parlist ::= Name {',' Name} | [',' '...'] | '...' + + function parseFunctionDeclaration(name, isLocal) { + var parameters = []; + expect('('); + + // The declaration has arguments + if (!consume(')')) { + // Arguments are a comma separated list of identifiers, optionally ending + // with a vararg. + while (true) { + if (Identifier === token.type) { + var parameter = parseIdentifier(); + // Function parameters are local. + if (options.scope) scopeIdentifier(parameter); + + parameters.push(parameter); + + if (consume(',')) continue; + else if (consume(')')) break; + } + // No arguments are allowed after a vararg. + else if (VarargLiteral === token.type) { + parameters.push(parsePrimaryExpression()); + expect(')'); + break; + } else { + raiseUnexpectedToken('<name> or \'...\'', token); + } + } + } + + var body = parseBlock(); + expect('end'); + + isLocal = isLocal || false; + return finishNode(ast.functionStatement(name, parameters, isLocal, body)); + } + + // Parse the function name as identifiers and member expressions. + // + // Name {'.' Name} [':' Name] + + function parseFunctionName() { + var base, name, marker; + + if (trackLocations) marker = createLocationMarker(); + base = parseIdentifier(); + + if (options.scope) attachScope(base, false); + + while (consume('.')) { + pushLocation(marker); + name = parseIdentifier(); + if (options.scope) attachScope(name, false); + base = finishNode(ast.memberExpression(base, '.', name)); + } + + if (consume(':')) { + pushLocation(marker); + name = parseIdentifier(); + if (options.scope) attachScope(name, false); + base = finishNode(ast.memberExpression(base, ':', name)); + } + + return base; + } + + // tableconstructor ::= '{' [fieldlist] '}' + // fieldlist ::= field {fieldsep field} fieldsep + // field ::= '[' exp ']' '=' exp | Name = 'exp' | exp + // + // fieldsep ::= ',' | ';' + + function parseTableConstructor() { + var fields = [] + , key, value; + + while (true) { + markLocation(); + if (Punctuator === token.type && consume('[')) { + key = parseExpectedExpression(); + expect(']'); + expect('='); + value = parseExpectedExpression(); + fields.push(finishNode(ast.tableKey(key, value))); + } else if (Identifier === token.type) { + key = parseExpectedExpression(); + if (consume('=')) { + value = parseExpectedExpression(); + fields.push(finishNode(ast.tableKeyString(key, value))); + } else { + fields.push(finishNode(ast.tableValue(key))); + } + } else { + if (null == (value = parseExpression())) { + locations.pop(); + break; + } + fields.push(finishNode(ast.tableValue(value))); + } + if (',;'.indexOf(token.value) >= 0) { + next(); + continue; + } + if ('}' === token.value) break; + } + expect('}'); + return finishNode(ast.tableConstructorExpression(fields)); + } + + // Expression parser + // ----------------- + // + // Expressions are evaluated and always return a value. If nothing is + // matched null will be returned. + // + // exp ::= (unop exp | primary | prefixexp ) { binop exp } + // + // primary ::= nil | false | true | Number | String | '...' + // | functiondef | tableconstructor + // + // prefixexp ::= (Name | '(' exp ')' ) { '[' exp ']' + // | '.' Name | ':' Name args | args } + // + + function parseExpression() { + var expression = parseSubExpression(0); + return expression; + } + + // Parse an expression expecting it to be valid. + + function parseExpectedExpression() { + var expression = parseExpression(); + if (null == expression) raiseUnexpectedToken('<expression>', token); + else return expression; + } + + + // Return the precedence priority of the operator. + // + // As unary `-` can't be distinguished from binary `-`, unary precedence + // isn't described in this table but in `parseSubExpression()` itself. + // + // As this function gets hit on every expression it's been optimized due to + // the expensive CompareICStub which took ~8% of the parse time. + + function binaryPrecedence(operator) { + var charCode = operator.charCodeAt(0) + , length = operator.length; + + if (1 === length) { + switch (charCode) { + case 94: return 10; // ^ + case 42: case 47: case 37: return 7; // * / % + case 43: case 45: return 6; // + - + case 60: case 62: return 3; // < > + } + } else if (2 === length) { + switch (charCode) { + case 46: return 5; // .. + case 60: case 62: case 61: case 126: return 3; // <= >= == ~= + case 111: return 1; // or + } + } else if (97 === charCode && 'and' === operator) return 2; + return 0; + } + + // Implement an operator-precedence parser to handle binary operator + // precedence. + // + // We use this algorithm because it's compact, it's fast and Lua core uses + // the same so we can be sure our expressions are parsed in the same manner + // without excessive amounts of tests. + // + // exp ::= (unop exp | primary | prefixexp ) { binop exp } + + function parseSubExpression(minPrecedence) { + var operator = token.value + // The left-hand side in binary operations. + , expression, marker; + + if (trackLocations) marker = createLocationMarker(); + + // UnaryExpression + if (isUnary(token)) { + markLocation(); + next(); + var argument = parseSubExpression(8); + if (argument == null) raiseUnexpectedToken('<expression>', token); + expression = finishNode(ast.unaryExpression(operator, argument)); + } + if (null == expression) { + // PrimaryExpression + expression = parsePrimaryExpression(); + + // PrefixExpression + if (null == expression) { + expression = parsePrefixExpression(); + } + } + // This is not a valid left hand expression. + if (null == expression) return null; + + var precedence; + while (true) { + operator = token.value; + + precedence = (Punctuator === token.type || Keyword === token.type) ? + binaryPrecedence(operator) : 0; + + if (precedence === 0 || precedence <= minPrecedence) break; + // Right-hand precedence operators + if ('^' === operator || '..' === operator) precedence--; + next(); + var right = parseSubExpression(precedence); + if (null == right) raiseUnexpectedToken('<expression>', token); + // Push in the marker created before the loop to wrap its entirety. + if (trackLocations) locations.push(marker); + expression = finishNode(ast.binaryExpression(operator, expression, right)); + + } + return expression; + } + + // prefixexp ::= prefix {suffix} + // prefix ::= Name | '(' exp ')' + // suffix ::= '[' exp ']' | '.' Name | ':' Name args | args + // + // args ::= '(' [explist] ')' | tableconstructor | String + + function parsePrefixExpression() { + var base, name, marker + // Keep track of the scope, if a parent is local so are the children. + , isLocal; + + if (trackLocations) marker = createLocationMarker(); + + // The prefix + if (Identifier === token.type) { + name = token.value; + base = parseIdentifier(); + // Set the parent scope. + if (options.scope) attachScope(base, isLocal = scopeHasName(name)); + } else if (consume('(')) { + base = parseExpectedExpression(); + expect(')'); + if (options.scope) isLocal = base.isLocal; + } else { + return null; + } + + // The suffix + var expression, identifier; + while (true) { + if (Punctuator === token.type) { + switch (token.value) { + case '[': + pushLocation(marker); + next(); + expression = parseExpectedExpression(); + base = finishNode(ast.indexExpression(base, expression)); + expect(']'); + break; + case '.': + pushLocation(marker); + next(); + identifier = parseIdentifier(); + // Inherit the scope + if (options.scope) attachScope(identifier, isLocal); + base = finishNode(ast.memberExpression(base, '.', identifier)); + break; + case ':': + pushLocation(marker); + next(); + identifier = parseIdentifier(); + if (options.scope) attachScope(identifier, isLocal); + base = finishNode(ast.memberExpression(base, ':', identifier)); + // Once a : is found, this has to be a CallExpression, otherwise + // throw an error. + pushLocation(marker); + base = parseCallExpression(base); + break; + case '(': case '{': // args + pushLocation(marker); + base = parseCallExpression(base); + break; + default: + return base; + } + } else if (StringLiteral === token.type) { + pushLocation(marker); + base = parseCallExpression(base); + } else { + break; + } + } + + return base; + } + + // args ::= '(' [explist] ')' | tableconstructor | String + + function parseCallExpression(base) { + if (Punctuator === token.type) { + switch (token.value) { + case '(': + next(); + + // List of expressions + var expressions = []; + var expression = parseExpression(); + if (null != expression) expressions.push(expression); + while (consume(',')) { + expression = parseExpectedExpression(); + expressions.push(expression); + } + + expect(')'); + return finishNode(ast.callExpression(base, expressions)); + + case '{': + markLocation(); + next(); + var table = parseTableConstructor(); + return finishNode(ast.tableCallExpression(base, table)); + } + } else if (StringLiteral === token.type) { + return finishNode(ast.stringCallExpression(base, parsePrimaryExpression())); + } + + raiseUnexpectedToken('function arguments', token); + } + + // primary ::= String | Numeric | nil | true | false + // | functiondef | tableconstructor | '...' + + function parsePrimaryExpression() { + var literals = StringLiteral | NumericLiteral | BooleanLiteral | NilLiteral | VarargLiteral + , value = token.value + , type = token.type + , marker; + + if (trackLocations) marker = createLocationMarker(); + + if (type & literals) { + pushLocation(marker); + var raw = input.slice(token.range[0], token.range[1]); + next(); + return finishNode(ast.literal(type, value, raw)); + } else if (Keyword === type && 'function' === value) { + pushLocation(marker); + next(); + return parseFunctionDeclaration(null); + } else if (consume('{')) { + pushLocation(marker); + return parseTableConstructor(); + } + } + + // Parser + // ------ + + // Export the main parser. + // + // - `wait` Hold parsing until end() is called. Defaults to false + // - `comments` Store comments. Defaults to true. + // - `scope` Track identifier scope. Defaults to false. + // + // Example: + // + // var parser = require('luaparser'); + // parser.parse('i = 0'); + + exports.parse = parse; + + function parse(_input, _options) { + if ('undefined' === typeof _options && 'object' === typeof _input) { + _options = _input; + _input = undefined; + } + if (!_options) _options = {}; + + input = _input || ''; + options = extend(defaultOptions, _options); + + // Rewind the lexer + index = 0; + line = 1; + lineStart = 0; + length = input.length; + // When tracking identifier scope, initialize with an empty scope. + scopes = [[]]; + scopeDepth = 0; + globals = []; + locations = []; + + if (options.comments) comments = []; + if (!options.wait) return end(); + return exports; + } + + // Write to the source code buffer without beginning the parse. + exports.write = write; + + function write(_input) { + input += String(_input); + length = input.length; + return exports; + } + + // Send an EOF and begin parsing. + exports.end = end; + + function end(_input) { + if ('undefined' !== typeof _input) write(_input); + + length = input.length; + trackLocations = options.locations || options.ranges; + // Initialize with a lookahead token. + lookahead = lex(); + + var chunk = parseChunk(); + if (options.comments) chunk.comments = comments; + if (options.scope) chunk.globals = globals; + + if (locations.length > 0) + throw new Error('Location tracking failed. This is most likely a bug in luaparse'); + + return chunk; + } + +})); +/* vim: set sw=2 ts=2 et tw=79 : */ + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/lua_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/lua_highlight_rules.js new file mode 100644 index 00000000..27ab7a83 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lua_highlight_rules.js @@ -0,0 +1,190 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var LuaHighlightRules = function() { + + var keywords = ( + "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ + "return|then|until|while|or|and|not" + ); + + var builtinConstants = ("true|false|nil|_G|_VERSION"); + + var functions = ( + // builtinFunctions + "string|xpcall|package|tostring|print|os|unpack|require|"+ + "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ + "collectgarbage|getmetatable|module|rawset|math|debug|"+ + "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ + "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ + "load|error|loadfile|"+ + + "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ + "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ + "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ + "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ + "lines|write|close|flush|open|output|type|read|stderr|"+ + "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ + "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ + "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ + "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ + "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ + "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ + "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ + "status|wrap|create|running|"+ + // metatableMethods + "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ + "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" + ); + + var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); + + var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); + + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "support.function": functions, + "keyword.deprecated": deprecatedIn5152, + "constant.library": stdLibaries, + "constant.language": builtinConstants, + "variable.language": "self" + }, "identifier"); + + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; + + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var floatNumber = "(?:" + pointFloat + ")"; + + this.$rules = { + "start" : [{ + stateName: "bracketedComment", + onMatch : function(value, currentState, stack){ + stack.unshift(this.next, value.length - 2, currentState); + return "comment"; + }, + regex : /\-\-\[=*\[/, + next : [ + { + onMatch : function(value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } else { + this.next = ""; + } + return "comment"; + }, + regex : /\]=*\]/, + next : "start" + }, { + defaultToken : "comment" + } + ] + }, + + { + token : "comment", + regex : "\\-\\-.*$" + }, + { + stateName: "bracketedString", + onMatch : function(value, currentState, stack){ + stack.unshift(this.next, value.length, currentState); + return "string.start"; + }, + regex : /\[=*\[/, + next : [ + { + onMatch : function(value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } else { + this.next = ""; + } + return "string.end"; + }, + + regex : /\]=*\]/, + next : "start" + }, { + defaultToken : "string" + } + ] + }, + { + token : "string", // " string + regex : '"(?:[^\\\\]|\\\\.)*?"' + }, { + token : "string", // ' string + regex : "'(?:[^\\\\]|\\\\.)*?'" + }, { + token : "constant.numeric", // float + regex : floatNumber + }, { + token : "constant.numeric", // integer + regex : integer + "\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." + }, { + token : "paren.lparen", + regex : "[\\[\\(\\{]" + }, { + token : "paren.rparen", + regex : "[\\]\\)\\}]" + }, { + token : "text", + regex : "\\s+|\\w+" + } ] + }; + + this.normalizeRules(); +}; + +oop.inherits(LuaHighlightRules, TextHighlightRules); + +exports.LuaHighlightRules = LuaHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/lua_worker.js b/plugins/node_modules/ace/lib/ace/mode/lua_worker.js new file mode 100644 index 00000000..dcff9514 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lua_worker.js @@ -0,0 +1,70 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var luaparse = require("../mode/lua/luaparse"); + +var Worker = exports.Worker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(500); +}; + +oop.inherits(Worker, Mirror); + +(function() { + + this.onUpdate = function() { + var value = this.doc.getValue(); + var errors = []; + + // var t=Date.now() + try { + luaparse.parse(value); + } catch(e) { + if (e instanceof SyntaxError) { + errors.push({ + row: e.line - 1, + column: e.column, + text: e.message, + type: "error" + }); + } + } + // console.log( t-Date.now()) + this.sender.emit("annotate", errors); + }; + +}).call(Worker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/luapage.js b/plugins/node_modules/ace/lib/ace/mode/luapage.js new file mode 100644 index 00000000..5ea79d14 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/luapage.js @@ -0,0 +1,24 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var LuaMode = require("./lua").Mode; +var LuaPageHighlightRules = require("./luapage_highlight_rules").LuaPageHighlightRules; + +var Mode = function() { + HtmlMode.call(this); + + this.HighlightRules = LuaPageHighlightRules; + this.createModeDelegates({ + "lua-": LuaMode + }); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + this.$id = "ace/mode/luapage"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/luapage_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/luapage_highlight_rules.js new file mode 100644 index 00000000..59878999 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/luapage_highlight_rules.js @@ -0,0 +1,49 @@ +// LuaPage implements the LuaPage markup as described by the Kepler Project's CGILua +// documentation: http://keplerproject.github.com/cgilua/manual.html#templates +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; + +var LuaPageHighlightRules = function() { + HtmlHighlightRules.call(this); + + var startRules = [ + { + token: "keyword", + regex: "<\\%\\=?", + push: "lua-start" + }, { + token: "keyword", + regex: "<\\?lua\\=?", + push: "lua-start" + } + ]; + + var endRules = [ + { + token: "keyword", + regex: "\\%>", + next: "pop" + }, { + token: "keyword", + regex: "\\?>", + next: "pop" + } + ]; + + this.embedRules(LuaHighlightRules, "lua-", endRules, ["start"]); + + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + + this.normalizeRules(); +}; + +oop.inherits(LuaPageHighlightRules, HtmlHighlightRules); + +exports.LuaPageHighlightRules = LuaPageHighlightRules; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/lucene.js b/plugins/node_modules/ace/lib/ace/mode/lucene.js new file mode 100644 index 00000000..36983e92 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lucene.js @@ -0,0 +1,20 @@ +define(function(require, exports, module) { +'use strict'; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LuceneHighlightRules = require("./lucene_highlight_rules").LuceneHighlightRules; + +var Mode = function() { + this.HighlightRules = LuceneHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; + +oop.inherits(Mode, TextMode); + +(function() { + this.$id = "ace/mode/lucene"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/lucene_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/lucene_highlight_rules.js new file mode 100644 index 00000000..536aa1d3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/lucene_highlight_rules.js @@ -0,0 +1,49 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var LuceneHighlightRules = function() { + this.$rules = { + "start" : [ + { + token : "constant.character.negation", + regex : "[\\-]" + }, { + token : "constant.character.interro", + regex : "[\\?]" + }, { + token : "constant.character.asterisk", + regex : "[\\*]" + }, { + token: 'constant.character.proximity', + regex: '~[0-9]+\\b' + }, { + token : 'keyword.operator', + regex: '(?:AND|OR|NOT)\\b' + }, { + token : "paren.lparen", + regex : "[\\(]" + }, { + token : "paren.rparen", + regex : "[\\)]" + }, { + token : "keyword", + regex : "[\\S]+:" + }, { + token : "string", // " string + regex : '".*?"' + }, { + token : "text", + regex : "\\s+" + } + ] + }; +}; + +oop.inherits(LuceneHighlightRules, TextHighlightRules); + +exports.LuceneHighlightRules = LuceneHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/makefile.js b/plugins/node_modules/ace/lib/ace/mode/makefile.js new file mode 100644 index 00000000..df599327 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/makefile.js @@ -0,0 +1,59 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MakefileHighlightRules = require("./makefile_highlight_rules").MakefileHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = MakefileHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "#"; + this.$indentWithTabs = true; + + this.$id = "ace/mode/makefile"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/makefile_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/makefile_highlight_rules.js new file mode 100644 index 00000000..740ab6f1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/makefile_highlight_rules.js @@ -0,0 +1,75 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ShHighlightFile = require("./sh_highlight_rules"); + +var MakefileHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + var keywordMapper = this.createKeywordMapper({ + "keyword": ShHighlightFile.reservedKeywords, + "support.function.builtin": ShHighlightFile.languageConstructs, + "invalid.deprecated": "debugger" + }, "string"); + + this.$rules = + { + "start": [ + { + token: "string.interpolated.backtick.makefile", + regex: "`", + next: "shell-start" + }, + { + token: "punctuation.definition.comment.makefile", + regex: /#(?=.)/, + next: "comment" + }, + { + token: [ "keyword.control.makefile"], + regex: "^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)" + }, + {// ^([^\t ]+(\s[^\t ]+)*:(?!\=))\s*.* + token: ["entity.name.function.makefile", "text"], + regex: "^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)" + } + ], + "comment": [ + { + token : "punctuation.definition.comment.makefile", + regex : /.+\\/ + }, + { + token : "punctuation.definition.comment.makefile", + regex : ".+", + next : "start" + } + ], + "shell-start": [ + { + token: keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "string", + regex : "\\w+" + }, + { + token : "string.interpolated.backtick.makefile", + regex : "`", + next : "start" + } + ] +}; + +}; + +oop.inherits(MakefileHighlightRules, TextHighlightRules); + +exports.MakefileHighlightRules = MakefileHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/markdown.js b/plugins/node_modules/ace/lib/ace/mode/markdown.js new file mode 100644 index 00000000..a6aaffa0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/markdown.js @@ -0,0 +1,77 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var XmlMode = require("./xml").Mode; +var HtmlMode = require("./html").Mode; +var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; +var MarkdownFoldMode = require("./folding/markdown").FoldMode; + +var Mode = function() { + this.HighlightRules = MarkdownHighlightRules; + + this.createModeDelegates({ + "js-": JavaScriptMode, + "xml-": XmlMode, + "html-": HtmlMode + }); + + this.foldingRules = new MarkdownFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.type = "text"; + this.blockComment = {start: "<!--", end: "-->"}; + + this.getNextLineIndent = function(state, line, tab) { + if (state == "listblock") { + var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); + if (!match) + return ""; + var marker = match[2]; + if (!marker) + marker = parseInt(match[3], 10) + 1 + "."; + return match[1] + marker + match[4]; + } else { + return this.$getIndent(line); + } + }; + this.$id = "ace/mode/markdown"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/markdown_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/markdown_highlight_rules.js new file mode 100644 index 00000000..254b9cfb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/markdown_highlight_rules.js @@ -0,0 +1,228 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; + +var escaped = function(ch) { + return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; +}; + +function github_embed(tag, prefix) { + return { // Github style block + token : "support.function", + regex : "^\\s*```" + tag + "\\s*$", + push : prefix + "start" + }; +} + +var MarkdownHighlightRules = function() { + HtmlHighlightRules.call(this); + // regexp must not have capturing parentheses + // regexps are ordered -> the first match is used + + this.$rules["start"].unshift({ + token : "empty_line", + regex : '^$', + next: "allowBlock" + }, { // h1 + token: "markup.heading.1", + regex: "^=+(?=\\s*$)" + }, { // h2 + token: "markup.heading.2", + regex: "^\\-+(?=\\s*$)" + }, { + token : function(value) { + return "markup.heading." + value.length; + }, + regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/, + next : "header" + }, + github_embed("(?:javascript|js)", "jscode-"), + github_embed("xml", "xmlcode-"), + github_embed("html", "htmlcode-"), + github_embed("css", "csscode-"), + { // Github style block + token : "support.function", + regex : "^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$", + next : "githubblock" + }, { // block quote + token : "string.blockquote", + regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next : "blockquote" + }, { // HR * - _ + token : "constant", + regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$", + next: "allowBlock" + }, { // list + token : "markup.list", + regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next : "listblock-start" + }, { + include : "basic" + }); + + this.addRules({ + "basic" : [{ + token : "constant.language.escape", + regex : /\\[\\`*_{}\[\]()#+\-.!]/ + }, { // code span ` + token : "support.function", + regex : "(`+)(.*?[^`])(\\1)" + }, { // reference + token : ["text", "constant", "text", "url", "string", "text"], + regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" + }, { // link by reference + token : ["text", "string", "text", "constant", "text"], + regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" + }, { // link by url + token : ["text", "string", "text", "markup.underline", "string", "text"], + regex : "(\\[)(" + // [ + escaped("]") + // link text + ")(\\]\\()"+ // ]( + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href + '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" + "(\\))" // ) + }, { // strong ** __ + token : "string.strong", + regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" + }, { // emphasis * _ + token : "string.emphasis", + regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" + }, { // + token : ["text", "url", "text"], + regex : "(<)("+ + "(?:https?|ftp|dict):[^'\">\\s]+"+ + "|"+ + "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ + ")(>)" + }], + + // code block + "allowBlock": [ + {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, + {token : "empty_line", regex : '^$', next: "allowBlock"}, + {token : "empty", regex : "", next : "start"} + ], + + "header" : [{ + regex: "$", + next : "start" + }, { + include: "basic" + }, { + defaultToken : "heading" + } ], + + "listblock-start" : [{ + token : "support.variable", + regex : /(?:\[[ x]\])?/, + next : "listblock" + }], + + "listblock" : [ { // Lists only escape on completely blank lines. + token : "empty_line", + regex : "^$", + next : "start" + }, { // list + token : "markup.list", + regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next : "listblock-start" + }, { + include : "basic", noEscape: true + }, { // Github style block + token : "support.function", + regex : "^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$", + next : "githubblock" + }, { + defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly + } ], + + "blockquote" : [ { // Blockquotes only escape on blank lines. + token : "empty_line", + regex : "^\\s*$", + next : "start" + }, { // block quote + token : "string.blockquote", + regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next : "blockquote" + }, { + include : "basic", noEscape: true + }, { + defaultToken : "string.blockquote" + } ], + + "githubblock" : [ { + token : "support.function", + regex : "^\\s*```", + next : "start" + }, { + defaultToken : "support.function" + } ] + }); + + this.embedRules(JavaScriptHighlightRules, "jscode-", [{ + token : "support.function", + regex : "^\\s*```", + next : "pop" + }]); + + this.embedRules(HtmlHighlightRules, "htmlcode-", [{ + token : "support.function", + regex : "^\\s*```", + next : "pop" + }]); + + this.embedRules(CssHighlightRules, "csscode-", [{ + token : "support.function", + regex : "^\\s*```", + next : "pop" + }]); + + this.embedRules(XmlHighlightRules, "xmlcode-", [{ + token : "support.function", + regex : "^\\s*```", + next : "pop" + }]); + + this.normalizeRules(); +}; +oop.inherits(MarkdownHighlightRules, TextHighlightRules); + +exports.MarkdownHighlightRules = MarkdownHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/mask.js b/plugins/node_modules/ace/lib/ace/mode/mask.js new file mode 100644 index 00000000..ee94c82f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mask.js @@ -0,0 +1,84 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MaskHighlightRules = require("./mask_highlight_rules").MaskHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = MaskHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + // ignore braces in comments + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/mask"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/mask_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/mask_highlight_rules.js new file mode 100644 index 00000000..1906ebf8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mask_highlight_rules.js @@ -0,0 +1,309 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2014, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +exports.MaskHighlightRules = MaskHighlightRules; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextRules = require("./text_highlight_rules").TextHighlightRules; +var JSRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var CssRules = require("./css_highlight_rules").CssHighlightRules; +var MDRules = require("./markdown_highlight_rules").MarkdownHighlightRules; +var HTMLRules = require("./html_highlight_rules").HtmlHighlightRules; + +var token_TAG = "keyword.support.constant.language", + token_COMPO = "support.function.markup.bold", + token_KEYWORD = "keyword", + token_LANG = "constant.language", + token_UTIL = "keyword.control.markup.italic", + token_ATTR = "support.variable.class", + token_PUNKT = "keyword.operator", + token_ITALIC = "markup.italic", + token_BOLD = "markup.bold", + token_LPARE = "paren.lparen", + token_RPARE = "paren.rparen"; + +var const_FUNCTIONS, + const_KEYWORDS, + const_CONST, + const_TAGS; +(function(){ + const_FUNCTIONS = lang.arrayToMap( + ("log").split("|") + ); + const_CONST = lang.arrayToMap( + (":dualbind|:bind|:import|slot|event|style|html|markdown|md").split("|") + ); + const_KEYWORDS = lang.arrayToMap( + ("debugger|define|var|if|each|for|of|else|switch|case|with|visible|+if|+each|+for|+switch|+with|+visible|include|import").split("|") + ); + const_TAGS = lang.arrayToMap( + ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + + "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + + "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + + "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + + "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + + "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + + "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + + "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + + "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") + ); +}()); + +function MaskHighlightRules () { + + this.$rules = { + "start" : [ + Token("comment", "\\/\\/.*$"), + Token("comment", "\\/\\*", [ + Token("comment", ".*?\\*\\/", "start"), + Token("comment", ".+") + ]), + + Blocks.string("'''"), + Blocks.string('"""'), + Blocks.string('"'), + Blocks.string("'"), + + Blocks.syntax(/(markdown|md)\b/, "md-multiline", "multiline"), + Blocks.syntax(/html\b/, "html-multiline", "multiline"), + Blocks.syntax(/(slot|event)\b/, "js-block", "block"), + Blocks.syntax(/style\b/, "css-block", "block"), + Blocks.syntax(/var\b/, "js-statement", "attr"), + + Blocks.tag(), + + Token(token_LPARE, "[[({>]"), + Token(token_RPARE, "[\\])};]", "start"), + { + caseInsensitive: true + } + ] + }; + var rules = this; + + addJavaScript("interpolation", /\]/, token_RPARE + "." + token_ITALIC); + addJavaScript("statement", /\)|}|;/); + addJavaScript("block", /\}/); + addCss(); + addMarkdown(); + addHtml(); + + function addJavaScript(name, escape, closeType) { + var prfx = "js-" + name + "-", + rootTokens = name === "block" ? ["start"] : ["start", "no_regex"]; + add( + JSRules + , prfx + , escape + , rootTokens + , closeType + ); + } + function addCss() { + add(CssRules, "css-block-", /\}/); + } + function addMarkdown() { + add(MDRules, "md-multiline-", /("""|''')/, []); + } + function addHtml() { + add(HTMLRules, "html-multiline-", /("""|''')/); + } + function add(Rules, strPrfx, rgxEnd, rootTokens, closeType) { + var next = "pop"; + var tokens = rootTokens || [ "start" ]; + if (tokens.length === 0) { + tokens = null; + } + if (/block|multiline/.test(strPrfx)) { + next = strPrfx + "end"; + rules.$rules[next] = [ + Token("empty", "", "start") + ]; + } + rules.embedRules( + Rules + , strPrfx + , [ Token(closeType || token_RPARE, rgxEnd, next) ] + , tokens + , tokens == null ? true : false + ); + } + + this.normalizeRules(); +} +oop.inherits(MaskHighlightRules, TextRules); + +var Blocks = { + string: function(str, next){ + var token = Token( + "string.start" + , str + , [ + Token(token_LPARE + "." + token_ITALIC, /~\[/, Blocks.interpolation()), + Token("string.end", str, "pop"), + { + defaultToken: "string" + } + ] + , next + ); + if (str.length === 1){ + var escaped = Token("string.escape", "\\\\" + str); + token.push.unshift(escaped); + } + return token; + }, + interpolation: function(){ + return [ + Token(token_UTIL, /\s*\w*\s*:/), + "js-interpolation-start" + ]; + }, + tagHead: function (rgx) { + return Token(token_ATTR, rgx, [ + Token(token_ATTR, /[\w\-_]+/), + Token(token_LPARE + "." + token_ITALIC, /~\[/, Blocks.interpolation()), + Blocks.goUp() + ]); + }, + tag: function () { + return { + token: 'tag', + onMatch : function(value) { + if (void 0 !== const_KEYWORDS[value]) + return token_KEYWORD; + if (void 0 !== const_CONST[value]) + return token_LANG; + if (void 0 !== const_FUNCTIONS[value]) + return "support.function"; + if (void 0 !== const_TAGS[value.toLowerCase()]) + return token_TAG; + + return token_COMPO; + }, + regex : /([@\w\-_:+]+)|((^|\s)(?=\s*(\.|#)))/, + push: [ + Blocks.tagHead(/\./) , + Blocks.tagHead(/#/) , + Blocks.expression(), + Blocks.attribute(), + + Token(token_LPARE, /[;>{]/, "pop") + ] + }; + }, + syntax: function(rgx, next, type){ + return { + token: token_LANG, + regex : rgx, + push: ({ + "attr": [ + next + "-start", + Token(token_PUNKT, /;/, "start") + ], + "multiline": [ + Blocks.tagHead(/\./) , + Blocks.tagHead(/#/) , + Blocks.attribute(), + Blocks.expression(), + Token(token_LPARE, /[>\{]/), + Token(token_PUNKT, /;/, "start"), + Token(token_LPARE, /'''|"""/, [ next + "-start" ]) + ], + "block": [ + Blocks.tagHead(/\./) , + Blocks.tagHead(/#/) , + Blocks.attribute(), + Blocks.expression(), + Token(token_LPARE, /\{/, [ next + "-start" ]) + ] + })[type] + }; + }, + attribute: function(){ + return Token(function(value){ + return /^x\-/.test(value) + ? token_ATTR + "." + token_BOLD + : token_ATTR; + }, /[\w_-]+/, [ + Token(token_PUNKT, /\s*=\s*/, [ + Blocks.string('"'), + Blocks.string("'"), + Blocks.word(), + Blocks.goUp() + ]), + Blocks.goUp() + ]); + }, + expression: function(){ + return Token(token_LPARE, /\(/, [ "js-statement-start" ]); + }, + word: function(){ + return Token("string", /[\w-_]+/); + }, + goUp: function(){ + return Token("text", "", "pop"); + }, + goStart: function(){ + return Token("text", "", "start"); + } +}; + + +function Token(token, rgx, mix) { + var push, next, onMatch; + if (arguments.length === 4) { + push = mix; + next = arguments[3]; + } + else if (typeof mix === "string") { + next = mix; + } + else { + push = mix; + } + if (typeof token === "function") { + onMatch = token; + token = "empty"; + } + return { + token: token, + regex: rgx, + push: push, + next: next, + onMatch: onMatch + }; +} + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/matching_brace_outdent.js b/plugins/node_modules/ace/lib/ace/mode/matching_brace_outdent.js new file mode 100644 index 00000000..07f4829e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/matching_brace_outdent.js @@ -0,0 +1,69 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("../range").Range; + +var MatchingBraceOutdent = function() {}; + +(function() { + + this.checkOutdent = function(line, input) { + if (! /^\s+$/.test(line)) + return false; + + return /^\s*\}/.test(input); + }; + + this.autoOutdent = function(doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + + if (!match) return 0; + + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({row: row, column: column}); + + if (!openBracePos || openBracePos.row == row) return 0; + + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column-1), indent); + }; + + this.$getIndent = function(line) { + return line.match(/^\s*/)[0]; + }; + +}).call(MatchingBraceOutdent.prototype); + +exports.MatchingBraceOutdent = MatchingBraceOutdent; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/matching_parens_outdent.js b/plugins/node_modules/ace/lib/ace/mode/matching_parens_outdent.js new file mode 100644 index 00000000..0aadf6e8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/matching_parens_outdent.js @@ -0,0 +1,74 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("../range").Range; + +var MatchingParensOutdent = function() {}; + +(function() { + + this.checkOutdent = function(line, input) { + if (! /^\s+$/.test(line)) + return false; + + return /^\s*\)/.test(input); + }; + + this.autoOutdent = function(doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\))/); + + if (!match) return 0; + + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({row: row, column: column}); + + if (!openBracePos || openBracePos.row == row) return 0; + + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column-1), indent); + }; + + this.$getIndent = function(line) { + var match = line.match(/^(\s+)/); + if (match) { + return match[1]; + } + + return ""; + }; + +}).call(MatchingParensOutdent.prototype); + +exports.MatchingParensOutdent = MatchingParensOutdent; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/matlab.js b/plugins/node_modules/ace/lib/ace/mode/matlab.js new file mode 100644 index 00000000..91f6bb63 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/matlab.js @@ -0,0 +1,55 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MatlabHighlightRules = require("./matlab_highlight_rules").MatlabHighlightRules; + +var Mode = function() { + this.HighlightRules = MatlabHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "%"; + this.blockComment = {start: "%{", end: "%}"}; + + this.$id = "ace/mode/matlab"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/matlab_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/matlab_highlight_rules.js new file mode 100644 index 00000000..b5ab1cab --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/matlab_highlight_rules.js @@ -0,0 +1,262 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var MatlabHighlightRules = function() { + +var keywords = ( + "break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while" + ); + + var builtinConstants = ( + "true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout" + ); + + var builtinFunctions = ( + "abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|"+ + "airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|" + + "audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|"+ + "bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|"+ + "bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|"+ + "camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|"+ + "computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|"+ + "getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|"+ + "getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|"+ + "getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|"+ + "getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|"+ + "hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|"+ + "renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|"+ + "setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|"+ + "cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|"+ + "clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|"+ + "commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|"+ + "copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|"+ + "cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|"+ + "dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|"+ + "demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|"+ + "dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|"+ + "erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|"+ + "expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|"+ + "fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|"+ + "findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|"+ + "frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|"+ + "get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|"+ + "guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|"+ + "hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|"+ + "hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|"+ + "ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|"+ + "1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|"+ + "isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|"+ + "isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|"+ + "isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|"+ + "lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|"+ + "linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|"+ + "lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|"+ + "matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|"+ + "MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|"+ + "minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|"+ + "multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|"+ + "ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|"+ + "NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|"+ + "getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|"+ + "inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|"+ + "setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|"+ + "ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|"+ + "orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|"+ + "permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|"+ + "polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|"+ + "PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|"+ + "getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|"+ + "rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|"+ + "restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|"+ + "saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|"+ + "setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|"+ + "spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|"+ + "str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|"+ + "strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|"+ + "support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|"+ + "textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|"+ + "transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|"+ + "uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|"+ + "uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|"+ + "userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|"+ + "view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|"+ + "what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|"+ + "ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|"+ + "pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|"+ + "cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|"+ + "template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|"+ + "controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|"+ + "dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|"+ + "fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|"+ + "pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|"+ + "gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|"+ + "jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|"+ + "LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|"+ + "mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|"+ + "sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|"+ + "nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|"+ + "pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|"+ + "Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|"+ + "rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|"+ + "robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|"+ + "statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|"+ + "ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest"+ + "adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|"+ + "bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|"+ + "cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|"+ + "entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|"+ + "getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|"+ + "iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|"+ + "imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|"+ + "imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|"+ + "imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|"+ + "imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|"+ + "imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|"+ + "iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|"+ + "isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|"+ + "medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|"+ + "reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|"+ + "rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|"+ + "warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|"+ + "linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog" + ); + var storageType = ( + "cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse" + ); + var keywordMapper = this.createKeywordMapper({ + "storage.type": storageType, + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants + }, "identifier", true); + + this.$rules = { + // allowQstring + start: [{ + token : "string", + regex : "'", + stateName : "qstring", + next : [{ + token : "constant.language.escape", + regex : "''" + }, { + token : "string", + regex : "'|$", + next : "start" + }, { + defaultToken: "string" + }] + }, { + token : "text", + regex : "\\s+" + }, { + regex: "", + next: "noQstring" + }], + noQstring : [{ + regex: "^\\s*%{\\s*$", + token: "comment.start", + push: "blockComment" + }, { + token : "comment", + regex : "%[^\r\n]*" + }, { + token : "string", + regex : '"', + stateName : "qqstring", + next : [{ + token : "constant.language.escape", + regex : /\\./ + }, { + token : "string", + regex : "\\\\$", + next : "qqstring" + }, { + token : "string", + regex : '"|$', + next : "start" + }, { + defaultToken: "string" + }] + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\/|\\/\\/|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=", + next: "start" + }, { + token : "punctuation.operator", + regex : "\\?|\\:|\\,|\\;|\\.", + next: "start" + }, { + token : "paren.lparen", + regex : "[({\\[]", + next: "start" + }, { + token : "paren.rparen", + regex : "[\\]})]" + }, { + token : "text", + regex : "\\s+" + }, { + token : "text", + regex : "$", + next : "start" + }], + blockComment: [{ + regex: "^\\s*%{\\s*$", + token: "comment.start", + push: "blockComment" + }, { + regex: "^\\s*%}\\s*$", + token: "comment.end", + next: "pop" + }, { + defaultToken: "comment" + }] + }; + + this.normalizeRules(); +}; + +oop.inherits(MatlabHighlightRules, TextHighlightRules); + +exports.MatlabHighlightRules = MatlabHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/maze.js b/plugins/node_modules/ace/lib/ace/mode/maze.js new file mode 100644 index 00000000..a23631f8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/maze.js @@ -0,0 +1,53 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MazeHighlightRules = require("./maze_highlight_rules").MazeHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = MazeHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.$id = "ace/mode/maze"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/maze_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/maze_highlight_rules.js new file mode 100644 index 00000000..04bed89c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/maze_highlight_rules.js @@ -0,0 +1,154 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var MazeHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + token: "keyword.control", + regex: /##|``/, + comment: "Wall" + }, { + token: "entity.name.tag", + regex: /\.\./, + comment: "Path" + }, { + token: "keyword.control", + regex: /<>/, + comment: "Splitter" + }, { + token: "entity.name.tag", + regex: /\*[\*A-Za-z0-9]/, + comment: "Signal" + }, { + token: "constant.numeric", + regex: /[0-9]{2}/, + comment: "Pause" + }, { + token: "keyword.control", + regex: /\^\^/, + comment: "Start" + }, { + token: "keyword.control", + regex: /\(\)/, + comment: "Hole" + }, { + token: "support.function", + regex: />>/, + comment: "Out" + }, { + token: "support.function", + regex: />\//, + comment: "Ln Out" + }, { + token: "support.function", + regex: /<</, + comment: "In" + }, { + token: "keyword.control", + regex: /--/, + comment: "One use" + }, { + token: "constant.language", + regex: /%[LRUDNlrudn]/, + comment: "Direction" + }, { + token: [ + "entity.name.function", + "keyword.other", + "keyword.operator", + "keyword.other", + "keyword.operator", + "constant.numeric", + "keyword.operator", + "keyword.other", + "keyword.operator", + "constant.numeric", + "string.quoted.double", + "string.quoted.single" + ], + regex: /([A-Za-z][A-Za-z0-9])( *-> *)(?:([-+*\/]=)( *)((?:-)?)([0-9]+)|(=)( *)(?:((?:-)?)([0-9]+)|("[^"]*")|('[^']*')))/, + comment: "Assignment function" + }, { + token: [ + "entity.name.function", + "keyword.other", + "keyword.control", + "keyword.other", + "keyword.operator", + "keyword.other", + "keyword.operator", + "constant.numeric", + "entity.name.tag", + "keyword.other", + "keyword.control", + "keyword.other", + "constant.language", + "keyword.other", + "keyword.control", + "keyword.other", + "constant.language" + ], + regex: /([A-Za-z][A-Za-z0-9])( *-> *)(IF|if)( *)(?:([<>]=?|==)( *)((?:-)?)([0-9]+)|(\*[\*A-Za-z0-9]))( *)(THEN|then)( *)(%[LRUDNlrudn])(?:( *)(ELSE|else)( *)(%[LRUDNlrudn]))?/, + comment: "Equality Function" + }, { + token: "entity.name.function", + regex: /[A-Za-z][A-Za-z0-9]/, + comment: "Function cell" + }, { + token: "comment.line.double-slash", + regex: / *\/\/.*/, + comment: "Comment" + }] + }; + + this.normalizeRules(); +}; + +MazeHighlightRules.metaData = { + fileTypes: ["mz"], + name: "Maze", + scopeName: "source.maze" +}; + + +oop.inherits(MazeHighlightRules, TextHighlightRules); + +exports.MazeHighlightRules = MazeHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/mel.js b/plugins/node_modules/ace/lib/ace/mode/mel.js new file mode 100644 index 00000000..e8922a1c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mel.js @@ -0,0 +1,56 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MELHighlightRules = require("./mel_highlight_rules").MELHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = MELHighlightRules; + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/mel"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/mel_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/mel_highlight_rules.js new file mode 100644 index 00000000..905451b8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mel_highlight_rules.js @@ -0,0 +1,133 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* THIS FILE WAS AUTOGENERATED FROM MEL.tmLanguage (UUID: 69554E52-391D-42BC-9F65-7A77444BA1CF) */ +/**************************************************************** + * IT MIGHT NOT BE PERFECT, PARTICULARLY: * + * IN DECIDING STATES TO TRANSITION TO, * + * IGNORING WHITESPACE, * + * IGNORING GROUPS WITH ?:, * + * EXTENDING EXISTING MODES, * + * GATHERING KEYWORDS, OR * + * DECIDING WHEN TO USE PUSH. * + * ...But it's a good start from an existing *.tmlanguage file. * + ****************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var MELHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { caseInsensitive: true, + token: 'storage.type.mel', + regex: '\\b(matrix|string|vector|float|int|void)\\b' }, + { caseInsensitive: true, + token: 'support.function.mel', + regex: '\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b' }, + { caseInsensitive: true, + token: 'support.constant.mel', + regex: '\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b' }, + { caseInsensitive: true, + token: 'keyword.control.mel', + regex: '\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b' }, + { token: 'keyword.other.mel', regex: '\\b(global)\\b' }, + { caseInsensitive: true, + token: 'constant.language.mel', + regex: '\\b(null|undefined)\\b' }, + { token: 'constant.numeric.mel', + regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b' }, + { token: 'punctuation.definition.string.begin.mel', + regex: '"', + push: + [ { token: 'constant.character.escape.mel', regex: '\\\\.' }, + { token: 'punctuation.definition.string.end.mel', + regex: '"', + next: 'pop' }, + { defaultToken: 'string.quoted.double.mel' } ] }, + + { token: [ 'variable.other.mel', 'punctuation.definition.variable.mel' ], + regex: '(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)' }, + + { token: 'punctuation.definition.string.begin.mel', + regex: '\'', + push: + [ { token: 'constant.character.escape.mel', regex: '\\\\.' }, + { token: 'punctuation.definition.string.end.mel', + regex: '\'', + next: 'pop' }, + { defaultToken: 'string.quoted.single.mel' } ] }, + + { token: 'constant.language.mel', + regex: '\\b(false|true|yes|no|on|off)\\b' }, + + { token: 'punctuation.definition.comment.mel', + regex: '/\\*', + push: + [ { token: 'punctuation.definition.comment.mel', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.mel' } ] }, + + { token: [ 'comment.line.double-slash.mel', 'punctuation.definition.comment.mel' ], + regex: '(//)(.*$\\n?)' }, + + { caseInsensitive: true, + token: 'keyword.operator.mel', + regex: '\\b(instanceof)\\b' }, + { token: 'keyword.operator.symbolic.mel', + regex: '[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]' }, + + { token: [ 'meta.preprocessor.mel', 'punctuation.definition.preprocessor.mel' ], + regex: '(^[ \\t]*)((?:#)[a-zA-Z]+)' }, + + { token: [ 'meta.function.mel', 'keyword.other.mel', 'storage.type.mel', 'entity.name.function.mel', 'punctuation.section.function.mel' ], + regex: '(global\\s*)?(proc\\s*)(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*\\()', + push: + [ { include: '$self' }, + { token: 'punctuation.section.function.mel', + regex: '\\)', + next: 'pop' }, + { defaultToken: 'meta.function.mel' } ] } + + ] }; + + this.normalizeRules(); +}; + +oop.inherits(MELHighlightRules, TextHighlightRules); + +exports.MELHighlightRules = MELHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/mixal.js b/plugins/node_modules/ace/lib/ace/mode/mixal.js new file mode 100644 index 00000000..af45bc71 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mixal.js @@ -0,0 +1,49 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2017, Ruslan Batdalov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MixalHighlightRules = require("./mixal_highlight_rules").MixalHighlightRules; + +var Mode = function() { + this.HighlightRules = MixalHighlightRules; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.$id = "ace/mode/mixal"; + this.lineCommentStart = "*"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/mixal_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/mixal_highlight_rules.js new file mode 100644 index 00000000..5a0482a6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mixal_highlight_rules.js @@ -0,0 +1,125 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2017, Ruslan Batdalov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var MixalHighlightRules = function() { + var isValidSymbol = function(string) { + return string && string.search(/^[A-Z\u0394\u03a0\u03a30-9]{1,10}$/) > -1 && string.search(/[A-Z\u0394\u03a0\u03a3]/) > -1; + }; + + var isValidOp = function(op) { + return op && [ + 'NOP', 'ADD', 'FADD', 'SUB', 'FSUB', 'MUL', 'FMUL', 'DIV', 'FDIV', 'NUM', 'CHAR', 'HLT', + 'SLA', 'SRA', 'SLAX', 'SRAX', 'SLC', 'SRC', 'MOVE', 'LDA', 'LD1', 'LD2', 'LD3', 'LD4', + 'LD5', 'LD6', 'LDX', 'LDAN', 'LD1N', 'LD2N', 'LD3N', 'LD4N', 'LD5N', 'LD6N', 'LDXN', + 'STA', 'ST1', 'ST2', 'ST3', 'ST4', 'ST5', 'ST6', 'STX', 'STJ', 'STZ', 'JBUS', 'IOC', + 'IN', 'OUT', 'JRED', 'JMP', 'JSJ', 'JOV', 'JNOV', 'JL', 'JE', 'JG', 'JGE', 'JNE', 'JLE', + 'JAN', 'JAZ', 'JAP', 'JANN', 'JANZ', 'JANP', 'J1N', 'J1Z', 'J1P', 'J1NN', 'J1NZ', + 'J1NP', 'J2N', 'J2Z', 'J2P', 'J2NN', 'J2NZ', 'J2NP','J3N', 'J3Z', 'J3P', 'J3NN', 'J3NZ', + 'J3NP', 'J4N', 'J4Z', 'J4P', 'J4NN', 'J4NZ', 'J4NP', 'J5N', 'J5Z', 'J5P', 'J5NN', + 'J5NZ', 'J5NP','J6N', 'J6Z', 'J6P', 'J6NN', 'J6NZ', 'J6NP', 'JXAN', 'JXZ', 'JXP', + 'JXNN', 'JXNZ', 'JXNP', 'INCA', 'DECA', 'ENTA', 'ENNA', 'INC1', 'DEC1', 'ENT1', 'ENN1', + 'INC2', 'DEC2', 'ENT2', 'ENN2', 'INC3', 'DEC3', 'ENT3', 'ENN3', 'INC4', 'DEC4', 'ENT4', + 'ENN4', 'INC5', 'DEC5', 'ENT5', 'ENN5', 'INC6', 'DEC6', 'ENT6', 'ENN6', 'INCX', 'DECX', + 'ENTX', 'ENNX', 'CMPA', 'FCMP', 'CMP1', 'CMP2', 'CMP3', 'CMP4', 'CMP5', 'CMP6', 'CMPX', + 'EQU', 'ORIG', 'CON', 'ALF', 'END' + ].indexOf(op) > -1; + }; + + var containsOnlySupportedCharacters = function(string) { + return string && string.search(/[^ A-Z\u0394\u03a0\u03a30-9.,()+*/=$<>@;:'-]/) == -1; + }; + + this.$rules = { + "start" : [{ + token: "comment.line.character", + regex: /^ *\*.*$/ + }, { + token: function(label, space0, keyword, space1, literal, comment) { + return [ + isValidSymbol(label) ? "variable.other" : "invalid.illegal", + "text", + "keyword.control", + "text", + containsOnlySupportedCharacters(literal) ? "text" : "invalid.illegal", + "comment.line.character" + ]; + }, + regex: /^(\S+)?( +)(ALF)( )(.{5})(\s+.*)?$/ + }, { + token: function(label, space0, keyword, space1, literal, comment) { + return [ + isValidSymbol(label) ? "variable.other" : "invalid.illegal", + "text", + "keyword.control", + "text", + containsOnlySupportedCharacters(literal) ? "text" : "invalid.illegal", + "comment.line.character" + ]; + }, + regex: /^(\S+)?( +)(ALF)( )(\S.{4})(\s+.*)?$/ + }, { + token: function(label, space0, op, comment) { + return [ + isValidSymbol(label) ? "variable.other" : "invalid.illegal", + "text", + isValidOp(op) ? "keyword.control" : "invalid.illegal", + "comment.line.character" + ]; + }, + regex: /^(\S+)?( +)(\S+)(?:\s*)$/ + }, { + token: function(label, space0, op, space1, address, comment) { + return [ + isValidSymbol(label) ? "variable.other" : "invalid.illegal", + "text", + isValidOp(op) ? "keyword.control" : "invalid.illegal", + "text", + containsOnlySupportedCharacters(address) ? "text" : "invalid.illegal", + "comment.line.character" + ]; + }, + regex: /^(\S+)?( +)(\S+)( +)(\S+)(\s+.*)?$/ + }, { + defaultToken: "text" + }] + }; +}; + +oop.inherits(MixalHighlightRules, TextHighlightRules); + +exports.MixalHighlightRules = MixalHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/mushcode.js b/plugins/node_modules/ace/lib/ace/mode/mushcode.js new file mode 100644 index 00000000..b36ad23a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mushcode.js @@ -0,0 +1,116 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MushCodeRules = require("./mushcode_highlight_rules").MushCodeRules; +var PythonFoldMode = require("./folding/pythonic").FoldMode; +var Range = require("../range").Range; + +var Mode = function() { + this.HighlightRules = MushCodeRules; + this.foldingRules = new PythonFoldMode("\\:"); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + + this.checkOutdent = function(state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + + if (!tokens) + return false; + + // ignore trailing comments + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + + if (!last) + return false; + + return (last.type == "keyword" && outdents[last.value]); + }; + + this.autoOutdent = function(state, doc, row) { + // outdenting in python is slightly different because it always applies + // to the next line and only of a new line is inserted + + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + }; + + this.$id = "ace/mode/mushcode"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + + + diff --git a/plugins/node_modules/ace/lib/ace/mode/mushcode_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/mushcode_highlight_rules.js new file mode 100644 index 00000000..e3197bee --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mushcode_highlight_rules.js @@ -0,0 +1,569 @@ +/* + * MUSHCodeMode + */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var MushCodeRules = function() { + + + var keywords = ( + "@if|"+ + "@ifelse|"+ + "@switch|"+ + "@halt|"+ + "@dolist|"+ + "@create|"+ + "@scent|"+ + "@sound|"+ + "@touch|"+ + "@ataste|"+ + "@osound|"+ + "@ahear|"+ + "@aahear|"+ + "@amhear|"+ + "@otouch|"+ + "@otaste|"+ + "@drop|"+ + "@odrop|"+ + "@adrop|"+ + "@dropfail|"+ + "@odropfail|"+ + "@smell|"+ + "@oemit|"+ + "@emit|"+ + "@pemit|"+ + "@parent|"+ + "@clone|"+ + "@taste|"+ + "whisper|"+ + "page|"+ + "say|"+ + "pose|"+ + "semipose|"+ + "teach|"+ + "touch|"+ + "taste|"+ + "smell|"+ + "listen|"+ + "look|"+ + "move|"+ + "go|"+ + "home|"+ + "follow|"+ + "unfollow|"+ + "desert|"+ + "dismiss|"+ + "@tel" + ); + + var builtinConstants = ( + "=#0" + ); + + var builtinFunctions = ( + "default|"+ + "edefault|"+ + "eval|"+ + "get_eval|"+ + "get|"+ + "grep|"+ + "grepi|"+ + "hasattr|"+ + "hasattrp|"+ + "hasattrval|"+ + "hasattrpval|"+ + "lattr|"+ + "nattr|"+ + "poss|"+ + "udefault|"+ + "ufun|"+ + "u|"+ + "v|"+ + "uldefault|"+ + "xget|"+ + "zfun|"+ + "band|"+ + "bnand|"+ + "bnot|"+ + "bor|"+ + "bxor|"+ + "shl|"+ + "shr|"+ + "and|"+ + "cand|"+ + "cor|"+ + "eq|"+ + "gt|"+ + "gte|"+ + "lt|"+ + "lte|"+ + "nand|"+ + "neq|"+ + "nor|"+ + "not|"+ + "or|"+ + "t|"+ + "xor|"+ + "con|"+ + "entrances|"+ + "exit|"+ + "followers|"+ + "home|"+ + "lcon|"+ + "lexits|"+ + "loc|"+ + "locate|"+ + "lparent|"+ + "lsearch|"+ + "next|"+ + "num|"+ + "owner|"+ + "parent|"+ + "pmatch|"+ + "rloc|"+ + "rnum|"+ + "room|"+ + "where|"+ + "zone|"+ + "worn|"+ + "held|"+ + "carried|"+ + "acos|"+ + "asin|"+ + "atan|"+ + "ceil|"+ + "cos|"+ + "e|"+ + "exp|"+ + "fdiv|"+ + "fmod|"+ + "floor|"+ + "log|"+ + "ln|"+ + "pi|"+ + "power|"+ + "round|"+ + "sin|"+ + "sqrt|"+ + "tan|"+ + "aposs|"+ + "andflags|"+ + "conn|"+ + "commandssent|"+ + "controls|"+ + "doing|"+ + "elock|"+ + "findable|"+ + "flags|"+ + "fullname|"+ + "hasflag|"+ + "haspower|"+ + "hastype|"+ + "hidden|"+ + "idle|"+ + "isbaker|"+ + "lock|"+ + "lstats|"+ + "money|"+ + "who|"+ + "name|"+ + "nearby|"+ + "obj|"+ + "objflags|"+ + "photo|"+ + "poll|"+ + "powers|"+ + "pendingtext|"+ + "receivedtext|"+ + "restarts|"+ + "restarttime|"+ + "subj|"+ + "shortestpath|"+ + "tmoney|"+ + "type|"+ + "visible|"+ + "cat|"+ + "element|"+ + "elements|"+ + "extract|"+ + "filter|"+ + "filterbool|"+ + "first|"+ + "foreach|"+ + "fold|"+ + "grab|"+ + "graball|"+ + "index|"+ + "insert|"+ + "itemize|"+ + "items|"+ + "iter|"+ + "last|"+ + "ldelete|"+ + "map|"+ + "match|"+ + "matchall|"+ + "member|"+ + "mix|"+ + "munge|"+ + "pick|"+ + "remove|"+ + "replace|"+ + "rest|"+ + "revwords|"+ + "setdiff|"+ + "setinter|"+ + "setunion|"+ + "shuffle|"+ + "sort|"+ + "sortby|"+ + "splice|"+ + "step|"+ + "wordpos|"+ + "words|"+ + "add|"+ + "lmath|"+ + "max|"+ + "mean|"+ + "median|"+ + "min|"+ + "mul|"+ + "percent|"+ + "sign|"+ + "stddev|"+ + "sub|"+ + "val|"+ + "bound|"+ + "abs|"+ + "inc|"+ + "dec|"+ + "dist2d|"+ + "dist3d|"+ + "div|"+ + "floordiv|"+ + "mod|"+ + "modulo|"+ + "remainder|"+ + "vadd|"+ + "vdim|"+ + "vdot|"+ + "vmag|"+ + "vmax|"+ + "vmin|"+ + "vmul|"+ + "vsub|"+ + "vunit|"+ + "regedit|"+ + "regeditall|"+ + "regeditalli|"+ + "regediti|"+ + "regmatch|"+ + "regmatchi|"+ + "regrab|"+ + "regraball|"+ + "regraballi|"+ + "regrabi|"+ + "regrep|"+ + "regrepi|"+ + "after|"+ + "alphamin|"+ + "alphamax|"+ + "art|"+ + "before|"+ + "brackets|"+ + "capstr|"+ + "case|"+ + "caseall|"+ + "center|"+ + "containsfansi|"+ + "comp|"+ + "decompose|"+ + "decrypt|"+ + "delete|"+ + "edit|"+ + "encrypt|"+ + "escape|"+ + "if|"+ + "ifelse|"+ + "lcstr|"+ + "left|"+ + "lit|"+ + "ljust|"+ + "merge|"+ + "mid|"+ + "ostrlen|"+ + "pos|"+ + "repeat|"+ + "reverse|"+ + "right|"+ + "rjust|"+ + "scramble|"+ + "secure|"+ + "space|"+ + "spellnum|"+ + "squish|"+ + "strcat|"+ + "strmatch|"+ + "strinsert|"+ + "stripansi|"+ + "stripfansi|"+ + "strlen|"+ + "switch|"+ + "switchall|"+ + "table|"+ + "tr|"+ + "trim|"+ + "ucstr|"+ + "unsafe|"+ + "wrap|"+ + "ctitle|"+ + "cwho|"+ + "channels|"+ + "clock|"+ + "cflags|"+ + "ilev|"+ + "itext|"+ + "inum|"+ + "convsecs|"+ + "convutcsecs|"+ + "convtime|"+ + "ctime|"+ + "etimefmt|"+ + "isdaylight|"+ + "mtime|"+ + "secs|"+ + "msecs|"+ + "starttime|"+ + "time|"+ + "timefmt|"+ + "timestring|"+ + "utctime|"+ + "atrlock|"+ + "clone|"+ + "create|"+ + "cook|"+ + "dig|"+ + "emit|"+ + "lemit|"+ + "link|"+ + "oemit|"+ + "open|"+ + "pemit|"+ + "remit|"+ + "set|"+ + "tel|"+ + "wipe|"+ + "zemit|"+ + "fbcreate|"+ + "fbdestroy|"+ + "fbwrite|"+ + "fbclear|"+ + "fbcopy|"+ + "fbcopyto|"+ + "fbclip|"+ + "fbdump|"+ + "fbflush|"+ + "fbhset|"+ + "fblist|"+ + "fbstats|"+ + "qentries|"+ + "qentry|"+ + "play|"+ + "ansi|"+ + "break|"+ + "c|"+ + "asc|"+ + "die|"+ + "isdbref|"+ + "isint|"+ + "isnum|"+ + "isletters|"+ + "linecoords|"+ + "localize|"+ + "lnum|"+ + "nameshort|"+ + "null|"+ + "objeval|"+ + "r|"+ + "rand|"+ + "s|"+ + "setq|"+ + "setr|"+ + "soundex|"+ + "soundslike|"+ + "valid|"+ + "vchart|"+ + "vchart2|"+ + "vlabel|"+ + "@@|"+ + "bakerdays|"+ + "bodybuild|"+ + "box|"+ + "capall|"+ + "catalog|"+ + "children|"+ + "ctrailer|"+ + "darttime|"+ + "debt|"+ + "detailbar|"+ + "exploredroom|"+ + "fansitoansi|"+ + "fansitoxansi|"+ + "fullbar|"+ + "halfbar|"+ + "isdarted|"+ + "isnewbie|"+ + "isword|"+ + "lambda|"+ + "lobjects|"+ + "lplayers|"+ + "lthings|"+ + "lvexits|"+ + "lvobjects|"+ + "lvplayers|"+ + "lvthings|"+ + "newswrap|"+ + "numsuffix|"+ + "playerson|"+ + "playersthisweek|"+ + "randomad|"+ + "randword|"+ + "realrandword|"+ + "replacechr|"+ + "second|"+ + "splitamount|"+ + "strlenall|"+ + "text|"+ + "third|"+ + "tofansi|"+ + "totalac|"+ + "unique|"+ + "getaddressroom|"+ + "listpropertycomm|"+ + "listpropertyres|"+ + "lotowner|"+ + "lotrating|"+ + "lotratingcount|"+ + "lotvalue|"+ + "boughtproduct|"+ + "companyabb|"+ + "companyicon|"+ + "companylist|"+ + "companyname|"+ + "companyowners|"+ + "companyvalue|"+ + "employees|"+ + "invested|"+ + "productlist|"+ + "productname|"+ + "productowners|"+ + "productrating|"+ + "productratingcount|"+ + "productsoldat|"+ + "producttype|"+ + "ratedproduct|"+ + "soldproduct|"+ + "topproducts|"+ + "totalspentonproduct|"+ + "totalstock|"+ + "transfermoney|"+ + "uniquebuyercount|"+ + "uniqueproductsbought|"+ + "validcompany|"+ + "deletepicture|"+ + "fbsave|"+ + "getpicturesecurity|"+ + "haspicture|"+ + "listpictures|"+ + "picturesize|"+ + "replacecolor|"+ + "rgbtocolor|"+ + "savepicture|"+ + "setpicturesecurity|"+ + "showpicture|"+ + "piechart|"+ + "piechartlabel|"+ + "createmaze|"+ + "drawmaze|"+ + "drawwireframe" + ); + var keywordMapper = this.createKeywordMapper({ + "invalid.deprecated": "debugger", + "support.function": builtinFunctions, + "constant.language": builtinConstants, + "keyword": keywords + }, "identifier"); + + var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; + + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var octInteger = "(?:0[oO]?[0-7]+)"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var binInteger = "(?:0[bB][01]+)"; + var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; + + var exponent = "(?:[eE][+-]?\\d+)"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + + this.$rules = { + "start" : [ + { + token : "variable", // mush substitution register + regex : "%[0-9]{1}" + }, + { + token : "variable", // mush substitution register + regex : "%q[0-9A-Za-z]{1}" + }, + { + token : "variable", // mush special character register + regex : "%[a-zA-Z]{1}" + }, + { + token: "variable.language", + regex: "%[a-z0-9-_]+" + }, + { + token : "constant.numeric", // imaginary + regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token : "constant.numeric", // float + regex : floatNumber + }, { + token : "constant.numeric", // long integer + regex : integer + "[lL]\\b" + }, { + token : "constant.numeric", // integer + regex : integer + "\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token : "paren.lparen", + regex : "[\\[\\(\\{]" + }, { + token : "paren.rparen", + regex : "[\\]\\)\\}]" + }, { + token : "text", + regex : "\\s+" + } ] + }; +}; + +oop.inherits(MushCodeRules, TextHighlightRules); + +exports.MushCodeRules = MushCodeRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/mysql.js b/plugins/node_modules/ace/lib/ace/mode/mysql.js new file mode 100644 index 00000000..64b06eb7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mysql.js @@ -0,0 +1,51 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var TextMode = require("../mode/text").Mode; +var MysqlHighlightRules = require("./mysql_highlight_rules").MysqlHighlightRules; + +var Mode = function() { + this.HighlightRules = MysqlHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = ["--", "#"]; // todo space + this.blockComment = {start: "/*", end: "*/"}; + + this.$id = "ace/mode/mysql"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/mysql_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/mysql_highlight_rules.js new file mode 100644 index 00000000..aefb72c4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/mysql_highlight_rules.js @@ -0,0 +1,122 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var MysqlHighlightRules = function() { + + var mySqlKeywords = /*sql*/ "alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where" + /*mysql*/ + "|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat"; + var builtins = "by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl"; + var variable = "charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee"; + + //operatorChars: /^[*+\-%<>!=&|^]/, + + var keywordMapper = this.createKeywordMapper({ + "support.function": builtins, + "keyword": mySqlKeywords, + "constant": "false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat", + "variable.language": variable + }, "identifier", true); + + + function string(rule) { + var start = rule.start; + var escapeSeq = rule.escape; + return { + token: "string.start", + regex: start, + next: [ + {token: "constant.language.escape", regex: escapeSeq}, + {token: "string.end", next: "start", regex: start}, + {defaultToken: "string"} + ] + }; + } + + this.$rules = { + "start" : [ { + token : "comment", regex : "(?:-- |#).*$" + }, + string({start: '"', escape: /\\[0'"bnrtZ\\%_]?/}), + string({start: "'", escape: /\\[0'"bnrtZ\\%_]?/}), + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : /\/\*/, + next : "comment" + }, { + token : "constant.numeric", // hex + regex : /0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/ + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "constant.class", + regex : "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "constant.buildin", + regex : "`[^`]*`" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token : "paren.lparen", + regex : "[\\(]" + }, { + token : "paren.rparen", + regex : "[\\)]" + }, { + token : "text", + regex : "\\s+" + } ], + "comment" : [ + {token : "comment", regex : "\\*\\/", next : "start"}, + {defaultToken : "comment"} + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); + this.normalizeRules(); +}; + +oop.inherits(MysqlHighlightRules, TextHighlightRules); + +exports.MysqlHighlightRules = MysqlHighlightRules; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/nix.js b/plugins/node_modules/ace/lib/ace/mode/nix.js new file mode 100644 index 00000000..3048a569 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/nix.js @@ -0,0 +1,63 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Zef Hemel + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var CMode = require("./c_cpp").Mode; +var NixHighlightRules = require("./nix_highlight_rules").NixHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + CMode.call(this); + this.HighlightRules = NixHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, CMode); + +(function() { + this.lineCommentStart = "#"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/nix"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/nix_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/nix_highlight_rules.js new file mode 100644 index 00000000..5f114206 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/nix_highlight_rules.js @@ -0,0 +1,118 @@ +define(function(require, exports, module) { + "use strict"; + + var oop = require("../lib/oop"); + var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + + var NixHighlightRules = function() { + + var constantLanguage = "true|false"; + var keywordControl = "with|import|if|else|then|inherit"; + var keywordDeclaration = "let|in|rec"; + + var keywordMapper = this.createKeywordMapper({ + "constant.language.nix": constantLanguage, + "keyword.control.nix": keywordControl, + "keyword.declaration.nix": keywordDeclaration + }, "identifier"); + + this.$rules = { + "start": [{ + token: "comment", + regex: /#.*$/ + }, { + token: "comment", + regex: /\/\*/, + next: "comment" + }, { + token: "constant", + regex: "<[^>]+>" + }, { + regex: "(==|!=|<=?|>=?)", + token: ["keyword.operator.comparison.nix"] + }, { + regex: "((?:[+*/%-]|\\~)=)", + token: ["keyword.operator.assignment.arithmetic.nix"] + }, { + regex: "=", + token: "keyword.operator.assignment.nix" + }, { + token: "string", + regex: "''", + next: "qqdoc" + }, { + token: "string", + regex: "'", + next: "qstring" + }, { + token: "string", + regex: '"', + push: "qqstring" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + regex: "}", + token: function(val, start, stack) { + return stack[1] && stack[1].charAt(0) == "q" ? "constant.language.escape" : "text"; + }, + next: "pop" + }], + "comment": [{ + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + }], + "qqdoc": [ + { + token: "constant.language.escape", + regex: /\$\{/, + push: "start" + }, { + token: "string", + regex: "''", + next: "pop" + }, { + defaultToken: "string" + }], + "qqstring": [ + { + token: "constant.language.escape", + regex: /\$\{/, + push: "start" + }, { + token: "string", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }], + "qstring": [ + { + token: "constant.language.escape", + regex: /\$\{/, + push: "start" + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }; + + this.normalizeRules(); + }; + + oop.inherits(NixHighlightRules, TextHighlightRules); + + exports.NixHighlightRules = NixHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/nsis.js b/plugins/node_modules/ace/lib/ace/mode/nsis.js new file mode 100644 index 00000000..b20fce74 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/nsis.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var NSISHighlightRules = require("./nsis_highlight_rules").NSISHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = NSISHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = [";", "#"]; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/nsis"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/nsis_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/nsis_highlight_rules.js new file mode 100644 index 00000000..33dd5293 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/nsis_highlight_rules.js @@ -0,0 +1,173 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var NSISHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + token: "keyword.compiler.nsis", + regex: /^\s*!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/, + caseInsensitive: true + }, { + token: "keyword.command.nsis", + regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/, + caseInsensitive: true + }, { + token: "keyword.control.nsis", + regex: /^\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/, + caseInsensitive: true + }, { + token: "keyword.plugin.nsis", + regex: /^\s*\w+::\w+/, + caseInsensitive: true + }, { + token: "keyword.operator.comparison.nsis", + regex: /[!<>]?=|<>|<|>/ + }, { + token: "support.function.nsis", + regex: /(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|PageEx|PageExEnd)\b/, + caseInsensitive: true + }, { + token: "support.library.nsis", + regex: /\${[\w\.:-]+}/ + }, { + token: "constant.nsis", + regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, + caseInsensitive: true + }, { + token: "constant.library.nsis", + regex: /\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/ + }, { + token: "constant.language.boolean.true.nsis", + regex: /\b(?:true|on)\b/ + }, { + token: "constant.language.boolean.false.nsis", + regex: /\b(?:false|off)\b/ + }, { + token: "constant.language.option.nsis", + regex: /(?:\b|^\s*)(?:(?:un\.)?components|(?:un\.)?custom|(?:un\.)?directory|(?:un\.)?instfiles|(?:un\.)?license|uninstConfirm|admin|all|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|zlib)\b/, + caseInsensitive: true + }, { + token: "constant.language.slash-option.nsis", + regex: /\b\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/, + caseInsensitive: true + }, { + token: "constant.numeric.nsis", + regex: /\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/ + }, { + token: "entity.name.function.nsis", + regex: /\$\([\w\.:-]+\)/ + }, { + token: "storage.type.function.nsis", + regex: /\$\w+/ + }, { + token: "punctuation.definition.string.begin.nsis", + regex: /`/, + push: [{ + token: "punctuation.definition.string.end.nsis", + regex: /`/, + next: "pop" + }, { + token: "constant.character.escape.nsis", + regex: /\$\\./ + }, { + defaultToken: "string.quoted.back.nsis" + }] + }, { + token: "punctuation.definition.string.begin.nsis", + regex: /"/, + push: [{ + token: "punctuation.definition.string.end.nsis", + regex: /"/, + next: "pop" + }, { + token: "constant.character.escape.nsis", + regex: /\$\\./ + }, { + defaultToken: "string.quoted.double.nsis" + }] + }, { + token: "punctuation.definition.string.begin.nsis", + regex: /'/, + push: [{ + token: "punctuation.definition.string.end.nsis", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.nsis", + regex: /\$\\./ + }, { + defaultToken: "string.quoted.single.nsis" + }] + }, { + token: [ + "punctuation.definition.comment.nsis", + "comment.line.nsis" + ], + regex: /(;|#)(.*$)/ + }, { + token: "punctuation.definition.comment.nsis", + regex: /\/\*/, + push: [{ + token: "punctuation.definition.comment.nsis", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.nsis" + }] + }, { + token: "text", + regex: /(?:!include|!insertmacro)\b/ + }] + }; + + this.normalizeRules(); +}; + +NSISHighlightRules.metaData = { + comment: "\n\ttodo: - highlight functions\n\t", + fileTypes: ["nsi", "nsh"], + name: "NSIS", + scopeName: "source.nsis" +}; + + +oop.inherits(NSISHighlightRules, TextHighlightRules); + +exports.NSISHighlightRules = NSISHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/objectivec.js b/plugins/node_modules/ace/lib/ace/mode/objectivec.js new file mode 100644 index 00000000..be243606 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/objectivec.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ObjectiveCHighlightRules = require("./objectivec_highlight_rules").ObjectiveCHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = ObjectiveCHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/objectivec"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/objectivec_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/objectivec_highlight_rules.js new file mode 100644 index 00000000..aded867d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/objectivec_highlight_rules.js @@ -0,0 +1,330 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var C_Highlight_File = require("./c_cpp_highlight_rules"); +var CHighlightRules = C_Highlight_File.c_cppHighlightRules; + +var ObjectiveCHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + var escapedConstRe = "\\\\(?:[abefnrtv'\"?\\\\]|" + + "[0-3]\\d{1,2}|" + + "[4-7]\\d?|" + + "222|" + + "x[a-zA-Z0-9]+)"; + + var specialVariables = [{ + regex: "\\b_cmd\\b", + token: "variable.other.selector.objc" + }, { + regex: "\\b(?:self|super)\\b", + token: "variable.language.objc" + } + ]; + + var cObj = new CHighlightRules(); + var cRules = cObj.getRules(); + + this.$rules = { + "start": [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, + { + token: [ "storage.type.objc", "punctuation.definition.storage.type.objc", + "entity.name.type.objc", "text", "entity.other.inherited-class.objc" + ], + regex: "(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)" + }, + { + token: [ "storage.type.objc" ], + regex: "(@end)" + }, + { + token: [ "storage.type.objc", "entity.name.type.objc", + "entity.other.inherited-class.objc" + ], + regex: "(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?" + }, + { + token: "string.begin.objc", + regex: '@"', + next: "constant_NSString" + }, + { + token: "storage.type.objc", + regex: "\\bid\\s*<", + next: "protocol_list" + }, + { + token: "keyword.control.macro.objc", + regex: "\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b" + }, + { + token: ["punctuation.definition.keyword.objc", "keyword.control.exception.objc"], + regex: "(@)(try|catch|finally|throw)\\b" + }, + { + token: ["punctuation.definition.keyword.objc", "keyword.other.objc"], + regex: "(@)(defs|encode)\\b" + }, + { + token: ["storage.type.id.objc", "text"], + regex: "(\\bid\\b)(\\s|\\n)?" + }, + { + token: "storage.type.objc", + regex: "\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b" + }, + { + token: [ "punctuation.definition.storage.type.objc", "storage.type.objc"], + regex: "(@)(class|protocol)\\b" + }, + { + token: [ "punctuation.definition.storage.type.objc", "punctuation"], + regex: "(@selector)(\\s*\\()", + next: "selectors" + }, + { + token: [ "punctuation.definition.storage.modifier.objc", "storage.modifier.objc"], + regex: "(@)(synchronized|public|private|protected|package)\\b" + }, + { + token: "constant.language.objc", + regex: "\\bYES|NO|Nil|nil\\b" + }, + { + token: "support.variable.foundation", + regex: "\\bNSApp\\b" + }, + { + token: [ "support.function.cocoa.leopard"], + regex: "(?:\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol|ize(?:ToCGSize|FromCGSize))|Draw(?:NinePartImage|ThreePartImage)|P(?:oint(?:ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))(?:\\b)" + }, + { + token: ["support.function.cocoa"], + regex: "(?:\\b)(NS(?:R(?:ound(?:DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(?:CriticalAlertPanel(?:RelativeToWindow)?|InformationalAlertPanel(?:RelativeToWindow)?|AlertPanel(?:RelativeToWindow)?)|e(?:set(?:MapTable|HashTable)|c(?:ycleZone|t(?:Clip(?:List)?|F(?:ill(?:UsingOperation|List(?:UsingOperation|With(?:Grays|Colors(?:UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(?:dPixel|l(?:MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(?:SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(?:s)?|WindowServerMemory|AlertPanel)|M(?:i(?:n(?:X|Y)|d(?:X|Y))|ouseInRect|a(?:p(?:Remove|Get|Member|Insert(?:IfAbsent|KnownAbsent)?)|ke(?:R(?:ect|ange)|Size|Point)|x(?:Range|X|Y)))|B(?:itsPer(?:SampleFromDepth|PixelFromDepth)|e(?:stDepth|ep|gin(?:CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(?:ho(?:uldRetainWithZone|w(?:sServicesMenuItem|AnimationEffect))|tringFrom(?:R(?:ect|ange)|MapTable|S(?:ize|elector)|HashTable|Class|Point)|izeFromString|e(?:t(?:ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(?:Big(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|Short|Host(?:ShortTo(?:Big|Little)|IntTo(?:Big|Little)|DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|Long(?:To(?:Big|Little)|LongTo(?:Big|Little)))|Int|Double|Float|L(?:ittle(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|ong(?:Long)?)))|H(?:ighlightRect|o(?:stByteOrder|meDirectory(?:ForUser)?)|eight|ash(?:Remove|Get|Insert(?:IfAbsent|KnownAbsent)?)|FSType(?:CodeFromFileType|OfFile))|N(?:umberOfColorComponents|ext(?:MapEnumeratorPair|HashEnumeratorItem))|C(?:o(?:n(?:tainsRect|vert(?:GlyphsToPackedGlyphs|Swapped(?:DoubleToHost|FloatToHost)|Host(?:DoubleToSwapped|FloatToSwapped)))|unt(?:MapTable|HashTable|Frames|Windows(?:ForContext)?)|py(?:M(?:emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(?:MapTables|HashTables))|lassFromString|reate(?:MapTable(?:WithZone)?|HashTable(?:WithZone)?|Zone|File(?:namePboardType|ContentsPboardType)))|TemporaryDirectory|I(?:s(?:ControllerMarker|EmptyRect|FreedObject)|n(?:setRect|crementExtraRefCount|te(?:r(?:sect(?:sRect|ionR(?:ect|ange))|faceStyleForKey)|gralRect)))|Zone(?:Realloc|Malloc|Name|Calloc|Fr(?:omPointer|ee))|O(?:penStepRootDirectory|ffsetRect)|D(?:i(?:sableScreenUpdates|videRect)|ottedFrameRect|e(?:c(?:imal(?:Round|Multiply|S(?:tring|ubtract)|Normalize|Co(?:py|mpa(?:ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(?:MemoryPages|Object))|raw(?:Gr(?:oove|ayBezel)|B(?:itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(?:hiteBezel|indowBackground)|LightBezel))|U(?:serName|n(?:ionR(?:ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(?:Bundle(?:Setup|Cleanup)|Setup(?:VirtualMachine)?|Needs(?:ToLoadClasses|VirtualMachine)|ClassesF(?:orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(?:oint(?:InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(?:n(?:d(?:MapTableEnumeration|HashTableEnumeration)|umerate(?:MapTable|HashTable)|ableScreenUpdates)|qual(?:R(?:ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(?:ileTypeForHFSTypeCode|ullUserName|r(?:ee(?:MapTable|HashTable)|ame(?:Rect(?:WithWidth(?:UsingOperation)?)?|Address)))|Wi(?:ndowList(?:ForContext)?|dth)|Lo(?:cationInRange|g(?:v|PageSize)?)|A(?:ccessibility(?:R(?:oleDescription(?:ForUIElement)?|aiseBadArgumentException)|Unignored(?:Children(?:ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(?:Main|Load)|vailableWindowDepths|ll(?:MapTable(?:Values|Keys)|HashTableObjects|ocate(?:MemoryPages|Collectable|Object)))))(?:\\b)" + }, + { + token: ["support.class.cocoa.leopard"], + regex: "(?:\\b)(NS(?:RuleEditor|G(?:arbageCollector|radient)|MapTable|HashTable|Co(?:ndition|llectionView(?:Item)?)|T(?:oolbarItemGroup|extInputClient|r(?:eeNode|ackingArea))|InvocationOperation|Operation(?:Queue)?|D(?:ictionaryController|ockTile)|P(?:ointer(?:Functions|Array)|athC(?:o(?:ntrol(?:Delegate)?|mponentCell)|ell(?:Delegate)?)|r(?:intPanelAccessorizing|edicateEditor(?:RowTemplate)?))|ViewController|FastEnumeration|Animat(?:ionContext|ablePropertyContainer)))(?:\\b)" + }, + { + token: ["support.class.cocoa"], + regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)" + }, + { + token: ["support.type.cocoa.leopard"], + regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)" + }, + { + token: ["support.class.quartz"], + regex: "(?:\\b)(C(?:I(?:Sampler|Co(?:ntext|lor)|Image(?:Accumulator)?|PlugIn(?:Registration)?|Vector|Kernel|Filter(?:Generator|Shape)?)|A(?:Renderer|MediaTiming(?:Function)?|BasicAnimation|ScrollLayer|Constraint(?:LayoutManager)?|T(?:iledLayer|extLayer|rans(?:ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(?:nimation(?:Group)?|ction))))(?:\\b)" + }, + { + token: ["support.type.quartz"], + regex: "(?:\\b)(C(?:G(?:Float|Point|Size|Rect)|IFormat|AConstraintAttribute))(?:\\b)" + }, + { + token: ["support.type.cocoa"], + regex: "(?:\\b)(NS(?:R(?:ect(?:Edge)?|ange)|G(?:lyph(?:Relation|LayoutMode)?|radientType)|M(?:odalSession|a(?:trixMode|p(?:Table|Enumerator)))|B(?:itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(?:cr(?:oll(?:er(?:Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(?:Granularity|Direction|Affinity)|wapped(?:Double|Float)|aveOperationType)|Ha(?:sh(?:Table|Enumerator)|ndler(?:2)?)|C(?:o(?:ntrol(?:Size|Tint)|mp(?:ositingOperation|arisonResult))|ell(?:State|Type|ImagePosition|Attribute))|T(?:hreadPrivate|ypesetterGlyphInfo|i(?:ckMarkPosition|tlePosition|meInterval)|o(?:ol(?:TipTag|bar(?:SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(?:TabType|Alignment)|ab(?:State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(?:ContextAuxiliary|PixelFormatAuxiliary)|D(?:ocumentChangeType|atePickerElementFlags|ra(?:werState|gOperation))|UsableScrollerParts|P(?:oint|r(?:intingPageOrder|ogressIndicator(?:Style|Th(?:ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(?:nt(?:SymbolicTraits|TraitMask|Action)|cusRingType)|W(?:indow(?:OrderingMode|Depth)|orkspace(?:IconCreationOptions|LaunchOptions)|ritingDirection)|L(?:ineBreakMode|ayout(?:Status|Direction))|A(?:nimation(?:Progress|Effect)|ppl(?:ication(?:TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle)))(?:\\b)" + }, + { + token: ["support.constant.cocoa"], + regex: "(?:\\b)(NS(?:NotFound|Ordered(?:Ascending|Descending|Same)))(?:\\b)" + }, + { + token: ["support.constant.notification.cocoa.leopard"], + regex: "(?:\\b)(NS(?:MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification)(?:\\b)" + }, + { + token: ["support.constant.notification.cocoa"], + regex: "(?:\\b)(NS(?:Menu(?:Did(?:RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(?:ystemColorsDidChange|plitView(?:DidResizeSubviews|WillResizeSubviews))|C(?:o(?:nt(?:extHelpModeDid(?:Deactivate|Activate)|rolT(?:intDidChange|extDid(?:BeginEditing|Change|EndEditing)))|lor(?:PanelColorDidChange|ListDidChange)|mboBox(?:Selection(?:IsChanging|DidChange)|Will(?:Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(?:oolbar(?:DidRemoveItem|WillAddItem)|ext(?:Storage(?:DidProcessEditing|WillProcessEditing)|Did(?:BeginEditing|Change|EndEditing)|View(?:DidChange(?:Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)))|ImageRepRegistryDidChange|OutlineView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)|Item(?:Did(?:Collapse|Expand)|Will(?:Collapse|Expand)))|Drawer(?:Did(?:Close|Open)|Will(?:Close|Open))|PopUpButton(?:CellWillPopUp|WillPopUp)|View(?:GlobalFrameDidChange|BoundsDidChange|F(?:ocusDidChange|rameDidChange))|FontSetChanged|W(?:indow(?:Did(?:Resi(?:ze|gn(?:Main|Key))|M(?:iniaturize|ove)|Become(?:Main|Key)|ChangeScreen(?:|Profile)|Deminiaturize|Update|E(?:ndSheet|xpose))|Will(?:M(?:iniaturize|ove)|BeginSheet|Close))|orkspace(?:SessionDid(?:ResignActive|BecomeActive)|Did(?:Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(?:Sleep|Unmount|PowerOff|LaunchApplication)))|A(?:ntialiasThresholdChanged|ppl(?:ication(?:Did(?:ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(?:nhide|pdate)|FinishLaunching)|Will(?:ResignActive|BecomeActive|Hide|Terminate|U(?:nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification)(?:\\b)" + }, + { + token: ["support.constant.cocoa.leopard"], + regex: "(?:\\b)(NS(?:RuleEditor(?:RowType(?:Simple|Compound)|NestingMode(?:Si(?:ngle|mple)|Compound|List))|GradientDraws(?:BeforeStartingLocation|AfterEndingLocation)|M(?:inusSetExpressionType|a(?:chPortDeallocate(?:ReceiveRight|SendRight|None)|pTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(?:oxCustom|undleExecutableArchitecture(?:X86|I386|PPC(?:64)?)|etweenPredicateOperatorType|ackgroundStyle(?:Raised|Dark|L(?:ight|owered)))|S(?:tring(?:DrawingTruncatesLastVisibleLine|EncodingConversion(?:ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(?:e(?:ech(?:SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(?:GrammarFlag|SpellingFlag))|litViewDividerStyleThi(?:n|ck))|e(?:rvice(?:RequestTimedOutError|M(?:iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(?:inimum|aximum)|Application(?:NotFoundError|LaunchFailedError))|gmentStyle(?:Round(?:Rect|ed)|SmallSquare|Capsule|Textured(?:Rounded|Square)|Automatic)))|H(?:UDWindowMask|ashTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(?:oModeColorPanel|etServiceNoAutoRename)|C(?:hangeRedone|o(?:ntainsPredicateOperatorType|l(?:orRenderingIntent(?:RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(?:None|ContentArea|TrackableArea|EditableTextArea))|T(?:imeZoneNameStyle(?:S(?:hort(?:Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(?:Regular|SourceList)|racking(?:Mouse(?:Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(?:ssumeInside|ctive(?:In(?:KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(?:n(?:tersectSetExpressionType|dexedColorSpaceModel)|mageScale(?:None|Proportionally(?:Down|UpOrDown)|AxesIndependently))|Ope(?:nGLPFAAllowOfflineRenderers|rationQueue(?:DefaultMaxConcurrentOperationCount|Priority(?:High|Normal|Very(?:High|Low)|Low)))|D(?:iacriticInsensitiveSearch|ownloadsDirectory)|U(?:nionSetExpressionType|TF(?:16(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(?:ointerFunctions(?:Ma(?:chVirtualMemory|llocMemory)|Str(?:ongMemory|uctPersonality)|C(?:StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(?:paque(?:Memory|Personality)|bjectP(?:ointerPersonality|ersonality)))|at(?:hStyle(?:Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(?:Scaling|Copies|Orientation|P(?:a(?:perSize|ge(?:Range|SetupAccessory))|review)))|Executable(?:RuntimeMismatchError|NotLoadableError|ErrorM(?:inimum|aximum)|L(?:inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(?:Initial|Prior)|F(?:i(?:ndPanelSubstringMatchType(?:StartsWith|Contains|EndsWith|FullWord)|leRead(?:TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(?:ndow(?:BackingLocation(?:MainMemory|Default|VideoMemory)|Sharing(?:Read(?:Only|Write)|None)|CollectionBehavior(?:MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType))(?:\\b)" + }, + { + token: ["support.constant.cocoa"], + regex: "(?:\\b)(NS(?:R(?:GB(?:ModeColorPanel|ColorSpaceModel)|ight(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey)|ound(?:RectBezelStyle|Bankers|ed(?:BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(?:CapStyle|JoinStyle))|un(?:StoppedResponse|ContinuesResponse|AbortedResponse)|e(?:s(?:izableWindowMask|et(?:CursorRectsRunLoopOrdering|FunctionKey))|ce(?:ssedBezelStyle|iver(?:sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(?:evancyLevelIndicatorStyle|ative(?:Before|After))|gular(?:SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(?:n(?:domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(?:ModeMatrix|Button)))|G(?:IFFileType|lyph(?:Below|Inscribe(?:B(?:elow|ase)|Over(?:strike|Below)|Above)|Layout(?:WithPrevious|A(?:tAPoint|gainstAPoint))|A(?:ttribute(?:BidiLevel|Soft|Inscribe|Elastic)|bove))|r(?:ooveBorder|eaterThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|a(?:y(?:ModeColorPanel|ColorSpaceModel)|dient(?:None|Con(?:cave(?:Strong|Weak)|vex(?:Strong|Weak)))|phiteControlTint)))|XML(?:N(?:o(?:tationDeclarationKind|de(?:CompactEmptyElement|IsCDATA|OptionsNone|Use(?:SingleQuotes|DoubleQuotes)|Pre(?:serve(?:NamespaceOrder|C(?:haracterReferences|DATA)|DTD|Prefixes|E(?:ntities|mptyElements)|Quotes|Whitespace|A(?:ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(?:ocument(?:X(?:MLKind|HTMLKind|Include)|HTMLKind|T(?:idy(?:XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(?:arser(?:GTRequiredError|XMLDeclNot(?:StartedError|FinishedError)|Mi(?:splaced(?:XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(?:StartedError|FinishedError))|S(?:t(?:andaloneValueError|ringNot(?:StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(?:MTOKENRequiredError|o(?:t(?:ationNot(?:StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(?:haracterRef(?:In(?:DTDError|PrologError|EpilogError)|AtEOFError)|o(?:nditionalSectionNot(?:StartedError|FinishedError)|mment(?:NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(?:ternalError|valid(?:HexCharacterRefError|C(?:haracter(?:RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(?:NameError|Error)))|OutOfMemoryError|D(?:ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(?:RI(?:RequiredError|FragmentError)|n(?:declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(?:CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(?:MissingSemiError|NoNameError|In(?:Internal(?:SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(?:ocessingInstructionNot(?:StartedError|FinishedError)|ematureDocumentEndError))|E(?:n(?:codingNotSupportedError|tity(?:Ref(?:In(?:DTDError|PrologError|EpilogError)|erence(?:MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(?:StartedError|FinishedError)|Is(?:ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(?:StartedError|FinishedError)|xt(?:ernalS(?:tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(?:iteralNot(?:StartedError|FinishedError)|T(?:RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(?:RedefinedError|HasNoValueError|Not(?:StartedError|FinishedError)|ListNot(?:StartedError|FinishedError)))|rocessingInstructionKind)|E(?:ntity(?:GeneralKind|DeclarationKind|UnparsedKind|P(?:ar(?:sedKind|ameterKind)|redefined))|lement(?:Declaration(?:MixedKind|UndefinedKind|E(?:lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(?:N(?:MToken(?:sKind|Kind)|otationKind)|CDATAKind|ID(?:Ref(?:sKind|Kind)|Kind)|DeclarationKind|En(?:tit(?:yKind|iesKind)|umerationKind)|Kind))|M(?:i(?:n(?:XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(?:nthCalendarUnit|deSwitchFunctionKey|use(?:Moved(?:Mask)?|E(?:ntered(?:Mask)?|ventSubtype|xited(?:Mask)?))|veToBezierPathElement|mentary(?:ChangeButton|Push(?:Button|InButton)|Light(?:Button)?))|enuFunctionKey|a(?:c(?:intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(?:XEdge|YEdge))|ACHOperatingSystem)|B(?:MPFileType|o(?:ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(?:Se(?:condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(?:zelBorder|velLineJoinStyle|low(?:Bottom|Top)|gin(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(?:spaceCharacter|tabTextMovement|ingStore(?:Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(?:owser(?:NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(?:h(?:ift(?:JISStringEncoding|KeyMask)|ow(?:ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(?:s(?:ReqFunctionKey|tem(?:D(?:omainMask|efined(?:Mask)?)|FunctionKey))|mbolStringEncoding)|c(?:a(?:nnedOption|le(?:None|ToFit|Proportionally))|r(?:oll(?:er(?:NoPart|Increment(?:Page|Line|Arrow)|Decrement(?:Page|Line|Arrow)|Knob(?:Slot)?|Arrows(?:M(?:inEnd|axEnd)|None|DefaultSetting))|Wheel(?:Mask)?|LockFunctionKey)|eenChangedEventType))|t(?:opFunctionKey|r(?:ingDrawing(?:OneShot|DisableScreenFontSubstitution|Uses(?:DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(?:Status(?:Reading|NotOpen|Closed|Open(?:ing)?|Error|Writing|AtEnd)|Event(?:Has(?:BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(?:ndEncountered|rrorOccurred)))))|i(?:ngle(?:DateMode|UnderlineStyle)|ze(?:DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(?:condCalendarUnit|lect(?:By(?:Character|Paragraph|Word)|i(?:ng(?:Next|Previous)|onAffinity(?:Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(?:Momentary|Select(?:One|Any)))|quareLineCapStyle|witchButton|ave(?:ToOperation|Op(?:tions(?:Yes|No|Ask)|eration)|AsOperation)|mall(?:SquareBezelStyle|C(?:ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(?:ighlightModeMatrix|SBModeColorPanel|o(?:ur(?:Minute(?:SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(?:Never|OnlyFromMainDocumentDomain|Always)|e(?:lp(?:ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(?:MonthDa(?:yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(?:o(?:n(?:StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(?:ification(?:SuspensionBehavior(?:Hold|Coalesce|D(?:eliverImmediately|rop))|NoCoalescing|CoalescingOn(?:Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(?:cr(?:iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(?:itle|opLevelContainersSpecifierError|abs(?:BezelBorder|NoBorder|LineBorder))|I(?:nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(?:ll(?:Glyph|CellType)|m(?:eric(?:Search|PadKeyMask)|berFormatter(?:Round(?:Half(?:Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(?:10|Default)|S(?:cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(?:ercentStyle|ad(?:Before(?:Suffix|Prefix)|After(?:Suffix|Prefix))))))|e(?:t(?:Services(?:BadArgumentError|NotFoundError|C(?:ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(?:StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(?:t(?:iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(?:hange(?:ReadOtherContents|GrayCell(?:Mask)?|BackgroundCell(?:Mask)?|Cleared|Done|Undone|Autosaved)|MYK(?:ModeColorPanel|ColorSpaceModel)|ircular(?:BezelStyle|Slider)|o(?:n(?:stantValueExpressionType|t(?:inuousCapacityLevelIndicatorStyle|entsCellMask|ain(?:sComparison|erSpecifierError)|rol(?:Glyph|KeyMask))|densedFontMask)|lor(?:Panel(?:RGBModeMask|GrayModeMask|HSBModeMask|C(?:MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(?:p(?:osite(?:XOR|Source(?:In|O(?:ut|ver)|Atop)|Highlight|C(?:opy|lear)|Destination(?:In|O(?:ut|ver)|Atop)|Plus(?:Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(?:stom(?:SelectorPredicateOperatorType|PaletteModeColorPanel)|r(?:sor(?:Update(?:Mask)?|PointingDevice)|veToBezierPathElement))|e(?:nterT(?:extAlignment|abStopType)|ll(?:State|H(?:ighlighted|as(?:Image(?:Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(?:Bordered|InsetButton)|Disabled|Editable|LightsBy(?:Gray|Background|Contents)|AllowsMixedState))|l(?:ipPagination|o(?:s(?:ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(?:ControlTint|DisplayFunctionKey|LineFunctionKey))|a(?:seInsensitive(?:Search|PredicateOption)|n(?:notCreateScriptCommandError|cel(?:Button|TextMovement))|chesDirectory|lculation(?:NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(?:itical(?:Request|AlertStyle)|ayonModeColorPanel))|T(?:hick(?:SquareBezelStyle|erSquareBezelStyle)|ypesetter(?:Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(?:ineBreakAction|atestBehavior))|i(?:ckMark(?:Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(?:olbarItemVisibilityPriority(?:Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(?:Compression(?:N(?:one|EXT)|CCITTFAX(?:3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(?:rminate(?:Now|Cancel|Later)|xt(?:Read(?:InapplicableDocumentTypeError|WriteErrorM(?:inimum|aximum))|Block(?:M(?:i(?:nimum(?:Height|Width)|ddleAlignment)|a(?:rgin|ximum(?:Height|Width)))|B(?:o(?:ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(?:ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(?:Characters|Attributes)|CellType|ured(?:RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(?:FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(?:RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(?:Character|TextMovement|le(?:tP(?:oint(?:Mask|EventSubtype)?|roximity(?:Mask|EventSubtype)?)|Column(?:NoResizing|UserResizingMask|AutoresizingMask)|View(?:ReverseSequentialColumnAutoresizingStyle|GridNone|S(?:olid(?:HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(?:n(?:sert(?:CharFunctionKey|FunctionKey|LineFunctionKey)|t(?:Type|ernalS(?:criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(?:Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(?:2022JPStringEncoding|Latin(?:1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(?:R(?:ight|ep(?:MatchesDevice|LoadStatus(?:ReadingHeader|Completed|InvalidData|Un(?:expectedEOF|knownType)|WillNeedAllData)))|Below|C(?:ellType|ache(?:BySize|Never|Default|Always))|Interpolation(?:High|None|Default|Low)|O(?:nly|verlaps)|Frame(?:Gr(?:oove|ayBezel)|Button|None|Photo)|L(?:oadStatus(?:ReadError|C(?:ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(?:lign(?:Right|Bottom(?:Right|Left)?|Center|Top(?:Right|Left)?|Left)|bove)))|O(?:n(?:State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|TextMovement)|SF1OperatingSystem|pe(?:n(?:GL(?:GO(?:Re(?:setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(?:R(?:obust|endererID)|M(?:inimumPolicy|ulti(?:sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(?:creenMask|te(?:ncilSize|reo)|ingleRenderer|upersample|ample(?:s|Buffers|Alpha))|NoRecovery|C(?:o(?:lor(?:Size|Float)|mpliant)|losestPolicy)|OffScreen|D(?:oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(?:cc(?:umSize|elerated)|ux(?:Buffers|DepthStencil)|l(?:phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(?:criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(?:B(?:itfield|oolType)|S(?:hortType|tr(?:ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(?:Type|longType)|ArrayType))|D(?:i(?:s(?:c(?:losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(?:Selection|PredicateModifier))|o(?:c(?:ModalWindowMask|ument(?:Directory|ationDirectory))|ubleType|wn(?:TextMovement|ArrowFunctionKey))|e(?:s(?:cendingPageOrder|ktopDirectory)|cimalTabStopType|v(?:ice(?:NColorSpaceModel|IndependentModifierFlagsMask)|eloper(?:Directory|ApplicationDirectory))|fault(?:ControlTint|TokenStyle)|lete(?:Char(?:acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(?:yCalendarUnit|teFormatter(?:MediumStyle|Behavior(?:10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(?:wer(?:Clos(?:ingState|edState)|Open(?:ingState|State))|gOperation(?:Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(?:ser(?:CancelledError|D(?:irectory|omainMask)|FunctionKey)|RL(?:Handle(?:NotLoaded|Load(?:Succeeded|InProgress|Failed))|CredentialPersistence(?:None|Permanent|ForSession))|n(?:scaledWindowMask|cachedRead|i(?:codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(?:o(?:CloseGroupingRunLoopOrdering|FunctionKey)|e(?:finedDateComponent|rline(?:Style(?:Single|None|Thick|Double)|Pattern(?:Solid|D(?:ot|ash(?:Dot(?:Dot)?)?)))))|known(?:ColorSpaceModel|P(?:ointingDevice|ageOrder)|KeyS(?:criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(?:dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(?:ustifiedTextAlignment|PEG(?:2000FileType|FileType)|apaneseEUC(?:GlyphPacking|StringEncoding))|P(?:o(?:s(?:t(?:Now|erFontMask|WhenIdle|ASAP)|iti(?:on(?:Replace|Be(?:fore|ginning)|End|After)|ve(?:IntType|DoubleType|FloatType)))|pUp(?:NoArrow|ArrowAt(?:Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(?:InCell(?:Mask)?|OnPushOffButton)|e(?:n(?:TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(?:Mask)?)|P(?:S(?:caleField|tatus(?:Title|Field)|aveButton)|N(?:ote(?:Title|Field)|ame(?:Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(?:a(?:perFeedButton|ge(?:Range(?:To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(?:useFunctionKey|ragraphSeparatorCharacter|ge(?:DownFunctionKey|UpFunctionKey))|r(?:int(?:ing(?:ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(?:NotFound|OK|Error)|FunctionKey)|o(?:p(?:ertyList(?:XMLFormat|MutableContainers(?:AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(?:BarStyle|SpinningStyle|Preferred(?:SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(?:ssedTab|vFunctionKey))|L(?:HeightForm|CancelButton|TitleField|ImageButton|O(?:KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(?:n(?:terCharacter|d(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|v(?:e(?:nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(?:Comparison|PredicateOperatorType)|ra(?:serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(?:clude(?:10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(?:i(?:ew(?:M(?:in(?:XMargin|YMargin)|ax(?:XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(?:lidationErrorM(?:inimum|aximum)|riableExpressionType))|Key(?:SpecifierEvaluationScriptError|Down(?:Mask)?|Up(?:Mask)?|PathExpressionType|Value(?:MinusSetMutation|SetSetMutation|Change(?:Re(?:placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(?:New|Old)|UnionSetMutation|ValidationError))|QTMovie(?:NormalPlayback|Looping(?:BackAndForthPlayback|Playback))|F(?:1(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(?:nd(?:PanelAction(?:Replace(?:A(?:ndFind|ll(?:InSelection)?))?|S(?:howFindPanel|e(?:tFindString|lectAll(?:InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(?:Read(?:No(?:SuchFileError|PermissionError)|CorruptFileError|In(?:validFileNameError|applicableStringEncodingError)|Un(?:supportedSchemeError|knownError))|HandlingPanel(?:CancelButton|OKButton)|NoSuchFileError|ErrorM(?:inimum|aximum)|Write(?:NoPermissionError|In(?:validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(?:supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(?:nt(?:Mo(?:noSpaceTrait|dernSerifsClass)|BoldTrait|S(?:ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(?:o(?:ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(?:ntegerAdvancementsRenderingMode|talicTrait)|O(?:ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(?:nknownClass|IOptimizedTrait)|Panel(?:S(?:hadowEffectModeMask|t(?:andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(?:ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(?:amilyClassMask|reeformSerifsClass)|Antialiased(?:RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(?:Below|Type(?:None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(?:attingError(?:M(?:inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(?:ExpressionType|KeyMask)|3(?:1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(?:RevertButton|S(?:ize(?:Title|Field)|etButton)|CurrentField|Preview(?:Button|Field))|l(?:oat(?:ingPointSamplesBitmapFormat|Type)|agsChanged(?:Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(?:heelModeColorPanel|indow(?:s(?:NTOperatingSystem|CP125(?:1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(?:InterfaceStyle|OperatingSystem))|M(?:iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(?:NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(?:ctivation|ddingToRecents)|A(?:sync|nd(?:Hide(?:Others)?|Print)|llowingClassicStartup))|eek(?:day(?:CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(?:ntsBidiLevels|rningAlertStyle)|r(?:itingDirection(?:RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(?:i(?:stModeMatrix|ne(?:Moves(?:Right|Down|Up|Left)|B(?:order|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Middle|Head|Tail)|WordWrapping))|S(?:eparatorCharacter|weep(?:Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(?:ssThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey))|a(?:yout(?:RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(?:sc(?:iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(?:y(?:Type|PredicateModifier|EventMask)|choredSearch|imation(?:Blocking|Nonblocking(?:Threaded)?|E(?:ffect(?:DisappearingItemDefault|Poof)|ase(?:In(?:Out)?|Out))|Linear)|dPredicateType)|t(?:Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(?:obe(?:GB1CharacterCollection|CNS1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(?:saveOperation|Pagination)|pp(?:lication(?:SupportDirectory|D(?:irectory|e(?:fined(?:Mask)?|legateReply(?:Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(?:Mask)?)|l(?:ternateKeyMask|pha(?:ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(?:SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(?:ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(?:sWrongScriptError|EvaluationScriptError)|bove(?:Bottom|Top)|WTEventType)))(?:\\b)" + }, + { + token: "support.function.C99.c", + regex: C_Highlight_File.cFunctions + }, + { + token : cObj.getKeywords(), + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "punctuation.section.scope.begin.objc", + regex: "\\[", + next: "bracketed_content" + }, + { + token: "meta.function.objc", + regex: "^(?:-|\\+)\\s*" + } + ], + "constant_NSString": [ + { + token: "constant.character.escape.objc", + regex: escapedConstRe + }, + { + token: "invalid.illegal.unknown-escape.objc", + regex: "\\\\." + }, + { + token: "string", + regex: '[^"\\\\]+' + }, + { + token: "punctuation.definition.string.end", + regex: "\"", + next: "start" + } + ], + "protocol_list": [ + { + token: "punctuation.section.scope.end.objc", + regex: ">", + next: "start" + }, + { + token: "support.other.protocol.objc", + regex: "\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b" + } + ], + "selectors": [ + { + token: "support.function.any-method.name-of-parameter.objc", + regex: "\\b(?:[a-zA-Z_:][\\w]*)+" + }, + { + token: "punctuation", + regex: "\\)", + next: "start" + } + ], + "bracketed_content": [ + { + token: "punctuation.section.scope.end.objc", + regex: "]", + next: "start" + }, + { + token: ["support.function.any-method.objc"], + regex: "(?:predicateWithFormat:| NSPredicate predicateWithFormat:)", + next: "start" + }, + { + token: "support.function.any-method.objc", + regex: "\\w+(?::|(?=]))", + next: "start" + } + ], + "bracketed_strings": [ + { + token: "punctuation.section.scope.end.objc", + regex: "]", + next: "start" + }, + { + token: "keyword.operator.logical.predicate.cocoa", + regex: "\\b(?:AND|OR|NOT|IN)\\b" + }, + { + token: ["invalid.illegal.unknown-method.objc", "punctuation.separator.arguments.objc"], + regex: "\\b(\\w+)(:)" + }, + { + regex: "\\b(?:ALL|ANY|SOME|NONE)\\b", + token: "constant.language.predicate.cocoa" + }, + { + regex: "\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b", + token: "constant.language.predicate.cocoa" + }, + { + regex: "\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b", + token: "keyword.operator.comparison.predicate.cocoa" + }, + { + regex: "\\bC(?:ASEINSENSITIVE|I)\\b", + token: "keyword.other.modifier.predicate.cocoa" + }, + { + regex: "\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b", + token: "keyword.other.predicate.cocoa" + }, + { + regex: escapedConstRe, + token: "constant.character.escape.objc" + }, + { + regex: "\\\\.", + token: "invalid.illegal.unknown-escape.objc" + }, + { + token: "string", + regex: '[^"\\\\]' + }, + { + token: "punctuation.definition.string.end.objc", + regex: "\"", + next: "predicates" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : ".*?\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "methods" : [ + { + token : "meta.function.objc", + regex : "(?=\\{|#)|;", + next : "start" + } + ] +}; + + // copy in C-Rules directly + for (var r in cRules) { + if (this.$rules[r]) { + if (this.$rules[r].push) + this.$rules[r].push.apply(this.$rules[r], cRules[r]); + } else { + this.$rules[r] = cRules[r]; + } + } + + this.$rules.bracketed_content = this.$rules.bracketed_content.concat( + this.$rules.start, specialVariables + ); + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(ObjectiveCHighlightRules, CHighlightRules); + +exports.ObjectiveCHighlightRules = ObjectiveCHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/ocaml.js b/plugins/node_modules/ace/lib/ace/mode/ocaml.js new file mode 100644 index 00000000..ff7825b0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ocaml.js @@ -0,0 +1,98 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var OcamlHighlightRules = require("./ocaml_highlight_rules").OcamlHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; + +var Mode = function() { + this.HighlightRules = OcamlHighlightRules; + this.$behaviour = this.$defaultBehaviour; + + this.$outdent = new MatchingBraceOutdent(); +}; +oop.inherits(Mode, TextMode); + +var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/; + +(function() { + + this.toggleCommentLines = function(state, doc, startRow, endRow) { + var i, line; + var outdent = true; + var re = /^\s*\(\*(.*)\*\)/; + + for (i=startRow; i<= endRow; i++) { + if (!re.test(doc.getLine(i))) { + outdent = false; + break; + } + } + + var range = new Range(0, 0, 0, 0); + for (i=startRow; i<= endRow; i++) { + line = doc.getLine(i); + range.start.row = i; + range.end.row = i; + range.end.column = line.length; + + doc.replace(range, outdent ? line.match(re)[1] : "(*" + line + "*)"); + } + }; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + + if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && + state === 'start' && indenter.test(line)) + indent += tab; + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/ocaml"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/ocaml_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/ocaml_highlight_rules.js new file mode 100644 index 00000000..b0ef8fc4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ocaml_highlight_rules.js @@ -0,0 +1,336 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var OcamlHighlightRules = function() { + + var keywords = ( + "and|as|assert|begin|class|constraint|do|done|downto|else|end|" + + "exception|external|for|fun|function|functor|if|in|include|" + + "inherit|initializer|lazy|let|match|method|module|mutable|new|" + + "object|of|open|or|private|rec|sig|struct|then|to|try|type|val|" + + "virtual|when|while|with" + ); + + var builtinConstants = ("true|false"); + + var builtinFunctions = ( + "abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|" + + "add_available_units|add_big_int|add_buffer|add_channel|add_char|" + + "add_initializer|add_int_big_int|add_interfaces|add_num|add_string|" + + "add_substitute|add_substring|alarm|allocated_bytes|allow_only|" + + "allow_unsafe_modules|always|append|appname_get|appname_set|" + + "approx_num_exp|approx_num_fix|arg|argv|arith_status|array|" + + "array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|" + + "assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|" + + "beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|" + + "bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|" + + "bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|" + + "bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|" + + "cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|" + + "chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|" + + "chown|chr|chroot|classify_float|clear|clear_available_units|" + + "clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|" + + "close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|" + + "close_out|close_out_noerr|close_process|close_process|" + + "close_process_full|close_process_in|close_process_out|close_subwindow|" + + "close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|" + + "combine|combine|command|compact|compare|compare_big_int|compare_num|" + + "complex32|complex64|concat|conj|connect|contains|contains_from|contents|" + + "copy|cos|cosh|count|count|counters|create|create_alarm|create_image|" + + "create_matrix|create_matrix|create_matrix|create_object|" + + "create_object_and_run_initializers|create_object_opt|create_process|" + + "create_process|create_process_env|create_process_env|create_table|" + + "current|current_dir_name|current_point|current_x|current_y|curveto|" + + "custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|" + + "delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|" + + "dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|" + + "double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|" + + "draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|" + + "dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|" + + "environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|" + + "error_message|escaped|establish_server|executable_name|execv|execve|execvp|" + + "execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|" + + "file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|" + + "filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|" + + "float|float32|float64|float_of_big_int|float_of_bits|float_of_int|" + + "float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|" + + "flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|" + + "for_all|for_all2|force|force_newline|force_val|foreground|fork|" + + "format_of_string|formatter_of_buffer|formatter_of_out_channel|" + + "fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|" + + "from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|" + + "full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|" + + "genarray_of_array1|genarray_of_array2|genarray_of_array3|get|" + + "get_all_formatter_output_functions|get_approx_printing|get_copy|" + + "get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|" + + "get_formatter_output_functions|get_formatter_tag_functions|get_image|" + + "get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|" + + "get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|" + + "get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|" + + "getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|" + + "getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|" + + "getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|" + + "getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|" + + "getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|" + + "global_replace|global_substitute|gmtime|green|grid|group_beginning|" + + "group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|" + + "hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|" + + "incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|" + + "infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|" + + "input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|" + + "int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|" + + "int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|" + + "is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|" + + "is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|" + + "kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|" + + "lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|" + + "lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|" + + "loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|" + + "logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|" + + "lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|" + + "make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|" + + "marshal|match_beginning|match_end|matched_group|matched_string|max|" + + "max_array_length|max_big_int|max_elt|max_float|max_int|max_num|" + + "max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|" + + "min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|" + + "minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|" + + "mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|" + + "nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|" + + "new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|" + + "nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|" + + "num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|" + + "of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|" + + "of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|" + + "open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|" + + "open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|" + + "open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|" + + "open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|" + + "out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|" + + "output_char|output_string|output_value|over_max_boxes|pack|params|" + + "parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|" + + "place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|" + + "power_big_int_positive_big_int|power_big_int_positive_int|" + + "power_int_positive_big_int|power_int_positive_int|power_num|" + + "pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|" + + "pp_get_all_formatter_output_functions|pp_get_ellipsis_text|" + + "pp_get_formatter_output_functions|pp_get_formatter_tag_functions|" + + "pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|" + + "pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|" + + "pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|" + + "pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|" + + "pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|" + + "pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|" + + "pp_set_all_formatter_output_functions|pp_set_ellipsis_text|" + + "pp_set_formatter_out_channel|pp_set_formatter_output_functions|" + + "pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|" + + "pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|" + + "pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|" + + "prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|" + + "print_bool|print_break|print_char|print_cut|print_endline|print_float|" + + "print_flush|print_if_newline|print_int|print_newline|print_space|" + + "print_stat|print_string|print_tab|print_tbreak|printf|prohibit|" + + "public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|" + + "raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|" + + "read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|" + + "recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|" + + "regexp_string_case_fold|register|register_exception|rem|remember_mode|" + + "remove|remove_assoc|remove_assq|rename|replace|replace_first|" + + "replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|" + + "rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|" + + "rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|" + + "run_initializers|run_initializers_opt|scanf|search_backward|" + + "search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|" + + "set_all_formatter_output_functions|set_approx_printing|" + + "set_binary_mode_in|set_binary_mode_out|set_close_on_exec|" + + "set_close_on_exec|set_color|set_ellipsis_text|" + + "set_error_when_null_denominator|set_field|set_floating_precision|" + + "set_font|set_formatter_out_channel|set_formatter_output_functions|" + + "set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|" + + "set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|" + + "set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|" + + "set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|" + + "set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|" + + "setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|" + + "setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|" + + "shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|" + + "shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|" + + "shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|" + + "sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|" + + "sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|" + + "sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|" + + "sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|" + + "sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|" + + "slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|" + + "slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|" + + "split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|" + + "square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|" + + "stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|" + + "stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|" + + "str_formatter|string|string_after|string_before|string_match|" + + "string_of_big_int|string_of_bool|string_of_float|string_of_format|" + + "string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|" + + "string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|" + + "sub_right|subset|subset|substitute_first|substring|succ|succ|" + + "succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|" + + "symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|" + + "tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|" + + "tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|" + + "temp_file|text_size|time|time|time|timed_read|timed_write|times|times|" + + "tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|" + + "to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|" + + "to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|" + + "truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|" + + "uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|" + + "unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|" + + "update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|" + + "wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|" + + "wait_timed_read|wait_timed_write|wait_write|waitpid|white|" + + "widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|" + + + "Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|" + + "Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|" + + "Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|" + + "Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|" + + "MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|" + + "Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|" + + "Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak" + ); + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "constant.language": builtinConstants, + "support.function": builtinFunctions + }, "identifier"); + + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var octInteger = "(?:0[oO]?[0-7]+)"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var binInteger = "(?:0[bB][01]+)"; + var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; + + var exponent = "(?:[eE][+-]?\\d+)"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + + this.$rules = { + "start" : [ + { + token : "comment", + regex : '\\(\\*.*?\\*\\)\\s*?$' + }, + { + token : "comment", + regex : '\\(\\*.*', + next : "comment" + }, + { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, + { + token : "string", // single char + regex : "'.'" + }, + { + token : "string", // " string + regex : '"', + next : "qstring" + }, + { + token : "constant.numeric", // imaginary + regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, + { + token : "constant.numeric", // float + regex : floatNumber + }, + { + token : "constant.numeric", // integer + regex : integer + "\\b" + }, + { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token : "keyword.operator", + regex : "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=" + }, + { + token : "paren.lparen", + regex : "[[({]" + }, + { + token : "paren.rparen", + regex : "[\\])}]" + }, + { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\)", + next : "start" + }, + { + defaultToken : "comment" + } + ], + + "qstring" : [ + { + token : "string", + regex : '"', + next : "start" + }, { + token : "string", + regex : '.+' + } + ] + }; +}; + +oop.inherits(OcamlHighlightRules, TextHighlightRules); + +exports.OcamlHighlightRules = OcamlHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/pascal.js b/plugins/node_modules/ace/lib/ace/mode/pascal.js new file mode 100644 index 00000000..7958ce63 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/pascal.js @@ -0,0 +1,68 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PascalHighlightRules = require("./pascal_highlight_rules").PascalHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = PascalHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ["--", "//"]; + this.blockComment = [ + {start: "(*", end: "*)"}, + {start: "{", end: "}"} + ]; + + this.$id = "ace/mode/pascal"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/pascal_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/pascal_highlight_rules.js new file mode 100644 index 00000000..a617da77 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/pascal_highlight_rules.js @@ -0,0 +1,127 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* THIS FILE WAS AUTOGENERATED FROM tool\tm bundles\pascal.tmbundle\Syntaxes\Pascal.plist (UUID: F42FA544-6B1C-11D9-9517-000D93589AF6) */ +/**************************************************************** + * IT MIGHT NOT BE PERFECT, PARTICULARLY: * + * IN DECIDING STATES TO TRANSITION TO, * + * IGNORING WHITESPACE, * + * IGNORING GROUPS WITH ?:, * + * EXTENDING EXISTING MODES, * + * GATHERING KEYWORDS, OR * + * DECIDING WHEN TO USE PUSH. * + * ...But it's a good start from an existing *.tmlanguage file. * + ****************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PascalHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { caseInsensitive: true, + token: 'keyword.control.pascal', + regex: '\\b(?:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\\b' }, + { caseInsensitive: true, + token: + [ 'variable.pascal', "text", + 'storage.type.prototype.pascal', + 'entity.name.function.prototype.pascal' ], + regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))' }, + { caseInsensitive: true, + token: + [ 'variable.pascal', "text", + 'storage.type.function.pascal', + 'entity.name.function.pascal' ], + regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?' }, + { token: 'constant.numeric.pascal', + regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b' }, + { token: 'punctuation.definition.comment.pascal', + regex: '--.*$', + push_: + [ { token: 'comment.line.double-dash.pascal.one', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-dash.pascal.one' } ] }, + { token: 'punctuation.definition.comment.pascal', + regex: '//.*$', + push_: + [ { token: 'comment.line.double-slash.pascal.two', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-slash.pascal.two' } ] }, + { token: 'punctuation.definition.comment.pascal', + regex: '\\(\\*', + push: + [ { token: 'punctuation.definition.comment.pascal', + regex: '\\*\\)', + next: 'pop' }, + { defaultToken: 'comment.block.pascal.one' } ] }, + { token: 'punctuation.definition.comment.pascal', + regex: '\\{', + push: + [ { token: 'punctuation.definition.comment.pascal', + regex: '\\}', + next: 'pop' }, + { defaultToken: 'comment.block.pascal.two' } ] }, + { token: 'punctuation.definition.string.begin.pascal', + regex: '"', + push: + [ { token: 'constant.character.escape.pascal', regex: '\\\\.' }, + { token: 'punctuation.definition.string.end.pascal', + regex: '"', + next: 'pop' }, + { defaultToken: 'string.quoted.double.pascal' } ] + //Double quoted strings are an extension and (generally) support C-style escape sequences. + }, + { token: 'punctuation.definition.string.begin.pascal', + regex: '\'', + push: + [ { token: 'constant.character.escape.apostrophe.pascal', + regex: '\'\'' }, + { token: 'punctuation.definition.string.end.pascal', + regex: '\'', + next: 'pop' }, + { defaultToken: 'string.quoted.single.pascal' } ] }, + { token: 'keyword.operator', + regex: '[+\\-;,/*%]|:=|=' } ] }; + + this.normalizeRules(); +}; + +oop.inherits(PascalHighlightRules, TextHighlightRules); + +exports.PascalHighlightRules = PascalHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/perl.js b/plugins/node_modules/ace/lib/ace/mode/perl.js new file mode 100644 index 00000000..01778a7c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/perl.js @@ -0,0 +1,90 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = PerlHighlightRules; + + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode({start: "^=(begin|item)\\b", end: "^=(cut)\\b"}); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "#"; + this.blockComment = [ + {start: "=begin", end: "=cut", lineStartOnly: true}, + {start: "=item", end: "=cut", lineStartOnly: true} + ]; + + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/perl"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/perl_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/perl_highlight_rules.js new file mode 100644 index 00000000..7c183fe3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/perl_highlight_rules.js @@ -0,0 +1,165 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PerlHighlightRules = function() { + + var keywords = ( + "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + + "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars" + ); + + var buildinConstants = ("ARGV|ENV|INC|SIG"); + + var builtinFunctions = ( + "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + + "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + + "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + + "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + + "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + + "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + + "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + + "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + + "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + + "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + + "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + + "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + + "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + + "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + + "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + + "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + + "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + + "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + + "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + + "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + + "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + + "map|die|uc|lc|do" + ); + + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": builtinFunctions + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment.doc", + regex : "^=(?:begin|item)\\b", + next : "block_comment" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // multi line string start + regex : '["].*\\\\$', + next : "qqstring" + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "string", // multi line string start + regex : "['].*\\\\$", + next : "qstring" + }, { + token : "constant.numeric", // hex + regex : "0x[0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" + }, { + token : "comment", + regex : "#.*$" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "qqstring" : [ + { + token : "string", + regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next : "start" + }, { + token : "string", + regex : '.+' + } + ], + "qstring" : [ + { + token : "string", + regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next : "start" + }, { + token : "string", + regex : '.+' + } + ], + "block_comment": [ + { + token: "comment.doc", + regex: "^=cut\\b", + next: "start" + }, + { + defaultToken: "comment.doc" + } + ] + }; +}; + +oop.inherits(PerlHighlightRules, TextHighlightRules); + +exports.PerlHighlightRules = PerlHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/pgsql.js b/plugins/node_modules/ace/lib/ace/mode/pgsql.js new file mode 100644 index 00000000..68693db0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/pgsql.js @@ -0,0 +1,59 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var TextMode = require("../mode/text").Mode; +var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules; + +var Mode = function() { + this.HighlightRules = PgsqlHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + if (state == "start" || state == "keyword.statementEnd") { + return ""; + } else { + return this.$getIndent(line); // Keep whatever indent the previous line has + } + }; + + this.$id = "ace/mode/pgsql"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/pgsql_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/pgsql_highlight_rules.js new file mode 100644 index 00000000..e42e3490 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/pgsql_highlight_rules.js @@ -0,0 +1,616 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +// Syntax highlighting for pl/languages and json. +var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; +var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; +var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; + +var PgsqlHighlightRules = function() { + + // Keywords, functions, operators last updated for pg 9.3. + var keywords = ( + "abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|" + + "analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|" + + "assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|" + + "bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|" + + "catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|" + + "cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|" + + "configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|" + + "create|cross|cstring|csv|current|current_catalog|current_date|current_role|" + + "current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|" + + "date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|" + + "definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|" + + "domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|" + + "except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|" + + "family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|" + + "freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|" + + "having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|" + + "increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|" + + "insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|" + + "internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|" + + "language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|" + + "like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|" + + "mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|" + + "national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|" + + "numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|" + + "options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|" + + "password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|" + + "pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|" + + "preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|" + + "reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|" + + "regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|" + + "reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|" + + "right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|" + + "sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|" + + "simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|" + + "stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|" + + "template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|" + + "transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|" + + "txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|" + + "unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|" + + "varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|" + + "with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|" + + "xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone" + ); + + + var builtinFunctions = ( + "RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|" + + "RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|" + + "RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|" + + "RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|" + + "abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|" + + "aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|" + + "anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|" + + "anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|" + + "anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|" + + "array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|" + + "array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|" + + "array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|" + + "array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|" + + "arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|" + + "ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|" + + "bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|" + + "bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|" + + "bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|" + + "boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|" + + "box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|" + + "box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|" + + "box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|" + + "box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|" + + "bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|" + + "bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|" + + "bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|" + + "bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|" + + "btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|" + + "btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|" + + "btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|" + + "btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|" + + "btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|" + + "btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|" + + "btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|" + + "bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|" + + "bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|" + + "byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|" + + "cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|" + + "cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|" + + "cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|" + + "cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|" + + "charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|" + + "cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|" + + "circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|" + + "circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|" + + "circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|" + + "circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|" + + "circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|" + + "close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|" + + "contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|" + + "covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|" + + "current_query|current_schema|current_schemas|current_setting|current_user|currtid|" + + "currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|" + + "database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|" + + "date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|" + + "date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|" + + "date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|" + + "date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|" + + "date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|" + + "date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|" + + "daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|" + + "dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|" + + "dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|" + + "dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|" + + "dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|" + + "enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|" + + "enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|" + + "euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|" + + "euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|" + + "euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|" + + "family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|" + + "float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|" + + "float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|" + + "float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|" + + "float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|" + + "float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|" + + "float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|" + + "float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|" + + "float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|" + + "float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|" + + "float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|" + + "float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|" + + "fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|" + + "gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|" + + "get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|" + + "gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|" + + "ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|" + + "gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|" + + "ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|" + + "gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|" + + "gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|" + + "gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|" + + "gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|" + + "gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|" + + "gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|" + + "gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|" + + "gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|" + + "gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|" + + "gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|" + + "has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|" + + "has_function_privilege|has_language_privilege|has_schema_privilege|" + + "has_sequence_privilege|has_server_privilege|has_table_privilege|" + + "has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|" + + "hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|" + + "hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|" + + "hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|" + + "hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|" + + "hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|" + + "icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|" + + "inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|" + + "inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|" + + "initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|" + + "int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|" + + "int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|" + + "int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|" + + "int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|" + + "int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|" + + "int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|" + + "int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|" + + "int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|" + + "int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|" + + "int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|" + + "int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|" + + "int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|" + + "int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|" + + "int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|" + + "int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|" + + "int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|" + + "int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|" + + "internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|" + + "interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|" + + "interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|" + + "interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|" + + "interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|" + + "interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|" + + "ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|" + + "iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|" + + "json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|" + + "json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|" + + "json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|" + + "json_object_field|json_object_field_text|json_object_keys|json_out|" + + "json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|" + + "justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|" + + "koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|" + + "language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|" + + "latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|" + + "line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|" + + "line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|" + + "lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|" + + "lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|" + + "lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|" + + "lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|" + + "lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|" + + "macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|" + + "macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|" + + "mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|" + + "mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|" + + "mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|" + + "name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|" + + "namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|" + + "neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|" + + "network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|" + + "nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|" + + "numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|" + + "numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|" + + "numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|" + + "numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|" + + "numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|" + + "numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|" + + "numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|" + + "octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|" + + "oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|" + + "oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|" + + "on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|" + + "path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|" + + "path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|" + + "path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|" + + "pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|" + + "pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|" + + "pg_available_extension_versions|pg_available_extensions|pg_backend_pid|" + + "pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|" + + "pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|" + + "pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|" + + "pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|" + + "pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|" + + "pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|" + + "pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|" + + "pg_get_function_arguments|pg_get_function_identity_arguments|" + + "pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|" + + "pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|" + + "pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|" + + "pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|" + + "pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|" + + "pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|" + + "pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|" + + "pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|" + + "pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|" + + "pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|" + + "pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|" + + "pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|" + + "pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|" + + "pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|" + + "pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|" + + "pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|" + + "pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|" + + "pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|" + + "pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|" + + "pg_stat_get_bgwriter_buf_written_checkpoints|" + + "pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|" + + "pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|" + + "pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|" + + "pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|" + + "pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|" + + "pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|" + + "pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|" + + "pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|" + + "pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|" + + "pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|" + + "pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|" + + "pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|" + + "pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|" + + "pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|" + + "pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|" + + "pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|" + + "pg_stat_get_function_calls|pg_stat_get_function_self_time|" + + "pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|" + + "pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|" + + "pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|" + + "pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|" + + "pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|" + + "pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|" + + "pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|" + + "pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|" + + "pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|" + + "pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|" + + "pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|" + + "pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|" + + "pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|" + + "pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|" + + "pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|" + + "pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|" + + "pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|" + + "pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|" + + "pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|" + + "pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|" + + "pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|" + + "pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|" + + "plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|" + + "point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|" + + "point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|" + + "poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|" + + "poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|" + + "poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|" + + "polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|" + + "prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|" + + "pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|" + + "querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|" + + "range_after|range_before|range_cmp|range_contained_by|range_contains|" + + "range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|" + + "range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|" + + "range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|" + + "range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|" + + "range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|" + + "record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|" + + "regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|" + + "regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|" + + "regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|" + + "regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|" + + "regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|" + + "regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|" + + "regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|" + + "regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|" + + "reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|" + + "reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|" + + "rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|" + + "schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|" + + "set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|" + + "shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|" + + "similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|" + + "smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|" + + "spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|" + + "spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|" + + "spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|" + + "spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|" + + "spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|" + + "spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|" + + "spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|" + + "statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|" + + "string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|" + + "suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|" + + "table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|" + + "text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|" + + "texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|" + + "textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|" + + "thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|" + + "tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|" + + "time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|" + + "time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|" + + "timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|" + + "timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|" + + "timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|" + + "timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|" + + "timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|" + + "timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|" + + "timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|" + + "timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|" + + "timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|" + + "timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|" + + "timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|" + + "timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|" + + "timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|" + + "timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|" + + "timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|" + + "timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|" + + "timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|" + + "timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|" + + "timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|" + + "timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|" + + "tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|" + + "tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|" + + "tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|" + + "tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|" + + "to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|" + + "trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|" + + "ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|" + + "ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|" + + "tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|" + + "tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|" + + "tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|" + + "tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|" + + "tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|" + + "txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|" + + "txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|" + + "txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|" + + "unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|" + + "utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|" + + "utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|" + + "utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|" + + "utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|" + + "uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|" + + "varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|" + + "varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|" + + "varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|" + + "void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|" + + "win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|" + + "win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|" + + "xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|" + + "xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|" + + "xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists" + ); + + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords + }, "identifier", true); + + + var sqlRules = [{ + token : "string", // single line string -- assume dollar strings if multi-line for now + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "variable.language", // pg identifier + regex : '".*?"' + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers + }, { + token : "keyword.operator", + regex : "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + + "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + + "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + + "~=|~>=~|~>~|~~|~~\\*" + }, { + token : "paren.lparen", + regex : "[\\(]" + }, { + token : "paren.rparen", + regex : "[\\)]" + }, { + token : "text", + regex : "\\s+" + } + ]; + + + this.$rules = { + "start" : [{ + token : "comment", + regex : "--.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi-line comment + regex : "\\/\\*", + next : "comment" + },{ + token : "keyword.statementBegin", + regex : "[a-zA-Z]+", // Could enumerate starting keywords but this allows things to work when new statements are added. + next : "statement" + },{ + token : "support.buildin", // psql directive + regex : "^\\\\[\\S]+.*$" + } + ], + + "statement" : [{ + token : "comment", + regex : "--.*$" + }, { + token : "comment", // multi-line comment + regex : "\\/\\*", + next : "commentStatement" + }, { + token : "statementEnd", + regex : ";", + next : "start" + }, { + token : "string", + regex : "\\$perl\\$", + next : "perl-start" + }, { + token : "string", + regex : "\\$python\\$", + next : "python-start" + }, { + token : "string", + regex : "\\$json\\$", + next : "json-start" + }, { + token : "string", + regex : "\\$(js|javascript)\\$", + next : "javascript-start" + }, { + token : "string", + regex : "\\$[\\w_0-9]*\\$$", // dollar quote at the end of a line + next : "dollarSql" + }, { + token : "string", + regex : "\\$[\\w_0-9]*\\$", + next : "dollarStatementString" + } + ].concat(sqlRules), + + "dollarSql" : [{ + token : "comment", + regex : "--.*$" + }, { + token : "comment", // multi-line comment + regex : "\\/\\*", + next : "commentDollarSql" + }, { + token : "string", // end quoting with dollar at the start of a line + regex : "^\\$[\\w_0-9]*\\$", + next : "statement" + }, { + token : "string", + regex : "\\$[\\w_0-9]*\\$", + next : "dollarSqlString" + } + ].concat(sqlRules), + + "comment" : [{ + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + + "commentStatement" : [{ + token : "comment", // closing comment + regex : "\\*\\/", + next : "statement" + }, { + defaultToken : "comment" + } + ], + + "commentDollarSql" : [{ + token : "comment", // closing comment + regex : "\\*\\/", + next : "dollarSql" + }, { + defaultToken : "comment" + } + ], + + "dollarStatementString" : [{ + token : "string", // closing dollarstring + regex : ".*?\\$[\\w_0-9]*\\$", + next : "statement" + }, { + token : "string", // dollarstring spanning whole line + regex : ".+" + } + ], + + "dollarSqlString" : [{ + token : "string", // closing dollarstring + regex : ".*?\\$[\\w_0-9]*\\$", + next : "dollarSql" + }, { + token : "string", // dollarstring spanning whole line + regex : ".+" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]); + this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]); + this.embedRules(JsonHighlightRules, "json-", [{token : "string", regex : "\\$json\\$", next : "statement"}]); + this.embedRules(JavaScriptHighlightRules, "javascript-", [{token : "string", regex : "\\$(js|javascript)\\$", next : "statement"}]); +}; + +oop.inherits(PgsqlHighlightRules, TextHighlightRules); + +exports.PgsqlHighlightRules = PgsqlHighlightRules; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/php.js b/plugins/node_modules/ace/lib/ace/mode/php.js new file mode 100644 index 00000000..007378d9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/php.js @@ -0,0 +1,149 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; +var PhpLangHighlightRules = require("./php_highlight_rules").PhpLangHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var unicode = require("../unicode"); +var HtmlMode = require("./html").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; + +var PhpMode = function(opts) { + this.HighlightRules = PhpLangHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(PhpMode, TextMode); + +(function() { + + this.tokenRe = new RegExp("^[" + unicode.wordChars + "_]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "_]|\\s])+", "g"); + + this.lineCommentStart = ["//", "#"]; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } else if (state == "doc-start") { + if (endState != "doc-start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/php-inline"; +}).call(PhpMode.prototype); + +var Mode = function(opts) { + if (opts && opts.inline) { + var mode = new PhpMode(); + mode.createWorker = this.createWorker; + mode.inlinePhp = true; + return mode; + } + HtmlMode.call(this); + this.HighlightRules = PhpHighlightRules; + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode, + "php-": PhpMode + }); + this.foldingRules.subModes["php-"] = new CStyleFoldMode(); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/php_worker", "PhpWorker"); + worker.attachToDocument(session.getDocument()); + + if (this.inlinePhp) + worker.call("setOptions", [{inline: true}]); + + worker.on("annotate", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/php"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/php/php.js b/plugins/node_modules/ace/lib/ace/mode/php/php.js new file mode 100644 index 00000000..4836b42b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/php/php.js @@ -0,0 +1,2275 @@ +/* + php.js 0.1.0 <http://phpjs.hertzen.com/> + Copyright (c) 2013 Niklas von Hertzen + + Released under MIT License + + This file contains: + - [var PHP = {Constants:{}};] + - src/modules/tokenizer/constants.js + - src/parser/lexer.js + - src/parser/parser.js + - src/parser/yyn.js + - src/parser/yyn_stmt.js + - src/parser/yyn_expr.js + - src/parser/yyn_scalar.js +*/ + + + +define(function(require, exports, module) { + +var PHP = {Constants:{}}; + +PHP.Constants.T_INCLUDE = 257; +PHP.Constants.T_INCLUDE_ONCE = 258; +PHP.Constants.T_EVAL = 259; +PHP.Constants.T_REQUIRE = 260; +PHP.Constants.T_REQUIRE_ONCE = 261; +PHP.Constants.T_LOGICAL_OR = 262; +PHP.Constants.T_LOGICAL_XOR = 263; +PHP.Constants.T_LOGICAL_AND = 264; +PHP.Constants.T_PRINT = 265; +PHP.Constants.T_YIELD = 266; +PHP.Constants.T_DOUBLE_ARROW = 267; +PHP.Constants.T_YIELD_FROM = 268; +PHP.Constants.T_PLUS_EQUAL = 269; +PHP.Constants.T_MINUS_EQUAL = 270; +PHP.Constants.T_MUL_EQUAL = 271; +PHP.Constants.T_DIV_EQUAL = 272; +PHP.Constants.T_CONCAT_EQUAL = 273; +PHP.Constants.T_MOD_EQUAL = 274; +PHP.Constants.T_AND_EQUAL = 275; +PHP.Constants.T_OR_EQUAL = 276; +PHP.Constants.T_XOR_EQUAL = 277; +PHP.Constants.T_SL_EQUAL = 278; +PHP.Constants.T_SR_EQUAL = 279; +PHP.Constants.T_POW_EQUAL = 280; +PHP.Constants.T_COALESCE = 281; +PHP.Constants.T_BOOLEAN_OR = 282; +PHP.Constants.T_BOOLEAN_AND = 283; +PHP.Constants.T_IS_EQUAL = 284; +PHP.Constants.T_IS_NOT_EQUAL = 285; +PHP.Constants.T_IS_IDENTICAL = 286; +PHP.Constants.T_IS_NOT_IDENTICAL = 287; +PHP.Constants.T_SPACESHIP = 288; +PHP.Constants.T_IS_SMALLER_OR_EQUAL = 289; +PHP.Constants.T_IS_GREATER_OR_EQUAL = 290; +PHP.Constants.T_SL = 291; +PHP.Constants.T_SR = 292; +PHP.Constants.T_INSTANCEOF = 293; +PHP.Constants.T_INC = 294; +PHP.Constants.T_DEC = 295; +PHP.Constants.T_INT_CAST = 296; +PHP.Constants.T_DOUBLE_CAST = 297; +PHP.Constants.T_STRING_CAST = 298; +PHP.Constants.T_ARRAY_CAST = 299; +PHP.Constants.T_OBJECT_CAST = 300; +PHP.Constants.T_BOOL_CAST = 301; +PHP.Constants.T_UNSET_CAST = 302; +PHP.Constants.T_POW = 303; +PHP.Constants.T_NEW = 304; +PHP.Constants.T_CLONE = 305; +PHP.Constants.T_EXIT = 306; +PHP.Constants.T_IF = 307; +PHP.Constants.T_ELSEIF = 308; +PHP.Constants.T_ELSE = 309; +PHP.Constants.T_ENDIF = 310; +PHP.Constants.T_LNUMBER = 311; +PHP.Constants.T_DNUMBER = 312; +PHP.Constants.T_STRING = 313; +PHP.Constants.T_STRING_VARNAME = 314; +PHP.Constants.T_VARIABLE = 315; +PHP.Constants.T_NUM_STRING = 316; +PHP.Constants.T_INLINE_HTML = 317; +PHP.Constants.T_CHARACTER = 318; +PHP.Constants.T_BAD_CHARACTER = 319; +PHP.Constants.T_ENCAPSED_AND_WHITESPACE = 320; +PHP.Constants.T_CONSTANT_ENCAPSED_STRING = 321; +PHP.Constants.T_ECHO = 322; +PHP.Constants.T_DO = 323; +PHP.Constants.T_WHILE = 324; +PHP.Constants.T_ENDWHILE = 325; +PHP.Constants.T_FOR = 326; +PHP.Constants.T_ENDFOR = 327; +PHP.Constants.T_FOREACH = 328; +PHP.Constants.T_ENDFOREACH = 329; +PHP.Constants.T_DECLARE = 330; +PHP.Constants.T_ENDDECLARE = 331; +PHP.Constants.T_AS = 332; +PHP.Constants.T_SWITCH = 333; +PHP.Constants.T_ENDSWITCH = 334; +PHP.Constants.T_CASE = 335; +PHP.Constants.T_DEFAULT = 336; +PHP.Constants.T_BREAK = 337; +PHP.Constants.T_CONTINUE = 338; +PHP.Constants.T_GOTO = 339; +PHP.Constants.T_FUNCTION = 340; +PHP.Constants.T_CONST = 341; +PHP.Constants.T_RETURN = 342; +PHP.Constants.T_TRY = 343; +PHP.Constants.T_CATCH = 344; +PHP.Constants.T_FINALLY = 345; +PHP.Constants.T_THROW = 346; +PHP.Constants.T_USE = 347; +PHP.Constants.T_INSTEADOF = 348; +PHP.Constants.T_GLOBAL = 349; +PHP.Constants.T_STATIC = 350; +PHP.Constants.T_ABSTRACT = 351; +PHP.Constants.T_FINAL = 352; +PHP.Constants.T_PRIVATE = 353; +PHP.Constants.T_PROTECTED = 354; +PHP.Constants.T_PUBLIC = 355; +PHP.Constants.T_VAR = 356; +PHP.Constants.T_UNSET = 357; +PHP.Constants.T_ISSET = 358; +PHP.Constants.T_EMPTY = 359; +PHP.Constants.T_HALT_COMPILER = 360; +PHP.Constants.T_CLASS = 361; +PHP.Constants.T_TRAIT = 362; +PHP.Constants.T_INTERFACE = 363; +PHP.Constants.T_EXTENDS = 364; +PHP.Constants.T_IMPLEMENTS = 365; +PHP.Constants.T_OBJECT_OPERATOR = 366; +PHP.Constants.T_LIST = 367; +PHP.Constants.T_ARRAY = 368; +PHP.Constants.T_CALLABLE = 369; +PHP.Constants.T_CLASS_C = 370; +PHP.Constants.T_TRAIT_C = 371; +PHP.Constants.T_METHOD_C = 372; +PHP.Constants.T_FUNC_C = 373; +PHP.Constants.T_LINE = 374; +PHP.Constants.T_FILE = 375; +PHP.Constants.T_COMMENT = 376; +PHP.Constants.T_DOC_COMMENT = 377; +PHP.Constants.T_OPEN_TAG = 378; +PHP.Constants.T_OPEN_TAG_WITH_ECHO = 379; +PHP.Constants.T_CLOSE_TAG = 380; +PHP.Constants.T_WHITESPACE = 381; +PHP.Constants.T_START_HEREDOC = 382; +PHP.Constants.T_END_HEREDOC = 383; +PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES = 384; +PHP.Constants.T_CURLY_OPEN = 385; +PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM = 386; +PHP.Constants.T_NAMESPACE = 387; +PHP.Constants.T_NS_C = 388; +PHP.Constants.T_DIR = 389; +PHP.Constants.T_NS_SEPARATOR = 390; +PHP.Constants.T_ELLIPSIS = 391; + +PHP.Lexer = function(src, ini) { + var heredoc, heredocEndAllowed, + + stateStack = ['INITIAL'], stackPos = 0, + swapState = function(state) { + stateStack[stackPos] = state; + }, + pushState = function(state) { + stateStack[++stackPos] = state; + }, + popState = function() { + --stackPos; + }, + + shortOpenTag = ini === undefined || /^(on|true|1)$/i.test(ini.short_open_tag), + openTag = shortOpenTag + ? /^(\<\?php(?:\r\n|[ \t\r\n])|<\?|\<script language\=('|")?php('|")?\>)/i + : /^(\<\?php(?:\r\n|[ \t\r\n])|\<script language\=('|")?php('|")?\>)/i, + inlineHtml = shortOpenTag + ? /[^<]*(?:<(?!\?|script language\=('|")?php('|")?\>)[^<]*)*/i + : /[^<]*(?:<(?!\?=|\?php[ \t\r\n]|script language\=('|")?php('|")?\>)[^<]*)*/i, + labelRegexPart = '[a-zA-Z_\\x7f-\\uffff][a-zA-Z0-9_\\x7f-\\uffff]*', + stringRegexPart = function(quote) { + // Matches non-interpolated portion of interpolated string + return '[^' + quote + '\\\\${]*(?:(?:\\\\[\\s\\S]|\\$(?!\\{|[a-zA-Z_\\x7f-\\uffff])|\\{(?!\\$))[^' + quote + '\\\\${]*)*'; + }, + + sharedStringTokens = [ + { + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart + '(?=\\[)'), + func: function() { + pushState('VAR_OFFSET'); + } + }, + { + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart + '(?=->' + labelRegexPart + ')'), + func: function() { + pushState('LOOKING_FOR_PROPERTY'); + } + }, + { + value: PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES, + re: new RegExp('^\\$\\{(?=' + labelRegexPart + '[\\[}])'), + func: function() { + pushState('LOOKING_FOR_VARNAME'); + } + }, + { + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart) + }, + { + value: PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES, + re: /^\$\{/, + func: function() { + pushState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_CURLY_OPEN, + re: /^\{(?=\$)/, + func: function() { + pushState('IN_SCRIPTING'); + } + } + ], + data = { + // Outside of PHP + 'INITIAL': [ + { + value: PHP.Constants.T_OPEN_TAG_WITH_ECHO, + re: /^<\?=/i, + func: function() { + swapState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_OPEN_TAG, + re: openTag, + func: function() { + swapState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_INLINE_HTML, + re: inlineHtml + }, + ], + // In normal PHP code + 'IN_SCRIPTING': [ + // Match whitespace first + { + value: PHP.Constants.T_WHITESPACE, + re: /^[ \n\r\t]+/ + }, + + // Keywords, sorted alphabetically + { + value: PHP.Constants.T_ABSTRACT, + re: /^abstract\b/i + }, + { + value: PHP.Constants.T_LOGICAL_AND, + re: /^and\b/i + }, + { + value: PHP.Constants.T_ARRAY, + re: /^array\b/i + }, + { + value: PHP.Constants.T_AS, + re: /^as\b/i + }, + { + value: PHP.Constants.T_BREAK, + re: /^break\b/i + }, + { + value: PHP.Constants.T_CALLABLE, + re: /^callable\b/i + }, + { + value: PHP.Constants.T_CASE, + re: /^case\b/i + }, + { + value: PHP.Constants.T_CATCH, + re: /^catch\b/i + }, + { + value: PHP.Constants.T_CLASS, + re: /^class\b/i, + }, + { + value: PHP.Constants.T_CLONE, + re: /^clone\b/i + }, + { + value: PHP.Constants.T_CONST, + re: /^const\b/i + }, + { + value: PHP.Constants.T_CONTINUE, + re: /^continue\b/i + }, + { + value: PHP.Constants.T_DECLARE, + re: /^declare\b/i + }, + { + value: PHP.Constants.T_DEFAULT, + re: /^default\b/i + }, + { + value: PHP.Constants.T_DO, + re: /^do\b/i + }, + { + value: PHP.Constants.T_ECHO, + re: /^echo\b/i + }, + { + value: PHP.Constants.T_ELSE, + re: /^else\b/i + }, + { + value: PHP.Constants.T_ELSEIF, + re: /^elseif\b/i + }, + { + value: PHP.Constants.T_ENDDECLARE, + re: /^enddeclare\b/i + }, + { + value: PHP.Constants.T_ENDFOR, + re: /^endfor\b/i + }, + { + value: PHP.Constants.T_ENDFOREACH, + re: /^endforeach\b/i + }, + { + value: PHP.Constants.T_ENDIF, + re: /^endif\b/i + }, + { + value: PHP.Constants.T_ENDSWITCH, + re: /^endswitch\b/i + }, + { + value: PHP.Constants.T_ENDWHILE, + re: /^endwhile\b/i + }, + { + value: PHP.Constants.T_EMPTY, + re: /^empty\b/i + }, + { + value: PHP.Constants.T_EVAL, + re: /^eval\b/i + }, + { + value: PHP.Constants.T_EXIT, + re: /^(?:exit|die)\b/i + }, + { + value: PHP.Constants.T_EXTENDS, + re: /^extends\b/i + }, + { + value: PHP.Constants.T_FINAL, + re: /^final\b/i + }, + { + value: PHP.Constants.T_FINALLY, + re: /^finally\b/i + }, + { + value: PHP.Constants.T_FOR, + re: /^for\b/i + }, + { + value: PHP.Constants.T_FOREACH, + re: /^foreach\b/i + }, + { + value: PHP.Constants.T_FUNCTION, + re: /^function\b/i + }, + { + value: PHP.Constants.T_GLOBAL, + re: /^global\b/i + }, + { + value: PHP.Constants.T_GOTO, + re: /^goto\b/i + }, + { + value: PHP.Constants.T_IF, + re: /^if\b/i + }, + { + value: PHP.Constants.T_IMPLEMENTS, + re: /^implements\b/i + }, + { + value: PHP.Constants.T_INCLUDE, + re: /^include\b/i + }, + { + value: PHP.Constants.T_INCLUDE_ONCE, + re: /^include_once\b/i + }, + { + value: PHP.Constants.T_INSTANCEOF, + re: /^instanceof\b/i + }, + { + value: PHP.Constants.T_INSTEADOF, + re: /^insteadof\b/i + }, + { + value: PHP.Constants.T_INTERFACE, + re: /^interface\b/i + }, + { + value: PHP.Constants.T_ISSET, + re: /^isset\b/i + }, + { + value: PHP.Constants.T_LIST, + re: /^list\b/i + }, + { + value: PHP.Constants.T_NAMESPACE, + re: /^namespace\b/i + }, + { + value: PHP.Constants.T_NEW, + re: /^new\b/i + }, + { + value: PHP.Constants.T_LOGICAL_OR, + re: /^or\b/i + }, + { + value: PHP.Constants.T_PRINT, + re: /^print\b/i + }, + { + value: PHP.Constants.T_PRIVATE, + re: /^private\b/i + }, + { + value: PHP.Constants.T_PROTECTED, + re: /^protected\b/i + }, + { + value: PHP.Constants.T_PUBLIC, + re: /^public\b/i + }, + { + value: PHP.Constants.T_REQUIRE, + re: /^require\b/i + }, + { + value: PHP.Constants.T_REQUIRE_ONCE, + re: /^require_once\b/i + }, + { + value: PHP.Constants.T_STATIC, + re: /^static\b/i + }, + { + value: PHP.Constants.T_SWITCH, + re: /^switch\b/i + }, + { + value: PHP.Constants.T_THROW, + re: /^throw\b/i + }, + { + value: PHP.Constants.T_TRAIT, + re: /^trait\b/i, + }, + { + value: PHP.Constants.T_TRY, + re: /^try\b/i + }, + { + value: PHP.Constants.T_UNSET, + re: /^unset\b/i + }, + { + value: PHP.Constants.T_USE, + re: /^use\b/i + }, + { + value: PHP.Constants.T_VAR, + re: /^var\b/i + }, + { + value: PHP.Constants.T_WHILE, + re: /^while\b/i + }, + { + value: PHP.Constants.T_LOGICAL_XOR, + re: /^xor\b/i + }, + { + value: PHP.Constants.T_YIELD_FROM, + re: /^yield\s+from\b/i + }, + { + value: PHP.Constants.T_YIELD, + re: /^yield\b/i + }, + { + value: PHP.Constants.T_RETURN, + re: /^return\b/i + }, + { + value: PHP.Constants.T_METHOD_C, + re: /^__METHOD__\b/i + }, + { + value: PHP.Constants.T_LINE, + re: /^__LINE__\b/i + }, + { + value: PHP.Constants.T_FILE, + re: /^__FILE__\b/i + }, + { + value: PHP.Constants.T_FUNC_C, + re: /^__FUNCTION__\b/i + }, + { + value: PHP.Constants.T_NS_C, + re: /^__NAMESPACE__\b/i + }, + { + value: PHP.Constants.T_TRAIT_C, + re: /^__TRAIT__\b/i + }, + { + value: PHP.Constants.T_DIR, + re: /^__DIR__\b/i + }, + { + value: PHP.Constants.T_CLASS_C, + re: /^__CLASS__\b/i + }, + + // Other tokens + { + value: PHP.Constants.T_AND_EQUAL, + re: /^&=/ + }, + { + value: PHP.Constants.T_ARRAY_CAST, + re: /^\([ \t]*array[ \t]*\)/i + }, + { + value: PHP.Constants.T_BOOL_CAST, + re: /^\([ \t]*(?:bool|boolean)[ \t]*\)/i + }, + { + value: PHP.Constants.T_DOUBLE_CAST, + re: /^\([ \t]*(?:real|float|double)[ \t]*\)/i + }, + { + value: PHP.Constants.T_INT_CAST, + re: /^\([ \t]*(?:int|integer)[ \t]*\)/i + }, + { + value: PHP.Constants.T_OBJECT_CAST, + re: /^\([ \t]*object[ \t]*\)/i + }, + { + value: PHP.Constants.T_STRING_CAST, + re: /^\([ \t]*(?:binary|string)[ \t]*\)/i + }, + { + value: PHP.Constants.T_UNSET_CAST, + re: /^\([ \t]*unset[ \t]*\)/i + }, + { + value: PHP.Constants.T_BOOLEAN_AND, + re: /^&&/ + }, + { + value: PHP.Constants.T_BOOLEAN_OR, + re: /^\|\|/ + }, + { + value: PHP.Constants.T_CLOSE_TAG, + re: /^(?:\?>|<\/script>)(\r\n|\r|\n)?/i, + func: function() { + swapState('INITIAL'); + } + }, + { + value: PHP.Constants.T_DOUBLE_ARROW, + re: /^=>/ + }, + { + value: PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM, + re: /^::/ + }, + { + value: PHP.Constants.T_INC, + re: /^\+\+/ + }, + { + value: PHP.Constants.T_DEC, + re: /^--/ + }, + { + value: PHP.Constants.T_CONCAT_EQUAL, + re: /^\.=/ + }, + { + value: PHP.Constants.T_DIV_EQUAL, + re: /^\/=/ + }, + { + value: PHP.Constants.T_XOR_EQUAL, + re: /^\^=/ + }, + { + value: PHP.Constants.T_MUL_EQUAL, + re: /^\*=/ + }, + { + value: PHP.Constants.T_MOD_EQUAL, + re: /^%=/ + }, + { + value: PHP.Constants.T_SL_EQUAL, + re: /^<<=/ + }, + { + value: PHP.Constants.T_START_HEREDOC, + re: new RegExp('^[bB]?<<<[ \\t]*\'(' + labelRegexPart + ')\'(?:\\r\\n|\\r|\\n)'), + func: function(result) { + heredoc = result[1]; + swapState('NOWDOC'); + } + }, + { + value: PHP.Constants.T_START_HEREDOC, + re: new RegExp('^[bB]?<<<[ \\t]*("?)(' + labelRegexPart + ')\\1(?:\\r\\n|\\r|\\n)'), + func: function(result) { + heredoc = result[2]; + heredocEndAllowed = true; + swapState('HEREDOC'); + } + }, + { + value: PHP.Constants.T_SL, + re: /^<</ + }, + { + value: PHP.Constants.T_SPACESHIP, + re: /^<=>/ + }, + { + value: PHP.Constants.T_IS_SMALLER_OR_EQUAL, + re: /^<=/ + }, + { + value: PHP.Constants.T_SR_EQUAL, + re: /^>>=/ + }, + { + value: PHP.Constants.T_SR, + re: /^>>/ + }, + { + value: PHP.Constants.T_IS_GREATER_OR_EQUAL, + re: /^>=/ + }, + { + value: PHP.Constants.T_OR_EQUAL, + re: /^\|=/ + }, + { + value: PHP.Constants.T_PLUS_EQUAL, + re: /^\+=/ + }, + { + value: PHP.Constants.T_MINUS_EQUAL, + re: /^-=/ + }, + { + value: PHP.Constants.T_OBJECT_OPERATOR, + re: new RegExp('^->(?=[ \n\r\t]*' + labelRegexPart + ')'), + func: function() { + pushState('LOOKING_FOR_PROPERTY'); + } + }, + { + value: PHP.Constants.T_OBJECT_OPERATOR, + re: /^->/i + }, + { + value: PHP.Constants.T_ELLIPSIS, + re: /^\.\.\./ + }, + { + value: PHP.Constants.T_POW_EQUAL, + re: /^\*\*=/ + }, + { + value: PHP.Constants.T_POW, + re: /^\*\*/ + }, + { + value: PHP.Constants.T_COALESCE, + re: /^\?\?/ + }, + { + value: PHP.Constants.T_COMMENT, + re: /^\/\*([\S\s]*?)(?:\*\/|$)/ + }, + { + value: PHP.Constants.T_COMMENT, + re: /^(?:\/\/|#)[^\r\n?]*(?:\?(?!>)[^\r\n?]*)*(?:\r\n|\r|\n)?/ + }, + { + value: PHP.Constants.T_IS_IDENTICAL, + re: /^===/ + }, + { + value: PHP.Constants.T_IS_EQUAL, + re: /^==/ + }, + { + value: PHP.Constants.T_IS_NOT_IDENTICAL, + re: /^!==/ + }, + { + value: PHP.Constants.T_IS_NOT_EQUAL, + re: /^(!=|<>)/ + }, + { + value: PHP.Constants.T_DNUMBER, + re: /^(?:[0-9]+\.[0-9]*|\.[0-9]+)(?:[eE][+-]?[0-9]+)?/ + }, + { + value: PHP.Constants.T_DNUMBER, + re: /^[0-9]+[eE][+-]?[0-9]+/ + }, + { + value: PHP.Constants.T_LNUMBER, + re: /^(?:0x[0-9A-F]+|0b[01]+|[0-9]+)/i + }, + { + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart) + }, + { + value: PHP.Constants.T_CONSTANT_ENCAPSED_STRING, + re: /^[bB]?'[^'\\]*(?:\\[\s\S][^'\\]*)*'/, + }, + { + value: PHP.Constants.T_CONSTANT_ENCAPSED_STRING, + re: new RegExp('^[bB]?"' + stringRegexPart('"') + '"') + }, + { + value: -1, + re: /^[bB]?"/, + func: function() { + swapState('DOUBLE_QUOTES'); + } + }, + { + value: -1, + re: /^`/, + func: function() { + swapState('BACKTICKS'); + } + }, + { + value: PHP.Constants.T_NS_SEPARATOR, + re: /^\\/ + }, + { + value: PHP.Constants.T_STRING, + re: /^[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ + }, + { + value: -1, + re: /^\{/, + func: function() { + pushState('IN_SCRIPTING'); + } + }, + { + value: -1, + re: /^\}/, + func: function() { + if (stackPos > 0) { + popState(); + } + } + }, + { + value: -1, + re: /^[\[\];:?()!.,><=+-/*|&@^%"'$~]/ + } + ], + 'DOUBLE_QUOTES': sharedStringTokens.concat([ + { + value: -1, + re: /^"/, + func: function() { + swapState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_ENCAPSED_AND_WHITESPACE, + re: new RegExp('^' + stringRegexPart('"')) + } + ]), + 'BACKTICKS': sharedStringTokens.concat([ + { + value: -1, + re: /^`/, + func: function() { + swapState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_ENCAPSED_AND_WHITESPACE, + re: new RegExp('^' + stringRegexPart('`')) + } + ]), + 'VAR_OFFSET': [ + { + value: -1, + re: /^\]/, + func: function() { + popState(); + } + }, + { + value: PHP.Constants.T_NUM_STRING, + re: /^(?:0x[0-9A-F]+|0b[01]+|[0-9]+)/i + }, + { + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart) + }, + { + value: PHP.Constants.T_STRING, + re: new RegExp('^' + labelRegexPart) + }, + { + value: -1, + re: /^[;:,.\[()|^&+-/*=%!~$<>?@{}"`]/ + } + ], + 'LOOKING_FOR_PROPERTY': [ + { + value: PHP.Constants.T_OBJECT_OPERATOR, + re: /^->/ + }, + { + value: PHP.Constants.T_STRING, + re: new RegExp('^' + labelRegexPart), + func: function() { + popState(); + } + }, + { + value: PHP.Constants.T_WHITESPACE, + re: /^[ \n\r\t]+/ + } + ], + 'LOOKING_FOR_VARNAME': [ + { + value: PHP.Constants.T_STRING_VARNAME, + re: new RegExp('^' + labelRegexPart + '(?=[\\[}])'), + func: function() { + swapState('IN_SCRIPTING'); + } + } + ], + 'NOWDOC': [ + { + value: PHP.Constants.T_END_HEREDOC, + matchFunc: function(src) { + var re = new RegExp('^' + heredoc + '(?=;?[\\r\\n])'); + if (src.match(re)) { + return [src.substr(0, heredoc.length)]; + } else { + return null; + } + }, + func: function() { + swapState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_ENCAPSED_AND_WHITESPACE, + matchFunc: function(src) { + var re = new RegExp('[\\r\\n]' + heredoc + '(?=;?[\\r\\n])'); + var result = re.exec(src); + var end = result ? result.index + 1 : src.length; + return [src.substring(0, end)]; + } + } + ], + 'HEREDOC': sharedStringTokens.concat([ + { + value: PHP.Constants.T_END_HEREDOC, + matchFunc: function(src) { + if (!heredocEndAllowed) { + return null; + } + var re = new RegExp('^' + heredoc + '(?=;?[\\r\\n])'); + if (src.match(re)) { + return [src.substr(0, heredoc.length)]; + } else { + return null; + } + }, + func: function() { + swapState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_ENCAPSED_AND_WHITESPACE, + matchFunc: function(src) { + var end = src.length; + // Find next interpolation + var re = new RegExp('^' + stringRegexPart('')); + var result = re.exec(src); + if (result) { + end = result[0].length; + } + // Find heredoc end + re = new RegExp('([\\r\\n])' + heredoc + '(?=;?[\\r\\n])'); + result = re.exec(src.substring(0, end)); + if (result) { + end = result.index + 1; + heredocEndAllowed = true; + } else { + heredocEndAllowed = false; + } + if (end == 0) { + return null; + } + return [src.substring(0, end)]; + } + } + ]) + }; + + var results = [], + line = 1, + cancel = true; + + if (src === null) { + return results; + } + + if (typeof src !== "string") { + src = src.toString(); + } + + while (src.length > 0 && cancel === true) { + var state = stateStack[stackPos]; + var tokens = data[state]; + cancel = tokens.some(function(token){ + var result = token.matchFunc !== undefined + ? token.matchFunc(src) + : src.match(token.re); + if (result !== null) { + if (result[0].length == 0) { + // Error in the lexer definition, prevent infinite loop + throw new Error("empty match"); + } + + if (token.func !== undefined) { + token.func(result); + } + + if (token.value === -1) { + // character token + results.push(result[0]); + } else { + var resultString = result[0]; + results.push([ + parseInt(token.value, 10), + resultString, + line + ]); + line += resultString.split('\n').length - 1; + } + + src = src.substring(result[0].length); + + return true; + } + return false; + }); + } + + return results; +}; + +/* + * @author Niklas von Hertzen <niklas at hertzen.com> + * @created 15.6.2012 + * @website http://hertzen.com + */ + +/* + * The skeleton for this parser was written by Moriyoshi Koizumi and is based on + * the work by Masato Bito and is in the PUBLIC DOMAIN. + * Ported to JavaScript by Niklas von Hertzen + */ + + +PHP.Parser = function ( preprocessedTokens, eval ) { + + var yybase = this.yybase, + yydefault = this.yydefault, + yycheck = this.yycheck, + yyaction = this.yyaction, + yylen = this.yylen, + yygbase = this.yygbase, + yygcheck = this.yygcheck, + yyp = this.yyp, + yygoto = this.yygoto, + yylhs = this.yylhs, + terminals = this.terminals, + translate = this.translate, + yygdefault = this.yygdefault; + + + this.pos = -1; + this.line = 1; + + this.tokenMap = this.createTokenMap( ); + + this.dropTokens = {}; + this.dropTokens[ PHP.Constants.T_WHITESPACE ] = 1; + this.dropTokens[ PHP.Constants.T_OPEN_TAG ] = 1; + var tokens = []; + + // pre-process + preprocessedTokens.forEach( function( token, index ) { + if ( typeof token === "object" && token[ 0 ] === PHP.Constants.T_OPEN_TAG_WITH_ECHO) { + tokens.push([ + PHP.Constants.T_OPEN_TAG, + token[ 1 ], + token[ 2 ] + ]); + tokens.push([ + PHP.Constants.T_ECHO, + token[ 1 ], + token[ 2 ] + ]); + } else { + tokens.push( token ); + } + }); + this.tokens = tokens; + + // We start off with no lookahead-token + var tokenId = this.TOKEN_NONE; + + // The attributes for a node are taken from the first and last token of the node. + // From the first token only the startAttributes are taken and from the last only + // the endAttributes. Both are merged using the array union operator (+). + this.startAttributes = { + 'startLine': 1 + }; + + this.endAttributes = {}; + + // In order to figure out the attributes for the starting token, we have to keep + // them in a stack + var attributeStack = [ this.startAttributes ]; + + // Start off in the initial state and keep a stack of previous states + var state = 0; + var stateStack = [ state ]; + + // AST stack + this.yyastk = []; + + // Current position in the stack(s) + this.stackPos = 0; + + var yyn; + + var origTokenId; + + + for (;;) { + + if ( yybase[ state ] === 0 ) { + yyn = yydefault[ state ]; + } else { + if (tokenId === this.TOKEN_NONE ) { + // fetch the next token id from the lexer and fetch additional info by-ref + origTokenId = this.getNextToken( ); + + // map the lexer token id to the internally used token id's + tokenId = (origTokenId >= 0 && origTokenId < this.TOKEN_MAP_SIZE) ? translate[ origTokenId ] : this.TOKEN_INVALID; + + attributeStack[ this.stackPos ] = this.startAttributes; + } + + if (((yyn = yybase[ state ] + tokenId) >= 0 + && yyn < this.YYLAST && yycheck[ yyn ] === tokenId + || (state < this.YY2TBLSTATE + && (yyn = yybase[state + this.YYNLSTATES] + tokenId) >= 0 + && yyn < this.YYLAST + && yycheck[ yyn ] === tokenId)) + && (yyn = yyaction[ yyn ]) !== this.YYDEFAULT ) { + /* + * >= YYNLSTATE: shift and reduce + * > 0: shift + * = 0: accept + * < 0: reduce + * = -YYUNEXPECTED: error + */ + if (yyn > 0) { + /* shift */ + ++this.stackPos; + + stateStack[ this.stackPos ] = state = yyn; + this.yyastk[ this.stackPos ] = this.tokenValue; + attributeStack[ this.stackPos ] = this.startAttributes; + tokenId = this.TOKEN_NONE; + + if (yyn < this.YYNLSTATES) + continue; + + /* $yyn >= YYNLSTATES means shift-and-reduce */ + yyn -= this.YYNLSTATES; + } else { + yyn = -yyn; + } + } else { + yyn = yydefault[ state ]; + } + } + + for (;;) { + /* reduce/error */ + + if ( yyn === 0 ) { + /* accept */ + return this.yyval; + } else if (yyn !== this.YYUNEXPECTED ) { + /* reduce */ + for (var attr in this.endAttributes) { + attributeStack[ this.stackPos - yylen[ yyn ] ][ attr ] = this.endAttributes[ attr ]; + } + + // We do not build an AST! + // this['yyn' + yyn](attributeStack[ this.stackPos - yylen[ yyn ] ]); + + /* Goto - shift nonterminal */ + this.stackPos -= yylen[ yyn ]; + yyn = yylhs[ yyn ]; + if ((yyp = yygbase[ yyn ] + stateStack[ this.stackPos ]) >= 0 + && yyp < this.YYGLAST + && yygcheck[ yyp ] === yyn) { + state = yygoto[ yyp ]; + } else { + state = yygdefault[ yyn ]; + } + + ++this.stackPos; + + stateStack[ this.stackPos ] = state; + this.yyastk[ this.stackPos ] = this.yyval; + attributeStack[ this.stackPos ] = this.startAttributes; + } else { + /* error */ + if (eval !== true) { + + var expected = []; + + for (var i = 0; i < this.TOKEN_MAP_SIZE; ++i) { + if ((yyn = yybase[ state ] + i) >= 0 && yyn < this.YYLAST && yycheck[ yyn ] == i + || state < this.YY2TBLSTATE + && (yyn = yybase[ state + this.YYNLSTATES] + i) + && yyn < this.YYLAST && yycheck[ yyn ] == i + ) { + if (yyaction[ yyn ] != this.YYUNEXPECTED) { + if (expected.length == 4) { + /* Too many expected tokens */ + expected = []; + break; + } + + expected.push( this.terminals[ i ] ); + } + } + } + + var expectedString = ''; + if (expected.length) { + expectedString = ', expecting ' + expected.join(' or '); + } + throw new PHP.ParseError('syntax error, unexpected ' + terminals[ tokenId ] + expectedString, this.startAttributes['startLine']); + } else { + return this.startAttributes['startLine']; + } + + } + + if (state < this.YYNLSTATES) + break; + /* >= YYNLSTATES means shift-and-reduce */ + yyn = state - this.YYNLSTATES; + } + } +}; + +PHP.ParseError = function( msg, line ) { + this.message = msg; + this.line = line; +}; + +PHP.Parser.prototype.getNextToken = function( ) { + + this.startAttributes = {}; + this.endAttributes = {}; + + var token, + tmp; + + while (this.tokens[++this.pos] !== undefined) { + token = this.tokens[this.pos]; + + if (typeof token === "string") { + this.startAttributes['startLine'] = this.line; + this.endAttributes['endLine'] = this.line; + + // bug in token_get_all + if ('b"' === token) { + this.tokenValue = 'b"'; + return '"'.charCodeAt(0); + } else { + this.tokenValue = token; + return token.charCodeAt(0); + } + } else { + + + + this.line += ((tmp = token[ 1 ].match(/\n/g)) === null) ? 0 : tmp.length; + + if (PHP.Constants.T_COMMENT === token[0]) { + + if (!Array.isArray(this.startAttributes['comments'])) { + this.startAttributes['comments'] = []; + } + + this.startAttributes['comments'].push( { + type: "comment", + comment: token[1], + line: token[2] + }); + + } else if (PHP.Constants.T_DOC_COMMENT === token[0]) { + this.startAttributes['comments'].push( new PHPParser_Comment_Doc(token[1], token[2]) ); + } else if (this.dropTokens[token[0]] === undefined) { + this.tokenValue = token[1]; + this.startAttributes['startLine'] = token[2]; + this.endAttributes['endLine'] = this.line; + + return this.tokenMap[token[0]]; + } + } + } + + this.startAttributes['startLine'] = this.line; + + // 0 is the EOF token + return 0; +}; + +PHP.Parser.prototype.tokenName = function( token ) { + var constants = ["T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_YIELD","T_DOUBLE_ARROW","T_YIELD_FROM","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_POW_EQUAL","T_COALESCE","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_SPACESHIP","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INSTANCEOF","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_POW","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_FINALLY","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR","T_ELLIPSIS"]; + var current = "UNKNOWN"; + constants.some(function( constant ) { + if (PHP.Constants[ constant ] === token) { + current = constant; + return true; + } else { + return false; + } + }); + + return current; +}; + +/** + * Creates the token map. + * + * The token map maps the PHP internal token identifiers + * to the identifiers used by the PHP.Parser. Additionally it + * maps T_OPEN_TAG_WITH_ECHO to T_ECHO and T_CLOSE_TAG to ';'. + * + * @return array The token map + */ + +PHP.Parser.prototype.createTokenMap = function() { + var tokenMap = {}, + name, + i; + // 256 is the minimum possible token number, as everything below + // it is an ASCII value + for ( i = 256; i < 1000; ++i ) { + // T_OPEN_TAG_WITH_ECHO with dropped T_OPEN_TAG results in T_ECHO + if( PHP.Constants.T_OPEN_TAG_WITH_ECHO === i ) { + tokenMap[ i ] = PHP.Constants.T_ECHO; + // T_CLOSE_TAG is equivalent to ';' + } else if( PHP.Constants.T_CLOSE_TAG === i ) { + tokenMap[ i ] = 59; + // and the others can be mapped directly + } else if ( 'UNKNOWN' !== (name = this.tokenName( i ) ) ) { + tokenMap[ i ] = this[name]; + } + } + return tokenMap; +}; + + +/* This is an automatically GENERATED file, which should not be manually edited. + * Instead edit one of the following: + * * the grammar file grammar/zend_language_parser.jsy + * * the parser skeleton grammar/kymacc.js.parser + * * the preprocessing script grammar/rebuildParser.php + * + * The skeleton for this parser was written by Moriyoshi Koizumi and is based on + * the work by Masato Bito and is in the PUBLIC DOMAIN. + * Ported to JavaScript by Niklas von Hertzen + */ + +PHP.Parser.prototype.TOKEN_NONE = -1; +PHP.Parser.prototype.TOKEN_INVALID = 157; + +PHP.Parser.prototype.TOKEN_MAP_SIZE = 392; + +PHP.Parser.prototype.YYLAST = 889; +PHP.Parser.prototype.YY2TBLSTATE = 337; +PHP.Parser.prototype.YYGLAST = 410; +PHP.Parser.prototype.YYNLSTATES = 564; +PHP.Parser.prototype.YYUNEXPECTED = 32767; +PHP.Parser.prototype.YYDEFAULT = -32766; + +// {{{ Tokens +PHP.Parser.prototype.YYERRTOK = 256; +PHP.Parser.prototype.T_INCLUDE = 257; +PHP.Parser.prototype.T_INCLUDE_ONCE = 258; +PHP.Parser.prototype.T_EVAL = 259; +PHP.Parser.prototype.T_REQUIRE = 260; +PHP.Parser.prototype.T_REQUIRE_ONCE = 261; +PHP.Parser.prototype.T_LOGICAL_OR = 262; +PHP.Parser.prototype.T_LOGICAL_XOR = 263; +PHP.Parser.prototype.T_LOGICAL_AND = 264; +PHP.Parser.prototype.T_PRINT = 265; +PHP.Parser.prototype.T_YIELD = 266; +PHP.Parser.prototype.T_DOUBLE_ARROW = 267; +PHP.Parser.prototype.T_YIELD_FROM = 268; +PHP.Parser.prototype.T_PLUS_EQUAL = 269; +PHP.Parser.prototype.T_MINUS_EQUAL = 270; +PHP.Parser.prototype.T_MUL_EQUAL = 271; +PHP.Parser.prototype.T_DIV_EQUAL = 272; +PHP.Parser.prototype.T_CONCAT_EQUAL = 273; +PHP.Parser.prototype.T_MOD_EQUAL = 274; +PHP.Parser.prototype.T_AND_EQUAL = 275; +PHP.Parser.prototype.T_OR_EQUAL = 276; +PHP.Parser.prototype.T_XOR_EQUAL = 277; +PHP.Parser.prototype.T_SL_EQUAL = 278; +PHP.Parser.prototype.T_SR_EQUAL = 279; +PHP.Parser.prototype.T_POW_EQUAL = 280; +PHP.Parser.prototype.T_COALESCE = 281; +PHP.Parser.prototype.T_BOOLEAN_OR = 282; +PHP.Parser.prototype.T_BOOLEAN_AND = 283; +PHP.Parser.prototype.T_IS_EQUAL = 284; +PHP.Parser.prototype.T_IS_NOT_EQUAL = 285; +PHP.Parser.prototype.T_IS_IDENTICAL = 286; +PHP.Parser.prototype.T_IS_NOT_IDENTICAL = 287; +PHP.Parser.prototype.T_SPACESHIP = 288; +PHP.Parser.prototype.T_IS_SMALLER_OR_EQUAL = 289; +PHP.Parser.prototype.T_IS_GREATER_OR_EQUAL = 290; +PHP.Parser.prototype.T_SL = 291; +PHP.Parser.prototype.T_SR = 292; +PHP.Parser.prototype.T_INSTANCEOF = 293; +PHP.Parser.prototype.T_INC = 294; +PHP.Parser.prototype.T_DEC = 295; +PHP.Parser.prototype.T_INT_CAST = 296; +PHP.Parser.prototype.T_DOUBLE_CAST = 297; +PHP.Parser.prototype.T_STRING_CAST = 298; +PHP.Parser.prototype.T_ARRAY_CAST = 299; +PHP.Parser.prototype.T_OBJECT_CAST = 300; +PHP.Parser.prototype.T_BOOL_CAST = 301; +PHP.Parser.prototype.T_UNSET_CAST = 302; +PHP.Parser.prototype.T_POW = 303; +PHP.Parser.prototype.T_NEW = 304; +PHP.Parser.prototype.T_CLONE = 305; +PHP.Parser.prototype.T_EXIT = 306; +PHP.Parser.prototype.T_IF = 307; +PHP.Parser.prototype.T_ELSEIF = 308; +PHP.Parser.prototype.T_ELSE = 309; +PHP.Parser.prototype.T_ENDIF = 310; +PHP.Parser.prototype.T_LNUMBER = 311; +PHP.Parser.prototype.T_DNUMBER = 312; +PHP.Parser.prototype.T_STRING = 313; +PHP.Parser.prototype.T_STRING_VARNAME = 314; +PHP.Parser.prototype.T_VARIABLE = 315; +PHP.Parser.prototype.T_NUM_STRING = 316; +PHP.Parser.prototype.T_INLINE_HTML = 317; +PHP.Parser.prototype.T_CHARACTER = 318; +PHP.Parser.prototype.T_BAD_CHARACTER = 319; +PHP.Parser.prototype.T_ENCAPSED_AND_WHITESPACE = 320; +PHP.Parser.prototype.T_CONSTANT_ENCAPSED_STRING = 321; +PHP.Parser.prototype.T_ECHO = 322; +PHP.Parser.prototype.T_DO = 323; +PHP.Parser.prototype.T_WHILE = 324; +PHP.Parser.prototype.T_ENDWHILE = 325; +PHP.Parser.prototype.T_FOR = 326; +PHP.Parser.prototype.T_ENDFOR = 327; +PHP.Parser.prototype.T_FOREACH = 328; +PHP.Parser.prototype.T_ENDFOREACH = 329; +PHP.Parser.prototype.T_DECLARE = 330; +PHP.Parser.prototype.T_ENDDECLARE = 331; +PHP.Parser.prototype.T_AS = 332; +PHP.Parser.prototype.T_SWITCH = 333; +PHP.Parser.prototype.T_ENDSWITCH = 334; +PHP.Parser.prototype.T_CASE = 335; +PHP.Parser.prototype.T_DEFAULT = 336; +PHP.Parser.prototype.T_BREAK = 337; +PHP.Parser.prototype.T_CONTINUE = 338; +PHP.Parser.prototype.T_GOTO = 339; +PHP.Parser.prototype.T_FUNCTION = 340; +PHP.Parser.prototype.T_CONST = 341; +PHP.Parser.prototype.T_RETURN = 342; +PHP.Parser.prototype.T_TRY = 343; +PHP.Parser.prototype.T_CATCH = 344; +PHP.Parser.prototype.T_FINALLY = 345; +PHP.Parser.prototype.T_THROW = 346; +PHP.Parser.prototype.T_USE = 347; +PHP.Parser.prototype.T_INSTEADOF = 348; +PHP.Parser.prototype.T_GLOBAL = 349; +PHP.Parser.prototype.T_STATIC = 350; +PHP.Parser.prototype.T_ABSTRACT = 351; +PHP.Parser.prototype.T_FINAL = 352; +PHP.Parser.prototype.T_PRIVATE = 353; +PHP.Parser.prototype.T_PROTECTED = 354; +PHP.Parser.prototype.T_PUBLIC = 355; +PHP.Parser.prototype.T_VAR = 356; +PHP.Parser.prototype.T_UNSET = 357; +PHP.Parser.prototype.T_ISSET = 358; +PHP.Parser.prototype.T_EMPTY = 359; +PHP.Parser.prototype.T_HALT_COMPILER = 360; +PHP.Parser.prototype.T_CLASS = 361; +PHP.Parser.prototype.T_TRAIT = 362; +PHP.Parser.prototype.T_INTERFACE = 363; +PHP.Parser.prototype.T_EXTENDS = 364; +PHP.Parser.prototype.T_IMPLEMENTS = 365; +PHP.Parser.prototype.T_OBJECT_OPERATOR = 366; +PHP.Parser.prototype.T_LIST = 367; +PHP.Parser.prototype.T_ARRAY = 368; +PHP.Parser.prototype.T_CALLABLE = 369; +PHP.Parser.prototype.T_CLASS_C = 370; +PHP.Parser.prototype.T_TRAIT_C = 371; +PHP.Parser.prototype.T_METHOD_C = 372; +PHP.Parser.prototype.T_FUNC_C = 373; +PHP.Parser.prototype.T_LINE = 374; +PHP.Parser.prototype.T_FILE = 375; +PHP.Parser.prototype.T_COMMENT = 376; +PHP.Parser.prototype.T_DOC_COMMENT = 377; +PHP.Parser.prototype.T_OPEN_TAG = 378; +PHP.Parser.prototype.T_OPEN_TAG_WITH_ECHO = 379; +PHP.Parser.prototype.T_CLOSE_TAG = 380; +PHP.Parser.prototype.T_WHITESPACE = 381; +PHP.Parser.prototype.T_START_HEREDOC = 382; +PHP.Parser.prototype.T_END_HEREDOC = 383; +PHP.Parser.prototype.T_DOLLAR_OPEN_CURLY_BRACES = 384; +PHP.Parser.prototype.T_CURLY_OPEN = 385; +PHP.Parser.prototype.T_PAAMAYIM_NEKUDOTAYIM = 386; +PHP.Parser.prototype.T_NAMESPACE = 387; +PHP.Parser.prototype.T_NS_C = 388; +PHP.Parser.prototype.T_DIR = 389; +PHP.Parser.prototype.T_NS_SEPARATOR = 390; +PHP.Parser.prototype.T_ELLIPSIS = 391; +// }}} + +/* @var array Map of token ids to their respective names */ +PHP.Parser.prototype.terminals = [ + "$EOF", + "error", + "T_INCLUDE", + "T_INCLUDE_ONCE", + "T_EVAL", + "T_REQUIRE", + "T_REQUIRE_ONCE", + "','", + "T_LOGICAL_OR", + "T_LOGICAL_XOR", + "T_LOGICAL_AND", + "T_PRINT", + "T_YIELD", + "T_DOUBLE_ARROW", + "T_YIELD_FROM", + "'='", + "T_PLUS_EQUAL", + "T_MINUS_EQUAL", + "T_MUL_EQUAL", + "T_DIV_EQUAL", + "T_CONCAT_EQUAL", + "T_MOD_EQUAL", + "T_AND_EQUAL", + "T_OR_EQUAL", + "T_XOR_EQUAL", + "T_SL_EQUAL", + "T_SR_EQUAL", + "T_POW_EQUAL", + "'?'", + "':'", + "T_COALESCE", + "T_BOOLEAN_OR", + "T_BOOLEAN_AND", + "'|'", + "'^'", + "'&'", + "T_IS_EQUAL", + "T_IS_NOT_EQUAL", + "T_IS_IDENTICAL", + "T_IS_NOT_IDENTICAL", + "T_SPACESHIP", + "'<'", + "T_IS_SMALLER_OR_EQUAL", + "'>'", + "T_IS_GREATER_OR_EQUAL", + "T_SL", + "T_SR", + "'+'", + "'-'", + "'.'", + "'*'", + "'/'", + "'%'", + "'!'", + "T_INSTANCEOF", + "'~'", + "T_INC", + "T_DEC", + "T_INT_CAST", + "T_DOUBLE_CAST", + "T_STRING_CAST", + "T_ARRAY_CAST", + "T_OBJECT_CAST", + "T_BOOL_CAST", + "T_UNSET_CAST", + "'@'", + "T_POW", + "'['", + "T_NEW", + "T_CLONE", + "T_EXIT", + "T_IF", + "T_ELSEIF", + "T_ELSE", + "T_ENDIF", + "T_LNUMBER", + "T_DNUMBER", + "T_STRING", + "T_STRING_VARNAME", + "T_VARIABLE", + "T_NUM_STRING", + "T_INLINE_HTML", + "T_ENCAPSED_AND_WHITESPACE", + "T_CONSTANT_ENCAPSED_STRING", + "T_ECHO", + "T_DO", + "T_WHILE", + "T_ENDWHILE", + "T_FOR", + "T_ENDFOR", + "T_FOREACH", + "T_ENDFOREACH", + "T_DECLARE", + "T_ENDDECLARE", + "T_AS", + "T_SWITCH", + "T_ENDSWITCH", + "T_CASE", + "T_DEFAULT", + "T_BREAK", + "T_CONTINUE", + "T_GOTO", + "T_FUNCTION", + "T_CONST", + "T_RETURN", + "T_TRY", + "T_CATCH", + "T_FINALLY", + "T_THROW", + "T_USE", + "T_INSTEADOF", + "T_GLOBAL", + "T_STATIC", + "T_ABSTRACT", + "T_FINAL", + "T_PRIVATE", + "T_PROTECTED", + "T_PUBLIC", + "T_VAR", + "T_UNSET", + "T_ISSET", + "T_EMPTY", + "T_HALT_COMPILER", + "T_CLASS", + "T_TRAIT", + "T_INTERFACE", + "T_EXTENDS", + "T_IMPLEMENTS", + "T_OBJECT_OPERATOR", + "T_LIST", + "T_ARRAY", + "T_CALLABLE", + "T_CLASS_C", + "T_TRAIT_C", + "T_METHOD_C", + "T_FUNC_C", + "T_LINE", + "T_FILE", + "T_START_HEREDOC", + "T_END_HEREDOC", + "T_DOLLAR_OPEN_CURLY_BRACES", + "T_CURLY_OPEN", + "T_PAAMAYIM_NEKUDOTAYIM", + "T_NAMESPACE", + "T_NS_C", + "T_DIR", + "T_NS_SEPARATOR", + "T_ELLIPSIS", + "';'", + "'{'", + "'}'", + "'('", + "')'", + "'`'", + "']'", + "'\"'", + "'$'" + , "???" +]; + +/* @var Map which translates lexer tokens to internal tokens */ +PHP.Parser.prototype.translate = [ + 0, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 53, 155, 157, 156, 52, 35, 157, + 151, 152, 50, 47, 7, 48, 49, 51, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 29, 148, + 41, 15, 43, 28, 65, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 67, 157, 154, 34, 157, 153, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 149, 33, 150, 55, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 1, 2, 3, 4, + 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 30, 31, 32, 36, 37, 38, 39, 40, 42, + 44, 45, 46, 54, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 66, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 157, 157, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 157, 157, 157, 157, + 157, 157, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147 +]; + +PHP.Parser.prototype.yyaction = [ + 569, 570, 571, 572, 573, 215, 574, 575, 576, 612, + 613, 0, 27, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110,-32766,-32766,-32766, 95, 96, + 97, 24, 240, 226, -267,-32766,-32766,-32766,-32766,-32766, + -32766, 530, 344, 114, 98,-32766, 286,-32766,-32766,-32766, + -32766,-32766, 577, 870, 872,-32766,-32766,-32766,-32766,-32766, + -32766,-32766,-32766, 224,-32766, 714, 578, 579, 580, 581, + 582, 583, 584,-32766, 264, 644, 840, 841, 842, 839, + 838, 837, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 615, 616, 617, 618, 619, 607, 608, + 609, 610, 611, 596, 597, 598, 599, 600, 601, 602, + 638, 639, 640, 641, 642, 643, 603, 604, 605, 606, + 636, 627, 625, 626, 622, 623, 116, 614, 620, 621, + 628, 629, 631, 630, 632, 633, 42, 43, 381, 44, + 45, 624, 635, 634, -214, 46, 47, 289, 48,-32767, + -32767,-32767,-32767, 90, 91, 92, 93, 94, 267, 241, + 22, 840, 841, 842, 839, 838, 837, 832,-32766,-32766, + -32766, 306, 1000, 1000, 1037, 120, 966, 436, -423, 244, + 797, 49, 50, 660, 661, 272, 362, 51,-32766, 52, + 219, 220, 53, 54, 55, 56, 57, 58, 59, 60, + 1016, 22, 238, 61, 351, 945,-32766,-32766,-32766, 967, + 968, 646, 705, 1000, 28, -456, 125, 966,-32766,-32766, + -32766, 715, 398, 399, 216, 1000,-32766, 339,-32766,-32766, + -32766,-32766, 25, 222, 980, 552, 355, 378,-32766, -423, + -32766,-32766,-32766, 121, 65, 1045, 408, 1047, 1046, 274, + 274, 131, 244, -423, 394, 395, 358, 519, 945, 537, + -423, 111, -426, 398, 399, 130, 972, 973, 974, 975, + 969, 970, 243, 128, -422, -421, 1013, 409, 976, 971, + 353, 791, 792, 7, -162, 63, 124, 255, 701, 256, + 274, 382, -122, -122, -122, -4, 715, 383, 646, 1042, + -421, 704, 274, -219, 33, 17, 384, -122, 385, -122, + 386, -122, 387, -122, 369, 388, -122, -122, -122, 34, + 35, 389, 352, 520, 36, 390, 353, 702, 62, 112, + 818, 287, 288, 391, 392, -422, -421, -161, 350, 393, + 40, 38, 690, 735, 396, 397, 361, 22, 122, -422, + -421,-32766,-32766,-32766, 791, 792, -422, -421, -425, 1000, + -456, -421, -238, 966, 409, 41, 382, 353, 717, 535, + -122,-32766, 383,-32766,-32766, -421, 704, 21, 813, 33, + 17, 384, -421, 385, -466, 386, 224, 387, -467, 273, + 388, 367, 945, -458, 34, 35, 389, 352, 345, 36, + 390, 248, 247, 62, 254, 715, 287, 288, 391, 392, + 399,-32766,-32766,-32766, 393, 295, 1000, 652, 735, 396, + 397, 117, 115, 113, 814, 119, 72, 73, 74, -162, + 764, 65, 240, 541, 370, 518, 274, 118, 270, 92, + 93, 94, 242, 717, 535, -4, 26, 1000, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 547, 240, 713, 715, 382, 276,-32766,-32766, 126, + 945, 383, -161, 938, 98, 704, 225, 659, 33, 17, + 384, 346, 385, 274, 386, 728, 387, 221, 120, 388, + 505, 506, 540, 34, 35, 389, 715, -238, 36, 390, + 1017, 223, 62, 494, 18, 287, 288, 127, 297, 376, + 6, 98, 798, 393, 274, 660, 661, 490, 491, -466, + 39, -466, 514, -467, 539, -467, 16, 458, -458, 315, + 791, 792, 829, 553, 382, 817, 563, 653, 538, 765, + 383, 449, 751, 535, 704, 448, 435, 33, 17, 384, + 430, 385, 646, 386, 359, 387, 357, 647, 388, 673, + 429, 1040, 34, 35, 389, 715, 382, 36, 390, 941, + 492, 62, 383, 503, 287, 288, 704, 434, 440, 33, + 17, 384, 393, 385,-32766, 386, 445, 387, 495, 509, + 388, 10, 529, 542, 34, 35, 389, 715, 515, 36, + 390, 499, 500, 62, 214, -80, 287, 288, 452, 269, + 736, 717, 535, 488, 393, 356, 266, 979, 265, 730, + 982, 722, 358, 338, 493, 548, 0, 294, 737, 0, + 3, 0, 309, 0, 0, 382, 0, 0, 271, 0, + 0, 383, 0, 717, 535, 704, 227, 0, 33, 17, + 384, 9, 385, 0, 386, 0, 387, -382, 0, 388, + 0, 0, 325, 34, 35, 389, 715, 382, 36, 390, + 321, 341, 62, 383, 340, 287, 288, 704, 22, 320, + 33, 17, 384, 393, 385, 442, 386, 337, 387, 562, + 1000, 388, 32, 31, 966, 34, 35, 389, 823, 657, + 36, 390, 656, 821, 62, 703, 711, 287, 288, 561, + 822, 825, 717, 535, 695, 393, 747, 749, 693, 759, + 758, 752, 767, 945, 824, 706, 700, 712, 699, 698, + 658, 0, 263, 262, 559, 558, 382, 556, 554, 551, + 398, 399, 383, 550, 717, 535, 704, 546, 545, 33, + 17, 384, 543, 385, 536, 386, 71, 387, 933, 932, + 388, 30, 65, 731, 34, 35, 389, 274, 724, 36, + 390, 830, 734, 62, 663, 662, 287, 288,-32766,-32766, + -32766, 733, 732, 934, 393, 665, 664, 756, 555, 691, + 1041, 1001, 994, 1006, 1011, 1014, 757, 1043,-32766, 654, + -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, + -32767, 655, 1044, 717, 535, -446, 926, 348, 343, 268, + 237, 236, 235, 234, 218, 217, 132, 129, -426, -425, + -424, 123, 20, 23, 70, 69, 29, 37, 64, 68, + 66, 67, -448, 0, 15, 19, 250, 910, 296, -217, + 467, 484, 909, 472, 528, 913, 11, 964, 955, -215, + 525, 379, 375, 373, 371, 14, 13, 12, -214, 0, + -393, 0, 1005, 1039, 992, 993, 963, 0, 981 +]; + +PHP.Parser.prototype.yycheck = [ + 2, 3, 4, 5, 6, 13, 8, 9, 10, 11, + 12, 0, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 8, 9, 10, 50, 51, + 52, 7, 54, 7, 79, 8, 9, 10, 8, 9, + 10, 77, 7, 13, 66, 28, 7, 30, 31, 32, + 33, 34, 54, 56, 57, 28, 8, 30, 31, 32, + 33, 34, 35, 35, 109, 1, 68, 69, 70, 71, + 72, 73, 74, 118, 7, 77, 112, 113, 114, 115, + 116, 117, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 7, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 2, 3, 4, 5, + 6, 143, 144, 145, 152, 11, 12, 7, 14, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 109, 7, + 67, 112, 113, 114, 115, 116, 117, 118, 8, 9, + 10, 79, 79, 79, 82, 147, 83, 82, 67, 28, + 152, 47, 48, 102, 103, 7, 7, 53, 28, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 1, 67, 68, 69, 70, 112, 8, 9, 10, 75, + 76, 77, 148, 79, 13, 7, 67, 83, 8, 9, + 10, 1, 129, 130, 13, 79, 28, 146, 30, 31, + 32, 33, 140, 141, 139, 29, 102, 7, 28, 128, + 30, 31, 32, 149, 151, 77, 112, 79, 80, 156, + 156, 15, 28, 142, 120, 121, 146, 77, 112, 149, + 149, 15, 151, 129, 130, 15, 132, 133, 134, 135, + 136, 137, 138, 15, 67, 67, 77, 143, 144, 145, + 146, 130, 131, 7, 7, 151, 15, 153, 148, 155, + 156, 71, 72, 73, 74, 0, 1, 77, 77, 150, + 67, 81, 156, 152, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 29, 95, 96, 97, 98, 99, + 100, 101, 102, 143, 104, 105, 146, 148, 108, 15, + 150, 111, 112, 113, 114, 128, 128, 7, 7, 119, + 67, 67, 122, 123, 124, 125, 7, 67, 149, 142, + 142, 8, 9, 10, 130, 131, 149, 149, 151, 79, + 152, 128, 7, 83, 143, 7, 71, 146, 148, 149, + 150, 28, 77, 30, 31, 142, 81, 7, 148, 84, + 85, 86, 149, 88, 7, 90, 35, 92, 7, 33, + 95, 7, 112, 7, 99, 100, 101, 102, 103, 104, + 105, 128, 128, 108, 109, 1, 111, 112, 113, 114, + 130, 8, 9, 10, 119, 142, 79, 122, 123, 124, + 125, 15, 149, 149, 148, 29, 8, 9, 10, 152, + 29, 151, 54, 29, 149, 79, 156, 15, 143, 47, + 48, 49, 29, 148, 149, 150, 28, 79, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 29, 54, 29, 1, 71, 67, 8, 9, 29, + 112, 77, 152, 152, 66, 81, 35, 148, 84, 85, + 86, 123, 88, 156, 90, 35, 92, 35, 147, 95, + 72, 73, 29, 99, 100, 101, 1, 152, 104, 105, + 152, 35, 108, 72, 73, 111, 112, 97, 98, 102, + 103, 66, 152, 119, 156, 102, 103, 106, 107, 152, + 67, 154, 74, 152, 29, 154, 152, 128, 152, 78, + 130, 131, 148, 149, 71, 148, 149, 148, 149, 148, + 77, 77, 148, 149, 81, 77, 77, 84, 85, 86, + 77, 88, 77, 90, 77, 92, 77, 77, 95, 77, + 77, 77, 99, 100, 101, 1, 71, 104, 105, 79, + 79, 108, 77, 79, 111, 112, 81, 79, 82, 84, + 85, 86, 119, 88, 82, 90, 86, 92, 87, 96, + 95, 94, 89, 29, 99, 100, 101, 1, 91, 104, + 105, 93, 96, 108, 94, 94, 111, 112, 94, 110, + 123, 148, 149, 109, 119, 102, 127, 139, 126, 147, + 139, 150, 146, 149, 154, 29, -1, 142, 123, -1, + 142, -1, 146, -1, -1, 71, -1, -1, 126, -1, + -1, 77, -1, 148, 149, 81, 35, -1, 84, 85, + 86, 142, 88, -1, 90, -1, 92, 142, -1, 95, + -1, -1, 146, 99, 100, 101, 1, 71, 104, 105, + 146, 146, 108, 77, 146, 111, 112, 81, 67, 146, + 84, 85, 86, 119, 88, 146, 90, 149, 92, 148, + 79, 95, 148, 148, 83, 99, 100, 101, 148, 148, + 104, 105, 148, 148, 108, 148, 148, 111, 112, 148, + 148, 148, 148, 149, 148, 119, 148, 148, 148, 148, + 148, 148, 148, 112, 148, 148, 148, 148, 148, 148, + 148, -1, 149, 149, 149, 149, 71, 149, 149, 149, + 129, 130, 77, 149, 148, 149, 81, 149, 149, 84, + 85, 86, 149, 88, 149, 90, 149, 92, 150, 150, + 95, 151, 151, 150, 99, 100, 101, 156, 150, 104, + 105, 150, 150, 108, 150, 150, 111, 112, 8, 9, + 10, 150, 150, 150, 119, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 28, 150, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 150, 150, 148, 149, 151, 153, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, -1, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, -1, + 153, -1, 154, 154, 154, 154, 154, -1, 155 +]; + +PHP.Parser.prototype.yybase = [ + 0, 220, 295, 94, 180, 560, -2, -2, -2, -2, + -36, 473, 574, 606, 574, 505, 404, 675, 675, 675, + 28, 351, 462, 462, 462, 461, 396, 476, 451, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 401, 64, 201, 568, 704, 713, 708, + 702, 714, 520, 706, 705, 211, 650, 651, 450, 652, + 653, 654, 655, 709, 480, 703, 712, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 48, 30, 469, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 160, 160, 160, 343, 210, + 208, 198, 17, 233, 27, 780, 780, 780, 780, 780, + 108, 108, 108, 108, 621, 621, 93, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, 632, 641, + 642, 643, 392, 392, 151, 151, 151, 151, 368, -45, + 146, 224, 224, 95, 410, 491, 733, 199, 199, 111, + 207, -22, -22, -22, 81, 506, 92, 92, 233, 233, + 273, 233, 423, 423, 423, 221, 221, 221, 221, 221, + 110, 221, 221, 221, 617, 512, 168, 516, 647, 397, + 503, 656, 274, 381, 377, 538, 535, 337, 523, 337, + 421, 441, 428, 525, 337, 337, 285, 401, 394, 378, + 567, 474, 339, 564, 140, 179, 409, 399, 384, 594, + 561, 711, 330, 710, 358, 149, 378, 378, 378, 370, + 593, 548, 355, -8, 646, 484, 277, 417, 386, 645, + 635, 230, 634, 276, 331, 356, 565, 485, 485, 485, + 485, 485, 485, 460, 485, 483, 691, 691, 478, 501, + 460, 696, 460, 485, 691, 460, 460, 502, 485, 522, + 522, 483, 508, 499, 691, 691, 499, 478, 460, 571, + 551, 514, 482, 413, 413, 514, 460, 413, 501, 413, + 11, 697, 699, 444, 700, 695, 698, 676, 694, 493, + 615, 497, 515, 684, 683, 693, 479, 489, 620, 692, + 549, 592, 487, 246, 314, 498, 463, 689, 523, 486, + 455, 455, 455, 463, 687, 455, 455, 455, 455, 455, + 455, 455, 455, 732, 24, 495, 510, 591, 590, 589, + 406, 588, 496, 524, 422, 599, 488, 549, 549, 649, + 727, 673, 490, 682, 716, 690, 555, 119, 271, 681, + 648, 543, 492, 534, 680, 598, 246, 715, 494, 672, + 549, 671, 455, 674, 701, 730, 731, 688, 728, 722, + 152, 526, 587, 178, 729, 659, 596, 595, 554, 725, + 707, 721, 720, 178, 576, 511, 717, 518, 677, 504, + 678, 613, 258, 657, 686, 584, 724, 723, 726, 583, + 582, 609, 608, 250, 236, 685, 442, 458, 517, 581, + 500, 628, 604, 679, 580, 579, 623, 619, 718, 521, + 486, 519, 509, 507, 513, 600, 618, 719, 206, 578, + 586, 573, 481, 572, 631, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 134, 134, -2, -2, -2, + 0, 0, 0, 0, -2, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, -3, 418, 418, -3, 418, 418, + 418, 418, 418, 418, -22, -22, -22, -22, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 49, 49, 49, 49, -22, -22, 221, 221, + 221, 221, 221, 49, 221, 221, 221, 92, 221, 92, + 92, 337, 337, 0, 0, 0, 0, 0, 485, 92, + 0, 0, 0, 0, 0, 0, 485, 485, 485, 0, + 0, 0, 0, 0, 485, 0, 0, 0, 337, 92, + 0, 420, 420, 178, 420, 420, 0, 0, 0, 485, + 485, 0, 508, 0, 0, 0, 0, 691, 0, 0, + 0, 0, 0, 455, 119, 682, 0, 39, 0, 0, + 0, 0, 0, 490, 39, 26, 0, 26, 0, 0, + 455, 455, 455, 0, 490, 490, 0, 0, 67, 490, + 0, 0, 0, 67, 35, 0, 35, 0, 0, 0, + 178 +]; + +PHP.Parser.prototype.yydefault = [ + 3,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767, 468, 468, 468,32767,32767,32767,32767, 285, + 460, 285, 285,32767, 419, 419, 419, 419, 419, 419, + 419, 460,32767,32767,32767,32767,32767, 364,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 465,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 347, 348, 350, + 351, 284, 420, 237, 464, 283, 116, 246, 239, 191, + 282, 223, 119, 312, 365, 314, 363, 367, 313, 290, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 288, 289, 366, 344, 343, 342, 310, 311, + 287, 315, 317, 287, 316, 333, 334, 331, 332, 335, + 336, 337, 338, 339,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767, 269, 269, + 269, 269, 324, 325, 229, 229, 229, 229,32767, 270, + 32767, 229,32767,32767,32767,32767,32767,32767,32767, 413, + 341, 319, 320, 318,32767, 392,32767, 394, 307, 309, + 387, 291,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767, 389, 421, 421,32767,32767,32767, 381,32767, + 159, 210, 212, 397,32767,32767,32767,32767,32767, 329, + 32767,32767,32767,32767,32767,32767, 474,32767,32767,32767, + 32767,32767, 421,32767,32767,32767, 321, 322, 323,32767, + 32767,32767, 421, 421,32767,32767, 421,32767, 421,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767, 163,32767,32767, 395, 395,32767,32767, + 163, 390, 163,32767,32767, 163, 163, 176,32767, 174, + 174,32767,32767, 178,32767, 435, 178,32767, 163, 196, + 196, 373, 165, 231, 231, 373, 163, 231,32767, 231, + 32767,32767,32767, 82,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 383,32767,32767,32767, 401,32767, 414, 433, 381,32767, + 327, 328, 330,32767, 423, 352, 353, 354, 355, 356, + 357, 358, 360,32767, 461, 386,32767,32767,32767,32767, + 32767,32767, 84, 108, 245,32767, 473, 84, 384,32767, + 473,32767,32767,32767,32767,32767,32767, 286,32767,32767, + 32767, 84,32767, 84,32767,32767, 457,32767,32767, 421, + 385,32767, 326, 398, 439,32767,32767, 422,32767,32767, + 218, 84,32767, 177,32767,32767,32767,32767,32767,32767, + 401,32767,32767, 179,32767,32767, 421,32767,32767,32767, + 32767,32767, 281,32767,32767,32767,32767,32767, 421,32767, + 32767,32767,32767, 222,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 82, + 60,32767, 263,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 121, 121, 3, 3, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 248, 154, 248, 204, 248, 248, + 207, 196, 196, 255 +]; + +PHP.Parser.prototype.yygoto = [ + 163, 163, 135, 135, 135, 146, 148, 179, 164, 161, + 145, 161, 161, 161, 162, 162, 162, 162, 162, 162, + 162, 145, 157, 158, 159, 160, 176, 174, 177, 410, + 411, 299, 412, 415, 416, 417, 418, 419, 420, 421, + 422, 857, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 147, 173, 175, 178, 195, 198, 199, 201, 202, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 232, 233, 251, 252, 253, 316, 317, 318, 462, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 149, 194, 150, 165, 166, 167, 196, + 168, 151, 152, 153, 169, 154, 197, 133, 170, 155, + 171, 172, 156, 521, 200, 257, 246, 464, 432, 687, + 649, 278, 481, 482, 527, 200, 437, 437, 437, 766, + 5, 746, 650, 557, 437, 426, 775, 770, 428, 431, + 444, 465, 466, 468, 483, 279, 651, 336, 450, 453, + 437, 560, 485, 487, 508, 511, 763, 516, 517, 777, + 524, 762, 526, 532, 773, 534, 480, 480, 965, 965, + 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, + 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 942, 502, 478, 496, 512, 456, + 298, 437, 437, 451, 471, 437, 437, 674, 437, 229, + 456, 230, 231, 463, 828, 533, 681, 438, 513, 826, + 461, 475, 460, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 301, 674, 674, + 443, 454, 1033, 1033, 1034, 1034, 425, 531, 425, 708, + 750, 800, 457, 372, 1033, 943, 1034, 1026, 300, 1018, + 497, 8, 313, 904, 796, 944, 996, 785, 789, 1007, + 285, 670, 1036, 329, 307, 310, 804, 668, 544, 332, + 935, 940, 366, 807, 678, 477, 377, 754, 844, 0, + 667, 667, 675, 675, 675, 677, 0, 666, 323, 498, + 328, 312, 312, 258, 259, 283, 459, 261, 322, 284, + 326, 486, 280, 281, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 790, 790, 790, 790, 946, 0, 946, + 790, 790, 1004, 790, 1004, 0, 0, 0, 0, 836, + 0, 1015, 1015, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 744, 744, 744, 720, 744, 0, + 739, 745, 721, 780, 780, 1023, 0, 0, 1002, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 806, 0, 806, 0, 0, 0, 0, 1008, 1009 +]; + +PHP.Parser.prototype.yygcheck = [ + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 52, 45, 112, 112, 80, 8, 10, + 10, 64, 55, 55, 55, 45, 8, 8, 8, 10, + 92, 10, 11, 10, 8, 10, 10, 10, 38, 38, + 38, 38, 38, 38, 62, 62, 12, 62, 28, 8, + 8, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 76, 56, 35, 35, 56, 69, + 56, 8, 8, 8, 8, 8, 8, 19, 8, 60, + 69, 60, 60, 7, 7, 7, 25, 8, 7, 7, + 2, 2, 8, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 53, 19, 19, + 53, 53, 123, 123, 124, 124, 109, 5, 109, 44, + 29, 78, 114, 53, 123, 76, 124, 122, 41, 120, + 43, 53, 42, 96, 74, 76, 76, 72, 75, 117, + 14, 21, 123, 18, 9, 13, 79, 20, 66, 17, + 102, 104, 58, 81, 22, 59, 100, 63, 94, -1, + 19, 19, 19, 19, 19, 19, -1, 19, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 64, 64, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 52, 52, 52, 52, 52, -1, 52, + 52, 52, 80, 52, 80, -1, -1, -1, -1, 92, + -1, 80, 80, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 52, 52, 52, 52, 52, -1, + 52, 52, 52, 69, 69, 69, -1, -1, 80, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 80, -1, 80, -1, -1, -1, -1, 80, 80 +]; + +PHP.Parser.prototype.yygbase = [ + 0, 0, -317, 0, 0, 237, 0, 210, -136, 4, + 118, 130, 144, -10, 16, 0, 0, -59, 10, -47, + -9, 7, -77, -20, 0, 209, 0, 0, -388, 234, + 0, 0, 0, 0, 0, 165, 0, 0, 103, 0, + 0, 225, 44, 45, 235, 84, 0, 0, 0, 0, + 0, 0, 109, -115, 0, -113, -179, 0, -78, -81, + -347, 0, -122, -80, -249, 0, -19, 0, 0, 169, + -48, 0, 26, 0, 22, 24, -99, 0, 230, -13, + 114, -79, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 0, -90, 0, 23, 0, 0, 0, + -89, 0, -67, 0, -69, 0, 0, 0, 0, 8, + 0, 0, -140, -34, 229, 9, 0, 21, 0, 0, + 218, 0, 233, -3, -1, 0 +]; + +PHP.Parser.prototype.yygdefault = [ + -32768, 380, 565, 2, 566, 637, 645, 504, 400, 433, + 748, 688, 689, 303, 342, 401, 302, 330, 324, 676, + 669, 671, 679, 134, 333, 682, 1, 684, 439, 716, + 291, 692, 292, 507, 694, 446, 696, 697, 427, 304, + 305, 447, 311, 479, 707, 203, 308, 709, 290, 710, + 719, 335, 293, 510, 489, 469, 501, 402, 363, 476, + 228, 455, 473, 753, 277, 761, 549, 769, 772, 403, + 404, 470, 784, 368, 794, 788, 960, 319, 799, 805, + 991, 808, 811, 349, 331, 327, 815, 816, 4, 820, + 522, 523, 835, 239, 843, 856, 347, 923, 925, 441, + 374, 936, 360, 334, 939, 995, 354, 405, 364, 952, + 260, 282, 245, 406, 423, 249, 407, 365, 998, 314, + 1019, 424, 1027, 1035, 275, 474 +]; + +PHP.Parser.prototype.yylhs = [ + 0, 1, 3, 3, 2, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, + 7, 7, 8, 8, 9, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 14, 14, 15, 15, + 15, 15, 17, 17, 13, 13, 18, 18, 19, 19, + 20, 20, 21, 21, 16, 16, 22, 24, 24, 25, + 26, 26, 28, 27, 27, 27, 27, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 10, 10, 48, 48, 51, 51, 50, 49, + 49, 42, 42, 53, 53, 54, 54, 11, 12, 12, + 12, 57, 57, 57, 58, 58, 61, 61, 59, 59, + 62, 62, 36, 36, 44, 44, 47, 47, 47, 46, + 46, 63, 37, 37, 37, 37, 64, 64, 65, 65, + 66, 66, 34, 34, 30, 30, 67, 32, 32, 68, + 31, 31, 33, 33, 43, 43, 43, 43, 55, 55, + 71, 71, 72, 72, 74, 74, 75, 75, 75, 73, + 73, 56, 56, 76, 76, 77, 77, 78, 78, 78, + 39, 39, 79, 40, 40, 81, 81, 60, 60, 82, + 82, 82, 82, 87, 87, 88, 88, 89, 89, 89, + 89, 89, 90, 91, 91, 86, 86, 83, 83, 85, + 85, 93, 93, 92, 92, 92, 92, 92, 92, 84, + 84, 94, 94, 41, 41, 35, 35, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 101, 95, 95, 100, 100, 103, 103, 104, 105, 105, + 105, 109, 109, 52, 52, 52, 96, 96, 107, 107, + 97, 97, 99, 99, 99, 102, 102, 113, 113, 70, + 115, 115, 115, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 98, 38, + 38, 111, 111, 111, 106, 106, 106, 116, 116, 116, + 116, 116, 116, 45, 45, 45, 80, 80, 80, 118, + 110, 110, 110, 110, 110, 110, 108, 108, 108, 117, + 117, 117, 117, 69, 119, 119, 120, 120, 120, 120, + 120, 114, 121, 121, 122, 122, 122, 122, 122, 112, + 112, 112, 112, 124, 123, 123, 123, 123, 123, 123, + 123, 125, 125, 125 +]; + +PHP.Parser.prototype.yylen = [ + 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, + 5, 4, 3, 4, 2, 3, 1, 1, 7, 8, + 6, 7, 3, 1, 3, 1, 3, 1, 1, 3, + 1, 2, 1, 2, 3, 1, 3, 3, 1, 3, + 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, + 5, 7, 9, 5, 3, 3, 3, 3, 3, 3, + 1, 2, 5, 7, 9, 5, 6, 3, 3, 2, + 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, + 4, 1, 3, 0, 1, 0, 1, 10, 7, 6, + 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, + 1, 3, 1, 4, 1, 4, 1, 1, 4, 1, + 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, + 1, 1, 1, 4, 0, 2, 5, 0, 2, 6, + 0, 2, 0, 3, 1, 2, 1, 1, 1, 0, + 1, 3, 4, 6, 1, 2, 1, 1, 1, 0, + 1, 0, 2, 2, 3, 1, 3, 1, 2, 2, + 3, 1, 1, 3, 1, 1, 3, 2, 0, 3, + 4, 9, 3, 1, 3, 0, 2, 4, 5, 4, + 4, 4, 3, 1, 1, 1, 3, 1, 1, 0, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 3, 3, 1, 0, 1, 1, 3, 3, + 3, 4, 1, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 5, 4, 3, 4, 4, 2, 2, 4, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 3, 2, 1, 2, 4, 2, 10, 11, + 7, 3, 2, 0, 4, 1, 3, 2, 2, 2, + 4, 1, 1, 1, 2, 3, 1, 1, 1, 1, + 0, 3, 0, 1, 1, 0, 1, 1, 3, 3, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 2, 3, 3, 0, + 1, 1, 3, 1, 1, 3, 1, 1, 4, 4, + 4, 1, 4, 1, 1, 3, 1, 4, 2, 3, + 1, 4, 4, 3, 3, 3, 1, 3, 1, 1, + 3, 1, 1, 4, 3, 1, 1, 1, 3, 3, + 0, 1, 3, 1, 3, 1, 4, 2, 0, 2, + 2, 1, 2, 1, 1, 4, 3, 3, 3, 6, + 3, 1, 1, 1 +]; + + + +exports.PHP = PHP; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/php_completions.js b/plugins/node_modules/ace/lib/ace/mode/php_completions.js new file mode 100644 index 00000000..62bebb9f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/php_completions.js @@ -0,0 +1,9400 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var functionMap = { + "abs": [ + "int abs(int number)", + "Return the absolute value of the number" + ], + "acos": [ + "float acos(float number)", + "Return the arc cosine of the number in radians" + ], + "acosh": [ + "float acosh(float number)", + "Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number" + ], + "addGlob": [ + "bool addGlob(string pattern[,int flags [, array options]])", + "Add files matching the glob pattern. See php's glob for the pattern syntax." + ], + "addPattern": [ + "bool addPattern(string pattern[, string path [, array options]])", + "Add files matching the pcre pattern. See php's pcre for the pattern syntax." + ], + "addcslashes": [ + "string addcslashes(string str, string charlist)", + "Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)" + ], + "addslashes": [ + "string addslashes(string str)", + "Escapes single quote, double quotes and backslash characters in a string with backslashes" + ], + "apache_child_terminate": [ + "bool apache_child_terminate(void)", + "Terminate apache process after this request" + ], + "apache_get_modules": [ + "array apache_get_modules(void)", + "Get a list of loaded Apache modules" + ], + "apache_get_version": [ + "string apache_get_version(void)", + "Fetch Apache version" + ], + "apache_getenv": [ + "bool apache_getenv(string variable [, bool walk_to_top])", + "Get an Apache subprocess_env variable" + ], + "apache_lookup_uri": [ + "object apache_lookup_uri(string URI)", + "Perform a partial request of the given URI to obtain information about it" + ], + "apache_note": [ + "string apache_note(string note_name [, string note_value])", + "Get and set Apache request notes" + ], + "apache_request_auth_name": [ + "string apache_request_auth_name()", + "" + ], + "apache_request_auth_type": [ + "string apache_request_auth_type()", + "" + ], + "apache_request_discard_request_body": [ + "long apache_request_discard_request_body()", + "" + ], + "apache_request_err_headers_out": [ + "array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])", + "* fetch all headers that go out in case of an error or a subrequest" + ], + "apache_request_headers": [ + "array apache_request_headers(void)", + "Fetch all HTTP request headers" + ], + "apache_request_headers_in": [ + "array apache_request_headers_in()", + "* fetch all incoming request headers" + ], + "apache_request_headers_out": [ + "array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])", + "* fetch all outgoing request headers" + ], + "apache_request_is_initial_req": [ + "bool apache_request_is_initial_req()", + "" + ], + "apache_request_log_error": [ + "boolean apache_request_log_error(string message, [long facility])", + "" + ], + "apache_request_meets_conditions": [ + "long apache_request_meets_conditions()", + "" + ], + "apache_request_remote_host": [ + "int apache_request_remote_host([int type])", + "" + ], + "apache_request_run": [ + "long apache_request_run()", + "This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status." + ], + "apache_request_satisfies": [ + "long apache_request_satisfies()", + "" + ], + "apache_request_server_port": [ + "int apache_request_server_port()", + "" + ], + "apache_request_set_etag": [ + "void apache_request_set_etag()", + "" + ], + "apache_request_set_last_modified": [ + "void apache_request_set_last_modified()", + "" + ], + "apache_request_some_auth_required": [ + "bool apache_request_some_auth_required()", + "" + ], + "apache_request_sub_req_lookup_file": [ + "object apache_request_sub_req_lookup_file(string file)", + "Returns sub-request for the specified file. You would need to run it yourself with run()." + ], + "apache_request_sub_req_lookup_uri": [ + "object apache_request_sub_req_lookup_uri(string uri)", + "Returns sub-request for the specified uri. You would need to run it yourself with run()" + ], + "apache_request_sub_req_method_uri": [ + "object apache_request_sub_req_method_uri(string method, string uri)", + "Returns sub-request for the specified file. You would need to run it yourself with run()." + ], + "apache_request_update_mtime": [ + "long apache_request_update_mtime([int dependency_mtime])", + "" + ], + "apache_reset_timeout": [ + "bool apache_reset_timeout(void)", + "Reset the Apache write timer" + ], + "apache_response_headers": [ + "array apache_response_headers(void)", + "Fetch all HTTP response headers" + ], + "apache_setenv": [ + "bool apache_setenv(string variable, string value [, bool walk_to_top])", + "Set an Apache subprocess_env variable" + ], + "array_change_key_case": [ + "array array_change_key_case(array input [, int case=CASE_LOWER])", + "Retuns an array with all string keys lowercased [or uppercased]" + ], + "array_chunk": [ + "array array_chunk(array input, int size [, bool preserve_keys])", + "Split array into chunks" + ], + "array_combine": [ + "array array_combine(array keys, array values)", + "Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values" + ], + "array_count_values": [ + "array array_count_values(array input)", + "Return the value as key and the frequency of that value in input as value" + ], + "array_diff": [ + "array array_diff(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are not present in any of the others arguments." + ], + "array_diff_assoc": [ + "array array_diff_assoc(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal" + ], + "array_diff_key": [ + "array array_diff_key(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved." + ], + "array_diff_uassoc": [ + "array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function." + ], + "array_diff_ukey": [ + "array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)", + "Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved." + ], + "array_fill": [ + "array array_fill(int start_key, int num, mixed val)", + "Create an array containing num elements starting with index start_key each initialized to val" + ], + "array_fill_keys": [ + "array array_fill_keys(array keys, mixed val)", + "Create an array using the elements of the first parameter as keys each initialized to val" + ], + "array_filter": [ + "array array_filter(array input [, mixed callback])", + "Filters elements from the array via the callback." + ], + "array_flip": [ + "array array_flip(array input)", + "Return array with key <-> value flipped" + ], + "array_intersect": [ + "array array_intersect(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are present in all the other arguments" + ], + "array_intersect_assoc": [ + "array array_intersect_assoc(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check" + ], + "array_intersect_key": [ + "array array_intersect_key(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data." + ], + "array_intersect_uassoc": [ + "array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback." + ], + "array_intersect_ukey": [ + "array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)", + "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data." + ], + "array_key_exists": [ + "bool array_key_exists(mixed key, array search)", + "Checks if the given key or index exists in the array" + ], + "array_keys": [ + "array array_keys(array input [, mixed search_value[, bool strict]])", + "Return just the keys from the input array, optionally only for the specified search_value" + ], + "array_map": [ + "array array_map(mixed callback, array input1 [, array input2 ,...])", + "Applies the callback to the elements in given arrays." + ], + "array_merge": [ + "array array_merge(array arr1, array arr2 [, array ...])", + "Merges elements from passed arrays into one array" + ], + "array_merge_recursive": [ + "array array_merge_recursive(array arr1, array arr2 [, array ...])", + "Recursively merges elements from passed arrays into one array" + ], + "array_multisort": [ + "bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])", + "Sort multiple arrays at once similar to how ORDER BY clause works in SQL" + ], + "array_pad": [ + "array array_pad(array input, int pad_size, mixed pad_value)", + "Returns a copy of input array padded with pad_value to size pad_size" + ], + "array_pop": [ + "mixed array_pop(array stack)", + "Pops an element off the end of the array" + ], + "array_product": [ + "mixed array_product(array input)", + "Returns the product of the array entries" + ], + "array_push": [ + "int array_push(array stack, mixed var [, mixed ...])", + "Pushes elements onto the end of the array" + ], + "array_rand": [ + "mixed array_rand(array input [, int num_req])", + "Return key/keys for random entry/entries in the array" + ], + "array_reduce": [ + "mixed array_reduce(array input, mixed callback [, mixed initial])", + "Iteratively reduce the array to a single value via the callback." + ], + "array_replace": [ + "array array_replace(array arr1, array arr2 [, array ...])", + "Replaces elements from passed arrays into one array" + ], + "array_replace_recursive": [ + "array array_replace_recursive(array arr1, array arr2 [, array ...])", + "Recursively replaces elements from passed arrays into one array" + ], + "array_reverse": [ + "array array_reverse(array input [, bool preserve keys])", + "Return input as a new array with the order of the entries reversed" + ], + "array_search": [ + "mixed array_search(mixed needle, array haystack [, bool strict])", + "Searches the array for a given value and returns the corresponding key if successful" + ], + "array_shift": [ + "mixed array_shift(array stack)", + "Pops an element off the beginning of the array" + ], + "array_slice": [ + "array array_slice(array input, int offset [, int length [, bool preserve_keys]])", + "Returns elements specified by offset and length" + ], + "array_splice": [ + "array array_splice(array input, int offset [, int length [, array replacement]])", + "Removes the elements designated by offset and length and replace them with supplied array" + ], + "array_sum": [ + "mixed array_sum(array input)", + "Returns the sum of the array entries" + ], + "array_udiff": [ + "array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function." + ], + "array_udiff_assoc": [ + "array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function." + ], + "array_udiff_uassoc": [ + "array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions." + ], + "array_uintersect": [ + "array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback." + ], + "array_uintersect_assoc": [ + "array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback." + ], + "array_uintersect_uassoc": [ + "array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks." + ], + "array_unique": [ + "array array_unique(array input [, int sort_flags])", + "Removes duplicate values from array" + ], + "array_unshift": [ + "int array_unshift(array stack, mixed var [, mixed ...])", + "Pushes elements onto the beginning of the array" + ], + "array_values": [ + "array array_values(array input)", + "Return just the values from the input array" + ], + "array_walk": [ + "bool array_walk(array input, string funcname [, mixed userdata])", + "Apply a user function to every member of an array" + ], + "array_walk_recursive": [ + "bool array_walk_recursive(array input, string funcname [, mixed userdata])", + "Apply a user function recursively to every member of an array" + ], + "arsort": [ + "bool arsort(array &array_arg [, int sort_flags])", + "Sort an array in reverse order and maintain index association" + ], + "asin": [ + "float asin(float number)", + "Returns the arc sine of the number in radians" + ], + "asinh": [ + "float asinh(float number)", + "Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number" + ], + "asort": [ + "bool asort(array &array_arg [, int sort_flags])", + "Sort an array and maintain index association" + ], + "assert": [ + "int assert(string|bool assertion)", + "Checks if assertion is false" + ], + "assert_options": [ + "mixed assert_options(int what [, mixed value])", + "Set/get the various assert flags" + ], + "atan": [ + "float atan(float number)", + "Returns the arc tangent of the number in radians" + ], + "atan2": [ + "float atan2(float y, float x)", + "Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x" + ], + "atanh": [ + "float atanh(float number)", + "Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number" + ], + "attachIterator": [ + "void attachIterator(Iterator iterator[, mixed info])", + "Attach a new iterator" + ], + "base64_decode": [ + "string base64_decode(string str[, bool strict])", + "Decodes string using MIME base64 algorithm" + ], + "base64_encode": [ + "string base64_encode(string str)", + "Encodes string using MIME base64 algorithm" + ], + "base_convert": [ + "string base_convert(string number, int frombase, int tobase)", + "Converts a number in a string from any base <= 36 to any base <= 36" + ], + "basename": [ + "string basename(string path [, string suffix])", + "Returns the filename component of the path" + ], + "bcadd": [ + "string bcadd(string left_operand, string right_operand [, int scale])", + "Returns the sum of two arbitrary precision numbers" + ], + "bccomp": [ + "int bccomp(string left_operand, string right_operand [, int scale])", + "Compares two arbitrary precision numbers" + ], + "bcdiv": [ + "string bcdiv(string left_operand, string right_operand [, int scale])", + "Returns the quotient of two arbitrary precision numbers (division)" + ], + "bcmod": [ + "string bcmod(string left_operand, string right_operand)", + "Returns the modulus of the two arbitrary precision operands" + ], + "bcmul": [ + "string bcmul(string left_operand, string right_operand [, int scale])", + "Returns the multiplication of two arbitrary precision numbers" + ], + "bcpow": [ + "string bcpow(string x, string y [, int scale])", + "Returns the value of an arbitrary precision number raised to the power of another" + ], + "bcpowmod": [ + "string bcpowmod(string x, string y, string mod [, int scale])", + "Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous" + ], + "bcscale": [ + "bool bcscale(int scale)", + "Sets default scale parameter for all bc math functions" + ], + "bcsqrt": [ + "string bcsqrt(string operand [, int scale])", + "Returns the square root of an arbitray precision number" + ], + "bcsub": [ + "string bcsub(string left_operand, string right_operand [, int scale])", + "Returns the difference between two arbitrary precision numbers" + ], + "bin2hex": [ + "string bin2hex(string data)", + "Converts the binary representation of data to hex" + ], + "bind_textdomain_codeset": [ + "string bind_textdomain_codeset (string domain, string codeset)", + "Specify the character encoding in which the messages from the DOMAIN message catalog will be returned." + ], + "bindec": [ + "int bindec(string binary_number)", + "Returns the decimal equivalent of the binary number" + ], + "bindtextdomain": [ + "string bindtextdomain(string domain_name, string dir)", + "Bind to the text domain domain_name, looking for translations in dir. Returns the current domain" + ], + "birdstep_autocommit": [ + "bool birdstep_autocommit(int index)", + "" + ], + "birdstep_close": [ + "bool birdstep_close(int id)", + "" + ], + "birdstep_commit": [ + "bool birdstep_commit(int index)", + "" + ], + "birdstep_connect": [ + "int birdstep_connect(string server, string user, string pass)", + "" + ], + "birdstep_exec": [ + "int birdstep_exec(int index, string exec_str)", + "" + ], + "birdstep_fetch": [ + "bool birdstep_fetch(int index)", + "" + ], + "birdstep_fieldname": [ + "string birdstep_fieldname(int index, int col)", + "" + ], + "birdstep_fieldnum": [ + "int birdstep_fieldnum(int index)", + "" + ], + "birdstep_freeresult": [ + "bool birdstep_freeresult(int index)", + "" + ], + "birdstep_off_autocommit": [ + "bool birdstep_off_autocommit(int index)", + "" + ], + "birdstep_result": [ + "mixed birdstep_result(int index, mixed col)", + "" + ], + "birdstep_rollback": [ + "bool birdstep_rollback(int index)", + "" + ], + "bzcompress": [ + "string bzcompress(string source [, int blocksize100k [, int workfactor]])", + "Compresses a string into BZip2 encoded data" + ], + "bzdecompress": [ + "string bzdecompress(string source [, int small])", + "Decompresses BZip2 compressed data" + ], + "bzerrno": [ + "int bzerrno(resource bz)", + "Returns the error number" + ], + "bzerror": [ + "array bzerror(resource bz)", + "Returns the error number and error string in an associative array" + ], + "bzerrstr": [ + "string bzerrstr(resource bz)", + "Returns the error string" + ], + "bzopen": [ + "resource bzopen(string|int file|fp, string mode)", + "Opens a new BZip2 stream" + ], + "bzread": [ + "string bzread(resource bz[, int length])", + "Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified" + ], + "cal_days_in_month": [ + "int cal_days_in_month(int calendar, int month, int year)", + "Returns the number of days in a month for a given year and calendar" + ], + "cal_from_jd": [ + "array cal_from_jd(int jd, int calendar)", + "Converts from Julian Day Count to a supported calendar and return extended information" + ], + "cal_info": [ + "array cal_info([int calendar])", + "Returns information about a particular calendar" + ], + "cal_to_jd": [ + "int cal_to_jd(int calendar, int month, int day, int year)", + "Converts from a supported calendar to Julian Day Count" + ], + "call_user_func": [ + "mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])", + "Call a user function which is the first parameter" + ], + "call_user_func_array": [ + "mixed call_user_func_array(string function_name, array parameters)", + "Call a user function which is the first parameter with the arguments contained in array" + ], + "call_user_method": [ + "mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])", + "Call a user method on a specific object or class" + ], + "call_user_method_array": [ + "mixed call_user_method_array(string method_name, mixed object, array params)", + "Call a user method on a specific object or class using a parameter array" + ], + "ceil": [ + "float ceil(float number)", + "Returns the next highest integer value of the number" + ], + "chdir": [ + "bool chdir(string directory)", + "Change the current directory" + ], + "checkdate": [ + "bool checkdate(int month, int day, int year)", + "Returns true(1) if it is a valid date in gregorian calendar" + ], + "chgrp": [ + "bool chgrp(string filename, mixed group)", + "Change file group" + ], + "chmod": [ + "bool chmod(string filename, int mode)", + "Change file mode" + ], + "chown": [ + "bool chown (string filename, mixed user)", + "Change file owner" + ], + "chr": [ + "string chr(int ascii)", + "Converts ASCII code to a character" + ], + "chroot": [ + "bool chroot(string directory)", + "Change root directory" + ], + "chunk_split": [ + "string chunk_split(string str [, int chunklen [, string ending]])", + "Returns split line" + ], + "class_alias": [ + "bool class_alias(string user_class_name , string alias_name [, bool autoload])", + "Creates an alias for user defined class" + ], + "class_exists": [ + "bool class_exists(string classname [, bool autoload])", + "Checks if the class exists" + ], + "class_implements": [ + "array class_implements(mixed what [, bool autoload ])", + "Return all classes and interfaces implemented by SPL" + ], + "class_parents": [ + "array class_parents(object instance [, boolean autoload = true])", + "Return an array containing the names of all parent classes" + ], + "clearstatcache": [ + "void clearstatcache([bool clear_realpath_cache[, string filename]])", + "Clear file stat cache" + ], + "closedir": [ + "void closedir([resource dir_handle])", + "Close directory connection identified by the dir_handle" + ], + "closelog": [ + "bool closelog(void)", + "Close connection to system logger" + ], + "collator_asort": [ + "bool collator_asort( Collator $coll, array(string) $arr )", + "* Sort array using specified collator, maintaining index association." + ], + "collator_compare": [ + "int collator_compare( Collator $coll, string $str1, string $str2 )", + "* Compare two strings." + ], + "collator_create": [ + "Collator collator_create( string $locale )", + "* Create collator." + ], + "collator_get_attribute": [ + "int collator_get_attribute( Collator $coll, int $attr )", + "* Get collation attribute value." + ], + "collator_get_error_code": [ + "int collator_get_error_code( Collator $coll )", + "* Get collator's last error code." + ], + "collator_get_error_message": [ + "string collator_get_error_message( Collator $coll )", + "* Get text description for collator's last error code." + ], + "collator_get_locale": [ + "string collator_get_locale( Collator $coll, int $type )", + "* Gets the locale name of the collator." + ], + "collator_get_sort_key": [ + "bool collator_get_sort_key( Collator $coll, string $str )", + "* Get a sort key for a string from a Collator. }}}" + ], + "collator_get_strength": [ + "int collator_get_strength(Collator coll)", + "* Returns the current collation strength." + ], + "collator_set_attribute": [ + "bool collator_set_attribute( Collator $coll, int $attr, int $val )", + "* Set collation attribute." + ], + "collator_set_strength": [ + "bool collator_set_strength(Collator coll, int strength)", + "* Set the collation strength." + ], + "collator_sort": [ + "bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )", + "* Sort array using specified collator." + ], + "collator_sort_with_sort_keys": [ + "bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )", + "* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance." + ], + "com_create_guid": [ + "string com_create_guid()", + "Generate a globally unique identifier (GUID)" + ], + "com_event_sink": [ + "bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])", + "Connect events from a COM object to a PHP object" + ], + "com_get_active_object": [ + "object com_get_active_object(string progid [, int code_page ])", + "Returns a handle to an already running instance of a COM object" + ], + "com_load_typelib": [ + "bool com_load_typelib(string typelib_name [, int case_insensitive])", + "Loads a Typelibrary and registers its constants" + ], + "com_message_pump": [ + "bool com_message_pump([int timeoutms])", + "Process COM messages, sleeping for up to timeoutms milliseconds" + ], + "com_print_typeinfo": [ + "bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)", + "Print out a PHP class definition for a dispatchable interface" + ], + "compact": [ + "array compact(mixed var_names [, mixed ...])", + "Creates a hash containing variables and their values" + ], + "compose_locale": [ + "static string compose_locale($array)", + "* Creates a locale by combining the parts of locale-ID passed * }}}" + ], + "confirm_extname_compiled": [ + "string confirm_extname_compiled(string arg)", + "Return a string to confirm that the module is compiled in" + ], + "connection_aborted": [ + "int connection_aborted(void)", + "Returns true if client disconnected" + ], + "connection_status": [ + "int connection_status(void)", + "Returns the connection status bitfield" + ], + "constant": [ + "mixed constant(string const_name)", + "Given the name of a constant this function will return the constant's associated value" + ], + "convert_cyr_string": [ + "string convert_cyr_string(string str, string from, string to)", + "Convert from one Cyrillic character set to another" + ], + "convert_uudecode": [ + "string convert_uudecode(string data)", + "decode a uuencoded string" + ], + "convert_uuencode": [ + "string convert_uuencode(string data)", + "uuencode a string" + ], + "copy": [ + "bool copy(string source_file, string destination_file [, resource context])", + "Copy a file" + ], + "cos": [ + "float cos(float number)", + "Returns the cosine of the number in radians" + ], + "cosh": [ + "float cosh(float number)", + "Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2" + ], + "count": [ + "int count(mixed var [, int mode])", + "Count the number of elements in a variable (usually an array)" + ], + "count_chars": [ + "mixed count_chars(string input [, int mode])", + "Returns info about what characters are used in input" + ], + "crc32": [ + "string crc32(string str)", + "Calculate the crc32 polynomial of a string" + ], + "create_function": [ + "string create_function(string args, string code)", + "Creates an anonymous function, and returns its name (funny, eh?)" + ], + "crypt": [ + "string crypt(string str [, string salt])", + "Hash a string" + ], + "ctype_alnum": [ + "bool ctype_alnum(mixed c)", + "Checks for alphanumeric character(s)" + ], + "ctype_alpha": [ + "bool ctype_alpha(mixed c)", + "Checks for alphabetic character(s)" + ], + "ctype_cntrl": [ + "bool ctype_cntrl(mixed c)", + "Checks for control character(s)" + ], + "ctype_digit": [ + "bool ctype_digit(mixed c)", + "Checks for numeric character(s)" + ], + "ctype_graph": [ + "bool ctype_graph(mixed c)", + "Checks for any printable character(s) except space" + ], + "ctype_lower": [ + "bool ctype_lower(mixed c)", + "Checks for lowercase character(s)" + ], + "ctype_print": [ + "bool ctype_print(mixed c)", + "Checks for printable character(s)" + ], + "ctype_punct": [ + "bool ctype_punct(mixed c)", + "Checks for any printable character which is not whitespace or an alphanumeric character" + ], + "ctype_space": [ + "bool ctype_space(mixed c)", + "Checks for whitespace character(s)" + ], + "ctype_upper": [ + "bool ctype_upper(mixed c)", + "Checks for uppercase character(s)" + ], + "ctype_xdigit": [ + "bool ctype_xdigit(mixed c)", + "Checks for character(s) representing a hexadecimal digit" + ], + "curl_close": [ + "void curl_close(resource ch)", + "Close a cURL session" + ], + "curl_copy_handle": [ + "resource curl_copy_handle(resource ch)", + "Copy a cURL handle along with all of it's preferences" + ], + "curl_errno": [ + "int curl_errno(resource ch)", + "Return an integer containing the last error number" + ], + "curl_error": [ + "string curl_error(resource ch)", + "Return a string contain the last error for the current session" + ], + "curl_exec": [ + "bool curl_exec(resource ch)", + "Perform a cURL session" + ], + "curl_getinfo": [ + "mixed curl_getinfo(resource ch [, int option])", + "Get information regarding a specific transfer" + ], + "curl_init": [ + "resource curl_init([string url])", + "Initialize a cURL session" + ], + "curl_multi_add_handle": [ + "int curl_multi_add_handle(resource mh, resource ch)", + "Add a normal cURL handle to a cURL multi handle" + ], + "curl_multi_close": [ + "void curl_multi_close(resource mh)", + "Close a set of cURL handles" + ], + "curl_multi_exec": [ + "int curl_multi_exec(resource mh, int &still_running)", + "Run the sub-connections of the current cURL handle" + ], + "curl_multi_getcontent": [ + "string curl_multi_getcontent(resource ch)", + "Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set" + ], + "curl_multi_info_read": [ + "array curl_multi_info_read(resource mh [, long msgs_in_queue])", + "Get information about the current transfers" + ], + "curl_multi_init": [ + "resource curl_multi_init(void)", + "Returns a new cURL multi handle" + ], + "curl_multi_remove_handle": [ + "int curl_multi_remove_handle(resource mh, resource ch)", + "Remove a multi handle from a set of cURL handles" + ], + "curl_multi_select": [ + "int curl_multi_select(resource mh[, double timeout])", + "Get all the sockets associated with the cURL extension, which can then be \"selected\"" + ], + "curl_setopt": [ + "bool curl_setopt(resource ch, int option, mixed value)", + "Set an option for a cURL transfer" + ], + "curl_setopt_array": [ + "bool curl_setopt_array(resource ch, array options)", + "Set an array of option for a cURL transfer" + ], + "curl_version": [ + "array curl_version([int version])", + "Return cURL version information." + ], + "current": [ + "mixed current(array array_arg)", + "Return the element currently pointed to by the internal array pointer" + ], + "date": [ + "string date(string format [, long timestamp])", + "Format a local date/time" + ], + "date_add": [ + "DateTime date_add(DateTime object, DateInterval interval)", + "Adds an interval to the current date in object." + ], + "date_create": [ + "DateTime date_create([string time[, DateTimeZone object]])", + "Returns new DateTime object" + ], + "date_create_from_format": [ + "DateTime date_create_from_format(string format, string time[, DateTimeZone object])", + "Returns new DateTime object formatted according to the specified format" + ], + "date_date_set": [ + "DateTime date_date_set(DateTime object, long year, long month, long day)", + "Sets the date." + ], + "date_default_timezone_get": [ + "string date_default_timezone_get()", + "Gets the default timezone used by all date/time functions in a script" + ], + "date_default_timezone_set": [ + "bool date_default_timezone_set(string timezone_identifier)", + "Sets the default timezone used by all date/time functions in a script" + ], + "date_diff": [ + "DateInterval date_diff(DateTime object [, bool absolute])", + "Returns the difference between two DateTime objects." + ], + "date_format": [ + "string date_format(DateTime object, string format)", + "Returns date formatted according to given format" + ], + "date_get_last_errors": [ + "array date_get_last_errors()", + "Returns the warnings and errors found while parsing a date/time string." + ], + "date_interval_create_from_date_string": [ + "DateInterval date_interval_create_from_date_string(string time)", + "Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string" + ], + "date_interval_format": [ + "string date_interval_format(DateInterval object, string format)", + "Formats the interval." + ], + "date_isodate_set": [ + "DateTime date_isodate_set(DateTime object, long year, long week[, long day])", + "Sets the ISO date." + ], + "date_modify": [ + "DateTime date_modify(DateTime object, string modify)", + "Alters the timestamp." + ], + "date_offset_get": [ + "long date_offset_get(DateTime object)", + "Returns the DST offset." + ], + "date_parse": [ + "array date_parse(string date)", + "Returns associative array with detailed info about given date" + ], + "date_parse_from_format": [ + "array date_parse_from_format(string format, string date)", + "Returns associative array with detailed info about given date" + ], + "date_sub": [ + "DateTime date_sub(DateTime object, DateInterval interval)", + "Subtracts an interval to the current date in object." + ], + "date_sun_info": [ + "array date_sun_info(long time, float latitude, float longitude)", + "Returns an array with information about sun set/rise and twilight begin/end" + ], + "date_sunrise": [ + "mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", + "Returns time of sunrise for a given day and location" + ], + "date_sunset": [ + "mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", + "Returns time of sunset for a given day and location" + ], + "date_time_set": [ + "DateTime date_time_set(DateTime object, long hour, long minute[, long second])", + "Sets the time." + ], + "date_timestamp_get": [ + "long date_timestamp_get(DateTime object)", + "Gets the Unix timestamp." + ], + "date_timestamp_set": [ + "DateTime date_timestamp_set(DateTime object, long unixTimestamp)", + "Sets the date and time based on an Unix timestamp." + ], + "date_timezone_get": [ + "DateTimeZone date_timezone_get(DateTime object)", + "Return new DateTimeZone object relative to give DateTime" + ], + "date_timezone_set": [ + "DateTime date_timezone_set(DateTime object, DateTimeZone object)", + "Sets the timezone for the DateTime object." + ], + "datefmt_create": [ + "IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )", + "* Create formatter." + ], + "datefmt_format": [ + "string datefmt_format( [mixed]int $args or array $args )", + "* Format the time value as a string. }}}" + ], + "datefmt_get_calendar": [ + "string datefmt_get_calendar( IntlDateFormatter $mf )", + "* Get formatter calendar." + ], + "datefmt_get_datetype": [ + "string datefmt_get_datetype( IntlDateFormatter $mf )", + "* Get formatter datetype." + ], + "datefmt_get_error_code": [ + "int datefmt_get_error_code( IntlDateFormatter $nf )", + "* Get formatter's last error code." + ], + "datefmt_get_error_message": [ + "string datefmt_get_error_message( IntlDateFormatter $coll )", + "* Get text description for formatter's last error code." + ], + "datefmt_get_locale": [ + "string datefmt_get_locale(IntlDateFormatter $mf)", + "* Get formatter locale." + ], + "datefmt_get_pattern": [ + "string datefmt_get_pattern( IntlDateFormatter $mf )", + "* Get formatter pattern." + ], + "datefmt_get_timetype": [ + "string datefmt_get_timetype( IntlDateFormatter $mf )", + "* Get formatter timetype." + ], + "datefmt_get_timezone_id": [ + "string datefmt_get_timezone_id( IntlDateFormatter $mf )", + "* Get formatter timezone_id." + ], + "datefmt_isLenient": [ + "string datefmt_isLenient(IntlDateFormatter $mf)", + "* Get formatter locale." + ], + "datefmt_localtime": [ + "integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])", + "* Parse the string $value to a localtime array }}}" + ], + "datefmt_parse": [ + "integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )", + "* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}" + ], + "datefmt_setLenient": [ + "string datefmt_setLenient(IntlDateFormatter $mf)", + "* Set formatter lenient." + ], + "datefmt_set_calendar": [ + "bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )", + "* Set formatter calendar." + ], + "datefmt_set_pattern": [ + "bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )", + "* Set formatter pattern." + ], + "datefmt_set_timezone_id": [ + "boolean datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", + "* Set formatter timezone_id." + ], + "dba_close": [ + "void dba_close(resource handle)", + "Closes database" + ], + "dba_delete": [ + "bool dba_delete(string key, resource handle)", + "Deletes the entry associated with key If inifile: remove all other key lines" + ], + "dba_exists": [ + "bool dba_exists(string key, resource handle)", + "Checks, if the specified key exists" + ], + "dba_fetch": [ + "string dba_fetch(string key, [int skip ,] resource handle)", + "Fetches the data associated with key" + ], + "dba_firstkey": [ + "string dba_firstkey(resource handle)", + "Resets the internal key pointer and returns the first key" + ], + "dba_handlers": [ + "array dba_handlers([bool full_info])", + "List configured database handlers" + ], + "dba_insert": [ + "bool dba_insert(string key, string value, resource handle)", + "If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)" + ], + "dba_key_split": [ + "array|false dba_key_split(string key)", + "Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null" + ], + "dba_list": [ + "array dba_list()", + "List opened databases" + ], + "dba_nextkey": [ + "string dba_nextkey(resource handle)", + "Returns the next key" + ], + "dba_open": [ + "resource dba_open(string path, string mode [, string handlername, string ...])", + "Opens path using the specified handler in mode" + ], + "dba_optimize": [ + "bool dba_optimize(resource handle)", + "Optimizes (e.g. clean up, vacuum) database" + ], + "dba_popen": [ + "resource dba_popen(string path, string mode [, string handlername, string ...])", + "Opens path using the specified handler in mode persistently" + ], + "dba_replace": [ + "bool dba_replace(string key, string value, resource handle)", + "Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines" + ], + "dba_sync": [ + "bool dba_sync(resource handle)", + "Synchronizes database" + ], + "dcgettext": [ + "string dcgettext(string domain_name, string msgid, long category)", + "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist" + ], + "dcngettext": [ + "string dcngettext (string domain, string msgid1, string msgid2, int n, int category)", + "Plural version of dcgettext()" + ], + "debug_backtrace": [ + "array debug_backtrace([bool provide_object])", + "Return backtrace as array" + ], + "debug_print_backtrace": [ + "void debug_print_backtrace(void) */", + "ZEND_FUNCTION(debug_print_backtrace) { zend_execute_data *ptr, *skip; int lineno; char *function_name; char *filename; char *class_name = NULL; char *call_type; char *include_filename = NULL; zval *arg_array = NULL; int indent = 0; if (zend_parse_parameters_none() == FAILURE) { return; } ptr = EG(current_execute_data); /* skip debug_backtrace()" + ], + "debug_zval_dump": [ + "void debug_zval_dump(mixed var)", + "Dumps a string representation of an internal zend value to output." + ], + "decbin": [ + "string decbin(int decimal_number)", + "Returns a string containing a binary representation of the number" + ], + "dechex": [ + "string dechex(int decimal_number)", + "Returns a string containing a hexadecimal representation of the given number" + ], + "decoct": [ + "string decoct(int decimal_number)", + "Returns a string containing an octal representation of the given number" + ], + "define": [ + "bool define(string constant_name, mixed value, boolean case_insensitive=false)", + "Define a new constant" + ], + "define_syslog_variables": [ + "void define_syslog_variables(void)", + "Initializes all syslog-related variables" + ], + "defined": [ + "bool defined(string constant_name)", + "Check whether a constant exists" + ], + "deg2rad": [ + "float deg2rad(float number)", + "Converts the number in degrees to the radian equivalent" + ], + "dgettext": [ + "string dgettext(string domain_name, string msgid)", + "Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist" + ], + "die": [ + "void die([mixed status])", + "Output a message and terminate the current script" + ], + "dir": [ + "object dir(string directory[, resource context])", + "Directory class with properties, handle and class and methods read, rewind and close" + ], + "dirname": [ + "string dirname(string path)", + "Returns the directory name component of the path" + ], + "disk_free_space": [ + "float disk_free_space(string path)", + "Get free disk space for filesystem that path is on" + ], + "disk_total_space": [ + "float disk_total_space(string path)", + "Get total disk space for filesystem that path is on" + ], + "display_disabled_function": [ + "void display_disabled_function(void)", + "Dummy function which displays an error when a disabled function is called." + ], + "dl": [ + "int dl(string extension_filename)", + "Load a PHP extension at runtime" + ], + "dngettext": [ + "string dngettext (string domain, string msgid1, string msgid2, int count)", + "Plural version of dgettext()" + ], + "dns_check_record": [ + "bool dns_check_record(string host [, string type])", + "Check DNS records corresponding to a given Internet host name or IP address" + ], + "dns_get_mx": [ + "bool dns_get_mx(string hostname, array mxhosts [, array weight])", + "Get MX records corresponding to a given Internet host name" + ], + "dns_get_record": [ + "array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])", + "Get any Resource Record corresponding to a given Internet host name" + ], + "dom_attr_is_id": [ + "boolean dom_attr_is_id();", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3" + ], + "dom_characterdata_append_data": [ + "void dom_characterdata_append_data(string arg);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:" + ], + "dom_characterdata_delete_data": [ + "void dom_characterdata_delete_data(int offset, int count);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:" + ], + "dom_characterdata_insert_data": [ + "void dom_characterdata_insert_data(int offset, string arg);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:" + ], + "dom_characterdata_replace_data": [ + "void dom_characterdata_replace_data(int offset, int count, string arg);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:" + ], + "dom_characterdata_substring_data": [ + "string dom_characterdata_substring_data(int offset, int count);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:" + ], + "dom_document_adopt_node": [ + "DOMNode dom_document_adopt_node(DOMNode source);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3" + ], + "dom_document_create_attribute": [ + "DOMAttr dom_document_create_attribute(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:" + ], + "dom_document_create_attribute_ns": [ + "DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2" + ], + "dom_document_create_cdatasection": [ + "DOMCdataSection dom_document_create_cdatasection(string data);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:" + ], + "dom_document_create_comment": [ + "DOMComment dom_document_create_comment(string data);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:" + ], + "dom_document_create_document_fragment": [ + "DOMDocumentFragment dom_document_create_document_fragment();", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:" + ], + "dom_document_create_element": [ + "DOMElement dom_document_create_element(string tagName [, string value]);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:" + ], + "dom_document_create_element_ns": [ + "DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value]);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2" + ], + "dom_document_create_entity_reference": [ + "DOMEntityReference dom_document_create_entity_reference(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:" + ], + "dom_document_create_processing_instruction": [ + "DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:" + ], + "dom_document_create_text_node": [ + "DOMText dom_document_create_text_node(string data);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:" + ], + "dom_document_get_element_by_id": [ + "DOMElement dom_document_get_element_by_id(string elementId);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2" + ], + "dom_document_get_elements_by_tag_name": [ + "DOMNodeList dom_document_get_elements_by_tag_name(string tagname);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:" + ], + "dom_document_get_elements_by_tag_name_ns": [ + "DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2" + ], + "dom_document_import_node": [ + "DOMNode dom_document_import_node(DOMNode importedNode, boolean deep);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2" + ], + "dom_document_load": [ + "DOMNode dom_document_load(string source [, int options]);", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3" + ], + "dom_document_load_html": [ + "DOMNode dom_document_load_html(string source);", + "Since: DOM extended" + ], + "dom_document_load_html_file": [ + "DOMNode dom_document_load_html_file(string source);", + "Since: DOM extended" + ], + "dom_document_loadxml": [ + "DOMNode dom_document_loadxml(string source [, int options]);", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3" + ], + "dom_document_normalize_document": [ + "void dom_document_normalize_document();", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3" + ], + "dom_document_relaxNG_validate_file": [ + "boolean dom_document_relaxNG_validate_file(string filename); */", + "PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file" + ], + "dom_document_relaxNG_validate_xml": [ + "boolean dom_document_relaxNG_validate_xml(string source); */", + "PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml" + ], + "dom_document_rename_node": [ + "DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3" + ], + "dom_document_save": [ + "int dom_document_save(string file);", + "Convenience method to save to file" + ], + "dom_document_save_html": [ + "string dom_document_save_html();", + "Convenience method to output as html" + ], + "dom_document_save_html_file": [ + "int dom_document_save_html_file(string file);", + "Convenience method to save to file as html" + ], + "dom_document_savexml": [ + "string dom_document_savexml([node n]);", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3" + ], + "dom_document_schema_validate": [ + "boolean dom_document_schema_validate(string source); */", + "PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate" + ], + "dom_document_schema_validate_file": [ + "boolean dom_document_schema_validate_file(string filename); */", + "PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file" + ], + "dom_document_validate": [ + "boolean dom_document_validate();", + "Since: DOM extended" + ], + "dom_document_xinclude": [ + "int dom_document_xinclude([int options])", + "Substitutues xincludes in a DomDocument" + ], + "dom_domconfiguration_can_set_parameter": [ + "boolean dom_domconfiguration_can_set_parameter(string name, domuserdata value);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:" + ], + "dom_domconfiguration_get_parameter": [ + "domdomuserdata dom_domconfiguration_get_parameter(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:" + ], + "dom_domconfiguration_set_parameter": [ + "dom_void dom_domconfiguration_set_parameter(string name, domuserdata value);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:" + ], + "dom_domerrorhandler_handle_error": [ + "dom_boolean dom_domerrorhandler_handle_error(domerror error);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:" + ], + "dom_domimplementation_create_document": [ + "DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2" + ], + "dom_domimplementation_create_document_type": [ + "DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2" + ], + "dom_domimplementation_get_feature": [ + "DOMNode dom_domimplementation_get_feature(string feature, string version);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3" + ], + "dom_domimplementation_has_feature": [ + "boolean dom_domimplementation_has_feature(string feature, string version);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:" + ], + "dom_domimplementationlist_item": [ + "domdomimplementation dom_domimplementationlist_item(int index);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:" + ], + "dom_domimplementationsource_get_domimplementation": [ + "domdomimplementation dom_domimplementationsource_get_domimplementation(string features);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:" + ], + "dom_domimplementationsource_get_domimplementations": [ + "domimplementationlist dom_domimplementationsource_get_domimplementations(string features);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:" + ], + "dom_domstringlist_item": [ + "domstring dom_domstringlist_item(int index);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:" + ], + "dom_element_get_attribute": [ + "string dom_element_get_attribute(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:" + ], + "dom_element_get_attribute_node": [ + "DOMAttr dom_element_get_attribute_node(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:" + ], + "dom_element_get_attribute_node_ns": [ + "DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2" + ], + "dom_element_get_attribute_ns": [ + "string dom_element_get_attribute_ns(string namespaceURI, string localName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2" + ], + "dom_element_get_elements_by_tag_name": [ + "DOMNodeList dom_element_get_elements_by_tag_name(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:" + ], + "dom_element_get_elements_by_tag_name_ns": [ + "DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2" + ], + "dom_element_has_attribute": [ + "boolean dom_element_has_attribute(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2" + ], + "dom_element_has_attribute_ns": [ + "boolean dom_element_has_attribute_ns(string namespaceURI, string localName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2" + ], + "dom_element_remove_attribute": [ + "void dom_element_remove_attribute(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:" + ], + "dom_element_remove_attribute_node": [ + "DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:" + ], + "dom_element_remove_attribute_ns": [ + "void dom_element_remove_attribute_ns(string namespaceURI, string localName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2" + ], + "dom_element_set_attribute": [ + "void dom_element_set_attribute(string name, string value);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:" + ], + "dom_element_set_attribute_node": [ + "DOMAttr dom_element_set_attribute_node(DOMAttr newAttr);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:" + ], + "dom_element_set_attribute_node_ns": [ + "DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2" + ], + "dom_element_set_attribute_ns": [ + "void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2" + ], + "dom_element_set_id_attribute": [ + "void dom_element_set_id_attribute(string name, boolean isId);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3" + ], + "dom_element_set_id_attribute_node": [ + "void dom_element_set_id_attribute_node(attr idAttr, boolean isId);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3" + ], + "dom_element_set_id_attribute_ns": [ + "void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3" + ], + "dom_import_simplexml": [ + "somNode dom_import_simplexml(sxeobject node)", + "Get a simplexml_element object from dom to allow for processing" + ], + "dom_namednodemap_get_named_item": [ + "DOMNode dom_namednodemap_get_named_item(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:" + ], + "dom_namednodemap_get_named_item_ns": [ + "DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2" + ], + "dom_namednodemap_item": [ + "DOMNode dom_namednodemap_item(int index);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:" + ], + "dom_namednodemap_remove_named_item": [ + "DOMNode dom_namednodemap_remove_named_item(string name);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:" + ], + "dom_namednodemap_remove_named_item_ns": [ + "DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2" + ], + "dom_namednodemap_set_named_item": [ + "DOMNode dom_namednodemap_set_named_item(DOMNode arg);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:" + ], + "dom_namednodemap_set_named_item_ns": [ + "DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2" + ], + "dom_namelist_get_name": [ + "string dom_namelist_get_name(int index);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:" + ], + "dom_namelist_get_namespace_uri": [ + "string dom_namelist_get_namespace_uri(int index);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:" + ], + "dom_node_append_child": [ + "DomNode dom_node_append_child(DomNode newChild);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:" + ], + "dom_node_clone_node": [ + "DomNode dom_node_clone_node(boolean deep);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:" + ], + "dom_node_compare_document_position": [ + "short dom_node_compare_document_position(DomNode other);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3" + ], + "dom_node_get_feature": [ + "DomNode dom_node_get_feature(string feature, string version);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3" + ], + "dom_node_get_user_data": [ + "mixed dom_node_get_user_data(string key);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3" + ], + "dom_node_has_attributes": [ + "boolean dom_node_has_attributes();", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2" + ], + "dom_node_has_child_nodes": [ + "boolean dom_node_has_child_nodes();", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:" + ], + "dom_node_insert_before": [ + "domnode dom_node_insert_before(DomNode newChild, DomNode refChild);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:" + ], + "dom_node_is_default_namespace": [ + "boolean dom_node_is_default_namespace(string namespaceURI);", + "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3" + ], + "dom_node_is_equal_node": [ + "boolean dom_node_is_equal_node(DomNode arg);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3" + ], + "dom_node_is_same_node": [ + "boolean dom_node_is_same_node(DomNode other);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3" + ], + "dom_node_is_supported": [ + "boolean dom_node_is_supported(string feature, string version);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2" + ], + "dom_node_lookup_namespace_uri": [ + "string dom_node_lookup_namespace_uri(string prefix);", + "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3" + ], + "dom_node_lookup_prefix": [ + "string dom_node_lookup_prefix(string namespaceURI);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3" + ], + "dom_node_normalize": [ + "void dom_node_normalize();", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:" + ], + "dom_node_remove_child": [ + "DomNode dom_node_remove_child(DomNode oldChild);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:" + ], + "dom_node_replace_child": [ + "DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:" + ], + "dom_node_set_user_data": [ + "mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3" + ], + "dom_nodelist_item": [ + "DOMNode dom_nodelist_item(int index);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:" + ], + "dom_string_extend_find_offset16": [ + "int dom_string_extend_find_offset16(int offset32);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:" + ], + "dom_string_extend_find_offset32": [ + "int dom_string_extend_find_offset32(int offset16);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:" + ], + "dom_text_is_whitespace_in_element_content": [ + "boolean dom_text_is_whitespace_in_element_content();", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3" + ], + "dom_text_replace_whole_text": [ + "DOMText dom_text_replace_whole_text(string content);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3" + ], + "dom_text_split_text": [ + "DOMText dom_text_split_text(int offset);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:" + ], + "dom_userdatahandler_handle": [ + "dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:" + ], + "dom_xpath_evaluate": [ + "mixed dom_xpath_evaluate(string expr [,DOMNode context]); */", + "PHP_FUNCTION(dom_xpath_evaluate) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_EVALUATE); } /* }}} end dom_xpath_evaluate" + ], + "dom_xpath_query": [ + "DOMNodeList dom_xpath_query(string expr [,DOMNode context]); */", + "PHP_FUNCTION(dom_xpath_query) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_QUERY); } /* }}} end dom_xpath_query" + ], + "dom_xpath_register_ns": [ + "boolean dom_xpath_register_ns(string prefix, string uri); */", + "PHP_FUNCTION(dom_xpath_register_ns) { zval *id; xmlXPathContextPtr ctxp; int prefix_len, ns_uri_len; dom_xpath_object *intern; unsigned char *prefix, *ns_uri; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"Oss\", &id, dom_xpath_class_entry, &prefix, &prefix_len, &ns_uri, &ns_uri_len) == FAILURE) { return; } intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); ctxp = (xmlXPathContextPtr) intern->ptr; if (ctxp == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Invalid XPath Context\"); RETURN_FALSE; } if (xmlXPathRegisterNs(ctxp, prefix, ns_uri) != 0) { RETURN_FALSE } RETURN_TRUE; } /* }}}" + ], + "dom_xpath_register_php_functions": [ + "void dom_xpath_register_php_functions() */", + "PHP_FUNCTION(dom_xpath_register_php_functions) { zval *id; dom_xpath_object *intern; zval *array_value, **entry, *new_string; int name_len = 0; char *name; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"a\", &array_value) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value)); while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) { SEPARATE_ZVAL(entry); convert_to_string_ex(entry); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL); zend_hash_move_forward(Z_ARRVAL_P(array_value)); } intern->registerPhpFunctions = 2; RETURN_TRUE; } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"s\", &name, &name_len) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL); intern->registerPhpFunctions = 2; } else { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); intern->registerPhpFunctions = 1; } } /* }}} end dom_xpath_register_php_functions" + ], + "each": [ + "array each(array arr)", + "Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element" + ], + "easter_date": [ + "int easter_date([int year])", + "Return the timestamp of midnight on Easter of a given year (defaults to current year)" + ], + "easter_days": [ + "int easter_days([int year, [int method]])", + "Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)" + ], + "echo": [ + "void echo(string arg1 [, string ...])", + "Output one or more strings" + ], + "empty": [ + "bool empty( mixed var )", + "Determine whether a variable is empty" + ], + "enchant_broker_describe": [ + "array enchant_broker_describe(resource broker)", + "Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()" + ], + "enchant_broker_dict_exists": [ + "bool enchant_broker_dict_exists(resource broker, string tag)", + "Whether a dictionary exists or not. Using non-empty tag" + ], + "enchant_broker_free": [ + "boolean enchant_broker_free(resource broker)", + "Destroys the broker object and its dictionnaries" + ], + "enchant_broker_free_dict": [ + "resource enchant_broker_free_dict(resource dict)", + "Free the dictionary resource" + ], + "enchant_broker_get_dict_path": [ + "string enchant_broker_get_dict_path(resource broker, int dict_type)", + "Get the directory path for a given backend, works with ispell and myspell" + ], + "enchant_broker_get_error": [ + "string enchant_broker_get_error(resource broker)", + "Returns the last error of the broker" + ], + "enchant_broker_init": [ + "resource enchant_broker_init()", + "create a new broker object capable of requesting" + ], + "enchant_broker_list_dicts": [ + "string enchant_broker_list_dicts(resource broker)", + "Lists the dictionaries available for the given broker" + ], + "enchant_broker_request_dict": [ + "resource enchant_broker_request_dict(resource broker, string tag)", + "create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for (\"en_US\", \"de_DE\", ...)" + ], + "enchant_broker_request_pwl_dict": [ + "resource enchant_broker_request_pwl_dict(resource broker, string filename)", + "creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call." + ], + "enchant_broker_set_dict_path": [ + "bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)", + "Set the directory path for a given backend, works with ispell and myspell" + ], + "enchant_broker_set_ordering": [ + "bool enchant_broker_set_ordering(resource broker, string tag, string ordering)", + "Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering." + ], + "enchant_dict_add_to_personal": [ + "void enchant_dict_add_to_personal(resource dict, string word)", + "add 'word' to personal word list" + ], + "enchant_dict_add_to_session": [ + "void enchant_dict_add_to_session(resource dict, string word)", + "add 'word' to this spell-checking session" + ], + "enchant_dict_check": [ + "bool enchant_dict_check(resource dict, string word)", + "If the word is correctly spelled return true, otherwise return false" + ], + "enchant_dict_describe": [ + "array enchant_dict_describe(resource dict)", + "Describes an individual dictionary 'dict'" + ], + "enchant_dict_get_error": [ + "string enchant_dict_get_error(resource dict)", + "Returns the last error of the current spelling-session" + ], + "enchant_dict_is_in_session": [ + "bool enchant_dict_is_in_session(resource dict, string word)", + "whether or not 'word' exists in this spelling-session" + ], + "enchant_dict_quick_check": [ + "bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])", + "If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives." + ], + "enchant_dict_store_replacement": [ + "void enchant_dict_store_replacement(resource dict, string mis, string cor)", + "add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list." + ], + "enchant_dict_suggest": [ + "array enchant_dict_suggest(resource dict, string word)", + "Will return a list of values if any of those pre-conditions are not met." + ], + "end": [ + "mixed end(array array_arg)", + "Advances array argument's internal pointer to the last element and return it" + ], + "ereg": [ + "int ereg(string pattern, string string [, array registers])", + "Regular expression match" + ], + "ereg_replace": [ + "string ereg_replace(string pattern, string replacement, string string)", + "Replace regular expression" + ], + "eregi": [ + "int eregi(string pattern, string string [, array registers])", + "Case-insensitive regular expression match" + ], + "eregi_replace": [ + "string eregi_replace(string pattern, string replacement, string string)", + "Case insensitive replace regular expression" + ], + "error_get_last": [ + "array error_get_last()", + "Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet." + ], + "error_log": [ + "bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])", + "Send an error message somewhere" + ], + "error_reporting": [ + "int error_reporting([int new_error_level])", + "Return the current error_reporting level, and if an argument was passed - change to the new level" + ], + "escapeshellarg": [ + "string escapeshellarg(string arg)", + "Quote and escape an argument for use in a shell command" + ], + "escapeshellcmd": [ + "string escapeshellcmd(string command)", + "Escape shell metacharacters" + ], + "exec": [ + "string exec(string command [, array &output [, int &return_value]])", + "Execute an external program" + ], + "exif_imagetype": [ + "int exif_imagetype(string imagefile)", + "Get the type of an image" + ], + "exif_read_data": [ + "array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])", + "Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails" + ], + "exif_tagname": [ + "string exif_tagname(index)", + "Get headername for index or false if not defined" + ], + "exif_thumbnail": [ + "string exif_thumbnail(string filename [, &width, &height [, &imagetype]])", + "Reads the embedded thumbnail" + ], + "exit": [ + "void exit([mixed status])", + "Output a message and terminate the current script" + ], + "exp": [ + "float exp(float number)", + "Returns e raised to the power of the number" + ], + "explode": [ + "array explode(string separator, string str [, int limit])", + "Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned." + ], + "expm1": [ + "float expm1(float number)", + "Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero" + ], + "extension_loaded": [ + "bool extension_loaded(string extension_name)", + "Returns true if the named extension is loaded" + ], + "extract": [ + "int extract(array var_array [, int extract_type [, string prefix]])", + "Imports variables into symbol table from an array" + ], + "ezmlm_hash": [ + "int ezmlm_hash(string addr)", + "Calculate EZMLM list hash value." + ], + "fclose": [ + "bool fclose(resource fp)", + "Close an open file pointer" + ], + "feof": [ + "bool feof(resource fp)", + "Test for end-of-file on a file pointer" + ], + "fflush": [ + "bool fflush(resource fp)", + "Flushes output" + ], + "fgetc": [ + "string fgetc(resource fp)", + "Get a character from file pointer" + ], + "fgetcsv": [ + "array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])", + "Get line from file pointer and parse for CSV fields" + ], + "fgets": [ + "string fgets(resource fp[, int length])", + "Get a line from file pointer" + ], + "fgetss": [ + "string fgetss(resource fp [, int length [, string allowable_tags]])", + "Get a line from file pointer and strip HTML tags" + ], + "file": [ + "array file(string filename [, int flags[, resource context]])", + "Read entire file into an array" + ], + "file_exists": [ + "bool file_exists(string filename)", + "Returns true if filename exists" + ], + "file_get_contents": [ + "string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])", + "Read the entire file into a string" + ], + "file_put_contents": [ + "int file_put_contents(string file, mixed data [, int flags [, resource context]])", + "Write/Create a file with contents data and return the number of bytes written" + ], + "fileatime": [ + "int fileatime(string filename)", + "Get last access time of file" + ], + "filectime": [ + "int filectime(string filename)", + "Get inode modification time of file" + ], + "filegroup": [ + "int filegroup(string filename)", + "Get file group" + ], + "fileinode": [ + "int fileinode(string filename)", + "Get file inode" + ], + "filemtime": [ + "int filemtime(string filename)", + "Get last modification time of file" + ], + "fileowner": [ + "int fileowner(string filename)", + "Get file owner" + ], + "fileperms": [ + "int fileperms(string filename)", + "Get file permissions" + ], + "filesize": [ + "int filesize(string filename)", + "Get file size" + ], + "filetype": [ + "string filetype(string filename)", + "Get file type" + ], + "filter_has_var": [ + "mixed filter_has_var(constant type, string variable_name)", + "* Returns true if the variable with the name 'name' exists in source." + ], + "filter_input": [ + "mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])", + "* Returns the filtered variable 'name'* from source `type`." + ], + "filter_input_array": [ + "mixed filter_input_array(constant type, [, mixed options]])", + "* Returns an array with all arguments defined in 'definition'." + ], + "filter_var": [ + "mixed filter_var(mixed variable [, long filter [, mixed options]])", + "* Returns the filtered version of the vriable." + ], + "filter_var_array": [ + "mixed filter_var_array(array data, [, mixed options]])", + "* Returns an array with all arguments defined in 'definition'." + ], + "finfo_buffer": [ + "string finfo_buffer(resource finfo, char *string [, int options [, resource context]])", + "Return infromation about a string buffer." + ], + "finfo_close": [ + "resource finfo_close(resource finfo)", + "Close fileinfo resource." + ], + "finfo_file": [ + "string finfo_file(resource finfo, char *file_name [, int options [, resource context]])", + "Return information about a file." + ], + "finfo_open": [ + "resource finfo_open([int options [, string arg]])", + "Create a new fileinfo resource." + ], + "finfo_set_flags": [ + "bool finfo_set_flags(resource finfo, int options)", + "Set libmagic configuration options." + ], + "floatval": [ + "float floatval(mixed var)", + "Get the float value of a variable" + ], + "flock": [ + "bool flock(resource fp, int operation [, int &wouldblock])", + "Portable file locking" + ], + "floor": [ + "float floor(float number)", + "Returns the next lowest integer value from the number" + ], + "flush": [ + "void flush(void)", + "Flush the output buffer" + ], + "fmod": [ + "float fmod(float x, float y)", + "Returns the remainder of dividing x by y as a float" + ], + "fnmatch": [ + "bool fnmatch(string pattern, string filename [, int flags])", + "Match filename against pattern" + ], + "fopen": [ + "resource fopen(string filename, string mode [, bool use_include_path [, resource context]])", + "Open a file or a URL and return a file pointer" + ], + "forward_static_call": [ + "mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])", + "Call a user function which is the first parameter" + ], + "fpassthru": [ + "int fpassthru(resource fp)", + "Output all remaining data from a file pointer" + ], + "fprintf": [ + "int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])", + "Output a formatted string into a stream" + ], + "fputcsv": [ + "int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])", + "Format line as CSV and write to file pointer" + ], + "fread": [ + "string fread(resource fp, int length)", + "Binary-safe file read" + ], + "frenchtojd": [ + "int frenchtojd(int month, int day, int year)", + "Converts a french republic calendar date to julian day count" + ], + "fscanf": [ + "mixed fscanf(resource stream, string format [, string ...])", + "Implements a mostly ANSI compatible fscanf()" + ], + "fseek": [ + "int fseek(resource fp, int offset [, int whence])", + "Seek on a file pointer" + ], + "fsockopen": [ + "resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", + "Open Internet or Unix domain socket connection" + ], + "fstat": [ + "array fstat(resource fp)", + "Stat() on a filehandle" + ], + "ftell": [ + "int ftell(resource fp)", + "Get file pointer's read/write position" + ], + "ftok": [ + "int ftok(string pathname, string proj)", + "Convert a pathname and a project identifier to a System V IPC key" + ], + "ftp_alloc": [ + "bool ftp_alloc(resource stream, int size[, &response])", + "Attempt to allocate space on the remote FTP server" + ], + "ftp_cdup": [ + "bool ftp_cdup(resource stream)", + "Changes to the parent directory" + ], + "ftp_chdir": [ + "bool ftp_chdir(resource stream, string directory)", + "Changes directories" + ], + "ftp_chmod": [ + "int ftp_chmod(resource stream, int mode, string filename)", + "Sets permissions on a file" + ], + "ftp_close": [ + "bool ftp_close(resource stream)", + "Closes the FTP stream" + ], + "ftp_connect": [ + "resource ftp_connect(string host [, int port [, int timeout]])", + "Opens a FTP stream" + ], + "ftp_delete": [ + "bool ftp_delete(resource stream, string file)", + "Deletes a file" + ], + "ftp_exec": [ + "bool ftp_exec(resource stream, string command)", + "Requests execution of a program on the FTP server" + ], + "ftp_fget": [ + "bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", + "Retrieves a file from the FTP server and writes it to an open file" + ], + "ftp_fput": [ + "bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", + "Stores a file from an open file to the FTP server" + ], + "ftp_get": [ + "bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", + "Retrieves a file from the FTP server and writes it to a local file" + ], + "ftp_get_option": [ + "mixed ftp_get_option(resource stream, int option)", + "Gets an FTP option" + ], + "ftp_login": [ + "bool ftp_login(resource stream, string username, string password)", + "Logs into the FTP server" + ], + "ftp_mdtm": [ + "int ftp_mdtm(resource stream, string filename)", + "Returns the last modification time of the file, or -1 on error" + ], + "ftp_mkdir": [ + "string ftp_mkdir(resource stream, string directory)", + "Creates a directory and returns the absolute path for the new directory or false on error" + ], + "ftp_nb_continue": [ + "int ftp_nb_continue(resource stream)", + "Continues retrieving/sending a file nbronously" + ], + "ftp_nb_fget": [ + "int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", + "Retrieves a file from the FTP server asynchronly and writes it to an open file" + ], + "ftp_nb_fput": [ + "int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", + "Stores a file from an open file to the FTP server nbronly" + ], + "ftp_nb_get": [ + "int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", + "Retrieves a file from the FTP server nbhronly and writes it to a local file" + ], + "ftp_nb_put": [ + "int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", + "Stores a file on the FTP server" + ], + "ftp_nlist": [ + "array ftp_nlist(resource stream, string directory)", + "Returns an array of filenames in the given directory" + ], + "ftp_pasv": [ + "bool ftp_pasv(resource stream, bool pasv)", + "Turns passive mode on or off" + ], + "ftp_put": [ + "bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", + "Stores a file on the FTP server" + ], + "ftp_pwd": [ + "string ftp_pwd(resource stream)", + "Returns the present working directory" + ], + "ftp_raw": [ + "array ftp_raw(resource stream, string command)", + "Sends a literal command to the FTP server" + ], + "ftp_rawlist": [ + "array ftp_rawlist(resource stream, string directory [, bool recursive])", + "Returns a detailed listing of a directory as an array of output lines" + ], + "ftp_rename": [ + "bool ftp_rename(resource stream, string src, string dest)", + "Renames the given file to a new path" + ], + "ftp_rmdir": [ + "bool ftp_rmdir(resource stream, string directory)", + "Removes a directory" + ], + "ftp_set_option": [ + "bool ftp_set_option(resource stream, int option, mixed value)", + "Sets an FTP option" + ], + "ftp_site": [ + "bool ftp_site(resource stream, string cmd)", + "Sends a SITE command to the server" + ], + "ftp_size": [ + "int ftp_size(resource stream, string filename)", + "Returns the size of the file, or -1 on error" + ], + "ftp_ssl_connect": [ + "resource ftp_ssl_connect(string host [, int port [, int timeout]])", + "Opens a FTP-SSL stream" + ], + "ftp_systype": [ + "string ftp_systype(resource stream)", + "Returns the system type identifier" + ], + "ftruncate": [ + "bool ftruncate(resource fp, int size)", + "Truncate file to 'size' length" + ], + "func_get_arg": [ + "mixed func_get_arg(int arg_num)", + "Get the $arg_num'th argument that was passed to the function" + ], + "func_get_args": [ + "array func_get_args()", + "Get an array of the arguments that were passed to the function" + ], + "func_num_args": [ + "int func_num_args(void)", + "Get the number of arguments that were passed to the function" + ], + "function_exists": [ + "bool function_exists(string function_name)", + "Checks if the function exists" + ], + "fwrite": [ + "int fwrite(resource fp, string str [, int length])", + "Binary-safe file write" + ], + "gc_collect_cycles": [ + "int gc_collect_cycles(void)", + "Forces collection of any existing garbage cycles. Returns number of freed zvals" + ], + "gc_disable": [ + "void gc_disable(void)", + "Deactivates the circular reference collector" + ], + "gc_enable": [ + "void gc_enable(void)", + "Activates the circular reference collector" + ], + "gc_enabled": [ + "void gc_enabled(void)", + "Returns status of the circular reference collector" + ], + "gd_info": [ + "array gd_info()", + "" + ], + "getKeywords": [ + "static array getKeywords(string $locale) {", + "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!) * }}}" + ], + "get_browser": [ + "mixed get_browser([string browser_name [, bool return_array]])", + "Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array." + ], + "get_called_class": [ + "string get_called_class()", + "Retrieves the \"Late Static Binding\" class name" + ], + "get_cfg_var": [ + "mixed get_cfg_var(string option_name)", + "Get the value of a PHP configuration option" + ], + "get_class": [ + "string get_class([object object])", + "Retrieves the class name" + ], + "get_class_methods": [ + "array get_class_methods(mixed class)", + "Returns an array of method names for class or class instance." + ], + "get_class_vars": [ + "array get_class_vars(string class_name)", + "Returns an array of default properties of the class." + ], + "get_current_user": [ + "string get_current_user(void)", + "Get the name of the owner of the current PHP script" + ], + "get_declared_classes": [ + "array get_declared_classes()", + "Returns an array of all declared classes." + ], + "get_declared_interfaces": [ + "array get_declared_interfaces()", + "Returns an array of all declared interfaces." + ], + "get_defined_constants": [ + "array get_defined_constants([bool categorize])", + "Return an array containing the names and values of all defined constants" + ], + "get_defined_functions": [ + "array get_defined_functions(void)", + "Returns an array of all defined functions" + ], + "get_defined_vars": [ + "array get_defined_vars(void)", + "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)" + ], + "get_display_language": [ + "static string get_display_language($locale[, $in_locale = null])", + "* gets the language for the $locale in $in_locale or default_locale" + ], + "get_display_name": [ + "static string get_display_name($locale[, $in_locale = null])", + "* gets the name for the $locale in $in_locale or default_locale" + ], + "get_display_region": [ + "static string get_display_region($locale, $in_locale = null)", + "* gets the region for the $locale in $in_locale or default_locale" + ], + "get_display_script": [ + "static string get_display_script($locale, $in_locale = null)", + "* gets the script for the $locale in $in_locale or default_locale" + ], + "get_extension_funcs": [ + "array get_extension_funcs(string extension_name)", + "Returns an array with the names of functions belonging to the named extension" + ], + "get_headers": [ + "array get_headers(string url[, int format])", + "fetches all the headers sent by the server in response to a HTTP request" + ], + "get_html_translation_table": [ + "array get_html_translation_table([int table [, int quote_style]])", + "Returns the internal translation table used by htmlspecialchars and htmlentities" + ], + "get_include_path": [ + "string get_include_path()", + "Get the current include_path configuration option" + ], + "get_included_files": [ + "array get_included_files(void)", + "Returns an array with the file names that were include_once()'d" + ], + "get_loaded_extensions": [ + "array get_loaded_extensions([bool zend_extensions])", + "Return an array containing names of loaded extensions" + ], + "get_magic_quotes_gpc": [ + "int get_magic_quotes_gpc(void)", + "Get the current active configuration setting of magic_quotes_gpc" + ], + "get_magic_quotes_runtime": [ + "int get_magic_quotes_runtime(void)", + "Get the current active configuration setting of magic_quotes_runtime" + ], + "get_meta_tags": [ + "array get_meta_tags(string filename [, bool use_include_path])", + "Extracts all meta tag content attributes from a file and returns an array" + ], + "get_object_vars": [ + "array get_object_vars(object obj)", + "Returns an array of object properties" + ], + "get_parent_class": [ + "string get_parent_class([mixed object])", + "Retrieves the parent class name for object or class or current scope." + ], + "get_resource_type": [ + "string get_resource_type(resource res)", + "Get the resource type name for a given resource" + ], + "getallheaders": [ + "array getallheaders(void)", + "" + ], + "getcwd": [ + "mixed getcwd(void)", + "Gets the current directory" + ], + "getdate": [ + "array getdate([int timestamp])", + "Get date/time information" + ], + "getenv": [ + "string getenv(string varname)", + "Get the value of an environment variable" + ], + "gethostbyaddr": [ + "string gethostbyaddr(string ip_address)", + "Get the Internet host name corresponding to a given IP address" + ], + "gethostbyname": [ + "string gethostbyname(string hostname)", + "Get the IP address corresponding to a given Internet host name" + ], + "gethostbynamel": [ + "array gethostbynamel(string hostname)", + "Return a list of IP addresses that a given hostname resolves to." + ], + "gethostname": [ + "string gethostname()", + "Get the host name of the current machine" + ], + "getimagesize": [ + "array getimagesize(string imagefile [, array info])", + "Get the size of an image as 4-element array" + ], + "getlastmod": [ + "int getlastmod(void)", + "Get time of last page modification" + ], + "getmygid": [ + "int getmygid(void)", + "Get PHP script owner's GID" + ], + "getmyinode": [ + "int getmyinode(void)", + "Get the inode of the current script being parsed" + ], + "getmypid": [ + "int getmypid(void)", + "Get current process ID" + ], + "getmyuid": [ + "int getmyuid(void)", + "Get PHP script owner's UID" + ], + "getopt": [ + "array getopt(string options [, array longopts])", + "Get options from the command line argument list" + ], + "getprotobyname": [ + "int getprotobyname(string name)", + "Returns protocol number associated with name as per /etc/protocols" + ], + "getprotobynumber": [ + "string getprotobynumber(int proto)", + "Returns protocol name associated with protocol number proto" + ], + "getrandmax": [ + "int getrandmax(void)", + "Returns the maximum value a random number can have" + ], + "getrusage": [ + "array getrusage([int who])", + "Returns an array of usage statistics" + ], + "getservbyname": [ + "int getservbyname(string service, string protocol)", + "Returns port associated with service. Protocol must be \"tcp\" or \"udp\"" + ], + "getservbyport": [ + "string getservbyport(int port, string protocol)", + "Returns service name associated with port. Protocol must be \"tcp\" or \"udp\"" + ], + "gettext": [ + "string gettext(string msgid)", + "Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist" + ], + "gettimeofday": [ + "array gettimeofday([bool get_as_float])", + "Returns the current time as array" + ], + "gettype": [ + "string gettype(mixed var)", + "Returns the type of the variable" + ], + "glob": [ + "array glob(string pattern [, int flags])", + "Find pathnames matching a pattern" + ], + "gmdate": [ + "string gmdate(string format [, long timestamp])", + "Format a GMT date/time" + ], + "gmmktime": [ + "int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", + "Get UNIX timestamp for a GMT date" + ], + "gmp_abs": [ + "resource gmp_abs(resource a)", + "Calculates absolute value" + ], + "gmp_add": [ + "resource gmp_add(resource a, resource b)", + "Add a and b" + ], + "gmp_and": [ + "resource gmp_and(resource a, resource b)", + "Calculates logical AND of a and b" + ], + "gmp_clrbit": [ + "void gmp_clrbit(resource &a, int index)", + "Clears bit in a" + ], + "gmp_cmp": [ + "int gmp_cmp(resource a, resource b)", + "Compares two numbers" + ], + "gmp_com": [ + "resource gmp_com(resource a)", + "Calculates one's complement of a" + ], + "gmp_div_q": [ + "resource gmp_div_q(resource a, resource b [, int round])", + "Divide a by b, returns quotient only" + ], + "gmp_div_qr": [ + "array gmp_div_qr(resource a, resource b [, int round])", + "Divide a by b, returns quotient and reminder" + ], + "gmp_div_r": [ + "resource gmp_div_r(resource a, resource b [, int round])", + "Divide a by b, returns reminder only" + ], + "gmp_divexact": [ + "resource gmp_divexact(resource a, resource b)", + "Divide a by b using exact division algorithm" + ], + "gmp_fact": [ + "resource gmp_fact(int a)", + "Calculates factorial function" + ], + "gmp_gcd": [ + "resource gmp_gcd(resource a, resource b)", + "Computes greatest common denominator (gcd) of a and b" + ], + "gmp_gcdext": [ + "array gmp_gcdext(resource a, resource b)", + "Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)" + ], + "gmp_hamdist": [ + "int gmp_hamdist(resource a, resource b)", + "Calculates hamming distance between a and b" + ], + "gmp_init": [ + "resource gmp_init(mixed number [, int base])", + "Initializes GMP number" + ], + "gmp_intval": [ + "int gmp_intval(resource gmpnumber)", + "Gets signed long value of GMP number" + ], + "gmp_invert": [ + "resource gmp_invert(resource a, resource b)", + "Computes the inverse of a modulo b" + ], + "gmp_jacobi": [ + "int gmp_jacobi(resource a, resource b)", + "Computes Jacobi symbol" + ], + "gmp_legendre": [ + "int gmp_legendre(resource a, resource b)", + "Computes Legendre symbol" + ], + "gmp_mod": [ + "resource gmp_mod(resource a, resource b)", + "Computes a modulo b" + ], + "gmp_mul": [ + "resource gmp_mul(resource a, resource b)", + "Multiply a and b" + ], + "gmp_neg": [ + "resource gmp_neg(resource a)", + "Negates a number" + ], + "gmp_nextprime": [ + "resource gmp_nextprime(resource a)", + "Finds next prime of a" + ], + "gmp_or": [ + "resource gmp_or(resource a, resource b)", + "Calculates logical OR of a and b" + ], + "gmp_perfect_square": [ + "bool gmp_perfect_square(resource a)", + "Checks if a is an exact square" + ], + "gmp_popcount": [ + "int gmp_popcount(resource a)", + "Calculates the population count of a" + ], + "gmp_pow": [ + "resource gmp_pow(resource base, int exp)", + "Raise base to power exp" + ], + "gmp_powm": [ + "resource gmp_powm(resource base, resource exp, resource mod)", + "Raise base to power exp and take result modulo mod" + ], + "gmp_prob_prime": [ + "int gmp_prob_prime(resource a[, int reps])", + "Checks if a is \"probably prime\"" + ], + "gmp_random": [ + "resource gmp_random([int limiter])", + "Gets random number" + ], + "gmp_scan0": [ + "int gmp_scan0(resource a, int start)", + "Finds first zero bit" + ], + "gmp_scan1": [ + "int gmp_scan1(resource a, int start)", + "Finds first non-zero bit" + ], + "gmp_setbit": [ + "void gmp_setbit(resource &a, int index[, bool set_clear])", + "Sets or clear bit in a" + ], + "gmp_sign": [ + "int gmp_sign(resource a)", + "Gets the sign of the number" + ], + "gmp_sqrt": [ + "resource gmp_sqrt(resource a)", + "Takes integer part of square root of a" + ], + "gmp_sqrtrem": [ + "array gmp_sqrtrem(resource a)", + "Square root with remainder" + ], + "gmp_strval": [ + "string gmp_strval(resource gmpnumber [, int base])", + "Gets string representation of GMP number" + ], + "gmp_sub": [ + "resource gmp_sub(resource a, resource b)", + "Subtract b from a" + ], + "gmp_testbit": [ + "bool gmp_testbit(resource a, int index)", + "Tests if bit is set in a" + ], + "gmp_xor": [ + "resource gmp_xor(resource a, resource b)", + "Calculates logical exclusive OR of a and b" + ], + "gmstrftime": [ + "string gmstrftime(string format [, int timestamp])", + "Format a GMT/UCT time/date according to locale settings" + ], + "grapheme_extract": [ + "string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])", + "Function to extract a sequence of default grapheme clusters" + ], + "grapheme_stripos": [ + "int grapheme_stripos(string haystack, string needle [, int offset ])", + "Find position of first occurrence of a string within another, ignoring case differences" + ], + "grapheme_stristr": [ + "string grapheme_stristr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "grapheme_strlen": [ + "int grapheme_strlen(string str)", + "Get number of graphemes in a string" + ], + "grapheme_strpos": [ + "int grapheme_strpos(string haystack, string needle [, int offset ])", + "Find position of first occurrence of a string within another" + ], + "grapheme_strripos": [ + "int grapheme_strripos(string haystack, string needle [, int offset])", + "Find position of last occurrence of a string within another, ignoring case" + ], + "grapheme_strrpos": [ + "int grapheme_strrpos(string haystack, string needle [, int offset])", + "Find position of last occurrence of a string within another" + ], + "grapheme_strstr": [ + "string grapheme_strstr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "grapheme_substr": [ + "string grapheme_substr(string str, int start [, int length])", + "Returns part of a string" + ], + "gregoriantojd": [ + "int gregoriantojd(int month, int day, int year)", + "Converts a gregorian calendar date to julian day count" + ], + "gzcompress": [ + "string gzcompress(string data [, int level])", + "Gzip-compress a string" + ], + "gzdeflate": [ + "string gzdeflate(string data [, int level])", + "Gzip-compress a string" + ], + "gzencode": [ + "string gzencode(string data [, int level [, int encoding_mode]])", + "GZ encode a string" + ], + "gzfile": [ + "array gzfile(string filename [, int use_include_path])", + "Read und uncompress entire .gz-file into an array" + ], + "gzinflate": [ + "string gzinflate(string data [, int length])", + "Unzip a gzip-compressed string" + ], + "gzopen": [ + "resource gzopen(string filename, string mode [, int use_include_path])", + "Open a .gz-file and return a .gz-file pointer" + ], + "gzuncompress": [ + "string gzuncompress(string data [, int length])", + "Unzip a gzip-compressed string" + ], + "hash": [ + "string hash(string algo, string data[, bool raw_output = false])", + "Generate a hash of a given input string Returns lowercase hexits by default" + ], + "hash_algos": [ + "array hash_algos(void)", + "Return a list of registered hashing algorithms" + ], + "hash_copy": [ + "resource hash_copy(resource context)", + "Copy hash resource" + ], + "hash_file": [ + "string hash_file(string algo, string filename[, bool raw_output = false])", + "Generate a hash of a given file Returns lowercase hexits by default" + ], + "hash_final": [ + "string hash_final(resource context[, bool raw_output=false])", + "Output resulting digest" + ], + "hash_hmac": [ + "string hash_hmac(string algo, string data, string key[, bool raw_output = false])", + "Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default" + ], + "hash_hmac_file": [ + "string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])", + "Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default" + ], + "hash_init": [ + "resource hash_init(string algo[, int options, string key])", + "Initialize a hashing context" + ], + "hash_update": [ + "bool hash_update(resource context, string data)", + "Pump data into the hashing algorithm" + ], + "hash_update_file": [ + "bool hash_update_file(resource context, string filename[, resource context])", + "Pump data into the hashing algorithm from a file" + ], + "hash_update_stream": [ + "int hash_update_stream(resource context, resource handle[, integer length])", + "Pump data into the hashing algorithm from an open stream" + ], + "header": [ + "void header(string header [, bool replace, [int http_response_code]])", + "Sends a raw HTTP header" + ], + "header_remove": [ + "void header_remove([string name])", + "Removes an HTTP header previously set using header()" + ], + "headers_list": [ + "array headers_list(void)", + "Return list of headers to be sent / already sent" + ], + "headers_sent": [ + "bool headers_sent([string &$file [, int &$line]])", + "Returns true if headers have already been sent, false otherwise" + ], + "hebrev": [ + "string hebrev(string str [, int max_chars_per_line])", + "Converts logical Hebrew text to visual text" + ], + "hebrevc": [ + "string hebrevc(string str [, int max_chars_per_line])", + "Converts logical Hebrew text to visual text with newline conversion" + ], + "hexdec": [ + "int hexdec(string hexadecimal_number)", + "Returns the decimal equivalent of the hexadecimal number" + ], + "highlight_file": [ + "bool highlight_file(string file_name [, bool return] )", + "Syntax highlight a source file" + ], + "highlight_string": [ + "bool highlight_string(string string [, bool return] )", + "Syntax highlight a string or optionally return it" + ], + "html_entity_decode": [ + "string html_entity_decode(string string [, int quote_style][, string charset])", + "Convert all HTML entities to their applicable characters" + ], + "htmlentities": [ + "string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])", + "Convert all applicable characters to HTML entities" + ], + "htmlspecialchars": [ + "string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])", + "Convert special characters to HTML entities" + ], + "htmlspecialchars_decode": [ + "string htmlspecialchars_decode(string string [, int quote_style])", + "Convert special HTML entities back to characters" + ], + "http_build_query": [ + "string http_build_query(mixed formdata [, string prefix [, string arg_separator]])", + "Generates a form-encoded query string from an associative array or object." + ], + "hypot": [ + "float hypot(float num1, float num2)", + "Returns sqrt(num1*num1 + num2*num2)" + ], + "ibase_add_user": [ + "bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Add a user to security database" + ], + "ibase_affected_rows": [ + "int ibase_affected_rows( [ resource link_identifier ] )", + "Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement" + ], + "ibase_backup": [ + "mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])", + "Initiates a backup task in the service manager and returns immediately" + ], + "ibase_blob_add": [ + "bool ibase_blob_add(resource blob_handle, string data)", + "Add data into created blob" + ], + "ibase_blob_cancel": [ + "bool ibase_blob_cancel(resource blob_handle)", + "Cancel creating blob" + ], + "ibase_blob_close": [ + "string ibase_blob_close(resource blob_handle)", + "Close blob" + ], + "ibase_blob_create": [ + "resource ibase_blob_create([resource link_identifier])", + "Create blob for adding data" + ], + "ibase_blob_echo": [ + "bool ibase_blob_echo([ resource link_identifier, ] string blob_id)", + "Output blob contents to browser" + ], + "ibase_blob_get": [ + "string ibase_blob_get(resource blob_handle, int len)", + "Get len bytes data from open blob" + ], + "ibase_blob_import": [ + "string ibase_blob_import([ resource link_identifier, ] resource file)", + "Create blob, copy file in it, and close it" + ], + "ibase_blob_info": [ + "array ibase_blob_info([ resource link_identifier, ] string blob_id)", + "Return blob length and other useful info" + ], + "ibase_blob_open": [ + "resource ibase_blob_open([ resource link_identifier, ] string blob_id)", + "Open blob for retrieving data parts" + ], + "ibase_close": [ + "bool ibase_close([resource link_identifier])", + "Close an InterBase connection" + ], + "ibase_commit": [ + "bool ibase_commit( resource link_identifier )", + "Commit transaction" + ], + "ibase_commit_ret": [ + "bool ibase_commit_ret( resource link_identifier )", + "Commit transaction and retain the transaction context" + ], + "ibase_connect": [ + "resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", + "Open a connection to an InterBase database" + ], + "ibase_db_info": [ + "string ibase_db_info(resource service_handle, string db, int action [, int argument])", + "Request statistics about a database" + ], + "ibase_delete_user": [ + "bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Delete a user from security database" + ], + "ibase_drop_db": [ + "bool ibase_drop_db([resource link_identifier])", + "Drop an InterBase database" + ], + "ibase_errcode": [ + "int ibase_errcode(void)", + "Return error code" + ], + "ibase_errmsg": [ + "string ibase_errmsg(void)", + "Return error message" + ], + "ibase_execute": [ + "mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])", + "Execute a previously prepared query" + ], + "ibase_fetch_assoc": [ + "array ibase_fetch_assoc(resource result [, int fetch_flags])", + "Fetch a row from the results of a query" + ], + "ibase_fetch_object": [ + "object ibase_fetch_object(resource result [, int fetch_flags])", + "Fetch a object from the results of a query" + ], + "ibase_fetch_row": [ + "array ibase_fetch_row(resource result [, int fetch_flags])", + "Fetch a row from the results of a query" + ], + "ibase_field_info": [ + "array ibase_field_info(resource query_result, int field_number)", + "Get information about a field" + ], + "ibase_free_event_handler": [ + "bool ibase_free_event_handler(resource event)", + "Frees the event handler set by ibase_set_event_handler()" + ], + "ibase_free_query": [ + "bool ibase_free_query(resource query)", + "Free memory used by a query" + ], + "ibase_free_result": [ + "bool ibase_free_result(resource result)", + "Free the memory used by a result" + ], + "ibase_gen_id": [ + "int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])", + "Increments the named generator and returns its new value" + ], + "ibase_maintain_db": [ + "bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])", + "Execute a maintenance command on the database server" + ], + "ibase_modify_user": [ + "bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Modify a user in security database" + ], + "ibase_name_result": [ + "bool ibase_name_result(resource result, string name)", + "Assign a name to a result for use with ... WHERE CURRENT OF <name> statements" + ], + "ibase_num_fields": [ + "int ibase_num_fields(resource query_result)", + "Get the number of fields in result" + ], + "ibase_num_params": [ + "int ibase_num_params(resource query)", + "Get the number of params in a prepared query" + ], + "ibase_num_rows": [ + "int ibase_num_rows( resource result_identifier )", + "Return the number of rows that are available in a result" + ], + "ibase_param_info": [ + "array ibase_param_info(resource query, int field_number)", + "Get information about a parameter" + ], + "ibase_pconnect": [ + "resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", + "Open a persistent connection to an InterBase database" + ], + "ibase_prepare": [ + "resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])", + "Prepare a query for later execution" + ], + "ibase_query": [ + "mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])", + "Execute a query" + ], + "ibase_restore": [ + "mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])", + "Initiates a restore task in the service manager and returns immediately" + ], + "ibase_rollback": [ + "bool ibase_rollback( resource link_identifier )", + "Rollback transaction" + ], + "ibase_rollback_ret": [ + "bool ibase_rollback_ret( resource link_identifier )", + "Rollback transaction and retain the transaction context" + ], + "ibase_server_info": [ + "string ibase_server_info(resource service_handle, int action)", + "Request information about a database server" + ], + "ibase_service_attach": [ + "resource ibase_service_attach(string host, string dba_username, string dba_password)", + "Connect to the service manager" + ], + "ibase_service_detach": [ + "bool ibase_service_detach(resource service_handle)", + "Disconnect from the service manager" + ], + "ibase_set_event_handler": [ + "resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])", + "Register the callback for handling each of the named events" + ], + "ibase_trans": [ + "resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])", + "Start a transaction over one or several databases" + ], + "ibase_wait_event": [ + "string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])", + "Waits for any one of the passed Interbase events to be posted by the database, and returns its name" + ], + "iconv": [ + "string iconv(string in_charset, string out_charset, string str)", + "Returns str converted to the out_charset character set" + ], + "iconv_get_encoding": [ + "mixed iconv_get_encoding([string type])", + "Get internal encoding and output encoding for ob_iconv_handler()" + ], + "iconv_mime_decode": [ + "string iconv_mime_decode(string encoded_string [, int mode, string charset])", + "Decodes a mime header field" + ], + "iconv_mime_decode_headers": [ + "array iconv_mime_decode_headers(string headers [, int mode, string charset])", + "Decodes multiple mime header fields" + ], + "iconv_mime_encode": [ + "string iconv_mime_encode(string field_name, string field_value [, array preference])", + "Composes a mime header field with field_name and field_value in a specified scheme" + ], + "iconv_set_encoding": [ + "bool iconv_set_encoding(string type, string charset)", + "Sets internal encoding and output encoding for ob_iconv_handler()" + ], + "iconv_strlen": [ + "int iconv_strlen(string str [, string charset])", + "Returns the character count of str" + ], + "iconv_strpos": [ + "int iconv_strpos(string haystack, string needle [, int offset [, string charset]])", + "Finds position of first occurrence of needle within part of haystack beginning with offset" + ], + "iconv_strrpos": [ + "int iconv_strrpos(string haystack, string needle [, string charset])", + "Finds position of last occurrence of needle within part of haystack beginning with offset" + ], + "iconv_substr": [ + "string iconv_substr(string str, int offset, [int length, string charset])", + "Returns specified part of a string" + ], + "idate": [ + "int idate(string format [, int timestamp])", + "Format a local time/date as integer" + ], + "idn_to_ascii": [ + "int idn_to_ascii(string domain[, int options])", + "Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC" + ], + "idn_to_utf8": [ + "int idn_to_utf8(string domain[, int options])", + "Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC" + ], + "ignore_user_abort": [ + "int ignore_user_abort([string value])", + "Set whether we want to ignore a user abort event or not" + ], + "image2wbmp": [ + "bool image2wbmp(resource im [, string filename [, int threshold]])", + "Output WBMP image to browser or file" + ], + "image_type_to_extension": [ + "string image_type_to_extension(int imagetype [, bool include_dot])", + "Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" + ], + "image_type_to_mime_type": [ + "string image_type_to_mime_type(int imagetype)", + "Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" + ], + "imagealphablending": [ + "bool imagealphablending(resource im, bool on)", + "Turn alpha blending mode on or off for the given image" + ], + "imageantialias": [ + "bool imageantialias(resource im, bool on)", + "Should antialiased functions used or not" + ], + "imagearc": [ + "bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)", + "Draw a partial ellipse" + ], + "imagechar": [ + "bool imagechar(resource im, int font, int x, int y, string c, int col)", + "Draw a character" + ], + "imagecharup": [ + "bool imagecharup(resource im, int font, int x, int y, string c, int col)", + "Draw a character rotated 90 degrees counter-clockwise" + ], + "imagecolorallocate": [ + "int imagecolorallocate(resource im, int red, int green, int blue)", + "Allocate a color for an image" + ], + "imagecolorallocatealpha": [ + "int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)", + "Allocate a color with an alpha level. Works for true color and palette based images" + ], + "imagecolorat": [ + "int imagecolorat(resource im, int x, int y)", + "Get the index of the color of a pixel" + ], + "imagecolorclosest": [ + "int imagecolorclosest(resource im, int red, int green, int blue)", + "Get the index of the closest color to the specified color" + ], + "imagecolorclosestalpha": [ + "int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)", + "Find the closest matching colour with alpha transparency" + ], + "imagecolorclosesthwb": [ + "int imagecolorclosesthwb(resource im, int red, int green, int blue)", + "Get the index of the color which has the hue, white and blackness nearest to the given color" + ], + "imagecolordeallocate": [ + "bool imagecolordeallocate(resource im, int index)", + "De-allocate a color for an image" + ], + "imagecolorexact": [ + "int imagecolorexact(resource im, int red, int green, int blue)", + "Get the index of the specified color" + ], + "imagecolorexactalpha": [ + "int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)", + "Find exact match for colour with transparency" + ], + "imagecolormatch": [ + "bool imagecolormatch(resource im1, resource im2)", + "Makes the colors of the palette version of an image more closely match the true color version" + ], + "imagecolorresolve": [ + "int imagecolorresolve(resource im, int red, int green, int blue)", + "Get the index of the specified color or its closest possible alternative" + ], + "imagecolorresolvealpha": [ + "int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)", + "Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images" + ], + "imagecolorset": [ + "void imagecolorset(resource im, int col, int red, int green, int blue)", + "Set the color for the specified palette index" + ], + "imagecolorsforindex": [ + "array imagecolorsforindex(resource im, int col)", + "Get the colors for an index" + ], + "imagecolorstotal": [ + "int imagecolorstotal(resource im)", + "Find out the number of colors in an image's palette" + ], + "imagecolortransparent": [ + "int imagecolortransparent(resource im [, int col])", + "Define a color as transparent" + ], + "imageconvolution": [ + "resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)", + "Apply a 3x3 convolution matrix, using coefficient div and offset" + ], + "imagecopy": [ + "bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)", + "Copy part of an image" + ], + "imagecopymerge": [ + "bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", + "Merge one part of an image with another" + ], + "imagecopymergegray": [ + "bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", + "Merge one part of an image with another" + ], + "imagecopyresampled": [ + "bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", + "Copy and resize part of an image using resampling to help ensure clarity" + ], + "imagecopyresized": [ + "bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", + "Copy and resize part of an image" + ], + "imagecreate": [ + "resource imagecreate(int x_size, int y_size)", + "Create a new image" + ], + "imagecreatefromgd": [ + "resource imagecreatefromgd(string filename)", + "Create a new image from GD file or URL" + ], + "imagecreatefromgd2": [ + "resource imagecreatefromgd2(string filename)", + "Create a new image from GD2 file or URL" + ], + "imagecreatefromgd2part": [ + "resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)", + "Create a new image from a given part of GD2 file or URL" + ], + "imagecreatefromgif": [ + "resource imagecreatefromgif(string filename)", + "Create a new image from GIF file or URL" + ], + "imagecreatefromjpeg": [ + "resource imagecreatefromjpeg(string filename)", + "Create a new image from JPEG file or URL" + ], + "imagecreatefrompng": [ + "resource imagecreatefrompng(string filename)", + "Create a new image from PNG file or URL" + ], + "imagecreatefromstring": [ + "resource imagecreatefromstring(string image)", + "Create a new image from the image stream in the string" + ], + "imagecreatefromwbmp": [ + "resource imagecreatefromwbmp(string filename)", + "Create a new image from WBMP file or URL" + ], + "imagecreatefromxbm": [ + "resource imagecreatefromxbm(string filename)", + "Create a new image from XBM file or URL" + ], + "imagecreatefromxpm": [ + "resource imagecreatefromxpm(string filename)", + "Create a new image from XPM file or URL" + ], + "imagecreatetruecolor": [ + "resource imagecreatetruecolor(int x_size, int y_size)", + "Create a new true color image" + ], + "imagedashedline": [ + "bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a dashed line" + ], + "imagedestroy": [ + "bool imagedestroy(resource im)", + "Destroy an image" + ], + "imageellipse": [ + "bool imageellipse(resource im, int cx, int cy, int w, int h, int color)", + "Draw an ellipse" + ], + "imagefill": [ + "bool imagefill(resource im, int x, int y, int col)", + "Flood fill" + ], + "imagefilledarc": [ + "bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)", + "Draw a filled partial ellipse" + ], + "imagefilledellipse": [ + "bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)", + "Draw an ellipse" + ], + "imagefilledpolygon": [ + "bool imagefilledpolygon(resource im, array point, int num_points, int col)", + "Draw a filled polygon" + ], + "imagefilledrectangle": [ + "bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a filled rectangle" + ], + "imagefilltoborder": [ + "bool imagefilltoborder(resource im, int x, int y, int border, int col)", + "Flood fill to specific color" + ], + "imagefilter": [ + "bool imagefilter(resource src_im, int filtertype, [args] )", + "Applies Filter an image using a custom angle" + ], + "imagefontheight": [ + "int imagefontheight(int font)", + "Get font height" + ], + "imagefontwidth": [ + "int imagefontwidth(int font)", + "Get font width" + ], + "imageftbbox": [ + "array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])", + "Give the bounding box of a text using fonts via freetype2" + ], + "imagefttext": [ + "array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])", + "Write text to the image using fonts via freetype2" + ], + "imagegammacorrect": [ + "bool imagegammacorrect(resource im, float inputgamma, float outputgamma)", + "Apply a gamma correction to a GD image" + ], + "imagegd": [ + "bool imagegd(resource im [, string filename])", + "Output GD image to browser or file" + ], + "imagegd2": [ + "bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])", + "Output GD2 image to browser or file" + ], + "imagegif": [ + "bool imagegif(resource im [, string filename])", + "Output GIF image to browser or file" + ], + "imagegrabscreen": [ + "resource imagegrabscreen()", + "Grab a screenshot" + ], + "imagegrabwindow": [ + "resource imagegrabwindow(int window_handle [, int client_area])", + "Grab a window or its client area using a windows handle (HWND property in COM instance)" + ], + "imageinterlace": [ + "int imageinterlace(resource im [, int interlace])", + "Enable or disable interlace" + ], + "imageistruecolor": [ + "bool imageistruecolor(resource im)", + "return true if the image uses truecolor" + ], + "imagejpeg": [ + "bool imagejpeg(resource im [, string filename [, int quality]])", + "Output JPEG image to browser or file" + ], + "imagelayereffect": [ + "bool imagelayereffect(resource im, int effect)", + "Set the alpha blending flag to use the bundled libgd layering effects" + ], + "imageline": [ + "bool imageline(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a line" + ], + "imageloadfont": [ + "int imageloadfont(string filename)", + "Load a new font" + ], + "imagepalettecopy": [ + "void imagepalettecopy(resource dst, resource src)", + "Copy the palette from the src image onto the dst image" + ], + "imagepng": [ + "bool imagepng(resource im [, string filename])", + "Output PNG image to browser or file" + ], + "imagepolygon": [ + "bool imagepolygon(resource im, array point, int num_points, int col)", + "Draw a polygon" + ], + "imagepsbbox": [ + "array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])", + "Return the bounding box needed by a string if rasterized" + ], + "imagepscopyfont": [ + "int imagepscopyfont(int font_index)", + "Make a copy of a font for purposes like extending or reenconding" + ], + "imagepsencodefont": [ + "bool imagepsencodefont(resource font_index, string filename)", + "To change a fonts character encoding vector" + ], + "imagepsextendfont": [ + "bool imagepsextendfont(resource font_index, float extend)", + "Extend or or condense (if extend < 1) a font" + ], + "imagepsfreefont": [ + "bool imagepsfreefont(resource font_index)", + "Free memory used by a font" + ], + "imagepsloadfont": [ + "resource imagepsloadfont(string pathname)", + "Load a new font from specified file" + ], + "imagepsslantfont": [ + "bool imagepsslantfont(resource font_index, float slant)", + "Slant a font" + ], + "imagepstext": [ + "array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])", + "Rasterize a string over an image" + ], + "imagerectangle": [ + "bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a rectangle" + ], + "imagerotate": [ + "resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])", + "Rotate an image using a custom angle" + ], + "imagesavealpha": [ + "bool imagesavealpha(resource im, bool on)", + "Include alpha channel to a saved image" + ], + "imagesetbrush": [ + "bool imagesetbrush(resource image, resource brush)", + "Set the brush image to $brush when filling $image with the \"IMG_COLOR_BRUSHED\" color" + ], + "imagesetpixel": [ + "bool imagesetpixel(resource im, int x, int y, int col)", + "Set a single pixel" + ], + "imagesetstyle": [ + "bool imagesetstyle(resource im, array styles)", + "Set the line drawing styles for use with imageline and IMG_COLOR_STYLED." + ], + "imagesetthickness": [ + "bool imagesetthickness(resource im, int thickness)", + "Set line thickness for drawing lines, ellipses, rectangles, polygons etc." + ], + "imagesettile": [ + "bool imagesettile(resource image, resource tile)", + "Set the tile image to $tile when filling $image with the \"IMG_COLOR_TILED\" color" + ], + "imagestring": [ + "bool imagestring(resource im, int font, int x, int y, string str, int col)", + "Draw a string horizontally" + ], + "imagestringup": [ + "bool imagestringup(resource im, int font, int x, int y, string str, int col)", + "Draw a string vertically - rotated 90 degrees counter-clockwise" + ], + "imagesx": [ + "int imagesx(resource im)", + "Get image width" + ], + "imagesy": [ + "int imagesy(resource im)", + "Get image height" + ], + "imagetruecolortopalette": [ + "void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)", + "Convert a true colour image to a palette based image with a number of colours, optionally using dithering." + ], + "imagettfbbox": [ + "array imagettfbbox(float size, float angle, string font_file, string text)", + "Give the bounding box of a text using TrueType fonts" + ], + "imagettftext": [ + "array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)", + "Write text to the image using a TrueType font" + ], + "imagetypes": [ + "int imagetypes(void)", + "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM" + ], + "imagewbmp": [ + "bool imagewbmp(resource im [, string filename, [, int foreground]])", + "Output WBMP image to browser or file" + ], + "imagexbm": [ + "int imagexbm(int im, string filename [, int foreground])", + "Output XBM image to browser or file" + ], + "imap_8bit": [ + "string imap_8bit(string text)", + "Convert an 8-bit string to a quoted-printable string" + ], + "imap_alerts": [ + "array imap_alerts(void)", + "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called." + ], + "imap_append": [ + "bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])", + "Append a new message to a specified mailbox" + ], + "imap_base64": [ + "string imap_base64(string text)", + "Decode BASE64 encoded text" + ], + "imap_binary": [ + "string imap_binary(string text)", + "Convert an 8bit string to a base64 string" + ], + "imap_body": [ + "string imap_body(resource stream_id, int msg_no [, int options])", + "Read the message body" + ], + "imap_bodystruct": [ + "object imap_bodystruct(resource stream_id, int msg_no, string section)", + "Read the structure of a specified body section of a specific message" + ], + "imap_check": [ + "object imap_check(resource stream_id)", + "Get mailbox properties" + ], + "imap_clearflag_full": [ + "bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])", + "Clears flags on messages" + ], + "imap_close": [ + "bool imap_close(resource stream_id [, int options])", + "Close an IMAP stream" + ], + "imap_createmailbox": [ + "bool imap_createmailbox(resource stream_id, string mailbox)", + "Create a new mailbox" + ], + "imap_delete": [ + "bool imap_delete(resource stream_id, int msg_no [, int options])", + "Mark a message for deletion" + ], + "imap_deletemailbox": [ + "bool imap_deletemailbox(resource stream_id, string mailbox)", + "Delete a mailbox" + ], + "imap_errors": [ + "array imap_errors(void)", + "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called." + ], + "imap_expunge": [ + "bool imap_expunge(resource stream_id)", + "Permanently delete all messages marked for deletion" + ], + "imap_fetch_overview": [ + "array imap_fetch_overview(resource stream_id, string sequence [, int options])", + "Read an overview of the information in the headers of the given message sequence" + ], + "imap_fetchbody": [ + "string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])", + "Get a specific body section" + ], + "imap_fetchheader": [ + "string imap_fetchheader(resource stream_id, int msg_no [, int options])", + "Get the full unfiltered header for a message" + ], + "imap_fetchstructure": [ + "object imap_fetchstructure(resource stream_id, int msg_no [, int options])", + "Read the full structure of a message" + ], + "imap_gc": [ + "bool imap_gc(resource stream_id, int flags)", + "This function garbage collects (purges) the cache of entries of a specific type." + ], + "imap_get_quota": [ + "array imap_get_quota(resource stream_id, string qroot)", + "Returns the quota set to the mailbox account qroot" + ], + "imap_get_quotaroot": [ + "array imap_get_quotaroot(resource stream_id, string mbox)", + "Returns the quota set to the mailbox account mbox" + ], + "imap_getacl": [ + "array imap_getacl(resource stream_id, string mailbox)", + "Gets the ACL for a given mailbox" + ], + "imap_getmailboxes": [ + "array imap_getmailboxes(resource stream_id, string ref, string pattern)", + "Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter" + ], + "imap_getsubscribed": [ + "array imap_getsubscribed(resource stream_id, string ref, string pattern)", + "Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()" + ], + "imap_headerinfo": [ + "object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])", + "Read the headers of the message" + ], + "imap_headers": [ + "array imap_headers(resource stream_id)", + "Returns headers for all messages in a mailbox" + ], + "imap_last_error": [ + "string imap_last_error(void)", + "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call." + ], + "imap_list": [ + "array imap_list(resource stream_id, string ref, string pattern)", + "Read the list of mailboxes" + ], + "imap_listscan": [ + "array imap_listscan(resource stream_id, string ref, string pattern, string content)", + "Read list of mailboxes containing a certain string" + ], + "imap_lsub": [ + "array imap_lsub(resource stream_id, string ref, string pattern)", + "Return a list of subscribed mailboxes" + ], + "imap_mail": [ + "bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])", + "Send an email message" + ], + "imap_mail_compose": [ + "string imap_mail_compose(array envelope, array body)", + "Create a MIME message based on given envelope and body sections" + ], + "imap_mail_copy": [ + "bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])", + "Copy specified message to a mailbox" + ], + "imap_mail_move": [ + "bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])", + "Move specified message to a mailbox" + ], + "imap_mailboxmsginfo": [ + "object imap_mailboxmsginfo(resource stream_id)", + "Returns info about the current mailbox" + ], + "imap_mime_header_decode": [ + "array imap_mime_header_decode(string str)", + "Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'" + ], + "imap_msgno": [ + "int imap_msgno(resource stream_id, int unique_msg_id)", + "Get the sequence number associated with a UID" + ], + "imap_mutf7_to_utf8": [ + "string imap_mutf7_to_utf8(string in)", + "Decode a modified UTF-7 string to UTF-8" + ], + "imap_num_msg": [ + "int imap_num_msg(resource stream_id)", + "Gives the number of messages in the current mailbox" + ], + "imap_num_recent": [ + "int imap_num_recent(resource stream_id)", + "Gives the number of recent messages in current mailbox" + ], + "imap_open": [ + "resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])", + "Open an IMAP stream to a mailbox" + ], + "imap_ping": [ + "bool imap_ping(resource stream_id)", + "Check if the IMAP stream is still active" + ], + "imap_qprint": [ + "string imap_qprint(string text)", + "Convert a quoted-printable string to an 8-bit string" + ], + "imap_renamemailbox": [ + "bool imap_renamemailbox(resource stream_id, string old_name, string new_name)", + "Rename a mailbox" + ], + "imap_reopen": [ + "bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])", + "Reopen an IMAP stream to a new mailbox" + ], + "imap_rfc822_parse_adrlist": [ + "array imap_rfc822_parse_adrlist(string address_string, string default_host)", + "Parses an address string" + ], + "imap_rfc822_parse_headers": [ + "object imap_rfc822_parse_headers(string headers [, string default_host])", + "Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()" + ], + "imap_rfc822_write_address": [ + "string imap_rfc822_write_address(string mailbox, string host, string personal)", + "Returns a properly formatted email address given the mailbox, host, and personal info" + ], + "imap_savebody": [ + "bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = \"\"[, int options = 0]])", + "Save a specific body section to a file" + ], + "imap_search": [ + "array imap_search(resource stream_id, string criteria [, int options [, string charset]])", + "Return a list of messages matching the given criteria" + ], + "imap_set_quota": [ + "bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)", + "Will set the quota for qroot mailbox" + ], + "imap_setacl": [ + "bool imap_setacl(resource stream_id, string mailbox, string id, string rights)", + "Sets the ACL for a given mailbox" + ], + "imap_setflag_full": [ + "bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])", + "Sets flags on messages" + ], + "imap_sort": [ + "array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])", + "Sort an array of message headers, optionally including only messages that meet specified criteria." + ], + "imap_status": [ + "object imap_status(resource stream_id, string mailbox, int options)", + "Get status info from a mailbox" + ], + "imap_subscribe": [ + "bool imap_subscribe(resource stream_id, string mailbox)", + "Subscribe to a mailbox" + ], + "imap_thread": [ + "array imap_thread(resource stream_id [, int options])", + "Return threaded by REFERENCES tree" + ], + "imap_timeout": [ + "mixed imap_timeout(int timeout_type [, int timeout])", + "Set or fetch imap timeout" + ], + "imap_uid": [ + "int imap_uid(resource stream_id, int msg_no)", + "Get the unique message id associated with a standard sequential message number" + ], + "imap_undelete": [ + "bool imap_undelete(resource stream_id, int msg_no [, int flags])", + "Remove the delete flag from a message" + ], + "imap_unsubscribe": [ + "bool imap_unsubscribe(resource stream_id, string mailbox)", + "Unsubscribe from a mailbox" + ], + "imap_utf7_decode": [ + "string imap_utf7_decode(string buf)", + "Decode a modified UTF-7 string" + ], + "imap_utf7_encode": [ + "string imap_utf7_encode(string buf)", + "Encode a string in modified UTF-7" + ], + "imap_utf8": [ + "string imap_utf8(string mime_encoded_text)", + "Convert a mime-encoded text to UTF-8" + ], + "imap_utf8_to_mutf7": [ + "string imap_utf8_to_mutf7(string in)", + "Encode a UTF-8 string to modified UTF-7" + ], + "implode": [ + "string implode([string glue,] array pieces)", + "Joins array elements placing glue string between items and return one string" + ], + "import_request_variables": [ + "bool import_request_variables(string types [, string prefix])", + "Import GET/POST/Cookie variables into the global scope" + ], + "in_array": [ + "bool in_array(mixed needle, array haystack [, bool strict])", + "Checks if the given value exists in the array" + ], + "include": [ + "bool include(string path)", + "Includes and evaluates the specified file" + ], + "include_once": [ + "bool include_once(string path)", + "Includes and evaluates the specified file" + ], + "inet_ntop": [ + "string inet_ntop(string in_addr)", + "Converts a packed inet address to a human readable IP address string" + ], + "inet_pton": [ + "string inet_pton(string ip_address)", + "Converts a human readable IP address to a packed binary string" + ], + "ini_get": [ + "string ini_get(string varname)", + "Get a configuration option" + ], + "ini_get_all": [ + "array ini_get_all([string extension[, bool details = true]])", + "Get all configuration options" + ], + "ini_restore": [ + "void ini_restore(string varname)", + "Restore the value of a configuration option specified by varname" + ], + "ini_set": [ + "string ini_set(string varname, string newvalue)", + "Set a configuration option, returns false on error and the old value of the configuration option on success" + ], + "interface_exists": [ + "bool interface_exists(string classname [, bool autoload])", + "Checks if the class exists" + ], + "intl_error_name": [ + "string intl_error_name()", + "* Return a string for a given error code. * The string will be the same as the name of the error code constant." + ], + "intl_get_error_code": [ + "int intl_get_error_code()", + "* Get code of the last occured error." + ], + "intl_get_error_message": [ + "string intl_get_error_message()", + "* Get text description of the last occured error." + ], + "intl_is_failure": [ + "bool intl_is_failure()", + "* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning." + ], + "intval": [ + "int intval(mixed var [, int base])", + "Get the integer value of a variable using the optional base for the conversion" + ], + "ip2long": [ + "int ip2long(string ip_address)", + "Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address" + ], + "iptcembed": [ + "array iptcembed(string iptcdata, string jpeg_file_name [, int spool])", + "Embed binary IPTC data into a JPEG image." + ], + "iptcparse": [ + "array iptcparse(string iptcdata)", + "Parse binary IPTC-data into associative array" + ], + "is_a": [ + "bool is_a(object object, string class_name)", + "Returns true if the object is of this class or has this class as one of its parents" + ], + "is_array": [ + "bool is_array(mixed var)", + "Returns true if variable is an array" + ], + "is_bool": [ + "bool is_bool(mixed var)", + "Returns true if variable is a boolean" + ], + "is_callable": [ + "bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", + "Returns true if var is callable." + ], + "is_dir": [ + "bool is_dir(string filename)", + "Returns true if file is directory" + ], + "is_executable": [ + "bool is_executable(string filename)", + "Returns true if file is executable" + ], + "is_file": [ + "bool is_file(string filename)", + "Returns true if file is a regular file" + ], + "is_finite": [ + "bool is_finite(float val)", + "Returns whether argument is finite" + ], + "is_float": [ + "bool is_float(mixed var)", + "Returns true if variable is float point" + ], + "is_infinite": [ + "bool is_infinite(float val)", + "Returns whether argument is infinite" + ], + "is_link": [ + "bool is_link(string filename)", + "Returns true if file is symbolic link" + ], + "is_long": [ + "bool is_long(mixed var)", + "Returns true if variable is a long (integer)" + ], + "is_nan": [ + "bool is_nan(float val)", + "Returns whether argument is not a number" + ], + "is_null": [ + "bool is_null(mixed var)", + "Returns true if variable is null" + ], + "is_numeric": [ + "bool is_numeric(mixed value)", + "Returns true if value is a number or a numeric string" + ], + "is_object": [ + "bool is_object(mixed var)", + "Returns true if variable is an object" + ], + "is_readable": [ + "bool is_readable(string filename)", + "Returns true if file can be read" + ], + "is_resource": [ + "bool is_resource(mixed var)", + "Returns true if variable is a resource" + ], + "is_scalar": [ + "bool is_scalar(mixed value)", + "Returns true if value is a scalar" + ], + "is_string": [ + "bool is_string(mixed var)", + "Returns true if variable is a string" + ], + "is_subclass_of": [ + "bool is_subclass_of(object object, string class_name)", + "Returns true if the object has this class as one of its parents" + ], + "is_uploaded_file": [ + "bool is_uploaded_file(string path)", + "Check if file was created by rfc1867 upload" + ], + "is_writable": [ + "bool is_writable(string filename)", + "Returns true if file can be written" + ], + "isset": [ + "bool isset(mixed var [, mixed var])", + "Determine whether a variable is set" + ], + "iterator_apply": [ + "int iterator_apply(Traversable it, mixed function [, mixed params])", + "Calls a function for every element in an iterator" + ], + "iterator_count": [ + "int iterator_count(Traversable it)", + "Count the elements in an iterator" + ], + "iterator_to_array": [ + "array iterator_to_array(Traversable it [, bool use_keys = true])", + "Copy the iterator into an array" + ], + "jddayofweek": [ + "mixed jddayofweek(int juliandaycount [, int mode])", + "Returns name or number of day of week from julian day count" + ], + "jdmonthname": [ + "string jdmonthname(int juliandaycount, int mode)", + "Returns name of month for julian day count" + ], + "jdtofrench": [ + "string jdtofrench(int juliandaycount)", + "Converts a julian day count to a french republic calendar date" + ], + "jdtogregorian": [ + "string jdtogregorian(int juliandaycount)", + "Converts a julian day count to a gregorian calendar date" + ], + "jdtojewish": [ + "string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])", + "Converts a julian day count to a jewish calendar date" + ], + "jdtojulian": [ + "string jdtojulian(int juliandaycount)", + "Convert a julian day count to a julian calendar date" + ], + "jdtounix": [ + "int jdtounix(int jday)", + "Convert Julian Day to UNIX timestamp" + ], + "jewishtojd": [ + "int jewishtojd(int month, int day, int year)", + "Converts a jewish calendar date to a julian day count" + ], + "join": [ + "string join(array src, string glue)", + "An alias for implode" + ], + "jpeg2wbmp": [ + "bool jpeg2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", + "Convert JPEG image to WBMP image" + ], + "json_decode": [ + "mixed json_decode(string json [, bool assoc [, long depth]])", + "Decodes the JSON representation into a PHP value" + ], + "json_encode": [ + "string json_encode(mixed data [, int options])", + "Returns the JSON representation of a value" + ], + "json_last_error": [ + "int json_last_error()", + "Returns the error code of the last json_decode()." + ], + "juliantojd": [ + "int juliantojd(int month, int day, int year)", + "Converts a julian calendar date to julian day count" + ], + "key": [ + "mixed key(array array_arg)", + "Return the key of the element currently pointed to by the internal array pointer" + ], + "krsort": [ + "bool krsort(array &array_arg [, int sort_flags])", + "Sort an array by key value in reverse order" + ], + "ksort": [ + "bool ksort(array &array_arg [, int sort_flags])", + "Sort an array by key" + ], + "lcfirst": [ + "string lcfirst(string str)", + "Make a string's first character lowercase" + ], + "lcg_value": [ + "float lcg_value()", + "Returns a value from the combined linear congruential generator" + ], + "lchgrp": [ + "bool lchgrp(string filename, mixed group)", + "Change symlink group" + ], + "ldap_8859_to_t61": [ + "string ldap_8859_to_t61(string value)", + "Translate 8859 characters to t61 characters" + ], + "ldap_add": [ + "bool ldap_add(resource link, string dn, array entry)", + "Add entries to LDAP directory" + ], + "ldap_bind": [ + "bool ldap_bind(resource link [, string dn [, string password]])", + "Bind to LDAP directory" + ], + "ldap_compare": [ + "bool ldap_compare(resource link, string dn, string attr, string value)", + "Determine if an entry has a specific value for one of its attributes" + ], + "ldap_connect": [ + "resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])", + "Connect to an LDAP server" + ], + "ldap_count_entries": [ + "int ldap_count_entries(resource link, resource result)", + "Count the number of entries in a search result" + ], + "ldap_delete": [ + "bool ldap_delete(resource link, string dn)", + "Delete an entry from a directory" + ], + "ldap_dn2ufn": [ + "string ldap_dn2ufn(string dn)", + "Convert DN to User Friendly Naming format" + ], + "ldap_err2str": [ + "string ldap_err2str(int errno)", + "Convert error number to error string" + ], + "ldap_errno": [ + "int ldap_errno(resource link)", + "Get the current ldap error number" + ], + "ldap_error": [ + "string ldap_error(resource link)", + "Get the current ldap error string" + ], + "ldap_explode_dn": [ + "array ldap_explode_dn(string dn, int with_attrib)", + "Splits DN into its component parts" + ], + "ldap_first_attribute": [ + "string ldap_first_attribute(resource link, resource result_entry)", + "Return first attribute" + ], + "ldap_first_entry": [ + "resource ldap_first_entry(resource link, resource result)", + "Return first result id" + ], + "ldap_first_reference": [ + "resource ldap_first_reference(resource link, resource result)", + "Return first reference" + ], + "ldap_free_result": [ + "bool ldap_free_result(resource result)", + "Free result memory" + ], + "ldap_get_attributes": [ + "array ldap_get_attributes(resource link, resource result_entry)", + "Get attributes from a search result entry" + ], + "ldap_get_dn": [ + "string ldap_get_dn(resource link, resource result_entry)", + "Get the DN of a result entry" + ], + "ldap_get_entries": [ + "array ldap_get_entries(resource link, resource result)", + "Get all result entries" + ], + "ldap_get_option": [ + "bool ldap_get_option(resource link, int option, mixed retval)", + "Get the current value of various session-wide parameters" + ], + "ldap_get_values_len": [ + "array ldap_get_values_len(resource link, resource result_entry, string attribute)", + "Get all values with lengths from a result entry" + ], + "ldap_list": [ + "resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Single-level search" + ], + "ldap_mod_add": [ + "bool ldap_mod_add(resource link, string dn, array entry)", + "Add attribute values to current" + ], + "ldap_mod_del": [ + "bool ldap_mod_del(resource link, string dn, array entry)", + "Delete attribute values" + ], + "ldap_mod_replace": [ + "bool ldap_mod_replace(resource link, string dn, array entry)", + "Replace attribute values with new ones" + ], + "ldap_next_attribute": [ + "string ldap_next_attribute(resource link, resource result_entry)", + "Get the next attribute in result" + ], + "ldap_next_entry": [ + "resource ldap_next_entry(resource link, resource result_entry)", + "Get next result entry" + ], + "ldap_next_reference": [ + "resource ldap_next_reference(resource link, resource reference_entry)", + "Get next reference" + ], + "ldap_parse_reference": [ + "bool ldap_parse_reference(resource link, resource reference_entry, array referrals)", + "Extract information from reference entry" + ], + "ldap_parse_result": [ + "bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)", + "Extract information from result" + ], + "ldap_read": [ + "resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Read an entry" + ], + "ldap_rename": [ + "bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn);", + "Modify the name of an entry" + ], + "ldap_sasl_bind": [ + "bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])", + "Bind to LDAP directory using SASL" + ], + "ldap_search": [ + "resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Search LDAP tree under base_dn" + ], + "ldap_set_option": [ + "bool ldap_set_option(resource link, int option, mixed newval)", + "Set the value of various session-wide parameters" + ], + "ldap_set_rebind_proc": [ + "bool ldap_set_rebind_proc(resource link, string callback)", + "Set a callback function to do re-binds on referral chasing." + ], + "ldap_sort": [ + "bool ldap_sort(resource link, resource result, string sortfilter)", + "Sort LDAP result entries" + ], + "ldap_start_tls": [ + "bool ldap_start_tls(resource link)", + "Start TLS" + ], + "ldap_t61_to_8859": [ + "string ldap_t61_to_8859(string value)", + "Translate t61 characters to 8859 characters" + ], + "ldap_unbind": [ + "bool ldap_unbind(resource link)", + "Unbind from LDAP directory" + ], + "leak": [ + "void leak(int num_bytes=3)", + "Cause an intentional memory leak, for testing/debugging purposes" + ], + "levenshtein": [ + "int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])", + "Calculate Levenshtein distance between two strings" + ], + "libxml_clear_errors": [ + "void libxml_clear_errors()", + "Clear last error from libxml" + ], + "libxml_disable_entity_loader": [ + "bool libxml_disable_entity_loader([boolean disable])", + "Disable/Enable ability to load external entities" + ], + "libxml_get_errors": [ + "object libxml_get_errors()", + "Retrieve array of errors" + ], + "libxml_get_last_error": [ + "object libxml_get_last_error()", + "Retrieve last error from libxml" + ], + "libxml_set_streams_context": [ + "void libxml_set_streams_context(resource streams_context)", + "Set the streams context for the next libxml document load or write" + ], + "libxml_use_internal_errors": [ + "bool libxml_use_internal_errors([boolean use_errors])", + "Disable libxml errors and allow user to fetch error information as needed" + ], + "link": [ + "int link(string target, string link)", + "Create a hard link" + ], + "linkinfo": [ + "int linkinfo(string filename)", + "Returns the st_dev field of the UNIX C stat structure describing the link" + ], + "litespeed_request_headers": [ + "array litespeed_request_headers(void)", + "Fetch all HTTP request headers" + ], + "litespeed_response_headers": [ + "array litespeed_response_headers(void)", + "Fetch all HTTP response headers" + ], + "locale_accept_from_http": [ + "string locale_accept_from_http(string $http_accept)", + null + ], + "locale_canonicalize": [ + "static string locale_canonicalize(Locale $loc, string $locale)", + "* @param string $locale The locale string to canonicalize" + ], + "locale_filter_matches": [ + "boolean locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", + "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm" + ], + "locale_get_all_variants": [ + "static array locale_get_all_variants($locale)", + "* gets an array containing the list of variants, or null" + ], + "locale_get_default": [ + "static string locale_get_default( )", + "Get default locale" + ], + "locale_get_keywords": [ + "static array locale_get_keywords(string $locale) {", + "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!)" + ], + "locale_get_primary_language": [ + "static string locale_get_primary_language($locale)", + "* gets the primary language for the $locale" + ], + "locale_get_region": [ + "static string locale_get_region($locale)", + "* gets the region for the $locale" + ], + "locale_get_script": [ + "static string locale_get_script($locale)", + "* gets the script for the $locale" + ], + "locale_lookup": [ + "string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])", + "* Searchs the items in $langtag for the best match to the language * range" + ], + "locale_set_default": [ + "static string locale_set_default( string $locale )", + "Set default locale" + ], + "localeconv": [ + "array localeconv(void)", + "Returns numeric formatting information based on the current locale" + ], + "localtime": [ + "array localtime([int timestamp [, bool associative_array]])", + "Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array" + ], + "log": [ + "float log(float number, [float base])", + "Returns the natural logarithm of the number, or the base log if base is specified" + ], + "log10": [ + "float log10(float number)", + "Returns the base-10 logarithm of the number" + ], + "log1p": [ + "float log1p(float number)", + "Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero" + ], + "long2ip": [ + "string long2ip(int proper_address)", + "Converts an (IPv4) Internet network address into a string in Internet standard dotted format" + ], + "lstat": [ + "array lstat(string filename)", + "Give information about a file or symbolic link" + ], + "ltrim": [ + "string ltrim(string str [, string character_mask])", + "Strips whitespace from the beginning of a string" + ], + "mail": [ + "int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", + "Send an email message" + ], + "max": [ + "mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])", + "Return the highest value in an array or a series of arguments" + ], + "mb_check_encoding": [ + "bool mb_check_encoding([string var[, string encoding]])", + "Check if the string is valid for the specified encoding" + ], + "mb_convert_case": [ + "string mb_convert_case(string sourcestring, int mode [, string encoding])", + "Returns a case-folded version of sourcestring" + ], + "mb_convert_encoding": [ + "string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])", + "Returns converted string in desired encoding" + ], + "mb_convert_kana": [ + "string mb_convert_kana(string str [, string option] [, string encoding])", + "Conversion between full-width character and half-width character (Japanese)" + ], + "mb_convert_variables": [ + "string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])", + "Converts the string resource in variables to desired encoding" + ], + "mb_decode_mimeheader": [ + "string mb_decode_mimeheader(string string)", + "Decodes the MIME \"encoded-word\" in the string" + ], + "mb_decode_numericentity": [ + "string mb_decode_numericentity(string string, array convmap [, string encoding])", + "Converts HTML numeric entities to character code" + ], + "mb_detect_encoding": [ + "string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])", + "Encodings of the given string is returned (as a string)" + ], + "mb_detect_order": [ + "bool|array mb_detect_order([mixed encoding-list])", + "Sets the current detect_order or Return the current detect_order as a array" + ], + "mb_encode_mimeheader": [ + "string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])", + "Converts the string to MIME \"encoded-word\" in the format of =?charset?(B|Q)?encoded_string?=" + ], + "mb_encode_numericentity": [ + "string mb_encode_numericentity(string string, array convmap [, string encoding])", + "Converts specified characters to HTML numeric entities" + ], + "mb_encoding_aliases": [ + "array mb_encoding_aliases(string encoding)", + "Returns an array of the aliases of a given encoding name" + ], + "mb_ereg": [ + "int mb_ereg(string pattern, string string [, array registers])", + "Regular expression match for multibyte string" + ], + "mb_ereg_match": [ + "bool mb_ereg_match(string pattern, string string [,string option])", + "Regular expression match for multibyte string" + ], + "mb_ereg_replace": [ + "string mb_ereg_replace(string pattern, string replacement, string string [, string option])", + "Replace regular expression for multibyte string" + ], + "mb_ereg_search": [ + "bool mb_ereg_search([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_getpos": [ + "int mb_ereg_search_getpos(void)", + "Get search start position" + ], + "mb_ereg_search_getregs": [ + "array mb_ereg_search_getregs(void)", + "Get matched substring of the last time" + ], + "mb_ereg_search_init": [ + "bool mb_ereg_search_init(string string [, string pattern[, string option]])", + "Initialize string and regular expression for search." + ], + "mb_ereg_search_pos": [ + "array mb_ereg_search_pos([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_regs": [ + "array mb_ereg_search_regs([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_setpos": [ + "bool mb_ereg_search_setpos(int position)", + "Set search start position" + ], + "mb_eregi": [ + "int mb_eregi(string pattern, string string [, array registers])", + "Case-insensitive regular expression match for multibyte string" + ], + "mb_eregi_replace": [ + "string mb_eregi_replace(string pattern, string replacement, string string)", + "Case insensitive replace regular expression for multibyte string" + ], + "mb_get_info": [ + "mixed mb_get_info([string type])", + "Returns the current settings of mbstring" + ], + "mb_http_input": [ + "mixed mb_http_input([string type])", + "Returns the input encoding" + ], + "mb_http_output": [ + "string mb_http_output([string encoding])", + "Sets the current output_encoding or returns the current output_encoding as a string" + ], + "mb_internal_encoding": [ + "string mb_internal_encoding([string encoding])", + "Sets the current internal encoding or Returns the current internal encoding as a string" + ], + "mb_language": [ + "string mb_language([string language])", + "Sets the current language or Returns the current language as a string" + ], + "mb_list_encodings": [ + "mixed mb_list_encodings()", + "Returns an array of all supported entity encodings" + ], + "mb_output_handler": [ + "string mb_output_handler(string contents, int status)", + "Returns string in output buffer converted to the http_output encoding" + ], + "mb_parse_str": [ + "bool mb_parse_str(string encoded_string [, array result])", + "Parses GET/POST/COOKIE data and sets global variables" + ], + "mb_preferred_mime_name": [ + "string mb_preferred_mime_name(string encoding)", + "Return the preferred MIME name (charset) as a string" + ], + "mb_regex_encoding": [ + "string mb_regex_encoding([string encoding])", + "Returns the current encoding for regex as a string." + ], + "mb_regex_set_options": [ + "string mb_regex_set_options([string options])", + "Set or get the default options for mbregex functions" + ], + "mb_send_mail": [ + "int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", + "* Sends an email message with MIME scheme" + ], + "mb_split": [ + "array mb_split(string pattern, string string [, int limit])", + "split multibyte string into array by regular expression" + ], + "mb_strcut": [ + "string mb_strcut(string str, int start [, int length [, string encoding]])", + "Returns part of a string" + ], + "mb_strimwidth": [ + "string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])", + "Trim the string in terminal width" + ], + "mb_stripos": [ + "int mb_stripos(string haystack, string needle [, int offset [, string encoding]])", + "Finds position of first occurrence of a string within another, case insensitive" + ], + "mb_stristr": [ + "string mb_stristr(string haystack, string needle[, bool part[, string encoding]])", + "Finds first occurrence of a string within another, case insensitive" + ], + "mb_strlen": [ + "int mb_strlen(string str [, string encoding])", + "Get character numbers of a string" + ], + "mb_strpos": [ + "int mb_strpos(string haystack, string needle [, int offset [, string encoding]])", + "Find position of first occurrence of a string within another" + ], + "mb_strrchr": [ + "string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])", + "Finds the last occurrence of a character in a string within another" + ], + "mb_strrichr": [ + "string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])", + "Finds the last occurrence of a character in a string within another, case insensitive" + ], + "mb_strripos": [ + "int mb_strripos(string haystack, string needle [, int offset [, string encoding]])", + "Finds position of last occurrence of a string within another, case insensitive" + ], + "mb_strrpos": [ + "int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])", + "Find position of last occurrence of a string within another" + ], + "mb_strstr": [ + "string mb_strstr(string haystack, string needle[, bool part[, string encoding]])", + "Finds first occurrence of a string within another" + ], + "mb_strtolower": [ + "string mb_strtolower(string sourcestring [, string encoding])", + "* Returns a lowercased version of sourcestring" + ], + "mb_strtoupper": [ + "string mb_strtoupper(string sourcestring [, string encoding])", + "* Returns a uppercased version of sourcestring" + ], + "mb_strwidth": [ + "int mb_strwidth(string str [, string encoding])", + "Gets terminal width of a string" + ], + "mb_substitute_character": [ + "mixed mb_substitute_character([mixed substchar])", + "Sets the current substitute_character or returns the current substitute_character" + ], + "mb_substr": [ + "string mb_substr(string str, int start [, int length [, string encoding]])", + "Returns part of a string" + ], + "mb_substr_count": [ + "int mb_substr_count(string haystack, string needle [, string encoding])", + "Count the number of substring occurrences" + ], + "mcrypt_cbc": [ + "string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)", + "CBC crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_cfb": [ + "string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)", + "CFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_create_iv": [ + "string mcrypt_create_iv(int size, int source)", + "Create an initialization vector (IV)" + ], + "mcrypt_decrypt": [ + "string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_ecb": [ + "string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)", + "ECB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_enc_get_algorithms_name": [ + "string mcrypt_enc_get_algorithms_name(resource td)", + "Returns the name of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_block_size": [ + "int mcrypt_enc_get_block_size(resource td)", + "Returns the block size of the cipher specified by the descriptor td" + ], + "mcrypt_enc_get_iv_size": [ + "int mcrypt_enc_get_iv_size(resource td)", + "Returns the size of the IV in bytes of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_key_size": [ + "int mcrypt_enc_get_key_size(resource td)", + "Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_modes_name": [ + "string mcrypt_enc_get_modes_name(resource td)", + "Returns the name of the mode specified by the descriptor td" + ], + "mcrypt_enc_get_supported_key_sizes": [ + "array mcrypt_enc_get_supported_key_sizes(resource td)", + "This function decrypts the crypttext" + ], + "mcrypt_enc_is_block_algorithm": [ + "bool mcrypt_enc_is_block_algorithm(resource td)", + "Returns TRUE if the alrogithm is a block algorithms" + ], + "mcrypt_enc_is_block_algorithm_mode": [ + "bool mcrypt_enc_is_block_algorithm_mode(resource td)", + "Returns TRUE if the mode is for use with block algorithms" + ], + "mcrypt_enc_is_block_mode": [ + "bool mcrypt_enc_is_block_mode(resource td)", + "Returns TRUE if the mode outputs blocks" + ], + "mcrypt_enc_self_test": [ + "int mcrypt_enc_self_test(resource td)", + "This function runs the self test on the algorithm specified by the descriptor td" + ], + "mcrypt_encrypt": [ + "string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_generic": [ + "string mcrypt_generic(resource td, string data)", + "This function encrypts the plaintext" + ], + "mcrypt_generic_deinit": [ + "bool mcrypt_generic_deinit(resource td)", + "This function terminates encrypt specified by the descriptor td" + ], + "mcrypt_generic_init": [ + "int mcrypt_generic_init(resource td, string key, string iv)", + "This function initializes all buffers for the specific module" + ], + "mcrypt_get_block_size": [ + "int mcrypt_get_block_size(string cipher, string module)", + "Get the key size of cipher" + ], + "mcrypt_get_cipher_name": [ + "string mcrypt_get_cipher_name(string cipher)", + "Get the key size of cipher" + ], + "mcrypt_get_iv_size": [ + "int mcrypt_get_iv_size(string cipher, string module)", + "Get the IV size of cipher (Usually the same as the blocksize)" + ], + "mcrypt_get_key_size": [ + "int mcrypt_get_key_size(string cipher, string module)", + "Get the key size of cipher" + ], + "mcrypt_list_algorithms": [ + "array mcrypt_list_algorithms([string lib_dir])", + "List all algorithms in \"module_dir\"" + ], + "mcrypt_list_modes": [ + "array mcrypt_list_modes([string lib_dir])", + "List all modes \"module_dir\"" + ], + "mcrypt_module_close": [ + "bool mcrypt_module_close(resource td)", + "Free the descriptor td" + ], + "mcrypt_module_get_algo_block_size": [ + "int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])", + "Returns the block size of the algorithm" + ], + "mcrypt_module_get_algo_key_size": [ + "int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])", + "Returns the maximum supported key size of the algorithm" + ], + "mcrypt_module_get_supported_key_sizes": [ + "array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])", + "This function decrypts the crypttext" + ], + "mcrypt_module_is_block_algorithm": [ + "bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])", + "Returns TRUE if the algorithm is a block algorithm" + ], + "mcrypt_module_is_block_algorithm_mode": [ + "bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])", + "Returns TRUE if the mode is for use with block algorithms" + ], + "mcrypt_module_is_block_mode": [ + "bool mcrypt_module_is_block_mode(string mode [, string lib_dir])", + "Returns TRUE if the mode outputs blocks of bytes" + ], + "mcrypt_module_open": [ + "resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)", + "Opens the module of the algorithm and the mode to be used" + ], + "mcrypt_module_self_test": [ + "bool mcrypt_module_self_test(string algorithm [, string lib_dir])", + "Does a self test of the module \"module\"" + ], + "mcrypt_ofb": [ + "string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "md5": [ + "string md5(string str, [ bool raw_output])", + "Calculate the md5 hash of a string" + ], + "md5_file": [ + "string md5_file(string filename [, bool raw_output])", + "Calculate the md5 hash of given filename" + ], + "mdecrypt_generic": [ + "string mdecrypt_generic(resource td, string data)", + "This function decrypts the plaintext" + ], + "memory_get_peak_usage": [ + "int memory_get_peak_usage([real_usage])", + "Returns the peak allocated by PHP memory" + ], + "memory_get_usage": [ + "int memory_get_usage([real_usage])", + "Returns the allocated by PHP memory" + ], + "metaphone": [ + "string metaphone(string text[, int phones])", + "Break english phrases down into their phonemes" + ], + "method_exists": [ + "bool method_exists(object object, string method)", + "Checks if the class method exists" + ], + "mhash": [ + "string mhash(int hash, string data [, string key])", + "Hash data with hash" + ], + "mhash_count": [ + "int mhash_count(void)", + "Gets the number of available hashes" + ], + "mhash_get_block_size": [ + "int mhash_get_block_size(int hash)", + "Gets the block size of hash" + ], + "mhash_get_hash_name": [ + "string mhash_get_hash_name(int hash)", + "Gets the name of hash" + ], + "mhash_keygen_s2k": [ + "string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)", + "Generates a key using hash functions" + ], + "microtime": [ + "mixed microtime([bool get_as_float])", + "Returns either a string or a float containing the current time in seconds and microseconds" + ], + "mime_content_type": [ + "string mime_content_type(string filename|resource stream)", + "Return content-type for file" + ], + "min": [ + "mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])", + "Return the lowest value in an array or a series of arguments" + ], + "mkdir": [ + "bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])", + "Create a directory" + ], + "mktime": [ + "int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", + "Get UNIX timestamp for a date" + ], + "money_format": [ + "string money_format(string format , float value)", + "Convert monetary value(s) to string" + ], + "move_uploaded_file": [ + "bool move_uploaded_file(string path, string new_path)", + "Move a file if and only if it was created by an upload" + ], + "msg_get_queue": [ + "resource msg_get_queue(int key [, int perms])", + "Attach to a message queue" + ], + "msg_queue_exists": [ + "bool msg_queue_exists(int key)", + "Check whether a message queue exists" + ], + "msg_receive": [ + "mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", + "Send a message of type msgtype (must be > 0) to a message queue" + ], + "msg_remove_queue": [ + "bool msg_remove_queue(resource queue)", + "Destroy the queue" + ], + "msg_send": [ + "bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])", + "Send a message of type msgtype (must be > 0) to a message queue" + ], + "msg_set_queue": [ + "bool msg_set_queue(resource queue, array data)", + "Set information for a message queue" + ], + "msg_stat_queue": [ + "array msg_stat_queue(resource queue)", + "Returns information about a message queue" + ], + "msgfmt_create": [ + "MessageFormatter msgfmt_create( string $locale, string $pattern )", + "* Create formatter." + ], + "msgfmt_format": [ + "mixed msgfmt_format( MessageFormatter $nf, array $args )", + "* Format a message." + ], + "msgfmt_format_message": [ + "mixed msgfmt_format_message( string $locale, string $pattern, array $args )", + "* Format a message." + ], + "msgfmt_get_error_code": [ + "int msgfmt_get_error_code( MessageFormatter $nf )", + "* Get formatter's last error code." + ], + "msgfmt_get_error_message": [ + "string msgfmt_get_error_message( MessageFormatter $coll )", + "* Get text description for formatter's last error code." + ], + "msgfmt_get_locale": [ + "string msgfmt_get_locale(MessageFormatter $mf)", + "* Get formatter locale." + ], + "msgfmt_get_pattern": [ + "string msgfmt_get_pattern( MessageFormatter $mf )", + "* Get formatter pattern." + ], + "msgfmt_parse": [ + "array msgfmt_parse( MessageFormatter $nf, string $source )", + "* Parse a message." + ], + "msgfmt_set_pattern": [ + "bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )", + "* Set formatter pattern." + ], + "mssql_bind": [ + "bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])", + "Adds a parameter to a stored procedure or a remote stored procedure" + ], + "mssql_close": [ + "bool mssql_close([resource conn_id])", + "Closes a connection to a MS-SQL server" + ], + "mssql_connect": [ + "int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])", + "Establishes a connection to a MS-SQL server" + ], + "mssql_data_seek": [ + "bool mssql_data_seek(resource result_id, int offset)", + "Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number" + ], + "mssql_execute": [ + "mixed mssql_execute(resource stmt [, bool skip_results = false])", + "Executes a stored procedure on a MS-SQL server database" + ], + "mssql_fetch_array": [ + "array mssql_fetch_array(resource result_id [, int result_type])", + "Returns an associative array of the current row in the result set specified by result_id" + ], + "mssql_fetch_assoc": [ + "array mssql_fetch_assoc(resource result_id)", + "Returns an associative array of the current row in the result set specified by result_id" + ], + "mssql_fetch_batch": [ + "int mssql_fetch_batch(resource result_index)", + "Returns the next batch of records" + ], + "mssql_fetch_field": [ + "object mssql_fetch_field(resource result_id [, int offset])", + "Gets information about certain fields in a query result" + ], + "mssql_fetch_object": [ + "object mssql_fetch_object(resource result_id)", + "Returns a pseudo-object of the current row in the result set specified by result_id" + ], + "mssql_fetch_row": [ + "array mssql_fetch_row(resource result_id)", + "Returns an array of the current row in the result set specified by result_id" + ], + "mssql_field_length": [ + "int mssql_field_length(resource result_id [, int offset])", + "Get the length of a MS-SQL field" + ], + "mssql_field_name": [ + "string mssql_field_name(resource result_id [, int offset])", + "Returns the name of the field given by offset in the result set given by result_id" + ], + "mssql_field_seek": [ + "bool mssql_field_seek(resource result_id, int offset)", + "Seeks to the specified field offset" + ], + "mssql_field_type": [ + "string mssql_field_type(resource result_id [, int offset])", + "Returns the type of a field" + ], + "mssql_free_result": [ + "bool mssql_free_result(resource result_index)", + "Free a MS-SQL result index" + ], + "mssql_free_statement": [ + "bool mssql_free_statement(resource result_index)", + "Free a MS-SQL statement index" + ], + "mssql_get_last_message": [ + "string mssql_get_last_message(void)", + "Gets the last message from the MS-SQL server" + ], + "mssql_guid_string": [ + "string mssql_guid_string(string binary [,bool short_format])", + "Converts a 16 byte binary GUID to a string" + ], + "mssql_init": [ + "int mssql_init(string sp_name [, resource conn_id])", + "Initializes a stored procedure or a remote stored procedure" + ], + "mssql_min_error_severity": [ + "void mssql_min_error_severity(int severity)", + "Sets the lower error severity" + ], + "mssql_min_message_severity": [ + "void mssql_min_message_severity(int severity)", + "Sets the lower message severity" + ], + "mssql_next_result": [ + "bool mssql_next_result(resource result_id)", + "Move the internal result pointer to the next result" + ], + "mssql_num_fields": [ + "int mssql_num_fields(resource mssql_result_index)", + "Returns the number of fields fetched in from the result id specified" + ], + "mssql_num_rows": [ + "int mssql_num_rows(resource mssql_result_index)", + "Returns the number of rows fetched in from the result id specified" + ], + "mssql_pconnect": [ + "int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])", + "Establishes a persistent connection to a MS-SQL server" + ], + "mssql_query": [ + "resource mssql_query(string query [, resource conn_id [, int batch_size]])", + "Perform an SQL query on a MS-SQL server database" + ], + "mssql_result": [ + "string mssql_result(resource result_id, int row, mixed field)", + "Returns the contents of one cell from a MS-SQL result set" + ], + "mssql_rows_affected": [ + "int mssql_rows_affected(resource conn_id)", + "Returns the number of records affected by the query" + ], + "mssql_select_db": [ + "bool mssql_select_db(string database_name [, resource conn_id])", + "Select a MS-SQL database" + ], + "mt_getrandmax": [ + "int mt_getrandmax(void)", + "Returns the maximum value a random number from Mersenne Twister can have" + ], + "mt_rand": [ + "int mt_rand([int min, int max])", + "Returns a random number from Mersenne Twister" + ], + "mt_srand": [ + "void mt_srand([int seed])", + "Seeds Mersenne Twister random number generator" + ], + "mysql_affected_rows": [ + "int mysql_affected_rows([int link_identifier])", + "Gets number of affected rows in previous MySQL operation" + ], + "mysql_client_encoding": [ + "string mysql_client_encoding([int link_identifier])", + "Returns the default character set for the current connection" + ], + "mysql_close": [ + "bool mysql_close([int link_identifier])", + "Close a MySQL connection" + ], + "mysql_connect": [ + "resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])", + "Opens a connection to a MySQL Server" + ], + "mysql_create_db": [ + "bool mysql_create_db(string database_name [, int link_identifier])", + "Create a MySQL database" + ], + "mysql_data_seek": [ + "bool mysql_data_seek(resource result, int row_number)", + "Move internal result pointer" + ], + "mysql_db_query": [ + "resource mysql_db_query(string database_name, string query [, int link_identifier])", + "Sends an SQL query to MySQL" + ], + "mysql_drop_db": [ + "bool mysql_drop_db(string database_name [, int link_identifier])", + "Drops (delete) a MySQL database" + ], + "mysql_errno": [ + "int mysql_errno([int link_identifier])", + "Returns the number of the error message from previous MySQL operation" + ], + "mysql_error": [ + "string mysql_error([int link_identifier])", + "Returns the text of the error message from previous MySQL operation" + ], + "mysql_escape_string": [ + "string mysql_escape_string(string to_be_escaped)", + "Escape string for mysql query" + ], + "mysql_fetch_array": [ + "array mysql_fetch_array(resource result [, int result_type])", + "Fetch a result row as an array (associative, numeric or both)" + ], + "mysql_fetch_assoc": [ + "array mysql_fetch_assoc(resource result)", + "Fetch a result row as an associative array" + ], + "mysql_fetch_field": [ + "object mysql_fetch_field(resource result [, int field_offset])", + "Gets column information from a result and return as an object" + ], + "mysql_fetch_lengths": [ + "array mysql_fetch_lengths(resource result)", + "Gets max data size of each column in a result" + ], + "mysql_fetch_object": [ + "object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])", + "Fetch a result row as an object" + ], + "mysql_fetch_row": [ + "array mysql_fetch_row(resource result)", + "Gets a result row as an enumerated array" + ], + "mysql_field_flags": [ + "string mysql_field_flags(resource result, int field_offset)", + "Gets the flags associated with the specified field in a result" + ], + "mysql_field_len": [ + "int mysql_field_len(resource result, int field_offset)", + "Returns the length of the specified field" + ], + "mysql_field_name": [ + "string mysql_field_name(resource result, int field_index)", + "Gets the name of the specified field in a result" + ], + "mysql_field_seek": [ + "bool mysql_field_seek(resource result, int field_offset)", + "Sets result pointer to a specific field offset" + ], + "mysql_field_table": [ + "string mysql_field_table(resource result, int field_offset)", + "Gets name of the table the specified field is in" + ], + "mysql_field_type": [ + "string mysql_field_type(resource result, int field_offset)", + "Gets the type of the specified field in a result" + ], + "mysql_free_result": [ + "bool mysql_free_result(resource result)", + "Free result memory" + ], + "mysql_get_client_info": [ + "string mysql_get_client_info(void)", + "Returns a string that represents the client library version" + ], + "mysql_get_host_info": [ + "string mysql_get_host_info([int link_identifier])", + "Returns a string describing the type of connection in use, including the server host name" + ], + "mysql_get_proto_info": [ + "int mysql_get_proto_info([int link_identifier])", + "Returns the protocol version used by current connection" + ], + "mysql_get_server_info": [ + "string mysql_get_server_info([int link_identifier])", + "Returns a string that represents the server version number" + ], + "mysql_info": [ + "string mysql_info([int link_identifier])", + "Returns a string containing information about the most recent query" + ], + "mysql_insert_id": [ + "int mysql_insert_id([int link_identifier])", + "Gets the ID generated from the previous INSERT operation" + ], + "mysql_list_dbs": [ + "resource mysql_list_dbs([int link_identifier])", + "List databases available on a MySQL server" + ], + "mysql_list_fields": [ + "resource mysql_list_fields(string database_name, string table_name [, int link_identifier])", + "List MySQL result fields" + ], + "mysql_list_processes": [ + "resource mysql_list_processes([int link_identifier])", + "Returns a result set describing the current server threads" + ], + "mysql_list_tables": [ + "resource mysql_list_tables(string database_name [, int link_identifier])", + "List tables in a MySQL database" + ], + "mysql_num_fields": [ + "int mysql_num_fields(resource result)", + "Gets number of fields in a result" + ], + "mysql_num_rows": [ + "int mysql_num_rows(resource result)", + "Gets number of rows in a result" + ], + "mysql_pconnect": [ + "resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])", + "Opens a persistent connection to a MySQL Server" + ], + "mysql_ping": [ + "bool mysql_ping([int link_identifier])", + "Ping a server connection. If no connection then reconnect." + ], + "mysql_query": [ + "resource mysql_query(string query [, int link_identifier])", + "Sends an SQL query to MySQL" + ], + "mysql_real_escape_string": [ + "string mysql_real_escape_string(string to_be_escaped [, int link_identifier])", + "Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection" + ], + "mysql_result": [ + "mixed mysql_result(resource result, int row [, mixed field])", + "Gets result data" + ], + "mysql_select_db": [ + "bool mysql_select_db(string database_name [, int link_identifier])", + "Selects a MySQL database" + ], + "mysql_set_charset": [ + "bool mysql_set_charset(string csname [, int link_identifier])", + "sets client character set" + ], + "mysql_stat": [ + "string mysql_stat([int link_identifier])", + "Returns a string containing status information" + ], + "mysql_thread_id": [ + "int mysql_thread_id([int link_identifier])", + "Returns the thread id of current connection" + ], + "mysql_unbuffered_query": [ + "resource mysql_unbuffered_query(string query [, int link_identifier])", + "Sends an SQL query to MySQL, without fetching and buffering the result rows" + ], + "mysqli_affected_rows": [ + "mixed mysqli_affected_rows(object link)", + "Get number of affected rows in previous MySQL operation" + ], + "mysqli_autocommit": [ + "bool mysqli_autocommit(object link, bool mode)", + "Turn auto commit on or of" + ], + "mysqli_cache_stats": [ + "array mysqli_cache_stats(void)", + "Returns statistics about the zval cache" + ], + "mysqli_change_user": [ + "bool mysqli_change_user(object link, string user, string password, string database)", + "Change logged-in user of the active connection" + ], + "mysqli_character_set_name": [ + "string mysqli_character_set_name(object link)", + "Returns the name of the character set used for this connection" + ], + "mysqli_close": [ + "bool mysqli_close(object link)", + "Close connection" + ], + "mysqli_commit": [ + "bool mysqli_commit(object link)", + "Commit outstanding actions and close transaction" + ], + "mysqli_connect": [ + "object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])", + "Open a connection to a mysql server" + ], + "mysqli_connect_errno": [ + "int mysqli_connect_errno(void)", + "Returns the numerical value of the error message from last connect command" + ], + "mysqli_connect_error": [ + "string mysqli_connect_error(void)", + "Returns the text of the error message from previous MySQL operation" + ], + "mysqli_data_seek": [ + "bool mysqli_data_seek(object result, int offset)", + "Move internal result pointer" + ], + "mysqli_debug": [ + "void mysqli_debug(string debug)", + "" + ], + "mysqli_dump_debug_info": [ + "bool mysqli_dump_debug_info(object link)", + "" + ], + "mysqli_embedded_server_end": [ + "void mysqli_embedded_server_end(void)", + "" + ], + "mysqli_embedded_server_start": [ + "bool mysqli_embedded_server_start(bool start, array arguments, array groups)", + "initialize and start embedded server" + ], + "mysqli_errno": [ + "int mysqli_errno(object link)", + "Returns the numerical value of the error message from previous MySQL operation" + ], + "mysqli_error": [ + "string mysqli_error(object link)", + "Returns the text of the error message from previous MySQL operation" + ], + "mysqli_fetch_all": [ + "mixed mysqli_fetch_all (object result [,int resulttype])", + "Fetches all result rows as an associative array, a numeric array, or both" + ], + "mysqli_fetch_array": [ + "mixed mysqli_fetch_array (object result [,int resulttype])", + "Fetch a result row as an associative array, a numeric array, or both" + ], + "mysqli_fetch_assoc": [ + "mixed mysqli_fetch_assoc (object result)", + "Fetch a result row as an associative array" + ], + "mysqli_fetch_field": [ + "mixed mysqli_fetch_field (object result)", + "Get column information from a result and return as an object" + ], + "mysqli_fetch_field_direct": [ + "mixed mysqli_fetch_field_direct (object result, int offset)", + "Fetch meta-data for a single field" + ], + "mysqli_fetch_fields": [ + "mixed mysqli_fetch_fields (object result)", + "Return array of objects containing field meta-data" + ], + "mysqli_fetch_lengths": [ + "mixed mysqli_fetch_lengths (object result)", + "Get the length of each output in a result" + ], + "mysqli_fetch_object": [ + "mixed mysqli_fetch_object (object result [, string class_name [, NULL|array ctor_params]])", + "Fetch a result row as an object" + ], + "mysqli_fetch_row": [ + "array mysqli_fetch_row (object result)", + "Get a result row as an enumerated array" + ], + "mysqli_field_count": [ + "int mysqli_field_count(object link)", + "Fetch the number of fields returned by the last query for the given link" + ], + "mysqli_field_seek": [ + "int mysqli_field_seek(object result, int fieldnr)", + "Set result pointer to a specified field offset" + ], + "mysqli_field_tell": [ + "int mysqli_field_tell(object result)", + "Get current field offset of result pointer" + ], + "mysqli_free_result": [ + "void mysqli_free_result(object result)", + "Free query result memory for the given result handle" + ], + "mysqli_get_charset": [ + "object mysqli_get_charset(object link)", + "returns a character set object" + ], + "mysqli_get_client_info": [ + "string mysqli_get_client_info(void)", + "Get MySQL client info" + ], + "mysqli_get_client_stats": [ + "array mysqli_get_client_stats(void)", + "Returns statistics about the zval cache" + ], + "mysqli_get_client_version": [ + "int mysqli_get_client_version(void)", + "Get MySQL client info" + ], + "mysqli_get_connection_stats": [ + "array mysqli_get_connection_stats(void)", + "Returns statistics about the zval cache" + ], + "mysqli_get_host_info": [ + "string mysqli_get_host_info (object link)", + "Get MySQL host info" + ], + "mysqli_get_proto_info": [ + "int mysqli_get_proto_info(object link)", + "Get MySQL protocol information" + ], + "mysqli_get_server_info": [ + "string mysqli_get_server_info(object link)", + "Get MySQL server info" + ], + "mysqli_get_server_version": [ + "int mysqli_get_server_version(object link)", + "Return the MySQL version for the server referenced by the given link" + ], + "mysqli_get_warnings": [ + "object mysqli_get_warnings(object link) */", + "PHP_FUNCTION(mysqli_get_warnings) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"O\", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, \"mysqli_link\", MYSQLI_STATUS_VALID); if (mysql_warning_count(mysql->mysql)) { w = php_get_warnings(mysql->mysql TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}" + ], + "mysqli_info": [ + "string mysqli_info(object link)", + "Get information about the most recent query" + ], + "mysqli_init": [ + "resource mysqli_init(void)", + "Initialize mysqli and return a resource for use with mysql_real_connect" + ], + "mysqli_insert_id": [ + "mixed mysqli_insert_id(object link)", + "Get the ID generated from the previous INSERT operation" + ], + "mysqli_kill": [ + "bool mysqli_kill(object link, int processid)", + "Kill a mysql process on the server" + ], + "mysqli_link_construct": [ + "object mysqli_link_construct()", + "" + ], + "mysqli_more_results": [ + "bool mysqli_more_results(object link)", + "check if there any more query results from a multi query" + ], + "mysqli_multi_query": [ + "bool mysqli_multi_query(object link, string query)", + "allows to execute multiple queries" + ], + "mysqli_next_result": [ + "bool mysqli_next_result(object link)", + "read next result from multi_query" + ], + "mysqli_num_fields": [ + "int mysqli_num_fields(object result)", + "Get number of fields in result" + ], + "mysqli_num_rows": [ + "mixed mysqli_num_rows(object result)", + "Get number of rows in result" + ], + "mysqli_options": [ + "bool mysqli_options(object link, int flags, mixed values)", + "Set options" + ], + "mysqli_ping": [ + "bool mysqli_ping(object link)", + "Ping a server connection or reconnect if there is no connection" + ], + "mysqli_poll": [ + "int mysqli_poll(array read, array write, array error, long sec [, long usec])", + "Poll connections" + ], + "mysqli_prepare": [ + "mixed mysqli_prepare(object link, string query)", + "Prepare a SQL statement for execution" + ], + "mysqli_query": [ + "mixed mysqli_query(object link, string query [,int resultmode]) */", + "PHP_FUNCTION(mysqli_query) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQL_RES *result; char *query = NULL; unsigned int query_len; unsigned long resultmode = MYSQLI_STORE_RESULT; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"Os|l\", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) { return; } if (!query_len) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Empty query\"); RETURN_FALSE; } if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~MYSQLI_ASYNC) != MYSQLI_STORE_RESULT) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Invalid value for resultmode\"); RETURN_FALSE; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, \"mysqli_link\", MYSQLI_STATUS_VALID); MYSQLI_DISABLE_MQ; #ifdef MYSQLI_USE_MYSQLND if (resultmode & MYSQLI_ASYNC) { if (mysqli_async_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } mysql->async_result_fetch_type = resultmode & ~MYSQLI_ASYNC; RETURN_TRUE; } #endif if (mysql_real_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } if (!mysql_field_count(mysql->mysql)) { /* no result set - not a SELECT" + ], + "mysqli_real_connect": [ + "bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", + "Open a connection to a mysql server" + ], + "mysqli_real_escape_string": [ + "string mysqli_real_escape_string(object link, string escapestr)", + "Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection" + ], + "mysqli_real_query": [ + "bool mysqli_real_query(object link, string query)", + "Binary-safe version of mysql_query()" + ], + "mysqli_reap_async_query": [ + "int mysqli_reap_async_query(object link)", + "Poll connections" + ], + "mysqli_refresh": [ + "bool mysqli_refresh(object link, long options)", + "Flush tables or caches, or reset replication server information" + ], + "mysqli_report": [ + "bool mysqli_report(int flags)", + "sets report level" + ], + "mysqli_rollback": [ + "bool mysqli_rollback(object link)", + "Undo actions from current transaction" + ], + "mysqli_select_db": [ + "bool mysqli_select_db(object link, string dbname)", + "Select a MySQL database" + ], + "mysqli_set_charset": [ + "bool mysqli_set_charset(object link, string csname)", + "sets client character set" + ], + "mysqli_set_local_infile_default": [ + "void mysqli_set_local_infile_default(object link)", + "unsets user defined handler for load local infile command" + ], + "mysqli_set_local_infile_handler": [ + "bool mysqli_set_local_infile_handler(object link, callback read_func)", + "Set callback functions for LOAD DATA LOCAL INFILE" + ], + "mysqli_sqlstate": [ + "string mysqli_sqlstate(object link)", + "Returns the SQLSTATE error from previous MySQL operation" + ], + "mysqli_ssl_set": [ + "bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])", + "" + ], + "mysqli_stat": [ + "mixed mysqli_stat(object link)", + "Get current system status" + ], + "mysqli_stmt_affected_rows": [ + "mixed mysqli_stmt_affected_rows(object stmt)", + "Return the number of rows affected in the last query for the given link" + ], + "mysqli_stmt_attr_get": [ + "int mysqli_stmt_attr_get(object stmt, long attr)", + "" + ], + "mysqli_stmt_attr_set": [ + "int mysqli_stmt_attr_set(object stmt, long attr, long mode)", + "" + ], + "mysqli_stmt_bind_param": [ + "bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])", + "Bind variables to a prepared statement as parameters" + ], + "mysqli_stmt_bind_result": [ + "bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])", + "Bind variables to a prepared statement for result storage" + ], + "mysqli_stmt_close": [ + "bool mysqli_stmt_close(object stmt)", + "Close statement" + ], + "mysqli_stmt_data_seek": [ + "void mysqli_stmt_data_seek(object stmt, int offset)", + "Move internal result pointer" + ], + "mysqli_stmt_errno": [ + "int mysqli_stmt_errno(object stmt)", + "" + ], + "mysqli_stmt_error": [ + "string mysqli_stmt_error(object stmt)", + "" + ], + "mysqli_stmt_execute": [ + "bool mysqli_stmt_execute(object stmt)", + "Execute a prepared statement" + ], + "mysqli_stmt_fetch": [ + "mixed mysqli_stmt_fetch(object stmt)", + "Fetch results from a prepared statement into the bound variables" + ], + "mysqli_stmt_field_count": [ + "int mysqli_stmt_field_count(object stmt) {", + "Return the number of result columns for the given statement" + ], + "mysqli_stmt_free_result": [ + "void mysqli_stmt_free_result(object stmt)", + "Free stored result memory for the given statement handle" + ], + "mysqli_stmt_get_result": [ + "object mysqli_stmt_get_result(object link)", + "Buffer result set on client" + ], + "mysqli_stmt_get_warnings": [ + "object mysqli_stmt_get_warnings(object link) */", + "PHP_FUNCTION(mysqli_stmt_get_warnings) { MY_STMT *stmt; zval *stmt_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"O\", &stmt_link, mysqli_stmt_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, \"mysqli_stmt\", MYSQLI_STATUS_VALID); if (mysqli_stmt_warning_count(stmt->stmt)) { w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}" + ], + "mysqli_stmt_init": [ + "mixed mysqli_stmt_init(object link)", + "Initialize statement object" + ], + "mysqli_stmt_insert_id": [ + "mixed mysqli_stmt_insert_id(object stmt)", + "Get the ID generated from the previous INSERT operation" + ], + "mysqli_stmt_next_result": [ + "bool mysqli_stmt_next_result(object link)", + "read next result from multi_query" + ], + "mysqli_stmt_num_rows": [ + "mixed mysqli_stmt_num_rows(object stmt)", + "Return the number of rows in statements result set" + ], + "mysqli_stmt_param_count": [ + "int mysqli_stmt_param_count(object stmt)", + "Return the number of parameter for the given statement" + ], + "mysqli_stmt_prepare": [ + "bool mysqli_stmt_prepare(object stmt, string query)", + "prepare server side statement with query" + ], + "mysqli_stmt_reset": [ + "bool mysqli_stmt_reset(object stmt)", + "reset a prepared statement" + ], + "mysqli_stmt_result_metadata": [ + "mixed mysqli_stmt_result_metadata(object stmt)", + "return result set from statement" + ], + "mysqli_stmt_send_long_data": [ + "bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)", + "" + ], + "mysqli_stmt_sqlstate": [ + "string mysqli_stmt_sqlstate(object stmt)", + "" + ], + "mysqli_stmt_store_result": [ + "bool mysqli_stmt_store_result(stmt)", + "" + ], + "mysqli_store_result": [ + "object mysqli_store_result(object link)", + "Buffer result set on client" + ], + "mysqli_thread_id": [ + "int mysqli_thread_id(object link)", + "Return the current thread ID" + ], + "mysqli_thread_safe": [ + "bool mysqli_thread_safe(void)", + "Return whether thread safety is given or not" + ], + "mysqli_use_result": [ + "mixed mysqli_use_result(object link)", + "Directly retrieve query results - do not buffer results on client side" + ], + "mysqli_warning_count": [ + "int mysqli_warning_count (object link)", + "Return number of warnings from the last query for the given link" + ], + "natcasesort": [ + "void natcasesort(array &array_arg)", + "Sort an array using case-insensitive natural sort" + ], + "natsort": [ + "void natsort(array &array_arg)", + "Sort an array using natural sort" + ], + "next": [ + "mixed next(array array_arg)", + "Move array argument's internal pointer to the next element and return it" + ], + "ngettext": [ + "string ngettext(string MSGID1, string MSGID2, int N)", + "Plural version of gettext()" + ], + "nl2br": [ + "string nl2br(string str [, bool is_xhtml])", + "Converts newlines to HTML line breaks" + ], + "nl_langinfo": [ + "string nl_langinfo(int item)", + "Query language and locale information" + ], + "normalizer_is_normalize": [ + "bool normalizer_is_normalize( string $input [, string $form = FORM_C] )", + "* Test if a string is in a given normalization form." + ], + "normalizer_normalize": [ + "string normalizer_normalize( string $input [, string $form = FORM_C] )", + "* Normalize a string." + ], + "nsapi_request_headers": [ + "array nsapi_request_headers(void)", + "Get all headers from the request" + ], + "nsapi_response_headers": [ + "array nsapi_response_headers(void)", + "Get all headers from the response" + ], + "nsapi_virtual": [ + "bool nsapi_virtual(string uri)", + "Perform an NSAPI sub-request" + ], + "number_format": [ + "string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])", + "Formats a number with grouped thousands" + ], + "numfmt_create": [ + "NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )", + "* Create number formatter." + ], + "numfmt_format": [ + "mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )", + "* Format a number." + ], + "numfmt_format_currency": [ + "mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )", + "* Format a number as currency." + ], + "numfmt_get_attribute": [ + "mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )", + "* Get formatter attribute value." + ], + "numfmt_get_error_code": [ + "int numfmt_get_error_code( NumberFormatter $nf )", + "* Get formatter's last error code." + ], + "numfmt_get_error_message": [ + "string numfmt_get_error_message( NumberFormatter $nf )", + "* Get text description for formatter's last error code." + ], + "numfmt_get_locale": [ + "string numfmt_get_locale( NumberFormatter $nf[, int type] )", + "* Get formatter locale." + ], + "numfmt_get_pattern": [ + "string numfmt_get_pattern( NumberFormatter $nf )", + "* Get formatter pattern." + ], + "numfmt_get_symbol": [ + "string numfmt_get_symbol( NumberFormatter $nf, int $attr )", + "* Get formatter symbol value." + ], + "numfmt_get_text_attribute": [ + "string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )", + "* Get formatter attribute value." + ], + "numfmt_parse": [ + "mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])", + "* Parse a number." + ], + "numfmt_parse_currency": [ + "double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )", + "* Parse a number as currency." + ], + "numfmt_parse_message": [ + "array numfmt_parse_message( string $locale, string $pattern, string $source )", + "* Parse a message." + ], + "numfmt_set_attribute": [ + "bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )", + "* Get formatter attribute value." + ], + "numfmt_set_pattern": [ + "bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )", + "* Set formatter pattern." + ], + "numfmt_set_symbol": [ + "bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )", + "* Set formatter symbol value." + ], + "numfmt_set_text_attribute": [ + "bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )", + "* Get formatter attribute value." + ], + "ob_clean": [ + "bool ob_clean(void)", + "Clean (delete) the current output buffer" + ], + "ob_end_clean": [ + "bool ob_end_clean(void)", + "Clean the output buffer, and delete current output buffer" + ], + "ob_end_flush": [ + "bool ob_end_flush(void)", + "Flush (send) the output buffer, and delete current output buffer" + ], + "ob_flush": [ + "bool ob_flush(void)", + "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer" + ], + "ob_get_clean": [ + "bool ob_get_clean(void)", + "Get current buffer contents and delete current output buffer" + ], + "ob_get_contents": [ + "string ob_get_contents(void)", + "Return the contents of the output buffer" + ], + "ob_get_flush": [ + "bool ob_get_flush(void)", + "Get current buffer contents, flush (send) the output buffer, and delete current output buffer" + ], + "ob_get_length": [ + "int ob_get_length(void)", + "Return the length of the output buffer" + ], + "ob_get_level": [ + "int ob_get_level(void)", + "Return the nesting level of the output buffer" + ], + "ob_get_status": [ + "false|array ob_get_status([bool full_status])", + "Return the status of the active or all output buffers" + ], + "ob_gzhandler": [ + "string ob_gzhandler(string str, int mode)", + "Encode str based on accept-encoding setting - designed to be called from ob_start()" + ], + "ob_iconv_handler": [ + "string ob_iconv_handler(string contents, int status)", + "Returns str in output buffer converted to the iconv.output_encoding character set" + ], + "ob_implicit_flush": [ + "void ob_implicit_flush([int flag])", + "Turn implicit flush on/off and is equivalent to calling flush() after every output call" + ], + "ob_list_handlers": [ + "false|array ob_list_handlers()", + "* List all output_buffers in an array" + ], + "ob_start": [ + "bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])", + "Turn on Output Buffering (specifying an optional output handler)." + ], + "oci_bind_array_by_name": [ + "bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])", + "Bind a PHP array to an Oracle PL/SQL type by name" + ], + "oci_bind_by_name": [ + "bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])", + "Bind a PHP variable to an Oracle placeholder by name" + ], + "oci_cancel": [ + "bool oci_cancel(resource stmt)", + "Cancel reading from a cursor" + ], + "oci_close": [ + "bool oci_close(resource connection)", + "Disconnect from database" + ], + "oci_collection_append": [ + "bool oci_collection_append(string value)", + "Append an object to the collection" + ], + "oci_collection_assign": [ + "bool oci_collection_assign(object from)", + "Assign a collection from another existing collection" + ], + "oci_collection_element_assign": [ + "bool oci_collection_element_assign(int index, string val)", + "Assign element val to collection at index ndx" + ], + "oci_collection_element_get": [ + "string oci_collection_element_get(int ndx)", + "Retrieve the value at collection index ndx" + ], + "oci_collection_max": [ + "int oci_collection_max()", + "Return the max value of a collection. For a varray this is the maximum length of the array" + ], + "oci_collection_size": [ + "int oci_collection_size()", + "Return the size of a collection" + ], + "oci_collection_trim": [ + "bool oci_collection_trim(int num)", + "Trim num elements from the end of a collection" + ], + "oci_commit": [ + "bool oci_commit(resource connection)", + "Commit the current context" + ], + "oci_connect": [ + "resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])", + "Connect to an Oracle database and log on. Returns a new session." + ], + "oci_define_by_name": [ + "bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])", + "Define a PHP variable to an Oracle column by name" + ], + "oci_error": [ + "array oci_error([resource stmt|connection|global])", + "Return the last error of stmt|connection|global. If no error happened returns false." + ], + "oci_execute": [ + "bool oci_execute(resource stmt [, int mode])", + "Execute a parsed statement" + ], + "oci_fetch": [ + "bool oci_fetch(resource stmt)", + "Prepare a new row of data for reading" + ], + "oci_fetch_all": [ + "int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])", + "Fetch all rows of result data into an array" + ], + "oci_fetch_array": [ + "array oci_fetch_array( resource stmt [, int mode ])", + "Fetch a result row as an array" + ], + "oci_fetch_assoc": [ + "array oci_fetch_assoc( resource stmt )", + "Fetch a result row as an associative array" + ], + "oci_fetch_object": [ + "object oci_fetch_object( resource stmt )", + "Fetch a result row as an object" + ], + "oci_fetch_row": [ + "array oci_fetch_row( resource stmt )", + "Fetch a result row as an enumerated array" + ], + "oci_field_is_null": [ + "bool oci_field_is_null(resource stmt, int col)", + "Tell whether a column is NULL" + ], + "oci_field_name": [ + "string oci_field_name(resource stmt, int col)", + "Tell the name of a column" + ], + "oci_field_precision": [ + "int oci_field_precision(resource stmt, int col)", + "Tell the precision of a column" + ], + "oci_field_scale": [ + "int oci_field_scale(resource stmt, int col)", + "Tell the scale of a column" + ], + "oci_field_size": [ + "int oci_field_size(resource stmt, int col)", + "Tell the maximum data size of a column" + ], + "oci_field_type": [ + "mixed oci_field_type(resource stmt, int col)", + "Tell the data type of a column" + ], + "oci_field_type_raw": [ + "int oci_field_type_raw(resource stmt, int col)", + "Tell the raw oracle data type of a column" + ], + "oci_free_collection": [ + "bool oci_free_collection()", + "Deletes collection object" + ], + "oci_free_descriptor": [ + "bool oci_free_descriptor()", + "Deletes large object description" + ], + "oci_free_statement": [ + "bool oci_free_statement(resource stmt)", + "Free all resources associated with a statement" + ], + "oci_internal_debug": [ + "void oci_internal_debug(int onoff)", + "Toggle internal debugging output for the OCI extension" + ], + "oci_lob_append": [ + "bool oci_lob_append( object lob )", + "Appends data from a LOB to another LOB" + ], + "oci_lob_close": [ + "bool oci_lob_close()", + "Closes lob descriptor" + ], + "oci_lob_copy": [ + "bool oci_lob_copy( object lob_to, object lob_from [, int length ] )", + "Copies data from a LOB to another LOB" + ], + "oci_lob_eof": [ + "bool oci_lob_eof()", + "Checks if EOF is reached" + ], + "oci_lob_erase": [ + "int oci_lob_erase( [ int offset [, int length ] ] )", + "Erases a specified portion of the internal LOB, starting at a specified offset" + ], + "oci_lob_export": [ + "bool oci_lob_export([string filename [, int start [, int length]]])", + "Writes a large object into a file" + ], + "oci_lob_flush": [ + "bool oci_lob_flush( [ int flag ] )", + "Flushes the LOB buffer" + ], + "oci_lob_import": [ + "bool oci_lob_import( string filename )", + "Loads file into a LOB" + ], + "oci_lob_is_equal": [ + "bool oci_lob_is_equal( object lob1, object lob2 )", + "Tests to see if two LOB/FILE locators are equal" + ], + "oci_lob_load": [ + "string oci_lob_load()", + "Loads a large object" + ], + "oci_lob_read": [ + "string oci_lob_read( int length )", + "Reads particular part of a large object" + ], + "oci_lob_rewind": [ + "bool oci_lob_rewind()", + "Rewind pointer of a LOB" + ], + "oci_lob_save": [ + "bool oci_lob_save( string data [, int offset ])", + "Saves a large object" + ], + "oci_lob_seek": [ + "bool oci_lob_seek( int offset [, int whence ])", + "Moves the pointer of a LOB" + ], + "oci_lob_size": [ + "int oci_lob_size()", + "Returns size of a large object" + ], + "oci_lob_tell": [ + "int oci_lob_tell()", + "Tells LOB pointer position" + ], + "oci_lob_truncate": [ + "bool oci_lob_truncate( [ int length ])", + "Truncates a LOB" + ], + "oci_lob_write": [ + "int oci_lob_write( string string [, int length ])", + "Writes data to current position of a LOB" + ], + "oci_lob_write_temporary": [ + "bool oci_lob_write_temporary(string var [, int lob_type])", + "Writes temporary blob" + ], + "oci_new_collection": [ + "object oci_new_collection(resource connection, string tdo [, string schema])", + "Initialize a new collection" + ], + "oci_new_connect": [ + "resource oci_new_connect(string user, string pass [, string db])", + "Connect to an Oracle database and log on. Returns a new session." + ], + "oci_new_cursor": [ + "resource oci_new_cursor(resource connection)", + "Return a new cursor (Statement-Handle) - use this to bind ref-cursors!" + ], + "oci_new_descriptor": [ + "object oci_new_descriptor(resource connection [, int type])", + "Initialize a new empty descriptor LOB/FILE (LOB is default)" + ], + "oci_num_fields": [ + "int oci_num_fields(resource stmt)", + "Return the number of result columns in a statement" + ], + "oci_num_rows": [ + "int oci_num_rows(resource stmt)", + "Return the row count of an OCI statement" + ], + "oci_parse": [ + "resource oci_parse(resource connection, string query)", + "Parse a query and return a statement" + ], + "oci_password_change": [ + "bool oci_password_change(resource connection, string username, string old_password, string new_password)", + "Changes the password of an account" + ], + "oci_pconnect": [ + "resource oci_pconnect(string user, string pass [, string db [, string charset ]])", + "Connect to an Oracle database using a persistent connection and log on. Returns a new session." + ], + "oci_result": [ + "string oci_result(resource stmt, mixed column)", + "Return a single column of result data" + ], + "oci_rollback": [ + "bool oci_rollback(resource connection)", + "Rollback the current context" + ], + "oci_server_version": [ + "string oci_server_version(resource connection)", + "Return a string containing server version information" + ], + "oci_set_action": [ + "bool oci_set_action(resource connection, string value)", + "Sets the action attribute on the connection" + ], + "oci_set_client_identifier": [ + "bool oci_set_client_identifier(resource connection, string value)", + "Sets the client identifier attribute on the connection" + ], + "oci_set_client_info": [ + "bool oci_set_client_info(resource connection, string value)", + "Sets the client info attribute on the connection" + ], + "oci_set_edition": [ + "bool oci_set_edition(string value)", + "Sets the edition attribute for all subsequent connections created" + ], + "oci_set_module_name": [ + "bool oci_set_module_name(resource connection, string value)", + "Sets the module attribute on the connection" + ], + "oci_set_prefetch": [ + "bool oci_set_prefetch(resource stmt, int prefetch_rows)", + "Sets the number of rows to be prefetched on execute to prefetch_rows for stmt" + ], + "oci_statement_type": [ + "string oci_statement_type(resource stmt)", + "Return the query type of an OCI statement" + ], + "ocifetchinto": [ + "int ocifetchinto(resource stmt, array &output [, int mode])", + "Fetch a row of result data into an array" + ], + "ocigetbufferinglob": [ + "bool ocigetbufferinglob()", + "Returns current state of buffering for a LOB" + ], + "ocisetbufferinglob": [ + "bool ocisetbufferinglob( boolean flag )", + "Enables/disables buffering for a LOB" + ], + "octdec": [ + "int octdec(string octal_number)", + "Returns the decimal equivalent of an octal string" + ], + "odbc_autocommit": [ + "mixed odbc_autocommit(resource connection_id [, int OnOff])", + "Toggle autocommit mode or get status" + ], + "odbc_binmode": [ + "bool odbc_binmode(int result_id, int mode)", + "Handle binary column data" + ], + "odbc_close": [ + "void odbc_close(resource connection_id)", + "Close an ODBC connection" + ], + "odbc_close_all": [ + "void odbc_close_all(void)", + "Close all ODBC connections" + ], + "odbc_columnprivileges": [ + "resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)", + "Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table" + ], + "odbc_columns": [ + "resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])", + "Returns a result identifier that can be used to fetch a list of column names in specified tables" + ], + "odbc_commit": [ + "bool odbc_commit(resource connection_id)", + "Commit an ODBC transaction" + ], + "odbc_connect": [ + "resource odbc_connect(string DSN, string user, string password [, int cursor_option])", + "Connect to a datasource" + ], + "odbc_cursor": [ + "string odbc_cursor(resource result_id)", + "Get cursor name" + ], + "odbc_data_source": [ + "array odbc_data_source(resource connection_id, int fetch_type)", + "Return information about the currently connected data source" + ], + "odbc_error": [ + "string odbc_error([resource connection_id])", + "Get the last error code" + ], + "odbc_errormsg": [ + "string odbc_errormsg([resource connection_id])", + "Get the last error message" + ], + "odbc_exec": [ + "resource odbc_exec(resource connection_id, string query [, int flags])", + "Prepare and execute an SQL statement" + ], + "odbc_execute": [ + "bool odbc_execute(resource result_id [, array parameters_array])", + "Execute a prepared statement" + ], + "odbc_fetch_array": [ + "array odbc_fetch_array(int result [, int rownumber])", + "Fetch a result row as an associative array" + ], + "odbc_fetch_into": [ + "int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])", + "Fetch one result row into an array" + ], + "odbc_fetch_object": [ + "object odbc_fetch_object(int result [, int rownumber])", + "Fetch a result row as an object" + ], + "odbc_fetch_row": [ + "bool odbc_fetch_row(resource result_id [, int row_number])", + "Fetch a row" + ], + "odbc_field_len": [ + "int odbc_field_len(resource result_id, int field_number)", + "Get the length (precision) of a column" + ], + "odbc_field_name": [ + "string odbc_field_name(resource result_id, int field_number)", + "Get a column name" + ], + "odbc_field_num": [ + "int odbc_field_num(resource result_id, string field_name)", + "Return column number" + ], + "odbc_field_scale": [ + "int odbc_field_scale(resource result_id, int field_number)", + "Get the scale of a column" + ], + "odbc_field_type": [ + "string odbc_field_type(resource result_id, int field_number)", + "Get the datatype of a column" + ], + "odbc_foreignkeys": [ + "resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)", + "Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table" + ], + "odbc_free_result": [ + "bool odbc_free_result(resource result_id)", + "Free resources associated with a result" + ], + "odbc_gettypeinfo": [ + "resource odbc_gettypeinfo(resource connection_id [, int data_type])", + "Returns a result identifier containing information about data types supported by the data source" + ], + "odbc_longreadlen": [ + "bool odbc_longreadlen(int result_id, int length)", + "Handle LONG columns" + ], + "odbc_next_result": [ + "bool odbc_next_result(resource result_id)", + "Checks if multiple results are avaiable" + ], + "odbc_num_fields": [ + "int odbc_num_fields(resource result_id)", + "Get number of columns in a result" + ], + "odbc_num_rows": [ + "int odbc_num_rows(resource result_id)", + "Get number of rows in a result" + ], + "odbc_pconnect": [ + "resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])", + "Establish a persistent connection to a datasource" + ], + "odbc_prepare": [ + "resource odbc_prepare(resource connection_id, string query)", + "Prepares a statement for execution" + ], + "odbc_primarykeys": [ + "resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)", + "Returns a result identifier listing the column names that comprise the primary key for a table" + ], + "odbc_procedurecolumns": [ + "resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])", + "Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures" + ], + "odbc_procedures": [ + "resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])", + "Returns a result identifier containg the list of procedure names in a datasource" + ], + "odbc_result": [ + "mixed odbc_result(resource result_id, mixed field)", + "Get result data" + ], + "odbc_result_all": [ + "int odbc_result_all(resource result_id [, string format])", + "Print result as HTML table" + ], + "odbc_rollback": [ + "bool odbc_rollback(resource connection_id)", + "Rollback a transaction" + ], + "odbc_setoption": [ + "bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)", + "Sets connection or statement options" + ], + "odbc_specialcolumns": [ + "resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)", + "Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction" + ], + "odbc_statistics": [ + "resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)", + "Returns a result identifier that contains statistics about a single table and the indexes associated with the table" + ], + "odbc_tableprivileges": [ + "resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)", + "Returns a result identifier containing a list of tables and the privileges associated with each table" + ], + "odbc_tables": [ + "resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])", + "Call the SQLTables function" + ], + "opendir": [ + "mixed opendir(string path[, resource context])", + "Open a directory and return a dir_handle" + ], + "openlog": [ + "bool openlog(string ident, int option, int facility)", + "Open connection to system logger" + ], + "openssl_csr_export": [ + "bool openssl_csr_export(resource csr, string &out [, bool notext=true])", + "Exports a CSR to file or a var" + ], + "openssl_csr_export_to_file": [ + "bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])", + "Exports a CSR to file" + ], + "openssl_csr_get_public_key": [ + "mixed openssl_csr_get_public_key(mixed csr)", + "Returns the subject of a CERT or FALSE on error" + ], + "openssl_csr_get_subject": [ + "mixed openssl_csr_get_subject(mixed csr)", + "Returns the subject of a CERT or FALSE on error" + ], + "openssl_csr_new": [ + "bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])", + "Generates a privkey and CSR" + ], + "openssl_csr_sign": [ + "resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])", + "Signs a cert with another CERT" + ], + "openssl_decrypt": [ + "string openssl_decrypt(string data, string method, string password [, bool raw_input=false])", + "Takes raw or base64 encoded string and dectupt it using given method and key" + ], + "openssl_dh_compute_key": [ + "string openssl_dh_compute_key(string pub_key, resource dh_key)", + "Computes shared sicret for public value of remote DH key and local DH key" + ], + "openssl_digest": [ + "string openssl_digest(string data, string method [, bool raw_output=false])", + "Computes digest hash value for given data using given method, returns raw or binhex encoded string" + ], + "openssl_encrypt": [ + "string openssl_encrypt(string data, string method, string password [, bool raw_output=false])", + "Encrypts given data with given method and key, returns raw or base64 encoded string" + ], + "openssl_error_string": [ + "mixed openssl_error_string(void)", + "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages" + ], + "openssl_get_cipher_methods": [ + "array openssl_get_cipher_methods([bool aliases = false])", + "Return array of available cipher methods" + ], + "openssl_get_md_methods": [ + "array openssl_get_md_methods([bool aliases = false])", + "Return array of available digest methods" + ], + "openssl_open": [ + "bool openssl_open(string data, &string opendata, string ekey, mixed privkey)", + "Opens data" + ], + "openssl_pkcs12_export": [ + "bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])", + "Creates and exports a PKCS12 to a var" + ], + "openssl_pkcs12_export_to_file": [ + "bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])", + "Creates and exports a PKCS to file" + ], + "openssl_pkcs12_read": [ + "bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)", + "Parses a PKCS12 to an array" + ], + "openssl_pkcs7_decrypt": [ + "bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])", + "Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key" + ], + "openssl_pkcs7_encrypt": [ + "bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])", + "Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile" + ], + "openssl_pkcs7_sign": [ + "bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])", + "Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum" + ], + "openssl_pkcs7_verify": [ + "bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])", + "Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers" + ], + "openssl_pkey_export": [ + "bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])", + "Gets an exportable representation of a key into a string or file" + ], + "openssl_pkey_export_to_file": [ + "bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)", + "Gets an exportable representation of a key into a file" + ], + "openssl_pkey_free": [ + "void openssl_pkey_free(int key)", + "Frees a key" + ], + "openssl_pkey_get_details": [ + "resource openssl_pkey_get_details(resource key)", + "returns an array with the key details (bits, pkey, type)" + ], + "openssl_pkey_get_private": [ + "int openssl_pkey_get_private(string key [, string passphrase])", + "Gets private keys" + ], + "openssl_pkey_get_public": [ + "int openssl_pkey_get_public(mixed cert)", + "Gets public key from X.509 certificate" + ], + "openssl_pkey_new": [ + "resource openssl_pkey_new([array configargs])", + "Generates a new private key" + ], + "openssl_private_decrypt": [ + "bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])", + "Decrypts data with private key" + ], + "openssl_private_encrypt": [ + "bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])", + "Encrypts data with private key" + ], + "openssl_public_decrypt": [ + "bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])", + "Decrypts data with public key" + ], + "openssl_public_encrypt": [ + "bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])", + "Encrypts data with public key" + ], + "openssl_random_pseudo_bytes": [ + "string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])", + "Returns a string of the length specified filled with random pseudo bytes" + ], + "openssl_seal": [ + "int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)", + "Seals data" + ], + "openssl_sign": [ + "bool openssl_sign(string data, &string signature, mixed key[, mixed method])", + "Signs data" + ], + "openssl_verify": [ + "int openssl_verify(string data, string signature, mixed key[, mixed method])", + "Verifys data" + ], + "openssl_x509_check_private_key": [ + "bool openssl_x509_check_private_key(mixed cert, mixed key)", + "Checks if a private key corresponds to a CERT" + ], + "openssl_x509_checkpurpose": [ + "int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])", + "Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs" + ], + "openssl_x509_export": [ + "bool openssl_x509_export(mixed x509, string &out [, bool notext = true])", + "Exports a CERT to file or a var" + ], + "openssl_x509_export_to_file": [ + "bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])", + "Exports a CERT to file or a var" + ], + "openssl_x509_free": [ + "void openssl_x509_free(resource x509)", + "Frees X.509 certificates" + ], + "openssl_x509_parse": [ + "array openssl_x509_parse(mixed x509 [, bool shortnames=true])", + "Returns an array of the fields/values of the CERT" + ], + "openssl_x509_read": [ + "resource openssl_x509_read(mixed cert)", + "Reads X.509 certificates" + ], + "ord": [ + "int ord(string character)", + "Returns ASCII value of character" + ], + "output_add_rewrite_var": [ + "bool output_add_rewrite_var(string name, string value)", + "Add URL rewriter values" + ], + "output_reset_rewrite_vars": [ + "bool output_reset_rewrite_vars(void)", + "Reset(clear) URL rewriter values" + ], + "pack": [ + "string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])", + "Takes one or more arguments and packs them into a binary string according to the format argument" + ], + "parse_ini_file": [ + "array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])", + "Parse configuration file" + ], + "parse_ini_string": [ + "array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])", + "Parse configuration string" + ], + "parse_locale": [ + "static array parse_locale($locale)", + "* parses a locale-id into an array the different parts of it" + ], + "parse_str": [ + "void parse_str(string encoded_string [, array result])", + "Parses GET/POST/COOKIE data and sets global variables" + ], + "parse_url": [ + "mixed parse_url(string url, [int url_component])", + "Parse a URL and return its components" + ], + "passthru": [ + "void passthru(string command [, int &return_value])", + "Execute an external program and display raw output" + ], + "pathinfo": [ + "array pathinfo(string path[, int options])", + "Returns information about a certain string" + ], + "pclose": [ + "int pclose(resource fp)", + "Close a file pointer opened by popen()" + ], + "pcnlt_sigwaitinfo": [ + "int pcnlt_sigwaitinfo(array set[, array &siginfo])", + "Synchronously wait for queued signals" + ], + "pcntl_alarm": [ + "int pcntl_alarm(int seconds)", + "Set an alarm clock for delivery of a signal" + ], + "pcntl_exec": [ + "bool pcntl_exec(string path [, array args [, array envs]])", + "Executes specified program in current process space as defined by exec(2)" + ], + "pcntl_fork": [ + "int pcntl_fork(void)", + "Forks the currently running process following the same behavior as the UNIX fork() system call" + ], + "pcntl_getpriority": [ + "int pcntl_getpriority([int pid [, int process_identifier]])", + "Get the priority of any process" + ], + "pcntl_setpriority": [ + "bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])", + "Change the priority of any process" + ], + "pcntl_signal": [ + "bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])", + "Assigns a system signal handler to a PHP function" + ], + "pcntl_signal_dispatch": [ + "bool pcntl_signal_dispatch()", + "Dispatch signals to signal handlers" + ], + "pcntl_sigprocmask": [ + "bool pcntl_sigprocmask(int how, array set[, array &oldset])", + "Examine and change blocked signals" + ], + "pcntl_sigtimedwait": [ + "int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])", + "Wait for queued signals" + ], + "pcntl_wait": [ + "int pcntl_wait(int &status)", + "Waits on or returns the status of a forked child as defined by the waitpid() system call" + ], + "pcntl_waitpid": [ + "int pcntl_waitpid(int pid, int &status, int options)", + "Waits on or returns the status of a forked child as defined by the waitpid() system call" + ], + "pcntl_wexitstatus": [ + "int pcntl_wexitstatus(int status)", + "Returns the status code of a child's exit" + ], + "pcntl_wifexited": [ + "bool pcntl_wifexited(int status)", + "Returns true if the child status code represents a successful exit" + ], + "pcntl_wifsignaled": [ + "bool pcntl_wifsignaled(int status)", + "Returns true if the child status code represents a process that was terminated due to a signal" + ], + "pcntl_wifstopped": [ + "bool pcntl_wifstopped(int status)", + "Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)" + ], + "pcntl_wstopsig": [ + "int pcntl_wstopsig(int status)", + "Returns the number of the signal that caused the process to stop who's status code is passed" + ], + "pcntl_wtermsig": [ + "int pcntl_wtermsig(int status)", + "Returns the number of the signal that terminated the process who's status code is passed" + ], + "pdo_drivers": [ + "array pdo_drivers()", + "Return array of available PDO drivers" + ], + "pfsockopen": [ + "resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", + "Open persistent Internet or Unix domain socket connection" + ], + "pg_affected_rows": [ + "int pg_affected_rows(resource result)", + "Returns the number of affected tuples" + ], + "pg_cancel_query": [ + "bool pg_cancel_query(resource connection)", + "Cancel request" + ], + "pg_client_encoding": [ + "string pg_client_encoding([resource connection])", + "Get the current client encoding" + ], + "pg_close": [ + "bool pg_close([resource connection])", + "Close a PostgreSQL connection" + ], + "pg_connect": [ + "resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)", + "Open a PostgreSQL connection" + ], + "pg_connection_busy": [ + "bool pg_connection_busy(resource connection)", + "Get connection is busy or not" + ], + "pg_connection_reset": [ + "bool pg_connection_reset(resource connection)", + "Reset connection (reconnect)" + ], + "pg_connection_status": [ + "int pg_connection_status(resource connnection)", + "Get connection status" + ], + "pg_convert": [ + "array pg_convert(resource db, string table, array values[, int options])", + "Check and convert values for PostgreSQL SQL statement" + ], + "pg_copy_from": [ + "bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])", + "Copy table from array" + ], + "pg_copy_to": [ + "array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])", + "Copy table to array" + ], + "pg_dbname": [ + "string pg_dbname([resource connection])", + "Get the database name" + ], + "pg_delete": [ + "mixed pg_delete(resource db, string table, array ids[, int options])", + "Delete records has ids (id=>value)" + ], + "pg_end_copy": [ + "bool pg_end_copy([resource connection])", + "Sync with backend. Completes the Copy command" + ], + "pg_escape_bytea": [ + "string pg_escape_bytea([resource connection,] string data)", + "Escape binary for bytea type" + ], + "pg_escape_string": [ + "string pg_escape_string([resource connection,] string data)", + "Escape string for text/char type" + ], + "pg_execute": [ + "resource pg_execute([resource connection,] string stmtname, array params)", + "Execute a prepared query" + ], + "pg_fetch_all": [ + "array pg_fetch_all(resource result)", + "Fetch all rows into array" + ], + "pg_fetch_all_columns": [ + "array pg_fetch_all_columns(resource result [, int column_number])", + "Fetch all rows into array" + ], + "pg_fetch_array": [ + "array pg_fetch_array(resource result [, int row [, int result_type]])", + "Fetch a row as an array" + ], + "pg_fetch_assoc": [ + "array pg_fetch_assoc(resource result [, int row])", + "Fetch a row as an assoc array" + ], + "pg_fetch_object": [ + "object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])", + "Fetch a row as an object" + ], + "pg_fetch_result": [ + "mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)", + "Returns values from a result identifier" + ], + "pg_fetch_row": [ + "array pg_fetch_row(resource result [, int row [, int result_type]])", + "Get a row as an enumerated array" + ], + "pg_field_is_null": [ + "int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)", + "Test if a field is NULL" + ], + "pg_field_name": [ + "string pg_field_name(resource result, int field_number)", + "Returns the name of the field" + ], + "pg_field_num": [ + "int pg_field_num(resource result, string field_name)", + "Returns the field number of the named field" + ], + "pg_field_prtlen": [ + "int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)", + "Returns the printed length" + ], + "pg_field_size": [ + "int pg_field_size(resource result, int field_number)", + "Returns the internal size of the field" + ], + "pg_field_table": [ + "mixed pg_field_table(resource result, int field_number[, bool oid_only])", + "Returns the name of the table field belongs to, or table's oid if oid_only is true" + ], + "pg_field_type": [ + "string pg_field_type(resource result, int field_number)", + "Returns the type name for the given field" + ], + "pg_field_type_oid": [ + "string pg_field_type_oid(resource result, int field_number)", + "Returns the type oid for the given field" + ], + "pg_free_result": [ + "bool pg_free_result(resource result)", + "Free result memory" + ], + "pg_get_notify": [ + "array pg_get_notify([resource connection[, result_type]])", + "Get asynchronous notification" + ], + "pg_get_pid": [ + "int pg_get_pid([resource connection)", + "Get backend(server) pid" + ], + "pg_get_result": [ + "resource pg_get_result(resource connection)", + "Get asynchronous query result" + ], + "pg_host": [ + "string pg_host([resource connection])", + "Returns the host name associated with the connection" + ], + "pg_insert": [ + "mixed pg_insert(resource db, string table, array values[, int options])", + "Insert values (filed=>value) to table" + ], + "pg_last_error": [ + "string pg_last_error([resource connection])", + "Get the error message string" + ], + "pg_last_notice": [ + "string pg_last_notice(resource connection)", + "Returns the last notice set by the backend" + ], + "pg_last_oid": [ + "string pg_last_oid(resource result)", + "Returns the last object identifier" + ], + "pg_lo_close": [ + "bool pg_lo_close(resource large_object)", + "Close a large object" + ], + "pg_lo_create": [ + "mixed pg_lo_create([resource connection],[mixed large_object_oid])", + "Create a large object" + ], + "pg_lo_export": [ + "bool pg_lo_export([resource connection, ] int objoid, string filename)", + "Export large object direct to filesystem" + ], + "pg_lo_import": [ + "int pg_lo_import([resource connection, ] string filename [, mixed oid])", + "Import large object direct from filesystem" + ], + "pg_lo_open": [ + "resource pg_lo_open([resource connection,] int large_object_oid, string mode)", + "Open a large object and return fd" + ], + "pg_lo_read": [ + "string pg_lo_read(resource large_object [, int len])", + "Read a large object" + ], + "pg_lo_read_all": [ + "int pg_lo_read_all(resource large_object)", + "Read a large object and send straight to browser" + ], + "pg_lo_seek": [ + "bool pg_lo_seek(resource large_object, int offset [, int whence])", + "Seeks position of large object" + ], + "pg_lo_tell": [ + "int pg_lo_tell(resource large_object)", + "Returns current position of large object" + ], + "pg_lo_unlink": [ + "bool pg_lo_unlink([resource connection,] string large_object_oid)", + "Delete a large object" + ], + "pg_lo_write": [ + "int pg_lo_write(resource large_object, string buf [, int len])", + "Write a large object" + ], + "pg_meta_data": [ + "array pg_meta_data(resource db, string table)", + "Get meta_data" + ], + "pg_num_fields": [ + "int pg_num_fields(resource result)", + "Return the number of fields in the result" + ], + "pg_num_rows": [ + "int pg_num_rows(resource result)", + "Return the number of rows in the result" + ], + "pg_options": [ + "string pg_options([resource connection])", + "Get the options associated with the connection" + ], + "pg_parameter_status": [ + "string|false pg_parameter_status([resource connection,] string param_name)", + "Returns the value of a server parameter" + ], + "pg_pconnect": [ + "resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)", + "Open a persistent PostgreSQL connection" + ], + "pg_ping": [ + "bool pg_ping([resource connection])", + "Ping database. If connection is bad, try to reconnect." + ], + "pg_port": [ + "int pg_port([resource connection])", + "Return the port number associated with the connection" + ], + "pg_prepare": [ + "resource pg_prepare([resource connection,] string stmtname, string query)", + "Prepare a query for future execution" + ], + "pg_put_line": [ + "bool pg_put_line([resource connection,] string query)", + "Send null-terminated string to backend server" + ], + "pg_query": [ + "resource pg_query([resource connection,] string query)", + "Execute a query" + ], + "pg_query_params": [ + "resource pg_query_params([resource connection,] string query, array params)", + "Execute a query" + ], + "pg_result_error": [ + "string pg_result_error(resource result)", + "Get error message associated with result" + ], + "pg_result_error_field": [ + "string pg_result_error_field(resource result, int fieldcode)", + "Get error message field associated with result" + ], + "pg_result_seek": [ + "bool pg_result_seek(resource result, int offset)", + "Set internal row offset" + ], + "pg_result_status": [ + "mixed pg_result_status(resource result[, long result_type])", + "Get status of query result" + ], + "pg_select": [ + "mixed pg_select(resource db, string table, array ids[, int options])", + "Select records that has ids (id=>value)" + ], + "pg_send_execute": [ + "bool pg_send_execute(resource connection, string stmtname, array params)", + "Executes prevriously prepared stmtname asynchronously" + ], + "pg_send_prepare": [ + "bool pg_send_prepare(resource connection, string stmtname, string query)", + "Asynchronously prepare a query for future execution" + ], + "pg_send_query": [ + "bool pg_send_query(resource connection, string query)", + "Send asynchronous query" + ], + "pg_send_query_params": [ + "bool pg_send_query_params(resource connection, string query, array params)", + "Send asynchronous parameterized query" + ], + "pg_set_client_encoding": [ + "int pg_set_client_encoding([resource connection,] string encoding)", + "Set client encoding" + ], + "pg_set_error_verbosity": [ + "int pg_set_error_verbosity([resource connection,] int verbosity)", + "Set error verbosity" + ], + "pg_trace": [ + "bool pg_trace(string filename [, string mode [, resource connection]])", + "Enable tracing a PostgreSQL connection" + ], + "pg_transaction_status": [ + "int pg_transaction_status(resource connnection)", + "Get transaction status" + ], + "pg_tty": [ + "string pg_tty([resource connection])", + "Return the tty name associated with the connection" + ], + "pg_unescape_bytea": [ + "string pg_unescape_bytea(string data)", + "Unescape binary for bytea type" + ], + "pg_untrace": [ + "bool pg_untrace([resource connection])", + "Disable tracing of a PostgreSQL connection" + ], + "pg_update": [ + "mixed pg_update(resource db, string table, array fields, array ids[, int options])", + "Update table using values (field=>value) and ids (id=>value)" + ], + "pg_version": [ + "array pg_version([resource connection])", + "Returns an array with client, protocol and server version (when available)" + ], + "php_egg_logo_guid": [ + "string php_egg_logo_guid(void)", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_ini_loaded_file": [ + "string php_ini_loaded_file(void)", + "Return the actual loaded ini filename" + ], + "php_ini_scanned_files": [ + "string php_ini_scanned_files(void)", + "Return comma-separated string of .ini files parsed from the additional ini dir" + ], + "php_logo_guid": [ + "string php_logo_guid(void)", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_real_logo_guid": [ + "string php_real_logo_guid(void)", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_sapi_name": [ + "string php_sapi_name(void)", + "Return the current SAPI module name" + ], + "php_snmpv3": [ + "void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)", + "* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *" + ], + "php_strip_whitespace": [ + "string php_strip_whitespace(string file_name)", + "Return source with stripped comments and whitespace" + ], + "php_uname": [ + "string php_uname(void)", + "Return information about the system PHP was built on" + ], + "phpcredits": [ + "void phpcredits([int flag])", + "Prints the list of people who've contributed to the PHP project" + ], + "phpinfo": [ + "void phpinfo([int what])", + "Output a page of useful information about PHP and the current request" + ], + "phpversion": [ + "string phpversion([string extension])", + "Return the current PHP version" + ], + "pi": [ + "float pi(void)", + "Returns an approximation of pi" + ], + "png2wbmp": [ + "bool png2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", + "Convert PNG image to WBMP image" + ], + "popen": [ + "resource popen(string command, string mode)", + "Execute a command and open either a read or a write pipe to it" + ], + "posix_access": [ + "bool posix_access(string file [, int mode])", + "Determine accessibility of a file (POSIX.1 5.6.3)" + ], + "posix_ctermid": [ + "string posix_ctermid(void)", + "Generate terminal path name (POSIX.1, 4.7.1)" + ], + "posix_get_last_error": [ + "int posix_get_last_error(void)", + "Retrieve the error number set by the last posix function which failed." + ], + "posix_getcwd": [ + "string posix_getcwd(void)", + "Get working directory pathname (POSIX.1, 5.2.2)" + ], + "posix_getegid": [ + "int posix_getegid(void)", + "Get the current effective group id (POSIX.1, 4.2.1)" + ], + "posix_geteuid": [ + "int posix_geteuid(void)", + "Get the current effective user id (POSIX.1, 4.2.1)" + ], + "posix_getgid": [ + "int posix_getgid(void)", + "Get the current group id (POSIX.1, 4.2.1)" + ], + "posix_getgrgid": [ + "array posix_getgrgid(long gid)", + "Group database access (POSIX.1, 9.2.1)" + ], + "posix_getgrnam": [ + "array posix_getgrnam(string groupname)", + "Group database access (POSIX.1, 9.2.1)" + ], + "posix_getgroups": [ + "array posix_getgroups(void)", + "Get supplementary group id's (POSIX.1, 4.2.3)" + ], + "posix_getlogin": [ + "string posix_getlogin(void)", + "Get user name (POSIX.1, 4.2.4)" + ], + "posix_getpgid": [ + "int posix_getpgid(void)", + "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)" + ], + "posix_getpgrp": [ + "int posix_getpgrp(void)", + "Get current process group id (POSIX.1, 4.3.1)" + ], + "posix_getpid": [ + "int posix_getpid(void)", + "Get the current process id (POSIX.1, 4.1.1)" + ], + "posix_getppid": [ + "int posix_getppid(void)", + "Get the parent process id (POSIX.1, 4.1.1)" + ], + "posix_getpwnam": [ + "array posix_getpwnam(string groupname)", + "User database access (POSIX.1, 9.2.2)" + ], + "posix_getpwuid": [ + "array posix_getpwuid(long uid)", + "User database access (POSIX.1, 9.2.2)" + ], + "posix_getrlimit": [ + "array posix_getrlimit(void)", + "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)" + ], + "posix_getsid": [ + "int posix_getsid(void)", + "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)" + ], + "posix_getuid": [ + "int posix_getuid(void)", + "Get the current user id (POSIX.1, 4.2.1)" + ], + "posix_initgroups": [ + "bool posix_initgroups(string name, int base_group_id)", + "Calculate the group access list for the user specified in name." + ], + "posix_isatty": [ + "bool posix_isatty(int fd)", + "Determine if filedesc is a tty (POSIX.1, 4.7.1)" + ], + "posix_kill": [ + "bool posix_kill(int pid, int sig)", + "Send a signal to a process (POSIX.1, 3.3.2)" + ], + "posix_mkfifo": [ + "bool posix_mkfifo(string pathname, int mode)", + "Make a FIFO special file (POSIX.1, 5.4.2)" + ], + "posix_mknod": [ + "bool posix_mknod(string pathname, int mode [, int major [, int minor]])", + "Make a special or ordinary file (POSIX.1)" + ], + "posix_setegid": [ + "bool posix_setegid(long uid)", + "Set effective group id" + ], + "posix_seteuid": [ + "bool posix_seteuid(long uid)", + "Set effective user id" + ], + "posix_setgid": [ + "bool posix_setgid(int uid)", + "Set group id (POSIX.1, 4.2.2)" + ], + "posix_setpgid": [ + "bool posix_setpgid(int pid, int pgid)", + "Set process group id for job control (POSIX.1, 4.3.3)" + ], + "posix_setsid": [ + "int posix_setsid(void)", + "Create session and set process group id (POSIX.1, 4.3.2)" + ], + "posix_setuid": [ + "bool posix_setuid(long uid)", + "Set user id (POSIX.1, 4.2.2)" + ], + "posix_strerror": [ + "string posix_strerror(int errno)", + "Retrieve the system error message associated with the given errno." + ], + "posix_times": [ + "array posix_times(void)", + "Get process times (POSIX.1, 4.5.2)" + ], + "posix_ttyname": [ + "string posix_ttyname(int fd)", + "Determine terminal device name (POSIX.1, 4.7.2)" + ], + "posix_uname": [ + "array posix_uname(void)", + "Get system name (POSIX.1, 4.4.1)" + ], + "pow": [ + "number pow(number base, number exponent)", + "Returns base raised to the power of exponent. Returns integer result when possible" + ], + "preg_filter": [ + "mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement and only return matches." + ], + "preg_grep": [ + "array preg_grep(string regex, array input [, int flags])", + "Searches array and returns entries which match regex" + ], + "preg_last_error": [ + "int preg_last_error()", + "Returns the error code of the last regexp execution." + ], + "preg_match": [ + "int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])", + "Perform a Perl-style regular expression match" + ], + "preg_match_all": [ + "int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])", + "Perform a Perl-style global regular expression match" + ], + "preg_quote": [ + "string preg_quote(string str [, string delim_char])", + "Quote regular expression characters plus an optional character" + ], + "preg_replace": [ + "mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement." + ], + "preg_replace_callback": [ + "mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement using replacement callback." + ], + "preg_split": [ + "array preg_split(string pattern, string subject [, int limit [, int flags]])", + "Split string into an array using a perl-style regular expression as a delimiter" + ], + "prev": [ + "mixed prev(array array_arg)", + "Move array argument's internal pointer to the previous element and return it" + ], + "print": [ + "int print(string arg)", + "Output a string" + ], + "print_r": [ + "mixed print_r(mixed var [, bool return])", + "Prints out or returns information about the specified variable" + ], + "printf": [ + "int printf(string format [, mixed arg1 [, mixed ...]])", + "Output a formatted string" + ], + "proc_close": [ + "int proc_close(resource process)", + "close a process opened by proc_open" + ], + "proc_get_status": [ + "array proc_get_status(resource process)", + "get information about a process opened by proc_open" + ], + "proc_nice": [ + "bool proc_nice(int priority)", + "Change the priority of the current process" + ], + "proc_open": [ + "resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])", + "Run a process with more control over it's file descriptors" + ], + "proc_terminate": [ + "bool proc_terminate(resource process [, long signal])", + "kill a process opened by proc_open" + ], + "property_exists": [ + "bool property_exists(mixed object_or_class, string property_name)", + "Checks if the object or class has a property" + ], + "pspell_add_to_personal": [ + "bool pspell_add_to_personal(int pspell, string word)", + "Adds a word to a personal list" + ], + "pspell_add_to_session": [ + "bool pspell_add_to_session(int pspell, string word)", + "Adds a word to the current session" + ], + "pspell_check": [ + "bool pspell_check(int pspell, string word)", + "Returns true if word is valid" + ], + "pspell_clear_session": [ + "bool pspell_clear_session(int pspell)", + "Clears the current session" + ], + "pspell_config_create": [ + "int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])", + "Create a new config to be used later to create a manager" + ], + "pspell_config_data_dir": [ + "bool pspell_config_data_dir(int conf, string directory)", + "location of language data files" + ], + "pspell_config_dict_dir": [ + "bool pspell_config_dict_dir(int conf, string directory)", + "location of the main word list" + ], + "pspell_config_ignore": [ + "bool pspell_config_ignore(int conf, int ignore)", + "Ignore words <= n chars" + ], + "pspell_config_mode": [ + "bool pspell_config_mode(int conf, long mode)", + "Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)" + ], + "pspell_config_personal": [ + "bool pspell_config_personal(int conf, string personal)", + "Use a personal dictionary for this config" + ], + "pspell_config_repl": [ + "bool pspell_config_repl(int conf, string repl)", + "Use a personal dictionary with replacement pairs for this config" + ], + "pspell_config_runtogether": [ + "bool pspell_config_runtogether(int conf, bool runtogether)", + "Consider run-together words as valid components" + ], + "pspell_config_save_repl": [ + "bool pspell_config_save_repl(int conf, bool save)", + "Save replacement pairs when personal list is saved for this config" + ], + "pspell_new": [ + "int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", + "Load a dictionary" + ], + "pspell_new_config": [ + "int pspell_new_config(int config)", + "Load a dictionary based on the given config" + ], + "pspell_new_personal": [ + "int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", + "Load a dictionary with a personal wordlist" + ], + "pspell_save_wordlist": [ + "bool pspell_save_wordlist(int pspell)", + "Saves the current (personal) wordlist" + ], + "pspell_store_replacement": [ + "bool pspell_store_replacement(int pspell, string misspell, string correct)", + "Notify the dictionary of a user-selected replacement" + ], + "pspell_suggest": [ + "array pspell_suggest(int pspell, string word)", + "Returns array of suggestions" + ], + "putenv": [ + "bool putenv(string setting)", + "Set the value of an environment variable" + ], + "quoted_printable_decode": [ + "string quoted_printable_decode(string str)", + "Convert a quoted-printable string to an 8 bit string" + ], + "quoted_printable_encode": [ + "string quoted_printable_encode(string str) */", + "PHP_FUNCTION(quoted_printable_encode) { char *str, *new_str; int str_len; size_t new_str_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"s\", &str, &str_len) != SUCCESS) { return; } if (!str_len) { RETURN_EMPTY_STRING(); } new_str = (char *)php_quot_print_encode((unsigned char *)str, (size_t)str_len, &new_str_len); RETURN_STRINGL(new_str, new_str_len, 0); } /* }}}" + ], + "quotemeta": [ + "string quotemeta(string str)", + "Quotes meta characters" + ], + "rad2deg": [ + "float rad2deg(float number)", + "Converts the radian number to the equivalent number in degrees" + ], + "rand": [ + "int rand([int min, int max])", + "Returns a random number" + ], + "range": [ + "array range(mixed low, mixed high[, int step])", + "Create an array containing the range of integers or characters from low to high (inclusive)" + ], + "rawurldecode": [ + "string rawurldecode(string str)", + "Decodes URL-encodes string" + ], + "rawurlencode": [ + "string rawurlencode(string str)", + "URL-encodes string" + ], + "readdir": [ + "string readdir([resource dir_handle])", + "Read directory entry from dir_handle" + ], + "readfile": [ + "int readfile(string filename [, bool use_include_path[, resource context]])", + "Output a file or a URL" + ], + "readgzfile": [ + "int readgzfile(string filename [, int use_include_path])", + "Output a .gz-file" + ], + "readline": [ + "string readline([string prompt])", + "Reads a line" + ], + "readline_add_history": [ + "bool readline_add_history(string prompt)", + "Adds a line to the history" + ], + "readline_callback_handler_install": [ + "void readline_callback_handler_install(string prompt, mixed callback)", + "Initializes the readline callback interface and terminal, prints the prompt and returns immediately" + ], + "readline_callback_handler_remove": [ + "bool readline_callback_handler_remove()", + "Removes a previously installed callback handler and restores terminal settings" + ], + "readline_callback_read_char": [ + "void readline_callback_read_char()", + "Informs the readline callback interface that a character is ready for input" + ], + "readline_clear_history": [ + "bool readline_clear_history(void)", + "Clears the history" + ], + "readline_completion_function": [ + "bool readline_completion_function(string funcname)", + "Readline completion function?" + ], + "readline_info": [ + "mixed readline_info([string varname [, string newvalue]])", + "Gets/sets various internal readline variables." + ], + "readline_list_history": [ + "array readline_list_history(void)", + "Lists the history" + ], + "readline_on_new_line": [ + "void readline_on_new_line(void)", + "Inform readline that the cursor has moved to a new line" + ], + "readline_read_history": [ + "bool readline_read_history([string filename])", + "Reads the history" + ], + "readline_redisplay": [ + "void readline_redisplay(void)", + "Ask readline to redraw the display" + ], + "readline_write_history": [ + "bool readline_write_history([string filename])", + "Writes the history" + ], + "readlink": [ + "string readlink(string filename)", + "Return the target of a symbolic link" + ], + "realpath": [ + "string realpath(string path)", + "Return the resolved path" + ], + "realpath_cache_get": [ + "bool realpath_cache_get()", + "Get current size of realpath cache" + ], + "realpath_cache_size": [ + "bool realpath_cache_size()", + "Get current size of realpath cache" + ], + "recode_file": [ + "bool recode_file(string request, resource input, resource output)", + "Recode file input into file output according to request" + ], + "recode_string": [ + "string recode_string(string request, string str)", + "Recode string str according to request string" + ], + "register_shutdown_function": [ + "void register_shutdown_function(string function_name)", + "Register a user-level function to be called on request termination" + ], + "register_tick_function": [ + "bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])", + "Registers a tick callback function" + ], + "rename": [ + "bool rename(string old_name, string new_name[, resource context])", + "Rename a file" + ], + "require": [ + "bool require(string path)", + "Includes and evaluates the specified file, erroring if the file cannot be included" + ], + "require_once": [ + "bool require_once(string path)", + "Includes and evaluates the specified file, erroring if the file cannot be included" + ], + "reset": [ + "mixed reset(array array_arg)", + "Set array argument's internal pointer to the first element and return it" + ], + "restore_error_handler": [ + "void restore_error_handler(void)", + "Restores the previously defined error handler function" + ], + "restore_exception_handler": [ + "void restore_exception_handler(void)", + "Restores the previously defined exception handler function" + ], + "restore_include_path": [ + "void restore_include_path()", + "Restore the value of the include_path configuration option" + ], + "rewind": [ + "bool rewind(resource fp)", + "Rewind the position of a file pointer" + ], + "rewinddir": [ + "void rewinddir([resource dir_handle])", + "Rewind dir_handle back to the start" + ], + "rmdir": [ + "bool rmdir(string dirname[, resource context])", + "Remove a directory" + ], + "round": [ + "float round(float number [, int precision [, int mode]])", + "Returns the number rounded to specified precision" + ], + "rsort": [ + "bool rsort(array &array_arg [, int sort_flags])", + "Sort an array in reverse order" + ], + "rtrim": [ + "string rtrim(string str [, string character_mask])", + "Removes trailing whitespace" + ], + "scandir": [ + "array scandir(string dir [, int sorting_order [, resource context]])", + "List files & directories inside the specified path" + ], + "sem_acquire": [ + "bool sem_acquire(resource id)", + "Acquires the semaphore with the given id, blocking if necessary" + ], + "sem_get": [ + "resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])", + "Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously" + ], + "sem_release": [ + "bool sem_release(resource id)", + "Releases the semaphore with the given id" + ], + "sem_remove": [ + "bool sem_remove(resource id)", + "Removes semaphore from Unix systems" + ], + "serialize": [ + "string serialize(mixed variable)", + "Returns a string representation of variable (which can later be unserialized)" + ], + "session_cache_expire": [ + "int session_cache_expire([int new_cache_expire])", + "Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire" + ], + "session_cache_limiter": [ + "string session_cache_limiter([string new_cache_limiter])", + "Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter" + ], + "session_decode": [ + "bool session_decode(string data)", + "Deserializes data and reinitializes the variables" + ], + "session_destroy": [ + "bool session_destroy(void)", + "Destroy the current session and all data associated with it" + ], + "session_encode": [ + "string session_encode(void)", + "Serializes the current setup and returns the serialized representation" + ], + "session_get_cookie_params": [ + "array session_get_cookie_params(void)", + "Return the session cookie parameters" + ], + "session_id": [ + "string session_id([string newid])", + "Return the current session id. If newid is given, the session id is replaced with newid" + ], + "session_is_registered": [ + "bool session_is_registered(string varname)", + "Checks if a variable is registered in session" + ], + "session_module_name": [ + "string session_module_name([string newname])", + "Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname" + ], + "session_name": [ + "string session_name([string newname])", + "Return the current session name. If newname is given, the session name is replaced with newname" + ], + "session_regenerate_id": [ + "bool session_regenerate_id([bool delete_old_session])", + "Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session." + ], + "session_register": [ + "bool session_register(mixed var_names [, mixed ...])", + "Adds varname(s) to the list of variables which are freezed at the session end" + ], + "session_save_path": [ + "string session_save_path([string newname])", + "Return the current save path passed to module_name. If newname is given, the save path is replaced with newname" + ], + "session_set_cookie_params": [ + "void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])", + "Set session cookie parameters" + ], + "session_set_save_handler": [ + "void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)", + "Sets user-level functions" + ], + "session_start": [ + "bool session_start(void)", + "Begin session - reinitializes freezed variables, registers browsers etc" + ], + "session_unregister": [ + "bool session_unregister(string varname)", + "Removes varname from the list of variables which are freezed at the session end" + ], + "session_unset": [ + "void session_unset(void)", + "Unset all registered variables" + ], + "session_write_close": [ + "void session_write_close(void)", + "Write session data and end session" + ], + "set_error_handler": [ + "string set_error_handler(string error_handler [, int error_types])", + "Sets a user-defined error handler function. Returns the previously defined error handler, or false on error" + ], + "set_exception_handler": [ + "string set_exception_handler(callable exception_handler)", + "Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error" + ], + "set_include_path": [ + "string set_include_path(string new_include_path)", + "Sets the include_path configuration option" + ], + "set_magic_quotes_runtime": [ + "bool set_magic_quotes_runtime(int new_setting)", + "Set the current active configuration setting of magic_quotes_runtime and return previous" + ], + "set_time_limit": [ + "bool set_time_limit(int seconds)", + "Sets the maximum time a script can run" + ], + "setcookie": [ + "bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", + "Send a cookie" + ], + "setlocale": [ + "string setlocale(mixed category, string locale [, string ...])", + "Set locale information" + ], + "setrawcookie": [ + "bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", + "Send a cookie with no url encoding of the value" + ], + "settype": [ + "bool settype(mixed var, string type)", + "Set the type of the variable" + ], + "sha1": [ + "string sha1(string str [, bool raw_output])", + "Calculate the sha1 hash of a string" + ], + "sha1_file": [ + "string sha1_file(string filename [, bool raw_output])", + "Calculate the sha1 hash of given filename" + ], + "shell_exec": [ + "string shell_exec(string cmd)", + "Execute command via shell and return complete output as string" + ], + "shm_attach": [ + "int shm_attach(int key [, int memsize [, int perm]])", + "Creates or open a shared memory segment" + ], + "shm_detach": [ + "bool shm_detach(resource shm_identifier)", + "Disconnects from shared memory segment" + ], + "shm_get_var": [ + "mixed shm_get_var(resource id, int variable_key)", + "Returns a variable from shared memory" + ], + "shm_has_var": [ + "bool shm_has_var(resource id, int variable_key)", + "Checks whether a specific entry exists" + ], + "shm_put_var": [ + "bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)", + "Inserts or updates a variable in shared memory" + ], + "shm_remove": [ + "bool shm_remove(resource shm_identifier)", + "Removes shared memory from Unix systems" + ], + "shm_remove_var": [ + "bool shm_remove_var(resource id, int variable_key)", + "Removes variable from shared memory" + ], + "shmop_close": [ + "void shmop_close (int shmid)", + "closes a shared memory segment" + ], + "shmop_delete": [ + "bool shmop_delete (int shmid)", + "mark segment for deletion" + ], + "shmop_open": [ + "int shmop_open (int key, string flags, int mode, int size)", + "gets and attaches a shared memory segment" + ], + "shmop_read": [ + "string shmop_read (int shmid, int start, int count)", + "reads from a shm segment" + ], + "shmop_size": [ + "int shmop_size (int shmid)", + "returns the shm size" + ], + "shmop_write": [ + "int shmop_write (int shmid, string data, int offset)", + "writes to a shared memory segment" + ], + "shuffle": [ + "bool shuffle(array array_arg)", + "Randomly shuffle the contents of an array" + ], + "similar_text": [ + "int similar_text(string str1, string str2 [, float percent])", + "Calculates the similarity between two strings" + ], + "simplexml_import_dom": [ + "simplemxml_element simplexml_import_dom(domNode node [, string class_name])", + "Get a simplexml_element object from dom to allow for processing" + ], + "simplexml_load_file": [ + "simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])", + "Load a filename and return a simplexml_element object to allow for processing" + ], + "simplexml_load_string": [ + "simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])", + "Load a string and return a simplexml_element object to allow for processing" + ], + "sin": [ + "float sin(float number)", + "Returns the sine of the number in radians" + ], + "sinh": [ + "float sinh(float number)", + "Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2" + ], + "sleep": [ + "void sleep(int seconds)", + "Delay for a given number of seconds" + ], + "smfi_addheader": [ + "bool smfi_addheader(string headerf, string headerv)", + "Adds a header to the current message." + ], + "smfi_addrcpt": [ + "bool smfi_addrcpt(string rcpt)", + "Add a recipient to the message envelope." + ], + "smfi_chgheader": [ + "bool smfi_chgheader(string headerf, string headerv)", + "Changes a header's value for the current message." + ], + "smfi_delrcpt": [ + "bool smfi_delrcpt(string rcpt)", + "Removes the named recipient from the current message's envelope." + ], + "smfi_getsymval": [ + "string smfi_getsymval(string macro)", + "Returns the value of the given macro or NULL if the macro is not defined." + ], + "smfi_replacebody": [ + "bool smfi_replacebody(string body)", + "Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body." + ], + "smfi_setflags": [ + "void smfi_setflags(long flags)", + "Sets the flags describing the actions the filter may take." + ], + "smfi_setreply": [ + "bool smfi_setreply(string rcode, string xcode, string message)", + "Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter." + ], + "smfi_settimeout": [ + "void smfi_settimeout(long timeout)", + "Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket." + ], + "snmp2_get": [ + "string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmp2_getnext": [ + "string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmp2_real_walk": [ + "array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects including their respective object id withing the specified one" + ], + "snmp2_set": [ + "int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Set the value of a SNMP object" + ], + "snmp2_walk": [ + "array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects under the specified object id" + ], + "snmp3_get": [ + "int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_getnext": [ + "int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_real_walk": [ + "int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_set": [ + "int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_walk": [ + "int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp_get_quick_print": [ + "bool snmp_get_quick_print(void)", + "Return the current status of quick_print" + ], + "snmp_get_valueretrieval": [ + "int snmp_get_valueretrieval()", + "Return the method how the SNMP values will be returned" + ], + "snmp_read_mib": [ + "int snmp_read_mib(string filename)", + "Reads and parses a MIB file into the active MIB tree." + ], + "snmp_set_enum_print": [ + "void snmp_set_enum_print(int enum_print)", + "Return all values that are enums with their enum value instead of the raw integer" + ], + "snmp_set_oid_output_format": [ + "void snmp_set_oid_output_format(int oid_format)", + "Set the OID output format." + ], + "snmp_set_quick_print": [ + "void snmp_set_quick_print(int quick_print)", + "Return all objects including their respective object id withing the specified one" + ], + "snmp_set_valueretrieval": [ + "void snmp_set_valueretrieval(int method)", + "Specify the method how the SNMP values will be returned" + ], + "snmpget": [ + "string snmpget(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmpgetnext": [ + "string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmprealwalk": [ + "array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects including their respective object id withing the specified one" + ], + "snmpset": [ + "int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Set the value of a SNMP object" + ], + "snmpwalk": [ + "array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects under the specified object id" + ], + "socket_accept": [ + "resource socket_accept(resource socket)", + "Accepts a connection on the listening socket fd" + ], + "socket_bind": [ + "bool socket_bind(resource socket, string addr [, int port])", + "Binds an open socket to a listening port, port is only specified in AF_INET family." + ], + "socket_clear_error": [ + "void socket_clear_error([resource socket])", + "Clears the error on the socket or the last error code." + ], + "socket_close": [ + "void socket_close(resource socket)", + "Closes a file descriptor" + ], + "socket_connect": [ + "bool socket_connect(resource socket, string addr [, int port])", + "Opens a connection to addr:port on the socket specified by socket" + ], + "socket_create": [ + "resource socket_create(int domain, int type, int protocol)", + "Creates an endpoint for communication in the domain specified by domain, of type specified by type" + ], + "socket_create_listen": [ + "resource socket_create_listen(int port[, int backlog])", + "Opens a socket on port to accept connections" + ], + "socket_create_pair": [ + "bool socket_create_pair(int domain, int type, int protocol, array &fd)", + "Creates a pair of indistinguishable sockets and stores them in fds." + ], + "socket_get_option": [ + "mixed socket_get_option(resource socket, int level, int optname)", + "Gets socket options for the socket" + ], + "socket_getpeername": [ + "bool socket_getpeername(resource socket, string &addr[, int &port])", + "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." + ], + "socket_getsockname": [ + "bool socket_getsockname(resource socket, string &addr[, int &port])", + "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." + ], + "socket_last_error": [ + "int socket_last_error([resource socket])", + "Returns the last socket error (either the last used or the provided socket resource)" + ], + "socket_listen": [ + "bool socket_listen(resource socket[, int backlog])", + "Sets the maximum number of connections allowed to be waited for on the socket specified by fd" + ], + "socket_read": [ + "string socket_read(resource socket, int length [, int type])", + "Reads a maximum of length bytes from socket" + ], + "socket_recv": [ + "int socket_recv(resource socket, string &buf, int len, int flags)", + "Receives data from a connected socket" + ], + "socket_recvfrom": [ + "int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])", + "Receives data from a socket, connected or not" + ], + "socket_select": [ + "int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])", + "Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec" + ], + "socket_send": [ + "int socket_send(resource socket, string buf, int len, int flags)", + "Sends data to a connected socket" + ], + "socket_sendto": [ + "int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])", + "Sends a message to a socket, whether it is connected or not" + ], + "socket_set_block": [ + "bool socket_set_block(resource socket)", + "Sets blocking mode on a socket resource" + ], + "socket_set_nonblock": [ + "bool socket_set_nonblock(resource socket)", + "Sets nonblocking mode on a socket resource" + ], + "socket_set_option": [ + "bool socket_set_option(resource socket, int level, int optname, int|array optval)", + "Sets socket options for the socket" + ], + "socket_shutdown": [ + "bool socket_shutdown(resource socket[, int how])", + "Shuts down a socket for receiving, sending, or both." + ], + "socket_strerror": [ + "string socket_strerror(int errno)", + "Returns a string describing an error" + ], + "socket_write": [ + "int socket_write(resource socket, string buf[, int length])", + "Writes the buffer to the socket resource, length is optional" + ], + "solid_fetch_prev": [ + "bool solid_fetch_prev(resource result_id)", + "" + ], + "sort": [ + "bool sort(array &array_arg [, int sort_flags])", + "Sort an array" + ], + "soundex": [ + "string soundex(string str)", + "Calculate the soundex key of a string" + ], + "spl_autoload": [ + "void spl_autoload(string class_name [, string file_extensions])", + "Default implementation for __autoload()" + ], + "spl_autoload_call": [ + "void spl_autoload_call(string class_name)", + "Try all registerd autoload function to load the requested class" + ], + "spl_autoload_extensions": [ + "string spl_autoload_extensions([string file_extensions])", + "Register and return default file extensions for spl_autoload" + ], + "spl_autoload_functions": [ + "false|array spl_autoload_functions()", + "Return all registered __autoload() functionns" + ], + "spl_autoload_register": [ + "bool spl_autoload_register([mixed autoload_function = \"spl_autoload\" [, throw = true [, prepend]]])", + "Register given function as __autoload() implementation" + ], + "spl_autoload_unregister": [ + "bool spl_autoload_unregister(mixed autoload_function)", + "Unregister given function as __autoload() implementation" + ], + "spl_classes": [ + "array spl_classes()", + "Return an array containing the names of all clsses and interfaces defined in SPL" + ], + "spl_object_hash": [ + "string spl_object_hash(object obj)", + "Return hash id for given object" + ], + "split": [ + "array split(string pattern, string string [, int limit])", + "Split string into array by regular expression" + ], + "spliti": [ + "array spliti(string pattern, string string [, int limit])", + "Split string into array by regular expression case-insensitive" + ], + "sprintf": [ + "string sprintf(string format [, mixed arg1 [, mixed ...]])", + "Return a formatted string" + ], + "sql_regcase": [ + "string sql_regcase(string string)", + "Make regular expression for case insensitive match" + ], + "sqlite_array_query": [ + "array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])", + "Executes a query against a given database and returns an array of arrays." + ], + "sqlite_busy_timeout": [ + "void sqlite_busy_timeout(resource db, int ms)", + "Set busy timeout duration. If ms <= 0, all busy handlers are disabled." + ], + "sqlite_changes": [ + "int sqlite_changes(resource db)", + "Returns the number of rows that were changed by the most recent SQL statement." + ], + "sqlite_close": [ + "void sqlite_close(resource db)", + "Closes an open sqlite database." + ], + "sqlite_column": [ + "mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])", + "Fetches a column from the current row of a result set." + ], + "sqlite_create_aggregate": [ + "bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])", + "Registers an aggregate function for queries." + ], + "sqlite_create_function": [ + "bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])", + "Registers a \"regular\" function for queries." + ], + "sqlite_current": [ + "array sqlite_current(resource result [, int result_type [, bool decode_binary]])", + "Fetches the current row from a result set as an array." + ], + "sqlite_error_string": [ + "string sqlite_error_string(int error_code)", + "Returns the textual description of an error code." + ], + "sqlite_escape_string": [ + "string sqlite_escape_string(string item)", + "Escapes a string for use as a query parameter." + ], + "sqlite_exec": [ + "boolean sqlite_exec(string query, resource db[, string &error_message])", + "Executes a result-less query against a given database" + ], + "sqlite_factory": [ + "object sqlite_factory(string filename [, int mode [, string &error_message]])", + "Opens a SQLite database and creates an object for it. Will create the database if it does not exist." + ], + "sqlite_fetch_all": [ + "array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])", + "Fetches all rows from a result set as an array of arrays." + ], + "sqlite_fetch_array": [ + "array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])", + "Fetches the next row from a result set as an array." + ], + "sqlite_fetch_column_types": [ + "resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])", + "Return an array of column types from a particular table." + ], + "sqlite_fetch_object": [ + "object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])", + "Fetches the next row from a result set as an object." + ], + "sqlite_fetch_single": [ + "string sqlite_fetch_single(resource result [, bool decode_binary])", + "Fetches the first column of a result set as a string." + ], + "sqlite_field_name": [ + "string sqlite_field_name(resource result, int field_index)", + "Returns the name of a particular field of a result set." + ], + "sqlite_has_prev": [ + "bool sqlite_has_prev(resource result)", + "* Returns whether a previous row is available." + ], + "sqlite_key": [ + "int sqlite_key(resource result)", + "Return the current row index of a buffered result." + ], + "sqlite_last_error": [ + "int sqlite_last_error(resource db)", + "Returns the error code of the last error for a database." + ], + "sqlite_last_insert_rowid": [ + "int sqlite_last_insert_rowid(resource db)", + "Returns the rowid of the most recently inserted row." + ], + "sqlite_libencoding": [ + "string sqlite_libencoding()", + "Returns the encoding (iso8859 or UTF-8) of the linked SQLite library." + ], + "sqlite_libversion": [ + "string sqlite_libversion()", + "Returns the version of the linked SQLite library." + ], + "sqlite_next": [ + "bool sqlite_next(resource result)", + "Seek to the next row number of a result set." + ], + "sqlite_num_fields": [ + "int sqlite_num_fields(resource result)", + "Returns the number of fields in a result set." + ], + "sqlite_num_rows": [ + "int sqlite_num_rows(resource result)", + "Returns the number of rows in a buffered result set." + ], + "sqlite_open": [ + "resource sqlite_open(string filename [, int mode [, string &error_message]])", + "Opens a SQLite database. Will create the database if it does not exist." + ], + "sqlite_popen": [ + "resource sqlite_popen(string filename [, int mode [, string &error_message]])", + "Opens a persistent handle to a SQLite database. Will create the database if it does not exist." + ], + "sqlite_prev": [ + "bool sqlite_prev(resource result)", + "* Seek to the previous row number of a result set." + ], + "sqlite_query": [ + "resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])", + "Executes a query against a given database and returns a result handle." + ], + "sqlite_rewind": [ + "bool sqlite_rewind(resource result)", + "Seek to the first row number of a buffered result set." + ], + "sqlite_seek": [ + "bool sqlite_seek(resource result, int row)", + "Seek to a particular row number of a buffered result set." + ], + "sqlite_single_query": [ + "array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])", + "Executes a query and returns either an array for one single column or the value of the first row." + ], + "sqlite_udf_decode_binary": [ + "string sqlite_udf_decode_binary(string data)", + "Decode binary encoding on a string parameter passed to an UDF." + ], + "sqlite_udf_encode_binary": [ + "string sqlite_udf_encode_binary(string data)", + "Apply binary encoding (if required) to a string to return from an UDF." + ], + "sqlite_unbuffered_query": [ + "resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])", + "Executes a query that does not prefetch and buffer all data." + ], + "sqlite_valid": [ + "bool sqlite_valid(resource result)", + "Returns whether more rows are available." + ], + "sqrt": [ + "float sqrt(float number)", + "Returns the square root of the number" + ], + "srand": [ + "void srand([int seed])", + "Seeds random number generator" + ], + "sscanf": [ + "mixed sscanf(string str, string format [, string ...])", + "Implements an ANSI C compatible sscanf" + ], + "stat": [ + "array stat(string filename)", + "Give information about a file" + ], + "str_getcsv": [ + "array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])", + "Parse a CSV string into an array" + ], + "str_ireplace": [ + "mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])", + "Replaces all occurrences of search in haystack with replace / case-insensitive" + ], + "str_pad": [ + "string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])", + "Returns input string padded on the left or right to specified length with pad_string" + ], + "str_repeat": [ + "string str_repeat(string input, int mult)", + "Returns the input string repeat mult times" + ], + "str_replace": [ + "mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])", + "Replaces all occurrences of search in haystack with replace" + ], + "str_rot13": [ + "string str_rot13(string str)", + "Perform the rot13 transform on a string" + ], + "str_shuffle": [ + "void str_shuffle(string str)", + "Shuffles string. One permutation of all possible is created" + ], + "str_split": [ + "array str_split(string str [, int split_length])", + "Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long." + ], + "str_word_count": [ + "mixed str_word_count(string str, [int format [, string charlist]])", + "Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with \"'\" and \"-\" characters." + ], + "strcasecmp": [ + "int strcasecmp(string str1, string str2)", + "Binary safe case-insensitive string comparison" + ], + "strchr": [ + "string strchr(string haystack, string needle)", + "An alias for strstr" + ], + "strcmp": [ + "int strcmp(string str1, string str2)", + "Binary safe string comparison" + ], + "strcoll": [ + "int strcoll(string str1, string str2)", + "Compares two strings using the current locale" + ], + "strcspn": [ + "int strcspn(string str, string mask [, start [, len]])", + "Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)" + ], + "stream_bucket_append": [ + "void stream_bucket_append(resource brigade, resource bucket)", + "Append bucket to brigade" + ], + "stream_bucket_make_writeable": [ + "object stream_bucket_make_writeable(resource brigade)", + "Return a bucket object from the brigade for operating on" + ], + "stream_bucket_new": [ + "resource stream_bucket_new(resource stream, string buffer)", + "Create a new bucket for use on the current stream" + ], + "stream_bucket_prepend": [ + "void stream_bucket_prepend(resource brigade, resource bucket)", + "Prepend bucket to brigade" + ], + "stream_context_create": [ + "resource stream_context_create([array options[, array params]])", + "Create a file context and optionally set parameters" + ], + "stream_context_get_default": [ + "resource stream_context_get_default([array options])", + "Get a handle on the default file/stream context and optionally set parameters" + ], + "stream_context_get_options": [ + "array stream_context_get_options(resource context|resource stream)", + "Retrieve options for a stream/wrapper/context" + ], + "stream_context_get_params": [ + "array stream_context_get_params(resource context|resource stream)", + "Get parameters of a file context" + ], + "stream_context_set_default": [ + "resource stream_context_set_default(array options)", + "Set default file/stream context, returns the context as a resource" + ], + "stream_context_set_option": [ + "bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)", + "Set an option for a wrapper" + ], + "stream_context_set_params": [ + "bool stream_context_set_params(resource context|resource stream, array options)", + "Set parameters for a file context" + ], + "stream_copy_to_stream": [ + "long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])", + "Reads up to maxlen bytes from source stream and writes them to dest stream." + ], + "stream_filter_append": [ + "resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])", + "Append a filter to a stream" + ], + "stream_filter_prepend": [ + "resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])", + "Prepend a filter to a stream" + ], + "stream_filter_register": [ + "bool stream_filter_register(string filtername, string classname)", + "Registers a custom filter handler class" + ], + "stream_filter_remove": [ + "bool stream_filter_remove(resource stream_filter)", + "Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource" + ], + "stream_get_contents": [ + "string stream_get_contents(resource source [, long maxlen [, long offset]])", + "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string." + ], + "stream_get_filters": [ + "array stream_get_filters(void)", + "Returns a list of registered filters" + ], + "stream_get_line": [ + "string stream_get_line(resource stream, int maxlen [, string ending])", + "Read up to maxlen bytes from a stream or until the ending string is found" + ], + "stream_get_meta_data": [ + "array stream_get_meta_data(resource fp)", + "Retrieves header/meta data from streams/file pointers" + ], + "stream_get_transports": [ + "array stream_get_transports()", + "Retrieves list of registered socket transports" + ], + "stream_get_wrappers": [ + "array stream_get_wrappers()", + "Retrieves list of registered stream wrappers" + ], + "stream_is_local": [ + "bool stream_is_local(resource stream|string url)", + "" + ], + "stream_resolve_include_path": [ + "string stream_resolve_include_path(string filename)", + "Determine what file will be opened by calls to fopen() with a relative path" + ], + "stream_select": [ + "int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])", + "Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec" + ], + "stream_set_blocking": [ + "bool stream_set_blocking(resource socket, int mode)", + "Set blocking/non-blocking mode on a socket or stream" + ], + "stream_set_timeout": [ + "bool stream_set_timeout(resource stream, int seconds [, int microseconds])", + "Set timeout on stream read to seconds + microseonds" + ], + "stream_set_write_buffer": [ + "int stream_set_write_buffer(resource fp, int buffer)", + "Set file write buffer" + ], + "stream_socket_accept": [ + "resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])", + "Accept a client connection from a server socket" + ], + "stream_socket_client": [ + "resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])", + "Open a client connection to a remote address" + ], + "stream_socket_enable_crypto": [ + "int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])", + "Enable or disable a specific kind of crypto on the stream" + ], + "stream_socket_get_name": [ + "string stream_socket_get_name(resource stream, bool want_peer)", + "Returns either the locally bound or remote name for a socket stream" + ], + "stream_socket_pair": [ + "array stream_socket_pair(int domain, int type, int protocol)", + "Creates a pair of connected, indistinguishable socket streams" + ], + "stream_socket_recvfrom": [ + "string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])", + "Receives data from a socket stream" + ], + "stream_socket_sendto": [ + "long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])", + "Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format" + ], + "stream_socket_server": [ + "resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])", + "Create a server socket bound to localaddress" + ], + "stream_socket_shutdown": [ + "int stream_socket_shutdown(resource stream, int how)", + "causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed." + ], + "stream_supports_lock": [ + "bool stream_supports_lock(resource stream)", + "Tells whether the stream supports locking through flock()." + ], + "stream_wrapper_register": [ + "bool stream_wrapper_register(string protocol, string classname[, integer flags])", + "Registers a custom URL protocol handler class" + ], + "stream_wrapper_restore": [ + "bool stream_wrapper_restore(string protocol)", + "Restore the original protocol handler, overriding if necessary" + ], + "stream_wrapper_unregister": [ + "bool stream_wrapper_unregister(string protocol)", + "Unregister a wrapper for the life of the current request." + ], + "strftime": [ + "string strftime(string format [, int timestamp])", + "Format a local time/date according to locale settings" + ], + "strip_tags": [ + "string strip_tags(string str [, string allowable_tags])", + "Strips HTML and PHP tags from a string" + ], + "stripcslashes": [ + "string stripcslashes(string str)", + "Strips backslashes from a string. Uses C-style conventions" + ], + "stripos": [ + "int stripos(string haystack, string needle [, int offset])", + "Finds position of first occurrence of a string within another, case insensitive" + ], + "stripslashes": [ + "string stripslashes(string str)", + "Strips backslashes from a string" + ], + "stristr": [ + "string stristr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another, case insensitive" + ], + "strlen": [ + "int strlen(string str)", + "Get string length" + ], + "strnatcasecmp": [ + "int strnatcasecmp(string s1, string s2)", + "Returns the result of case-insensitive string comparison using 'natural' algorithm" + ], + "strnatcmp": [ + "int strnatcmp(string s1, string s2)", + "Returns the result of string comparison using 'natural' algorithm" + ], + "strncasecmp": [ + "int strncasecmp(string str1, string str2, int len)", + "Binary safe string comparison" + ], + "strncmp": [ + "int strncmp(string str1, string str2, int len)", + "Binary safe string comparison" + ], + "strpbrk": [ + "array strpbrk(string haystack, string char_list)", + "Search a string for any of a set of characters" + ], + "strpos": [ + "int strpos(string haystack, string needle [, int offset])", + "Finds position of first occurrence of a string within another" + ], + "strptime": [ + "string strptime(string timestamp, string format)", + "Parse a time/date generated with strftime()" + ], + "strrchr": [ + "string strrchr(string haystack, string needle)", + "Finds the last occurrence of a character in a string within another" + ], + "strrev": [ + "string strrev(string str)", + "Reverse a string" + ], + "strripos": [ + "int strripos(string haystack, string needle [, int offset])", + "Finds position of last occurrence of a string within another string" + ], + "strrpos": [ + "int strrpos(string haystack, string needle [, int offset])", + "Finds position of last occurrence of a string within another string" + ], + "strspn": [ + "int strspn(string str, string mask [, start [, len]])", + "Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)" + ], + "strstr": [ + "string strstr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "strtok": [ + "string strtok([string str,] string token)", + "Tokenize a string" + ], + "strtolower": [ + "string strtolower(string str)", + "Makes a string lowercase" + ], + "strtotime": [ + "int strtotime(string time [, int now ])", + "Convert string representation of date and time to a timestamp" + ], + "strtoupper": [ + "string strtoupper(string str)", + "Makes a string uppercase" + ], + "strtr": [ + "string strtr(string str, string from[, string to])", + "Translates characters in str using given translation tables" + ], + "strval": [ + "string strval(mixed var)", + "Get the string value of a variable" + ], + "substr": [ + "string substr(string str, int start [, int length])", + "Returns part of a string" + ], + "substr_compare": [ + "int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])", + "Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters" + ], + "substr_count": [ + "int substr_count(string haystack, string needle [, int offset [, int length]])", + "Returns the number of times a substring occurs in the string" + ], + "substr_replace": [ + "mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])", + "Replaces part of a string with another string" + ], + "sybase_affected_rows": [ + "int sybase_affected_rows([resource link_id])", + "Get number of affected rows in last query" + ], + "sybase_close": [ + "bool sybase_close([resource link_id])", + "Close Sybase connection" + ], + "sybase_connect": [ + "int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])", + "Open Sybase server connection" + ], + "sybase_data_seek": [ + "bool sybase_data_seek(resource result, int offset)", + "Move internal row pointer" + ], + "sybase_deadlock_retry_count": [ + "void sybase_deadlock_retry_count(int retry_count)", + "Sets deadlock retry count" + ], + "sybase_fetch_array": [ + "array sybase_fetch_array(resource result)", + "Fetch row as array" + ], + "sybase_fetch_assoc": [ + "array sybase_fetch_assoc(resource result)", + "Fetch row as array without numberic indices" + ], + "sybase_fetch_field": [ + "object sybase_fetch_field(resource result [, int offset])", + "Get field information" + ], + "sybase_fetch_object": [ + "object sybase_fetch_object(resource result [, mixed object])", + "Fetch row as object" + ], + "sybase_fetch_row": [ + "array sybase_fetch_row(resource result)", + "Get row as enumerated array" + ], + "sybase_field_seek": [ + "bool sybase_field_seek(resource result, int offset)", + "Set field offset" + ], + "sybase_free_result": [ + "bool sybase_free_result(resource result)", + "Free result memory" + ], + "sybase_get_last_message": [ + "string sybase_get_last_message(void)", + "Returns the last message from server (over min_message_severity)" + ], + "sybase_min_client_severity": [ + "void sybase_min_client_severity(int severity)", + "Sets minimum client severity" + ], + "sybase_min_server_severity": [ + "void sybase_min_server_severity(int severity)", + "Sets minimum server severity" + ], + "sybase_num_fields": [ + "int sybase_num_fields(resource result)", + "Get number of fields in result" + ], + "sybase_num_rows": [ + "int sybase_num_rows(resource result)", + "Get number of rows in result" + ], + "sybase_pconnect": [ + "int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])", + "Open persistent Sybase connection" + ], + "sybase_query": [ + "int sybase_query(string query [, resource link_id])", + "Send Sybase query" + ], + "sybase_result": [ + "string sybase_result(resource result, int row, mixed field)", + "Get result data" + ], + "sybase_select_db": [ + "bool sybase_select_db(string database [, resource link_id])", + "Select Sybase database" + ], + "sybase_set_message_handler": [ + "bool sybase_set_message_handler(mixed error_func [, resource connection])", + "Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted" + ], + "sybase_unbuffered_query": [ + "int sybase_unbuffered_query(string query [, resource link_id])", + "Send Sybase query" + ], + "symlink": [ + "int symlink(string target, string link)", + "Create a symbolic link" + ], + "sys_get_temp_dir": [ + "string sys_get_temp_dir()", + "Returns directory path used for temporary files" + ], + "sys_getloadavg": [ + "array sys_getloadavg()", + "" + ], + "syslog": [ + "bool syslog(int priority, string message)", + "Generate a system log message" + ], + "system": [ + "int system(string command [, int &return_value])", + "Execute an external program and display output" + ], + "tan": [ + "float tan(float number)", + "Returns the tangent of the number in radians" + ], + "tanh": [ + "float tanh(float number)", + "Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)" + ], + "tempnam": [ + "string tempnam(string dir, string prefix)", + "Create a unique filename in a directory" + ], + "textdomain": [ + "string textdomain(string domain)", + "Set the textdomain to \"domain\". Returns the current domain" + ], + "tidy_access_count": [ + "int tidy_access_count()", + "Returns the Number of Tidy accessibility warnings encountered for specified document." + ], + "tidy_clean_repair": [ + "boolean tidy_clean_repair()", + "Execute configured cleanup and repair operations on parsed markup" + ], + "tidy_config_count": [ + "int tidy_config_count()", + "Returns the Number of Tidy configuration errors encountered for specified document." + ], + "tidy_diagnose": [ + "boolean tidy_diagnose()", + "Run configured diagnostics on parsed and repaired markup." + ], + "tidy_error_count": [ + "int tidy_error_count()", + "Returns the Number of Tidy errors encountered for specified document." + ], + "tidy_get_body": [ + "TidyNode tidy_get_body(resource tidy)", + "Returns a TidyNode Object starting from the <BODY> tag of the tidy parse tree" + ], + "tidy_get_config": [ + "array tidy_get_config()", + "Get current Tidy configuarion" + ], + "tidy_get_error_buffer": [ + "string tidy_get_error_buffer([boolean detailed])", + "Return warnings and errors which occured parsing the specified document" + ], + "tidy_get_head": [ + "TidyNode tidy_get_head()", + "Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree" + ], + "tidy_get_html": [ + "TidyNode tidy_get_html()", + "Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree" + ], + "tidy_get_html_ver": [ + "int tidy_get_html_ver()", + "Get the Detected HTML version for the specified document." + ], + "tidy_get_opt_doc": [ + "string tidy_get_opt_doc(tidy resource, string optname)", + "Returns the documentation for the given option name" + ], + "tidy_get_output": [ + "string tidy_get_output()", + "Return a string representing the parsed tidy markup" + ], + "tidy_get_release": [ + "string tidy_get_release()", + "Get release date (version) for Tidy library" + ], + "tidy_get_root": [ + "TidyNode tidy_get_root()", + "Returns a TidyNode Object representing the root of the tidy parse tree" + ], + "tidy_get_status": [ + "int tidy_get_status()", + "Get status of specfied document." + ], + "tidy_getopt": [ + "mixed tidy_getopt(string option)", + "Returns the value of the specified configuration option for the tidy document." + ], + "tidy_is_xhtml": [ + "boolean tidy_is_xhtml()", + "Indicates if the document is a XHTML document." + ], + "tidy_is_xml": [ + "boolean tidy_is_xml()", + "Indicates if the document is a generic (non HTML/XHTML) XML document." + ], + "tidy_parse_file": [ + "boolean tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", + "Parse markup in file or URI" + ], + "tidy_parse_string": [ + "bool tidy_parse_string(string input [, mixed config_options [, string encoding]])", + "Parse a document stored in a string" + ], + "tidy_repair_file": [ + "boolean tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", + "Repair a file using an optionally provided configuration file" + ], + "tidy_repair_string": [ + "boolean tidy_repair_string(string data [, mixed config_file [, string encoding]])", + "Repair a string using an optionally provided configuration file" + ], + "tidy_warning_count": [ + "int tidy_warning_count()", + "Returns the Number of Tidy warnings encountered for specified document." + ], + "time": [ + "int time(void)", + "Return current UNIX timestamp" + ], + "time_nanosleep": [ + "mixed time_nanosleep(long seconds, long nanoseconds)", + "Delay for a number of seconds and nano seconds" + ], + "time_sleep_until": [ + "mixed time_sleep_until(float timestamp)", + "Make the script sleep until the specified time" + ], + "timezone_abbreviations_list": [ + "array timezone_abbreviations_list()", + "Returns associative array containing dst, offset and the timezone name" + ], + "timezone_identifiers_list": [ + "array timezone_identifiers_list([long what[, string country]])", + "Returns numerically index array with all timezone identifiers." + ], + "timezone_location_get": [ + "array timezone_location_get()", + "Returns location information for a timezone, including country code, latitude/longitude and comments" + ], + "timezone_name_from_abbr": [ + "string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])", + "Returns the timezone name from abbrevation" + ], + "timezone_name_get": [ + "string timezone_name_get(DateTimeZone object)", + "Returns the name of the timezone." + ], + "timezone_offset_get": [ + "long timezone_offset_get(DateTimeZone object, DateTime object)", + "Returns the timezone offset." + ], + "timezone_open": [ + "DateTimeZone timezone_open(string timezone)", + "Returns new DateTimeZone object" + ], + "timezone_transitions_get": [ + "array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])", + "Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone." + ], + "timezone_version_get": [ + "array timezone_version_get()", + "Returns the Olson database version number." + ], + "tmpfile": [ + "resource tmpfile(void)", + "Create a temporary file that will be deleted automatically after use" + ], + "token_get_all": [ + "array token_get_all(string source)", + "" + ], + "token_name": [ + "string token_name(int type)", + "" + ], + "touch": [ + "bool touch(string filename [, int time [, int atime]])", + "Set modification time of file" + ], + "trigger_error": [ + "void trigger_error(string messsage [, int error_type])", + "Generates a user-level error/warning/notice message" + ], + "trim": [ + "string trim(string str [, string character_mask])", + "Strips whitespace from the beginning and end of a string" + ], + "uasort": [ + "bool uasort(array array_arg, string cmp_function)", + "Sort an array with a user-defined comparison function and maintain index association" + ], + "ucfirst": [ + "string ucfirst(string str)", + "Make a string's first character lowercase" + ], + "ucwords": [ + "string ucwords(string str)", + "Uppercase the first character of every word in a string" + ], + "uksort": [ + "bool uksort(array array_arg, string cmp_function)", + "Sort an array by keys using a user-defined comparison function" + ], + "umask": [ + "int umask([int mask])", + "Return or change the umask" + ], + "uniqid": [ + "string uniqid([string prefix [, bool more_entropy]])", + "Generates a unique ID" + ], + "unixtojd": [ + "int unixtojd([int timestamp])", + "Convert UNIX timestamp to Julian Day" + ], + "unlink": [ + "bool unlink(string filename[, context context])", + "Delete a file" + ], + "unpack": [ + "array unpack(string format, string input)", + "Unpack binary string into named array elements according to format argument" + ], + "unregister_tick_function": [ + "void unregister_tick_function(string function_name)", + "Unregisters a tick callback function" + ], + "unserialize": [ + "mixed unserialize(string variable_representation)", + "Takes a string representation of variable and recreates it" + ], + "unset": [ + "void unset (mixed var [, mixed var])", + "Unset a given variable" + ], + "urldecode": [ + "string urldecode(string str)", + "Decodes URL-encoded string" + ], + "urlencode": [ + "string urlencode(string str)", + "URL-encodes string" + ], + "usleep": [ + "void usleep(int micro_seconds)", + "Delay for a given number of micro seconds" + ], + "usort": [ + "bool usort(array array_arg, string cmp_function)", + "Sort an array by values using a user-defined comparison function" + ], + "utf8_decode": [ + "string utf8_decode(string data)", + "Converts a UTF-8 encoded string to ISO-8859-1" + ], + "utf8_encode": [ + "string utf8_encode(string data)", + "Encodes an ISO-8859-1 string to UTF-8" + ], + "var_dump": [ + "void var_dump(mixed var)", + "Dumps a string representation of variable to output" + ], + "var_export": [ + "mixed var_export(mixed var [, bool return])", + "Outputs or returns a string representation of a variable" + ], + "variant_abs": [ + "mixed variant_abs(mixed left)", + "Returns the absolute value of a variant" + ], + "variant_add": [ + "mixed variant_add(mixed left, mixed right)", + "\"Adds\" two variant values together and returns the result" + ], + "variant_and": [ + "mixed variant_and(mixed left, mixed right)", + "performs a bitwise AND operation between two variants and returns the result" + ], + "variant_cast": [ + "object variant_cast(object variant, int type)", + "Convert a variant into a new variant object of another type" + ], + "variant_cat": [ + "mixed variant_cat(mixed left, mixed right)", + "concatenates two variant values together and returns the result" + ], + "variant_cmp": [ + "int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])", + "Compares two variants" + ], + "variant_date_from_timestamp": [ + "object variant_date_from_timestamp(int timestamp)", + "Returns a variant date representation of a unix timestamp" + ], + "variant_date_to_timestamp": [ + "int variant_date_to_timestamp(object variant)", + "Converts a variant date/time value to unix timestamp" + ], + "variant_div": [ + "mixed variant_div(mixed left, mixed right)", + "Returns the result from dividing two variants" + ], + "variant_eqv": [ + "mixed variant_eqv(mixed left, mixed right)", + "Performs a bitwise equivalence on two variants" + ], + "variant_fix": [ + "mixed variant_fix(mixed left)", + "Returns the integer part ? of a variant" + ], + "variant_get_type": [ + "int variant_get_type(object variant)", + "Returns the VT_XXX type code for a variant" + ], + "variant_idiv": [ + "mixed variant_idiv(mixed left, mixed right)", + "Converts variants to integers and then returns the result from dividing them" + ], + "variant_imp": [ + "mixed variant_imp(mixed left, mixed right)", + "Performs a bitwise implication on two variants" + ], + "variant_int": [ + "mixed variant_int(mixed left)", + "Returns the integer portion of a variant" + ], + "variant_mod": [ + "mixed variant_mod(mixed left, mixed right)", + "Divides two variants and returns only the remainder" + ], + "variant_mul": [ + "mixed variant_mul(mixed left, mixed right)", + "multiplies the values of the two variants and returns the result" + ], + "variant_neg": [ + "mixed variant_neg(mixed left)", + "Performs logical negation on a variant" + ], + "variant_not": [ + "mixed variant_not(mixed left)", + "Performs bitwise not negation on a variant" + ], + "variant_or": [ + "mixed variant_or(mixed left, mixed right)", + "Performs a logical disjunction on two variants" + ], + "variant_pow": [ + "mixed variant_pow(mixed left, mixed right)", + "Returns the result of performing the power function with two variants" + ], + "variant_round": [ + "mixed variant_round(mixed left, int decimals)", + "Rounds a variant to the specified number of decimal places" + ], + "variant_set": [ + "void variant_set(object variant, mixed value)", + "Assigns a new value for a variant object" + ], + "variant_set_type": [ + "void variant_set_type(object variant, int type)", + "Convert a variant into another type. Variant is modified \"in-place\"" + ], + "variant_sub": [ + "mixed variant_sub(mixed left, mixed right)", + "subtracts the value of the right variant from the left variant value and returns the result" + ], + "variant_xor": [ + "mixed variant_xor(mixed left, mixed right)", + "Performs a logical exclusion on two variants" + ], + "version_compare": [ + "int version_compare(string ver1, string ver2 [, string oper])", + "Compares two \"PHP-standardized\" version number strings" + ], + "vfprintf": [ + "int vfprintf(resource stream, string format, array args)", + "Output a formatted string into a stream" + ], + "virtual": [ + "bool virtual(string filename)", + "Perform an Apache sub-request" + ], + "vprintf": [ + "int vprintf(string format, array args)", + "Output a formatted string" + ], + "vsprintf": [ + "string vsprintf(string format, array args)", + "Return a formatted string" + ], + "wddx_add_vars": [ + "int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])", + "Serializes given variables and adds them to packet given by packet_id" + ], + "wddx_deserialize": [ + "mixed wddx_deserialize(mixed packet)", + "Deserializes given packet and returns a PHP value" + ], + "wddx_packet_end": [ + "string wddx_packet_end(resource packet_id)", + "Ends specified WDDX packet and returns the string containing the packet" + ], + "wddx_packet_start": [ + "resource wddx_packet_start([string comment])", + "Starts a WDDX packet with optional comment and returns the packet id" + ], + "wddx_serialize_value": [ + "string wddx_serialize_value(mixed var [, string comment])", + "Creates a new packet and serializes the given value" + ], + "wddx_serialize_vars": [ + "string wddx_serialize_vars(mixed var_name [, mixed ...])", + "Creates a new packet and serializes given variables into a struct" + ], + "wordwrap": [ + "string wordwrap(string str [, int width [, string break [, boolean cut]]])", + "Wraps buffer to selected number of characters using string break char" + ], + "xml_error_string": [ + "string xml_error_string(int code)", + "Get XML parser error string" + ], + "xml_get_current_byte_index": [ + "int xml_get_current_byte_index(resource parser)", + "Get current byte index for an XML parser" + ], + "xml_get_current_column_number": [ + "int xml_get_current_column_number(resource parser)", + "Get current column number for an XML parser" + ], + "xml_get_current_line_number": [ + "int xml_get_current_line_number(resource parser)", + "Get current line number for an XML parser" + ], + "xml_get_error_code": [ + "int xml_get_error_code(resource parser)", + "Get XML parser error code" + ], + "xml_parse": [ + "int xml_parse(resource parser, string data [, int isFinal])", + "Start parsing an XML document" + ], + "xml_parse_into_struct": [ + "int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])", + "Parsing a XML document" + ], + "xml_parser_create": [ + "resource xml_parser_create([string encoding])", + "Create an XML parser" + ], + "xml_parser_create_ns": [ + "resource xml_parser_create_ns([string encoding [, string sep]])", + "Create an XML parser" + ], + "xml_parser_free": [ + "int xml_parser_free(resource parser)", + "Free an XML parser" + ], + "xml_parser_get_option": [ + "int xml_parser_get_option(resource parser, int option)", + "Get options from an XML parser" + ], + "xml_parser_set_option": [ + "int xml_parser_set_option(resource parser, int option, mixed value)", + "Set options in an XML parser" + ], + "xml_set_character_data_handler": [ + "int xml_set_character_data_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_default_handler": [ + "int xml_set_default_handler(resource parser, string hdl)", + "Set up default handler" + ], + "xml_set_element_handler": [ + "int xml_set_element_handler(resource parser, string shdl, string ehdl)", + "Set up start and end element handlers" + ], + "xml_set_end_namespace_decl_handler": [ + "int xml_set_end_namespace_decl_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_external_entity_ref_handler": [ + "int xml_set_external_entity_ref_handler(resource parser, string hdl)", + "Set up external entity reference handler" + ], + "xml_set_notation_decl_handler": [ + "int xml_set_notation_decl_handler(resource parser, string hdl)", + "Set up notation declaration handler" + ], + "xml_set_object": [ + "int xml_set_object(resource parser, object &obj)", + "Set up object which should be used for callbacks" + ], + "xml_set_processing_instruction_handler": [ + "int xml_set_processing_instruction_handler(resource parser, string hdl)", + "Set up processing instruction (PI) handler" + ], + "xml_set_start_namespace_decl_handler": [ + "int xml_set_start_namespace_decl_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_unparsed_entity_decl_handler": [ + "int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)", + "Set up unparsed entity declaration handler" + ], + "xmlrpc_decode": [ + "array xmlrpc_decode(string xml [, string encoding])", + "Decodes XML into native PHP types" + ], + "xmlrpc_decode_request": [ + "array xmlrpc_decode_request(string xml, string& method [, string encoding])", + "Decodes XML into native PHP types" + ], + "xmlrpc_encode": [ + "string xmlrpc_encode(mixed value)", + "Generates XML for a PHP value" + ], + "xmlrpc_encode_request": [ + "string xmlrpc_encode_request(string method, mixed params [, array output_options])", + "Generates XML for a method request" + ], + "xmlrpc_get_type": [ + "string xmlrpc_get_type(mixed value)", + "Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings" + ], + "xmlrpc_is_fault": [ + "bool xmlrpc_is_fault(array)", + "Determines if an array value represents an XMLRPC fault." + ], + "xmlrpc_parse_method_descriptions": [ + "array xmlrpc_parse_method_descriptions(string xml)", + "Decodes XML into a list of method descriptions" + ], + "xmlrpc_server_add_introspection_data": [ + "int xmlrpc_server_add_introspection_data(resource server, array desc)", + "Adds introspection documentation" + ], + "xmlrpc_server_call_method": [ + "mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])", + "Parses XML requests and call methods" + ], + "xmlrpc_server_create": [ + "resource xmlrpc_server_create(void)", + "Creates an xmlrpc server" + ], + "xmlrpc_server_destroy": [ + "int xmlrpc_server_destroy(resource server)", + "Destroys server resources" + ], + "xmlrpc_server_register_introspection_callback": [ + "bool xmlrpc_server_register_introspection_callback(resource server, string function)", + "Register a PHP function to generate documentation" + ], + "xmlrpc_server_register_method": [ + "bool xmlrpc_server_register_method(resource server, string method_name, string function)", + "Register a PHP function to handle method matching method_name" + ], + "xmlrpc_set_type": [ + "bool xmlrpc_set_type(string value, string type)", + "Sets xmlrpc type, base64 or datetime, for a PHP string value" + ], + "xmlwriter_end_attribute": [ + "bool xmlwriter_end_attribute(resource xmlwriter)", + "End attribute - returns FALSE on error" + ], + "xmlwriter_end_cdata": [ + "bool xmlwriter_end_cdata(resource xmlwriter)", + "End current CDATA - returns FALSE on error" + ], + "xmlwriter_end_comment": [ + "bool xmlwriter_end_comment(resource xmlwriter)", + "Create end comment - returns FALSE on error" + ], + "xmlwriter_end_document": [ + "bool xmlwriter_end_document(resource xmlwriter)", + "End current document - returns FALSE on error" + ], + "xmlwriter_end_dtd": [ + "bool xmlwriter_end_dtd(resource xmlwriter)", + "End current DTD - returns FALSE on error" + ], + "xmlwriter_end_dtd_attlist": [ + "bool xmlwriter_end_dtd_attlist(resource xmlwriter)", + "End current DTD AttList - returns FALSE on error" + ], + "xmlwriter_end_dtd_element": [ + "bool xmlwriter_end_dtd_element(resource xmlwriter)", + "End current DTD element - returns FALSE on error" + ], + "xmlwriter_end_dtd_entity": [ + "bool xmlwriter_end_dtd_entity(resource xmlwriter)", + "End current DTD Entity - returns FALSE on error" + ], + "xmlwriter_end_element": [ + "bool xmlwriter_end_element(resource xmlwriter)", + "End current element - returns FALSE on error" + ], + "xmlwriter_end_pi": [ + "bool xmlwriter_end_pi(resource xmlwriter)", + "End current PI - returns FALSE on error" + ], + "xmlwriter_flush": [ + "mixed xmlwriter_flush(resource xmlwriter [,bool empty])", + "Output current buffer" + ], + "xmlwriter_full_end_element": [ + "bool xmlwriter_full_end_element(resource xmlwriter)", + "End current element - returns FALSE on error" + ], + "xmlwriter_open_memory": [ + "resource xmlwriter_open_memory()", + "Create new xmlwriter using memory for string output" + ], + "xmlwriter_open_uri": [ + "resource xmlwriter_open_uri(resource xmlwriter, string source)", + "Create new xmlwriter using source uri for output" + ], + "xmlwriter_output_memory": [ + "string xmlwriter_output_memory(resource xmlwriter [,bool flush])", + "Output current buffer as string" + ], + "xmlwriter_set_indent": [ + "bool xmlwriter_set_indent(resource xmlwriter, bool indent)", + "Toggle indentation on/off - returns FALSE on error" + ], + "xmlwriter_set_indent_string": [ + "bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)", + "Set string used for indenting - returns FALSE on error" + ], + "xmlwriter_start_attribute": [ + "bool xmlwriter_start_attribute(resource xmlwriter, string name)", + "Create start attribute - returns FALSE on error" + ], + "xmlwriter_start_attribute_ns": [ + "bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)", + "Create start namespaced attribute - returns FALSE on error" + ], + "xmlwriter_start_cdata": [ + "bool xmlwriter_start_cdata(resource xmlwriter)", + "Create start CDATA tag - returns FALSE on error" + ], + "xmlwriter_start_comment": [ + "bool xmlwriter_start_comment(resource xmlwriter)", + "Create start comment - returns FALSE on error" + ], + "xmlwriter_start_document": [ + "bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)", + "Create document tag - returns FALSE on error" + ], + "xmlwriter_start_dtd": [ + "bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)", + "Create start DTD tag - returns FALSE on error" + ], + "xmlwriter_start_dtd_attlist": [ + "bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)", + "Create start DTD AttList - returns FALSE on error" + ], + "xmlwriter_start_dtd_element": [ + "bool xmlwriter_start_dtd_element(resource xmlwriter, string name)", + "Create start DTD element - returns FALSE on error" + ], + "xmlwriter_start_dtd_entity": [ + "bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)", + "Create start DTD Entity - returns FALSE on error" + ], + "xmlwriter_start_element": [ + "bool xmlwriter_start_element(resource xmlwriter, string name)", + "Create start element tag - returns FALSE on error" + ], + "xmlwriter_start_element_ns": [ + "bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)", + "Create start namespaced element tag - returns FALSE on error" + ], + "xmlwriter_start_pi": [ + "bool xmlwriter_start_pi(resource xmlwriter, string target)", + "Create start PI tag - returns FALSE on error" + ], + "xmlwriter_text": [ + "bool xmlwriter_text(resource xmlwriter, string content)", + "Write text - returns FALSE on error" + ], + "xmlwriter_write_attribute": [ + "bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)", + "Write full attribute - returns FALSE on error" + ], + "xmlwriter_write_attribute_ns": [ + "bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)", + "Write full namespaced attribute - returns FALSE on error" + ], + "xmlwriter_write_cdata": [ + "bool xmlwriter_write_cdata(resource xmlwriter, string content)", + "Write full CDATA tag - returns FALSE on error" + ], + "xmlwriter_write_comment": [ + "bool xmlwriter_write_comment(resource xmlwriter, string content)", + "Write full comment tag - returns FALSE on error" + ], + "xmlwriter_write_dtd": [ + "bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)", + "Write full DTD tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_attlist": [ + "bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)", + "Write full DTD AttList tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_element": [ + "bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)", + "Write full DTD element tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_entity": [ + "bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])", + "Write full DTD Entity tag - returns FALSE on error" + ], + "xmlwriter_write_element": [ + "bool xmlwriter_write_element(resource xmlwriter, string name[, string content])", + "Write full element tag - returns FALSE on error" + ], + "xmlwriter_write_element_ns": [ + "bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", + "Write full namesapced element tag - returns FALSE on error" + ], + "xmlwriter_write_pi": [ + "bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", + "Write full PI tag - returns FALSE on error" + ], + "xmlwriter_write_raw": [ + "bool xmlwriter_write_raw(resource xmlwriter, string content)", + "Write text - returns FALSE on error" + ], + "xsl_xsltprocessor_get_parameter": [ + "string xsl_xsltprocessor_get_parameter(string namespace, string name);", + "" + ], + "xsl_xsltprocessor_has_exslt_support": [ + "bool xsl_xsltprocessor_has_exslt_support();", + "" + ], + "xsl_xsltprocessor_import_stylesheet": [ + "void xsl_xsltprocessor_import_stylesheet(domdocument doc);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:" + ], + "xsl_xsltprocessor_register_php_functions": [ + "void xsl_xsltprocessor_register_php_functions([mixed $restrict]);", + "" + ], + "xsl_xsltprocessor_remove_parameter": [ + "bool xsl_xsltprocessor_remove_parameter(string namespace, string name);", + "" + ], + "xsl_xsltprocessor_set_parameter": [ + "bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value]);", + "" + ], + "xsl_xsltprocessor_set_profiling": [ + "bool xsl_xsltprocessor_set_profiling(string filename) */", + "PHP_FUNCTION(xsl_xsltprocessor_set_profiling) { zval *id; xsl_object *intern; char *filename = NULL; int filename_len; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"s!\", &filename, &filename_len) == SUCCESS) { intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern->profiling) { efree(intern->profiling); } if (filename != NULL) { intern->profiling = estrndup(filename,filename_len); } else { intern->profiling = NULL; } RETURN_TRUE; } else { WRONG_PARAM_COUNT; } } /* }}} end xsl_xsltprocessor_set_profiling" + ], + "xsl_xsltprocessor_transform_to_doc": [ + "domdocument xsl_xsltprocessor_transform_to_doc(domnode doc);", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:" + ], + "xsl_xsltprocessor_transform_to_uri": [ + "int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri);", + "" + ], + "xsl_xsltprocessor_transform_to_xml": [ + "string xsl_xsltprocessor_transform_to_xml(domdocument doc);", + "" + ], + "zend_logo_guid": [ + "string zend_logo_guid(void)", + "Return the special ID used to request the Zend logo in phpinfo screens" + ], + "zend_version": [ + "string zend_version(void)", + "Get the version of the Zend Engine" + ], + "zip_close": [ + "void zip_close(resource zip)", + "Close a Zip archive" + ], + "zip_entry_close": [ + "void zip_entry_close(resource zip_ent)", + "Close a zip entry" + ], + "zip_entry_compressedsize": [ + "int zip_entry_compressedsize(resource zip_entry)", + "Return the compressed size of a ZZip entry" + ], + "zip_entry_compressionmethod": [ + "string zip_entry_compressionmethod(resource zip_entry)", + "Return a string containing the compression method used on a particular entry" + ], + "zip_entry_filesize": [ + "int zip_entry_filesize(resource zip_entry)", + "Return the actual filesize of a ZZip entry" + ], + "zip_entry_name": [ + "string zip_entry_name(resource zip_entry)", + "Return the name given a ZZip entry" + ], + "zip_entry_open": [ + "bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])", + "Open a Zip File, pointed by the resource entry" + ], + "zip_entry_read": [ + "mixed zip_entry_read(resource zip_entry [, int len])", + "Read from an open directory entry" + ], + "zip_open": [ + "resource zip_open(string filename)", + "Create new zip using source uri for output" + ], + "zip_read": [ + "resource zip_read(resource zip)", + "Returns the next file in the archive" + ], + "zlib_get_coding_type": [ + "string zlib_get_coding_type(void)", + "Returns the coding type used for output compression" + ] +}; + +var variableMap = { + "$_COOKIE": { + type: "array" + }, + "$_ENV": { + type: "array" + }, + "$_FILES": { + type: "array" + }, + "$_GET": { + type: "array" + }, + "$_POST": { + type: "array" + }, + "$_REQUEST": { + type: "array" + }, + "$_SERVER": { + type: "array", + value: { + "DOCUMENT_ROOT": 1, + "GATEWAY_INTERFACE": 1, + "HTTP_ACCEPT": 1, + "HTTP_ACCEPT_CHARSET": 1, + "HTTP_ACCEPT_ENCODING": 1 , + "HTTP_ACCEPT_LANGUAGE": 1, + "HTTP_CONNECTION": 1, + "HTTP_HOST": 1, + "HTTP_REFERER": 1, + "HTTP_USER_AGENT": 1, + "PATH_TRANSLATED": 1, + "PHP_SELF": 1, + "QUERY_STRING": 1, + "REMOTE_ADDR": 1, + "REMOTE_PORT": 1, + "REQUEST_METHOD": 1, + "REQUEST_URI": 1, + "SCRIPT_FILENAME": 1, + "SCRIPT_NAME": 1, + "SERVER_ADMIN": 1, + "SERVER_NAME": 1, + "SERVER_PORT": 1, + "SERVER_PROTOCOL": 1, + "SERVER_SIGNATURE": 1, + "SERVER_SOFTWARE": 1 + } + }, + "$_SESSION": { + type: "array" + }, + "$GLOBALS": { + type: "array" + } +}; + +function is(token, type) { + return token.type.lastIndexOf(type) > -1; +} + +var PhpCompletions = function() { + +}; + +(function() { + + this.getCompletions = function(state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + + if (!token) + return []; + + // php function + if (token.type==='identifier') + return this.getFunctionCompletions(state, session, pos, prefix); + + // php variable + if (is(token, "variable")) + return this.getVariableCompletions(state, session, pos, prefix); + + // php array key + var line = session.getLine(pos.row).substr(0, pos.column); + if (token.type==='string' && /(\$[\w]*)\[["']([^'"]*)$/i.test(line)) + return this.getArrayKeyCompletions(state, session, pos, prefix); + + return []; + }; + + this.getFunctionCompletions = function(state, session, pos, prefix) { + var functions = Object.keys(functionMap); + return functions.map(function(func){ + return { + caption: func, + snippet: func + '($0)', + meta: "php function", + score: Number.MAX_VALUE, + docHTML: functionMap[func][1] + }; + }); + }; + + this.getVariableCompletions = function(state, session, pos, prefix) { + var variables = Object.keys(variableMap); + return variables.map(function(variable){ + return { + caption: variable, + value: variable, + meta: "php variable", + score: Number.MAX_VALUE + }; + }); + }; + + this.getArrayKeyCompletions = function(state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var variable = line.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1]; + + if (!variableMap[variable]) { + return []; + } + + var keys = []; + if (variableMap[variable].type==='array' && variableMap[variable].value) + keys = Object.keys(variableMap[variable].value); + + return keys.map(function(key) { + return { + caption: key, + value: key, + meta: "php array key", + score: Number.MAX_VALUE + }; + }); + }; + +}).call(PhpCompletions.prototype); + +exports.PhpCompletions = PhpCompletions; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/php_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/php_highlight_rules.js new file mode 100644 index 00000000..8420d150 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/php_highlight_rules.js @@ -0,0 +1,1100 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + +var PhpLangHighlightRules = function() { + var docComment = DocCommentHighlightRules; + // http://php.net/quickref.php + var builtinFunctions = lang.arrayToMap( + ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' + + 'aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|' + + 'apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|' + + 'apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|' + + 'apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|' + + 'apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|' + + 'apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|' + + 'apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|' + + 'array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|' + + 'array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|' + + 'array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|' + + 'array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|' + + 'array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|' + + 'array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|' + + 'atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|' + + 'bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|' + + 'bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|' + + 'bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|' + + 'bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|' + + 'bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|' + + 'cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|' + + 'cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|' + + 'cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|' + + 'cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|' + + 'cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|' + + 'cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|' + + 'cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|' + + 'cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|' + + 'cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|' + + 'cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|' + + 'cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|' + + 'cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|' + + 'cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|' + + 'cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|' + + 'cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|' + + 'cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|' + + 'cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|' + + 'cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|' + + 'cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|' + + 'cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|' + + 'cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|' + + 'cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|' + + 'cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|' + + 'cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|' + + 'cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|' + + 'cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|' + + 'cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|' + + 'cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|' + + 'chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|' + + 'class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|' + + 'classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|' + + 'com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|' + + 'com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|' + + 'convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|' + + 'counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|' + + 'crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|' + + 'ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|' + + 'cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|' + + 'cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|' + + 'cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|' + + 'cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|' + + 'cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|' + + 'cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|' + + 'cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|' + + 'cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|' + + 'cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|' + + 'cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|' + + 'cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|' + + 'curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|' + + 'curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|' + + 'curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|' + + 'date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|' + + 'date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|' + + 'date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|' + + 'dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|' + + 'db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|' + + 'db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|' + + 'db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|' + + 'db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|' + + 'db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|' + + 'db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|' + + 'dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|' + + 'dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|' + + 'dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|' + + 'dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|' + + 'dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|' + + 'dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|' + + 'dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|' + + 'dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|' + + 'dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|' + + 'define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|' + + 'dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|' + + 'dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|' + + 'domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|' + + 'domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|' + + 'domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|' + + 'domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|' + + 'domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|' + + 'domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|' + + 'domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|' + + 'domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|' + + 'domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|' + + 'domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|' + + 'domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|' + + 'domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|' + + 'domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|' + + 'domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|' + + 'domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|' + + 'domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|' + + 'domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|' + + 'enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|' + + 'enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|' + + 'enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|' + + 'enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|' + + 'eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|' + + 'event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|' + + 'event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|' + + 'event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|' + + 'event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|' + + 'expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|' + + 'fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|' + + 'fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|' + + 'fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|' + + 'fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|' + + 'fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|' + + 'fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|' + + 'fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|' + + 'fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|' + + 'fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|' + + 'fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|' + + 'fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|' + + 'fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|' + + 'fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|' + + 'file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|' + + 'filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|' + + 'filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|' + + 'finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|' + + 'forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|' + + 'ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|' + + 'ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|' + + 'ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|' + + 'func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|' + + 'gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|' + + 'geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|' + + 'geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|' + + 'get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|' + + 'get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|' + + 'get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|' + + 'get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|' + + 'getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|' + + 'gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|' + + 'getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|' + + 'getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|' + + 'gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|' + + 'gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|' + + 'gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|' + + 'gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|' + + 'gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|' + + 'gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|' + + 'gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|' + + 'grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|' + + 'gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|' + + 'gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|' + + 'gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|' + + 'gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|' + + 'gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|' + + 'gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|' + + 'gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|' + + 'gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|' + + 'gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|' + + 'gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|' + + 'halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|' + + 'haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|' + + 'harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|' + + 'harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|' + + 'harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|' + + 'harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|' + + 'harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|' + + 'harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|' + + 'harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|' + + 'harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|' + + 'haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|' + + 'harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|' + + 'harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|' + + 'haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|' + + 'haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|' + + 'harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|' + + 'harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|' + + 'harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|' + + 'harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|' + + 'harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|' + + 'harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|' + + 'harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|' + + 'harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|' + + 'harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|' + + 'harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|' + + 'harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|' + + 'harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|' + + 'harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|' + + 'harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|' + + 'hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|' + + 'header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|' + + 'html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|' + + 'http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|' + + 'http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|' + + 'http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|' + + 'http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|' + + 'http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|' + + 'http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|' + + 'http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|' + + 'http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|' + + 'httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|' + + 'httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|' + + 'httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|' + + 'httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|' + + 'httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|' + + 'httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|' + + 'httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|' + + 'httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|' + + 'httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|' + + 'httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|' + + 'httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|' + + 'httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|' + + 'httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|' + + 'httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|' + + 'httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|' + + 'httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|' + + 'httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|' + + 'httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|' + + 'httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|' + + 'httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|' + + 'httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|' + + 'httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|' + + 'httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|' + + 'httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|' + + 'httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|' + + 'httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|' + + 'httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|' + + 'httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|' + + 'httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|' + + 'hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|' + + 'hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|' + + 'hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|' + + 'hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|' + + 'hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|' + + 'hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|' + + 'hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|' + + 'hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|' + + 'hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|' + + 'hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|' + + 'hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|' + + 'hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|' + + 'hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|' + + 'hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|' + + 'ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|' + + 'ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|' + + 'ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|' + + 'ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|' + + 'ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|' + + 'ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|' + + 'ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|' + + 'iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|' + + 'id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|' + + 'idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|' + + 'ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|' + + 'ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|' + + 'ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|' + + 'ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|' + + 'iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|' + + 'iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|' + + 'iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|' + + 'imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|' + + 'imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|' + + 'imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|' + + 'imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|' + + 'imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|' + + 'imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|' + + 'imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|' + + 'imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|' + + 'imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|' + + 'imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|' + + 'imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|' + + 'imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|' + + 'imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|' + + 'imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|' + + 'imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|' + + 'imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|' + + 'imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|' + + 'imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|' + + 'imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|' + + 'imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|' + + 'imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|' + + 'imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|' + + 'imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|' + + 'imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|' + + 'imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|' + + 'imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|' + + 'imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|' + + 'imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|' + + 'imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|' + + 'imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|' + + 'imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|' + + 'imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|' + + 'imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|' + + 'imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|' + + 'imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|' + + 'imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|' + + 'imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|' + + 'imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|' + + 'imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|' + + 'imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|' + + 'imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|' + + 'imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|' + + 'imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|' + + 'imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|' + + 'imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|' + + 'imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|' + + 'imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|' + + 'imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|' + + 'imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|' + + 'imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|' + + 'imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|' + + 'imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|' + + 'imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|' + + 'imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|' + + 'imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|' + + 'imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|' + + 'imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|' + + 'imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|' + + 'imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|' + + 'imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|' + + 'imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|' + + 'imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|' + + 'imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|' + + 'imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|' + + 'imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|' + + 'imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|' + + 'imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|' + + 'imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|' + + 'imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|' + + 'imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|' + + 'imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|' + + 'imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|' + + 'imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|' + + 'imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|' + + 'imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|' + + 'imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|' + + 'imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|' + + 'imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|' + + 'imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|' + + 'imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|' + + 'imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|' + + 'imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|' + + 'imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|' + + 'imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|' + + 'imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|' + + 'imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|' + + 'imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|' + + 'imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|' + + 'imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|' + + 'imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|' + + 'imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|' + + 'imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|' + + 'imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|' + + 'imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|' + + 'imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|' + + 'imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|' + + 'imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|' + + 'imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|' + + 'imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|' + + 'imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|' + + 'imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|' + + 'imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|' + + 'imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|' + + 'imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|' + + 'imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|' + + 'imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|' + + 'imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|' + + 'imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|' + + 'imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|' + + 'imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|' + + 'include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|' + + 'ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|' + + 'ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|' + + 'ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|' + + 'ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|' + + 'ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|' + + 'inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|' + + 'intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|' + + 'is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|' + + 'is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|' + + 'iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|' + + 'iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|' + + 'jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|' + + 'json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|' + + 'kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|' + + 'kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|' + + 'ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|' + + 'ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|' + + 'ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|' + + 'ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|' + + 'ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|' + + 'libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|' + + 'limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|' + + 'lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|' + + 'm_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|' + + 'm_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|' + + 'm_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|' + + 'm_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|' + + 'mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|' + + 'mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|' + + 'mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|' + + 'maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|' + + 'maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|' + + 'maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|' + + 'maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|' + + 'maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|' + + 'maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|' + + 'maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|' + + 'maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|' + + 'maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|' + + 'maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|' + + 'maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|' + + 'maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|' + + 'maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|' + + 'maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|' + + 'maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|' + + 'mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|' + + 'mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|' + + 'mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|' + + 'mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|' + + 'mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|' + + 'mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|' + + 'mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|' + + 'mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|' + + 'mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|' + + 'mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|' + + 'mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|' + + 'mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|' + + 'mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|' + + 'mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|' + + 'mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|' + + 'ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|' + + 'mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|' + + 'mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|' + + 'mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|' + + 'mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|' + + 'mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|' + + 'msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|' + + 'msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|' + + 'msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|' + + 'msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|' + + 'msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|' + + 'msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|' + + 'msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|' + + 'mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|' + + 'mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|' + + 'mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|' + + 'mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|' + + 'mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|' + + 'mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|' + + 'mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|' + + 'mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|' + + 'mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|' + + 'mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|' + + 'mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|' + + 'mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|' + + 'mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|' + + 'mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|' + + 'mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|' + + 'mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|' + + 'mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|' + + 'mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|' + + 'mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|' + + 'mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|' + + 'mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|' + + 'mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|' + + 'mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|' + + 'mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|' + + 'mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|' + + 'mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|' + + 'mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|' + + 'mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|' + + 'mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|' + + 'mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|' + + 'mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|' + + 'mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|' + + 'ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|' + + 'ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|' + + 'ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|' + + 'ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|' + + 'ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|' + + 'ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|' + + 'ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|' + + 'ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|' + + 'ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|' + + 'ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|' + + 'ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|' + + 'ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|' + + 'ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|' + + 'ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|' + + 'ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|' + + 'ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|' + + 'ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|' + + 'ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|' + + 'ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|' + + 'ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|' + + 'ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|' + + 'ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|' + + 'newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|' + + 'newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|' + + 'newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|' + + 'newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|' + + 'newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|' + + 'newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|' + + 'newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|' + + 'newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|' + + 'newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|' + + 'newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|' + + 'newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|' + + 'newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|' + + 'newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|' + + 'newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|' + + 'newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|' + + 'newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|' + + 'newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|' + + 'newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|' + + 'newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|' + + 'notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|' + + 'notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|' + + 'numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|' + + 'ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|' + + 'ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|' + + 'oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|' + + 'oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|' + + 'oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|' + + 'oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|' + + 'oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|' + + 'oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|' + + 'oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|' + + 'oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|' + + 'oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|' + + 'ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|' + + 'ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|' + + 'ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|' + + 'ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|' + + 'ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|' + + 'octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|' + + 'odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|' + + 'odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|' + + 'odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|' + + 'odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|' + + 'odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|' + + 'openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|' + + 'openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|' + + 'openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|' + + 'openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|' + + 'openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|' + + 'openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|' + + 'openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|' + + 'openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|' + + 'openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|' + + 'openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|' + + 'openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|' + + 'outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|' + + 'ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|' + + 'ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|' + + 'ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|' + + 'parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|' + + 'pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|' + + 'pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|' + + 'pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|' + + 'pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|' + + 'pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|' + + 'pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|' + + 'pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|' + + 'pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|' + + 'pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|' + + 'pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|' + + 'pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|' + + 'pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|' + + 'pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|' + + 'pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|' + + 'pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|' + + 'pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|' + + 'pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|' + + 'pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|' + + 'pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|' + + 'pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|' + + 'pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|' + + 'pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|' + + 'pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|' + + 'pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|' + + 'pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|' + + 'pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|' + + 'pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|' + + 'pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|' + + 'pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|' + + 'pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|' + + 'pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|' + + 'pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|' + + 'pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|' + + 'pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|' + + 'pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|' + + 'php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|' + + 'png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|' + + 'posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|' + + 'posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|' + + 'posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|' + + 'preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|' + + 'printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|' + + 'printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|' + + 'printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|' + + 'printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|' + + 'printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|' + + 'ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|' + + 'ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|' + + 'ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|' + + 'ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|' + + 'ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|' + + 'ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|' + + 'ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|' + + 'ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|' + + 'ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|' + + 'pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|' + + 'pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|' + + 'pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|' + + 'px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|' + + 'px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|' + + 'px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|' + + 'radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|' + + 'radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|' + + 'radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|' + + 'radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|' + + 'rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|' + + 'readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|' + + 'readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|' + + 'readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|' + + 'recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|' + + 'recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|' + + 'reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|' + + 'regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|' + + 'resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|' + + 'rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|' + + 'rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|' + + 'runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|' + + 'runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|' + + 'runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|' + + 'runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|' + + 'samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|' + + 'samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|' + + 'sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|' + + 'sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|' + + 'sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|' + + 'sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|' + + 'sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|' + + 'sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|' + + 'sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|' + + 'sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|' + + 'sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|' + + 'sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|' + + 'sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|' + + 'sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|' + + 'sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|' + + 'sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|' + + 'sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|' + + 'sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|' + + 'sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|' + + 'sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|' + + 'sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|' + + 'sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|' + + 'session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|' + + 'session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|' + + 'session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|' + + 'session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|' + + 'set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|' + + 'setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|' + + 'shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|' + + 'similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|' + + 'snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|' + + 'snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|' + + 'snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|' + + 'soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|' + + 'socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|' + + 'socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|' + + 'socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|' + + 'solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|' + + 'solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|' + + 'solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|' + + 'spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|' + + 'splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|' + + 'splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|' + + 'sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|' + + 'sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|' + + 'sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|' + + 'sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|' + + 'sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|' + + 'sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|' + + 'ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|' + + 'ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|' + + 'ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|' + + 'ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|' + + 'stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|' + + 'stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|' + + 'stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|' + + 'stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|' + + 'stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|' + + 'stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|' + + 'stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|' + + 'stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|' + + 'stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|' + + 'stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|' + + 'stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|' + + 'stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|' + + 'str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|' + + 'stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|' + + 'stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|' + + 'stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|' + + 'stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|' + + 'stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|' + + 'stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|' + + 'stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|' + + 'stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|' + + 'stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|' + + 'strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|' + + 'svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|' + + 'svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|' + + 'svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|' + + 'svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|' + + 'svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|' + + 'svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|' + + 'swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|' + + 'swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|' + + 'swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|' + + 'swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|' + + 'swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|' + + 'swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|' + + 'swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|' + + 'swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|' + + 'swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|' + + 'swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|' + + 'swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|' + + 'swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|' + + 'swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|' + + 'sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|' + + 'sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|' + + 'sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|' + + 'sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|' + + 'tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|' + + 'tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|' + + 'time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|' + + 'timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|' + + 'tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|' + + 'ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|' + + 'udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|' + + 'udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|' + + 'uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|' + + 'urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|' + + 'variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|' + + 'variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|' + + 'variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|' + + 'vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|' + + 'vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|' + + 'vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|' + + 'w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|' + + 'wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|' + + 'win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|' + + 'win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|' + + 'wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|' + + 'wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|' + + 'wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|' + + 'wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|' + + 'xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|' + + 'xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|' + + 'xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|' + + 'xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|' + + 'xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|' + + 'xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|' + + 'xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|' + + 'xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|' + + 'xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|' + + 'xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|' + + 'xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|' + + 'xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|' + + 'xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|' + + 'xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|' + + 'xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|' + + 'xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|' + + 'xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|' + + 'xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|' + + 'xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|' + + 'xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|' + + 'xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|' + + 'xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|' + + 'yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|' + + 'yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|' + + 'yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|' + + 'yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|' + + 'zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|' + + 'ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|' + + 'ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|' + + 'ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|' + + 'ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|' + + 'ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|' + + 'ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type').split('|') + ); + + // http://php.net/manual/en/reserved.keywords.php + var keywords = lang.arrayToMap( + ('abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|' + + 'endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|' + + 'public|static|switch|throw|trait|try|use|var|while|xor').split('|') + ); + + // http://php.net/manual/en/reserved.keywords.php + var languageConstructs = lang.arrayToMap( + ('die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|') + ); + + var builtinConstants = lang.arrayToMap( + ('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__').split('|') + ); + + var builtinVariables = lang.arrayToMap( + ('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|' + + '$http_response_header|$argc|$argv').split('|') + ); + + // Discovery done by downloading 'Many HTML files' from: http://php.net/download-docs.php + // Then search for files containing 'deprecated' (case-insensitive) and look at each file that turns up. + var builtinFunctionsDeprecated = lang.arrayToMap( + ('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|' + + 'com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|' + + 'cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|' + + 'hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|' + + 'maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|' + + 'mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|' + + 'mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|' + + 'mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|' + + 'mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|' + + 'mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|' + + 'mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|' + + 'ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|' + + 'ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|' + + 'ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|' + + 'ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|' + + 'ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|' + + 'PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|' + + 'PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|' + + 'PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|' + + 'PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|' + + 'PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|' + + 'PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|' + + 'PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|' + + 'PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|' + + 'px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister' + + 'set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|' + + 'sql_regcase').split('|') + ); + + var keywordsDeprecated = lang.arrayToMap( + ('cfunction|old_function').split('|') + ); + + var futureReserved = lang.arrayToMap([]); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : /(?:#|\/\/)(?:[^?]|\?[^>])*/ + }, + docComment.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" + }, { + token : "string", // " string start + regex : '"', + next : "qqstring" + }, { + token : "string", // ' string start + regex : "'", + next : "qstring" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language", // constants + regex : "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + + "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + + "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + + "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + + "VERSION))|__COMPILER_HALT_OFFSET__)\\b" + }, { + token : ["keyword", "text", "support.class"], + regex : "\\b(new)(\\s+)(\\w+)" + }, { + token : ["support.class", "keyword.operator"], + regex : "\\b(\\w+)(::)" + }, { + token : "constant.language", // constants + regex : "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + + "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + + "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + + "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + + "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + + "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + + "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + + "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + + "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + + "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + + "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + + "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + + "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + + "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + + "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + + "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" + }, { + token : function(value) { + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (builtinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (builtinVariables.hasOwnProperty(value)) + return "variable.language"; + else if (futureReserved.hasOwnProperty(value)) + return "invalid.illegal"; + else if (builtinFunctions.hasOwnProperty(value)) + return "support.function"; + else if (value == "debugger") + return "invalid.deprecated"; + else + if(value.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)) + return "variable"; + return "identifier"; + }, + regex : /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ + }, { + onMatch : function(value, currentSate, state) { + value = value.substr(3); + if (value[0] == "'" || value[0] == '"') + value = value.slice(1, -1); + state.unshift(this.next, value); + return "markup.list"; + }, + regex : /<<<(?:\w+|'\w+'|"\w+")$/, + next: "heredoc" + }, { + token : "keyword.operator", + regex : "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|=|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "heredoc" : [ + { + onMatch : function(value, currentSate, stack) { + if (stack[1] != value) + return "string"; + stack.shift(); + stack.shift(); + return "markup.list"; + }, + regex : "^\\w+(?=;?$)", + next: "start" + }, { + token: "string", + regex : ".*" + } + ], + "comment" : [ + { + token : "comment", + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "qqstring" : [ + { + token : "constant.language.escape", + regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' + }, { + token : "variable", + regex : /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ + }, { + token : "variable", + regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now + }, + {token : "string", regex : '"', next : "start"}, + {defaultToken : "string"} + ], + "qstring" : [ + {token : "constant.language.escape", regex : /\\['\\]/}, + {token : "string", regex : "'", next : "start"}, + {defaultToken : "string"} + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(PhpLangHighlightRules, TextHighlightRules); + + +var PhpHighlightRules = function() { + HtmlHighlightRules.call(this); + + var startRules = [ + { + token : "support.php_tag", // php open tag + regex : "<\\?(?:php|=)?", + push : "php-start" + } + ]; + + var endRules = [ + { + token : "support.php_tag", // php close tag + regex : "\\?>", + next : "pop" + } + ]; + + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + + this.embedRules(PhpLangHighlightRules, "php-", endRules, ["start"]); + + this.normalizeRules(); +}; + +oop.inherits(PhpHighlightRules, HtmlHighlightRules); + +exports.PhpHighlightRules = PhpHighlightRules; +exports.PhpLangHighlightRules = PhpLangHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/php_test.js b/plugins/node_modules/ace/lib/ace/mode/php_test.js new file mode 100644 index 00000000..f398df3e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/php_test.js @@ -0,0 +1,65 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var Tokenizer = require("../tokenizer").Tokenizer; +var Mode = require("./php").Mode; +var assert = require("../test/assertions"); + +module.exports = { + "test: inline mode" : function() { + var mode = new Mode(); + var tokenizer = mode.getTokenizer(); + var tokens = tokenizer.getLineTokens("'juhu kinners' ?> html <? 'php'", "start").tokens; + assert.equal("string", tokens[tokens.length - 1].type); + assert.notEqual("string", tokens[0].type); + assert.equal(tokens.length, 4); + + mode = new Mode({inline: true}); + tokenizer = mode.getTokenizer(); + tokens = tokenizer.getLineTokens("'juhu kinners' ?> html <? 'php'", "start").tokens; + assert.equal("string", tokens[0].type); + assert.equal("string", tokens[tokens.length - 1].type); + assert.equal(tokens.length, 9); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/php_worker.js b/plugins/node_modules/ace/lib/ace/mode/php_worker.js new file mode 100644 index 00000000..c0bb1304 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/php_worker.js @@ -0,0 +1,77 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var PHP = require("./php/php").PHP; + +var PhpWorker = exports.PhpWorker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(500); +}; + +oop.inherits(PhpWorker, Mirror); + +(function() { + this.setOptions = function(opts) { + this.inlinePhp = opts && opts.inline; + }; + + this.onUpdate = function() { + var value = this.doc.getValue(); + var errors = []; + + // var start = new Date(); + if (this.inlinePhp) + value = "<?" + value + "?>"; + + var tokens = PHP.Lexer(value, {short_open_tag: 1}); + try { + new PHP.Parser(tokens); + } catch(e) { + errors.push({ + row: e.line - 1, + column: null, + text: e.message.charAt(0).toUpperCase() + e.message.substring(1), + type: "error" + }); + } + + // console.log("lint time: " + (new Date() - start)); + + this.sender.emit("annotate", errors); + }; + +}).call(PhpWorker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/pig.js b/plugins/node_modules/ace/lib/ace/mode/pig.js new file mode 100644 index 00000000..562b5e30 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/pig.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PigHighlightRules = require("./pig_highlight_rules").PigHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = PigHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = {start: "/*", end: "*/"}; + // Extra logic goes here. + this.$id = "ace/mode/pig"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/pig_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/pig_highlight_rules.js new file mode 100644 index 00000000..08c9c903 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/pig_highlight_rules.js @@ -0,0 +1,178 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from Pig.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PigHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + token: "comment.block.pig", + regex: /\/\*/, + push: [{ + token: "comment.block.pig", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.pig" + }] + }, { + token: "comment.line.double-dash.asciidoc", + regex: /--.*$/ + }, { + token: "keyword.control.pig", + regex: /\b(?:ASSERT|LOAD|STORE|DUMP|FILTER|DISTINCT|FOREACH|GENERATE|STREAM|JOIN|COGROUP|GROUP|CROSS|ORDER|LIMIT|UNION|SPLIT|DESCRIBE|EXPLAIN|ILLUSTRATE|AS|BY|INTO|USING|LIMIT|PARALLEL|OUTER|INNER|DEFAULT|LEFT|SAMPLE|RANK|CUBE|ALL|KILL|QUIT|MAPREDUCE|ASC|DESC|THROUGH|SHIP|CACHE|DECLARE|CASE|WHEN|THEN|END|IN|PARTITION|FULL|IMPORT|IF|ONSCHEMA|INPUT|OUTPUT)\b/, + caseInsensitive: true + }, { + token: "storage.datatypes.pig", + regex: /\b(?:int|long|float|double|chararray|bytearray|boolean|datetime|biginteger|bigdecimal|tuple|bag|map)\b/, + caseInsensitive: true + }, { + token: "support.function.storage.pig", + regex: /\b(?:PigStorage|BinStorage|BinaryStorage|PigDump|HBaseStorage|JsonLoader|JsonStorage|AvroStorage|TextLoader|PigStreaming|TrevniStorage|AccumuloStorage)\b/ + }, { + token: "support.function.udf.pig", + regex: /\b(?:DIFF|TOBAG|TOMAP|TOP|TOTUPLE|RANDOM|FLATTEN|flatten|CUBE|ROLLUP|IsEmpty|ARITY|PluckTuple|SUBTRACT|BagToString)\b/ + }, { + token: "support.function.udf.math.pig", + regex: /\b(?:ABS|ACOS|ASIN|ATAN|CBRT|CEIL|COS|COSH|EXP|FLOOR|LOG|LOG10|ROUND|ROUND_TO|SIN|SINH|SQRT|TAN|TANH|AVG|COUNT|COUNT_STAR|MAX|MIN|SUM|COR|COV)\b/ + }, { + token: "support.function.udf.string.pig", + regex: /\b(?:CONCAT|INDEXOF|LAST_INDEX_OF|LCFIRST|LOWER|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|SIZE|STRSPLIT|SUBSTRING|TOKENIZE|TRIM|UCFIRST|UPPER|LTRIM|RTRIM|ENDSWITH|STARTSWITH|TRIM)\b/ + }, { + token: "support.function.udf.datetime.pig", + regex: /\b(?:AddDuration|CurrentTime|DaysBetween|GetDay|GetHour|GetMilliSecond|GetMinute|GetMonth|GetSecond|GetWeek|GetWeekYear|GetYear|HoursBetween|MilliSecondsBetween|MinutesBetween|MonthsBetween|SecondsBetween|SubtractDuration|ToDate|WeeksBetween|YearsBetween|ToMilliSeconds|ToString|ToUnixTime)\b/ + }, { + token: "support.function.command.pig", + regex: /\b(?:cat|cd|copyFromLocal|copyToLocal|cp|ls|mkdir|mv|pwd|rm)\b/ + }, { + token: "variable.pig", + regex: /\$[a_zA-Z0-9_]+/ + }, { + token: "constant.language.pig", + regex: /\b(?:NULL|true|false|stdin|stdout|stderr)\b/, + caseInsensitive: true + }, { + token: "constant.numeric.pig", + regex: /\b\d+(?:\.\d+)?\b/ + }, { + token: "keyword.operator.comparison.pig", + regex: /!=|==|<|>|<=|>=|\b(?:MATCHES|IS|OR|AND|NOT)\b/, + caseInsensitive: true + }, { + token: "keyword.operator.arithmetic.pig", + regex: /\+|\-|\*|\/|\%|\?|:|::|\.\.|#/ + }, { + token: "string.quoted.double.pig", + regex: /"/, + push: [{ + token: "string.quoted.double.pig", + regex: /"/, + next: "pop" + }, { + token: "constant.character.escape.pig", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.pig" + }] + }, { + token: "string.quoted.single.pig", + regex: /'/, + push: [{ + token: "string.quoted.single.pig", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.pig", + regex: /\\./ + }, { + defaultToken: "string.quoted.single.pig" + }] + }, { + todo: { + token: [ + "text", + "keyword.parameter.pig", + "text", + "storage.type.parameter.pig" + ], + regex: /^(\s*)(set)(\s+)(\S+)/, + caseInsensitive: true, + push: [{ + token: "text", + regex: /$/, + next: "pop" + }, { + include: "$self" + }] + } + }, { + token: [ + "text", + "keyword.alias.pig", + "text", + "storage.type.alias.pig" + ], + regex: /(\s*)(DEFINE|DECLARE|REGISTER)(\s+)(\S+)/, + caseInsensitive: true, + push: [{ + token: "text", + regex: /;?$/, + next: "pop" + }] + }] + }; + + this.normalizeRules(); +}; + +PigHighlightRules.metaData = { + fileTypes: ["pig"], + name: "Pig", + scopeName: "source.pig" +}; + + +oop.inherits(PigHighlightRules, TextHighlightRules); + +exports.PigHighlightRules = PigHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/plain_text.js b/plugins/node_modules/ace/lib/ace/mode/plain_text.js new file mode 100644 index 00000000..850fbd2b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/plain_text.js @@ -0,0 +1,55 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var Behaviour = require("./behaviour").Behaviour; + +var Mode = function() { + this.HighlightRules = TextHighlightRules; + this.$behaviour = new Behaviour(); +}; + +oop.inherits(Mode, TextMode); + +(function() { + this.type = "text"; + this.getNextLineIndent = function(state, line, tab) { + return ''; + }; + this.$id = "ace/mode/plain_text"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/plain_text_test.js b/plugins/node_modules/ace/lib/ace/mode/plain_text_test.js new file mode 100644 index 00000000..a49ae7d3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/plain_text_test.js @@ -0,0 +1,56 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var PlainTextMode = require("./plain_text").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new PlainTextMode(); + }, + + "test: lines should not be indented" : function() { + assert.equal("", this.mode.getNextLineIndent("start", " abc", " ")); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/powershell.js b/plugins/node_modules/ace/lib/ace/mode/powershell.js new file mode 100644 index 00000000..11c63298 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/powershell.js @@ -0,0 +1,61 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PowershellHighlightRules = require("./powershell_highlight_rules").PowershellHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = PowershellHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode({start: "^\\s*(<#)", end: "^[#\\s]>\\s*$"}); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "#"; + this.blockComment = {start: "<#", end: "#>"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + + this.createWorker = function(session) { + return null; + }; + + this.$id = "ace/mode/powershell"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/powershell_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/powershell_highlight_rules.js new file mode 100644 index 00000000..77669275 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/powershell_highlight_rules.js @@ -0,0 +1,259 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PowershellHighlightRules = function() { + + // Help Reference: about_Language_Keywords + // https://technet.microsoft.com/en-us/library/hh847744.aspx + var keywords = ( + "begin|break|catch|continue|data|do|dynamicparam|else|elseif|end|exit|filter|" + + "finally|for|foreach|from|function|if|in|inlinescript|hidden|parallel|param|" + + "process|return|sequence|switch|throw|trap|try|until|while|workflow" + ); + + // Command to enumerate all module commands in Windows PowerShell: + // PS C:\> Get-Module -ListAvailable | Select-Object -Unique Name -ExpandProperty Name | Sort-Object | + // ForEach-Object { "// Module $_"; '"' + ((Get-Command -Module $_ | Select-Object -ExpandProperty Name) -join '|') + '|" +' } | clip + var builtinFunctions = ( + // Module AppBackgroundTask + "Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|" + + // Module AppLocker + "Get-AppLockerFileInformation|Get-AppLockerPolicy|New-AppLockerPolicy|Set-AppLockerPolicy|Test-AppLockerPolicy|" + + // Module Appx + "Get-AppxLastError|Get-AppxLog|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppxDefaultVolume|Get-AppxPackage|Get-AppxPackageManifest|Get-AppxVolume|Mount-AppxVolume|Move-AppxPackage|Remove-AppxPackage|Remove-AppxVolume|Set-AppxDefaultVolume|" + + // Module AssignedAccess + "Clear-AssignedAccess|Get-AssignedAccess|Set-AssignedAccess|" + + // Module BitLocker + "Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|" + + // Module BitsTransfer + "Add-BitsFile|Complete-BitsTransfer|Get-BitsTransfer|Remove-BitsTransfer|Resume-BitsTransfer|Set-BitsTransfer|Start-BitsTransfer|Suspend-BitsTransfer|" + + // Module BranchCache + "Add-BCDataCacheExtension|Clear-BCCache|Disable-BC|Disable-BCDowngrading|Disable-BCServeOnBattery|Enable-BCDistributed|Enable-BCDowngrading|Enable-BCHostedClient|Enable-BCHostedServer|Enable-BCLocal|Enable-BCServeOnBattery|Export-BCCachePackage|Export-BCSecretKey|Get-BCClientConfiguration|Get-BCContentServerConfiguration|Get-BCDataCache|Get-BCDataCacheExtension|Get-BCHashCache|Get-BCHostedCacheServerConfiguration|Get-BCNetworkConfiguration|Get-BCStatus|Import-BCCachePackage|Import-BCSecretKey|Publish-BCFileContent|Publish-BCWebContent|Remove-BCDataCacheExtension|Reset-BC|Set-BCAuthentication|Set-BCCache|Set-BCDataCacheEntryMaxAge|Set-BCMinSMBLatency|Set-BCSecretKey|" + + // Module CimCmdlets + "Export-BinaryMiLog|Get-CimAssociatedInstance|Get-CimClass|Get-CimInstance|Get-CimSession|Import-BinaryMiLog|Invoke-CimMethod|New-CimInstance|New-CimSession|New-CimSessionOption|Register-CimIndicationEvent|Remove-CimInstance|Remove-CimSession|Set-CimInstance|" + + // Module CIPolicy + "ConvertFrom-CIPolicy|" + + // Module ConfigCI + "Add-SignerRule|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|" + + // Module Defender + "Add-MpPreference|Get-MpComputerStatus|Get-MpPreference|Get-MpThreat|Get-MpThreatCatalog|Get-MpThreatDetection|Remove-MpPreference|Remove-MpThreat|Set-MpPreference|Start-MpScan|Start-MpWDOScan|Update-MpSignature|" + + // Module DirectAccessClientComponents + "Disable-DAManualEntryPointSelection|Enable-DAManualEntryPointSelection|Get-DAClientExperienceConfiguration|Get-DAEntryPointTableItem|New-DAEntryPointTableItem|Remove-DAEntryPointTableItem|Rename-DAEntryPointTableItem|Reset-DAClientExperienceConfiguration|Reset-DAEntryPointTableItem|Set-DAClientExperienceConfiguration|Set-DAEntryPointTableItem|" + + // Module Dism + "Add-ProvisionedAppxPackage|Apply-WindowsUnattend|Get-ProvisionedAppxPackage|Remove-ProvisionedAppxPackage|Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-WindowsEdition|Set-WindowsProductKey|Split-WindowsImage|Update-WIMBootEntry|Use-WindowsUnattend|" + + // Module DnsClient + "Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientNrptRule|Set-DnsClient|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|Resolve-DnsName|" + + // Module EventTracingManagement + "Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Remove-EtwTraceSession|Send-EtwTraceSession|Set-AutologgerConfig|Set-EtwTraceProvider|Set-EtwTraceSession|" + + // Module International + "Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|" + + // Module iSCSI + "Connect-IscsiTarget|Disconnect-IscsiTarget|Get-IscsiConnection|Get-IscsiSession|Get-IscsiTarget|Get-IscsiTargetPortal|New-IscsiTargetPortal|Register-IscsiSession|Remove-IscsiTargetPortal|Set-IscsiChapSecret|Unregister-IscsiSession|Update-IscsiTarget|Update-IscsiTargetPortal|" + + // Module ISE + "Get-IseSnippet|Import-IseSnippet|New-IseSnippet|" + + // Module Kds + "Add-KdsRootKey|Clear-KdsCache|Get-KdsConfiguration|Get-KdsRootKey|Set-KdsConfiguration|Test-KdsRootKey|" + + // Module Microsoft.PowerShell.Archive + "Compress-Archive|Expand-Archive|" + + // Module Microsoft.PowerShell.Diagnostics + "Export-Counter|Get-Counter|Get-WinEvent|Import-Counter|New-WinEvent|" + + // Module Microsoft.PowerShell.Host + "Start-Transcript|Stop-Transcript|" + + // Module Microsoft.PowerShell.Management + "Add-Computer|Add-Content|Checkpoint-Computer|Clear-Content|Clear-EventLog|Clear-Item|Clear-ItemProperty|Clear-RecycleBin|Complete-Transaction|Convert-Path|Copy-Item|Copy-ItemProperty|Debug-Process|Disable-ComputerRestore|Enable-ComputerRestore|Get-ChildItem|Get-Clipboard|Get-ComputerRestorePoint|Get-Content|Get-ControlPanelItem|Get-EventLog|Get-HotFix|Get-Item|Get-ItemProperty|Get-ItemPropertyValue|Get-Location|Get-Process|Get-PSDrive|Get-PSProvider|Get-Service|Get-Transaction|Get-WmiObject|Invoke-Item|Invoke-WmiMethod|Join-Path|Limit-EventLog|Move-Item|Move-ItemProperty|New-EventLog|New-Item|New-ItemProperty|New-PSDrive|New-Service|New-WebServiceProxy|Pop-Location|Push-Location|Register-WmiEvent|Remove-Computer|Remove-EventLog|Remove-Item|Remove-ItemProperty|Remove-PSDrive|Remove-WmiObject|Rename-Computer|Rename-Item|Rename-ItemProperty|Reset-ComputerMachinePassword|Resolve-Path|Restart-Computer|Restart-Service|Restore-Computer|Resume-Service|Set-Clipboard|Set-Content|Set-Item|Set-ItemProperty|Set-Location|Set-Service|Set-WmiInstance|Show-ControlPanelItem|Show-EventLog|Split-Path|Start-Process|Start-Service|Start-Transaction|Stop-Computer|Stop-Process|Stop-Service|Suspend-Service|Test-ComputerSecureChannel|Test-Connection|Test-Path|Undo-Transaction|Use-Transaction|Wait-Process|Write-EventLog|" + + // Module Microsoft.PowerShell.ODataUtils + "Export-ODataEndpointProxy|" + + // Module Microsoft.PowerShell.Security + "ConvertFrom-SecureString|ConvertTo-SecureString|Get-Acl|Get-AuthenticodeSignature|Get-CmsMessage|Get-Credential|Get-ExecutionPolicy|Get-PfxCertificate|Protect-CmsMessage|Set-Acl|Set-AuthenticodeSignature|Set-ExecutionPolicy|Unprotect-CmsMessage|" + + // Module Microsoft.PowerShell.Utility + "ConvertFrom-SddlString|Format-Hex|Get-FileHash|Import-PowerShellDataFile|New-Guid|New-TemporaryFile|Add-Member|Add-Type|Clear-Variable|Compare-Object|ConvertFrom-Csv|ConvertFrom-Json|ConvertFrom-String|ConvertFrom-StringData|Convert-String|ConvertTo-Csv|ConvertTo-Html|ConvertTo-Json|ConvertTo-Xml|Debug-Runspace|Disable-PSBreakpoint|Disable-RunspaceDebug|Enable-PSBreakpoint|Enable-RunspaceDebug|Export-Alias|Export-Clixml|Export-Csv|Export-FormatData|Export-PSSession|Format-Custom|Format-List|Format-Table|Format-Wide|Get-Alias|Get-Culture|Get-Date|Get-Event|Get-EventSubscriber|Get-FormatData|Get-Host|Get-Member|Get-PSBreakpoint|Get-PSCallStack|Get-Random|Get-Runspace|Get-RunspaceDebug|Get-TraceSource|Get-TypeData|Get-UICulture|Get-Unique|Get-Variable|Group-Object|Import-Alias|Import-Clixml|Import-Csv|Import-LocalizedData|Import-PSSession|Invoke-Expression|Invoke-RestMethod|Invoke-WebRequest|Measure-Command|Measure-Object|New-Alias|New-Event|New-Object|New-TimeSpan|New-Variable|Out-File|Out-GridView|Out-Printer|Out-String|Read-Host|Register-EngineEvent|Register-ObjectEvent|Remove-Event|Remove-PSBreakpoint|Remove-TypeData|Remove-Variable|Select-Object|Select-String|Select-Xml|Send-MailMessage|Set-Alias|Set-Date|Set-PSBreakpoint|Set-TraceSource|Set-Variable|Show-Command|Sort-Object|Start-Sleep|Tee-Object|Trace-Command|Unblock-File|Unregister-Event|Update-FormatData|Update-List|Update-TypeData|Wait-Debugger|Wait-Event|Write-Debug|Write-Error|Write-Host|Write-Information|Write-Output|Write-Progress|Write-Verbose|Write-Warning|" + + // Module Microsoft.WSMan.Management + "Connect-WSMan|Disable-WSManCredSSP|Disconnect-WSMan|Enable-WSManCredSSP|Get-WSManCredSSP|Get-WSManInstance|Invoke-WSManAction|New-WSManInstance|New-WSManSessionOption|Remove-WSManInstance|Set-WSManInstance|Set-WSManQuickConfig|Test-WSMan|" + + // Module MMAgent + "Debug-MMAppPrelaunch|Disable-MMAgent|Enable-MMAgent|Get-MMAgent|Set-MMAgent|" + + // Module MsDtc + "Add-DtcClusterTMMapping|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Remove-DtcClusterTMMapping|Reset-DtcLog|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcTransactionsTraceSession|Test-Dtc|Uninstall-Dtc|Write-DtcTransactionsTraceSession|Complete-DtcDiagnosticTransaction|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Send-DtcDiagnosticTransaction|Start-DtcDiagnosticResourceManager|Stop-DtcDiagnosticResourceManager|Undo-DtcDiagnosticTransaction|" + + // Module NetAdapter + "Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPacketDirect|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPacketDirect|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPacketDirect|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPacketDirect|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterVmq|" + + // Module NetConnection + "Get-NetConnectionProfile|Set-NetConnectionProfile|" + + // Module NetEventPacketCapture + "Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|" + + // Module NetLbfo + "Add-NetLbfoTeamMember|Add-NetLbfoTeamNic|Get-NetLbfoTeam|Get-NetLbfoTeamMember|Get-NetLbfoTeamNic|New-NetLbfoTeam|Remove-NetLbfoTeam|Remove-NetLbfoTeamMember|Remove-NetLbfoTeamNic|Rename-NetLbfoTeam|Set-NetLbfoTeam|Set-NetLbfoTeamMember|Set-NetLbfoTeamNic|" + + // Module NetNat + "Add-NetNatExternalAddress|Add-NetNatStaticMapping|Get-NetNat|Get-NetNatExternalAddress|Get-NetNatGlobal|Get-NetNatSession|Get-NetNatStaticMapping|New-NetNat|Remove-NetNat|Remove-NetNatExternalAddress|Remove-NetNatStaticMapping|Set-NetNat|Set-NetNatGlobal|" + + // Module NetQos + "Get-NetQosPolicy|New-NetQosPolicy|Remove-NetQosPolicy|Set-NetQosPolicy|" + + // Module NetSecurity + "Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallRule|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetIPsecRule|Get-DAPolicyChange|New-NetIPsecAuthProposal|New-NetIPsecMainModeCryptoProposal|New-NetIPsecQuickModeCryptoProposal|" + + // Module NetSwitchTeam + "Add-NetSwitchTeamMember|Get-NetSwitchTeam|Get-NetSwitchTeamMember|New-NetSwitchTeam|Remove-NetSwitchTeam|Remove-NetSwitchTeamMember|Rename-NetSwitchTeam|" + + // Module NetTCPIP + "Find-NetRoute|Get-NetCompartment|Get-NetIPAddress|Get-NetIPConfiguration|Get-NetIPInterface|Get-NetIPv4Protocol|Get-NetIPv6Protocol|Get-NetNeighbor|Get-NetOffloadGlobalSetting|Get-NetPrefixPolicy|Get-NetRoute|Get-NetTCPConnection|Get-NetTCPSetting|Get-NetTransportFilter|Get-NetUDPEndpoint|Get-NetUDPSetting|New-NetIPAddress|New-NetNeighbor|New-NetRoute|New-NetTransportFilter|Remove-NetIPAddress|Remove-NetNeighbor|Remove-NetRoute|Remove-NetTransportFilter|Set-NetIPAddress|Set-NetIPInterface|Set-NetIPv4Protocol|Set-NetIPv6Protocol|Set-NetNeighbor|Set-NetOffloadGlobalSetting|Set-NetRoute|Set-NetTCPSetting|Set-NetUDPSetting|Test-NetConnection|" + + // Module NetworkConnectivityStatus + "Get-DAConnectionStatus|Get-NCSIPolicyConfiguration|Reset-NCSIPolicyConfiguration|Set-NCSIPolicyConfiguration|" + + // Module NetworkSwitchManager + "Disable-NetworkSwitchEthernetPort|Disable-NetworkSwitchFeature|Disable-NetworkSwitchVlan|Enable-NetworkSwitchEthernetPort|Enable-NetworkSwitchFeature|Enable-NetworkSwitchVlan|Get-NetworkSwitchEthernetPort|Get-NetworkSwitchFeature|Get-NetworkSwitchGlobalData|Get-NetworkSwitchVlan|New-NetworkSwitchVlan|Remove-NetworkSwitchEthernetPortIPAddress|Remove-NetworkSwitchVlan|Restore-NetworkSwitchConfiguration|Save-NetworkSwitchConfiguration|Set-NetworkSwitchEthernetPortIPAddress|Set-NetworkSwitchPortMode|Set-NetworkSwitchPortProperty|Set-NetworkSwitchVlanProperty|" + + // Module NetworkTransition + "Add-NetIPHttpsCertBinding|Disable-NetDnsTransitionConfiguration|Disable-NetIPHttpsProfile|Disable-NetNatTransitionConfiguration|Enable-NetDnsTransitionConfiguration|Enable-NetIPHttpsProfile|Enable-NetNatTransitionConfiguration|Get-Net6to4Configuration|Get-NetDnsTransitionConfiguration|Get-NetDnsTransitionMonitoring|Get-NetIPHttpsConfiguration|Get-NetIPHttpsState|Get-NetIsatapConfiguration|Get-NetNatTransitionConfiguration|Get-NetNatTransitionMonitoring|Get-NetTeredoConfiguration|Get-NetTeredoState|New-NetIPHttpsConfiguration|New-NetNatTransitionConfiguration|Remove-NetIPHttpsCertBinding|Remove-NetIPHttpsConfiguration|Remove-NetNatTransitionConfiguration|Rename-NetIPHttpsConfiguration|Reset-Net6to4Configuration|Reset-NetDnsTransitionConfiguration|Reset-NetIPHttpsConfiguration|Reset-NetIsatapConfiguration|Reset-NetTeredoConfiguration|Set-Net6to4Configuration|Set-NetDnsTransitionConfiguration|Set-NetIPHttpsConfiguration|Set-NetIsatapConfiguration|Set-NetNatTransitionConfiguration|Set-NetTeredoConfiguration|" + + // Module PackageManagement + "Find-Package|Find-PackageProvider|Get-Package|Get-PackageProvider|Get-PackageSource|Import-PackageProvider|Install-Package|Install-PackageProvider|Register-PackageSource|Save-Package|Set-PackageSource|Uninstall-Package|Unregister-PackageSource|" + + // Module PcsvDevice + "Clear-PcsvDeviceLog|Get-PcsvDevice|Get-PcsvDeviceLog|Restart-PcsvDevice|Set-PcsvDeviceBootConfiguration|Set-PcsvDeviceNetworkConfiguration|Set-PcsvDeviceUserPassword|Start-PcsvDevice|Stop-PcsvDevice|" + + // Module Pester + "AfterAll|AfterEach|Assert-MockCalled|Assert-VerifiableMocks|BeforeAll|BeforeEach|Context|Describe|Get-MockDynamicParameters|Get-TestDriveItem|In|InModuleScope|Invoke-Mock|Invoke-Pester|It|Mock|New-Fixture|Set-DynamicParameterVariables|Setup|Should|" + + // Module PKI + "Add-CertificateEnrollmentPolicyServer|Export-Certificate|Export-PfxCertificate|Get-Certificate|Get-CertificateAutoEnrollmentPolicy|Get-CertificateEnrollmentPolicyServer|Get-CertificateNotificationTask|Get-PfxData|Import-Certificate|Import-PfxCertificate|New-CertificateNotificationTask|New-SelfSignedCertificate|Remove-CertificateEnrollmentPolicyServer|Remove-CertificateNotificationTask|Set-CertificateAutoEnrollmentPolicy|Switch-Certificate|Test-Certificate|" + + // Module PnpDevice + "Disable-PnpDevice|Enable-PnpDevice|Get-PnpDevice|Get-PnpDeviceProperty|" + + // Module PowerShellGet + "Find-DscResource|Find-Module|Find-Script|Get-InstalledModule|Get-InstalledScript|Get-PSRepository|Install-Module|Install-Script|New-ScriptFileInfo|Publish-Module|Publish-Script|Register-PSRepository|Save-Module|Save-Script|Set-PSRepository|Test-ScriptFileInfo|Uninstall-Module|Uninstall-Script|Unregister-PSRepository|Update-Module|Update-ModuleManifest|Update-Script|Update-ScriptFileInfo|" + + // Module PrintManagement + "Add-Printer|Add-PrinterDriver|Add-PrinterPort|Get-PrintConfiguration|Get-Printer|Get-PrinterDriver|Get-PrinterPort|Get-PrinterProperty|Get-PrintJob|Read-PrinterNfcTag|Remove-Printer|Remove-PrinterDriver|Remove-PrinterPort|Remove-PrintJob|Rename-Printer|Restart-PrintJob|Resume-PrintJob|Set-PrintConfiguration|Set-Printer|Set-PrinterProperty|Suspend-PrintJob|Write-PrinterNfcTag|" + + // Module PSDesiredStateConfiguration + "Configuration|Disable-DscDebug|Enable-DscDebug|Get-DscConfiguration|Get-DscConfigurationStatus|Get-DscLocalConfigurationManager|Get-DscResource|New-DscChecksum|Remove-DscConfigurationDocument|Restore-DscConfiguration|Stop-DscConfiguration|Invoke-DscResource|Publish-DscConfiguration|Set-DscLocalConfigurationManager|Start-DscConfiguration|Test-DscConfiguration|Update-DscConfiguration|" + + // Module PSDiagnostics + "Disable-PSTrace|Disable-PSWSManCombinedTrace|Disable-WSManTrace|Enable-PSTrace|Enable-PSWSManCombinedTrace|Enable-WSManTrace|Get-LogProperties|Set-LogProperties|Start-Trace|Stop-Trace|" + + // Module PSReadline + "PSConsoleHostReadline|Get-PSReadlineKeyHandler|Get-PSReadlineOption|Remove-PSReadlineKeyHandler|Set-PSReadlineKeyHandler|Set-PSReadlineOption|" + + // Module PSScheduledJob + "Add-JobTrigger|Disable-JobTrigger|Disable-ScheduledJob|Enable-JobTrigger|Enable-ScheduledJob|Get-JobTrigger|Get-ScheduledJob|Get-ScheduledJobOption|New-JobTrigger|New-ScheduledJobOption|Register-ScheduledJob|Remove-JobTrigger|Set-JobTrigger|Set-ScheduledJob|Set-ScheduledJobOption|Unregister-ScheduledJob|" + + // Module PSWorkflow + "New-PSWorkflowSession|New-PSWorkflowExecutionOption|" + + // Module PSWorkflowUtility + "Invoke-AsWorkflow|" + + // Module ScheduledTasks + "Disable-ScheduledTask|Enable-ScheduledTask|Export-ScheduledTask|Get-ClusteredScheduledTask|Get-ScheduledTask|Get-ScheduledTaskInfo|New-ScheduledTask|New-ScheduledTaskAction|New-ScheduledTaskPrincipal|New-ScheduledTaskSettingsSet|New-ScheduledTaskTrigger|Register-ClusteredScheduledTask|Register-ScheduledTask|Set-ClusteredScheduledTask|Set-ScheduledTask|Start-ScheduledTask|Stop-ScheduledTask|Unregister-ClusteredScheduledTask|Unregister-ScheduledTask|" + + // Module SecureBoot + "Confirm-SecureBootUEFI|Format-SecureBootUEFI|Get-SecureBootPolicy|Get-SecureBootUEFI|Set-SecureBootUEFI|" + + // Module SmbShare + "Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbShare|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|" + + // Module SmbWitness + "Move-SmbClient|Get-SmbWitnessClient|Move-SmbWitnessClient|" + + // Module StartLayout + "Get-StartApps|Export-StartLayout|Import-StartLayout|" + + // Module Storage + "Disable-PhysicalDiskIndication|Disable-StorageDiagnosticLog|Enable-PhysicalDiskIndication|Enable-StorageDiagnosticLog|Flush-Volume|Get-DiskSNV|Get-PhysicalDiskSNV|Get-StorageEnclosureSNV|Initialize-Volume|Write-FileSystemCache|Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Clear-StorageDiagnosticInfo|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Format-Volume|Get-DedupProperties|Get-Disk|Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|" + + // Module TLS + "Disable-TlsCipherSuite|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|New-TlsSessionTicketKey|" + + // Module TroubleshootingPack + "Get-TroubleshootingPack|Invoke-TroubleshootingPack|" + + // Module TrustedPlatformModule + "Clear-Tpm|ConvertTo-TpmOwnerAuth|Disable-TpmAutoProvisioning|Enable-TpmAutoProvisioning|Get-Tpm|Get-TpmEndorsementKeyInfo|Get-TpmSupportedFeature|Import-TpmOwnerAuth|Initialize-Tpm|Set-TpmOwnerAuth|Unblock-Tpm|" + + // Module VpnClient + "Add-VpnConnection|Add-VpnConnectionRoute|Add-VpnConnectionTriggerApplication|Add-VpnConnectionTriggerDnsConfiguration|Add-VpnConnectionTriggerTrustedNetwork|Get-VpnConnection|Get-VpnConnectionTrigger|New-EapConfiguration|New-VpnServerAddress|Remove-VpnConnection|Remove-VpnConnectionRoute|Remove-VpnConnectionTriggerApplication|Remove-VpnConnectionTriggerDnsConfiguration|Remove-VpnConnectionTriggerTrustedNetwork|Set-VpnConnection|Set-VpnConnectionIPsecConfiguration|Set-VpnConnectionProxy|Set-VpnConnectionTriggerDnsConfiguration|Set-VpnConnectionTriggerTrustedNetwork|" + + // Module Wdac + "Add-OdbcDsn|Disable-OdbcPerfCounter|Disable-WdacBidTrace|Enable-OdbcPerfCounter|Enable-WdacBidTrace|Get-OdbcDriver|Get-OdbcDsn|Get-OdbcPerfCounter|Get-WdacBidTrace|Remove-OdbcDsn|Set-OdbcDriver|Set-OdbcDsn|" + + // Module WindowsDeveloperLicense + "Get-WindowsDeveloperLicense|Show-WindowsDeveloperLicenseRegistration|Unregister-WindowsDeveloperLicense|" + + // Module WindowsErrorReporting + "Disable-WindowsErrorReporting|Enable-WindowsErrorReporting|Get-WindowsErrorReporting|" + + // Module WindowsSearch + "Get-WindowsSearchSetting|Set-WindowsSearchSetting|" + + // Module WindowsUpdate + "Get-WindowsUpdateLog" + ); + + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords + }, "identifier"); + + // Help Reference: about_Operators + // https://technet.microsoft.com/en-us/library/hh847732.aspx + var binaryOperatorsRe = ( + // Comparison Operators + "eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|" + + "ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|" + + "ieq|ine|igt|ilt|ile|ige|ilike|inotlike|imatch|inotmatch|icontains|inotcontains|iin|inotin|" + + // Logical Operators + "and|or|xor|not|" + + // String Operators + "split|join|replace|f|" + + "csplit|creplace|" + + "isplit|ireplace|" + + // Type Operators + "is|isnot|as|" + + // Shift Operators + "shl|shr" + ); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "#.*$" + }, { + token : "comment.start", + regex : "<#", + next : "comment" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "[$](?:[Tt]rue|[Ff]alse)\\b" + }, { + token : "constant.language", + regex : "[$][Nn]ull\\b" + }, { + token : "variable.instance", + regex : "[$][a-zA-Z][a-zA-Z0-9_]*\\b" + }, { + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" + }, { + token : "keyword.operator", + regex : "\\-(?:" + binaryOperatorsRe + ")" + }, { + // Arithmetic, Assignment, Redirection, Call, Not & Pipeline Operators + token : "keyword.operator", + regex : "&|\\+|\\-|\\*|\\/|\\%|\\=|\\>|\\&|\\!|\\|" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment.end", + regex : "#>", + next : "start" + }, { + token : "doc.comment.tag", + regex : "^\\.\\w+" + }, { + defaultToken : "comment" + } + ] + }; +}; + +oop.inherits(PowershellHighlightRules, TextHighlightRules); + +exports.PowershellHighlightRules = PowershellHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/praat.js b/plugins/node_modules/ace/lib/ace/mode/praat.js new file mode 100644 index 00000000..34748f63 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/praat.js @@ -0,0 +1,84 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PraatHighlightRules = require("./praat_highlight_rules").PraatHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = PraatHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "#"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/praat"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/praat_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/praat_highlight_rules.js new file mode 100644 index 00000000..29f19323 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/praat_highlight_rules.js @@ -0,0 +1,269 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PraatHighlightRules = function() { + + var keywords = ( + "if|then|else|elsif|elif|endif|fi|" + + "endfor|endproc|" + // related keywords specified below + "while|endwhile|" + + "repeat|until|" + + "select|plus|minus|" + + "assert|asserterror" + ); + + var predefinedVariables = ( + "macintosh|windows|unix|" + + "praatVersion|praatVersion\\$" + + "pi|undefined|" + + "newline\\$|tab\\$|" + + "shellDirectory\\$|homeDirectory\\$|preferencesDirectory\\$|" + + "temporaryDirectory\\$|defaultDirectory\\$" + ); + + // What is "endSendPraat"? Function? Directive? + var directives = ( + "clearinfo|endSendPraat" + ); + + var functions = ( +// Info functions + "writeInfo|writeInfoLine|appendInfo|appendInfoLine|info\\$|" + + "writeFile|writeFileLine|appendFile|appendFileLine|" + +// Math functions + "abs|round|floor|ceiling|min|max|imin|imax|" + + "sqrt|sin|cos|tan|arcsin|arccos|arctan|arctan2|sinc|sincpi|" + + "exp|ln|lnBeta|lnGamma|log10|log2|" + + "sinh|cosh|tanh|arcsinh|arccosh|arctanh|" + + "sigmoid|invSigmoid|erf|erfc|" + + "random(?:Uniform|Integer|Gauss|Poisson|Binomial)|" + + "gaussP|gaussQ|invGaussQ|incompleteGammaP|incompleteBeta|" + + "chiSquareP|chiSquareQ|invChiSquareQ|studentP|studentQ|invStudentQ|" + + "fisherP|fisherQ|invFisherQ|" + + "binomialP|binomialQ|invBinomialP|invBinomialQ|" + + "hertzToBark|barkToHerz|" + + "hertzToMel|melToHertz|" + + "hertzToSemitones|semitonesToHerz|" + + "erb|hertzToErb|erbToHertz|" + + "phonToDifferenceLimens|differenceLimensToPhon|" + + "soundPressureToPhon|" + + "beta|beta2|besselI|besselK|" + + "numberOfColumns|numberOfRows|" + +// String functions + "selected|selected\\$|numberOfSelected|variableExists|"+ + "index|rindex|startsWith|endsWith|"+ + "index_regex|rindex_regex|replace_regex\\$|"+ + "length|extractWord\\$|extractLine\\$|extractNumber|" + + "left\\$|right\\$|mid\\$|replace\\$|" + + "date\\$|fixed\\$|percent\\$|" + +// Array functions + "zero#|linear#|randomUniform#|randomInteger#|randomGauss#|" + +// Pause functions + "beginPause|endPause|" + +// Demo functions + "demoShow|demoWindowTitle|demoInput|demoWaitForInput|" + + "demoClicked|demoClickedIn|demoX|demoY|" + + "demoKeyPressed|demoKey\\$|" + + "demoExtraControlKeyPressed|demoShiftKeyPressed|"+ + "demoCommandKeyPressed|demoOptionKeyPressed|" + +// File functions + "environment\\$|chooseReadFile\\$|" + + "chooseDirectory\\$|createDirectory|fileReadable|deleteFile|" + + "selectObject|removeObject|plusObject|minusObject|" + + "runScript|exitScript|" + +// sendpraat functions + "beginSendPraat|endSendPraat|" + +// Other + "objectsAreIdentical" + ); + + var objectTypes = ( + "Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|" + + "BarkFilter|CCA|Categories|Cepstrum|Cepstrumc|ChebyshevSeries|" + + "ClassificationTable|Cochleagram|Collection|Configuration|" + + "Confusion|ContingencyTable|Corpus|Correlation|Covariance|" + + "CrossCorrelationTable|CrossCorrelationTables|DTW|Diagonalizer|" + + "Discriminant|Dissimilarity|Distance|Distributions|DurationTier|" + + "EEG|ERP|ERPTier|Eigen|Excitation|Excitations|ExperimentMFC|FFNet|" + + "FeatureWeights|Formant|FormantFilter|FormantGrid|FormantPoint|" + + "FormantTier|GaussianMixture|HMM|HMM_Observation|" + + "HMM_ObservationSequence|HMM_State|HMM_StateSequence|Harmonicity|" + + "ISpline|Index|Intensity|IntensityTier|IntervalTier|KNN|KlattGrid|" + + "KlattTable|LFCC|LPC|Label|LegendreSeries|LinearRegression|" + + "LogisticRegression|LongSound|Ltas|MFCC|MSpline|ManPages|" + + "Manipulation|Matrix|MelFilter|MixingMatrix|Movie|Network|" + + "OTGrammar|OTHistory|OTMulti|PCA|PairDistribution|ParamCurve|" + + "Pattern|Permutation|Pitch|PitchTier|PointProcess|Polygon|" + + "Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|SPINET|" + + "SSCP|SVD|Salience|ScalarProduct|Similarity|SimpleString|" + + "SortedSetOfString|Sound|Speaker|Spectrogram|Spectrum|SpectrumTier|" + + "SpeechSynthesizer|SpellingChecker|Strings|StringsIndex|Table|" + + "TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|" + + "Transition|VocalTract|Weight|WordList" + ); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + // Interpolated strings + token : "string.interpolated", + regex : /'((?:[a-z][a-zA-Z0-9_]*)(?:\$|#|:[0-9]+)?)'/ + }, { + // stopwatch + token : ["text", "text", "keyword.operator", "text", "keyword"], + regex : /(^\s*)(?:([a-z][a-zA-Z0-9_]*\$?\s+)(=)(\s+))?(stopwatch)/ + }, { + // Directives which introduce unquoted strings + token : ["text", "keyword", "text", "string"], + regex : /(^\s*)(print(?:line|tab)?|echo|exit|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)(.*)/ + }, { + // Directives with no arguments + token : ["text", "keyword"], + regex : "(^\\s*)(" + directives + ")$" + }, { + // Operators + token : ["text", "keyword.operator", "text"], + regex : /(\s+)((?:\+|-|\/|\*|<|>)=?|==?|!=|%|\^|\||and|or|not)(\s+)/ + }, { + // Commands + token : ["text", "text", "keyword.operator", "text", "keyword", "text", "keyword"], + regex : /(^\s*)(?:([a-z][a-zA-Z0-9_]*\$?\s+)(=)(\s+))?(?:((?:no)?warn|(?:unix_)?nocheck|noprogress)(\s+))?((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/ + }, { + // Demo commands + token : ["text", "keyword", "text", "keyword"], + regex : /(^\s*)(?:(demo)?(\s+))((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/ + }, { + // Font-sizing commands + token : ["text", "keyword", "text", "keyword"], + regex : /^(\s*)(?:(demo)(\s+))?(10|12|14|16|24)$/ + }, { + // do-style command calls + token : ["text", "support.function", "text"], + regex : /(\s*)(do\$?)(\s*:\s*|\s*\(\s*)/ + }, { + // Object types + token : "entity.name.type", + regex : "(" + objectTypes + ")" + }, { + // Predefined variables + token : "variable.language", + regex : "(" + predefinedVariables + ")" + }, { + // Functions + token : ["support.function", "text"], + regex : "((?:" + functions + ")\\$?)(\\s*(?::|\\())" + }, { + // For-loop declarations + token : "keyword", + regex : /(\bfor\b)/, + next : "for" + }, { + // Generic keywords + token : "keyword", + regex : "(\\b(?:" + keywords + ")\\b)" + }, { + // Generic strings + token : "string", + regex : /"[^"]*"/ + }, { + // Multiline quoted strings + token : "string", + regex : /"[^"]*$/, + next : "brokenstring" + }, { + // Form declarations + token : ["text", "keyword", "text", "entity.name.section"], + regex : /(^\s*)(\bform\b)(\s+)(.*)/, + next : "form" + }, { + // Numeric constants + token : "constant.numeric", + regex : /\b[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + }, { + // Procedure declarations + token : ["keyword", "text", "entity.name.function"], + regex : /(procedure)(\s+)(\S+)/ + }, { + // New-style procedure calls + token : ["entity.name.function", "text"], + regex : /(@\S+)(:|\s*\()/ + }, { + // Old-style procedure calls + token : ["text", "keyword", "text", "entity.name.function"], + regex : /(^\s*)(call)(\s+)(\S+)/ + }, { + // Comments + token : "comment", + regex : /(^\s*#|;).*$/ + }, { + token : "text", + regex : /\s+/ + } + ], + "form" : [ + { + token : ["keyword", "text", "constant.numeric"], + regex : /((?:optionmenu|choice)\s+)(\S+:\s+)([0-9]+)/ + }, { + token : ["keyword", "constant.numeric"], + regex : /((?:option|button)\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/ + }, { + token : ["keyword", "string"], + regex : /((?:option|button)\s+)(.*)/ + }, { + token : ["keyword", "text", "string"], + regex : /((?:sentence|text)\s+)(\S+\s*)(.*)/ + }, { + token : ["keyword", "text", "string", "invalid.illegal"], + regex : /(word\s+)(\S+\s*)(\S+)?(\s.*)?/ + }, { + token : ["keyword", "text", "constant.language"], + regex : /(boolean\s+)(\S+\s*)(0|1|"?(?:yes|no)"?)/ + }, { + token : ["keyword", "text", "constant.numeric"], + regex : /((?:real|natural|positive|integer)\s+)(\S+\s*)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/ + }, { + token : ["keyword", "string"], + regex : /(comment\s+)(.*)/ + }, { + token : "keyword", + regex : 'endform', + next : "start" + } + ], + "for" : [ + { + token : ["keyword", "text", "constant.numeric", "text"], + regex : /(from|to)(\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?)(\s*)/ + }, { + token : ["keyword", "text"], + regex : /(from|to)(\s+\S+\s*)/ + }, { + token : "text", + regex : /$/, + next : "start" + } + ], + "brokenstring" : [ + { + token : ["text", "string"], + regex : /(\s*\.{3})([^"]*)/ + }, { + token : "string", + regex : /"/, + next : "start" + } + ] + }; +}; + +oop.inherits(PraatHighlightRules, TextHighlightRules); + +exports.PraatHighlightRules = PraatHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/prolog.js b/plugins/node_modules/ace/lib/ace/mode/prolog.js new file mode 100644 index 00000000..72a39943 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/prolog.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PrologHighlightRules = require("./prolog_highlight_rules").PrologHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = PrologHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "%"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/prolog"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/prolog_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/prolog_highlight_rules.js new file mode 100644 index 00000000..ecb54f6d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/prolog_highlight_rules.js @@ -0,0 +1,238 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from https://raw.github.com/stephenroller/prolog-tmbundle/master/Syntaxes/Prolog.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PrologHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { include: '#comment' }, + { include: '#basic_fact' }, + { include: '#rule' }, + { include: '#directive' }, + { include: '#fact' } ], + '#atom': + [ { token: 'constant.other.atom.prolog', + regex: '\\b[a-z][a-zA-Z0-9_]*\\b' }, + { token: 'constant.numeric.prolog', + regex: '-?\\d+(?:\\.\\d+)?' }, + { include: '#string' } ], + '#basic_elem': + [ { include: '#comment' }, + { include: '#statement' }, + { include: '#constants' }, + { include: '#operators' }, + { include: '#builtins' }, + { include: '#list' }, + { include: '#atom' }, + { include: '#variable' } ], + '#basic_fact': + [ { token: + [ 'entity.name.function.fact.basic.prolog', + 'punctuation.end.fact.basic.prolog' ], + regex: '([a-z]\\w*)(\\.)' } ], + '#builtins': + [ { token: 'support.function.builtin.prolog', + regex: '\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b' } ], + '#comment': + [ { token: + [ 'punctuation.definition.comment.prolog', + 'comment.line.percentage.prolog' ], + regex: '(%)(.*$)' }, + { token: 'punctuation.definition.comment.prolog', + regex: '/\\*', + push: + [ { token: 'punctuation.definition.comment.prolog', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.prolog' } ] } ], + '#constants': + [ { token: 'constant.language.prolog', + regex: '\\b(?:true|false|yes|no)\\b' } ], + '#directive': + [ { token: 'keyword.operator.directive.prolog', + regex: ':-', + push: + [ { token: 'meta.directive.prolog', regex: '\\.', next: 'pop' }, + { include: '#comment' }, + { include: '#statement' }, + { defaultToken: 'meta.directive.prolog' } ] } ], + '#expr': + [ { include: '#comments' }, + { token: 'meta.expression.prolog', + regex: '\\(', + push: + [ { token: 'meta.expression.prolog', regex: '\\)', next: 'pop' }, + { include: '#expr' }, + { defaultToken: 'meta.expression.prolog' } ] }, + { token: 'keyword.control.cutoff.prolog', regex: '!' }, + { token: 'punctuation.control.and.prolog', regex: ',' }, + { token: 'punctuation.control.or.prolog', regex: ';' }, + { include: '#basic_elem' } ], + '#fact': + [ { token: + [ 'entity.name.function.fact.prolog', + 'punctuation.begin.fact.parameters.prolog' ], + regex: '([a-z]\\w*)(\\()(?!.*:-)', + push: + [ { token: + [ 'punctuation.end.fact.parameters.prolog', + 'punctuation.end.fact.prolog' ], + regex: '(\\))(\\.?)', + next: 'pop' }, + { include: '#parameter' }, + { defaultToken: 'meta.fact.prolog' } ] } ], + '#list': + [ { token: 'punctuation.begin.list.prolog', + regex: '\\[(?=.*\\])', + push: + [ { token: 'punctuation.end.list.prolog', + regex: '\\]', + next: 'pop' }, + { include: '#comment' }, + { token: 'punctuation.separator.list.prolog', regex: ',' }, + { token: 'punctuation.concat.list.prolog', + regex: '\\|', + push: + [ { token: 'meta.list.concat.prolog', + regex: '(?=\\s*\\])', + next: 'pop' }, + { include: '#basic_elem' }, + { defaultToken: 'meta.list.concat.prolog' } ] }, + { include: '#basic_elem' }, + { defaultToken: 'meta.list.prolog' } ] } ], + '#operators': + [ { token: 'keyword.operator.prolog', + regex: '\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)=' } ], + '#parameter': + [ { token: 'variable.language.anonymous.prolog', + regex: '\\b_\\b' }, + { token: 'variable.parameter.prolog', + regex: '\\b[A-Z_]\\w*\\b' }, + { token: 'punctuation.separator.parameters.prolog', regex: ',' }, + { include: '#basic_elem' }, + { token: 'text', regex: '[^\\s]' } ], + '#rule': + [ { token: 'meta.rule.prolog', + regex: '(?=[a-z]\\w*.*:-)', + push: + [ { token: 'punctuation.rule.end.prolog', + regex: '\\.', + next: 'pop' }, + { token: 'meta.rule.signature.prolog', + regex: '(?=[a-z]\\w*.*:-)', + push: + [ { token: 'meta.rule.signature.prolog', + regex: '(?=:-)', + next: 'pop' }, + { token: 'entity.name.function.rule.prolog', + regex: '[a-z]\\w*(?=\\(|\\s*:-)' }, + { token: 'punctuation.rule.parameters.begin.prolog', + regex: '\\(', + push: + [ { token: 'punctuation.rule.parameters.end.prolog', + regex: '\\)', + next: 'pop' }, + { include: '#parameter' }, + { defaultToken: 'meta.rule.parameters.prolog' } ] }, + { defaultToken: 'meta.rule.signature.prolog' } ] }, + { token: 'keyword.operator.definition.prolog', + regex: ':-', + push: + [ { token: 'meta.rule.definition.prolog', + regex: '(?=\\.)', + next: 'pop' }, + { include: '#comment' }, + { include: '#expr' }, + { defaultToken: 'meta.rule.definition.prolog' } ] }, + { defaultToken: 'meta.rule.prolog' } ] } ], + '#statement': + [ { token: 'meta.statement.prolog', + regex: '(?=[a-z]\\w*\\()', + push: + [ { token: 'punctuation.end.statement.parameters.prolog', + regex: '\\)', + next: 'pop' }, + { include: '#builtins' }, + { include: '#atom' }, + { token: 'punctuation.begin.statement.parameters.prolog', + regex: '\\(', + push: + [ { token: 'meta.statement.parameters.prolog', + regex: '(?=\\))', + next: 'pop' }, + { token: 'punctuation.separator.statement.prolog', regex: ',' }, + { include: '#basic_elem' }, + { defaultToken: 'meta.statement.parameters.prolog' } ] }, + { defaultToken: 'meta.statement.prolog' } ] } ], + '#string': + [ { token: 'punctuation.definition.string.begin.prolog', + regex: '\'', + push: + [ { token: 'punctuation.definition.string.end.prolog', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.prolog', regex: '\\\\.' }, + { token: 'constant.character.escape.quote.prolog', + regex: '\'\'' }, + { defaultToken: 'string.quoted.single.prolog' } ] } ], + '#variable': + [ { token: 'variable.language.anonymous.prolog', + regex: '\\b_\\b' }, + { token: 'variable.other.prolog', + regex: '\\b[A-Z_][a-zA-Z0-9_]*\\b' } ] }; + + this.normalizeRules(); +}; + +PrologHighlightRules.metaData = { fileTypes: [ 'plg', 'prolog' ], + foldingStartMarker: '(%\\s*region \\w*)|([a-z]\\w*.*:- ?)', + foldingStopMarker: '(%\\s*end(\\s*region)?)|(?=\\.)', + keyEquivalent: '^~P', + name: 'Prolog', + scopeName: 'source.prolog' }; + + +oop.inherits(PrologHighlightRules, TextHighlightRules); + +exports.PrologHighlightRules = PrologHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/properties.js b/plugins/node_modules/ace/lib/ace/mode/properties.js new file mode 100644 index 00000000..0541db14 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/properties.js @@ -0,0 +1,49 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PropertiesHighlightRules = require("./properties_highlight_rules").PropertiesHighlightRules; + +var Mode = function() { + this.HighlightRules = PropertiesHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.$id = "ace/mode/properties"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/properties_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/properties_highlight_rules.js new file mode 100644 index 00000000..0fbaceb6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/properties_highlight_rules.js @@ -0,0 +1,86 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PropertiesHighlightRules = function() { + + var escapeRe = /\\u[0-9a-fA-F]{4}|\\/; + + this.$rules = { + "start" : [ + { + token : "comment", + regex : /[!#].*$/ + }, { + // Empty value + token : "keyword", + regex : /[=:]$/ + }, { + token : "keyword", + regex : /[=:]/, + next : "value" + }, { + token : "constant.language.escape", + regex : escapeRe + }, { + defaultToken: "variable" + } + ], + "value" : [ + { + // Multi-line string + regex : /\\$/, + token : "string", + next : "value" + }, { + regex : /$/, + token : "string", + next : "start" + }, { + token : "constant.language.escape", + regex : escapeRe + }, { + defaultToken: "string" + } + ] + }; + +}; + +oop.inherits(PropertiesHighlightRules, TextHighlightRules); + +exports.PropertiesHighlightRules = PropertiesHighlightRules; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/protobuf.js b/plugins/node_modules/ace/lib/ace/mode/protobuf.js new file mode 100644 index 00000000..6925f4a9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/protobuf.js @@ -0,0 +1,63 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Zef Hemel + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var CMode = require("./c_cpp").Mode; +var ProtobufHighlightRules = require("./protobuf_highlight_rules").ProtobufHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + CMode.call(this); + this.foldingRules = new CStyleFoldMode(); + this.HighlightRules = ProtobufHighlightRules; +}; +oop.inherits(Mode, CMode); + +(function() { + // Extra logic goes here. + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/protobuf"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/protobuf_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/protobuf_highlight_rules.js new file mode 100644 index 00000000..67f07700 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/protobuf_highlight_rules.js @@ -0,0 +1,65 @@ +define(function(require, exports, module) { + "use strict"; + + var oop = require("../lib/oop"); + var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + + var ProtobufHighlightRules = function() { + + var builtinTypes = "double|float|int32|int64|uint32|uint64|sint32|" + + "sint64|fixed32|fixed64|sfixed32|sfixed64|bool|" + + "string|bytes"; + var keywordDeclaration = "message|required|optional|repeated|package|" + + "import|option|enum"; + + var keywordMapper = this.createKeywordMapper({ + "keyword.declaration.protobuf": keywordDeclaration, + "support.type": builtinTypes + }, "identifier"); + + this.$rules = { + "start": [{ + token: "comment", + regex: /\/\/.*$/ + }, { + token: "comment", + regex: /\/\*/, + next: "comment" + }, { + token: "constant", + regex: "<[^>]+>" + }, { + regex: "=", + token: "keyword.operator.assignment.protobuf" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : '[\'](?:(?:\\\\.)|(?:[^\'\\\\]))*?[\']' + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }], + "comment": [{ + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + }] + }; + + this.normalizeRules(); + }; + + oop.inherits(ProtobufHighlightRules, TextHighlightRules); + + exports.ProtobufHighlightRules = ProtobufHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/python.js b/plugins/node_modules/ace/lib/ace/mode/python.js new file mode 100644 index 00000000..86cabedc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/python.js @@ -0,0 +1,114 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; +var PythonFoldMode = require("./folding/pythonic").FoldMode; +var Range = require("../range").Range; + +var Mode = function() { + this.HighlightRules = PythonHighlightRules; + this.foldingRules = new PythonFoldMode("\\:"); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "#"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + + this.checkOutdent = function(state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + + if (!tokens) + return false; + + // ignore trailing comments + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + + if (!last) + return false; + + return (last.type == "keyword" && outdents[last.value]); + }; + + this.autoOutdent = function(state, doc, row) { + // outdenting in python is slightly different because it always applies + // to the next line and only of a new line is inserted + + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + }; + + this.$id = "ace/mode/python"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/python_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/python_highlight_rules.js new file mode 100644 index 00000000..34607551 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/python_highlight_rules.js @@ -0,0 +1,191 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +/* + * TODO: python delimiters + */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PythonHighlightRules = function() { + + var keywords = ( + "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + + "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + + "raise|return|try|while|with|yield|async|await" + ); + + var builtinConstants = ( + "True|False|None|NotImplemented|Ellipsis|__debug__" + ); + + var builtinFunctions = ( + "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + + "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + + "binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|" + + "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + + "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + + "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + + "__import__|complex|hash|min|set|apply|delattr|help|next|setattr|" + + "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern" + ); + + //var futureReserved = ""; + var keywordMapper = this.createKeywordMapper({ + "invalid.deprecated": "debugger", + "support.function": builtinFunctions, + //"invalid.illegal": futureReserved, + "constant.language": builtinConstants, + "keyword": keywords + }, "identifier"); + + var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; + + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var octInteger = "(?:0[oO]?[0-7]+)"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var binInteger = "(?:0[bB][01]+)"; + var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; + + var exponent = "(?:[eE][+-]?\\d+)"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; + + this.$rules = { + "start" : [ { + token : "comment", + regex : "#.*$" + }, { + token : "string", // multi line """ string start + regex : strPre + '"{3}', + next : "qqstring3" + }, { + token : "string", // " string + regex : strPre + '"(?=.)', + next : "qqstring" + }, { + token : "string", // multi line ''' string start + regex : strPre + "'{3}", + next : "qstring3" + }, { + token : "string", // ' string + regex : strPre + "'(?=.)", + next : "qstring" + }, { + token : "constant.numeric", // imaginary + regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token : "constant.numeric", // float + regex : floatNumber + }, { + token : "constant.numeric", // long integer + regex : integer + "[lL]\\b" + }, { + token : "constant.numeric", // integer + regex : integer + "\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token : "paren.lparen", + regex : "[\\[\\(\\{]" + }, { + token : "paren.rparen", + regex : "[\\]\\)\\}]" + }, { + token : "text", + regex : "\\s+" + } ], + "qqstring3" : [ { + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", // multi line """ string end + regex : '"{3}', + next : "start" + }, { + defaultToken : "string" + } ], + "qstring3" : [ { + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", // multi line ''' string end + regex : "'{3}", + next : "start" + }, { + defaultToken : "string" + } ], + "qqstring" : [{ + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", + regex : "\\\\$", + next : "qqstring" + }, { + token : "string", + regex : '"|$', + next : "start" + }, { + defaultToken: "string" + }], + "qstring" : [{ + token : "constant.language.escape", + regex : stringEscape + }, { + token : "string", + regex : "\\\\$", + next : "qstring" + }, { + token : "string", + regex : "'|$", + next : "start" + }, { + defaultToken: "string" + }] + }; +}; + +oop.inherits(PythonHighlightRules, TextHighlightRules); + +exports.PythonHighlightRules = PythonHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/python_test.js b/plugins/node_modules/ace/lib/ace/mode/python_test.js new file mode 100644 index 00000000..813ce813 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/python_test.js @@ -0,0 +1,79 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var Tokenizer = require("../tokenizer").Tokenizer; +var Mode = require("./python").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new Mode(); + }, + + "test: getTokenizer() (smoke test)" : function() { + var tokenizer = this.mode.getTokenizer(); + + assert.ok(tokenizer instanceof Tokenizer); + + var tokens = tokenizer.getLineTokens("'juhu'", "start").tokens; + assert.equal("string", tokens[0].type); + }, + + "test: auto outdent after 'pass', 'return' and 'raise'" : function() { + assert.ok(this.mode.checkOutdent("start", " pass", "\n")); + assert.ok(this.mode.checkOutdent("start", " pass ", "\n")); + assert.ok(this.mode.checkOutdent("start", " return", "\n")); + assert.ok(this.mode.checkOutdent("start", " raise", "\n")); + assert.equal(this.mode.checkOutdent("start", " raise", " "), false); + assert.ok(this.mode.checkOutdent("start", " pass # comment", "\n")); + assert.equal(this.mode.checkOutdent("start", "'juhu'", "\n"), false); + }, + + "test: auto outdent" : function() { + var session = new EditSession([" if True:", " pass", " "]); + this.mode.autoOutdent("start", session, 1); + assert.equal(" ", session.getLine(2)); + } + +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/r.js b/plugins/node_modules/ace/lib/ace/mode/r.js new file mode 100644 index 00000000..8aa2a7f6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/r.js @@ -0,0 +1,143 @@ +/* + * r.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +define(function(require, exports, module) { + "use strict"; + + var unicode = require("../unicode"); + var Range = require("../range").Range; + var oop = require("../lib/oop"); + var TextMode = require("./text").Mode; + var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + var RHighlightRules = require("./r_highlight_rules").RHighlightRules; + var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + + var Mode = function(){ + this.HighlightRules = RHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + }; + oop.inherits(Mode, TextMode); + + (function() { + this.lineCommentStart = "#"; + // todo import codeModel from RStudio + this.tokenRe = new RegExp("^[" + unicode.wordChars + "._]+", "g"); + + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "._]|\s])+", "g"); + + /*this.$complements = { + "(": ")", + "[": "]", + '"': '"', + "'": "'", + "{": "}" + }; + this.$reOpen = /^[(["'{]$/; + this.$reClose = /^[)\]"'}]$/; + + this.getNextLineIndent = function(state, line, tab, tabSize, row) + { + return this.codeModel.getNextLineIndent(row, line, state, tab, tabSize); + }; + + this.allowAutoInsert = this.smartAllowAutoInsert; + + this.checkOutdent = function(state, line, input) { + if (! /^\s+$/.test(line)) + return false; + + return /^\s*[\{\}\)]/.test(input); + }; + + this.getIndentForOpenBrace = function(openBracePos) + { + return this.codeModel.getIndentForOpenBrace(openBracePos); + }; + + this.autoOutdent = function(state, doc, row) { + if (row == 0) + return 0; + + var line = doc.getLine(row); + + var match = line.match(/^(\s*[\}\)])/); + if (match) + { + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({row: row, column: column}); + + if (!openBracePos || openBracePos.row == row) return 0; + + var indent = this.codeModel.getIndentForOpenBrace(openBracePos); + doc.replace(new Range(row, 0, row, column-1), indent); + } + + match = line.match(/^(\s*\{)/); + if (match) + { + var column = match[1].length; + var indent = this.codeModel.getBraceIndent(row-1); + doc.replace(new Range(row, 0, row, column-1), indent); + } + }; + + this.$getIndent = function(line) { + var match = line.match(/^(\s+)/); + if (match) { + return match[1]; + } + + return ""; + }; + + this.transformAction = function(state, action, editor, session, text) { + if (action === 'insertion' && text === "\n") { + + // If newline in a doxygen comment, continue the comment + var pos = editor.getSelectionRange().start; + var match = /^((\s*#+')\s*)/.exec(session.doc.getLine(pos.row)); + if (match && editor.getSelectionRange().start.column >= match[2].length) { + return {text: "\n" + match[1]}; + } + } + return false; + };*/ + this.$id = "ace/mode/r"; + }).call(Mode.prototype); + exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/r_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/r_highlight_rules.js new file mode 100644 index 00000000..27eaaf5d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/r_highlight_rules.js @@ -0,0 +1,208 @@ +/* + * r_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +define(function(require, exports, module) +{ + + var oop = require("../lib/oop"); + var lang = require("../lib/lang"); + var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; + + var RHighlightRules = function() + { + + var keywords = lang.arrayToMap( + ("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") + .split("|") + ); + + var buildinConstants = lang.arrayToMap( + ("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + + "NA_complex_").split("|") + ); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + // Roxygen + token : "comment.sectionhead", + regex : "#+(?!').*(?:----|====|####)\\s*$" + }, + { + // Roxygen + token : "comment", + regex : "#+'", + next : "rd-start" + }, + { + token : "comment", + regex : "#.*$" + }, + { + token : "string", // multi line string start + regex : '["]', + next : "qqstring" + }, + { + token : "string", // multi line string start + regex : "[']", + next : "qstring" + }, + { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+[Li]?\\b" + }, + { + token : "constant.numeric", // explicit integer + regex : "\\d+L\\b" + }, + { + token : "constant.numeric", // number + regex : "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" + }, + { + token : "constant.numeric", // number with leading decimal + regex : "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" + }, + { + token : "constant.language.boolean", + regex : "(?:TRUE|FALSE|T|F)\\b" + }, + { + token : "identifier", + regex : "`.*?`" + }, + { + onMatch : function(value) { + if (keywords[value]) + return "keyword"; + else if (buildinConstants[value]) + return "constant.language"; + else if (value == '...' || value.match(/^\.\.\d+$/)) + return "variable.language"; + else + return "identifier"; + }, + regex : "[a-zA-Z.][a-zA-Z0-9._]*\\b" + }, + { + token : "keyword.operator", + regex : "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" + }, + { + token : "keyword.operator", // infix operators + regex : "%.*?%" + }, + { + // Obviously these are neither keywords nor operators, but + // labelling them as such was the easiest way to get them + // to be colored distinctly from regular text + token : "paren.keyword.operator", + regex : "[[({]" + }, + { + // Obviously these are neither keywords nor operators, but + // labelling them as such was the easiest way to get them + // to be colored distinctly from regular text + token : "paren.keyword.operator", + regex : "[\\])}]" + }, + { + token : "text", + regex : "\\s+" + } + ], + "qqstring" : [ + { + token : "string", + regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next : "start" + }, + { + token : "string", + regex : '.+' + } + ], + "qstring" : [ + { + token : "string", + regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next : "start" + }, + { + token : "string", + regex : '.+' + } + ] + }; + + var rdRules = new TexHighlightRules("comment").getRules(); + + // Make all embedded TeX virtual-comment so they don't interfere with + // auto-indent. + for (var i = 0; i < rdRules["start"].length; i++) { + rdRules["start"][i].token += ".virtual-comment"; + } + + this.addRules(rdRules, "rd-"); + this.$rules["rd-start"].unshift({ + token: "text", + regex: "^", + next: "start" + }); + this.$rules["rd-start"].unshift({ + token : "keyword", + regex : "@(?!@)[^ ]*" + }); + this.$rules["rd-start"].unshift({ + token : "comment", + regex : "@@" + }); + this.$rules["rd-start"].push({ + token : "comment", + regex : "[^%\\\\[({\\])}]+" + }); + }; + + oop.inherits(RHighlightRules, TextHighlightRules); + + exports.RHighlightRules = RHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/razor.js b/plugins/node_modules/ace/lib/ace/mode/razor.js new file mode 100644 index 00000000..d13c58e6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/razor.js @@ -0,0 +1,33 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var RazorHighlightRules = require("./razor_highlight_rules").RazorHighlightRules; +var RazorCompletions = require("./razor_completions").RazorCompletions; +var HtmlCompletions = require("./html_completions").HtmlCompletions; + +var Mode = function() { + HtmlMode.call(this); + this.$highlightRules = new RazorHighlightRules(); + this.$completer = new RazorCompletions(); + this.$htmlCompleter = new HtmlCompletions(); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + this.getCompletions = function(state, session, pos, prefix) { + var razorToken = this.$completer.getCompletions(state, session, pos, prefix); + var htmlToken = this.$htmlCompleter.getCompletions(state, session, pos, prefix); + return razorToken.concat(htmlToken); + }; + + this.createWorker = function(session) { + return null; + }; + + this.$id = "ace/mode/razor"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/razor_completions.js b/plugins/node_modules/ace/lib/ace/mode/razor_completions.js new file mode 100644 index 00000000..c4ac6330 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/razor_completions.js @@ -0,0 +1,112 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var TokenIterator = require("../token_iterator").TokenIterator; + +var keywords = [ + "abstract", "as", "base", "bool", + "break", "byte", "case", "catch", + "char", "checked", "class", "const", + "continue", "decimal", "default", "delegate", + "do", "double","else","enum", + "event", "explicit", "extern", "false", + "finally", "fixed", "float", "for", + "foreach", "goto", "if", "implicit", + "in", "int", "interface", "internal", + "is", "lock", "long", "namespace", + "new", "null", "object", "operator", + "out", "override", "params", "private", + "protected", "public", "readonly", "ref", + "return", "sbyte", "sealed", "short", + "sizeof", "stackalloc", "static", "string", + "struct", "switch", "this", "throw", + "true", "try", "typeof", "uint", + "ulong", "unchecked", "unsafe", "ushort", + "using", "var", "virtual", "void", + "volatile", "while"]; + +var shortHands = [ + "Html", "Model", "Url", "Layout" +]; + +var RazorCompletions = function() { + +}; + +(function() { + + this.getCompletions = function(state, session, pos, prefix) { + + if(state.lastIndexOf("razor-short-start") == -1 && state.lastIndexOf("razor-block-start") == -1) + return []; + + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + + if(state.lastIndexOf("razor-short-start") != -1) { + return this.getShortStartCompletions(state, session, pos, prefix); + } + + if(state.lastIndexOf("razor-block-start") != -1) { + return this.getKeywordCompletions(state, session, pos, prefix); + } + + + }; + + this.getShortStartCompletions = function(state, session, pos, prefix) { + return shortHands.map(function(element){ + return { + value: element, + meta: "keyword", + score: Number.MAX_VALUE + }; + }); + }; + + this.getKeywordCompletions = function(state, session, pos, prefix) { + return shortHands.concat(keywords).map(function(element){ + return { + value: element, + meta: "keyword", + score: Number.MAX_VALUE + }; + }); + }; + +}).call(RazorCompletions.prototype); + +exports.RazorCompletions = RazorCompletions; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/razor_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/razor_highlight_rules.js new file mode 100644 index 00000000..f9ef223d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/razor_highlight_rules.js @@ -0,0 +1,160 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var CSharpHighlightRules = require("./csharp_highlight_rules").CSharpHighlightRules; + +var blockPrefix = 'razor-block-'; +var RazorLangHighlightRules = function() { + CSharpHighlightRules.call(this); + + var processPotentialCallback = function(value, stackItem) { + if (typeof stackItem === "function") + return stackItem(value); + + return stackItem; + }; + + var inBraces = 'in-braces'; + this.$rules.start.unshift({ + regex: '[\\[({]', + onMatch: function(value, state, stack) { + var prefix = /razor-[^\-]+-/.exec(state)[0]; + + stack.unshift(value); + stack.unshift(prefix + inBraces); + this.next = prefix + inBraces; + return 'paren.lparen'; + } + }, { + start: "@\\*", + end: "\\*@", + token: "comment" + }); + + var parentCloseMap = { + '{': '}', + '[': ']', + '(': ')' + }; + + this.$rules[inBraces] = lang.deepCopy(this.$rules.start); + this.$rules[inBraces].unshift({ + regex: '[\\])}]', + onMatch: function(value, state, stack) { + var open = stack[1]; + if (parentCloseMap[open] !== value) + return 'invalid.illegal'; + + stack.shift(); // exit in-braces block + stack.shift(); // exit brace marker + this.next = processPotentialCallback(value, stack[0]) || 'start'; + return 'paren.rparen'; + } + }); +}; + +oop.inherits(RazorLangHighlightRules, CSharpHighlightRules); + +var RazorHighlightRules = function() { + HtmlHighlightRules.call(this); + + // 'Blocks': @{}, @(), @functions{} + + var blockStartRule = { + regex: '@[({]|@functions{', + onMatch: function(value, state, stack) { + stack.unshift(value); + stack.unshift('razor-block-start'); + this.next = 'razor-block-start'; + return 'punctuation.block.razor'; + } + }; + + var blockEndMap = { + '@{': '}', + '@(': ')', + '@functions{':'}' + }; + + var blockEndRule = { + regex: '[})]', + onMatch: function(value, state, stack) { + var blockStart = stack[1]; + if (blockEndMap[blockStart] !== value) + return 'invalid.illegal'; + + stack.shift(); // exit razor block + stack.shift(); // remove block type marker + this.next = stack.shift() || 'start'; + return 'punctuation.block.razor'; + } + }; + + // Short: @Abc.Cde(Xyz).Ef + + var shortStartRule = { + regex: "@(?![{(])", + onMatch: function(value, state, stack) { + stack.unshift("razor-short-start"); + this.next = "razor-short-start"; + return 'punctuation.short.razor'; + } + }; + + var shortEndRule = { + token: "", + regex: "(?=[^A-Za-z_\\.()\\[\\]])", + next: 'pop' + }; + + // Control flow: @if, etc + + var ifStartRule = { + regex: "@(?=if)", + onMatch: function(value, state, stack) { + stack.unshift(function(value) { + if (value !== '}') + return 'start'; + + return stack.shift() || 'start'; + }); + this.next = 'razor-block-start'; + return 'punctuation.control.razor'; + } + }; + + // Combined: + + var razorStartRules = [ + { + start: "@\\*", + end: "\\*@", + token: "comment" + }, + { + token: ["meta.directive.razor", "text", "identifier"], + regex: "^(\\s*@model)(\\s+)(.+)$" + }, + blockStartRule, + //ifStartRule, + shortStartRule + ]; + + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], razorStartRules); + + this.embedRules(RazorLangHighlightRules, "razor-block-", [blockEndRule], ["start"]); + this.embedRules(RazorLangHighlightRules, "razor-short-", [shortEndRule], ["start"]); + + this.normalizeRules(); +}; + +oop.inherits(RazorHighlightRules, HtmlHighlightRules); + +exports.RazorHighlightRules = RazorHighlightRules; +exports.RazorLangHighlightRules = RazorLangHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/rdoc.js b/plugins/node_modules/ace/lib/ace/mode/rdoc.js new file mode 100644 index 00000000..220025a6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/rdoc.js @@ -0,0 +1,61 @@ +/* + * rdoc.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RDocHighlightRules = require("./rdoc_highlight_rules").RDocHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + +var Mode = function(suppressHighlighting) { + this.HighlightRules = RDocHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.getNextLineIndent = function(state, line, tab) { + return this.$getIndent(line); + }; + this.$id = "ace/mode/rdoc"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/rdoc_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/rdoc_highlight_rules.js new file mode 100644 index 00000000..cfbdecfc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/rdoc_highlight_rules.js @@ -0,0 +1,119 @@ +/* + * rdoc_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LaTeXHighlightRules = require("./latex_highlight_rules"); + +var RDocHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "%.*$" + }, { + token : "text", // non-command + regex : "\\\\[$&%#\\{\\}]" + }, { + token : "keyword", // command + regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b", + next : "nospell" + }, { + token : "keyword", // command + regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + }, { + // Obviously these are neither keywords nor operators, but + // labelling them as such was the easiest way to get them + // to be colored distinctly from regular text + token : "paren.keyword.operator", + regex : "[[({]" + }, { + // Obviously these are neither keywords nor operators, but + // labelling them as such was the easiest way to get them + // to be colored distinctly from regular text + token : "paren.keyword.operator", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + // This mode is necessary to prevent spell checking, but to keep the + // same syntax highlighting behavior. + "nospell" : [ + { + token : "comment", + regex : "%.*$", + next : "start" + }, { + token : "nospell.text", // non-command + regex : "\\\\[$&%#\\{\\}]" + }, { + token : "keyword", // command + regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b" + }, { + token : "keyword", // command + regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next : "start" + }, { + token : "paren.keyword.operator", + regex : "[[({]" + }, { + token : "paren.keyword.operator", + regex : "[\\])]" + }, { + token : "paren.keyword.operator", + regex : "}", + next : "start" + }, { + token : "nospell.text", + regex : "\\s+" + }, { + token : "nospell.text", + regex : "\\w+" + } + ] + }; +}; + +oop.inherits(RDocHighlightRules, TextHighlightRules); + +exports.RDocHighlightRules = RDocHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/red.js b/plugins/node_modules/ace/lib/ace/mode/red.js new file mode 100644 index 00000000..c7ca8dbc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/red.js @@ -0,0 +1,98 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RedHighlightRules = require("./red_highlight_rules").RedHighlightRules; +var RedFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; + +var Mode = function() { + this.HighlightRules = RedHighlightRules; + this.foldingRules = new RedFoldMode(); + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ";"; + this.blockCommentStart = "comment {"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\[\(]\s*$/); + if (match) { + indent += tab; + } + } else if (state == "doc-start") { + if (endState == "start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/red"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/red_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/red_highlight_rules.js new file mode 100644 index 00000000..e7315fe2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/red_highlight_rules.js @@ -0,0 +1,233 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var RedHighlightRules = function() { + + //var keywordMapper = this.createKeywordMapper({ + //}, "text", true, " "); + + var compoundKeywords = ""; + + this.$rules = { + "start" : [ + {token : "keyword.operator", + regex: /\s([\-+%/=<>*]|(?:\*\*\|\/\/|==|>>>?|<>|<<|=>|<=|=\?))(\s|(?=:))/}, + {token : "string.email", regex : /\w[-\w._]*\@\w[-\w._]*/}, + {token : "value.time", regex : /\b\d+:\d+(:\d+)?/}, + {token : "string.url", regex : /\w[-\w_]*\:(\/\/)?\w[-\w._]*(:\d+)?/}, + {token : "value.date", regex : /(\b\d{1,4}[-/]\d{1,2}[-/]\d{1,2}|\d{1,2}[-/]\d{1,2}[-/]\d{1,4})\b/}, + {token : "value.tuple", regex : /\b\d{1,3}\.\d{1,3}\.\d{1,3}(\.\d{1,3}){0,9}/}, + {token : "value.pair", regex: /[+-]?\d+x[-+]?\d+/}, + {token : "value.binary", regex : /\b2#{([01]{8})+}/}, + {token : "value.binary", regex : /\b64#{([\w/=+])+}/}, + {token : "value.binary", regex : /(16)?#{([\dabcdefABCDEF][\dabcdefABCDEF])*}/}, + {token : "value.issue", regex : /#\w[-\w'*.]*/}, + {token : "value.numeric", regex: /[+-]?\d['\d]*(?:\.\d+)?e[-+]?\d{1,3}\%?(?!\w)/}, + {token : "invalid.illegal", regex: /[+-]?\d['\d]*(?:\.\d+)?\%?[a-zA-Z]/}, + {token : "value.numeric", regex: /[+-]?\d['\d]*(?:\.\d+)?\%?(?![a-zA-Z])/}, + {token : "value.character", regex : /#"(\^[-@/_~^"HKLM\[]|.)"/}, + {token : "string.file", regex : /%[-\w\.\/]+/}, + {token : "string.tag", regex : /</, next : "tag"}, + {token : "string", regex : /"/, next : "string"}, + {token : "string.other", regex : "{", next : "string.other"}, + {token : "comment", regex : "comment [[{]", next : "comment"}, + {token : "comment", regex : /;.+$/}, + //{token : "invalid", regex: "\\.{2,}"}, + {token : "paren.map-start", regex : "#\\("}, + {token : "paren.block-start", regex : "[\\[]"}, + {token : "paren.block-end", regex : "[\\]]"}, + {token : "paren.parens-start", regex : "[(]"}, + {token : "paren.parens-end", regex : "\\)"}, + //{token : "keyword", regex : compoundKeywords}, + {token : "keyword", regex : "/local|/external"}, + {token : "keyword.preprocessor", regex : "#(if|either|" + + "switch|case|include|do|macrolocal|reset|process|trace)"}, + {token : "constant.datatype!", regex : + "(?:datatype|unset|none|logic|block|paren|string|" + + "file|url|char|integer|float|word|set-word|lit-word|" + + "get-word|refinement|issue|native|action|op|function|" + + "path|lit-path|set-path|get-path|routine|bitset|point|" + + "object|typeset|error|vector|hash|pair|percent|tuple|" + + "map|binary|time|tag|email|handle|date|image|event|" + + "series|any-type|number|any-object|scalar|" + + "any-string|any-word|any-function|any-block|any-list|" + + "any-path|immediate|all-word|internal|external|default)!(?![-!?\\w~])"}, + {token : "keyword.function", regex : + "\\b(?:collect|quote|on-parse-event|math|last|source|expand|" + + "show|context|object|input|quit|dir|make-dir|cause-error|" + + "error\\?|none\\?|block\\?|any-list\\?|word\\?|char\\?|" + + "any-string\\?|series\\?|binary\\?|attempt|url\\?|" + + "string\\?|suffix\\?|file\\?|object\\?|body-of|first|" + + "second|third|mod|clean-path|dir\\?|to-red-file|" + + "normalize-dir|list-dir|pad|empty\\?|dirize|offset\\?|" + + "what-dir|expand-directives|load|split-path|change-dir|" + + "to-file|path-thru|save|load-thru|View|float\\?|to-float|" + + "charset|\\?|probe|set-word\\?|q|words-of|replace|repend|" + + "react|function\\?|spec-of|unset\\?|halt|op\\?|" + + "any-function\\?|to-paren|tag\\?|routine|class-of|" + + "size-text|draw|handle\\?|link-tabs-to-parent|" + + "link-sub-to-parent|on-face-deep-change*|" + + "update-font-faces|do-actor|do-safe|do-events|pair\\?|" + + "foreach-face|hex-to-rgb|issue\\?|alter|path\\?|" + + "typeset\\?|datatype\\?|set-flag|layout|extract|image\\?|" + + "get-word\\?|to-logic|to-set-word|to-block|center-face|" + + "dump-face|request-font|request-file|request-dir|rejoin|" + + "ellipsize-at|any-block\\?|any-object\\?|map\\?|keys-of|" + + "a-an|also|parse-func-spec|help-string|what|routine\\?|" + + "action\\?|native\\?|refinement\\?|common-substr|" + + "red-complete-file|red-complete-path|unview|comment|\\?\\?|" + + "fourth|fifth|values-of|bitset\\?|email\\?|get-path\\?|" + + "hash\\?|integer\\?|lit-path\\?|lit-word\\?|logic\\?|" + + "paren\\?|percent\\?|set-path\\?|time\\?|tuple\\?|date\\?|" + + "vector\\?|any-path\\?|any-word\\?|number\\?|immediate\\?|" + + "scalar\\?|all-word\\?|to-bitset|to-binary|to-char|to-email|" + + "to-get-path|to-get-word|to-hash|to-integer|to-issue|" + + "to-lit-path|to-lit-word|to-map|to-none|to-pair|to-path|" + + "to-percent|to-refinement|to-set-path|to-string|to-tag|" + + "to-time|to-typeset|to-tuple|to-unset|to-url|to-word|" + + "to-image|to-date|parse-trace|modulo|eval-set-path|" + + "extract-boot-args|flip-exe-flag|split|do-file|" + + "exists-thru\\?|read-thru|do-thru|cos|sin|tan|acos|asin|" + + "atan|atan2|sqrt|clear-reactions|dump-reactions|react\\?|" + + "within\\?|overlap\\?|distance\\?|face\\?|metrics\\?|" + + "get-scroller|insert-event-func|remove-event-func|" + + "set-focus|help|fetch-help|about|ls|ll|pwd|cd|" + + "red-complete-input|matrix)(?![-!?\\w~])"}, + {token : "keyword.action", regex : + "\\b(?:to|remove|copy|insert|change|clear|move|poke|put|" + + "random|reverse|sort|swap|take|trim|add|subtract|" + + "divide|multiply|make|reflect|form|mold|modify|" + + "absolute|negate|power|remainder|round|even\\?|odd\\?|" + + "and~|complement|or~|xor~|append|at|back|find|skip|" + + "tail|head|head\\?|index\\?|length\\?|next|pick|" + + "select|tail\\?|delete|read|write)(?![-_!?\\w~])" + }, + {token : "keyword.native", regex : + "\\b(?:not|any|set|uppercase|lowercase|checksum|" + + "try|catch|browse|throw|all|as|" + + "remove-each|func|function|does|has|do|reduce|" + + "compose|get|print|prin|equal\\?|not-equal\\?|" + + "strict-equal\\?|lesser\\?|greater\\?|lesser-or-equal\\?|" + + "greater-or-equal\\?|same\\?|type\\?|stats|bind|in|parse|" + + "union|unique|intersect|difference|exclude|" + + "complement\\?|dehex|negative\\?|positive\\?|max|min|" + + "shift|to-hex|sine|cosine|tangent|arcsine|arccosine|" + + "arctangent|arctangent2|NaN\\?|zero\\?|log-2|log-10|log-e|" + + "exp|square-root|construct|value\\?|as-pair|" + + "extend|debase|enbase|to-local-file|" + + "wait|unset|new-line|new-line\\?|context\\?|set-env|" + + "get-env|list-env|now|sign\\?|call|size\\?)(?![-!?\\w~])" + }, + {token : "keyword", regex : + "\\b(?:Red(?=\\s+\\[)|object|context|make|self|keep)(?![-!?\\w~])" + }, + {token: "variable.language", regex : "this"}, + {token: "keyword.control", regex : + "(?:while|if|return|case|unless|either|until|loop|repeat|" + + "forever|foreach|forall|switch|break|continue|exit)(?![-!?\\w~])"}, + {token: "constant.language", regex : + "\\b(?:true|false|on|off|yes|none|no)(?![-!?\\w~])"}, + {token: "constant.numeric", regex : /\bpi(?![^-_])/}, + {token: "constant.character", regex : "\\b(space|tab|newline|cr|lf)(?![-!?\\w~])"}, + {token: "keyword.operator", regex : "\s(or|and|xor|is)\s"}, + //{token : keywordMapper, regex : "\\b\\w[-\\w'*.]*\\b"}, + {token : "variable.get-path", regex : /:\w[-\w'*.?!]*(\/\w[-\w'*.?!]*)(\/\w[-\w'*.?!]*)*/}, + {token : "variable.set-path", regex : /\w[-\w'*.?!]*(\/\w[-\w'*.?!]*)(\/\w[-\w'*.?!]*)*:/}, + {token : "variable.lit-path", regex : /'\w[-\w'*.?!]*(\/\w[-\w'*.?!]*)(\/\w[-\w'*.?!]*)*/}, + {token : "variable.path", regex : /\w[-\w'*.?!]*(\/\w[-\w'*.?!]*)(\/\w[-\w'*.?!]*)*/}, + {token : "variable.refinement", regex : /\/\w[-\w'*.?!]*/}, + {token : "keyword.view.style", regex : + "\\b(?:window|base|button|text|field|area|check|" + + "radio|progress|slider|camera|text-list|" + + "drop-list|drop-down|panel|group-box|" + + "tab-panel|h1|h2|h3|h4|h5|box|image|init)(?![-!?\\w~])"}, + {token : "keyword.view.event", regex : + "\\b(?:detect|on-detect|time|on-time|drawing|on-drawing|" + + "scroll|on-scroll|down|on-down|up|on-up|mid-down|" + + "on-mid-down|mid-up|on-mid-up|alt-down|on-alt-down|" + + "alt-up|on-alt-up|aux-down|on-aux-down|aux-up|" + + "on-aux-up|wheel|on-wheel|drag-start|on-drag-start|" + + "drag|on-drag|drop|on-drop|click|on-click|dbl-click|" + + "on-dbl-click|over|on-over|key|on-key|key-down|" + + "on-key-down|key-up|on-key-up|ime|on-ime|focus|" + + "on-focus|unfocus|on-unfocus|select|on-select|" + + "change|on-change|enter|on-enter|menu|on-menu|close|" + + "on-close|move|on-move|resize|on-resize|moving|" + + "on-moving|resizing|on-resizing|zoom|on-zoom|pan|" + + "on-pan|rotate|on-rotate|two-tap|on-two-tap|" + + "press-tap|on-press-tap|create|on-create|created|on-created)(?![-!?\\w~])"}, + {token : "keyword.view.option", regex : + "\\b(?:all-over|center|color|default|disabled|down|" + + "flags|focus|font|font-color|font-name|" + + "font-size|hidden|hint|left|loose|name|" + + "no-border|now|rate|react|select|size|space)(?![-!?\\w~])"}, + {token : "constant.other.colour", regex : "\\b(?:Red|white|transparent|" + + "black|gray|aqua|beige|blue|brick|brown|coal|coffee|" + + "crimson|cyan|forest|gold|green|ivory|khaki|leaf|linen|" + + "magenta|maroon|mint|navy|oldrab|olive|orange|papaya|" + + "pewter|pink|purple|reblue|rebolor|sienna|silver|sky|" + + "snow|tanned|teal|violet|water|wheat|yello|yellow|glass)(?![-!?\\w~])"}, + {token : "variable.get-word", regex : /\:\w[-\w'*.?!]*/}, + {token : "variable.set-word", regex : /\w[-\w'*.?!]*\:/}, + {token : "variable.lit-word", regex : /'\w[-\w'*.?!]*/}, + {token : "variable.word", regex : /\b\w+[-\w'*.!?]*/}, + {caseInsensitive: true} + ], + "string" : [ + //{token : "constant.language.escape", regex : "^"}, + {token : "string", regex : /"/, next : "start"}, + {defaultToken : "string"} + ], + "string.other" : [ + //{token : "constant.language.escape", regex : "^"}, + {token : "string.other", regex : /}/, next : "start"}, + {defaultToken : "string.other"} + ], + "tag" : [ + {token : "string.tag", regex : />/, next : "start"}, + {defaultToken : "string.tag"} + ], + "comment" : [ + //{token : "constant.language.escape", regex : "^"}, + {token : "comment", regex : /}/, next : "start"}, + {defaultToken : "comment"} + ] + }; +}; +oop.inherits(RedHighlightRules, TextHighlightRules); + +exports.RedHighlightRules = RedHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/rhtml.js b/plugins/node_modules/ace/lib/ace/mode/rhtml.js new file mode 100644 index 00000000..a70cfb1f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/rhtml.js @@ -0,0 +1,87 @@ +/* + * rhtml.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; + +var RHtmlHighlightRules = require("./rhtml_highlight_rules").RHtmlHighlightRules; +/* Make life easier, don't do these right now +var SweaveBackgroundHighlighter = require("mode/sweave_background_highlighter").SweaveBackgroundHighlighter; +var RCodeModel = require("mode/r_code_model").RCodeModel; +*/ + +var Mode = function(doc, session) { + HtmlMode.call(this); + this.$session = session; + this.HighlightRules = RHtmlHighlightRules; + + /* Or these. + this.codeModel = new RCodeModel(doc, this.$tokenizer, /^r-/, + /^<!--\s*begin.rcode\s*(.*)/); + this.foldingRules = this.codeModel; + this.$sweaveBackgroundHighlighter = new SweaveBackgroundHighlighter( + session, + /^<!--\s*begin.rcode\s*(?:.*)/, + /^\s*end.rcode\s*-->/, + true); */ +}; +oop.inherits(Mode, HtmlMode); + +(function() { + this.insertChunkInfo = { + value: "<!--begin.rcode\n\nend.rcode-->\n", + position: {row: 0, column: 15} + }; + + this.getLanguageMode = function(position) + { + return this.$session.getState(position.row).match(/^r-/) ? 'R' : 'HTML'; + }; + + /* this.getNextLineIndent = function(state, line, tab, tabSize, row) + { + return this.codeModel.getNextLineIndent(row, line, state, tab, tabSize); + }; */ + + this.$id = "ace/mode/rhtml"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/rhtml_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/rhtml_highlight_rules.js new file mode 100644 index 00000000..6dc2fc90 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/rhtml_highlight_rules.js @@ -0,0 +1,66 @@ +/* + * rhtml_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var RHighlightRules = require("./r_highlight_rules").RHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var RHtmlHighlightRules = function() { + HtmlHighlightRules.call(this); + + this.$rules["start"].unshift({ + token: "support.function.codebegin", + regex: "^<" + "!--\\s*begin.rcode\\s*(?:.*)", + next: "r-start" + }); + + this.embedRules(RHighlightRules, "r-", [{ + token: "support.function.codeend", + regex: "^\\s*end.rcode\\s*-->", + next: "start" + }], ["start"]); + + this.normalizeRules(); +}; +oop.inherits(RHtmlHighlightRules, TextHighlightRules); + +exports.RHtmlHighlightRules = RHtmlHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/rst.js b/plugins/node_modules/ace/lib/ace/mode/rst.js new file mode 100644 index 00000000..bde43b17 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/rst.js @@ -0,0 +1,51 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2015, Robin Jarry + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RSTHighlightRules = require("./rst_highlight_rules").RSTHighlightRules; + +var Mode = function() { + this.HighlightRules = RSTHighlightRules; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.type = "text"; + + this.$id = "ace/mode/rst"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/rst_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/rst_highlight_rules.js new file mode 100644 index 00000000..7ff67ebf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/rst_highlight_rules.js @@ -0,0 +1,296 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2015, Robin Jarry + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var RSTHighlightRules = function() { + + var tokens = { + title: "markup.heading", + list: "markup.heading", + table: "constant", + directive: "keyword.operator", + entity: "string", + link: "markup.underline.list", + bold: "markup.bold", + italic: "markup.italic", + literal: "support.function", + comment: "comment" + }; + + var startStringPrefix = "(^|\\s|[\"'(<\\[{\\-/:])"; + var endStringSuffix = "(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))"; + + this.$rules = { + "start": [ + /* NB: Only the underline of the heading is highlighted. + * ACE tokenizer does not allow backtracking, the underlined text of the + * heading cannot be highlighted. */ + { + token : tokens.title, + regex : "(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)" + }, + /* Generic directive syntax (e.g. .. code-block:: c) + * All of the directive body is highlighted as a code block. */ + { + token : ["text", tokens.directive, tokens.literal], + regex : "(^\\s*\\.\\. )([^: ]+::)(.*$)", + next : "codeblock" + }, + { + token : tokens.directive, + regex : "::$", + next : "codeblock" + }, + /* Link/anchor definitions */ + { + token : [tokens.entity, tokens.link], + regex : "(^\\.\\. _[^:]+:)(.*$)" + }, + { + token : [tokens.entity, tokens.link], + regex : "(^__ )(https?://.*$)" + }, + /* Footnote definition */ + { + token : tokens.entity, + regex : "^\\.\\. \\[[^\\]]+\\] " + }, + /* Comment block start */ + { + token : tokens.comment, + regex : "^\\.\\. .*$", + next : "comment" + }, + /* List items */ + { + token : tokens.list, + regex : "^\\s*[\\*\\+-] " + }, + { + token : tokens.list, + regex : "^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. " + }, + { + token : tokens.list, + regex : "^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) " + }, + /* "Simple" tables */ + { + token : tokens.table, + regex : "^={2,}(?: +={2,})+$" + }, + /* "Grid" tables */ + { + token : tokens.table, + regex : "^\\+-{2,}(?:\\+-{2,})+\\+$" + }, + { + token : tokens.table, + regex : "^\\+={2,}(?:\\+={2,})+\\+$" + }, + /* Inline markup */ + { + token : ["text", tokens.literal], + regex : startStringPrefix + "(``)(?=\\S)", + next : "code" + }, + { + token : ["text", tokens.bold], + regex : startStringPrefix + "(\\*\\*)(?=\\S)", + next : "bold" + }, + { + token : ["text", tokens.italic], + regex : startStringPrefix + "(\\*)(?=\\S)", + next : "italic" + }, + /* Substitution reference */ + { + token : tokens.entity, + regex : "\\|[\\w\\-]+?\\|" + }, + /* Link/footnote references */ + { + token : tokens.entity, + regex : ":[\\w-:]+:`\\S", + next : "entity" + }, + { + token : ["text", tokens.entity], + regex : startStringPrefix + "(_`)(?=\\S)", + next : "entity" + }, + { + token : tokens.entity, + regex : "_[A-Za-z0-9\\-]+?" + }, + { + token : ["text", tokens.link], + regex : startStringPrefix + "(`)(?=\\S)", + next : "link" + }, + { + token : tokens.link, + regex : "[A-Za-z0-9\\-]+?__?" + }, + { + token : tokens.link, + regex : "\\[[^\\]]+?\\]_" + }, + { + token : tokens.link, + regex : "https?://\\S+" + }, + /* "Grid" tables column separator + * This is at the end to make it lower priority over all other rules. */ + { + token : tokens.table, + regex : "\\|" + } + ], + + /* This state is used for all directive bodies and literal blocks. + * The parser returns to the "start" state when reaching the first + * non-empty line that does not start with at least one space. */ + "codeblock": [ + { + token : tokens.literal, + regex : "^ +.+$", + next : "codeblock" + }, + { + token : tokens.literal, + regex : '^$', + next: "codeblock" + }, + { + token : "empty", + regex : "", + next : "start" + } + ], + + /* Inline code + * The parser returns to the "start" state when reaching "``" */ + "code": [ + { + token : tokens.literal, + regex : "\\S``" + endStringSuffix, + next : "start" + }, + { + defaultToken: tokens.literal + } + ], + + /* Bold (strong) text + * The parser returns to the "start" state when reaching "**" */ + "bold": [ + { + token : tokens.bold, + regex : "\\S\\*\\*" + endStringSuffix, + next : "start" + }, + { + defaultToken: tokens.bold + } + ], + + /* Italic (emphasis) text + * The parser returns to the "start" state when reaching "*" */ + "italic": [ + { + token : tokens.italic, + regex : "\\S\\*" + endStringSuffix, + next : "start" + }, + { + defaultToken: tokens.italic + } + ], + + /* Explicit role/class text or link anchor definition + * The parser returns to the "start" state when reaching "`" */ + "entity": [ + { + token : tokens.entity, + regex : "\\S`" + endStringSuffix, + next : "start" + }, + { + defaultToken: tokens.entity + } + ], + + /* Link reference + * The parser returns to the "start" state when reaching "`_" or "`__" */ + "link": [ + { + token : tokens.link, + regex : "\\S`__?" + endStringSuffix, + next : "start" + }, + { + defaultToken: tokens.link + } + ], + + /* Comment block. + * The parser returns to the "start" state when reaching the first + * non-empty line that does not start with at least one space. */ + "comment": [ + { + token : tokens.comment, + regex : "^ +.+$", + next : "comment" + }, + { + token : tokens.comment, + regex : '^$', + next: "comment" + }, + { + token : "empty", + regex : "", + next : "start" + } + ] + }; +}; +oop.inherits(RSTHighlightRules, TextHighlightRules); + +exports.RSTHighlightRules = RSTHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/ruby.js b/plugins/node_modules/ace/lib/ace/mode/ruby.js new file mode 100644 index 00000000..b1af827b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ruby.js @@ -0,0 +1,100 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = RubyHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + + this.lineCommentStart = "#"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); + var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); + var startingConditional = line.match(/^\s*(if|else|when)\s*/); + if (match || startingClassOrMethod || startingDoBlock || startingConditional) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return /^\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, session, row) { + var line = session.getLine(row); + if (/}/.test(line)) + return this.$outdent.autoOutdent(session, row); + var indent = this.$getIndent(line); + var prevLine = session.getLine(row - 1); + var prevIndent = this.$getIndent(prevLine); + var tab = session.getTabString(); + if (prevIndent.length <= indent.length) { + if (indent.slice(-tab.length) == tab) + session.remove(new Range(row, indent.length-tab.length, row, indent.length)); + } + }; + + this.$id = "ace/mode/ruby"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/ruby_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/ruby_highlight_rules.js new file mode 100644 index 00000000..b37becf4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ruby_highlight_rules.js @@ -0,0 +1,331 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +// exports is for Haml +var constantOtherSymbol = exports.constantOtherSymbol = { + token : "constant.other.symbol.ruby", // symbol + regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" +}; + +var qString = exports.qString = { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" +}; + +var qqString = exports.qqString = { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' +}; + +var tString = exports.tString = { + token : "string", // backtick string + regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" +}; + +var constantNumericHex = exports.constantNumericHex = { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" +}; + +var constantNumericFloat = exports.constantNumericFloat = { + token : "constant.numeric", // float + regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" +}; + +var instanceVariable = exports.instanceVariable = { + token : "variable.instance", // instance variable + regex : "@{1,2}[a-zA-Z_\\d]+" +}; + +var RubyHighlightRules = function() { + + var builtinFunctions = ( + "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + + "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + + "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + + "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + + "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + + "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + + "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + + "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + + "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + + "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + + "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + + "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + + "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + + "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + + "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + + "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + + "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + + "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + + "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + + "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + + "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + + "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + + "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + + "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + + "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + + "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + + "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + + "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + + "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + + "has_many|has_one|belongs_to|has_and_belongs_to_many" + ); + + var keywords = ( + "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + + "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + + "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" + ); + + var buildinConstants = ( + "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + + "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" + ); + + var builtinVariables = ( + "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + + "$!|root_url|flash|session|cookies|params|request|response|logger|self" + ); + + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "variable.language": builtinVariables, + "support.function": builtinFunctions, + "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "#.*$" + }, { + token : "comment", // multi line comment + regex : "^=begin(?:$|\\s.*$)", + next : "comment" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, + + [{ + regex: "[{}]", onMatch: function(val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + return "paren.lparen"; + } + if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1) + return "paren.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token : "string.start", + regex : /"/, + push : [{ + token : "constant.language.escape", + regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ + }, { + token : "paren.start", + regex : /#{/, + push : "start" + }, { + token : "string.end", + regex : /"/, + next : "pop" + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : /`/, + push : [{ + token : "constant.language.escape", + regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ + }, { + token : "paren.start", + regex : /#{/, + push : "start" + }, { + token : "string.end", + regex : /`/, + next : "pop" + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : /'/, + push : [{ + token : "constant.language.escape", + regex : /\\['\\]/ + }, { + token : "string.end", + regex : /'/, + next : "pop" + }, { + defaultToken: "string" + }] + }], + // TODO: add support for %[QqxWwrs][{[(] + + { + token : "text", // namespaces aren't symbols + regex : "::" + }, { + token : "variable.instance", // instance variable + regex : "@{1,2}[a-zA-Z_\\d]+" + }, { + token : "support.class", // class name + regex : "[A-Z][a-zA-Z_\\d]+" + }, + + constantOtherSymbol, + constantNumericHex, + constantNumericFloat, + + { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "punctuation.separator.key-value", + regex : "=>" + }, { + stateName: "heredoc", + onMatch : function(value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[3]); + return [ + {type:"constant", value: tokens[1]}, + {type:"string", value: tokens[2]}, + {type:"support.class", value: tokens[3]}, + {type:"string", value: tokens[4]} + ]; + }, + regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", + rules: { + heredoc: [{ + onMatch: function(value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^ +" + }, { + onMatch: function(value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex : "$", + token : "empty", + next : function(currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token : "string.character", + regex : "\\B\\?." + }, { + token : "keyword.operator", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "^=end(?:$|\\s.*$)", + next : "start" + }, { + token : "comment", // comment spanning whole line + regex : ".+" + } + ] + }; + + this.normalizeRules(); +}; + +oop.inherits(RubyHighlightRules, TextHighlightRules); + +exports.RubyHighlightRules = RubyHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/ruby_test.js b/plugins/node_modules/ace/lib/ace/mode/ruby_test.js new file mode 100644 index 00000000..7b40da96 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/ruby_test.js @@ -0,0 +1,77 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var Mode = require("./ruby").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new Mode(); + }, + + "test getNextLineIndent": function() { + assert.equal(this.mode.getNextLineIndent("start", "class Foo", " "), " "); + assert.equal(this.mode.getNextLineIndent("start", " def thing(wut)", " "), " "); + assert.equal(this.mode.getNextLineIndent("start", " fork do", " "), " "); + assert.equal(this.mode.getNextLineIndent("start", " fork do |wut| ", " "), " "); + assert.equal(this.mode.getNextLineIndent("start", " something = :ruby", " "), " "); + assert.equal(this.mode.getNextLineIndent("start", " if something == 3", " "), " "); + assert.equal(this.mode.getNextLineIndent("start", " else", " "), " "); + }, + + "test: checkOutdent": function() { + assert.ok(this.mode.checkOutdent("start", " en", "d")); + assert.ok(this.mode.checkOutdent("start", " els", "e")); + assert.ok(this.mode.checkOutdent("start", " ", "}")); + assert.equal(this.mode.checkOutdent("start", " end", "\n"), false); + assert.equal(this.mode.checkOutdent("start", "foo = ba", "r"), false); + }, + + "test: auto outdent" : function() { + var session = new EditSession(["class Phil", " Foo = 'bar'", " end"]); + this.mode.autoOutdent("start", session, 2); + assert.equal(" end", session.getLine(2)); + } + +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/rust.js b/plugins/node_modules/ace/lib/ace/mode/rust.js new file mode 100644 index 00000000..3278824f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/rust.js @@ -0,0 +1,59 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RustHighlightRules = require("./rust_highlight_rules").RustHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = RustHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/", nestable: true}; + this.$quotes = { '"': '"' }; + this.$id = "ace/mode/rust"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/rust_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/rust_highlight_rules.js new file mode 100644 index 00000000..538d9ccb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/rust_highlight_rules.js @@ -0,0 +1,147 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from https://raw.github.com/dbp/sublime-rust/master/Rust.tmLanguage (uuid: ) */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var stringEscape = /\\(?:[nrt0'"\\]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\})/.source; +var RustHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: 'variable.other.source.rust', + // `(?![\\\'])` to keep a lifetime name highlighting from continuing one character + // past the name. The end `\'` will block this from matching for a character like + // `'a'` (it should have character highlighting, not variable highlighting). + regex: '\'[a-zA-Z_][a-zA-Z0-9_]*(?![\\\'])' }, + { token: 'string.quoted.single.source.rust', + regex: "'(?:[^'\\\\]|" + stringEscape + ")'" }, + { + stateName: "bracketedComment", + onMatch : function(value, currentState, stack){ + stack.unshift(this.next, value.length - 1, currentState); + return "string.quoted.raw.source.rust"; + }, + regex : /r#*"/, + next : [ + { + onMatch : function(value, currentState, stack) { + var token = "string.quoted.raw.source.rust"; + if (value.length >= stack[1]) { + if (value.length > stack[1]) + token = "invalid"; + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } else { + this.next = ""; + } + return token; + }, + regex : /"#*/, + next : "start" + }, { + defaultToken : "string.quoted.raw.source.rust" + } + ] + }, + { token: 'string.quoted.double.source.rust', + regex: '"', + push: + [ { token: 'string.quoted.double.source.rust', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.source.rust', + regex: stringEscape }, + { defaultToken: 'string.quoted.double.source.rust' } ] }, + { token: [ 'keyword.source.rust', 'text', 'entity.name.function.source.rust' ], + regex: '\\b(fn)(\\s+)([a-zA-Z_][a-zA-Z0-9_]*)' }, + { token: 'support.constant', regex: '\\b[a-zA-Z_][\\w\\d]*::' }, + { token: 'keyword.source.rust', + regex: '\\b(?:abstract|alignof|as|become|box|break|catch|continue|const|crate|default|do|dyn|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b' }, + { token: 'storage.type.source.rust', + regex: '\\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|u128|f16|f32|f64|i8|i16|i32|i64|i128|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b' }, + { token: 'variable.language.source.rust', regex: '\\bself\\b' }, + + { token: 'comment.line.doc.source.rust', + regex: '//!.*$' }, + { token: 'comment.line.double-dash.source.rust', + regex: '//.*$' }, + { token: 'comment.start.block.source.rust', + regex: '/\\*', + stateName: 'comment', + push: + [ { token: 'comment.start.block.source.rust', + regex: '/\\*', + push: 'comment' }, + { token: 'comment.end.block.source.rust', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.source.rust' } ] }, + + { token: 'keyword.operator', + // `[*/](?![*/])=?` is separated because `//` and `/* */` become comments and must be + // guarded against. This states either `*` or `/` may be matched as long as the match + // it isn't followed by either of the two. An `=` may be on the end. + regex: /\$|[-=]>|[-+%^=!&|<>]=?|[*/](?![*/])=?/ }, + { token : "punctuation.operator", regex : /[?:,;.]/ }, + { token : "paren.lparen", regex : /[\[({]/ }, + { token : "paren.rparen", regex : /[\])}]/ }, + { token: 'constant.language.source.rust', + regex: '\\b(?:true|false|Some|None|Ok|Err)\\b' }, + { token: 'support.constant.source.rust', + regex: '\\b(?:EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO)\\b' }, + { token: 'meta.preprocessor.source.rust', + regex: '\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b' }, + { token: 'constant.numeric.source.rust', + regex: /\b(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64|128))?\b/ }, + { token: 'constant.numeric.source.rust', + regex: /\b(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/ } ] }; + + this.normalizeRules(); +}; + +RustHighlightRules.metaData = { fileTypes: [ 'rs', 'rc' ], + foldingStartMarker: '^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$', + foldingStopMarker: '^\\s*\\}', + name: 'Rust', + scopeName: 'source.rust' }; + + +oop.inherits(RustHighlightRules, TextHighlightRules); + +exports.RustHighlightRules = RustHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sass.js b/plugins/node_modules/ace/lib/ace/mode/sass.js new file mode 100644 index 00000000..1545f869 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sass.js @@ -0,0 +1,53 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SassHighlightRules = require("./sass_highlight_rules").SassHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = SassHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.$id = "ace/mode/sass"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sass_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/sass_highlight_rules.js new file mode 100644 index 00000000..45a7bf32 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sass_highlight_rules.js @@ -0,0 +1,79 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; + +var SassHighlightRules = function() { + ScssHighlightRules.call(this); + var start = this.$rules.start; + if (start[1].token == "comment") { + start.splice(1, 1, { + onMatch: function(value, currentState, stack) { + stack.unshift(this.next, -1, value.length - 2, currentState); + return "comment"; + }, + regex: /^\s*\/\*/, + next: "comment" + }, { + token: "error.invalid", + regex: "/\\*|[{;}]" + }, { + token: "support.type", + regex: /^\s*:[\w\-]+\s/ + }); + + this.$rules.comment = [ + {regex: /^\s*/, onMatch: function(value, currentState, stack) { + if (stack[1] === -1) + stack[1] = Math.max(stack[2], value.length - 1); + if (value.length <= stack[1]) { + /*shift3x*/stack.shift();stack.shift();stack.shift(); + this.next = stack.shift(); + return "text"; + } else { + this.next = ""; + return "comment"; + } + }, next: "start"}, + {defaultToken: "comment"} + ]; + } +}; + +oop.inherits(SassHighlightRules, ScssHighlightRules); + +exports.SassHighlightRules = SassHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/scad.js b/plugins/node_modules/ace/lib/ace/mode/scad.js new file mode 100644 index 00000000..40a87e19 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/scad.js @@ -0,0 +1,98 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var scadHighlightRules = require("./scad_highlight_rules").scadHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = scadHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } else if (state == "doc-start") { + if (endState == "start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/scad"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/scad_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/scad_highlight_rules.js new file mode 100644 index 00000000..20c42d18 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/scad_highlight_rules.js @@ -0,0 +1,141 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var scadHighlightRules = function() { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": "module|if|else|for", + "constant.language": "NULL" + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // multi line string start + regex : '["].*\\\\$', + next : "qqstring" + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "string", // multi line string start + regex : "['].*\\\\$", + next : "qstring" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant", // <CONSTANT> + regex : "<[a-zA-Z0-9.]+>" + }, { + token : "keyword", // pre-compiler directivs + regex : "(?:use|include)" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "qqstring" : [ + { + token : "string", + regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next : "start" + }, { + token : "string", + regex : '.+' + } + ], + "qstring" : [ + { + token : "string", + regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next : "start" + }, { + token : "string", + regex : '.+' + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(scadHighlightRules, TextHighlightRules); + +exports.scadHighlightRules = scadHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/scala.js b/plugins/node_modules/ace/lib/ace/mode/scala.js new file mode 100644 index 00000000..bbe2b1bf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/scala.js @@ -0,0 +1,24 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptMode = require("./javascript").Mode; +var ScalaHighlightRules = require("./scala_highlight_rules").ScalaHighlightRules; + +var Mode = function() { + JavaScriptMode.call(this); + this.HighlightRules = ScalaHighlightRules; +}; +oop.inherits(Mode, JavaScriptMode); + +(function() { + + this.createWorker = function(session) { + return null; + }; + + this.$id = "ace/mode/scala"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/scala_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/scala_highlight_rules.js new file mode 100644 index 00000000..938aec44 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/scala_highlight_rules.js @@ -0,0 +1,165 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ScalaHighlightRules = function() { + + var keywords = ( + "case|default|do|else|for|if|match|while|throw|return|try|trye|catch|finally|yield|" + + "abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|null|" + + "override|package|private|protected|sealed|super|this|trait|type|val|var|with|" + + "assert|assume|require|print|println|printf|readLine|readBoolean|readByte|readShort|" + // package scala + "readChar|readInt|readLong|readFloat|readDouble" // package scala + ); + + var buildinConstants = ("true|false"); + + var langClasses = ( + "AbstractMethodError|AssertionError|ClassCircularityError|"+ + "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ + "ExceptionInInitializerError|IllegalAccessError|"+ + "IllegalThreadStateException|InstantiationError|InternalError|"+ + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ + "SuppressWarnings|TypeNotPresentException|UnknownError|"+ + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ + "InstantiationException|IndexOutOfBoundsException|"+ + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ + "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ + "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ + "ArrayStoreException|ClassCastException|LinkageError|"+ + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ + "Cloneable|Class|CharSequence|Comparable|String|Object|" + + "Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|" + + "Option|Array|Char|Byte|Int|Long|Nothing|" + + + "App|Application|BufferedIterator|BigDecimal|BigInt|Console|Either|" + + "Enumeration|Equiv|Fractional|Function|IndexedSeq|Integral|Iterator|" + + "Map|Numeric|Nil|NotNull|Ordered|Ordering|PartialFunction|PartialOrdering|" + + "Product|Proxy|Range|Responder|Seq|Serializable|Set|Specializable|Stream|" + + "StringContext|Symbol|Traversable|TraversableOnce|Tuple|Vector|Pair|Triple" + + + ); + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "support.function": langClasses, + "constant.language": buildinConstants + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token : "string", + regex : '"""', + next : "tstring" + }, { + token : "string", + regex : '"(?=.)', // " strings can't span multiple lines + next : "string" + }, { + token : "symbol.constant", // single line + regex : "'[\\w\\d_]+" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "string" : [ + { + token : "escape", + regex : '\\\\"' + }, { + token : "string", + regex : '"', + next : "start" + }, { + token : "string.invalid", + regex : '[^"\\\\]*$', + next : "start" + }, { + token : "string", + regex : '[^"\\\\]+' + } + ], + "tstring" : [ + { + token : "string", + regex : '"{3,5}', + next : "start" + }, { + defaultToken : "string" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(ScalaHighlightRules, TextHighlightRules); + +exports.ScalaHighlightRules = ScalaHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/scheme.js b/plugins/node_modules/ace/lib/ace/mode/scheme.js new file mode 100644 index 00000000..f7f93e9d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/scheme.js @@ -0,0 +1,134 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * NalaGinrut@gmail.com + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SchemeHighlightRules = require("./scheme_highlight_rules").SchemeHighlightRules; +var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent; + +var Mode = function() { + this.HighlightRules = SchemeHighlightRules; + this.$outdent = new MatchingParensOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ";"; + this.minorIndentFunctions = ["define", "lambda", "define-macro", "define-syntax", "syntax-rules", "define-record-type", "define-structure"]; + + this.$toIndent = function(str) { + return str.split('').map(function(ch) { + if (/\s/.exec(ch)) { + return ch; + } else { + return ' '; + } + }).join(''); + }; + + this.$calculateIndent = function(line, tab) { + var baseIndent = this.$getIndent(line); + var delta = 0; + var isParen, ch; + // Walk back from end of line, find matching braces + for (var i = line.length - 1; i >= 0; i--) { + ch = line[i]; + if (ch === '(') { + delta--; + isParen = true; + } else if (ch === '(' || ch === '[' || ch === '{') { + delta--; + isParen = false; + } else if (ch === ')' || ch === ']' || ch === '}') { + delta++; + } + if (delta < 0) { + break; + } + } + if (delta < 0 && isParen) { + // Were more brackets opened than closed and was a ( left open? + i += 1; + var iBefore = i; + var fn = ''; + while (true) { + ch = line[i]; + if (ch === ' ' || ch === '\t') { + if(this.minorIndentFunctions.indexOf(fn) !== -1) { + return this.$toIndent(line.substring(0, iBefore - 1) + tab); + } else { + return this.$toIndent(line.substring(0, i + 1)); + } + } else if (ch === undefined) { + return this.$toIndent(line.substring(0, iBefore - 1) + tab); + } + fn += line[i]; + i++; + } + } else if(delta < 0 && !isParen) { + // Were more brackets openend than closed and was it not a (? + return this.$toIndent(line.substring(0, i+1)); + } else if(delta > 0) { + // Mere more brackets closed than opened? Outdent. + baseIndent = baseIndent.substring(0, baseIndent.length - tab.length); + return baseIndent; + } else { + // Were they nicely matched? Just indent like line before. + return baseIndent; + } + }; + + this.getNextLineIndent = function(state, line, tab) { + return this.$calculateIndent(line, tab); + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/scheme"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/scheme_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/scheme_highlight_rules.js new file mode 100644 index 00000000..52d1ae41 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/scheme_highlight_rules.js @@ -0,0 +1,123 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * NalaGinrut@gmail.com + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SchemeHighlightRules = function() { + var keywordControl = "case|do|let|loop|if|else|when"; + var keywordOperator = "eq?|eqv?|equal?|and|or|not|null?"; + var constantLanguage = "#t|#f"; + var supportFunctions = "cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load"; + + var keywordMapper = this.createKeywordMapper({ + "keyword.control": keywordControl, + "keyword.operator": keywordOperator, + "constant.language": constantLanguage, + "support.function": supportFunctions + }, "identifier", true); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = + { + "start": [ + { + token : "comment", + regex : ";.*$" + }, + { + "token": ["storage.type.function-type.scheme", "text", "entity.name.function.scheme"], + "regex": "(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" + }, + { + "token": "punctuation.definition.constant.character.scheme", + "regex": "#:\\S+" + }, + { + "token": ["punctuation.definition.variable.scheme", "variable.other.global.scheme", "punctuation.definition.variable.scheme"], + "regex": "(\\*)(\\S*)(\\*)" + }, + { + "token" : "constant.numeric", // hex + "regex" : "#[xXoObB][0-9a-fA-F]+" + }, + { + "token" : "constant.numeric", // float + "regex" : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?" + }, + { + "token" : keywordMapper, + "regex" : "[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*" + }, + { + "token" : "string", + "regex" : '"(?=.)', + "next" : "qqstring" + } + ], + "qqstring": [ + { + "token": "constant.character.escape.scheme", + "regex": "\\\\." + }, + { + "token" : "string", + "regex" : '[^"\\\\]+', + "merge" : true + }, { + "token" : "string", + "regex" : "\\\\$", + "next" : "qqstring", + "merge" : true + }, { + "token" : "string", + "regex" : '"|$', + "next" : "start", + "merge" : true + } + ] +}; + +}; + +oop.inherits(SchemeHighlightRules, TextHighlightRules); + +exports.SchemeHighlightRules = SchemeHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/scss.js b/plugins/node_modules/ace/lib/ace/mode/scss.js new file mode 100644 index 00000000..f672d257 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/scss.js @@ -0,0 +1,84 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = ScssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + // ignore braces in comments + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/scss"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/scss_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/scss_highlight_rules.js new file mode 100644 index 00000000..64e95c87 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/scss_highlight_rules.js @@ -0,0 +1,317 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ScssHighlightRules = function() { + + var properties = lang.arrayToMap( (function () { + + var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); + + var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + + "background-size|binding|border-bottom-colors|border-left-colors|" + + "border-right-colors|border-top-colors|border-end|border-end-color|" + + "border-end-style|border-end-width|border-image|border-start|" + + "border-start-color|border-start-style|border-start-width|box-align|" + + "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + + "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + + "column-rule-width|column-rule-style|column-rule-color|float-edge|" + + "font-feature-settings|font-language-override|force-broken-image-icon|" + + "image-region|margin-end|margin-start|opacity|outline|outline-color|" + + "outline-offset|outline-radius|outline-radius-bottomleft|" + + "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + + "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + + "tab-size|text-blink|text-decoration-color|text-decoration-line|" + + "text-decoration-style|transform|transform-origin|transition|" + + "transition-delay|transition-duration|transition-property|" + + "transition-timing-function|user-focus|user-input|user-modify|user-select|" + + "window-shadow|border-radius").split("|"); + + var properties = ("azimuth|background-attachment|background-color|background-image|" + + "background-position|background-repeat|background|border-bottom-color|" + + "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + + "border-color|border-left-color|border-left-style|border-left-width|" + + "border-left|border-right-color|border-right-style|border-right-width|" + + "border-right|border-spacing|border-style|border-top-color|" + + "border-top-style|border-top-width|border-top|border-width|border|bottom|" + + "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + + "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + + "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + + "font-stretch|font-style|font-variant|font-weight|font|height|left|" + + "letter-spacing|line-height|list-style-image|list-style-position|" + + "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + + "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + + "min-width|opacity|orphans|outline-color|" + + "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + + "padding-left|padding-right|padding-top|padding|page-break-after|" + + "page-break-before|page-break-inside|page|pause-after|pause-before|" + + "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + + "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + + "stress|table-layout|text-align|text-decoration|text-indent|" + + "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + + "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + + "z-index").split("|"); + + //The return array + var ret = []; + + //All prefixProperties will get the browserPrefix in + //the begning by join the prefixProperties array with the value of browserPrefix + for (var i=0, ln=browserPrefix.length; i<ln; i++) { + Array.prototype.push.apply( + ret, + (( browserPrefix[i] + prefixProperties.join("|" + browserPrefix[i]) ).split("|")) + ); + } + + //Add also prefixProperties and properties without any browser prefix + Array.prototype.push.apply(ret, prefixProperties); + Array.prototype.push.apply(ret, properties); + + return ret; + + })() ); + + + + var functions = lang.arrayToMap( + ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" + + "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + + "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + + "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + + "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") + ); + + var constants = lang.arrayToMap( + ("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|" + + "block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|" + + "char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|" + + "decimal-leading-zero|decimal|default|disabled|disc|" + + "distribute-all-lines|distribute-letter|distribute-space|" + + "distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|" + + "hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|" + + "ideograph-alpha|ideograph-numeric|ideograph-parenthesis|" + + "ideograph-space|inactive|inherit|inline-block|inline|inset|inside|" + + "inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|" + + "keep-all|left|lighter|line-edge|line-through|line|list-item|loose|" + + "lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|" + + "medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|" + + "nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|" + + "overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|" + + "ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|" + + "solid|square|static|strict|super|sw-resize|table-footer-group|" + + "table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|" + + "transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|" + + "vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|" + + "zero").split("|") + ); + + var colors = lang.arrayToMap( + ("aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|" + + "blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|" + + "chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|" + + "darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|" + + "darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|" + + "darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|" + + "darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|" + + "dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|" + + "ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|" + + "hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|" + + "lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|" + + "lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|" + + "lightsalmon|lightseagreen|lightskyblue|lightslategray|" + + "lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|" + + "magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|" + + "mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|" + + "mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|" + + "moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|" + + "orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|" + + "papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|" + + "red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|" + + "seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|" + + "springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|" + + "wheat|white|whitesmoke|yellow|yellowgreen").split("|") + ); + + var keywords = lang.arrayToMap( + ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|") + ); + + var tags = lang.arrayToMap( + ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + + "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + + "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + + "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + + "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + + "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + + "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + + "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + + "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") + ); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // multi line string start + regex : '["].*\\\\$', + next : "qqstring" + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "string", // multi line string start + regex : "['].*\\\\$", + next : "qstring" + }, { + token : "constant.numeric", + regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)" + }, { + token : "constant.numeric", // hex6 color + regex : "#[a-f0-9]{6}" + }, { + token : "constant.numeric", // hex3 color + regex : "#[a-f0-9]{3}" + }, { + token : "constant.numeric", + regex : numRe + }, { + token : ["support.function", "string", "support.function"], + regex : "(url\\()(.*)(\\))" + }, { + token : function(value) { + if (properties.hasOwnProperty(value.toLowerCase())) + return "support.type"; + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (constants.hasOwnProperty(value)) + return "constant.language"; + else if (functions.hasOwnProperty(value)) + return "support.function"; + else if (colors.hasOwnProperty(value.toLowerCase())) + return "support.constant.color"; + else if (tags.hasOwnProperty(value.toLowerCase())) + return "variable.language"; + else + return "text"; + }, + regex : "\\-?[@a-z_][@a-z0-9_\\-]*" + }, { + token : "variable", + regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b" + }, { + token: "variable.language", + regex: "#[a-z0-9-_]+" + }, { + token: "variable.language", + regex: "\\.[a-z0-9-_]+" + }, { + token: "variable.language", + regex: ":[a-z0-9-_]+" + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + token : "keyword.operator", + regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + }, { + caseInsensitive: true + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "qqstring" : [ + { + token : "string", + regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next : "start" + }, { + token : "string", + regex : '.+' + } + ], + "qstring" : [ + { + token : "string", + regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next : "start" + }, { + token : "string", + regex : '.+' + } + ] + }; +}; + +oop.inherits(ScssHighlightRules, TextHighlightRules); + +exports.ScssHighlightRules = ScssHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sh.js b/plugins/node_modules/ace/lib/ace/mode/sh.js new file mode 100644 index 00000000..92195657 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sh.js @@ -0,0 +1,116 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; +var Range = require("../range").Range; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; + +var Mode = function() { + this.HighlightRules = ShHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = new CstyleBehaviour(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + + this.lineCommentStart = "#"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + + this.checkOutdent = function(state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + + if (!tokens) + return false; + + // ignore trailing comments + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + + if (!last) + return false; + + return (last.type == "keyword" && outdents[last.value]); + }; + + this.autoOutdent = function(state, doc, row) { + // outdenting in sh is slightly different because it always applies + // to the next line and only of a new line is inserted + + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + }; + + this.$id = "ace/mode/sh"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sh_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/sh_highlight_rules.js new file mode 100644 index 00000000..6d7566a1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sh_highlight_rules.js @@ -0,0 +1,249 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var reservedKeywords = exports.reservedKeywords = ( + '!|{|}|case|do|done|elif|else|'+ + 'esac|fi|for|if|in|then|until|while|'+ + '&|;|export|local|read|typeset|unset|'+ + 'elif|select|set|function|declare|readonly' + ); + +var languageConstructs = exports.languageConstructs = ( + '[|]|alias|bg|bind|break|builtin|'+ + 'cd|command|compgen|complete|continue|'+ + 'dirs|disown|echo|enable|eval|exec|'+ + 'exit|fc|fg|getopts|hash|help|history|'+ + 'jobs|kill|let|logout|popd|printf|pushd|'+ + 'pwd|return|set|shift|shopt|source|'+ + 'suspend|test|times|trap|type|ulimit|'+ + 'umask|unalias|wait' +); + +var ShHighlightRules = function() { + var keywordMapper = this.createKeywordMapper({ + "keyword": reservedKeywords, + "support.function.builtin": languageConstructs, + "invalid.deprecated": "debugger" + }, "identifier"); + + var integer = "(?:(?:[1-9]\\d*)|(?:0))"; + // var integer = "(?:" + decimalInteger + ")"; + + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var fileDescriptor = "(?:&" + intPart + ")"; + + var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; + var variable = "(?:" + variableName + "(?==))"; + + var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + + var func = "(?:" + variableName + "\\s*\\(\\))"; + + this.$rules = { + "start" : [{ + token : "constant", + regex : /\\./ + }, { + token : ["text", "comment"], + regex : /(^|\s)(#.*)$/ + }, { + token : "string.start", + regex : '"', + push : [{ + token : "constant.language.escape", + regex : /\\(?:[$`"\\]|$)/ + }, { + include : "variables" + }, { + token : "keyword.operator", + regex : /`/ // TODO highlight ` + }, { + token : "string.end", + regex : '"', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token : "string", + regex : "\\$'", + push : [{ + token : "constant.language.escape", + regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token : "string", + regex : "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex : "<<<", + token : "keyword.operator" + }, { + stateName: "heredoc", + regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch : function(value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + {type:"constant", value: tokens[1]}, + {type:"text", value: tokens[2]}, + {type:"string", value: tokens[3]}, + {type:"support.class", value: tokens[4]}, + {type:"string", value: tokens[5]} + ]; + }, + rules: { + heredoc: [{ + onMatch: function(value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function(value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex : "$", + token : "empty", + next : function(currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token : ["keyword", "text", "text", "text", "variable"], + regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token : "variable.language", + regex : builtinVariable + }, { + token : "variable", + regex : variable + }, { + include : "variables" + }, { + token : "support.function", + regex : func + }, { + token : "support.function", + regex : fileDescriptor + }, { + token : "string", // ' string + start : "'", end : "'" + }, { + token : "constant.numeric", // float + regex : floatNumber + }, { + token : "constant.numeric", // integer + regex : integer + "\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token : "punctuation.operator", + regex : ";" + }, { + token : "paren.lparen", + regex : "[\\[\\(\\{]" + }, { + token : "paren.rparen", + regex : "[\\]]" + }, { + token : "paren.rparen", + regex : "[\\)\\}]", + next : "pop" + }], + variables: [{ + token : "variable", + regex : /(\$)(\w+)/ + }, { + token : ["variable", "paren.lparen"], + regex : /(\$)(\()/, + push : "start" + }, { + token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push : "start" + }, { + token : "variable", + regex : /\$[*@#?\-$!0_]/ + }, { + token : ["variable", "paren.lparen"], + regex : /(\$)(\{)/, + push : "start" + }] + }; + + this.normalizeRules(); +}; + +oop.inherits(ShHighlightRules, TextHighlightRules); + +exports.ShHighlightRules = ShHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sjs.js b/plugins/node_modules/ace/lib/ace/mode/sjs.js new file mode 100644 index 00000000..f3c4e72b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sjs.js @@ -0,0 +1,56 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var oop = require("../lib/oop"); +var JSMode = require("./javascript").Mode; +var SJSHighlightRules = require("./sjs_highlight_rules").SJSHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = SJSHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, JSMode); +(function() { + // disable jshint + this.createWorker = function(session) { + return null; + }; + this.$id = "ace/mode/sjs"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sjs_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/sjs_highlight_rules.js new file mode 100644 index 00000000..6abf7cb5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sjs_highlight_rules.js @@ -0,0 +1,233 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SJSHighlightRules = function() { + var parent = new JavaScriptHighlightRules({noES6: true}); + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-6][0-7]?|" + // oct + "37[0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + + var contextAware = function(f) { + f.isContextAware = true; + return f; + }; + + var ctxBegin = function(opts) { + return { + token: opts.token, + regex: opts.regex, + next: contextAware(function(currentState, stack) { + if (stack.length === 0) + stack.unshift(currentState); + stack.unshift(opts.next); + return opts.next; + }) + }; + }; + + var ctxEnd = function(opts) { + return { + token: opts.token, + regex: opts.regex, + next: contextAware(function(currentState, stack) { + stack.shift(); + return stack[0] || "start"; + }) + }; + }; + + this.$rules = parent.$rules; + this.$rules.no_regex = [ + { + token: "keyword", + regex: "(waitfor|or|and|collapse|spawn|retract)\\b" + }, + { + token: "keyword.operator", + regex: "(->|=>|\\.\\.)" + }, + { + token: "variable.language", + regex: "(hold|default)\\b" + }, + ctxBegin({ + token: "string", + regex: "`", + next: "bstring" + }), + ctxBegin({ + token: "string", + regex: '"', + next: "qqstring" + }), + ctxBegin({ + token: "string", + regex: '"', + next: "qqstring" + }), + { + token: ["paren.lparen", "text", "paren.rparen"], + regex: "(\\{)(\\s*)(\\|)", + next: "block_arguments" + } + + ].concat(this.$rules.no_regex); + + this.$rules.block_arguments = [ + { + token: "paren.rparen", + regex: "\\|", + next: "no_regex" + } + ].concat(this.$rules.function_arguments); + + this.$rules.bstring = [ + { + token : "constant.language.escape", + regex : escapedRe + }, + { + token : "string", + regex : "\\\\$", + next: "bstring" + }, + ctxBegin({ + token : "paren.lparen", + regex : "\\$\\{", + next: "string_interp" + }), + ctxBegin({ + token : "paren.lparen", + regex : "\\$", + next: "bstring_interp_single" + }), + ctxEnd({ + token : "string", + regex : "`" + }), + { + defaultToken: "string" + } + ]; + + this.$rules.qqstring = [ + { + token : "constant.language.escape", + regex : escapedRe + }, + { + token : "string", + regex : "\\\\$", + next: "qqstring" + }, + ctxBegin({ + token : "paren.lparen", + regex : "#\\{", + next: "string_interp" + }), + ctxEnd({ + token : "string", + regex : '"' + }), + { + defaultToken: "string" + } + ]; + + // collect all context-aware (or stateless), brace-less + // states. This gives us most normal highlighting + // for use within interpreted contexts + // without interfering with context nesting + var embeddableRules = []; + for (var i=0; i < this.$rules.no_regex.length; i++) { + var rule = this.$rules.no_regex[i]; + var token = String(rule.token); + if (token.indexOf('paren') == -1 && (!rule.next || rule.next.isContextAware)) { + embeddableRules.push(rule); + } + } + + this.$rules.string_interp = [ + ctxEnd({ + token: "paren.rparen", + regex: "\\}" + }), + ctxBegin({ + token: "paren.lparen", + regex: '{', + next: "string_interp" + }) + ].concat(embeddableRules); + + // backtick strings can have single interpolation, which accept + // \w+ followed by an optional set of function call parens + this.$rules.bstring_interp_single = [ + { + token: ["identifier", "paren.lparen"], + regex: '(\\w+)(\\()', + next: 'bstring_interp_single_call' + }, + // identifier-only match ends this interp + ctxEnd({ + token : "identifier", + regex : "\\w*" + }) + ]; + + // the call part of a bstring_interp_single + // is terminated by a close paren `)`, but + // can have nested parens. + this.$rules.bstring_interp_single_call = [ + ctxBegin({ + token: "paren.lparen", + regex: "\\(", + next: "bstring_interp_single_call" + }), + ctxEnd({ + token: "paren.rparen", + regex: "\\)" + }) + ].concat(embeddableRules); +}; +oop.inherits(SJSHighlightRules, TextHighlightRules); + +exports.SJSHighlightRules = SJSHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/smarty.js b/plugins/node_modules/ace/lib/ace/mode/smarty.js new file mode 100644 index 00000000..b88f1f68 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/smarty.js @@ -0,0 +1,51 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + "use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var SmartyHighlightRules = require("./smarty_highlight_rules").SmartyHighlightRules; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = SmartyHighlightRules; +}; + +oop.inherits(Mode, HtmlMode); + +(function() { + + this.$id = "ace/mode/smarty"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/smarty_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/smarty_highlight_rules.js new file mode 100644 index 00000000..9804b566 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/smarty_highlight_rules.js @@ -0,0 +1,139 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from https://raw.github.com/amitsnyderman/sublime-smarty/master/Syntaxes/Smarty.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + +var SmartyHighlightRules = function() { + HtmlHighlightRules.call(this); + var smartyRules = { start: + [ { include: '#comments' }, + { include: '#blocks' } ], + '#blocks': + [ { token: 'punctuation.section.embedded.begin.smarty', + regex: '\\{%?', + push: + [ { token: 'punctuation.section.embedded.end.smarty', + regex: '%?\\}', + next: 'pop' }, + { include: '#strings' }, + { include: '#variables' }, + { include: '#lang' }, + { defaultToken: 'source.smarty' } ] } ], + '#comments': + [ { token: + [ 'punctuation.definition.comment.smarty', + 'comment.block.smarty' ], + regex: '(\\{%?)(\\*)', + push: + [ { token: 'comment.block.smarty', regex: '\\*%?\\}', next: 'pop' }, + { defaultToken: 'comment.block.smarty' } ] } ], + '#lang': + [ { token: 'keyword.operator.smarty', + regex: '(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b' }, + { token: 'constant.language.smarty', + regex: '\\b(?:TRUE|FALSE|true|false)\\b' }, + { token: 'keyword.control.smarty', + regex: '\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b' }, + { token: 'variable.parameter.smarty', regex: '\\b[a-zA-Z]+=' }, + { token: 'support.function.built-in.smarty', + regex: '\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b' }, + { token: 'support.function.variable-modifier.smarty', + regex: '\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)' } ], + '#strings': + [ { token: 'punctuation.definition.string.begin.smarty', + regex: '\'', + push: + [ { token: 'punctuation.definition.string.end.smarty', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.smarty', regex: '\\\\.' }, + { defaultToken: 'string.quoted.single.smarty' } ] }, + { token: 'punctuation.definition.string.begin.smarty', + regex: '"', + push: + [ { token: 'punctuation.definition.string.end.smarty', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.smarty', regex: '\\\\.' }, + { defaultToken: 'string.quoted.double.smarty' } ] } ], + '#variables': + [ { token: + [ 'punctuation.definition.variable.smarty', + 'variable.other.global.smarty' ], + regex: '\\b(\\$)(Smarty\\.)' }, + { token: + [ 'punctuation.definition.variable.smarty', + 'variable.other.smarty' ], + regex: '(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, + { token: [ 'keyword.operator.smarty', 'variable.other.property.smarty' ], + regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, + { token: + [ 'keyword.operator.smarty', + 'meta.function-call.object.smarty', + 'punctuation.definition.variable.smarty', + 'variable.other.smarty', + 'punctuation.definition.variable.smarty' ], + regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))' } ] }; + + var smartyStart = smartyRules.start; + + for (var rule in this.$rules) { + this.$rules[rule].unshift.apply(this.$rules[rule], smartyStart); + } + + Object.keys(smartyRules).forEach(function(x) { + if (!this.$rules[x]) + this.$rules[x] = smartyRules[x]; + }, this); + + this.normalizeRules(); +}; + +SmartyHighlightRules.metaData = { fileTypes: [ 'tpl' ], + foldingStartMarker: '\\{%?', + foldingStopMarker: '%?\\}', + name: 'Smarty', + scopeName: 'text.html.smarty' }; + + +oop.inherits(SmartyHighlightRules, HtmlHighlightRules); + +exports.SmartyHighlightRules = SmartyHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/snippets.js b/plugins/node_modules/ace/lib/ace/mode/snippets.js new file mode 100644 index 00000000..493fc4b0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/snippets.js @@ -0,0 +1,114 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SnippetHighlightRules = function() { + + var builtins = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|" + + "LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME"; + + this.$rules = { + "start" : [ + {token:"constant.language.escape", regex: /\\[\$}`\\]/}, + {token:"keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b"}, + {token:"variable", regex: "\\$\\w+"}, + {onMatch: function(value, state, stack) { + if (stack[1]) + stack[1]++; + else + stack.unshift(state, 1); + return this.tokenName; + }, tokenName: "markup.list", regex: "\\${", next: "varDecl"}, + {onMatch: function(value, state, stack) { + if (!stack[1]) + return "text"; + stack[1]--; + if (!stack[1]) + stack.splice(0,2); + return this.tokenName; + }, tokenName: "markup.list", regex: "}"}, + {token: "doc.comment", regex:/^\${2}-{5,}$/} + ], + "varDecl" : [ + {regex: /\d+\b/, token: "constant.numeric"}, + {token:"keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b"}, + {token:"variable", regex: "\\w+"}, + {regex: /:/, token: "punctuation.operator", next: "start"}, + {regex: /\//, token: "string.regex", next: "regexp"}, + {regex: "", next: "start"} + ], + "regexp" : [ + {regex: /\\./, token: "escape"}, + {regex: /\[/, token: "regex.start", next: "charClass"}, + {regex: "/", token: "string.regex", next: "format"}, + //{"default": "string.regex"}, + {"token": "string.regex", regex:"."} + ], + charClass : [ + {regex: "\\.", token: "escape"}, + {regex: "\\]", token: "regex.end", next: "regexp"}, + {"token": "string.regex", regex:"."} + ], + "format" : [ + {regex: /\\[ulULE]/, token: "keyword"}, + {regex: /\$\d+/, token: "variable"}, + {regex: "/[gim]*:?", token: "string.regex", next: "start"}, + // {"default": "string"}, + {"token": "string", regex:"."} + ] + }; +}; +oop.inherits(SnippetHighlightRules, TextHighlightRules); + +exports.SnippetHighlightRules = SnippetHighlightRules; + +var SnippetGroupHighlightRules = function() { + this.$rules = { + "start" : [ + {token: "text", regex: "^\\t", next: "sn-start"}, + {token:"invalid", regex: /^ \s*/}, + {token:"comment", regex: /^#.*/}, + {token:"constant.language.escape", regex: "^regex ", next: "regex"}, + {token:"constant.language.escape", regex: "^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b"} + ], + "regex" : [ + {token:"text", regex: "\\."}, + {token:"keyword", regex: "/"}, + {token:"empty", regex: "$", next: "start"} + ] + }; + this.embedRules(SnippetHighlightRules, "sn-", [ + {token: "text", regex: "^\\t", next: "sn-start"}, + {onMatch: function(value, state, stack) { + stack.splice(stack.length); + return this.tokenName; + }, tokenName: "text", regex: "^(?!\t)", next: "start"} + ]); + +}; + +oop.inherits(SnippetGroupHighlightRules, TextHighlightRules); + +exports.SnippetGroupHighlightRules = SnippetGroupHighlightRules; + +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = SnippetGroupHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.$indentWithTabs = true; + this.lineCommentStart = "#"; + this.$id = "ace/mode/snippets"; +}).call(Mode.prototype); +exports.Mode = Mode; + + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/soy_template.js b/plugins/node_modules/ace/lib/ace/mode/soy_template.js new file mode 100644 index 00000000..842d6025 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/soy_template.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var SoyTemplateHighlightRules = require("./soy_template_highlight_rules").SoyTemplateHighlightRules; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = SoyTemplateHighlightRules; +}; +oop.inherits(Mode, HtmlMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/soy_template"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/soy_template_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/soy_template_highlight_rules.js new file mode 100644 index 00000000..5ac63b75 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/soy_template_highlight_rules.js @@ -0,0 +1,355 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from tm bundles\SoyTemplate\Syntaxes\SoyTemplate.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + +var SoyTemplateHighlightRules = function() { + HtmlHighlightRules.call(this); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + var soyRules = { start: + [ { include: '#template' }, + { include: '#if' }, + { include: '#comment-line' }, + { include: '#comment-block' }, + { include: '#comment-doc' }, + { include: '#call' }, + { include: '#css' }, + { include: '#param' }, + { include: '#print' }, + { include: '#msg' }, + { include: '#for' }, + { include: '#foreach' }, + { include: '#switch' }, + { include: '#tag' }, + { include: 'text.html.basic' } ], + '#call': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.call.soy' ], + regex: '(\\{/?)(\\s*)(?=call|delcall)', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }, + { token: ['entity.name.tag.soy', 'variable.parameter.soy'], + regex: '(call|delcall)(\\s+[\\.\\w]+)'}, + { token: + [ 'entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy' ], + regex: '\\b(data)(\\s*)(=)' }, + { defaultToken: 'meta.tag.call.soy' } ] } ], + '#comment-line': + [ { token: + [ 'comment.line.double-slash.soy', + 'comment.line.double-slash.soy' ], + regex: '(//)(.*$)' } ], + '#comment-block': + [ { token: 'punctuation.definition.comment.begin.soy', + regex: '/\\*(?!\\*)', + push: + [ { token: 'punctuation.definition.comment.end.soy', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.soy' } ] } ], + '#comment-doc': + [ { token: 'punctuation.definition.comment.begin.soy', + regex: '/\\*\\*(?!/)', + push: + [ { token: 'punctuation.definition.comment.end.soy', + regex: '\\*/', + next: 'pop' }, + { token: [ 'support.type.soy', 'text', 'variable.parameter.soy' ], + regex: '(@param|@param\\?)(\\s+)(\\w+)' }, + { defaultToken: 'comment.block.documentation.soy' } ] } ], + '#css': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.css.soy', + 'entity.name.tag.soy' ], + regex: '(\\{/?)(\\s*)(css)\\b', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { token: 'support.constant.soy', + regex: '\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b' }, + { defaultToken: 'meta.tag.css.soy' } ] } ], + '#for': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.for.soy', + 'entity.name.tag.soy' ], + regex: '(\\{/?)(\\s*)(for)\\b', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { token: 'keyword.operator.soy', regex: '\\bin\\b' }, + { token: 'support.function.soy', regex: '\\brange\\b' }, + { include: '#variable' }, + { include: '#number' }, + { include: '#primitive' }, + { defaultToken: 'meta.tag.for.soy' } ] } ], + '#foreach': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.foreach.soy', + 'entity.name.tag.soy' ], + regex: '(\\{/?)(\\s*)(foreach)\\b', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { token: 'keyword.operator.soy', regex: '\\bin\\b' }, + { include: '#variable' }, + { defaultToken: 'meta.tag.foreach.soy' } ] } ], + '#function': + [ { token: 'support.function.soy', + regex: '\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b' } ], + '#if': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.if.soy', + 'entity.name.tag.soy' ], + regex: '(\\{/?)(\\s*)(if|elseif)\\b', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#variable' }, + { include: '#operator' }, + { include: '#function' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }, + { defaultToken: 'meta.tag.if.soy' } ] } ], + '#namespace': + [ { token: [ 'entity.name.tag.soy', 'text', 'variable.parameter.soy' ], + regex: '(namespace|delpackage)(\\s+)([\\w\\.]+)' } ], + '#number': [ { token: 'constant.numeric', regex: '[\\d]+' } ], + '#operator': + [ { token: 'keyword.operator.soy', + regex: '==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:' } ], + '#param': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.param.soy', + 'entity.name.tag.soy' ], + regex: '(\\{/?)(\\s*)(param)', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#variable' }, + { token: + [ 'entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy' ], + regex: '\\b([\\w]+)(\\s*)((?::)?)' }, + { defaultToken: 'meta.tag.param.soy' } ] } ], + '#primitive': + [ { token: 'constant.language.soy', + regex: '\\b(?:null|false|true)\\b' } ], + '#msg': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.msg.soy', + 'entity.name.tag.soy' ], + regex: '(\\{/?)(\\s*)(msg)\\b', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }, + { token: + [ 'entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy' ], + regex: '\\b(meaning|desc)(\\s*)(=)' }, + { defaultToken: 'meta.tag.msg.soy' } ] } ], + '#print': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.print.soy', + 'entity.name.tag.soy' ], + regex: '(\\{/?)(\\s*)(print)\\b', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#variable' }, + { include: '#print-parameter' }, + { include: '#number' }, + { include: '#primitive' }, + { include: '#attribute-lookup' }, + { defaultToken: 'meta.tag.print.soy' } ] } ], + '#print-parameter': + [ { token: 'keyword.operator.soy', regex: '\\|' }, + { token: 'variable.parameter.soy', + regex: 'noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate' } ], + '#special-character': + [ { token: 'support.constant.soy', + regex: '\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b' } ], + '#string-quoted-double': [ { token: 'string.quoted.double', regex: '"[^"]*"' } ], + '#string-quoted-single': [ { token: 'string.quoted.single', regex: '\'[^\']*\'' } ], + '#switch': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.switch.soy', + 'entity.name.tag.soy' ], + regex: '(\\{/?)(\\s*)(switch|case)\\b', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#variable' }, + { include: '#function' }, + { include: '#number' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }, + { defaultToken: 'meta.tag.switch.soy' } ] } ], + '#attribute-lookup': + [ { token: 'punctuation.definition.attribute-lookup.begin.soy', + regex: '\\[', + push: + [ { token: 'punctuation.definition.attribute-lookup.end.soy', + regex: '\\]', + next: 'pop' }, + { include: '#variable' }, + { include: '#function' }, + { include: '#operator' }, + { include: '#number' }, + { include: '#primitive' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' } ] } ], + '#tag': + [ { token: 'punctuation.definition.tag.begin.soy', + regex: '\\{', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#namespace' }, + { include: '#variable' }, + { include: '#special-character' }, + { include: '#tag-simple' }, + { include: '#function' }, + { include: '#operator' }, + { include: '#attribute-lookup' }, + { include: '#number' }, + { include: '#primitive' }, + { include: '#print-parameter' } ] } ], + '#tag-simple': + [ { token: 'entity.name.tag.soy', + regex: '{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})'} ], + '#template': + [ { token: + [ 'punctuation.definition.tag.begin.soy', + 'meta.tag.template.soy' ], + regex: '(\\{/?)(\\s*)(?=template|deltemplate)', + push: + [ { token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { token: ['entity.name.tag.soy', 'text', 'entity.name.function.soy' ], + regex: '(template|deltemplate)(\\s+)([\\.\\w]+)', + originalRegex: '(?<=template|deltemplate)\\s+([\\.\\w]+)' }, + { token: + [ 'entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy', + 'text', + 'string.quoted.double.soy' ], + regex: '\\b(private)(\\s*)(=)(\\s*)("true"|"false")' }, + { token: + [ 'entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy', + 'text', + 'string.quoted.single.soy' ], + regex: '\\b(private)(\\s*)(=)(\\s*)(\'true\'|\'false\')' }, + { token: + [ 'entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy', + 'text', + 'string.quoted.double.soy' ], + regex: '\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")' }, + { token: + [ 'entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy', + 'text', + 'string.quoted.single.soy' ], + regex: '\\b(autoescape)(\\s*)(=)(\\s*)(\'true\'|\'false\'|\'contextual\')' }, + { defaultToken: 'meta.tag.template.soy' } ] } ], + '#variable': [ { token: 'variable.other.soy', regex: '\\$[\\w\\.]+' } ] }; + + + for (var i in soyRules) { + if (this.$rules[i]) { + this.$rules[i].unshift.apply(this.$rules[i], soyRules[i]); + } else { + this.$rules[i] = soyRules[i]; + } + } + + this.normalizeRules(); +}; + +SoyTemplateHighlightRules.metaData = { comment: 'SoyTemplate', + fileTypes: [ 'soy' ], + firstLineMatch: '\\{\\s*namespace\\b', + foldingStartMarker: '\\{\\s*template\\s+[^\\}]*\\}', + foldingStopMarker: '\\{\\s*/\\s*template\\s*\\}', + name: 'SoyTemplate', + scopeName: 'source.soy' }; + + +oop.inherits(SoyTemplateHighlightRules, HtmlHighlightRules); + +exports.SoyTemplateHighlightRules = SoyTemplateHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/space.js b/plugins/node_modules/ace/lib/ace/mode/space.js new file mode 100644 index 00000000..a839cdf7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/space.js @@ -0,0 +1,22 @@ + +define(function(require, exports, module) { +"use strict"; +var oop = require("../lib/oop"); +// defines the parent mode +var TextMode = require("./text").Mode; +var FoldMode = require("./folding/coffee").FoldMode; +// defines the language specific highlighters and folding rules +var SpaceHighlightRules = require("./space_highlight_rules").SpaceHighlightRules; +var Mode = function() { + // set everything up + this.HighlightRules = SpaceHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function() { + + this.$id = "ace/mode/space"; +}).call(Mode.prototype); +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/space_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/space_highlight_rules.js new file mode 100644 index 00000000..4a347b19 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/space_highlight_rules.js @@ -0,0 +1,56 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SpaceHighlightRules = function() { + + // Todo: support multiline values that escape the newline with spaces. + this.$rules = { + "start" : [ + { + token : "empty_line", + regex : / */, + next : "key" + }, + { + token : "empty_line", + regex : /$/, + next : "key" + } + ], + "key" : [ + { + token : "variable", + regex : /\S+/ + }, + { + token : "empty_line", + regex : /$/, + next : "start" + },{ + token : "keyword.operator", + regex : / /, + next : "value" + } + ], + "value" : [ + { + token : "keyword.operator", + regex : /$/, + next : "start" + }, + { + token : "string", + regex : /[^$]/ + } + ] + }; + +}; + +oop.inherits(SpaceHighlightRules, TextHighlightRules); + +exports.SpaceHighlightRules = SpaceHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sparql.js b/plugins/node_modules/ace/lib/ace/mode/sparql.js new file mode 100644 index 00000000..a966e174 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sparql.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SPARQLHighlightRules = require("./sparql_highlight_rules").SPARQLHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = SPARQLHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + // this.lineCommentStart = ""#""; + // Extra logic goes here. + this.$id = "ace/mode/sparql"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/sparql_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/sparql_highlight_rules.js new file mode 100644 index 00000000..67a1ff56 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sparql_highlight_rules.js @@ -0,0 +1,190 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from sparql.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SPARQLHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + include: "#comments" + }, { + include: "#strings" + }, { + include: "#string-language-suffixes" + }, { + include: "#string-datatype-suffixes" + }, { + include: "#logic-operators" + }, { + include: "#relative-urls" + }, { + include: "#xml-schema-types" + }, { + include: "#rdf-schema-types" + }, { + include: "#owl-types" + }, { + include: "#qnames" + }, { + include: "#keywords" + }, { + include: "#built-in-functions" + }, { + include: "#variables" + }, { + include: "#boolean-literal" + }, { + include: "#punctuation-operators" + }], + "#boolean-literal": [{ + token: "constant.language.boolean.sparql", + regex: /true|false/ + }], + "#built-in-functions": [{ + token: "support.function.sparql", + regex: /[Aa][Bb][Ss]|[Aa][Vv][Gg]|[Bb][Nn][Oo][Dd][Ee]|[Bb][Oo][Uu][Nn][Dd]|[Cc][Ee][Ii][Ll]|[Cc][Oo][Aa][Ll][Ee][Ss][Cc][Ee]|[Cc][Oo][Nn][Cc][Aa][Tt]|[Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]|[Cc][Oo][Uu][Nn][Tt]|[Dd][Aa][Tt][Aa][Tt][Yy][Pp][Ee]|[Dd][Aa][Yy]|[Ee][Nn][Cc][Oo][Dd][Ee]_[Ff][Oo][Rr]_[Uu][Rr][Ii]|[Ee][Xx][Ii][Ss][Tt][Ss]|[Ff][Ll][Oo][Oo][Rr]|[Gg][Rr][Oo][Uu][Pp]_[Cc][Oo][Nn][Cc][Aa][Tt]|[Hh][Oo][Uu][Rr][Ss]|[Ii][Ff]|[Ii][Rr][Ii]|[Ii][Ss][Bb][Ll][Aa][Nn][Kk]|[Ii][Ss][Ii][Rr][Ii]|[Ii][Ss][Ll][Ii][Tt][Ee][Rr][Aa][Ll]|[Ii][Ss][Nn][Uu][Mm][Ee][Rr][Ii][Cc]|[Ii][Ss][Uu][Rr][Ii]|[Ll][Aa][Nn][Gg]|[Ll][Aa][Nn][Gg][Mm][Aa][Tt][Cc][Hh][Ee][Ss]|[Ll][Cc][Aa][Ss][Ee]|[Mm][Aa][Xx]|[Mm][Dd]5|[Mm][Ii][Nn]|[Mm][Ii][Nn][Uu][Tt][Ee][Ss]|[Mm][Oo][Nn][Tt][Hh]|[Nn][Oo][Ww]|[Rr][Aa][Nn][Dd]|[Rr][Ee][Gg][Ee][Xx]|[Rr][Ee][Pp][Ll][Aa][Cc][Ee]|[Rr][Oo][Uu][Nn][Dd]|[Ss][Aa][Mm][Ee][Tt][Ee][Rr][Mm]|[Ss][Aa][Mm][Pp][Ll][Ee]|[Ss][Ee][Cc][Oo][Nn][Dd][Ss]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Hh][Aa](?:1|256|384|512)|[Ss][Tt][Rr]|[Ss][Tt][Rr][Aa][Ff][Tt][Ee][Rr]|[Ss][Tt][Rr][Bb][Ee][Ff][Oo][Rr][Ee]|[Ss][Tt][Rr][Dd][Tt]|[Ss][Tt][Rr][Ee][Nn][Dd][Ss]|[Ss][Tt][Rr][Ll][Aa][Nn][Gg]|[Ss][Tt][Rr][Ll][Ee][Nn]|[Ss][Tt][Rr][Ss][Tt][Aa][Rr][Tt][Ss]|[Ss][Tt][Rr][Uu][Uu][Ii][Dd]|[Ss][Uu][Bb][Ss][Tt][Rr]|[Ss][Uu][Mm]|[Tt][Ii][Mm][Ee][Zz][Oo][Nn][Ee]|[Tt][Zz]|[Uu][Cc][Aa][Ss][Ee]|[Uu][Rr][Ii]|[Uu][Uu][Ii][Dd]|[Yy][Ee][Aa][Rr]/ + }], + "#comments": [{ + token: [ + "punctuation.definition.comment.sparql", + "comment.line.hash.sparql" + ], + regex: /(#)(.*$)/ + }], + "#keywords": [{ + token: "keyword.other.sparql", + regex: /[Aa][Dd][Dd]|[Aa][Ll][Ll]|[Aa][Ss]|[As][Ss][Cc]|[Aa][Ss][Kk]|[Bb][Aa][Ss][Ee]|[Bb][Ii][Nn][Dd]|[Bb][Yy]|[Cc][Ll][Ee][Aa][Rr]|[Cc][Oo][Nn][Ss][Tt][Rr][Uu][Cc][Tt]|[Cc][Oo][Pp][Yy]|[Cc][Rr][Ee][Aa][Tt][Ee]|[Dd][Aa][Tt][Aa]|[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Dd][Ee][Ll][Ee][Tt][Ee]|[Dd][Ee][Sc][Cc]|[Dd][Ee][Ss][Cc][Rr][Ii][Bb][Ee]|[Dd][Ii][Ss][Tt][Ii][Nn][Cc][Tt]|[Dd][Rr][Oo][Pp]|[Ff][Ii][Ll][Tt][Ee][Rr]|[Ff][Rr][Oo][Mm]|[Gg][Rr][Aa][Pp][Hh]|[Gg][Rr][Oo][Uu][Pp]|[Hh][Aa][Vv][Ii][Nn][Gg]|[Ii][Nn][Ss][Ee][Rr][Tt]|[Ll][Ii][Mm][Ii][Tt]|[Ll][Oo][Aa][Dd]|[Mm][Ii][Nn][Uu][Ss]|[Mm][Oo][Vv][Ee]|[Nn][Aa][Mm][Ee][Dd]|[Oo][Ff][Ff][Ss][Ee][Tt]|[Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll]|[Oo][Rr][Dd][Ee][Rr]|[Pp][Rr][Ee][Ff][Ii][Xx]|[Rr][Ee][Dd][Uu][Cc][Ee][Dd]|[Ss][Ee][Ll][Ee][Cc][Tt]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Ee][Rr][Vv][Ii][Cc][Ee]|[Ss][Ii][Ll][Ee][Nn][Tt]|[Tt][Oo]|[Uu][Nn][Dd][Ee][Ff]|[Uu][Nn][Ii][Oo][Nn]|[Uu][Ss][Ii][Nn][Gg]|[Vv][Aa][Ll][Uu][Ee][Ss]|[Ww][He][Ee][Rr][Ee]|[Ww][Ii][Tt][Hh]/ + }], + "#logic-operators": [{ + token: "keyword.operator.logical.sparql", + regex: /\|\||&&|=|!=|<|>|<=|>=|(?:^|!?\s)IN(?:!?\s|$)|(?:^|!?\s)NOT(?:!?\s|$)|-|\+|\*|\/|\!/ + }], + "#owl-types": [{ + token: "support.type.datatype.owl.sparql", + regex: /owl:[a-zA-Z]+/ + }], + "#punctuation-operators": [{ + token: "keyword.operator.punctuation.sparql", + regex: /;|,|\.|\(|\)|\{|\}|\|/ + }], + "#qnames": [{ + token: "entity.name.other.qname.sparql", + regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ + }], + "#rdf-schema-types": [{ + token: "support.type.datatype.rdf.schema.sparql", + regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ + }], + "#relative-urls": [{ + token: "string.quoted.other.relative.url.sparql", + regex: /</, + push: [{ + token: "string.quoted.other.relative.url.sparql", + regex: />/, + next: "pop" + }, { + defaultToken: "string.quoted.other.relative.url.sparql" + }] + }], + "#string-datatype-suffixes": [{ + token: "keyword.operator.datatype.suffix.sparql", + regex: /\^\^/ + }], + "#string-language-suffixes": [{ + token: [ + "keyword.operator.language.suffix.sparql", + "constant.language.suffix.sparql" + ], + regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ + }], + "#strings": [{ + token: "string.quoted.triple.sparql", + regex: /"""/, + push: [{ + token: "string.quoted.triple.sparql", + regex: /"""/, + next: "pop" + }, { + defaultToken: "string.quoted.triple.sparql" + }] + }, { + token: "string.quoted.double.sparql", + regex: /"/, + push: [{ + token: "string.quoted.double.sparql", + regex: /"/, + next: "pop" + }, { + token: "invalid.string.newline", + regex: /$/ + }, { + token: "constant.character.escape.sparql", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.sparql" + }] + }], + "#variables": [{ + token: "variable.other.sparql", + regex: /(?:\?|\$)[-_a-zA-Z0-9]+/ + }], + "#xml-schema-types": [{ + token: "support.type.datatype.schema.sparql", + regex: /xsd?:[a-z][a-zA-Z]+/ + }] + }; + + this.normalizeRules(); +}; + +SPARQLHighlightRules.metaData = { + fileTypes: ["rq", "sparql"], + name: "SPARQL", + scopeName: "source.sparql" +}; + + +oop.inherits(SPARQLHighlightRules, TextHighlightRules); + +exports.SPARQLHighlightRules = SPARQLHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/sql.js b/plugins/node_modules/ace/lib/ace/mode/sql.js new file mode 100644 index 00000000..3f267c5c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sql.js @@ -0,0 +1,53 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SqlHighlightRules = require("./sql_highlight_rules").SqlHighlightRules; + +var Mode = function() { + this.HighlightRules = SqlHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "--"; + + this.$id = "ace/mode/sql"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sql_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/sql_highlight_rules.js new file mode 100644 index 00000000..b28ed9d9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sql_highlight_rules.js @@ -0,0 +1,110 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SqlHighlightRules = function() { + + var keywords = ( + "select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|" + + "when|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|" + + "foreign|not|references|default|null|inner|cross|natural|database|drop|grant" + ); + + var builtinConstants = ( + "true|false" + ); + + var builtinFunctions = ( + "avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|" + + "coalesce|ifnull|isnull|nvl" + ); + + var dataTypes = ( + "int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" + + "money|real|number|integer" + ); + + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants, + "storage.type": dataTypes + }, "identifier", true); + + this.$rules = { + "start" : [ { + token : "comment", + regex : "--.*$" + }, { + token : "comment", + start : "/\\*", + end : "\\*/" + }, { + token : "string", // " string + regex : '".*?"' + }, { + token : "string", // ' string + regex : "'.*?'" + }, { + token : "string", // ` string (apache drill) + regex : "`.*?`" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token : "paren.lparen", + regex : "[\\(]" + }, { + token : "paren.rparen", + regex : "[\\)]" + }, { + token : "text", + regex : "\\s+" + } ] + }; + this.normalizeRules(); +}; + +oop.inherits(SqlHighlightRules, TextHighlightRules); + +exports.SqlHighlightRules = SqlHighlightRules; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/sqlserver.js b/plugins/node_modules/ace/lib/ace/mode/sqlserver.js new file mode 100644 index 00000000..69e4ffd8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sqlserver.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SqlServerHighlightRules = require("./sqlserver_highlight_rules").SqlHighlightRules; +var SqlServerFoldMode = require("./folding/sqlserver").FoldMode; + +var Mode = function() { + this.HighlightRules = SqlServerHighlightRules; + this.foldingRules = new SqlServerFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = {start: "/*", end: "*/"}; + + /** + * Override keyword completions using list created in highlight rules + */ + this.getCompletions = function(state, session, pos, prefix) { + return session.$mode.$highlightRules.completions; + }; + + this.$id = "ace/mode/sql"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/sqlserver_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/sqlserver_highlight_rules.js new file mode 100644 index 00000000..0bfc3356 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/sqlserver_highlight_rules.js @@ -0,0 +1,232 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SqlServerHighlightRules = function() { + /** + * Transact-SQL Syntax Conventions: https://msdn.microsoft.com/en-us/library/ms177563.aspx + * Goal: make this imitate SSMS (SQL Server Managment Studio) + */ + + // https://msdn.microsoft.com/en-us/library/ms189773.aspx + var logicalOperators = "ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME"; + logicalOperators += "|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS"; //SSMS colors these gray too + //note: manually removed LEFT and RIGHT from built in functions below to color it same way SSMS does + + + var builtinFunctions = ( + /* https://msdn.microsoft.com/en-us/library/ms187957.aspx */ + "OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|" + + /* https://msdn.microsoft.com/en-us/library/ms173454.aspx */ + "AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|" + + /* https://msdn.microsoft.com/en-us/library/ms189798.aspx */ + "DENSE_RANK|NTILE|RANK|ROW_NUMBER" + + /* https://msdn.microsoft.com/en-us/library/ms173823.aspx */ + "@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|" + + /* https://msdn.microsoft.com/en-us/library/hh231076.aspx */ + "CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE" + + /* https://msdn.microsoft.com/en-us/library/ms186285.aspx */ + "@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|" + + /* https://msdn.microsoft.com/en-us/library/ms186724.aspx */ + "@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|" + + /* https://msdn.microsoft.com/en-us/library/hh213226.aspx */ + "CHOOSE|IIF|" + + /* https://msdn.microsoft.com/en-us/library/ms177516.aspx */ + "ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|" + + /* https://msdn.microsoft.com/en-us/library/ms187812.aspx */ + "@@PROCID|APPLOCK_MODE|APPLOCK_TEST|APP_NAME|ASSEMBLYPROPERTY|COLUMNPROPERTY|COL_LENGTH|COL_NAME|DATABASEPROPERTYEX|DATABASE_PRINCIPAL_ID|DB_ID|DB_NAME|FILEGROUPPROPERTY|FILEGROUP_ID|FILEGROUP_NAME|FILEPROPERTY|FILE_ID|FILE_IDEX|FILE_NAME|FULLTEXTCATALOGPROPERTY|FULLTEXTSERVICEPROPERTY|INDEXKEY_PROPERTY|INDEXPROPERTY|INDEX_COL|OBJECTPROPERTY|OBJECTPROPERTYEX|OBJECT_DEFINITION|OBJECT_ID|OBJECT_NAME|OBJECT_SCHEMA_NAME|ORIGINAL_DB_NAME|PARSENAME|SCHEMA_ID|SCHEMA_NAME|SCOPE_IDENTITY|SERVERPROPERTY|STATS_DATE|TYPEPROPERTY|TYPE_ID|TYPE_NAME|" + + /* https://msdn.microsoft.com/en-us/library/ms186236.aspx */ + "CERTENCODED|CERTPRIVATEKEY|CURRENT_USER|DATABASE_PRINCIPAL_ID|HAS_PERMS_BY_NAME|IS_MEMBER|IS_ROLEMEMBER|IS_SRVROLEMEMBER|ORIGINAL_LOGIN|PERMISSIONS|PWDCOMPARE|PWDENCRYPT|SCHEMA_ID|SCHEMA_NAME|SESSION_USER|SUSER_ID|SUSER_NAME|SUSER_SID|SUSER_SNAME|SYS.FN_BUILTIN_PERMISSIONS|SYS.FN_GET_AUDIT_FILE|SYS.FN_MY_PERMISSIONS|SYSTEM_USER|USER_ID|USER_NAME|" + + /* https://msdn.microsoft.com/en-us/library/ms181984.aspx */ + "ASCII|CHAR|CHARINDEX|CONCAT|DIFFERENCE|FORMAT|LEN|LOWER|LTRIM|NCHAR|PATINDEX|QUOTENAME|REPLACE|REPLICATE|REVERSE|RTRIM|SOUNDEX|SPACE|STR|STUFF|SUBSTRING|UNICODE|UPPER|" + + /* https://msdn.microsoft.com/en-us/library/ms187786.aspx */ + "$PARTITION|@@ERROR|@@IDENTITY|@@PACK_RECEIVED|@@ROWCOUNT|@@TRANCOUNT|BINARY_CHECKSUM|CHECKSUM|CONNECTIONPROPERTY|CONTEXT_INFO|CURRENT_REQUEST_ID|ERROR_LINE|ERROR_MESSAGE|ERROR_NUMBER|ERROR_PROCEDURE|ERROR_SEVERITY|ERROR_STATE|FORMATMESSAGE|GETANSINULL|GET_FILESTREAM_TRANSACTION_CONTEXT|HOST_ID|HOST_NAME|ISNULL|ISNUMERIC|MIN_ACTIVE_ROWVERSION|NEWID|NEWSEQUENTIALID|ROWCOUNT_BIG|XACT_STATE|" + + /* https://msdn.microsoft.com/en-us/library/ms177520.aspx */ + "@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|" + + /* https://msdn.microsoft.com/en-us/library/ms188353.aspx */ + "PATINDEX|TEXTPTR|TEXTVALID|" + + /* other */ + "COALESCE|NULLIF" + ); + + + // https://msdn.microsoft.com/en-us/library/ms187752.aspx + var dataTypes = ("BIGINT|BINARY|BIT|CHAR|CURSOR|DATE|DATETIME|DATETIME2|DATETIMEOFFSET|DECIMAL|FLOAT|HIERARCHYID|IMAGE|INTEGER|INT|MONEY|NCHAR|NTEXT|NUMERIC|NVARCHAR|REAL|SMALLDATETIME|SMALLINT|SMALLMONEY|SQL_VARIANT|TABLE|TEXT|TIME|TIMESTAMP|TINYINT|UNIQUEIDENTIFIER|VARBINARY|VARCHAR|XML"); + + + //https://msdn.microsoft.com/en-us/library/ms176007.aspx (these are lower case!) + var builtInStoredProcedures = "sp_addextendedproc|sp_addextendedproperty|sp_addmessage|sp_addtype|sp_addumpdevice|sp_add_data_file_recover_suspect_db|sp_add_log_file_recover_suspect_db|sp_altermessage|sp_attach_db|sp_attach_single_file_db|sp_autostats|sp_bindefault|sp_bindrule|sp_bindsession|sp_certify_removable|sp_clean_db_file_free_space|sp_clean_db_free_space|sp_configure|sp_control_plan_guide|sp_createstats|sp_create_plan_guide|sp_create_plan_guide_from_handle|sp_create_removable|sp_cycle_errorlog|sp_datatype_info|sp_dbcmptlevel|sp_dbmmonitoraddmonitoring|sp_dbmmonitorchangealert|sp_dbmmonitorchangemonitoring|sp_dbmmonitordropalert|sp_dbmmonitordropmonitoring|sp_dbmmonitorhelpalert|sp_dbmmonitorhelpmonitoring|sp_dbmmonitorresults|sp_db_increased_partitions|sp_delete_backuphistory|sp_depends|sp_describe_first_result_set|sp_describe_undeclared_parameters|sp_detach_db|sp_dropdevice|sp_dropextendedproc|sp_dropextendedproperty|sp_dropmessage|sp_droptype|sp_execute|sp_executesql|sp_getapplock|sp_getbindtoken|sp_help|sp_helpconstraint|sp_helpdb|sp_helpdevice|sp_helpextendedproc|sp_helpfile|sp_helpfilegroup|sp_helpindex|sp_helplanguage|sp_helpserver|sp_helpsort|sp_helpstats|sp_helptext|sp_helptrigger|sp_indexoption|sp_invalidate_textptr|sp_lock|sp_monitor|sp_prepare|sp_prepexec|sp_prepexecrpc|sp_procoption|sp_recompile|sp_refreshview|sp_releaseapplock|sp_rename|sp_renamedb|sp_resetstatus|sp_sequence_get_range|sp_serveroption|sp_setnetname|sp_settriggerorder|sp_spaceused|sp_tableoption|sp_unbindefault|sp_unbindrule|sp_unprepare|sp_updateextendedproperty|sp_updatestats|sp_validname|sp_who|sys.sp_merge_xtp_checkpoint_files|sys.sp_xtp_bind_db_resource_pool|sys.sp_xtp_checkpoint_force_garbage_collection|sys.sp_xtp_control_proc_exec_stats|sys.sp_xtp_control_query_exec_stats|sys.sp_xtp_unbind_db_resource_pool"; + + + // https://msdn.microsoft.com/en-us/library/ms189822.aspx + var keywords = "ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE"; + + + // Microsoft's keyword list is missing a lot of things that are located on various other pages + // https://msdn.microsoft.com/en-us/library/ms187373.aspx, https://msdn.microsoft.com/en-us/library/ms181714.aspx + keywords += "|KEEPIDENTITY|KEEPDEFAULTS|IGNORE_CONSTRAINTS|IGNORE_TRIGGERS|XLOCK|FORCESCAN|FORCESEEK|HOLDLOCK|NOLOCK|NOWAIT|PAGLOCK|READCOMMITTED|READCOMMITTEDLOCK|READPAST|READUNCOMMITTED|REPEATABLEREAD|ROWLOCK|SERIALIZABLE|SNAPSHOT|SPATIAL_WINDOW_MAX_CELLS|TABLOCK|TABLOCKX|UPDLOCK|XLOCK|IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX|EXPAND|VIEWS|FAST|FORCE|KEEP|KEEPFIXED|MAXDOP|MAXRECURSION|OPTIMIZE|PARAMETERIZATION|SIMPLE|FORCED|RECOMPILE|ROBUST|PLAN|SPATIAL_WINDOW_MAX_CELLS|NOEXPAND|HINT"; + // https://msdn.microsoft.com/en-us/library/ms173815.aspx + keywords += "|LOOP|HASH|MERGE|REMOTE"; + // https://msdn.microsoft.com/en-us/library/ms175976.aspx + keywords += "|TRY|CATCH|THROW"; + // highlighted words in SSMS that I'm not even sure where they come from + keywords += "|TYPE"; + + + //remove specific built in types from keyword list + keywords = keywords.split('|'); + keywords = keywords.filter(function(value, index, self) { + return logicalOperators.split('|').indexOf(value) === -1 && builtinFunctions.split('|').indexOf(value) === -1 && dataTypes.split('|').indexOf(value) === -1; + }); + keywords = keywords.sort().join('|'); + + + var keywordMapper = this.createKeywordMapper({ + "constant.language": logicalOperators, + "storage.type": dataTypes, + "support.function": builtinFunctions, + "support.storedprocedure": builtInStoredProcedures, + "keyword": keywords + }, "identifier", true); + + + //https://msdn.microsoft.com/en-us/library/ms190356.aspx + var setStatements = "SET ANSI_DEFAULTS|SET ANSI_NULLS|SET ANSI_NULL_DFLT_OFF|SET ANSI_NULL_DFLT_ON|SET ANSI_PADDING|SET ANSI_WARNINGS|SET ARITHABORT|SET ARITHIGNORE|SET CONCAT_NULL_YIELDS_NULL|SET CURSOR_CLOSE_ON_COMMIT|SET DATEFIRST|SET DATEFORMAT|SET DEADLOCK_PRIORITY|SET FIPS_FLAGGER|SET FMTONLY|SET FORCEPLAN|SET IDENTITY_INSERT|SET IMPLICIT_TRANSACTIONS|SET LANGUAGE|SET LOCK_TIMEOUT|SET NOCOUNT|SET NOEXEC|SET NUMERIC_ROUNDABORT|SET OFFSETS|SET PARSEONLY|SET QUERY_GOVERNOR_COST_LIMIT|SET QUOTED_IDENTIFIER|SET REMOTE_PROC_TRANSACTIONS|SET ROWCOUNT|SET SHOWPLAN_ALL|SET SHOWPLAN_TEXT|SET SHOWPLAN_XML|SET STATISTICS IO|SET STATISTICS PROFILE|SET STATISTICS TIME|SET STATISTICS XML|SET TEXTSIZE|SET XACT_ABORT".split('|'); + var isolationLevels = "READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SNAPSHOP|SERIALIZABLE".split('|'); + for (var i = 0; i < isolationLevels.length; i++) { + setStatements.push('SET TRANSACTION ISOLATION LEVEL ' + isolationLevels[i]); + } + + + this.$rules = { + start: [{ + token: "string.start", + regex: "'", + next: [{ + token: "constant.language.escape", + regex: /''/ + }, { + token: "string.end", + next: "start", + regex: "'" + }, { + defaultToken: "string" + }] + }, + DocCommentHighlightRules.getStartRule("doc-start"), { + token: "comment", + regex: "--.*$" + }, { + token: "comment", + start: "/\\*", + end: "\\*/" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])" //up to 2 @symbols for some built in functions + }, { + token: "constant.class", + regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + //https://msdn.microsoft.com/en-us/library/ms174986.aspx + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "punctuation", + regex: ",|;" + }, { + token: "text", + regex: "\\s+" + }], + comment: [ + DocCommentHighlightRules.getTagRule(), { + token: "comment", + regex: "\\*\\/", + next: "no_regex" + }, { + defaultToken: "comment", + caseInsensitive: true + }] + }; + + //add each set statment as regex at top of rules so that they are processed first because they require multiple words + //note: this makes the statements not match if they are not upper case.. which is not ideal but I don't know of an easy way to fix this + for (var i = 0; i < setStatements.length; i++) { + this.$rules.start.unshift({ + token: "set.statement", + regex: setStatements[i] + }); + } + + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); + + + //prepare custom keyword completions used by mode to override default completor + //this allows for custom 'meta' and proper case of completions + var completions = []; + var addCompletions = function(arr, meta) { + arr.forEach(function(v) { + completions.push({ + name: v, + value: v, + score: 0, + meta: meta + }); + }); + }; + addCompletions(builtInStoredProcedures.split('|'), 'procedure'); + addCompletions(logicalOperators.split('|'), 'operator'); + addCompletions(builtinFunctions.split('|'), 'function'); + addCompletions(dataTypes.split('|'), 'type'); + addCompletions(setStatements, 'statement'); + addCompletions(keywords.split('|'), 'keyword'); + + this.completions = completions; +}; + +oop.inherits(SqlServerHighlightRules, TextHighlightRules); + +exports.SqlHighlightRules = SqlServerHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/stylus.js b/plugins/node_modules/ace/lib/ace/mode/stylus.js new file mode 100644 index 00000000..ce92061c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/stylus.js @@ -0,0 +1,63 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var StylusHighlightRules = require("./stylus_highlight_rules").StylusHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = StylusHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.$id = "ace/mode/stylus"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/stylus_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/stylus_highlight_rules.js new file mode 100644 index 00000000..911a47aa --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/stylus_highlight_rules.js @@ -0,0 +1,164 @@ +/* + THIS FILE WAS AUTOGENERATED BY Stylus.tmlanguage (UUID: 60519324-6A3A-4382-9E0B-546993A3869A) */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CssHighlightRules = require("./css_highlight_rules"); + +var StylusHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + var keywordMapper = this.createKeywordMapper({ + "support.type": CssHighlightRules.supportType, + "support.function": CssHighlightRules.supportFunction, + "support.constant": CssHighlightRules.supportConstant, + "support.constant.color": CssHighlightRules.supportConstantColor, + "support.constant.fonts": CssHighlightRules.supportConstantFonts + }, "text", true); + + this.$rules = { + start: [ + { + token : "comment", + regex : /\/\/.*$/ + }, + { + token : "comment", // multi line comment + regex : /\/\*/, + next : "comment" + }, + { + token: ["entity.name.function.stylus", "text"], + regex: "^([-a-zA-Z_][-\\w]*)?(\\()" + }, + { + token: ["entity.other.attribute-name.class.stylus"], + regex: "\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*" + }, + { + token: ["entity.language.stylus"], + regex: "^ *&" + }, + { + token: ["variable.language.stylus"], + regex: "(arguments)" + }, + { + token: ["keyword.stylus"], + regex: "@[-\\w]+" + }, + { + token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex : CssHighlightRules.pseudoElements + }, { + token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex : CssHighlightRules.pseudoClasses + }, + { + token: ["entity.name.tag.stylus"], + regex: "(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)" + }, + { + token : "constant.numeric", // hex6 color + regex : "#[a-f0-9]{6}" + }, + { + token : "constant.numeric", // hex3 color + regex : "#[a-f0-9]{3}" + }, + { + token: ["punctuation.definition.entity.stylus", "entity.other.attribute-name.id.stylus"], + regex: "(#)([a-zA-Z][a-zA-Z0-9_-]*)" + }, + { + token: "meta.vendor-prefix.stylus", + regex: "-webkit-|-moz\\-|-ms-|-o-" + }, + { + token: "keyword.control.stylus", + regex: "(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b" + }, + { + token: "keyword.operator.stylus", + regex: "!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=" + }, + { + token: "keyword.operator.stylus", + regex: "(?:in|is(?:nt)?|not)\\b" + }, + { + token : "string", + regex : "'(?=.)", + next : "qstring" + }, { + token : "string", + regex : '"(?=.)', + next : "qqstring" + }, + { + token : "constant.numeric", + regex : CssHighlightRules.numRe + }, + { + token : "keyword", + regex : "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b" + }, + { + token : keywordMapper, + regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" + }, { + defaultToken : "comment" + } + ], + "qqstring" : [ + { + token : "string", + regex : '[^"\\\\]+' + }, + { + token : "string", + regex : "\\\\$", + next : "qqstring" + }, + { + token : "string", + regex : '"|$', + next : "start" + } + ], + "qstring" : [ + { + token : "string", + regex : "[^'\\\\]+" + }, + { + token : "string", + regex : "\\\\$", + next : "qstring" + }, + { + token : "string", + regex : "'|$", + next : "start" + } + ] +}; + +}; + +oop.inherits(StylusHighlightRules, TextHighlightRules); + +exports.StylusHighlightRules = StylusHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/svg.js b/plugins/node_modules/ace/lib/ace/mode/svg.js new file mode 100644 index 00000000..8c608e82 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/svg.js @@ -0,0 +1,69 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var XmlMode = require("./xml").Mode; +var JavaScriptMode = require("./javascript").Mode; +var SvgHighlightRules = require("./svg_highlight_rules").SvgHighlightRules; +var MixedFoldMode = require("./folding/mixed").FoldMode; +var XmlFoldMode = require("./folding/xml").FoldMode; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + XmlMode.call(this); + + this.HighlightRules = SvgHighlightRules; + + this.createModeDelegates({ + "js-": JavaScriptMode + }); + + this.foldingRules = new MixedFoldMode(new XmlFoldMode(), { + "js-": new CStyleFoldMode() + }); +}; + +oop.inherits(Mode, XmlMode); + +(function() { + + this.getNextLineIndent = function(state, line, tab) { + return this.$getIndent(line); + }; + + + this.$id = "ace/mode/svg"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/svg_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/svg_highlight_rules.js new file mode 100644 index 00000000..25722d72 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/svg_highlight_rules.js @@ -0,0 +1,49 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; + +var SvgHighlightRules = function() { + XmlHighlightRules.call(this); + + this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); + + this.normalizeRules(); +}; + +oop.inherits(SvgHighlightRules, XmlHighlightRules); + +exports.SvgHighlightRules = SvgHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/swift.js b/plugins/node_modules/ace/lib/ace/mode/swift.js new file mode 100644 index 00000000..90b08f6c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/swift.js @@ -0,0 +1,61 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./swift_highlight_rules").HighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = HighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/", nestable: true}; + + this.$id = "ace/mode/swift"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/swift_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/swift_highlight_rules.js new file mode 100644 index 00000000..86c0fecf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/swift_highlight_rules.js @@ -0,0 +1,196 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SwiftHighlightRules = function() { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "", + "keyword": "__COLUMN__|__FILE__|__FUNCTION__|__LINE__" + + "|as|associativity|break|case|class|continue|default|deinit|didSet" + + "|do|dynamicType|else|enum|extension|fallthrough|for|func|get|if|import" + + "|in|infix|init|inout|is|left|let|let|mutating|new|none|nonmutating" + + "|operator|override|postfix|precedence|prefix|protocol|return|right" + + "|safe|Self|self|set|struct|subscript|switch|Type|typealias" + + "|unowned|unsafe|var|weak|where|while|willSet" + + "|convenience|dynamic|final|infix|lazy|mutating|nonmutating|optional|override|postfix" + + "|prefix|required|static|guard|defer", + "storage.type": "bool|double|Double" + + "|extension|float|Float|int|Int|private|public|string|String", + "constant.language": + "false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes", + "support.function": + "" + }, "identifier"); + + function string(start, options) { + var nestable = options.nestable || options.interpolation; + var interpStart = options.interpolation && options.interpolation.nextState || "start"; + var mainRule = { + regex: start + (options.multiline ? "" : "(?=.)"), + token: "string.start" + }; + var nextState = [ + options.escape && { + regex: options.escape, + token: "character.escape" + }, + options.interpolation && { + token : "paren.quasi.start", + regex : lang.escapeRegExp(options.interpolation.lead + options.interpolation.open), + push : interpStart + }, + options.error && { + regex: options.error, + token: "error.invalid" + }, + { + regex: start + (options.multiline ? "" : "|$"), + token: "string.end", + next: nestable ? "pop" : "start" + }, { + defaultToken: "string" + } + ].filter(Boolean); + + if (nestable) + mainRule.push = nextState; + else + mainRule.next = nextState; + + if (!options.interpolation) + return mainRule; + + var open = options.interpolation.open; + var close = options.interpolation.close; + var counter = { + regex: "[" + lang.escapeRegExp(open + close) + "]", + onMatch: function(val, state, stack) { + this.next = val == open ? this.nextState : ""; + if (val == open && stack.length) { + stack.unshift("start", state); + return "paren"; + } + if (val == close && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1) + return "paren.quasi.end"; + } + return val == open ? "paren.lparen" : "paren.rparen"; + }, + nextState: interpStart + }; + return [counter, mainRule]; + } + + function comments() { + return [{ + token : "comment", + regex : "\\/\\/(?=.)", + next : [ + DocCommentHighlightRules.getTagRule(), + {token : "comment", regex : "$|^", next: "start"}, + {defaultToken : "comment", caseInsensitive: true} + ] + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment.start", + regex : /\/\*/, + stateName: "nested_comment", + push : [ + DocCommentHighlightRules.getTagRule(), + {token : "comment.start", regex : /\/\*/, push: "nested_comment"}, + {token : "comment.end", regex : "\\*\\/", next : "pop"}, + {defaultToken : "comment", caseInsensitive: true} + ] + } + ]; + } + + + this.$rules = { + start: [ + string('"', { + escape: /\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/, + interpolation: {lead: "\\", open: "(", close: ")"}, + error: /\\./, + multiline: false + }), + comments(), + { + regex: /@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, + token: "variable.parameter" + }, + { + regex: /[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, + token: keywordMapper + }, + { + token : "constant.numeric", + regex : /[+-]?(?:0(?:b[01]+|o[0-7]+|x[\da-fA-F])|\d+(?:(?:\.\d*)?(?:[PpEe][+-]?\d+)?)\b)/ + }, { + token : "keyword.operator", + regex : /--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next : "start" + }, { + token : "punctuation.operator", + regex : /[?:,;.]/, + next : "start" + }, { + token : "paren.lparen", + regex : /[\[({]/, + next : "start" + }, { + token : "paren.rparen", + regex : /[\])}]/ + } + + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); + + this.normalizeRules(); +}; + + +oop.inherits(SwiftHighlightRules, TextHighlightRules); + +exports.HighlightRules = SwiftHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/tcl.js b/plugins/node_modules/ace/lib/ace/mode/tcl.js new file mode 100644 index 00000000..a7b0e6dd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/tcl.js @@ -0,0 +1,85 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var TclHighlightRules = require("./tcl_highlight_rules").TclHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; + +var Mode = function() { + this.HighlightRules = TclHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "#"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/tcl"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/tcl_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/tcl_highlight_rules.js new file mode 100644 index 00000000..196413a2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/tcl_highlight_rules.js @@ -0,0 +1,172 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var TclHighlightRules = function() { + + //TODO var builtinFunctions = ""; + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "#.*\\\\$", + next : "commentfollow" + }, { + token : "comment", + regex : "#.*$" + }, { + token : "support.function", + regex : '[\\\\]$', + next : "splitlineStart" + }, { + token : "text", + regex : /\\(?:["{}\[\]$\\])/ + }, { + token : "text", // last value before command + regex : '^|[^{][;][^}]|[/\r/]', + next : "commandItem" + }, { + token : "string", // single line + regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // multi line """ string start + regex : '[ ]*["]', + next : "qqstring" + }, { + token : "variable.instance", + regex : "[$]", + next : "variable" + }, { + token : "support.function", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" + }, { + token : "identifier", + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "paren.lparen", + regex : "[[{]", + next : "commandItem" + }, { + token : "paren.lparen", + regex : "[(]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "commandItem" : [ + { + token : "comment", + regex : "#.*\\\\$", + next : "commentfollow" + }, { + token : "comment", + regex : "#.*$", + next : "start" + }, { + token : "string", // single line + regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "variable.instance", + regex : "[$]", + next : "variable" + }, { + token : "support.function", + regex : "(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])", + next : "commandItem" + }, { + token : "support.function", + regex : "[a-zA-Z0-9_/]+(?:[:][:])", + next : "commandItem" + }, { + token : "support.function", + regex : "(?:[:][:])", + next : "commandItem" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "support.function", + regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" + }, { + token : "keyword", + regex : "[a-zA-Z0-9_/]+", + next : "start" + } ], + "commentfollow" : [ + { + token : "comment", + regex : ".*\\\\$", + next : "commentfollow" + }, { + token : "comment", + regex : '.+', + next : "start" + } ], + "splitlineStart" : [ + { + token : "text", + regex : "^.", + next : "start" + }], + "variable" : [ + { + token : "variable.instance", // variable tcl + regex : "[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?", + next : "start" + }, { + token : "variable.instance", // variable tcl with braces + regex : "{?[a-zA-Z_\\d]+}?", + next : "start" + }], + "qqstring" : [ { + token : "string", // multi line """ string end + regex : '(?:[^\\\\]|\\\\.)*?["]', + next : "start" + }, { + token : "string", + regex : '.+' + } ] + }; +}; + +oop.inherits(TclHighlightRules, TextHighlightRules); + +exports.TclHighlightRules = TclHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/tex.js b/plugins/node_modules/ace/lib/ace/mode/tex.js new file mode 100644 index 00000000..aad07763 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/tex.js @@ -0,0 +1,70 @@ +/* + * tex.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + +var Mode = function(suppressHighlighting) { + if (suppressHighlighting) + this.HighlightRules = TextHighlightRules; + else + this.HighlightRules = TexHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "%"; + this.getNextLineIndent = function(state, line, tab) { + return this.$getIndent(line); + }; + + this.allowAutoInsert = function() { + return false; + }; + this.$id = "ace/mode/tex"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/tex_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/tex_highlight_rules.js new file mode 100644 index 00000000..4a71d396 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/tex_highlight_rules.js @@ -0,0 +1,127 @@ +/* + * tex_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var TexHighlightRules = function(textClass) { + + if (!textClass) + textClass = "text"; + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "%.*$" + }, { + token : textClass, // non-command + regex : "\\\\[$&%#\\{\\}]" + }, { + token : "keyword", // command + regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", + next : "nospell" + }, { + token : "keyword", // command + regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + }, { + // Obviously these are neither keywords nor operators, but + // labelling them as such was the easiest way to get them + // to be colored distinctly from regular text + token : "paren.keyword.operator", + regex : "[[({]" + }, { + // Obviously these are neither keywords nor operators, but + // labelling them as such was the easiest way to get them + // to be colored distinctly from regular text + token : "paren.keyword.operator", + regex : "[\\])}]" + }, { + token : textClass, + regex : "\\s+" + } + ], + // This mode is necessary to prevent spell checking, but to keep the + // same syntax highlighting behavior. The list of commands comes from + // Texlipse. + "nospell" : [ + { + token : "comment", + regex : "%.*$", + next : "start" + }, { + token : "nospell." + textClass, // non-command + regex : "\\\\[$&%#\\{\\}]" + }, { + token : "keyword", // command + regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" + }, { + token : "keyword", // command + regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next : "start" + }, { + token : "paren.keyword.operator", + regex : "[[({]" + }, { + token : "paren.keyword.operator", + regex : "[\\])]" + }, { + token : "paren.keyword.operator", + regex : "}", + next : "start" + }, { + token : "nospell." + textClass, + regex : "\\s+" + }, { + token : "nospell." + textClass, + regex : "\\w+" + } + ] + }; +}; + +oop.inherits(TexHighlightRules, TextHighlightRules); + +exports.TexHighlightRules = TexHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/text.js b/plugins/node_modules/ace/lib/ace/mode/text.js new file mode 100644 index 00000000..ba86493b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/text.js @@ -0,0 +1,375 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Tokenizer = require("../tokenizer").Tokenizer; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var unicode = require("../unicode"); +var lang = require("../lib/lang"); +var TokenIterator = require("../token_iterator").TokenIterator; +var Range = require("../range").Range; + +var Mode = function() { + this.HighlightRules = TextHighlightRules; +}; + +(function() { + this.$defaultBehaviour = new CstyleBehaviour(); + + this.tokenRe = new RegExp("^[" + unicode.wordChars + "\\$_]+", "g"); + + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "\\$_]|\\s])+", "g"); + + this.getTokenizer = function() { + if (!this.$tokenizer) { + this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); + this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); + } + return this.$tokenizer; + }; + + this.lineCommentStart = ""; + this.blockComment = ""; + + this.toggleCommentLines = function(state, session, startRow, endRow) { + var doc = session.doc; + + var ignoreBlankLines = true; + var shouldRemove = true; + var minIndent = Infinity; + var tabSize = session.getTabSize(); + var insertAtTabStop = false; + + if (!this.lineCommentStart) { + if (!this.blockComment) + return false; + var lineCommentStart = this.blockComment.start; + var lineCommentEnd = this.blockComment.end; + var regexpStart = new RegExp("^(\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")"); + var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\s*$"); + + var comment = function(line, i) { + if (testRemove(line, i)) + return; + if (!ignoreBlankLines || /\S/.test(line)) { + doc.insertInLine({row: i, column: line.length}, lineCommentEnd); + doc.insertInLine({row: i, column: minIndent}, lineCommentStart); + } + }; + + var uncomment = function(line, i) { + var m; + if (m = line.match(regexpEnd)) + doc.removeInLine(i, line.length - m[0].length, line.length); + if (m = line.match(regexpStart)) + doc.removeInLine(i, m[1].length, m[0].length); + }; + + var testRemove = function(line, row) { + if (regexpStart.test(line)) + return true; + var tokens = session.getTokens(row); + for (var i = 0; i < tokens.length; i++) { + if (tokens[i].type === "comment") + return true; + } + }; + } else { + if (Array.isArray(this.lineCommentStart)) { + var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|"); + var lineCommentStart = this.lineCommentStart[0]; + } else { + var regexpStart = lang.escapeRegExp(this.lineCommentStart); + var lineCommentStart = this.lineCommentStart; + } + regexpStart = new RegExp("^(\\s*)(?:" + regexpStart + ") ?"); + + insertAtTabStop = session.getUseSoftTabs(); + + var uncomment = function(line, i) { + var m = line.match(regexpStart); + if (!m) return; + var start = m[1].length, end = m[0].length; + if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ") + end--; + doc.removeInLine(i, start, end); + }; + var commentWithSpace = lineCommentStart + " "; + var comment = function(line, i) { + if (!ignoreBlankLines || /\S/.test(line)) { + if (shouldInsertSpace(line, minIndent, minIndent)) + doc.insertInLine({row: i, column: minIndent}, commentWithSpace); + else + doc.insertInLine({row: i, column: minIndent}, lineCommentStart); + } + }; + var testRemove = function(line, i) { + return regexpStart.test(line); + }; + + var shouldInsertSpace = function(line, before, after) { + var spaces = 0; + while (before-- && line.charAt(before) == " ") + spaces++; + if (spaces % tabSize != 0) + return false; + var spaces = 0; + while (line.charAt(after++) == " ") + spaces++; + if (tabSize > 2) + return spaces % tabSize != tabSize - 1; + else + return spaces % tabSize == 0; + }; + } + + function iter(fun) { + for (var i = startRow; i <= endRow; i++) + fun(doc.getLine(i), i); + } + + + var minEmptyLength = Infinity; + iter(function(line, i) { + var indent = line.search(/\S/); + if (indent !== -1) { + if (indent < minIndent) + minIndent = indent; + if (shouldRemove && !testRemove(line, i)) + shouldRemove = false; + } else if (minEmptyLength > line.length) { + minEmptyLength = line.length; + } + }); + + if (minIndent == Infinity) { + minIndent = minEmptyLength; + ignoreBlankLines = false; + shouldRemove = false; + } + + if (insertAtTabStop && minIndent % tabSize != 0) + minIndent = Math.floor(minIndent / tabSize) * tabSize; + + iter(shouldRemove ? uncomment : comment); + }; + + this.toggleBlockComment = function(state, session, range, cursor) { + var comment = this.blockComment; + if (!comment) + return; + if (!comment.start && comment[0]) + comment = comment[0]; + + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + + var sel = session.selection; + var initialRange = session.selection.toOrientedRange(); + var startRow, colDiff; + + if (token && /comment/.test(token.type)) { + var startRange, endRange; + while (token && /comment/.test(token.type)) { + var i = token.value.indexOf(comment.start); + if (i != -1) { + var row = iterator.getCurrentTokenRow(); + var column = iterator.getCurrentTokenColumn() + i; + startRange = new Range(row, column, row, column + comment.start.length); + break; + } + token = iterator.stepBackward(); + } + + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + while (token && /comment/.test(token.type)) { + var i = token.value.indexOf(comment.end); + if (i != -1) { + var row = iterator.getCurrentTokenRow(); + var column = iterator.getCurrentTokenColumn() + i; + endRange = new Range(row, column, row, column + comment.end.length); + break; + } + token = iterator.stepForward(); + } + if (endRange) + session.remove(endRange); + if (startRange) { + session.remove(startRange); + startRow = startRange.start.row; + colDiff = -comment.start.length; + } + } else { + colDiff = comment.start.length; + startRow = range.start.row; + session.insert(range.end, comment.end); + session.insert(range.start, comment.start); + } + // todo: selection should have ended up in the right place automatically! + if (initialRange.start.row == startRow) + initialRange.start.column += colDiff; + if (initialRange.end.row == startRow) + initialRange.end.column += colDiff; + session.selection.fromOrientedRange(initialRange); + }; + + this.getNextLineIndent = function(state, line, tab) { + return this.$getIndent(line); + }; + + this.checkOutdent = function(state, line, input) { + return false; + }; + + this.autoOutdent = function(state, doc, row) { + }; + + this.$getIndent = function(line) { + return line.match(/^\s*/)[0]; + }; + + this.createWorker = function(session) { + return null; + }; + + this.createModeDelegates = function (mapping) { + this.$embeds = []; + this.$modes = {}; + for (var i in mapping) { + if (mapping[i]) { + this.$embeds.push(i); + this.$modes[i] = new mapping[i](); + } + } + + var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", + "checkOutdent", "autoOutdent", "transformAction", "getCompletions"]; + + for (var i = 0; i < delegations.length; i++) { + (function(scope) { + var functionName = delegations[i]; + var defaultHandler = scope[functionName]; + scope[delegations[i]] = function() { + return this.$delegator(functionName, arguments, defaultHandler); + }; + }(this)); + } + }; + + this.$delegator = function(method, args, defaultHandler) { + var state = args[0]; + if (typeof state != "string") + state = state[0]; + for (var i = 0; i < this.$embeds.length; i++) { + if (!this.$modes[this.$embeds[i]]) continue; + + var split = state.split(this.$embeds[i]); + if (!split[0] && split[1]) { + args[0] = split[1]; + var mode = this.$modes[this.$embeds[i]]; + return mode[method].apply(mode, args); + } + } + var ret = defaultHandler.apply(this, args); + return defaultHandler ? ret : undefined; + }; + + this.transformAction = function(state, action, editor, session, param) { + if (this.$behaviour) { + var behaviours = this.$behaviour.getBehaviours(); + for (var key in behaviours) { + if (behaviours[key][action]) { + var ret = behaviours[key][action].apply(this, arguments); + if (ret) { + return ret; + } + } + } + } + }; + + this.getKeywords = function(append) { + // this is for autocompletion to pick up regexp'ed keywords + if (!this.completionKeywords) { + var rules = this.$tokenizer.rules; + var completionKeywords = []; + for (var rule in rules) { + var ruleItr = rules[rule]; + for (var r = 0, l = ruleItr.length; r < l; r++) { + if (typeof ruleItr[r].token === "string") { + if (/keyword|support|storage/.test(ruleItr[r].token)) + completionKeywords.push(ruleItr[r].regex); + } + else if (typeof ruleItr[r].token === "object") { + for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { + if (/keyword|support|storage/.test(ruleItr[r].token[a])) { + // drop surrounding parens + var rule = ruleItr[r].regex.match(/\(.+?\)/g)[a]; + completionKeywords.push(rule.substr(1, rule.length - 2)); + } + } + } + } + } + this.completionKeywords = completionKeywords; + } + // this is for highlighting embed rules, like HAML/Ruby or Obj-C/C + if (!append) + return this.$keywordList; + return completionKeywords.concat(this.$keywordList || []); + }; + + this.$createKeywordList = function() { + if (!this.$highlightRules) + this.getTokenizer(); + return this.$keywordList = this.$highlightRules.$keywordList || []; + }; + + this.getCompletions = function(state, session, pos, prefix) { + var keywords = this.$keywordList || this.$createKeywordList(); + return keywords.map(function(word) { + return { + name: word, + value: word, + score: 0, + meta: "keyword" + }; + }); + }; + + this.$id = "ace/mode/text"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/text_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/text_highlight_rules.js new file mode 100644 index 00000000..eaace2cc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/text_highlight_rules.js @@ -0,0 +1,239 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var lang = require("../lib/lang"); + +var TextHighlightRules = function() { + + // regexp must not have capturing parentheses + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [{ + token : "empty_line", + regex : '^$' + }, { + defaultToken : "text" + }] + }; +}; + +(function() { + + this.addRules = function(rules, prefix) { + if (!prefix) { + for (var key in rules) + this.$rules[key] = rules[key]; + return; + } + for (var key in rules) { + var state = rules[key]; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + if (rule.next || rule.onMatch) { + if (typeof rule.next == "string") { + if (rule.next.indexOf(prefix) !== 0) + rule.next = prefix + rule.next; + } + if (rule.nextState && rule.nextState.indexOf(prefix) !== 0) + rule.nextState = prefix + rule.nextState; + } + } + this.$rules[prefix + key] = state; + } + }; + + this.getRules = function() { + return this.$rules; + }; + + this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) { + var embedRules = typeof HighlightRules == "function" + ? new HighlightRules().getRules() + : HighlightRules; + if (states) { + for (var i = 0; i < states.length; i++) + states[i] = prefix + states[i]; + } else { + states = []; + for (var key in embedRules) + states.push(prefix + key); + } + + this.addRules(embedRules, prefix); + + if (escapeRules) { + var addRules = Array.prototype[append ? "push" : "unshift"]; + for (var i = 0; i < states.length; i++) + addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules)); + } + + if (!this.$embeds) + this.$embeds = []; + this.$embeds.push(prefix); + }; + + this.getEmbeds = function() { + return this.$embeds; + }; + + var pushState = function(currentState, stack) { + if (currentState != "start" || stack.length) + stack.unshift(this.nextState, currentState); + return this.nextState; + }; + var popState = function(currentState, stack) { + // if (stack[0] === currentState) + stack.shift(); + return stack.shift() || "start"; + }; + + this.normalizeRules = function() { + var id = 0; + var rules = this.$rules; + function processState(key) { + var state = rules[key]; + state.processed = true; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + var toInsert = null; + if (Array.isArray(rule)) { + toInsert = rule; + rule = {}; + } + if (!rule.regex && rule.start) { + rule.regex = rule.start; + if (!rule.next) + rule.next = []; + rule.next.push({ + defaultToken: rule.token + }, { + token: rule.token + ".end", + regex: rule.end || rule.start, + next: "pop" + }); + rule.token = rule.token + ".start"; + rule.push = true; + } + var next = rule.next || rule.push; + if (next && Array.isArray(next)) { + var stateName = rule.stateName; + if (!stateName) { + stateName = rule.token; + if (typeof stateName != "string") + stateName = stateName[0] || ""; + if (rules[stateName]) + stateName += id++; + } + rules[stateName] = next; + rule.next = stateName; + processState(stateName); + } else if (next == "pop") { + rule.next = popState; + } + + if (rule.push) { + rule.nextState = rule.next || rule.push; + rule.next = pushState; + delete rule.push; + } + + if (rule.rules) { + for (var r in rule.rules) { + if (rules[r]) { + if (rules[r].push) + rules[r].push.apply(rules[r], rule.rules[r]); + } else { + rules[r] = rule.rules[r]; + } + } + } + var includeName = typeof rule == "string" ? rule : rule.include; + if (includeName) { + if (Array.isArray(includeName)) + toInsert = includeName.map(function(x) { return rules[x]; }); + else + toInsert = rules[includeName]; + } + + if (toInsert) { + var args = [i, 1].concat(toInsert); + if (rule.noEscape) + args = args.filter(function(x) {return !x.next;}); + state.splice.apply(state, args); + // skip included rules since they are already processed + //i += args.length - 3; + i--; + } + + if (rule.keywordMap) { + rule.token = this.createKeywordMapper( + rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive + ); + delete rule.defaultToken; + } + } + } + Object.keys(rules).forEach(processState, this); + }; + + this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) { + var keywords = Object.create(null); + Object.keys(map).forEach(function(className) { + var a = map[className]; + if (ignoreCase) + a = a.toLowerCase(); + var list = a.split(splitChar || "|"); + for (var i = list.length; i--; ) + keywords[list[i]] = className; + }); + // in old versions of opera keywords["__proto__"] sets prototype + // even on objects with __proto__=null + if (Object.getPrototypeOf(keywords)) { + keywords.__proto__ = null; + } + this.$keywordList = Object.keys(keywords); + map = null; + return ignoreCase + ? function(value) {return keywords[value.toLowerCase()] || defaultToken; } + : function(value) {return keywords[value] || defaultToken; }; + }; + + this.getKeywords = function() { + return this.$keywords; + }; + +}).call(TextHighlightRules.prototype); + +exports.TextHighlightRules = TextHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/text_test.js b/plugins/node_modules/ace/lib/ace/mode/text_test.js new file mode 100644 index 00000000..6d3d5db3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/text_test.js @@ -0,0 +1,64 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var TextMode = require("./text").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new TextMode(); + }, + + "test: toggle comment lines should not do anything" : function() { + var session = new EditSession([" abc", "cde", "fg"]); + + this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal([" abc", "cde", "fg"].join("\n"), session.toString()); + }, + + + "test: lines should be indented" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", " abc", " ")); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/textile.js b/plugins/node_modules/ace/lib/ace/mode/textile.js new file mode 100644 index 00000000..8419c409 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/textile.js @@ -0,0 +1,68 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextileHighlightRules = require("./textile_highlight_rules").TextileHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + +var Mode = function() { + this.HighlightRules = TextileHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.type = "text"; + this.getNextLineIndent = function(state, line, tab) { + if (state == "intag") + return tab; + + return ""; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.$id = "ace/mode/textile"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/textile_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/textile_highlight_rules.js new file mode 100644 index 00000000..5edb8453 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/textile_highlight_rules.js @@ -0,0 +1,93 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var TextileHighlightRules = function() { + this.$rules = { + "start" : [ + { + token : function(value) { + if (value.charAt(0) == "h") + return "markup.heading." + value.charAt(1); + else + return "markup.heading"; + }, + regex : "h1|h2|h3|h4|h5|h6|bq|p|bc|pre", + next : "blocktag" + }, + { + token : "keyword", + regex : "[\\*]+|[#]+" + }, + { + token : "text", + regex : ".+" + } + ], + "blocktag" : [ + { + token : "keyword", + regex : "\\. ", + next : "start" + }, + { + token : "keyword", + regex : "\\(", + next : "blocktagproperties" + } + ], + "blocktagproperties" : [ + { + token : "keyword", + regex : "\\)", + next : "blocktag" + }, + { + token : "string", + regex : "[a-zA-Z0-9\\-_]+" + }, + { + token : "keyword", + regex : "#" + } + ] + }; +}; + +oop.inherits(TextileHighlightRules, TextHighlightRules); + +exports.TextileHighlightRules = TextileHighlightRules; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/toml.js b/plugins/node_modules/ace/lib/ace/mode/toml.js new file mode 100644 index 00000000..1c4148df --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/toml.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Garen J. Torikian + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TomlHighlightRules = require("./toml_highlight_rules").TomlHighlightRules; +var FoldMode = require("./folding/ini").FoldMode; + +var Mode = function() { + this.HighlightRules = TomlHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "#"; + this.$id = "ace/mode/toml"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/toml_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/toml_highlight_rules.js new file mode 100644 index 00000000..272be500 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/toml_highlight_rules.js @@ -0,0 +1,107 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Garen J. Torikian + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var TomlHighlightRules = function() { + var keywordMapper = this.createKeywordMapper({ + "constant.language.boolean": "true|false" + }, "identifier"); + + var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; + + this.$rules = { + "start": [ + { + token: "comment.toml", + regex: /#.*$/ + }, + { + token : "string", + regex : '"(?=.)', + next : "qqstring" + }, + { + token: ["variable.keygroup.toml"], + regex: "(?:^\\s*)(\\[\\[([^\\]]+)\\]\\])" + }, + { + token: ["variable.keygroup.toml"], + regex: "(?:^\\s*)(\\[([^\\]]+)\\])" + }, + { + token : keywordMapper, + regex : identifierRe + }, + { + token : "support.date.toml", + regex: "\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)" + }, + { + token: "constant.numeric.toml", + regex: "-?\\d+(\\.?\\d+)?" + } + ], + "qqstring" : [ + { + token : "string", + regex : "\\\\$", + next : "qqstring" + }, + { + token : "constant.language.escape", + regex : '\\\\[0tnr"\\\\]' + }, + { + token : "string", + regex : '"|$', + next : "start" + }, + { + defaultToken: "string" + } + ] + }; + +}; + +oop.inherits(TomlHighlightRules, TextHighlightRules); + +exports.TomlHighlightRules = TomlHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/tsx.js b/plugins/node_modules/ace/lib/ace/mode/tsx.js new file mode 100644 index 00000000..06564e1a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/tsx.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var tsMode = require("./typescript").Mode; + +var Mode = function() { + tsMode.call(this); + this.$highlightRuleConfig = {jsx: true}; +}; +oop.inherits(Mode, tsMode); + +(function() { + this.$id = "ace/mode/tsx"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/turtle.js b/plugins/node_modules/ace/lib/ace/mode/turtle.js new file mode 100644 index 00000000..c41e1303 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/turtle.js @@ -0,0 +1,57 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TurtleHighlightRules = require("./turtle_highlight_rules").TurtleHighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = TurtleHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + // this.lineCommentStart = ""#""; + // Extra logic goes here. + this.$id = "ace/mode/turtle"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/turtle_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/turtle_highlight_rules.js new file mode 100644 index 00000000..7d64161d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/turtle_highlight_rules.js @@ -0,0 +1,166 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from turtle.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var TurtleHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + start: [{ + include: "#comments" + }, { + include: "#strings" + }, { + include: "#base-prefix-declarations" + }, { + include: "#string-language-suffixes" + }, { + include: "#string-datatype-suffixes" + }, { + include: "#relative-urls" + }, { + include: "#xml-schema-types" + }, { + include: "#rdf-schema-types" + }, { + include: "#owl-types" + }, { + include: "#qnames" + }, { + include: "#punctuation-operators" + }], + "#base-prefix-declarations": [{ + token: "keyword.other.prefix.turtle", + regex: /@(?:base|prefix)/ + }], + "#comments": [{ + token: [ + "punctuation.definition.comment.turtle", + "comment.line.hash.turtle" + ], + regex: /(#)(.*$)/ + }], + "#owl-types": [{ + token: "support.type.datatype.owl.turtle", + regex: /owl:[a-zA-Z]+/ + }], + "#punctuation-operators": [{ + token: "keyword.operator.punctuation.turtle", + regex: /;|,|\.|\(|\)|\[|\]/ + }], + "#qnames": [{ + token: "entity.name.other.qname.turtle", + regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ + }], + "#rdf-schema-types": [{ + token: "support.type.datatype.rdf.schema.turtle", + regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ + }], + "#relative-urls": [{ + token: "string.quoted.other.relative.url.turtle", + regex: /</, + push: [{ + token: "string.quoted.other.relative.url.turtle", + regex: />/, + next: "pop" + }, { + defaultToken: "string.quoted.other.relative.url.turtle" + }] + }], + "#string-datatype-suffixes": [{ + token: "keyword.operator.datatype.suffix.turtle", + regex: /\^\^/ + }], + "#string-language-suffixes": [{ + token: [ + "keyword.operator.language.suffix.turtle", + "constant.language.suffix.turtle" + ], + regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ + }], + "#strings": [{ + token: "string.quoted.triple.turtle", + regex: /"""/, + push: [{ + token: "string.quoted.triple.turtle", + regex: /"""/, + next: "pop" + }, { + defaultToken: "string.quoted.triple.turtle" + }] + }, { + token: "string.quoted.double.turtle", + regex: /"/, + push: [{ + token: "string.quoted.double.turtle", + regex: /"/, + next: "pop" + }, { + token: "invalid.string.newline", + regex: /$/ + }, { + token: "constant.character.escape.turtle", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.turtle" + }] + }], + "#xml-schema-types": [{ + token: "support.type.datatype.xml.schema.turtle", + regex: /xsd?:[a-z][a-zA-Z]+/ + }] + }; + + this.normalizeRules(); +}; + +TurtleHighlightRules.metaData = { + fileTypes: ["ttl", "nt"], + name: "Turtle", + scopeName: "source.turtle" +}; + + +oop.inherits(TurtleHighlightRules, TextHighlightRules); + +exports.TurtleHighlightRules = TurtleHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/twig.js b/plugins/node_modules/ace/lib/ace/mode/twig.js new file mode 100644 index 00000000..e8920b9e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/twig.js @@ -0,0 +1,81 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var TwigHighlightRules = require("./twig_highlight_rules").TwigHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = TwigHighlightRules; + this.$outdent = new MatchingBraceOutdent(); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + this.blockComment = {start: "{#", end: "#}"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/twig"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/twig_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/twig_highlight_rules.js new file mode 100644 index 00000000..192014f9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/twig_highlight_rules.js @@ -0,0 +1,166 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var TwigHighlightRules = function() { + // inherit from html + HtmlHighlightRules.call(this); + + var tags = "autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim"; + tags = tags + "|end" + tags.replace(/\|/g, "|end"); + var filters = "abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode"; + var functions = "attribute|constant|cycle|date|dump|parent|random|range|template_from_string"; + var tests = "constant|divisibleby|sameas|defined|empty|even|iterable|odd"; + var constants = "null|none|true|false"; + var operators = "b-and|b-xor|b-or|in|is|and|or|not"; + + var keywordMapper = this.createKeywordMapper({ + "keyword.control.twig": tags, + "support.function.twig": [filters, functions, tests].join("|"), + "keyword.operator.twig": operators, + "constant.language.twig": constants + }, "identifier"); + + // add twig start tags to the HTML start tags + for (var rule in this.$rules) { + this.$rules[rule].unshift({ + token : "variable.other.readwrite.local.twig", + regex : "\\{\\{-?", + push : "twig-start" + }, { + token : "meta.tag.twig", + regex : "\\{%-?", + push : "twig-start" + }, { + token : "comment.block.twig", + regex : "\\{#-?", + push : "twig-comment" + }); + } + + // add twig closing comment to HTML comments + this.$rules["twig-comment"] = [{ + token : "comment.block.twig", + regex : ".*-?#\\}", + next : "pop" + }]; + + this.$rules["twig-start"] = [{ + token : "variable.other.readwrite.local.twig", + regex : "-?\\}\\}", + next : "pop" + }, { + token : "meta.tag.twig", + regex : "-?%\\}", + next : "pop" + }, { + token : "string", + regex : "'", + next : "twig-qstring" + }, { + token : "string", + regex : '"', + next : "twig-qqstring" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator.assignment", + regex : "=|~" + }, { + token : "keyword.operator.comparison", + regex : "==|!=|<|>|>=|<=|===" + }, { + token : "keyword.operator.arithmetic", + regex : "\\+|-|/|%|//|\\*|\\*\\*" + }, { + token : "keyword.operator.other", + regex : "\\.\\.|\\|" + }, { + token : "punctuation.operator", + regex : /\?|:|,|;|\./ + }, { + token : "paren.lparen", + regex : /[\[\({]/ + }, { + token : "paren.rparen", + regex : /[\])}]/ + }, { + token : "text", + regex : "\\s+" + } ]; + + this.$rules["twig-qqstring"] = [{ + token : "constant.language.escape", + regex : /\\[\\"$#ntr]|#{[^"}]*}/ + }, { + token : "string", + regex : '"', + next : "twig-start" + }, { + defaultToken : "string" + } + ]; + + this.$rules["twig-qstring"] = [{ + token : "constant.language.escape", + regex : /\\[\\'ntr]}/ + }, { + token : "string", + regex : "'", + next : "twig-start" + }, { + defaultToken : "string" + } + ]; + + this.normalizeRules(); +}; + +oop.inherits(TwigHighlightRules, TextHighlightRules); + +exports.TwigHighlightRules = TwigHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/typescript.js b/plugins/node_modules/ace/lib/ace/mode/typescript.js new file mode 100644 index 00000000..06020f6d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/typescript.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var jsMode = require("./javascript").Mode; +var TypeScriptHighlightRules = require("./typescript_highlight_rules").TypeScriptHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + +var Mode = function() { + this.HighlightRules = TypeScriptHighlightRules; + + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, jsMode); + +(function() { + this.createWorker = function(session) { + return null; + }; + this.$id = "ace/mode/typescript"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/typescript_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/typescript_highlight_rules.js new file mode 100644 index 00000000..82c9fb4e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/typescript_highlight_rules.js @@ -0,0 +1,98 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * Garen J. Torikian <gjtorikian AT gmail DOT com> + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 21e323af-f665-4161-96e7-5087d262557e) */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; + +var TypeScriptHighlightRules = function(options) { + + var tsRules = [ + // Match stuff like: module name {...} + { + token: ["keyword.operator.ts", "text", "variable.parameter.function.ts", "text"], + regex: "\\b(module)(\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*\\{)" + }, + // Match stuff like: super(argument, list) + { + token: ["storage.type.variable.ts", "text", "keyword.other.ts", "text"], + regex: "(super)(\\s*\\()([a-zA-Z0-9,_?.$\\s]+\\s*)(\\))" + }, + // Match stuff like: function() {...} + { + token: ["entity.name.function.ts","paren.lparen", "paren.rparen"], + regex: "([a-zA-Z_?.$][\\w?.$]*)(\\()(\\))" + }, + // Match stuff like: (function: return type) + { + token: ["variable.parameter.function.ts", "text", "variable.parameter.function.ts"], + regex: "([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*:\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)" + }, + { + token: ["keyword.operator.ts"], + regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\b)" + }, + { + token: ["storage.type.variable.ts"], + regex: "(?:\\b(this\\.|string\\b|bool\\b|number)\\b)" + }, + { + token: ["keyword.operator.ts", "storage.type.variable.ts", "keyword.operator.ts", "storage.type.variable.ts"], + regex: "(class)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)(extends)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)?" + }, + { + token: "keyword", + regex: "(?:super|export|class|extends|import)\\b" + } + ]; + + var JSRules = new JavaScriptHighlightRules({jsx: (options && options.jsx) == true}).getRules(); + + JSRules.start = tsRules.concat(JSRules.start); + this.$rules = JSRules; +}; + +oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules); + +exports.TypeScriptHighlightRules = TypeScriptHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/vala.js b/plugins/node_modules/ace/lib/ace/mode/vala.js new file mode 100644 index 00000000..f3950b8b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/vala.js @@ -0,0 +1,105 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var Tokenizer = require("../tokenizer").Tokenizer; +var ValaHighlightRules = require("./vala_highlight_rules").ValaHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; + +var Mode = function() { + this.HighlightRules = ValaHighlightRules; + + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + // Extra logic goes here. + this.$id = "ace/mode/vala"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/vala_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/vala_highlight_rules.js new file mode 100644 index 00000000..de9980c9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/vala_highlight_rules.js @@ -0,0 +1,457 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from https://raw.githubusercontent.com/technosophos/Vala-TMBundle/master/Syntaxes/Vala.tmLanguage (uuid: ) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var ValaHighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { start: + [ { token: + [ 'meta.using.vala', + 'keyword.other.using.vala', + 'meta.using.vala', + 'storage.modifier.using.vala', + 'meta.using.vala', + 'punctuation.terminator.vala' ], + regex: '^(\\s*)(using)\\b(?:(\\s*)([^ ;$]+)(\\s*)((?:;)?))?' }, + { include: '#code' } ], + '#all-types': + [ { include: '#primitive-arrays' }, + { include: '#primitive-types' }, + { include: '#object-types' } ], + '#annotations': + [ { token: + [ 'storage.type.annotation.vala', + 'punctuation.definition.annotation-arguments.begin.vala' ], + regex: '(@[^ (]+)(\\()', + push: + [ { token: 'punctuation.definition.annotation-arguments.end.vala', + regex: '\\)', + next: 'pop' }, + { token: + [ 'constant.other.key.vala', + 'text', + 'keyword.operator.assignment.vala' ], + regex: '(\\w*)(\\s*)(=)' }, + { include: '#code' }, + { token: 'punctuation.seperator.property.vala', regex: ',' }, + { defaultToken: 'meta.declaration.annotation.vala' } ] }, + { token: 'storage.type.annotation.vala', regex: '@\\w*' } ], + '#anonymous-classes-and-new': + [ { token: 'keyword.control.new.vala', + regex: '\\bnew\\b', + push_disabled: + [ { token: 'text', + regex: '(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)', + next: 'pop' }, + { token: [ 'storage.type.vala', 'text' ], + regex: '(\\w+)(\\s*)(?=\\[)', + push: + [ { token: 'text', regex: '}|(?=;|\\))', next: 'pop' }, + { token: 'text', + regex: '\\[', + push: + [ { token: 'text', regex: '\\]', next: 'pop' }, + { include: '#code' } ] }, + { token: 'text', + regex: '{', + push: + [ { token: 'text', regex: '(?=})', next: 'pop' }, + { include: '#code' } ] } ] }, + { token: 'text', + regex: '(?=\\w.*\\()', + push: + [ { token: 'text', + regex: '(?<=\\))', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<=\\))', + next: 'pop' }, + { include: '#object-types' }, + { token: 'text', + regex: '\\(', + push: + [ { token: 'text', regex: '\\)', next: 'pop' }, + { include: '#code' } ] } ] }, + { token: 'meta.inner-class.vala', + regex: '{', + push: + [ { token: 'meta.inner-class.vala', regex: '}', next: 'pop' }, + { include: '#class-body' }, + { defaultToken: 'meta.inner-class.vala' } ] } ] } ], + '#assertions': + [ { token: + [ 'keyword.control.assert.vala', + 'meta.declaration.assertion.vala' ], + regex: '\\b(assert|requires|ensures)(\\s)', + push: + [ { token: 'meta.declaration.assertion.vala', + regex: '$', + next: 'pop' }, + { token: 'keyword.operator.assert.expression-seperator.vala', + regex: ':' }, + { include: '#code' }, + { defaultToken: 'meta.declaration.assertion.vala' } ] } ], + '#class': + [ { token: 'meta.class.vala', + regex: '(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)', + push: + [ { token: 'paren.vala', + regex: '}', + next: 'pop' }, + { include: '#storage-modifiers' }, + { include: '#comments' }, + { token: + [ 'storage.modifier.vala', + 'meta.class.identifier.vala', + 'entity.name.type.class.vala' ], + regex: '(class|(?:@)?interface|enum|struct|namespace)(\\s+)([\\w\\.]+)' }, + { token: 'storage.modifier.extends.vala', + regex: ':', + push: + [ { token: 'meta.definition.class.inherited.classes.vala', + regex: '(?={|,)', + next: 'pop' }, + { include: '#object-types-inherited' }, + { include: '#comments' }, + { defaultToken: 'meta.definition.class.inherited.classes.vala' } ] }, + { token: + [ 'storage.modifier.implements.vala', + 'meta.definition.class.implemented.interfaces.vala' ], + regex: '(,)(\\s)', + push: + [ { token: 'meta.definition.class.implemented.interfaces.vala', + regex: '(?=\\{)', + next: 'pop' }, + { include: '#object-types-inherited' }, + { include: '#comments' }, + { defaultToken: 'meta.definition.class.implemented.interfaces.vala' } ] }, + { token: 'paren.vala', + regex: '{', + push: + [ { token: 'paren.vala', regex: '(?=})', next: 'pop' }, + { include: '#class-body' }, + { defaultToken: 'meta.class.body.vala' } ] }, + { defaultToken: 'meta.class.vala' } ], + comment: 'attempting to put namespace in here.' } ], + '#class-body': + [ { include: '#comments' }, + { include: '#class' }, + { include: '#enums' }, + { include: '#methods' }, + { include: '#annotations' }, + { include: '#storage-modifiers' }, + { include: '#code' } ], + '#code': + [ { include: '#comments' }, + { include: '#class' }, + { token: 'text', + regex: '{', + push: + [ { token: 'text', regex: '}', next: 'pop' }, + { include: '#code' } ] }, + { include: '#assertions' }, + { include: '#parens' }, + { include: '#constants-and-special-vars' }, + { include: '#anonymous-classes-and-new' }, + { include: '#keywords' }, + { include: '#storage-modifiers' }, + { include: '#strings' }, + { include: '#all-types' } ], + '#comments': + [ { token: 'punctuation.definition.comment.vala', + regex: '/\\*\\*/' }, + { include: 'text.html.javadoc' }, + { include: '#comments-inline' } ], + '#comments-inline': + [ { token: 'punctuation.definition.comment.vala', + regex: '/\\*', + push: + [ { token: 'punctuation.definition.comment.vala', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.vala' } ] }, + { token: + [ 'text', + 'punctuation.definition.comment.vala', + 'comment.line.double-slash.vala' ], + regex: '(\\s*)(//)(.*$)' } ], + '#constants-and-special-vars': + [ { token: 'constant.language.vala', + regex: '\\b(?:true|false|null)\\b' }, + { token: 'variable.language.vala', + regex: '\\b(?:this|base)\\b' }, + { token: 'constant.numeric.vala', + regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b' }, + { token: [ 'keyword.operator.dereference.vala', 'constant.other.vala' ], + regex: '((?:\\.)?)\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b' } ], + '#enums': + [ { token: 'text', + regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', + push: + [ { token: 'text', regex: '(?=;|})', next: 'pop' }, + { token: 'constant.other.enum.vala', + regex: '\\w+', + push: + [ { token: 'meta.enum.vala', regex: '(?=,|;|})', next: 'pop' }, + { include: '#parens' }, + { token: 'text', + regex: '{', + push: + [ { token: 'text', regex: '}', next: 'pop' }, + { include: '#class-body' } ] }, + { defaultToken: 'meta.enum.vala' } ] } ] } ], + '#keywords': + [ { token: 'keyword.control.catch-exception.vala', + regex: '\\b(?:try|catch|finally|throw)\\b' }, + { token: 'keyword.control.vala', regex: '\\?|:|\\?\\?' }, + { token: 'keyword.control.vala', + regex: '\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b' }, + { token: 'keyword.operator.vala', + regex: '\\b(?:typeof|is|as)\\b' }, + { token: 'keyword.operator.comparison.vala', + regex: '==|!=|<=|>=|<>|<|>' }, + { token: 'keyword.operator.assignment.vala', regex: '=' }, + { token: 'keyword.operator.increment-decrement.vala', + regex: '\\-\\-|\\+\\+' }, + { token: 'keyword.operator.arithmetic.vala', + regex: '\\-|\\+|\\*|\\/|%' }, + { token: 'keyword.operator.logical.vala', regex: '!|&&|\\|\\|' }, + { token: 'keyword.operator.dereference.vala', + regex: '\\.(?=\\S)', + originalRegex: '(?<=\\S)\\.(?=\\S)' }, + { token: 'punctuation.terminator.vala', regex: ';' }, + { token: 'keyword.operator.ownership', regex: 'owned|unowned' } ], + '#methods': + [ { token: 'meta.method.vala', + regex: '(?!new)(?=\\w.*\\s+)(?=[^=]+\\()', + push: + [ { token: 'paren.vala', regex: '}|(?=;)', next: 'pop' }, + { include: '#storage-modifiers' }, + { token: [ 'entity.name.function.vala', 'meta.method.identifier.vala' ], + regex: '([\\~\\w\\.]+)(\\s*\\()', + push: + [ { token: 'meta.method.identifier.vala', + regex: '\\)', + next: 'pop' }, + { include: '#parameters' }, + { defaultToken: 'meta.method.identifier.vala' } ] }, + { token: 'meta.method.return-type.vala', + regex: '(?=\\w.*\\s+\\w+\\s*\\()', + push: + [ { token: 'meta.method.return-type.vala', + regex: '(?=\\w+\\s*\\()', + next: 'pop' }, + { include: '#all-types' }, + { defaultToken: 'meta.method.return-type.vala' } ] }, + { include: '#throws' }, + { token: 'paren.vala', + regex: '{', + push: + [ { token: 'paren.vala', regex: '(?=})', next: 'pop' }, + { include: '#code' }, + { defaultToken: 'meta.method.body.vala' } ] }, + { defaultToken: 'meta.method.vala' } ] } ], + '#namespace': + [ { token: 'text', + regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', + push: + [ { token: 'text', regex: '(?=;|})', next: 'pop' }, + { token: 'constant.other.namespace.vala', + regex: '\\w+', + push: + [ { token: 'meta.namespace.vala', regex: '(?=,|;|})', next: 'pop' }, + { include: '#parens' }, + { token: 'text', + regex: '{', + push: + [ { token: 'text', regex: '}', next: 'pop' }, + { include: '#code' } ] }, + { defaultToken: 'meta.namespace.vala' } ] } ], + comment: 'This is not quite right. See the class grammar right now' } ], + '#object-types': + [ { token: 'storage.type.generic.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', + push: + [ { token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,\\?<\\[()\\]]', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '>|[^\\w\\s,\\?<\\[(?:[,]+)\\]]', + next: 'pop' }, + { include: '#object-types' }, + { token: 'storage.type.generic.vala', + regex: '<', + push: + [ { token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,\\[\\]<]', + next: 'pop' }, + { defaultToken: 'storage.type.generic.vala' } ], + comment: 'This is just to support <>\'s with no actual type prefix' }, + { defaultToken: 'storage.type.generic.vala' } ] }, + { token: 'storage.type.object.array.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)', + push: + [ { token: 'storage.type.object.array.vala', + regex: '(?=[^\\]\\s])', + next: 'pop' }, + { token: 'text', + regex: '\\[', + push: + [ { token: 'text', regex: '\\]', next: 'pop' }, + { include: '#code' } ] }, + { defaultToken: 'storage.type.object.array.vala' } ] }, + { token: + [ 'storage.type.vala', + 'keyword.operator.dereference.vala', + 'storage.type.vala' ], + regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)' } ], + '#object-types-inherited': + [ { token: 'entity.other.inherited-class.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', + push: + [ { token: 'entity.other.inherited-class.vala', + regex: '>|[^\\w\\s,<]', + next: 'pop' }, + { include: '#object-types' }, + { token: 'storage.type.generic.vala', + regex: '<', + push: + [ { token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,<]', + next: 'pop' }, + { defaultToken: 'storage.type.generic.vala' } ], + comment: 'This is just to support <>\'s with no actual type prefix' }, + { defaultToken: 'entity.other.inherited-class.vala' } ] }, + { token: + [ 'entity.other.inherited-class.vala', + 'keyword.operator.dereference.vala', + 'entity.other.inherited-class.vala' ], + regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)' } ], + '#parameters': + [ { token: 'storage.modifier.vala', regex: 'final' }, + { include: '#primitive-arrays' }, + { include: '#primitive-types' }, + { include: '#object-types' }, + { token: 'variable.parameter.vala', regex: '\\w+' } ], + '#parens': + [ { token: 'text', + regex: '\\(', + push: + [ { token: 'text', regex: '\\)', next: 'pop' }, + { include: '#code' } ] } ], + '#primitive-arrays': + [ { token: 'storage.type.primitive.array.vala', + regex: '\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b' } ], + '#primitive-types': + [ { token: 'storage.type.primitive.vala', + regex: '\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b', + comment: 'var is not really a primitive, but acts like one in most cases' } ], + '#storage-modifiers': + [ { token: 'storage.modifier.vala', + regex: '\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b', + comment: 'Not sure about unsafe and readonly' } ], + '#strings': + [ { token: 'punctuation.definition.string.begin.vala', + regex: '@"', + push: + [ { token: 'punctuation.definition.string.end.vala', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.vala', + regex: '\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))' }, + { defaultToken: 'string.quoted.interpolated.vala' } ] }, + { token: 'punctuation.definition.string.begin.vala', + regex: '"', + push: + [ { token: 'punctuation.definition.string.end.vala', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.vala', regex: '\\\\.' }, + { token: 'constant.character.escape.vala', + regex: '%[\\w\\.\\-]+' }, + { defaultToken: 'string.quoted.double.vala' } ] }, + { token: 'punctuation.definition.string.begin.vala', + regex: '\'', + push: + [ { token: 'punctuation.definition.string.end.vala', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.vala', regex: '\\\\.' }, + { defaultToken: 'string.quoted.single.vala' } ] }, + { token: 'punctuation.definition.string.begin.vala', + regex: '"""', + push: + [ { token: 'punctuation.definition.string.end.vala', + regex: '"""', + next: 'pop' }, + { token: 'constant.character.escape.vala', + regex: '%[\\w\\.\\-]+' }, + { defaultToken: 'string.quoted.triple.vala' } ] } ], + '#throws': + [ { token: 'storage.modifier.vala', + regex: 'throws', + push: + [ { token: 'meta.throwables.vala', regex: '(?={|;)', next: 'pop' }, + { include: '#object-types' }, + { defaultToken: 'meta.throwables.vala' } ] } ], + '#values': + [ { include: '#strings' }, + { include: '#object-types' }, + { include: '#constants-and-special-vars' } ] }; + + this.normalizeRules(); +}; + +ValaHighlightRules.metaData = { + comment: 'Based heavily on the Java bundle\'s language syntax. TODO:\n* Closures\n* Delegates\n* Properties: Better support for properties.\n* Annotations\n* Error domains\n* Named arguments\n* Array slicing, negative indexes, multidimensional\n* construct blocks\n* lock blocks?\n* regex literals\n* DocBlock syntax highlighting. (Currently importing javadoc)\n* Folding rule for comments.\n', + fileTypes: [ 'vala' ], + foldingStartMarker: '(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)', + foldingStopMarker: '^\\s*(\\}|// \\}\\}\\}$)', + name: 'Vala', + scopeName: 'source.vala' }; + + +oop.inherits(ValaHighlightRules, TextHighlightRules); + +exports.ValaHighlightRules = ValaHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/vbscript.js b/plugins/node_modules/ace/lib/ace/mode/vbscript.js new file mode 100644 index 00000000..569e2e80 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/vbscript.js @@ -0,0 +1,61 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * Contributor(s): + * + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var VBScriptHighlightRules = require("./vbscript_highlight_rules").VBScriptHighlightRules; + +var Mode = function() { + this.HighlightRules = VBScriptHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ["'", "REM"]; + + this.$id = "ace/mode/vbscript"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/vbscript_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/vbscript_highlight_rules.js new file mode 100644 index 00000000..abe00b01 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/vbscript_highlight_rules.js @@ -0,0 +1,222 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 7F9C9343-D48E-4E7D-BFE8-F680714DCD3E) */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var VBScriptHighlightRules = function() { + + var keywordMapper = this.createKeywordMapper({ + "keyword.control.asp": "If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return" + + "|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf", + "storage.type.asp": "Dim|Call|Class|Const|Dim|Redim|Set|Let|Get|New|Randomize|Option|Explicit", + "storage.modifier.asp": "Private|Public|Default", + "keyword.operator.asp": "Mod|And|Not|Or|Xor|as", + "constant.language.asp": "Empty|False|Nothing|Null|True", + "support.class.asp": "Application|ObjectContext|Request|Response|Server|Session", + "support.class.collection.asp": "Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables", + "support.constant.asp": "TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute" + + "|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout", + "support.function.asp": "Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog" + + "|BinaryWrite|Clear|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex", + "support.function.event.asp": "Application_OnEnd|Application_OnStart" + + "|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart", + "support.function.vb.asp": "Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng" + + "|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial" + + "|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency" + + "|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex" + + "|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric" + + "|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim" + + "|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace" + + "|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion" + + "|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse" + + "|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year", + "support.type.vb.asp": "vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|" + + "int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday" + + "|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek" + + "|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger" + + "|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant" + + "|vbDataObject|vbDecimal|vbByte|vbArray" + }, "identifier", true); + + this.$rules = { + "start": [ + { + token: [ + "meta.ending-space" + ], + regex: "$" + }, + { + token: [null], + regex: "^(?=\\t)", + next: "state_3" + }, + { + token: [null], + regex: "^(?= )", + next: "state_4" + }, + { + token: [ + "text", + "storage.type.function.asp", + "text", + "entity.name.function.asp", + "text", + "punctuation.definition.parameters.asp", + "variable.parameter.function.asp", + "punctuation.definition.parameters.asp" + ], + regex: "^(\\s*)(Function|Sub)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))" + }, + { + token: "punctuation.definition.comment.asp", + regex: "'|REM(?=\\s|$)", + next: "comment", + caseInsensitive: true + }, + { + token: "storage.type.asp", + regex: "On Error Resume Next|On Error GoTo", + caseInsensitive: true + }, + { + token: "punctuation.definition.string.begin.asp", + regex: '"', + next: "string" + }, + { + token: [ + "punctuation.definition.variable.asp" + ], + regex: "(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*" + }, +// { +// token: [ +// "support.type.vb.asp" +// ], +// regex: "(?:(?<=as )(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b))", // ERROR: This contains a lookbehind, which JS does not support :(" +// }, + { + token: "constant.numeric.asp", + regex: "-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b" + }, + { + regex: "\\w+", + token: keywordMapper + }, + { + token: ["entity.name.function.asp"], + regex: "(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))" + }, +// { +// token: [ +// "variable.other.asp" +// ], +// regex: "(?:((?<=(\\+|=|-|\\&|\\\\|/|<|>|\\(|,))\\s*\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\b(?!(\\(|\\.))|\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\b(?=\\s*(\\+|=|-|\\&|\\\\|/|<|>|\\(|\\)))))", // ERROR: This contains a lookbehind, which JS does not support :(" +// }, + { + token: ["keyword.operator.asp"], + regex: "\\-|\\+|\\*\\/|\\>|\\<|\\=|\\&" + } + ], + "state_3": [ + { + token: [ + "meta.odd-tab.tabs", + "meta.even-tab.tabs" + ], + regex: "(\\t)(\\t)?" + }, + { + token: "meta.leading-space", + regex: "(?=[^\\t])", + next: "start" + }, + { + token: "meta.leading-space", + regex: ".", + next: "state_3" + } + ], + "state_4": [ + { + token: ["meta.odd-tab.spaces", "meta.even-tab.spaces"], + regex: "( )( )?" + }, + { + token: "meta.leading-space", + regex: "(?=[^ ])", + next: "start" + }, + { + defaultToken: "meta.leading-space" + } + ], + "comment": [ + { + token: "comment.line.apostrophe.asp", + regex: "$|(?=(?:%>))", + next: "start" + }, + { + defaultToken: "comment.line.apostrophe.asp" + } + ], + "string": [ + { + token: "constant.character.escape.apostrophe.asp", + regex: '""' + }, + { + token: "string.quoted.double.asp", + regex: '"', + next: "start" + }, + { + defaultToken: "string.quoted.double.asp" + } + ] +}; + +}; + +oop.inherits(VBScriptHighlightRules, TextHighlightRules); + +exports.VBScriptHighlightRules = VBScriptHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/velocity.js b/plugins/node_modules/ace/lib/ace/mode/velocity.js new file mode 100644 index 00000000..94cbd388 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/velocity.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var VelocityHighlightRules = require("./velocity_highlight_rules").VelocityHighlightRules; +var FoldMode = require("./folding/velocity").FoldMode; + +var Mode = function() { + HtmlMode.call(this); + this.HighlightRules = VelocityHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, HtmlMode); + +(function() { + this.lineCommentStart = "##"; + this.blockComment = {start: "#*", end: "*#"}; + this.$id = "ace/mode/velocity"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/velocity_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/velocity_highlight_rules.js new file mode 100644 index 00000000..506a5836 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/velocity_highlight_rules.js @@ -0,0 +1,177 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + +var VelocityHighlightRules = function() { + HtmlHighlightRules.call(this); + + var builtinConstants = lang.arrayToMap( + ('true|false|null').split('|') + ); + + var builtinFunctions = lang.arrayToMap( + ("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool").split('|') + ); + + var builtinVariables = lang.arrayToMap( + ('$contentRoot|$foreach').split('|') + ); + + var keywords = lang.arrayToMap( + ("#set|#macro|#include|#parse|" + + "#if|#elseif|#else|#foreach|" + + "#break|#end|#stop" + ).split('|') + ); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules.start.push( + { + token : "comment", + regex : "##.*$" + },{ + token : "comment.block", // multi line comment + regex : "#\\*", + next : "vm_comment" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : function(value) { + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (builtinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (builtinVariables.hasOwnProperty(value)) + return "variable.language"; + else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) + return "support.function"; + else if (value == "debugger") + return "invalid.deprecated"; + else + if(value.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)) + return "variable"; + return "identifier"; + }, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z$#][a-zA-Z0-9_]*\\b" + }, { + token : "keyword.operator", + regex : "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ); + + this.$rules["vm_comment"] = [ + { + token : "comment", // closing comment + regex : "\\*#|-->", + next : "start" + }, { + defaultToken: "comment" + } + ]; + + this.$rules["vm_start"] = [ + { + token: "variable", + regex: "}", + next: "pop" + }, { + token : "string.regexp", + regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : "0[xX][0-9a-fA-F]+\\b" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : function(value) { + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (builtinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (builtinVariables.hasOwnProperty(value)) + return "variable.language"; + else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) + return "support.function"; + else if (value == "debugger") + return "invalid.deprecated"; + else + if(value.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)) + return "variable"; + return "identifier"; + }, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ]; + + for (var i in this.$rules) { + this.$rules[i].unshift({ + token: "variable", + regex: "\\${", + push: "vm_start" + }); + } + + this.normalizeRules(); +}; + +oop.inherits(VelocityHighlightRules, TextHighlightRules); + +exports.VelocityHighlightRules = VelocityHighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/verilog.js b/plugins/node_modules/ace/lib/ace/mode/verilog.js new file mode 100644 index 00000000..5c2ca733 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/verilog.js @@ -0,0 +1,55 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var VerilogHighlightRules = require("./verilog_highlight_rules").VerilogHighlightRules; +var Range = require("../range").Range; + +var Mode = function() { + this.HighlightRules = VerilogHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + + this.$id = "ace/mode/verilog"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/verilog_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/verilog_highlight_rules.js new file mode 100644 index 00000000..024b73fa --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/verilog_highlight_rules.js @@ -0,0 +1,109 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var VerilogHighlightRules = function() { +var keywords = "always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|" + + "deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|" + + "endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|" + + "highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|" + + "macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|" + + "posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|" + + "reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|" + + "strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|" + + "unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xor" + + "begin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|" + + "endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|" + + "macromodule|module|primitive|repeat|specify|table|task|while"; + + var builtinConstants = ( + "true|false|null" + ); + + var builtinFunctions = ( + "count|min|max|avg|sum|rank|now|coalesce|main" + ); + + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants + }, "identifier", true); + + this.$rules = { + "start" : [ { + token : "comment", + regex : "//.*$" + }, { + token : "comment.start", + regex : "/\\*", + next : [ + { token : "comment.end", regex : "\\*/", next: "start" }, + { defaultToken : "comment" } + ] + }, { + token : "string", // " string + regex : '".*?"' + }, { + token : "string", // ' string + regex : "'.*?'" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token : "paren.lparen", + regex : "[\\(]" + }, { + token : "paren.rparen", + regex : "[\\)]" + }, { + token : "text", + regex : "\\s+" + } ] + }; + this.normalizeRules(); +}; + +oop.inherits(VerilogHighlightRules, TextHighlightRules); + +exports.VerilogHighlightRules = VerilogHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/vhdl.js b/plugins/node_modules/ace/lib/ace/mode/vhdl.js new file mode 100644 index 00000000..247ded94 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/vhdl.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var VHDLHighlightRules = require("./vhdl_highlight_rules").VHDLHighlightRules; + +var Mode = function() { + this.HighlightRules = VHDLHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "--"; + + this.$id = "ace/mode/vhdl"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/vhdl_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/vhdl_highlight_rules.js new file mode 100644 index 00000000..c1a84bea --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/vhdl_highlight_rules.js @@ -0,0 +1,115 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2013, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var VHDLHighlightRules = function() { + + + + var keywords = "access|after|ailas|all|architecture|assert|attribute|"+ + "begin|block|buffer|bus|case|component|configuration|"+ + "disconnect|downto|else|elsif|end|entity|file|for|function|"+ + "generate|generic|guarded|if|impure|in|inertial|inout|is|"+ + "label|linkage|literal|loop|mapnew|next|of|on|open|"+ + "others|out|port|process|pure|range|record|reject|"+ + "report|return|select|shared|subtype|then|to|transport|"+ + "type|unaffected|united|until|wait|when|while|with"; + + var storageType = "bit|bit_vector|boolean|character|integer|line|natural|"+ + "positive|real|register|severity|signal|signed|"+ + "std_logic|std_logic_vector|string||text|time|unsigned|"+ + "variable"; + + var storageModifiers = "array|constant"; + + var keywordOperators = "abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|sra"+ + "srl|xnor|xor"; + + var builtinConstants = ( + "true|false|null" + ); + + + var keywordMapper = this.createKeywordMapper({ + "keyword.operator": keywordOperators, + "keyword": keywords, + "constant.language": builtinConstants, + "storage.modifier": storageModifiers, + "storage.type": storageType + }, "identifier", true); + + this.$rules = { + "start" : [ { + token : "comment", + regex : "--.*$" + }, { + token : "string", // " string + regex : '".*?"' + }, { + token : "string", // ' string + regex : "'.*?'" + }, { + token : "constant.numeric", // float + regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token : "keyword", // pre-compiler directives + regex : "\\s*(?:library|package|use)\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>" + }, { + token : "punctuation.operator", + regex : "\\'|\\:|\\,|\\;|\\." + },{ + token : "paren.lparen", + regex : "[[(]" + }, { + token : "paren.rparen", + regex : "[\\])]" + }, { + token : "text", + regex : "\\s+" + } ] + + + }; +}; + +oop.inherits(VHDLHighlightRules, TextHighlightRules); + +exports.VHDLHighlightRules = VHDLHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/wollok.js b/plugins/node_modules/ace/lib/ace/mode/wollok.js new file mode 100644 index 00000000..c9a33217 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/wollok.js @@ -0,0 +1,25 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var JavaScriptMode = require("./javascript").Mode; +var WollokHighlightRules = require("./wollok_highlight_rules").WollokHighlightRules; + +var Mode = function() { + JavaScriptMode.call(this); + this.HighlightRules = WollokHighlightRules; +}; +oop.inherits(Mode, JavaScriptMode); + +(function() { + + this.createWorker = function(session) { + return null; + }; + + this.$id = "ace/mode/wollok"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/wollok_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/wollok_highlight_rules.js new file mode 100644 index 00000000..ab74aa92 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/wollok_highlight_rules.js @@ -0,0 +1,96 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var WollokHighlightRules = function() { + + // taken from http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html + var keywords = ( + "test|describe|package|inherits|false|import|else|or|class|and|not|native|override|program|self|try|const|var|catch|object|super|throw|if|null|return|true|new|constructor|method|mixin" + ); + + var buildinConstants = ("null|assert|console"); + + var langClasses = ( + "Object|Pair|String|Boolean|Number|Integer|Double|Collection|Set|List|Exception|Range" + + "|StackTraceElement" + ); + + var keywordMapper = this.createKeywordMapper({ + "variable.language": "self", + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": langClasses + }, "identifier"); + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = { + "start" : [ + { + token : "comment", + regex : "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token : "comment", // multi line comment + regex : "\\/\\*", + next : "comment" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // single line + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // hex + regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token : "constant.numeric", // float + regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token : "constant.language.boolean", + regex : "(?:true|false)\\b" + }, { + token : keywordMapper, + // TODO: Unicode escape sequences + // TODO: Unicode identifiers + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token : "keyword.operator", + regex : "===|&&|\\*=|\\.\\.|\\*\\*|#|!|%|\\*|\\?:|\\+|\\/|,|\\+=|\\-|\\.\\.<|!==|:|\\/=|\\?\\.|\\+\\+|>|=|<|>=|=>|==|\\]|\\[|\\-=|\\->|\\||\\-\\-|<>|!=|%=|\\|" + }, { + token : "lparen", + regex : "[[({]" + }, { + token : "rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : "\\s+" + } + ], + "comment" : [ + { + token : "comment", // closing comment + regex : ".*?\\*\\/", + next : "start" + }, { + token : "comment", // comment spanning whole line + regex : ".+" + } + ] + }; + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("start") ]); +}; + +oop.inherits(WollokHighlightRules, TextHighlightRules); + +exports.WollokHighlightRules = WollokHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/xml.js b/plugins/node_modules/ace/lib/ace/mode/xml.js new file mode 100644 index 00000000..38861eee --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xml.js @@ -0,0 +1,75 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var XmlFoldMode = require("./folding/xml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; + +var Mode = function() { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); +}; + +oop.inherits(Mode, TextMode); + +(function() { + + this.voidElements = lang.arrayToMap([]); + + this.blockComment = {start: "<!--", end: "-->"}; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + + worker.on("error", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/xml"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/xml/dom-parser.js b/plugins/node_modules/ace/lib/ace/mode/xml/dom-parser.js new file mode 100644 index 00000000..c99ded42 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xml/dom-parser.js @@ -0,0 +1,260 @@ +define(function(require, exports, module) { + 'use strict'; + + var XMLReader = require('./sax'), + DOMImplementation = require('./dom'); + +function DOMParser(options){ + this.options = options ||{locator:{}}; + +} +DOMParser.prototype.parseFromString = function(source,mimeType){ + var options = this.options; + var sax = new XMLReader(); + var domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler + var errorHandler = options.errorHandler; + var locator = options.locator; + var defaultNSMap = options.xmlns||{}; + var entityMap = {'lt':'<','gt':'>','amp':'&','quot':'"','apos':"'"} + if(locator){ + domBuilder.setDocumentLocator(locator) + } + + sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); + sax.domBuilder = options.domBuilder || domBuilder; + if(/\/x?html?$/.test(mimeType)){ + entityMap.nbsp = '\xa0'; + entityMap.copy = '\xa9'; + defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; + } + if(source){ + sax.parse(source,defaultNSMap,entityMap); + }else{ + sax.errorHandler.error("invalid document source"); + } + return domBuilder.document; +} +function buildErrorHandler(errorImpl,domBuilder,locator){ + if(!errorImpl){ + if(domBuilder instanceof DOMHandler){ + return domBuilder; + } + errorImpl = domBuilder ; + } + var errorHandler = {} + var isCallback = errorImpl instanceof Function; + locator = locator||{} + function build(key){ + var fn = errorImpl[key]; + if(!fn){ + if(isCallback){ + fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; + }else{ + var i=arguments.length; + while(--i){ + if(fn = errorImpl[arguments[i]]){ + break; + } + } + } + } + errorHandler[key] = fn && function(msg){ + fn(msg+_locator(locator), msg, locator); + }||function(){}; + } + build('warning','warn'); + build('error','warn','warning'); + build('fatalError','warn','warning','error'); + return errorHandler; +} +/** + * +ContentHandler+ErrorHandler + * +LexicalHandler+EntityResolver2 + * -DeclHandler-DTDHandler + * + * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler + * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 + * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator,node){ + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} +/** + * @see org.xml.sax.ContentHandler#startDocument + * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html + */ +DOMHandler.prototype = { + startDocument : function() { + this.document = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.document.documentURI = this.locator.systemId; + } + }, + startElement:function(namespaceURI, localName, qName, attrs) { + var doc = this.document; + var el = doc.createElementNS(namespaceURI, qName||localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; + + this.locator && position(this.locator,el) + for (var i = 0 ; i < len; i++) { + var namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + var qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + if( attr.getOffset){ + position(attr.getOffset(1),attr) + } + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr) + } + }, + endElement:function(namespaceURI, localName, qName) { + var current = this.currentElement + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping:function(prefix, uri) { + }, + endPrefixMapping:function(prefix) { + }, + processingInstruction:function(target, data) { + var ins = this.document.createProcessingInstruction(target, data); + this.locator && position(this.locator,ins) + appendElement(this, ins); + }, + ignorableWhitespace:function(ch, start, length) { + }, + characters:function(chars, start, length) { + chars = _toString.apply(this,arguments) + //console.log(chars) + if(this.currentElement && chars){ + if (this.cdata) { + var charNode = this.document.createCDATASection(chars); + this.currentElement.appendChild(charNode); + } else { + var charNode = this.document.createTextNode(chars); + this.currentElement.appendChild(charNode); + } + this.locator && position(this.locator,charNode) + } + }, + skippedEntity:function(name) { + }, + endDocument:function() { + this.document.normalize(); + }, + setDocumentLocator:function (locator) { + if(this.locator = locator){// && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment:function(chars, start, length) { + chars = _toString.apply(this,arguments) + var comm = this.document.createComment(chars); + this.locator && position(this.locator,comm) + appendElement(this, comm); + }, + + startCDATA:function() { + //used in characters() methods + this.cdata = true; + }, + endCDATA:function() { + this.cdata = false; + }, + + startDTD:function(name, publicId, systemId) { + var impl = this.document.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator,dt) + appendElement(this, dt); + } + }, + /** + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning:function(error) { + console.warn(error,_locator(this.locator)); + }, + error:function(error) { + console.error(error,_locator(this.locator)); + }, + fatalError:function(error) { + console.error(error,_locator(this.locator)); + throw error; + } +} +function _locator(l){ + if(l){ + return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' + } +} +function _toString(chars,start,length){ + if(typeof chars == 'string'){ + return chars.substr(start,length) + }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if(chars.length >= start+length || start){ + return new java.lang.String(chars,start,length)+''; + } + return chars; + } +} + +/* + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html + * used method of org.xml.sax.ext.LexicalHandler: + * #comment(chars, start, length) + * #startCDATA() + * #endCDATA() + * #startDTD(name, publicId, systemId) + * + * + * IGNORED method of org.xml.sax.ext.LexicalHandler: + * #endDTD() + * #startEntity(name) + * #endEntity(name) + * + * + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html + * IGNORED method of org.xml.sax.ext.DeclHandler + * #attributeDecl(eName, aName, type, mode, value) + * #elementDecl(name, model) + * #externalEntityDecl(name, publicId, systemId) + * #internalEntityDecl(name, value) + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html + * IGNORED method of org.xml.sax.EntityResolver2 + * #resolveEntity(String name,String publicId,String baseURI,String systemId) + * #resolveEntity(publicId, systemId) + * #getExternalSubset(name, baseURI) + * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html + * IGNORED method of org.xml.sax.DTDHandler + * #notationDecl(name, publicId, systemId) {}; + * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ + DOMHandler.prototype[key] = function(){return null} +}) + +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement (hander,node) { + if (!hander.currentElement) { + hander.document.appendChild(node); + } else { + hander.currentElement.appendChild(node); + } +}//appendChild and setAttributeNS are preformance key + +return { + DOMParser: DOMParser + }; +}); + diff --git a/plugins/node_modules/ace/lib/ace/mode/xml/dom.js b/plugins/node_modules/ace/lib/ace/mode/xml/dom.js new file mode 100644 index 00000000..019811bd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xml/dom.js @@ -0,0 +1,1138 @@ +define(function(require, exports, module) { + +/* + * DOM Level 2 + * Object DOMException + * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + */ + +function copy(src,dest){ + for(var p in src){ + dest[p] = src[p]; + } +} +/** +^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? +^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? + */ +function _extends(Class,Super){ + var pt = Class.prototype; + if(Object.create){ + var ppt = Object.create(Super.prototype) + pt.__proto__ = ppt; + } + if(!(pt instanceof Super)){ + function t(){}; + t.prototype = Super.prototype; + t = new t(); + copy(pt,t); + Class.prototype = pt = t; + } + if(pt.constructor != Class){ + if(typeof Class != 'function'){ + console.error("unknow Class:"+Class) + } + pt.constructor = Class + } +} +var htmlns = 'http://www.w3.org/1999/xhtml' ; +// Node Types +var NodeType = {} +var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; +var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; +var TEXT_NODE = NodeType.TEXT_NODE = 3; +var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; +var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; +var ENTITY_NODE = NodeType.ENTITY_NODE = 6; +var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; +var COMMENT_NODE = NodeType.COMMENT_NODE = 8; +var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; +var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; +var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; +var NOTATION_NODE = NodeType.NOTATION_NODE = 12; + +// ExceptionCode +var ExceptionCode = {} +var ExceptionMessage = {}; +var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); +var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); +var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); +var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); +var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); +var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); +var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); +var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); +var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); +var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); +//level2 +var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); +var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); +var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); +var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); +var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); + + +function DOMException(code, message) { + if(message instanceof Error){ + var error = message; + }else{ + error = this; + Error.call(this, ExceptionMessage[code]); + this.message = ExceptionMessage[code]; + if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); + } + error.code = code; + if(message) this.message = this.message + ": " + message; + return error; +}; +DOMException.prototype = Error.prototype; +copy(ExceptionCode,DOMException) +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 + * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. + * The items in the NodeList are accessible via an integral index, starting from 0. + */ +function NodeList() { +}; +NodeList.prototype = { + /** + * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. + * @standard level1 + */ + length:0, + /** + * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. + * @standard level1 + * @param index unsigned long + * Index into the collection. + * @return Node + * The node at the indexth position in the NodeList, or null if that is not a valid index. + */ + item: function(index) { + return this[index] || null; + } +}; +function LiveNodeList(node,refresh){ + this._node = node; + this._refresh = refresh + _updateLiveList(this); +} +function _updateLiveList(list){ + var inc = list._node._inc || list._node.ownerDocument._inc; + if(list._inc != inc){ + var ls = list._refresh(list._node); + //console.log(ls.length) + __set__(list,'length',ls.length); + copy(ls,list); + list._inc = inc; + } +} +LiveNodeList.prototype.item = function(i){ + _updateLiveList(this); + return this[i]; +} + +_extends(LiveNodeList,NodeList); +/** + * + * Objects implementing the NamedNodeMap interface are used to represent collections of nodes that can be accessed by name. Note that NamedNodeMap does not inherit from NodeList; NamedNodeMaps are not maintained in any particular order. Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index, but this is simply to allow convenient enumeration of the contents of a NamedNodeMap, and does not imply that the DOM specifies an order to these Nodes. + * NamedNodeMap objects in the DOM are live. + * used for attributes or DocumentType entities + */ +function NamedNodeMap() { +}; + +function _findNodeIndex(list,node){ + var i = list.length; + while(i--){ + if(list[i] === node){return i} + } +} + +function _addNamedNode(el,list,newAttr,oldAttr){ + if(oldAttr){ + list[_findNodeIndex(list,oldAttr)] = newAttr; + }else{ + list[list.length++] = newAttr; + } + if(el){ + newAttr.ownerElement = el; + var doc = el.ownerDocument; + if(doc){ + oldAttr && _onRemoveAttribute(doc,el,oldAttr); + _onAddAttribute(doc,el,newAttr); + } + } +} +function _removeNamedNode(el,list,attr){ + var i = _findNodeIndex(list,attr); + if(i>=0){ + var lastIndex = list.length-1 + while(i<lastIndex){ + list[i] = list[++i] + } + list.length = lastIndex; + if(el){ + var doc = el.ownerDocument; + if(doc){ + _onRemoveAttribute(doc,el,attr); + attr.ownerElement = null; + } + } + }else{ + throw new DOMException(NOT_FOUND_ERR,new Error()) + } +} +NamedNodeMap.prototype = { + length:0, + item:NodeList.prototype.item, + getNamedItem: function(key) { +// if(key.indexOf(':')>0 || key == 'xmlns'){ +// return null; +// } + var i = this.length; + while(i--){ + var attr = this[i]; + if(attr.nodeName == key){ + return attr; + } + } + }, + setNamedItem: function(attr) { + var el = attr.ownerElement; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + var oldAttr = this.getNamedItem(attr.nodeName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + /* returns Node */ + setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR + var el = attr.ownerElement, oldAttr; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + + /* returns Node */ + removeNamedItem: function(key) { + var attr = this.getNamedItem(key); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + + + },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR + + //for level2 + removeNamedItemNS:function(namespaceURI,localName){ + var attr = this.getNamedItemNS(namespaceURI,localName); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + }, + getNamedItemNS: function(namespaceURI, localName) { + var i = this.length; + while(i--){ + var node = this[i]; + if(node.localName == localName && node.namespaceURI == namespaceURI){ + return node; + } + } + return null; + } +}; +/** + * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 + */ +function DOMImplementation(/* Object */ features) { + this._features = {}; + if (features) { + for (var feature in features) { + this._features = features[feature]; + } + } +}; + +DOMImplementation.prototype = { + hasFeature: function(/* string */ feature, /* string */ version) { + var versions = this._features[feature.toLowerCase()]; + if (versions && (!version || version in versions)) { + return true; + } else { + return false; + } + }, + // Introduced in DOM Level 2: + createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR + var doc = new Document(); + doc.implementation = this; + doc.childNodes = new NodeList(); + doc.doctype = doctype; + if(doctype){ + doc.appendChild(doctype); + } + if(qualifiedName){ + var root = doc.createElementNS(namespaceURI,qualifiedName); + doc.appendChild(root); + } + return doc; + }, + // Introduced in DOM Level 2: + createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR + var node = new DocumentType(); + node.name = qualifiedName; + node.nodeName = qualifiedName; + node.publicId = publicId; + node.systemId = systemId; + // Introduced in DOM Level 2: + //readonly attribute DOMString internalSubset; + + //TODO:.. + // readonly attribute NamedNodeMap entities; + // readonly attribute NamedNodeMap notations; + return node; + } +}; + + +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 + */ + +function Node() { +}; + +Node.prototype = { + firstChild : null, + lastChild : null, + previousSibling : null, + nextSibling : null, + attributes : null, + parentNode : null, + childNodes : null, + ownerDocument : null, + nodeValue : null, + namespaceURI : null, + prefix : null, + localName : null, + // Modified in DOM Level 2: + insertBefore:function(newChild, refChild){//raises + return _insertBefore(this,newChild,refChild); + }, + replaceChild:function(newChild, oldChild){//raises + this.insertBefore(newChild,oldChild); + if(oldChild){ + this.removeChild(oldChild); + } + }, + removeChild:function(oldChild){ + return _removeChild(this,oldChild); + }, + appendChild:function(newChild){ + return this.insertBefore(newChild,null); + }, + hasChildNodes:function(){ + return this.firstChild != null; + }, + cloneNode:function(deep){ + return cloneNode(this.ownerDocument||this,this,deep); + }, + // Modified in DOM Level 2: + normalize:function(){ + var child = this.firstChild; + while(child){ + var next = child.nextSibling; + if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ + this.removeChild(next); + child.appendData(next.data); + }else{ + child.normalize(); + child = next; + } + } + }, + // Introduced in DOM Level 2: + isSupported:function(feature, version){ + return this.ownerDocument.implementation.hasFeature(feature,version); + }, + // Introduced in DOM Level 2: + hasAttributes:function(){ + return this.attributes.length>0; + }, + lookupPrefix:function(namespaceURI){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + for(var n in map){ + if(map[n] == namespaceURI){ + return n; + } + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + lookupNamespaceURI:function(prefix){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + if(prefix in map){ + return map[prefix] ; + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + isDefaultNamespace:function(namespaceURI){ + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; + } +}; + + +function _xmlEncoder(c){ + return c == '<' && '<' || + c == '>' && '>' || + c == '&' && '&' || + c == '"' && '"' || + '&#'+c.charCodeAt()+';' +} + + +copy(NodeType,Node); +copy(NodeType,Node.prototype); + +/** + * @param callback return true for continue,false for break + * @return boolean true: break visit; + */ +function _visitNode(node,callback){ + if(callback(node)){ + return true; + } + if(node = node.firstChild){ + do{ + if(_visitNode(node,callback)){return true} + }while(node=node.nextSibling) + } +} + + + +function Document(){ +} +function _onAddAttribute(doc,el,newAttr){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value + } +} +function _onRemoveAttribute(doc,el,newAttr,remove){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + delete el._nsMap[newAttr.prefix?newAttr.localName:''] + } +} +function _onUpdateChild(doc,el,newChild){ + if(doc && doc._inc){ + doc._inc++; + //update childNodes + var cs = el.childNodes; + if(newChild){ + cs[cs.length++] = newChild; + }else{ + //console.log(1) + var child = el.firstChild; + var i = 0; + while(child){ + cs[i++] = child; + child =child.nextSibling; + } + cs.length = i; + } + } +} + +/** + * attributes; + * children; + * + * writeable properties: + * nodeValue,Attr:value,CharacterData:data + * prefix + */ +function _removeChild(parentNode,child){ + var previous = child.previousSibling; + var next = child.nextSibling; + if(previous){ + previous.nextSibling = next; + }else{ + parentNode.firstChild = next + } + if(next){ + next.previousSibling = previous; + }else{ + parentNode.lastChild = previous; + } + _onUpdateChild(parentNode.ownerDocument,parentNode); + return child; +} +/** + * preformance key(refChild == null) + */ +function _insertBefore(parentNode,newChild,nextChild){ + var cp = newChild.parentNode; + if(cp){ + cp.removeChild(newChild);//remove and update + } + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + var newFirst = newChild.firstChild; + if (newFirst == null) { + return newChild; + } + var newLast = newChild.lastChild; + }else{ + newFirst = newLast = newChild; + } + var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; + + newFirst.previousSibling = pre; + newLast.nextSibling = nextChild; + + + if(pre){ + pre.nextSibling = newFirst; + }else{ + parentNode.firstChild = newFirst; + } + if(nextChild == null){ + parentNode.lastChild = newLast; + }else{ + nextChild.previousSibling = newLast; + } + do{ + newFirst.parentNode = parentNode; + }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) + _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); + //console.log(parentNode.lastChild.nextSibling == null) + if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { + newChild.firstChild = newChild.lastChild = null; + } + return newChild; +} +function _appendSingleChild(parentNode,newChild){ + var cp = newChild.parentNode; + if(cp){ + var pre = parentNode.lastChild; + cp.removeChild(newChild);//remove and update + var pre = parentNode.lastChild; + } + var pre = parentNode.lastChild; + newChild.parentNode = parentNode; + newChild.previousSibling = pre; + newChild.nextSibling = null; + if(pre){ + pre.nextSibling = newChild; + }else{ + parentNode.firstChild = newChild; + } + parentNode.lastChild = newChild; + _onUpdateChild(parentNode.ownerDocument,parentNode,newChild); + return newChild; + //console.log("__aa",parentNode.lastChild.nextSibling == null) +} +Document.prototype = { + //implementation : null, + nodeName : '#document', + nodeType : DOCUMENT_NODE, + doctype : null, + documentElement : null, + _inc : 1, + + insertBefore : function(newChild, refChild){//raises + if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ + var child = newChild.firstChild; + while(child){ + var next = child.nextSibling; + this.insertBefore(child,refChild); + child = next; + } + return newChild; + } + if(this.documentElement == null && newChild.nodeType == 1){ + this.documentElement = newChild; + } + + return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; + }, + removeChild : function(oldChild){ + if(this.documentElement == oldChild){ + this.documentElement = null; + } + return _removeChild(this,oldChild); + }, + // Introduced in DOM Level 2: + importNode : function(importedNode,deep){ + return importNode(this,importedNode,deep); + }, + // Introduced in DOM Level 2: + getElementById : function(id){ + var rtv = null; + _visitNode(this.documentElement,function(node){ + if(node.nodeType == 1){ + if(node.getAttribute('id') == id){ + rtv = node; + return true; + } + } + }) + return rtv; + }, + + //document factory method: + createElement : function(tagName){ + var node = new Element(); + node.ownerDocument = this; + node.nodeName = tagName; + node.tagName = tagName; + node.childNodes = new NodeList(); + var attrs = node.attributes = new NamedNodeMap(); + attrs._ownerElement = node; + return node; + }, + createDocumentFragment : function(){ + var node = new DocumentFragment(); + node.ownerDocument = this; + node.childNodes = new NodeList(); + return node; + }, + createTextNode : function(data){ + var node = new Text(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createComment : function(data){ + var node = new Comment(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createCDATASection : function(data){ + var node = new CDATASection(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createProcessingInstruction : function(target,data){ + var node = new ProcessingInstruction(); + node.ownerDocument = this; + node.tagName = node.target = target; + node.nodeValue= node.data = data; + return node; + }, + createAttribute : function(name){ + var node = new Attr(); + node.ownerDocument = this; + node.name = name; + node.nodeName = name; + node.localName = name; + node.specified = true; + return node; + }, + createEntityReference : function(name){ + var node = new EntityReference(); + node.ownerDocument = this; + node.nodeName = name; + return node; + }, + // Introduced in DOM Level 2: + createElementNS : function(namespaceURI,qualifiedName){ + var node = new Element(); + var pl = qualifiedName.split(':'); + var attrs = node.attributes = new NamedNodeMap(); + node.childNodes = new NodeList(); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.tagName = qualifiedName; + node.namespaceURI = namespaceURI; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + attrs._ownerElement = node; + return node; + }, + // Introduced in DOM Level 2: + createAttributeNS : function(namespaceURI,qualifiedName){ + var node = new Attr(); + var pl = qualifiedName.split(':'); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.name = qualifiedName; + node.namespaceURI = namespaceURI; + node.specified = true; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + return node; + } +}; +_extends(Document,Node); + + +function Element() { + this._nsMap = {}; +}; +Element.prototype = { + nodeType : ELEMENT_NODE, + hasAttribute : function(name){ + return this.getAttributeNode(name)!=null; + }, + getAttribute : function(name){ + var attr = this.getAttributeNode(name); + return attr && attr.value || ''; + }, + getAttributeNode : function(name){ + return this.attributes.getNamedItem(name); + }, + setAttribute : function(name, value){ + var attr = this.ownerDocument.createAttribute(name); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + removeAttribute : function(name){ + var attr = this.getAttributeNode(name) + attr && this.removeAttributeNode(attr); + }, + + //four real opeartion method + appendChild:function(newChild){ + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + return this.insertBefore(newChild,null); + }else{ + return _appendSingleChild(this,newChild); + } + }, + setAttributeNode : function(newAttr){ + return this.attributes.setNamedItem(newAttr); + }, + setAttributeNodeNS : function(newAttr){ + return this.attributes.setNamedItemNS(newAttr); + }, + removeAttributeNode : function(oldAttr){ + return this.attributes.removeNamedItem(oldAttr.nodeName); + }, + //get real attribute name,and remove it by removeAttributeNode + removeAttributeNS : function(namespaceURI, localName){ + var old = this.getAttributeNodeNS(namespaceURI, localName); + old && this.removeAttributeNode(old); + }, + + hasAttributeNS : function(namespaceURI, localName){ + return this.getAttributeNodeNS(namespaceURI, localName)!=null; + }, + getAttributeNS : function(namespaceURI, localName){ + var attr = this.getAttributeNodeNS(namespaceURI, localName); + return attr && attr.value || ''; + }, + setAttributeNS : function(namespaceURI, qualifiedName, value){ + var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + getAttributeNodeNS : function(namespaceURI, localName){ + return this.attributes.getNamedItemNS(namespaceURI, localName); + }, + + getElementsByTagName : function(tagName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ + ls.push(node); + } + }); + return ls; + }); + }, + getElementsByTagNameNS : function(namespaceURI, localName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ + ls.push(node); + } + }); + return ls; + }); + } +}; +Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; +Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; + + +_extends(Element,Node); +function Attr() { +}; +Attr.prototype.nodeType = ATTRIBUTE_NODE; +_extends(Attr,Node); + + +function CharacterData() { +}; +CharacterData.prototype = { + data : '', + substringData : function(offset, count) { + return this.data.substring(offset, offset+count); + }, + appendData: function(text) { + text = this.data+text; + this.nodeValue = this.data = text; + this.length = text.length; + }, + insertData: function(offset,text) { + this.replaceData(offset,0,text); + + }, + appendChild:function(newChild){ + //if(!(newChild instanceof CharacterData)){ + throw new Error(ExceptionMessage[3]) + //} + return Node.prototype.appendChild.apply(this,arguments) + }, + deleteData: function(offset, count) { + this.replaceData(offset,count,""); + }, + replaceData: function(offset, count, text) { + var start = this.data.substring(0,offset); + var end = this.data.substring(offset+count); + text = start + text + end; + this.nodeValue = this.data = text; + this.length = text.length; + } +} +_extends(CharacterData,Node); +function Text() { +}; +Text.prototype = { + nodeName : "#text", + nodeType : TEXT_NODE, + splitText : function(offset) { + var text = this.data; + var newText = text.substring(offset); + text = text.substring(0, offset); + this.data = this.nodeValue = text; + this.length = text.length; + var newNode = this.ownerDocument.createTextNode(newText); + if(this.parentNode){ + this.parentNode.insertBefore(newNode, this.nextSibling); + } + return newNode; + } +} +_extends(Text,CharacterData); +function Comment() { +}; +Comment.prototype = { + nodeName : "#comment", + nodeType : COMMENT_NODE +} +_extends(Comment,CharacterData); + +function CDATASection() { +}; +CDATASection.prototype = { + nodeName : "#cdata-section", + nodeType : CDATA_SECTION_NODE +} +_extends(CDATASection,CharacterData); + + +function DocumentType() { +}; +DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; +_extends(DocumentType,Node); + +function Notation() { +}; +Notation.prototype.nodeType = NOTATION_NODE; +_extends(Notation,Node); + +function Entity() { +}; +Entity.prototype.nodeType = ENTITY_NODE; +_extends(Entity,Node); + +function EntityReference() { +}; +EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; +_extends(EntityReference,Node); + +function DocumentFragment() { +}; +DocumentFragment.prototype.nodeName = "#document-fragment"; +DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; +_extends(DocumentFragment,Node); + + +function ProcessingInstruction() { +} +ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; +_extends(ProcessingInstruction,Node); +function XMLSerializer(){} +XMLSerializer.prototype.serializeToString = function(node){ + var buf = []; + serializeToString(node,buf); + return buf.join(''); +} +Node.prototype.toString =function(){ + return XMLSerializer.prototype.serializeToString(this); +} +function serializeToString(node,buf){ + switch(node.nodeType){ + case ELEMENT_NODE: + var attrs = node.attributes; + var len = attrs.length; + var child = node.firstChild; + var nodeName = node.tagName; + var isHTML = htmlns === node.namespaceURI + buf.push('<',nodeName); + for(var i=0;i<len;i++){ + serializeToString(attrs.item(i),buf); + } + if(child || isHTML && !/^(?:meta|link|img|br|hr|input|button)$/i.test(nodeName)){ + buf.push('>'); + //if is cdata child node + if(isHTML && /^script$/i.test(nodeName)){ + if(child){ + buf.push(child.data); + } + }else{ + while(child){ + serializeToString(child,buf); + child = child.nextSibling; + } + } + buf.push('</',nodeName,'>'); + }else{ + buf.push('/>'); + } + return; + case DOCUMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + var child = node.firstChild; + while(child){ + serializeToString(child,buf); + child = child.nextSibling; + } + return; + case ATTRIBUTE_NODE: + return buf.push(' ',node.name,'="',node.value.replace(/[<&"]/g,_xmlEncoder),'"'); + case TEXT_NODE: + return buf.push(node.data.replace(/[<&]/g,_xmlEncoder)); + case CDATA_SECTION_NODE: + return buf.push( '<![CDATA[',node.data,']]>'); + case COMMENT_NODE: + return buf.push( "<!--",node.data,"-->"); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push('<!DOCTYPE ',node.name); + if(pubid){ + buf.push(' PUBLIC "',pubid); + if (sysid && sysid!='.') { + buf.push( '" "',sysid); + } + buf.push('">'); + }else if(sysid && sysid!='.'){ + buf.push(' SYSTEM "',sysid,'">'); + }else{ + var sub = node.internalSubset; + if(sub){ + buf.push(" [",sub,"]"); + } + buf.push(">"); + } + return; + case PROCESSING_INSTRUCTION_NODE: + return buf.push( "<?",node.target," ",node.data,"?>"); + case ENTITY_REFERENCE_NODE: + return buf.push( '&',node.nodeName,';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + buf.push('??',node.nodeName); + } +} +function importNode(doc,node,deep){ + var node2; + switch (node.nodeType) { + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; + //var attrs = node2.attributes; + //var len = attrs.length; + //for(var i=0;i<len;i++){ + //node2.setAttributeNodeNS(importNode(doc,attrs.item(i),deep)); + //} + case DOCUMENT_FRAGMENT_NODE: + break; + case ATTRIBUTE_NODE: + deep = true; + break; + //case ENTITY_REFERENCE_NODE: + //case PROCESSING_INSTRUCTION_NODE: + ////case TEXT_NODE: + //case CDATA_SECTION_NODE: + //case COMMENT_NODE: + // deep = false; + // break; + //case DOCUMENT_NODE: + //case DOCUMENT_TYPE_NODE: + //cannot be imported. + //case ENTITY_NODE: + //case NOTATION_NODE: + //can not hit in level3 + //default:throw e; + } + if(!node2){ + node2 = node.cloneNode(false);//false + } + node2.ownerDocument = doc; + node2.parentNode = null; + if(deep){ + var child = node.firstChild; + while(child){ + node2.appendChild(importNode(doc,child,deep)); + child = child.nextSibling; + } + } + return node2; +} +// +//var _relationMap = {firstChild:1,lastChild:1,previousSibling:1,nextSibling:1, +// attributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,}; +function cloneNode(doc,node,deep){ + var node2 = new node.constructor(); + for(var n in node){ + var v = node[n]; + if(typeof v != 'object' ){ + if(v != node2[n]){ + node2[n] = v; + } + } + } + if(node.childNodes){ + node2.childNodes = new NodeList(); + } + node2.ownerDocument = doc; + switch (node2.nodeType) { + case ELEMENT_NODE: + var attrs = node.attributes; + var attrs2 = node2.attributes = new NamedNodeMap(); + var len = attrs.length + attrs2._ownerElement = node2; + for(var i=0;i<len;i++){ + node2.setAttributeNode(cloneNode(doc,attrs.item(i),true)); + } + break;; + case ATTRIBUTE_NODE: + deep = true; + } + if(deep){ + var child = node.firstChild; + while(child){ + node2.appendChild(cloneNode(doc,child,deep)); + child = child.nextSibling; + } + } + return node2; +} + +function __set__(object,key,value){ + object[key] = value +} +//do dynamic +try{ + if(Object.defineProperty){ + Object.defineProperty(LiveNodeList.prototype,'length',{ + get:function(){ + _updateLiveList(this); + return this.$$length; + } + }); + Object.defineProperty(Node.prototype,'textContent',{ + get:function(){ + return getTextContent(this); + }, + set:function(data){ + switch(this.nodeType){ + case 1: + case 11: + while(this.firstChild){ + this.removeChild(this.firstChild); + } + if(data || String(data)){ + this.appendChild(this.ownerDocument.createTextNode(data)); + } + break; + default: + //TODO: + this.data = data; + this.value = value; + this.nodeValue = data; + } + } + }) + + function getTextContent(node){ + switch(node.nodeType){ + case 1: + case 11: + var buf = []; + node = node.firstChild; + while(node){ + if(node.nodeType!==7 && node.nodeType !==8){ + buf.push(getTextContent(node)); + } + node = node.nextSibling; + } + return buf.join(''); + default: + return node.nodeValue; + } + } + __set__ = function(object,key,value){ + //console.log(value) + object['$$'+key] = value + } + } +}catch(e){//ie8 +} + +return DOMImplementation; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/xml/sax.js b/plugins/node_modules/ace/lib/ace/mode/xml/sax.js new file mode 100644 index 00000000..9aa61df8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xml/sax.js @@ -0,0 +1,592 @@ +define(function(require, exports, module) { + +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\ux203F-\u2040]"); +var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C +var S_TAG = 0;//tag name offerring +var S_ATTR = 1;//attr name offerring +var S_ATTR_S=2;//attr name end and space offer +var S_EQ = 3;//=space? +var S_V = 4;//attr value(no quot value only) +var S_E = 5;//attr value end and no space(quot end) +var S_S = 6;//(attr value end || tag end ) && (space offer) +var S_C = 7;//closed el<el /> + +function XMLReader(){ + +} + +XMLReader.prototype = { + parse:function(source,defaultNSMap,entityMap){ + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap ,defaultNSMap = {}) + parse(source,defaultNSMap,entityMap, + domBuilder,this.errorHandler); + domBuilder.endDocument(); + } +} +function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10) + , surrogate2 = 0xdc00 + (code & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a){ + var k = a.slice(1,-1); + if(k in entityMap){ + return entityMap[k]; + }else if(k.charAt(0) === '#'){ + return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) + }else{ + errorHandler.error('entity not found:'+a); + return a; + } + } + function appendText(end){//has some bugs + var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer); + locator&&position(start); + domBuilder.characters(xt,0,end-start); + start = end + } + function position(start,m){ + while(start>=endPos && (m = linePattern.exec(source))){ + startPos = m.index; + endPos = startPos + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = start-startPos+1; + } + var startPos = 0; + var endPos = 0; + var linePattern = /.+(?:\r\n?|\n)|.*$/g + var locator = domBuilder.locator; + + var parseStack = [{currentNSMap:defaultNSMapCopy}] + var closeMap = {}; + var start = 0; + while(true){ + var i = source.indexOf('<',start); + if(i<0){ + if(!source.substr(start).match(/^\s*$/)){ + var doc = domBuilder.document; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if(i>start){ + appendText(i); + } + switch(source.charAt(i+1)){ + case '/': + var end = source.indexOf('>',i+3); + var tagName = source.substring(i+2,end); + var config; + if (parseStack.length > 1) { + config = parseStack.pop(); + } else { + errorHandler.fatalError("end tag name not found for: "+tagName); + break; + } + var localNSMap = config.localNSMap; + + if(config.tagName != tagName){ + errorHandler.fatalError("end tag name: " + tagName + " does not match the current start tagName: "+config.tagName ); + } + domBuilder.endElement(config.uri,config.localName,tagName); + if(localNSMap){ + for(var prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) ; + } + } + end++; + break; + // end elment + case '?':// <?...?> + locator&&position(i); + end = parseInstruction(source,i,domBuilder); + break; + case '!':// <!doctype,<![CDATA,<!-- + locator&&position(i); + end = parseDCC(source,i,domBuilder,errorHandler); + break; + default: + try{ + locator&&position(i); + + var el = new ElementAttributes(); + + //elStartEnd + var end = parseElementStartPart(source,i,el,entityReplacer,errorHandler); + var len = el.length; + //position fixed + if(len && locator){ + var backup = copyLocator(locator,{}); + for(var i = 0;i<len;i++){ + var a = el[i]; + position(a.offset); + a.offset = copyLocator(locator,{}); + } + copyLocator(backup,locator); + } + if(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){ + el.closed = true; + if(!entityMap.nbsp){ + errorHandler.warning('unclosed xml attribute'); + } + } + appendElement(el,domBuilder,parseStack); + + + if(el.uri === 'http://www.w3.org/1999/xhtml' && !el.closed){ + end = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder) + }else{ + end++; + } + }catch(e){ + errorHandler.error('element parse error: '+e); + end = -1; + } + + } + if(end<0){ + //TODO: 这里有å¯èƒ½sax回退,有ä½ç½®é”™è¯¯é£Žé™© + appendText(i+1); + }else{ + start = end; + } + } +} +function copyLocator(f,t){ + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; + +} + +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ + var attrName; + var value; + var p = ++start; + var s = S_TAG;//status + while(true){ + var c = source.charAt(p); + switch(c){ + case '=': + if(s === S_ATTR){//attrName + attrName = source.slice(start,p); + s = S_EQ; + }else if(s === S_ATTR_S){ + s = S_EQ; + }else{ + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); + } + break; + case '\'': + case '"': + if(s === S_EQ){//equal + start = p+1; + p = source.indexOf(c,start) + if(p>0){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + el.add(attrName,value,start-1); + s = S_E; + }else{ + //fatalError: no end quot match + throw new Error('attribute value no end \''+c+'\' match'); + } + }else if(s == S_V){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + //console.log(attrName,value,start,p) + el.add(attrName,value,start); + //console.dir(el) + errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); + start = p+1; + s = S_E + }else{ + //fatalError: no equal before + throw new Error('attribute value must after "="'); + } + break; + case '/': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + s = S_C; + el.closed = true; + case S_V: + case S_ATTR: + case S_ATTR_S: + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')") + } + break; + case ''://end document + //throw new Error('unexpected end of input') + errorHandler.error('unexpected end of input'); + case '>': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + break;//normal + case S_V://Compatible state + case S_ATTR: + value = source.slice(start,p); + if(value.slice(-1) === '/'){ + el.closed = true; + value = value.slice(0,-1) + } + case S_ATTR_S: + if(s === S_ATTR_S){ + value = attrName; + } + if(s == S_V){ + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start) + }else{ + errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + el.add(value,value,start) + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } +// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case '\u0080': + c = ' '; + default: + if(c<= ' '){//space + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p));//tagName + s = S_S; + break; + case S_ATTR: + attrName = source.slice(start,p) + s = S_ATTR_S; + break; + case S_V: + var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value,start) + case S_E: + s = S_S; + break; + //case S_S: + //case S_EQ: + //case S_ATTR_S: + // void();break; + //case S_C: + //ignore warning + } + }else{//not space +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C + switch(s){ + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_V:void();break; + case S_ATTR_S: + errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!') + el.add(attrName,attrName,start); + start = p; + s = S_ATTR; + break; + case S_E: + errorHandler.warning('attribute space is required"'+attrName+'"!!') + case S_S: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_V; + start = p; + break; + case S_C: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + } + p++; + } +} +/** + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function appendElement(el,domBuilder,parseStack){ + var tagName = el.tagName; + var localNSMap = null; + var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while(i--){ + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if(nsp>0){ + var prefix = a.prefix = qName.slice(0,nsp); + var localName = qName.slice(nsp+1); + var nsPrefix = prefix === 'xmlns' && localName + }else{ + localName = qName; + prefix = null + nsPrefix = qName === 'xmlns' && '' + } + //can not set prefix,because prefix !== '' + a.localName = localName ; + //prefix == null for no ns prefix attribute + if(nsPrefix !== false){//hack!! + if(localNSMap == null){ + localNSMap = {} + //console.log(currentNSMap,0) + _copy(currentNSMap,currentNSMap={}) + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = 'http://www.w3.org/2000/xmlns/' + domBuilder.startPrefixMapping(nsPrefix, value) + } + } + var i = el.length; + while(i--){ + a = el[i]; + var prefix = a.prefix; + if(prefix){//no prefix attribute has no namespace + if(prefix === 'xml'){ + a.uri = 'http://www.w3.org/XML/1998/namespace'; + }if(prefix !== 'xmlns'){ + a.uri = currentNSMap[prefix] + + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if(nsp>0){ + prefix = el.prefix = tagName.slice(0,nsp); + localName = el.localName = tagName.slice(nsp+1); + }else{ + prefix = null;//important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns,localName,tagName,el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if(el.closed){ + domBuilder.endElement(ns,localName,tagName); + if(localNSMap){ + for(prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) + } + } + }else{ + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + parseStack.push(el); + } +} +function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ + if(/^(?:script|textarea)$/i.test(tagName)){ + var elEndStart = source.indexOf('</'+tagName+'>',elStartEnd); + var text = source.substring(elStartEnd+1,elEndStart); + if(/[&<]/.test(text)){ + if(/^script$/i.test(tagName)){ + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text,0,text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + }//}else{//text area + text = text.replace(/&#?\w+;/g,entityReplacer); + domBuilder.characters(text,0,text.length); + return elEndStart; + //} + + } + } + return elStartEnd+1; +} +function fixSelfClosed(source,elStartEnd,tagName,closeMap){ + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if(pos == null){ + //console.log(tagName) + pos = closeMap[tagName] = source.lastIndexOf('</'+tagName+'>') + } + return pos<elStartEnd; + //} +} +function _copy(source,target){ + for(var n in source){target[n] = source[n]} +} +function parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!' + var next= source.charAt(start+2) + switch(next){ + case '-': + if(source.charAt(start + 3) === '-'){ + var end = source.indexOf('-->',start+4); + //append comment source.substring(4,end)//<!-- + if(end>start){ + domBuilder.comment(source,start+4,end-start-4); + return end+3; + }else{ + errorHandler.error("Unclosed comment"); + return -1; + } + }else{ + //error + return -1; + } + default: + if(source.substr(start+3,6) == 'CDATA['){ + var end = source.indexOf(']]>',start+9); + domBuilder.startCDATA(); + domBuilder.characters(source,start+9,end-start-9); + domBuilder.endCDATA() + return end+3; + } + //<!DOCTYPE + //startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId) + var matchs = split(source,start); + var len = matchs.length; + if(len>1 && /!doctype/i.test(matchs[0][0])){ + var name = matchs[1][0]; + var pubid = len>3 && /^public$/i.test(matchs[2][0]) && matchs[3][0] + var sysid = len>4 && matchs[4][0]; + var lastMatch = matchs[len-1] + domBuilder.startDTD(name,pubid && pubid.replace(/^(['"])(.*?)\1$/,'$2'), + sysid && sysid.replace(/^(['"])(.*?)\1$/,'$2')); + domBuilder.endDTD(); + + return lastMatch.index+lastMatch[0].length + } + } + return -1; +} + + + +function parseInstruction(source,start,domBuilder){ + var end = source.indexOf('?>',start); + if(end){ + var match = source.substring(start,end).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/); + if(match){ + var len = match[0].length; + domBuilder.processingInstruction(match[1], match[2]) ; + return end+2; + }else{//error + return -1; + } + } + return -1; +} + +/** + * @param source + */ +function ElementAttributes(source){ + +} +ElementAttributes.prototype = { + setTagName:function(tagName){ + if(!tagNamePattern.test(tagName)){ + throw new Error('invalid tagName:'+tagName) + } + this.tagName = tagName + }, + add:function(qName,value,offset){ + if(!tagNamePattern.test(qName)){ + throw new Error('invalid attribute:'+qName) + } + this[this.length++] = {qName:qName,value:value,offset:offset} + }, + length:0, + getLocalName:function(i){return this[i].localName}, + getOffset:function(i){return this[i].offset}, + getQName:function(i){return this[i].qName}, + getURI:function(i){return this[i].uri}, + getValue:function(i){return this[i].value} +// ,getIndex:function(uri, localName)){ +// if(localName){ +// +// }else{ +// var qName = uri +// } +// }, +// getValue:function(){return this.getValue(this.getIndex.apply(this,arguments))}, +// getType:function(uri,localName){} +// getType:function(i){}, +} + + + + +function _set_proto_(thiz,parent){ + thiz.__proto__ = parent; + return thiz; +} +if(!(_set_proto_({},_set_proto_.prototype) instanceof _set_proto_)){ + _set_proto_ = function(thiz,parent){ + function p(){}; + p.prototype = parent; + p = new p(); + for(parent in thiz){ + p[parent] = thiz[parent]; + } + return p; + } +} + +function split(source,start){ + var match; + var buf = []; + var reg = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g; + reg.lastIndex = start; + reg.exec(source);//skip < + while(match = reg.exec(source)){ + buf.push(match); + if(match[1])return buf; + } +} + +return XMLReader; +}); + + diff --git a/plugins/node_modules/ace/lib/ace/mode/xml_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/xml_highlight_rules.js new file mode 100644 index 00000000..f2e08e26 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xml_highlight_rules.js @@ -0,0 +1,238 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var XmlHighlightRules = function(normalize) { + // http://www.w3.org/TR/REC-xml/#NT-NameChar + // NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] + // NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + + this.$rules = { + start : [ + {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + { + token : ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + }, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { + token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + }, + {include : "tag"}, + {token : "text.end-tag-open.xml", regex: "</"}, + {token : "text.tag-open.xml", regex: "<"}, + {include : "reference"}, + {defaultToken : "text.xml"} + ], + + processing_instruction : [{ + token : "entity.other.attribute-name.decl-attribute-name.xml", + regex : tagRegex + }, { + token : "keyword.operator.decl-attribute-equals.xml", + regex : "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token : "punctuation.xml-decl.xml", + regex : "\\?>", + next : "start" + }], + + doctype : [ + {include : "whitespace"}, + {include : "string"}, + {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, + {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, + {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + ], + + int_subset : [{ + token : "text.xml", + regex : "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex : "(<\\!)(" + tagRegex + ")", + push : [{ + token : "text", + regex : "\\s+" + }, + { + token : "punctuation.markup-decl.xml", + regex : ">", + next : "pop" + }, + {include : "string"}] + }], + + cdata : [ + {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, + {token : "text.xml", regex : "\\s+"}, + {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + ], + + comment : [ + {token : "comment.end.xml", regex : "-->", next : "start"}, + {defaultToken : "comment.xml"} + ], + + reference : [{ + token : "constant.language.escape.reference.xml", + regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + + attr_reference : [{ + token : "constant.language.escape.reference.attribute-value.xml", + regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + + tag : [{ + token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")", + next: [ + {include : "attributes"}, + {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"} + ] + }], + + tag_whitespace : [ + {token : "text.tag-whitespace.xml", regex : "\\s+"} + ], + // for doctype and processing instructions + whitespace : [ + {token : "text.whitespace.xml", regex : "\\s+"} + ], + + // for doctype and processing instructions + string: [{ + token : "string.xml", + regex : "'", + push : [ + {token : "string.xml", regex: "'", next: "pop"}, + {defaultToken : "string.xml"} + ] + }, { + token : "string.xml", + regex : '"', + push : [ + {token : "string.xml", regex: '"', next: "pop"}, + {defaultToken : "string.xml"} + ] + }], + + attributes: [{ + token : "entity.other.attribute-name.xml", + regex : tagRegex + }, { + token : "keyword.operator.attribute-equals.xml", + regex : "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + + attribute_value: [{ + token : "string.attribute-value.xml", + regex : "'", + push : [ + {token : "string.attribute-value.xml", regex: "'", next: "pop"}, + {include : "attr_reference"}, + {defaultToken : "string.attribute-value.xml"} + ] + }, { + token : "string.attribute-value.xml", + regex : '"', + push : [ + {token : "string.attribute-value.xml", regex: '"', next: "pop"}, + {include : "attr_reference"}, + {defaultToken : "string.attribute-value.xml"} + ] + }] + }; + + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; + + +(function() { + + this.embedTagRules = function(HighlightRules, prefix, tag){ + this.$rules.tag.unshift({ + token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex : "(<)(" + tag + "(?=\\s|>|$))", + next: [ + {include : "attributes"}, + {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + ] + }); + + this.$rules[tag + "-end"] = [ + {include : "attributes"}, + {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", + onMatch : function(value, currentState, stack) { + stack.splice(0); + return this.token; + }} + ]; + + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex : "(</)(" + tag + "(?=\\s|>|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex : "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex : "\\]\\]>" + }]); + }; + +}).call(TextHighlightRules.prototype); + +oop.inherits(XmlHighlightRules, TextHighlightRules); + +exports.XmlHighlightRules = XmlHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/xml_test.js b/plugins/node_modules/ace/lib/ace/mode/xml_test.js new file mode 100644 index 00000000..160537b0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xml_test.js @@ -0,0 +1,75 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("../edit_session").EditSession; +var Tokenizer = require("../tokenizer").Tokenizer; +var XmlMode = require("./xml").Mode; +var assert = require("../test/assertions"); + +module.exports = { + setUp : function() { + this.mode = new XmlMode(); + }, + + "test: getTokenizer() (smoke test)" : function() { + var tokenizer = this.mode.getTokenizer(); + + assert.ok(tokenizer instanceof Tokenizer); + + var tokens = tokenizer.getLineTokens("<juhu>", "start").tokens; + assert.equal("meta.tag.punctuation.tag-open.xml", tokens[0].type); + }, + + "test: toggle comment lines should not do anything" : function() { + var session = new EditSession([" abc", " cde", "fg"]); + + this.mode.toggleCommentLines("start", session, 0, 1); + assert.equal([" <!-- abc-->", " <!--cde-->", "fg"].join("\n"), session.toString()); + }, + + "test: next line indent should be the same as the current line indent" : function() { + assert.equal(" ", this.mode.getNextLineIndent("start", " abc")); + assert.equal("", this.mode.getNextLineIndent("start", "abc")); + assert.equal("\t", this.mode.getNextLineIndent("start", "\tabc")); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mode/xml_worker.js b/plugins/node_modules/ace/lib/ace/mode/xml_worker.js new file mode 100644 index 00000000..eb0a7cd2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xml_worker.js @@ -0,0 +1,92 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var Mirror = require("../worker/mirror").Mirror; +var DOMParser = require("./xml/dom-parser").DOMParser; + +var Worker = exports.Worker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(400); + this.context = null; +}; + +oop.inherits(Worker, Mirror); + +(function() { + + this.setOptions = function(options) { + this.context = options.context; + }; + + this.onUpdate = function() { + var value = this.doc.getValue(); + if (!value) + return; + var parser = new DOMParser(); + var errors = []; + parser.options.errorHandler = { + fatalError: function(fullMsg, errorMsg, locator) { + errors.push({ + row: locator.lineNumber, + column: locator.columnNumber, + text: errorMsg, + type: "error" + }); + }, + error: function(fullMsg, errorMsg, locator) { + errors.push({ + row: locator.lineNumber, + column: locator.columnNumber, + text: errorMsg, + type: "error" + }); + }, + warning: function(fullMsg, errorMsg, locator) { + errors.push({ + row: locator.lineNumber, + column: locator.columnNumber, + text: errorMsg, + type: "warning" + }); + } + }; + + parser.parseFromString(value); + this.sender.emit("error", errors); + }; + +}).call(Worker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/xquery.js b/plugins/node_modules/ace/lib/ace/mode/xquery.js new file mode 100644 index 00000000..024a5c6a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xquery.js @@ -0,0 +1,216 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +define(function(require, exports, module) { +"use strict"; + +var WorkerClient = require("../worker/worker_client").WorkerClient; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XQueryLexer = require("./xquery/xquery_lexer").XQueryLexer; +var Range = require("../range").Range; +var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Anchor = require("../anchor").Anchor; + +var Mode = function() { + this.$tokenizer = new XQueryLexer(); + this.$behaviour = new XQueryBehaviour(); + this.foldingRules = new CStyleFoldMode(); + this.$highlightRules = new TextHighlightRules(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.completer = { + getCompletions: function(editor, session, pos, prefix, callback) { + if (!session.$worker) + return callback(); + session.$worker.emit("complete", { data: { pos: pos, prefix: prefix } }); + session.$worker.on("complete", function(e){ + callback(null, e.data); + }); + } + }; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); + if (match) + indent += tab; + return indent; + }; + + this.checkOutdent = function(state, line, input) { + if (! /^\s+$/.test(line)) + return false; + + return (/^\s*[\}\)]/).test(input); + }; + + this.autoOutdent = function(state, doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*[\}\)])/); + + if (!match) return 0; + + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({row: row, column: column}); + + if (!openBracePos || openBracePos.row == row) return 0; + + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column-1), indent); + }; + + this.toggleCommentLines = function(state, doc, startRow, endRow) { + var i, line; + var outdent = true; + var re = /^\s*\(:(.*):\)/; + + for (i=startRow; i<= endRow; i++) { + if (!re.test(doc.getLine(i))) { + outdent = false; + break; + } + } + + var range = new Range(0, 0, 0, 0); + for (i=startRow; i<= endRow; i++) { + line = doc.getLine(i); + range.start.row = i; + range.end.row = i; + range.end.column = line.length; + + doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)"); + } + }; + + this.createWorker = function(session) { + + var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker"); + var that = this; + + worker.attachToDocument(session.getDocument()); + + worker.on("ok", function(e) { + session.clearAnnotations(); + }); + + worker.on("markers", function(e) { + session.clearAnnotations(); + that.addMarkers(e.data, session); + }); + + worker.on("highlight", function(tokens) { + that.$tokenizer.tokens = tokens.data.tokens; + that.$tokenizer.lines = session.getDocument().getAllLines(); + + var rows = Object.keys(that.$tokenizer.tokens); + for(var i=0; i < rows.length; i++) { + var row = parseInt(rows[i]); + delete session.bgTokenizer.lines[row]; + delete session.bgTokenizer.states[row]; + session.bgTokenizer.fireUpdateEvent(row, row); + } + }); + + return worker; + }; + + this.removeMarkers = function(session) { + var markers = session.getMarkers(false); + for (var id in markers) { + // All language analysis' markers are prefixed with language_highlight + if (markers[id].clazz.indexOf('language_highlight_') === 0) { + session.removeMarker(id); + } + } + for (var i = 0; i < session.markerAnchors.length; i++) { + session.markerAnchors[i].detach(); + } + session.markerAnchors = []; + }; + + this.addMarkers = function(annos, mySession) { + var _self = this; + + if (!mySession.markerAnchors) mySession.markerAnchors = []; + this.removeMarkers(mySession); + mySession.languageAnnos = []; + annos.forEach(function(anno) { + // Certain annotations can temporarily be disabled + //if (_self.disabledMarkerTypes[anno.type]) + // return; + // Multi-line markers are not supported, and typically are a result from a bad error recover, ignore + //if(anno.pos.el && anno.pos.sl !== anno.pos.el) + // return; + // Using anchors here, to automaticaly move markers as text around the marker is updated + var anchor = new Anchor(mySession.getDocument(), anno.pos.sl, anno.pos.sc || 0); + mySession.markerAnchors.push(anchor); + var markerId; + var colDiff = anno.pos.ec - anno.pos.sc; + var rowDiff = anno.pos.el - anno.pos.sl; + var gutterAnno = { + guttertext: anno.message, + type: anno.level || "warning", + text: anno.message + // row will be filled in updateFloat() + }; + + function updateFloat(single) { + if (markerId) + mySession.removeMarker(markerId); + gutterAnno.row = anchor.row; + if (anno.pos.sc !== undefined && anno.pos.ec !== undefined) { + var range = new Range(anno.pos.sl, anno.pos.sc, anno.pos.el, anno.pos.ec); + //var range = Range.fromPoints(anchor.getPosition(), { + // row: anchor.row + rowDiff, + // column: anchor.column + colDiff + //}); + markerId = mySession.addMarker(range, "language_highlight_" + (anno.type ? anno.type : "default")); + } + if (single) mySession.setAnnotations(mySession.languageAnnos); + } + updateFloat(); + anchor.on("change", function() { + updateFloat(true); + }); + if (anno.message) mySession.languageAnnos.push(gutterAnno); + }); + mySession.setAnnotations(mySession.languageAnnos); + }; + + this.$id = "ace/mode/xquery"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/xquery/jsoniq_lexer.js b/plugins/node_modules/ace/lib/ace/mode/xquery/jsoniq_lexer.js new file mode 100644 index 00000000..f123f46f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xquery/jsoniq_lexer.js @@ -0,0 +1,4469 @@ +define(function(require, exports, module) { +module.exports = (function outer (modules, cache, entry) { + var previousRequire = typeof require == "function" && require; + function newRequire(name, jumped){ + if(!cache[name]) { + if(!modules[name]) { + var currentRequire = typeof require == "function" && require; + if (!jumped && currentRequire) return currentRequire(name, true); + if (previousRequire) return previousRequire(name, true); + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + var m = cache[name] = {exports:{}}; + modules[name][0].call(m.exports, function(x){ + var id = modules[name][1][x]; + return newRequire(id ? id : x); + },m,m.exports,outer,modules,cache,entry); + } + return cache[name].exports; + } + for(var i=0;i<entry.length;i++) newRequire(entry[i]); + return newRequire(entry[0]); +}) +({"/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js":[function(_dereq_,module,exports){ +// This file was generated on Thu Jul 24, 2014 15:01 (UTC+01) by REx v5.30 which is Copyright (c) 1979-2014 by Gunther Rademacher <grd@gmx.net> +// REx command line: JSONiqTokenizer.ebnf -ll 2 -backtrack -tree -javascript -a xqlint + + // line 2 "JSONiqTokenizer.ebnf" + var JSONiqTokenizer = exports.JSONiqTokenizer = function JSONiqTokenizer(string, parsingEventHandler) + { + init(string, parsingEventHandler); + // line 9 "JSONiqTokenizer.js" + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + end = e; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? JSONiqTokenizer.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = JSONiqTokenizer.getTokenSet(- e.getState()); + } + else + { + expected = [JSONiqTokenizer.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_start = function() + { + eventHandler.startNonterminal("start", e0); + lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | + // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // S^WS | EOF | '!' | '"' | '$$' | "'" | '(' | '(#' | '(:' | '(:~' | ')' | ',' | + // '.' | '/' | ':' | ';' | '<!--' | '<![CDATA[' | '<?' | '[' | ']' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'as' | 'ascending' | + // 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' | '{' | '|' | '}' + switch (l1) + { + case 58: // '<![CDATA[' + shift(58); // '<![CDATA[' + break; + case 57: // '<!--' + shift(57); // '<!--' + break; + case 59: // '<?' + shift(59); // '<?' + break; + case 43: // '(#' + shift(43); // '(#' + break; + case 45: // '(:~' + shift(45); // '(:~' + break; + case 44: // '(:' + shift(44); // '(:' + break; + case 37: // '"' + shift(37); // '"' + break; + case 41: // "'" + shift(41); // "'" + break; + case 277: // '}' + shift(277); // '}' + break; + case 274: // '{' + shift(274); // '{' + break; + case 42: // '(' + shift(42); // '(' + break; + case 46: // ')' + shift(46); // ')' + break; + case 52: // '/' + shift(52); // '/' + break; + case 65: // '[' + shift(65); // '[' + break; + case 66: // ']' + shift(66); // ']' + break; + case 49: // ',' + shift(49); // ',' + break; + case 51: // '.' + shift(51); // '.' + break; + case 56: // ';' + shift(56); // ';' + break; + case 54: // ':' + shift(54); // ':' + break; + case 36: // '!' + shift(36); // '!' + break; + case 276: // '|' + shift(276); // '|' + break; + case 40: // '$$' + shift(40); // '$$' + break; + case 5: // Annotation + shift(5); // Annotation + break; + case 4: // ModuleDecl + shift(4); // ModuleDecl + break; + case 6: // OptionDecl + shift(6); // OptionDecl + break; + case 15: // AttrTest + shift(15); // AttrTest + break; + case 16: // Wildcard + shift(16); // Wildcard + break; + case 18: // IntegerLiteral + shift(18); // IntegerLiteral + break; + case 19: // DecimalLiteral + shift(19); // DecimalLiteral + break; + case 20: // DoubleLiteral + shift(20); // DoubleLiteral + break; + case 8: // Variable + shift(8); // Variable + break; + case 9: // Tag + shift(9); // Tag + break; + case 7: // Operator + shift(7); // Operator + break; + case 35: // EOF + shift(35); // EOF + break; + default: + parse_EQName(); + } + eventHandler.endNonterminal("start", e0); + }; + + this.parse_StartTag = function() + { + eventHandler.startNonterminal("StartTag", e0); + lookahead1W(8); // QName | S^WS | EOF | '"' | "'" | '/>' | '=' | '>' + switch (l1) + { + case 61: // '>' + shift(61); // '>' + break; + case 53: // '/>' + shift(53); // '/>' + break; + case 29: // QName + shift(29); // QName + break; + case 60: // '=' + shift(60); // '=' + break; + case 37: // '"' + shift(37); // '"' + break; + case 41: // "'" + shift(41); // "'" + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("StartTag", e0); + }; + + this.parse_TagContent = function() + { + eventHandler.startNonterminal("TagContent", e0); + lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | + // '<!--' | '<![CDATA[' | '{' | '{{' | '}}' + switch (l1) + { + case 25: // ElementContentChar + shift(25); // ElementContentChar + break; + case 9: // Tag + shift(9); // Tag + break; + case 10: // EndTag + shift(10); // EndTag + break; + case 58: // '<![CDATA[' + shift(58); // '<![CDATA[' + break; + case 57: // '<!--' + shift(57); // '<!--' + break; + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 275: // '{{' + shift(275); // '{{' + break; + case 278: // '}}' + shift(278); // '}}' + break; + case 274: // '{' + shift(274); // '{' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("TagContent", e0); + }; + + this.parse_AposAttr = function() + { + eventHandler.startNonterminal("AposAttr", e0); + lookahead1(10); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | EOF | "'" | + // '{' | '{{' | '}}' + switch (l1) + { + case 23: // EscapeApos + shift(23); // EscapeApos + break; + case 27: // AposAttrContentChar + shift(27); // AposAttrContentChar + break; + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 275: // '{{' + shift(275); // '{{' + break; + case 278: // '}}' + shift(278); // '}}' + break; + case 274: // '{' + shift(274); // '{' + break; + case 41: // "'" + shift(41); // "'" + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("AposAttr", e0); + }; + + this.parse_QuotAttr = function() + { + eventHandler.startNonterminal("QuotAttr", e0); + lookahead1(9); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | EOF | '"' | + // '{' | '{{' | '}}' + switch (l1) + { + case 22: // EscapeQuot + shift(22); // EscapeQuot + break; + case 26: // QuotAttrContentChar + shift(26); // QuotAttrContentChar + break; + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 275: // '{{' + shift(275); // '{{' + break; + case 278: // '}}' + shift(278); // '}}' + break; + case 274: // '{' + shift(274); // '{' + break; + case 37: // '"' + shift(37); // '"' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("QuotAttr", e0); + }; + + this.parse_CData = function() + { + eventHandler.startNonterminal("CData", e0); + lookahead1(1); // CDataSectionContents | EOF | ']]>' + switch (l1) + { + case 14: // CDataSectionContents + shift(14); // CDataSectionContents + break; + case 67: // ']]>' + shift(67); // ']]>' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("CData", e0); + }; + + this.parse_XMLComment = function() + { + eventHandler.startNonterminal("XMLComment", e0); + lookahead1(0); // DirCommentContents | EOF | '-->' + switch (l1) + { + case 12: // DirCommentContents + shift(12); // DirCommentContents + break; + case 50: // '-->' + shift(50); // '-->' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("XMLComment", e0); + }; + + this.parse_PI = function() + { + eventHandler.startNonterminal("PI", e0); + lookahead1(3); // DirPIContents | EOF | '?' | '?>' + switch (l1) + { + case 13: // DirPIContents + shift(13); // DirPIContents + break; + case 62: // '?' + shift(62); // '?' + break; + case 63: // '?>' + shift(63); // '?>' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("PI", e0); + }; + + this.parse_Pragma = function() + { + eventHandler.startNonterminal("Pragma", e0); + lookahead1(2); // PragmaContents | EOF | '#' | '#)' + switch (l1) + { + case 11: // PragmaContents + shift(11); // PragmaContents + break; + case 38: // '#' + shift(38); // '#' + break; + case 39: // '#)' + shift(39); // '#)' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("Pragma", e0); + }; + + this.parse_Comment = function() + { + eventHandler.startNonterminal("Comment", e0); + lookahead1(4); // CommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 55: // ':)' + shift(55); // ':)' + break; + case 44: // '(:' + shift(44); // '(:' + break; + case 32: // CommentContents + shift(32); // CommentContents + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("Comment", e0); + }; + + this.parse_CommentDoc = function() + { + eventHandler.startNonterminal("CommentDoc", e0); + lookahead1(6); // DocTag | DocCommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 33: // DocTag + shift(33); // DocTag + break; + case 34: // DocCommentContents + shift(34); // DocCommentContents + break; + case 55: // ':)' + shift(55); // ':)' + break; + case 44: // '(:' + shift(44); // '(:' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("CommentDoc", e0); + }; + + this.parse_QuotString = function() + { + eventHandler.startNonterminal("QuotString", e0); + lookahead1(5); // JSONChar | JSONCharRef | JSONPredefinedCharRef | EOF | '"' + switch (l1) + { + case 3: // JSONPredefinedCharRef + shift(3); // JSONPredefinedCharRef + break; + case 2: // JSONCharRef + shift(2); // JSONCharRef + break; + case 1: // JSONChar + shift(1); // JSONChar + break; + case 37: // '"' + shift(37); // '"' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("QuotString", e0); + }; + + this.parse_AposString = function() + { + eventHandler.startNonterminal("AposString", e0); + lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" + switch (l1) + { + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 23: // EscapeApos + shift(23); // EscapeApos + break; + case 24: // AposChar + shift(24); // AposChar + break; + case 41: // "'" + shift(41); // "'" + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("AposString", e0); + }; + + this.parse_Prefix = function() + { + eventHandler.startNonterminal("Prefix", e0); + lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + }; + + this.parse__EQName = function() + { + eventHandler.startNonterminal("_EQName", e0); + lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_EQName(); + eventHandler.endNonterminal("_EQName", e0); + }; + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + switch (l1) + { + case 80: // 'attribute' + shift(80); // 'attribute' + break; + case 94: // 'comment' + shift(94); // 'comment' + break; + case 118: // 'document-node' + shift(118); // 'document-node' + break; + case 119: // 'element' + shift(119); // 'element' + break; + case 122: // 'empty-sequence' + shift(122); // 'empty-sequence' + break; + case 143: // 'function' + shift(143); // 'function' + break; + case 150: // 'if' + shift(150); // 'if' + break; + case 163: // 'item' + shift(163); // 'item' + break; + case 183: // 'namespace-node' + shift(183); // 'namespace-node' + break; + case 189: // 'node' + shift(189); // 'node' + break; + case 214: // 'processing-instruction' + shift(214); // 'processing-instruction' + break; + case 224: // 'schema-attribute' + shift(224); // 'schema-attribute' + break; + case 225: // 'schema-element' + shift(225); // 'schema-element' + break; + case 241: // 'switch' + shift(241); // 'switch' + break; + case 242: // 'text' + shift(242); // 'text' + break; + case 251: // 'typeswitch' + shift(251); // 'typeswitch' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 17: // EQName^Token + shift(17); // EQName^Token + break; + case 68: // 'after' + shift(68); // 'after' + break; + case 71: // 'ancestor' + shift(71); // 'ancestor' + break; + case 72: // 'ancestor-or-self' + shift(72); // 'ancestor-or-self' + break; + case 73: // 'and' + shift(73); // 'and' + break; + case 77: // 'as' + shift(77); // 'as' + break; + case 78: // 'ascending' + shift(78); // 'ascending' + break; + case 82: // 'before' + shift(82); // 'before' + break; + case 86: // 'case' + shift(86); // 'case' + break; + case 87: // 'cast' + shift(87); // 'cast' + break; + case 88: // 'castable' + shift(88); // 'castable' + break; + case 91: // 'child' + shift(91); // 'child' + break; + case 92: // 'collation' + shift(92); // 'collation' + break; + case 101: // 'copy' + shift(101); // 'copy' + break; + case 103: // 'count' + shift(103); // 'count' + break; + case 106: // 'declare' + shift(106); // 'declare' + break; + case 107: // 'default' + shift(107); // 'default' + break; + case 108: // 'delete' + shift(108); // 'delete' + break; + case 109: // 'descendant' + shift(109); // 'descendant' + break; + case 110: // 'descendant-or-self' + shift(110); // 'descendant-or-self' + break; + case 111: // 'descending' + shift(111); // 'descending' + break; + case 116: // 'div' + shift(116); // 'div' + break; + case 117: // 'document' + shift(117); // 'document' + break; + case 120: // 'else' + shift(120); // 'else' + break; + case 121: // 'empty' + shift(121); // 'empty' + break; + case 124: // 'end' + shift(124); // 'end' + break; + case 126: // 'eq' + shift(126); // 'eq' + break; + case 127: // 'every' + shift(127); // 'every' + break; + case 129: // 'except' + shift(129); // 'except' + break; + case 132: // 'first' + shift(132); // 'first' + break; + case 133: // 'following' + shift(133); // 'following' + break; + case 134: // 'following-sibling' + shift(134); // 'following-sibling' + break; + case 135: // 'for' + shift(135); // 'for' + break; + case 144: // 'ge' + shift(144); // 'ge' + break; + case 146: // 'group' + shift(146); // 'group' + break; + case 148: // 'gt' + shift(148); // 'gt' + break; + case 149: // 'idiv' + shift(149); // 'idiv' + break; + case 151: // 'import' + shift(151); // 'import' + break; + case 157: // 'insert' + shift(157); // 'insert' + break; + case 158: // 'instance' + shift(158); // 'instance' + break; + case 160: // 'intersect' + shift(160); // 'intersect' + break; + case 161: // 'into' + shift(161); // 'into' + break; + case 162: // 'is' + shift(162); // 'is' + break; + case 168: // 'last' + shift(168); // 'last' + break; + case 170: // 'le' + shift(170); // 'le' + break; + case 172: // 'let' + shift(172); // 'let' + break; + case 176: // 'lt' + shift(176); // 'lt' + break; + case 178: // 'mod' + shift(178); // 'mod' + break; + case 179: // 'modify' + shift(179); // 'modify' + break; + case 180: // 'module' + shift(180); // 'module' + break; + case 182: // 'namespace' + shift(182); // 'namespace' + break; + case 184: // 'ne' + shift(184); // 'ne' + break; + case 196: // 'only' + shift(196); // 'only' + break; + case 198: // 'or' + shift(198); // 'or' + break; + case 199: // 'order' + shift(199); // 'order' + break; + case 200: // 'ordered' + shift(200); // 'ordered' + break; + case 204: // 'parent' + shift(204); // 'parent' + break; + case 210: // 'preceding' + shift(210); // 'preceding' + break; + case 211: // 'preceding-sibling' + shift(211); // 'preceding-sibling' + break; + case 216: // 'rename' + shift(216); // 'rename' + break; + case 217: // 'replace' + shift(217); // 'replace' + break; + case 218: // 'return' + shift(218); // 'return' + break; + case 222: // 'satisfies' + shift(222); // 'satisfies' + break; + case 227: // 'self' + shift(227); // 'self' + break; + case 233: // 'some' + shift(233); // 'some' + break; + case 234: // 'stable' + shift(234); // 'stable' + break; + case 235: // 'start' + shift(235); // 'start' + break; + case 246: // 'to' + shift(246); // 'to' + break; + case 247: // 'treat' + shift(247); // 'treat' + break; + case 248: // 'try' + shift(248); // 'try' + break; + case 252: // 'union' + shift(252); // 'union' + break; + case 254: // 'unordered' + shift(254); // 'unordered' + break; + case 258: // 'validate' + shift(258); // 'validate' + break; + case 264: // 'where' + shift(264); // 'where' + break; + case 268: // 'with' + shift(268); // 'with' + break; + case 272: // 'xquery' + shift(272); // 'xquery' + break; + case 70: // 'allowing' + shift(70); // 'allowing' + break; + case 79: // 'at' + shift(79); // 'at' + break; + case 81: // 'base-uri' + shift(81); // 'base-uri' + break; + case 83: // 'boundary-space' + shift(83); // 'boundary-space' + break; + case 84: // 'break' + shift(84); // 'break' + break; + case 89: // 'catch' + shift(89); // 'catch' + break; + case 96: // 'construction' + shift(96); // 'construction' + break; + case 99: // 'context' + shift(99); // 'context' + break; + case 100: // 'continue' + shift(100); // 'continue' + break; + case 102: // 'copy-namespaces' + shift(102); // 'copy-namespaces' + break; + case 104: // 'decimal-format' + shift(104); // 'decimal-format' + break; + case 123: // 'encoding' + shift(123); // 'encoding' + break; + case 130: // 'exit' + shift(130); // 'exit' + break; + case 131: // 'external' + shift(131); // 'external' + break; + case 139: // 'ft-option' + shift(139); // 'ft-option' + break; + case 152: // 'in' + shift(152); // 'in' + break; + case 153: // 'index' + shift(153); // 'index' + break; + case 159: // 'integrity' + shift(159); // 'integrity' + break; + case 169: // 'lax' + shift(169); // 'lax' + break; + case 190: // 'nodes' + shift(190); // 'nodes' + break; + case 197: // 'option' + shift(197); // 'option' + break; + case 201: // 'ordering' + shift(201); // 'ordering' + break; + case 220: // 'revalidation' + shift(220); // 'revalidation' + break; + case 223: // 'schema' + shift(223); // 'schema' + break; + case 226: // 'score' + shift(226); // 'score' + break; + case 232: // 'sliding' + shift(232); // 'sliding' + break; + case 238: // 'strict' + shift(238); // 'strict' + break; + case 249: // 'tumbling' + shift(249); // 'tumbling' + break; + case 250: // 'type' + shift(250); // 'type' + break; + case 255: // 'updating' + shift(255); // 'updating' + break; + case 259: // 'value' + shift(259); // 'value' + break; + case 260: // 'variable' + shift(260); // 'variable' + break; + case 261: // 'version' + shift(261); // 'version' + break; + case 265: // 'while' + shift(265); // 'while' + break; + case 95: // 'constraint' + shift(95); // 'constraint' + break; + case 174: // 'loop' + shift(174); // 'loop' + break; + default: + shift(219); // 'returning' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 28: // NCName^Token + shift(28); // NCName^Token + break; + case 68: // 'after' + shift(68); // 'after' + break; + case 73: // 'and' + shift(73); // 'and' + break; + case 77: // 'as' + shift(77); // 'as' + break; + case 78: // 'ascending' + shift(78); // 'ascending' + break; + case 82: // 'before' + shift(82); // 'before' + break; + case 86: // 'case' + shift(86); // 'case' + break; + case 87: // 'cast' + shift(87); // 'cast' + break; + case 88: // 'castable' + shift(88); // 'castable' + break; + case 92: // 'collation' + shift(92); // 'collation' + break; + case 103: // 'count' + shift(103); // 'count' + break; + case 107: // 'default' + shift(107); // 'default' + break; + case 111: // 'descending' + shift(111); // 'descending' + break; + case 116: // 'div' + shift(116); // 'div' + break; + case 120: // 'else' + shift(120); // 'else' + break; + case 121: // 'empty' + shift(121); // 'empty' + break; + case 124: // 'end' + shift(124); // 'end' + break; + case 126: // 'eq' + shift(126); // 'eq' + break; + case 129: // 'except' + shift(129); // 'except' + break; + case 135: // 'for' + shift(135); // 'for' + break; + case 144: // 'ge' + shift(144); // 'ge' + break; + case 146: // 'group' + shift(146); // 'group' + break; + case 148: // 'gt' + shift(148); // 'gt' + break; + case 149: // 'idiv' + shift(149); // 'idiv' + break; + case 158: // 'instance' + shift(158); // 'instance' + break; + case 160: // 'intersect' + shift(160); // 'intersect' + break; + case 161: // 'into' + shift(161); // 'into' + break; + case 162: // 'is' + shift(162); // 'is' + break; + case 170: // 'le' + shift(170); // 'le' + break; + case 172: // 'let' + shift(172); // 'let' + break; + case 176: // 'lt' + shift(176); // 'lt' + break; + case 178: // 'mod' + shift(178); // 'mod' + break; + case 179: // 'modify' + shift(179); // 'modify' + break; + case 184: // 'ne' + shift(184); // 'ne' + break; + case 196: // 'only' + shift(196); // 'only' + break; + case 198: // 'or' + shift(198); // 'or' + break; + case 199: // 'order' + shift(199); // 'order' + break; + case 218: // 'return' + shift(218); // 'return' + break; + case 222: // 'satisfies' + shift(222); // 'satisfies' + break; + case 234: // 'stable' + shift(234); // 'stable' + break; + case 235: // 'start' + shift(235); // 'start' + break; + case 246: // 'to' + shift(246); // 'to' + break; + case 247: // 'treat' + shift(247); // 'treat' + break; + case 252: // 'union' + shift(252); // 'union' + break; + case 264: // 'where' + shift(264); // 'where' + break; + case 268: // 'with' + shift(268); // 'with' + break; + case 71: // 'ancestor' + shift(71); // 'ancestor' + break; + case 72: // 'ancestor-or-self' + shift(72); // 'ancestor-or-self' + break; + case 80: // 'attribute' + shift(80); // 'attribute' + break; + case 91: // 'child' + shift(91); // 'child' + break; + case 94: // 'comment' + shift(94); // 'comment' + break; + case 101: // 'copy' + shift(101); // 'copy' + break; + case 106: // 'declare' + shift(106); // 'declare' + break; + case 108: // 'delete' + shift(108); // 'delete' + break; + case 109: // 'descendant' + shift(109); // 'descendant' + break; + case 110: // 'descendant-or-self' + shift(110); // 'descendant-or-self' + break; + case 117: // 'document' + shift(117); // 'document' + break; + case 118: // 'document-node' + shift(118); // 'document-node' + break; + case 119: // 'element' + shift(119); // 'element' + break; + case 122: // 'empty-sequence' + shift(122); // 'empty-sequence' + break; + case 127: // 'every' + shift(127); // 'every' + break; + case 132: // 'first' + shift(132); // 'first' + break; + case 133: // 'following' + shift(133); // 'following' + break; + case 134: // 'following-sibling' + shift(134); // 'following-sibling' + break; + case 143: // 'function' + shift(143); // 'function' + break; + case 150: // 'if' + shift(150); // 'if' + break; + case 151: // 'import' + shift(151); // 'import' + break; + case 157: // 'insert' + shift(157); // 'insert' + break; + case 163: // 'item' + shift(163); // 'item' + break; + case 168: // 'last' + shift(168); // 'last' + break; + case 180: // 'module' + shift(180); // 'module' + break; + case 182: // 'namespace' + shift(182); // 'namespace' + break; + case 183: // 'namespace-node' + shift(183); // 'namespace-node' + break; + case 189: // 'node' + shift(189); // 'node' + break; + case 200: // 'ordered' + shift(200); // 'ordered' + break; + case 204: // 'parent' + shift(204); // 'parent' + break; + case 210: // 'preceding' + shift(210); // 'preceding' + break; + case 211: // 'preceding-sibling' + shift(211); // 'preceding-sibling' + break; + case 214: // 'processing-instruction' + shift(214); // 'processing-instruction' + break; + case 216: // 'rename' + shift(216); // 'rename' + break; + case 217: // 'replace' + shift(217); // 'replace' + break; + case 224: // 'schema-attribute' + shift(224); // 'schema-attribute' + break; + case 225: // 'schema-element' + shift(225); // 'schema-element' + break; + case 227: // 'self' + shift(227); // 'self' + break; + case 233: // 'some' + shift(233); // 'some' + break; + case 241: // 'switch' + shift(241); // 'switch' + break; + case 242: // 'text' + shift(242); // 'text' + break; + case 248: // 'try' + shift(248); // 'try' + break; + case 251: // 'typeswitch' + shift(251); // 'typeswitch' + break; + case 254: // 'unordered' + shift(254); // 'unordered' + break; + case 258: // 'validate' + shift(258); // 'validate' + break; + case 260: // 'variable' + shift(260); // 'variable' + break; + case 272: // 'xquery' + shift(272); // 'xquery' + break; + case 70: // 'allowing' + shift(70); // 'allowing' + break; + case 79: // 'at' + shift(79); // 'at' + break; + case 81: // 'base-uri' + shift(81); // 'base-uri' + break; + case 83: // 'boundary-space' + shift(83); // 'boundary-space' + break; + case 84: // 'break' + shift(84); // 'break' + break; + case 89: // 'catch' + shift(89); // 'catch' + break; + case 96: // 'construction' + shift(96); // 'construction' + break; + case 99: // 'context' + shift(99); // 'context' + break; + case 100: // 'continue' + shift(100); // 'continue' + break; + case 102: // 'copy-namespaces' + shift(102); // 'copy-namespaces' + break; + case 104: // 'decimal-format' + shift(104); // 'decimal-format' + break; + case 123: // 'encoding' + shift(123); // 'encoding' + break; + case 130: // 'exit' + shift(130); // 'exit' + break; + case 131: // 'external' + shift(131); // 'external' + break; + case 139: // 'ft-option' + shift(139); // 'ft-option' + break; + case 152: // 'in' + shift(152); // 'in' + break; + case 153: // 'index' + shift(153); // 'index' + break; + case 159: // 'integrity' + shift(159); // 'integrity' + break; + case 169: // 'lax' + shift(169); // 'lax' + break; + case 190: // 'nodes' + shift(190); // 'nodes' + break; + case 197: // 'option' + shift(197); // 'option' + break; + case 201: // 'ordering' + shift(201); // 'ordering' + break; + case 220: // 'revalidation' + shift(220); // 'revalidation' + break; + case 223: // 'schema' + shift(223); // 'schema' + break; + case 226: // 'score' + shift(226); // 'score' + break; + case 232: // 'sliding' + shift(232); // 'sliding' + break; + case 238: // 'strict' + shift(238); // 'strict' + break; + case 249: // 'tumbling' + shift(249); // 'tumbling' + break; + case 250: // 'type' + shift(250); // 'type' + break; + case 255: // 'updating' + shift(255); // 'updating' + break; + case 259: // 'value' + shift(259); // 'value' + break; + case 261: // 'version' + shift(261); // 'version' + break; + case 265: // 'while' + shift(265); // 'while' + break; + case 95: // 'constraint' + shift(95); // 'constraint' + break; + case 174: // 'loop' + shift(174); // 'loop' + break; + default: + shift(219); // 'returning' + } + eventHandler.endNonterminal("NCName", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(JSONiqTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = 0; + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function whitespace() + { + if (e0 != b1) + { + b0 = e0; + e0 = b1; + eventHandler.whitespace(b0, e0); + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 30) // S^WS + { + break; + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function error(b, e, s, l, t) + { + throw new self.ParseException(b, e, s, l, t); + } + + var lk, b0, e0; + var l1, b1, e1; + var eventHandler; + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = JSONiqTokenizer.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = JSONiqTokenizer.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = JSONiqTokenizer.MAP1[(c0 & 15) + JSONiqTokenizer.MAP1[(c1 & 31) + JSONiqTokenizer.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (JSONiqTokenizer.MAP2[m] > c0) hi = m - 1; + else if (JSONiqTokenizer.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = JSONiqTokenizer.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = JSONiqTokenizer.TRANSITION[(i0 & 15) + JSONiqTokenizer.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +JSONiqTokenizer.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 279; i += 32) + { + var j = i; + var i0 = (i >> 5) * 2066 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = JSONiqTokenizer.EXPECTED[(i0 & 3) + JSONiqTokenizer.EXPECTED[(i1 & 3) + JSONiqTokenizer.EXPECTED[(i2 & 3) + JSONiqTokenizer.EXPECTED[i2 >> 2]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(JSONiqTokenizer.TOKEN[j]); + } + } + } + return set; +}; + +JSONiqTokenizer.MAP0 = +[ + /* 0 */ 67, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, + /* 36 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, + /* 64 */ 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, + /* 91 */ 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + /* 118 */ 58, 59, 60, 61, 31, 62, 63, 64, 65, 37 +]; + +JSONiqTokenizer.MAP1 = +[ + /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, + /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 105 */ 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, + /* 126 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, + /* 147 */ 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, + /* 168 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, + /* 189 */ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + /* 210 */ 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + /* 231 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 67, 0, 0, 0, 0, 0, 0, 0, 0, + /* 256 */ 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 290 */ 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, + /* 317 */ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 37, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + /* 344 */ 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, + /* 371 */ 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 31, 62, 63, 64, 65, 37, 37, 37, 37, + /* 398 */ 37, 37, 37, 37, 37, 37, 37, 37, 31, 31, 37, 37, 37, 37, 37, 37, 37, 66, 37, 37, 37, 37, 37, 37, 37, 37, 37, + /* 425 */ 37, 37, 37, 37, 37, 37, 37, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 +]; + +JSONiqTokenizer.MAP2 = +[ + /* 0 */ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 37, 31, 37, 31, 31, + /* 17 */ 37 +]; + +JSONiqTokenizer.INITIAL = +[ + /* 0 */ 1, 2, 49155, 57348, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +JSONiqTokenizer.TRANSITION = +[ + /* 0 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 30 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 45 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 60 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 75 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 90 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 105 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 120 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 135 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 150 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 165 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 180 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 195 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 210 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 225 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 240 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 255 */ 19058, 17408, 19288, 17439, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, + /* 270 */ 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, 17689, + /* 285 */ 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, 17705, + /* 300 */ 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, 17878, + /* 315 */ 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, + /* 330 */ 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, 18294, + /* 345 */ 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, 18497, + /* 360 */ 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, + /* 375 */ 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, 19058, + /* 390 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 405 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 420 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 435 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 450 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 465 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 480 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 495 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 510 */ 19058, 19058, 19074, 36169, 17439, 36866, 17466, 36890, 36866, 22314, 19105, 22987, 17556, 17575, 22288, + /* 525 */ 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, + /* 540 */ 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, + /* 555 */ 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, + /* 570 */ 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, + /* 585 */ 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, + /* 600 */ 18294, 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, + /* 615 */ 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, + /* 630 */ 17450, 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, + /* 645 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 660 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 675 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 690 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 705 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 720 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 735 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 750 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 765 */ 19058, 19058, 19058, 22182, 19288, 19121, 36866, 17466, 18345, 36866, 21991, 22971, 22987, 17556, 17575, + /* 780 */ 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, + /* 795 */ 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, + /* 810 */ 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, + /* 825 */ 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, + /* 840 */ 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, + /* 855 */ 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, + /* 870 */ 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, + /* 885 */ 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, + /* 900 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 915 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 930 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 945 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 960 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 975 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 990 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1005 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1020 */ 19058, 19058, 19058, 19058, 19273, 19552, 19304, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, + /* 1035 */ 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, + /* 1050 */ 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, + /* 1065 */ 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, + /* 1080 */ 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, + /* 1095 */ 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, + /* 1110 */ 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, + /* 1125 */ 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, + /* 1140 */ 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, + /* 1155 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1170 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1185 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1200 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1215 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1230 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1245 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1260 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1275 */ 19058, 19058, 19058, 19058, 19058, 19332, 17423, 19363, 36866, 17466, 17537, 36866, 21991, 22971, 22987, + /* 1290 */ 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 18614, 18622, + /* 1305 */ 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 19391, 36867, 19404, 20299, 36866, 17647, + /* 1320 */ 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 19427, 18403, 18928, 19521, + /* 1335 */ 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, + /* 1350 */ 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, + /* 1365 */ 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, + /* 1380 */ 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, + /* 1395 */ 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, + /* 1410 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1425 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1440 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1455 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1470 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1485 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1500 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1515 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1530 */ 19058, 19058, 19058, 19058, 19058, 19058, 36154, 19288, 19457, 36866, 17466, 17740, 36866, 21991, 22971, + /* 1545 */ 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, + /* 1560 */ 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, + /* 1575 */ 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, + /* 1590 */ 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, + /* 1605 */ 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, + /* 1620 */ 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, + /* 1635 */ 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, + /* 1650 */ 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, + /* 1665 */ 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1680 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1695 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1710 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1725 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1740 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1755 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1770 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1785 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22780, 19288, 19457, 36866, 17466, 36890, 36866, 21991, + /* 1800 */ 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, + /* 1815 */ 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, + /* 1830 */ 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, + /* 1845 */ 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, + /* 1860 */ 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, + /* 1875 */ 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, + /* 1890 */ 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, + /* 1905 */ 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, + /* 1920 */ 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1935 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1950 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1965 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1980 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1995 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2010 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2025 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2040 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22375, 22197, 18469, 36866, 17466, 36890, 36866, + /* 2055 */ 21991, 24018, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21331, 22984, 17553, 17572, 22285, + /* 2070 */ 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 19485, 19501, 36867, 19404, + /* 2085 */ 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, + /* 2100 */ 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, + /* 2115 */ 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, + /* 2130 */ 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, + /* 2145 */ 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, + /* 2160 */ 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, + /* 2175 */ 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2190 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2205 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2220 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2235 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2250 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2265 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2280 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2295 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19537, 22390, 19568, 36866, 17466, 36890, + /* 2310 */ 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, + /* 2325 */ 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, + /* 2340 */ 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, + /* 2355 */ 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, + /* 2370 */ 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, + /* 2385 */ 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, + /* 2400 */ 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, + /* 2415 */ 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, + /* 2430 */ 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2445 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2460 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2475 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2490 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2505 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2520 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2535 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2550 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19596, 19611, 19457, 36866, 17466, + /* 2565 */ 36890, 36866, 18246, 19627, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, + /* 2580 */ 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, + /* 2595 */ 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, + /* 2610 */ 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, + /* 2625 */ 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, + /* 2640 */ 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, + /* 2655 */ 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, + /* 2670 */ 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, + /* 2685 */ 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2700 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2715 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2730 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2745 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2760 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2775 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2790 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2805 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22242, 20553, 19457, 36866, + /* 2820 */ 17466, 36890, 36866, 18648, 30477, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, + /* 2835 */ 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, + /* 2850 */ 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, + /* 2865 */ 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, + /* 2880 */ 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, + /* 2895 */ 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, + /* 2910 */ 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, + /* 2925 */ 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, + /* 2940 */ 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2955 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2970 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2985 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3000 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3015 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3030 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3045 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3060 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36472, 19288, 19457, + /* 3075 */ 36866, 17466, 17809, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21770, + /* 3090 */ 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, + /* 3105 */ 17619, 19643, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, + /* 3120 */ 17784, 17800, 17825, 19672, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, + /* 3135 */ 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, + /* 3150 */ 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, + /* 3165 */ 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, + /* 3180 */ 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, + /* 3195 */ 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3210 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3225 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3240 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3255 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3270 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3285 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3300 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3315 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 20538, 19288, + /* 3330 */ 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, + /* 3345 */ 17975, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, + /* 3360 */ 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, + /* 3375 */ 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, + /* 3390 */ 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, + /* 3405 */ 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, + /* 3420 */ 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, + /* 3435 */ 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, + /* 3450 */ 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3465 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3480 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3495 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3510 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3525 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3540 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3555 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3570 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22345, + /* 3585 */ 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, + /* 3600 */ 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, + /* 3615 */ 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, + /* 3630 */ 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, + /* 3645 */ 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, + /* 3660 */ 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, + /* 3675 */ 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, + /* 3690 */ 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, + /* 3705 */ 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3720 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3735 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3750 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3765 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3780 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3795 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3810 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3825 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3840 */ 19726, 19742, 21529, 24035, 23112, 26225, 23511, 27749, 27397, 24035, 34360, 24035, 24036, 23114, 35166, + /* 3855 */ 23114, 23114, 19758, 23511, 35247, 23511, 23511, 28447, 19803, 24035, 24035, 24035, 24035, 26576, 23114, + /* 3870 */ 23114, 23114, 23114, 24254, 19821, 23511, 23511, 23511, 23511, 23512, 19441, 36539, 24035, 24035, 24035, + /* 3885 */ 24035, 19846, 19869, 23114, 23114, 23114, 28618, 32187, 19892, 23511, 23511, 23511, 34585, 20402, 36647, + /* 3900 */ 24035, 24035, 24036, 23114, 33757, 23114, 23114, 23029, 20271, 23511, 27070, 23511, 23511, 30562, 24035, + /* 3915 */ 24035, 29274, 26576, 23114, 23114, 31118, 23036, 29695, 23511, 23511, 32431, 23634, 30821, 24035, 23110, + /* 3930 */ 19913, 23114, 23467, 31261, 23261, 34299, 19932, 24035, 32609, 19965, 35389, 19984, 27689, 19830, 29391, + /* 3945 */ 29337, 20041, 22643, 35619, 33728, 20062, 20121, 20166, 35100, 26145, 20211, 23008, 19876, 20208, 20227, + /* 3960 */ 25670, 20132, 26578, 27685, 20141, 20243, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, + /* 3975 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3990 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4005 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4020 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4035 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4050 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4065 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4080 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4095 */ 19058, 36094, 19288, 19457, 36866, 17466, 21724, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, + /* 4110 */ 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, + /* 4125 */ 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, + /* 4140 */ 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, + /* 4155 */ 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, + /* 4170 */ 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, + /* 4185 */ 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, + /* 4200 */ 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, + /* 4215 */ 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, + /* 4230 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4245 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4260 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4275 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4290 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4305 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4320 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4335 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4350 */ 19058, 19058, 22735, 19552, 20287, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, + /* 4365 */ 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, + /* 4380 */ 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, + /* 4395 */ 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, + /* 4410 */ 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, + /* 4425 */ 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, + /* 4440 */ 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, + /* 4455 */ 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, + /* 4470 */ 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, + /* 4485 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4500 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4515 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4530 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4545 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4560 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4575 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4590 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4605 */ 19058, 19058, 19058, 22750, 19288, 21529, 24035, 23112, 28056, 23511, 29483, 28756, 24035, 24035, 24035, + /* 4620 */ 24036, 23114, 23114, 23114, 23114, 20327, 23511, 23511, 23511, 23511, 31156, 19803, 24035, 24035, 24035, + /* 4635 */ 24035, 26576, 23114, 23114, 23114, 23114, 24254, 20371, 23511, 23511, 23511, 23511, 27443, 20395, 24035, + /* 4650 */ 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 29457, 29700, 23511, 23511, 23511, 23511, + /* 4665 */ 33444, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 28350, 20421, 23511, 23511, 23511, + /* 4680 */ 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 20447, 20475, 23511, 23511, 23511, 23634, + /* 4695 */ 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, + /* 4710 */ 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, + /* 4725 */ 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, + /* 4740 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4755 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4770 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4785 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4800 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4815 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4830 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4845 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4860 */ 19058, 19058, 19058, 19058, 20523, 22257, 20569, 20783, 21715, 17603, 20699, 20837, 20614, 20630, 21149, + /* 4875 */ 20670, 21405, 17486, 17509, 17525, 18373, 19179, 20695, 20716, 20732, 20755, 19194, 18042, 21641, 20592, + /* 4890 */ 20779, 20598, 21412, 17470, 17591, 20896, 17468, 17619, 20799, 20700, 21031, 20744, 20699, 20828, 18075, + /* 4905 */ 21259, 20581, 20853, 18048, 20868, 20884, 17756, 17784, 17800, 17825, 17854, 21171, 21200, 20931, 20947, + /* 4920 */ 21378, 20955, 20971, 18086, 20645, 21002, 20986, 18178, 17960, 18012, 18381, 18064, 29176, 21044, 21438, + /* 4935 */ 21018, 21122, 21393, 21060, 21844, 21094, 20654, 17493, 18150, 18166, 18214, 25967, 20763, 21799, 21110, + /* 4950 */ 21830, 21138, 21246, 21301, 18336, 18361, 21165, 21187, 20812, 21216, 21232, 21287, 21317, 18553, 21347, + /* 4965 */ 21363, 21428, 21454, 21271, 21483, 21499, 21515, 21575, 21467, 18712, 21591, 21633, 21078, 18189, 18198, + /* 4980 */ 20679, 21657, 21701, 21074, 21687, 21740, 21756, 21786, 21815, 21860, 21876, 21892, 21946, 21962, 19058, + /* 4995 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5010 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5025 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5040 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5055 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5070 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5085 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5100 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5115 */ 19058, 19058, 19058, 19058, 19058, 36457, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, + /* 5130 */ 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 36813, 17990, 18622, + /* 5145 */ 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, + /* 5160 */ 21981, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, + /* 5175 */ 17712, 37008, 22151, 22007, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 27898, 17884, + /* 5190 */ 18890, 17906, 17928, 22042, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 22070, 22112, 25026, 18134, + /* 5205 */ 36935, 18262, 18278, 18294, 18320, 18336, 18361, 22142, 18274, 22096, 18304, 18448, 18485, 18523, 18553, + /* 5220 */ 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, + /* 5235 */ 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, + /* 5250 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5265 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5280 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5295 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5310 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5325 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5340 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5355 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5370 */ 19058, 19058, 19058, 19058, 19058, 19058, 36109, 19288, 18469, 36866, 17466, 36890, 36866, 21991, 22971, + /* 5385 */ 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, + /* 5400 */ 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, + /* 5415 */ 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, + /* 5430 */ 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, + /* 5445 */ 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, + /* 5460 */ 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, + /* 5475 */ 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, + /* 5490 */ 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, + /* 5505 */ 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5520 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5535 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5550 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5565 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5580 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5595 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5610 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5625 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22167, 19288, 19457, 36866, 17466, 17768, 36866, 21991, + /* 5640 */ 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, + /* 5655 */ 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, + /* 5670 */ 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, + /* 5685 */ 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, + /* 5700 */ 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, + /* 5715 */ 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, + /* 5730 */ 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, + /* 5745 */ 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, + /* 5760 */ 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5775 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5790 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5805 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5820 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5835 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5850 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5865 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5880 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22227, 36487, 22273, 36866, 17466, 36890, 36866, + /* 5895 */ 19316, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, + /* 5910 */ 18749, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, + /* 5925 */ 20299, 36866, 17647, 22304, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, + /* 5940 */ 18403, 18928, 19521, 17712, 37008, 19580, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, + /* 5955 */ 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, + /* 5970 */ 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, + /* 5985 */ 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, + /* 6000 */ 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, + /* 6015 */ 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6030 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6045 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6060 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6075 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6090 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6105 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6120 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6135 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22330, 19089, 19457, 36866, 17466, 18721, + /* 6150 */ 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, + /* 6165 */ 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, + /* 6180 */ 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, + /* 6195 */ 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, + /* 6210 */ 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, + /* 6225 */ 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, + /* 6240 */ 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, + /* 6255 */ 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, + /* 6270 */ 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6285 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6300 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6315 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6330 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6345 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6360 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6375 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6390 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22765, 19347, 19457, 36866, 17466, + /* 6405 */ 36890, 36866, 18114, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, + /* 6420 */ 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, + /* 6435 */ 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, + /* 6450 */ 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, + /* 6465 */ 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, + /* 6480 */ 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, + /* 6495 */ 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, + /* 6510 */ 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, + /* 6525 */ 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6540 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6555 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6570 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6585 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6600 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6615 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6630 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6645 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, + /* 6660 */ 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, + /* 6675 */ 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, + /* 6690 */ 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, + /* 6705 */ 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34541, 20402, 24035, 24035, 24035, 24036, 23114, + /* 6720 */ 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, + /* 6735 */ 23114, 23114, 32683, 22516, 23511, 23511, 23511, 22540, 24035, 24035, 23110, 23114, 23114, 20499, 23511, + /* 6750 */ 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, + /* 6765 */ 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, + /* 6780 */ 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6795 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6810 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6825 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6840 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6855 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6870 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6885 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6900 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, + /* 6915 */ 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, + /* 6930 */ 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, + /* 6945 */ 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, + /* 6960 */ 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, + /* 6975 */ 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, + /* 6990 */ 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, + /* 7005 */ 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, + /* 7020 */ 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, + /* 7035 */ 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7050 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7065 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7080 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7095 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7110 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7125 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7140 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7155 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, + /* 7170 */ 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, + /* 7185 */ 22420, 23511, 23511, 23511, 23511, 29908, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, + /* 7200 */ 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, + /* 7215 */ 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, + /* 7230 */ 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, + /* 7245 */ 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, + /* 7260 */ 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, + /* 7275 */ 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, + /* 7290 */ 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7305 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7320 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7335 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7350 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7365 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7380 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7395 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7410 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, + /* 7425 */ 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, + /* 7440 */ 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, + /* 7455 */ 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22561, 24035, 24035, 24035, 24035, 24035, + /* 7470 */ 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, + /* 7485 */ 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, + /* 7500 */ 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, + /* 7515 */ 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, + /* 7530 */ 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, + /* 7545 */ 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7560 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7575 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7590 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7605 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7620 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7635 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7650 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7665 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7680 */ 36079, 19288, 21605, 24035, 23112, 23837, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, + /* 7695 */ 23114, 23114, 22584, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, + /* 7710 */ 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, + /* 7725 */ 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, + /* 7740 */ 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, + /* 7755 */ 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, + /* 7770 */ 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, + /* 7785 */ 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, + /* 7800 */ 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, + /* 7815 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7830 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7845 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7860 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7875 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7890 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7905 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7920 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7935 */ 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, + /* 7950 */ 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, + /* 7965 */ 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, + /* 7980 */ 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, + /* 7995 */ 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, + /* 8010 */ 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, + /* 8025 */ 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, + /* 8040 */ 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, + /* 8055 */ 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, + /* 8070 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8085 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8100 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8115 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8130 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8145 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8160 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8175 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8190 */ 19058, 19058, 36442, 19288, 21605, 24035, 23112, 28137, 23511, 31507, 29939, 24035, 24035, 24035, 24036, + /* 8205 */ 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, + /* 8220 */ 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, + /* 8235 */ 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, + /* 8250 */ 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, + /* 8265 */ 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, + /* 8280 */ 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, + /* 8295 */ 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, + /* 8310 */ 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, + /* 8325 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8340 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8355 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8370 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8385 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8400 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8415 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8430 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8445 */ 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, + /* 8460 */ 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, + /* 8475 */ 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, + /* 8490 */ 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, + /* 8505 */ 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, + /* 8520 */ 23511, 31568, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, + /* 8535 */ 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, + /* 8550 */ 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, + /* 8565 */ 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, + /* 8580 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8595 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8610 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8625 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8640 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8655 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8670 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8685 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8700 */ 19058, 19058, 19058, 19058, 22690, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 27584, 22987, 17556, + /* 8715 */ 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, + /* 8730 */ 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, + /* 8745 */ 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, + /* 8760 */ 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, + /* 8775 */ 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, + /* 8790 */ 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 22659, 18448, 18485, 18523, 18553, 18583, + /* 8805 */ 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, + /* 8820 */ 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, + /* 8835 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8850 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8865 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8880 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8895 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8910 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8925 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8940 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8955 */ 19058, 19058, 19058, 19058, 19058, 22360, 19552, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, + /* 8970 */ 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, + /* 8985 */ 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, + /* 9000 */ 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, + /* 9015 */ 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, + /* 9030 */ 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, + /* 9045 */ 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, + /* 9060 */ 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, + /* 9075 */ 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, + /* 9090 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9105 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9120 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9135 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9150 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9165 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9180 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9195 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9210 */ 19058, 19058, 19058, 19058, 19058, 19058, 22675, 22811, 19457, 36866, 17466, 36890, 36866, 19133, 22971, + /* 9225 */ 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22827, 17990, + /* 9240 */ 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, + /* 9255 */ 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, + /* 9270 */ 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, + /* 9285 */ 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, + /* 9300 */ 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, + /* 9315 */ 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, + /* 9330 */ 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, + /* 9345 */ 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9360 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9375 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9390 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9405 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9420 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9435 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9450 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9465 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, + /* 9480 */ 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, + /* 9495 */ 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, + /* 9510 */ 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, + /* 9525 */ 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, + /* 9540 */ 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, + /* 9555 */ 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, + /* 9570 */ 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, + /* 9585 */ 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, + /* 9600 */ 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9615 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9630 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9645 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9660 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9675 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9690 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9705 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9720 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36064, 19288, 22865, 22881, 32031, 22897, 22913, + /* 9735 */ 22956, 29939, 24035, 24035, 24035, 23003, 23114, 23114, 23114, 23024, 22420, 23511, 23511, 23511, 23052, + /* 9750 */ 29116, 23073, 29268, 24035, 25563, 26915, 23106, 23131, 23114, 23114, 23159, 23181, 23197, 23248, 23511, + /* 9765 */ 23511, 23282, 23305, 22493, 32364, 24035, 33472, 30138, 26325, 31770, 33508, 27345, 33667, 23114, 23321, + /* 9780 */ 23473, 23351, 35793, 36576, 23511, 23375, 22500, 24145, 24035, 29197, 20192, 24533, 23440, 23114, 19017, + /* 9795 */ 23459, 22839, 23489, 23510, 23511, 33563, 23528, 32076, 25389, 24035, 26576, 23561, 23583, 23114, 32683, + /* 9810 */ 22516, 23622, 23655, 23511, 23634, 35456, 37144, 23110, 23683, 34153, 20499, 32513, 25824, 23705, 24035, + /* 9825 */ 24035, 23111, 23114, 19874, 27078, 33263, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, + /* 9840 */ 20507, 32241, 20150, 31862, 27464, 35108, 23727, 23007, 35895, 34953, 26578, 27685, 20141, 24569, 31691, + /* 9855 */ 19787, 33967, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9870 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9885 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9900 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9915 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9930 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9945 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9960 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9975 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36427, 19552, 21605, 24035, 23112, 32618, + /* 9990 */ 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, + /* 10005 */ 23511, 29116, 19803, 24035, 24035, 24035, 27027, 26576, 23114, 23114, 23114, 31471, 23756, 22468, 23511, + /* 10020 */ 23511, 23511, 34687, 23772, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, + /* 10035 */ 28618, 29700, 23511, 23511, 23511, 23511, 34564, 23788, 24035, 24035, 24035, 21559, 23828, 23114, 23114, + /* 10050 */ 23114, 25086, 22839, 23853, 23511, 23511, 23511, 23876, 24035, 24035, 24035, 26576, 23114, 23114, 23114, + /* 10065 */ 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, + /* 10080 */ 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, + /* 10095 */ 30243, 19829, 26577, 26597, 20211, 31761, 23909, 23953, 23007, 20046, 20132, 26578, 27685, 20141, 24569, + /* 10110 */ 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10125 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10140 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10155 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10170 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10185 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10200 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10215 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10230 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36049, 19288, 21605, 30825, 23112, + /* 10245 */ 23987, 23511, 24003, 31001, 27617, 24034, 24035, 24036, 24052, 24089, 23114, 23114, 22420, 24109, 24168, + /* 10260 */ 23511, 23511, 29116, 24188, 27609, 20017, 29516, 24035, 26576, 24222, 19968, 23114, 24252, 33811, 22468, + /* 10275 */ 24270, 33587, 23511, 24320, 27443, 22493, 24035, 24035, 24035, 24035, 24339, 23113, 23114, 23114, 23114, + /* 10290 */ 28128, 28618, 29700, 23511, 23511, 23511, 28276, 34564, 20402, 24035, 24035, 32929, 24036, 23114, 23114, + /* 10305 */ 23114, 24357, 23029, 22839, 23511, 23511, 23511, 24377, 25645, 24035, 34112, 24035, 26576, 23114, 26643, + /* 10320 */ 23114, 32683, 22516, 23511, 25638, 23511, 23711, 24035, 24395, 27809, 23114, 24414, 20499, 24432, 30917, + /* 10335 */ 23628, 24035, 30680, 23111, 23114, 30233, 27078, 25748, 24452, 24035, 23112, 19872, 27741, 23266, 24036, + /* 10350 */ 23114, 24475, 19829, 26577, 26597, 26154, 24519, 24556, 24596, 23007, 20046, 20132, 26578, 24634, 20141, + /* 10365 */ 24569, 31691, 24679, 24727, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10380 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10395 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10410 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10425 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10440 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10455 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10470 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10485 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36412, 19288, 21605, 19943, + /* 10500 */ 34861, 32618, 26027, 29483, 32016, 32050, 36233, 24776, 35574, 24801, 24819, 32671, 31289, 22420, 24868, + /* 10515 */ 24886, 20087, 26849, 29116, 19803, 24035, 24035, 24035, 36228, 26576, 23114, 23114, 23114, 24981, 33811, + /* 10530 */ 22468, 23511, 23511, 23511, 29028, 27443, 22493, 24923, 27965, 24035, 24035, 32797, 24946, 23443, 23114, + /* 10545 */ 23114, 29636, 24997, 22849, 28252, 23511, 23511, 23511, 25042, 25110, 24035, 24035, 34085, 24036, 25133, + /* 10560 */ 23114, 23114, 25152, 23029, 22839, 25169, 23511, 36764, 23511, 25645, 30403, 24035, 25186, 26576, 31806, + /* 10575 */ 24093, 25212, 32683, 22516, 32713, 26245, 34293, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, + /* 10590 */ 23261, 23628, 24035, 32406, 23111, 23114, 28676, 30944, 27689, 25234, 24035, 23112, 19872, 37063, 23266, + /* 10605 */ 24036, 23114, 30243, 20379, 26100, 29218, 20211, 30105, 25257, 25284, 23007, 20046, 20132, 26578, 27685, + /* 10620 */ 20141, 24569, 24834, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10635 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10650 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10665 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10680 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10695 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10710 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10725 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10740 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36034, 19288, 21671, + /* 10755 */ 25314, 25072, 25330, 25346, 25362, 29939, 29951, 35288, 29984, 23812, 27216, 25405, 25424, 30456, 22584, + /* 10770 */ 26292, 25461, 25480, 31592, 29116, 25516, 34963, 25545, 27007, 25579, 33937, 25614, 25661, 25686, 34872, + /* 10785 */ 25702, 25718, 25734, 25769, 25795, 25811, 25840, 22493, 26533, 25856, 24035, 25876, 30763, 27481, 25909, + /* 10800 */ 23114, 28987, 25936, 25954, 29700, 25983, 23511, 31412, 26043, 26063, 22568, 29241, 29592, 26116, 31216, + /* 10815 */ 35383, 26170, 34783, 26194, 26221, 22839, 26241, 26261, 22477, 26283, 26308, 27306, 31035, 24655, 26576, + /* 10830 */ 29854, 33386, 26341, 32683, 22516, 32153, 30926, 26361, 19996, 26381, 35463, 26397, 26424, 34646, 26478, + /* 10845 */ 35605, 31386, 26494, 35567, 31964, 22940, 23689, 25218, 30309, 32289, 19830, 33605, 23112, 32109, 27733, + /* 10860 */ 27084, 24496, 35886, 35221, 26525, 36602, 26549, 26558, 26574, 26594, 26613, 26629, 26666, 26700, 26578, + /* 10875 */ 27685, 23740, 24285, 31691, 26733, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10890 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10905 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10920 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10935 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10950 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10965 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10980 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10995 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36397, 19552, + /* 11010 */ 18991, 25887, 28117, 32618, 26776, 29483, 29939, 26802, 24035, 24035, 24036, 28664, 23114, 23114, 23114, + /* 11025 */ 22420, 30297, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 25559, 26576, 23114, 23114, 23114, + /* 11040 */ 30525, 33811, 22468, 23511, 23511, 23511, 28725, 27443, 22493, 24035, 24035, 27249, 24035, 24035, 23113, + /* 11055 */ 23114, 23114, 26827, 23114, 28618, 29700, 23511, 23511, 26845, 23511, 34564, 20402, 24035, 24035, 26979, + /* 11070 */ 24036, 23114, 23114, 23114, 24974, 23029, 22839, 23511, 23511, 23511, 26865, 25645, 24035, 24035, 24035, + /* 11085 */ 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, + /* 11100 */ 20499, 23511, 23261, 23628, 33305, 24035, 25598, 23114, 19874, 34253, 27689, 19830, 24035, 23112, 19872, + /* 11115 */ 27741, 23266, 24036, 23114, 26886, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, + /* 11130 */ 26578, 27685, 26931, 24569, 26439, 26947, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11145 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11160 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11175 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11190 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11205 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11220 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11235 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11250 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36019, + /* 11265 */ 19288, 26995, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, + /* 11280 */ 23114, 22420, 23511, 23511, 23511, 23511, 28306, 27043, 24035, 24035, 24035, 24035, 26576, 23114, 23114, + /* 11295 */ 23114, 23114, 33811, 27061, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 29978, 24035, 24035, + /* 11310 */ 23113, 23114, 33114, 23114, 23114, 30010, 29700, 23511, 35913, 23511, 23511, 34585, 20402, 24035, 24035, + /* 11325 */ 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, + /* 11340 */ 27155, 26576, 23114, 23114, 30447, 23036, 29695, 23511, 23511, 30935, 20099, 24152, 25529, 27100, 34461, + /* 11355 */ 27121, 22625, 29156, 26009, 27137, 30422, 31903, 31655, 28870, 27171, 32439, 31731, 19830, 27232, 22612, + /* 11370 */ 27265, 26786, 25494, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, + /* 11385 */ 20132, 26578, 27685, 20141, 20342, 27288, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11400 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11415 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11430 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11445 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11460 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11475 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11490 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11505 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11520 */ 36079, 19288, 21605, 27322, 27339, 28020, 27361, 27382, 29939, 24035, 24035, 32581, 24036, 23114, 23114, + /* 11535 */ 23114, 27425, 22420, 23511, 23511, 23511, 27442, 28306, 19803, 24035, 24035, 24035, 24035, 26710, 23114, + /* 11550 */ 23114, 23114, 23114, 32261, 22468, 23511, 23511, 23511, 23511, 35719, 24694, 29510, 24035, 24035, 24035, + /* 11565 */ 24035, 26717, 23114, 23114, 23114, 23114, 28618, 32217, 23511, 23511, 23511, 23511, 34585, 20402, 24035, + /* 11580 */ 24035, 24035, 27459, 23114, 23114, 23114, 36252, 23029, 20271, 23511, 23511, 23511, 28840, 30562, 24035, + /* 11595 */ 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, + /* 11610 */ 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, + /* 11625 */ 27480, 34483, 28401, 29761, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, + /* 11640 */ 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, + /* 11655 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11670 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11685 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11700 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11715 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11730 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11745 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11760 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11775 */ 19058, 36382, 19288, 21605, 27497, 27517, 28504, 28898, 27569, 29939, 29401, 27600, 27323, 27633, 19025, + /* 11790 */ 27662, 23114, 27705, 22420, 20483, 27721, 23511, 27765, 28306, 19803, 23540, 24035, 24610, 27781, 27805, + /* 11805 */ 26650, 23114, 28573, 32990, 25920, 22468, 26870, 23511, 26684, 34262, 34737, 25057, 34622, 24035, 24035, + /* 11820 */ 23971, 24206, 27825, 27847, 23114, 23114, 27865, 27885, 35766, 27914, 23511, 23511, 32766, 32844, 27934, + /* 11835 */ 28795, 26909, 27955, 26092, 27988, 25445, 28005, 28036, 28052, 21965, 23511, 32196, 19897, 28072, 28102, + /* 11850 */ 36534, 21541, 23801, 28153, 28180, 28197, 28221, 23036, 32695, 28251, 28268, 28292, 23667, 34825, 23930, + /* 11865 */ 24580, 28322, 28344, 31627, 28366, 25996, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 35625, + /* 11880 */ 33477, 33359, 27674, 28393, 33992, 24036, 23114, 30243, 19829, 28417, 28433, 28463, 23008, 19876, 20208, + /* 11895 */ 23007, 20046, 20132, 28489, 28520, 20141, 24569, 31691, 19787, 28550, 20268, 19058, 19058, 19058, 19058, + /* 11910 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11925 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11940 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11955 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11970 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11985 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12000 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12015 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12030 */ 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, + /* 12045 */ 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, + /* 12060 */ 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 28589, 24035, + /* 12075 */ 24035, 24035, 24035, 28608, 23114, 23114, 23114, 23114, 28618, 20431, 23511, 23511, 23511, 23511, 34585, + /* 12090 */ 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, + /* 12105 */ 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, + /* 12120 */ 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, + /* 12135 */ 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, + /* 12150 */ 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, + /* 12165 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12180 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12195 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12210 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12225 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12240 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12255 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12270 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12285 */ 19058, 19058, 19058, 36004, 19288, 28634, 31951, 28565, 28702, 28718, 28741, 32544, 20175, 28792, 32086, + /* 12300 */ 20105, 28811, 29059, 29862, 28856, 22420, 28886, 30354, 23359, 28922, 28306, 28952, 23888, 26320, 36506, + /* 12315 */ 24035, 29331, 28968, 36609, 23114, 29003, 31661, 27061, 30649, 27366, 23511, 29023, 27918, 24694, 24035, + /* 12330 */ 24035, 23893, 33094, 30867, 23113, 23114, 23114, 29044, 34184, 30010, 29700, 23511, 23511, 29081, 29102, + /* 12345 */ 34585, 20402, 27789, 24035, 24035, 24036, 23114, 29132, 23114, 23114, 23029, 20271, 23511, 29153, 23511, + /* 12360 */ 23511, 30562, 30174, 24035, 24035, 27409, 25438, 23114, 23114, 29172, 36668, 31332, 23511, 23511, 29192, + /* 12375 */ 30144, 24035, 23110, 30203, 23114, 23467, 31544, 23261, 23628, 24035, 22545, 23111, 23114, 29213, 27078, + /* 12390 */ 27689, 29234, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 29257, 23008, + /* 12405 */ 19876, 20208, 28768, 29290, 29320, 34776, 29353, 20141, 22435, 29378, 19787, 29304, 20268, 19058, 19058, + /* 12420 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12435 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12450 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12465 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12480 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12495 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12510 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12525 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12540 */ 19058, 19058, 19058, 19058, 36367, 19288, 21605, 34616, 19006, 32618, 31497, 31507, 36216, 20184, 24035, + /* 12555 */ 34393, 29424, 34668, 23114, 34900, 29447, 22420, 30360, 23511, 37089, 29473, 28306, 19803, 29499, 24398, + /* 12570 */ 24035, 24035, 26576, 31799, 29532, 29550, 23114, 33811, 22468, 32298, 29571, 31184, 23511, 23512, 37127, + /* 12585 */ 36628, 29589, 24035, 24135, 24035, 23113, 29608, 23114, 27831, 29634, 28618, 29652, 30037, 23511, 24172, + /* 12600 */ 29671, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 29555, 29690, 23511, 23511, + /* 12615 */ 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, + /* 12630 */ 23634, 29719, 24035, 23110, 29738, 23114, 23467, 34035, 29756, 23628, 24035, 24035, 23111, 23114, 19874, + /* 12645 */ 27078, 27689, 19830, 24035, 23112, 19872, 27741, 29777, 34364, 28181, 30243, 29799, 31920, 27272, 27185, + /* 12660 */ 23008, 31126, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29828, 20268, 19058, + /* 12675 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12690 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12705 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12720 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12735 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12750 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12765 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12780 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12795 */ 19058, 19058, 19058, 19058, 19058, 35989, 19552, 19687, 35139, 28649, 29878, 29894, 29924, 29939, 23224, + /* 12810 */ 23085, 31969, 24036, 35173, 24752, 24803, 23114, 22420, 31190, 30318, 24870, 23511, 28306, 29967, 23967, + /* 12825 */ 24035, 24035, 24035, 26576, 30000, 23114, 23114, 23114, 33811, 22468, 30026, 23511, 23511, 23511, 23512, + /* 12840 */ 26078, 24035, 24035, 24035, 30053, 37137, 30071, 23114, 23114, 33368, 25136, 28618, 30723, 23511, 23511, + /* 12855 */ 37096, 31356, 34585, 20402, 30092, 30127, 30160, 24036, 35740, 30219, 24960, 30259, 23029, 20271, 34042, + /* 12870 */ 30285, 30342, 30376, 23289, 30055, 30400, 30419, 30438, 32640, 33532, 33514, 30472, 18792, 26267, 24323, + /* 12885 */ 23057, 30493, 23639, 20008, 30196, 33188, 30517, 20075, 23511, 30541, 23628, 30578, 33928, 28776, 30594, + /* 12900 */ 19874, 30610, 30637, 19830, 30677, 27646, 19872, 25779, 23266, 23232, 35016, 30243, 30696, 29812, 30712, + /* 12915 */ 30746, 27206, 30779, 30807, 23007, 33395, 20132, 26578, 27685, 31703, 22928, 31691, 19787, 31079, 20268, + /* 12930 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12945 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12960 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12975 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12990 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13005 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13020 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13035 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13050 */ 19058, 19058, 19058, 19058, 19058, 19058, 36352, 19288, 23335, 30841, 26131, 30888, 30904, 30986, 29939, + /* 13065 */ 24035, 24704, 31017, 20025, 23114, 26178, 31051, 31095, 22420, 23511, 22524, 31142, 31172, 28534, 31206, + /* 13080 */ 35497, 25196, 24035, 28592, 24503, 23114, 31239, 31285, 23114, 31305, 31321, 31355, 31372, 31407, 23511, + /* 13095 */ 30556, 24694, 24035, 27501, 19805, 24035, 24035, 23113, 23114, 31428, 24066, 23114, 28618, 29700, 23511, + /* 13110 */ 31837, 18809, 23511, 34585, 31448, 24035, 24035, 24035, 23090, 23114, 23114, 23114, 23114, 31619, 35038, + /* 13125 */ 23511, 23511, 23511, 23511, 33714, 24035, 33085, 24035, 29431, 23114, 31467, 23114, 23143, 31487, 23511, + /* 13140 */ 31523, 23511, 35195, 36783, 24035, 30111, 23567, 23114, 23467, 31543, 31560, 23628, 24035, 24035, 23111, + /* 13155 */ 23114, 19874, 30953, 31584, 34508, 24035, 31608, 26345, 37055, 23266, 31643, 31677, 31719, 31747, 31786, + /* 13170 */ 31822, 26898, 23008, 19876, 31859, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 31878, 31936, + /* 13185 */ 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13200 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13215 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13230 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13245 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13260 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13275 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13290 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13305 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35974, 19288, 21605, 27972, 35663, 31985, 29655, 32001, + /* 13320 */ 36715, 24785, 25893, 23545, 31912, 19853, 19916, 25938, 24540, 22420, 31843, 29674, 29573, 32735, 28936, + /* 13335 */ 19803, 24035, 24035, 32047, 24035, 26576, 23114, 23114, 27544, 23114, 33811, 22468, 23511, 23511, 32161, + /* 13350 */ 23511, 23512, 32066, 24035, 33313, 24035, 24035, 24035, 23113, 27426, 32102, 23114, 23114, 28618, 32125, + /* 13365 */ 23511, 32144, 23511, 23511, 33569, 20402, 24035, 27045, 24035, 24036, 23114, 23114, 28328, 23114, 30076, + /* 13380 */ 32177, 23511, 23511, 30384, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23595, 32212, + /* 13395 */ 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, + /* 13410 */ 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 22635, 25753, 32233, 32257, 32277, 19829, + /* 13425 */ 26577, 26597, 20211, 23008, 19876, 32322, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, + /* 13440 */ 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13455 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13470 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13485 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13500 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13515 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13530 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13545 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13560 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 32352, 35285, 32380, 34196, 33016, + /* 13575 */ 30661, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, + /* 13590 */ 28306, 32404, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 32422, 23511, 23511, + /* 13605 */ 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 30269, + /* 13620 */ 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, + /* 13635 */ 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, + /* 13650 */ 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 19949, + /* 13665 */ 24035, 23111, 32455, 19874, 31269, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, + /* 13680 */ 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, + /* 13695 */ 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13710 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13725 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13740 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13755 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13770 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13785 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13800 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13815 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36337, 19552, 19209, 21617, 26509, 32475, + /* 13830 */ 32491, 32529, 29939, 24035, 32578, 25241, 32597, 23114, 32634, 29007, 32656, 22420, 23511, 32729, 26365, + /* 13845 */ 32751, 28306, 32788, 32882, 24035, 24035, 32813, 36727, 23114, 33182, 23114, 27553, 33235, 32829, 23511, + /* 13860 */ 32706, 23511, 28906, 28377, 26962, 32881, 32904, 32898, 32920, 24035, 32953, 23114, 32977, 26408, 23114, + /* 13875 */ 28164, 33006, 23511, 33039, 35774, 23511, 32306, 20402, 33076, 30872, 24035, 24036, 25408, 33110, 28979, + /* 13890 */ 23114, 23029, 20271, 35835, 33130, 33054, 23511, 30562, 33148, 24035, 24035, 33167, 23114, 23114, 33775, + /* 13905 */ 23036, 20459, 23511, 23511, 25464, 24646, 24035, 24035, 22446, 23114, 23114, 25627, 23511, 23261, 23628, + /* 13920 */ 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 31391, 33204, 33220, + /* 13935 */ 33251, 33287, 26577, 26597, 20211, 33329, 19876, 33345, 23007, 20046, 20132, 26578, 27685, 28473, 22599, + /* 13950 */ 31691, 33411, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13965 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13980 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13995 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14010 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14025 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14040 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14055 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14070 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35959, 19288, 21907, 27243, 29843, + /* 14085 */ 32618, 33427, 31507, 29939, 33460, 34090, 24035, 24036, 33493, 24416, 33530, 23114, 22420, 33548, 24379, + /* 14100 */ 33585, 23511, 28306, 19803, 33603, 24202, 24035, 24035, 25593, 33749, 28205, 23114, 23114, 32388, 22468, + /* 14115 */ 33853, 33060, 23511, 23511, 31339, 33621, 24035, 24035, 34397, 24618, 30757, 33663, 23114, 23114, 33683, + /* 14130 */ 35684, 28618, 26678, 23511, 23511, 32506, 33699, 34585, 20402, 24035, 32562, 26973, 24036, 23114, 23114, + /* 14145 */ 33377, 33773, 23029, 20271, 23511, 23511, 30621, 23511, 23860, 24035, 33791, 21553, 26576, 36558, 23114, + /* 14160 */ 33809, 23036, 32857, 26047, 23511, 33827, 23634, 24035, 24035, 23110, 23114, 23114, 31252, 23511, 33845, + /* 14175 */ 23628, 24035, 24459, 23111, 23114, 33869, 27078, 30791, 29783, 24035, 24742, 19872, 33895, 23266, 26462, + /* 14190 */ 19710, 33879, 33919, 26577, 26597, 24123, 24930, 21930, 20208, 30501, 33953, 25268, 20252, 33983, 20141, + /* 14205 */ 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14220 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14235 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14250 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14265 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14280 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14295 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14310 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14325 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36322, 19552, 23390, 33634, + /* 14340 */ 35154, 34008, 34024, 34058, 35544, 34106, 34128, 26811, 33151, 34144, 34169, 34212, 23114, 34228, 34244, + /* 14355 */ 34278, 34315, 23511, 34331, 34347, 34380, 34413, 24035, 24663, 26576, 34429, 34453, 34477, 29534, 33811, + /* 14370 */ 22468, 34499, 34524, 34557, 25170, 34580, 35436, 23937, 34601, 24035, 24341, 26453, 23113, 34638, 34662, + /* 14385 */ 23114, 24236, 28618, 34684, 34703, 34729, 23511, 35352, 34753, 34799, 24035, 34815, 32558, 34848, 34888, + /* 14400 */ 35814, 34923, 23165, 29137, 23606, 30326, 30730, 34939, 33023, 30562, 36848, 34979, 24035, 24847, 34996, + /* 14415 */ 23114, 23114, 35032, 29695, 35054, 23511, 23511, 35091, 33296, 35124, 24296, 28235, 24361, 36276, 32772, + /* 14430 */ 35067, 35189, 27301, 30855, 24852, 22452, 35211, 35237, 35316, 25500, 35270, 23405, 24304, 35304, 29362, + /* 14445 */ 24036, 23114, 35332, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 35368, 28823, 23920, 32336, 35405, + /* 14460 */ 20141, 24569, 31691, 35421, 35479, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14475 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14490 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14505 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14520 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14535 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14550 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14565 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14580 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35944, 22795, 21605, + /* 14595 */ 33647, 35877, 35513, 30962, 35529, 34073, 35557, 24035, 24035, 20405, 31107, 23114, 23114, 23114, 35590, + /* 14610 */ 34713, 23511, 23511, 23511, 35641, 19803, 29408, 32937, 25298, 24035, 35657, 23115, 27849, 24760, 35679, + /* 14625 */ 26205, 22468, 23511, 35700, 24907, 24901, 35075, 31893, 34980, 24035, 24035, 24035, 24035, 23113, 35009, + /* 14640 */ 23114, 23114, 23114, 28618, 35716, 30970, 23511, 23511, 23511, 34585, 23215, 24035, 24035, 24035, 24036, + /* 14655 */ 35735, 23114, 23114, 23114, 27105, 35756, 35790, 23511, 23511, 23511, 35254, 35446, 24035, 24035, 31223, + /* 14670 */ 35809, 23114, 23114, 23036, 36825, 35830, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, + /* 14685 */ 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 31031, 20355, 19872, 33903, + /* 14700 */ 23266, 24036, 23114, 28686, 19829, 26577, 26597, 20211, 23008, 23424, 20208, 24711, 31065, 24486, 26578, + /* 14715 */ 27685, 20141, 19773, 35851, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14730 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14745 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14760 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14775 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14790 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14805 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14820 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14835 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36307, 19288, + /* 14850 */ 21605, 35494, 19702, 32618, 33437, 31507, 29939, 25117, 24035, 27939, 24036, 27869, 23114, 26829, 23114, + /* 14865 */ 22420, 23494, 23511, 33132, 23511, 28306, 19803, 24035, 34832, 24035, 24035, 26576, 23114, 25153, 23114, + /* 14880 */ 23114, 33811, 22468, 23511, 23511, 35911, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, + /* 14895 */ 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, + /* 14910 */ 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, + /* 14925 */ 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, + /* 14940 */ 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, + /* 14955 */ 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, + /* 14970 */ 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14985 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15000 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15015 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15030 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15045 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15060 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15075 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15090 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35929, + /* 15105 */ 19288, 21605, 25860, 23112, 36185, 23511, 36201, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, + /* 15120 */ 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, + /* 15135 */ 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 26748, 24035, 24035, 24035, 24035, 24035, + /* 15150 */ 36249, 23114, 23114, 23114, 23114, 28618, 28835, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 27151, + /* 15165 */ 24035, 26760, 23114, 27989, 23114, 23114, 36268, 20271, 23511, 24436, 23511, 29703, 30562, 24035, 24035, + /* 15180 */ 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, + /* 15195 */ 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, + /* 15210 */ 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, + /* 15225 */ 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15240 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15255 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15270 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15285 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15300 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15315 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15330 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15345 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15360 */ 36292, 19288, 21605, 36503, 21922, 32618, 34534, 31507, 36522, 24035, 33793, 24035, 35864, 23114, 23114, + /* 15375 */ 36555, 23417, 22420, 23511, 23511, 36574, 26020, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, + /* 15390 */ 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 36592, 24035, 24035, 36625, 24035, + /* 15405 */ 24035, 23113, 23114, 32961, 23114, 23114, 29618, 29700, 23511, 29086, 23511, 23511, 34585, 20402, 36644, + /* 15420 */ 24035, 24035, 24036, 29740, 23114, 23114, 23114, 29065, 36663, 31527, 23511, 23511, 23511, 30562, 24035, + /* 15435 */ 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, + /* 15450 */ 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, + /* 15465 */ 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, + /* 15480 */ 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, + /* 15495 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15510 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15525 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15540 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15555 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15570 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15585 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15600 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15615 */ 19058, 36079, 19288, 21605, 31451, 23112, 36684, 23511, 36700, 29939, 24035, 24035, 24035, 30185, 23114, + /* 15630 */ 23114, 23114, 27526, 22420, 23511, 23511, 23511, 32865, 28306, 19803, 36743, 24035, 27017, 24035, 26576, + /* 15645 */ 27535, 23114, 31432, 23114, 33811, 22468, 33271, 23511, 32128, 23511, 23512, 24694, 24035, 27196, 24035, + /* 15660 */ 24035, 24035, 23113, 32459, 23114, 23114, 23114, 28618, 29700, 33829, 36762, 23511, 23511, 34585, 20402, + /* 15675 */ 24035, 36746, 24035, 29722, 23114, 23114, 34437, 23114, 34907, 20271, 23511, 23511, 18801, 23511, 23206, + /* 15690 */ 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 36837, 24035, 24035, + /* 15705 */ 33739, 23114, 23114, 25094, 23511, 23261, 23628, 24035, 36780, 23111, 24073, 19874, 27078, 35344, 19830, + /* 15720 */ 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, + /* 15735 */ 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, + /* 15750 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15765 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15780 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15795 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15810 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15825 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15840 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15855 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15870 */ 19058, 19058, 22720, 19288, 36799, 36866, 17466, 36890, 36864, 21991, 22211, 22987, 17556, 17575, 22288, + /* 15885 */ 17486, 17509, 17525, 18373, 17631, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, + /* 15900 */ 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, + /* 15915 */ 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, + /* 15930 */ 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, + /* 15945 */ 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, + /* 15960 */ 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, + /* 15975 */ 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, + /* 15990 */ 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, + /* 16005 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16020 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16035 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16050 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16065 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16080 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16095 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16110 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16125 */ 19058, 19058, 19058, 22705, 19288, 19457, 36866, 17466, 36890, 36866, 19375, 22971, 22987, 17556, 17575, + /* 16140 */ 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, + /* 16155 */ 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, + /* 16170 */ 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, + /* 16185 */ 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, + /* 16200 */ 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, + /* 16215 */ 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, + /* 16230 */ 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, + /* 16245 */ 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, + /* 16260 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16275 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16290 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16305 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16320 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16335 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16350 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16365 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16380 */ 19058, 19058, 19058, 19058, 36124, 19288, 36951, 36866, 17466, 36890, 36866, 21991, 22404, 22987, 17556, + /* 16395 */ 17575, 22288, 17486, 17509, 17525, 18373, 18567, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, + /* 16410 */ 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36979, 36995, 36867, 19404, 20299, 36866, 17647, 17862, + /* 16425 */ 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, + /* 16440 */ 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, + /* 16455 */ 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, + /* 16470 */ 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, + /* 16485 */ 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, + /* 16500 */ 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, + /* 16515 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16530 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16545 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16560 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16575 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16590 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16605 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16620 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16635 */ 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, + /* 16650 */ 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18027, 22984, 17553, 17572, 22285, 18462, 17990, 18622, + /* 16665 */ 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, + /* 16680 */ 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, + /* 16695 */ 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, + /* 16710 */ 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, + /* 16725 */ 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, + /* 16740 */ 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, + /* 16755 */ 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, + /* 16770 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16785 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16800 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16815 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16830 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16845 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16860 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16875 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16890 */ 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 21529, 24035, 23112, 23033, 23511, 31507, 25377, + /* 16905 */ 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 37040, 23511, 23511, 23511, 23511, 28086, 19803, + /* 16920 */ 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 37079, 23511, 23511, 23511, 23511, + /* 16935 */ 23512, 34766, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, + /* 16950 */ 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, + /* 16965 */ 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, + /* 16980 */ 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, + /* 16995 */ 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, + /* 17010 */ 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, + /* 17025 */ 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17040 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17055 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17070 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17085 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17100 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17115 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17130 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17145 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 37112, 37160, 18469, 36866, 17466, 36890, 36866, 17656, + /* 17160 */ 37174, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18537, 22984, 17553, 17572, 22285, 18780, + /* 17175 */ 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, + /* 17190 */ 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, + /* 17205 */ 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, + /* 17220 */ 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, + /* 17235 */ 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, + /* 17250 */ 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, + /* 17265 */ 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, + /* 17280 */ 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17295 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17310 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17325 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17340 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17355 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17370 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17385 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17400 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, + /* 17416 */ 127011, 110630, 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 0, 0, 57366, 0, 24, 24, 24, 0, 28, + /* 17435 */ 28, 28, 28, 102432, 0, 0, 127011, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, + /* 17453 */ 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2170880, 2170880, + /* 17466 */ 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17477 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2576384, 2215936, 2215936, 2215936, + /* 17488 */ 2416640, 2424832, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17499 */ 2215936, 2215936, 2215936, 2543616, 2215936, 2215936, 2215936, 2215936, 2215936, 2629632, 2215936, + /* 17510 */ 2617344, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2691072, 2215936, 2707456, 2215936, + /* 17521 */ 2715648, 2215936, 2723840, 2764800, 2215936, 2215936, 2797568, 2215936, 2822144, 2215936, 2215936, + /* 17532 */ 2854912, 2215936, 2215936, 2215936, 2912256, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17543 */ 2215936, 0, 0, 0, 180224, 0, 0, 2174976, 0, 0, 2170880, 2617344, 2170880, 2170880, 2170880, 2170880, + /* 17559 */ 2170880, 2170880, 2691072, 2170880, 2707456, 2170880, 2715648, 2170880, 2723840, 2764800, 2170880, + /* 17570 */ 2170880, 2797568, 2170880, 2170880, 2797568, 2170880, 2822144, 2170880, 2170880, 2854912, 2170880, + /* 17581 */ 2170880, 2170880, 2912256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, + /* 17592 */ 2215936, 2215936, 2215936, 2609152, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2654208, + /* 17603 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 184599, 280, 0, 2174976, 0, 0, + /* 17619 */ 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17630 */ 2215936, 2215936, 2215936, 0, 544, 0, 546, 0, 0, 2179072, 0, 0, 0, 552, 0, 0, 2170880, 2170880, 2170880, + /* 17649 */ 3117056, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 17660 */ 2170880, 2170880, 0, 0, 0, 2158592, 2158592, 2232320, 2232320, 0, 2240512, 2240512, 0, 0, 0, 644, 0, 0, 0, + /* 17679 */ 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, 2170880, 2170880, 2170880, + /* 17692 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, + /* 17703 */ 2215936, 2215936, 2711552, 2170880, 2170880, 2170880, 2170880, 2170880, 2760704, 2768896, 2789376, + /* 17714 */ 2813952, 2170880, 2170880, 2170880, 2875392, 2904064, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 17725 */ 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17736 */ 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, + /* 17748 */ 167936, 0, 0, 0, 0, 2174976, 0, 0, 2215936, 2215936, 2514944, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17764 */ 2215936, 2215936, 2215936, 2592768, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 32768, + /* 17776 */ 0, 0, 0, 0, 0, 2174976, 32768, 0, 2633728, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2711552, + /* 17792 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2760704, 2768896, 2789376, 2813952, 2215936, 2215936, + /* 17803 */ 2215936, 2875392, 2904064, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17814 */ 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 0, 65819, 2215936, 2215936, 3031040, 2215936, 3055616, + /* 17830 */ 2215936, 2215936, 2215936, 2215936, 3092480, 2215936, 2215936, 3125248, 2215936, 2215936, 2215936, + /* 17841 */ 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2170880, 2170880, 2494464, 2170880, 2170880, 0, 0, + /* 17854 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 17872 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, + /* 17885 */ 2170880, 2170880, 2170880, 2170880, 2445312, 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, + /* 17896 */ 2170880, 2170880, 2170880, 2523136, 2170880, 2170880, 2641920, 2170880, 2170880, 2170880, 2699264, + /* 17907 */ 2170880, 2727936, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2879488, 2170880, + /* 17918 */ 2916352, 2170880, 2170880, 2170880, 2879488, 2170880, 2916352, 2170880, 2170880, 2170880, 2170880, + /* 17929 */ 2170880, 2170880, 2170880, 2170880, 2170880, 3026944, 2170880, 2170880, 3063808, 2170880, 2170880, + /* 17940 */ 3112960, 2170880, 2170880, 3133440, 2170880, 2170880, 3112960, 2170880, 2170880, 3133440, 2170880, + /* 17951 */ 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 2379776, 2215936, 2523136, + /* 17962 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2596864, 2215936, 2621440, 2215936, + /* 17973 */ 2215936, 2641920, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 548, 0, 0, 0, 0, 287, 2170880, 0, 2170880, + /* 17993 */ 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 18004 */ 2170880, 2170880, 2170880, 3117056, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2699264, + /* 18015 */ 2215936, 2727936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2879488, 2215936, + /* 18026 */ 2916352, 2215936, 2215936, 0, 0, 0, 0, 188416, 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 0, 2171019, + /* 18045 */ 2171019, 2171019, 2400395, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 18056 */ 2171019, 2171019, 2171019, 3031179, 2171019, 3055755, 2171019, 2171019, 2215936, 3133440, 2215936, + /* 18067 */ 2215936, 2215936, 3162112, 2215936, 2215936, 3182592, 3186688, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18085 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2523275, 2171019, 2171019, 2171019, 2171019, + /* 18096 */ 2171019, 2171019, 2171019, 2597003, 2171019, 2621579, 2170880, 2170880, 2170880, 3162112, 2170880, + /* 18107 */ 2170880, 3182592, 3186688, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, + /* 18121 */ 53264, 0, 18, 18, 24, 24, 0, 4337664, 28, 2170880, 2170880, 2170880, 2629632, 2170880, 2170880, 2170880, + /* 18137 */ 2170880, 2719744, 2744320, 2170880, 2170880, 2170880, 2834432, 2838528, 2170880, 2908160, 2170880, + /* 18148 */ 2170880, 2936832, 2215936, 2215936, 2215936, 2215936, 2719744, 2744320, 2215936, 2215936, 2215936, + /* 18159 */ 2834432, 2838528, 2215936, 2908160, 2215936, 2215936, 2936832, 2215936, 2215936, 2985984, 2215936, + /* 18170 */ 2994176, 2215936, 2215936, 3014656, 2215936, 3059712, 3076096, 3088384, 2215936, 2215936, 2215936, + /* 18181 */ 2215936, 2215936, 2215936, 2215936, 2445312, 2215936, 2465792, 2473984, 2215936, 2215936, 2215936, + /* 18192 */ 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, + /* 18205 */ 2171166, 2171166, 2171166, 2171166, 2171019, 2171019, 2494603, 2171019, 2171019, 2215936, 2215936, + /* 18216 */ 2215936, 3215360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, 2170880, + /* 18236 */ 2985984, 2170880, 2994176, 2170880, 2170880, 3016168, 2170880, 3059712, 3076096, 3088384, 2170880, + /* 18247 */ 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 124, 124, 0, 128, 128, 2170880, 2170880, + /* 18264 */ 2170880, 3215360, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2486272, + /* 18276 */ 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2535424, 2539520, 2170880, 2170880, 2588672, + /* 18287 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2920448, + /* 18298 */ 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2170880, 3051520, 2170880, 2170880, + /* 18309 */ 2170880, 2170880, 2170880, 2170880, 3170304, 0, 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, + /* 18321 */ 2170880, 2170880, 3170304, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 18332 */ 2486272, 2215936, 2215936, 2506752, 2215936, 2215936, 2215936, 2535424, 2539520, 2215936, 2215936, + /* 18343 */ 2588672, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, + /* 18358 */ 2174976, 136, 0, 2215936, 2215936, 2920448, 2215936, 2215936, 2215936, 2990080, 2215936, 2215936, 2215936, + /* 18371 */ 2215936, 3051520, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3108864, 2215936, + /* 18382 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3026944, 2215936, 2215936, 3063808, + /* 18393 */ 2215936, 2215936, 3112960, 2215936, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2170880, 2170880, + /* 18408 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2453504, 2457600, 2170880, 2170880, + /* 18419 */ 2170880, 2486272, 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2537049, 2539520, 2170880, + /* 18430 */ 2170880, 2588672, 2170880, 2170880, 2170880, 1508, 2170880, 2170880, 2170880, 1512, 2170880, 2920448, + /* 18442 */ 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2461696, 2170880, 2170880, 2170880, + /* 18453 */ 2510848, 2170880, 2170880, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 18, 0, + /* 18466 */ 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2686976, 2748416, + /* 18487 */ 2170880, 2170880, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 18498 */ 3121152, 2170880, 2170880, 3145728, 3158016, 3166208, 2170880, 2420736, 2428928, 2170880, 2478080, + /* 18509 */ 2170880, 2170880, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2646016, 2670592, 0, 0, + /* 18523 */ 3145728, 3158016, 3166208, 2387968, 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, + /* 18534 */ 2215936, 2215936, 2510848, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 0, 2170880, + /* 18553 */ 2215936, 2215936, 2580480, 2215936, 2605056, 2637824, 2215936, 2215936, 2686976, 2748416, 2215936, + /* 18564 */ 2215936, 2215936, 2924544, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 286, 2170880, + /* 18583 */ 2215936, 2215936, 2215936, 2215936, 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, + /* 18594 */ 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, + /* 18605 */ 2170880, 2170880, 1625, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 647, 2170880, + /* 18617 */ 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 18628 */ 2170880, 2170880, 2576384, 2170880, 2170880, 2170880, 2170880, 2170880, 2609152, 2170880, 2170880, + /* 18639 */ 2686976, 0, 0, 2748416, 2170880, 2170880, 0, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, + /* 18652 */ 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 0, 0, 28, 28, 2170880, 3141632, 2215936, 2420736, 2428928, + /* 18669 */ 2215936, 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, + /* 18680 */ 2670592, 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, + /* 18691 */ 2215936, 3141632, 2170880, 2420736, 2428928, 2752512, 2756608, 0, 2846720, 2961408, 2170880, 2998272, + /* 18703 */ 2170880, 3010560, 2170880, 2170880, 2170880, 3141632, 2170880, 2170880, 2490368, 2215936, 2490368, + /* 18714 */ 2215936, 2215936, 2215936, 2547712, 2555904, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 18725 */ 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 245760, 0, 3129344, 2170880, 2170880, 2490368, + /* 18741 */ 2170880, 2170880, 2170880, 0, 0, 2547712, 2555904, 2170880, 2170880, 2170880, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18760 */ 2220032, 0, 0, 45056, 0, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, + /* 18774 */ 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, + /* 18795 */ 0, 0, 0, 0, 0, 1482, 97, 97, 97, 97, 97, 97, 97, 1354, 97, 97, 97, 97, 97, 97, 97, 97, 1148, 97, 97, 97, + /* 18821 */ 97, 97, 97, 97, 2584576, 2170880, 2170880, 1512, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 18836 */ 2441216, 2170880, 2527232, 2170880, 2600960, 2170880, 2850816, 2170880, 2170880, 2170880, 3022848, + /* 18847 */ 2215936, 2441216, 2215936, 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, + /* 18862 */ 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 2215936, 3022848, 2170880, 2441216, 2170880, 2527232, 0, 0, + /* 18879 */ 2170880, 2600960, 2170880, 0, 2850816, 2170880, 2170880, 2170880, 2170880, 2170880, 2523136, 2170880, + /* 18891 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2596864, 2170880, 2621440, 2170880, 2170880, + /* 18902 */ 2641920, 2170880, 2170880, 2170880, 3022848, 2170880, 2519040, 2170880, 2170880, 2170880, 2170880, + /* 18913 */ 2170880, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, + /* 18924 */ 2453504, 2457600, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2514944, 2170880, 2170880, + /* 18935 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2519040, 0, 2024, + /* 18947 */ 2170880, 2170880, 0, 2170880, 2170880, 2170880, 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, + /* 18959 */ 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396160, 0, 2024, 2170880, 2170880, 2170880, + /* 18971 */ 2170880, 3018752, 2170880, 2650112, 2965504, 2170880, 2215936, 2650112, 2965504, 2215936, 0, 0, 2170880, + /* 18984 */ 2650112, 2965504, 2170880, 2551808, 2170880, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, + /* 19001 */ 106539, 41098, 45, 45, 141, 45, 45, 67, 67, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 67, 67, 67, 67, + /* 19024 */ 1288, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 0, 2551808, 2170880, 2170880, + /* 19045 */ 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2977792, 2977792, 0, 0, + /* 19060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 29, 102432, 127011, 110630, + /* 19084 */ 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 49172, 0, 0, 0, 24, 24, 24, 0, 28, 28, 28, 28, + /* 19104 */ 102432, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 0, 0, 0, 2220032, + /* 19126 */ 110630, 0, 0, 0, 114730, 106539, 136, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, + /* 19142 */ 4256099, 4256099, 24, 24, 0, 28, 28, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, + /* 19156 */ 2170880, 0, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 2170880, 2547712, + /* 19168 */ 2555904, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, + /* 19179 */ 2215936, 2215936, 543, 543, 545, 545, 0, 0, 2179072, 0, 550, 551, 551, 0, 287, 2171166, 2171166, 18, 0, 0, + /* 19199 */ 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 645, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, + /* 19224 */ 149, 2584576, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2441216, + /* 19237 */ 2170880, 2527232, 2170880, 2600960, 2519040, 0, 0, 2170880, 2170880, 0, 2170880, 2170880, 2170880, + /* 19250 */ 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, 2396160, 2215936, 2215936, 2215936, 2215936, + /* 19261 */ 3018752, 2396160, 0, 0, 2170880, 2170880, 2170880, 2170880, 3018752, 2170880, 2650112, 2965504, 53264, 18, + /* 19275 */ 49172, 57366, 24, 155648, 28, 102432, 155648, 155687, 114730, 106539, 0, 0, 155648, 53264, 18, 18, 49172, + /* 19292 */ 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 0, 0, 0, 0, 2220032, 0, 94208, 0, 0, 114730, 106539, + /* 19315 */ 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 208896, 18, 278528, 24, 24, 0, 28, 28, + /* 19332 */ 53264, 18, 159765, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 18, 49172, + /* 19351 */ 0, 57366, 0, 24, 24, 24, 0, 28, 139394, 28, 28, 102432, 131, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, + /* 19373 */ 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 32768, 53264, 0, 18, 18, 24, 24, 0, 28, + /* 19390 */ 28, 0, 546, 0, 0, 2183168, 0, 0, 552, 832, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, + /* 19407 */ 2170880, 2170880, 2609152, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2654208, 2170880, + /* 19418 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, + /* 19429 */ 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 1084, 0, 1088, 0, 1092, 0, 0, 0, 0, 0, 41606, 0, + /* 19448 */ 0, 0, 0, 45, 45, 45, 45, 45, 937, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, + /* 19470 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 644, 0, 0, 0, + /* 19485 */ 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 19496 */ 2215936, 2215936, 2215936, 0, 826, 0, 828, 0, 0, 2183168, 0, 0, 830, 0, 2170880, 2170880, 2170880, + /* 19513 */ 2400256, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2170880, 2170880, 2633728, + /* 19524 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2711552, 2170880, 2170880, 2170880, 2170880, + /* 19535 */ 2170880, 2760704, 53264, 18, 49172, 57366, 24, 8192, 28, 172066, 172032, 110630, 172066, 106539, 0, 0, + /* 19551 */ 172032, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 16384, 28, 28, 28, 28, 102432, 0, 98304, 0, 0, + /* 19572 */ 2220032, 110630, 0, 0, 0, 0, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 19587 */ 2170880, 3198976, 2170880, 0, 0, 45056, 0, 0, 0, 53264, 18, 49172, 57366, 25, 8192, 30, 102432, 0, 110630, + /* 19606 */ 114730, 106539, 0, 0, 176219, 53264, 18, 18, 49172, 0, 57366, 0, 124, 124, 124, 0, 128, 128, 128, 128, + /* 19626 */ 102432, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 546, 0, 0, 2183168, + /* 19648 */ 0, 65536, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2646016, + /* 19661 */ 2670592, 2752512, 2756608, 2846720, 2961408, 2170880, 2998272, 2170880, 3010560, 2170880, 2170880, + /* 19672 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0, + /* 19690 */ 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 143, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, + /* 19713 */ 67, 67, 67, 67, 67, 67, 1824, 67, 1826, 67, 67, 67, 67, 17, 18, 49172, 57366, 24, 8192, 28, 102432, 0, + /* 19735 */ 110630, 114730, 106539, 0, 0, 32768, 120, 121, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, + /* 19757 */ 102432, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 2179072, 548, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, + /* 19778 */ 0, 97, 97, 97, 45, 45, 45, 45, 2033, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 369, 0, + /* 19805 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 978, 0, 546, 70179, 0, 2183168, 0, 0, 552, 0, + /* 19830 */ 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1013, 67, 67, 67, + /* 19856 */ 67, 67, 67, 67, 67, 67, 67, 473, 67, 67, 67, 67, 483, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 19881 */ 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 19907 */ 97, 97, 1359, 97, 97, 97, 67, 67, 1584, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, + /* 19932 */ 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, + /* 19957 */ 45, 45, 45, 1668, 45, 45, 45, 45, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 774, + /* 19982 */ 67, 67, 1713, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 1723, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, + /* 20007 */ 1538, 45, 45, 45, 45, 45, 1559, 45, 45, 1561, 45, 45, 45, 45, 45, 45, 45, 687, 45, 45, 45, 45, 45, 45, 45, + /* 20032 */ 45, 448, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1771, 1772, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, + /* 20057 */ 97, 0, 0, 0, 97, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 1827, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, + /* 20085 */ 97, 1614, 97, 97, 97, 97, 97, 603, 97, 97, 605, 97, 97, 608, 97, 97, 97, 97, 0, 1532, 45, 45, 45, 45, 45, + /* 20110 */ 45, 45, 45, 45, 45, 450, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 1839, 97, 97, 97, 97, 0, 0, + /* 20137 */ 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 1883, 97, 1885, 97, 0, + /* 20162 */ 1888, 0, 97, 97, 0, 97, 97, 1848, 97, 97, 97, 97, 1852, 45, 45, 45, 45, 45, 45, 45, 384, 391, 45, 45, 45, + /* 20187 */ 45, 45, 45, 45, 385, 45, 45, 45, 45, 45, 45, 45, 45, 1237, 45, 45, 45, 45, 45, 45, 67, 0, 97, 97, 97, 97, + /* 20213 */ 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1951, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, + /* 20240 */ 67, 67, 1963, 97, 2023, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 1994, 67, 1995, 67, 67, + /* 20265 */ 67, 67, 67, 67, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 0, 0, 0, 0, 2220032, 110630, 0, + /* 20294 */ 0, 0, 114730, 106539, 137, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2793472, + /* 20307 */ 2805760, 2170880, 2830336, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 20318 */ 2170880, 2170880, 2170880, 2170880, 3031040, 2170880, 3055616, 2170880, 2170880, 67, 67, 37139, 37139, + /* 20331 */ 24853, 24853, 0, 0, 281, 549, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2031, + /* 20354 */ 2032, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1769, 67, 0, 546, 70179, 549, 549, 0, 0, + /* 20378 */ 552, 0, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1858, 45, 641, 0, 0, 0, 0, 41606, 926, 0, 0, + /* 20404 */ 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 456, 67, 0, 0, 0, 1313, 0, 0, 0, 1096, 1319, 0, + /* 20431 */ 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1110, 97, 97, 97, 97, 67, 67, 67, 67, 1301, 1476, 0, 0, 0, 0, + /* 20457 */ 1307, 1478, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1486, 97, 1487, 97, 1313, 1480, 0, 0, 0, 0, 1319, 0, + /* 20483 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1476, 0, 1478, 0, 1480, 0, + /* 20508 */ 97, 97, 97, 97, 97, 97, 97, 45, 1853, 45, 1855, 45, 45, 45, 45, 53264, 18, 49172, 57366, 26, 8192, 31, + /* 20530 */ 102432, 0, 110630, 114730, 106539, 0, 0, 225368, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, + /* 20548 */ 114730, 106539, 0, 0, 32768, 53264, 18, 18, 49172, 163840, 57366, 0, 24, 24, 229376, 0, 28, 28, 28, + /* 20567 */ 229376, 102432, 0, 0, 0, 0, 2220167, 110630, 0, 0, 0, 114730, 106539, 0, 2171019, 2171019, 2171019, + /* 20584 */ 2171019, 2592907, 2171019, 2171019, 2171019, 2171019, 2633867, 2171019, 2171019, 2171019, 2171019, + /* 20595 */ 2171019, 2171019, 2654347, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 20606 */ 2171019, 2171019, 2171019, 3117195, 2171019, 2171019, 2171019, 2171019, 2240641, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20623 */ 368, 0, 140, 2171019, 2171019, 2171019, 2416779, 2424971, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 20636 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2617483, 2171019, 2171019, + /* 20647 */ 2642059, 2171019, 2171019, 2171019, 2699403, 2171019, 2728075, 2171019, 2171019, 2171019, 2171019, + /* 20658 */ 2171019, 2171019, 2171019, 3215499, 2215936, 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, + /* 20669 */ 2215936, 2171019, 2822283, 2171019, 2171019, 2855051, 2171019, 2171019, 2171019, 2912395, 2171019, + /* 20680 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3002507, 2171019, 2171019, 2215936, 2215936, + /* 20691 */ 2494464, 2215936, 2215936, 2215936, 2171166, 2171166, 2416926, 2425118, 2171166, 2171166, 2171166, + /* 20702 */ 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 20713 */ 2171166, 2171166, 2576670, 2171166, 2617630, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 20724 */ 2691358, 2171166, 2707742, 2171166, 2715934, 2171166, 2724126, 2765086, 2171166, 2171166, 2797854, + /* 20735 */ 2171166, 2822430, 2171166, 2171166, 2855198, 2171166, 2171166, 2171166, 2912542, 2171166, 2171166, + /* 20746 */ 2171166, 2171166, 2171166, 2171166, 2171166, 2793758, 2806046, 2171166, 2830622, 2171166, 2171166, + /* 20757 */ 2171166, 2171166, 2171166, 2171166, 2171166, 3109150, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 20768 */ 2171166, 2171166, 2171166, 2171166, 2543902, 2171166, 2171166, 2171166, 2171166, 2171166, 2629918, + /* 20779 */ 2793611, 2805899, 2171019, 2830475, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 20790 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 0, 546, 0, 0, 2183168, 0, + /* 20805 */ 0, 552, 0, 2171166, 2171166, 2171166, 2400542, 2171166, 2171166, 2171166, 0, 2171166, 2171166, 2171166, 0, + /* 20820 */ 2171166, 2920734, 2171166, 2171166, 2171166, 2990366, 2171166, 2171166, 2171166, 2171166, 3117342, + /* 20831 */ 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 20842 */ 2171166, 0, 53264, 0, 18, 18, 4329472, 2232445, 0, 2240641, 4337664, 2711691, 2171019, 2171019, 2171019, + /* 20857 */ 2171019, 2171019, 2760843, 2769035, 2789515, 2814091, 2171019, 2171019, 2171019, 2875531, 2904203, + /* 20868 */ 2171019, 2171019, 3092619, 2171019, 2171019, 3125387, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 20879 */ 2171019, 2171019, 2171019, 2171019, 3199115, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 20890 */ 2215936, 2215936, 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 20901 */ 2215936, 2793472, 2805760, 2215936, 2830336, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 20912 */ 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 20925 */ 2170880, 2170880, 2170880, 2494464, 2170880, 2170880, 2171166, 2171166, 2634014, 2171166, 2171166, + /* 20936 */ 2171166, 2171166, 2171166, 2171166, 2711838, 2171166, 2171166, 2171166, 2171166, 2171166, 2760990, + /* 20947 */ 2769182, 2789662, 2814238, 2171166, 2171166, 2171166, 2875678, 2904350, 2171166, 2171166, 2171166, + /* 20958 */ 2171166, 2171166, 2171166, 2171166, 2171166, 3199262, 2171166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379915, + /* 20975 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2445451, 2171019, 2465931, 2474123, + /* 20986 */ 2171019, 2171019, 3113099, 2171019, 2171019, 3133579, 2171019, 2171019, 2171019, 3162251, 2171019, + /* 20997 */ 2171019, 3182731, 3186827, 2171019, 2379776, 2879627, 2171019, 2916491, 2171019, 2171019, 2171019, + /* 21008 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3027083, 2171019, 2171019, 3063947, 2699550, + /* 21019 */ 2171166, 2728222, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2879774, 2171166, + /* 21030 */ 2916638, 2171166, 2171166, 2171166, 2171166, 2171166, 2609438, 2171166, 2171166, 2171166, 2171166, + /* 21041 */ 2171166, 2171166, 2654494, 2171166, 2171166, 2171166, 2171166, 2171166, 2445598, 2171166, 2466078, + /* 21052 */ 2474270, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2523422, 2171019, 2437259, 2171019, + /* 21063 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2543755, + /* 21074 */ 2171019, 2171019, 2171019, 2584715, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21085 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2908299, 2171019, + /* 21096 */ 2171019, 2936971, 2171019, 2171019, 2986123, 2171019, 2994315, 2171019, 2171019, 3014795, 2171019, + /* 21107 */ 3059851, 3076235, 3088523, 2171166, 2171166, 2986270, 2171166, 2994462, 2171166, 2171166, 3014942, + /* 21118 */ 2171166, 3059998, 3076382, 3088670, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3027230, + /* 21129 */ 2171166, 2171166, 3064094, 2171166, 2171166, 3113246, 2171166, 2171166, 3133726, 2506891, 2171019, + /* 21140 */ 2171019, 2171019, 2535563, 2539659, 2171019, 2171019, 2588811, 2171019, 2171019, 2171019, 2171019, + /* 21151 */ 2171019, 2171019, 2171019, 2691211, 2171019, 2707595, 2171019, 2715787, 2171019, 2723979, 2764939, + /* 21162 */ 2171019, 2171019, 2797707, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, + /* 21177 */ 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2453790, 2457886, 2171166, 2171166, 2171166, + /* 21188 */ 2486558, 2171166, 2171166, 2507038, 2171166, 2171166, 2171166, 2535710, 2539806, 2171166, 2171166, + /* 21199 */ 2588958, 2171166, 2171166, 2171166, 2171166, 2515230, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 21210 */ 2171166, 2171166, 2171166, 2593054, 2171166, 2171166, 2171166, 2171166, 3051806, 2171166, 2171166, + /* 21221 */ 2171166, 2171166, 2171166, 2171166, 3170590, 0, 2388107, 2392203, 2171019, 2171019, 2433163, 2171019, + /* 21233 */ 2461835, 2171019, 2171019, 2171019, 2510987, 2171019, 2171019, 2171019, 2171019, 2580619, 2171019, + /* 21244 */ 2605195, 2637963, 2171019, 2171019, 2171019, 2920587, 2171019, 2171019, 2171019, 2990219, 2171019, + /* 21255 */ 2171019, 2171019, 2171019, 3051659, 2171019, 2171019, 2171019, 2453643, 2457739, 2171019, 2171019, + /* 21266 */ 2171019, 2171019, 2171019, 2171019, 2515083, 2171019, 2171019, 2171019, 2171019, 2646155, 2670731, + /* 21277 */ 2752651, 2756747, 2846859, 2961547, 2171019, 2998411, 2171019, 3010699, 2171019, 2171019, 2687115, + /* 21288 */ 2748555, 2171019, 2171019, 2171019, 2924683, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21299 */ 2171019, 3121291, 2171019, 2171019, 2171019, 3170443, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 21310 */ 2215936, 2215936, 2215936, 2486272, 2215936, 2215936, 2506752, 3145867, 3158155, 3166347, 2387968, + /* 21321 */ 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, 2215936, 2215936, 2510848, 2215936, + /* 21332 */ 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 553, 2170880, 2215936, 2215936, 2215936, 2215936, + /* 21351 */ 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, 2388254, 2392350, 2171166, 2171166, + /* 21362 */ 2433310, 2171166, 2461982, 2171166, 2171166, 2171166, 2511134, 2171166, 2171166, 0, 2171166, 2171166, + /* 21374 */ 2580766, 2171166, 2605342, 2638110, 2171166, 2171166, 2171166, 2171166, 3031326, 2171166, 3055902, + /* 21385 */ 2171166, 2171166, 2171166, 2171166, 3092766, 2171166, 2171166, 3125534, 2171166, 2171166, 2171166, + /* 21396 */ 3162398, 2171166, 2171166, 3182878, 3186974, 2171166, 0, 0, 0, 2171019, 2171019, 2171019, 2171019, + /* 21409 */ 3109003, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21420 */ 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, 2215936, 2215936, 2171166, 2687262, 0, 0, 2748702, + /* 21433 */ 2171166, 2171166, 0, 2171166, 2924830, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 21445 */ 2597150, 2171166, 2621726, 2171166, 2171166, 2642206, 2171166, 2171166, 2171166, 2171166, 3121438, + /* 21456 */ 2171166, 2171166, 3146014, 3158302, 3166494, 2171019, 2420875, 2429067, 2171019, 2478219, 2171019, + /* 21467 */ 2171019, 2171019, 2171019, 2547851, 2556043, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21478 */ 2171019, 2171019, 2171019, 3129483, 2215936, 2171019, 3141771, 2215936, 2420736, 2428928, 2215936, + /* 21489 */ 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, 2670592, + /* 21500 */ 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, 2215936, + /* 21511 */ 3141632, 2171166, 2421022, 2429214, 2171166, 2478366, 2171166, 2171166, 2171166, 2171166, 0, 0, 2171166, + /* 21524 */ 2171166, 2171166, 2171166, 2646302, 2670878, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 0, 45, 45, + /* 21543 */ 45, 45, 45, 1405, 1406, 45, 45, 45, 45, 1409, 45, 45, 45, 45, 45, 1415, 45, 45, 45, 45, 45, 45, 45, 45, + /* 21567 */ 45, 45, 1238, 45, 45, 45, 45, 67, 2752798, 2756894, 0, 2847006, 2961694, 2171166, 2998558, 2171166, + /* 21583 */ 3010846, 2171166, 2171166, 2171166, 3141918, 2171019, 2171019, 2490507, 3129344, 2171166, 2171166, + /* 21594 */ 2490654, 2171166, 2171166, 2171166, 0, 0, 2547998, 2556190, 2171166, 2171166, 2171166, 0, 0, 0, 0, 37, + /* 21610 */ 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 167, 45, 45, 45, 45, 185, 187, 45, 45, 198, 45, + /* 21632 */ 45, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3129630, 2171019, 2171019, 2171019, 2171019, + /* 21645 */ 2171019, 2171019, 2171019, 2171019, 2576523, 2171019, 2171019, 2171019, 2171019, 2171019, 2609291, + /* 21656 */ 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2171166, + /* 21667 */ 2171166, 2494750, 2171166, 2171166, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, + /* 21686 */ 147, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, + /* 21698 */ 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 3002654, + /* 21713 */ 2171166, 2171166, 2171019, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 21724 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2175257, 0, 0, 2584862, + /* 21741 */ 2171166, 2171166, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171019, 2441355, 2171019, 2527371, + /* 21754 */ 2171019, 2601099, 2171019, 2850955, 2171019, 2171019, 2171019, 3022987, 2215936, 2441216, 2215936, + /* 21765 */ 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, + /* 21783 */ 69632, 287, 2170880, 2215936, 3022848, 2171166, 2441502, 2171166, 2527518, 0, 0, 2171166, 2601246, + /* 21796 */ 2171166, 0, 2851102, 2171166, 2171166, 2171166, 2171166, 2720030, 2744606, 2171166, 2171166, 2171166, + /* 21808 */ 2834718, 2838814, 2171166, 2908446, 2171166, 2171166, 2937118, 3023134, 2171019, 2519179, 2171019, + /* 21819 */ 2171019, 2171019, 2171019, 2171019, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 21830 */ 2171166, 2171166, 2171166, 3215646, 0, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21842 */ 2171019, 2486411, 2171019, 2171019, 2171019, 2629771, 2171019, 2171019, 2171019, 2171019, 2719883, + /* 21853 */ 2744459, 2171019, 2171019, 2171019, 2834571, 2838667, 2171019, 2519326, 0, 0, 2171166, 2171166, 0, + /* 21866 */ 2171166, 2171166, 2171166, 2396299, 2171019, 2171019, 2171019, 2171019, 3018891, 2396160, 2215936, + /* 21877 */ 2215936, 2215936, 2215936, 3018752, 2396446, 0, 0, 2171166, 2171166, 2171166, 2171166, 3019038, 2171019, + /* 21890 */ 2650251, 2965643, 2171019, 2215936, 2650112, 2965504, 2215936, 0, 0, 2171166, 2650398, 2965790, 2171166, + /* 21903 */ 2551947, 2171019, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 144, + /* 21922 */ 45, 45, 67, 67, 67, 67, 67, 228, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1929, 97, 97, 97, 97, 0, 0, 0, + /* 21947 */ 2552094, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, + /* 21960 */ 2171166, 2977931, 2977792, 2978078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1321, 97, 131072, 0, 0, + /* 21984 */ 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, + /* 22005 */ 28, 28, 0, 140, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2445312, + /* 22019 */ 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, 2584576, 2170880, 2170880, 2170880, 2170880, + /* 22030 */ 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 22041 */ 2215936, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 0, 140, 0, + /* 22054 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2215936, + /* 22065 */ 2215936, 2494464, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3215360, 544, 0, 0, 0, 544, 0, + /* 22080 */ 546, 0, 0, 0, 546, 0, 0, 2183168, 0, 0, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, + /* 22098 */ 2170880, 0, 2170880, 2170880, 2170880, 0, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, + /* 22111 */ 2170880, 552, 0, 0, 0, 552, 0, 287, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, + /* 22127 */ 2170880, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 644, 0, 2215936, 2215936, 3170304, 544, 0, 546, 0, + /* 22149 */ 552, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 0, + /* 22164 */ 140, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 249856, 110630, 114730, 106539, 0, 0, 32768, + /* 22182 */ 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 151640, 53264, 18, 18, + /* 22200 */ 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, + /* 22225 */ 2170880, 2416640, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 253952, 110630, 114730, 106539, 0, 0, + /* 22241 */ 32856, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 192512, 53264, 18, + /* 22259 */ 18, 49172, 0, 57366, 0, 2232445, 184320, 2232445, 0, 2240641, 2240641, 184320, 2240641, 102432, 0, 0, 0, + /* 22276 */ 221184, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 22291 */ 2170880, 3108864, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 22302 */ 2170880, 2215936, 0, 0, 0, 45056, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 22320 */ 0, 53264, 0, 18, 18, 24, 24, 0, 127, 127, 53264, 18, 49172, 258071, 24, 8192, 28, 102432, 0, 110630, + /* 22340 */ 114730, 106539, 0, 0, 32768, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, + /* 22358 */ 0, 204800, 53264, 18, 49172, 57366, 24, 27, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, + /* 22377 */ 49172, 57366, 24, 8192, 28, 33, 0, 33, 33, 33, 0, 0, 0, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, + /* 22400 */ 16384, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2170880, 2170880, 2170880, 2416640, 67, 67, + /* 22422 */ 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, + /* 22444 */ 45, 2030, 45, 45, 45, 45, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1699, 67, 67, 67, 67, + /* 22468 */ 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 1358, 97, + /* 22491 */ 97, 97, 641, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 45, 45, 45, 0, + /* 22517 */ 1480, 0, 0, 0, 0, 1319, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 22543 */ 97, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1680, 45, 45, 45, 641, 0, 924, 0, 925, 41606, 0, + /* 22568 */ 0, 0, 0, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 45, 45, 45, 45, 67, 67, 37139, 37139, 24853, 24853, 0, + /* 22591 */ 70179, 282, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 2028, 97, 45, 45, 45, 45, 45, 45, 67, + /* 22615 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1767, 67, 67, 67, 0, 0, 0, 0, 0, 0, 1612, 97, 97, 97, 97, 97, 97, 0, + /* 22642 */ 1785, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1790, 97, 0, 0, 2170880, 2170880, 3051520, 2170880, + /* 22663 */ 2170880, 2170880, 2170880, 2170880, 2170880, 3170304, 241664, 2387968, 2392064, 2170880, 2170880, 2433024, + /* 22675 */ 53264, 19, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 274432, 53264, 18, 49172, + /* 22693 */ 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 270336, 53264, 18, 49172, 57366, 24, 8192, + /* 22711 */ 28, 102432, 0, 110630, 114730, 106539, 0, 0, 1134711, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, + /* 22729 */ 1126440, 1126440, 1126440, 0, 0, 1126400, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 36, 110630, + /* 22745 */ 114730, 106539, 0, 0, 217088, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, + /* 22763 */ 0, 94, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 96, 53264, 18, + /* 22782 */ 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 24666, 53264, 18, 18, 49172, 0, + /* 22800 */ 57366, 0, 24, 24, 24, 126, 28, 28, 28, 28, 102432, 53264, 122, 123, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, + /* 22823 */ 28, 28, 28, 102432, 2170880, 2170880, 4256099, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22847 */ 1319, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1109, 97, 97, 97, 97, 1113, 132, 0, 0, 0, 37, 110630, 0, 0, + /* 22873 */ 0, 114730, 106539, 41098, 45, 45, 45, 146, 150, 45, 45, 45, 45, 45, 175, 45, 180, 45, 186, 45, 189, 45, + /* 22895 */ 45, 203, 67, 256, 67, 67, 270, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 293, 297, + /* 22918 */ 97, 97, 97, 97, 97, 322, 97, 327, 97, 333, 97, 0, 0, 97, 2026, 0, 2027, 97, 97, 45, 45, 45, 45, 45, 45, + /* 22943 */ 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 336, 97, 97, 350, 97, 97, 0, 53264, 0, 18, 18, 24, + /* 22968 */ 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 2424832, 2170880, + /* 22989 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 23000 */ 2170880, 2617344, 2170880, 45, 439, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, + /* 23022 */ 67, 67, 67, 67, 67, 67, 525, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23051 */ 0, 97, 97, 97, 97, 622, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 1527, 369, 648, 45, + /* 23076 */ 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23101 */ 1239, 45, 45, 45, 67, 729, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23127 */ 67, 67, 67, 762, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 0, 0, 0, 1477, 0, 1086, + /* 23153 */ 0, 0, 0, 1479, 0, 1090, 67, 67, 796, 67, 67, 799, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1291, + /* 23178 */ 67, 67, 67, 811, 67, 67, 67, 67, 67, 816, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, 0, 0, + /* 23202 */ 66365, 66365, 552, 833, 97, 97, 97, 97, 97, 97, 97, 97, 1380, 0, 0, 0, 45, 45, 45, 45, 45, 1185, 45, 45, + /* 23226 */ 45, 45, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 45, 45, 45, 45, 67, 97, 97, 844, + /* 23251 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 23278 */ 97, 45, 45, 45, 97, 97, 97, 894, 97, 97, 897, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1382, 45, 45, + /* 23304 */ 45, 97, 909, 97, 97, 97, 97, 97, 914, 97, 97, 97, 97, 97, 97, 97, 923, 67, 67, 1079, 67, 67, 67, 67, 67, + /* 23329 */ 37689, 1085, 25403, 1089, 66365, 1093, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, + /* 23350 */ 148, 1114, 97, 97, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 97, 97, 606, 97, 97, 97, 97, 97, 97, + /* 23375 */ 97, 97, 97, 97, 1173, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, + /* 23400 */ 106539, 41098, 45, 45, 145, 45, 45, 67, 67, 67, 67, 67, 1762, 67, 67, 67, 1766, 67, 67, 67, 67, 67, 67, + /* 23423 */ 528, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1934, 67, 67, 1255, 67, 67, 67, 67, 67, + /* 23448 */ 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 67, 67, 67, 67, 1297, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, + /* 23475 */ 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 97, 97, + /* 23501 */ 97, 97, 97, 97, 97, 33344, 97, 97, 97, 1335, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 23526 */ 97, 0, 97, 97, 1377, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 670, 45, 45, 45, 45, 45, 45, 45, + /* 23552 */ 45, 45, 45, 45, 430, 45, 45, 45, 45, 67, 67, 1438, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23577 */ 67, 67, 1592, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 0, 0, 1305, + /* 23602 */ 0, 0, 0, 0, 0, 1311, 0, 0, 0, 1317, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1322, 97, 97, 1491, 97, 97, 1495, 97, 97, + /* 23630 */ 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 1553, 45, + /* 23655 */ 1504, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 97, 97, 0, 45, 45, 45, 45, 1536, 45, 45, 45, + /* 23680 */ 45, 1540, 45, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1700, 67, 67, 67, + /* 23705 */ 97, 1648, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1541, 0, 97, 97, 97, + /* 23731 */ 97, 0, 1940, 0, 97, 97, 97, 97, 97, 97, 45, 45, 2011, 45, 45, 45, 2015, 67, 67, 2017, 67, 67, 67, 2021, + /* 23755 */ 97, 67, 67, 812, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 97, 97, 910, 97, 97, 97, 97, + /* 23780 */ 97, 97, 97, 97, 97, 97, 97, 923, 0, 0, 0, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 1188, 45, 45, 45, 45, + /* 23805 */ 1414, 45, 45, 45, 1417, 45, 1419, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 453, 45, 45, 67, 67, + /* 23829 */ 67, 67, 1244, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 282, 41098, + /* 23852 */ 65820, 97, 1324, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 930, 45, 45, 45, 45, 97, + /* 23877 */ 97, 97, 97, 1378, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23903 */ 45, 975, 45, 45, 45, 45, 67, 67, 1923, 67, 1925, 67, 67, 1927, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, + /* 23928 */ 97, 1985, 45, 45, 45, 45, 45, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 45, 946, 45, 45, 950, 45, 45, 45, + /* 23953 */ 0, 97, 97, 97, 1939, 0, 0, 0, 97, 1943, 97, 97, 1945, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23979 */ 45, 45, 45, 45, 990, 45, 45, 45, 67, 257, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, + /* 24003 */ 337, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, + /* 24030 */ 2170880, 2170880, 2170880, 2416640, 401, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24051 */ 67, 67, 459, 461, 67, 67, 67, 67, 67, 67, 67, 67, 475, 67, 480, 67, 67, 67, 67, 67, 67, 1054, 67, 67, 67, + /* 24076 */ 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 484, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24101 */ 67, 67, 67, 67, 67, 1459, 67, 67, 97, 556, 558, 97, 97, 97, 97, 97, 97, 97, 97, 572, 97, 577, 97, 97, 0, + /* 24126 */ 0, 1896, 97, 97, 97, 97, 97, 97, 1903, 45, 45, 45, 45, 983, 45, 45, 45, 45, 988, 45, 45, 45, 45, 45, 45, + /* 24151 */ 1195, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1549, 45, 45, 45, 45, 45, 581, 97, 97, 584, 97, 97, 97, 97, + /* 24176 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, + /* 24202 */ 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1004, 45, 45, 45, 67, 67, 67, 749, 67, + /* 24227 */ 67, 67, 67, 67, 67, 67, 67, 67, 761, 67, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 1071, 67, 67, 67, 67, 1076, + /* 24252 */ 794, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 544, 97, 97, 97, 97, 847, 97, 97, 97, + /* 24278 */ 97, 97, 97, 97, 97, 97, 859, 97, 0, 0, 2025, 97, 20480, 97, 97, 2029, 45, 45, 45, 45, 45, 45, 67, 67, 67, + /* 24303 */ 1575, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1775, 67, 67, 67, 97, 97, 97, 97, 892, 893, 97, 97, 97, 97, 97, + /* 24328 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1515, 97, 993, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24353 */ 45, 45, 45, 992, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1607, 67, 67, 97, + /* 24378 */ 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 97, 45, 1556, 1557, 45, 45, 45, 45, 45, + /* 24403 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 696, 45, 1596, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24428 */ 67, 67, 499, 67, 97, 97, 97, 1621, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1346, 97, 97, 97, + /* 24453 */ 97, 1740, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 45, 45, 67, 97, 97, + /* 24478 */ 97, 97, 97, 97, 1836, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1984, 97, 45, 45, 45, 45, 45, 45, 1808, 45, + /* 24504 */ 45, 45, 45, 45, 45, 45, 45, 67, 739, 67, 67, 67, 67, 67, 744, 45, 45, 1909, 45, 45, 45, 45, 45, 45, 45, + /* 24529 */ 67, 1917, 67, 1918, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, + /* 24554 */ 67, 67, 67, 1922, 67, 67, 67, 67, 67, 67, 67, 97, 1930, 97, 1931, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, + /* 24580 */ 45, 45, 45, 45, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 1580, 67, 67, 0, 97, 97, 1938, 97, 0, 0, 0, 97, 97, + /* 24606 */ 97, 97, 97, 97, 45, 45, 45, 699, 45, 45, 45, 704, 45, 45, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, + /* 24632 */ 45, 45, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 2006, 97, 97, 97, 97, 0, 45, 1533, 45, 45, 45, 45, 45, + /* 24658 */ 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 722, 723, 45, 45, 45, 45, 45, 45, 2045, 67, 67, 67, + /* 24683 */ 2047, 0, 0, 97, 97, 97, 2051, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, + /* 24710 */ 409, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1957, 45, 67, 67, 67, 67, 67, 1836, 97, 97, 45, 67, 0, 97, 45, + /* 24735 */ 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 67, 67, 1761, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 494, 67, + /* 24761 */ 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 45, 45, 420, 45, 45, 422, 45, 45, 425, 45, + /* 24786 */ 45, 45, 45, 45, 45, 45, 387, 45, 45, 45, 45, 397, 45, 45, 45, 67, 460, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24812 */ 67, 67, 67, 67, 67, 515, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, + /* 24838 */ 67, 97, 0, 2039, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1426, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24864 */ 1689, 67, 67, 67, 97, 557, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 612, 97, 582, 97, 97, + /* 24889 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 896, 97, 97, 97, 97, 97, 97, 97, 97, + /* 24915 */ 97, 97, 885, 97, 97, 97, 97, 97, 45, 939, 45, 45, 45, 45, 943, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24940 */ 1916, 67, 67, 67, 67, 67, 45, 67, 67, 67, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 1019, 67, 67, 67, 67, 67, + /* 24965 */ 67, 1271, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24990 */ 67, 804, 67, 67, 67, 67, 67, 1077, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, + /* 25015 */ 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, 2170880, 2170880, 2170880, + /* 25028 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2543616, 2170880, 2170880, 2170880, + /* 25039 */ 2170880, 2170880, 2629632, 1169, 97, 1171, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, + /* 25061 */ 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 936, 45, 45, 67, 67, 214, 67, 220, 67, 67, 233, 67, 243, 67, 248, + /* 25086 */ 67, 67, 67, 67, 67, 67, 1298, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1617, 97, 0, 0, 0, 45, + /* 25114 */ 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 45, 45, 45, 67, 67, 1243, 67, 67, 67, + /* 25139 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 1281, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 25164 */ 67, 67, 67, 67, 776, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 907, 45, 1412, 45, + /* 25189 */ 45, 45, 45, 45, 45, 45, 1418, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 690, 45, 45, 695, 45, 45, 67, 67, + /* 25214 */ 67, 67, 67, 1465, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1712, 97, 97, 97, 97, 1741, 97, + /* 25239 */ 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1924, 67, 67, 67, 67, + /* 25265 */ 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1983, 97, 97, 45, 45, 1987, 45, 1988, 45, 0, 97, 97, 97, 97, 0, 0, + /* 25291 */ 0, 1942, 97, 97, 97, 97, 97, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 711, 45, 45, 153, + /* 25316 */ 45, 45, 166, 45, 176, 45, 181, 45, 45, 188, 191, 196, 45, 204, 255, 258, 263, 67, 271, 67, 67, 0, 37139, + /* 25339 */ 24853, 0, 0, 0, 282, 41098, 65820, 97, 97, 97, 294, 97, 300, 97, 97, 313, 97, 323, 97, 328, 97, 97, 335, + /* 25362 */ 338, 343, 97, 351, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 41098, 0, + /* 25388 */ 140, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1411, 67, 67, 486, 67, 67, 67, 67, 67, + /* 25413 */ 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 67, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, + /* 25438 */ 67, 67, 67, 67, 67, 67, 1443, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1263, 67, 67, 67, 67, 67, 97, 97, + /* 25463 */ 583, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1526, 97, 598, 97, 97, 97, 97, 97, 97, 97, + /* 25488 */ 97, 97, 97, 97, 97, 610, 97, 97, 0, 97, 97, 1796, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1744, + /* 25513 */ 45, 45, 45, 369, 0, 651, 45, 653, 45, 654, 45, 656, 45, 45, 45, 660, 45, 45, 45, 45, 1558, 45, 45, 45, 45, + /* 25538 */ 45, 45, 45, 45, 1566, 45, 45, 681, 45, 683, 45, 45, 45, 45, 45, 45, 45, 45, 691, 692, 694, 45, 45, 45, + /* 25562 */ 716, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 709, 45, 45, 712, 45, 714, 45, 45, 45, 718, 45, 45, + /* 25587 */ 45, 45, 45, 45, 45, 726, 45, 45, 45, 733, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 25613 */ 1691, 67, 67, 747, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 1613, 97, + /* 25639 */ 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 67, 764, 67, 67, + /* 25665 */ 67, 67, 768, 67, 770, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1977, 67, 778, 779, 781, + /* 25690 */ 67, 67, 67, 67, 67, 67, 788, 789, 67, 67, 792, 793, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 25715 */ 824, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 836, 97, 838, 97, 839, 97, 841, 97, 97, + /* 25736 */ 97, 845, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 97, 97, 0, 1728, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, + /* 25762 */ 97, 97, 97, 97, 45, 1802, 45, 97, 97, 862, 97, 97, 97, 97, 866, 97, 868, 97, 97, 97, 97, 97, 97, 0, 0, 97, + /* 25788 */ 97, 1788, 97, 97, 97, 0, 0, 97, 97, 876, 877, 879, 97, 97, 97, 97, 97, 97, 886, 887, 97, 97, 890, 891, 97, + /* 25813 */ 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, + /* 25839 */ 1646, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 97, 97, 922, 923, 45, 955, 45, 957, 45, 45, 45, 45, + /* 25864 */ 45, 45, 45, 45, 45, 45, 45, 45, 195, 45, 45, 45, 45, 45, 981, 982, 45, 45, 45, 45, 45, 45, 989, 45, 45, + /* 25889 */ 45, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, + /* 25914 */ 67, 67, 67, 1031, 67, 1033, 67, 67, 67, 67, 67, 67, 67, 817, 819, 67, 67, 67, 67, 67, 37689, 544, 67, + /* 25937 */ 1065, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 1078, 67, 67, 1081, 1082, 67, + /* 25961 */ 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 25980 */ 2437406, 2171166, 2171166, 97, 1115, 97, 1117, 97, 97, 97, 97, 97, 97, 1125, 97, 1127, 97, 97, 97, 0, 97, + /* 26001 */ 97, 97, 0, 97, 97, 97, 97, 1644, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 1642, 97, 97, 97, 97, 97, 97, 625, + /* 26027 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1159, 97, 97, 97, 97, 97, 97, + /* 26053 */ 97, 97, 97, 97, 97, 97, 97, 1502, 97, 97, 97, 97, 97, 1172, 97, 97, 1175, 1176, 97, 97, 12288, 0, 925, 0, + /* 26077 */ 1179, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 935, 45, 45, 45, 1233, 45, 45, 45, 1236, 45, 45, 45, + /* 26103 */ 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1873, 67, 67, 45, 45, 1218, 45, 45, 45, 1223, 45, 45, 45, 45, 45, + /* 26128 */ 45, 45, 1230, 45, 45, 67, 67, 215, 219, 222, 67, 230, 67, 67, 244, 246, 249, 67, 67, 67, 67, 67, 67, 1882, + /* 26152 */ 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1904, 45, 1905, 45, 67, 67, 67, 67, 67, 1258, 67, + /* 26177 */ 1260, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 67, 67, 67, 1283, 67, 67, 67, 67, 67, + /* 26202 */ 67, 67, 1290, 67, 67, 67, 67, 67, 67, 67, 818, 67, 67, 67, 67, 67, 67, 37689, 544, 67, 67, 1295, 67, 67, + /* 26226 */ 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2174976, 0, 0, 97, 97, 97, 1326, 97, 97, 97, 97, 97, 97, 97, 97, + /* 26253 */ 97, 97, 97, 97, 97, 1514, 97, 97, 97, 97, 97, 1338, 97, 1340, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 26278 */ 1500, 97, 97, 1503, 97, 1363, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 97, 97, 563, 97, 97, + /* 26302 */ 97, 97, 97, 97, 578, 97, 1375, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 685, 45, 45, + /* 26327 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 45, 45, 45, 45, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, + /* 26352 */ 67, 67, 67, 67, 67, 67, 1778, 97, 97, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 26377 */ 609, 97, 97, 97, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 1554, 45, 1570, 1571, 45, + /* 26401 */ 67, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 67, 1061, 67, 67, 1582, + /* 26425 */ 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 1594, 67, 67, 67, 67, 67, 97, 2038, 0, 97, 97, 97, + /* 26450 */ 97, 97, 2044, 45, 45, 45, 995, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 45, 45, 45, 1809, 45, 1811, 45, 45, + /* 26474 */ 45, 45, 45, 67, 1610, 1611, 67, 1476, 0, 1478, 0, 1480, 0, 97, 97, 97, 97, 97, 97, 1618, 1647, 1649, 97, + /* 26497 */ 97, 97, 1652, 97, 1654, 1655, 97, 0, 45, 45, 45, 1658, 45, 45, 67, 67, 216, 67, 67, 67, 67, 234, 67, 67, + /* 26521 */ 67, 67, 252, 254, 1845, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 947, 45, 45, + /* 26546 */ 45, 45, 45, 67, 67, 67, 67, 67, 1881, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1902, 45, 45, 45, + /* 26572 */ 45, 45, 45, 1908, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1921, 67, 67, + /* 26597 */ 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 0, 97, 1937, 97, 97, 1940, 0, 0, 97, 97, 97, + /* 26624 */ 97, 97, 97, 1947, 1948, 1949, 45, 45, 45, 1952, 45, 1954, 45, 45, 45, 45, 1959, 1960, 1961, 67, 67, 67, + /* 26646 */ 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 67, 67, 1964, 67, 1966, 67, + /* 26671 */ 67, 67, 67, 1971, 1972, 1973, 97, 0, 0, 0, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 884, 97, + /* 26696 */ 97, 97, 889, 97, 97, 1978, 97, 0, 0, 1981, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 736, 45, 67, 67, 67, + /* 26721 */ 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 45, 67, 67, 67, 67, 0, 2049, 97, 97, 97, 97, 45, 45, 67, + /* 26747 */ 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 933, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 26774 */ 45, 67, 97, 97, 288, 97, 97, 97, 97, 97, 97, 317, 97, 97, 97, 97, 97, 97, 0, 0, 97, 1787, 97, 97, 97, 97, + /* 26800 */ 0, 0, 45, 45, 378, 45, 45, 45, 45, 45, 390, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 431, 433, 45, 45, + /* 26826 */ 45, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 67, 97, 97, 97, 1144, 97, 97, + /* 26851 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 632, 97, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, + /* 26877 */ 97, 97, 97, 97, 855, 97, 97, 97, 97, 67, 97, 97, 97, 97, 97, 97, 1837, 0, 97, 97, 97, 97, 97, 0, 0, 0, + /* 26903 */ 1897, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, + /* 26928 */ 45, 45, 45, 97, 2010, 45, 45, 45, 45, 45, 45, 2016, 67, 67, 67, 67, 67, 67, 2022, 45, 2046, 67, 67, 67, 0, + /* 26953 */ 0, 2050, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 932, 45, 45, 45, 45, 45, 1222, + /* 26979 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 45, 45, 133, 0, 0, 0, 37, 110630, 0, 0, 0, + /* 27004 */ 114730, 106539, 41098, 45, 45, 45, 45, 701, 702, 45, 45, 705, 706, 45, 45, 45, 45, 45, 45, 703, 45, 45, + /* 27026 */ 45, 45, 45, 45, 45, 45, 45, 719, 45, 45, 45, 45, 45, 725, 45, 45, 45, 369, 649, 45, 45, 45, 45, 45, 45, + /* 27051 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 834, 97, 97, 97, 97, + /* 27074 */ 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1799, 97, 97, 45, 45, 45, + /* 27100 */ 1569, 45, 45, 45, 1572, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1306, 0, 67, 67, 67, 1598, + /* 27125 */ 67, 67, 67, 67, 67, 67, 67, 67, 1606, 67, 67, 1609, 97, 97, 97, 1650, 97, 97, 1653, 97, 97, 97, 0, 45, 45, + /* 27150 */ 1657, 45, 45, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1421, 45, 45, 45, 1703, 67, 67, + /* 27174 */ 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1711, 97, 97, 0, 1895, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, + /* 27200 */ 45, 958, 45, 960, 45, 45, 45, 45, 45, 45, 45, 45, 1913, 45, 45, 1915, 67, 67, 67, 67, 67, 67, 67, 466, 67, + /* 27225 */ 67, 67, 67, 67, 67, 481, 67, 45, 1749, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 45, 45, 45, 45, 173, 45, + /* 27250 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1773, 67, 67, 67, 67, 67, + /* 27276 */ 67, 67, 97, 97, 97, 97, 1886, 0, 0, 0, 97, 97, 67, 2035, 2036, 67, 67, 97, 0, 0, 97, 2041, 2042, 97, 97, + /* 27301 */ 45, 45, 45, 45, 1662, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1397, 45, 45, 45, 45, 151, 45, 45, 45, + /* 27326 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 437, 205, 45, 67, 67, 67, 218, 67, 67, 67, 67, 67, 67, 67, + /* 27352 */ 67, 67, 67, 67, 1047, 67, 67, 67, 67, 97, 97, 97, 97, 298, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 27377 */ 870, 97, 97, 97, 97, 97, 97, 97, 97, 352, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, + /* 27404 */ 365, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1427, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1435, 520, 67, 67, + /* 27428 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1037, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 27454 */ 97, 97, 97, 97, 923, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1919, + /* 27479 */ 67, 1759, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 45, 154, 45, 162, 45, 45, 45, + /* 27504 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 964, 45, 45, 45, 206, 45, 67, 67, 67, 67, 221, 67, 229, 67, 67, 67, + /* 27529 */ 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 67, 785, 67, 67, + /* 27555 */ 67, 67, 67, 67, 67, 67, 802, 67, 67, 67, 807, 67, 67, 67, 97, 97, 97, 97, 353, 97, 0, 53264, 0, 18, 18, + /* 27580 */ 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 402, 45, 45, + /* 27603 */ 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 45, 45, 674, 45, 45, 45, 45, 45, 45, 45, 45, 389, 45, 394, + /* 27628 */ 45, 45, 398, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 447, 45, 45, 45, 454, 45, 45, 67, 67, 67, 67, 67, + /* 27653 */ 67, 67, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 488, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 67, 67, + /* 27678 */ 67, 67, 67, 1774, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, + /* 27705 */ 67, 67, 523, 67, 67, 527, 67, 67, 67, 67, 67, 533, 67, 67, 67, 540, 97, 97, 97, 585, 97, 97, 97, 97, 97, + /* 27730 */ 97, 97, 593, 97, 97, 97, 97, 97, 97, 1784, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, + /* 27757 */ 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 620, 97, 97, 624, 97, 97, 97, 97, 97, 630, 97, 97, 97, 637, 713, 45, + /* 27783 */ 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 45, 45, 45, 1197, 45, 45, 45, 45, 45, 45, 45, 45, 730, 732, + /* 27808 */ 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1581, 67, 45, 67, 67, 67, 67, 1012, 67, 67, + /* 27833 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27858 */ 67, 67, 67, 67, 67, 775, 67, 67, 67, 67, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 479, 67, + /* 27883 */ 67, 67, 67, 67, 67, 1080, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, + /* 27909 */ 287, 0, 2379776, 2170880, 2170880, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 920, + /* 27931 */ 97, 97, 0, 0, 0, 0, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 45, + /* 27957 */ 1219, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 45, 959, 45, 45, 45, 45, 45, 45, 45, 45, 45, 184, + /* 27982 */ 45, 45, 45, 45, 202, 45, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1266, 67, 1268, + /* 28007 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1279, 67, 67, 67, 67, 67, 272, 67, 0, 37139, 24853, 0, 0, + /* 28032 */ 0, 0, 41098, 65820, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1293, 67, 67, 67, 1296, + /* 28056 */ 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 281, 94, 0, 0, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, + /* 28083 */ 97, 97, 1373, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 0, 97, 1376, 97, 97, 97, 97, 97, + /* 28109 */ 97, 97, 0, 0, 0, 45, 45, 1384, 45, 45, 67, 208, 67, 67, 67, 67, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, + /* 28135 */ 1069, 1070, 67, 67, 67, 67, 67, 67, 67, 0, 37140, 24854, 0, 0, 0, 0, 41098, 65821, 45, 1423, 45, 45, 45, + /* 28158 */ 45, 45, 45, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1083, 37689, 0, 25403, 0, 66365, 0, 0, 0, 1436, 67, + /* 28182 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1830, 67, 1452, 1453, 67, 67, 67, 67, 1456, 67, + /* 28206 */ 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 67, 67, 1461, 67, 67, 67, 1464, 67, 1466, 67, 67, 67, + /* 28231 */ 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 1587, 67, 67, 67, 67, 67, 67, 67, 67, 1595, 1489, 97, 97, 97, + /* 28255 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 1505, 1506, 97, 97, 97, 97, 1510, 97, 97, 97, + /* 28279 */ 97, 97, 97, 97, 97, 97, 1163, 1164, 97, 97, 97, 97, 97, 1516, 97, 97, 97, 1519, 97, 1521, 97, 97, 97, 97, + /* 28303 */ 97, 97, 1525, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 67, 67, 67, 67, 67, 1586, + /* 28328 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1600, 67, 67, 67, + /* 28353 */ 67, 67, 67, 67, 67, 67, 67, 67, 1301, 0, 0, 0, 1307, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 1627, 97, + /* 28378 */ 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 919, 97, 97, 97, 0, 97, 97, 97, 1781, 97, 97, 0, 0, 97, 97, 97, + /* 28404 */ 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1792, 1860, 45, 1862, 1863, 45, 1865, 45, 67, 67, 67, 67, 67, + /* 28429 */ 67, 67, 67, 1875, 67, 1877, 1878, 67, 1880, 67, 97, 97, 97, 97, 97, 1887, 0, 1889, 97, 97, 18, 0, 139621, + /* 28452 */ 0, 0, 0, 0, 0, 0, 364, 237568, 0, 367, 0, 97, 1893, 0, 0, 0, 97, 1898, 1899, 97, 1901, 97, 45, 45, 45, 45, + /* 28478 */ 45, 2014, 45, 67, 67, 67, 67, 67, 2020, 67, 97, 1989, 45, 1990, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1996, + /* 28502 */ 67, 1997, 67, 67, 67, 67, 67, 273, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 97, 97, 97, 97, + /* 28526 */ 0, 0, 97, 97, 2005, 0, 97, 2007, 97, 97, 18, 0, 139621, 0, 0, 0, 642, 0, 133, 364, 0, 0, 367, 41606, 0, + /* 28551 */ 97, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 209, 67, 67, 67, 223, 67, 67, 67, + /* 28576 */ 67, 67, 67, 67, 67, 67, 786, 67, 67, 67, 791, 67, 67, 45, 45, 940, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28602 */ 45, 45, 45, 45, 727, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1016, 67, 67, 67, 67, 67, 67, 67, 67, 37689, + /* 28627 */ 0, 25403, 0, 66365, 0, 0, 0, 133, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 142, 45, + /* 28650 */ 45, 67, 210, 67, 67, 67, 225, 67, 67, 239, 67, 67, 67, 250, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, + /* 28675 */ 476, 67, 67, 67, 67, 67, 67, 67, 1709, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1843, + /* 28701 */ 0, 67, 259, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 289, 97, 97, 97, 303, + /* 28725 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 97, 339, 97, 97, 97, 97, 97, 0, 53264, 0, 18, + /* 28751 */ 18, 24, 24, 0, 28, 28, 0, 358, 0, 0, 0, 0, 0, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1953, 45, 1955, 45, + /* 28777 */ 45, 45, 67, 67, 67, 67, 67, 67, 67, 1687, 1688, 67, 67, 67, 67, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, + /* 28802 */ 45, 45, 45, 45, 45, 45, 45, 1203, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 477, 67, 67, 67, 67, + /* 28827 */ 67, 67, 67, 1970, 97, 97, 97, 1974, 0, 0, 0, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1372, + /* 28852 */ 97, 97, 97, 97, 67, 522, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 536, 67, 67, 67, 67, 67, 67, 1696, + /* 28877 */ 67, 67, 67, 67, 67, 67, 67, 1701, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 574, 97, 97, 97, 97, + /* 28902 */ 97, 301, 97, 309, 97, 97, 97, 97, 97, 97, 97, 97, 97, 900, 97, 97, 97, 905, 97, 97, 97, 619, 97, 97, 97, + /* 28927 */ 97, 97, 97, 97, 97, 97, 97, 97, 633, 97, 97, 18, 0, 139621, 0, 0, 362, 0, 0, 0, 364, 0, 0, 367, 41606, + /* 28952 */ 369, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 664, 67, 67, 67, 67, 750, 751, 67, 67, 67, + /* 28977 */ 67, 758, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1057, 1058, 67, 67, 67, 67, + /* 29002 */ 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 67, 97, 97, 97, 97, 895, + /* 29028 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 902, 97, 97, 97, 97, 67, 67, 1051, 67, 67, 67, 67, 67, 67, 67, + /* 29054 */ 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1302, 0, 0, 0, + /* 29080 */ 1308, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1139, 97, 97, 97, 97, 1156, 97, + /* 29104 */ 97, 97, 97, 97, 97, 1161, 97, 97, 97, 97, 97, 1166, 97, 97, 18, 640, 139621, 0, 641, 0, 0, 0, 0, 364, 0, + /* 29129 */ 0, 367, 41606, 67, 67, 67, 67, 1257, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1305, 0, 0, 97, 97, + /* 29155 */ 1337, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1630, 97, 67, 1474, 67, 67, 0, 0, 0, 0, 0, + /* 29181 */ 0, 0, 0, 0, 0, 0, 0, 0, 2380062, 2171166, 2171166, 97, 1529, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, + /* 29205 */ 45, 45, 45, 1228, 45, 45, 45, 45, 67, 67, 67, 67, 1707, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, + /* 29231 */ 0, 97, 1891, 1739, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 1200, 45, 45, 45, + /* 29256 */ 45, 97, 97, 1894, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, + /* 29282 */ 45, 45, 45, 1420, 45, 45, 45, 45, 67, 67, 1965, 67, 1967, 67, 67, 67, 97, 97, 97, 97, 0, 1976, 0, 97, 97, + /* 29307 */ 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 97, 97, 1979, 0, 0, 97, 1982, 97, 97, 97, 1986, 45, 45, + /* 29333 */ 45, 45, 45, 735, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 2000, 97, 97, + /* 29358 */ 97, 2002, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1798, 97, 97, 97, 45, 45, 45, 2034, 67, 67, 67, 67, + /* 29383 */ 97, 0, 0, 2040, 97, 97, 97, 97, 45, 45, 45, 45, 1752, 45, 45, 45, 1753, 1754, 45, 45, 45, 45, 45, 45, 383, + /* 29408 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 45, 45, 438, 45, 45, 45, 45, 45, 445, 45, 45, 45, + /* 29434 */ 45, 45, 45, 45, 45, 67, 1430, 67, 67, 67, 67, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 531, 67, 67, + /* 29459 */ 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1096, 97, 97, 97, 621, 97, 97, 97, 97, 97, 628, + /* 29483 */ 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 29509 */ 676, 45, 45, 45, 45, 45, 942, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 708, 45, 45, 45, 45, 763, 67, + /* 29534 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 809, 810, 67, 67, 67, 67, 783, 67, 67, 67, 67, 67, + /* 29560 */ 67, 67, 67, 67, 67, 67, 0, 1303, 0, 0, 0, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29587 */ 613, 97, 45, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 67, 67, 67, 67, + /* 29612 */ 1027, 67, 67, 67, 67, 1032, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1097, 1064, + /* 29635 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 67, 1098, 0, 0, 97, 97, 97, 97, 97, 97, + /* 29661 */ 97, 97, 97, 97, 97, 97, 97, 331, 97, 97, 97, 97, 1158, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29687 */ 594, 97, 97, 1309, 0, 0, 0, 1315, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29715 */ 97, 97, 1374, 97, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1240, 67, 67, + /* 29739 */ 1583, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1252, 67, 97, 97, 97, 1635, 97, 97, 97, 0, + /* 29764 */ 97, 97, 97, 97, 97, 97, 97, 97, 1800, 97, 45, 45, 45, 97, 97, 1793, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29789 */ 97, 45, 45, 45, 1743, 45, 45, 45, 1746, 45, 0, 97, 97, 97, 97, 97, 1851, 97, 45, 45, 45, 45, 1856, 45, 45, + /* 29814 */ 45, 45, 1864, 45, 45, 67, 67, 1869, 67, 67, 67, 67, 1874, 67, 0, 97, 97, 45, 67, 2058, 97, 45, 67, 0, 97, + /* 29839 */ 45, 67, 0, 97, 45, 45, 67, 211, 67, 67, 67, 67, 67, 67, 240, 67, 67, 67, 67, 67, 67, 67, 1444, 67, 67, 67, + /* 29865 */ 67, 67, 67, 67, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 67, 67, 268, 67, 67, 67, 0, 37139, 24853, 0, 0, + /* 29890 */ 0, 0, 41098, 65820, 97, 97, 290, 97, 97, 97, 305, 97, 97, 319, 97, 97, 97, 330, 97, 97, 18, 640, 139621, + /* 29913 */ 0, 641, 0, 0, 0, 0, 364, 0, 643, 367, 41606, 97, 97, 348, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, + /* 29939 */ 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 395, + /* 29963 */ 45, 45, 45, 400, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 45, 972, 45, 45, 45, 45, 45, + /* 29989 */ 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 745, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, + /* 30015 */ 67, 67, 67, 37689, 1086, 25403, 1090, 66365, 1094, 0, 0, 97, 843, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, + /* 30038 */ 97, 97, 97, 97, 97, 1121, 97, 97, 97, 97, 1126, 97, 97, 97, 97, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, + /* 30063 */ 45, 45, 45, 45, 45, 45, 45, 1400, 45, 67, 67, 67, 1011, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, + /* 30088 */ 1304, 0, 0, 0, 1190, 45, 45, 1193, 1194, 45, 45, 45, 45, 45, 1199, 45, 1201, 45, 45, 45, 45, 1911, 45, 45, + /* 30112 */ 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 67, 67, 45, 1205, 45, 45, 45, 45, 45, 45, 45, 45, + /* 30137 */ 1211, 45, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1217, + /* 30162 */ 45, 45, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 1229, 45, 45, 45, 1388, 45, 45, 45, 45, 45, 45, 1396, 45, + /* 30186 */ 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1574, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 30212 */ 67, 1590, 67, 67, 67, 67, 67, 1254, 67, 67, 67, 67, 67, 1259, 67, 1261, 67, 67, 67, 67, 1265, 67, 67, 67, + /* 30236 */ 67, 67, 67, 1708, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 67, 67, 67, 67, + /* 30263 */ 1285, 67, 67, 67, 67, 1289, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 1087, 25403, 1091, 66365, 1095, 0, 0, + /* 30285 */ 97, 97, 97, 97, 1339, 97, 1341, 97, 97, 97, 97, 1345, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 573, + /* 30309 */ 97, 97, 97, 97, 97, 97, 1717, 97, 0, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 30335 */ 1329, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 588, + /* 30360 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 97, 97, 97, 1365, 97, 97, 97, 97, 1369, 97, + /* 30385 */ 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, + /* 30410 */ 45, 45, 45, 45, 45, 45, 45, 1399, 45, 45, 45, 1413, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 30435 */ 45, 1669, 45, 1422, 45, 45, 1425, 45, 45, 1428, 45, 1429, 67, 67, 67, 67, 67, 67, 67, 67, 1468, 67, 67, + /* 30458 */ 67, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 539, 67, 67, 1475, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30486 */ 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 97, 97, 1530, 97, 0, 45, 45, 1534, 45, 45, 45, 45, 45, 45, + /* 30507 */ 45, 45, 1956, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 67, 67, 1601, 67, 67, 67, 67, 67, 67, 67, + /* 30532 */ 67, 67, 803, 67, 67, 67, 67, 67, 67, 1632, 97, 1634, 0, 97, 97, 97, 1640, 97, 97, 97, 1643, 97, 97, 1645, + /* 30556 */ 97, 97, 97, 97, 97, 912, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1660, 1661, + /* 30582 */ 45, 45, 45, 45, 1665, 1666, 45, 45, 45, 45, 45, 1670, 1692, 1693, 67, 67, 67, 67, 67, 1697, 67, 67, 67, + /* 30605 */ 67, 67, 67, 67, 1702, 97, 97, 1714, 1715, 97, 97, 97, 97, 0, 1721, 1722, 97, 97, 97, 97, 97, 97, 1353, 97, + /* 30629 */ 97, 97, 97, 97, 97, 97, 97, 1362, 1726, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 1734, 97, 97, 97, 97, 97, + /* 30654 */ 848, 849, 97, 97, 97, 97, 856, 97, 97, 97, 97, 97, 354, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 45, 45, + /* 30679 */ 1750, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1681, 45, 0, 1846, 97, 97, 97, 97, 97, 97, + /* 30704 */ 45, 45, 1854, 45, 45, 45, 45, 1859, 67, 67, 67, 1879, 67, 67, 97, 97, 1884, 97, 97, 0, 0, 0, 97, 97, 97, + /* 30729 */ 1105, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 1347, 97, 1892, 97, 0, 0, 0, 97, 97, 97, + /* 30754 */ 1900, 97, 97, 45, 45, 45, 45, 45, 997, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1002, 45, 45, 1005, 1006, + /* 30778 */ 45, 67, 67, 67, 67, 67, 1926, 67, 67, 1928, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, + /* 30804 */ 97, 1737, 97, 0, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1944, 97, 97, 1946, 45, 45, 45, 1544, 45, 45, 45, 45, + /* 30829 */ 45, 45, 45, 45, 45, 45, 45, 45, 190, 45, 45, 45, 152, 155, 45, 163, 45, 45, 177, 179, 182, 45, 45, 45, + /* 30853 */ 193, 197, 45, 45, 45, 1672, 45, 45, 45, 45, 45, 1677, 45, 1679, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, + /* 30877 */ 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 67, 260, 264, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, + /* 30902 */ 41098, 65820, 97, 97, 97, 295, 299, 302, 97, 310, 97, 97, 324, 326, 329, 97, 97, 97, 0, 97, 97, 1639, 0, + /* 30925 */ 1641, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 97, 97, 97, 1523, 97, 97, 97, 97, 97, 97, + /* 30950 */ 97, 97, 1719, 97, 97, 97, 97, 97, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 97, 97, 312, 97, 97, 97, 97, 97, + /* 30975 */ 97, 97, 97, 1123, 97, 97, 97, 97, 97, 97, 97, 340, 344, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, + /* 31000 */ 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 373, 375, 419, 45, 45, 45, 45, 45, 45, + /* 31024 */ 45, 45, 45, 428, 45, 45, 435, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1410, 45, + /* 31049 */ 45, 45, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 67, 67, 67, 67, 1969, 67, 97, + /* 31074 */ 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 2064, 2065, 0, 2066, 45, 521, 67, 67, 67, 67, + /* 31100 */ 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 465, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, + /* 31125 */ 1467, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1933, 0, 97, 97, 97, 602, 97, 97, 97, 97, + /* 31150 */ 97, 97, 97, 97, 97, 611, 97, 97, 18, 640, 139621, 358, 641, 0, 0, 0, 0, 364, 0, 0, 367, 0, 618, 97, 97, + /* 31175 */ 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 97, 97, 881, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 569, + /* 31201 */ 97, 97, 97, 97, 97, 369, 0, 45, 652, 45, 45, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, + /* 31226 */ 45, 45, 45, 45, 45, 67, 67, 67, 1432, 67, 67, 67, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, + /* 31251 */ 773, 67, 67, 67, 0, 1305, 0, 1311, 0, 1317, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, + /* 31276 */ 97, 0, 97, 97, 97, 1724, 97, 97, 97, 777, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 31301 */ 535, 67, 67, 67, 67, 67, 67, 67, 814, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, + /* 31324 */ 0, 0, 66365, 66365, 552, 0, 97, 837, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31349 */ 918, 97, 97, 97, 97, 0, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1168, 97, 97, 97, + /* 31375 */ 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 97, 97, 0, 1637, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, + /* 31401 */ 97, 97, 97, 1801, 45, 45, 97, 875, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1151, 1152, + /* 31425 */ 97, 97, 97, 67, 67, 67, 1040, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 790, 67, 67, 67, 1180, 0, + /* 31450 */ 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 200, 45, 45, 67, 67, 67, 1454, 67, 67, 67, 67, + /* 31475 */ 67, 67, 67, 67, 67, 67, 67, 67, 806, 67, 67, 67, 0, 0, 0, 1481, 0, 1094, 0, 0, 97, 1483, 97, 97, 97, 97, + /* 31501 */ 97, 97, 304, 97, 97, 318, 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 97, + /* 31526 */ 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, + /* 31551 */ 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 1633, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31577 */ 1381, 0, 0, 45, 45, 45, 45, 97, 97, 1727, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 626, 97, 97, + /* 31603 */ 97, 97, 97, 97, 636, 45, 45, 1760, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 67, 67, 1299, 67, + /* 31628 */ 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1616, 97, 97, 1803, 45, 45, 45, 45, 1807, 45, 45, 45, 45, 45, + /* 31654 */ 1813, 45, 45, 45, 67, 67, 1684, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 822, 67, 67, 37689, 544, 67, + /* 31678 */ 67, 1818, 67, 67, 67, 67, 1822, 67, 67, 67, 67, 67, 1828, 67, 67, 67, 67, 67, 97, 0, 0, 97, 97, 97, 97, + /* 31703 */ 97, 45, 45, 45, 2012, 2013, 45, 45, 67, 67, 67, 2018, 2019, 67, 67, 97, 67, 97, 97, 97, 1833, 97, 97, 0, + /* 31727 */ 0, 97, 97, 1840, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 1733, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 1849, 97, + /* 31753 */ 97, 97, 45, 45, 45, 45, 45, 1857, 45, 45, 45, 1910, 45, 1912, 45, 45, 1914, 45, 67, 67, 67, 67, 67, 67, + /* 31777 */ 67, 67, 67, 67, 1017, 67, 67, 1020, 67, 45, 1861, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1872, 67, 67, + /* 31801 */ 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1446, 67, 67, 67, 67, 67, 1876, 67, 67, 67, + /* 31826 */ 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1890, 97, 97, 97, 97, 97, 1134, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31852 */ 97, 570, 97, 97, 97, 97, 580, 1935, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1906, + /* 31878 */ 45, 67, 67, 67, 67, 2048, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 931, 45, 45, + /* 31905 */ 45, 45, 45, 45, 1674, 45, 1676, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, + /* 31930 */ 67, 1871, 67, 67, 67, 67, 0, 97, 97, 45, 67, 0, 97, 2060, 2061, 0, 2063, 45, 67, 0, 97, 45, 45, 156, 45, + /* 31955 */ 45, 45, 45, 45, 45, 45, 45, 45, 192, 45, 45, 45, 45, 1673, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 31980 */ 429, 45, 45, 45, 45, 67, 67, 67, 269, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 349, + /* 32004 */ 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, + /* 32029 */ 45, 374, 45, 45, 67, 67, 213, 217, 67, 67, 67, 67, 67, 242, 67, 247, 67, 253, 45, 45, 698, 45, 45, 45, 45, + /* 32054 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 399, 45, 45, 0, 0, 0, 0, 925, 41606, 0, 929, 0, 0, 45, 45, 45, 45, 45, + /* 32081 */ 45, 1391, 45, 45, 1395, 45, 45, 45, 45, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 436, 45, 67, 67, 67, 67, + /* 32106 */ 1041, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1776, 67, 67, 97, 97, 97, 1099, 0, 0, 97, 97, 97, + /* 32131 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 888, 97, 97, 97, 1131, 97, 97, 97, 97, 1135, 97, 1137, 97, 97, 97, + /* 32156 */ 97, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 97, 97, 883, 97, 97, 97, 97, 97, 97, 1310, 0, 0, 0, + /* 32181 */ 1316, 0, 0, 0, 0, 1100, 0, 0, 0, 97, 97, 97, 97, 97, 1107, 97, 97, 97, 97, 97, 97, 97, 97, 1343, 97, 97, + /* 32207 */ 97, 97, 97, 97, 1348, 0, 0, 1317, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 45, + /* 32234 */ 1804, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1868, 67, 1870, 67, 67, 67, 67, 67, 1817, + /* 32258 */ 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 823, 67, 37689, 544, 67, 97, 1832, 97, 97, + /* 32282 */ 1834, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 1732, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, + /* 32308 */ 97, 97, 97, 97, 97, 97, 97, 1177, 0, 0, 925, 0, 0, 0, 0, 97, 97, 97, 97, 0, 0, 1941, 97, 97, 97, 97, 97, + /* 32335 */ 97, 45, 45, 45, 1991, 1992, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1998, 134, 0, 0, 0, 37, 110630, 0, 0, + /* 32360 */ 0, 114730, 106539, 41098, 45, 45, 45, 45, 941, 45, 45, 944, 45, 45, 45, 45, 45, 45, 952, 45, 45, 207, 67, + /* 32383 */ 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 67, 67, 67, 37689, 544, 369, 650, 45, + /* 32407 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1682, 25403, 546, 70179, 0, 0, 66365, 66365, 552, + /* 32430 */ 835, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1725, + /* 32455 */ 67, 67, 67, 1695, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 1036, 67, 67, 67, 265, 67, 67, + /* 32480 */ 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 296, 97, 97, 97, 97, 314, 97, 97, 97, 97, + /* 32504 */ 332, 334, 97, 97, 97, 97, 97, 1146, 1147, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, + /* 32528 */ 97, 97, 345, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, + /* 32553 */ 41098, 369, 140, 45, 372, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1213, 45, 45, + /* 32577 */ 45, 45, 404, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 45, 440, 45, 45, 45, + /* 32602 */ 45, 45, 45, 45, 45, 451, 452, 45, 45, 45, 67, 1683, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 0, + /* 32626 */ 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 67, 67, 490, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 32650 */ 67, 1447, 67, 67, 1450, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 537, 538, 67, 67, 67, 67, + /* 32675 */ 67, 506, 67, 67, 508, 67, 67, 511, 67, 67, 67, 67, 0, 1476, 0, 0, 0, 0, 0, 1478, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32703 */ 97, 97, 1484, 97, 97, 97, 97, 97, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1499, 97, 97, 97, 97, + /* 32728 */ 97, 97, 97, 97, 97, 587, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 97, 97, 97, + /* 32754 */ 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 634, 635, 97, 97, 97, 97, 97, 1160, 97, 97, 97, 97, 97, 97, 97, + /* 32779 */ 97, 97, 97, 97, 1628, 97, 97, 97, 97, 369, 0, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 45, + /* 32804 */ 999, 45, 1001, 45, 45, 45, 45, 45, 45, 45, 45, 715, 45, 45, 45, 720, 45, 45, 45, 45, 45, 45, 45, 45, 728, + /* 32829 */ 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 840, 97, 97, 97, 97, 97, 1174, 97, 97, + /* 32852 */ 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, + /* 32880 */ 97, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 680, 45, 968, 45, 970, 45, 973, 45, + /* 32905 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 962, 45, 45, 45, 45, 45, 979, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, + /* 32931 */ 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 688, 45, 45, 45, 45, 45, 45, 45, 1007, 1008, 67, + /* 32956 */ 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 1038, 67, 67, + /* 32981 */ 67, 67, 67, 67, 1044, 67, 1046, 67, 1049, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 808, 67, + /* 33005 */ 67, 0, 0, 0, 1102, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, + /* 33031 */ 97, 97, 1371, 97, 97, 97, 97, 97, 97, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 1138, 97, 1140, 97, 1143, 97, + /* 33055 */ 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 45, 1191, 45, 45, + /* 33080 */ 45, 45, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, + /* 33105 */ 45, 45, 45, 991, 45, 67, 67, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1048, 67, 67, 67, + /* 33130 */ 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 97, 1386, 45, 1387, 45, 45, 45, 45, + /* 33155 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 455, 45, 457, 45, 45, 1424, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1433, + /* 33180 */ 67, 1434, 67, 67, 67, 67, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 1593, 67, 67, 45, + /* 33205 */ 45, 1805, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1814, 45, 45, 1816, 67, 67, 67, 67, 1820, 67, 67, 67, 67, + /* 33229 */ 67, 67, 67, 67, 67, 1829, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 821, 67, 67, 67, 37689, 544, 67, 1831, + /* 33253 */ 97, 97, 97, 97, 1835, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 97, + /* 33279 */ 97, 853, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1850, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1547, + /* 33304 */ 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 961, 45, 45, 45, 45, 965, 45, 967, + /* 33329 */ 1907, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1920, 0, 1936, 97, 97, 97, 0, 0, 0, 97, 97, + /* 33355 */ 97, 97, 97, 97, 45, 45, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, + /* 33380 */ 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, + /* 33405 */ 97, 97, 0, 0, 28672, 97, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2054, 97, 97, 291, 97, + /* 33431 */ 97, 97, 97, 97, 97, 320, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, + /* 33456 */ 925, 926, 1179, 0, 45, 377, 45, 45, 45, 381, 45, 45, 392, 45, 45, 396, 45, 45, 45, 45, 971, 45, 45, 45, + /* 33480 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 45, 45, 45, 67, 67, 67, 67, 463, 67, 67, 67, 467, 67, 67, 478, + /* 33505 */ 67, 67, 482, 67, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 1472, + /* 33530 */ 67, 502, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1460, 67, 97, 97, 97, 97, 560, 97, 97, + /* 33555 */ 97, 564, 97, 97, 575, 97, 97, 579, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, + /* 33581 */ 925, 0, 0, 930, 97, 599, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 872, 97, 45, 666, 45, 45, + /* 33607 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1758, 0, 362, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, + /* 33633 */ 934, 45, 45, 45, 164, 168, 174, 178, 45, 45, 45, 45, 45, 194, 45, 45, 45, 165, 45, 45, 45, 45, 45, 45, 45, + /* 33658 */ 45, 45, 199, 45, 45, 45, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1060, 67, 67, 67, + /* 33683 */ 67, 67, 67, 1052, 1053, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1063, 97, 1157, 97, 97, 97, 97, 97, 97, + /* 33707 */ 97, 97, 97, 97, 97, 97, 1167, 97, 97, 97, 97, 97, 1379, 97, 97, 97, 0, 0, 0, 45, 1383, 45, 45, 45, 1806, + /* 33732 */ 45, 45, 45, 45, 45, 45, 1812, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 67, 67, 753, + /* 33757 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, + /* 33782 */ 67, 67, 67, 67, 67, 67, 67, 1471, 67, 45, 1402, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 33807 */ 417, 45, 67, 1462, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 1517, 97, 97, + /* 33831 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 1636, 97, 97, 97, 0, 97, 97, 97, 97, + /* 33857 */ 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 1705, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, + /* 33883 */ 97, 97, 97, 0, 0, 97, 97, 97, 97, 1842, 0, 0, 1779, 97, 97, 97, 1782, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, + /* 33910 */ 0, 97, 97, 97, 1789, 97, 97, 0, 0, 0, 97, 1847, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1675, + /* 33936 */ 45, 45, 45, 45, 45, 45, 45, 45, 737, 738, 67, 740, 67, 741, 67, 743, 67, 67, 67, 67, 67, 67, 1968, 67, 67, + /* 33961 */ 97, 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 2062, 97, 45, 67, 0, 97, 45, 67, 67, 97, 97, 2001, + /* 33988 */ 97, 0, 0, 2004, 97, 97, 0, 97, 97, 97, 97, 1797, 97, 97, 97, 97, 97, 45, 45, 45, 67, 261, 67, 67, 67, 67, + /* 34014 */ 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 292, 97, 97, 97, 97, 311, 315, 321, 325, 97, 97, + /* 34037 */ 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1330, 97, 97, 1333, 1334, 97, 341, 97, 97, + /* 34061 */ 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 363, 364, 0, 367, 41098, 369, 140, + /* 34085 */ 45, 45, 45, 45, 1221, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 416, 45, 376, 45, 45, 45, + /* 34110 */ 45, 382, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 45, 45, 403, 45, 45, 45, 45, 45, 45, + /* 34135 */ 45, 45, 45, 45, 414, 45, 45, 45, 418, 67, 67, 67, 462, 67, 67, 67, 67, 468, 67, 67, 67, 67, 67, 67, 67, + /* 34160 */ 67, 1602, 67, 1604, 67, 67, 67, 67, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 500, 67, + /* 34185 */ 67, 67, 67, 67, 1067, 67, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 274, 0, 37139, 24853, 0, 0, 0, 0, + /* 34210 */ 41098, 65820, 67, 67, 504, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 517, 519, 541, 67, 37139, 37139, + /* 34232 */ 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 554, 97, 97, 97, 559, 97, 97, 97, 97, 565, 97, + /* 34254 */ 97, 97, 97, 97, 97, 97, 1718, 0, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 906, 97, 97, 97, + /* 34280 */ 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 597, 97, 97, 97, 97, 97, 1520, 97, 97, 97, 97, 97, 97, + /* 34305 */ 97, 97, 97, 97, 0, 45, 1656, 45, 45, 45, 97, 97, 601, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 614, + /* 34330 */ 616, 638, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 369, 0, 45, 45, 45, 45, 45, 45, 45, + /* 34356 */ 45, 45, 45, 661, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1815, 45, 67, 45, + /* 34381 */ 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 678, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 34407 */ 45, 45, 976, 977, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 697, 67, 67, 748, + /* 34432 */ 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1274, 67, 67, 67, 67, 67, 67, 67, 67, 765, 67, + /* 34457 */ 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 780, 67, 67, + /* 34482 */ 784, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1777, 67, 97, 97, 97, 97, 97, 97, 846, 97, 97, 97, 97, + /* 34507 */ 852, 97, 97, 97, 97, 97, 97, 97, 1742, 45, 45, 45, 45, 45, 45, 45, 1747, 97, 97, 97, 863, 97, 97, 97, 97, + /* 34532 */ 867, 97, 97, 97, 97, 97, 97, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 1178, 925, 0, 1179, + /* 34556 */ 0, 97, 97, 97, 878, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 908, + /* 34581 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 954, 45, 45, 45, 45, 45, 45, + /* 34608 */ 45, 45, 45, 45, 963, 45, 45, 966, 45, 45, 157, 45, 45, 171, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 948, + /* 34633 */ 45, 45, 45, 45, 45, 1022, 67, 67, 1026, 67, 67, 67, 1030, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 1605, + /* 34657 */ 67, 67, 67, 1608, 67, 67, 67, 1039, 67, 67, 1042, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, + /* 34682 */ 67, 67, 0, 1100, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 97, 97, 97, 97, 1116, 97, 97, + /* 34708 */ 1120, 97, 97, 97, 1124, 97, 97, 97, 97, 97, 97, 562, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 34733 */ 1133, 97, 97, 1136, 97, 97, 97, 97, 97, 97, 97, 97, 915, 917, 97, 97, 97, 97, 97, 0, 97, 1170, 97, 97, 97, + /* 34758 */ 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1993, 67, 67, 67, + /* 34786 */ 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 1278, 67, 0, 0, 0, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, + /* 34812 */ 45, 45, 1189, 1204, 45, 45, 45, 1207, 45, 45, 1209, 45, 1210, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, + /* 34835 */ 45, 45, 45, 45, 45, 45, 689, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 34861 */ 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 805, 67, 67, 67, + /* 34887 */ 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1249, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, + /* 34912 */ 67, 67, 67, 67, 67, 1300, 0, 0, 0, 0, 0, 1267, 67, 67, 1269, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 34938 */ 1280, 97, 1349, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 97, 0, 1980, 97, 97, 97, 97, + /* 34962 */ 97, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 677, 45, 45, 45, 45, 1401, 45, 45, 45, 45, 45, 45, 45, + /* 34987 */ 45, 45, 45, 45, 45, 45, 45, 45, 953, 67, 1437, 67, 1440, 67, 67, 67, 67, 1445, 67, 67, 67, 1448, 67, 67, + /* 35011 */ 67, 67, 67, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 67, 67, 67, 1473, 67, 67, 67, + /* 35036 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 834, 97, 97, 97, 97, 1490, 97, 1493, 97, 97, 97, 97, 1498, + /* 35063 */ 97, 97, 97, 1501, 97, 97, 97, 0, 97, 1638, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 916, 97, 97, 97, 97, 97, + /* 35089 */ 97, 0, 1528, 97, 97, 97, 0, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1867, 67, 67, 67, 67, 67, 67, + /* 35114 */ 67, 67, 67, 97, 97, 97, 97, 1932, 0, 0, 1555, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1567, + /* 35139 */ 45, 45, 158, 45, 45, 172, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 67, 212, 67, 67, 67, 67, 231, 235, + /* 35164 */ 241, 245, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 472, 67, 67, 67, 67, 67, + /* 35189 */ 97, 97, 97, 97, 1651, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 45, 45, 67, 1704, 67, + /* 35214 */ 1706, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1841, 97, 0, 1844, 97, 97, 97, + /* 35240 */ 97, 1716, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, + /* 35267 */ 45, 45, 1385, 1748, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1757, 45, 45, 159, 45, 45, 45, 45, + /* 35292 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 97, 97, 1780, 97, 97, 97, 0, 0, 1786, 97, 97, 97, 97, 97, + /* 35318 */ 0, 0, 97, 97, 1730, 0, 97, 97, 97, 97, 97, 1736, 97, 1738, 67, 97, 97, 97, 97, 97, 97, 0, 1838, 97, 97, + /* 35343 */ 97, 97, 97, 0, 0, 97, 1729, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 1165, 97, 97, 97, 45, + /* 35369 */ 1950, 45, 45, 45, 45, 45, 45, 45, 45, 1958, 67, 67, 67, 1962, 67, 67, 67, 67, 67, 1246, 67, 67, 67, 67, + /* 35393 */ 67, 67, 67, 67, 67, 67, 67, 97, 1710, 97, 97, 97, 1999, 67, 97, 97, 97, 97, 0, 2003, 97, 97, 97, 0, 97, + /* 35418 */ 97, 2008, 2009, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 2052, 67, 2053, 0, 0, 0, 0, 925, 41606, 0, + /* 35443 */ 0, 930, 0, 45, 45, 45, 45, 45, 45, 1392, 45, 1394, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, + /* 35468 */ 45, 45, 45, 45, 45, 1563, 1565, 45, 45, 45, 1568, 0, 97, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, + /* 35492 */ 28672, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 679, 45, 45, 67, 67, 266, 67, + /* 35517 */ 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 346, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, + /* 35541 */ 24, 0, 28, 28, 139621, 0, 0, 362, 0, 364, 0, 367, 41098, 369, 140, 371, 45, 45, 45, 379, 45, 45, 45, 388, + /* 35565 */ 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 449, 45, 45, 45, 45, 45, 67, 67, + /* 35591 */ 542, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 97, 97, 97, 97, 1622, 97, + /* 35612 */ 97, 97, 97, 97, 97, 97, 1629, 97, 97, 0, 1794, 1795, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, + /* 35637 */ 45, 1745, 45, 45, 97, 639, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 45, 731, 45, 45, 45, + /* 35662 */ 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 251, 67, 67, 67, 67, 67, 798, 67, 67, 67, 67, + /* 35688 */ 67, 67, 67, 67, 67, 67, 67, 67, 1073, 67, 67, 67, 860, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 35714 */ 97, 873, 0, 0, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 921, 97, 0, 67, 67, 67, 67, 1245, + /* 35740 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1250, 67, 67, 1253, 0, 0, 1312, 0, 0, 0, 1318, 0, 0, 0, 0, + /* 35767 */ 0, 0, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 97, 1155, 97, 97, + /* 35792 */ 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1141, 97, 97, 67, 67, 1439, 67, 1441, 67, 67, + /* 35816 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 67, 97, 97, 1492, 97, 1494, 97, 97, 97, 97, 97, 97, + /* 35841 */ 97, 97, 97, 97, 97, 1331, 97, 97, 97, 97, 67, 67, 67, 2037, 67, 97, 0, 0, 97, 97, 97, 2043, 97, 45, 45, + /* 35866 */ 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 232, 67, 67, 67, 67, 67, 67, + /* 35892 */ 67, 67, 1823, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1975, 0, 0, 97, 874, 97, 97, 97, 97, 97, 97, + /* 35918 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1142, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, + /* 35939 */ 114730, 106539, 65, 86, 117, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, + /* 35956 */ 63, 84, 115, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 61, 82, 113, + /* 35974 */ 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 59, 80, 111, 53264, 18, 49172, + /* 35992 */ 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 57, 78, 109, 53264, 18, 49172, 57366, 24, 8192, + /* 36010 */ 28, 102432, 37, 110630, 114730, 106539, 55, 76, 107, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, + /* 36028 */ 110630, 114730, 106539, 53, 74, 105, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, + /* 36045 */ 106539, 51, 72, 103, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 49, 70, + /* 36063 */ 101, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 47, 68, 99, 53264, 18, + /* 36081 */ 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 45, 67, 97, 53264, 18, 49172, 57366, 24, + /* 36099 */ 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 213085, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, + /* 36117 */ 0, 0, 0, 44, 0, 0, 32863, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 41, 41, 41, 0, 0, 1138688, + /* 36139 */ 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 49172, + /* 36157 */ 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 89, 53264, 18, 18, 49172, 0, 57366, 0, 24, + /* 36177 */ 24, 24, 0, 127, 127, 127, 127, 102432, 67, 262, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, + /* 36200 */ 65820, 342, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 360, 0, 0, 364, 0, 367, + /* 36225 */ 41098, 369, 140, 45, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 45, 45, + /* 36250 */ 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1292, 67, 67, 1294, 67, 67, 67, 67, 67, 67, + /* 36275 */ 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1615, 97, 97, 97, 53264, 18, 49172, 57366, 24, 8192, 28, + /* 36299 */ 102432, 37, 110630, 114730, 106539, 66, 87, 118, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, + /* 36316 */ 110630, 114730, 106539, 64, 85, 116, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, + /* 36333 */ 106539, 62, 83, 114, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 60, 81, + /* 36351 */ 112, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 58, 79, 110, 53264, 18, + /* 36369 */ 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 56, 77, 108, 53264, 18, 49172, 57366, 24, + /* 36387 */ 8192, 28, 102432, 37, 110630, 114730, 106539, 54, 75, 106, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, + /* 36405 */ 37, 110630, 114730, 106539, 52, 73, 104, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, + /* 36422 */ 114730, 106539, 50, 71, 102, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, + /* 36439 */ 48, 69, 100, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 46, 67, 98, 53264, + /* 36458 */ 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 233472, 53264, 18, 49172, 57366, + /* 36476 */ 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 69724, 53264, 18, 18, 49172, 0, 57366, 262144, 24, + /* 36495 */ 24, 24, 0, 28, 28, 28, 28, 102432, 45, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 710, + /* 36520 */ 45, 45, 28, 139621, 359, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 1389, 45, 45, 45, 45, 45, + /* 36544 */ 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 45, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 36570 */ 67, 1449, 67, 67, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1154, 97, 0, 0, 0, 0, + /* 36596 */ 925, 41606, 927, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, + /* 36621 */ 67, 67, 67, 67, 45, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 951, 45, 45, 45, 45, + /* 36646 */ 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 45, 0, 0, 0, 1314, 0, 0, 0, 0, 0, 0, + /* 36673 */ 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1488, 67, 67, 267, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, + /* 36698 */ 41098, 65820, 97, 347, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 361, 0, 0, 364, + /* 36722 */ 0, 367, 41098, 369, 140, 45, 45, 45, 45, 734, 45, 45, 45, 67, 67, 67, 67, 67, 742, 67, 67, 45, 45, 668, + /* 36746 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1214, 45, 45, 1130, 97, 97, 97, 97, 97, 97, 97, 97, + /* 36771 */ 97, 97, 97, 97, 97, 97, 97, 1361, 97, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 36796 */ 1552, 45, 45, 0, 0, 0, 0, 2220032, 0, 0, 1130496, 0, 0, 0, 0, 2170880, 2171020, 2170880, 2170880, 18, 0, + /* 36817 */ 0, 131072, 0, 0, 0, 90112, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1485, 97, 97, 97, 97, 0, 45, + /* 36843 */ 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1390, 45, 1393, 45, 45, 45, 45, 1398, 45, 45, 45, 2170880, + /* 36865 */ 2171167, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 36876 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2576384, 2215936, 3117056, 2215936, 2215936, + /* 36887 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, + /* 36902 */ 0, 2174976, 0, 0, 0, 0, 0, 0, 2183168, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, + /* 36921 */ 2170880, 2170880, 2721252, 2744320, 2170880, 2170880, 2170880, 2834432, 2840040, 2170880, 2908160, + /* 36932 */ 2170880, 2170880, 2936832, 2170880, 2170880, 2985984, 2170880, 2994176, 2170880, 2170880, 3014656, + /* 36943 */ 2170880, 3059712, 3076096, 3088384, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 0, 2220032, 0, 0, 0, + /* 36959 */ 1142784, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3215360, 2215936, + /* 36972 */ 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, 2215936, 2215936, 3117056, 2215936, 2215936, + /* 36983 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 543, 0, 545, + /* 36997 */ 0, 0, 2183168, 0, 0, 831, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, + /* 37012 */ 3031040, 2170880, 3055616, 2170880, 2170880, 2170880, 2170880, 3092480, 2170880, 2170880, 3125248, + /* 37023 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, + /* 37036 */ 0, 0, 0, 0, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 0, 0, 0, 65820, 65820, 0, 287, 97, 97, 97, 97, 97, + /* 37060 */ 1783, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1791, 0, 0, 546, 70179, 0, 0, 0, 0, 552, + /* 37087 */ 0, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 97, + /* 37112 */ 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 0, 0, + /* 37126 */ 147456, 0, 0, 0, 0, 925, 41606, 0, 928, 0, 0, 45, 45, 45, 45, 45, 45, 998, 45, 45, 45, 45, 45, 45, 45, 45, + /* 37152 */ 45, 1562, 45, 1564, 45, 45, 45, 45, 0, 2158592, 2158592, 0, 0, 0, 0, 2232320, 2232320, 2232320, 0, + /* 37171 */ 2240512, 2240512, 2240512, 2240512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2416640 +]; + +JSONiqTokenizer.EXPECTED = +[ + /* 0 */ 291, 300, 304, 341, 315, 309, 305, 295, 319, 323, 327, 329, 296, 333, 337, 339, 342, 346, 350, 294, 356, + /* 21 */ 360, 312, 367, 352, 371, 363, 375, 379, 383, 387, 391, 395, 726, 399, 405, 518, 684, 405, 405, 405, 405, + /* 42 */ 808, 405, 405, 405, 512, 405, 405, 405, 431, 405, 405, 406, 405, 405, 404, 405, 405, 405, 405, 405, 405, + /* 63 */ 405, 908, 631, 410, 415, 405, 414, 419, 608, 405, 429, 602, 405, 435, 443, 405, 441, 641, 478, 405, 447, + /* 84 */ 451, 450, 456, 643, 461, 460, 762, 679, 465, 469, 741, 473, 477, 482, 486, 492, 932, 931, 523, 498, 504, + /* 105 */ 720, 405, 510, 596, 405, 516, 941, 580, 522, 929, 527, 590, 589, 897, 939, 534, 538, 547, 551, 555, 559, + /* 126 */ 563, 567, 571, 969, 575, 708, 690, 689, 579, 584, 634, 405, 594, 731, 405, 600, 882, 405, 606, 895, 786, + /* 147 */ 452, 612, 405, 615, 620, 876, 624, 628, 638, 647, 651, 655, 659, 663, 667, 676, 683, 688, 695, 694, 791, + /* 168 */ 405, 699, 437, 405, 706, 714, 405, 712, 825, 870, 405, 718, 724, 769, 768, 823, 730, 735, 745, 751, 422, + /* 189 */ 755, 759, 425, 766, 902, 810, 587, 775, 888, 887, 405, 773, 992, 405, 779, 962, 405, 785, 781, 986, 790, + /* 210 */ 795, 797, 506, 500, 499, 801, 805, 814, 820, 829, 833, 837, 841, 845, 849, 853, 857, 861, 616, 865, 869, + /* 231 */ 868, 488, 405, 874, 816, 405, 880, 738, 405, 886, 892, 543, 405, 901, 906, 913, 912, 918, 494, 541, 922, + /* 252 */ 926, 936, 945, 949, 953, 957, 530, 966, 973, 960, 702, 701, 405, 979, 981, 405, 985, 747, 405, 990, 998, + /* 273 */ 914, 405, 996, 1004, 672, 975, 974, 1014, 1002, 1008, 670, 1012, 405, 405, 405, 405, 405, 401, 1018, 1022, + /* 293 */ 1026, 1106, 1071, 1111, 1111, 1111, 1082, 1145, 1030, 1101, 1034, 1038, 1106, 1106, 1106, 1106, 1046, 1206, + /* 311 */ 1052, 1106, 1072, 1111, 1111, 1042, 1134, 1065, 1111, 1112, 1056, 1160, 1207, 1062, 1204, 1208, 1069, 1106, + /* 329 */ 1106, 1106, 1076, 1111, 1207, 1161, 1122, 1205, 1064, 1094, 1106, 1106, 1107, 1111, 1111, 1111, 1078, 1086, + /* 347 */ 1207, 1092, 1098, 1046, 1058, 1106, 1106, 1110, 1111, 1111, 1116, 1120, 1161, 1126, 1202, 1104, 1106, 1145, + /* 365 */ 1146, 1129, 1138, 1088, 1151, 1048, 1157, 1153, 1132, 1141, 1165, 1107, 1111, 1172, 1179, 1109, 1183, 1175, + /* 383 */ 1143, 1147, 1187, 1108, 1191, 1195, 1144, 1199, 1168, 1212, 1216, 1220, 1224, 1228, 1232, 1236, 1557, 1247, + /* 401 */ 1241, 1241, 1038, 1434, 1241, 1241, 1241, 1241, 1254, 1275, 1617, 1241, 1280, 1287, 1241, 1241, 1241, 1287, + /* 419 */ 1241, 2114, 1291, 1241, 1243, 1241, 2049, 1824, 2094, 2095, 1520, 1309, 1241, 1241, 1302, 1241, 1321, 1311, + /* 437 */ 1241, 1241, 1313, 1778, 1325, 1336, 1241, 1241, 1325, 1330, 1353, 1241, 1241, 1695, 1354, 1241, 1241, 1241, + /* 455 */ 1294, 1686, 1331, 1241, 1696, 1368, 1241, 1338, 1370, 1241, 1392, 1399, 1364, 2017, 1406, 2016, 1405, 1716, + /* 473 */ 1406, 1407, 1422, 1417, 1421, 1241, 1241, 1241, 1349, 1426, 1241, 1774, 1756, 1241, 1773, 1241, 1241, 1345, + /* 491 */ 1964, 1812, 1432, 1241, 1241, 1345, 1993, 1459, 1241, 1241, 1241, 1395, 1848, 1767, 1465, 1241, 1241, 1394, + /* 509 */ 1847, 1242, 1477, 1241, 1241, 1428, 1241, 1445, 1492, 1241, 1241, 1438, 1241, 1499, 1241, 1241, 1241, 1455, + /* 527 */ 1241, 1818, 1448, 1241, 1250, 1241, 2026, 1623, 1449, 1241, 1612, 1616, 1241, 1614, 1241, 1257, 1241, 1241, + /* 545 */ 1985, 1292, 1586, 1512, 1241, 1517, 2050, 1526, 1674, 1519, 1524, 1647, 2051, 1532, 1537, 1551, 1544, 1550, + /* 563 */ 1555, 1561, 1571, 1578, 1584, 1590, 1591, 1653, 1595, 1602, 1606, 1610, 1634, 1628, 1640, 1633, 1645, 1241, + /* 581 */ 1241, 1241, 1469, 1241, 1970, 1651, 1241, 1270, 1241, 1241, 1819, 1449, 1241, 1293, 1664, 1241, 1241, 1481, + /* 599 */ 1485, 1574, 1672, 1241, 1241, 1513, 1317, 1487, 1684, 1241, 1241, 1533, 1299, 1694, 1241, 1241, 1295, 1241, + /* 617 */ 1241, 1241, 1546, 1700, 1241, 1241, 1707, 1241, 1713, 1241, 1849, 1715, 1241, 1720, 1241, 1276, 1267, 1241, + /* 635 */ 1241, 2107, 1657, 1864, 1241, 1881, 1241, 1326, 1292, 1241, 1685, 1358, 1724, 1338, 1241, 1363, 1362, 1342, + /* 653 */ 1340, 1361, 1339, 1833, 1372, 1360, 1833, 1833, 1342, 1343, 1835, 1341, 1731, 1738, 1344, 1241, 1745, 1241, + /* 671 */ 1379, 1241, 1241, 2092, 1241, 1388, 1761, 1754, 1241, 1386, 1241, 1400, 1760, 1241, 1241, 1241, 1598, 1734, + /* 689 */ 1241, 1241, 1241, 1635, 1645, 1241, 1780, 1766, 1241, 1241, 1332, 1771, 1241, 1241, 1629, 2079, 1241, 1242, + /* 707 */ 1784, 1241, 1241, 1680, 1639, 2063, 1790, 1241, 1241, 1741, 1241, 1241, 1800, 1241, 1241, 1762, 1473, 1241, + /* 725 */ 1806, 1241, 1241, 1786, 1240, 1709, 1241, 1241, 1241, 1668, 1811, 1241, 1940, 1241, 1401, 1974, 1241, 1408, + /* 743 */ 1413, 1382, 1241, 1816, 1241, 1241, 1802, 2086, 1811, 1241, 1817, 1945, 1823, 2095, 2095, 2047, 2094, 2046, + /* 761 */ 2080, 1241, 1409, 1312, 1376, 2096, 2048, 1241, 1241, 1807, 1241, 1241, 1241, 2035, 1241, 1241, 1828, 1241, + /* 779 */ 2057, 2061, 1241, 1241, 1843, 1241, 2059, 1241, 1241, 1241, 1690, 1847, 1241, 1241, 1241, 1703, 2102, 1848, + /* 797 */ 1241, 1241, 1853, 1292, 1848, 1241, 2016, 1857, 1241, 2002, 1868, 1241, 1436, 1241, 1241, 1271, 1305, 1241, + /* 815 */ 1874, 1241, 1241, 1884, 2037, 1892, 1241, 1890, 1241, 1461, 1241, 1241, 1795, 1241, 1241, 1891, 1241, 1878, + /* 833 */ 1241, 1888, 1241, 1888, 1905, 1896, 2087, 1912, 1903, 1241, 1911, 1906, 1916, 1905, 2027, 1863, 1925, 2088, + /* 851 */ 1859, 1861, 1922, 1927, 1931, 1935, 1494, 1241, 1241, 1918, 1907, 1939, 1917, 1944, 1949, 1241, 1241, 1451, + /* 869 */ 1955, 1241, 1241, 1241, 1796, 1727, 2061, 1241, 1241, 1899, 1241, 1660, 1968, 1241, 1241, 1951, 1678, 1978, + /* 887 */ 1241, 1241, 1241, 1839, 1241, 1241, 1984, 1982, 1241, 1488, 1241, 1241, 1624, 1450, 1989, 1241, 1241, 1241, + /* 905 */ 1870, 1995, 1292, 1241, 1241, 1958, 1261, 1241, 1996, 1241, 1241, 1241, 2039, 2008, 1241, 1241, 1750, 2000, + /* 923 */ 1241, 1256, 2001, 1960, 1241, 1564, 1241, 1504, 1241, 1241, 1442, 1241, 1241, 1564, 1528, 1263, 1241, 1508, + /* 941 */ 1241, 1241, 1468, 1498, 2006, 1540, 2015, 1539, 2014, 1748, 2013, 1539, 1831, 2014, 2012, 1500, 1567, 2022, + /* 959 */ 2021, 1241, 1580, 1241, 1241, 2033, 2037, 1791, 2045, 2031, 1241, 1621, 1241, 1641, 2044, 1241, 1241, 1241, + /* 977 */ 2093, 1241, 1241, 2055, 1241, 1241, 2067, 1241, 1283, 1241, 1241, 1241, 2101, 2071, 1241, 1241, 1241, 2073, + /* 995 */ 1848, 2040, 1241, 1241, 1241, 2077, 1241, 1241, 2106, 1241, 1241, 2084, 1241, 2111, 1241, 1241, 1381, 1380, + /* 1013 */ 1241, 1241, 1241, 2100, 1241, 2129, 2118, 2122, 2126, 2197, 2133, 3010, 2825, 2145, 2698, 2156, 2226, 2160, + /* 1031 */ 2161, 2165, 2174, 2293, 2194, 2630, 2201, 2203, 2152, 3019, 2226, 2263, 2209, 2213, 2218, 2269, 2292, 2269, + /* 1049 */ 2269, 2184, 2226, 2238, 2148, 2151, 3017, 2245, 2214, 2269, 2269, 2185, 2226, 2292, 2269, 2291, 2269, 2269, + /* 1067 */ 2269, 2292, 2205, 3019, 2226, 2226, 2160, 2160, 2160, 2261, 2160, 2160, 2160, 2262, 2276, 2160, 2160, 2277, + /* 1085 */ 2216, 2283, 2216, 2269, 2269, 2268, 2269, 2267, 2269, 2269, 2269, 2271, 2568, 2292, 2269, 2293, 2269, 2182, + /* 1103 */ 2190, 2269, 2186, 2226, 2226, 2226, 2226, 2227, 2160, 2160, 2160, 2160, 2263, 2160, 2275, 2277, 2282, 2215, + /* 1121 */ 2217, 2269, 2269, 2291, 2269, 2269, 2293, 2291, 2269, 2220, 2269, 2295, 2294, 2269, 2269, 2305, 2233, 2262, + /* 1139 */ 2278, 2218, 2269, 2234, 2226, 2226, 2228, 2160, 2160, 2160, 2289, 2220, 2294, 2294, 2269, 2269, 2304, 2269, + /* 1157 */ 2160, 2160, 2287, 2269, 2269, 2305, 2269, 2269, 2312, 2269, 2269, 2225, 2226, 2160, 2287, 2289, 2219, 2304, + /* 1175 */ 2295, 2314, 2234, 2226, 2314, 2269, 2226, 2226, 2160, 2288, 2219, 2222, 2304, 2296, 2269, 2224, 2160, 2160, + /* 1193 */ 2269, 2302, 2294, 2314, 2224, 2226, 2288, 2220, 2294, 2269, 2290, 2269, 2269, 2293, 2269, 2269, 2269, 2269, + /* 1211 */ 2270, 2221, 2313, 2225, 2227, 2160, 2300, 2269, 2225, 2261, 2309, 2234, 2229, 2223, 2318, 2318, 2318, 2328, + /* 1229 */ 2336, 2340, 2344, 2350, 2637, 2712, 2358, 2362, 2372, 2135, 2378, 2398, 2135, 2135, 2135, 2135, 2136, 2417, + /* 1247 */ 2241, 2135, 2378, 2135, 2135, 2980, 2984, 2135, 3006, 2135, 2135, 2135, 2945, 2931, 2425, 2400, 2135, 2135, + /* 1265 */ 2135, 2954, 2135, 2481, 2433, 2135, 2135, 2988, 2824, 2135, 2135, 2482, 2434, 2135, 2135, 2440, 2445, 2452, + /* 1283 */ 2135, 2135, 2998, 3002, 2961, 2441, 2446, 2453, 2463, 2974, 2135, 2135, 2135, 2140, 2642, 2709, 2459, 2470, + /* 1301 */ 2465, 2135, 2135, 3005, 2135, 2135, 2987, 2823, 2458, 2469, 2464, 2975, 2135, 2135, 2135, 2353, 2488, 2447, + /* 1319 */ 2324, 2974, 2135, 2409, 2459, 2448, 2135, 2961, 2487, 2446, 2476, 2323, 2973, 2135, 2135, 2135, 2354, 2476, + /* 1337 */ 2974, 2135, 2135, 2135, 2957, 2135, 2135, 2960, 2135, 2135, 2135, 2363, 2409, 2459, 2474, 2465, 2487, 2571, + /* 1355 */ 2973, 2135, 2135, 2168, 2973, 2135, 2135, 2135, 2959, 2135, 2135, 2135, 2506, 2135, 2957, 2488, 2170, 2135, + /* 1373 */ 2135, 2135, 2960, 2135, 2818, 2493, 2135, 2135, 3033, 2135, 2135, 2135, 2934, 2819, 2494, 2135, 2135, 2135, + /* 1391 */ 2976, 2780, 2499, 2135, 2135, 2135, 3000, 2968, 2135, 2935, 2135, 2135, 2135, 2364, 2507, 2135, 2135, 2934, + /* 1409 */ 2135, 2135, 2780, 2492, 2507, 2135, 2135, 2506, 2780, 2135, 2135, 2782, 2780, 2135, 2782, 2135, 2783, 2374, + /* 1427 */ 2514, 2135, 2135, 2135, 3007, 2530, 2974, 2135, 2135, 2135, 3008, 2135, 2135, 2134, 2135, 2526, 2531, 2975, + /* 1445 */ 2135, 2135, 3042, 2581, 2575, 2956, 2135, 2135, 2135, 2394, 2135, 2508, 2535, 2840, 2844, 2495, 2135, 2135, + /* 1463 */ 2136, 2684, 2537, 2842, 2846, 2135, 2136, 2561, 2581, 2551, 2536, 2841, 2845, 2975, 3043, 2582, 2843, 2555, + /* 1481 */ 2135, 3040, 3044, 2538, 2844, 2975, 2135, 2135, 2253, 2644, 2672, 2542, 2554, 2135, 2135, 2346, 2873, 2551, + /* 1499 */ 2555, 2135, 2135, 2135, 2381, 2559, 2565, 2538, 2553, 2135, 2560, 2914, 2576, 2590, 2135, 2135, 2135, 2408, + /* 1517 */ 2136, 2596, 2624, 2135, 2135, 2135, 2409, 2135, 2618, 2597, 3008, 2135, 2135, 2380, 2956, 2601, 2135, 2135, + /* 1535 */ 2135, 2410, 2620, 2624, 2135, 2136, 2383, 2135, 2135, 2783, 2623, 2135, 2135, 2393, 2888, 2136, 2621, 3008, + /* 1553 */ 2135, 2618, 2618, 2622, 2135, 2135, 2405, 2414, 2619, 2384, 2624, 2135, 2136, 2950, 2135, 2138, 2135, 2139, + /* 1571 */ 2135, 2604, 2623, 2135, 2140, 2878, 2665, 2957, 2622, 2135, 2135, 2428, 2762, 2606, 2612, 2135, 2135, 2501, + /* 1589 */ 2586, 2604, 3038, 2135, 2604, 3036, 2387, 2958, 2386, 2135, 2141, 2135, 2421, 2387, 2385, 2135, 2385, 2384, + /* 1607 */ 2384, 2135, 2386, 2628, 2384, 2135, 2135, 2501, 2596, 2591, 2135, 2135, 2135, 2400, 2135, 2634, 2135, 2135, + /* 1625 */ 2559, 2580, 2575, 2648, 2135, 2135, 2135, 2429, 2649, 2135, 2135, 2135, 2435, 2654, 2658, 2135, 2135, 2135, + /* 1643 */ 2436, 2649, 2178, 2659, 2135, 2135, 2595, 2601, 2669, 2677, 2135, 2135, 2616, 2957, 2879, 2665, 2691, 2135, + /* 1661 */ 2363, 2367, 2900, 2878, 2664, 2690, 2975, 2877, 2643, 2670, 2974, 2671, 2975, 2135, 2135, 2619, 2608, 2669, + /* 1679 */ 2673, 2135, 2135, 2653, 2177, 2672, 2135, 2135, 2135, 2486, 2168, 2251, 2255, 2695, 2974, 2709, 2135, 2135, + /* 1697 */ 2135, 2487, 2169, 2399, 2716, 2975, 2135, 2363, 2770, 2776, 2640, 2717, 2135, 2135, 2729, 2135, 2135, 2641, + /* 1715 */ 2718, 2135, 2135, 2135, 2505, 2135, 2640, 2257, 2974, 2135, 2727, 2975, 2135, 2365, 2332, 2895, 2957, 2135, + /* 1733 */ 2959, 2135, 2365, 2749, 2754, 2959, 2958, 2958, 2135, 2380, 2793, 2799, 2135, 2735, 2738, 2135, 2381, 2135, + /* 1751 */ 2135, 2940, 2974, 2135, 2744, 2135, 2135, 2739, 2519, 2976, 2745, 2135, 2135, 2135, 2509, 2755, 2135, 2135, + /* 1769 */ 2135, 2510, 2772, 2778, 2135, 2135, 2740, 2520, 2135, 2771, 2777, 2135, 2135, 2759, 2750, 2792, 2798, 2135, + /* 1787 */ 2135, 2781, 2392, 2779, 2135, 2135, 2135, 2521, 2135, 2679, 2248, 2135, 2135, 2681, 2480, 2135, 2135, 2786, + /* 1805 */ 3000, 2135, 2679, 2683, 2135, 2135, 2416, 2135, 2135, 2135, 2525, 2135, 2730, 2135, 2135, 2135, 2560, 2581, + /* 1823 */ 2135, 2805, 2135, 2135, 2804, 2962, 2832, 2974, 2135, 2382, 2135, 2135, 2958, 2135, 2135, 2960, 2135, 2829, + /* 1841 */ 2833, 2975, 2961, 2965, 2969, 2973, 2968, 2972, 2135, 2135, 2135, 2641, 2135, 2515, 2966, 2970, 2851, 2478, + /* 1859 */ 2135, 2135, 2808, 2135, 2809, 2135, 2135, 2135, 2722, 2852, 2479, 2135, 2135, 2815, 2135, 2135, 2766, 2853, + /* 1877 */ 2480, 2135, 2857, 2479, 2135, 2388, 2723, 2135, 2364, 2331, 2894, 2858, 2480, 2135, 2135, 2850, 2478, 2135, + /* 1895 */ 2135, 2135, 2806, 2864, 2135, 2399, 2256, 2974, 2865, 2135, 2135, 2862, 2135, 2135, 2135, 2685, 2807, 2865, + /* 1913 */ 2135, 2135, 2807, 2863, 2135, 2135, 2135, 2686, 2884, 2807, 2135, 2809, 2807, 2135, 2135, 2807, 2806, 2705, + /* 1931 */ 2810, 2808, 2700, 2869, 2702, 2702, 2702, 2704, 2883, 2135, 2135, 2135, 2730, 2884, 2135, 2135, 2135, 2731, + /* 1949 */ 2321, 2546, 2135, 2135, 2876, 2255, 2889, 2322, 2547, 2135, 2401, 2135, 2135, 2135, 2949, 2367, 2893, 2544, + /* 1967 */ 2973, 2906, 2973, 2135, 2135, 2877, 2663, 2368, 2901, 2907, 2974, 2366, 2899, 2905, 2972, 2920, 2974, 2135, + /* 1985 */ 2135, 2911, 2900, 2920, 2363, 2913, 2918, 2465, 2941, 2975, 2135, 2135, 2924, 2928, 2974, 2945, 2931, 2135, + /* 2003 */ 2135, 2135, 2765, 2136, 2955, 2135, 2135, 2939, 2931, 2380, 2135, 2135, 2380, 2135, 2135, 2135, 2780, 2507, + /* 2021 */ 2137, 2135, 2137, 2135, 2139, 2135, 2806, 2810, 2135, 2135, 2135, 2992, 2135, 2135, 2962, 2966, 2970, 2974, + /* 2039 */ 2135, 2135, 2787, 3014, 2135, 2521, 2993, 2135, 2135, 2135, 2803, 2135, 2135, 2135, 2618, 2607, 2997, 3001, + /* 2057 */ 2135, 2135, 2963, 2967, 2971, 2975, 2135, 2135, 2791, 2797, 2135, 3009, 2999, 3003, 2787, 3001, 2135, 2135, + /* 2075 */ 2964, 2968, 2785, 2999, 3003, 2135, 2135, 2135, 2804, 2785, 2999, 3004, 2135, 2135, 2135, 2807, 2135, 2135, + /* 2093 */ 3023, 2135, 2135, 2135, 2811, 2135, 2135, 3027, 2135, 2135, 2135, 2837, 2968, 3028, 2135, 2135, 2135, 2875, + /* 2111 */ 2135, 2784, 3029, 2135, 2408, 2457, 2446, 0, 14, 0, -2120220672, 1610612736, -2074083328, -2002780160, + /* 2125 */ -2111830528, 1073872896, 1342177280, 1075807216, 4096, 16384, 2048, 8192, 0, 8192, 0, 0, 0, 0, 1, 0, 0, 0, + /* 2143 */ 2, 0, -2145386496, 8388608, 1073741824, 0, 0x80000000, 0x80000000, 2097152, 2097152, 2097152, 536870912, 0, + /* 2156 */ 0, 134217728, 33554432, 1536, 268435456, 268435456, 268435456, 268435456, 128, 256, 32, 0, 65536, 131072, + /* 2170 */ 524288, 16777216, 268435456, 0x80000000, 1572864, 1835008, 640, 32768, 65536, 262144, 1048576, 2097152, + /* 2182 */ 196608, 196800, 196608, 196608, 0, 131072, 131072, 131072, 196608, 196624, 196608, 196624, 196608, 196608, + /* 2196 */ 128, 4096, 16384, 16384, 2048, 0, 4, 0, 0, 0x80000000, 2097152, 0, 1024, 32, 32, 0, 65536, 1572864, + /* 2214 */ 1048576, 32768, 32768, 32768, 32768, 196608, 196608, 196608, 64, 64, 196608, 196608, 131072, 131072, + /* 2228 */ 131072, 131072, 268435456, 268435456, 64, 196736, 196608, 196608, 196608, 131072, 196608, 196608, 16384, 4, + /* 2242 */ 4, 4, 2, 32, 32, 65536, 1048576, 12582912, 1073741824, 0, 0, 2, 8, 16, 96, 2048, 32768, 0, 0, 131072, + /* 2262 */ 268435456, 268435456, 268435456, 256, 256, 196608, 196672, 196608, 196608, 196608, 196608, 4, 0, 256, 256, + /* 2277 */ 256, 256, 32, 32, 32768, 32, 32, 32, 32, 32768, 268435456, 268435456, 268435456, 196608, 196608, 196608, + /* 2293 */ 196624, 196608, 196608, 196608, 16, 16, 16, 268435456, 196608, 64, 64, 64, 196608, 196608, 196608, 196672, + /* 2309 */ 268435456, 64, 64, 196608, 196608, 16, 196608, 196608, 196608, 268435456, 64, 196608, 131072, 262144, + /* 2323 */ 4194304, 25165824, 33554432, 134217728, 268435456, 268435456, 196608, 262152, 8, 256, 512, 3072, 16384, + /* 2336 */ 200, -1073741816, 8392713, 40, 8392718, 520, 807404072, 40, 520, 100663304, 0, 0, -540651761, -540651761, + /* 2350 */ 257589048, 0, 262144, 0, 0, 3, 8, 256, 0, 4, 6, 4100, 8388612, 0, 0, 0, 3, 4, 8, 256, 512, 1024, 0, + /* 2373 */ 2097152, 0, 0, -537854471, -537854471, 0, 100663296, 0, 0, 1, 2, 0, 0, 0, 16384, 0, 0, 0, 96, 14336, 0, 0, + /* 2395 */ 0, 7, 8, 234881024, 0, 0, 0, 8, 0, 0, 0, 0, 262144, 0, 0, 16, 64, 384, 512, 0, 1, 1, 0, 12582912, 0, 0, 0, + /* 2422 */ 0, 33554432, 67108864, -606084144, -606084144, -606084138, 0, 0, 28, 32, 768, 1966080, -608174080, 0, 0, 0, + /* 2438 */ 14, 35056, 16, 64, 896, 24576, 98304, 98304, 131072, 262144, 524288, 1048576, 4194304, 25165824, 1048576, + /* 2453 */ 62914560, 134217728, -805306368, 0, 384, 512, 16384, 65536, 131072, 262144, 29360128, 33554432, 134217728, + /* 2466 */ 268435456, 1073741824, 0x80000000, 262144, 524288, 1048576, 29360128, 33554432, 524288, 1048576, 16777216, + /* 2477 */ 33554432, 134217728, 268435456, 1073741824, 0, 0, 0, 123856, 1966080, 0, 64, 384, 16384, 65536, 131072, + /* 2492 */ 16384, 65536, 524288, 268435456, 0x80000000, 0, 0, 524288, 0x80000000, 0, 0, 1, 16, 0, 256, 524288, 0, 0, + /* 2510 */ 0, 25, 96, 128, -537854471, 0, 0, 0, 32, 7404800, -545259520, 0, 0, 0, 60, 0, 249, 64768, 1048576, 6291456, + /* 2530 */ 6291456, 25165824, 100663296, 402653184, 1073741824, 96, 128, 1280, 2048, 4096, 57344, 6291456, 57344, + /* 2543 */ 6291456, 8388608, 16777216, 33554432, 201326592, 1342177280, 0x80000000, 0, 57344, 6291456, 8388608, + /* 2554 */ 100663296, 134217728, 0x80000000, 0, 0, 0, 1, 8, 16, 64, 128, 64, 128, 256, 1024, 131072, 131072, 131072, + /* 2572 */ 262144, 524288, 16777216, 57344, 6291456, 8388608, 67108864, 134217728, 64, 256, 1024, 2048, 4096, 57344, + /* 2586 */ 64, 256, 0, 24576, 32768, 6291456, 67108864, 134217728, 0, 1, 64, 256, 24576, 32768, 4194304, 32768, + /* 2602 */ 4194304, 67108864, 0, 0, 64, 256, 0, 0, 24576, 32768, 0, 16384, 4194304, 67108864, 64, 16384, 0, 0, 1, 64, + /* 2622 */ 256, 16384, 4194304, 67108864, 0, 0, 0, 16384, 0, 16384, 16384, 0, -470447874, -470447874, -470447874, 0, + /* 2638 */ 0, 128, 0, 0, 8, 96, 2048, 32768, 262144, 8388608, 35056, 1376256, -471859200, 0, 0, 14, 16, 224, 2048, + /* 2657 */ 32768, 2097152, 4194304, 8388608, -486539264, 0, 96, 128, 2048, 32768, 262144, 2097152, 262144, 2097152, + /* 2671 */ 8388608, 33554432, 536870912, 1073741824, 0x80000000, 0, 1610612736, 0x80000000, 0, 0, 1, 524288, 1048576, + /* 2684 */ 12582912, 0, 0, 0, 151311, 264503296, 2097152, 8388608, 33554432, 1610612736, 0x80000000, 262144, 8388608, + /* 2697 */ 33554432, 536870912, 67108864, 4194304, 0, 4194304, 0, 4194304, 4194304, 0, 0, 524288, 8388608, 536870912, + /* 2711 */ 1073741824, 0x80000000, 1, 4097, 8388609, 96, 2048, 32768, 1073741824, 0x80000000, 0, 96, 2048, + /* 2724 */ 0x80000000, 0, 0, 96, 2048, 0, 0, 1, 12582912, 0, 0, 0, 0, 1641895695, 1641895695, 0, 0, 0, 249, 7404800, + /* 2744 */ 15, 87808, 1835008, 1639972864, 0, 768, 5120, 16384, 65536, 1835008, 1835008, 12582912, 16777216, + /* 2757 */ 1610612736, 0, 3, 4, 8, 768, 4096, 65536, 0, 0, 256, 512, 786432, 8, 256, 512, 4096, 16384, 1835008, 16384, + /* 2777 */ 1835008, 12582912, 1610612736, 0, 0, 0, 256, 0, 0, 0, 4, 8, 16, 32, 1, 2, 8, 256, 16384, 524288, 16384, + /* 2798 */ 524288, 1048576, 12582912, 1610612736, 0, 0, 0, 8388608, 0, 0, 0, 524288, 4194304, 0, 0, 0, 8388608, + /* 2815 */ -548662288, -548662288, -548662288, 0, 0, 256, 16384, 65536, 520093696, -1073741824, 0, 0, 0, 16777216, 0, + /* 2830 */ 16, 32, 960, 4096, 4980736, 520093696, 1073741824, 0, 32, 896, 4096, 57344, 1048576, 6291456, 8388608, + /* 2845 */ 16777216, 100663296, 134217728, 268435456, 0x80000000, 0, 512, 786432, 4194304, 33554432, 134217728, + /* 2856 */ 268435456, 0, 786432, 4194304, 134217728, 268435456, 0, 524288, 4194304, 268435456, 0, 0, 0, 0, 0, 4194304, + /* 2872 */ 4194304, -540651761, 0, 0, 0, 2, 4, 8, 16, 96, 128, 264503296, -805306368, 0, 0, 0, 8, 256, 512, 19456, + /* 2892 */ 131072, 3072, 16384, 131072, 262144, 8388608, 16777216, 512, 1024, 2048, 16384, 131072, 262144, 131072, + /* 2906 */ 262144, 8388608, 33554432, 201326592, 268435456, 0, 3, 4, 256, 1024, 2048, 57344, 16384, 131072, 8388608, + /* 2921 */ 33554432, 134217728, 268435456, 0, 3, 256, 1024, 16384, 131072, 33554432, 134217728, 1073741824, + /* 2933 */ 0x80000000, 0, 0, 256, 524288, 0x80000000, 0, 3, 256, 33554432, 134217728, 1073741824, 0, 1, 2, 33554432, + /* 2949 */ 1, 2, 134217728, 1073741824, 0, 1, 2, 134217728, 0, 0, 0, 64, 0, 0, 0, 16, 32, 896, 4096, 786432, 4194304, + /* 2970 */ 16777216, 33554432, 201326592, 268435456, 1073741824, 0x80000000, 0, 0, 0, 15, 0, 4980736, 4980736, + /* 2983 */ 4980736, 70460, 70460, 3478332, 0, 0, 1008, 4984832, 520093696, 60, 4864, 65536, 0, 0, 0, 12, 16, 32, 256, + /* 3002 */ 512, 4096, 65536, 0, 0, 0, 67108864, 0, 0, 0, 12, 0, 256, 512, 65536, 0, 0, 1024, 512, 131072, 131072, 4, + /* 3024 */ 16, 32, 65536, 0, 4, 16, 32, 0, 0, 0, 4, 16, 0, 0, 16384, 67108864, 0, 0, 1, 24, 96, 128, 256, 1024 +]; + +JSONiqTokenizer.TOKEN = +[ + "(0)", + "JSONChar", + "JSONCharRef", + "JSONPredefinedCharRef", + "ModuleDecl", + "Annotation", + "OptionDecl", + "Operator", + "Variable", + "Tag", + "EndTag", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSectionContents", + "AttrTest", + "Wildcard", + "EQName", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "AposChar", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "NCName", + "QName", + "S", + "CharRef", + "CommentContents", + "DocTag", + "DocCommentContents", + "EOF", + "'!'", + "'\"'", + "'#'", + "'#)'", + "'$$'", + "''''", + "'('", + "'(#'", + "'(:'", + "'(:~'", + "')'", + "'*'", + "'*'", + "','", + "'-->'", + "'.'", + "'/'", + "'/>'", + "':'", + "':)'", + "';'", + "'<!--'", + "'<![CDATA['", + "'<?'", + "'='", + "'>'", + "'?'", + "'?>'", + "'NaN'", + "'['", + "']'", + "']]>'", + "'after'", + "'all'", + "'allowing'", + "'ancestor'", + "'ancestor-or-self'", + "'and'", + "'any'", + "'append'", + "'array'", + "'as'", + "'ascending'", + "'at'", + "'attribute'", + "'base-uri'", + "'before'", + "'boundary-space'", + "'break'", + "'by'", + "'case'", + "'cast'", + "'castable'", + "'catch'", + "'check'", + "'child'", + "'collation'", + "'collection'", + "'comment'", + "'constraint'", + "'construction'", + "'contains'", + "'content'", + "'context'", + "'continue'", + "'copy'", + "'copy-namespaces'", + "'count'", + "'decimal-format'", + "'decimal-separator'", + "'declare'", + "'default'", + "'delete'", + "'descendant'", + "'descendant-or-self'", + "'descending'", + "'diacritics'", + "'different'", + "'digit'", + "'distance'", + "'div'", + "'document'", + "'document-node'", + "'element'", + "'else'", + "'empty'", + "'empty-sequence'", + "'encoding'", + "'end'", + "'entire'", + "'eq'", + "'every'", + "'exactly'", + "'except'", + "'exit'", + "'external'", + "'first'", + "'following'", + "'following-sibling'", + "'for'", + "'foreach'", + "'foreign'", + "'from'", + "'ft-option'", + "'ftand'", + "'ftnot'", + "'ftor'", + "'function'", + "'ge'", + "'greatest'", + "'group'", + "'grouping-separator'", + "'gt'", + "'idiv'", + "'if'", + "'import'", + "'in'", + "'index'", + "'infinity'", + "'inherit'", + "'insensitive'", + "'insert'", + "'instance'", + "'integrity'", + "'intersect'", + "'into'", + "'is'", + "'item'", + "'json'", + "'json-item'", + "'key'", + "'language'", + "'last'", + "'lax'", + "'le'", + "'least'", + "'let'", + "'levels'", + "'loop'", + "'lowercase'", + "'lt'", + "'minus-sign'", + "'mod'", + "'modify'", + "'module'", + "'most'", + "'namespace'", + "'namespace-node'", + "'ne'", + "'next'", + "'no'", + "'no-inherit'", + "'no-preserve'", + "'node'", + "'nodes'", + "'not'", + "'object'", + "'occurs'", + "'of'", + "'on'", + "'only'", + "'option'", + "'or'", + "'order'", + "'ordered'", + "'ordering'", + "'paragraph'", + "'paragraphs'", + "'parent'", + "'pattern-separator'", + "'per-mille'", + "'percent'", + "'phrase'", + "'position'", + "'preceding'", + "'preceding-sibling'", + "'preserve'", + "'previous'", + "'processing-instruction'", + "'relationship'", + "'rename'", + "'replace'", + "'return'", + "'returning'", + "'revalidation'", + "'same'", + "'satisfies'", + "'schema'", + "'schema-attribute'", + "'schema-element'", + "'score'", + "'self'", + "'sensitive'", + "'sentence'", + "'sentences'", + "'skip'", + "'sliding'", + "'some'", + "'stable'", + "'start'", + "'stemming'", + "'stop'", + "'strict'", + "'strip'", + "'structured-item'", + "'switch'", + "'text'", + "'then'", + "'thesaurus'", + "'times'", + "'to'", + "'treat'", + "'try'", + "'tumbling'", + "'type'", + "'typeswitch'", + "'union'", + "'unique'", + "'unordered'", + "'updating'", + "'uppercase'", + "'using'", + "'validate'", + "'value'", + "'variable'", + "'version'", + "'weight'", + "'when'", + "'where'", + "'while'", + "'wildcards'", + "'window'", + "'with'", + "'without'", + "'word'", + "'words'", + "'xquery'", + "'zero-digit'", + "'{'", + "'{{'", + "'|'", + "'}'", + "'}}'" +]; + +// End + +},{}],"/node_modules/xqlint/lib/lexers/jsoniq_lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var JSONiqTokenizer = _dereq_('./JSONiqTokenizer').JSONiqTokenizer; +var Lexer = _dereq_('./lexer').Lexer; + +var keys = 'NaN|after|allowing|ancestor|ancestor-or-self|and|append|array|as|ascending|at|attribute|base-uri|before|boundary-space|break|by|case|cast|castable|catch|child|collation|comment|constraint|construction|contains|context|continue|copy|copy-namespaces|count|decimal-format|decimal-separator|declare|default|delete|descendant|descendant-or-self|descending|digit|div|document|document-node|element|else|empty|empty-sequence|encoding|end|eq|every|except|exit|external|false|first|following|following-sibling|for|from|ft-option|function|ge|greatest|group|grouping-separator|gt|idiv|if|import|in|index|infinity|insert|instance|integrity|intersect|into|is|item|json|json-item|jsoniq|last|lax|le|least|let|loop|lt|minus-sign|mod|modify|module|namespace|namespace-node|ne|next|node|nodes|not|null|object|of|only|option|or|order|ordered|ordering|paragraphs|parent|pattern-separator|per-mille|percent|preceding|preceding-sibling|previous|processing-instruction|rename|replace|return|returning|revalidation|satisfies|schema|schema-attribute|schema-element|score|select|self|sentences|sliding|some|stable|start|strict|switch|text|then|times|to|treat|true|try|tumbling|type|typeswitch|union|unordered|updating|validate|value|variable|version|when|where|while|window|with|words|xquery|zero-digit'.split('|'); +var keywords = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'keyword' }; }); +var ncnames = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'text', next: function(stack){ stack.pop(); } }; }); + +var cdata = 'constant.language'; +var number = 'constant'; +var xmlcomment = 'comment'; +var pi = 'xml-pe'; +var pragma = 'constant.buildin'; +var n = function(name){ + return '\'' + name + '\''; +}; +var Rules = { + start: [ + { name: n('(#'), token: pragma, next: function(stack){ stack.push('Pragma'); } }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n('(:~'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n('<!--'), token: xmlcomment, next: function(stack){ stack.push('XMLComment'); } }, + { name: n('<?'), token: pi, next: function(stack) { stack.push('PI'); } }, + { name: n('\'\''), token: 'string', next: function(stack){ stack.push('AposString'); } }, + { name: n('"'), token: 'string', next: function(stack){ stack.push('QuotString'); } }, + { name: 'Annotation', token: 'support.function' }, + { name: 'ModuleDecl', token: 'keyword', next: function(stack){ stack.push('Prefix'); } }, + { name: 'OptionDecl', token: 'keyword', next: function(stack){ stack.push('_EQName'); } }, + { name: 'AttrTest', token: 'support.type' }, + { name: 'Variable', token: 'variable' }, + { name: n('<![CDATA['), token: cdata, next: function(stack){ stack.push('CData'); } }, + { name: 'IntegerLiteral', token: number }, + { name: 'DecimalLiteral', token: number }, + { name: 'DoubleLiteral', token: number }, + { name: 'Operator', token: 'keyword.operator' }, + { name: 'EQName', token: function(val) { return keys.indexOf(val) !== -1 ? 'keyword' : 'support.function'; } }, + { name: n('('), token: 'lparen' }, + { name: n(')'), token: 'rparen' }, + { name: 'Tag', token: 'meta.tag', next: function(stack){ stack.push('StartTag'); } }, + { name: n('}'), token: 'text', next: function(stack){ if(stack.length > 1) { stack.pop(); } } }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } //, next: function(stack){ if(stack.length > 1) { stack.pop(); } } } + ].concat(keywords), + _EQName: [ + { name: 'EQName', token: 'text', next: function(stack) { stack.pop(); } } + ].concat(ncnames), + Prefix: [ + { name: 'NCName', token: 'text', next: function(stack) { stack.pop(); } } + ].concat(ncnames), + StartTag: [ + { name: n('>'), token: 'meta.tag', next: function(stack){ stack.push('TagContent'); } }, + { name: 'QName', token: 'entity.other.attribute-name' }, + { name: n('='), token: 'text' }, + { name: n('\'\''), token: 'string', next: function(stack){ stack.push('AposAttr'); } }, + { name: n('"'), token: 'string', next: function(stack){ stack.push('QuotAttr'); } }, + { name: n('/>'), token: 'meta.tag.r', next: function(stack){ stack.pop(); } } + ], + TagContent: [ + { name: 'ElementContentChar', token: 'text' }, + { name: n('<![CDATA['), token: cdata, next: function(stack){ stack.push('CData'); } }, + { name: n('<!--'), token: xmlcomment, next: function(stack){ stack.push('XMLComment'); } }, + { name: 'Tag', token: 'meta.tag', next: function(stack){ stack.push('StartTag'); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'text' }, + { name: n('}}'), token: 'text' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } }, + { name: 'EndTag', token: 'meta.tag', next: function(stack){ stack.pop(); stack.pop(); } } + ], + AposAttr: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposAttrContentChar', token: 'string' }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'string' }, + { name: n('}}'), token: 'string' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } + ], + QuotAttr: [ + { name: n('\"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'EscapeQuot', token: 'constant.language.escape' }, + { name: 'QuotAttrContentChar', token: 'string' }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'string' }, + { name: n('}}'), token: 'string' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } + ], + Pragma: [ + { name: 'PragmaContents', token: pragma }, + { name: n('#'), token: pragma }, + { name: n('#)'), token: pragma, next: function(stack){ stack.pop(); } } + ], + Comment: [ + { name: 'CommentContents', token: 'comment' }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n(':)'), token: 'comment', next: function(stack){ stack.pop(); } } + ], + CommentDoc: [ + { name: 'DocCommentContents', token: 'comment.doc' }, + { name: 'DocTag', token: 'comment.doc.tag' }, + { name: n('(:'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n(':)'), token: 'comment.doc', next: function(stack){ stack.pop(); } } + ], + XMLComment: [ + { name: 'DirCommentContents', token: xmlcomment }, + { name: n('-->'), token: xmlcomment, next: function(stack){ stack.pop(); } } + ], + CData: [ + { name: 'CDataSectionContents', token: cdata }, + { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } + ], + PI: [ + { name: 'DirPIContents', token: pi }, + { name: n('?'), token: pi }, + { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } + ], + AposString: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposChar', token: 'string' } + ], + QuotString: [ + { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'JSONPredefinedCharRef', token: 'constant.language.escape' }, + { name: 'JSONCharRef', token: 'constant.language.escape' }, + { name: 'JSONChar', token: 'string' } + ] +}; + +exports.JSONiqLexer = function(){ return new Lexer(JSONiqTokenizer, Rules); }; +},{"./JSONiqTokenizer":"/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}],"/node_modules/xqlint/lib/lexers/lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var TokenHandler = function(code) { + var input = code; + this.tokens = []; + + this.reset = function() { + input = input; + this.tokens = []; + }; + + this.startNonterminal = function() {}; + this.endNonterminal = function() {}; + + this.terminal = function(name, begin, end) { + this.tokens.push({ + name: name, + value: input.substring(begin, end) + }); + }; + + this.whitespace = function(begin, end) { + this.tokens.push({ + name: 'WS', + value: input.substring(begin, end) + }); + }; +}; + +exports.Lexer = function(Tokenizer, Rules) { + + this.tokens = []; + + this.getLineTokens = function(line, state) { + state = (state === 'start' || !state) ? '["start"]' : state; + var stack = JSON.parse(state); + var h = new TokenHandler(line); + var tokenizer = new Tokenizer(line, h); + var tokens = []; + + while(true) { + var currentState = stack[stack.length - 1]; + try { + h.tokens = []; + tokenizer['parse_' + currentState](); + var info = null; + + if(h.tokens.length > 1 && h.tokens[0].name === 'WS') { + tokens.push({ + type: 'text', + value: h.tokens[0].value + }); + h.tokens.splice(0, 1); + } + + var token = h.tokens[0]; + var rules = Rules[currentState]; + for(var k = 0; k < rules.length; k++) { + var rule = Rules[currentState][k]; + if((typeof(rule.name) === 'function' && rule.name(token)) || rule.name === token.name) { + info = rule; + break; + } + } + + if(token.name === 'EOF') { break; } + if(token.value === '') { throw 'Encountered empty string lexical rule.'; } + + tokens.push({ + type: info === null ? 'text' : (typeof(info.token) === 'function' ? info.token(token.value) : info.token), + value: token.value + }); + + if(info && info.next) { + info.next(stack); + } + + } catch(e) { + if(e instanceof tokenizer.ParseException) { + var index = 0; + for(var i=0; i < tokens.length; i++) { + index += tokens[i].value.length; + } + tokens.push({ type: 'text', value: line.substring(index) }); + return { + tokens: tokens, + state: JSON.stringify(['start']) + }; + } else { + throw e; + } + } + } + + return { + tokens: tokens, + state: JSON.stringify(stack) + }; + }; +}; +},{}]},{},["/node_modules/xqlint/lib/lexers/jsoniq_lexer.js"]); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/xquery/xqlint.js b/plugins/node_modules/ace/lib/ace/mode/xquery/xqlint.js new file mode 100644 index 00000000..6dc7b4f7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xquery/xqlint.js @@ -0,0 +1,99801 @@ +define(function(require, exports, module) { +module.exports = (function outer (modules, cache, entry) { + var previousRequire = typeof require == "function" && require; + function newRequire(name, jumped){ + if(!cache[name]) { + if(!modules[name]) { + var currentRequire = typeof require == "function" && require; + if (!jumped && currentRequire) return currentRequire(name, true); + if (previousRequire) return previousRequire(name, true); + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + var m = cache[name] = {exports:{}}; + modules[name][0].call(m.exports, function(x){ + var id = modules[name][1][x]; + return newRequire(id ? id : x); + },m,m.exports,outer,modules,cache,entry); + } + return cache[name].exports; + } + for(var i=0;i<entry.length;i++) newRequire(entry[i]); + return newRequire(entry[0]); +}) +({"/node_modules/xqlint/lib/compiler/errors.js":[function(_dereq_,module,exports){ +'use strict'; + +var init = function(that, code, message, pos, type){ + if(!code) { + throw new Error(type + ' code is missing.'); + } + + if(!message) { + throw new Error(type + ' message is missing.'); + } + + if(!pos) { + throw new Error(type + ' position is missing.'); + } + + that.getCode = function(){ + return code; + }; + + that.getMessage = function(){ + return message; + }; + + that.getPos = function(){ + return pos; + }; +}; + +var StaticError = {}; +var StaticWarning = {}; +StaticError.prototype = new Error(); +StaticWarning.prototype = new Error(); + +exports.StaticError = StaticError.prototype.constructor = function(code, message, pos) { + init(this, code, message, pos, 'Error'); +}; + +exports.StaticWarning = StaticWarning.prototype.constructor = function(code, message, pos) { + init(this, code, message, pos, 'Warning'); +}; +},{}],"/node_modules/xqlint/lib/compiler/handlers.js":[function(_dereq_,module,exports){ +'use strict'; + +var TreeOps = _dereq_('../tree_ops').TreeOps; +var Errors = _dereq_('./errors'); +var StaticWarning = Errors.StaticWarning; + +// +// Prolog Handlers +// +exports.ModuleDecl = function(translator, rootSctx, node){ + var prefix = ''; + return { + NCName: function(ncname){ + prefix = TreeOps.flatten(ncname); + }, + + URILiteral: function(uri) { + uri = TreeOps.flatten(uri); + uri = uri.substring(1, uri.length - 1); + translator.apply(function(){ + rootSctx.moduleNamespace = uri; + rootSctx.addNamespace(uri, prefix, node.pos, 'moduleDecl'); + }); + } + }; +}; + +exports.ModuleImport = function(translator, rootSctx, node) { + var prefix = ''; + var moduleURI; + //location hints + + return { + NCName: function(ncname){ + prefix = TreeOps.flatten(ncname); + }, + + URILiteral: function(uri) { + if(moduleURI !== undefined) { + //location hints + return; + } + uri = TreeOps.flatten(uri); + uri = uri.substring(1, uri.length - 1); + moduleURI = uri; + translator.apply(function(){ + rootSctx.importModule(uri, prefix, node.pos); + }); + } + }; +}; + +exports.SchemaImport = function(translator, rootSctx, node) { + var prefix = ''; + var schemaURI; + + return { + SchemaPrefix: function(schemaPrefix) { + var SchemaPrefixHandler = function () { + this.NCName = function (ncname) { + prefix = TreeOps.flatten(ncname); + }; + }; + translator.visitChildren(schemaPrefix, new SchemaPrefixHandler()); + }, + + URILiteral: function(uri) { + if(schemaURI !== undefined) { + //location hints + return; + } + uri = TreeOps.flatten(uri); + uri = uri.substring(1, uri.length - 1); + schemaURI = uri; + translator.apply(function(){ + rootSctx.addNamespace(uri, prefix, node.pos, 'schema'); + }); + } + }; +}; + +exports.DefaultNamespaceDecl = function(translator, rootSctx, node) { + var fn = false; + var ns = ''; + + return { + TOKEN: function(token){ + fn = fn ? true : (token.value === 'function'); + }, + URILiteral: function(uri){ + ns = TreeOps.flatten(uri); + ns = ns.substring(1, ns.length - 1); + if(!fn) { + translator.apply(function(){ + throw new StaticWarning('W06', 'Avoid default element namespace declarations.', node.pos); + }); + rootSctx.defaultElementNamespace = ns; + } else { + rootSctx.defaultFunctionNamespace = ns; + } + } + }; +}; + +exports.NamespaceDecl = function(translator, rootSctx, node) { + var prefix = ''; + return { + NCName: function(ncname) { + prefix = TreeOps.flatten(ncname); + }, + URILiteral: function(uri) { + uri = TreeOps.flatten(uri); + uri = uri.substring(1, uri.length - 1); + translator.apply(function(){ + rootSctx.addNamespace(uri, prefix, node.pos, 'declare'); + }); + } + }; +}; + +// +// +// +exports.VarHandler = function(translator, sctx, node){ + var EQNameHandler = function(eqname){ + var value = TreeOps.flatten(eqname); + translator.apply(function(){ + var qname = sctx.resolveQName(value, eqname.pos); + sctx.addVariable(qname, node.name, eqname.pos); + }); + }; + return { + ExprSingle: function(){ return true; }, + VarValue: function(){ return true; }, + VarDefaultValue: function(){ return true; }, + VarName: EQNameHandler, + EQName: EQNameHandler + }; +}; + +exports.VarRefHandler = function(translator, sctx, node){ + return { + VarName: function(eqname){ + var value = TreeOps.flatten(eqname); + translator.apply(function(){ + var qname = sctx.resolveQName(value, node.pos); + if(qname.uri !== '') { + sctx.root.namespaces[qname.uri].used = true; + } + sctx.addVarRef(qname, eqname.pos); + }); + } + }; +}; +/* +exports.FunctionCallHandler = function(translator, sctx, node, arity){ + return { + EQName: function(eqname){ + var value = TreeOps.flatten(eqname); + translator.apply(function(){ + var qname = sctx.resolveQName(value, node.pos); + if(qname.uri !== '') { + sctx.root.namespaces[qname.uri].used = true; + } + sctx.addFunctionCall(qname, arity, eqname.pos); + }); + } + }; +}; +*/ +},{"../tree_ops":"/node_modules/xqlint/lib/tree_ops.js","./errors":"/node_modules/xqlint/lib/compiler/errors.js"}],"/node_modules/xqlint/lib/compiler/schema_built-in_types.js":[function(_dereq_,module,exports){ +'use strict'; + +/** + * http://www.w3.org/TR/xpath-functions/#constructor-functions-for-xsd-types + */ +exports.getSchemaBuiltinTypes = function(){ + var ns = 'http://www.w3.org/2001/XMLSchema'; + var SchemaBuiltinTypes = {}; + SchemaBuiltinTypes[ns] = { + variables: {}, + functions: {} + }; + SchemaBuiltinTypes[ns].functions[ns + '#string#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'string', arity: 1, eqname: { uri: ns, name: 'string' } }; + SchemaBuiltinTypes[ns].functions[ns + '#boolean#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'boolean', arity: 1, eqname: { uri: ns, name: 'boolean' } }; + SchemaBuiltinTypes[ns].functions[ns + '#decimal#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'decimal', arity: 1, eqname: { uri: ns, name: 'decimal' } }; + SchemaBuiltinTypes[ns].functions[ns + '#float#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'float', arity: 1, eqname: { uri: ns, name: 'float' } }; + SchemaBuiltinTypes[ns].functions[ns + '#double#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'double', arity: 1, eqname: { uri: ns, name: 'double' } }; + SchemaBuiltinTypes[ns].functions[ns + '#duration#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'duration', arity: 1, eqname: { uri: ns, name: 'duration' } }; + SchemaBuiltinTypes[ns].functions[ns + '#dateTime#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'dateTime', arity: 1, eqname: { uri: ns, name: 'dateTime' } }; + SchemaBuiltinTypes[ns].functions[ns + '#time#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'time', arity: 1, eqname: { uri: ns, name: 'time' } }; + SchemaBuiltinTypes[ns].functions[ns + '#date#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'date', arity: 1, eqname: { uri: ns, name: 'date' } }; + SchemaBuiltinTypes[ns].functions[ns + '#gYearMonth#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'gYearMonth', arity: 1, eqname: { uri: ns, name: 'gYearMonth' } }; + SchemaBuiltinTypes[ns].functions[ns + '#gYear#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'gYear', arity: 1, eqname: { uri: ns, name: 'gYear' } }; + SchemaBuiltinTypes[ns].functions[ns + '#gMonthDay#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'gMonthDay', arity: 1, eqname: { uri: ns, name: 'gMonthDay' } }; + SchemaBuiltinTypes[ns].functions[ns + '#gDay#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'gDay', arity: 1, eqname: { uri: ns, name: 'gDay' } }; + SchemaBuiltinTypes[ns].functions[ns + '#gMonth#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'gMonth', arity: 1, eqname: { uri: ns, name: 'gMonth' } }; + SchemaBuiltinTypes[ns].functions[ns + '#hexBinary#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'hexBinary', arity: 1, eqname: { uri: ns, name: 'hexBinary' } }; + SchemaBuiltinTypes[ns].functions[ns + '#base64Binary#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'base64Binary', arity: 1, eqname: { uri: ns, name: 'base64Binary' } }; + SchemaBuiltinTypes[ns].functions[ns + '#anyURI#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'anyURI', arity: 1, eqname: { uri: ns, name: 'anyURI' } }; + SchemaBuiltinTypes[ns].functions[ns + '#QName#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'QName', arity: 1, eqname: { uri: ns, name: 'QName' } }; + SchemaBuiltinTypes[ns].functions[ns + '#normalizedString#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'normalizedString', arity: 1, eqname: { uri: ns, name: 'normalizedString' } }; + SchemaBuiltinTypes[ns].functions[ns + '#token#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'token', arity: 1, eqname: { uri: ns, name: 'token' } }; + SchemaBuiltinTypes[ns].functions[ns + '#language#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'language', arity: 1, eqname: { uri: ns, name: 'language' } }; + SchemaBuiltinTypes[ns].functions[ns + '#NMTOKEN#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'NMTOKEN', arity: 1, eqname: { uri: ns, name: 'NMTOKEN' } }; + SchemaBuiltinTypes[ns].functions[ns + '#Name#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'Name', arity: 1, eqname: { uri: ns, name: 'Name' } }; + SchemaBuiltinTypes[ns].functions[ns + '#NCName#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'NCName', arity: 1, eqname: { uri: ns, name: 'NCName' } }; + SchemaBuiltinTypes[ns].functions[ns + '#ID#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'ID', arity: 1, eqname: { uri: ns, name: 'ID' } }; + SchemaBuiltinTypes[ns].functions[ns + '#IDREF#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'IDREF', arity: 1, eqname: { uri: ns, name: 'IDREF' } }; + SchemaBuiltinTypes[ns].functions[ns + '#ENTITY#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'ENTITY', arity: 1, eqname: { uri: ns, name: 'ENTITY' } }; + SchemaBuiltinTypes[ns].functions[ns + '#integer#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'integer', arity: 1, eqname: { uri: ns, name: 'integer' } }; + SchemaBuiltinTypes[ns].functions[ns + '#nonPositiveInteger#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'nonPositiveInteger', arity: 1, eqname: { uri: ns, name: 'nonPositiveInteger' } }; + SchemaBuiltinTypes[ns].functions[ns + '#negativeInteger#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'negativeInteger', arity: 1, eqname: { uri: ns, name: 'negativeInteger' } }; + SchemaBuiltinTypes[ns].functions[ns + '#long#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'long', arity: 1, eqname: { uri: ns, name: 'long' } }; + SchemaBuiltinTypes[ns].functions[ns + '#int#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'int', arity: 1, eqname: { uri: ns, name: 'int' } }; + SchemaBuiltinTypes[ns].functions[ns + '#short#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'short', arity: 1, eqname: { uri: ns, name: 'short' } }; + SchemaBuiltinTypes[ns].functions[ns + '#byte#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'byte', arity: 1, eqname: { uri: ns, name: 'byte' } }; + SchemaBuiltinTypes[ns].functions[ns + '#nonNegativeInteger#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'nonNegativeInteger', arity: 1, eqname: { uri: ns, name: 'nonNegativeInteger' } }; + SchemaBuiltinTypes[ns].functions[ns + '#unsignedLong#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'unsignedLong', arity: 1, eqname: { uri: ns, name: 'unsignedLong' } }; + SchemaBuiltinTypes[ns].functions[ns + '#unsignedInt#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'unsignedInt', arity: 1, eqname: { uri: ns, name: 'unsignedInt' } }; + SchemaBuiltinTypes[ns].functions[ns + '#unsignedShort#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'unsignedShort', arity: 1, eqname: { uri: ns, name: 'unsignedShort' } }; + SchemaBuiltinTypes[ns].functions[ns + '#unsignedByte#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'unsignedByte', arity: 1, eqname: { uri: ns, name: 'unsignedByte' } }; + SchemaBuiltinTypes[ns].functions[ns + '#positiveInteger#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'positiveInteger', arity: 1, eqname: { uri: ns, name: 'positiveInteger' } }; + SchemaBuiltinTypes[ns].functions[ns + '#yearMonthDuration#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'yearMonthDuration', arity: 1, eqname: { uri: ns, name: 'yearMonthDuration' } }; + SchemaBuiltinTypes[ns].functions[ns + '#dayTimeDuration#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'dayTimeDuration', arity: 1, eqname: { uri: ns, name: 'dayTimeDuration' } }; + SchemaBuiltinTypes[ns].functions[ns + '#untypedAtomic#1'] = { params: ['$arg as xs:anyAtomicType?'], annotations: [], name: 'untypedAtomic', arity: 1, eqname: { uri: ns, name: 'untypedAtomic' } }; + return SchemaBuiltinTypes; +}; +},{}],"/node_modules/xqlint/lib/compiler/static_context.js":[function(_dereq_,module,exports){ +exports.StaticContext = function (parent, pos) { + 'use strict'; + + var TreeOps = _dereq_('../tree_ops').TreeOps; + + var Errors = _dereq_('./errors'); + var StaticError = Errors.StaticError; + var StaticWarning = Errors.StaticWarning; + + var getSchemaBuiltinTypes = _dereq_('./schema_built-in_types').getSchemaBuiltinTypes; + + var emptyPos = { sl:0, sc: 0, el: 0, ec: 0 }; + var namespaces = {}; + + var getVarKey = function(qname) { + return qname.uri + '#' + qname.name; + }; + + var getFnKey = function(qname, arity) { + return getVarKey(qname) + '#' + arity; + }; + + if(!parent) { + namespaces['http://jsoniq.org/functions'] = { + prefixes: ['jn'], + pos: emptyPos, + type: 'module', + override: true + }; + namespaces['http://www.28msec.com/modules/collections'] = { + prefixes: ['db'], + pos: emptyPos, + type: 'module', + override: true + }; + namespaces['http://www.28msec.com/modules/store'] = { + prefixes: ['store'], + pos: emptyPos, + type: 'module', + override: true + }; + namespaces['http://jsoniq.org/function-library'] = { + prefixes: ['libjn'], + pos: emptyPos, + type: 'module', + override: true + }; + //namespaces['http://www.28msec.com/modules/mongodb/types'] = { + // prefix: 'ms', + // pos: emptyPos, + // type: 'module', + // override: true + //}; + namespaces['http://www.w3.org/2005/xpath-functions'] = { + prefixes: ['fn'], + pos: emptyPos, + type: 'module', + override: true + }; + namespaces['http://www.w3.org/2005/xquery-local-functions'] = { + prefixes: ['local'], + pos: emptyPos, + type: 'declare', + override: true + }; + namespaces['http://www.w3.org/2001/XMLSchema-instance'] = { + prefixes: ['xsi'], + pos: emptyPos, + type: 'declare' + }; + namespaces['http://www.w3.org/2001/XMLSchema'] = { + prefixes: ['xs'], + pos: emptyPos, + type: 'declare' + }; + namespaces['http://www.w3.org/XML/1998/namespace'] = { + prefixes: ['xml'], + pos: emptyPos, + type: 'declare' + }; + namespaces['http://zorba.io/annotations'] = { + prefixes: ['an'], + pos: emptyPos, + type: 'declare', + override: true + }; + namespaces['http://www.28msec.com/annotations/rest'] = { + prefixes: ['rest'], + pos: emptyPos, + type: 'declare', + override: true + }; + namespaces['http://www.w3.org/2005/xqt-errors'] = { + prefixes: ['err'], + pos: emptyPos, + type: 'declare', + override: true + }; + namespaces['http://zorba.io/errors'] = { + prefixes: ['zerr'], + pos: emptyPos, + type: 'declare', + override: true + }; + } + + var s = { + parent: parent, + children: [], + pos: pos, + setModuleResolver: function(resolver){ + this.root.moduleResolver = resolver; + return this; + }, + setModules: function(index){ + if(this !== this.root){ + throw new Error('setModules() not invoked from the root static context.'); + } + this.moduleResolver = function(uri){ + return index[uri]; + }; + var that = this; + Object.keys(this.namespaces).forEach(function(uri){ + var ns = that.namespaces[uri]; + if(ns.type === 'module') { + var mod = that.moduleResolver(uri); + if(mod.variables) { + TreeOps.concat(that.variables, mod.variables); + } + if(mod.functions) { + TreeOps.concat(that.functions, mod.functions); + } + } + }); + return this; + }, + setModulesFromXQDoc: function(xqdoc){ + if(this !== this.root){ + throw new Error('setModulesFromXQDoc() not invoked from the root static context.'); + } + //We throw away all the unnecessary xqdoc information + var index = {}; + Object.keys(xqdoc).forEach(function(uri) { + var mod = xqdoc[uri]; + var variables = {}; + var functions = {}; + mod.functions.forEach(function(fn){ + functions[uri + '#' + fn.name + '#' + fn.arity] = { + params: [], + annotations: [], + name: fn.name, + arity: fn.arity, + eqname: { uri: uri, name: fn.name } + }; + fn.parameters.forEach(function(param){ + functions[uri + '#' + fn.name + '#' + fn.arity].params.push('$' + param.name); + }); + }); + mod.variables.forEach(function(variable){ + var name = variable.name.substring(variable.name.indexOf(':') + 1); + variables[uri + '#' + name] = { type: 'VarDecl', annotations: [], eqname: { uri: uri, name: name } }; + }); + index[uri] = { + variables: variables, + functions: functions + }; + }); + this.root.moduleResolver = function(uri){ + return index[uri]; + }; + var that = this; + Object.keys(this.namespaces).forEach(function(uri){ + var ns = that.namespaces[uri]; + if(ns.type === 'module') { + var mod = that.moduleResolver(uri); + if(mod.variables) { + TreeOps.concat(that.variables, mod.variables); + } + if(mod.functions) { + TreeOps.concat(that.functions, mod.functions); + } + } + }); + return this; + }, + moduleNamespace: '', + description: '', + defaultFunctionNamespace: 'http://www.w3.org/2005/xpath-functions', + defaultFunctionNamespaces: [ + 'http://www.28msec.com/modules/collections', + 'http://www.28msec.com/modules/store', + 'http://jsoniq.org/functions', + 'http://jsoniq.org/function-library', + 'http://www.w3.org/2001/XMLSchema' //Built-in type constructors + ], + defaultElementNamespace: '', + namespaces: namespaces, + availableModuleNamespaces: [], + importModule: function(uri, prefix, pos) { + if(this !== this.root){ + throw new Error('Function not invoked from the root static context.'); + } + this.addNamespace(uri, prefix, pos, 'module'); + if(this.moduleResolver) { + try { + var mod = this.moduleResolver(uri, []); + if(mod.variables) { + TreeOps.concat(this.variables, mod.variables); + } + if(mod.functions) { + TreeOps.concat(this.functions, mod.functions); + } + } catch(e) { + throw new StaticError('XQST0059', 'module "' + uri + '" not found', pos); + } + } + return this; + }, + + getAvailableModuleNamespaces: function(){ + return this.root.availableModuleNamespaces; + }, + + getPrefixesByNamespace: function(uri){ + return this.root.namespaces[uri].prefixes; + }, + + addNamespace: function (uri, prefix, pos, type) { + if(prefix === '' && type === 'module') { + throw new StaticWarning('W01', 'Avoid this type of import. Use import module namespace instead', pos); + } + //Check for empty target namespace + if (uri === '') { + throw new StaticError('XQST0088', 'empty target namespace in module import or module declaration', pos); + } + + //Check for duplicate target namespace + var namespace = this.getNamespace(uri); + if (namespace && namespace.type === type && type !== 'declare' && !namespace.override) { + throw new StaticError('XQST0047', '"' + uri + '": duplicate target namespace', pos); + } + + //Check for duplicate prefix + namespace = this.getNamespaceByPrefix(prefix); + if (namespace && !namespace.override) { + throw new StaticError('XQST0033', '"' + prefix + '": namespace prefix already bound to "' + namespace.uri + '"', pos); + } + + namespace = this.namespaces[uri]; + var prefixes = [prefix]; + if(namespace) { + prefixes = prefixes.concat(this.namespaces[uri].prefixes); + } + this.namespaces[uri] = { + prefixes: prefixes, + pos: pos, + type: type + }; + + if (namespace) { + throw new StaticWarning('W02', '"' + uri + '" already bound to the "' + namespace.prefixes.join(', ') + '" prefix', pos); + } + + }, + + getNamespaces: function(){ + return this.root.namespaces; + }, + + getNamespace: function (uri) { + var that = this; + while (that) { + var namespace = that.namespaces[uri]; + if (namespace) { + return namespace; + } + that = that.parent; + } + + }, + + getNamespaceByPrefix: function (prefix) { + var found = []; + var handler = function (uri) { + var namespace = that.namespaces[uri]; + if (namespace.prefixes.indexOf(prefix) !== -1) { + namespace.uri = uri; + found.push(namespace); + } + }; + var that = this; + while (that) { + Object.keys(that.namespaces).forEach(handler); + that = that.parent; + } + var result; + found.forEach(function(ns){ + if(ns.type === 'moduleDecl') { + result = ns; + } + }); + if(result) { + return result; + } else { + return found[0]; + } + }, + + resolveQName: function(value, pos){ + var qname = { + uri: '', + prefix: '', + name: '' + }; + var idx; + if (value.substring(0, 2) === 'Q{') { + idx = value.indexOf('}'); + qname.uri = value.substring(2, idx); + qname.name = value.substring(idx + 1); + } else { + idx = value.indexOf(':'); + qname.prefix = value.substring(0, idx); + var namespace = this.getNamespaceByPrefix(qname.prefix); + if(!namespace && qname.prefix !== '' && ['fn', 'jn'].indexOf(qname.prefix) === -1) { + throw new StaticError('XPST0081', '"' + qname.prefix + '": can not expand prefix of lexical QName to namespace URI', pos); + } + if(namespace) { + qname.uri = namespace.uri; + } + qname.name = value.substring(idx + 1); + } + return qname; + }, + + variables: {}, + varRefs: {}, + functionCalls: {}, + + addVariable: function(qname, type, pos){ + if( + type === 'VarDecl' && this.moduleNamespace !== '' && + !(this.moduleNamespace === qname.uri || qname.uri === '') + ) { + throw new StaticError('XQST0048', '"' + qname.prefix + ':' + qname.name + '": Qname not library namespace', pos); + } + var key = getVarKey(qname); + if(type === 'VarDecl' && this.variables[key]) { + throw new StaticError('XQST0049', '"' + qname.name + '": duplicate variable declaration', pos); + } + this.variables[key] = { + type: type, + pos: pos, + qname: qname, + annotations: {} + }; + return this; + }, + + getVariables: function(){ + var variables = {}; + var that = this; + var handler = function(key){ + if(!variables[key]){ + variables[key] = that.variables[key]; + } + }; + while(that){ + Object.keys(that.variables).forEach(handler); + that = that.parent; + } + return variables; + }, + + getVariable: function(qname) { + var key = getVarKey(qname); + var that = this; + while(that) { + if(that.variables[key]) { + return that.variables[key]; + } + that = that.parent; + } + }, + + addVarRef: function(qname, pos){ + var varDecl = this.getVariable(qname); + //If no moduleResolver is available, then only resolve 'local' variables + if(!varDecl && (qname.uri === '' || this.root.moduleResolver)) { + throw new StaticError('XPST0008', '"' + qname.name + '": undeclared variable', pos); + } + var key = getVarKey(qname); + this.varRefs[key] = true; + }, + + addFunctionCall: function(qname, arity, pos){ + var fn = this.getFunction(qname, arity); + if(!fn && (qname.uri === 'http://www.w3.org/2005/xquery-local-functions' || this.root.moduleResolver)){ + //Is it concat? (variadic) + if((qname.uri === 'http://www.w3.org/2005/xpath-functions' || + (qname.uri === '' && this.root.defaultFunctionNamespaces.concat(this.root.defaultFunctionNamespace).indexOf('http://www.w3.org/2005/xpath-functions') !== -1)) && qname.name === 'concat') { + //do nothing + } else if(!fn){ + throw new StaticError('XPST0008', '"' + qname.name + '#' + arity + '": undeclared function', pos); + } + } + var key = getFnKey(qname, arity); + this.functionCalls[key] = true; + }, + + functions: getSchemaBuiltinTypes()['http://www.w3.org/2001/XMLSchema'].functions, + //functions: {}, + + getFunctions: function(){ + return this.root.functions; + }, + + getFunction: function(qname, arity){ + var key = getFnKey(qname, arity); + var fn; + if(qname.uri === '') { + var that = this; + this.root.defaultFunctionNamespaces.concat([this.root.defaultFunctionNamespace]).forEach(function(defaultFunctionNamespace){ + if(!fn){ + fn = that.getFunction({ uri: defaultFunctionNamespace, prefix: qname.prefix, name: qname.name }, arity); + } else { + return false; + } + }); + return fn; + } else { + return this.root.functions[key]; + } + }, + + addFunction: function(qname, pos, params) { + if(this !== this.root){ + throw new Error('addFunction() not invoked from the root static context.'); + } + var arity = params.length; + if( + this.moduleNamespace !== '' && + !(this.moduleNamespace === qname.uri || (qname.uri === '' && this.defaultFunctionNamespace === this.moduleNamespace)) + ) { + throw new StaticError('XQST0048', '"' + qname.prefix + ':' + qname.name + '": Qname not library namespace', pos); + } + var key = getFnKey(qname, arity); + if(this.functions[key]) { + throw new StaticError('XQST0034', '"' + qname.name + '": duplicate function declaration', pos); + } + this.functions[key] = { + pos: pos, + params: params + }; + return this; + } + + }; + s.root = parent ? parent.root : s; + return s; +}; + +},{"../tree_ops":"/node_modules/xqlint/lib/tree_ops.js","./errors":"/node_modules/xqlint/lib/compiler/errors.js","./schema_built-in_types":"/node_modules/xqlint/lib/compiler/schema_built-in_types.js"}],"/node_modules/xqlint/lib/compiler/translator.js":[function(_dereq_,module,exports){ +exports.Translator = function(rootStcx, ast){ + 'use strict'; + + var Errors = _dereq_('./errors'); + var StaticError = Errors.StaticError; + var StaticWarning = Errors.StaticWarning; + + var TreeOps = _dereq_('../tree_ops').TreeOps; + var StaticContext = _dereq_('./static_context').StaticContext; + var Handlers = _dereq_('./handlers'); + + var get = function(node, path){ + var result = []; + if(path.length === 0){ + return node; + } + node.children.forEach(function(child){ + if(child.name === path[0] && path.length > 1) { + result = get(child, path.slice(1)); + } else if(child.name === path[0]) { + result.push(child); + } + }); + return result; + }; + + var markers = []; + this.apply = function(fn) { + try { + fn(); + } catch(e) { + if(e instanceof StaticError) { + addStaticError(e); + } else if(e instanceof StaticWarning) { + addWarning(e.getCode(), e.getMessage(), e.getPos()); + } else { + throw e; + } + } + }; + + var addStaticError = function(e){ + markers.push({ + pos: e.getPos(), + type: 'error', + level: 'error', + message: '[' + e.getCode() + '] ' + e.getMessage() + }); + }; + + var addWarning = function(code, message, pos) { + markers.push({ + pos: pos, + type: 'warning', + level: 'warning', + message: '[' + code + '] ' + message + }); + }; + + this.getMarkers = function(){ + return markers; + }; + + var translator = this; + + rootStcx.pos = ast.pos; + var sctx = rootStcx; + var pushSctx = function(pos){ + sctx = new StaticContext(sctx, pos); + sctx.parent.children.push(sctx); + }; + + var popSctx = function(pos){ + if (pos !== undefined) { + sctx.pos.el = pos.el; + sctx.pos.ec = pos.ec; + } + + Object.keys(sctx.varRefs).forEach(function(key){ + if(!sctx.variables[key]) { + sctx.parent.varRefs[key] = true; + } + }); + Object.keys(sctx.variables).forEach(function(key){ + if(!sctx.varRefs[key] && sctx.variables[key].type !== 'GroupingVariable' && sctx.variables[key].type !== 'CatchVar') { + addWarning('W03', 'Unused variable "$' + sctx.variables[key].qname.name + '"', sctx.variables[key].pos); + } + }); + + sctx = sctx.parent; + }; + + this.visitOnly = function(node, names) { + node.children.forEach(function(child){ + if (names.indexOf(child.name) !== -1){ + translator.visit(child); + } + }); + }; + + this.getFirstChild = function(node, name) { + var result; + node.children.forEach(function(child){ + if(child.name === name && result === undefined){ + result = child; + } + }); + return result; + }; + + this.XQuery = function(node) { + rootStcx.description = node.comment ? node.comment.description : undefined; + }; + + this.ModuleDecl = function(node){ + this.visitChildren(node, Handlers.ModuleDecl(translator, rootStcx, node)); + return true; + }; + + this.Prolog = function(node){ + //Visit first part of the prolog + this.visitOnly(node, ['DefaultNamespaceDecl', 'Setter', 'NamespaceDecl', 'Import']); + //Get the Index of variable and function Declarations + ast.index.forEach(function(node){ + if(node.name === 'VarDecl') { + node.children.forEach(function(child){ + if(child.name === 'VarName') { + translator.apply(function(){ + var value = TreeOps.flatten(child); + var qname = rootStcx.resolveQName(value, child.pos); + rootStcx.addVariable(qname, node.name, child.pos); + }); + } + }); + } else if(node.name === 'FunctionDecl') { + var qname, pos, params = []; + node.children.forEach(function(child){ + if(child.name === 'EQName') { + qname = child; + pos = child.pos; + } else if(child.name === 'ParamList'){ + child.children.forEach(function(c){ + if(c.name === 'Param') { + params.push(TreeOps.flatten(c)); + } + }); + } + }); + translator.apply(function(){ + qname = TreeOps.flatten(qname); + qname = rootStcx.resolveQName(qname, pos); + rootStcx.addFunction(qname, pos, params); + }); + } + }); + //Visit second part of the prolog + this.visitOnly(node, ['ContextItemDecl', 'AnnotatedDecl', 'OptionDecl']); + return true; + }; + + this.ModuleImport = function (node) { + this.visitChildren(node, Handlers.ModuleImport(translator, rootStcx, node)); + return true; + }; + + this.SchemaImport = function (node) { + this.visitChildren(node, Handlers.SchemaImport(translator, rootStcx, node)); + return true; + }; + + this.DefaultNamespaceDecl = function(node){ + this.visitChildren(node, Handlers.DefaultNamespaceDecl(translator, rootStcx, node)); + return true; + }; + + this.NamespaceDecl = function (node) { + this.visitChildren(node, Handlers.NamespaceDecl(translator, rootStcx, node)); + return true; + }; + + var annotations = {}; + this.AnnotatedDecl = function(node) { + annotations = {}; + this.visitChildren(node, Handlers.NamespaceDecl(translator, rootStcx, node)); + return true; + }; + + this.CompatibilityAnnotation = function(){ + annotations['http://www.w3.org/2012/xquery#updating'] = []; + return true; + }; + + this.Annotation = function(node){ + this.visitChildren(node, { + EQName: function(eqname){ + var value = TreeOps.flatten(eqname); + translator.apply(function(){ + var qname = sctx.resolveQName(value, eqname.pos); + annotations[qname.uri + '#' + qname.name] = []; + }); + } + }); + return true; + }; + + this.VarDecl = function(node){ + //var typeDecl = get(node, ['TypeDeclaration']); + //if(!typeDecl){ + // addWarning('W05', 'Untyped module variable', node.pos); + //} + try { + var varname = translator.getFirstChild(node, 'VarName'); + var value = TreeOps.flatten(varname); + var qname = sctx.resolveQName(value, varname.pos); + var variable = rootStcx.getVariable(qname); + if(variable) { + variable.annotations = annotations; + variable.description = node.getParent.comment ? node.getParent.comment.description : undefined; + variable.type = TreeOps.flatten(get(node, ['TypeDeclaration'])[0]).substring(2).trim(); + var last = variable.type.substring(variable.type.length - 1); + if(last === '?') { + variable.occurrence = 0; + variable.type = variable.type.substring(0, variable.type.length - 1); + } else if(last === '*') { + variable.occurrence = -1; + variable.type = variable.type.substring(0, variable.type.length - 1); + } else if(last === '+') { + variable.occurrence = 2; + variable.type = variable.type.substring(0, variable.type.length - 1); + } else { + variable.occurrence = 1; + } + } + } catch(e) { + //ignore resolution exceptions + } + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + return true; + }; + + this.FunctionDecl = function(node) { + //var updateAn = get(node, ['CompatibilityAnnotation'])[0]; + //console.log(updateAn); + var isUpdating = annotations['http://www.w3.org/2012/xquery#updating'] !== undefined; + var typeDecl = get(node, ['ReturnType'])[0]; + var name = get(node, ['EQName'])[0]; + if(!typeDecl && !isUpdating){ + addWarning('W05', 'Untyped return value', name.pos); + } + /* + this.visitChildren(node, { + EQName: function(fnname){ + var value = TreeOps.flatten(fnname); + var qname = sctx.resolveQName(value, fnname.pos); + var fn = rootStcx.getFunction(qname, arity); + fn.annotations = annotations; + return true; + } + }); + */ + var isExternal = false; + node.children.forEach(function(child){ + if(child.name === 'TOKEN' && child.value === 'external') { + isExternal = true; + return false; + } + }); + if(!isExternal) { + pushSctx(node.pos); + this.visitChildren(node); + popSctx(); + } + return true; + }; + + this.VarRef = function(node) { + this.visitChildren(node, Handlers.VarRefHandler(translator, sctx, node)); + return true; + }; + + this.Param = function(node){ + var typeDecl = get(node, ['TypeDeclaration'])[0]; + if(!typeDecl){ + addWarning('W05', 'Untyped function parameter', node.pos); + } + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.InlineFunctionExpr = function(node) { + pushSctx(node.pos); + this.visitChildren(node); + popSctx(); + return true; + }; + + //Scripting + var statementCount = []; + var handleStatements = function(node) { + pushSctx(node.pos); + statementCount.push(0); + translator.visitChildren(node); + for (var i = 1; i <= statementCount[statementCount.length - 1]; i++) { + popSctx(node.pos); + } + statementCount.pop(); + popSctx(); + }; + + this.StatementsAndOptionalExpr = function (node) { + handleStatements(node); + return true; + }; + + this.StatementsAndExpr = function (node) { + handleStatements(node); + return true; + }; + + this.BlockStatement = function (node) { + handleStatements(node); + return true; + }; + + this.VarDeclStatement = function(node){ + pushSctx(node.pos); + statementCount[statementCount.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + //return true; + }; + + //FLWOR Expressions + var clauses = []; + this.FLWORExpr = this.FLWORStatement = function (node) { + pushSctx(node.pos); + clauses.push(0); + this.visitChildren(node); + for(var i=1; i <= clauses[clauses.length - 1]; i++) { + popSctx(node.pos); + } + clauses.pop(); + popSctx(); + return true; + }; + + //this.ReturnClause = function(node){ + //var expr = get(['ExprSingle', 'FLWORExpr']); + // console.log(astAsXML(node)); + //}; + + this.ForBinding = function (node) { + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.LetBinding = function(node){ + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.GroupingSpec = function(node){ + var isVarDecl = false; + node.children.forEach(function(child){ + if(child.value === ':=') { + isVarDecl = true; + return false; + } + }); + if(isVarDecl) { + var groupingVariable = node.children[0]; + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(groupingVariable, Handlers.VarHandler(translator, sctx, groupingVariable)); + return true; + } else { + + } + }; + + this.TumblingWindowClause = function (node) { + this.visitOnly(node, ['ExprSingle']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + this.visitOnly(node, ['WindowStartCondition', 'WindowEndCondition']); + return true; + }; + + this.WindowVars = function (node) { + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.SlidingWindowClause = function (node) { + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + this.visitOnly(node, ['WindowStartCondition', 'WindowEndCondition']); + return true; + }; + + this.PositionalVar = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.PositionalVar = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.CurrentItem = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.PreviousItem = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.NextItem = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.CountClause = function (node) { + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + //SwitchExpr ::= 'switch' '(' Expr ')' SwitchCaseClause+ 'default' 'return' ExprSingle + //SwitchCaseClause ::= ( 'case' SwitchCaseOperand )+ 'return' ExprSingle + //SwitchCaseOperand ::= ExprSingle + /* + this.SwitchCaseClause = function(node){ + pushSctx(node.pos); + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + this.visitOnly(node, ['ExprSingle']); + popSctx(); + return true; + }; + */ + + this.CaseClause = function(node) { + pushSctx(node.pos); + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + this.visitOnly(node, ['ExprSingle']); + popSctx(); + return true; + }; + + //TransformExpr ::= 'copy' TransformSpec ( ',' TransformSpec )* 'modify' ExprSingle 'return' ExprSingle + //TransformSpec ::= '$' VarName ':=' ExprSingle + var copies = []; + this.TransformExpr = function (node) { + pushSctx(node.pos); + copies.push(0); + this.visitChildren(node); + for(var i=1; i <= copies[copies.length - 1]; i++) { + popSctx(node.pos); + } + copies.pop(); + popSctx(); + return true; + }; + + this.TransformSpec = function(node) { + this.visitOnly(node, ['ExprSingle']); + pushSctx(node.pos); + copies[copies.length-1] += 1; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + //QuantifiedExpr ::= ( 'some' | 'every' ) QuantifiedVarDecl ( ',' QuantifiedVarDecl )* 'satisfies' ExprSingle + //QuantifiedVarDecl ::= '$' VarName TypeDeclaration? 'in' ExprSingle + var quantifiedDecls = []; + this.QuantifiedExpr = function (node) { + pushSctx(node.pos); + quantifiedDecls.push(0); + this.visitChildren(node); + for(var i=1; i <= quantifiedDecls[quantifiedDecls.length - 1]; i++) { + popSctx(node.pos); + } + quantifiedDecls.pop(); + popSctx(); + return true; + }; + + this.QuantifiedVarDecl = function(node) { + this.visitOnly(node, ['ExprSingle']); + pushSctx(node.pos); + quantifiedDecls[quantifiedDecls.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.FunctionCall = function(node){ + this.visitOnly(node, ['ArgumentList']); + var name = translator.getFirstChild(node, 'EQName'); + var eqname = TreeOps.flatten(name); + var arity = get(node, ['ArgumentList', 'Argument']).length; + translator.apply(function(){ + var qname = sctx.resolveQName(eqname, node.pos); + try { + if(qname.uri !== '') { + sctx.root.namespaces[qname.uri].used = true; + } + } catch(e){ + //We ignore exceptions here to avoid duplicate markers + } + sctx.addFunctionCall(qname, arity, name.pos); + }); + return true; + }; + + this.TryClause = function(node){ + pushSctx(node.pos); + this.visitChildren(node); + popSctx(); + return true; + }; + + this.CatchClause = function(node){ + pushSctx(node.pos); + var prefix = 'err'; + var uri = 'http://www.w3.org/2005/xqt-errors'; + var emptyPos = { sl: 0, sc: 0, el: 0, ec: 0 }; + sctx.addVariable({ prefix: prefix, uri: uri, name: 'code' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'description' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'value' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'module' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'line-number' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'column-number' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'additional' }, 'CatchVar', emptyPos); + this.visitChildren(node); + popSctx(); + return true; + }; + + this.Pragma = function(node){ + var qname = TreeOps.flatten(get(node, ['EQName'])[0]); + qname = rootStcx.resolveQName(qname, node); + var value = TreeOps.flatten(get(node, ['PragmaContents'])[0]); + if (qname.name === 'xqlint' && qname.uri === 'http://xqlint.io') { + pushSctx(node.pos); + var commands = value.match(/[a-zA-Z]+\(([^)]+)\)/g); + commands.forEach(function (command) { + var name = command.substring(0, command.indexOf('(')); + var args = command.substring(0, command.length - 1).substring(command.indexOf('(') + 1).split(',').map(function (val) { + return val.trim(); + }); + if (name === 'varrefs') { + args.forEach(function (arg) { + var qname = sctx.resolveQName(arg.substring(1), node.pos); + if (qname.uri !== '') { + sctx.root.namespaces[qname.uri].used = true; + } + sctx.addVarRef(qname, node.pos); + }); + } + }); + this.visitChildren(node); + popSctx(); + return true; + } + }; + + this.visit = function (node) { + var name = node.name; + var skip = false; + + if (typeof this[name] === 'function') { + skip = this[name](node) === true; + } + + if (!skip) { + this.visitChildren(node); + } + }; + + this.visitChildren = function (node, handler) { + for (var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + if (handler !== undefined && typeof handler[child.name] === 'function') { + handler[child.name](child); + } else { + this.visit(child); + } + } + }; + + this.visit(ast); + Object.keys(rootStcx.variables).forEach(function(key){ + if(!rootStcx.varRefs[key] && (rootStcx.variables[key].annotations['http://www.w3.org/2005/xpath-functions#private'] || rootStcx.moduleNamespace === '') && rootStcx.variables[key].pos) { + addWarning('W03', 'Unused variable "' + rootStcx.variables[key].qname.name + '"', rootStcx.variables[key].pos); + } + }); + Object.keys(rootStcx.namespaces).forEach(function(uri){ + var namespace = rootStcx.namespaces[uri]; + if(namespace.used === undefined && !namespace.override && namespace.type === 'module') { + addWarning('W04', 'Unused module "' + uri + '"', namespace.pos); + } + }); +}; + +},{"../tree_ops":"/node_modules/xqlint/lib/tree_ops.js","./errors":"/node_modules/xqlint/lib/compiler/errors.js","./handlers":"/node_modules/xqlint/lib/compiler/handlers.js","./static_context":"/node_modules/xqlint/lib/compiler/static_context.js"}],"/node_modules/xqlint/lib/completion/completer.js":[function(_dereq_,module,exports){ +'use strict'; + +var TreeOps = _dereq_('../tree_ops').TreeOps; + +var ID_REGEX = /[a-zA-Z_0-9\$]/; + +function retrievePrecedingIdentifier(text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos-1; i >= 0; i--) { + if (regex.test(text[i])) { + buf.push(text[i]); + } else { + break; + } + } + return buf.reverse().join(''); +} + +/* +function retrieveFollowingIdentifier(text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos; i < text.length; i++) { + if (regex.test(text[i])) { + buf.push(text[i]); + } else { + break; + } + } + return buf; +} +*/ + +function prefixBinarySearch(items, prefix) { + var startIndex = 0; + var stopIndex = items.length - 1; + var middle = Math.floor((stopIndex + startIndex) / 2); + + while (stopIndex > startIndex && middle >= 0 && items[middle].indexOf(prefix) !== 0) { + if (prefix < items[middle]) { + stopIndex = middle - 1; + } else if (prefix > items[middle]) { + startIndex = middle + 1; + } + middle = Math.floor((stopIndex + startIndex) / 2); + } + while (middle > 0 && items[middle-1].indexOf(prefix) === 0) { + middle--; + } + return middle >= 0 ? middle : 0; // ensure we're not returning a negative index +} + +var uriRegex = /[a-zA-Z_0-9\/\.:\-#]/; +var char = '-._A-Za-z0-9:\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02ff\u0300-\u037D\u037F-\u1FFF\u200C\u200D\u203f\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD'; +var nameChar = '[' + char + ']'; +var varChar = '[' + char + '\\$]'; +var nameCharRegExp = new RegExp(nameChar); +var varCharRegExp = new RegExp(varChar); + +var varDeclLabels = { + 'LetBinding': 'Let binding', + 'Param': 'Function parameter', + 'QuantifiedExpr': 'Quantified expression binding', + 'VarDeclStatement': 'Local variable', + 'ForBinding': 'For binding', + 'TumblingWindowClause': 'Tumbling window binding', + 'WindowVars': 'Window variable', + 'SlidingWindowClause': 'Sliding window binding', + 'PositionalVar': 'Positional variable', + 'CurrentItem': 'Current item', + 'PreviousItem': 'Previous item', + 'NextItem': 'Next item', + 'CountClause': 'Count binding', + 'GroupingVariable': 'Grouping variable', + 'VarDecl': 'Module variable' +}; + +var findCompletions = function(prefix, allIdentifiers) { + allIdentifiers.sort(); + var startIdx = prefixBinarySearch(allIdentifiers, prefix); + var matches = []; + for (var i = startIdx; i < allIdentifiers.length && allIdentifiers[i].indexOf(prefix) === 0; i++) { + matches.push(allIdentifiers[i]); + } + return matches; +}; + + +var completePrefix = function(identifier, pos, sctx){ + var idx = identifier.indexOf(':'); + if(idx === -1) { + var prefixes = []; + var namespaces = sctx.getNamespaces(); + Object.keys(namespaces).forEach(function(key){ + if(namespaces[key].type === 'module' || key === 'http://www.w3.org/2005/xquery-local-functions') { + prefixes.push(namespaces[key].prefixes[0]); + } + }); + var matches = findCompletions(identifier, prefixes); + var match = function(name) { + return { + name: name + ':', + value: name + ':', + meta: 'prefix' + }; + }; + return matches.map(match); + } else { + return []; + } +}; + +var completeFunction = function(identifier, pos, sctx){ + var names = []; + var snippets = {}; + var functions = sctx.getFunctions(); + var uri = ''; + var prefix = ''; + var name = identifier; + var idx = identifier.indexOf(':'); + var defaultNamespace = false; + if(idx !== -1){ + prefix = identifier.substring(0, idx); + name = identifier.substring(idx + 1); + var ns = sctx.getNamespaceByPrefix(prefix); + if(ns){ + uri = sctx.getNamespaceByPrefix(prefix).uri; + } + } else { + defaultNamespace = true; + uri = sctx.root.defaultFunctionNamespace; + } + Object.keys(functions).forEach(function(key){ + var fn = functions[key]; + var ns = key.substring(0, key.indexOf('#')); + var name = key.substring(key.indexOf('#') + 1); + name = name.substring(0, name.indexOf('#')); + if(ns !== uri) { + return; + } + if(!defaultNamespace){ + name = sctx.getNamespaces()[ns].prefixes[0] + ':' + name; + } + name += '('; + var snippet = name; + snippet += fn.params.map(function(param, index){ + return '${' + (index + 1) + ':\\' + param.split(' ')[0] + '}'; + }).join(', '); + name += fn.params.join(', '); + name += ')'; + snippet += ')'; + names.push(name); + snippets[name] = snippet; + }); + var matches = findCompletions(identifier, names); + var match = function(name) { + return { + //doc: + //docUrl: + name: name, + value: name, + meta: 'function', + priority: 4, + identifierRegex: nameCharRegExp, + snippet: snippets[name] + }; + }; + return matches.map(match); +}; + +var completeVariable = function(identifier, pos, sctx){ + var uri = ''; + var prefix = ''; + var idx = identifier.indexOf(':'); + //Does the identifier has a prefix? + if(idx !== -1){ + prefix = identifier.substring(0, idx); + uri = sctx.getNamespaceByPrefix(prefix).uri; + } + var decls = sctx.getVariables(); + var names = []; + var types = {}; + Object.keys(decls).forEach(function(key){ + var i = key.indexOf('#'); + var ns = key.substring(0, i); + var name = key.substring(i+1); + if(ns !== ''){ + names.push(sctx.getPrefixesByNamespace(ns)[0] + ':' + name); + types[sctx.getPrefixesByNamespace(ns)[0] + ':' + name] = decls[key].type; + } else { + names.push(name); + types[name] = decls[key].type; + } + }); + + var matches = findCompletions(identifier, names); + var match = function(name) { + return { + //doc + //docUrl + name: '$' + name, + value: '$' + name, + meta: varDeclLabels[types[name]], + priority: 4, + identifierRegex: varCharRegExp + }; + }; + return matches.map(match); +}; + +var completeExpr = function(line, pos, sctx){ + var identifier = retrievePrecedingIdentifier(line, pos.col, nameCharRegExp); + var before = line.substring(0, pos.col - (identifier.length === 0 ? 0 : identifier.length)); + var isVar = before[before.length - 1] === '$'; + if(isVar) { + return completeVariable(identifier, pos, sctx); + } else if(identifier !== '') { + return completeFunction(identifier, pos, sctx).concat(completePrefix(identifier, pos, sctx)); + } else { + return completeVariable(identifier, pos, sctx).concat(completeFunction(identifier, pos, sctx)).concat(completePrefix(identifier, pos, sctx)); + } +}; + +var completeModuleUri = function(line, pos, sctx){ + var identifier = retrievePrecedingIdentifier(line, pos.col, uriRegex); + var matches = findCompletions(identifier, sctx.getAvailableModuleNamespaces()); + var match = function(uri) { + return { + //doc: + //docUrl: + name: uri, + value: uri, + meta: 'module', + priority: 4, + identifierRegex: uriRegex + }; + }; + return matches.map(match); +}; + +exports.complete = function(source, ast, rootSctx, pos){ + var line = source.split('\n')[pos.line]; + var node = TreeOps.findNode(ast, pos); + var sctx = TreeOps.findNode(rootSctx, pos); + sctx = sctx ? sctx : rootSctx; + if(node && node.name === 'URILiteral' && node.getParent && node.getParent.name === 'ModuleImport'){ + return completeModuleUri(line, pos, sctx); + } else { + return completeExpr(line, pos, sctx); + } +}; + +},{"../tree_ops":"/node_modules/xqlint/lib/tree_ops.js"}],"/node_modules/xqlint/lib/formatter/style_checker.js":[function(_dereq_,module,exports){ +exports.StyleChecker = function (ast, source) { + 'use strict'; + + //var TreeOps = require('../tree_ops').TreeOps; + /* + var tokens = []; + function getTokenList(node){ + if(node.name === 'TOKEN'){ + tokens.push(node); + } + if(node.children){ + node.children.forEach(function(child){ + getTokenList(child); + }); + } + }; + getTokenList(ast); + */ + + var tab = ' '; + var markers = []; + + this.getMarkers = function(){ + return markers; + }; + + this.WS = function(node) { + var lines = node.value.split('\n'); + lines.forEach(function(line, index){ + var isFirst = index === 0; + var isLast = index === (lines.length - 1); + + if(/\r$/.test(line)) { + markers.push({ + pos: { + sl: node.pos.sl + index, + el: node.pos.sl + index, + sc: line.length - 1, + ec: line.length + }, + type: 'warning', + level: 'warning', + message: '[SW01] Detected CRLF' + }); + } + + var match = line.match(/\t+/); + if(match !== null){ + markers.push({ + pos: { + sl: node.pos.sl + index, + el: node.pos.sl + index, + sc: match.index, + ec: match.index + match[0].length + }, + type: 'warning', + level: 'warning', + message: '[SW02] Tabs detected' + }); + } + + if((!isFirst) && isLast){ + match = line.match(/^\ +/); + if(match !== null) { + var mod = match[0].length % tab.length; + if(mod !== 0) { + markers.push({ + pos: { + sl: node.pos.sl + index, + el: node.pos.sl + index, + sc: match.index, + ec: match.index + match[0].length + }, + type: 'warning', + level: 'warning', + message: '[SW03] Unexcepted indentation of ' + match[0].length + }); + } + } + } + }); + return true; + }; + + this.visit = function (node, index) { + var name = node.name; + var skip = false; + + if (typeof this[name] === 'function') { + skip = this[name](node, index) === true; + } + + if (!skip) { + this.visitChildren(node); + } + }; + + this.visitChildren = function (node, handler) { + for (var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + if (handler !== undefined && typeof handler[child.name] === 'function') { + handler[child.name](child); + } else { + this.visit(child); + } + } + }; + + source.split('\n').forEach(function(line, index){ + var match = line.match(/\ +$/); + if(match){ + markers.push({ + pos: { + sl: index, + el: index, + sc: match.index, + ec: match.index + match[0].length + }, + type: 'warning', + level: 'warning', + message: '[SW04] Trailing whitespace' + }); + } + }); + this.visit(ast); +}; +},{}],"/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js":[function(_dereq_,module,exports){ +// This file was generated on Thu Jul 24, 2014 15:01 (UTC+01) by REx v5.30 which is Copyright (c) 1979-2014 by Gunther Rademacher <grd@gmx.net> +// REx command line: JSONiqTokenizer.ebnf -ll 2 -backtrack -tree -javascript -a xqlint + + // line 2 "JSONiqTokenizer.ebnf" + var JSONiqTokenizer = exports.JSONiqTokenizer = function JSONiqTokenizer(string, parsingEventHandler) + { + init(string, parsingEventHandler); + // line 9 "JSONiqTokenizer.js" + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + end = e; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? JSONiqTokenizer.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = JSONiqTokenizer.getTokenSet(- e.getState()); + } + else + { + expected = [JSONiqTokenizer.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_start = function() + { + eventHandler.startNonterminal("start", e0); + lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | + // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // S^WS | EOF | '!' | '"' | '$$' | "'" | '(' | '(#' | '(:' | '(:~' | ')' | ',' | + // '.' | '/' | ':' | ';' | '<!--' | '<![CDATA[' | '<?' | '[' | ']' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'as' | 'ascending' | + // 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' | '{' | '|' | '}' + switch (l1) + { + case 58: // '<![CDATA[' + shift(58); // '<![CDATA[' + break; + case 57: // '<!--' + shift(57); // '<!--' + break; + case 59: // '<?' + shift(59); // '<?' + break; + case 43: // '(#' + shift(43); // '(#' + break; + case 45: // '(:~' + shift(45); // '(:~' + break; + case 44: // '(:' + shift(44); // '(:' + break; + case 37: // '"' + shift(37); // '"' + break; + case 41: // "'" + shift(41); // "'" + break; + case 277: // '}' + shift(277); // '}' + break; + case 274: // '{' + shift(274); // '{' + break; + case 42: // '(' + shift(42); // '(' + break; + case 46: // ')' + shift(46); // ')' + break; + case 52: // '/' + shift(52); // '/' + break; + case 65: // '[' + shift(65); // '[' + break; + case 66: // ']' + shift(66); // ']' + break; + case 49: // ',' + shift(49); // ',' + break; + case 51: // '.' + shift(51); // '.' + break; + case 56: // ';' + shift(56); // ';' + break; + case 54: // ':' + shift(54); // ':' + break; + case 36: // '!' + shift(36); // '!' + break; + case 276: // '|' + shift(276); // '|' + break; + case 40: // '$$' + shift(40); // '$$' + break; + case 5: // Annotation + shift(5); // Annotation + break; + case 4: // ModuleDecl + shift(4); // ModuleDecl + break; + case 6: // OptionDecl + shift(6); // OptionDecl + break; + case 15: // AttrTest + shift(15); // AttrTest + break; + case 16: // Wildcard + shift(16); // Wildcard + break; + case 18: // IntegerLiteral + shift(18); // IntegerLiteral + break; + case 19: // DecimalLiteral + shift(19); // DecimalLiteral + break; + case 20: // DoubleLiteral + shift(20); // DoubleLiteral + break; + case 8: // Variable + shift(8); // Variable + break; + case 9: // Tag + shift(9); // Tag + break; + case 7: // Operator + shift(7); // Operator + break; + case 35: // EOF + shift(35); // EOF + break; + default: + parse_EQName(); + } + eventHandler.endNonterminal("start", e0); + }; + + this.parse_StartTag = function() + { + eventHandler.startNonterminal("StartTag", e0); + lookahead1W(8); // QName | S^WS | EOF | '"' | "'" | '/>' | '=' | '>' + switch (l1) + { + case 61: // '>' + shift(61); // '>' + break; + case 53: // '/>' + shift(53); // '/>' + break; + case 29: // QName + shift(29); // QName + break; + case 60: // '=' + shift(60); // '=' + break; + case 37: // '"' + shift(37); // '"' + break; + case 41: // "'" + shift(41); // "'" + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("StartTag", e0); + }; + + this.parse_TagContent = function() + { + eventHandler.startNonterminal("TagContent", e0); + lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | + // '<!--' | '<![CDATA[' | '{' | '{{' | '}}' + switch (l1) + { + case 25: // ElementContentChar + shift(25); // ElementContentChar + break; + case 9: // Tag + shift(9); // Tag + break; + case 10: // EndTag + shift(10); // EndTag + break; + case 58: // '<![CDATA[' + shift(58); // '<![CDATA[' + break; + case 57: // '<!--' + shift(57); // '<!--' + break; + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 275: // '{{' + shift(275); // '{{' + break; + case 278: // '}}' + shift(278); // '}}' + break; + case 274: // '{' + shift(274); // '{' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("TagContent", e0); + }; + + this.parse_AposAttr = function() + { + eventHandler.startNonterminal("AposAttr", e0); + lookahead1(10); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | EOF | "'" | + // '{' | '{{' | '}}' + switch (l1) + { + case 23: // EscapeApos + shift(23); // EscapeApos + break; + case 27: // AposAttrContentChar + shift(27); // AposAttrContentChar + break; + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 275: // '{{' + shift(275); // '{{' + break; + case 278: // '}}' + shift(278); // '}}' + break; + case 274: // '{' + shift(274); // '{' + break; + case 41: // "'" + shift(41); // "'" + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("AposAttr", e0); + }; + + this.parse_QuotAttr = function() + { + eventHandler.startNonterminal("QuotAttr", e0); + lookahead1(9); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | EOF | '"' | + // '{' | '{{' | '}}' + switch (l1) + { + case 22: // EscapeQuot + shift(22); // EscapeQuot + break; + case 26: // QuotAttrContentChar + shift(26); // QuotAttrContentChar + break; + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 275: // '{{' + shift(275); // '{{' + break; + case 278: // '}}' + shift(278); // '}}' + break; + case 274: // '{' + shift(274); // '{' + break; + case 37: // '"' + shift(37); // '"' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("QuotAttr", e0); + }; + + this.parse_CData = function() + { + eventHandler.startNonterminal("CData", e0); + lookahead1(1); // CDataSectionContents | EOF | ']]>' + switch (l1) + { + case 14: // CDataSectionContents + shift(14); // CDataSectionContents + break; + case 67: // ']]>' + shift(67); // ']]>' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("CData", e0); + }; + + this.parse_XMLComment = function() + { + eventHandler.startNonterminal("XMLComment", e0); + lookahead1(0); // DirCommentContents | EOF | '-->' + switch (l1) + { + case 12: // DirCommentContents + shift(12); // DirCommentContents + break; + case 50: // '-->' + shift(50); // '-->' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("XMLComment", e0); + }; + + this.parse_PI = function() + { + eventHandler.startNonterminal("PI", e0); + lookahead1(3); // DirPIContents | EOF | '?' | '?>' + switch (l1) + { + case 13: // DirPIContents + shift(13); // DirPIContents + break; + case 62: // '?' + shift(62); // '?' + break; + case 63: // '?>' + shift(63); // '?>' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("PI", e0); + }; + + this.parse_Pragma = function() + { + eventHandler.startNonterminal("Pragma", e0); + lookahead1(2); // PragmaContents | EOF | '#' | '#)' + switch (l1) + { + case 11: // PragmaContents + shift(11); // PragmaContents + break; + case 38: // '#' + shift(38); // '#' + break; + case 39: // '#)' + shift(39); // '#)' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("Pragma", e0); + }; + + this.parse_Comment = function() + { + eventHandler.startNonterminal("Comment", e0); + lookahead1(4); // CommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 55: // ':)' + shift(55); // ':)' + break; + case 44: // '(:' + shift(44); // '(:' + break; + case 32: // CommentContents + shift(32); // CommentContents + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("Comment", e0); + }; + + this.parse_CommentDoc = function() + { + eventHandler.startNonterminal("CommentDoc", e0); + lookahead1(6); // DocTag | DocCommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 33: // DocTag + shift(33); // DocTag + break; + case 34: // DocCommentContents + shift(34); // DocCommentContents + break; + case 55: // ':)' + shift(55); // ':)' + break; + case 44: // '(:' + shift(44); // '(:' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("CommentDoc", e0); + }; + + this.parse_QuotString = function() + { + eventHandler.startNonterminal("QuotString", e0); + lookahead1(5); // JSONChar | JSONCharRef | JSONPredefinedCharRef | EOF | '"' + switch (l1) + { + case 3: // JSONPredefinedCharRef + shift(3); // JSONPredefinedCharRef + break; + case 2: // JSONCharRef + shift(2); // JSONCharRef + break; + case 1: // JSONChar + shift(1); // JSONChar + break; + case 37: // '"' + shift(37); // '"' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("QuotString", e0); + }; + + this.parse_AposString = function() + { + eventHandler.startNonterminal("AposString", e0); + lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" + switch (l1) + { + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 23: // EscapeApos + shift(23); // EscapeApos + break; + case 24: // AposChar + shift(24); // AposChar + break; + case 41: // "'" + shift(41); // "'" + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("AposString", e0); + }; + + this.parse_Prefix = function() + { + eventHandler.startNonterminal("Prefix", e0); + lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + }; + + this.parse__EQName = function() + { + eventHandler.startNonterminal("_EQName", e0); + lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_EQName(); + eventHandler.endNonterminal("_EQName", e0); + }; + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + switch (l1) + { + case 80: // 'attribute' + shift(80); // 'attribute' + break; + case 94: // 'comment' + shift(94); // 'comment' + break; + case 118: // 'document-node' + shift(118); // 'document-node' + break; + case 119: // 'element' + shift(119); // 'element' + break; + case 122: // 'empty-sequence' + shift(122); // 'empty-sequence' + break; + case 143: // 'function' + shift(143); // 'function' + break; + case 150: // 'if' + shift(150); // 'if' + break; + case 163: // 'item' + shift(163); // 'item' + break; + case 183: // 'namespace-node' + shift(183); // 'namespace-node' + break; + case 189: // 'node' + shift(189); // 'node' + break; + case 214: // 'processing-instruction' + shift(214); // 'processing-instruction' + break; + case 224: // 'schema-attribute' + shift(224); // 'schema-attribute' + break; + case 225: // 'schema-element' + shift(225); // 'schema-element' + break; + case 241: // 'switch' + shift(241); // 'switch' + break; + case 242: // 'text' + shift(242); // 'text' + break; + case 251: // 'typeswitch' + shift(251); // 'typeswitch' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 17: // EQName^Token + shift(17); // EQName^Token + break; + case 68: // 'after' + shift(68); // 'after' + break; + case 71: // 'ancestor' + shift(71); // 'ancestor' + break; + case 72: // 'ancestor-or-self' + shift(72); // 'ancestor-or-self' + break; + case 73: // 'and' + shift(73); // 'and' + break; + case 77: // 'as' + shift(77); // 'as' + break; + case 78: // 'ascending' + shift(78); // 'ascending' + break; + case 82: // 'before' + shift(82); // 'before' + break; + case 86: // 'case' + shift(86); // 'case' + break; + case 87: // 'cast' + shift(87); // 'cast' + break; + case 88: // 'castable' + shift(88); // 'castable' + break; + case 91: // 'child' + shift(91); // 'child' + break; + case 92: // 'collation' + shift(92); // 'collation' + break; + case 101: // 'copy' + shift(101); // 'copy' + break; + case 103: // 'count' + shift(103); // 'count' + break; + case 106: // 'declare' + shift(106); // 'declare' + break; + case 107: // 'default' + shift(107); // 'default' + break; + case 108: // 'delete' + shift(108); // 'delete' + break; + case 109: // 'descendant' + shift(109); // 'descendant' + break; + case 110: // 'descendant-or-self' + shift(110); // 'descendant-or-self' + break; + case 111: // 'descending' + shift(111); // 'descending' + break; + case 116: // 'div' + shift(116); // 'div' + break; + case 117: // 'document' + shift(117); // 'document' + break; + case 120: // 'else' + shift(120); // 'else' + break; + case 121: // 'empty' + shift(121); // 'empty' + break; + case 124: // 'end' + shift(124); // 'end' + break; + case 126: // 'eq' + shift(126); // 'eq' + break; + case 127: // 'every' + shift(127); // 'every' + break; + case 129: // 'except' + shift(129); // 'except' + break; + case 132: // 'first' + shift(132); // 'first' + break; + case 133: // 'following' + shift(133); // 'following' + break; + case 134: // 'following-sibling' + shift(134); // 'following-sibling' + break; + case 135: // 'for' + shift(135); // 'for' + break; + case 144: // 'ge' + shift(144); // 'ge' + break; + case 146: // 'group' + shift(146); // 'group' + break; + case 148: // 'gt' + shift(148); // 'gt' + break; + case 149: // 'idiv' + shift(149); // 'idiv' + break; + case 151: // 'import' + shift(151); // 'import' + break; + case 157: // 'insert' + shift(157); // 'insert' + break; + case 158: // 'instance' + shift(158); // 'instance' + break; + case 160: // 'intersect' + shift(160); // 'intersect' + break; + case 161: // 'into' + shift(161); // 'into' + break; + case 162: // 'is' + shift(162); // 'is' + break; + case 168: // 'last' + shift(168); // 'last' + break; + case 170: // 'le' + shift(170); // 'le' + break; + case 172: // 'let' + shift(172); // 'let' + break; + case 176: // 'lt' + shift(176); // 'lt' + break; + case 178: // 'mod' + shift(178); // 'mod' + break; + case 179: // 'modify' + shift(179); // 'modify' + break; + case 180: // 'module' + shift(180); // 'module' + break; + case 182: // 'namespace' + shift(182); // 'namespace' + break; + case 184: // 'ne' + shift(184); // 'ne' + break; + case 196: // 'only' + shift(196); // 'only' + break; + case 198: // 'or' + shift(198); // 'or' + break; + case 199: // 'order' + shift(199); // 'order' + break; + case 200: // 'ordered' + shift(200); // 'ordered' + break; + case 204: // 'parent' + shift(204); // 'parent' + break; + case 210: // 'preceding' + shift(210); // 'preceding' + break; + case 211: // 'preceding-sibling' + shift(211); // 'preceding-sibling' + break; + case 216: // 'rename' + shift(216); // 'rename' + break; + case 217: // 'replace' + shift(217); // 'replace' + break; + case 218: // 'return' + shift(218); // 'return' + break; + case 222: // 'satisfies' + shift(222); // 'satisfies' + break; + case 227: // 'self' + shift(227); // 'self' + break; + case 233: // 'some' + shift(233); // 'some' + break; + case 234: // 'stable' + shift(234); // 'stable' + break; + case 235: // 'start' + shift(235); // 'start' + break; + case 246: // 'to' + shift(246); // 'to' + break; + case 247: // 'treat' + shift(247); // 'treat' + break; + case 248: // 'try' + shift(248); // 'try' + break; + case 252: // 'union' + shift(252); // 'union' + break; + case 254: // 'unordered' + shift(254); // 'unordered' + break; + case 258: // 'validate' + shift(258); // 'validate' + break; + case 264: // 'where' + shift(264); // 'where' + break; + case 268: // 'with' + shift(268); // 'with' + break; + case 272: // 'xquery' + shift(272); // 'xquery' + break; + case 70: // 'allowing' + shift(70); // 'allowing' + break; + case 79: // 'at' + shift(79); // 'at' + break; + case 81: // 'base-uri' + shift(81); // 'base-uri' + break; + case 83: // 'boundary-space' + shift(83); // 'boundary-space' + break; + case 84: // 'break' + shift(84); // 'break' + break; + case 89: // 'catch' + shift(89); // 'catch' + break; + case 96: // 'construction' + shift(96); // 'construction' + break; + case 99: // 'context' + shift(99); // 'context' + break; + case 100: // 'continue' + shift(100); // 'continue' + break; + case 102: // 'copy-namespaces' + shift(102); // 'copy-namespaces' + break; + case 104: // 'decimal-format' + shift(104); // 'decimal-format' + break; + case 123: // 'encoding' + shift(123); // 'encoding' + break; + case 130: // 'exit' + shift(130); // 'exit' + break; + case 131: // 'external' + shift(131); // 'external' + break; + case 139: // 'ft-option' + shift(139); // 'ft-option' + break; + case 152: // 'in' + shift(152); // 'in' + break; + case 153: // 'index' + shift(153); // 'index' + break; + case 159: // 'integrity' + shift(159); // 'integrity' + break; + case 169: // 'lax' + shift(169); // 'lax' + break; + case 190: // 'nodes' + shift(190); // 'nodes' + break; + case 197: // 'option' + shift(197); // 'option' + break; + case 201: // 'ordering' + shift(201); // 'ordering' + break; + case 220: // 'revalidation' + shift(220); // 'revalidation' + break; + case 223: // 'schema' + shift(223); // 'schema' + break; + case 226: // 'score' + shift(226); // 'score' + break; + case 232: // 'sliding' + shift(232); // 'sliding' + break; + case 238: // 'strict' + shift(238); // 'strict' + break; + case 249: // 'tumbling' + shift(249); // 'tumbling' + break; + case 250: // 'type' + shift(250); // 'type' + break; + case 255: // 'updating' + shift(255); // 'updating' + break; + case 259: // 'value' + shift(259); // 'value' + break; + case 260: // 'variable' + shift(260); // 'variable' + break; + case 261: // 'version' + shift(261); // 'version' + break; + case 265: // 'while' + shift(265); // 'while' + break; + case 95: // 'constraint' + shift(95); // 'constraint' + break; + case 174: // 'loop' + shift(174); // 'loop' + break; + default: + shift(219); // 'returning' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 28: // NCName^Token + shift(28); // NCName^Token + break; + case 68: // 'after' + shift(68); // 'after' + break; + case 73: // 'and' + shift(73); // 'and' + break; + case 77: // 'as' + shift(77); // 'as' + break; + case 78: // 'ascending' + shift(78); // 'ascending' + break; + case 82: // 'before' + shift(82); // 'before' + break; + case 86: // 'case' + shift(86); // 'case' + break; + case 87: // 'cast' + shift(87); // 'cast' + break; + case 88: // 'castable' + shift(88); // 'castable' + break; + case 92: // 'collation' + shift(92); // 'collation' + break; + case 103: // 'count' + shift(103); // 'count' + break; + case 107: // 'default' + shift(107); // 'default' + break; + case 111: // 'descending' + shift(111); // 'descending' + break; + case 116: // 'div' + shift(116); // 'div' + break; + case 120: // 'else' + shift(120); // 'else' + break; + case 121: // 'empty' + shift(121); // 'empty' + break; + case 124: // 'end' + shift(124); // 'end' + break; + case 126: // 'eq' + shift(126); // 'eq' + break; + case 129: // 'except' + shift(129); // 'except' + break; + case 135: // 'for' + shift(135); // 'for' + break; + case 144: // 'ge' + shift(144); // 'ge' + break; + case 146: // 'group' + shift(146); // 'group' + break; + case 148: // 'gt' + shift(148); // 'gt' + break; + case 149: // 'idiv' + shift(149); // 'idiv' + break; + case 158: // 'instance' + shift(158); // 'instance' + break; + case 160: // 'intersect' + shift(160); // 'intersect' + break; + case 161: // 'into' + shift(161); // 'into' + break; + case 162: // 'is' + shift(162); // 'is' + break; + case 170: // 'le' + shift(170); // 'le' + break; + case 172: // 'let' + shift(172); // 'let' + break; + case 176: // 'lt' + shift(176); // 'lt' + break; + case 178: // 'mod' + shift(178); // 'mod' + break; + case 179: // 'modify' + shift(179); // 'modify' + break; + case 184: // 'ne' + shift(184); // 'ne' + break; + case 196: // 'only' + shift(196); // 'only' + break; + case 198: // 'or' + shift(198); // 'or' + break; + case 199: // 'order' + shift(199); // 'order' + break; + case 218: // 'return' + shift(218); // 'return' + break; + case 222: // 'satisfies' + shift(222); // 'satisfies' + break; + case 234: // 'stable' + shift(234); // 'stable' + break; + case 235: // 'start' + shift(235); // 'start' + break; + case 246: // 'to' + shift(246); // 'to' + break; + case 247: // 'treat' + shift(247); // 'treat' + break; + case 252: // 'union' + shift(252); // 'union' + break; + case 264: // 'where' + shift(264); // 'where' + break; + case 268: // 'with' + shift(268); // 'with' + break; + case 71: // 'ancestor' + shift(71); // 'ancestor' + break; + case 72: // 'ancestor-or-self' + shift(72); // 'ancestor-or-self' + break; + case 80: // 'attribute' + shift(80); // 'attribute' + break; + case 91: // 'child' + shift(91); // 'child' + break; + case 94: // 'comment' + shift(94); // 'comment' + break; + case 101: // 'copy' + shift(101); // 'copy' + break; + case 106: // 'declare' + shift(106); // 'declare' + break; + case 108: // 'delete' + shift(108); // 'delete' + break; + case 109: // 'descendant' + shift(109); // 'descendant' + break; + case 110: // 'descendant-or-self' + shift(110); // 'descendant-or-self' + break; + case 117: // 'document' + shift(117); // 'document' + break; + case 118: // 'document-node' + shift(118); // 'document-node' + break; + case 119: // 'element' + shift(119); // 'element' + break; + case 122: // 'empty-sequence' + shift(122); // 'empty-sequence' + break; + case 127: // 'every' + shift(127); // 'every' + break; + case 132: // 'first' + shift(132); // 'first' + break; + case 133: // 'following' + shift(133); // 'following' + break; + case 134: // 'following-sibling' + shift(134); // 'following-sibling' + break; + case 143: // 'function' + shift(143); // 'function' + break; + case 150: // 'if' + shift(150); // 'if' + break; + case 151: // 'import' + shift(151); // 'import' + break; + case 157: // 'insert' + shift(157); // 'insert' + break; + case 163: // 'item' + shift(163); // 'item' + break; + case 168: // 'last' + shift(168); // 'last' + break; + case 180: // 'module' + shift(180); // 'module' + break; + case 182: // 'namespace' + shift(182); // 'namespace' + break; + case 183: // 'namespace-node' + shift(183); // 'namespace-node' + break; + case 189: // 'node' + shift(189); // 'node' + break; + case 200: // 'ordered' + shift(200); // 'ordered' + break; + case 204: // 'parent' + shift(204); // 'parent' + break; + case 210: // 'preceding' + shift(210); // 'preceding' + break; + case 211: // 'preceding-sibling' + shift(211); // 'preceding-sibling' + break; + case 214: // 'processing-instruction' + shift(214); // 'processing-instruction' + break; + case 216: // 'rename' + shift(216); // 'rename' + break; + case 217: // 'replace' + shift(217); // 'replace' + break; + case 224: // 'schema-attribute' + shift(224); // 'schema-attribute' + break; + case 225: // 'schema-element' + shift(225); // 'schema-element' + break; + case 227: // 'self' + shift(227); // 'self' + break; + case 233: // 'some' + shift(233); // 'some' + break; + case 241: // 'switch' + shift(241); // 'switch' + break; + case 242: // 'text' + shift(242); // 'text' + break; + case 248: // 'try' + shift(248); // 'try' + break; + case 251: // 'typeswitch' + shift(251); // 'typeswitch' + break; + case 254: // 'unordered' + shift(254); // 'unordered' + break; + case 258: // 'validate' + shift(258); // 'validate' + break; + case 260: // 'variable' + shift(260); // 'variable' + break; + case 272: // 'xquery' + shift(272); // 'xquery' + break; + case 70: // 'allowing' + shift(70); // 'allowing' + break; + case 79: // 'at' + shift(79); // 'at' + break; + case 81: // 'base-uri' + shift(81); // 'base-uri' + break; + case 83: // 'boundary-space' + shift(83); // 'boundary-space' + break; + case 84: // 'break' + shift(84); // 'break' + break; + case 89: // 'catch' + shift(89); // 'catch' + break; + case 96: // 'construction' + shift(96); // 'construction' + break; + case 99: // 'context' + shift(99); // 'context' + break; + case 100: // 'continue' + shift(100); // 'continue' + break; + case 102: // 'copy-namespaces' + shift(102); // 'copy-namespaces' + break; + case 104: // 'decimal-format' + shift(104); // 'decimal-format' + break; + case 123: // 'encoding' + shift(123); // 'encoding' + break; + case 130: // 'exit' + shift(130); // 'exit' + break; + case 131: // 'external' + shift(131); // 'external' + break; + case 139: // 'ft-option' + shift(139); // 'ft-option' + break; + case 152: // 'in' + shift(152); // 'in' + break; + case 153: // 'index' + shift(153); // 'index' + break; + case 159: // 'integrity' + shift(159); // 'integrity' + break; + case 169: // 'lax' + shift(169); // 'lax' + break; + case 190: // 'nodes' + shift(190); // 'nodes' + break; + case 197: // 'option' + shift(197); // 'option' + break; + case 201: // 'ordering' + shift(201); // 'ordering' + break; + case 220: // 'revalidation' + shift(220); // 'revalidation' + break; + case 223: // 'schema' + shift(223); // 'schema' + break; + case 226: // 'score' + shift(226); // 'score' + break; + case 232: // 'sliding' + shift(232); // 'sliding' + break; + case 238: // 'strict' + shift(238); // 'strict' + break; + case 249: // 'tumbling' + shift(249); // 'tumbling' + break; + case 250: // 'type' + shift(250); // 'type' + break; + case 255: // 'updating' + shift(255); // 'updating' + break; + case 259: // 'value' + shift(259); // 'value' + break; + case 261: // 'version' + shift(261); // 'version' + break; + case 265: // 'while' + shift(265); // 'while' + break; + case 95: // 'constraint' + shift(95); // 'constraint' + break; + case 174: // 'loop' + shift(174); // 'loop' + break; + default: + shift(219); // 'returning' + } + eventHandler.endNonterminal("NCName", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(JSONiqTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = 0; + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function whitespace() + { + if (e0 != b1) + { + b0 = e0; + e0 = b1; + eventHandler.whitespace(b0, e0); + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 30) // S^WS + { + break; + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function error(b, e, s, l, t) + { + throw new self.ParseException(b, e, s, l, t); + } + + var lk, b0, e0; + var l1, b1, e1; + var eventHandler; + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = JSONiqTokenizer.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = JSONiqTokenizer.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = JSONiqTokenizer.MAP1[(c0 & 15) + JSONiqTokenizer.MAP1[(c1 & 31) + JSONiqTokenizer.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (JSONiqTokenizer.MAP2[m] > c0) hi = m - 1; + else if (JSONiqTokenizer.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = JSONiqTokenizer.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = JSONiqTokenizer.TRANSITION[(i0 & 15) + JSONiqTokenizer.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +JSONiqTokenizer.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 279; i += 32) + { + var j = i; + var i0 = (i >> 5) * 2066 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = JSONiqTokenizer.EXPECTED[(i0 & 3) + JSONiqTokenizer.EXPECTED[(i1 & 3) + JSONiqTokenizer.EXPECTED[(i2 & 3) + JSONiqTokenizer.EXPECTED[i2 >> 2]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(JSONiqTokenizer.TOKEN[j]); + } + } + } + return set; +}; + +JSONiqTokenizer.MAP0 = +[ + /* 0 */ 67, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, + /* 36 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, + /* 64 */ 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, + /* 91 */ 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + /* 118 */ 58, 59, 60, 61, 31, 62, 63, 64, 65, 37 +]; + +JSONiqTokenizer.MAP1 = +[ + /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, + /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 105 */ 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, + /* 126 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, + /* 147 */ 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, + /* 168 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, + /* 189 */ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + /* 210 */ 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + /* 231 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 67, 0, 0, 0, 0, 0, 0, 0, 0, + /* 256 */ 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 290 */ 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, + /* 317 */ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 37, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + /* 344 */ 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, + /* 371 */ 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 31, 62, 63, 64, 65, 37, 37, 37, 37, + /* 398 */ 37, 37, 37, 37, 37, 37, 37, 37, 31, 31, 37, 37, 37, 37, 37, 37, 37, 66, 37, 37, 37, 37, 37, 37, 37, 37, 37, + /* 425 */ 37, 37, 37, 37, 37, 37, 37, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 +]; + +JSONiqTokenizer.MAP2 = +[ + /* 0 */ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 37, 31, 37, 31, 31, + /* 17 */ 37 +]; + +JSONiqTokenizer.INITIAL = +[ + /* 0 */ 1, 2, 49155, 57348, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +JSONiqTokenizer.TRANSITION = +[ + /* 0 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 30 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 45 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 60 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 75 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 90 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 105 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 120 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 135 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 150 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 165 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 180 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 195 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 210 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 225 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 240 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 255 */ 19058, 17408, 19288, 17439, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, + /* 270 */ 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, 17689, + /* 285 */ 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, 17705, + /* 300 */ 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, 17878, + /* 315 */ 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, + /* 330 */ 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, 18294, + /* 345 */ 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, 18497, + /* 360 */ 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, + /* 375 */ 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, 19058, + /* 390 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 405 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 420 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 435 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 450 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 465 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 480 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 495 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 510 */ 19058, 19058, 19074, 36169, 17439, 36866, 17466, 36890, 36866, 22314, 19105, 22987, 17556, 17575, 22288, + /* 525 */ 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, + /* 540 */ 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, + /* 555 */ 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, + /* 570 */ 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, + /* 585 */ 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, + /* 600 */ 18294, 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, + /* 615 */ 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, + /* 630 */ 17450, 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, + /* 645 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 660 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 675 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 690 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 705 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 720 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 735 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 750 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 765 */ 19058, 19058, 19058, 22182, 19288, 19121, 36866, 17466, 18345, 36866, 21991, 22971, 22987, 17556, 17575, + /* 780 */ 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, + /* 795 */ 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, + /* 810 */ 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, + /* 825 */ 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, + /* 840 */ 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, + /* 855 */ 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, + /* 870 */ 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, + /* 885 */ 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, + /* 900 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 915 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 930 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 945 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 960 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 975 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 990 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1005 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1020 */ 19058, 19058, 19058, 19058, 19273, 19552, 19304, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, + /* 1035 */ 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, + /* 1050 */ 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, + /* 1065 */ 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, + /* 1080 */ 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, + /* 1095 */ 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, + /* 1110 */ 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, + /* 1125 */ 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, + /* 1140 */ 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, + /* 1155 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1170 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1185 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1200 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1215 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1230 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1245 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1260 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1275 */ 19058, 19058, 19058, 19058, 19058, 19332, 17423, 19363, 36866, 17466, 17537, 36866, 21991, 22971, 22987, + /* 1290 */ 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 18614, 18622, + /* 1305 */ 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 19391, 36867, 19404, 20299, 36866, 17647, + /* 1320 */ 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 19427, 18403, 18928, 19521, + /* 1335 */ 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, + /* 1350 */ 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, + /* 1365 */ 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, + /* 1380 */ 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, + /* 1395 */ 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, + /* 1410 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1425 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1440 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1455 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1470 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1485 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1500 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1515 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1530 */ 19058, 19058, 19058, 19058, 19058, 19058, 36154, 19288, 19457, 36866, 17466, 17740, 36866, 21991, 22971, + /* 1545 */ 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, + /* 1560 */ 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, + /* 1575 */ 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, + /* 1590 */ 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, + /* 1605 */ 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, + /* 1620 */ 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, + /* 1635 */ 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, + /* 1650 */ 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, + /* 1665 */ 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1680 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1695 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1710 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1725 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1740 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1755 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1770 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1785 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22780, 19288, 19457, 36866, 17466, 36890, 36866, 21991, + /* 1800 */ 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, + /* 1815 */ 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, + /* 1830 */ 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, + /* 1845 */ 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, + /* 1860 */ 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, + /* 1875 */ 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, + /* 1890 */ 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, + /* 1905 */ 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, + /* 1920 */ 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1935 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1950 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1965 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1980 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 1995 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2010 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2025 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2040 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22375, 22197, 18469, 36866, 17466, 36890, 36866, + /* 2055 */ 21991, 24018, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21331, 22984, 17553, 17572, 22285, + /* 2070 */ 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 19485, 19501, 36867, 19404, + /* 2085 */ 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, + /* 2100 */ 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, + /* 2115 */ 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, + /* 2130 */ 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, + /* 2145 */ 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, + /* 2160 */ 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, + /* 2175 */ 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2190 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2205 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2220 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2235 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2250 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2265 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2280 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2295 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19537, 22390, 19568, 36866, 17466, 36890, + /* 2310 */ 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, + /* 2325 */ 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, + /* 2340 */ 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, + /* 2355 */ 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, + /* 2370 */ 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, + /* 2385 */ 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, + /* 2400 */ 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, + /* 2415 */ 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, + /* 2430 */ 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2445 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2460 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2475 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2490 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2505 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2520 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2535 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2550 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19596, 19611, 19457, 36866, 17466, + /* 2565 */ 36890, 36866, 18246, 19627, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, + /* 2580 */ 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, + /* 2595 */ 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, + /* 2610 */ 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, + /* 2625 */ 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, + /* 2640 */ 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, + /* 2655 */ 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, + /* 2670 */ 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, + /* 2685 */ 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2700 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2715 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2730 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2745 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2760 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2775 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2790 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2805 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22242, 20553, 19457, 36866, + /* 2820 */ 17466, 36890, 36866, 18648, 30477, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, + /* 2835 */ 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, + /* 2850 */ 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, + /* 2865 */ 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, + /* 2880 */ 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, + /* 2895 */ 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, + /* 2910 */ 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, + /* 2925 */ 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, + /* 2940 */ 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2955 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2970 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 2985 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3000 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3015 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3030 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3045 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3060 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36472, 19288, 19457, + /* 3075 */ 36866, 17466, 17809, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21770, + /* 3090 */ 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, + /* 3105 */ 17619, 19643, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, + /* 3120 */ 17784, 17800, 17825, 19672, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, + /* 3135 */ 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, + /* 3150 */ 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, + /* 3165 */ 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, + /* 3180 */ 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, + /* 3195 */ 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3210 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3225 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3240 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3255 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3270 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3285 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3300 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3315 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 20538, 19288, + /* 3330 */ 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, + /* 3345 */ 17975, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, + /* 3360 */ 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, + /* 3375 */ 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, + /* 3390 */ 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, + /* 3405 */ 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, + /* 3420 */ 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, + /* 3435 */ 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, + /* 3450 */ 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3465 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3480 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3495 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3510 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3525 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3540 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3555 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3570 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22345, + /* 3585 */ 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, + /* 3600 */ 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, + /* 3615 */ 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, + /* 3630 */ 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, + /* 3645 */ 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, + /* 3660 */ 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, + /* 3675 */ 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, + /* 3690 */ 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, + /* 3705 */ 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3720 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3735 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3750 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3765 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3780 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3795 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3810 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3825 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3840 */ 19726, 19742, 21529, 24035, 23112, 26225, 23511, 27749, 27397, 24035, 34360, 24035, 24036, 23114, 35166, + /* 3855 */ 23114, 23114, 19758, 23511, 35247, 23511, 23511, 28447, 19803, 24035, 24035, 24035, 24035, 26576, 23114, + /* 3870 */ 23114, 23114, 23114, 24254, 19821, 23511, 23511, 23511, 23511, 23512, 19441, 36539, 24035, 24035, 24035, + /* 3885 */ 24035, 19846, 19869, 23114, 23114, 23114, 28618, 32187, 19892, 23511, 23511, 23511, 34585, 20402, 36647, + /* 3900 */ 24035, 24035, 24036, 23114, 33757, 23114, 23114, 23029, 20271, 23511, 27070, 23511, 23511, 30562, 24035, + /* 3915 */ 24035, 29274, 26576, 23114, 23114, 31118, 23036, 29695, 23511, 23511, 32431, 23634, 30821, 24035, 23110, + /* 3930 */ 19913, 23114, 23467, 31261, 23261, 34299, 19932, 24035, 32609, 19965, 35389, 19984, 27689, 19830, 29391, + /* 3945 */ 29337, 20041, 22643, 35619, 33728, 20062, 20121, 20166, 35100, 26145, 20211, 23008, 19876, 20208, 20227, + /* 3960 */ 25670, 20132, 26578, 27685, 20141, 20243, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, + /* 3975 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 3990 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4005 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4020 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4035 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4050 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4065 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4080 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4095 */ 19058, 36094, 19288, 19457, 36866, 17466, 21724, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, + /* 4110 */ 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, + /* 4125 */ 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, + /* 4140 */ 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, + /* 4155 */ 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, + /* 4170 */ 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, + /* 4185 */ 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, + /* 4200 */ 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, + /* 4215 */ 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, + /* 4230 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4245 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4260 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4275 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4290 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4305 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4320 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4335 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4350 */ 19058, 19058, 22735, 19552, 20287, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, + /* 4365 */ 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, + /* 4380 */ 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, + /* 4395 */ 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, + /* 4410 */ 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, + /* 4425 */ 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, + /* 4440 */ 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, + /* 4455 */ 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, + /* 4470 */ 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, + /* 4485 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4500 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4515 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4530 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4545 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4560 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4575 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4590 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4605 */ 19058, 19058, 19058, 22750, 19288, 21529, 24035, 23112, 28056, 23511, 29483, 28756, 24035, 24035, 24035, + /* 4620 */ 24036, 23114, 23114, 23114, 23114, 20327, 23511, 23511, 23511, 23511, 31156, 19803, 24035, 24035, 24035, + /* 4635 */ 24035, 26576, 23114, 23114, 23114, 23114, 24254, 20371, 23511, 23511, 23511, 23511, 27443, 20395, 24035, + /* 4650 */ 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 29457, 29700, 23511, 23511, 23511, 23511, + /* 4665 */ 33444, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 28350, 20421, 23511, 23511, 23511, + /* 4680 */ 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 20447, 20475, 23511, 23511, 23511, 23634, + /* 4695 */ 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, + /* 4710 */ 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, + /* 4725 */ 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, + /* 4740 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4755 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4770 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4785 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4800 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4815 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4830 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4845 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 4860 */ 19058, 19058, 19058, 19058, 20523, 22257, 20569, 20783, 21715, 17603, 20699, 20837, 20614, 20630, 21149, + /* 4875 */ 20670, 21405, 17486, 17509, 17525, 18373, 19179, 20695, 20716, 20732, 20755, 19194, 18042, 21641, 20592, + /* 4890 */ 20779, 20598, 21412, 17470, 17591, 20896, 17468, 17619, 20799, 20700, 21031, 20744, 20699, 20828, 18075, + /* 4905 */ 21259, 20581, 20853, 18048, 20868, 20884, 17756, 17784, 17800, 17825, 17854, 21171, 21200, 20931, 20947, + /* 4920 */ 21378, 20955, 20971, 18086, 20645, 21002, 20986, 18178, 17960, 18012, 18381, 18064, 29176, 21044, 21438, + /* 4935 */ 21018, 21122, 21393, 21060, 21844, 21094, 20654, 17493, 18150, 18166, 18214, 25967, 20763, 21799, 21110, + /* 4950 */ 21830, 21138, 21246, 21301, 18336, 18361, 21165, 21187, 20812, 21216, 21232, 21287, 21317, 18553, 21347, + /* 4965 */ 21363, 21428, 21454, 21271, 21483, 21499, 21515, 21575, 21467, 18712, 21591, 21633, 21078, 18189, 18198, + /* 4980 */ 20679, 21657, 21701, 21074, 21687, 21740, 21756, 21786, 21815, 21860, 21876, 21892, 21946, 21962, 19058, + /* 4995 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5010 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5025 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5040 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5055 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5070 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5085 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5100 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5115 */ 19058, 19058, 19058, 19058, 19058, 36457, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, + /* 5130 */ 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 36813, 17990, 18622, + /* 5145 */ 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, + /* 5160 */ 21981, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, + /* 5175 */ 17712, 37008, 22151, 22007, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 27898, 17884, + /* 5190 */ 18890, 17906, 17928, 22042, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 22070, 22112, 25026, 18134, + /* 5205 */ 36935, 18262, 18278, 18294, 18320, 18336, 18361, 22142, 18274, 22096, 18304, 18448, 18485, 18523, 18553, + /* 5220 */ 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, + /* 5235 */ 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, + /* 5250 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5265 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5280 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5295 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5310 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5325 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5340 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5355 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5370 */ 19058, 19058, 19058, 19058, 19058, 19058, 36109, 19288, 18469, 36866, 17466, 36890, 36866, 21991, 22971, + /* 5385 */ 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, + /* 5400 */ 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, + /* 5415 */ 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, + /* 5430 */ 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, + /* 5445 */ 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, + /* 5460 */ 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, + /* 5475 */ 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, + /* 5490 */ 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, + /* 5505 */ 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5520 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5535 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5550 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5565 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5580 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5595 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5610 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5625 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22167, 19288, 19457, 36866, 17466, 17768, 36866, 21991, + /* 5640 */ 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, + /* 5655 */ 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, + /* 5670 */ 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, + /* 5685 */ 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, + /* 5700 */ 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, + /* 5715 */ 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, + /* 5730 */ 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, + /* 5745 */ 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, + /* 5760 */ 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5775 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5790 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5805 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5820 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5835 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5850 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5865 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 5880 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22227, 36487, 22273, 36866, 17466, 36890, 36866, + /* 5895 */ 19316, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, + /* 5910 */ 18749, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, + /* 5925 */ 20299, 36866, 17647, 22304, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, + /* 5940 */ 18403, 18928, 19521, 17712, 37008, 19580, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, + /* 5955 */ 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, + /* 5970 */ 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, + /* 5985 */ 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, + /* 6000 */ 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, + /* 6015 */ 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6030 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6045 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6060 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6075 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6090 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6105 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6120 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6135 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22330, 19089, 19457, 36866, 17466, 18721, + /* 6150 */ 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, + /* 6165 */ 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, + /* 6180 */ 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, + /* 6195 */ 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, + /* 6210 */ 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, + /* 6225 */ 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, + /* 6240 */ 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, + /* 6255 */ 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, + /* 6270 */ 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6285 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6300 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6315 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6330 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6345 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6360 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6375 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6390 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22765, 19347, 19457, 36866, 17466, + /* 6405 */ 36890, 36866, 18114, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, + /* 6420 */ 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, + /* 6435 */ 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, + /* 6450 */ 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, + /* 6465 */ 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, + /* 6480 */ 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, + /* 6495 */ 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, + /* 6510 */ 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, + /* 6525 */ 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6540 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6555 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6570 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6585 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6600 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6615 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6630 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6645 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, + /* 6660 */ 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, + /* 6675 */ 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, + /* 6690 */ 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, + /* 6705 */ 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34541, 20402, 24035, 24035, 24035, 24036, 23114, + /* 6720 */ 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, + /* 6735 */ 23114, 23114, 32683, 22516, 23511, 23511, 23511, 22540, 24035, 24035, 23110, 23114, 23114, 20499, 23511, + /* 6750 */ 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, + /* 6765 */ 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, + /* 6780 */ 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6795 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6810 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6825 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6840 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6855 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6870 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6885 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 6900 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, + /* 6915 */ 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, + /* 6930 */ 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, + /* 6945 */ 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, + /* 6960 */ 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, + /* 6975 */ 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, + /* 6990 */ 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, + /* 7005 */ 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, + /* 7020 */ 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, + /* 7035 */ 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7050 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7065 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7080 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7095 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7110 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7125 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7140 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7155 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, + /* 7170 */ 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, + /* 7185 */ 22420, 23511, 23511, 23511, 23511, 29908, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, + /* 7200 */ 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, + /* 7215 */ 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, + /* 7230 */ 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, + /* 7245 */ 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, + /* 7260 */ 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, + /* 7275 */ 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, + /* 7290 */ 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7305 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7320 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7335 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7350 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7365 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7380 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7395 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7410 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, + /* 7425 */ 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, + /* 7440 */ 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, + /* 7455 */ 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22561, 24035, 24035, 24035, 24035, 24035, + /* 7470 */ 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, + /* 7485 */ 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, + /* 7500 */ 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, + /* 7515 */ 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, + /* 7530 */ 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, + /* 7545 */ 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7560 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7575 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7590 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7605 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7620 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7635 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7650 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7665 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7680 */ 36079, 19288, 21605, 24035, 23112, 23837, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, + /* 7695 */ 23114, 23114, 22584, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, + /* 7710 */ 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, + /* 7725 */ 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, + /* 7740 */ 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, + /* 7755 */ 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, + /* 7770 */ 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, + /* 7785 */ 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, + /* 7800 */ 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, + /* 7815 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7830 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7845 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7860 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7875 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7890 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7905 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7920 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 7935 */ 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, + /* 7950 */ 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, + /* 7965 */ 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, + /* 7980 */ 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, + /* 7995 */ 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, + /* 8010 */ 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, + /* 8025 */ 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, + /* 8040 */ 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, + /* 8055 */ 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, + /* 8070 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8085 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8100 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8115 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8130 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8145 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8160 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8175 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8190 */ 19058, 19058, 36442, 19288, 21605, 24035, 23112, 28137, 23511, 31507, 29939, 24035, 24035, 24035, 24036, + /* 8205 */ 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, + /* 8220 */ 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, + /* 8235 */ 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, + /* 8250 */ 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, + /* 8265 */ 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, + /* 8280 */ 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, + /* 8295 */ 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, + /* 8310 */ 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, + /* 8325 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8340 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8355 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8370 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8385 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8400 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8415 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8430 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8445 */ 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, + /* 8460 */ 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, + /* 8475 */ 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, + /* 8490 */ 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, + /* 8505 */ 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, + /* 8520 */ 23511, 31568, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, + /* 8535 */ 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, + /* 8550 */ 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, + /* 8565 */ 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, + /* 8580 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8595 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8610 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8625 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8640 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8655 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8670 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8685 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8700 */ 19058, 19058, 19058, 19058, 22690, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 27584, 22987, 17556, + /* 8715 */ 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, + /* 8730 */ 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, + /* 8745 */ 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, + /* 8760 */ 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, + /* 8775 */ 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, + /* 8790 */ 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 22659, 18448, 18485, 18523, 18553, 18583, + /* 8805 */ 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, + /* 8820 */ 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, + /* 8835 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8850 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8865 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8880 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8895 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8910 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8925 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8940 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 8955 */ 19058, 19058, 19058, 19058, 19058, 22360, 19552, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, + /* 8970 */ 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, + /* 8985 */ 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, + /* 9000 */ 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, + /* 9015 */ 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, + /* 9030 */ 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, + /* 9045 */ 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, + /* 9060 */ 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, + /* 9075 */ 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, + /* 9090 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9105 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9120 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9135 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9150 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9165 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9180 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9195 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9210 */ 19058, 19058, 19058, 19058, 19058, 19058, 22675, 22811, 19457, 36866, 17466, 36890, 36866, 19133, 22971, + /* 9225 */ 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22827, 17990, + /* 9240 */ 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, + /* 9255 */ 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, + /* 9270 */ 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, + /* 9285 */ 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, + /* 9300 */ 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, + /* 9315 */ 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, + /* 9330 */ 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, + /* 9345 */ 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9360 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9375 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9390 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9405 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9420 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9435 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9450 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9465 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, + /* 9480 */ 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, + /* 9495 */ 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, + /* 9510 */ 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, + /* 9525 */ 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, + /* 9540 */ 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, + /* 9555 */ 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, + /* 9570 */ 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, + /* 9585 */ 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, + /* 9600 */ 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9615 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9630 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9645 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9660 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9675 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9690 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9705 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9720 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36064, 19288, 22865, 22881, 32031, 22897, 22913, + /* 9735 */ 22956, 29939, 24035, 24035, 24035, 23003, 23114, 23114, 23114, 23024, 22420, 23511, 23511, 23511, 23052, + /* 9750 */ 29116, 23073, 29268, 24035, 25563, 26915, 23106, 23131, 23114, 23114, 23159, 23181, 23197, 23248, 23511, + /* 9765 */ 23511, 23282, 23305, 22493, 32364, 24035, 33472, 30138, 26325, 31770, 33508, 27345, 33667, 23114, 23321, + /* 9780 */ 23473, 23351, 35793, 36576, 23511, 23375, 22500, 24145, 24035, 29197, 20192, 24533, 23440, 23114, 19017, + /* 9795 */ 23459, 22839, 23489, 23510, 23511, 33563, 23528, 32076, 25389, 24035, 26576, 23561, 23583, 23114, 32683, + /* 9810 */ 22516, 23622, 23655, 23511, 23634, 35456, 37144, 23110, 23683, 34153, 20499, 32513, 25824, 23705, 24035, + /* 9825 */ 24035, 23111, 23114, 19874, 27078, 33263, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, + /* 9840 */ 20507, 32241, 20150, 31862, 27464, 35108, 23727, 23007, 35895, 34953, 26578, 27685, 20141, 24569, 31691, + /* 9855 */ 19787, 33967, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9870 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9885 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9900 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9915 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9930 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9945 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9960 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 9975 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36427, 19552, 21605, 24035, 23112, 32618, + /* 9990 */ 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, + /* 10005 */ 23511, 29116, 19803, 24035, 24035, 24035, 27027, 26576, 23114, 23114, 23114, 31471, 23756, 22468, 23511, + /* 10020 */ 23511, 23511, 34687, 23772, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, + /* 10035 */ 28618, 29700, 23511, 23511, 23511, 23511, 34564, 23788, 24035, 24035, 24035, 21559, 23828, 23114, 23114, + /* 10050 */ 23114, 25086, 22839, 23853, 23511, 23511, 23511, 23876, 24035, 24035, 24035, 26576, 23114, 23114, 23114, + /* 10065 */ 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, + /* 10080 */ 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, + /* 10095 */ 30243, 19829, 26577, 26597, 20211, 31761, 23909, 23953, 23007, 20046, 20132, 26578, 27685, 20141, 24569, + /* 10110 */ 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10125 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10140 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10155 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10170 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10185 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10200 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10215 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10230 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36049, 19288, 21605, 30825, 23112, + /* 10245 */ 23987, 23511, 24003, 31001, 27617, 24034, 24035, 24036, 24052, 24089, 23114, 23114, 22420, 24109, 24168, + /* 10260 */ 23511, 23511, 29116, 24188, 27609, 20017, 29516, 24035, 26576, 24222, 19968, 23114, 24252, 33811, 22468, + /* 10275 */ 24270, 33587, 23511, 24320, 27443, 22493, 24035, 24035, 24035, 24035, 24339, 23113, 23114, 23114, 23114, + /* 10290 */ 28128, 28618, 29700, 23511, 23511, 23511, 28276, 34564, 20402, 24035, 24035, 32929, 24036, 23114, 23114, + /* 10305 */ 23114, 24357, 23029, 22839, 23511, 23511, 23511, 24377, 25645, 24035, 34112, 24035, 26576, 23114, 26643, + /* 10320 */ 23114, 32683, 22516, 23511, 25638, 23511, 23711, 24035, 24395, 27809, 23114, 24414, 20499, 24432, 30917, + /* 10335 */ 23628, 24035, 30680, 23111, 23114, 30233, 27078, 25748, 24452, 24035, 23112, 19872, 27741, 23266, 24036, + /* 10350 */ 23114, 24475, 19829, 26577, 26597, 26154, 24519, 24556, 24596, 23007, 20046, 20132, 26578, 24634, 20141, + /* 10365 */ 24569, 31691, 24679, 24727, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10380 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10395 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10410 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10425 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10440 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10455 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10470 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10485 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36412, 19288, 21605, 19943, + /* 10500 */ 34861, 32618, 26027, 29483, 32016, 32050, 36233, 24776, 35574, 24801, 24819, 32671, 31289, 22420, 24868, + /* 10515 */ 24886, 20087, 26849, 29116, 19803, 24035, 24035, 24035, 36228, 26576, 23114, 23114, 23114, 24981, 33811, + /* 10530 */ 22468, 23511, 23511, 23511, 29028, 27443, 22493, 24923, 27965, 24035, 24035, 32797, 24946, 23443, 23114, + /* 10545 */ 23114, 29636, 24997, 22849, 28252, 23511, 23511, 23511, 25042, 25110, 24035, 24035, 34085, 24036, 25133, + /* 10560 */ 23114, 23114, 25152, 23029, 22839, 25169, 23511, 36764, 23511, 25645, 30403, 24035, 25186, 26576, 31806, + /* 10575 */ 24093, 25212, 32683, 22516, 32713, 26245, 34293, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, + /* 10590 */ 23261, 23628, 24035, 32406, 23111, 23114, 28676, 30944, 27689, 25234, 24035, 23112, 19872, 37063, 23266, + /* 10605 */ 24036, 23114, 30243, 20379, 26100, 29218, 20211, 30105, 25257, 25284, 23007, 20046, 20132, 26578, 27685, + /* 10620 */ 20141, 24569, 24834, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10635 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10650 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10665 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10680 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10695 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10710 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10725 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10740 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36034, 19288, 21671, + /* 10755 */ 25314, 25072, 25330, 25346, 25362, 29939, 29951, 35288, 29984, 23812, 27216, 25405, 25424, 30456, 22584, + /* 10770 */ 26292, 25461, 25480, 31592, 29116, 25516, 34963, 25545, 27007, 25579, 33937, 25614, 25661, 25686, 34872, + /* 10785 */ 25702, 25718, 25734, 25769, 25795, 25811, 25840, 22493, 26533, 25856, 24035, 25876, 30763, 27481, 25909, + /* 10800 */ 23114, 28987, 25936, 25954, 29700, 25983, 23511, 31412, 26043, 26063, 22568, 29241, 29592, 26116, 31216, + /* 10815 */ 35383, 26170, 34783, 26194, 26221, 22839, 26241, 26261, 22477, 26283, 26308, 27306, 31035, 24655, 26576, + /* 10830 */ 29854, 33386, 26341, 32683, 22516, 32153, 30926, 26361, 19996, 26381, 35463, 26397, 26424, 34646, 26478, + /* 10845 */ 35605, 31386, 26494, 35567, 31964, 22940, 23689, 25218, 30309, 32289, 19830, 33605, 23112, 32109, 27733, + /* 10860 */ 27084, 24496, 35886, 35221, 26525, 36602, 26549, 26558, 26574, 26594, 26613, 26629, 26666, 26700, 26578, + /* 10875 */ 27685, 23740, 24285, 31691, 26733, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10890 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10905 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10920 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10935 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10950 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10965 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10980 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 10995 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36397, 19552, + /* 11010 */ 18991, 25887, 28117, 32618, 26776, 29483, 29939, 26802, 24035, 24035, 24036, 28664, 23114, 23114, 23114, + /* 11025 */ 22420, 30297, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 25559, 26576, 23114, 23114, 23114, + /* 11040 */ 30525, 33811, 22468, 23511, 23511, 23511, 28725, 27443, 22493, 24035, 24035, 27249, 24035, 24035, 23113, + /* 11055 */ 23114, 23114, 26827, 23114, 28618, 29700, 23511, 23511, 26845, 23511, 34564, 20402, 24035, 24035, 26979, + /* 11070 */ 24036, 23114, 23114, 23114, 24974, 23029, 22839, 23511, 23511, 23511, 26865, 25645, 24035, 24035, 24035, + /* 11085 */ 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, + /* 11100 */ 20499, 23511, 23261, 23628, 33305, 24035, 25598, 23114, 19874, 34253, 27689, 19830, 24035, 23112, 19872, + /* 11115 */ 27741, 23266, 24036, 23114, 26886, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, + /* 11130 */ 26578, 27685, 26931, 24569, 26439, 26947, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11145 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11160 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11175 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11190 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11205 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11220 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11235 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11250 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36019, + /* 11265 */ 19288, 26995, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, + /* 11280 */ 23114, 22420, 23511, 23511, 23511, 23511, 28306, 27043, 24035, 24035, 24035, 24035, 26576, 23114, 23114, + /* 11295 */ 23114, 23114, 33811, 27061, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 29978, 24035, 24035, + /* 11310 */ 23113, 23114, 33114, 23114, 23114, 30010, 29700, 23511, 35913, 23511, 23511, 34585, 20402, 24035, 24035, + /* 11325 */ 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, + /* 11340 */ 27155, 26576, 23114, 23114, 30447, 23036, 29695, 23511, 23511, 30935, 20099, 24152, 25529, 27100, 34461, + /* 11355 */ 27121, 22625, 29156, 26009, 27137, 30422, 31903, 31655, 28870, 27171, 32439, 31731, 19830, 27232, 22612, + /* 11370 */ 27265, 26786, 25494, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, + /* 11385 */ 20132, 26578, 27685, 20141, 20342, 27288, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11400 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11415 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11430 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11445 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11460 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11475 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11490 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11505 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11520 */ 36079, 19288, 21605, 27322, 27339, 28020, 27361, 27382, 29939, 24035, 24035, 32581, 24036, 23114, 23114, + /* 11535 */ 23114, 27425, 22420, 23511, 23511, 23511, 27442, 28306, 19803, 24035, 24035, 24035, 24035, 26710, 23114, + /* 11550 */ 23114, 23114, 23114, 32261, 22468, 23511, 23511, 23511, 23511, 35719, 24694, 29510, 24035, 24035, 24035, + /* 11565 */ 24035, 26717, 23114, 23114, 23114, 23114, 28618, 32217, 23511, 23511, 23511, 23511, 34585, 20402, 24035, + /* 11580 */ 24035, 24035, 27459, 23114, 23114, 23114, 36252, 23029, 20271, 23511, 23511, 23511, 28840, 30562, 24035, + /* 11595 */ 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, + /* 11610 */ 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, + /* 11625 */ 27480, 34483, 28401, 29761, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, + /* 11640 */ 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, + /* 11655 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11670 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11685 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11700 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11715 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11730 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11745 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11760 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11775 */ 19058, 36382, 19288, 21605, 27497, 27517, 28504, 28898, 27569, 29939, 29401, 27600, 27323, 27633, 19025, + /* 11790 */ 27662, 23114, 27705, 22420, 20483, 27721, 23511, 27765, 28306, 19803, 23540, 24035, 24610, 27781, 27805, + /* 11805 */ 26650, 23114, 28573, 32990, 25920, 22468, 26870, 23511, 26684, 34262, 34737, 25057, 34622, 24035, 24035, + /* 11820 */ 23971, 24206, 27825, 27847, 23114, 23114, 27865, 27885, 35766, 27914, 23511, 23511, 32766, 32844, 27934, + /* 11835 */ 28795, 26909, 27955, 26092, 27988, 25445, 28005, 28036, 28052, 21965, 23511, 32196, 19897, 28072, 28102, + /* 11850 */ 36534, 21541, 23801, 28153, 28180, 28197, 28221, 23036, 32695, 28251, 28268, 28292, 23667, 34825, 23930, + /* 11865 */ 24580, 28322, 28344, 31627, 28366, 25996, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 35625, + /* 11880 */ 33477, 33359, 27674, 28393, 33992, 24036, 23114, 30243, 19829, 28417, 28433, 28463, 23008, 19876, 20208, + /* 11895 */ 23007, 20046, 20132, 28489, 28520, 20141, 24569, 31691, 19787, 28550, 20268, 19058, 19058, 19058, 19058, + /* 11910 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11925 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11940 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11955 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11970 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 11985 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12000 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12015 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12030 */ 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, + /* 12045 */ 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, + /* 12060 */ 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 28589, 24035, + /* 12075 */ 24035, 24035, 24035, 28608, 23114, 23114, 23114, 23114, 28618, 20431, 23511, 23511, 23511, 23511, 34585, + /* 12090 */ 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, + /* 12105 */ 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, + /* 12120 */ 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, + /* 12135 */ 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, + /* 12150 */ 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, + /* 12165 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12180 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12195 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12210 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12225 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12240 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12255 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12270 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12285 */ 19058, 19058, 19058, 36004, 19288, 28634, 31951, 28565, 28702, 28718, 28741, 32544, 20175, 28792, 32086, + /* 12300 */ 20105, 28811, 29059, 29862, 28856, 22420, 28886, 30354, 23359, 28922, 28306, 28952, 23888, 26320, 36506, + /* 12315 */ 24035, 29331, 28968, 36609, 23114, 29003, 31661, 27061, 30649, 27366, 23511, 29023, 27918, 24694, 24035, + /* 12330 */ 24035, 23893, 33094, 30867, 23113, 23114, 23114, 29044, 34184, 30010, 29700, 23511, 23511, 29081, 29102, + /* 12345 */ 34585, 20402, 27789, 24035, 24035, 24036, 23114, 29132, 23114, 23114, 23029, 20271, 23511, 29153, 23511, + /* 12360 */ 23511, 30562, 30174, 24035, 24035, 27409, 25438, 23114, 23114, 29172, 36668, 31332, 23511, 23511, 29192, + /* 12375 */ 30144, 24035, 23110, 30203, 23114, 23467, 31544, 23261, 23628, 24035, 22545, 23111, 23114, 29213, 27078, + /* 12390 */ 27689, 29234, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 29257, 23008, + /* 12405 */ 19876, 20208, 28768, 29290, 29320, 34776, 29353, 20141, 22435, 29378, 19787, 29304, 20268, 19058, 19058, + /* 12420 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12435 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12450 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12465 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12480 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12495 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12510 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12525 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12540 */ 19058, 19058, 19058, 19058, 36367, 19288, 21605, 34616, 19006, 32618, 31497, 31507, 36216, 20184, 24035, + /* 12555 */ 34393, 29424, 34668, 23114, 34900, 29447, 22420, 30360, 23511, 37089, 29473, 28306, 19803, 29499, 24398, + /* 12570 */ 24035, 24035, 26576, 31799, 29532, 29550, 23114, 33811, 22468, 32298, 29571, 31184, 23511, 23512, 37127, + /* 12585 */ 36628, 29589, 24035, 24135, 24035, 23113, 29608, 23114, 27831, 29634, 28618, 29652, 30037, 23511, 24172, + /* 12600 */ 29671, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 29555, 29690, 23511, 23511, + /* 12615 */ 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, + /* 12630 */ 23634, 29719, 24035, 23110, 29738, 23114, 23467, 34035, 29756, 23628, 24035, 24035, 23111, 23114, 19874, + /* 12645 */ 27078, 27689, 19830, 24035, 23112, 19872, 27741, 29777, 34364, 28181, 30243, 29799, 31920, 27272, 27185, + /* 12660 */ 23008, 31126, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29828, 20268, 19058, + /* 12675 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12690 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12705 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12720 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12735 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12750 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12765 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12780 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12795 */ 19058, 19058, 19058, 19058, 19058, 35989, 19552, 19687, 35139, 28649, 29878, 29894, 29924, 29939, 23224, + /* 12810 */ 23085, 31969, 24036, 35173, 24752, 24803, 23114, 22420, 31190, 30318, 24870, 23511, 28306, 29967, 23967, + /* 12825 */ 24035, 24035, 24035, 26576, 30000, 23114, 23114, 23114, 33811, 22468, 30026, 23511, 23511, 23511, 23512, + /* 12840 */ 26078, 24035, 24035, 24035, 30053, 37137, 30071, 23114, 23114, 33368, 25136, 28618, 30723, 23511, 23511, + /* 12855 */ 37096, 31356, 34585, 20402, 30092, 30127, 30160, 24036, 35740, 30219, 24960, 30259, 23029, 20271, 34042, + /* 12870 */ 30285, 30342, 30376, 23289, 30055, 30400, 30419, 30438, 32640, 33532, 33514, 30472, 18792, 26267, 24323, + /* 12885 */ 23057, 30493, 23639, 20008, 30196, 33188, 30517, 20075, 23511, 30541, 23628, 30578, 33928, 28776, 30594, + /* 12900 */ 19874, 30610, 30637, 19830, 30677, 27646, 19872, 25779, 23266, 23232, 35016, 30243, 30696, 29812, 30712, + /* 12915 */ 30746, 27206, 30779, 30807, 23007, 33395, 20132, 26578, 27685, 31703, 22928, 31691, 19787, 31079, 20268, + /* 12930 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12945 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12960 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12975 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 12990 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13005 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13020 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13035 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13050 */ 19058, 19058, 19058, 19058, 19058, 19058, 36352, 19288, 23335, 30841, 26131, 30888, 30904, 30986, 29939, + /* 13065 */ 24035, 24704, 31017, 20025, 23114, 26178, 31051, 31095, 22420, 23511, 22524, 31142, 31172, 28534, 31206, + /* 13080 */ 35497, 25196, 24035, 28592, 24503, 23114, 31239, 31285, 23114, 31305, 31321, 31355, 31372, 31407, 23511, + /* 13095 */ 30556, 24694, 24035, 27501, 19805, 24035, 24035, 23113, 23114, 31428, 24066, 23114, 28618, 29700, 23511, + /* 13110 */ 31837, 18809, 23511, 34585, 31448, 24035, 24035, 24035, 23090, 23114, 23114, 23114, 23114, 31619, 35038, + /* 13125 */ 23511, 23511, 23511, 23511, 33714, 24035, 33085, 24035, 29431, 23114, 31467, 23114, 23143, 31487, 23511, + /* 13140 */ 31523, 23511, 35195, 36783, 24035, 30111, 23567, 23114, 23467, 31543, 31560, 23628, 24035, 24035, 23111, + /* 13155 */ 23114, 19874, 30953, 31584, 34508, 24035, 31608, 26345, 37055, 23266, 31643, 31677, 31719, 31747, 31786, + /* 13170 */ 31822, 26898, 23008, 19876, 31859, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 31878, 31936, + /* 13185 */ 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13200 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13215 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13230 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13245 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13260 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13275 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13290 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13305 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35974, 19288, 21605, 27972, 35663, 31985, 29655, 32001, + /* 13320 */ 36715, 24785, 25893, 23545, 31912, 19853, 19916, 25938, 24540, 22420, 31843, 29674, 29573, 32735, 28936, + /* 13335 */ 19803, 24035, 24035, 32047, 24035, 26576, 23114, 23114, 27544, 23114, 33811, 22468, 23511, 23511, 32161, + /* 13350 */ 23511, 23512, 32066, 24035, 33313, 24035, 24035, 24035, 23113, 27426, 32102, 23114, 23114, 28618, 32125, + /* 13365 */ 23511, 32144, 23511, 23511, 33569, 20402, 24035, 27045, 24035, 24036, 23114, 23114, 28328, 23114, 30076, + /* 13380 */ 32177, 23511, 23511, 30384, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23595, 32212, + /* 13395 */ 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, + /* 13410 */ 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 22635, 25753, 32233, 32257, 32277, 19829, + /* 13425 */ 26577, 26597, 20211, 23008, 19876, 32322, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, + /* 13440 */ 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13455 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13470 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13485 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13500 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13515 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13530 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13545 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13560 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 32352, 35285, 32380, 34196, 33016, + /* 13575 */ 30661, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, + /* 13590 */ 28306, 32404, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 32422, 23511, 23511, + /* 13605 */ 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 30269, + /* 13620 */ 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, + /* 13635 */ 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, + /* 13650 */ 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 19949, + /* 13665 */ 24035, 23111, 32455, 19874, 31269, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, + /* 13680 */ 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, + /* 13695 */ 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13710 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13725 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13740 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13755 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13770 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13785 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13800 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13815 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36337, 19552, 19209, 21617, 26509, 32475, + /* 13830 */ 32491, 32529, 29939, 24035, 32578, 25241, 32597, 23114, 32634, 29007, 32656, 22420, 23511, 32729, 26365, + /* 13845 */ 32751, 28306, 32788, 32882, 24035, 24035, 32813, 36727, 23114, 33182, 23114, 27553, 33235, 32829, 23511, + /* 13860 */ 32706, 23511, 28906, 28377, 26962, 32881, 32904, 32898, 32920, 24035, 32953, 23114, 32977, 26408, 23114, + /* 13875 */ 28164, 33006, 23511, 33039, 35774, 23511, 32306, 20402, 33076, 30872, 24035, 24036, 25408, 33110, 28979, + /* 13890 */ 23114, 23029, 20271, 35835, 33130, 33054, 23511, 30562, 33148, 24035, 24035, 33167, 23114, 23114, 33775, + /* 13905 */ 23036, 20459, 23511, 23511, 25464, 24646, 24035, 24035, 22446, 23114, 23114, 25627, 23511, 23261, 23628, + /* 13920 */ 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 31391, 33204, 33220, + /* 13935 */ 33251, 33287, 26577, 26597, 20211, 33329, 19876, 33345, 23007, 20046, 20132, 26578, 27685, 28473, 22599, + /* 13950 */ 31691, 33411, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13965 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13980 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 13995 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14010 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14025 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14040 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14055 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14070 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35959, 19288, 21907, 27243, 29843, + /* 14085 */ 32618, 33427, 31507, 29939, 33460, 34090, 24035, 24036, 33493, 24416, 33530, 23114, 22420, 33548, 24379, + /* 14100 */ 33585, 23511, 28306, 19803, 33603, 24202, 24035, 24035, 25593, 33749, 28205, 23114, 23114, 32388, 22468, + /* 14115 */ 33853, 33060, 23511, 23511, 31339, 33621, 24035, 24035, 34397, 24618, 30757, 33663, 23114, 23114, 33683, + /* 14130 */ 35684, 28618, 26678, 23511, 23511, 32506, 33699, 34585, 20402, 24035, 32562, 26973, 24036, 23114, 23114, + /* 14145 */ 33377, 33773, 23029, 20271, 23511, 23511, 30621, 23511, 23860, 24035, 33791, 21553, 26576, 36558, 23114, + /* 14160 */ 33809, 23036, 32857, 26047, 23511, 33827, 23634, 24035, 24035, 23110, 23114, 23114, 31252, 23511, 33845, + /* 14175 */ 23628, 24035, 24459, 23111, 23114, 33869, 27078, 30791, 29783, 24035, 24742, 19872, 33895, 23266, 26462, + /* 14190 */ 19710, 33879, 33919, 26577, 26597, 24123, 24930, 21930, 20208, 30501, 33953, 25268, 20252, 33983, 20141, + /* 14205 */ 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14220 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14235 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14250 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14265 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14280 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14295 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14310 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14325 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36322, 19552, 23390, 33634, + /* 14340 */ 35154, 34008, 34024, 34058, 35544, 34106, 34128, 26811, 33151, 34144, 34169, 34212, 23114, 34228, 34244, + /* 14355 */ 34278, 34315, 23511, 34331, 34347, 34380, 34413, 24035, 24663, 26576, 34429, 34453, 34477, 29534, 33811, + /* 14370 */ 22468, 34499, 34524, 34557, 25170, 34580, 35436, 23937, 34601, 24035, 24341, 26453, 23113, 34638, 34662, + /* 14385 */ 23114, 24236, 28618, 34684, 34703, 34729, 23511, 35352, 34753, 34799, 24035, 34815, 32558, 34848, 34888, + /* 14400 */ 35814, 34923, 23165, 29137, 23606, 30326, 30730, 34939, 33023, 30562, 36848, 34979, 24035, 24847, 34996, + /* 14415 */ 23114, 23114, 35032, 29695, 35054, 23511, 23511, 35091, 33296, 35124, 24296, 28235, 24361, 36276, 32772, + /* 14430 */ 35067, 35189, 27301, 30855, 24852, 22452, 35211, 35237, 35316, 25500, 35270, 23405, 24304, 35304, 29362, + /* 14445 */ 24036, 23114, 35332, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 35368, 28823, 23920, 32336, 35405, + /* 14460 */ 20141, 24569, 31691, 35421, 35479, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14475 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14490 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14505 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14520 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14535 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14550 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14565 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14580 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35944, 22795, 21605, + /* 14595 */ 33647, 35877, 35513, 30962, 35529, 34073, 35557, 24035, 24035, 20405, 31107, 23114, 23114, 23114, 35590, + /* 14610 */ 34713, 23511, 23511, 23511, 35641, 19803, 29408, 32937, 25298, 24035, 35657, 23115, 27849, 24760, 35679, + /* 14625 */ 26205, 22468, 23511, 35700, 24907, 24901, 35075, 31893, 34980, 24035, 24035, 24035, 24035, 23113, 35009, + /* 14640 */ 23114, 23114, 23114, 28618, 35716, 30970, 23511, 23511, 23511, 34585, 23215, 24035, 24035, 24035, 24036, + /* 14655 */ 35735, 23114, 23114, 23114, 27105, 35756, 35790, 23511, 23511, 23511, 35254, 35446, 24035, 24035, 31223, + /* 14670 */ 35809, 23114, 23114, 23036, 36825, 35830, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, + /* 14685 */ 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 31031, 20355, 19872, 33903, + /* 14700 */ 23266, 24036, 23114, 28686, 19829, 26577, 26597, 20211, 23008, 23424, 20208, 24711, 31065, 24486, 26578, + /* 14715 */ 27685, 20141, 19773, 35851, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14730 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14745 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14760 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14775 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14790 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14805 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14820 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14835 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36307, 19288, + /* 14850 */ 21605, 35494, 19702, 32618, 33437, 31507, 29939, 25117, 24035, 27939, 24036, 27869, 23114, 26829, 23114, + /* 14865 */ 22420, 23494, 23511, 33132, 23511, 28306, 19803, 24035, 34832, 24035, 24035, 26576, 23114, 25153, 23114, + /* 14880 */ 23114, 33811, 22468, 23511, 23511, 35911, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, + /* 14895 */ 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, + /* 14910 */ 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, + /* 14925 */ 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, + /* 14940 */ 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, + /* 14955 */ 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, + /* 14970 */ 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 14985 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15000 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15015 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15030 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15045 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15060 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15075 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15090 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35929, + /* 15105 */ 19288, 21605, 25860, 23112, 36185, 23511, 36201, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, + /* 15120 */ 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, + /* 15135 */ 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 26748, 24035, 24035, 24035, 24035, 24035, + /* 15150 */ 36249, 23114, 23114, 23114, 23114, 28618, 28835, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 27151, + /* 15165 */ 24035, 26760, 23114, 27989, 23114, 23114, 36268, 20271, 23511, 24436, 23511, 29703, 30562, 24035, 24035, + /* 15180 */ 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, + /* 15195 */ 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, + /* 15210 */ 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, + /* 15225 */ 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15240 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15255 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15270 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15285 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15300 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15315 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15330 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15345 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15360 */ 36292, 19288, 21605, 36503, 21922, 32618, 34534, 31507, 36522, 24035, 33793, 24035, 35864, 23114, 23114, + /* 15375 */ 36555, 23417, 22420, 23511, 23511, 36574, 26020, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, + /* 15390 */ 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 36592, 24035, 24035, 36625, 24035, + /* 15405 */ 24035, 23113, 23114, 32961, 23114, 23114, 29618, 29700, 23511, 29086, 23511, 23511, 34585, 20402, 36644, + /* 15420 */ 24035, 24035, 24036, 29740, 23114, 23114, 23114, 29065, 36663, 31527, 23511, 23511, 23511, 30562, 24035, + /* 15435 */ 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, + /* 15450 */ 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, + /* 15465 */ 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, + /* 15480 */ 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, + /* 15495 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15510 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15525 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15540 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15555 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15570 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15585 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15600 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15615 */ 19058, 36079, 19288, 21605, 31451, 23112, 36684, 23511, 36700, 29939, 24035, 24035, 24035, 30185, 23114, + /* 15630 */ 23114, 23114, 27526, 22420, 23511, 23511, 23511, 32865, 28306, 19803, 36743, 24035, 27017, 24035, 26576, + /* 15645 */ 27535, 23114, 31432, 23114, 33811, 22468, 33271, 23511, 32128, 23511, 23512, 24694, 24035, 27196, 24035, + /* 15660 */ 24035, 24035, 23113, 32459, 23114, 23114, 23114, 28618, 29700, 33829, 36762, 23511, 23511, 34585, 20402, + /* 15675 */ 24035, 36746, 24035, 29722, 23114, 23114, 34437, 23114, 34907, 20271, 23511, 23511, 18801, 23511, 23206, + /* 15690 */ 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 36837, 24035, 24035, + /* 15705 */ 33739, 23114, 23114, 25094, 23511, 23261, 23628, 24035, 36780, 23111, 24073, 19874, 27078, 35344, 19830, + /* 15720 */ 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, + /* 15735 */ 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, + /* 15750 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15765 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15780 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15795 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15810 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15825 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15840 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15855 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 15870 */ 19058, 19058, 22720, 19288, 36799, 36866, 17466, 36890, 36864, 21991, 22211, 22987, 17556, 17575, 22288, + /* 15885 */ 17486, 17509, 17525, 18373, 17631, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, + /* 15900 */ 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, + /* 15915 */ 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, + /* 15930 */ 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, + /* 15945 */ 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, + /* 15960 */ 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, + /* 15975 */ 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, + /* 15990 */ 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, + /* 16005 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16020 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16035 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16050 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16065 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16080 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16095 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16110 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16125 */ 19058, 19058, 19058, 22705, 19288, 19457, 36866, 17466, 36890, 36866, 19375, 22971, 22987, 17556, 17575, + /* 16140 */ 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, + /* 16155 */ 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, + /* 16170 */ 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, + /* 16185 */ 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, + /* 16200 */ 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, + /* 16215 */ 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, + /* 16230 */ 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, + /* 16245 */ 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, + /* 16260 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16275 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16290 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16305 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16320 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16335 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16350 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16365 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16380 */ 19058, 19058, 19058, 19058, 36124, 19288, 36951, 36866, 17466, 36890, 36866, 21991, 22404, 22987, 17556, + /* 16395 */ 17575, 22288, 17486, 17509, 17525, 18373, 18567, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, + /* 16410 */ 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36979, 36995, 36867, 19404, 20299, 36866, 17647, 17862, + /* 16425 */ 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, + /* 16440 */ 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, + /* 16455 */ 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, + /* 16470 */ 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, + /* 16485 */ 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, + /* 16500 */ 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, + /* 16515 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16530 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16545 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16560 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16575 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16590 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16605 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16620 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16635 */ 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, + /* 16650 */ 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18027, 22984, 17553, 17572, 22285, 18462, 17990, 18622, + /* 16665 */ 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, + /* 16680 */ 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, + /* 16695 */ 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, + /* 16710 */ 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, + /* 16725 */ 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, + /* 16740 */ 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, + /* 16755 */ 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, + /* 16770 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16785 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16800 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16815 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16830 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16845 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16860 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16875 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 16890 */ 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 21529, 24035, 23112, 23033, 23511, 31507, 25377, + /* 16905 */ 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 37040, 23511, 23511, 23511, 23511, 28086, 19803, + /* 16920 */ 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 37079, 23511, 23511, 23511, 23511, + /* 16935 */ 23512, 34766, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, + /* 16950 */ 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, + /* 16965 */ 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, + /* 16980 */ 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, + /* 16995 */ 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, + /* 17010 */ 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, + /* 17025 */ 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17040 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17055 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17070 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17085 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17100 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17115 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17130 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17145 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 37112, 37160, 18469, 36866, 17466, 36890, 36866, 17656, + /* 17160 */ 37174, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18537, 22984, 17553, 17572, 22285, 18780, + /* 17175 */ 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, + /* 17190 */ 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, + /* 17205 */ 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, + /* 17220 */ 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, + /* 17235 */ 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, + /* 17250 */ 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, + /* 17265 */ 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, + /* 17280 */ 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17295 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17310 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17325 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17340 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17355 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17370 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17385 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, + /* 17400 */ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, + /* 17416 */ 127011, 110630, 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 0, 0, 57366, 0, 24, 24, 24, 0, 28, + /* 17435 */ 28, 28, 28, 102432, 0, 0, 127011, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, + /* 17453 */ 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2170880, 2170880, + /* 17466 */ 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17477 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2576384, 2215936, 2215936, 2215936, + /* 17488 */ 2416640, 2424832, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17499 */ 2215936, 2215936, 2215936, 2543616, 2215936, 2215936, 2215936, 2215936, 2215936, 2629632, 2215936, + /* 17510 */ 2617344, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2691072, 2215936, 2707456, 2215936, + /* 17521 */ 2715648, 2215936, 2723840, 2764800, 2215936, 2215936, 2797568, 2215936, 2822144, 2215936, 2215936, + /* 17532 */ 2854912, 2215936, 2215936, 2215936, 2912256, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17543 */ 2215936, 0, 0, 0, 180224, 0, 0, 2174976, 0, 0, 2170880, 2617344, 2170880, 2170880, 2170880, 2170880, + /* 17559 */ 2170880, 2170880, 2691072, 2170880, 2707456, 2170880, 2715648, 2170880, 2723840, 2764800, 2170880, + /* 17570 */ 2170880, 2797568, 2170880, 2170880, 2797568, 2170880, 2822144, 2170880, 2170880, 2854912, 2170880, + /* 17581 */ 2170880, 2170880, 2912256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, + /* 17592 */ 2215936, 2215936, 2215936, 2609152, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2654208, + /* 17603 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 184599, 280, 0, 2174976, 0, 0, + /* 17619 */ 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17630 */ 2215936, 2215936, 2215936, 0, 544, 0, 546, 0, 0, 2179072, 0, 0, 0, 552, 0, 0, 2170880, 2170880, 2170880, + /* 17649 */ 3117056, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 17660 */ 2170880, 2170880, 0, 0, 0, 2158592, 2158592, 2232320, 2232320, 0, 2240512, 2240512, 0, 0, 0, 644, 0, 0, 0, + /* 17679 */ 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, 2170880, 2170880, 2170880, + /* 17692 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, + /* 17703 */ 2215936, 2215936, 2711552, 2170880, 2170880, 2170880, 2170880, 2170880, 2760704, 2768896, 2789376, + /* 17714 */ 2813952, 2170880, 2170880, 2170880, 2875392, 2904064, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 17725 */ 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17736 */ 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, + /* 17748 */ 167936, 0, 0, 0, 0, 2174976, 0, 0, 2215936, 2215936, 2514944, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17764 */ 2215936, 2215936, 2215936, 2592768, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 32768, + /* 17776 */ 0, 0, 0, 0, 0, 2174976, 32768, 0, 2633728, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2711552, + /* 17792 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2760704, 2768896, 2789376, 2813952, 2215936, 2215936, + /* 17803 */ 2215936, 2875392, 2904064, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 17814 */ 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 0, 65819, 2215936, 2215936, 3031040, 2215936, 3055616, + /* 17830 */ 2215936, 2215936, 2215936, 2215936, 3092480, 2215936, 2215936, 3125248, 2215936, 2215936, 2215936, + /* 17841 */ 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2170880, 2170880, 2494464, 2170880, 2170880, 0, 0, + /* 17854 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 17872 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, + /* 17885 */ 2170880, 2170880, 2170880, 2170880, 2445312, 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, + /* 17896 */ 2170880, 2170880, 2170880, 2523136, 2170880, 2170880, 2641920, 2170880, 2170880, 2170880, 2699264, + /* 17907 */ 2170880, 2727936, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2879488, 2170880, + /* 17918 */ 2916352, 2170880, 2170880, 2170880, 2879488, 2170880, 2916352, 2170880, 2170880, 2170880, 2170880, + /* 17929 */ 2170880, 2170880, 2170880, 2170880, 2170880, 3026944, 2170880, 2170880, 3063808, 2170880, 2170880, + /* 17940 */ 3112960, 2170880, 2170880, 3133440, 2170880, 2170880, 3112960, 2170880, 2170880, 3133440, 2170880, + /* 17951 */ 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 2379776, 2215936, 2523136, + /* 17962 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2596864, 2215936, 2621440, 2215936, + /* 17973 */ 2215936, 2641920, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 548, 0, 0, 0, 0, 287, 2170880, 0, 2170880, + /* 17993 */ 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 18004 */ 2170880, 2170880, 2170880, 3117056, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2699264, + /* 18015 */ 2215936, 2727936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2879488, 2215936, + /* 18026 */ 2916352, 2215936, 2215936, 0, 0, 0, 0, 188416, 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 0, 2171019, + /* 18045 */ 2171019, 2171019, 2400395, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 18056 */ 2171019, 2171019, 2171019, 3031179, 2171019, 3055755, 2171019, 2171019, 2215936, 3133440, 2215936, + /* 18067 */ 2215936, 2215936, 3162112, 2215936, 2215936, 3182592, 3186688, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18085 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2523275, 2171019, 2171019, 2171019, 2171019, + /* 18096 */ 2171019, 2171019, 2171019, 2597003, 2171019, 2621579, 2170880, 2170880, 2170880, 3162112, 2170880, + /* 18107 */ 2170880, 3182592, 3186688, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, + /* 18121 */ 53264, 0, 18, 18, 24, 24, 0, 4337664, 28, 2170880, 2170880, 2170880, 2629632, 2170880, 2170880, 2170880, + /* 18137 */ 2170880, 2719744, 2744320, 2170880, 2170880, 2170880, 2834432, 2838528, 2170880, 2908160, 2170880, + /* 18148 */ 2170880, 2936832, 2215936, 2215936, 2215936, 2215936, 2719744, 2744320, 2215936, 2215936, 2215936, + /* 18159 */ 2834432, 2838528, 2215936, 2908160, 2215936, 2215936, 2936832, 2215936, 2215936, 2985984, 2215936, + /* 18170 */ 2994176, 2215936, 2215936, 3014656, 2215936, 3059712, 3076096, 3088384, 2215936, 2215936, 2215936, + /* 18181 */ 2215936, 2215936, 2215936, 2215936, 2445312, 2215936, 2465792, 2473984, 2215936, 2215936, 2215936, + /* 18192 */ 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, + /* 18205 */ 2171166, 2171166, 2171166, 2171166, 2171019, 2171019, 2494603, 2171019, 2171019, 2215936, 2215936, + /* 18216 */ 2215936, 3215360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, 2170880, + /* 18236 */ 2985984, 2170880, 2994176, 2170880, 2170880, 3016168, 2170880, 3059712, 3076096, 3088384, 2170880, + /* 18247 */ 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 124, 124, 0, 128, 128, 2170880, 2170880, + /* 18264 */ 2170880, 3215360, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2486272, + /* 18276 */ 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2535424, 2539520, 2170880, 2170880, 2588672, + /* 18287 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2920448, + /* 18298 */ 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2170880, 3051520, 2170880, 2170880, + /* 18309 */ 2170880, 2170880, 2170880, 2170880, 3170304, 0, 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, + /* 18321 */ 2170880, 2170880, 3170304, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 18332 */ 2486272, 2215936, 2215936, 2506752, 2215936, 2215936, 2215936, 2535424, 2539520, 2215936, 2215936, + /* 18343 */ 2588672, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, + /* 18358 */ 2174976, 136, 0, 2215936, 2215936, 2920448, 2215936, 2215936, 2215936, 2990080, 2215936, 2215936, 2215936, + /* 18371 */ 2215936, 3051520, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3108864, 2215936, + /* 18382 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3026944, 2215936, 2215936, 3063808, + /* 18393 */ 2215936, 2215936, 3112960, 2215936, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2170880, 2170880, + /* 18408 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2453504, 2457600, 2170880, 2170880, + /* 18419 */ 2170880, 2486272, 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2537049, 2539520, 2170880, + /* 18430 */ 2170880, 2588672, 2170880, 2170880, 2170880, 1508, 2170880, 2170880, 2170880, 1512, 2170880, 2920448, + /* 18442 */ 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2461696, 2170880, 2170880, 2170880, + /* 18453 */ 2510848, 2170880, 2170880, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 18, 0, + /* 18466 */ 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2686976, 2748416, + /* 18487 */ 2170880, 2170880, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 18498 */ 3121152, 2170880, 2170880, 3145728, 3158016, 3166208, 2170880, 2420736, 2428928, 2170880, 2478080, + /* 18509 */ 2170880, 2170880, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2646016, 2670592, 0, 0, + /* 18523 */ 3145728, 3158016, 3166208, 2387968, 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, + /* 18534 */ 2215936, 2215936, 2510848, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 0, 2170880, + /* 18553 */ 2215936, 2215936, 2580480, 2215936, 2605056, 2637824, 2215936, 2215936, 2686976, 2748416, 2215936, + /* 18564 */ 2215936, 2215936, 2924544, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 286, 2170880, + /* 18583 */ 2215936, 2215936, 2215936, 2215936, 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, + /* 18594 */ 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, + /* 18605 */ 2170880, 2170880, 1625, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 647, 2170880, + /* 18617 */ 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 18628 */ 2170880, 2170880, 2576384, 2170880, 2170880, 2170880, 2170880, 2170880, 2609152, 2170880, 2170880, + /* 18639 */ 2686976, 0, 0, 2748416, 2170880, 2170880, 0, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, + /* 18652 */ 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 0, 0, 28, 28, 2170880, 3141632, 2215936, 2420736, 2428928, + /* 18669 */ 2215936, 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, + /* 18680 */ 2670592, 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, + /* 18691 */ 2215936, 3141632, 2170880, 2420736, 2428928, 2752512, 2756608, 0, 2846720, 2961408, 2170880, 2998272, + /* 18703 */ 2170880, 3010560, 2170880, 2170880, 2170880, 3141632, 2170880, 2170880, 2490368, 2215936, 2490368, + /* 18714 */ 2215936, 2215936, 2215936, 2547712, 2555904, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 18725 */ 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 245760, 0, 3129344, 2170880, 2170880, 2490368, + /* 18741 */ 2170880, 2170880, 2170880, 0, 0, 2547712, 2555904, 2170880, 2170880, 2170880, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18760 */ 2220032, 0, 0, 45056, 0, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, + /* 18774 */ 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, + /* 18795 */ 0, 0, 0, 0, 0, 1482, 97, 97, 97, 97, 97, 97, 97, 1354, 97, 97, 97, 97, 97, 97, 97, 97, 1148, 97, 97, 97, + /* 18821 */ 97, 97, 97, 97, 2584576, 2170880, 2170880, 1512, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 18836 */ 2441216, 2170880, 2527232, 2170880, 2600960, 2170880, 2850816, 2170880, 2170880, 2170880, 3022848, + /* 18847 */ 2215936, 2441216, 2215936, 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, + /* 18862 */ 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 2215936, 3022848, 2170880, 2441216, 2170880, 2527232, 0, 0, + /* 18879 */ 2170880, 2600960, 2170880, 0, 2850816, 2170880, 2170880, 2170880, 2170880, 2170880, 2523136, 2170880, + /* 18891 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2596864, 2170880, 2621440, 2170880, 2170880, + /* 18902 */ 2641920, 2170880, 2170880, 2170880, 3022848, 2170880, 2519040, 2170880, 2170880, 2170880, 2170880, + /* 18913 */ 2170880, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, + /* 18924 */ 2453504, 2457600, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2514944, 2170880, 2170880, + /* 18935 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2519040, 0, 2024, + /* 18947 */ 2170880, 2170880, 0, 2170880, 2170880, 2170880, 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, + /* 18959 */ 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396160, 0, 2024, 2170880, 2170880, 2170880, + /* 18971 */ 2170880, 3018752, 2170880, 2650112, 2965504, 2170880, 2215936, 2650112, 2965504, 2215936, 0, 0, 2170880, + /* 18984 */ 2650112, 2965504, 2170880, 2551808, 2170880, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, + /* 19001 */ 106539, 41098, 45, 45, 141, 45, 45, 67, 67, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 67, 67, 67, 67, + /* 19024 */ 1288, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 0, 2551808, 2170880, 2170880, + /* 19045 */ 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2977792, 2977792, 0, 0, + /* 19060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 29, 102432, 127011, 110630, + /* 19084 */ 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 49172, 0, 0, 0, 24, 24, 24, 0, 28, 28, 28, 28, + /* 19104 */ 102432, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 0, 0, 0, 2220032, + /* 19126 */ 110630, 0, 0, 0, 114730, 106539, 136, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, + /* 19142 */ 4256099, 4256099, 24, 24, 0, 28, 28, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, + /* 19156 */ 2170880, 0, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 2170880, 2547712, + /* 19168 */ 2555904, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, + /* 19179 */ 2215936, 2215936, 543, 543, 545, 545, 0, 0, 2179072, 0, 550, 551, 551, 0, 287, 2171166, 2171166, 18, 0, 0, + /* 19199 */ 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 645, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, + /* 19224 */ 149, 2584576, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2441216, + /* 19237 */ 2170880, 2527232, 2170880, 2600960, 2519040, 0, 0, 2170880, 2170880, 0, 2170880, 2170880, 2170880, + /* 19250 */ 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, 2396160, 2215936, 2215936, 2215936, 2215936, + /* 19261 */ 3018752, 2396160, 0, 0, 2170880, 2170880, 2170880, 2170880, 3018752, 2170880, 2650112, 2965504, 53264, 18, + /* 19275 */ 49172, 57366, 24, 155648, 28, 102432, 155648, 155687, 114730, 106539, 0, 0, 155648, 53264, 18, 18, 49172, + /* 19292 */ 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 0, 0, 0, 0, 2220032, 0, 94208, 0, 0, 114730, 106539, + /* 19315 */ 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 208896, 18, 278528, 24, 24, 0, 28, 28, + /* 19332 */ 53264, 18, 159765, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 18, 49172, + /* 19351 */ 0, 57366, 0, 24, 24, 24, 0, 28, 139394, 28, 28, 102432, 131, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, + /* 19373 */ 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 32768, 53264, 0, 18, 18, 24, 24, 0, 28, + /* 19390 */ 28, 0, 546, 0, 0, 2183168, 0, 0, 552, 832, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, + /* 19407 */ 2170880, 2170880, 2609152, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2654208, 2170880, + /* 19418 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, + /* 19429 */ 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 1084, 0, 1088, 0, 1092, 0, 0, 0, 0, 0, 41606, 0, + /* 19448 */ 0, 0, 0, 45, 45, 45, 45, 45, 937, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, + /* 19470 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 644, 0, 0, 0, + /* 19485 */ 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 19496 */ 2215936, 2215936, 2215936, 0, 826, 0, 828, 0, 0, 2183168, 0, 0, 830, 0, 2170880, 2170880, 2170880, + /* 19513 */ 2400256, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2170880, 2170880, 2633728, + /* 19524 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2711552, 2170880, 2170880, 2170880, 2170880, + /* 19535 */ 2170880, 2760704, 53264, 18, 49172, 57366, 24, 8192, 28, 172066, 172032, 110630, 172066, 106539, 0, 0, + /* 19551 */ 172032, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 16384, 28, 28, 28, 28, 102432, 0, 98304, 0, 0, + /* 19572 */ 2220032, 110630, 0, 0, 0, 0, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 19587 */ 2170880, 3198976, 2170880, 0, 0, 45056, 0, 0, 0, 53264, 18, 49172, 57366, 25, 8192, 30, 102432, 0, 110630, + /* 19606 */ 114730, 106539, 0, 0, 176219, 53264, 18, 18, 49172, 0, 57366, 0, 124, 124, 124, 0, 128, 128, 128, 128, + /* 19626 */ 102432, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 546, 0, 0, 2183168, + /* 19648 */ 0, 65536, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2646016, + /* 19661 */ 2670592, 2752512, 2756608, 2846720, 2961408, 2170880, 2998272, 2170880, 3010560, 2170880, 2170880, + /* 19672 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0, + /* 19690 */ 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 143, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, + /* 19713 */ 67, 67, 67, 67, 67, 67, 1824, 67, 1826, 67, 67, 67, 67, 17, 18, 49172, 57366, 24, 8192, 28, 102432, 0, + /* 19735 */ 110630, 114730, 106539, 0, 0, 32768, 120, 121, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, + /* 19757 */ 102432, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 2179072, 548, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, + /* 19778 */ 0, 97, 97, 97, 45, 45, 45, 45, 2033, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 369, 0, + /* 19805 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 978, 0, 546, 70179, 0, 2183168, 0, 0, 552, 0, + /* 19830 */ 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1013, 67, 67, 67, + /* 19856 */ 67, 67, 67, 67, 67, 67, 67, 473, 67, 67, 67, 67, 483, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 19881 */ 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 19907 */ 97, 97, 1359, 97, 97, 97, 67, 67, 1584, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, + /* 19932 */ 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, + /* 19957 */ 45, 45, 45, 1668, 45, 45, 45, 45, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 774, + /* 19982 */ 67, 67, 1713, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 1723, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, + /* 20007 */ 1538, 45, 45, 45, 45, 45, 1559, 45, 45, 1561, 45, 45, 45, 45, 45, 45, 45, 687, 45, 45, 45, 45, 45, 45, 45, + /* 20032 */ 45, 448, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1771, 1772, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, + /* 20057 */ 97, 0, 0, 0, 97, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 1827, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, + /* 20085 */ 97, 1614, 97, 97, 97, 97, 97, 603, 97, 97, 605, 97, 97, 608, 97, 97, 97, 97, 0, 1532, 45, 45, 45, 45, 45, + /* 20110 */ 45, 45, 45, 45, 45, 450, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 1839, 97, 97, 97, 97, 0, 0, + /* 20137 */ 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 1883, 97, 1885, 97, 0, + /* 20162 */ 1888, 0, 97, 97, 0, 97, 97, 1848, 97, 97, 97, 97, 1852, 45, 45, 45, 45, 45, 45, 45, 384, 391, 45, 45, 45, + /* 20187 */ 45, 45, 45, 45, 385, 45, 45, 45, 45, 45, 45, 45, 45, 1237, 45, 45, 45, 45, 45, 45, 67, 0, 97, 97, 97, 97, + /* 20213 */ 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1951, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, + /* 20240 */ 67, 67, 1963, 97, 2023, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 1994, 67, 1995, 67, 67, + /* 20265 */ 67, 67, 67, 67, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 0, 0, 0, 0, 2220032, 110630, 0, + /* 20294 */ 0, 0, 114730, 106539, 137, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2793472, + /* 20307 */ 2805760, 2170880, 2830336, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 20318 */ 2170880, 2170880, 2170880, 2170880, 3031040, 2170880, 3055616, 2170880, 2170880, 67, 67, 37139, 37139, + /* 20331 */ 24853, 24853, 0, 0, 281, 549, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2031, + /* 20354 */ 2032, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1769, 67, 0, 546, 70179, 549, 549, 0, 0, + /* 20378 */ 552, 0, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1858, 45, 641, 0, 0, 0, 0, 41606, 926, 0, 0, + /* 20404 */ 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 456, 67, 0, 0, 0, 1313, 0, 0, 0, 1096, 1319, 0, + /* 20431 */ 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1110, 97, 97, 97, 97, 67, 67, 67, 67, 1301, 1476, 0, 0, 0, 0, + /* 20457 */ 1307, 1478, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1486, 97, 1487, 97, 1313, 1480, 0, 0, 0, 0, 1319, 0, + /* 20483 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1476, 0, 1478, 0, 1480, 0, + /* 20508 */ 97, 97, 97, 97, 97, 97, 97, 45, 1853, 45, 1855, 45, 45, 45, 45, 53264, 18, 49172, 57366, 26, 8192, 31, + /* 20530 */ 102432, 0, 110630, 114730, 106539, 0, 0, 225368, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, + /* 20548 */ 114730, 106539, 0, 0, 32768, 53264, 18, 18, 49172, 163840, 57366, 0, 24, 24, 229376, 0, 28, 28, 28, + /* 20567 */ 229376, 102432, 0, 0, 0, 0, 2220167, 110630, 0, 0, 0, 114730, 106539, 0, 2171019, 2171019, 2171019, + /* 20584 */ 2171019, 2592907, 2171019, 2171019, 2171019, 2171019, 2633867, 2171019, 2171019, 2171019, 2171019, + /* 20595 */ 2171019, 2171019, 2654347, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 20606 */ 2171019, 2171019, 2171019, 3117195, 2171019, 2171019, 2171019, 2171019, 2240641, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20623 */ 368, 0, 140, 2171019, 2171019, 2171019, 2416779, 2424971, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 20636 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2617483, 2171019, 2171019, + /* 20647 */ 2642059, 2171019, 2171019, 2171019, 2699403, 2171019, 2728075, 2171019, 2171019, 2171019, 2171019, + /* 20658 */ 2171019, 2171019, 2171019, 3215499, 2215936, 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, + /* 20669 */ 2215936, 2171019, 2822283, 2171019, 2171019, 2855051, 2171019, 2171019, 2171019, 2912395, 2171019, + /* 20680 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3002507, 2171019, 2171019, 2215936, 2215936, + /* 20691 */ 2494464, 2215936, 2215936, 2215936, 2171166, 2171166, 2416926, 2425118, 2171166, 2171166, 2171166, + /* 20702 */ 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 20713 */ 2171166, 2171166, 2576670, 2171166, 2617630, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 20724 */ 2691358, 2171166, 2707742, 2171166, 2715934, 2171166, 2724126, 2765086, 2171166, 2171166, 2797854, + /* 20735 */ 2171166, 2822430, 2171166, 2171166, 2855198, 2171166, 2171166, 2171166, 2912542, 2171166, 2171166, + /* 20746 */ 2171166, 2171166, 2171166, 2171166, 2171166, 2793758, 2806046, 2171166, 2830622, 2171166, 2171166, + /* 20757 */ 2171166, 2171166, 2171166, 2171166, 2171166, 3109150, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 20768 */ 2171166, 2171166, 2171166, 2171166, 2543902, 2171166, 2171166, 2171166, 2171166, 2171166, 2629918, + /* 20779 */ 2793611, 2805899, 2171019, 2830475, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 20790 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 0, 546, 0, 0, 2183168, 0, + /* 20805 */ 0, 552, 0, 2171166, 2171166, 2171166, 2400542, 2171166, 2171166, 2171166, 0, 2171166, 2171166, 2171166, 0, + /* 20820 */ 2171166, 2920734, 2171166, 2171166, 2171166, 2990366, 2171166, 2171166, 2171166, 2171166, 3117342, + /* 20831 */ 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 20842 */ 2171166, 0, 53264, 0, 18, 18, 4329472, 2232445, 0, 2240641, 4337664, 2711691, 2171019, 2171019, 2171019, + /* 20857 */ 2171019, 2171019, 2760843, 2769035, 2789515, 2814091, 2171019, 2171019, 2171019, 2875531, 2904203, + /* 20868 */ 2171019, 2171019, 3092619, 2171019, 2171019, 3125387, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 20879 */ 2171019, 2171019, 2171019, 2171019, 3199115, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 20890 */ 2215936, 2215936, 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 20901 */ 2215936, 2793472, 2805760, 2215936, 2830336, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 20912 */ 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 20925 */ 2170880, 2170880, 2170880, 2494464, 2170880, 2170880, 2171166, 2171166, 2634014, 2171166, 2171166, + /* 20936 */ 2171166, 2171166, 2171166, 2171166, 2711838, 2171166, 2171166, 2171166, 2171166, 2171166, 2760990, + /* 20947 */ 2769182, 2789662, 2814238, 2171166, 2171166, 2171166, 2875678, 2904350, 2171166, 2171166, 2171166, + /* 20958 */ 2171166, 2171166, 2171166, 2171166, 2171166, 3199262, 2171166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379915, + /* 20975 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2445451, 2171019, 2465931, 2474123, + /* 20986 */ 2171019, 2171019, 3113099, 2171019, 2171019, 3133579, 2171019, 2171019, 2171019, 3162251, 2171019, + /* 20997 */ 2171019, 3182731, 3186827, 2171019, 2379776, 2879627, 2171019, 2916491, 2171019, 2171019, 2171019, + /* 21008 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3027083, 2171019, 2171019, 3063947, 2699550, + /* 21019 */ 2171166, 2728222, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2879774, 2171166, + /* 21030 */ 2916638, 2171166, 2171166, 2171166, 2171166, 2171166, 2609438, 2171166, 2171166, 2171166, 2171166, + /* 21041 */ 2171166, 2171166, 2654494, 2171166, 2171166, 2171166, 2171166, 2171166, 2445598, 2171166, 2466078, + /* 21052 */ 2474270, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2523422, 2171019, 2437259, 2171019, + /* 21063 */ 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2543755, + /* 21074 */ 2171019, 2171019, 2171019, 2584715, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21085 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2908299, 2171019, + /* 21096 */ 2171019, 2936971, 2171019, 2171019, 2986123, 2171019, 2994315, 2171019, 2171019, 3014795, 2171019, + /* 21107 */ 3059851, 3076235, 3088523, 2171166, 2171166, 2986270, 2171166, 2994462, 2171166, 2171166, 3014942, + /* 21118 */ 2171166, 3059998, 3076382, 3088670, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3027230, + /* 21129 */ 2171166, 2171166, 3064094, 2171166, 2171166, 3113246, 2171166, 2171166, 3133726, 2506891, 2171019, + /* 21140 */ 2171019, 2171019, 2535563, 2539659, 2171019, 2171019, 2588811, 2171019, 2171019, 2171019, 2171019, + /* 21151 */ 2171019, 2171019, 2171019, 2691211, 2171019, 2707595, 2171019, 2715787, 2171019, 2723979, 2764939, + /* 21162 */ 2171019, 2171019, 2797707, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, + /* 21177 */ 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2453790, 2457886, 2171166, 2171166, 2171166, + /* 21188 */ 2486558, 2171166, 2171166, 2507038, 2171166, 2171166, 2171166, 2535710, 2539806, 2171166, 2171166, + /* 21199 */ 2588958, 2171166, 2171166, 2171166, 2171166, 2515230, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 21210 */ 2171166, 2171166, 2171166, 2593054, 2171166, 2171166, 2171166, 2171166, 3051806, 2171166, 2171166, + /* 21221 */ 2171166, 2171166, 2171166, 2171166, 3170590, 0, 2388107, 2392203, 2171019, 2171019, 2433163, 2171019, + /* 21233 */ 2461835, 2171019, 2171019, 2171019, 2510987, 2171019, 2171019, 2171019, 2171019, 2580619, 2171019, + /* 21244 */ 2605195, 2637963, 2171019, 2171019, 2171019, 2920587, 2171019, 2171019, 2171019, 2990219, 2171019, + /* 21255 */ 2171019, 2171019, 2171019, 3051659, 2171019, 2171019, 2171019, 2453643, 2457739, 2171019, 2171019, + /* 21266 */ 2171019, 2171019, 2171019, 2171019, 2515083, 2171019, 2171019, 2171019, 2171019, 2646155, 2670731, + /* 21277 */ 2752651, 2756747, 2846859, 2961547, 2171019, 2998411, 2171019, 3010699, 2171019, 2171019, 2687115, + /* 21288 */ 2748555, 2171019, 2171019, 2171019, 2924683, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21299 */ 2171019, 3121291, 2171019, 2171019, 2171019, 3170443, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 21310 */ 2215936, 2215936, 2215936, 2486272, 2215936, 2215936, 2506752, 3145867, 3158155, 3166347, 2387968, + /* 21321 */ 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, 2215936, 2215936, 2510848, 2215936, + /* 21332 */ 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 553, 2170880, 2215936, 2215936, 2215936, 2215936, + /* 21351 */ 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, 2388254, 2392350, 2171166, 2171166, + /* 21362 */ 2433310, 2171166, 2461982, 2171166, 2171166, 2171166, 2511134, 2171166, 2171166, 0, 2171166, 2171166, + /* 21374 */ 2580766, 2171166, 2605342, 2638110, 2171166, 2171166, 2171166, 2171166, 3031326, 2171166, 3055902, + /* 21385 */ 2171166, 2171166, 2171166, 2171166, 3092766, 2171166, 2171166, 3125534, 2171166, 2171166, 2171166, + /* 21396 */ 3162398, 2171166, 2171166, 3182878, 3186974, 2171166, 0, 0, 0, 2171019, 2171019, 2171019, 2171019, + /* 21409 */ 3109003, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21420 */ 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, 2215936, 2215936, 2171166, 2687262, 0, 0, 2748702, + /* 21433 */ 2171166, 2171166, 0, 2171166, 2924830, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 21445 */ 2597150, 2171166, 2621726, 2171166, 2171166, 2642206, 2171166, 2171166, 2171166, 2171166, 3121438, + /* 21456 */ 2171166, 2171166, 3146014, 3158302, 3166494, 2171019, 2420875, 2429067, 2171019, 2478219, 2171019, + /* 21467 */ 2171019, 2171019, 2171019, 2547851, 2556043, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21478 */ 2171019, 2171019, 2171019, 3129483, 2215936, 2171019, 3141771, 2215936, 2420736, 2428928, 2215936, + /* 21489 */ 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, 2670592, + /* 21500 */ 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, 2215936, + /* 21511 */ 3141632, 2171166, 2421022, 2429214, 2171166, 2478366, 2171166, 2171166, 2171166, 2171166, 0, 0, 2171166, + /* 21524 */ 2171166, 2171166, 2171166, 2646302, 2670878, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 0, 45, 45, + /* 21543 */ 45, 45, 45, 1405, 1406, 45, 45, 45, 45, 1409, 45, 45, 45, 45, 45, 1415, 45, 45, 45, 45, 45, 45, 45, 45, + /* 21567 */ 45, 45, 1238, 45, 45, 45, 45, 67, 2752798, 2756894, 0, 2847006, 2961694, 2171166, 2998558, 2171166, + /* 21583 */ 3010846, 2171166, 2171166, 2171166, 3141918, 2171019, 2171019, 2490507, 3129344, 2171166, 2171166, + /* 21594 */ 2490654, 2171166, 2171166, 2171166, 0, 0, 2547998, 2556190, 2171166, 2171166, 2171166, 0, 0, 0, 0, 37, + /* 21610 */ 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 167, 45, 45, 45, 45, 185, 187, 45, 45, 198, 45, + /* 21632 */ 45, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3129630, 2171019, 2171019, 2171019, 2171019, + /* 21645 */ 2171019, 2171019, 2171019, 2171019, 2576523, 2171019, 2171019, 2171019, 2171019, 2171019, 2609291, + /* 21656 */ 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2171166, + /* 21667 */ 2171166, 2494750, 2171166, 2171166, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, + /* 21686 */ 147, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, + /* 21698 */ 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 3002654, + /* 21713 */ 2171166, 2171166, 2171019, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 21724 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2175257, 0, 0, 2584862, + /* 21741 */ 2171166, 2171166, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171019, 2441355, 2171019, 2527371, + /* 21754 */ 2171019, 2601099, 2171019, 2850955, 2171019, 2171019, 2171019, 3022987, 2215936, 2441216, 2215936, + /* 21765 */ 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, + /* 21783 */ 69632, 287, 2170880, 2215936, 3022848, 2171166, 2441502, 2171166, 2527518, 0, 0, 2171166, 2601246, + /* 21796 */ 2171166, 0, 2851102, 2171166, 2171166, 2171166, 2171166, 2720030, 2744606, 2171166, 2171166, 2171166, + /* 21808 */ 2834718, 2838814, 2171166, 2908446, 2171166, 2171166, 2937118, 3023134, 2171019, 2519179, 2171019, + /* 21819 */ 2171019, 2171019, 2171019, 2171019, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 21830 */ 2171166, 2171166, 2171166, 3215646, 0, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, + /* 21842 */ 2171019, 2486411, 2171019, 2171019, 2171019, 2629771, 2171019, 2171019, 2171019, 2171019, 2719883, + /* 21853 */ 2744459, 2171019, 2171019, 2171019, 2834571, 2838667, 2171019, 2519326, 0, 0, 2171166, 2171166, 0, + /* 21866 */ 2171166, 2171166, 2171166, 2396299, 2171019, 2171019, 2171019, 2171019, 3018891, 2396160, 2215936, + /* 21877 */ 2215936, 2215936, 2215936, 3018752, 2396446, 0, 0, 2171166, 2171166, 2171166, 2171166, 3019038, 2171019, + /* 21890 */ 2650251, 2965643, 2171019, 2215936, 2650112, 2965504, 2215936, 0, 0, 2171166, 2650398, 2965790, 2171166, + /* 21903 */ 2551947, 2171019, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 144, + /* 21922 */ 45, 45, 67, 67, 67, 67, 67, 228, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1929, 97, 97, 97, 97, 0, 0, 0, + /* 21947 */ 2552094, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, + /* 21960 */ 2171166, 2977931, 2977792, 2978078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1321, 97, 131072, 0, 0, + /* 21984 */ 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, + /* 22005 */ 28, 28, 0, 140, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2445312, + /* 22019 */ 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, 2584576, 2170880, 2170880, 2170880, 2170880, + /* 22030 */ 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, + /* 22041 */ 2215936, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 0, 140, 0, + /* 22054 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2215936, + /* 22065 */ 2215936, 2494464, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3215360, 544, 0, 0, 0, 544, 0, + /* 22080 */ 546, 0, 0, 0, 546, 0, 0, 2183168, 0, 0, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, + /* 22098 */ 2170880, 0, 2170880, 2170880, 2170880, 0, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, + /* 22111 */ 2170880, 552, 0, 0, 0, 552, 0, 287, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, + /* 22127 */ 2170880, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 644, 0, 2215936, 2215936, 3170304, 544, 0, 546, 0, + /* 22149 */ 552, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 0, + /* 22164 */ 140, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 249856, 110630, 114730, 106539, 0, 0, 32768, + /* 22182 */ 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 151640, 53264, 18, 18, + /* 22200 */ 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, + /* 22225 */ 2170880, 2416640, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 253952, 110630, 114730, 106539, 0, 0, + /* 22241 */ 32856, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 192512, 53264, 18, + /* 22259 */ 18, 49172, 0, 57366, 0, 2232445, 184320, 2232445, 0, 2240641, 2240641, 184320, 2240641, 102432, 0, 0, 0, + /* 22276 */ 221184, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 22291 */ 2170880, 3108864, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 22302 */ 2170880, 2215936, 0, 0, 0, 45056, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 22320 */ 0, 53264, 0, 18, 18, 24, 24, 0, 127, 127, 53264, 18, 49172, 258071, 24, 8192, 28, 102432, 0, 110630, + /* 22340 */ 114730, 106539, 0, 0, 32768, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, + /* 22358 */ 0, 204800, 53264, 18, 49172, 57366, 24, 27, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, + /* 22377 */ 49172, 57366, 24, 8192, 28, 33, 0, 33, 33, 33, 0, 0, 0, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, + /* 22400 */ 16384, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2170880, 2170880, 2170880, 2416640, 67, 67, + /* 22422 */ 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, + /* 22444 */ 45, 2030, 45, 45, 45, 45, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1699, 67, 67, 67, 67, + /* 22468 */ 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 1358, 97, + /* 22491 */ 97, 97, 641, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 45, 45, 45, 0, + /* 22517 */ 1480, 0, 0, 0, 0, 1319, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 22543 */ 97, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1680, 45, 45, 45, 641, 0, 924, 0, 925, 41606, 0, + /* 22568 */ 0, 0, 0, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 45, 45, 45, 45, 67, 67, 37139, 37139, 24853, 24853, 0, + /* 22591 */ 70179, 282, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 2028, 97, 45, 45, 45, 45, 45, 45, 67, + /* 22615 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1767, 67, 67, 67, 0, 0, 0, 0, 0, 0, 1612, 97, 97, 97, 97, 97, 97, 0, + /* 22642 */ 1785, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1790, 97, 0, 0, 2170880, 2170880, 3051520, 2170880, + /* 22663 */ 2170880, 2170880, 2170880, 2170880, 2170880, 3170304, 241664, 2387968, 2392064, 2170880, 2170880, 2433024, + /* 22675 */ 53264, 19, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 274432, 53264, 18, 49172, + /* 22693 */ 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 270336, 53264, 18, 49172, 57366, 24, 8192, + /* 22711 */ 28, 102432, 0, 110630, 114730, 106539, 0, 0, 1134711, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, + /* 22729 */ 1126440, 1126440, 1126440, 0, 0, 1126400, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 36, 110630, + /* 22745 */ 114730, 106539, 0, 0, 217088, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, + /* 22763 */ 0, 94, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 96, 53264, 18, + /* 22782 */ 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 24666, 53264, 18, 18, 49172, 0, + /* 22800 */ 57366, 0, 24, 24, 24, 126, 28, 28, 28, 28, 102432, 53264, 122, 123, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, + /* 22823 */ 28, 28, 28, 102432, 2170880, 2170880, 4256099, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22847 */ 1319, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1109, 97, 97, 97, 97, 1113, 132, 0, 0, 0, 37, 110630, 0, 0, + /* 22873 */ 0, 114730, 106539, 41098, 45, 45, 45, 146, 150, 45, 45, 45, 45, 45, 175, 45, 180, 45, 186, 45, 189, 45, + /* 22895 */ 45, 203, 67, 256, 67, 67, 270, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 293, 297, + /* 22918 */ 97, 97, 97, 97, 97, 322, 97, 327, 97, 333, 97, 0, 0, 97, 2026, 0, 2027, 97, 97, 45, 45, 45, 45, 45, 45, + /* 22943 */ 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 336, 97, 97, 350, 97, 97, 0, 53264, 0, 18, 18, 24, + /* 22968 */ 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 2424832, 2170880, + /* 22989 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 23000 */ 2170880, 2617344, 2170880, 45, 439, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, + /* 23022 */ 67, 67, 67, 67, 67, 67, 525, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23051 */ 0, 97, 97, 97, 97, 622, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 1527, 369, 648, 45, + /* 23076 */ 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23101 */ 1239, 45, 45, 45, 67, 729, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23127 */ 67, 67, 67, 762, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 0, 0, 0, 1477, 0, 1086, + /* 23153 */ 0, 0, 0, 1479, 0, 1090, 67, 67, 796, 67, 67, 799, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1291, + /* 23178 */ 67, 67, 67, 811, 67, 67, 67, 67, 67, 816, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, 0, 0, + /* 23202 */ 66365, 66365, 552, 833, 97, 97, 97, 97, 97, 97, 97, 97, 1380, 0, 0, 0, 45, 45, 45, 45, 45, 1185, 45, 45, + /* 23226 */ 45, 45, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 45, 45, 45, 45, 67, 97, 97, 844, + /* 23251 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 23278 */ 97, 45, 45, 45, 97, 97, 97, 894, 97, 97, 897, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1382, 45, 45, + /* 23304 */ 45, 97, 909, 97, 97, 97, 97, 97, 914, 97, 97, 97, 97, 97, 97, 97, 923, 67, 67, 1079, 67, 67, 67, 67, 67, + /* 23329 */ 37689, 1085, 25403, 1089, 66365, 1093, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, + /* 23350 */ 148, 1114, 97, 97, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 97, 97, 606, 97, 97, 97, 97, 97, 97, + /* 23375 */ 97, 97, 97, 97, 1173, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, + /* 23400 */ 106539, 41098, 45, 45, 145, 45, 45, 67, 67, 67, 67, 67, 1762, 67, 67, 67, 1766, 67, 67, 67, 67, 67, 67, + /* 23423 */ 528, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1934, 67, 67, 1255, 67, 67, 67, 67, 67, + /* 23448 */ 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 67, 67, 67, 67, 1297, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, + /* 23475 */ 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 97, 97, + /* 23501 */ 97, 97, 97, 97, 97, 33344, 97, 97, 97, 1335, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 23526 */ 97, 0, 97, 97, 1377, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 670, 45, 45, 45, 45, 45, 45, 45, + /* 23552 */ 45, 45, 45, 45, 430, 45, 45, 45, 45, 67, 67, 1438, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23577 */ 67, 67, 1592, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 0, 0, 1305, + /* 23602 */ 0, 0, 0, 0, 0, 1311, 0, 0, 0, 1317, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1322, 97, 97, 1491, 97, 97, 1495, 97, 97, + /* 23630 */ 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 1553, 45, + /* 23655 */ 1504, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 97, 97, 0, 45, 45, 45, 45, 1536, 45, 45, 45, + /* 23680 */ 45, 1540, 45, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1700, 67, 67, 67, + /* 23705 */ 97, 1648, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1541, 0, 97, 97, 97, + /* 23731 */ 97, 0, 1940, 0, 97, 97, 97, 97, 97, 97, 45, 45, 2011, 45, 45, 45, 2015, 67, 67, 2017, 67, 67, 67, 2021, + /* 23755 */ 97, 67, 67, 812, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 97, 97, 910, 97, 97, 97, 97, + /* 23780 */ 97, 97, 97, 97, 97, 97, 97, 923, 0, 0, 0, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 1188, 45, 45, 45, 45, + /* 23805 */ 1414, 45, 45, 45, 1417, 45, 1419, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 453, 45, 45, 67, 67, + /* 23829 */ 67, 67, 1244, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 282, 41098, + /* 23852 */ 65820, 97, 1324, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 930, 45, 45, 45, 45, 97, + /* 23877 */ 97, 97, 97, 1378, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23903 */ 45, 975, 45, 45, 45, 45, 67, 67, 1923, 67, 1925, 67, 67, 1927, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, + /* 23928 */ 97, 1985, 45, 45, 45, 45, 45, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 45, 946, 45, 45, 950, 45, 45, 45, + /* 23953 */ 0, 97, 97, 97, 1939, 0, 0, 0, 97, 1943, 97, 97, 1945, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23979 */ 45, 45, 45, 45, 990, 45, 45, 45, 67, 257, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, + /* 24003 */ 337, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, + /* 24030 */ 2170880, 2170880, 2170880, 2416640, 401, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24051 */ 67, 67, 459, 461, 67, 67, 67, 67, 67, 67, 67, 67, 475, 67, 480, 67, 67, 67, 67, 67, 67, 1054, 67, 67, 67, + /* 24076 */ 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 484, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24101 */ 67, 67, 67, 67, 67, 1459, 67, 67, 97, 556, 558, 97, 97, 97, 97, 97, 97, 97, 97, 572, 97, 577, 97, 97, 0, + /* 24126 */ 0, 1896, 97, 97, 97, 97, 97, 97, 1903, 45, 45, 45, 45, 983, 45, 45, 45, 45, 988, 45, 45, 45, 45, 45, 45, + /* 24151 */ 1195, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1549, 45, 45, 45, 45, 45, 581, 97, 97, 584, 97, 97, 97, 97, + /* 24176 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, + /* 24202 */ 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1004, 45, 45, 45, 67, 67, 67, 749, 67, + /* 24227 */ 67, 67, 67, 67, 67, 67, 67, 67, 761, 67, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 1071, 67, 67, 67, 67, 1076, + /* 24252 */ 794, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 544, 97, 97, 97, 97, 847, 97, 97, 97, + /* 24278 */ 97, 97, 97, 97, 97, 97, 859, 97, 0, 0, 2025, 97, 20480, 97, 97, 2029, 45, 45, 45, 45, 45, 45, 67, 67, 67, + /* 24303 */ 1575, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1775, 67, 67, 67, 97, 97, 97, 97, 892, 893, 97, 97, 97, 97, 97, + /* 24328 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1515, 97, 993, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24353 */ 45, 45, 45, 992, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1607, 67, 67, 97, + /* 24378 */ 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 97, 45, 1556, 1557, 45, 45, 45, 45, 45, + /* 24403 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 696, 45, 1596, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24428 */ 67, 67, 499, 67, 97, 97, 97, 1621, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1346, 97, 97, 97, + /* 24453 */ 97, 1740, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 45, 45, 67, 97, 97, + /* 24478 */ 97, 97, 97, 97, 1836, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1984, 97, 45, 45, 45, 45, 45, 45, 1808, 45, + /* 24504 */ 45, 45, 45, 45, 45, 45, 45, 67, 739, 67, 67, 67, 67, 67, 744, 45, 45, 1909, 45, 45, 45, 45, 45, 45, 45, + /* 24529 */ 67, 1917, 67, 1918, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, + /* 24554 */ 67, 67, 67, 1922, 67, 67, 67, 67, 67, 67, 67, 97, 1930, 97, 1931, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, + /* 24580 */ 45, 45, 45, 45, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 1580, 67, 67, 0, 97, 97, 1938, 97, 0, 0, 0, 97, 97, + /* 24606 */ 97, 97, 97, 97, 45, 45, 45, 699, 45, 45, 45, 704, 45, 45, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, + /* 24632 */ 45, 45, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 2006, 97, 97, 97, 97, 0, 45, 1533, 45, 45, 45, 45, 45, + /* 24658 */ 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 722, 723, 45, 45, 45, 45, 45, 45, 2045, 67, 67, 67, + /* 24683 */ 2047, 0, 0, 97, 97, 97, 2051, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, + /* 24710 */ 409, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1957, 45, 67, 67, 67, 67, 67, 1836, 97, 97, 45, 67, 0, 97, 45, + /* 24735 */ 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 67, 67, 1761, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 494, 67, + /* 24761 */ 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 45, 45, 420, 45, 45, 422, 45, 45, 425, 45, + /* 24786 */ 45, 45, 45, 45, 45, 45, 387, 45, 45, 45, 45, 397, 45, 45, 45, 67, 460, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24812 */ 67, 67, 67, 67, 67, 515, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, + /* 24838 */ 67, 97, 0, 2039, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1426, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24864 */ 1689, 67, 67, 67, 97, 557, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 612, 97, 582, 97, 97, + /* 24889 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 896, 97, 97, 97, 97, 97, 97, 97, 97, + /* 24915 */ 97, 97, 885, 97, 97, 97, 97, 97, 45, 939, 45, 45, 45, 45, 943, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24940 */ 1916, 67, 67, 67, 67, 67, 45, 67, 67, 67, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 1019, 67, 67, 67, 67, 67, + /* 24965 */ 67, 1271, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24990 */ 67, 804, 67, 67, 67, 67, 67, 1077, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, + /* 25015 */ 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, 2170880, 2170880, 2170880, + /* 25028 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2543616, 2170880, 2170880, 2170880, + /* 25039 */ 2170880, 2170880, 2629632, 1169, 97, 1171, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, + /* 25061 */ 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 936, 45, 45, 67, 67, 214, 67, 220, 67, 67, 233, 67, 243, 67, 248, + /* 25086 */ 67, 67, 67, 67, 67, 67, 1298, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1617, 97, 0, 0, 0, 45, + /* 25114 */ 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 45, 45, 45, 67, 67, 1243, 67, 67, 67, + /* 25139 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 1281, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 25164 */ 67, 67, 67, 67, 776, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 907, 45, 1412, 45, + /* 25189 */ 45, 45, 45, 45, 45, 45, 1418, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 690, 45, 45, 695, 45, 45, 67, 67, + /* 25214 */ 67, 67, 67, 1465, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1712, 97, 97, 97, 97, 1741, 97, + /* 25239 */ 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1924, 67, 67, 67, 67, + /* 25265 */ 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1983, 97, 97, 45, 45, 1987, 45, 1988, 45, 0, 97, 97, 97, 97, 0, 0, + /* 25291 */ 0, 1942, 97, 97, 97, 97, 97, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 711, 45, 45, 153, + /* 25316 */ 45, 45, 166, 45, 176, 45, 181, 45, 45, 188, 191, 196, 45, 204, 255, 258, 263, 67, 271, 67, 67, 0, 37139, + /* 25339 */ 24853, 0, 0, 0, 282, 41098, 65820, 97, 97, 97, 294, 97, 300, 97, 97, 313, 97, 323, 97, 328, 97, 97, 335, + /* 25362 */ 338, 343, 97, 351, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 41098, 0, + /* 25388 */ 140, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1411, 67, 67, 486, 67, 67, 67, 67, 67, + /* 25413 */ 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 67, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, + /* 25438 */ 67, 67, 67, 67, 67, 67, 1443, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1263, 67, 67, 67, 67, 67, 97, 97, + /* 25463 */ 583, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1526, 97, 598, 97, 97, 97, 97, 97, 97, 97, + /* 25488 */ 97, 97, 97, 97, 97, 610, 97, 97, 0, 97, 97, 1796, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1744, + /* 25513 */ 45, 45, 45, 369, 0, 651, 45, 653, 45, 654, 45, 656, 45, 45, 45, 660, 45, 45, 45, 45, 1558, 45, 45, 45, 45, + /* 25538 */ 45, 45, 45, 45, 1566, 45, 45, 681, 45, 683, 45, 45, 45, 45, 45, 45, 45, 45, 691, 692, 694, 45, 45, 45, + /* 25562 */ 716, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 709, 45, 45, 712, 45, 714, 45, 45, 45, 718, 45, 45, + /* 25587 */ 45, 45, 45, 45, 45, 726, 45, 45, 45, 733, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 25613 */ 1691, 67, 67, 747, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 1613, 97, + /* 25639 */ 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 67, 764, 67, 67, + /* 25665 */ 67, 67, 768, 67, 770, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1977, 67, 778, 779, 781, + /* 25690 */ 67, 67, 67, 67, 67, 67, 788, 789, 67, 67, 792, 793, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 25715 */ 824, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 836, 97, 838, 97, 839, 97, 841, 97, 97, + /* 25736 */ 97, 845, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 97, 97, 0, 1728, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, + /* 25762 */ 97, 97, 97, 97, 45, 1802, 45, 97, 97, 862, 97, 97, 97, 97, 866, 97, 868, 97, 97, 97, 97, 97, 97, 0, 0, 97, + /* 25788 */ 97, 1788, 97, 97, 97, 0, 0, 97, 97, 876, 877, 879, 97, 97, 97, 97, 97, 97, 886, 887, 97, 97, 890, 891, 97, + /* 25813 */ 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, + /* 25839 */ 1646, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 97, 97, 922, 923, 45, 955, 45, 957, 45, 45, 45, 45, + /* 25864 */ 45, 45, 45, 45, 45, 45, 45, 45, 195, 45, 45, 45, 45, 45, 981, 982, 45, 45, 45, 45, 45, 45, 989, 45, 45, + /* 25889 */ 45, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, + /* 25914 */ 67, 67, 67, 1031, 67, 1033, 67, 67, 67, 67, 67, 67, 67, 817, 819, 67, 67, 67, 67, 67, 37689, 544, 67, + /* 25937 */ 1065, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 1078, 67, 67, 1081, 1082, 67, + /* 25961 */ 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, + /* 25980 */ 2437406, 2171166, 2171166, 97, 1115, 97, 1117, 97, 97, 97, 97, 97, 97, 1125, 97, 1127, 97, 97, 97, 0, 97, + /* 26001 */ 97, 97, 0, 97, 97, 97, 97, 1644, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 1642, 97, 97, 97, 97, 97, 97, 625, + /* 26027 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1159, 97, 97, 97, 97, 97, 97, + /* 26053 */ 97, 97, 97, 97, 97, 97, 97, 1502, 97, 97, 97, 97, 97, 1172, 97, 97, 1175, 1176, 97, 97, 12288, 0, 925, 0, + /* 26077 */ 1179, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 935, 45, 45, 45, 1233, 45, 45, 45, 1236, 45, 45, 45, + /* 26103 */ 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1873, 67, 67, 45, 45, 1218, 45, 45, 45, 1223, 45, 45, 45, 45, 45, + /* 26128 */ 45, 45, 1230, 45, 45, 67, 67, 215, 219, 222, 67, 230, 67, 67, 244, 246, 249, 67, 67, 67, 67, 67, 67, 1882, + /* 26152 */ 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1904, 45, 1905, 45, 67, 67, 67, 67, 67, 1258, 67, + /* 26177 */ 1260, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 67, 67, 67, 1283, 67, 67, 67, 67, 67, + /* 26202 */ 67, 67, 1290, 67, 67, 67, 67, 67, 67, 67, 818, 67, 67, 67, 67, 67, 67, 37689, 544, 67, 67, 1295, 67, 67, + /* 26226 */ 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2174976, 0, 0, 97, 97, 97, 1326, 97, 97, 97, 97, 97, 97, 97, 97, + /* 26253 */ 97, 97, 97, 97, 97, 1514, 97, 97, 97, 97, 97, 1338, 97, 1340, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 26278 */ 1500, 97, 97, 1503, 97, 1363, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 97, 97, 563, 97, 97, + /* 26302 */ 97, 97, 97, 97, 578, 97, 1375, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 685, 45, 45, + /* 26327 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 45, 45, 45, 45, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, + /* 26352 */ 67, 67, 67, 67, 67, 67, 1778, 97, 97, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 26377 */ 609, 97, 97, 97, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 1554, 45, 1570, 1571, 45, + /* 26401 */ 67, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 67, 1061, 67, 67, 1582, + /* 26425 */ 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 1594, 67, 67, 67, 67, 67, 97, 2038, 0, 97, 97, 97, + /* 26450 */ 97, 97, 2044, 45, 45, 45, 995, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 45, 45, 45, 1809, 45, 1811, 45, 45, + /* 26474 */ 45, 45, 45, 67, 1610, 1611, 67, 1476, 0, 1478, 0, 1480, 0, 97, 97, 97, 97, 97, 97, 1618, 1647, 1649, 97, + /* 26497 */ 97, 97, 1652, 97, 1654, 1655, 97, 0, 45, 45, 45, 1658, 45, 45, 67, 67, 216, 67, 67, 67, 67, 234, 67, 67, + /* 26521 */ 67, 67, 252, 254, 1845, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 947, 45, 45, + /* 26546 */ 45, 45, 45, 67, 67, 67, 67, 67, 1881, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1902, 45, 45, 45, + /* 26572 */ 45, 45, 45, 1908, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1921, 67, 67, + /* 26597 */ 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 0, 97, 1937, 97, 97, 1940, 0, 0, 97, 97, 97, + /* 26624 */ 97, 97, 97, 1947, 1948, 1949, 45, 45, 45, 1952, 45, 1954, 45, 45, 45, 45, 1959, 1960, 1961, 67, 67, 67, + /* 26646 */ 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 67, 67, 1964, 67, 1966, 67, + /* 26671 */ 67, 67, 67, 1971, 1972, 1973, 97, 0, 0, 0, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 884, 97, + /* 26696 */ 97, 97, 889, 97, 97, 1978, 97, 0, 0, 1981, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 736, 45, 67, 67, 67, + /* 26721 */ 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 45, 67, 67, 67, 67, 0, 2049, 97, 97, 97, 97, 45, 45, 67, + /* 26747 */ 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 933, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 26774 */ 45, 67, 97, 97, 288, 97, 97, 97, 97, 97, 97, 317, 97, 97, 97, 97, 97, 97, 0, 0, 97, 1787, 97, 97, 97, 97, + /* 26800 */ 0, 0, 45, 45, 378, 45, 45, 45, 45, 45, 390, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 431, 433, 45, 45, + /* 26826 */ 45, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 67, 97, 97, 97, 1144, 97, 97, + /* 26851 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 632, 97, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, + /* 26877 */ 97, 97, 97, 97, 855, 97, 97, 97, 97, 67, 97, 97, 97, 97, 97, 97, 1837, 0, 97, 97, 97, 97, 97, 0, 0, 0, + /* 26903 */ 1897, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, + /* 26928 */ 45, 45, 45, 97, 2010, 45, 45, 45, 45, 45, 45, 2016, 67, 67, 67, 67, 67, 67, 2022, 45, 2046, 67, 67, 67, 0, + /* 26953 */ 0, 2050, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 932, 45, 45, 45, 45, 45, 1222, + /* 26979 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 45, 45, 133, 0, 0, 0, 37, 110630, 0, 0, 0, + /* 27004 */ 114730, 106539, 41098, 45, 45, 45, 45, 701, 702, 45, 45, 705, 706, 45, 45, 45, 45, 45, 45, 703, 45, 45, + /* 27026 */ 45, 45, 45, 45, 45, 45, 45, 719, 45, 45, 45, 45, 45, 725, 45, 45, 45, 369, 649, 45, 45, 45, 45, 45, 45, + /* 27051 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 834, 97, 97, 97, 97, + /* 27074 */ 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1799, 97, 97, 45, 45, 45, + /* 27100 */ 1569, 45, 45, 45, 1572, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1306, 0, 67, 67, 67, 1598, + /* 27125 */ 67, 67, 67, 67, 67, 67, 67, 67, 1606, 67, 67, 1609, 97, 97, 97, 1650, 97, 97, 1653, 97, 97, 97, 0, 45, 45, + /* 27150 */ 1657, 45, 45, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1421, 45, 45, 45, 1703, 67, 67, + /* 27174 */ 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1711, 97, 97, 0, 1895, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, + /* 27200 */ 45, 958, 45, 960, 45, 45, 45, 45, 45, 45, 45, 45, 1913, 45, 45, 1915, 67, 67, 67, 67, 67, 67, 67, 466, 67, + /* 27225 */ 67, 67, 67, 67, 67, 481, 67, 45, 1749, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 45, 45, 45, 45, 173, 45, + /* 27250 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1773, 67, 67, 67, 67, 67, + /* 27276 */ 67, 67, 97, 97, 97, 97, 1886, 0, 0, 0, 97, 97, 67, 2035, 2036, 67, 67, 97, 0, 0, 97, 2041, 2042, 97, 97, + /* 27301 */ 45, 45, 45, 45, 1662, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1397, 45, 45, 45, 45, 151, 45, 45, 45, + /* 27326 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 437, 205, 45, 67, 67, 67, 218, 67, 67, 67, 67, 67, 67, 67, + /* 27352 */ 67, 67, 67, 67, 1047, 67, 67, 67, 67, 97, 97, 97, 97, 298, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 27377 */ 870, 97, 97, 97, 97, 97, 97, 97, 97, 352, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, + /* 27404 */ 365, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1427, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1435, 520, 67, 67, + /* 27428 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1037, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 27454 */ 97, 97, 97, 97, 923, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1919, + /* 27479 */ 67, 1759, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 45, 154, 45, 162, 45, 45, 45, + /* 27504 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 964, 45, 45, 45, 206, 45, 67, 67, 67, 67, 221, 67, 229, 67, 67, 67, + /* 27529 */ 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 67, 785, 67, 67, + /* 27555 */ 67, 67, 67, 67, 67, 67, 802, 67, 67, 67, 807, 67, 67, 67, 97, 97, 97, 97, 353, 97, 0, 53264, 0, 18, 18, + /* 27580 */ 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 402, 45, 45, + /* 27603 */ 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 45, 45, 674, 45, 45, 45, 45, 45, 45, 45, 45, 389, 45, 394, + /* 27628 */ 45, 45, 398, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 447, 45, 45, 45, 454, 45, 45, 67, 67, 67, 67, 67, + /* 27653 */ 67, 67, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 488, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 67, 67, + /* 27678 */ 67, 67, 67, 1774, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, + /* 27705 */ 67, 67, 523, 67, 67, 527, 67, 67, 67, 67, 67, 533, 67, 67, 67, 540, 97, 97, 97, 585, 97, 97, 97, 97, 97, + /* 27730 */ 97, 97, 593, 97, 97, 97, 97, 97, 97, 1784, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, + /* 27757 */ 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 620, 97, 97, 624, 97, 97, 97, 97, 97, 630, 97, 97, 97, 637, 713, 45, + /* 27783 */ 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 45, 45, 45, 1197, 45, 45, 45, 45, 45, 45, 45, 45, 730, 732, + /* 27808 */ 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1581, 67, 45, 67, 67, 67, 67, 1012, 67, 67, + /* 27833 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27858 */ 67, 67, 67, 67, 67, 775, 67, 67, 67, 67, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 479, 67, + /* 27883 */ 67, 67, 67, 67, 67, 1080, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, + /* 27909 */ 287, 0, 2379776, 2170880, 2170880, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 920, + /* 27931 */ 97, 97, 0, 0, 0, 0, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 45, + /* 27957 */ 1219, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 45, 959, 45, 45, 45, 45, 45, 45, 45, 45, 45, 184, + /* 27982 */ 45, 45, 45, 45, 202, 45, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1266, 67, 1268, + /* 28007 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1279, 67, 67, 67, 67, 67, 272, 67, 0, 37139, 24853, 0, 0, + /* 28032 */ 0, 0, 41098, 65820, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1293, 67, 67, 67, 1296, + /* 28056 */ 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 281, 94, 0, 0, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, + /* 28083 */ 97, 97, 1373, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 0, 97, 1376, 97, 97, 97, 97, 97, + /* 28109 */ 97, 97, 0, 0, 0, 45, 45, 1384, 45, 45, 67, 208, 67, 67, 67, 67, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, + /* 28135 */ 1069, 1070, 67, 67, 67, 67, 67, 67, 67, 0, 37140, 24854, 0, 0, 0, 0, 41098, 65821, 45, 1423, 45, 45, 45, + /* 28158 */ 45, 45, 45, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1083, 37689, 0, 25403, 0, 66365, 0, 0, 0, 1436, 67, + /* 28182 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1830, 67, 1452, 1453, 67, 67, 67, 67, 1456, 67, + /* 28206 */ 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 67, 67, 1461, 67, 67, 67, 1464, 67, 1466, 67, 67, 67, + /* 28231 */ 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 1587, 67, 67, 67, 67, 67, 67, 67, 67, 1595, 1489, 97, 97, 97, + /* 28255 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 1505, 1506, 97, 97, 97, 97, 1510, 97, 97, 97, + /* 28279 */ 97, 97, 97, 97, 97, 97, 1163, 1164, 97, 97, 97, 97, 97, 1516, 97, 97, 97, 1519, 97, 1521, 97, 97, 97, 97, + /* 28303 */ 97, 97, 1525, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 67, 67, 67, 67, 67, 1586, + /* 28328 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1600, 67, 67, 67, + /* 28353 */ 67, 67, 67, 67, 67, 67, 67, 67, 1301, 0, 0, 0, 1307, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 1627, 97, + /* 28378 */ 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 919, 97, 97, 97, 0, 97, 97, 97, 1781, 97, 97, 0, 0, 97, 97, 97, + /* 28404 */ 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1792, 1860, 45, 1862, 1863, 45, 1865, 45, 67, 67, 67, 67, 67, + /* 28429 */ 67, 67, 67, 1875, 67, 1877, 1878, 67, 1880, 67, 97, 97, 97, 97, 97, 1887, 0, 1889, 97, 97, 18, 0, 139621, + /* 28452 */ 0, 0, 0, 0, 0, 0, 364, 237568, 0, 367, 0, 97, 1893, 0, 0, 0, 97, 1898, 1899, 97, 1901, 97, 45, 45, 45, 45, + /* 28478 */ 45, 2014, 45, 67, 67, 67, 67, 67, 2020, 67, 97, 1989, 45, 1990, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1996, + /* 28502 */ 67, 1997, 67, 67, 67, 67, 67, 273, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 97, 97, 97, 97, + /* 28526 */ 0, 0, 97, 97, 2005, 0, 97, 2007, 97, 97, 18, 0, 139621, 0, 0, 0, 642, 0, 133, 364, 0, 0, 367, 41606, 0, + /* 28551 */ 97, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 209, 67, 67, 67, 223, 67, 67, 67, + /* 28576 */ 67, 67, 67, 67, 67, 67, 786, 67, 67, 67, 791, 67, 67, 45, 45, 940, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28602 */ 45, 45, 45, 45, 727, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1016, 67, 67, 67, 67, 67, 67, 67, 67, 37689, + /* 28627 */ 0, 25403, 0, 66365, 0, 0, 0, 133, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 142, 45, + /* 28650 */ 45, 67, 210, 67, 67, 67, 225, 67, 67, 239, 67, 67, 67, 250, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, + /* 28675 */ 476, 67, 67, 67, 67, 67, 67, 67, 1709, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1843, + /* 28701 */ 0, 67, 259, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 289, 97, 97, 97, 303, + /* 28725 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 97, 339, 97, 97, 97, 97, 97, 0, 53264, 0, 18, + /* 28751 */ 18, 24, 24, 0, 28, 28, 0, 358, 0, 0, 0, 0, 0, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1953, 45, 1955, 45, + /* 28777 */ 45, 45, 67, 67, 67, 67, 67, 67, 67, 1687, 1688, 67, 67, 67, 67, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, + /* 28802 */ 45, 45, 45, 45, 45, 45, 45, 1203, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 477, 67, 67, 67, 67, + /* 28827 */ 67, 67, 67, 1970, 97, 97, 97, 1974, 0, 0, 0, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1372, + /* 28852 */ 97, 97, 97, 97, 67, 522, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 536, 67, 67, 67, 67, 67, 67, 1696, + /* 28877 */ 67, 67, 67, 67, 67, 67, 67, 1701, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 574, 97, 97, 97, 97, + /* 28902 */ 97, 301, 97, 309, 97, 97, 97, 97, 97, 97, 97, 97, 97, 900, 97, 97, 97, 905, 97, 97, 97, 619, 97, 97, 97, + /* 28927 */ 97, 97, 97, 97, 97, 97, 97, 97, 633, 97, 97, 18, 0, 139621, 0, 0, 362, 0, 0, 0, 364, 0, 0, 367, 41606, + /* 28952 */ 369, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 664, 67, 67, 67, 67, 750, 751, 67, 67, 67, + /* 28977 */ 67, 758, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1057, 1058, 67, 67, 67, 67, + /* 29002 */ 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 67, 97, 97, 97, 97, 895, + /* 29028 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 902, 97, 97, 97, 97, 67, 67, 1051, 67, 67, 67, 67, 67, 67, 67, + /* 29054 */ 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1302, 0, 0, 0, + /* 29080 */ 1308, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1139, 97, 97, 97, 97, 1156, 97, + /* 29104 */ 97, 97, 97, 97, 97, 1161, 97, 97, 97, 97, 97, 1166, 97, 97, 18, 640, 139621, 0, 641, 0, 0, 0, 0, 364, 0, + /* 29129 */ 0, 367, 41606, 67, 67, 67, 67, 1257, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1305, 0, 0, 97, 97, + /* 29155 */ 1337, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1630, 97, 67, 1474, 67, 67, 0, 0, 0, 0, 0, + /* 29181 */ 0, 0, 0, 0, 0, 0, 0, 0, 2380062, 2171166, 2171166, 97, 1529, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, + /* 29205 */ 45, 45, 45, 1228, 45, 45, 45, 45, 67, 67, 67, 67, 1707, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, + /* 29231 */ 0, 97, 1891, 1739, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 1200, 45, 45, 45, + /* 29256 */ 45, 97, 97, 1894, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, + /* 29282 */ 45, 45, 45, 1420, 45, 45, 45, 45, 67, 67, 1965, 67, 1967, 67, 67, 67, 97, 97, 97, 97, 0, 1976, 0, 97, 97, + /* 29307 */ 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 97, 97, 1979, 0, 0, 97, 1982, 97, 97, 97, 1986, 45, 45, + /* 29333 */ 45, 45, 45, 735, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 2000, 97, 97, + /* 29358 */ 97, 2002, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1798, 97, 97, 97, 45, 45, 45, 2034, 67, 67, 67, 67, + /* 29383 */ 97, 0, 0, 2040, 97, 97, 97, 97, 45, 45, 45, 45, 1752, 45, 45, 45, 1753, 1754, 45, 45, 45, 45, 45, 45, 383, + /* 29408 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 45, 45, 438, 45, 45, 45, 45, 45, 445, 45, 45, 45, + /* 29434 */ 45, 45, 45, 45, 45, 67, 1430, 67, 67, 67, 67, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 531, 67, 67, + /* 29459 */ 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1096, 97, 97, 97, 621, 97, 97, 97, 97, 97, 628, + /* 29483 */ 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 29509 */ 676, 45, 45, 45, 45, 45, 942, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 708, 45, 45, 45, 45, 763, 67, + /* 29534 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 809, 810, 67, 67, 67, 67, 783, 67, 67, 67, 67, 67, + /* 29560 */ 67, 67, 67, 67, 67, 67, 0, 1303, 0, 0, 0, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29587 */ 613, 97, 45, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 67, 67, 67, 67, + /* 29612 */ 1027, 67, 67, 67, 67, 1032, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1097, 1064, + /* 29635 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 67, 1098, 0, 0, 97, 97, 97, 97, 97, 97, + /* 29661 */ 97, 97, 97, 97, 97, 97, 97, 331, 97, 97, 97, 97, 1158, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29687 */ 594, 97, 97, 1309, 0, 0, 0, 1315, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29715 */ 97, 97, 1374, 97, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1240, 67, 67, + /* 29739 */ 1583, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1252, 67, 97, 97, 97, 1635, 97, 97, 97, 0, + /* 29764 */ 97, 97, 97, 97, 97, 97, 97, 97, 1800, 97, 45, 45, 45, 97, 97, 1793, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29789 */ 97, 45, 45, 45, 1743, 45, 45, 45, 1746, 45, 0, 97, 97, 97, 97, 97, 1851, 97, 45, 45, 45, 45, 1856, 45, 45, + /* 29814 */ 45, 45, 1864, 45, 45, 67, 67, 1869, 67, 67, 67, 67, 1874, 67, 0, 97, 97, 45, 67, 2058, 97, 45, 67, 0, 97, + /* 29839 */ 45, 67, 0, 97, 45, 45, 67, 211, 67, 67, 67, 67, 67, 67, 240, 67, 67, 67, 67, 67, 67, 67, 1444, 67, 67, 67, + /* 29865 */ 67, 67, 67, 67, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 67, 67, 268, 67, 67, 67, 0, 37139, 24853, 0, 0, + /* 29890 */ 0, 0, 41098, 65820, 97, 97, 290, 97, 97, 97, 305, 97, 97, 319, 97, 97, 97, 330, 97, 97, 18, 640, 139621, + /* 29913 */ 0, 641, 0, 0, 0, 0, 364, 0, 643, 367, 41606, 97, 97, 348, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, + /* 29939 */ 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 395, + /* 29963 */ 45, 45, 45, 400, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 45, 972, 45, 45, 45, 45, 45, + /* 29989 */ 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 745, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, + /* 30015 */ 67, 67, 67, 37689, 1086, 25403, 1090, 66365, 1094, 0, 0, 97, 843, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, + /* 30038 */ 97, 97, 97, 97, 97, 1121, 97, 97, 97, 97, 1126, 97, 97, 97, 97, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, + /* 30063 */ 45, 45, 45, 45, 45, 45, 45, 1400, 45, 67, 67, 67, 1011, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, + /* 30088 */ 1304, 0, 0, 0, 1190, 45, 45, 1193, 1194, 45, 45, 45, 45, 45, 1199, 45, 1201, 45, 45, 45, 45, 1911, 45, 45, + /* 30112 */ 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 67, 67, 45, 1205, 45, 45, 45, 45, 45, 45, 45, 45, + /* 30137 */ 1211, 45, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1217, + /* 30162 */ 45, 45, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 1229, 45, 45, 45, 1388, 45, 45, 45, 45, 45, 45, 1396, 45, + /* 30186 */ 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1574, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 30212 */ 67, 1590, 67, 67, 67, 67, 67, 1254, 67, 67, 67, 67, 67, 1259, 67, 1261, 67, 67, 67, 67, 1265, 67, 67, 67, + /* 30236 */ 67, 67, 67, 1708, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 67, 67, 67, 67, + /* 30263 */ 1285, 67, 67, 67, 67, 1289, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 1087, 25403, 1091, 66365, 1095, 0, 0, + /* 30285 */ 97, 97, 97, 97, 1339, 97, 1341, 97, 97, 97, 97, 1345, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 573, + /* 30309 */ 97, 97, 97, 97, 97, 97, 1717, 97, 0, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 30335 */ 1329, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 588, + /* 30360 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 97, 97, 97, 1365, 97, 97, 97, 97, 1369, 97, + /* 30385 */ 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, + /* 30410 */ 45, 45, 45, 45, 45, 45, 45, 1399, 45, 45, 45, 1413, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 30435 */ 45, 1669, 45, 1422, 45, 45, 1425, 45, 45, 1428, 45, 1429, 67, 67, 67, 67, 67, 67, 67, 67, 1468, 67, 67, + /* 30458 */ 67, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 539, 67, 67, 1475, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30486 */ 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 97, 97, 1530, 97, 0, 45, 45, 1534, 45, 45, 45, 45, 45, 45, + /* 30507 */ 45, 45, 1956, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 67, 67, 1601, 67, 67, 67, 67, 67, 67, 67, + /* 30532 */ 67, 67, 803, 67, 67, 67, 67, 67, 67, 1632, 97, 1634, 0, 97, 97, 97, 1640, 97, 97, 97, 1643, 97, 97, 1645, + /* 30556 */ 97, 97, 97, 97, 97, 912, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1660, 1661, + /* 30582 */ 45, 45, 45, 45, 1665, 1666, 45, 45, 45, 45, 45, 1670, 1692, 1693, 67, 67, 67, 67, 67, 1697, 67, 67, 67, + /* 30605 */ 67, 67, 67, 67, 1702, 97, 97, 1714, 1715, 97, 97, 97, 97, 0, 1721, 1722, 97, 97, 97, 97, 97, 97, 1353, 97, + /* 30629 */ 97, 97, 97, 97, 97, 97, 97, 1362, 1726, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 1734, 97, 97, 97, 97, 97, + /* 30654 */ 848, 849, 97, 97, 97, 97, 856, 97, 97, 97, 97, 97, 354, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 45, 45, + /* 30679 */ 1750, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1681, 45, 0, 1846, 97, 97, 97, 97, 97, 97, + /* 30704 */ 45, 45, 1854, 45, 45, 45, 45, 1859, 67, 67, 67, 1879, 67, 67, 97, 97, 1884, 97, 97, 0, 0, 0, 97, 97, 97, + /* 30729 */ 1105, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 1347, 97, 1892, 97, 0, 0, 0, 97, 97, 97, + /* 30754 */ 1900, 97, 97, 45, 45, 45, 45, 45, 997, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1002, 45, 45, 1005, 1006, + /* 30778 */ 45, 67, 67, 67, 67, 67, 1926, 67, 67, 1928, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, + /* 30804 */ 97, 1737, 97, 0, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1944, 97, 97, 1946, 45, 45, 45, 1544, 45, 45, 45, 45, + /* 30829 */ 45, 45, 45, 45, 45, 45, 45, 45, 190, 45, 45, 45, 152, 155, 45, 163, 45, 45, 177, 179, 182, 45, 45, 45, + /* 30853 */ 193, 197, 45, 45, 45, 1672, 45, 45, 45, 45, 45, 1677, 45, 1679, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, + /* 30877 */ 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 67, 260, 264, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, + /* 30902 */ 41098, 65820, 97, 97, 97, 295, 299, 302, 97, 310, 97, 97, 324, 326, 329, 97, 97, 97, 0, 97, 97, 1639, 0, + /* 30925 */ 1641, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 97, 97, 97, 1523, 97, 97, 97, 97, 97, 97, + /* 30950 */ 97, 97, 1719, 97, 97, 97, 97, 97, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 97, 97, 312, 97, 97, 97, 97, 97, + /* 30975 */ 97, 97, 97, 1123, 97, 97, 97, 97, 97, 97, 97, 340, 344, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, + /* 31000 */ 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 373, 375, 419, 45, 45, 45, 45, 45, 45, + /* 31024 */ 45, 45, 45, 428, 45, 45, 435, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1410, 45, + /* 31049 */ 45, 45, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 67, 67, 67, 67, 1969, 67, 97, + /* 31074 */ 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 2064, 2065, 0, 2066, 45, 521, 67, 67, 67, 67, + /* 31100 */ 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 465, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, + /* 31125 */ 1467, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1933, 0, 97, 97, 97, 602, 97, 97, 97, 97, + /* 31150 */ 97, 97, 97, 97, 97, 611, 97, 97, 18, 640, 139621, 358, 641, 0, 0, 0, 0, 364, 0, 0, 367, 0, 618, 97, 97, + /* 31175 */ 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 97, 97, 881, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 569, + /* 31201 */ 97, 97, 97, 97, 97, 369, 0, 45, 652, 45, 45, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, + /* 31226 */ 45, 45, 45, 45, 45, 67, 67, 67, 1432, 67, 67, 67, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, + /* 31251 */ 773, 67, 67, 67, 0, 1305, 0, 1311, 0, 1317, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, + /* 31276 */ 97, 0, 97, 97, 97, 1724, 97, 97, 97, 777, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 31301 */ 535, 67, 67, 67, 67, 67, 67, 67, 814, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, + /* 31324 */ 0, 0, 66365, 66365, 552, 0, 97, 837, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31349 */ 918, 97, 97, 97, 97, 0, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1168, 97, 97, 97, + /* 31375 */ 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 97, 97, 0, 1637, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, + /* 31401 */ 97, 97, 97, 1801, 45, 45, 97, 875, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1151, 1152, + /* 31425 */ 97, 97, 97, 67, 67, 67, 1040, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 790, 67, 67, 67, 1180, 0, + /* 31450 */ 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 200, 45, 45, 67, 67, 67, 1454, 67, 67, 67, 67, + /* 31475 */ 67, 67, 67, 67, 67, 67, 67, 67, 806, 67, 67, 67, 0, 0, 0, 1481, 0, 1094, 0, 0, 97, 1483, 97, 97, 97, 97, + /* 31501 */ 97, 97, 304, 97, 97, 318, 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 97, + /* 31526 */ 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, + /* 31551 */ 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 1633, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31577 */ 1381, 0, 0, 45, 45, 45, 45, 97, 97, 1727, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 626, 97, 97, + /* 31603 */ 97, 97, 97, 97, 636, 45, 45, 1760, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 67, 67, 1299, 67, + /* 31628 */ 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1616, 97, 97, 1803, 45, 45, 45, 45, 1807, 45, 45, 45, 45, 45, + /* 31654 */ 1813, 45, 45, 45, 67, 67, 1684, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 822, 67, 67, 37689, 544, 67, + /* 31678 */ 67, 1818, 67, 67, 67, 67, 1822, 67, 67, 67, 67, 67, 1828, 67, 67, 67, 67, 67, 97, 0, 0, 97, 97, 97, 97, + /* 31703 */ 97, 45, 45, 45, 2012, 2013, 45, 45, 67, 67, 67, 2018, 2019, 67, 67, 97, 67, 97, 97, 97, 1833, 97, 97, 0, + /* 31727 */ 0, 97, 97, 1840, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 1733, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 1849, 97, + /* 31753 */ 97, 97, 45, 45, 45, 45, 45, 1857, 45, 45, 45, 1910, 45, 1912, 45, 45, 1914, 45, 67, 67, 67, 67, 67, 67, + /* 31777 */ 67, 67, 67, 67, 1017, 67, 67, 1020, 67, 45, 1861, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1872, 67, 67, + /* 31801 */ 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1446, 67, 67, 67, 67, 67, 1876, 67, 67, 67, + /* 31826 */ 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1890, 97, 97, 97, 97, 97, 1134, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31852 */ 97, 570, 97, 97, 97, 97, 580, 1935, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1906, + /* 31878 */ 45, 67, 67, 67, 67, 2048, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 931, 45, 45, + /* 31905 */ 45, 45, 45, 45, 1674, 45, 1676, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, + /* 31930 */ 67, 1871, 67, 67, 67, 67, 0, 97, 97, 45, 67, 0, 97, 2060, 2061, 0, 2063, 45, 67, 0, 97, 45, 45, 156, 45, + /* 31955 */ 45, 45, 45, 45, 45, 45, 45, 45, 192, 45, 45, 45, 45, 1673, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 31980 */ 429, 45, 45, 45, 45, 67, 67, 67, 269, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 349, + /* 32004 */ 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, + /* 32029 */ 45, 374, 45, 45, 67, 67, 213, 217, 67, 67, 67, 67, 67, 242, 67, 247, 67, 253, 45, 45, 698, 45, 45, 45, 45, + /* 32054 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 399, 45, 45, 0, 0, 0, 0, 925, 41606, 0, 929, 0, 0, 45, 45, 45, 45, 45, + /* 32081 */ 45, 1391, 45, 45, 1395, 45, 45, 45, 45, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 436, 45, 67, 67, 67, 67, + /* 32106 */ 1041, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1776, 67, 67, 97, 97, 97, 1099, 0, 0, 97, 97, 97, + /* 32131 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 888, 97, 97, 97, 1131, 97, 97, 97, 97, 1135, 97, 1137, 97, 97, 97, + /* 32156 */ 97, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 97, 97, 883, 97, 97, 97, 97, 97, 97, 1310, 0, 0, 0, + /* 32181 */ 1316, 0, 0, 0, 0, 1100, 0, 0, 0, 97, 97, 97, 97, 97, 1107, 97, 97, 97, 97, 97, 97, 97, 97, 1343, 97, 97, + /* 32207 */ 97, 97, 97, 97, 1348, 0, 0, 1317, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 45, + /* 32234 */ 1804, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1868, 67, 1870, 67, 67, 67, 67, 67, 1817, + /* 32258 */ 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 823, 67, 37689, 544, 67, 97, 1832, 97, 97, + /* 32282 */ 1834, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 1732, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, + /* 32308 */ 97, 97, 97, 97, 97, 97, 97, 1177, 0, 0, 925, 0, 0, 0, 0, 97, 97, 97, 97, 0, 0, 1941, 97, 97, 97, 97, 97, + /* 32335 */ 97, 45, 45, 45, 1991, 1992, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1998, 134, 0, 0, 0, 37, 110630, 0, 0, + /* 32360 */ 0, 114730, 106539, 41098, 45, 45, 45, 45, 941, 45, 45, 944, 45, 45, 45, 45, 45, 45, 952, 45, 45, 207, 67, + /* 32383 */ 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 67, 67, 67, 37689, 544, 369, 650, 45, + /* 32407 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1682, 25403, 546, 70179, 0, 0, 66365, 66365, 552, + /* 32430 */ 835, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1725, + /* 32455 */ 67, 67, 67, 1695, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 1036, 67, 67, 67, 265, 67, 67, + /* 32480 */ 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 296, 97, 97, 97, 97, 314, 97, 97, 97, 97, + /* 32504 */ 332, 334, 97, 97, 97, 97, 97, 1146, 1147, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, + /* 32528 */ 97, 97, 345, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, + /* 32553 */ 41098, 369, 140, 45, 372, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1213, 45, 45, + /* 32577 */ 45, 45, 404, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 45, 440, 45, 45, 45, + /* 32602 */ 45, 45, 45, 45, 45, 451, 452, 45, 45, 45, 67, 1683, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 0, + /* 32626 */ 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 67, 67, 490, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 32650 */ 67, 1447, 67, 67, 1450, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 537, 538, 67, 67, 67, 67, + /* 32675 */ 67, 506, 67, 67, 508, 67, 67, 511, 67, 67, 67, 67, 0, 1476, 0, 0, 0, 0, 0, 1478, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32703 */ 97, 97, 1484, 97, 97, 97, 97, 97, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1499, 97, 97, 97, 97, + /* 32728 */ 97, 97, 97, 97, 97, 587, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 97, 97, 97, + /* 32754 */ 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 634, 635, 97, 97, 97, 97, 97, 1160, 97, 97, 97, 97, 97, 97, 97, + /* 32779 */ 97, 97, 97, 97, 1628, 97, 97, 97, 97, 369, 0, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 45, + /* 32804 */ 999, 45, 1001, 45, 45, 45, 45, 45, 45, 45, 45, 715, 45, 45, 45, 720, 45, 45, 45, 45, 45, 45, 45, 45, 728, + /* 32829 */ 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 840, 97, 97, 97, 97, 97, 1174, 97, 97, + /* 32852 */ 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, + /* 32880 */ 97, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 680, 45, 968, 45, 970, 45, 973, 45, + /* 32905 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 962, 45, 45, 45, 45, 45, 979, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, + /* 32931 */ 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 688, 45, 45, 45, 45, 45, 45, 45, 1007, 1008, 67, + /* 32956 */ 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 1038, 67, 67, + /* 32981 */ 67, 67, 67, 67, 1044, 67, 1046, 67, 1049, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 808, 67, + /* 33005 */ 67, 0, 0, 0, 1102, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, + /* 33031 */ 97, 97, 1371, 97, 97, 97, 97, 97, 97, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 1138, 97, 1140, 97, 1143, 97, + /* 33055 */ 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 45, 1191, 45, 45, + /* 33080 */ 45, 45, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, + /* 33105 */ 45, 45, 45, 991, 45, 67, 67, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1048, 67, 67, 67, + /* 33130 */ 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 97, 1386, 45, 1387, 45, 45, 45, 45, + /* 33155 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 455, 45, 457, 45, 45, 1424, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1433, + /* 33180 */ 67, 1434, 67, 67, 67, 67, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 1593, 67, 67, 45, + /* 33205 */ 45, 1805, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1814, 45, 45, 1816, 67, 67, 67, 67, 1820, 67, 67, 67, 67, + /* 33229 */ 67, 67, 67, 67, 67, 1829, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 821, 67, 67, 67, 37689, 544, 67, 1831, + /* 33253 */ 97, 97, 97, 97, 1835, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 97, + /* 33279 */ 97, 853, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1850, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1547, + /* 33304 */ 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 961, 45, 45, 45, 45, 965, 45, 967, + /* 33329 */ 1907, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1920, 0, 1936, 97, 97, 97, 0, 0, 0, 97, 97, + /* 33355 */ 97, 97, 97, 97, 45, 45, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, + /* 33380 */ 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, + /* 33405 */ 97, 97, 0, 0, 28672, 97, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2054, 97, 97, 291, 97, + /* 33431 */ 97, 97, 97, 97, 97, 320, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, + /* 33456 */ 925, 926, 1179, 0, 45, 377, 45, 45, 45, 381, 45, 45, 392, 45, 45, 396, 45, 45, 45, 45, 971, 45, 45, 45, + /* 33480 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 45, 45, 45, 67, 67, 67, 67, 463, 67, 67, 67, 467, 67, 67, 478, + /* 33505 */ 67, 67, 482, 67, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 1472, + /* 33530 */ 67, 502, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1460, 67, 97, 97, 97, 97, 560, 97, 97, + /* 33555 */ 97, 564, 97, 97, 575, 97, 97, 579, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, + /* 33581 */ 925, 0, 0, 930, 97, 599, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 872, 97, 45, 666, 45, 45, + /* 33607 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1758, 0, 362, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, + /* 33633 */ 934, 45, 45, 45, 164, 168, 174, 178, 45, 45, 45, 45, 45, 194, 45, 45, 45, 165, 45, 45, 45, 45, 45, 45, 45, + /* 33658 */ 45, 45, 199, 45, 45, 45, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1060, 67, 67, 67, + /* 33683 */ 67, 67, 67, 1052, 1053, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1063, 97, 1157, 97, 97, 97, 97, 97, 97, + /* 33707 */ 97, 97, 97, 97, 97, 97, 1167, 97, 97, 97, 97, 97, 1379, 97, 97, 97, 0, 0, 0, 45, 1383, 45, 45, 45, 1806, + /* 33732 */ 45, 45, 45, 45, 45, 45, 1812, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 67, 67, 753, + /* 33757 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, + /* 33782 */ 67, 67, 67, 67, 67, 67, 67, 1471, 67, 45, 1402, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 33807 */ 417, 45, 67, 1462, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 1517, 97, 97, + /* 33831 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 1636, 97, 97, 97, 0, 97, 97, 97, 97, + /* 33857 */ 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 1705, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, + /* 33883 */ 97, 97, 97, 0, 0, 97, 97, 97, 97, 1842, 0, 0, 1779, 97, 97, 97, 1782, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, + /* 33910 */ 0, 97, 97, 97, 1789, 97, 97, 0, 0, 0, 97, 1847, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1675, + /* 33936 */ 45, 45, 45, 45, 45, 45, 45, 45, 737, 738, 67, 740, 67, 741, 67, 743, 67, 67, 67, 67, 67, 67, 1968, 67, 67, + /* 33961 */ 97, 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 2062, 97, 45, 67, 0, 97, 45, 67, 67, 97, 97, 2001, + /* 33988 */ 97, 0, 0, 2004, 97, 97, 0, 97, 97, 97, 97, 1797, 97, 97, 97, 97, 97, 45, 45, 45, 67, 261, 67, 67, 67, 67, + /* 34014 */ 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 292, 97, 97, 97, 97, 311, 315, 321, 325, 97, 97, + /* 34037 */ 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1330, 97, 97, 1333, 1334, 97, 341, 97, 97, + /* 34061 */ 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 363, 364, 0, 367, 41098, 369, 140, + /* 34085 */ 45, 45, 45, 45, 1221, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 416, 45, 376, 45, 45, 45, + /* 34110 */ 45, 382, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 45, 45, 403, 45, 45, 45, 45, 45, 45, + /* 34135 */ 45, 45, 45, 45, 414, 45, 45, 45, 418, 67, 67, 67, 462, 67, 67, 67, 67, 468, 67, 67, 67, 67, 67, 67, 67, + /* 34160 */ 67, 1602, 67, 1604, 67, 67, 67, 67, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 500, 67, + /* 34185 */ 67, 67, 67, 67, 1067, 67, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 274, 0, 37139, 24853, 0, 0, 0, 0, + /* 34210 */ 41098, 65820, 67, 67, 504, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 517, 519, 541, 67, 37139, 37139, + /* 34232 */ 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 554, 97, 97, 97, 559, 97, 97, 97, 97, 565, 97, + /* 34254 */ 97, 97, 97, 97, 97, 97, 1718, 0, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 906, 97, 97, 97, + /* 34280 */ 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 597, 97, 97, 97, 97, 97, 1520, 97, 97, 97, 97, 97, 97, + /* 34305 */ 97, 97, 97, 97, 0, 45, 1656, 45, 45, 45, 97, 97, 601, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 614, + /* 34330 */ 616, 638, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 369, 0, 45, 45, 45, 45, 45, 45, 45, + /* 34356 */ 45, 45, 45, 661, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1815, 45, 67, 45, + /* 34381 */ 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 678, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 34407 */ 45, 45, 976, 977, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 697, 67, 67, 748, + /* 34432 */ 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1274, 67, 67, 67, 67, 67, 67, 67, 67, 765, 67, + /* 34457 */ 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 780, 67, 67, + /* 34482 */ 784, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1777, 67, 97, 97, 97, 97, 97, 97, 846, 97, 97, 97, 97, + /* 34507 */ 852, 97, 97, 97, 97, 97, 97, 97, 1742, 45, 45, 45, 45, 45, 45, 45, 1747, 97, 97, 97, 863, 97, 97, 97, 97, + /* 34532 */ 867, 97, 97, 97, 97, 97, 97, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 1178, 925, 0, 1179, + /* 34556 */ 0, 97, 97, 97, 878, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 908, + /* 34581 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 954, 45, 45, 45, 45, 45, 45, + /* 34608 */ 45, 45, 45, 45, 963, 45, 45, 966, 45, 45, 157, 45, 45, 171, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 948, + /* 34633 */ 45, 45, 45, 45, 45, 1022, 67, 67, 1026, 67, 67, 67, 1030, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 1605, + /* 34657 */ 67, 67, 67, 1608, 67, 67, 67, 1039, 67, 67, 1042, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, + /* 34682 */ 67, 67, 0, 1100, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 97, 97, 97, 97, 1116, 97, 97, + /* 34708 */ 1120, 97, 97, 97, 1124, 97, 97, 97, 97, 97, 97, 562, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 34733 */ 1133, 97, 97, 1136, 97, 97, 97, 97, 97, 97, 97, 97, 915, 917, 97, 97, 97, 97, 97, 0, 97, 1170, 97, 97, 97, + /* 34758 */ 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1993, 67, 67, 67, + /* 34786 */ 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 1278, 67, 0, 0, 0, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, + /* 34812 */ 45, 45, 1189, 1204, 45, 45, 45, 1207, 45, 45, 1209, 45, 1210, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, + /* 34835 */ 45, 45, 45, 45, 45, 45, 689, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 34861 */ 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 805, 67, 67, 67, + /* 34887 */ 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1249, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, + /* 34912 */ 67, 67, 67, 67, 67, 1300, 0, 0, 0, 0, 0, 1267, 67, 67, 1269, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 34938 */ 1280, 97, 1349, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 97, 0, 1980, 97, 97, 97, 97, + /* 34962 */ 97, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 677, 45, 45, 45, 45, 1401, 45, 45, 45, 45, 45, 45, 45, + /* 34987 */ 45, 45, 45, 45, 45, 45, 45, 45, 953, 67, 1437, 67, 1440, 67, 67, 67, 67, 1445, 67, 67, 67, 1448, 67, 67, + /* 35011 */ 67, 67, 67, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 67, 67, 67, 1473, 67, 67, 67, + /* 35036 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 834, 97, 97, 97, 97, 1490, 97, 1493, 97, 97, 97, 97, 1498, + /* 35063 */ 97, 97, 97, 1501, 97, 97, 97, 0, 97, 1638, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 916, 97, 97, 97, 97, 97, + /* 35089 */ 97, 0, 1528, 97, 97, 97, 0, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1867, 67, 67, 67, 67, 67, 67, + /* 35114 */ 67, 67, 67, 97, 97, 97, 97, 1932, 0, 0, 1555, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1567, + /* 35139 */ 45, 45, 158, 45, 45, 172, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 67, 212, 67, 67, 67, 67, 231, 235, + /* 35164 */ 241, 245, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 472, 67, 67, 67, 67, 67, + /* 35189 */ 97, 97, 97, 97, 1651, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 45, 45, 67, 1704, 67, + /* 35214 */ 1706, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1841, 97, 0, 1844, 97, 97, 97, + /* 35240 */ 97, 1716, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, + /* 35267 */ 45, 45, 1385, 1748, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1757, 45, 45, 159, 45, 45, 45, 45, + /* 35292 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 97, 97, 1780, 97, 97, 97, 0, 0, 1786, 97, 97, 97, 97, 97, + /* 35318 */ 0, 0, 97, 97, 1730, 0, 97, 97, 97, 97, 97, 1736, 97, 1738, 67, 97, 97, 97, 97, 97, 97, 0, 1838, 97, 97, + /* 35343 */ 97, 97, 97, 0, 0, 97, 1729, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 1165, 97, 97, 97, 45, + /* 35369 */ 1950, 45, 45, 45, 45, 45, 45, 45, 45, 1958, 67, 67, 67, 1962, 67, 67, 67, 67, 67, 1246, 67, 67, 67, 67, + /* 35393 */ 67, 67, 67, 67, 67, 67, 67, 97, 1710, 97, 97, 97, 1999, 67, 97, 97, 97, 97, 0, 2003, 97, 97, 97, 0, 97, + /* 35418 */ 97, 2008, 2009, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 2052, 67, 2053, 0, 0, 0, 0, 925, 41606, 0, + /* 35443 */ 0, 930, 0, 45, 45, 45, 45, 45, 45, 1392, 45, 1394, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, + /* 35468 */ 45, 45, 45, 45, 45, 1563, 1565, 45, 45, 45, 1568, 0, 97, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, + /* 35492 */ 28672, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 679, 45, 45, 67, 67, 266, 67, + /* 35517 */ 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 346, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, + /* 35541 */ 24, 0, 28, 28, 139621, 0, 0, 362, 0, 364, 0, 367, 41098, 369, 140, 371, 45, 45, 45, 379, 45, 45, 45, 388, + /* 35565 */ 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 449, 45, 45, 45, 45, 45, 67, 67, + /* 35591 */ 542, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 97, 97, 97, 97, 1622, 97, + /* 35612 */ 97, 97, 97, 97, 97, 97, 1629, 97, 97, 0, 1794, 1795, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, + /* 35637 */ 45, 1745, 45, 45, 97, 639, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 45, 731, 45, 45, 45, + /* 35662 */ 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 251, 67, 67, 67, 67, 67, 798, 67, 67, 67, 67, + /* 35688 */ 67, 67, 67, 67, 67, 67, 67, 67, 1073, 67, 67, 67, 860, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 35714 */ 97, 873, 0, 0, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 921, 97, 0, 67, 67, 67, 67, 1245, + /* 35740 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1250, 67, 67, 1253, 0, 0, 1312, 0, 0, 0, 1318, 0, 0, 0, 0, + /* 35767 */ 0, 0, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 97, 1155, 97, 97, + /* 35792 */ 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1141, 97, 97, 67, 67, 1439, 67, 1441, 67, 67, + /* 35816 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 67, 97, 97, 1492, 97, 1494, 97, 97, 97, 97, 97, 97, + /* 35841 */ 97, 97, 97, 97, 97, 1331, 97, 97, 97, 97, 67, 67, 67, 2037, 67, 97, 0, 0, 97, 97, 97, 2043, 97, 45, 45, + /* 35866 */ 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 232, 67, 67, 67, 67, 67, 67, + /* 35892 */ 67, 67, 1823, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1975, 0, 0, 97, 874, 97, 97, 97, 97, 97, 97, + /* 35918 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1142, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, + /* 35939 */ 114730, 106539, 65, 86, 117, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, + /* 35956 */ 63, 84, 115, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 61, 82, 113, + /* 35974 */ 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 59, 80, 111, 53264, 18, 49172, + /* 35992 */ 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 57, 78, 109, 53264, 18, 49172, 57366, 24, 8192, + /* 36010 */ 28, 102432, 37, 110630, 114730, 106539, 55, 76, 107, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, + /* 36028 */ 110630, 114730, 106539, 53, 74, 105, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, + /* 36045 */ 106539, 51, 72, 103, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 49, 70, + /* 36063 */ 101, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 47, 68, 99, 53264, 18, + /* 36081 */ 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 45, 67, 97, 53264, 18, 49172, 57366, 24, + /* 36099 */ 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 213085, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, + /* 36117 */ 0, 0, 0, 44, 0, 0, 32863, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 41, 41, 41, 0, 0, 1138688, + /* 36139 */ 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 49172, + /* 36157 */ 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 89, 53264, 18, 18, 49172, 0, 57366, 0, 24, + /* 36177 */ 24, 24, 0, 127, 127, 127, 127, 102432, 67, 262, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, + /* 36200 */ 65820, 342, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 360, 0, 0, 364, 0, 367, + /* 36225 */ 41098, 369, 140, 45, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 45, 45, + /* 36250 */ 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1292, 67, 67, 1294, 67, 67, 67, 67, 67, 67, + /* 36275 */ 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1615, 97, 97, 97, 53264, 18, 49172, 57366, 24, 8192, 28, + /* 36299 */ 102432, 37, 110630, 114730, 106539, 66, 87, 118, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, + /* 36316 */ 110630, 114730, 106539, 64, 85, 116, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, + /* 36333 */ 106539, 62, 83, 114, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 60, 81, + /* 36351 */ 112, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 58, 79, 110, 53264, 18, + /* 36369 */ 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 56, 77, 108, 53264, 18, 49172, 57366, 24, + /* 36387 */ 8192, 28, 102432, 37, 110630, 114730, 106539, 54, 75, 106, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, + /* 36405 */ 37, 110630, 114730, 106539, 52, 73, 104, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, + /* 36422 */ 114730, 106539, 50, 71, 102, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, + /* 36439 */ 48, 69, 100, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 46, 67, 98, 53264, + /* 36458 */ 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 233472, 53264, 18, 49172, 57366, + /* 36476 */ 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 69724, 53264, 18, 18, 49172, 0, 57366, 262144, 24, + /* 36495 */ 24, 24, 0, 28, 28, 28, 28, 102432, 45, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 710, + /* 36520 */ 45, 45, 28, 139621, 359, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 1389, 45, 45, 45, 45, 45, + /* 36544 */ 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 45, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 36570 */ 67, 1449, 67, 67, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1154, 97, 0, 0, 0, 0, + /* 36596 */ 925, 41606, 927, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, + /* 36621 */ 67, 67, 67, 67, 45, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 951, 45, 45, 45, 45, + /* 36646 */ 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 45, 0, 0, 0, 1314, 0, 0, 0, 0, 0, 0, + /* 36673 */ 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1488, 67, 67, 267, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, + /* 36698 */ 41098, 65820, 97, 347, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 361, 0, 0, 364, + /* 36722 */ 0, 367, 41098, 369, 140, 45, 45, 45, 45, 734, 45, 45, 45, 67, 67, 67, 67, 67, 742, 67, 67, 45, 45, 668, + /* 36746 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1214, 45, 45, 1130, 97, 97, 97, 97, 97, 97, 97, 97, + /* 36771 */ 97, 97, 97, 97, 97, 97, 97, 1361, 97, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 36796 */ 1552, 45, 45, 0, 0, 0, 0, 2220032, 0, 0, 1130496, 0, 0, 0, 0, 2170880, 2171020, 2170880, 2170880, 18, 0, + /* 36817 */ 0, 131072, 0, 0, 0, 90112, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1485, 97, 97, 97, 97, 0, 45, + /* 36843 */ 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1390, 45, 1393, 45, 45, 45, 45, 1398, 45, 45, 45, 2170880, + /* 36865 */ 2171167, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, + /* 36876 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2576384, 2215936, 3117056, 2215936, 2215936, + /* 36887 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, + /* 36902 */ 0, 2174976, 0, 0, 0, 0, 0, 0, 2183168, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, + /* 36921 */ 2170880, 2170880, 2721252, 2744320, 2170880, 2170880, 2170880, 2834432, 2840040, 2170880, 2908160, + /* 36932 */ 2170880, 2170880, 2936832, 2170880, 2170880, 2985984, 2170880, 2994176, 2170880, 2170880, 3014656, + /* 36943 */ 2170880, 3059712, 3076096, 3088384, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 0, 2220032, 0, 0, 0, + /* 36959 */ 1142784, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3215360, 2215936, + /* 36972 */ 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, 2215936, 2215936, 3117056, 2215936, 2215936, + /* 36983 */ 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 543, 0, 545, + /* 36997 */ 0, 0, 2183168, 0, 0, 831, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, + /* 37012 */ 3031040, 2170880, 3055616, 2170880, 2170880, 2170880, 2170880, 3092480, 2170880, 2170880, 3125248, + /* 37023 */ 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, + /* 37036 */ 0, 0, 0, 0, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 0, 0, 0, 65820, 65820, 0, 287, 97, 97, 97, 97, 97, + /* 37060 */ 1783, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1791, 0, 0, 546, 70179, 0, 0, 0, 0, 552, + /* 37087 */ 0, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 97, + /* 37112 */ 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 0, 0, + /* 37126 */ 147456, 0, 0, 0, 0, 925, 41606, 0, 928, 0, 0, 45, 45, 45, 45, 45, 45, 998, 45, 45, 45, 45, 45, 45, 45, 45, + /* 37152 */ 45, 1562, 45, 1564, 45, 45, 45, 45, 0, 2158592, 2158592, 0, 0, 0, 0, 2232320, 2232320, 2232320, 0, + /* 37171 */ 2240512, 2240512, 2240512, 2240512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2416640 +]; + +JSONiqTokenizer.EXPECTED = +[ + /* 0 */ 291, 300, 304, 341, 315, 309, 305, 295, 319, 323, 327, 329, 296, 333, 337, 339, 342, 346, 350, 294, 356, + /* 21 */ 360, 312, 367, 352, 371, 363, 375, 379, 383, 387, 391, 395, 726, 399, 405, 518, 684, 405, 405, 405, 405, + /* 42 */ 808, 405, 405, 405, 512, 405, 405, 405, 431, 405, 405, 406, 405, 405, 404, 405, 405, 405, 405, 405, 405, + /* 63 */ 405, 908, 631, 410, 415, 405, 414, 419, 608, 405, 429, 602, 405, 435, 443, 405, 441, 641, 478, 405, 447, + /* 84 */ 451, 450, 456, 643, 461, 460, 762, 679, 465, 469, 741, 473, 477, 482, 486, 492, 932, 931, 523, 498, 504, + /* 105 */ 720, 405, 510, 596, 405, 516, 941, 580, 522, 929, 527, 590, 589, 897, 939, 534, 538, 547, 551, 555, 559, + /* 126 */ 563, 567, 571, 969, 575, 708, 690, 689, 579, 584, 634, 405, 594, 731, 405, 600, 882, 405, 606, 895, 786, + /* 147 */ 452, 612, 405, 615, 620, 876, 624, 628, 638, 647, 651, 655, 659, 663, 667, 676, 683, 688, 695, 694, 791, + /* 168 */ 405, 699, 437, 405, 706, 714, 405, 712, 825, 870, 405, 718, 724, 769, 768, 823, 730, 735, 745, 751, 422, + /* 189 */ 755, 759, 425, 766, 902, 810, 587, 775, 888, 887, 405, 773, 992, 405, 779, 962, 405, 785, 781, 986, 790, + /* 210 */ 795, 797, 506, 500, 499, 801, 805, 814, 820, 829, 833, 837, 841, 845, 849, 853, 857, 861, 616, 865, 869, + /* 231 */ 868, 488, 405, 874, 816, 405, 880, 738, 405, 886, 892, 543, 405, 901, 906, 913, 912, 918, 494, 541, 922, + /* 252 */ 926, 936, 945, 949, 953, 957, 530, 966, 973, 960, 702, 701, 405, 979, 981, 405, 985, 747, 405, 990, 998, + /* 273 */ 914, 405, 996, 1004, 672, 975, 974, 1014, 1002, 1008, 670, 1012, 405, 405, 405, 405, 405, 401, 1018, 1022, + /* 293 */ 1026, 1106, 1071, 1111, 1111, 1111, 1082, 1145, 1030, 1101, 1034, 1038, 1106, 1106, 1106, 1106, 1046, 1206, + /* 311 */ 1052, 1106, 1072, 1111, 1111, 1042, 1134, 1065, 1111, 1112, 1056, 1160, 1207, 1062, 1204, 1208, 1069, 1106, + /* 329 */ 1106, 1106, 1076, 1111, 1207, 1161, 1122, 1205, 1064, 1094, 1106, 1106, 1107, 1111, 1111, 1111, 1078, 1086, + /* 347 */ 1207, 1092, 1098, 1046, 1058, 1106, 1106, 1110, 1111, 1111, 1116, 1120, 1161, 1126, 1202, 1104, 1106, 1145, + /* 365 */ 1146, 1129, 1138, 1088, 1151, 1048, 1157, 1153, 1132, 1141, 1165, 1107, 1111, 1172, 1179, 1109, 1183, 1175, + /* 383 */ 1143, 1147, 1187, 1108, 1191, 1195, 1144, 1199, 1168, 1212, 1216, 1220, 1224, 1228, 1232, 1236, 1557, 1247, + /* 401 */ 1241, 1241, 1038, 1434, 1241, 1241, 1241, 1241, 1254, 1275, 1617, 1241, 1280, 1287, 1241, 1241, 1241, 1287, + /* 419 */ 1241, 2114, 1291, 1241, 1243, 1241, 2049, 1824, 2094, 2095, 1520, 1309, 1241, 1241, 1302, 1241, 1321, 1311, + /* 437 */ 1241, 1241, 1313, 1778, 1325, 1336, 1241, 1241, 1325, 1330, 1353, 1241, 1241, 1695, 1354, 1241, 1241, 1241, + /* 455 */ 1294, 1686, 1331, 1241, 1696, 1368, 1241, 1338, 1370, 1241, 1392, 1399, 1364, 2017, 1406, 2016, 1405, 1716, + /* 473 */ 1406, 1407, 1422, 1417, 1421, 1241, 1241, 1241, 1349, 1426, 1241, 1774, 1756, 1241, 1773, 1241, 1241, 1345, + /* 491 */ 1964, 1812, 1432, 1241, 1241, 1345, 1993, 1459, 1241, 1241, 1241, 1395, 1848, 1767, 1465, 1241, 1241, 1394, + /* 509 */ 1847, 1242, 1477, 1241, 1241, 1428, 1241, 1445, 1492, 1241, 1241, 1438, 1241, 1499, 1241, 1241, 1241, 1455, + /* 527 */ 1241, 1818, 1448, 1241, 1250, 1241, 2026, 1623, 1449, 1241, 1612, 1616, 1241, 1614, 1241, 1257, 1241, 1241, + /* 545 */ 1985, 1292, 1586, 1512, 1241, 1517, 2050, 1526, 1674, 1519, 1524, 1647, 2051, 1532, 1537, 1551, 1544, 1550, + /* 563 */ 1555, 1561, 1571, 1578, 1584, 1590, 1591, 1653, 1595, 1602, 1606, 1610, 1634, 1628, 1640, 1633, 1645, 1241, + /* 581 */ 1241, 1241, 1469, 1241, 1970, 1651, 1241, 1270, 1241, 1241, 1819, 1449, 1241, 1293, 1664, 1241, 1241, 1481, + /* 599 */ 1485, 1574, 1672, 1241, 1241, 1513, 1317, 1487, 1684, 1241, 1241, 1533, 1299, 1694, 1241, 1241, 1295, 1241, + /* 617 */ 1241, 1241, 1546, 1700, 1241, 1241, 1707, 1241, 1713, 1241, 1849, 1715, 1241, 1720, 1241, 1276, 1267, 1241, + /* 635 */ 1241, 2107, 1657, 1864, 1241, 1881, 1241, 1326, 1292, 1241, 1685, 1358, 1724, 1338, 1241, 1363, 1362, 1342, + /* 653 */ 1340, 1361, 1339, 1833, 1372, 1360, 1833, 1833, 1342, 1343, 1835, 1341, 1731, 1738, 1344, 1241, 1745, 1241, + /* 671 */ 1379, 1241, 1241, 2092, 1241, 1388, 1761, 1754, 1241, 1386, 1241, 1400, 1760, 1241, 1241, 1241, 1598, 1734, + /* 689 */ 1241, 1241, 1241, 1635, 1645, 1241, 1780, 1766, 1241, 1241, 1332, 1771, 1241, 1241, 1629, 2079, 1241, 1242, + /* 707 */ 1784, 1241, 1241, 1680, 1639, 2063, 1790, 1241, 1241, 1741, 1241, 1241, 1800, 1241, 1241, 1762, 1473, 1241, + /* 725 */ 1806, 1241, 1241, 1786, 1240, 1709, 1241, 1241, 1241, 1668, 1811, 1241, 1940, 1241, 1401, 1974, 1241, 1408, + /* 743 */ 1413, 1382, 1241, 1816, 1241, 1241, 1802, 2086, 1811, 1241, 1817, 1945, 1823, 2095, 2095, 2047, 2094, 2046, + /* 761 */ 2080, 1241, 1409, 1312, 1376, 2096, 2048, 1241, 1241, 1807, 1241, 1241, 1241, 2035, 1241, 1241, 1828, 1241, + /* 779 */ 2057, 2061, 1241, 1241, 1843, 1241, 2059, 1241, 1241, 1241, 1690, 1847, 1241, 1241, 1241, 1703, 2102, 1848, + /* 797 */ 1241, 1241, 1853, 1292, 1848, 1241, 2016, 1857, 1241, 2002, 1868, 1241, 1436, 1241, 1241, 1271, 1305, 1241, + /* 815 */ 1874, 1241, 1241, 1884, 2037, 1892, 1241, 1890, 1241, 1461, 1241, 1241, 1795, 1241, 1241, 1891, 1241, 1878, + /* 833 */ 1241, 1888, 1241, 1888, 1905, 1896, 2087, 1912, 1903, 1241, 1911, 1906, 1916, 1905, 2027, 1863, 1925, 2088, + /* 851 */ 1859, 1861, 1922, 1927, 1931, 1935, 1494, 1241, 1241, 1918, 1907, 1939, 1917, 1944, 1949, 1241, 1241, 1451, + /* 869 */ 1955, 1241, 1241, 1241, 1796, 1727, 2061, 1241, 1241, 1899, 1241, 1660, 1968, 1241, 1241, 1951, 1678, 1978, + /* 887 */ 1241, 1241, 1241, 1839, 1241, 1241, 1984, 1982, 1241, 1488, 1241, 1241, 1624, 1450, 1989, 1241, 1241, 1241, + /* 905 */ 1870, 1995, 1292, 1241, 1241, 1958, 1261, 1241, 1996, 1241, 1241, 1241, 2039, 2008, 1241, 1241, 1750, 2000, + /* 923 */ 1241, 1256, 2001, 1960, 1241, 1564, 1241, 1504, 1241, 1241, 1442, 1241, 1241, 1564, 1528, 1263, 1241, 1508, + /* 941 */ 1241, 1241, 1468, 1498, 2006, 1540, 2015, 1539, 2014, 1748, 2013, 1539, 1831, 2014, 2012, 1500, 1567, 2022, + /* 959 */ 2021, 1241, 1580, 1241, 1241, 2033, 2037, 1791, 2045, 2031, 1241, 1621, 1241, 1641, 2044, 1241, 1241, 1241, + /* 977 */ 2093, 1241, 1241, 2055, 1241, 1241, 2067, 1241, 1283, 1241, 1241, 1241, 2101, 2071, 1241, 1241, 1241, 2073, + /* 995 */ 1848, 2040, 1241, 1241, 1241, 2077, 1241, 1241, 2106, 1241, 1241, 2084, 1241, 2111, 1241, 1241, 1381, 1380, + /* 1013 */ 1241, 1241, 1241, 2100, 1241, 2129, 2118, 2122, 2126, 2197, 2133, 3010, 2825, 2145, 2698, 2156, 2226, 2160, + /* 1031 */ 2161, 2165, 2174, 2293, 2194, 2630, 2201, 2203, 2152, 3019, 2226, 2263, 2209, 2213, 2218, 2269, 2292, 2269, + /* 1049 */ 2269, 2184, 2226, 2238, 2148, 2151, 3017, 2245, 2214, 2269, 2269, 2185, 2226, 2292, 2269, 2291, 2269, 2269, + /* 1067 */ 2269, 2292, 2205, 3019, 2226, 2226, 2160, 2160, 2160, 2261, 2160, 2160, 2160, 2262, 2276, 2160, 2160, 2277, + /* 1085 */ 2216, 2283, 2216, 2269, 2269, 2268, 2269, 2267, 2269, 2269, 2269, 2271, 2568, 2292, 2269, 2293, 2269, 2182, + /* 1103 */ 2190, 2269, 2186, 2226, 2226, 2226, 2226, 2227, 2160, 2160, 2160, 2160, 2263, 2160, 2275, 2277, 2282, 2215, + /* 1121 */ 2217, 2269, 2269, 2291, 2269, 2269, 2293, 2291, 2269, 2220, 2269, 2295, 2294, 2269, 2269, 2305, 2233, 2262, + /* 1139 */ 2278, 2218, 2269, 2234, 2226, 2226, 2228, 2160, 2160, 2160, 2289, 2220, 2294, 2294, 2269, 2269, 2304, 2269, + /* 1157 */ 2160, 2160, 2287, 2269, 2269, 2305, 2269, 2269, 2312, 2269, 2269, 2225, 2226, 2160, 2287, 2289, 2219, 2304, + /* 1175 */ 2295, 2314, 2234, 2226, 2314, 2269, 2226, 2226, 2160, 2288, 2219, 2222, 2304, 2296, 2269, 2224, 2160, 2160, + /* 1193 */ 2269, 2302, 2294, 2314, 2224, 2226, 2288, 2220, 2294, 2269, 2290, 2269, 2269, 2293, 2269, 2269, 2269, 2269, + /* 1211 */ 2270, 2221, 2313, 2225, 2227, 2160, 2300, 2269, 2225, 2261, 2309, 2234, 2229, 2223, 2318, 2318, 2318, 2328, + /* 1229 */ 2336, 2340, 2344, 2350, 2637, 2712, 2358, 2362, 2372, 2135, 2378, 2398, 2135, 2135, 2135, 2135, 2136, 2417, + /* 1247 */ 2241, 2135, 2378, 2135, 2135, 2980, 2984, 2135, 3006, 2135, 2135, 2135, 2945, 2931, 2425, 2400, 2135, 2135, + /* 1265 */ 2135, 2954, 2135, 2481, 2433, 2135, 2135, 2988, 2824, 2135, 2135, 2482, 2434, 2135, 2135, 2440, 2445, 2452, + /* 1283 */ 2135, 2135, 2998, 3002, 2961, 2441, 2446, 2453, 2463, 2974, 2135, 2135, 2135, 2140, 2642, 2709, 2459, 2470, + /* 1301 */ 2465, 2135, 2135, 3005, 2135, 2135, 2987, 2823, 2458, 2469, 2464, 2975, 2135, 2135, 2135, 2353, 2488, 2447, + /* 1319 */ 2324, 2974, 2135, 2409, 2459, 2448, 2135, 2961, 2487, 2446, 2476, 2323, 2973, 2135, 2135, 2135, 2354, 2476, + /* 1337 */ 2974, 2135, 2135, 2135, 2957, 2135, 2135, 2960, 2135, 2135, 2135, 2363, 2409, 2459, 2474, 2465, 2487, 2571, + /* 1355 */ 2973, 2135, 2135, 2168, 2973, 2135, 2135, 2135, 2959, 2135, 2135, 2135, 2506, 2135, 2957, 2488, 2170, 2135, + /* 1373 */ 2135, 2135, 2960, 2135, 2818, 2493, 2135, 2135, 3033, 2135, 2135, 2135, 2934, 2819, 2494, 2135, 2135, 2135, + /* 1391 */ 2976, 2780, 2499, 2135, 2135, 2135, 3000, 2968, 2135, 2935, 2135, 2135, 2135, 2364, 2507, 2135, 2135, 2934, + /* 1409 */ 2135, 2135, 2780, 2492, 2507, 2135, 2135, 2506, 2780, 2135, 2135, 2782, 2780, 2135, 2782, 2135, 2783, 2374, + /* 1427 */ 2514, 2135, 2135, 2135, 3007, 2530, 2974, 2135, 2135, 2135, 3008, 2135, 2135, 2134, 2135, 2526, 2531, 2975, + /* 1445 */ 2135, 2135, 3042, 2581, 2575, 2956, 2135, 2135, 2135, 2394, 2135, 2508, 2535, 2840, 2844, 2495, 2135, 2135, + /* 1463 */ 2136, 2684, 2537, 2842, 2846, 2135, 2136, 2561, 2581, 2551, 2536, 2841, 2845, 2975, 3043, 2582, 2843, 2555, + /* 1481 */ 2135, 3040, 3044, 2538, 2844, 2975, 2135, 2135, 2253, 2644, 2672, 2542, 2554, 2135, 2135, 2346, 2873, 2551, + /* 1499 */ 2555, 2135, 2135, 2135, 2381, 2559, 2565, 2538, 2553, 2135, 2560, 2914, 2576, 2590, 2135, 2135, 2135, 2408, + /* 1517 */ 2136, 2596, 2624, 2135, 2135, 2135, 2409, 2135, 2618, 2597, 3008, 2135, 2135, 2380, 2956, 2601, 2135, 2135, + /* 1535 */ 2135, 2410, 2620, 2624, 2135, 2136, 2383, 2135, 2135, 2783, 2623, 2135, 2135, 2393, 2888, 2136, 2621, 3008, + /* 1553 */ 2135, 2618, 2618, 2622, 2135, 2135, 2405, 2414, 2619, 2384, 2624, 2135, 2136, 2950, 2135, 2138, 2135, 2139, + /* 1571 */ 2135, 2604, 2623, 2135, 2140, 2878, 2665, 2957, 2622, 2135, 2135, 2428, 2762, 2606, 2612, 2135, 2135, 2501, + /* 1589 */ 2586, 2604, 3038, 2135, 2604, 3036, 2387, 2958, 2386, 2135, 2141, 2135, 2421, 2387, 2385, 2135, 2385, 2384, + /* 1607 */ 2384, 2135, 2386, 2628, 2384, 2135, 2135, 2501, 2596, 2591, 2135, 2135, 2135, 2400, 2135, 2634, 2135, 2135, + /* 1625 */ 2559, 2580, 2575, 2648, 2135, 2135, 2135, 2429, 2649, 2135, 2135, 2135, 2435, 2654, 2658, 2135, 2135, 2135, + /* 1643 */ 2436, 2649, 2178, 2659, 2135, 2135, 2595, 2601, 2669, 2677, 2135, 2135, 2616, 2957, 2879, 2665, 2691, 2135, + /* 1661 */ 2363, 2367, 2900, 2878, 2664, 2690, 2975, 2877, 2643, 2670, 2974, 2671, 2975, 2135, 2135, 2619, 2608, 2669, + /* 1679 */ 2673, 2135, 2135, 2653, 2177, 2672, 2135, 2135, 2135, 2486, 2168, 2251, 2255, 2695, 2974, 2709, 2135, 2135, + /* 1697 */ 2135, 2487, 2169, 2399, 2716, 2975, 2135, 2363, 2770, 2776, 2640, 2717, 2135, 2135, 2729, 2135, 2135, 2641, + /* 1715 */ 2718, 2135, 2135, 2135, 2505, 2135, 2640, 2257, 2974, 2135, 2727, 2975, 2135, 2365, 2332, 2895, 2957, 2135, + /* 1733 */ 2959, 2135, 2365, 2749, 2754, 2959, 2958, 2958, 2135, 2380, 2793, 2799, 2135, 2735, 2738, 2135, 2381, 2135, + /* 1751 */ 2135, 2940, 2974, 2135, 2744, 2135, 2135, 2739, 2519, 2976, 2745, 2135, 2135, 2135, 2509, 2755, 2135, 2135, + /* 1769 */ 2135, 2510, 2772, 2778, 2135, 2135, 2740, 2520, 2135, 2771, 2777, 2135, 2135, 2759, 2750, 2792, 2798, 2135, + /* 1787 */ 2135, 2781, 2392, 2779, 2135, 2135, 2135, 2521, 2135, 2679, 2248, 2135, 2135, 2681, 2480, 2135, 2135, 2786, + /* 1805 */ 3000, 2135, 2679, 2683, 2135, 2135, 2416, 2135, 2135, 2135, 2525, 2135, 2730, 2135, 2135, 2135, 2560, 2581, + /* 1823 */ 2135, 2805, 2135, 2135, 2804, 2962, 2832, 2974, 2135, 2382, 2135, 2135, 2958, 2135, 2135, 2960, 2135, 2829, + /* 1841 */ 2833, 2975, 2961, 2965, 2969, 2973, 2968, 2972, 2135, 2135, 2135, 2641, 2135, 2515, 2966, 2970, 2851, 2478, + /* 1859 */ 2135, 2135, 2808, 2135, 2809, 2135, 2135, 2135, 2722, 2852, 2479, 2135, 2135, 2815, 2135, 2135, 2766, 2853, + /* 1877 */ 2480, 2135, 2857, 2479, 2135, 2388, 2723, 2135, 2364, 2331, 2894, 2858, 2480, 2135, 2135, 2850, 2478, 2135, + /* 1895 */ 2135, 2135, 2806, 2864, 2135, 2399, 2256, 2974, 2865, 2135, 2135, 2862, 2135, 2135, 2135, 2685, 2807, 2865, + /* 1913 */ 2135, 2135, 2807, 2863, 2135, 2135, 2135, 2686, 2884, 2807, 2135, 2809, 2807, 2135, 2135, 2807, 2806, 2705, + /* 1931 */ 2810, 2808, 2700, 2869, 2702, 2702, 2702, 2704, 2883, 2135, 2135, 2135, 2730, 2884, 2135, 2135, 2135, 2731, + /* 1949 */ 2321, 2546, 2135, 2135, 2876, 2255, 2889, 2322, 2547, 2135, 2401, 2135, 2135, 2135, 2949, 2367, 2893, 2544, + /* 1967 */ 2973, 2906, 2973, 2135, 2135, 2877, 2663, 2368, 2901, 2907, 2974, 2366, 2899, 2905, 2972, 2920, 2974, 2135, + /* 1985 */ 2135, 2911, 2900, 2920, 2363, 2913, 2918, 2465, 2941, 2975, 2135, 2135, 2924, 2928, 2974, 2945, 2931, 2135, + /* 2003 */ 2135, 2135, 2765, 2136, 2955, 2135, 2135, 2939, 2931, 2380, 2135, 2135, 2380, 2135, 2135, 2135, 2780, 2507, + /* 2021 */ 2137, 2135, 2137, 2135, 2139, 2135, 2806, 2810, 2135, 2135, 2135, 2992, 2135, 2135, 2962, 2966, 2970, 2974, + /* 2039 */ 2135, 2135, 2787, 3014, 2135, 2521, 2993, 2135, 2135, 2135, 2803, 2135, 2135, 2135, 2618, 2607, 2997, 3001, + /* 2057 */ 2135, 2135, 2963, 2967, 2971, 2975, 2135, 2135, 2791, 2797, 2135, 3009, 2999, 3003, 2787, 3001, 2135, 2135, + /* 2075 */ 2964, 2968, 2785, 2999, 3003, 2135, 2135, 2135, 2804, 2785, 2999, 3004, 2135, 2135, 2135, 2807, 2135, 2135, + /* 2093 */ 3023, 2135, 2135, 2135, 2811, 2135, 2135, 3027, 2135, 2135, 2135, 2837, 2968, 3028, 2135, 2135, 2135, 2875, + /* 2111 */ 2135, 2784, 3029, 2135, 2408, 2457, 2446, 0, 14, 0, -2120220672, 1610612736, -2074083328, -2002780160, + /* 2125 */ -2111830528, 1073872896, 1342177280, 1075807216, 4096, 16384, 2048, 8192, 0, 8192, 0, 0, 0, 0, 1, 0, 0, 0, + /* 2143 */ 2, 0, -2145386496, 8388608, 1073741824, 0, 0x80000000, 0x80000000, 2097152, 2097152, 2097152, 536870912, 0, + /* 2156 */ 0, 134217728, 33554432, 1536, 268435456, 268435456, 268435456, 268435456, 128, 256, 32, 0, 65536, 131072, + /* 2170 */ 524288, 16777216, 268435456, 0x80000000, 1572864, 1835008, 640, 32768, 65536, 262144, 1048576, 2097152, + /* 2182 */ 196608, 196800, 196608, 196608, 0, 131072, 131072, 131072, 196608, 196624, 196608, 196624, 196608, 196608, + /* 2196 */ 128, 4096, 16384, 16384, 2048, 0, 4, 0, 0, 0x80000000, 2097152, 0, 1024, 32, 32, 0, 65536, 1572864, + /* 2214 */ 1048576, 32768, 32768, 32768, 32768, 196608, 196608, 196608, 64, 64, 196608, 196608, 131072, 131072, + /* 2228 */ 131072, 131072, 268435456, 268435456, 64, 196736, 196608, 196608, 196608, 131072, 196608, 196608, 16384, 4, + /* 2242 */ 4, 4, 2, 32, 32, 65536, 1048576, 12582912, 1073741824, 0, 0, 2, 8, 16, 96, 2048, 32768, 0, 0, 131072, + /* 2262 */ 268435456, 268435456, 268435456, 256, 256, 196608, 196672, 196608, 196608, 196608, 196608, 4, 0, 256, 256, + /* 2277 */ 256, 256, 32, 32, 32768, 32, 32, 32, 32, 32768, 268435456, 268435456, 268435456, 196608, 196608, 196608, + /* 2293 */ 196624, 196608, 196608, 196608, 16, 16, 16, 268435456, 196608, 64, 64, 64, 196608, 196608, 196608, 196672, + /* 2309 */ 268435456, 64, 64, 196608, 196608, 16, 196608, 196608, 196608, 268435456, 64, 196608, 131072, 262144, + /* 2323 */ 4194304, 25165824, 33554432, 134217728, 268435456, 268435456, 196608, 262152, 8, 256, 512, 3072, 16384, + /* 2336 */ 200, -1073741816, 8392713, 40, 8392718, 520, 807404072, 40, 520, 100663304, 0, 0, -540651761, -540651761, + /* 2350 */ 257589048, 0, 262144, 0, 0, 3, 8, 256, 0, 4, 6, 4100, 8388612, 0, 0, 0, 3, 4, 8, 256, 512, 1024, 0, + /* 2373 */ 2097152, 0, 0, -537854471, -537854471, 0, 100663296, 0, 0, 1, 2, 0, 0, 0, 16384, 0, 0, 0, 96, 14336, 0, 0, + /* 2395 */ 0, 7, 8, 234881024, 0, 0, 0, 8, 0, 0, 0, 0, 262144, 0, 0, 16, 64, 384, 512, 0, 1, 1, 0, 12582912, 0, 0, 0, + /* 2422 */ 0, 33554432, 67108864, -606084144, -606084144, -606084138, 0, 0, 28, 32, 768, 1966080, -608174080, 0, 0, 0, + /* 2438 */ 14, 35056, 16, 64, 896, 24576, 98304, 98304, 131072, 262144, 524288, 1048576, 4194304, 25165824, 1048576, + /* 2453 */ 62914560, 134217728, -805306368, 0, 384, 512, 16384, 65536, 131072, 262144, 29360128, 33554432, 134217728, + /* 2466 */ 268435456, 1073741824, 0x80000000, 262144, 524288, 1048576, 29360128, 33554432, 524288, 1048576, 16777216, + /* 2477 */ 33554432, 134217728, 268435456, 1073741824, 0, 0, 0, 123856, 1966080, 0, 64, 384, 16384, 65536, 131072, + /* 2492 */ 16384, 65536, 524288, 268435456, 0x80000000, 0, 0, 524288, 0x80000000, 0, 0, 1, 16, 0, 256, 524288, 0, 0, + /* 2510 */ 0, 25, 96, 128, -537854471, 0, 0, 0, 32, 7404800, -545259520, 0, 0, 0, 60, 0, 249, 64768, 1048576, 6291456, + /* 2530 */ 6291456, 25165824, 100663296, 402653184, 1073741824, 96, 128, 1280, 2048, 4096, 57344, 6291456, 57344, + /* 2543 */ 6291456, 8388608, 16777216, 33554432, 201326592, 1342177280, 0x80000000, 0, 57344, 6291456, 8388608, + /* 2554 */ 100663296, 134217728, 0x80000000, 0, 0, 0, 1, 8, 16, 64, 128, 64, 128, 256, 1024, 131072, 131072, 131072, + /* 2572 */ 262144, 524288, 16777216, 57344, 6291456, 8388608, 67108864, 134217728, 64, 256, 1024, 2048, 4096, 57344, + /* 2586 */ 64, 256, 0, 24576, 32768, 6291456, 67108864, 134217728, 0, 1, 64, 256, 24576, 32768, 4194304, 32768, + /* 2602 */ 4194304, 67108864, 0, 0, 64, 256, 0, 0, 24576, 32768, 0, 16384, 4194304, 67108864, 64, 16384, 0, 0, 1, 64, + /* 2622 */ 256, 16384, 4194304, 67108864, 0, 0, 0, 16384, 0, 16384, 16384, 0, -470447874, -470447874, -470447874, 0, + /* 2638 */ 0, 128, 0, 0, 8, 96, 2048, 32768, 262144, 8388608, 35056, 1376256, -471859200, 0, 0, 14, 16, 224, 2048, + /* 2657 */ 32768, 2097152, 4194304, 8388608, -486539264, 0, 96, 128, 2048, 32768, 262144, 2097152, 262144, 2097152, + /* 2671 */ 8388608, 33554432, 536870912, 1073741824, 0x80000000, 0, 1610612736, 0x80000000, 0, 0, 1, 524288, 1048576, + /* 2684 */ 12582912, 0, 0, 0, 151311, 264503296, 2097152, 8388608, 33554432, 1610612736, 0x80000000, 262144, 8388608, + /* 2697 */ 33554432, 536870912, 67108864, 4194304, 0, 4194304, 0, 4194304, 4194304, 0, 0, 524288, 8388608, 536870912, + /* 2711 */ 1073741824, 0x80000000, 1, 4097, 8388609, 96, 2048, 32768, 1073741824, 0x80000000, 0, 96, 2048, + /* 2724 */ 0x80000000, 0, 0, 96, 2048, 0, 0, 1, 12582912, 0, 0, 0, 0, 1641895695, 1641895695, 0, 0, 0, 249, 7404800, + /* 2744 */ 15, 87808, 1835008, 1639972864, 0, 768, 5120, 16384, 65536, 1835008, 1835008, 12582912, 16777216, + /* 2757 */ 1610612736, 0, 3, 4, 8, 768, 4096, 65536, 0, 0, 256, 512, 786432, 8, 256, 512, 4096, 16384, 1835008, 16384, + /* 2777 */ 1835008, 12582912, 1610612736, 0, 0, 0, 256, 0, 0, 0, 4, 8, 16, 32, 1, 2, 8, 256, 16384, 524288, 16384, + /* 2798 */ 524288, 1048576, 12582912, 1610612736, 0, 0, 0, 8388608, 0, 0, 0, 524288, 4194304, 0, 0, 0, 8388608, + /* 2815 */ -548662288, -548662288, -548662288, 0, 0, 256, 16384, 65536, 520093696, -1073741824, 0, 0, 0, 16777216, 0, + /* 2830 */ 16, 32, 960, 4096, 4980736, 520093696, 1073741824, 0, 32, 896, 4096, 57344, 1048576, 6291456, 8388608, + /* 2845 */ 16777216, 100663296, 134217728, 268435456, 0x80000000, 0, 512, 786432, 4194304, 33554432, 134217728, + /* 2856 */ 268435456, 0, 786432, 4194304, 134217728, 268435456, 0, 524288, 4194304, 268435456, 0, 0, 0, 0, 0, 4194304, + /* 2872 */ 4194304, -540651761, 0, 0, 0, 2, 4, 8, 16, 96, 128, 264503296, -805306368, 0, 0, 0, 8, 256, 512, 19456, + /* 2892 */ 131072, 3072, 16384, 131072, 262144, 8388608, 16777216, 512, 1024, 2048, 16384, 131072, 262144, 131072, + /* 2906 */ 262144, 8388608, 33554432, 201326592, 268435456, 0, 3, 4, 256, 1024, 2048, 57344, 16384, 131072, 8388608, + /* 2921 */ 33554432, 134217728, 268435456, 0, 3, 256, 1024, 16384, 131072, 33554432, 134217728, 1073741824, + /* 2933 */ 0x80000000, 0, 0, 256, 524288, 0x80000000, 0, 3, 256, 33554432, 134217728, 1073741824, 0, 1, 2, 33554432, + /* 2949 */ 1, 2, 134217728, 1073741824, 0, 1, 2, 134217728, 0, 0, 0, 64, 0, 0, 0, 16, 32, 896, 4096, 786432, 4194304, + /* 2970 */ 16777216, 33554432, 201326592, 268435456, 1073741824, 0x80000000, 0, 0, 0, 15, 0, 4980736, 4980736, + /* 2983 */ 4980736, 70460, 70460, 3478332, 0, 0, 1008, 4984832, 520093696, 60, 4864, 65536, 0, 0, 0, 12, 16, 32, 256, + /* 3002 */ 512, 4096, 65536, 0, 0, 0, 67108864, 0, 0, 0, 12, 0, 256, 512, 65536, 0, 0, 1024, 512, 131072, 131072, 4, + /* 3024 */ 16, 32, 65536, 0, 4, 16, 32, 0, 0, 0, 4, 16, 0, 0, 16384, 67108864, 0, 0, 1, 24, 96, 128, 256, 1024 +]; + +JSONiqTokenizer.TOKEN = +[ + "(0)", + "JSONChar", + "JSONCharRef", + "JSONPredefinedCharRef", + "ModuleDecl", + "Annotation", + "OptionDecl", + "Operator", + "Variable", + "Tag", + "EndTag", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSectionContents", + "AttrTest", + "Wildcard", + "EQName", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "AposChar", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "NCName", + "QName", + "S", + "CharRef", + "CommentContents", + "DocTag", + "DocCommentContents", + "EOF", + "'!'", + "'\"'", + "'#'", + "'#)'", + "'$$'", + "''''", + "'('", + "'(#'", + "'(:'", + "'(:~'", + "')'", + "'*'", + "'*'", + "','", + "'-->'", + "'.'", + "'/'", + "'/>'", + "':'", + "':)'", + "';'", + "'<!--'", + "'<![CDATA['", + "'<?'", + "'='", + "'>'", + "'?'", + "'?>'", + "'NaN'", + "'['", + "']'", + "']]>'", + "'after'", + "'all'", + "'allowing'", + "'ancestor'", + "'ancestor-or-self'", + "'and'", + "'any'", + "'append'", + "'array'", + "'as'", + "'ascending'", + "'at'", + "'attribute'", + "'base-uri'", + "'before'", + "'boundary-space'", + "'break'", + "'by'", + "'case'", + "'cast'", + "'castable'", + "'catch'", + "'check'", + "'child'", + "'collation'", + "'collection'", + "'comment'", + "'constraint'", + "'construction'", + "'contains'", + "'content'", + "'context'", + "'continue'", + "'copy'", + "'copy-namespaces'", + "'count'", + "'decimal-format'", + "'decimal-separator'", + "'declare'", + "'default'", + "'delete'", + "'descendant'", + "'descendant-or-self'", + "'descending'", + "'diacritics'", + "'different'", + "'digit'", + "'distance'", + "'div'", + "'document'", + "'document-node'", + "'element'", + "'else'", + "'empty'", + "'empty-sequence'", + "'encoding'", + "'end'", + "'entire'", + "'eq'", + "'every'", + "'exactly'", + "'except'", + "'exit'", + "'external'", + "'first'", + "'following'", + "'following-sibling'", + "'for'", + "'foreach'", + "'foreign'", + "'from'", + "'ft-option'", + "'ftand'", + "'ftnot'", + "'ftor'", + "'function'", + "'ge'", + "'greatest'", + "'group'", + "'grouping-separator'", + "'gt'", + "'idiv'", + "'if'", + "'import'", + "'in'", + "'index'", + "'infinity'", + "'inherit'", + "'insensitive'", + "'insert'", + "'instance'", + "'integrity'", + "'intersect'", + "'into'", + "'is'", + "'item'", + "'json'", + "'json-item'", + "'key'", + "'language'", + "'last'", + "'lax'", + "'le'", + "'least'", + "'let'", + "'levels'", + "'loop'", + "'lowercase'", + "'lt'", + "'minus-sign'", + "'mod'", + "'modify'", + "'module'", + "'most'", + "'namespace'", + "'namespace-node'", + "'ne'", + "'next'", + "'no'", + "'no-inherit'", + "'no-preserve'", + "'node'", + "'nodes'", + "'not'", + "'object'", + "'occurs'", + "'of'", + "'on'", + "'only'", + "'option'", + "'or'", + "'order'", + "'ordered'", + "'ordering'", + "'paragraph'", + "'paragraphs'", + "'parent'", + "'pattern-separator'", + "'per-mille'", + "'percent'", + "'phrase'", + "'position'", + "'preceding'", + "'preceding-sibling'", + "'preserve'", + "'previous'", + "'processing-instruction'", + "'relationship'", + "'rename'", + "'replace'", + "'return'", + "'returning'", + "'revalidation'", + "'same'", + "'satisfies'", + "'schema'", + "'schema-attribute'", + "'schema-element'", + "'score'", + "'self'", + "'sensitive'", + "'sentence'", + "'sentences'", + "'skip'", + "'sliding'", + "'some'", + "'stable'", + "'start'", + "'stemming'", + "'stop'", + "'strict'", + "'strip'", + "'structured-item'", + "'switch'", + "'text'", + "'then'", + "'thesaurus'", + "'times'", + "'to'", + "'treat'", + "'try'", + "'tumbling'", + "'type'", + "'typeswitch'", + "'union'", + "'unique'", + "'unordered'", + "'updating'", + "'uppercase'", + "'using'", + "'validate'", + "'value'", + "'variable'", + "'version'", + "'weight'", + "'when'", + "'where'", + "'while'", + "'wildcards'", + "'window'", + "'with'", + "'without'", + "'word'", + "'words'", + "'xquery'", + "'zero-digit'", + "'{'", + "'{{'", + "'|'", + "'}'", + "'}}'" +]; + +// End + +},{}],"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js":[function(_dereq_,module,exports){ +// This file was generated on Thu Jul 24, 2014 15:01 (UTC+01) by REx v5.30 which is Copyright (c) 1979-2014 by Gunther Rademacher <grd@gmx.net> +// REx command line: XQueryTokenizer.ebnf -ll 2 -backtrack -tree -javascript -a xqlint + + // line 2 "XQueryTokenizer.ebnf" + var XQueryTokenizer = exports.XQueryTokenizer = function XQueryTokenizer(string, parsingEventHandler) + { + init(string, parsingEventHandler); + // line 9 "XQueryTokenizer.js" + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + end = e; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? XQueryTokenizer.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = XQueryTokenizer.getTokenSet(- e.getState()); + } + else + { + expected = [XQueryTokenizer.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_start = function() + { + eventHandler.startNonterminal("start", e0); + lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | + // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // S^WS | EOF | '!' | '"' | "'" | '(' | '(#' | '(:' | '(:~' | ')' | ',' | '.' | + // '/' | ':' | ';' | '<!--' | '<![CDATA[' | '<?' | '[' | ']' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'as' | 'ascending' | + // 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' | '{' | '|' | '}' + switch (l1) + { + case 55: // '<![CDATA[' + shift(55); // '<![CDATA[' + break; + case 54: // '<!--' + shift(54); // '<!--' + break; + case 56: // '<?' + shift(56); // '<?' + break; + case 40: // '(#' + shift(40); // '(#' + break; + case 42: // '(:~' + shift(42); // '(:~' + break; + case 41: // '(:' + shift(41); // '(:' + break; + case 35: // '"' + shift(35); // '"' + break; + case 38: // "'" + shift(38); // "'" + break; + case 274: // '}' + shift(274); // '}' + break; + case 271: // '{' + shift(271); // '{' + break; + case 39: // '(' + shift(39); // '(' + break; + case 43: // ')' + shift(43); // ')' + break; + case 49: // '/' + shift(49); // '/' + break; + case 62: // '[' + shift(62); // '[' + break; + case 63: // ']' + shift(63); // ']' + break; + case 46: // ',' + shift(46); // ',' + break; + case 48: // '.' + shift(48); // '.' + break; + case 53: // ';' + shift(53); // ';' + break; + case 51: // ':' + shift(51); // ':' + break; + case 34: // '!' + shift(34); // '!' + break; + case 273: // '|' + shift(273); // '|' + break; + case 2: // Annotation + shift(2); // Annotation + break; + case 1: // ModuleDecl + shift(1); // ModuleDecl + break; + case 3: // OptionDecl + shift(3); // OptionDecl + break; + case 12: // AttrTest + shift(12); // AttrTest + break; + case 13: // Wildcard + shift(13); // Wildcard + break; + case 15: // IntegerLiteral + shift(15); // IntegerLiteral + break; + case 16: // DecimalLiteral + shift(16); // DecimalLiteral + break; + case 17: // DoubleLiteral + shift(17); // DoubleLiteral + break; + case 5: // Variable + shift(5); // Variable + break; + case 6: // Tag + shift(6); // Tag + break; + case 4: // Operator + shift(4); // Operator + break; + case 33: // EOF + shift(33); // EOF + break; + default: + parse_EQName(); + } + eventHandler.endNonterminal("start", e0); + }; + + this.parse_StartTag = function() + { + eventHandler.startNonterminal("StartTag", e0); + lookahead1W(8); // QName | S^WS | EOF | '"' | "'" | '/>' | '=' | '>' + switch (l1) + { + case 58: // '>' + shift(58); // '>' + break; + case 50: // '/>' + shift(50); // '/>' + break; + case 27: // QName + shift(27); // QName + break; + case 57: // '=' + shift(57); // '=' + break; + case 35: // '"' + shift(35); // '"' + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("StartTag", e0); + }; + + this.parse_TagContent = function() + { + eventHandler.startNonterminal("TagContent", e0); + lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | + // '<!--' | '<![CDATA[' | '{' | '{{' | '}}' + switch (l1) + { + case 23: // ElementContentChar + shift(23); // ElementContentChar + break; + case 6: // Tag + shift(6); // Tag + break; + case 7: // EndTag + shift(7); // EndTag + break; + case 55: // '<![CDATA[' + shift(55); // '<![CDATA[' + break; + case 54: // '<!--' + shift(54); // '<!--' + break; + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 272: // '{{' + shift(272); // '{{' + break; + case 275: // '}}' + shift(275); // '}}' + break; + case 271: // '{' + shift(271); // '{' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("TagContent", e0); + }; + + this.parse_AposAttr = function() + { + eventHandler.startNonterminal("AposAttr", e0); + lookahead1(10); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | EOF | "'" | + // '{' | '{{' | '}}' + switch (l1) + { + case 20: // EscapeApos + shift(20); // EscapeApos + break; + case 25: // AposAttrContentChar + shift(25); // AposAttrContentChar + break; + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 272: // '{{' + shift(272); // '{{' + break; + case 275: // '}}' + shift(275); // '}}' + break; + case 271: // '{' + shift(271); // '{' + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("AposAttr", e0); + }; + + this.parse_QuotAttr = function() + { + eventHandler.startNonterminal("QuotAttr", e0); + lookahead1(9); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | EOF | '"' | + // '{' | '{{' | '}}' + switch (l1) + { + case 19: // EscapeQuot + shift(19); // EscapeQuot + break; + case 24: // QuotAttrContentChar + shift(24); // QuotAttrContentChar + break; + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 272: // '{{' + shift(272); // '{{' + break; + case 275: // '}}' + shift(275); // '}}' + break; + case 271: // '{' + shift(271); // '{' + break; + case 35: // '"' + shift(35); // '"' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("QuotAttr", e0); + }; + + this.parse_CData = function() + { + eventHandler.startNonterminal("CData", e0); + lookahead1(1); // CDataSectionContents | EOF | ']]>' + switch (l1) + { + case 11: // CDataSectionContents + shift(11); // CDataSectionContents + break; + case 64: // ']]>' + shift(64); // ']]>' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("CData", e0); + }; + + this.parse_XMLComment = function() + { + eventHandler.startNonterminal("XMLComment", e0); + lookahead1(0); // DirCommentContents | EOF | '-->' + switch (l1) + { + case 9: // DirCommentContents + shift(9); // DirCommentContents + break; + case 47: // '-->' + shift(47); // '-->' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("XMLComment", e0); + }; + + this.parse_PI = function() + { + eventHandler.startNonterminal("PI", e0); + lookahead1(3); // DirPIContents | EOF | '?' | '?>' + switch (l1) + { + case 10: // DirPIContents + shift(10); // DirPIContents + break; + case 59: // '?' + shift(59); // '?' + break; + case 60: // '?>' + shift(60); // '?>' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("PI", e0); + }; + + this.parse_Pragma = function() + { + eventHandler.startNonterminal("Pragma", e0); + lookahead1(2); // PragmaContents | EOF | '#' | '#)' + switch (l1) + { + case 8: // PragmaContents + shift(8); // PragmaContents + break; + case 36: // '#' + shift(36); // '#' + break; + case 37: // '#)' + shift(37); // '#)' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Pragma", e0); + }; + + this.parse_Comment = function() + { + eventHandler.startNonterminal("Comment", e0); + lookahead1(4); // CommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 52: // ':)' + shift(52); // ':)' + break; + case 41: // '(:' + shift(41); // '(:' + break; + case 30: // CommentContents + shift(30); // CommentContents + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Comment", e0); + }; + + this.parse_CommentDoc = function() + { + eventHandler.startNonterminal("CommentDoc", e0); + lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 31: // DocTag + shift(31); // DocTag + break; + case 32: // DocCommentContents + shift(32); // DocCommentContents + break; + case 52: // ':)' + shift(52); // ':)' + break; + case 41: // '(:' + shift(41); // '(:' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("CommentDoc", e0); + }; + + this.parse_QuotString = function() + { + eventHandler.startNonterminal("QuotString", e0); + lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 19: // EscapeQuot + shift(19); // EscapeQuot + break; + case 21: // QuotChar + shift(21); // QuotChar + break; + case 35: // '"' + shift(35); // '"' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("QuotString", e0); + }; + + this.parse_AposString = function() + { + eventHandler.startNonterminal("AposString", e0); + lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 20: // EscapeApos + shift(20); // EscapeApos + break; + case 22: // AposChar + shift(22); // AposChar + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("AposString", e0); + }; + + this.parse_Prefix = function() + { + eventHandler.startNonterminal("Prefix", e0); + lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + }; + + this.parse__EQName = function() + { + eventHandler.startNonterminal("_EQName", e0); + lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_EQName(); + eventHandler.endNonterminal("_EQName", e0); + }; + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + switch (l1) + { + case 77: // 'attribute' + shift(77); // 'attribute' + break; + case 91: // 'comment' + shift(91); // 'comment' + break; + case 115: // 'document-node' + shift(115); // 'document-node' + break; + case 116: // 'element' + shift(116); // 'element' + break; + case 119: // 'empty-sequence' + shift(119); // 'empty-sequence' + break; + case 140: // 'function' + shift(140); // 'function' + break; + case 147: // 'if' + shift(147); // 'if' + break; + case 160: // 'item' + shift(160); // 'item' + break; + case 180: // 'namespace-node' + shift(180); // 'namespace-node' + break; + case 186: // 'node' + shift(186); // 'node' + break; + case 211: // 'processing-instruction' + shift(211); // 'processing-instruction' + break; + case 221: // 'schema-attribute' + shift(221); // 'schema-attribute' + break; + case 222: // 'schema-element' + shift(222); // 'schema-element' + break; + case 238: // 'switch' + shift(238); // 'switch' + break; + case 239: // 'text' + shift(239); // 'text' + break; + case 248: // 'typeswitch' + shift(248); // 'typeswitch' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 14: // EQName^Token + shift(14); // EQName^Token + break; + case 65: // 'after' + shift(65); // 'after' + break; + case 68: // 'ancestor' + shift(68); // 'ancestor' + break; + case 69: // 'ancestor-or-self' + shift(69); // 'ancestor-or-self' + break; + case 70: // 'and' + shift(70); // 'and' + break; + case 74: // 'as' + shift(74); // 'as' + break; + case 75: // 'ascending' + shift(75); // 'ascending' + break; + case 79: // 'before' + shift(79); // 'before' + break; + case 83: // 'case' + shift(83); // 'case' + break; + case 84: // 'cast' + shift(84); // 'cast' + break; + case 85: // 'castable' + shift(85); // 'castable' + break; + case 88: // 'child' + shift(88); // 'child' + break; + case 89: // 'collation' + shift(89); // 'collation' + break; + case 98: // 'copy' + shift(98); // 'copy' + break; + case 100: // 'count' + shift(100); // 'count' + break; + case 103: // 'declare' + shift(103); // 'declare' + break; + case 104: // 'default' + shift(104); // 'default' + break; + case 105: // 'delete' + shift(105); // 'delete' + break; + case 106: // 'descendant' + shift(106); // 'descendant' + break; + case 107: // 'descendant-or-self' + shift(107); // 'descendant-or-self' + break; + case 108: // 'descending' + shift(108); // 'descending' + break; + case 113: // 'div' + shift(113); // 'div' + break; + case 114: // 'document' + shift(114); // 'document' + break; + case 117: // 'else' + shift(117); // 'else' + break; + case 118: // 'empty' + shift(118); // 'empty' + break; + case 121: // 'end' + shift(121); // 'end' + break; + case 123: // 'eq' + shift(123); // 'eq' + break; + case 124: // 'every' + shift(124); // 'every' + break; + case 126: // 'except' + shift(126); // 'except' + break; + case 129: // 'first' + shift(129); // 'first' + break; + case 130: // 'following' + shift(130); // 'following' + break; + case 131: // 'following-sibling' + shift(131); // 'following-sibling' + break; + case 132: // 'for' + shift(132); // 'for' + break; + case 141: // 'ge' + shift(141); // 'ge' + break; + case 143: // 'group' + shift(143); // 'group' + break; + case 145: // 'gt' + shift(145); // 'gt' + break; + case 146: // 'idiv' + shift(146); // 'idiv' + break; + case 148: // 'import' + shift(148); // 'import' + break; + case 154: // 'insert' + shift(154); // 'insert' + break; + case 155: // 'instance' + shift(155); // 'instance' + break; + case 157: // 'intersect' + shift(157); // 'intersect' + break; + case 158: // 'into' + shift(158); // 'into' + break; + case 159: // 'is' + shift(159); // 'is' + break; + case 165: // 'last' + shift(165); // 'last' + break; + case 167: // 'le' + shift(167); // 'le' + break; + case 169: // 'let' + shift(169); // 'let' + break; + case 173: // 'lt' + shift(173); // 'lt' + break; + case 175: // 'mod' + shift(175); // 'mod' + break; + case 176: // 'modify' + shift(176); // 'modify' + break; + case 177: // 'module' + shift(177); // 'module' + break; + case 179: // 'namespace' + shift(179); // 'namespace' + break; + case 181: // 'ne' + shift(181); // 'ne' + break; + case 193: // 'only' + shift(193); // 'only' + break; + case 195: // 'or' + shift(195); // 'or' + break; + case 196: // 'order' + shift(196); // 'order' + break; + case 197: // 'ordered' + shift(197); // 'ordered' + break; + case 201: // 'parent' + shift(201); // 'parent' + break; + case 207: // 'preceding' + shift(207); // 'preceding' + break; + case 208: // 'preceding-sibling' + shift(208); // 'preceding-sibling' + break; + case 213: // 'rename' + shift(213); // 'rename' + break; + case 214: // 'replace' + shift(214); // 'replace' + break; + case 215: // 'return' + shift(215); // 'return' + break; + case 219: // 'satisfies' + shift(219); // 'satisfies' + break; + case 224: // 'self' + shift(224); // 'self' + break; + case 230: // 'some' + shift(230); // 'some' + break; + case 231: // 'stable' + shift(231); // 'stable' + break; + case 232: // 'start' + shift(232); // 'start' + break; + case 243: // 'to' + shift(243); // 'to' + break; + case 244: // 'treat' + shift(244); // 'treat' + break; + case 245: // 'try' + shift(245); // 'try' + break; + case 249: // 'union' + shift(249); // 'union' + break; + case 251: // 'unordered' + shift(251); // 'unordered' + break; + case 255: // 'validate' + shift(255); // 'validate' + break; + case 261: // 'where' + shift(261); // 'where' + break; + case 265: // 'with' + shift(265); // 'with' + break; + case 269: // 'xquery' + shift(269); // 'xquery' + break; + case 67: // 'allowing' + shift(67); // 'allowing' + break; + case 76: // 'at' + shift(76); // 'at' + break; + case 78: // 'base-uri' + shift(78); // 'base-uri' + break; + case 80: // 'boundary-space' + shift(80); // 'boundary-space' + break; + case 81: // 'break' + shift(81); // 'break' + break; + case 86: // 'catch' + shift(86); // 'catch' + break; + case 93: // 'construction' + shift(93); // 'construction' + break; + case 96: // 'context' + shift(96); // 'context' + break; + case 97: // 'continue' + shift(97); // 'continue' + break; + case 99: // 'copy-namespaces' + shift(99); // 'copy-namespaces' + break; + case 101: // 'decimal-format' + shift(101); // 'decimal-format' + break; + case 120: // 'encoding' + shift(120); // 'encoding' + break; + case 127: // 'exit' + shift(127); // 'exit' + break; + case 128: // 'external' + shift(128); // 'external' + break; + case 136: // 'ft-option' + shift(136); // 'ft-option' + break; + case 149: // 'in' + shift(149); // 'in' + break; + case 150: // 'index' + shift(150); // 'index' + break; + case 156: // 'integrity' + shift(156); // 'integrity' + break; + case 166: // 'lax' + shift(166); // 'lax' + break; + case 187: // 'nodes' + shift(187); // 'nodes' + break; + case 194: // 'option' + shift(194); // 'option' + break; + case 198: // 'ordering' + shift(198); // 'ordering' + break; + case 217: // 'revalidation' + shift(217); // 'revalidation' + break; + case 220: // 'schema' + shift(220); // 'schema' + break; + case 223: // 'score' + shift(223); // 'score' + break; + case 229: // 'sliding' + shift(229); // 'sliding' + break; + case 235: // 'strict' + shift(235); // 'strict' + break; + case 246: // 'tumbling' + shift(246); // 'tumbling' + break; + case 247: // 'type' + shift(247); // 'type' + break; + case 252: // 'updating' + shift(252); // 'updating' + break; + case 256: // 'value' + shift(256); // 'value' + break; + case 257: // 'variable' + shift(257); // 'variable' + break; + case 258: // 'version' + shift(258); // 'version' + break; + case 262: // 'while' + shift(262); // 'while' + break; + case 92: // 'constraint' + shift(92); // 'constraint' + break; + case 171: // 'loop' + shift(171); // 'loop' + break; + default: + shift(216); // 'returning' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 26: // NCName^Token + shift(26); // NCName^Token + break; + case 65: // 'after' + shift(65); // 'after' + break; + case 70: // 'and' + shift(70); // 'and' + break; + case 74: // 'as' + shift(74); // 'as' + break; + case 75: // 'ascending' + shift(75); // 'ascending' + break; + case 79: // 'before' + shift(79); // 'before' + break; + case 83: // 'case' + shift(83); // 'case' + break; + case 84: // 'cast' + shift(84); // 'cast' + break; + case 85: // 'castable' + shift(85); // 'castable' + break; + case 89: // 'collation' + shift(89); // 'collation' + break; + case 100: // 'count' + shift(100); // 'count' + break; + case 104: // 'default' + shift(104); // 'default' + break; + case 108: // 'descending' + shift(108); // 'descending' + break; + case 113: // 'div' + shift(113); // 'div' + break; + case 117: // 'else' + shift(117); // 'else' + break; + case 118: // 'empty' + shift(118); // 'empty' + break; + case 121: // 'end' + shift(121); // 'end' + break; + case 123: // 'eq' + shift(123); // 'eq' + break; + case 126: // 'except' + shift(126); // 'except' + break; + case 132: // 'for' + shift(132); // 'for' + break; + case 141: // 'ge' + shift(141); // 'ge' + break; + case 143: // 'group' + shift(143); // 'group' + break; + case 145: // 'gt' + shift(145); // 'gt' + break; + case 146: // 'idiv' + shift(146); // 'idiv' + break; + case 155: // 'instance' + shift(155); // 'instance' + break; + case 157: // 'intersect' + shift(157); // 'intersect' + break; + case 158: // 'into' + shift(158); // 'into' + break; + case 159: // 'is' + shift(159); // 'is' + break; + case 167: // 'le' + shift(167); // 'le' + break; + case 169: // 'let' + shift(169); // 'let' + break; + case 173: // 'lt' + shift(173); // 'lt' + break; + case 175: // 'mod' + shift(175); // 'mod' + break; + case 176: // 'modify' + shift(176); // 'modify' + break; + case 181: // 'ne' + shift(181); // 'ne' + break; + case 193: // 'only' + shift(193); // 'only' + break; + case 195: // 'or' + shift(195); // 'or' + break; + case 196: // 'order' + shift(196); // 'order' + break; + case 215: // 'return' + shift(215); // 'return' + break; + case 219: // 'satisfies' + shift(219); // 'satisfies' + break; + case 231: // 'stable' + shift(231); // 'stable' + break; + case 232: // 'start' + shift(232); // 'start' + break; + case 243: // 'to' + shift(243); // 'to' + break; + case 244: // 'treat' + shift(244); // 'treat' + break; + case 249: // 'union' + shift(249); // 'union' + break; + case 261: // 'where' + shift(261); // 'where' + break; + case 265: // 'with' + shift(265); // 'with' + break; + case 68: // 'ancestor' + shift(68); // 'ancestor' + break; + case 69: // 'ancestor-or-self' + shift(69); // 'ancestor-or-self' + break; + case 77: // 'attribute' + shift(77); // 'attribute' + break; + case 88: // 'child' + shift(88); // 'child' + break; + case 91: // 'comment' + shift(91); // 'comment' + break; + case 98: // 'copy' + shift(98); // 'copy' + break; + case 103: // 'declare' + shift(103); // 'declare' + break; + case 105: // 'delete' + shift(105); // 'delete' + break; + case 106: // 'descendant' + shift(106); // 'descendant' + break; + case 107: // 'descendant-or-self' + shift(107); // 'descendant-or-self' + break; + case 114: // 'document' + shift(114); // 'document' + break; + case 115: // 'document-node' + shift(115); // 'document-node' + break; + case 116: // 'element' + shift(116); // 'element' + break; + case 119: // 'empty-sequence' + shift(119); // 'empty-sequence' + break; + case 124: // 'every' + shift(124); // 'every' + break; + case 129: // 'first' + shift(129); // 'first' + break; + case 130: // 'following' + shift(130); // 'following' + break; + case 131: // 'following-sibling' + shift(131); // 'following-sibling' + break; + case 140: // 'function' + shift(140); // 'function' + break; + case 147: // 'if' + shift(147); // 'if' + break; + case 148: // 'import' + shift(148); // 'import' + break; + case 154: // 'insert' + shift(154); // 'insert' + break; + case 160: // 'item' + shift(160); // 'item' + break; + case 165: // 'last' + shift(165); // 'last' + break; + case 177: // 'module' + shift(177); // 'module' + break; + case 179: // 'namespace' + shift(179); // 'namespace' + break; + case 180: // 'namespace-node' + shift(180); // 'namespace-node' + break; + case 186: // 'node' + shift(186); // 'node' + break; + case 197: // 'ordered' + shift(197); // 'ordered' + break; + case 201: // 'parent' + shift(201); // 'parent' + break; + case 207: // 'preceding' + shift(207); // 'preceding' + break; + case 208: // 'preceding-sibling' + shift(208); // 'preceding-sibling' + break; + case 211: // 'processing-instruction' + shift(211); // 'processing-instruction' + break; + case 213: // 'rename' + shift(213); // 'rename' + break; + case 214: // 'replace' + shift(214); // 'replace' + break; + case 221: // 'schema-attribute' + shift(221); // 'schema-attribute' + break; + case 222: // 'schema-element' + shift(222); // 'schema-element' + break; + case 224: // 'self' + shift(224); // 'self' + break; + case 230: // 'some' + shift(230); // 'some' + break; + case 238: // 'switch' + shift(238); // 'switch' + break; + case 239: // 'text' + shift(239); // 'text' + break; + case 245: // 'try' + shift(245); // 'try' + break; + case 248: // 'typeswitch' + shift(248); // 'typeswitch' + break; + case 251: // 'unordered' + shift(251); // 'unordered' + break; + case 255: // 'validate' + shift(255); // 'validate' + break; + case 257: // 'variable' + shift(257); // 'variable' + break; + case 269: // 'xquery' + shift(269); // 'xquery' + break; + case 67: // 'allowing' + shift(67); // 'allowing' + break; + case 76: // 'at' + shift(76); // 'at' + break; + case 78: // 'base-uri' + shift(78); // 'base-uri' + break; + case 80: // 'boundary-space' + shift(80); // 'boundary-space' + break; + case 81: // 'break' + shift(81); // 'break' + break; + case 86: // 'catch' + shift(86); // 'catch' + break; + case 93: // 'construction' + shift(93); // 'construction' + break; + case 96: // 'context' + shift(96); // 'context' + break; + case 97: // 'continue' + shift(97); // 'continue' + break; + case 99: // 'copy-namespaces' + shift(99); // 'copy-namespaces' + break; + case 101: // 'decimal-format' + shift(101); // 'decimal-format' + break; + case 120: // 'encoding' + shift(120); // 'encoding' + break; + case 127: // 'exit' + shift(127); // 'exit' + break; + case 128: // 'external' + shift(128); // 'external' + break; + case 136: // 'ft-option' + shift(136); // 'ft-option' + break; + case 149: // 'in' + shift(149); // 'in' + break; + case 150: // 'index' + shift(150); // 'index' + break; + case 156: // 'integrity' + shift(156); // 'integrity' + break; + case 166: // 'lax' + shift(166); // 'lax' + break; + case 187: // 'nodes' + shift(187); // 'nodes' + break; + case 194: // 'option' + shift(194); // 'option' + break; + case 198: // 'ordering' + shift(198); // 'ordering' + break; + case 217: // 'revalidation' + shift(217); // 'revalidation' + break; + case 220: // 'schema' + shift(220); // 'schema' + break; + case 223: // 'score' + shift(223); // 'score' + break; + case 229: // 'sliding' + shift(229); // 'sliding' + break; + case 235: // 'strict' + shift(235); // 'strict' + break; + case 246: // 'tumbling' + shift(246); // 'tumbling' + break; + case 247: // 'type' + shift(247); // 'type' + break; + case 252: // 'updating' + shift(252); // 'updating' + break; + case 256: // 'value' + shift(256); // 'value' + break; + case 258: // 'version' + shift(258); // 'version' + break; + case 262: // 'while' + shift(262); // 'while' + break; + case 92: // 'constraint' + shift(92); // 'constraint' + break; + case 171: // 'loop' + shift(171); // 'loop' + break; + default: + shift(216); // 'returning' + } + eventHandler.endNonterminal("NCName", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(XQueryTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = 0; + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function whitespace() + { + if (e0 != b1) + { + b0 = e0; + e0 = b1; + eventHandler.whitespace(b0, e0); + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 28) // S^WS + { + break; + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function error(b, e, s, l, t) + { + throw new self.ParseException(b, e, s, l, t); + } + + var lk, b0, e0; + var l1, b1, e1; + var eventHandler; + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = XQueryTokenizer.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = XQueryTokenizer.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = XQueryTokenizer.MAP1[(c0 & 15) + XQueryTokenizer.MAP1[(c1 & 31) + XQueryTokenizer.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (XQueryTokenizer.MAP2[m] > c0) hi = m - 1; + else if (XQueryTokenizer.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = XQueryTokenizer.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = XQueryTokenizer.TRANSITION[(i0 & 15) + XQueryTokenizer.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +XQueryTokenizer.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 276; i += 32) + { + var j = i; + var i0 = (i >> 5) * 2062 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = XQueryTokenizer.EXPECTED[(i0 & 3) + XQueryTokenizer.EXPECTED[(i1 & 3) + XQueryTokenizer.EXPECTED[(i2 & 3) + XQueryTokenizer.EXPECTED[i2 >> 2]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(XQueryTokenizer.TOKEN[j]); + } + } + } + return set; +}; + +XQueryTokenizer.MAP0 = +[ + /* 0 */ 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, + /* 36 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, + /* 64 */ 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, + /* 91 */ 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + /* 118 */ 57, 58, 59, 60, 31, 61, 62, 63, 64, 35 +]; + +XQueryTokenizer.MAP1 = +[ + /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, + /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 105 */ 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, + /* 126 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, + /* 147 */ 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, + /* 168 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, + /* 189 */ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + /* 210 */ 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + /* 231 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, + /* 256 */ 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 290 */ 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, + /* 317 */ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + /* 344 */ 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, + /* 371 */ 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, + /* 398 */ 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, + /* 425 */ 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 +]; + +XQueryTokenizer.MAP2 = +[ + /* 0 */ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, + /* 17 */ 35 +]; + +XQueryTokenizer.INITIAL = +[ + /* 0 */ 1, 2, 36867, 45060, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +XQueryTokenizer.TRANSITION = +[ + /* 0 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 30 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 45 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 60 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 75 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 90 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 105 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 120 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 135 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 150 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 165 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 180 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 195 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 210 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 225 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 240 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 255 */ 17590, 22908, 18836, 17152, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, + /* 270 */ 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, + /* 285 */ 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, + /* 300 */ 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, + /* 315 */ 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, + /* 330 */ 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, + /* 345 */ 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, + /* 360 */ 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, + /* 375 */ 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, + /* 390 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 405 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 420 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 435 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 450 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 465 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 480 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 495 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 510 */ 17590, 17590, 18579, 21711, 17152, 19008, 19233, 20367, 19008, 28684, 30763, 36437, 17330, 17349, 18921, + /* 525 */ 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, + /* 540 */ 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, + /* 555 */ 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, + /* 570 */ 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, + /* 585 */ 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, + /* 600 */ 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, + /* 615 */ 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, + /* 630 */ 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, + /* 645 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 660 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 675 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 690 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 705 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 720 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 735 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 750 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 765 */ 17590, 17590, 17590, 20116, 18836, 18637, 19008, 19233, 21267, 19008, 17173, 30763, 36437, 17330, 17349, + /* 780 */ 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, + /* 795 */ 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, + /* 810 */ 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, + /* 825 */ 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, + /* 840 */ 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, + /* 855 */ 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, + /* 870 */ 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, + /* 885 */ 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, + /* 900 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 915 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 930 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 945 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 960 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 975 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 990 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1005 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1020 */ 17590, 17590, 17590, 17590, 18763, 18778, 18794, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, + /* 1035 */ 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, + /* 1050 */ 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, + /* 1065 */ 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, + /* 1080 */ 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, + /* 1095 */ 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, + /* 1110 */ 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, + /* 1125 */ 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, + /* 1140 */ 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, + /* 1155 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1170 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1185 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1200 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1215 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1230 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1245 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1260 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1275 */ 17590, 17590, 17590, 17590, 17590, 18821, 22923, 18906, 19008, 19233, 17431, 19008, 17173, 30763, 36437, + /* 1290 */ 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18937, 21880, 18649, + /* 1305 */ 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19054, 17311, 18658, 18999, 19008, 17447, + /* 1320 */ 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 18953, 21887, 17504, 17527, + /* 1335 */ 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, + /* 1350 */ 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, + /* 1365 */ 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, + /* 1380 */ 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, + /* 1395 */ 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, + /* 1410 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1425 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1440 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1455 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1470 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1485 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1500 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1515 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1530 */ 17590, 17590, 17590, 17590, 17590, 17590, 21843, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, + /* 1545 */ 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, + /* 1560 */ 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, + /* 1575 */ 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, + /* 1590 */ 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, + /* 1605 */ 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, + /* 1620 */ 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, + /* 1635 */ 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, + /* 1650 */ 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, + /* 1665 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1680 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1695 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1710 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1725 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1740 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1755 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1770 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1785 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21696, 18836, 18987, 19008, 19233, 20367, 19008, 17173, + /* 1800 */ 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, + /* 1815 */ 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, + /* 1830 */ 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, + /* 1845 */ 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, + /* 1860 */ 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, + /* 1875 */ 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, + /* 1890 */ 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, + /* 1905 */ 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, + /* 1920 */ 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1935 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1950 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1965 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1980 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1995 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2010 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2025 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2040 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22429, 20131, 18720, 19008, 19233, 20367, 19008, + /* 2055 */ 17173, 23559, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 18087, 17308, 17327, 17346, 18918, + /* 2070 */ 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 21242, 19111, 17311, 18658, + /* 2085 */ 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, + /* 2100 */ 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, + /* 2115 */ 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, + /* 2130 */ 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, + /* 2145 */ 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, + /* 2160 */ 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, + /* 2175 */ 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2190 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2205 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2220 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2235 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2250 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2265 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2280 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2295 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19024, 18836, 18609, 19008, 19233, 20367, + /* 2310 */ 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, + /* 2325 */ 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, + /* 2340 */ 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, + /* 2355 */ 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, + /* 2370 */ 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, + /* 2385 */ 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, + /* 2400 */ 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, + /* 2415 */ 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, + /* 2430 */ 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2445 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2460 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2475 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2490 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2505 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2520 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2535 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2550 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19081, 22444, 18987, 19008, 19233, + /* 2565 */ 20367, 19008, 19065, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, + /* 2580 */ 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, + /* 2595 */ 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, + /* 2610 */ 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, + /* 2625 */ 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, + /* 2640 */ 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, + /* 2655 */ 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, + /* 2670 */ 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, + /* 2685 */ 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2700 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2715 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2730 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2745 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2760 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2775 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2790 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2805 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21992, 22007, 18987, 19008, + /* 2820 */ 19233, 20367, 19008, 18690, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, + /* 2835 */ 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, + /* 2850 */ 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, + /* 2865 */ 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, + /* 2880 */ 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, + /* 2895 */ 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, + /* 2910 */ 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, + /* 2925 */ 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, + /* 2940 */ 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2955 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2970 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2985 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3000 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3015 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3030 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3045 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3060 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22414, 18836, 18987, + /* 3075 */ 19008, 19233, 30651, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19138, + /* 3090 */ 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, + /* 3105 */ 18127, 19280, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, + /* 3120 */ 18326, 17543, 17559, 19172, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, + /* 3135 */ 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, + /* 3150 */ 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, + /* 3165 */ 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, + /* 3180 */ 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, + /* 3195 */ 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3210 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3225 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3240 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3255 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3270 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3285 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3300 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3315 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21783, 18836, + /* 3330 */ 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, + /* 3345 */ 19218, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, + /* 3360 */ 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, + /* 3375 */ 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, + /* 3390 */ 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, + /* 3405 */ 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, + /* 3420 */ 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, + /* 3435 */ 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, + /* 3450 */ 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3465 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3480 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3495 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3510 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3525 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3540 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3555 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3570 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21651, + /* 3585 */ 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, + /* 3600 */ 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, + /* 3615 */ 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, + /* 3630 */ 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, + /* 3645 */ 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, + /* 3660 */ 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, + /* 3675 */ 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, + /* 3690 */ 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, + /* 3705 */ 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3720 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3735 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3750 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3765 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3780 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3795 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3810 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3825 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3840 */ 19249, 19265, 19307, 18888, 27857, 30536, 24401, 31444, 23357, 18888, 19351, 18888, 18890, 27211, 19370, + /* 3855 */ 27211, 27211, 19392, 24401, 31911, 24401, 24401, 25467, 18888, 18888, 18888, 18888, 18888, 25783, 27211, + /* 3870 */ 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 17994, 24060, 18888, 18888, 18888, + /* 3885 */ 18890, 19468, 27211, 27211, 27211, 27211, 19484, 35367, 19520, 24401, 24401, 24401, 19628, 18888, 29855, + /* 3900 */ 18888, 18888, 23086, 27211, 19538, 27211, 27211, 30756, 24012, 24401, 19560, 24401, 24401, 26750, 18888, + /* 3915 */ 18888, 19327, 27855, 27211, 27211, 19580, 17590, 24017, 24401, 24401, 19600, 25665, 18888, 18888, 28518, + /* 3930 */ 27211, 27212, 24016, 19620, 19868, 28435, 25722, 18889, 19644, 27211, 32888, 35852, 19868, 31018, 19694, + /* 3945 */ 19376, 19717, 22215, 19735, 22098, 19751, 35203, 19776, 19797, 19817, 19840, 25783, 31738, 24135, 19701, + /* 3960 */ 19856, 31015, 23516, 31008, 28311, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3975 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3990 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4005 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4020 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4035 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4050 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4065 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4080 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4095 */ 17590, 21768, 18836, 19307, 18888, 27857, 27904, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, + /* 4110 */ 27211, 27211, 27211, 19888, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, + /* 4125 */ 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, + /* 4140 */ 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, + /* 4155 */ 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, + /* 4170 */ 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, + /* 4185 */ 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, + /* 4200 */ 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, + /* 4215 */ 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, + /* 4230 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4245 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4260 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4275 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4290 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4305 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4320 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4335 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4350 */ 17590, 17590, 22399, 18836, 19918, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, + /* 4365 */ 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, + /* 4380 */ 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, + /* 4395 */ 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, + /* 4410 */ 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, + /* 4425 */ 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, + /* 4440 */ 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, + /* 4455 */ 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, + /* 4470 */ 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, + /* 4485 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4500 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4515 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4530 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4545 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4560 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4575 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4590 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4605 */ 17590, 17590, 17590, 21666, 18836, 19307, 18888, 27857, 27525, 24401, 29183, 21467, 18888, 18888, 18888, + /* 4620 */ 18890, 27211, 27211, 27211, 27211, 19946, 24401, 24401, 24401, 24401, 32382, 18888, 18888, 18888, 18888, + /* 4635 */ 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19998, 24401, 24401, 24401, 24401, 31500, 18467, 18888, + /* 4650 */ 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 20021, 24401, 24401, 24401, 24401, 24401, + /* 4665 */ 34271, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 32926, 29908, 24401, 24401, 24401, + /* 4680 */ 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 20050, 22968, 24401, 24401, 24401, 18887, + /* 4695 */ 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, + /* 4710 */ 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, + /* 4725 */ 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, + /* 4740 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4755 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4770 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4785 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4800 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4815 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4830 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4845 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4860 */ 17590, 17590, 17590, 17590, 20101, 19039, 20191, 20412, 20903, 17569, 20309, 20872, 25633, 20623, 20505, + /* 4875 */ 20218, 20242, 17189, 17208, 17281, 20355, 20265, 20306, 20328, 20383, 22490, 20796, 20619, 21354, 20654, + /* 4890 */ 20410, 20956, 21232, 20765, 17421, 20535, 17192, 18127, 22459, 20312, 25531, 22470, 20309, 20428, 18964, + /* 4905 */ 20466, 20491, 21342, 21070, 20521, 20682, 17714, 18326, 17543, 17559, 17585, 22497, 20559, 19504, 20279, + /* 4920 */ 20575, 20290, 20475, 20604, 20639, 20226, 20670, 17661, 21190, 17703, 21176, 17730, 19494, 20698, 20711, + /* 4935 */ 22480, 21046, 21116, 18971, 21130, 20727, 20755, 17675, 17753, 17832, 17590, 25518, 20394, 20781, 20831, + /* 4950 */ 20202, 20847, 21401, 17292, 17934, 17979, 18549, 20863, 20588, 25542, 20888, 20919, 18072, 18117, 20935, + /* 4965 */ 20972, 21032, 21062, 21086, 18239, 21102, 18563, 21146, 21162, 21206, 18351, 20949, 20902, 18340, 21222, + /* 4980 */ 21258, 21283, 18360, 20249, 17405, 21295, 21311, 21327, 20739, 20343, 21370, 21386, 21417, 17590, 17590, + /* 4995 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5010 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5025 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5040 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5055 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5070 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5085 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5100 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5115 */ 17590, 17590, 17590, 17590, 17590, 21977, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, + /* 5130 */ 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 21452, 21880, 18649, + /* 5145 */ 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 21504, + /* 5160 */ 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, + /* 5175 */ 17258, 36418, 36501, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 28674, 21946, + /* 5190 */ 17617, 36473, 18223, 17237, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 21575, 21534, 17481, 19156, + /* 5205 */ 17864, 18731, 17918, 36551, 17292, 17934, 21560, 30628, 18681, 18405, 18621, 18039, 18056, 18072, 18117, + /* 5220 */ 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, + /* 5235 */ 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, + /* 5250 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5265 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5280 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5295 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5310 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5325 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5340 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5355 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5370 */ 17590, 17590, 17590, 17590, 17590, 17590, 21798, 18836, 21612, 19008, 19233, 20367, 19008, 17173, 30763, + /* 5385 */ 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, + /* 5400 */ 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, + /* 5415 */ 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, + /* 5430 */ 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, + /* 5445 */ 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, + /* 5460 */ 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, + /* 5475 */ 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, + /* 5490 */ 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, + /* 5505 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5520 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5535 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5550 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5565 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5580 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5595 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5610 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5625 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21636, 18836, 18987, 19008, 19233, 17902, 19008, 17173, + /* 5640 */ 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, + /* 5655 */ 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, + /* 5670 */ 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, + /* 5685 */ 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, + /* 5700 */ 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, + /* 5715 */ 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, + /* 5730 */ 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, + /* 5745 */ 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, + /* 5760 */ 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5775 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5790 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5805 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5820 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5835 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5850 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5865 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5880 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21753, 19096, 21903, 19008, 19233, 20367, 19008, + /* 5895 */ 19291, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, + /* 5910 */ 17379, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, + /* 5925 */ 18999, 19008, 17447, 21931, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, + /* 5940 */ 21887, 17504, 17527, 17258, 36418, 18280, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, + /* 5955 */ 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, + /* 5970 */ 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, + /* 5985 */ 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, + /* 6000 */ 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, + /* 6015 */ 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6030 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6045 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6060 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6075 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6090 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6105 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6120 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6135 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21962, 18594, 18987, 19008, 19233, 22043, + /* 6150 */ 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, + /* 6165 */ 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, + /* 6180 */ 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, + /* 6195 */ 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, + /* 6210 */ 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, + /* 6225 */ 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, + /* 6240 */ 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, + /* 6255 */ 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, + /* 6270 */ 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6285 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6300 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6315 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6330 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6345 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6360 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6375 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6390 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21681, 21858, 18987, 19008, 19233, + /* 6405 */ 20367, 19008, 21544, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, + /* 6420 */ 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, + /* 6435 */ 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, + /* 6450 */ 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, + /* 6465 */ 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, + /* 6480 */ 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, + /* 6495 */ 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, + /* 6510 */ 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, + /* 6525 */ 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6540 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6555 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6570 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6585 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6600 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6615 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6630 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6645 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, + /* 6660 */ 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, + /* 6675 */ 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, + /* 6690 */ 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, + /* 6705 */ 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 32319, 18888, 18888, 18888, 18888, 23086, 27211, + /* 6720 */ 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, + /* 6735 */ 27211, 27211, 22187, 22968, 24401, 24401, 24401, 22231, 18888, 18888, 27211, 27211, 35779, 20080, 24402, + /* 6750 */ 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, + /* 6765 */ 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, + /* 6780 */ 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6795 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6810 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6825 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6840 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6855 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6870 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6885 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6900 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, + /* 6915 */ 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, + /* 6930 */ 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, + /* 6945 */ 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, + /* 6960 */ 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, + /* 6975 */ 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, + /* 6990 */ 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, + /* 7005 */ 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, + /* 7020 */ 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, + /* 7035 */ 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7050 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7065 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7080 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7095 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7110 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7125 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7140 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7155 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, + /* 7170 */ 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, + /* 7185 */ 22121, 24401, 24401, 24401, 24401, 31678, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, + /* 7200 */ 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, + /* 7215 */ 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, + /* 7230 */ 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, + /* 7245 */ 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, + /* 7260 */ 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, + /* 7275 */ 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, + /* 7290 */ 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7305 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7320 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7335 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7350 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7365 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7380 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7395 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7410 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, + /* 7425 */ 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, + /* 7440 */ 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, + /* 7455 */ 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 33588, 31693, 18888, 18888, 18888, 18888, 18890, + /* 7470 */ 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, + /* 7485 */ 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, + /* 7500 */ 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, + /* 7515 */ 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, + /* 7530 */ 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, + /* 7545 */ 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7560 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7575 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7590 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7605 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7620 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7635 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7650 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7665 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7680 */ 22339, 18836, 22059, 18888, 27857, 35019, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, + /* 7695 */ 27211, 27211, 22248, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, + /* 7710 */ 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, + /* 7725 */ 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, + /* 7740 */ 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, + /* 7755 */ 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, + /* 7770 */ 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, + /* 7785 */ 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, + /* 7800 */ 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7815 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7830 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7845 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7860 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7875 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7890 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7905 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7920 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7935 */ 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, + /* 7950 */ 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, + /* 7965 */ 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, + /* 7980 */ 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, + /* 7995 */ 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, + /* 8010 */ 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, + /* 8025 */ 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, + /* 8040 */ 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, + /* 8055 */ 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, + /* 8070 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8085 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8100 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8115 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8130 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8145 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8160 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8175 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8190 */ 17590, 17590, 22324, 18836, 22059, 18888, 27857, 30501, 24401, 29183, 22087, 18888, 18888, 18888, 18890, + /* 8205 */ 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, + /* 8220 */ 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, + /* 8235 */ 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, + /* 8250 */ 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, + /* 8265 */ 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, + /* 8280 */ 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, + /* 8295 */ 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, + /* 8310 */ 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, + /* 8325 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8340 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8355 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8370 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8385 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8400 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8415 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8430 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8445 */ 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, + /* 8460 */ 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, + /* 8475 */ 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, + /* 8490 */ 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, + /* 8505 */ 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, + /* 8520 */ 24401, 34365, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, + /* 8535 */ 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, + /* 8550 */ 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, + /* 8565 */ 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, + /* 8580 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8595 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8610 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8625 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8640 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8655 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8670 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8685 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8700 */ 17590, 17590, 17590, 17590, 22354, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 27086, 36437, 17330, + /* 8715 */ 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, + /* 8730 */ 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, + /* 8745 */ 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, + /* 8760 */ 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, + /* 8775 */ 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, + /* 8790 */ 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 19930, 18039, 18056, 18072, 18117, 18143, + /* 8805 */ 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, + /* 8820 */ 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, + /* 8835 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8850 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8865 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8880 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8895 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8910 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8925 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8940 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8955 */ 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, + /* 8970 */ 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, + /* 8985 */ 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, + /* 9000 */ 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, + /* 9015 */ 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, + /* 9030 */ 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, + /* 9045 */ 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, + /* 9060 */ 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, + /* 9075 */ 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, + /* 9090 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9105 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9120 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9135 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9150 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9165 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9180 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9195 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9210 */ 17590, 17590, 17590, 17590, 17590, 17590, 22309, 22513, 18987, 19008, 19233, 20367, 19008, 19122, 30763, + /* 9225 */ 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 22544, 21880, + /* 9240 */ 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, + /* 9255 */ 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, + /* 9270 */ 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, + /* 9285 */ 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, + /* 9300 */ 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, + /* 9315 */ 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, + /* 9330 */ 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, + /* 9345 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9360 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9375 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9390 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9405 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9420 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9435 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9450 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9465 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22608, 18836, 22988, 23004, 27585, 23020, 23036, 23067, + /* 9480 */ 22087, 18888, 18888, 18888, 23083, 27211, 27211, 27211, 23102, 22121, 24401, 24401, 24401, 23122, 31386, + /* 9495 */ 26154, 19674, 18888, 28119, 28232, 19424, 23705, 27211, 27211, 23142, 23173, 23189, 23212, 24401, 24401, + /* 9510 */ 23246, 34427, 31693, 23262, 18888, 23290, 23308, 27783, 27620, 23327, 35263, 35107, 33383, 23346, 18193, + /* 9525 */ 23393, 32748, 23968, 24401, 23414, 35153, 23463, 18888, 33913, 23442, 23482, 27211, 27211, 23532, 23552, + /* 9540 */ 21431, 23575, 24401, 24401, 23604, 26095, 23635, 23657, 18888, 33482, 23685, 33251, 27211, 22187, 18851, + /* 9555 */ 23721, 35536, 24401, 18887, 23750, 32641, 27211, 23769, 23787, 20080, 33012, 24384, 25659, 18888, 18889, + /* 9570 */ 27211, 27211, 19719, 23889, 23803, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 28224, + /* 9585 */ 31826, 23823, 26917, 34978, 23850, 26493, 25782, 23878, 23914, 23516, 31008, 22105, 19419, 27963, 19659, + /* 9600 */ 29781, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9615 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9630 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9645 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9660 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9675 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9690 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9705 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9720 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22623, 18836, 22059, 18888, 27857, 34097, 24401, + /* 9735 */ 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, + /* 9750 */ 30613, 18888, 18888, 18888, 18888, 28909, 25783, 27211, 27211, 27211, 34048, 23933, 22164, 24401, 24401, + /* 9765 */ 24401, 28409, 23949, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, + /* 9780 */ 24401, 24401, 24401, 24401, 24401, 31181, 26583, 18888, 18888, 18888, 35585, 23984, 27211, 27211, 27211, + /* 9795 */ 24005, 22201, 24033, 24401, 24401, 24401, 24052, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, + /* 9810 */ 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, + /* 9825 */ 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, + /* 9840 */ 31017, 27856, 31741, 26496, 24076, 24126, 24151, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, + /* 9855 */ 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9870 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9885 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9900 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9915 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9930 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9945 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9960 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9975 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22638, 18836, 22059, 19678, 27857, 24185, + /* 9990 */ 24401, 24201, 24217, 26592, 18888, 18888, 18890, 24252, 24268, 27211, 27211, 22121, 24287, 24303, 24401, + /* 10005 */ 24401, 30613, 19781, 35432, 36007, 32649, 18888, 25783, 24322, 28966, 23771, 27211, 35072, 22164, 24358, + /* 10020 */ 32106, 26829, 24400, 31500, 31693, 18888, 18888, 18888, 24801, 18890, 27211, 27211, 27211, 27211, 24418, + /* 10035 */ 19484, 24401, 24401, 24401, 24401, 20167, 31181, 18888, 18888, 18888, 27833, 23086, 27211, 27211, 33540, + /* 10050 */ 27211, 30756, 21431, 24401, 24401, 22972, 24401, 26095, 18888, 36131, 18888, 27855, 27211, 24440, 27211, + /* 10065 */ 22187, 22968, 24401, 24459, 24401, 31699, 28454, 18888, 34528, 34570, 35779, 24478, 24402, 24494, 25659, + /* 10080 */ 18888, 36228, 27211, 27211, 24515, 30981, 23734, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, + /* 10095 */ 24538, 31017, 27856, 31741, 30059, 23377, 24563, 19837, 25782, 19760, 31015, 23516, 25374, 22105, 19419, + /* 10110 */ 29793, 24579, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10125 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10140 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10155 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10170 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10185 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10200 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10215 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10230 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22653, 18836, 22059, 25756, 19982, + /* 10245 */ 34097, 23196, 29183, 24614, 24110, 23641, 24673, 26103, 24697, 24443, 24713, 28558, 22121, 24748, 24462, + /* 10260 */ 24764, 23398, 30613, 18888, 18888, 18888, 18888, 24798, 25783, 27211, 27211, 27211, 34232, 35072, 22164, + /* 10275 */ 24401, 24401, 24401, 33302, 31500, 22559, 24106, 24232, 18888, 18888, 34970, 24817, 30411, 27211, 27211, + /* 10290 */ 32484, 19484, 29750, 35127, 24401, 24401, 19872, 31181, 24852, 18888, 18888, 24871, 29221, 27211, 27211, + /* 10305 */ 32072, 27211, 30756, 34441, 24401, 24401, 31571, 24401, 26095, 33141, 27802, 27011, 27855, 25295, 25607, + /* 10320 */ 24888, 22187, 22968, 19195, 34593, 24906, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, + /* 10335 */ 25659, 18888, 33663, 27211, 27211, 24924, 24947, 23588, 31018, 18890, 27211, 31833, 22135, 19447, 23086, + /* 10350 */ 23330, 19828, 30904, 31042, 24972, 19840, 25000, 31738, 30898, 25782, 19760, 31015, 23516, 31008, 22105, + /* 10365 */ 19419, 25016, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10380 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10395 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10410 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10425 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10440 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10455 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10470 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10485 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22668, 18836, 25041, 25057, + /* 10500 */ 31320, 25073, 25089, 25105, 22087, 34796, 24236, 36138, 34870, 34125, 25121, 23106, 35497, 22248, 36613, + /* 10515 */ 25137, 30671, 27365, 30613, 25153, 26447, 25199, 25233, 22574, 23274, 25249, 25265, 25281, 25318, 25344, + /* 10530 */ 25360, 25400, 25428, 25452, 26731, 25504, 31693, 23669, 25558, 27407, 25575, 28599, 25934, 25599, 27211, + /* 10545 */ 28180, 27304, 25623, 25839, 25649, 24401, 34820, 25681, 25698, 22586, 27775, 30190, 25745, 25778, 25799, + /* 10560 */ 25817, 28995, 33569, 30756, 21518, 33443, 25837, 25855, 25893, 26095, 31254, 26677, 30136, 27855, 25930, + /* 10575 */ 25950, 27211, 22187, 22968, 25966, 25986, 24401, 23428, 27763, 36330, 26959, 26002, 26029, 26045, 26085, + /* 10590 */ 26119, 26170, 26203, 26222, 26239, 30527, 26372, 26274, 28404, 31018, 33757, 27211, 34262, 26316, 36729, + /* 10605 */ 26345, 26366, 35337, 31017, 26388, 26407, 30954, 26350, 33861, 26434, 26463, 26479, 26512, 23516, 33189, + /* 10620 */ 26531, 26547, 27963, 31293, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10635 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10650 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10665 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10680 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10695 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10710 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10725 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10740 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22683, 18836, 26568, + /* 10755 */ 26181, 26608, 34097, 26643, 29183, 22087, 26669, 18888, 18888, 18890, 26693, 27211, 27211, 27211, 22121, + /* 10770 */ 26720, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 26774, 25783, 27211, 27211, 27211, 26619, + /* 10785 */ 35072, 22164, 24401, 24401, 24401, 21596, 31500, 31693, 18888, 18888, 33978, 18888, 18890, 27211, 27211, + /* 10800 */ 25801, 27211, 27211, 19484, 24401, 24401, 24401, 26792, 24401, 31181, 18888, 18888, 18888, 35464, 23086, + /* 10815 */ 27211, 27211, 27211, 26809, 30756, 21431, 24401, 24401, 24401, 26828, 26095, 18888, 18888, 18888, 27855, + /* 10830 */ 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, + /* 10845 */ 24402, 19868, 25659, 31948, 18889, 35707, 27211, 19719, 26845, 19868, 31018, 18890, 27211, 31833, 19406, + /* 10860 */ 19447, 23086, 23330, 26905, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, + /* 10875 */ 24984, 31088, 19419, 26945, 27651, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10890 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10905 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10920 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10935 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10950 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10965 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10980 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10995 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22698, 18836, + /* 11010 */ 26999, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, + /* 11025 */ 22121, 24401, 24401, 24401, 24401, 23051, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, + /* 11040 */ 27211, 35072, 27033, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 27056, 18888, 18890, 27211, + /* 11055 */ 27211, 30320, 27211, 27211, 27075, 24401, 24401, 29032, 24401, 24401, 19628, 18888, 18888, 18888, 18888, + /* 11070 */ 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 33986, + /* 11085 */ 27855, 27211, 27211, 27102, 17590, 24017, 24401, 24401, 27123, 27144, 36254, 27162, 27210, 27228, 28500, + /* 11100 */ 18187, 34842, 33426, 27244, 35980, 27277, 27302, 27320, 36048, 34013, 20999, 31882, 21478, 27895, 27356, + /* 11115 */ 30287, 27381, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, + /* 11130 */ 23516, 31008, 22105, 26329, 30087, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11145 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11160 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11175 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11190 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11205 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11220 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11235 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11250 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, + /* 11265 */ 18836, 22059, 27406, 27423, 27445, 35294, 27461, 22087, 18888, 18888, 30140, 18890, 27211, 27211, 27989, + /* 11280 */ 27211, 22121, 24401, 24401, 25682, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 34042, 27211, 27211, + /* 11295 */ 27211, 27211, 29700, 22164, 24401, 24401, 24401, 24401, 27128, 31693, 27477, 18888, 18888, 18888, 18890, + /* 11310 */ 27194, 27211, 27211, 27211, 27211, 19484, 35299, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, + /* 11325 */ 27059, 23086, 27211, 27211, 27211, 33366, 30756, 24012, 24401, 24401, 24401, 35044, 26750, 18888, 18888, + /* 11340 */ 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, + /* 11355 */ 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 20815, 27211, + /* 11370 */ 30818, 19960, 33969, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, + /* 11385 */ 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11400 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11415 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11430 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11445 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11460 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11475 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11490 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11505 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11520 */ 22713, 18836, 22059, 27496, 27516, 27541, 35231, 27557, 22087, 29662, 26292, 23292, 27573, 24836, 27601, + /* 11535 */ 27211, 27636, 22121, 35544, 27686, 24401, 27721, 18866, 18888, 27799, 18888, 27818, 22071, 27853, 32260, + /* 11550 */ 27211, 26013, 27873, 27920, 22164, 29419, 24401, 29946, 33413, 26742, 27751, 26881, 18888, 18888, 27261, + /* 11565 */ 36776, 27936, 27211, 27211, 27211, 27988, 28005, 28031, 28052, 24401, 24401, 28069, 28088, 28135, 25488, + /* 11580 */ 28152, 26069, 28167, 27211, 28340, 24657, 28196, 30756, 31523, 24401, 28212, 34176, 36174, 24956, 28248, + /* 11595 */ 28266, 28290, 21488, 33077, 28327, 28356, 17590, 20986, 23126, 28391, 28425, 28102, 28451, 28470, 28490, + /* 11610 */ 28516, 28534, 20034, 33728, 25868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 30241, 28274, + /* 11625 */ 28553, 28574, 19406, 28590, 23086, 23330, 19828, 19452, 28615, 28660, 26147, 25783, 31738, 19837, 25782, + /* 11640 */ 19760, 29613, 35958, 29276, 22105, 19419, 27963, 23157, 28700, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11655 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11670 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11685 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11700 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11715 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11730 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11745 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11760 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11775 */ 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, + /* 11790 */ 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, + /* 11805 */ 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 22528, 18888, 18888, 18888, + /* 11820 */ 18888, 18890, 27333, 27211, 27211, 27211, 27211, 19484, 30853, 24401, 24401, 24401, 24401, 19628, 18888, + /* 11835 */ 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, + /* 11850 */ 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, + /* 11865 */ 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, + /* 11880 */ 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, + /* 11895 */ 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, + /* 11910 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11925 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11940 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11955 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11970 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11985 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12000 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12015 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12030 */ 17590, 17590, 22728, 18836, 28747, 28782, 28817, 28841, 28857, 28880, 28896, 24161, 28943, 32011, 36261, + /* 12045 */ 27340, 28961, 29492, 28982, 29011, 24522, 29027, 25436, 29048, 23051, 27500, 29090, 29110, 30713, 18888, + /* 12060 */ 23512, 29130, 25183, 27211, 29155, 28927, 27033, 29173, 23230, 24401, 29199, 35373, 31693, 18888, 18888, + /* 12075 */ 25583, 32629, 29218, 27211, 27211, 31461, 30692, 29237, 27075, 24401, 24401, 24401, 29262, 29302, 19628, + /* 12090 */ 18888, 34329, 18888, 18888, 23086, 27211, 29329, 27211, 27211, 30756, 24012, 35933, 24401, 24401, 24401, + /* 12105 */ 27705, 31612, 18888, 18888, 29346, 29374, 27211, 35650, 17590, 21436, 29393, 24401, 25970, 18887, 33895, + /* 12120 */ 18888, 27211, 32528, 27212, 24016, 32769, 19868, 25659, 18888, 26889, 27211, 27211, 29412, 23889, 24371, + /* 12135 */ 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31768, 19840, 25783, 31738, + /* 12150 */ 19837, 29435, 29508, 31102, 29550, 29606, 22105, 30300, 29462, 19659, 27951, 17590, 17590, 17590, 17590, + /* 12165 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12180 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12195 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12210 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12225 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12240 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12255 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12270 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12285 */ 17590, 17590, 17590, 22743, 18836, 22059, 29629, 29473, 34097, 33285, 29183, 29651, 27254, 18888, 29678, + /* 12300 */ 33329, 32535, 27211, 29694, 29716, 22121, 19202, 24401, 32742, 29741, 18866, 26776, 33921, 28474, 18888, + /* 12315 */ 18888, 25783, 29766, 27211, 29809, 27211, 35072, 22164, 35825, 24401, 29828, 24401, 24036, 36769, 25217, + /* 12330 */ 18888, 18888, 29848, 18890, 27211, 29871, 27211, 26258, 27211, 29894, 24401, 29929, 24401, 36587, 24401, + /* 12345 */ 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 29725, 29962, 24401, 24401, 24401, + /* 12360 */ 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18473, + /* 12375 */ 18888, 18888, 19584, 27211, 27212, 24016, 29982, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, + /* 12390 */ 19868, 31018, 18890, 27211, 31833, 19902, 19447, 32052, 19544, 19828, 29998, 30097, 30031, 19840, 25783, + /* 12405 */ 30047, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 30075, 17590, 17590, 17590, + /* 12420 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12435 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12450 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12465 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12480 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12495 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12510 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12525 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12540 */ 17590, 17590, 17590, 17590, 22758, 18836, 30121, 30156, 30206, 30257, 30273, 30336, 22087, 35624, 32837, + /* 12555 */ 25762, 18890, 29878, 34934, 26812, 27211, 22121, 24931, 23223, 29202, 24401, 18866, 34373, 30352, 18888, + /* 12570 */ 18888, 18888, 23447, 24828, 27211, 27211, 27211, 35072, 30370, 35052, 24401, 24401, 24401, 24036, 29523, + /* 12585 */ 18888, 18888, 27146, 18888, 31308, 30386, 27211, 27211, 30405, 30558, 19484, 30427, 24401, 24401, 29938, + /* 12600 */ 35686, 19628, 28766, 30447, 34506, 35614, 23086, 28731, 30482, 30517, 30552, 30756, 24012, 20156, 30574, + /* 12615 */ 30598, 30667, 26283, 33464, 28945, 27670, 30687, 32915, 33504, 25328, 17590, 23963, 20450, 33837, 21016, + /* 12630 */ 32397, 26300, 30708, 30729, 27885, 30748, 21588, 36373, 30779, 26653, 24628, 33220, 32514, 30806, 31835, + /* 12645 */ 25412, 25906, 26515, 18890, 28825, 31833, 26133, 19447, 28304, 31730, 23834, 26057, 30869, 30885, 32181, + /* 12660 */ 30920, 30942, 32797, 25782, 30970, 31015, 23516, 31008, 30997, 31034, 27963, 19659, 29450, 17590, 17590, + /* 12675 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12690 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12705 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12720 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12735 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12750 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12765 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12780 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12795 */ 17590, 17590, 17590, 17590, 17590, 22773, 18836, 31058, 31074, 32463, 31125, 31141, 31197, 22087, 18888, + /* 12810 */ 29534, 35471, 36738, 27211, 24342, 31213, 24424, 22121, 24401, 20175, 31229, 31917, 27736, 31245, 34334, + /* 12825 */ 27175, 18888, 29094, 27286, 27211, 31278, 31336, 27211, 31355, 31371, 24401, 31402, 31418, 24401, 31437, + /* 12840 */ 31693, 18888, 31619, 32841, 18888, 18890, 27211, 27211, 31460, 31477, 27211, 19484, 24401, 24401, 31497, + /* 12855 */ 36581, 24401, 33020, 18888, 18888, 18888, 18888, 30007, 27211, 27211, 27211, 27211, 31516, 32310, 24401, + /* 12870 */ 24401, 24401, 24401, 31539, 18888, 28762, 18888, 24651, 35740, 27211, 27211, 28644, 31565, 35796, 24401, + /* 12885 */ 24401, 19318, 32188, 18888, 24334, 28366, 27212, 29966, 29832, 19868, 25659, 18888, 18889, 27211, 27211, + /* 12900 */ 19719, 31587, 19868, 31635, 32435, 33693, 30105, 31663, 20005, 31715, 31757, 31784, 31812, 30015, 31851, + /* 12915 */ 31878, 25783, 31898, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 31933, 30221, 17590, + /* 12930 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12945 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12960 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12975 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12990 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13005 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13020 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13035 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13050 */ 17590, 17590, 17590, 17590, 17590, 17590, 22788, 18836, 22059, 25729, 30466, 31968, 24306, 31984, 32000, + /* 13065 */ 32807, 35160, 27017, 29590, 34941, 19801, 29377, 33700, 22121, 27040, 30431, 29396, 28864, 29565, 18888, + /* 13080 */ 18888, 18888, 32027, 18888, 25783, 27211, 27211, 23698, 27211, 35072, 22164, 24401, 24401, 30845, 24401, + /* 13095 */ 24036, 32045, 18888, 26929, 18888, 18888, 18890, 27211, 31481, 32068, 27211, 27211, 32088, 24401, 33058, + /* 13110 */ 32122, 24401, 24401, 33736, 18888, 18888, 33162, 18888, 23086, 27211, 27211, 29484, 27211, 28375, 32144, + /* 13125 */ 24401, 24401, 33831, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 36704, 24017, 24401, + /* 13140 */ 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, + /* 13155 */ 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 33107, 22171, 33224, 24271, 32169, 31017, 27856, + /* 13170 */ 31741, 19840, 25783, 31738, 30234, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, + /* 13185 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13200 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13215 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13230 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13245 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13260 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13275 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13290 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13305 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 32204, 32232, 32252, 32677, 33295, 29074, + /* 13320 */ 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23619, + /* 13335 */ 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 32276, 24401, 24401, 24401, + /* 13350 */ 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 32299, 24401, + /* 13365 */ 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, + /* 13380 */ 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, + /* 13395 */ 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 33886, 18889, + /* 13410 */ 36065, 27211, 19719, 35326, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, + /* 13425 */ 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, + /* 13440 */ 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13455 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13470 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13485 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13500 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13515 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13530 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13545 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13560 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22803, 18836, 32335, 31647, 34666, 32351, 32367, + /* 13575 */ 32417, 22087, 18888, 32433, 19335, 32451, 27211, 32479, 27107, 32500, 22121, 24401, 32551, 20085, 32572, + /* 13590 */ 18866, 22287, 23753, 18888, 18888, 32602, 32665, 27211, 32693, 27211, 26972, 32713, 32729, 24401, 32764, + /* 13605 */ 24401, 25877, 32785, 34768, 18888, 27390, 32823, 24594, 24855, 32857, 24890, 32878, 32904, 27211, 32942, + /* 13620 */ 32977, 24401, 33000, 29313, 24401, 30790, 26206, 27666, 33904, 18888, 23086, 36353, 27211, 33036, 27211, + /* 13635 */ 30756, 24012, 32153, 24401, 33056, 24401, 35861, 18888, 18888, 30354, 27972, 27211, 27211, 33800, 17590, + /* 13650 */ 20145, 24401, 24401, 34638, 20811, 18888, 18888, 33074, 27211, 27212, 36167, 24402, 19868, 25659, 18888, + /* 13665 */ 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 34616, 24169, 33093, 33123, + /* 13680 */ 33157, 27856, 31741, 23862, 26552, 34302, 19837, 25782, 19760, 31015, 23516, 31008, 33178, 19973, 27963, + /* 13695 */ 23497, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13710 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13725 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13740 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13755 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13770 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13785 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13800 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13815 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22818, 18836, 33205, 28113, 33240, 34097, + /* 13830 */ 33275, 29183, 22087, 33318, 35438, 18888, 18890, 33345, 26391, 33382, 27211, 22121, 33399, 28072, 33442, + /* 13845 */ 24401, 18866, 22232, 18888, 33459, 18888, 18888, 33480, 33498, 25175, 27211, 27211, 26704, 22164, 24775, + /* 13860 */ 35239, 24401, 24401, 25914, 29580, 18888, 18888, 31109, 25211, 33520, 33539, 27211, 27211, 33556, 36284, + /* 13875 */ 19484, 33585, 24401, 24401, 33604, 32556, 19628, 18888, 18888, 31262, 33658, 23086, 27211, 27211, 33679, + /* 13890 */ 27211, 30756, 24012, 24401, 24401, 33716, 24401, 26854, 27480, 18888, 33752, 27855, 33259, 34701, 27211, + /* 13905 */ 17590, 32102, 24782, 23807, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 33773, 36105, 19868, 25659, + /* 13920 */ 18888, 23368, 27211, 29157, 19719, 23889, 34454, 29286, 18890, 33794, 25302, 33816, 19447, 34079, 33853, + /* 13935 */ 31862, 31017, 27856, 31741, 33877, 28920, 33937, 19837, 30461, 34002, 22276, 36041, 34029, 22105, 19419, + /* 13950 */ 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13965 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13980 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13995 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14010 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14025 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14040 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14055 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14070 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22833, 18836, 34064, 32616, 34113, + /* 14085 */ 34141, 34157, 34192, 34208, 32216, 36013, 31549, 31952, 34224, 34248, 34287, 29330, 34350, 34389, 34413, + /* 14100 */ 34481, 26793, 18866, 26187, 29635, 22293, 18888, 36654, 25783, 34522, 34544, 34566, 25821, 35072, 22164, + /* 14115 */ 34586, 34609, 34632, 19604, 24036, 36644, 36674, 24681, 18888, 32401, 34654, 31339, 34682, 34698, 27211, + /* 14130 */ 34717, 34753, 28053, 34812, 34836, 24401, 33619, 19628, 34858, 32236, 34906, 24598, 33523, 27612, 34890, + /* 14145 */ 34922, 24732, 29246, 36717, 33634, 34465, 32984, 34168, 26750, 34957, 18888, 18888, 34994, 35010, 27211, + /* 14160 */ 33040, 17590, 29913, 35035, 24401, 36304, 25482, 30171, 35883, 35068, 35088, 26627, 20441, 31173, 35123, + /* 14175 */ 35143, 35176, 24640, 30492, 29358, 19719, 35192, 35219, 25384, 28801, 35255, 35279, 32586, 34496, 23086, + /* 14190 */ 23330, 29061, 31017, 27856, 31741, 19840, 25783, 31738, 24547, 25164, 35315, 31796, 35353, 34316, 22105, + /* 14205 */ 19419, 27963, 24091, 28630, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14220 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14235 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14250 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14265 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14280 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14295 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14310 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14325 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22848, 18836, 22059, 34782, + /* 14340 */ 34088, 35389, 21008, 35405, 35421, 35454, 18888, 18888, 23466, 35487, 27211, 27211, 27211, 35513, 31154, + /* 14355 */ 24401, 24401, 24401, 35560, 18888, 26863, 36664, 35601, 24872, 25783, 30389, 23536, 26250, 35647, 35666, + /* 14370 */ 22164, 19522, 19564, 30582, 35682, 27697, 35575, 29114, 18888, 18888, 18888, 18890, 27211, 35702, 27211, + /* 14385 */ 27211, 27211, 35723, 24401, 35527, 24401, 24401, 24401, 19628, 30184, 18888, 18888, 18888, 23086, 35739, + /* 14400 */ 27211, 27211, 27211, 29139, 22938, 24401, 24401, 24401, 24401, 23898, 35756, 18888, 18888, 25025, 35778, + /* 14415 */ 27211, 27211, 17590, 20064, 35795, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, + /* 14430 */ 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 23917, 18890, 34550, 31833, 22262, 19447, + /* 14445 */ 23086, 23330, 26418, 31017, 27856, 31741, 19840, 25783, 35812, 19837, 27187, 35841, 33135, 23516, 31008, + /* 14460 */ 22105, 22148, 28712, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14475 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14490 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14505 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14520 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14535 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14550 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14565 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14580 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22863, 18836, 22059, + /* 14595 */ 35877, 28723, 34097, 31164, 29183, 22087, 26758, 18888, 22592, 18890, 23989, 27211, 29812, 27211, 22121, + /* 14610 */ 33778, 24401, 31421, 24401, 18866, 18888, 18888, 26872, 18888, 18888, 25783, 27211, 30732, 27211, 27211, + /* 14625 */ 35072, 22164, 24401, 24908, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, + /* 14640 */ 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, + /* 14655 */ 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, + /* 14670 */ 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, + /* 14685 */ 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, + /* 14700 */ 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, + /* 14715 */ 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14730 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14745 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14760 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14775 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14790 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14805 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14820 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14835 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22878, 18836, + /* 14850 */ 22059, 27837, 27857, 35899, 24401, 35915, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, + /* 14865 */ 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, + /* 14880 */ 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31602, 18888, 18888, 18888, 18888, 26223, 27211, + /* 14895 */ 27211, 27211, 27211, 27211, 19484, 35931, 24401, 24401, 24401, 24401, 19628, 18888, 28136, 18888, 18888, + /* 14910 */ 35949, 27211, 32862, 27211, 32697, 30756, 24012, 24401, 32283, 24401, 32128, 26750, 18888, 18888, 18888, + /* 14925 */ 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, + /* 14940 */ 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, + /* 14955 */ 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, + /* 14970 */ 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14985 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15000 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15015 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15030 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15045 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15060 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15075 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15090 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22893, + /* 15105 */ 18836, 22059, 35974, 34882, 34097, 33960, 29183, 35996, 18888, 23311, 18888, 36029, 27211, 27211, 36064, + /* 15120 */ 36081, 22121, 24401, 24401, 36104, 33950, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, + /* 15135 */ 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 36121, 18888, 25559, 18888, 18888, 18890, + /* 15150 */ 27211, 27211, 30313, 27211, 27211, 36154, 24401, 24401, 34397, 24401, 24401, 19628, 28250, 18888, 18888, + /* 15165 */ 18888, 23086, 30926, 27211, 27211, 27211, 26983, 24012, 33642, 24401, 24401, 24401, 26750, 18888, 18888, + /* 15180 */ 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, + /* 15195 */ 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, + /* 15210 */ 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, + /* 15225 */ 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15240 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15255 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15270 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15285 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15300 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15315 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15330 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15345 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15360 */ 22339, 18836, 22059, 19354, 27857, 36190, 24401, 36206, 22087, 18888, 18888, 18888, 18007, 27211, 27211, + /* 15375 */ 27211, 24724, 22121, 24401, 24401, 24401, 30827, 18866, 18888, 36222, 18888, 28795, 18888, 25783, 35100, + /* 15390 */ 27211, 27429, 27211, 35072, 22164, 30836, 24401, 24499, 24401, 24036, 31693, 18888, 36244, 18888, 18888, + /* 15405 */ 18890, 27211, 36088, 27211, 27211, 27211, 19484, 24401, 28036, 24401, 24401, 24401, 19628, 18888, 18888, + /* 15420 */ 35631, 18888, 35762, 27211, 27211, 36277, 27211, 34730, 24012, 24401, 24401, 36300, 24401, 36320, 18888, + /* 15435 */ 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 25712, 18888, 18888, 36346, + /* 15450 */ 27211, 27212, 19184, 24402, 19868, 25659, 32029, 18889, 27211, 33359, 19719, 23889, 36369, 31018, 18890, + /* 15465 */ 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, + /* 15480 */ 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15495 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15510 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15525 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15540 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15555 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15570 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15585 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15600 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15615 */ 17590, 22384, 18836, 36389, 19008, 19233, 20367, 36434, 17173, 17595, 36437, 17330, 17349, 18921, 17189, + /* 15630 */ 17208, 17281, 20355, 36453, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, + /* 15645 */ 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, + /* 15660 */ 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, + /* 15675 */ 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, + /* 15690 */ 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, + /* 15705 */ 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, + /* 15720 */ 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, + /* 15735 */ 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, + /* 15750 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15765 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15780 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15795 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15810 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15825 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15840 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15855 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15870 */ 17590, 17590, 22369, 18836, 18987, 19008, 19233, 20367, 19008, 21737, 30763, 36437, 17330, 17349, 18921, + /* 15885 */ 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, + /* 15900 */ 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, + /* 15915 */ 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, + /* 15930 */ 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, + /* 15945 */ 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, + /* 15960 */ 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, + /* 15975 */ 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, + /* 15990 */ 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, + /* 16005 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16020 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16035 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16050 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16065 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16080 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16095 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16110 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16125 */ 17590, 17590, 17590, 21813, 18836, 36489, 19008, 19233, 20367, 19008, 17173, 17737, 36437, 17330, 17349, + /* 16140 */ 18921, 17189, 17208, 17281, 20355, 17768, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, + /* 16155 */ 17265, 22033, 20765, 17421, 20535, 17192, 20543, 22022, 17311, 18658, 18999, 19008, 17447, 32952, 17497, + /* 16170 */ 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, + /* 16185 */ 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, + /* 16200 */ 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, + /* 16215 */ 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, + /* 16230 */ 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, + /* 16245 */ 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, + /* 16260 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16275 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16290 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16305 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16320 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16335 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16350 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16365 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16380 */ 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, + /* 16395 */ 17349, 18921, 17189, 17208, 17281, 20355, 36517, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, + /* 16410 */ 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, + /* 16425 */ 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, + /* 16440 */ 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, + /* 16455 */ 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, + /* 16470 */ 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, + /* 16485 */ 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, + /* 16500 */ 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, + /* 16515 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16530 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16545 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16560 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16575 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16590 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16605 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16620 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16635 */ 17590, 17590, 17590, 17590, 17590, 21828, 18836, 19307, 18888, 27857, 30756, 24401, 29183, 28015, 18888, + /* 16650 */ 18888, 18888, 18890, 27211, 27211, 27211, 27211, 36567, 24401, 24401, 24401, 24401, 22953, 18888, 18888, + /* 16665 */ 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 36603, 24401, 24401, 24401, 24401, 24036, + /* 16680 */ 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, + /* 16695 */ 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, + /* 16710 */ 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, + /* 16725 */ 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, + /* 16740 */ 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, + /* 16755 */ 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, + /* 16770 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16785 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16800 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16815 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16830 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16845 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16860 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16875 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16890 */ 17590, 17590, 17590, 17590, 17590, 17590, 36629, 36690, 18720, 19008, 19233, 20367, 19008, 17454, 17595, + /* 16905 */ 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17223, 17308, 17327, 17346, 18918, 36754, 21880, + /* 16920 */ 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, + /* 16935 */ 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, + /* 16950 */ 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, + /* 16965 */ 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, + /* 16980 */ 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, + /* 16995 */ 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, + /* 17010 */ 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, + /* 17025 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17040 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17055 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17070 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17085 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17100 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17115 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17130 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17145 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 0, 94242, 0, 118820, 0, 2211840, 102439, 0, 0, 106538, + /* 17162 */ 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2482176, 2158592, + /* 17174 */ 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 2207744, 2404352, + /* 17191 */ 2412544, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17202 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3104768, 2605056, 2207744, 2207744, 2207744, 2207744, + /* 17213 */ 2207744, 2207744, 2678784, 2207744, 2695168, 2207744, 2703360, 2207744, 2711552, 2752512, 2207744, 0, 0, + /* 17226 */ 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 139, 0, 2158592, + /* 17246 */ 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, + /* 17257 */ 2801664, 2158592, 2158592, 2158592, 2863104, 2891776, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17268 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, + /* 17279 */ 2158592, 2158592, 2207744, 2785280, 2207744, 2809856, 2207744, 2207744, 2842624, 2207744, 2207744, + /* 17290 */ 2207744, 2899968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2473984, + /* 17301 */ 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2523136, 2158592, 2404352, 2412544, 2158592, + /* 17312 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17323 */ 2158592, 2564096, 2158592, 2158592, 2605056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17334 */ 2678784, 2158592, 2695168, 2158592, 2703360, 2158592, 2711552, 2752512, 2158592, 2158592, 2785280, + /* 17345 */ 2158592, 2158592, 2785280, 2158592, 2809856, 2158592, 2158592, 2842624, 2158592, 2158592, 2158592, + /* 17356 */ 2899968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 18, 0, 0, 0, 0, + /* 17371 */ 0, 0, 0, 2211840, 0, 0, 641, 0, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 32768, 0, 2158592, 0, + /* 17395 */ 2158592, 2158592, 2158592, 2383872, 2158592, 2158592, 2158592, 2158592, 3006464, 2383872, 2207744, + /* 17406 */ 2207744, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2572573, 2158877, + /* 17419 */ 2158877, 0, 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2641920, + /* 17431 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 167936, 0, 0, 2162688, 0, 0, + /* 17447 */ 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17458 */ 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2232320, 2232320, 2232320, 641, 0, 0, 0, 0, + /* 17475 */ 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2531328, 2158592, + /* 17488 */ 2158592, 2158592, 2158592, 2158592, 2617344, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, + /* 17499 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, + /* 17510 */ 2158592, 2158592, 2158592, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, + /* 17521 */ 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17532 */ 2158592, 2699264, 2158592, 2158592, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, + /* 17543 */ 2207744, 2863104, 2891776, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17554 */ 2207744, 2207744, 2207744, 2207744, 3018752, 2207744, 3043328, 2207744, 2207744, 2207744, 2207744, + /* 17565 */ 3080192, 2207744, 2207744, 3112960, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, + /* 17578 */ 0, 172310, 279, 0, 2162688, 0, 0, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 17599 */ 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2404352, 2412544, 2158592, 2510848, 2158592, 2158592, + /* 17615 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2584576, 2158592, 2609152, 2158592, 2158592, 2629632, + /* 17626 */ 2158592, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 3121152, 2158592, 2158592, + /* 17637 */ 2158592, 3149824, 2158592, 2158592, 3170304, 3174400, 2158592, 2367488, 2207744, 2207744, 2207744, + /* 17648 */ 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 0, 2207744, + /* 17662 */ 2207744, 2207744, 2433024, 2207744, 2453504, 2461696, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17673 */ 2207744, 2510848, 2207744, 2207744, 2207744, 2207744, 2207744, 2531328, 2207744, 2207744, 2207744, + /* 17684 */ 2207744, 2207744, 2617344, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, + /* 17697 */ 0, 2158592, 2572288, 2158592, 2158592, 1508, 2715648, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17709 */ 2207744, 2207744, 2867200, 2207744, 2904064, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17720 */ 2207744, 2207744, 2580480, 2207744, 2207744, 2207744, 2207744, 2621440, 2207744, 2207744, 2207744, + /* 17731 */ 3149824, 2207744, 2207744, 3170304, 3174400, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 2158592, 2158592, + /* 17750 */ 2158592, 2404352, 2412544, 2707456, 2732032, 2207744, 2207744, 2207744, 2822144, 2826240, 2207744, + /* 17761 */ 2895872, 2207744, 2207744, 2924544, 2207744, 2207744, 2973696, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, + /* 17778 */ 0, 0, 0, 285, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17792 */ 2158592, 2158592, 3186688, 2158592, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, + /* 17805 */ 0, 2158592, 2158592, 2158592, 2158592, 0, 0, 2535424, 2543616, 2158592, 2158592, 2158592, 0, 0, 0, + /* 17820 */ 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17831 */ 2572288, 2981888, 2207744, 2207744, 3002368, 2207744, 3047424, 3063808, 3076096, 2207744, 2207744, + /* 17842 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3203072, 2708960, 2732032, 2158592, 2158592, 2158592, + /* 17853 */ 2822144, 2827748, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, + /* 17864 */ 2981888, 2158592, 2158592, 3002368, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, + /* 17875 */ 2158592, 2158592, 2158592, 2158592, 3203072, 2981888, 2158592, 2158592, 3003876, 2158592, 3047424, + /* 17886 */ 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2207744, + /* 17897 */ 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17908 */ 2207744, 20480, 0, 0, 0, 0, 0, 2162688, 20480, 0, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, + /* 17924 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2908160, 2527232, + /* 17935 */ 2207744, 2207744, 2576384, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17946 */ 2207744, 2207744, 2908160, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 0, 0, + /* 17967 */ 2158592, 2158592, 2158592, 2158592, 2633728, 2658304, 0, 0, 2740224, 2744320, 0, 2834432, 2207744, + /* 17980 */ 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, + /* 17991 */ 2207744, 2207744, 3158016, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 933, 45, 45, 45, 45, 442, 45, 45, + /* 18014 */ 45, 45, 45, 45, 45, 45, 45, 67, 67, 2494464, 2158592, 2158592, 2158592, 2524757, 2527232, 2158592, + /* 18030 */ 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 1504, 2158592, 2498560, 2158592, + /* 18042 */ 2158592, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 2736128, + /* 18053 */ 2158592, 2158592, 0, 2158592, 2912256, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18065 */ 3108864, 2158592, 2158592, 3133440, 3145728, 3153920, 2375680, 2379776, 2207744, 2207744, 2420736, + /* 18076 */ 2207744, 2449408, 2207744, 2207744, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2568192, + /* 18087 */ 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 551, 2158592, 2158592, 2158592, 2158592, 2207744, + /* 18106 */ 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 2020, 2158592, 2592768, + /* 18118 */ 2625536, 2207744, 2207744, 2674688, 2736128, 2207744, 2207744, 2207744, 2912256, 2207744, 2207744, + /* 18129 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 542, 0, 544, + /* 18143 */ 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375680, 2379776, 2158592, 2158592, + /* 18154 */ 2420736, 2158592, 2449408, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 641, 0, 0, 0, + /* 18169 */ 0, 0, 0, 2367488, 2158592, 2498560, 2158592, 2158592, 1621, 2158592, 2158592, 2568192, 2158592, 2592768, + /* 18183 */ 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 1608, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1107, 97, + /* 18205 */ 97, 1110, 97, 97, 3133440, 3145728, 3153920, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, + /* 18218 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3014656, 2158592, 2158592, 3051520, + /* 18229 */ 2158592, 2158592, 3100672, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2416640, + /* 18240 */ 2207744, 2465792, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2633728, + /* 18251 */ 2658304, 2740224, 2744320, 2834432, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, + /* 18262 */ 2158592, 3129344, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, + /* 18273 */ 2207744, 3129344, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, + /* 18284 */ 2158592, 3186688, 2158592, 0, 32768, 0, 0, 0, 0, 0, 0, 2367488, 2949120, 2158592, 2985984, 2158592, + /* 18300 */ 2998272, 2158592, 2158592, 2158592, 3129344, 2158592, 2158592, 2478080, 2158592, 2158592, 2158592, + /* 18311 */ 2535424, 2543616, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18322 */ 3117056, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2699264, 2207744, 2207744, + /* 18333 */ 2207744, 2207744, 2207744, 2748416, 2756608, 2777088, 2801664, 2207744, 2207744, 2158877, 2158877, + /* 18344 */ 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 0, 0, 2535709, 2543901, 2158877, + /* 18359 */ 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2990365, 2158877, 2158877, 2158730, 2158730, + /* 18372 */ 2158730, 2158730, 2158730, 2572426, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, + /* 18383 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158592, 2158592, 2478080, 2207744, 2207744, + /* 18394 */ 2990080, 2207744, 2207744, 2158592, 2158592, 2482176, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, + /* 18407 */ 2158592, 0, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, + /* 18419 */ 3039232, 2158592, 2158592, 3010560, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, + /* 18430 */ 2838528, 2207744, 2207744, 2207744, 3010560, 2158592, 2428928, 2158592, 2514944, 0, 0, 2158592, 2588672, + /* 18443 */ 2158592, 0, 2838528, 2158592, 2158592, 2158592, 3010560, 2158592, 2506752, 2158592, 18, 0, 0, 0, 0, 0, 0, + /* 18460 */ 0, 2211840, 0, 0, 0, 0, 2158592, 0, 0, 29315, 922, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 18485 */ 45, 45, 1539, 45, 3006464, 2383872, 0, 2020, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, + /* 18499 */ 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158592, 2637824, 2953216, 2158592, + /* 18512 */ 2539520, 2158592, 2539520, 2207744, 0, 0, 2539520, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, + /* 18525 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 0, 2158592, 2207744, 0, 2158592, + /* 18538 */ 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2965504, 2965504, 2965504, 0, 0, 0, 0, 0, + /* 18554 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2474269, 2158877, 2158877, 0, 0, + /* 18567 */ 2158877, 2158877, 2158877, 2158877, 2634013, 2658589, 0, 0, 2740509, 2744605, 0, 2834717, 40976, 18, + /* 18581 */ 36884, 45078, 24, 28, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, + /* 18597 */ 36884, 0, 0, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 86016, 0, 0, 2211840, 102439, 0, 0, 0, 98347, 0, + /* 18621 */ 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 0, 2375680, 2379776, 2158592, 2158592, 2420736, + /* 18633 */ 2158592, 2449408, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 135, 2158592, + /* 18650 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18661 */ 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2641920, 2158592, 2158592, 2158592, + /* 18672 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2494464, 2158592, + /* 18683 */ 2158592, 2158592, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, + /* 18694 */ 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 0, 27, 27, 0, 2158592, 2498560, 2158592, 2158592, 0, 2158592, + /* 18712 */ 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, + /* 18729 */ 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, + /* 18742 */ 2158592, 2494464, 2158592, 2158592, 2158592, 3006464, 2383872, 0, 0, 2158592, 2158592, 2158592, 2158592, + /* 18755 */ 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 40976, 18, 36884, 45078, 24, 27, + /* 18769 */ 147488, 94242, 147456, 147488, 106538, 98347, 0, 0, 147456, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, + /* 18788 */ 27, 27, 27, 27, 0, 81920, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 106538, 98347, 0, 2158592, 2158592, + /* 18808 */ 2158592, 2158592, 2158592, 2158592, 2428928, 2158592, 2514944, 2158592, 2588672, 2158592, 2838528, + /* 18819 */ 2158592, 2158592, 40976, 18, 151573, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, + /* 18836 */ 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1315, 0, 97, 97, 97, 97, 97, + /* 18860 */ 97, 97, 97, 97, 97, 1487, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 0, 29315, 0, 0, + /* 18886 */ 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 130, 94242, 0, 0, 0, + /* 18911 */ 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, + /* 18925 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, + /* 18936 */ 2207744, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 644, 2207744, 2207744, 2207744, + /* 18956 */ 3186688, 2207744, 0, 1080, 0, 1084, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, + /* 18975 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2531466, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 18986 */ 2617482, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, + /* 19003 */ 2158592, 2781184, 2793472, 2158592, 2818048, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19014 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, + /* 19026 */ 36884, 45078, 24, 27, 90143, 159779, 159744, 102439, 159779, 98347, 0, 0, 159744, 40976, 18, 18, 36884, 0, + /* 19044 */ 45078, 0, 2224253, 172032, 2224253, 2232448, 2232448, 172032, 2232448, 90143, 0, 0, 2170880, 0, 0, 550, + /* 19060 */ 829, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, + /* 19073 */ 0, 18, 18, 124, 124, 127, 127, 127, 40976, 18, 36884, 45078, 25, 29, 90143, 94242, 0, 102439, 106538, + /* 19092 */ 98347, 0, 0, 163931, 40976, 18, 18, 36884, 0, 45078, 249856, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, + /* 19113 */ 2170880, 0, 0, 827, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19127 */ 2158592, 0, 40976, 0, 4243810, 4243810, 24, 24, 27, 27, 27, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, + /* 19149 */ 0, 57344, 286, 2158592, 2158592, 2158592, 2158592, 2707456, 2732032, 2158592, 2158592, 2158592, 2822144, + /* 19162 */ 2826240, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2207744, + /* 19173 */ 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1613, 97, + /* 19196 */ 97, 97, 97, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 2207744, 0, 0, + /* 19221 */ 0, 0, 0, 0, 2166784, 546, 0, 0, 0, 0, 286, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, + /* 19239 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 17, 18, 36884, + /* 19252 */ 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 120, 121, 18, 18, 36884, 0, 45078, 0, + /* 19272 */ 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 53248, 550, 0, 2158592, 2158592, 2158592, 2387968, + /* 19291 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 196608, 18, 266240, 24, 24, 27, 27, 27, 0, + /* 19308 */ 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 0, 45, 45, 45, 45, 45, 45, 45, 1535, 45, 45, 45, 45, 45, + /* 19332 */ 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 45, 45, 45, 45, 45, 45, 405, 45, 45, 45, + /* 19357 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, + /* 19383 */ 67, 67, 67, 67, 1766, 67, 67, 67, 1767, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 546, 0, 53531, + /* 19403 */ 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, + /* 19430 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 743, 57889, 0, 2170880, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, + /* 19455 */ 97, 45, 45, 45, 45, 45, 45, 45, 45, 1856, 45, 1858, 1859, 67, 67, 67, 1009, 67, 67, 67, 67, 67, 67, 67, + /* 19479 */ 67, 67, 67, 67, 1021, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367773, + /* 19504 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2699549, 2158877, 2158877, 2158877, 2158877, + /* 19515 */ 2158877, 2748701, 2756893, 2777373, 2801949, 97, 1115, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 19535 */ 97, 857, 97, 67, 67, 67, 67, 67, 1258, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1826, 67, 97, 97, 97, + /* 19560 */ 97, 97, 97, 1338, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 67, 67, 67, 1463, 67, + /* 19585 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, + /* 19610 */ 97, 97, 97, 97, 97, 97, 97, 904, 905, 97, 97, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, + /* 19636 */ 921, 0, 0, 0, 0, 0, 0, 45, 1679, 67, 67, 67, 1682, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 0, 0, 97, + /* 19663 */ 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 19690 */ 189, 45, 45, 45, 1748, 45, 45, 45, 1749, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1959, 67, + /* 19714 */ 67, 67, 67, 1768, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1791, 97, 97, 97, + /* 19739 */ 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1802, 67, 1817, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, + /* 19764 */ 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1848, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 19791 */ 45, 659, 45, 45, 45, 45, 45, 45, 45, 1863, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, + /* 19816 */ 67, 67, 67, 1878, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, + /* 19844 */ 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1973, 97, 97, 97, + /* 19871 */ 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1165, 97, 1167, 67, 24850, 24850, 12564, 12564, 0, + /* 19894 */ 0, 2166784, 0, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1789, 97, 0, + /* 19919 */ 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 136, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19935 */ 3158016, 229376, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 67, + /* 19947 */ 24850, 24850, 12564, 12564, 0, 0, 280, 547, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, + /* 19970 */ 0, 1788, 97, 97, 0, 97, 2024, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 235, 67, 67, 67, + /* 19996 */ 67, 67, 57889, 547, 547, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1799, 45, 45, 45, + /* 20021 */ 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1092, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1612, 97, 97, + /* 20046 */ 97, 97, 1616, 97, 1297, 1472, 0, 0, 0, 0, 1303, 1474, 0, 0, 0, 0, 1309, 1476, 0, 0, 0, 0, 97, 97, 97, + /* 20071 */ 1481, 97, 97, 97, 97, 97, 97, 1488, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 20096 */ 607, 97, 97, 97, 97, 40976, 18, 36884, 45078, 26, 30, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, + /* 20115 */ 213080, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 143448, 40976, 18, + /* 20133 */ 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 0, 0, 0, 97, 97, 97, 97, 1482, 97, 1483, 97, 97, + /* 20158 */ 97, 97, 97, 97, 1326, 97, 97, 1329, 1330, 97, 97, 97, 97, 97, 97, 1159, 1160, 97, 97, 97, 97, 97, 97, 97, + /* 20182 */ 97, 590, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211974, 102439, 0, 0, 106538, 98347, 0, 2158730, + /* 20204 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2474122, 2158730, 2158730, 2494602, + /* 20215 */ 2158730, 2158730, 2158730, 2809994, 2158730, 2158730, 2842762, 2158730, 2158730, 2158730, 2900106, + /* 20226 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3014794, 2158730, 2158730, + /* 20237 */ 3051658, 2158730, 2158730, 3100810, 2158730, 2158730, 2158730, 2158730, 3096714, 2158730, 2158730, + /* 20248 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, + /* 20259 */ 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 2207744, 541, 541, 543, 543, 0, 0, 2166784, 0, 548, + /* 20275 */ 549, 549, 0, 286, 2158877, 2158877, 2158877, 2863389, 2892061, 2158877, 2158877, 2158877, 2158877, + /* 20288 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3186973, 2158877, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20305 */ 2367626, 2158877, 2404637, 2412829, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 20316 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2564381, 2158877, + /* 20327 */ 2158877, 2605341, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2679069, 2158877, 2695453, + /* 20338 */ 2158877, 2703645, 2158877, 2711837, 2752797, 2158877, 0, 2158877, 2158877, 2158877, 2384010, 2158730, + /* 20350 */ 2158730, 2158730, 2158730, 3006602, 2383872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20361 */ 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20372 */ 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 2158877, 2785565, 2158877, 2810141, 2158877, 2158877, + /* 20389 */ 2842909, 2158877, 2158877, 2158877, 2900253, 2158877, 2158877, 2158877, 2158877, 2158877, 2531613, + /* 20400 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2617629, 2158877, 2158877, 2158877, 2158877, 2158730, + /* 20411 */ 2818186, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20422 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3105053, 2158877, 2158877, 2158877, 2158877, + /* 20433 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 0, 0, 97, 97, 97, 1611, + /* 20450 */ 97, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 1499, 97, 97, 97, 97, 97, 2441354, 2445450, 2158730, 2158730, + /* 20470 */ 2158730, 2158730, 2158730, 2158730, 2502794, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20481 */ 2158730, 2433162, 2158730, 2453642, 2461834, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20492 */ 2580618, 2158730, 2158730, 2158730, 2158730, 2621578, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20503 */ 2158730, 2699402, 2158730, 2158730, 2158730, 2158730, 2678922, 2158730, 2695306, 2158730, 2703498, + /* 20514 */ 2158730, 2711690, 2752650, 2158730, 2158730, 2785418, 2158730, 2158730, 2158730, 3113098, 2158730, + /* 20525 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3186826, 2158730, 2207744, + /* 20536 */ 2207744, 2207744, 2207744, 2781184, 2793472, 2207744, 2818048, 2207744, 2207744, 2207744, 2207744, + /* 20547 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 541, 0, 543, 2158877, 2502941, + /* 20561 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2580765, 2158877, 2158877, + /* 20572 */ 2158877, 2158877, 2621725, 2158877, 3019037, 2158877, 3043613, 2158877, 2158877, 2158877, 2158877, + /* 20583 */ 3080477, 2158877, 2158877, 3113245, 2158877, 2158877, 2158877, 2158877, 0, 2158877, 2908445, 2158877, + /* 20595 */ 2158877, 2158877, 2978077, 2158877, 2158877, 2158877, 2158877, 3039517, 2158877, 2158730, 2510986, + /* 20606 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2584714, 2158730, 2609290, 2158730, + /* 20617 */ 2158730, 2629770, 2158730, 2158730, 2158730, 2388106, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20628 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2605194, 2158730, 2158730, + /* 20639 */ 2158730, 2158730, 2687114, 2158730, 2715786, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20650 */ 2158730, 2867338, 2158730, 2904202, 2158730, 2158730, 2158730, 2642058, 2158730, 2158730, 2158730, + /* 20661 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2781322, 2793610, 2158730, 3121290, + /* 20672 */ 2158730, 2158730, 2158730, 3149962, 2158730, 2158730, 3170442, 3174538, 2158730, 2367488, 2207744, + /* 20683 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2441216, 2445312, 2207744, 2207744, 2207744, + /* 20694 */ 2207744, 2207744, 2207744, 2502656, 2158877, 2433309, 2158877, 2453789, 2461981, 2158877, 2158877, + /* 20705 */ 2158877, 2158877, 2158877, 2158877, 2511133, 2158877, 2158877, 2158877, 2158877, 2584861, 2158877, + /* 20716 */ 2609437, 2158877, 2158877, 2629917, 2158877, 2158877, 2158877, 2687261, 2158877, 2715933, 2158877, + /* 20727 */ 2158730, 2158730, 2973834, 2158730, 2982026, 2158730, 2158730, 3002506, 2158730, 3047562, 3063946, + /* 20738 */ 3076234, 2158730, 2158730, 2158730, 2158730, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, + /* 20749 */ 2207744, 2158877, 2507037, 0, 0, 2158877, 2158730, 2158730, 2158730, 3203210, 2207744, 2207744, 2207744, + /* 20762 */ 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20773 */ 2207744, 2207744, 2207744, 2207744, 2564096, 2207744, 2207744, 2207744, 2707741, 2732317, 2158877, + /* 20784 */ 2158877, 2158877, 2822429, 2826525, 2158877, 2896157, 2158877, 2158877, 2924829, 2158877, 2158877, + /* 20795 */ 2973981, 2158877, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 642, 0, 2158592, 0, 45, 1529, 45, 45, 45, 45, + /* 20818 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 67, 67, 2982173, 2158877, 2158877, 3002653, 2158877, + /* 20836 */ 3047709, 3064093, 3076381, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3203357, + /* 20847 */ 2523274, 2527370, 2158730, 2158730, 2576522, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20858 */ 2158730, 2158730, 2158730, 2158730, 2908298, 2494749, 2158877, 2158877, 2158877, 2523421, 2527517, + /* 20869 */ 2158877, 2158877, 2576669, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 40976, 0, 18, 18, + /* 20883 */ 4321280, 2224253, 2232448, 4329472, 2232448, 2158730, 2498698, 2158730, 2158730, 2158730, 2158730, + /* 20894 */ 2568330, 2158730, 2592906, 2625674, 2158730, 2158730, 2674826, 2736266, 2158730, 2158730, 2158730, + /* 20905 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20916 */ 2207744, 2207744, 2207744, 2158730, 2912394, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20927 */ 2158730, 3109002, 2158730, 2158730, 3133578, 3145866, 3154058, 2375680, 2207744, 3108864, 2207744, + /* 20938 */ 2207744, 3133440, 3145728, 3153920, 2375965, 2380061, 2158877, 2158877, 2421021, 2158877, 2449693, + /* 20949 */ 2158877, 2158877, 2158877, 3117341, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20960 */ 2158730, 2158730, 2158730, 2158730, 2158730, 3104906, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20971 */ 2158730, 2158877, 2498845, 2158877, 2158877, 0, 2158877, 2158877, 2568477, 2158877, 2593053, 2625821, + /* 20983 */ 2158877, 2158877, 2674973, 0, 0, 0, 0, 97, 97, 1480, 97, 97, 97, 97, 97, 1485, 97, 97, 97, 0, 97, 97, + /* 21005 */ 1729, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 311, 97, 97, 97, 97, 97, 97, 97, 97, 1520, 97, 97, 1523, 97, + /* 21029 */ 97, 1526, 97, 2736413, 2158877, 2158877, 0, 2158877, 2912541, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 21043 */ 2158877, 2158877, 3109149, 2158877, 2158877, 3014941, 2158877, 2158877, 3051805, 2158877, 2158877, + /* 21054 */ 3100957, 2158877, 2158877, 3121437, 2158877, 2158877, 2158877, 3150109, 3133725, 3146013, 3154205, + /* 21065 */ 2158730, 2408586, 2416778, 2158730, 2465930, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 21076 */ 2158730, 2158730, 3018890, 2158730, 3043466, 2158730, 2158730, 2158730, 2158730, 3080330, 2633866, + /* 21087 */ 2658442, 2740362, 2744458, 2834570, 2949258, 2158730, 2986122, 2158730, 2998410, 2158730, 2158730, + /* 21098 */ 2158730, 3129482, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, + /* 21109 */ 2207744, 3129344, 2158877, 2408733, 2416925, 2158877, 2466077, 2158877, 2158877, 3170589, 3174685, + /* 21120 */ 2158877, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2424970, 2158730, 2158730, 2158730, + /* 21133 */ 2158730, 2707594, 2732170, 2158730, 2158730, 2158730, 2822282, 2826378, 2158730, 2896010, 2158730, + /* 21144 */ 2158730, 2924682, 2949405, 2158877, 2986269, 2158877, 2998557, 2158877, 2158877, 2158877, 3129629, + /* 21155 */ 2158730, 2158730, 2478218, 2158730, 2158730, 2158730, 2535562, 2543754, 2158730, 2158730, 2158730, + /* 21166 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3117194, 2207744, 2207744, 2478080, 2207744, + /* 21177 */ 2207744, 2207744, 2207744, 3014656, 2207744, 2207744, 3051520, 2207744, 2207744, 3100672, 2207744, + /* 21188 */ 2207744, 3121152, 2207744, 2207744, 2207744, 2207744, 2207744, 2584576, 2207744, 2609152, 2207744, + /* 21199 */ 2207744, 2629632, 2207744, 2207744, 2207744, 2686976, 2207744, 2207744, 2535424, 2543616, 2207744, + /* 21210 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158877, 2158877, + /* 21221 */ 2478365, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2158730, 2482314, 2158730, + /* 21233 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, + /* 21244 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 823, 0, 825, + /* 21258 */ 2158730, 2158730, 2158730, 2990218, 2158730, 2158730, 2207744, 2207744, 2482176, 2207744, 2207744, + /* 21269 */ 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 135, 0, 2207744, 2207744, 2990080, + /* 21286 */ 2207744, 2207744, 2158877, 2158877, 2482461, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, + /* 21299 */ 2158877, 2158877, 2158730, 2429066, 2158730, 2515082, 2158730, 2588810, 2158730, 2838666, 2158730, + /* 21310 */ 2158730, 2158730, 3010698, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, + /* 21321 */ 2207744, 2207744, 2207744, 3010560, 2158877, 2429213, 2158877, 2515229, 0, 0, 2158877, 2588957, 2158877, + /* 21334 */ 0, 2838813, 2158877, 2158877, 2158877, 3010845, 2158730, 2506890, 2158730, 2158730, 2158730, 2748554, + /* 21346 */ 2756746, 2777226, 2801802, 2158730, 2158730, 2158730, 2863242, 2891914, 2158730, 2158730, 2158730, + /* 21357 */ 2158730, 2158730, 2158730, 2564234, 2158730, 2158730, 2158730, 2158730, 2158730, 2597002, 2158730, + /* 21368 */ 2158730, 2158730, 3006464, 2384157, 0, 0, 2158877, 2158877, 2158877, 2158877, 3006749, 2158730, 2637962, + /* 21381 */ 2953354, 2158730, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158877, 2638109, 2953501, 2158877, 2539658, + /* 21394 */ 2158730, 2539520, 2207744, 0, 0, 2539805, 2158877, 2158730, 2158730, 2158730, 2977930, 2158730, 2158730, + /* 21407 */ 2158730, 2158730, 3039370, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3158154, 2207744, 0, + /* 21419 */ 2158877, 2158730, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2965642, 2965504, 2965789, 0, 0, 0, + /* 21434 */ 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1484, 97, 97, 97, 97, 2158592, 18, 0, 122880, 0, 0, 0, + /* 21459 */ 77824, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 356, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, + /* 21484 */ 1751, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1427, 67, 67, 67, 67, 67, 1432, 67, 67, 67, 3104768, 2158592, + /* 21506 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 122880, + /* 21518 */ 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 1322, 550, 0, 286, 0, 2158592, 2158592, 2158592, + /* 21541 */ 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, + /* 21556 */ 24, 4329472, 27, 27, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, + /* 21569 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 542, 0, 0, 0, 542, 0, 544, 0, 0, 0, 544, 0, 550, 0, + /* 21589 */ 0, 0, 0, 0, 97, 97, 1610, 97, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, + /* 21616 */ 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, + /* 21632 */ 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 237568, 102439, 106538, + /* 21647 */ 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 192512, + /* 21666 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 94, 40976, 18, 36884, + /* 21684 */ 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 96, 40976, 18, 36884, 45078, 24, 27, 90143, + /* 21703 */ 94242, 0, 102439, 106538, 98347, 0, 0, 12378, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 126, 126, + /* 21723 */ 126, 126, 90143, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, + /* 21740 */ 2158592, 2158592, 2158592, 20480, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 40976, 18, 36884, 45078, 24, 27, + /* 21759 */ 90143, 94242, 241664, 102439, 106538, 98347, 0, 0, 20568, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, + /* 21776 */ 0, 102439, 106538, 98347, 0, 0, 200797, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, + /* 21794 */ 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 0, 0, 44, 0, 0, 20575, 40976, 18, + /* 21815 */ 36884, 45078, 24, 27, 90143, 94242, 0, 41, 41, 41, 0, 0, 1126400, 40976, 18, 36884, 45078, 24, 27, 90143, + /* 21835 */ 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, + /* 21853 */ 106538, 98347, 0, 0, 89, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 131201, 27, 27, 90143, 0, 0, + /* 21875 */ 2170880, 0, 0, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 21889 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, + /* 21900 */ 2158592, 2158592, 2158592, 0, 94242, 0, 0, 208896, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, + /* 21916 */ 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 32768, 0, 0, 0, 0, + /* 21936 */ 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2158592, + /* 21949 */ 2453504, 2461696, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2510848, 2158592, 2158592, + /* 21960 */ 2158592, 2158592, 40976, 18, 36884, 245783, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, + /* 21977 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 221184, 40976, 18, 36884, + /* 21995 */ 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 180224, 40976, 18, 18, 36884, 155648, 45078, + /* 22013 */ 0, 24, 24, 217088, 27, 27, 27, 217088, 90143, 0, 0, 2170880, 0, 0, 828, 0, 2158592, 2158592, 2158592, + /* 22032 */ 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2387968, + /* 22043 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 233472, 0, 0, + /* 22060 */ 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, + /* 22083 */ 45, 45, 45, 727, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 45, 1808, 45, 45, + /* 22107 */ 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 0, 0, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, + /* 22131 */ 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1787, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, + /* 22156 */ 45, 2029, 45, 67, 67, 67, 67, 2033, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 22180 */ 45, 1798, 45, 45, 1800, 45, 45, 0, 1472, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 1315, 0, 0, + /* 22208 */ 0, 0, 97, 97, 97, 97, 1320, 97, 97, 0, 0, 97, 97, 97, 97, 1786, 97, 0, 0, 97, 97, 0, 1790, 1527, 45, 45, + /* 22234 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 67, 24850, 24850, 12564, 12564, 0, 57889, 281, 0, + /* 22257 */ 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 1785, 97, 97, 0, 0, 97, 97, 0, 97, 97, 1979, 97, 97, + /* 22282 */ 45, 45, 1983, 45, 1984, 45, 45, 45, 45, 45, 652, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 690, 45, 45, 694, + /* 22307 */ 45, 45, 40976, 19, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 262144, 40976, 18, + /* 22326 */ 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 46, 67, 98, 40976, 18, 36884, 45078, 24, + /* 22344 */ 27, 90143, 94242, 38, 102439, 106538, 98347, 45, 67, 97, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, + /* 22363 */ 102439, 106538, 98347, 0, 0, 258048, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, + /* 22380 */ 98347, 0, 0, 1122423, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 1114152, 1114152, 1114152, 0, 0, + /* 22398 */ 1114112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 37, 102439, 106538, 98347, 0, 0, 204800, 40976, + /* 22415 */ 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 57436, 40976, 18, 36884, 45078, + /* 22433 */ 24, 27, 33, 33, 0, 33, 33, 33, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 124, 124, 124, 127, 127, 127, + /* 22457 */ 127, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158877, 2158877, 2158877, 2388253, 2158877, 2158877, 2158877, + /* 22473 */ 2158877, 2158877, 2781469, 2793757, 2158877, 2818333, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 22484 */ 2158877, 2158877, 2867485, 2158877, 2904349, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 22495 */ 2158877, 3096861, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 22506 */ 2441501, 2445597, 2158877, 2158877, 2158877, 2158877, 2158877, 40976, 122, 123, 36884, 0, 45078, 0, 24, + /* 22521 */ 24, 24, 27, 27, 27, 27, 90143, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 936, 2158592, + /* 22545 */ 4243810, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, + /* 22571 */ 45, 45, 935, 45, 45, 45, 715, 45, 45, 45, 45, 45, 45, 45, 723, 45, 45, 45, 45, 45, 1182, 45, 45, 45, 45, + /* 22596 */ 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 45, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, + /* 22617 */ 102439, 106538, 98347, 47, 68, 99, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, + /* 22634 */ 98347, 48, 69, 100, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 49, 70, 101, + /* 22653 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 50, 71, 102, 40976, 18, 36884, + /* 22671 */ 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 51, 72, 103, 40976, 18, 36884, 45078, 24, 27, + /* 22689 */ 90143, 94242, 38, 102439, 106538, 98347, 52, 73, 104, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, + /* 22707 */ 102439, 106538, 98347, 53, 74, 105, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, + /* 22724 */ 98347, 54, 75, 106, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 55, 76, 107, + /* 22743 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 56, 77, 108, 40976, 18, 36884, + /* 22761 */ 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 57, 78, 109, 40976, 18, 36884, 45078, 24, 27, + /* 22779 */ 90143, 94242, 38, 102439, 106538, 98347, 58, 79, 110, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, + /* 22797 */ 102439, 106538, 98347, 59, 80, 111, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, + /* 22814 */ 98347, 60, 81, 112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 61, 82, 113, + /* 22833 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 62, 83, 114, 40976, 18, 36884, + /* 22851 */ 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 63, 84, 115, 40976, 18, 36884, 45078, 24, 27, + /* 22869 */ 90143, 94242, 38, 102439, 106538, 98347, 64, 85, 116, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, + /* 22887 */ 102439, 106538, 98347, 65, 86, 117, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, + /* 22904 */ 98347, 66, 87, 118, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 118820, 102439, 106538, 98347, 118820, + /* 22921 */ 118820, 118820, 40976, 18, 18, 0, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1314, 0, 0, 0, 0, + /* 22945 */ 0, 0, 97, 97, 97, 97, 97, 1321, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 0, 1315, 0, + /* 22972 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 131, 94242, 0, 0, 0, 38, 102439, 0, 0, + /* 22997 */ 106538, 98347, 28809, 45, 45, 45, 145, 149, 45, 45, 45, 45, 45, 174, 45, 179, 45, 185, 45, 188, 45, 45, + /* 23019 */ 202, 67, 255, 67, 67, 269, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 292, 296, 97, + /* 23042 */ 97, 97, 97, 97, 321, 97, 326, 97, 332, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 646, + /* 23067 */ 335, 97, 97, 349, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 437, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23092 */ 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 523, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23118 */ 511, 67, 67, 67, 97, 97, 97, 620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1501, 1502, 97, 793, + /* 23143 */ 67, 67, 796, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 808, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, + /* 23170 */ 97, 97, 2052, 67, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, + /* 23193 */ 54074, 550, 830, 97, 97, 97, 97, 97, 97, 97, 97, 97, 315, 97, 97, 97, 97, 97, 97, 841, 97, 97, 97, 97, 97, + /* 23218 */ 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 867, 97, 97, 97, 97, + /* 23244 */ 97, 97, 97, 891, 97, 97, 894, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 906, 45, 937, 45, 45, 940, 45, 45, + /* 23269 */ 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 734, 735, 67, 737, 67, 738, 67, 740, 67, 67, 67, 45, 967, 45, 45, + /* 23294 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 435, 45, 45, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23320 */ 45, 45, 45, 45, 415, 45, 45, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, + /* 23346 */ 67, 67, 67, 67, 67, 25398, 1081, 13112, 1085, 54074, 1089, 0, 0, 0, 0, 0, 0, 363, 0, 28809, 0, 139, 45, + /* 23369 */ 45, 45, 45, 45, 45, 1674, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1913, 67, 1914, 67, 67, 67, 1918, 67, 67, + /* 23393 */ 97, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 630, 97, 97, 97, 97, 97, 1169, 97, 97, + /* 23418 */ 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1534, 45, 45, 45, 45, 45, 1538, 45, 45, + /* 23444 */ 45, 45, 1233, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 742, 67, 45, 45, 1191, 45, 45, 45, + /* 23469 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 454, 67, 67, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23495 */ 67, 1251, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2050, 0, 97, 97, 45, 45, 45, 732, 45, 45, 67, 67, 67, + /* 23521 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23547 */ 67, 772, 67, 67, 67, 1293, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 2158592, 2158592, + /* 23572 */ 2158592, 2404352, 2412544, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 0, 97, 97, + /* 23594 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1737, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, + /* 23619 */ 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 647, 45, 45, 1387, 45, 45, 1391, 45, 45, 45, + /* 23644 */ 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 1400, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1407, + /* 23669 */ 45, 45, 45, 45, 45, 941, 45, 943, 45, 45, 45, 45, 45, 45, 951, 45, 67, 1438, 67, 67, 67, 67, 67, 67, 67, + /* 23694 */ 67, 67, 67, 1447, 67, 67, 67, 67, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, + /* 23719 */ 67, 67, 97, 1491, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, + /* 23745 */ 97, 97, 97, 1736, 97, 45, 45, 1541, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 677, 45, 45, 67, + /* 23770 */ 1581, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 791, 792, 67, 67, 67, 67, 1598, 67, 1600, + /* 23794 */ 67, 67, 67, 67, 67, 67, 67, 67, 1472, 97, 97, 97, 1727, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 23819 */ 97, 1513, 97, 97, 67, 67, 97, 1879, 97, 1881, 97, 0, 1884, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, + /* 23845 */ 0, 0, 1842, 97, 97, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1928, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, + /* 23872 */ 45, 45, 1903, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 1971, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, + /* 23898 */ 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1381, 45, 45, 45, 45, 1976, 97, 97, 97, 97, 97, 45, 45, 45, 45, + /* 23924 */ 45, 45, 45, 45, 45, 45, 45, 45, 1747, 809, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, + /* 23948 */ 544, 97, 907, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1478, 97, 97, 97, 97, 97, 97, + /* 23974 */ 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23999 */ 67, 477, 67, 67, 67, 67, 67, 67, 1294, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, + /* 24027 */ 97, 97, 97, 97, 97, 97, 97, 97, 1324, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1374, + /* 24053 */ 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 45, 45, 45, 45, 45, 45, 45, 1908, 45, + /* 24079 */ 45, 1910, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1919, 67, 0, 0, 97, 97, 97, 97, 45, 2048, 67, 2049, 0, 0, + /* 24104 */ 97, 2051, 45, 45, 45, 939, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 397, 45, 45, 45, 1921, 67, 67, + /* 24129 */ 1923, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1947, 45, 1935, 0, 0, 0, + /* 24155 */ 97, 1939, 97, 97, 1941, 97, 45, 45, 45, 45, 45, 45, 382, 389, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, + /* 24179 */ 45, 1812, 67, 67, 67, 67, 67, 256, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 336, 97, + /* 24203 */ 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, + /* 24228 */ 45, 45, 371, 373, 45, 45, 45, 955, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 45, 457, + /* 24253 */ 459, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 478, 67, 67, 482, 67, 67, 485, 67, 67, 67, 67, 67, 67, 67, + /* 24278 */ 67, 67, 67, 67, 67, 67, 97, 1828, 97, 554, 556, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 575, 97, 97, 579, + /* 24303 */ 97, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 330, 97, 97, 67, 746, 67, 67, 67, 67, 67, + /* 24329 */ 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, + /* 24354 */ 67, 67, 67, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 856, 97, 97, 97, 0, 97, 97, 97, 97, 97, + /* 24380 */ 97, 97, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1642, 97, 1644, 97, 97, 890, 97, 97, 97, 97, + /* 24405 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 67, 67, 67, 67, 1065, 1066, 67, 67, 67, 67, 67, 67, 67, + /* 24431 */ 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24456 */ 496, 67, 67, 97, 97, 1505, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 0, 1474, 0, + /* 24481 */ 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1617, 97, 97, 1635, 0, 1637, 97, 97, 97, 97, 97, 97, 97, + /* 24506 */ 97, 97, 97, 97, 885, 97, 97, 97, 97, 67, 67, 1704, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 24531 */ 565, 572, 97, 97, 97, 97, 97, 97, 97, 97, 1832, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, + /* 24557 */ 45, 45, 45, 1946, 45, 45, 67, 67, 67, 67, 67, 97, 1926, 97, 1927, 97, 0, 0, 0, 97, 97, 1934, 2043, 0, 0, + /* 24582 */ 97, 97, 97, 2047, 45, 45, 67, 67, 0, 1832, 97, 97, 45, 45, 45, 981, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24607 */ 45, 45, 45, 1227, 45, 45, 45, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 372, 45, 45, 45, + /* 24631 */ 45, 1661, 1662, 45, 45, 45, 45, 45, 1666, 45, 45, 45, 45, 45, 1673, 45, 1675, 45, 45, 45, 45, 45, 45, 45, + /* 24655 */ 67, 1426, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 67, 67, 45, 418, 45, 45, 420, 45, 45, + /* 24680 */ 423, 45, 45, 45, 45, 45, 45, 45, 45, 959, 45, 45, 962, 45, 45, 45, 45, 458, 67, 67, 67, 67, 67, 67, 67, + /* 24705 */ 67, 67, 67, 67, 67, 67, 67, 483, 67, 67, 67, 67, 504, 67, 67, 506, 67, 67, 509, 67, 67, 67, 67, 67, 67, + /* 24730 */ 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 555, 97, 97, 97, 97, 97, 97, + /* 24755 */ 97, 97, 97, 97, 97, 97, 97, 97, 580, 97, 97, 97, 97, 601, 97, 97, 603, 97, 97, 606, 97, 97, 97, 97, 97, + /* 24780 */ 97, 848, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1498, 97, 97, 97, 97, 97, 97, 45, 45, 714, 45, 45, 45, 45, + /* 24805 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 989, 990, 45, 67, 67, 67, 67, 67, 1011, 67, 67, 67, 67, 1015, 67, 67, + /* 24830 */ 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 467, 67, 67, 67, 67, 67, 67, 67, 45, 45, 1179, + /* 24855 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 1004, 67, 1217, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24880 */ 45, 45, 45, 45, 45, 45, 45, 728, 67, 1461, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, + /* 24905 */ 67, 97, 1516, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 67, 67, 67, 1705, 67, 67, + /* 24930 */ 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1715, 97, 97, 97, 97, + /* 24956 */ 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1380, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, + /* 24983 */ 1887, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 2006, 45, 45, 1907, 45, 45, 45, 45, 45, 67, 67, 67, + /* 25009 */ 67, 67, 67, 67, 67, 67, 1920, 67, 97, 0, 2035, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 1428, 67, + /* 25034 */ 67, 67, 67, 67, 67, 1435, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 146, + /* 25057 */ 45, 152, 45, 45, 165, 45, 175, 45, 180, 45, 45, 187, 190, 195, 45, 203, 254, 257, 262, 67, 270, 67, 67, 0, + /* 25081 */ 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 293, 97, 299, 97, 97, 312, 97, 322, 97, 327, 97, 97, + /* 25104 */ 334, 337, 342, 97, 350, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 484, 67, 67, 67, 67, 67, 67, + /* 25129 */ 67, 67, 67, 67, 67, 67, 67, 499, 97, 581, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 648, + /* 25154 */ 45, 650, 45, 651, 45, 653, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1954, 67, 67, 67, 1958, 67, 67, 67, + /* 25178 */ 67, 67, 67, 67, 768, 67, 67, 67, 67, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 680, 45, 45, 45, 45, + /* 25204 */ 45, 45, 45, 45, 688, 689, 691, 45, 45, 45, 45, 45, 983, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 947, 45, + /* 25229 */ 45, 45, 45, 952, 45, 45, 698, 699, 45, 45, 702, 703, 45, 45, 45, 45, 45, 45, 45, 711, 744, 67, 67, 67, 67, + /* 25254 */ 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 761, 67, 67, 67, 67, 765, 67, 767, 67, 67, 67, 67, 67, 67, 67, + /* 25279 */ 67, 775, 776, 778, 67, 67, 67, 67, 67, 67, 785, 786, 67, 67, 789, 790, 67, 67, 67, 67, 67, 67, 1442, 67, + /* 25303 */ 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1775, 97, 97, 97, 67, 67, 67, 67, 67, 798, 67, 67, 67, 802, + /* 25328 */ 67, 67, 67, 67, 67, 67, 67, 67, 1465, 67, 67, 1468, 67, 67, 1471, 67, 67, 810, 67, 67, 67, 67, 67, 67, 67, + /* 25353 */ 67, 67, 821, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 833, 97, 835, 97, 836, 97, 838, + /* 25374 */ 97, 97, 0, 0, 97, 97, 97, 2002, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1740, 45, 45, 45, 1744, 45, 45, + /* 25399 */ 45, 97, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 0, 1717, 1718, 97, 97, 97, 97, 97, + /* 25424 */ 1722, 97, 0, 0, 859, 97, 97, 97, 97, 863, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, + /* 25449 */ 97, 97, 97, 873, 874, 876, 97, 97, 97, 97, 97, 97, 883, 884, 97, 97, 887, 888, 97, 18, 131427, 0, 0, 0, 0, + /* 25474 */ 0, 0, 362, 225280, 0, 365, 0, 367, 0, 45, 45, 45, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1199, + /* 25499 */ 45, 45, 45, 45, 45, 97, 97, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 919, 638, 0, 0, 0, 0, 2158877, + /* 25523 */ 2158877, 2158877, 2158877, 2158877, 2425117, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 25534 */ 2597149, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2642205, 2158877, 2158877, 2158877, + /* 25545 */ 2158877, 2158877, 3158301, 0, 2375818, 2379914, 2158730, 2158730, 2420874, 2158730, 2449546, 2158730, + /* 25557 */ 2158730, 953, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 965, 978, 45, 45, 45, 45, 45, + /* 25581 */ 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1027, 67, + /* 25606 */ 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 1077, 1078, 67, 67, 25398, 0, + /* 25630 */ 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 139, 2158730, 2158730, 2158730, 2404490, 2412682, 1113, + /* 25650 */ 97, 97, 97, 97, 97, 97, 1121, 97, 1123, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 25676 */ 45, 45, 45, 45, 1540, 1155, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 1168, 97, 97, + /* 25701 */ 1171, 1172, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, + /* 25727 */ 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 45, 1219, 45, 45, 45, 45, + /* 25752 */ 45, 45, 45, 1226, 45, 45, 45, 45, 45, 168, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, + /* 25777 */ 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1242, 67, + /* 25802 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1046, 67, 67, 1254, 67, 1256, 67, 67, 67, 67, 67, 67, + /* 25827 */ 67, 67, 67, 67, 67, 67, 806, 807, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 25852 */ 97, 1111, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 1354, 97, 97, 97, 1359, 97, 97, 97, 0, 97, 97, 97, 97, + /* 25876 */ 1640, 97, 97, 97, 97, 97, 97, 97, 897, 97, 97, 97, 902, 97, 97, 97, 97, 97, 97, 97, 97, 1366, 97, 97, 97, + /* 25901 */ 97, 97, 97, 97, 1371, 97, 97, 97, 0, 97, 97, 97, 1730, 97, 97, 97, 97, 97, 97, 97, 97, 915, 97, 97, 97, + /* 25926 */ 97, 0, 360, 0, 67, 67, 67, 1440, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 1019, 67, 67, + /* 25951 */ 67, 67, 67, 1453, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 97, 97, 97, 1493, 97, 97, 97, 97, 97, 97, + /* 25976 */ 97, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 97, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 26001 */ 1514, 67, 67, 67, 67, 1584, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 67, 67, 783, 67, 67, 67, 788, + /* 26025 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 1601, 67, 67, 67, 1604, 67, 1606, 1607, 67, 1472, 0, 1474, 0, + /* 26048 */ 1476, 0, 97, 97, 97, 97, 97, 97, 1614, 97, 97, 97, 97, 45, 45, 1850, 45, 45, 45, 45, 1855, 45, 45, 45, 45, + /* 26073 */ 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1229, 97, 1618, 97, 97, 97, 97, 97, 97, 97, 1625, 97, 97, + /* 26097 */ 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 447, 45, 45, 45, 45, 45, 67, 67, 1633, 97, 97, 0, + /* 26123 */ 97, 97, 97, 97, 97, 97, 97, 97, 1643, 1645, 97, 97, 0, 0, 97, 97, 1784, 97, 97, 97, 0, 0, 97, 97, 0, 97, + /* 26149 */ 1894, 1895, 97, 1897, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 656, 45, 45, 45, 45, 45, 45, 97, 1648, 97, + /* 26173 */ 1650, 1651, 97, 0, 45, 45, 45, 1654, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 658, + /* 26198 */ 45, 45, 45, 45, 664, 45, 45, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 1669, + /* 26223 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1005, 67, 67, 1681, 67, 67, 67, 67, 67, 67, + /* 26248 */ 67, 1686, 67, 67, 67, 67, 67, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 1060, 67, + /* 26273 */ 67, 97, 97, 1713, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1378, 45, 45, 45, 45, 45, 45, 45, + /* 26299 */ 408, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 1549, 45, 45, 45, 45, 45, 97, 97, 1780, 0, 97, 97, 97, 97, + /* 26324 */ 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2027, 2028, 45, 45, 67, 67, 2031, 2032, 67, 45, 45, 1804, 45, + /* 26349 */ 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1917, 67, 67, 67, 67, 67, 67, 67, 1819, 67, 67, 67, + /* 26374 */ 67, 67, 67, 67, 67, 97, 97, 97, 1708, 97, 97, 97, 97, 97, 45, 45, 1862, 67, 67, 67, 67, 67, 67, 67, 67, + /* 26399 */ 67, 67, 67, 67, 67, 497, 67, 67, 67, 1877, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, + /* 26426 */ 97, 97, 1839, 0, 0, 97, 97, 97, 97, 1936, 0, 0, 97, 97, 97, 97, 97, 97, 1943, 1944, 1945, 45, 45, 45, 45, + /* 26451 */ 670, 45, 45, 45, 45, 674, 45, 45, 45, 45, 678, 45, 1948, 45, 1950, 45, 45, 45, 45, 1955, 1956, 1957, 67, + /* 26474 */ 67, 67, 1960, 67, 1962, 67, 67, 67, 67, 1967, 1968, 1969, 97, 0, 0, 0, 97, 97, 1974, 97, 0, 1936, 0, 97, + /* 26498 */ 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1906, 0, 1977, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, + /* 26524 */ 45, 45, 45, 45, 45, 1746, 45, 45, 45, 45, 2011, 67, 67, 2013, 67, 67, 67, 2017, 97, 97, 0, 0, 2021, 97, + /* 26548 */ 8192, 97, 97, 2025, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1916, 67, 67, 67, 67, 0, 94242, 0, 0, 0, + /* 26573 */ 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 140, 45, 45, 45, 1180, 45, 45, 45, 45, 1184, 45, 45, 45, + /* 26595 */ 45, 45, 45, 45, 387, 45, 392, 45, 45, 396, 45, 45, 399, 45, 45, 67, 207, 67, 67, 67, 67, 67, 67, 236, 67, + /* 26620 */ 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 67, 67, 67, 67, 67, 0, 97, 97, 287, + /* 26646 */ 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1656, 1657, 45, 376, + /* 26671 */ 45, 45, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1406, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, + /* 26697 */ 462, 67, 67, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 817, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, + /* 26721 */ 97, 97, 97, 559, 97, 97, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 896, 97, 97, 97, 900, 97, 97, 97, 97, + /* 26746 */ 97, 97, 912, 914, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 391, 45, 45, 45, 45, 45, + /* 26772 */ 45, 45, 45, 713, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 1140, 97, 97, 97, 97, + /* 26797 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 636, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 26823 */ 67, 67, 513, 67, 67, 1363, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 889, 97, 97, 97, + /* 26848 */ 1714, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 926, 45, 45, 45, 45, 45, 45, 45, 45, 672, 45, 45, 45, + /* 26874 */ 45, 45, 45, 45, 45, 686, 45, 45, 45, 45, 45, 45, 45, 45, 944, 45, 45, 45, 45, 45, 45, 45, 45, 1676, 45, + /* 26899 */ 45, 45, 45, 45, 45, 67, 97, 97, 97, 1833, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, + /* 26926 */ 45, 45, 1902, 45, 45, 45, 45, 45, 957, 45, 45, 45, 45, 961, 45, 963, 45, 45, 45, 67, 97, 2034, 0, 97, 97, + /* 26951 */ 97, 97, 97, 2040, 45, 45, 45, 2042, 67, 67, 67, 67, 67, 67, 1574, 67, 67, 67, 67, 67, 1578, 67, 67, 67, + /* 26975 */ 67, 67, 67, 799, 67, 67, 67, 804, 67, 67, 67, 67, 67, 67, 67, 1298, 0, 0, 0, 1304, 0, 0, 0, 1310, 132, + /* 27000 */ 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 1414, 45, 45, 45, 45, 45, 45, + /* 27023 */ 45, 45, 45, 45, 428, 45, 45, 45, 45, 45, 57889, 0, 0, 54074, 54074, 550, 831, 97, 97, 97, 97, 97, 97, 97, + /* 27047 */ 97, 97, 568, 97, 97, 97, 97, 578, 97, 45, 45, 968, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 27072 */ 1228, 45, 45, 67, 67, 67, 67, 67, 25398, 1082, 13112, 1086, 54074, 1090, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, + /* 27096 */ 139, 2158592, 2158592, 2158592, 2404352, 2412544, 67, 67, 67, 67, 1464, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27115 */ 67, 67, 67, 510, 67, 67, 67, 67, 97, 97, 97, 97, 1519, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, + /* 27140 */ 97, 0, 0, 0, 0, 1528, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 45, 1554, 45, 45, 45, + /* 27166 */ 45, 45, 45, 45, 45, 1562, 45, 45, 1565, 45, 45, 45, 45, 683, 45, 45, 45, 687, 45, 45, 692, 45, 45, 45, 45, + /* 27191 */ 45, 1953, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 1568, 67, 67, 67, 67, 67, + /* 27216 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27242 */ 67, 1594, 97, 97, 1649, 97, 97, 97, 0, 45, 45, 1653, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, + /* 27267 */ 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 45, 45, 1670, 45, 1672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 27292 */ 67, 736, 67, 67, 67, 67, 67, 741, 67, 67, 67, 1680, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27317 */ 67, 1074, 67, 67, 67, 1692, 67, 67, 67, 67, 67, 67, 67, 1697, 67, 1699, 67, 67, 67, 67, 67, 67, 1012, 67, + /* 27341 */ 67, 67, 67, 67, 67, 67, 67, 67, 468, 475, 67, 67, 67, 67, 67, 67, 1769, 67, 67, 67, 67, 67, 67, 67, 97, + /* 27366 */ 97, 97, 97, 97, 97, 97, 624, 97, 97, 97, 97, 97, 97, 634, 97, 97, 1792, 97, 97, 97, 97, 97, 97, 97, 45, + /* 27391 */ 45, 45, 45, 45, 45, 45, 958, 45, 45, 45, 45, 45, 45, 964, 45, 150, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 27417 */ 45, 45, 45, 45, 45, 977, 204, 45, 67, 67, 67, 217, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, + /* 27442 */ 67, 67, 67, 67, 67, 67, 67, 67, 271, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 351, + /* 27466 */ 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 27492 */ 45, 1398, 45, 45, 45, 153, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 660, 661, 45, 45, 205, + /* 27517 */ 45, 67, 67, 67, 67, 220, 67, 228, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 280, 94, 0, 0, 67, 67, 67, + /* 27544 */ 67, 67, 272, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 352, 97, 0, 40976, 0, 18, 18, + /* 27568 */ 24, 24, 27, 27, 27, 45, 439, 45, 45, 45, 45, 45, 445, 45, 45, 45, 452, 45, 45, 67, 67, 212, 216, 67, 67, + /* 27593 */ 67, 67, 67, 241, 67, 246, 67, 252, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, + /* 27618 */ 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 1013, 67, 67, 1016, 67, 67, 67, 67, 67, 521, 67, 67, 525, 67, + /* 27642 */ 67, 67, 67, 67, 531, 67, 67, 67, 538, 67, 0, 0, 2046, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, + /* 27668 */ 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 1421, 97, 97, 583, 97, 97, 97, 97, + /* 27693 */ 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, + /* 27720 */ 1384, 97, 618, 97, 97, 622, 97, 97, 97, 97, 97, 628, 97, 97, 97, 635, 97, 18, 131427, 0, 0, 0, 639, 0, + /* 27744 */ 132, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 932, 45, 45, 45, 45, 45, 1544, + /* 27769 */ 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1194, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 45, + /* 27794 */ 45, 45, 45, 67, 67, 45, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, + /* 27819 */ 696, 45, 45, 45, 701, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, + /* 27844 */ 45, 45, 45, 45, 45, 194, 45, 45, 45, 729, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27870 */ 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 805, 67, 67, 67, 67, 67, 67, 67, 1587, 67, 1589, + /* 27895 */ 67, 67, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162968, 0, 0, 67, 67, + /* 27922 */ 67, 67, 67, 814, 816, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1008, 67, 67, 67, 67, 67, 67, + /* 27945 */ 67, 67, 67, 67, 67, 1020, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, + /* 27972 */ 45, 45, 45, 45, 67, 67, 67, 67, 1429, 67, 1430, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27997 */ 67, 67, 67, 67, 67, 67, 67, 518, 1076, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, + /* 28023 */ 28809, 0, 139, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1102, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1124, + /* 28048 */ 97, 1126, 97, 97, 1114, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 97, 1156, + /* 28072 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 97, 97, 1170, 97, 97, 97, 97, 0, 921, 0, + /* 28098 */ 0, 0, 0, 0, 0, 45, 45, 45, 45, 1532, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 45, 172, 45, 45, 45, 45, 45, + /* 28124 */ 45, 45, 45, 45, 45, 706, 45, 45, 709, 45, 45, 1177, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28149 */ 45, 45, 1202, 45, 1204, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 45, 45, 1232, 45, 45, + /* 28173 */ 45, 45, 45, 45, 45, 67, 1237, 67, 67, 67, 67, 67, 67, 1053, 1054, 67, 67, 67, 67, 67, 67, 1061, 67, 67, + /* 28197 */ 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1289, 67, 67, 67, 1292, 97, 97, 97, 97, 1339, 97, 97, 97, 97, + /* 28221 */ 97, 97, 1344, 97, 97, 97, 97, 45, 1849, 45, 1851, 45, 45, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, + /* 28246 */ 726, 45, 1385, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1188, 45, 45, 1401, 1402, 45, + /* 28270 */ 45, 45, 45, 1405, 45, 45, 45, 45, 45, 45, 45, 45, 1752, 45, 45, 45, 45, 45, 67, 67, 1410, 45, 45, 45, + /* 28294 */ 1413, 45, 1415, 45, 45, 45, 45, 45, 45, 1419, 45, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 67, 67, 67, + /* 28318 */ 67, 67, 67, 67, 97, 97, 2019, 0, 97, 67, 67, 67, 1452, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, + /* 28343 */ 67, 67, 67, 1259, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 1460, 67, 1462, 67, 67, 67, 67, 67, 67, 1466, 67, + /* 28367 */ 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 67, 67, 0, 1300, 0, 0, 0, 1306, 0, 0, 0, 97, 97, 97, + /* 28394 */ 1506, 97, 97, 97, 97, 97, 97, 97, 97, 1512, 97, 97, 97, 0, 1728, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 28419 */ 97, 901, 97, 97, 97, 97, 1515, 97, 1517, 97, 97, 97, 97, 97, 97, 1521, 97, 97, 97, 97, 97, 97, 0, 45, + /* 28443 */ 1652, 45, 45, 45, 1655, 45, 45, 45, 45, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28467 */ 1552, 1553, 45, 45, 45, 1556, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 45, 67, 67, + /* 28492 */ 67, 67, 1572, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 67, 1605, 67, 67, 67, 0, 67, + /* 28517 */ 1582, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1580, 67, 67, 1596, 67, 67, 67, 67, 67, 67, + /* 28542 */ 67, 67, 67, 67, 67, 67, 67, 0, 542, 0, 544, 67, 67, 67, 67, 1759, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 28568 */ 67, 533, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 1777, 97, 97, 97, + /* 28593 */ 1793, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 998, 45, 45, 1001, 1002, 45, 45, 67, 67, 45, 1861, + /* 28617 */ 45, 67, 67, 67, 67, 67, 67, 67, 67, 1871, 67, 1873, 1874, 67, 0, 97, 45, 67, 0, 97, 45, 67, 16384, 97, 45, + /* 28642 */ 67, 97, 0, 0, 0, 1473, 0, 1082, 0, 0, 0, 1475, 0, 1086, 0, 0, 0, 1477, 1876, 67, 97, 97, 97, 97, 97, 1883, + /* 28668 */ 0, 1885, 97, 97, 97, 1889, 0, 0, 0, 286, 0, 0, 0, 286, 0, 2367488, 2158592, 2158592, 2158592, 2158592, + /* 28688 */ 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 126, 126, 126, 2053, 0, 2055, 45, 67, 0, 97, 45, 67, 0, 97, + /* 28711 */ 45, 67, 97, 0, 0, 97, 97, 97, 2039, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, + /* 28737 */ 67, 67, 1246, 67, 67, 1249, 1250, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, + /* 28759 */ 45, 45, 141, 45, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 1189, 45, 45, + /* 28784 */ 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 191, 45, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28810 */ 45, 1753, 45, 45, 45, 67, 67, 45, 45, 67, 208, 67, 67, 67, 222, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1764, + /* 28835 */ 67, 67, 67, 67, 67, 67, 67, 258, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, + /* 28859 */ 288, 97, 97, 97, 302, 97, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 338, 97, 97, 97, + /* 28884 */ 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, + /* 28908 */ 370, 45, 45, 45, 45, 716, 45, 45, 45, 45, 45, 722, 45, 45, 45, 45, 45, 45, 1912, 67, 67, 67, 67, 67, 67, + /* 28933 */ 67, 67, 67, 819, 67, 67, 25398, 542, 13112, 544, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28957 */ 45, 45, 1409, 45, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, + /* 28982 */ 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 1274, 67, + /* 29007 */ 67, 67, 1279, 67, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 553, 97, + /* 29028 */ 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1138, 97, 97, 97, 97, 617, 97, 97, 97, 97, + /* 29053 */ 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 0, 1834, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, + /* 29079 */ 353, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 29105 */ 45, 724, 45, 45, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 67, + /* 29131 */ 67, 747, 748, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1302, 0, 0, 0, 1308, 0, 67, 794, + /* 29157 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 97, 97, 97, 845, 846, 97, 97, 97, 97, + /* 29182 */ 853, 97, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 97, 892, 97, 97, 97, 97, 97, 97, + /* 29208 */ 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 45, 992, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, + /* 29234 */ 67, 1239, 67, 67, 67, 1063, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1301, 0, 0, 0, + /* 29259 */ 1307, 0, 0, 97, 1141, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1152, 97, 97, 0, 0, 97, 97, 2001, 0, 97, + /* 29285 */ 2003, 97, 97, 97, 45, 45, 45, 1739, 45, 45, 45, 1742, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1157, 97, 97, + /* 29309 */ 97, 97, 97, 1162, 97, 97, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 1151, 97, 97, 97, 1253, 67, 67, 67, + /* 29333 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 539, 45, 1423, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1431, + /* 29358 */ 67, 67, 67, 67, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 1700, 67, 1702, 67, 67, 1439, 67, 67, 67, 67, 67, + /* 29382 */ 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 97, 97, 1492, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29408 */ 97, 611, 97, 97, 1703, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 852, 97, 97, 97, 97, + /* 29433 */ 97, 97, 45, 1949, 45, 1951, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1961, 67, 0, 97, 45, 67, 0, 97, 2060, + /* 29458 */ 2061, 0, 2062, 45, 67, 97, 0, 0, 2036, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 223, 67, 67, + /* 29483 */ 237, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, + /* 29508 */ 1963, 67, 67, 67, 97, 97, 97, 97, 0, 1972, 0, 97, 97, 97, 1975, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, + /* 29533 */ 931, 45, 45, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 45, 1989, 67, 67, 67, 67, 67, + /* 29558 */ 67, 67, 67, 67, 67, 67, 1996, 97, 18, 131427, 0, 0, 360, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, + /* 29582 */ 29315, 0, 0, 0, 0, 45, 45, 930, 45, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, + /* 29608 */ 1998, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1985, 45, 1986, 45, 45, 45, 156, 45, + /* 29633 */ 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 679, 131427, 0, 358, 0, 0, 362, 0, + /* 29658 */ 365, 28809, 367, 139, 45, 45, 45, 45, 45, 381, 45, 45, 45, 45, 45, 45, 45, 45, 45, 400, 45, 45, 419, 45, + /* 29682 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 436, 67, 67, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, + /* 29708 */ 67, 67, 820, 67, 25398, 542, 13112, 544, 67, 67, 522, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 67, + /* 29732 */ 0, 1299, 0, 0, 0, 1305, 0, 0, 0, 97, 97, 619, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 97, 1105, + /* 29758 */ 97, 97, 97, 97, 1109, 97, 97, 97, 67, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 0, 97, + /* 29784 */ 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2041, 67, 67, 67, 67, + /* 29810 */ 67, 780, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 97, 97, 97, 878, 97, 97, 97, 97, + /* 29836 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 0, 45, 979, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, + /* 29862 */ 45, 45, 1198, 45, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 29887 */ 470, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1094, 0, 0, 0, 1092, + /* 29912 */ 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1486, 97, 1489, 97, 97, 97, 1117, 97, 97, 97, 97, + /* 29937 */ 1122, 97, 97, 97, 97, 97, 97, 97, 1146, 97, 97, 97, 97, 97, 97, 97, 97, 881, 97, 97, 97, 886, 97, 97, 97, + /* 29962 */ 1311, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1615, 97, 97, 97, 97, 97, 1619, 97, 97, 97, 97, + /* 29989 */ 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 97, 1847, 97, 45, 45, 45, 45, 1852, 45, 45, 45, 45, 45, 45, 45, + /* 30014 */ 1235, 45, 45, 45, 67, 67, 67, 67, 67, 1868, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1882, 0, + /* 30039 */ 0, 0, 97, 97, 97, 97, 0, 1891, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1929, 0, 0, 97, 97, 97, 97, 97, 97, + /* 30066 */ 45, 1900, 45, 1901, 45, 45, 45, 1905, 45, 67, 2054, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, + /* 30091 */ 97, 2037, 2038, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1774, + /* 30115 */ 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 142, 45, 45, + /* 30138 */ 45, 1412, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 157, 45, 45, 171, 45, + /* 30163 */ 45, 45, 182, 45, 45, 45, 45, 200, 45, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 45, 45, 45, + /* 30188 */ 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 1214, 45, 45, 45, 67, 209, 67, 67, 67, + /* 30213 */ 224, 67, 67, 238, 67, 67, 67, 249, 67, 0, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 97, 0, 0, 1937, + /* 30238 */ 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1741, 45, 45, 45, 45, 45, 45, 67, 67, 67, 267, 67, 67, 67, + /* 30264 */ 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 289, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 329, 97, + /* 30288 */ 97, 0, 0, 97, 1783, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2026, 45, 45, 45, 45, 67, 2030, 67, + /* 30314 */ 67, 67, 67, 67, 67, 1041, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1044, 67, 67, 67, 67, 67, 67, 97, 97, 347, + /* 30339 */ 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 30365 */ 45, 45, 45, 1420, 45, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 840, 67, 1007, + /* 30388 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 67, 67, 67, 1052, 67, 67, 67, + /* 30414 */ 67, 67, 67, 67, 67, 67, 67, 1031, 67, 67, 67, 67, 67, 97, 97, 97, 1101, 97, 97, 97, 97, 97, 97, 97, 97, + /* 30439 */ 97, 97, 97, 97, 592, 97, 97, 97, 1190, 45, 45, 45, 45, 45, 1195, 45, 1197, 45, 45, 45, 45, 1201, 45, 45, + /* 30463 */ 45, 45, 1952, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 250, 67, 67, 67, 1255, 67, 1257, 67, + /* 30488 */ 67, 67, 67, 1261, 67, 67, 67, 67, 67, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 0, 24851, 12565, 0, 0, + /* 30513 */ 0, 0, 28809, 53532, 67, 67, 1267, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1696, 67, + /* 30537 */ 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 1281, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 67, + /* 30563 */ 67, 67, 67, 67, 67, 1070, 67, 67, 67, 67, 67, 1335, 97, 1337, 97, 97, 97, 97, 1341, 97, 97, 97, 97, 97, + /* 30587 */ 97, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 1347, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, + /* 30612 */ 1361, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 544, 0, 550, 0, 2158592, 2158592, + /* 30635 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2158592, 2990080, + /* 30646 */ 2158592, 2158592, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 30657 */ 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 53530, 97, 97, 97, 1365, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 30681 */ 97, 97, 608, 97, 97, 97, 45, 45, 1424, 45, 1425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1058, 67, 67, + /* 30706 */ 67, 67, 45, 1555, 45, 45, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 45, 45, 45, 45, 67, 67, + /* 30731 */ 1570, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 1595, 67, 67, 1597, 67, 67, 67, 67, + /* 30756 */ 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, + /* 30778 */ 2412544, 97, 97, 97, 1636, 97, 97, 97, 1639, 97, 97, 1641, 97, 97, 97, 97, 97, 97, 1173, 0, 921, 0, 0, 0, + /* 30802 */ 0, 0, 0, 45, 67, 67, 67, 1693, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 67, 67, 1773, 67, 97, + /* 30828 */ 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 880, 97, + /* 30854 */ 97, 97, 97, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 1860, 45, 45, 67, 67, 1865, 67, 67, 67, 67, + /* 30879 */ 1870, 67, 67, 67, 67, 1875, 67, 67, 97, 97, 1880, 97, 97, 0, 0, 0, 97, 97, 1888, 97, 0, 0, 0, 1938, 97, + /* 30904 */ 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1854, 45, 45, 45, 45, 45, 45, 45, 1909, 45, 45, 1911, 67, 67, 67, + /* 30929 */ 67, 67, 67, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 1924, 97, 97, 97, 97, 97, 0, 0, 0, + /* 30955 */ 97, 97, 97, 97, 97, 1898, 45, 45, 45, 45, 45, 45, 1904, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, + /* 30980 */ 16384, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1724, 2008, 2009, 45, 45, 67, 67, 67, + /* 31004 */ 2014, 2015, 67, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 31030 */ 45, 45, 45, 45, 2022, 0, 2023, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1869, 67, 67, 67, + /* 31055 */ 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 147, 151, 154, 45, 162, + /* 31078 */ 45, 45, 176, 178, 181, 45, 45, 45, 192, 196, 45, 45, 45, 45, 2012, 67, 67, 67, 67, 67, 67, 2018, 97, 0, 0, + /* 31103 */ 97, 1978, 97, 97, 97, 1982, 45, 45, 45, 45, 45, 45, 45, 45, 45, 972, 973, 45, 45, 45, 45, 45, 67, 259, + /* 31127 */ 263, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 294, 298, 301, 97, 309, 97, + /* 31150 */ 97, 323, 325, 328, 97, 97, 97, 97, 97, 560, 97, 97, 97, 569, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, + /* 31175 */ 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 339, 343, 97, 97, + /* 31201 */ 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, + /* 31227 */ 67, 519, 97, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 616, 45, 649, 45, 45, 45, 45, 45, + /* 31252 */ 654, 45, 45, 45, 45, 45, 45, 45, 45, 1393, 45, 45, 45, 45, 45, 45, 45, 45, 1209, 45, 45, 45, 45, 45, 45, + /* 31277 */ 45, 67, 763, 67, 67, 67, 67, 67, 67, 67, 67, 770, 67, 67, 67, 774, 67, 0, 2045, 97, 97, 97, 97, 45, 45, + /* 31302 */ 67, 67, 0, 0, 97, 97, 45, 45, 45, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 213, 67, 219, 67, + /* 31328 */ 67, 232, 67, 242, 67, 247, 67, 67, 67, 779, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, + /* 31353 */ 67, 67, 67, 67, 811, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, + /* 31375 */ 54074, 550, 0, 97, 834, 97, 97, 97, 97, 97, 839, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, + /* 31399 */ 29315, 367, 645, 97, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 868, 97, 97, 97, 872, 97, 97, 877, 97, 97, + /* 31423 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 97, 97, 97, 97, 909, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31449 */ 97, 0, 0, 0, 18, 18, 24, 24, 27, 27, 27, 1036, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 31476 */ 1047, 67, 67, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1033, 67, 67, 67, 97, 97, 1130, + /* 31500 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 67, 67, 67, 1295, 67, 67, 67, 0, 0, 0, 0, + /* 31527 */ 0, 0, 0, 0, 0, 97, 1317, 97, 97, 97, 97, 97, 97, 1375, 97, 97, 97, 0, 0, 0, 45, 1379, 45, 45, 45, 45, 45, + /* 31554 */ 45, 422, 45, 45, 45, 429, 431, 45, 45, 45, 45, 0, 1090, 0, 0, 97, 1479, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31579 */ 97, 97, 1357, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1716, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1723, 0, 921, + /* 31604 */ 29315, 0, 0, 0, 0, 45, 929, 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45, 960, 45, + /* 31630 */ 45, 45, 45, 45, 45, 97, 97, 97, 1738, 45, 45, 45, 45, 45, 45, 45, 1743, 45, 45, 45, 45, 166, 45, 45, 45, + /* 31655 */ 45, 184, 186, 45, 45, 197, 45, 45, 97, 1779, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 18, + /* 31680 */ 131427, 0, 638, 0, 0, 0, 0, 362, 0, 640, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, + /* 31705 */ 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1803, 45, 45, 45, 45, 45, 1809, 45, 45, 45, 67, 67, 67, + /* 31729 */ 1814, 67, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, + /* 31755 */ 0, 0, 67, 67, 67, 1818, 67, 67, 67, 67, 67, 1824, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, + /* 31782 */ 1890, 0, 1829, 97, 97, 0, 0, 97, 97, 1836, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1981, 45, 45, 45, 45, 45, 45, + /* 31808 */ 45, 45, 45, 1987, 1845, 97, 97, 97, 45, 45, 45, 45, 45, 1853, 45, 45, 45, 1857, 45, 45, 45, 67, 1864, 67, + /* 31832 */ 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 1710, 1711, 67, 67, 97, 97, 97, 97, + /* 31857 */ 97, 0, 0, 0, 1886, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1838, 0, 0, 0, 97, 1843, 97, 0, 1893, 97, 97, 97, 97, + /* 31884 */ 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, + /* 31910 */ 1931, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 67, 2044, + /* 31935 */ 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1660, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 31962 */ 45, 45, 453, 45, 455, 67, 67, 67, 67, 268, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, + /* 31986 */ 348, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 359, 0, 0, 362, 0, 365, 28809, 367, + /* 32010 */ 139, 45, 45, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 695, 45, 45, 45, 45, 45, 45, 45, + /* 32035 */ 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 0, 921, 29315, 0, 925, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 32061 */ 1811, 45, 67, 67, 67, 67, 67, 67, 1037, 67, 1039, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1277, + /* 32085 */ 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1095, 0, 0, 0, 1096, 97, 97, 97, 97, + /* 32110 */ 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 97, 1131, 97, 1133, 97, 97, 97, 97, 97, 97, 97, + /* 32135 */ 97, 97, 97, 1370, 97, 97, 97, 97, 97, 1312, 0, 0, 0, 0, 1096, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1327, + /* 32161 */ 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1830, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1896, 97, + /* 32187 */ 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 45, 133, 94242, 0, 0, 0, 38, 102439, 0, + /* 32212 */ 0, 106538, 98347, 28809, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 401, 45, 45, 158, + /* 32235 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1200, 45, 45, 45, 45, 206, 67, 67, 67, 67, 67, 225, + /* 32260 */ 67, 67, 67, 67, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 832, 97, + /* 32284 */ 97, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1083, 13112, + /* 32307 */ 1087, 54074, 1091, 0, 0, 0, 0, 0, 0, 1316, 0, 831, 97, 97, 97, 97, 97, 97, 97, 1174, 921, 0, 1175, 0, 0, + /* 32332 */ 0, 0, 45, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 148, 67, 67, 264, 67, 67, + /* 32356 */ 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 295, 97, 97, 97, 97, 313, 97, 97, 97, 97, + /* 32380 */ 331, 333, 97, 18, 131427, 356, 638, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 45, 45, 1530, 45, 45, 45, 45, + /* 32405 */ 45, 45, 45, 45, 45, 45, 45, 45, 988, 45, 45, 45, 97, 344, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, + /* 32431 */ 27, 27, 402, 404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 67, 438, 45, 45, 45, 45, + /* 32456 */ 45, 45, 45, 45, 449, 450, 45, 45, 45, 67, 67, 214, 218, 221, 67, 229, 67, 67, 243, 245, 248, 67, 67, 67, + /* 32480 */ 67, 67, 488, 490, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1071, 67, 1073, 67, 67, 67, 67, 67, 524, 67, + /* 32505 */ 67, 67, 67, 67, 67, 67, 67, 535, 536, 67, 67, 67, 67, 67, 67, 1683, 1684, 67, 67, 67, 67, 1688, 1689, 67, + /* 32529 */ 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 97, 97, 97, + /* 32554 */ 585, 587, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 97, 97, 97, 97, 97, 97, 97, 621, 97, 97, 97, + /* 32579 */ 97, 97, 97, 97, 97, 632, 633, 97, 97, 0, 0, 1782, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 712, 45, 45, + /* 32605 */ 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 725, 45, 45, 45, 163, 167, 173, 177, 45, 45, 45, 45, 45, 193, 45, + /* 32630 */ 45, 45, 45, 982, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 1558, 45, 1560, 45, 45, 45, 45, 45, 45, + /* 32655 */ 45, 45, 704, 705, 45, 45, 45, 45, 45, 45, 45, 45, 731, 45, 45, 45, 67, 67, 67, 67, 67, 739, 67, 67, 67, + /* 32680 */ 67, 67, 67, 273, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 67, 67, 67, 764, 67, 67, 67, 67, 67, 67, 67, + /* 32704 */ 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 812, 67, 67, 67, 67, 818, 67, 67, 67, 25398, 542, 13112, + /* 32728 */ 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 837, 97, 97, 97, 97, 97, 602, 97, 97, 97, 97, + /* 32752 */ 97, 97, 97, 97, 97, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 97, 97, 862, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 32778 */ 97, 97, 1627, 97, 97, 97, 0, 97, 97, 97, 97, 910, 97, 97, 97, 97, 916, 97, 97, 97, 0, 0, 0, 97, 97, 1940, + /* 32804 */ 97, 97, 1942, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 395, 45, 45, 45, 45, 966, 45, 969, 45, 45, 45, + /* 32829 */ 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, + /* 32855 */ 45, 45, 67, 67, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, + /* 32880 */ 67, 67, 67, 1040, 67, 1042, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 97, 1706, 97, 97, 97, 1709, 97, 97, 97, + /* 32904 */ 67, 67, 67, 67, 1051, 67, 67, 67, 67, 67, 1057, 67, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 1446, 67, 67, + /* 32928 */ 67, 67, 67, 67, 67, 1297, 0, 0, 0, 1303, 0, 0, 0, 1309, 67, 67, 67, 67, 1079, 25398, 0, 13112, 0, 54074, + /* 32952 */ 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 32968 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 1098, 97, 97, 97, 97, 97, + /* 32983 */ 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 97, 97, + /* 33007 */ 1134, 97, 1136, 97, 1139, 97, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, + /* 33032 */ 1176, 0, 646, 45, 67, 67, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 67, 97, + /* 33057 */ 1348, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1127, 97, 67, 1569, 67, 67, 67, 67, 67, 67, + /* 33082 */ 67, 67, 67, 67, 67, 67, 67, 67, 1448, 1449, 67, 1816, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, + /* 33106 */ 1827, 97, 97, 0, 1781, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 1831, 0, 0, 97, 97, 97, 97, + /* 33132 */ 97, 0, 0, 0, 97, 97, 97, 1980, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45, 97, + /* 33158 */ 1846, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 45, 45, 2010, 45, 67, + /* 33183 */ 67, 67, 67, 67, 2016, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 2007, 0, 94242, 0, 0, + /* 33209 */ 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 143, 45, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, + /* 33232 */ 45, 45, 45, 67, 1813, 67, 67, 1815, 45, 45, 67, 210, 67, 67, 67, 67, 67, 67, 239, 67, 67, 67, 67, 67, 67, + /* 33257 */ 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1445, 67, 67, 67, 67, 67, 67, 97, 97, 290, 97, 97, 97, 97, + /* 33282 */ 97, 97, 319, 97, 97, 97, 97, 97, 97, 303, 97, 97, 317, 97, 97, 97, 97, 97, 97, 305, 97, 97, 97, 97, 97, + /* 33307 */ 97, 97, 97, 97, 899, 97, 97, 97, 97, 97, 97, 375, 45, 45, 45, 379, 45, 45, 390, 45, 45, 394, 45, 45, 45, + /* 33332 */ 45, 45, 443, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 461, 67, 67, 67, 465, 67, 67, 476, 67, + /* 33357 */ 67, 480, 67, 67, 67, 67, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, + /* 33382 */ 500, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 97, 97, 97, 558, 97, 97, 97, 562, + /* 33407 */ 97, 97, 573, 97, 97, 577, 97, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, + /* 33432 */ 1638, 97, 97, 97, 97, 97, 97, 97, 97, 1646, 597, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 33457 */ 97, 1334, 45, 681, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 1399, 45, 45, + /* 33481 */ 730, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1434, 67, 67, 67, 67, 67, 67, 750, 67, 67, + /* 33506 */ 67, 67, 67, 67, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 45, 45, 993, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 33532 */ 45, 45, 67, 67, 1238, 67, 67, 1006, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, + /* 33556 */ 1048, 1049, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, + /* 33580 */ 67, 67, 67, 1291, 67, 97, 97, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 920, 97, + /* 33605 */ 97, 1142, 1143, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 97, 97, 97, 1158, 97, 97, 97, 1161, + /* 33629 */ 97, 97, 97, 97, 1166, 97, 97, 97, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1328, 97, 97, 97, + /* 33654 */ 97, 97, 97, 97, 45, 1218, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 67, + /* 33679 */ 67, 67, 67, 67, 1269, 67, 67, 67, 67, 67, 67, 67, 67, 1278, 67, 67, 67, 67, 67, 67, 1761, 67, 67, 67, 67, + /* 33704 */ 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 97, 97, 1349, 97, 97, 97, 97, 97, 97, 97, 97, 1358, 97, + /* 33729 */ 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 926, 0, 0, 0, 45, 45, 1411, 45, + /* 33755 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1754, 45, 45, 67, 67, 1301, 0, 1307, 0, 1313, 97, 97, + /* 33780 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 21054, 97, 97, 97, 97, 67, 1757, 67, 67, 67, 1760, 67, 67, 67, 67, 67, + /* 33805 */ 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 1778, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, + /* 33832 */ 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 67, 67, 67, 67, + /* 33857 */ 67, 1820, 67, 1822, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1933, 97, 1892, 97, 97, 97, 97, + /* 33882 */ 97, 97, 1899, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, + /* 33907 */ 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 673, 45, 45, + /* 33932 */ 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1925, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 623, 97, 97, + /* 33958 */ 97, 97, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1796, 97, 45, 45, 45, 45, 45, 45, + /* 33984 */ 45, 970, 45, 45, 45, 45, 45, 45, 45, 45, 1417, 45, 45, 45, 45, 45, 45, 45, 67, 1964, 67, 67, 97, 97, 97, + /* 34009 */ 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1721, 97, 97, 0, 0, 1997, 97, 0, 0, 2000, 97, 97, + /* 34036 */ 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 733, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, + /* 34062 */ 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 144, 45, 45, 45, 1805, 45, + /* 34084 */ 1807, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 231, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, + /* 34109 */ 0, 0, 28809, 53531, 45, 45, 67, 211, 67, 67, 67, 67, 230, 234, 240, 244, 67, 67, 67, 67, 67, 67, 464, 67, + /* 34133 */ 67, 67, 67, 67, 67, 479, 67, 67, 67, 260, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, + /* 34157 */ 97, 97, 291, 97, 97, 97, 97, 310, 314, 320, 324, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, + /* 34182 */ 97, 97, 1355, 97, 97, 97, 97, 97, 97, 1362, 340, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, + /* 34207 */ 27, 131427, 0, 0, 360, 0, 362, 0, 365, 28809, 367, 139, 369, 45, 45, 45, 374, 67, 67, 460, 67, 67, 67, 67, + /* 34231 */ 466, 67, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 67, 67, 67, 67, 67, 67, 487, 67, 67, 67, 67, 67, 67, + /* 34257 */ 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 67, 1772, 67, 67, 97, 97, 97, 97, 97, 97, 97, 0, 921, 922, 1175, + /* 34282 */ 0, 0, 0, 0, 45, 67, 502, 67, 67, 67, 67, 67, 67, 67, 508, 67, 67, 67, 515, 517, 67, 67, 67, 67, 67, 97, + /* 34308 */ 97, 97, 97, 97, 0, 0, 0, 1932, 97, 97, 0, 1999, 97, 97, 97, 0, 97, 97, 2004, 2005, 97, 45, 45, 45, 45, + /* 34333 */ 1193, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 67, 24850, 24850, 12564, 12564, 0, + /* 34356 */ 57889, 0, 0, 0, 53531, 53531, 367, 286, 552, 97, 97, 97, 97, 97, 1377, 0, 0, 45, 45, 45, 45, 45, 45, 45, + /* 34380 */ 45, 655, 45, 45, 45, 45, 45, 45, 45, 97, 97, 557, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 97, 97, + /* 34405 */ 1135, 97, 97, 97, 97, 97, 97, 97, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, + /* 34430 */ 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 1319, 97, 97, 97, + /* 34457 */ 0, 97, 97, 97, 97, 97, 97, 1733, 97, 97, 97, 97, 97, 97, 1340, 97, 97, 97, 1343, 97, 97, 1345, 97, 1346, + /* 34481 */ 97, 599, 97, 97, 97, 97, 97, 97, 97, 605, 97, 97, 97, 612, 614, 97, 97, 97, 97, 97, 1794, 97, 97, 97, 45, + /* 34506 */ 45, 45, 45, 45, 45, 45, 1207, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 745, 67, 67, 67, 67, 751, 67, 67, 67, + /* 34531 */ 67, 67, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 762, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, + /* 34556 */ 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 777, 67, 67, 781, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 34581 */ 67, 1592, 1593, 67, 67, 97, 843, 97, 97, 97, 97, 849, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1510, 97, 97, + /* 34605 */ 97, 97, 97, 97, 97, 860, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1797, 45, 45, 45, 45, + /* 34630 */ 1801, 45, 97, 875, 97, 97, 879, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 991, + /* 34655 */ 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 215, 67, 67, 67, 67, 233, 67, 67, 67, 67, + /* 34680 */ 251, 253, 1022, 67, 67, 67, 1026, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 1038, 67, 67, 67, + /* 34704 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 67, 1064, 67, 67, 67, 1067, 67, 67, 67, 67, + /* 34729 */ 1072, 67, 67, 67, 67, 67, 67, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2158592, 2158592, + /* 34750 */ 2158592, 2158592, 2158592, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 1096, 0, 921, 29315, + /* 34771 */ 0, 0, 0, 0, 928, 45, 45, 45, 45, 45, 934, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 198, 45, + /* 34797 */ 45, 45, 378, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 398, 45, 97, 97, 1116, 97, 97, 97, 1120, 97, 97, 97, + /* 34822 */ 97, 97, 97, 97, 97, 97, 1147, 1148, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 97, 1132, 97, 97, 97, 97, 97, + /* 34846 */ 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 0, 45, 1178, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1185, 45, + /* 34871 */ 45, 45, 45, 441, 45, 45, 45, 45, 45, 45, 451, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, + /* 34897 */ 67, 1260, 67, 67, 67, 1263, 67, 67, 1265, 1203, 45, 45, 1205, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, + /* 34920 */ 45, 1216, 67, 1266, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 492, 67, 67, 67, 67, + /* 34945 */ 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 481, 67, 45, 1386, 45, 1389, 45, 45, 45, 45, 1394, 45, 45, 45, + /* 34969 */ 1397, 45, 45, 45, 45, 995, 45, 997, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1915, 67, 67, 67, 67, 67, + /* 34994 */ 1422, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1433, 67, 1436, 67, 67, 67, 67, 1441, 67, 67, 67, + /* 35018 */ 1444, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 97, 1494, 97, + /* 35041 */ 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, + /* 35066 */ 97, 97, 67, 67, 67, 1571, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, + /* 35090 */ 1583, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, + /* 35115 */ 67, 1056, 67, 67, 67, 67, 67, 67, 97, 1634, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1125, + /* 35140 */ 97, 97, 97, 1647, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, + /* 35166 */ 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 1658, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 35191 */ 1668, 1712, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 1835, 97, 97, 97, 97, 0, 0, 0, 97, + /* 35217 */ 97, 1844, 97, 97, 1726, 0, 97, 97, 97, 97, 97, 1732, 97, 1734, 97, 97, 97, 97, 97, 300, 97, 308, 97, 97, + /* 35241 */ 97, 97, 97, 97, 97, 97, 866, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1758, 67, 67, 67, 1762, 67, 67, 67, + /* 35266 */ 67, 67, 67, 67, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1771, 67, 67, 67, 97, 97, 97, + /* 35291 */ 97, 97, 1776, 97, 97, 97, 97, 297, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 67, + /* 35316 */ 67, 67, 1966, 97, 97, 97, 1970, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 0, 0, + /* 35342 */ 97, 97, 97, 1837, 97, 0, 1840, 1841, 97, 97, 97, 1988, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1994, 1995, + /* 35366 */ 67, 97, 97, 97, 97, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 917, 97, 97, 0, 0, 0, 67, 67, 265, + /* 35392 */ 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 345, 97, 97, 97, 97, 0, 40976, 0, 18, 18, + /* 35416 */ 24, 24, 27, 27, 27, 131427, 0, 0, 0, 361, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 671, 45, 45, + /* 35440 */ 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 414, 45, 45, 45, 45, 377, 45, 45, 45, 386, 45, 45, 45, 45, + /* 35465 */ 45, 45, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 433, 45, 45, 45, 67, 67, 67, + /* 35490 */ 67, 67, 463, 67, 67, 67, 472, 67, 67, 67, 67, 67, 67, 67, 527, 67, 67, 67, 67, 67, 67, 537, 67, 540, + /* 35514 */ 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 97, 97, 97, 1119, 97, 97, + /* 35535 */ 97, 97, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 564, 97, 97, 97, 97, 97, 97, 97, + /* 35560 */ 637, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 927, 45, 45, 45, + /* 35585 */ 45, 45, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 67, 67, 67, 67, 1240, 45, 697, 45, 45, 45, 45, 45, 45, 45, + /* 35610 */ 45, 45, 45, 708, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 45, 45, 384, 45, 45, 45, 45, + /* 35635 */ 45, 45, 45, 45, 45, 1210, 45, 45, 45, 45, 45, 45, 67, 67, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 35661 */ 67, 67, 1470, 67, 67, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, + /* 35685 */ 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1164, 97, 97, 97, 67, 67, 67, 1025, 67, 67, 67, 67, + /* 35710 */ 67, 67, 67, 67, 67, 67, 67, 67, 1687, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, + /* 35735 */ 0, 0, 0, 1097, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1450, 45, 45, 1388, 45, + /* 35760 */ 1390, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1236, 67, 67, 67, 67, 67, 1437, 67, 67, 67, 67, 67, 67, + /* 35785 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 1490, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 35810 */ 97, 1503, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1930, 0, 97, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, + /* 35836 */ 97, 97, 97, 97, 858, 67, 67, 1965, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 1719, 97, 97, + /* 35862 */ 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 1382, 45, 1383, 45, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, + /* 35888 */ 45, 45, 45, 45, 45, 1563, 45, 45, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, + /* 35913 */ 28809, 53531, 341, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 1099, 97, 97, 97, 97, + /* 35937 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1333, 97, 1230, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, + /* 35962 */ 67, 67, 67, 67, 1992, 67, 1993, 67, 67, 67, 97, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 35987 */ 45, 45, 45, 1665, 45, 45, 45, 45, 45, 131427, 357, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, + /* 36011 */ 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 416, 45, 45, 45, 440, 45, 45, 45, 45, + /* 36036 */ 45, 45, 45, 45, 45, 45, 45, 67, 67, 1990, 67, 1991, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1707, 97, 97, 97, + /* 36061 */ 97, 97, 97, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 67, 67, 67, + /* 36086 */ 526, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1030, 67, 1032, 67, 67, 67, 67, 598, 97, 97, 97, 97, 97, 97, + /* 36111 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1632, 0, 921, 29315, 923, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 36137 */ 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 425, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, + /* 36161 */ 13112, 0, 54074, 0, 0, 1093, 0, 0, 0, 0, 0, 97, 1609, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1369, 97, 97, + /* 36186 */ 97, 1372, 97, 97, 67, 67, 266, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 346, 97, 97, + /* 36210 */ 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 36236 */ 45, 45, 1677, 45, 45, 45, 45, 67, 45, 45, 954, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1545, + /* 36261 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 67, 456, 67, 67, 67, 67, 67, 1270, 67, 67, 67, + /* 36286 */ 67, 67, 67, 67, 67, 67, 67, 1069, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1350, 97, 97, 97, 97, 97, 97, 97, + /* 36311 */ 97, 97, 97, 97, 97, 1524, 97, 97, 97, 97, 97, 97, 97, 1376, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1559, + /* 36337 */ 1561, 45, 45, 45, 1564, 45, 1566, 1567, 45, 67, 67, 67, 67, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 36361 */ 67, 1247, 67, 67, 67, 67, 67, 1252, 97, 1725, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, + /* 36386 */ 97, 1630, 0, 0, 94242, 0, 0, 0, 2211840, 0, 1118208, 0, 0, 0, 0, 2158592, 2158731, 2158592, 2158592, + /* 36405 */ 2158592, 3117056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 36416 */ 2158592, 2158592, 2158592, 3018752, 2158592, 3043328, 2158592, 2158592, 2158592, 2158592, 3080192, + /* 36427 */ 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158878, 2158592, 2158592, + /* 36438 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 36449 */ 2158592, 2605056, 2158592, 2158592, 2207744, 0, 542, 0, 544, 0, 0, 2166784, 0, 0, 0, 550, 0, 0, 2158592, + /* 36468 */ 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 36479 */ 2867200, 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, + /* 36493 */ 0, 2211840, 0, 0, 1130496, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, + /* 36510 */ 139, 0, 0, 0, 139, 0, 2367488, 2207744, 0, 0, 0, 0, 176128, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, + /* 36532 */ 2158592, 3170304, 3174400, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, + /* 36545 */ 2158592, 2158592, 2158592, 1508, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, + /* 36557 */ 2158592, 2158592, 3039232, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 67, 24850, + /* 36569 */ 24850, 12564, 12564, 0, 0, 0, 0, 0, 53531, 53531, 0, 286, 97, 97, 97, 97, 97, 1144, 97, 97, 97, 97, 97, + /* 36592 */ 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 1154, 57889, 0, 0, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, + /* 36618 */ 97, 561, 97, 97, 97, 97, 97, 97, 576, 97, 97, 139264, 139264, 139264, 139264, 139264, 139264, 139264, + /* 36636 */ 139264, 139264, 139264, 139264, 139264, 0, 0, 139264, 0, 921, 29315, 0, 0, 926, 0, 45, 45, 45, 45, 45, 45, + /* 36657 */ 45, 45, 45, 719, 720, 45, 45, 45, 45, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 942, 45, + /* 36682 */ 45, 946, 45, 45, 45, 950, 45, 45, 0, 2146304, 2146304, 0, 0, 0, 0, 2224128, 2224128, 2224128, 2232320, + /* 36701 */ 2232320, 2232320, 2232320, 0, 0, 1301, 0, 0, 0, 0, 0, 1307, 0, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 97, + /* 36727 */ 97, 1318, 97, 97, 97, 97, 97, 97, 1795, 97, 97, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, + /* 36752 */ 67, 67, 2158592, 2146304, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 924, 0, 0, + /* 36776 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 67, 67 +]; + +XQueryTokenizer.EXPECTED = +[ + /* 0 */ 290, 300, 304, 353, 296, 309, 305, 319, 315, 324, 328, 352, 354, 334, 338, 330, 320, 345, 349, 293, 358, + /* 21 */ 362, 341, 366, 312, 370, 374, 378, 382, 386, 390, 394, 398, 737, 402, 634, 439, 604, 634, 634, 634, 634, + /* 42 */ 408, 634, 634, 634, 404, 634, 634, 634, 457, 634, 634, 963, 634, 634, 413, 634, 634, 634, 634, 634, 634, + /* 63 */ 634, 663, 418, 422, 903, 902, 426, 431, 548, 634, 437, 521, 919, 443, 615, 409, 449, 455, 624, 731, 751, + /* 84 */ 634, 461, 465, 672, 470, 469, 474, 481, 485, 477, 489, 493, 629, 542, 497, 505, 603, 602, 991, 648, 510, + /* 105 */ 804, 634, 515, 958, 526, 525, 530, 768, 634, 546, 552, 711, 710, 593, 558, 562, 618, 566, 570, 574, 578, + /* 126 */ 582, 586, 590, 608, 612, 660, 822, 821, 634, 622, 596, 444, 628, 533, 724, 633, 640, 653, 647, 652, 536, + /* 147 */ 1008, 451, 450, 445, 657, 670, 676, 685, 689, 693, 697, 701, 704, 707, 715, 719, 798, 815, 634, 723, 762, + /* 168 */ 996, 634, 728, 969, 730, 735, 908, 634, 741, 679, 889, 511, 747, 634, 750, 755, 499, 666, 499, 501, 759, + /* 189 */ 772, 776, 780, 634, 787, 784, 797, 802, 809, 808, 427, 814, 1006, 517, 634, 519, 853, 634, 813, 850, 793, + /* 210 */ 634, 819, 826, 833, 832, 837, 843, 847, 857, 861, 863, 867, 871, 875, 879, 883, 643, 887, 539, 980, 979, + /* 231 */ 634, 893, 944, 634, 900, 896, 634, 907, 933, 506, 912, 917, 828, 433, 636, 635, 554, 961, 923, 930, 927, + /* 252 */ 937, 941, 634, 634, 634, 974, 948, 952, 985, 913, 968, 967, 743, 634, 973, 839, 634, 978, 599, 634, 984, + /* 273 */ 989, 765, 444, 995, 1000, 634, 1003, 790, 955, 1012, 681, 634, 634, 634, 634, 634, 414, 1016, 1020, 1024, + /* 293 */ 1085, 1027, 1090, 1090, 1046, 1080, 1137, 1108, 1215, 1049, 1032, 1039, 1085, 1085, 1085, 1085, 1058, 1062, + /* 311 */ 1068, 1085, 1086, 1090, 1090, 1091, 1072, 1064, 1107, 1090, 1090, 1090, 1118, 1123, 1138, 1078, 1074, 1084, + /* 329 */ 1085, 1085, 1085, 1087, 1090, 1062, 1052, 1060, 1114, 1062, 1104, 1085, 1085, 1090, 1090, 1028, 1122, 1063, + /* 347 */ 1128, 1139, 1127, 1158, 1085, 1085, 1151, 1090, 1090, 1090, 1095, 1090, 1132, 1073, 1136, 1143, 1061, 1150, + /* 365 */ 1085, 1155, 1098, 1101, 1146, 1162, 1169, 1101, 1185, 1151, 1090, 1110, 1173, 1054, 1087, 1109, 1177, 1165, + /* 383 */ 1089, 1204, 1184, 1107, 1189, 1193, 1088, 1197, 1180, 1201, 1208, 1042, 1212, 1219, 1223, 1227, 1231, 1235, + /* 401 */ 1245, 1777, 1527, 1686, 1686, 1238, 1686, 1254, 1686, 1686, 1686, 1294, 1669, 1686, 1686, 1686, 1322, 1625, + /* 419 */ 1534, 1268, 1624, 1275, 1281, 1443, 1292, 1300, 1686, 1686, 1686, 1350, 1826, 1306, 1686, 1686, 1240, 2032, + /* 437 */ 1317, 1321, 1686, 1686, 1253, 1686, 1326, 1686, 1686, 1686, 1418, 1709, 1446, 1686, 1686, 1686, 1492, 1686, + /* 455 */ 1295, 1447, 1686, 1686, 1258, 1686, 1736, 1686, 1686, 1520, 1355, 1686, 1288, 1348, 1361, 1686, 1359, 1686, + /* 473 */ 1364, 1498, 1368, 1302, 1362, 1381, 1389, 1395, 1486, 1686, 1371, 1377, 1370, 1686, 1375, 1382, 1384, 1402, + /* 491 */ 1408, 1385, 1383, 1619, 1413, 1423, 1428, 1433, 1686, 1686, 1270, 1686, 1338, 1686, 1440, 1686, 1686, 1686, + /* 509 */ 1499, 1465, 1686, 1686, 1686, 1639, 1473, 1884, 1686, 1686, 1293, 1864, 1686, 1686, 1296, 1321, 1483, 1686, + /* 527 */ 1686, 1686, 1646, 1686, 1748, 1496, 1686, 1418, 1675, 1686, 1418, 1702, 1686, 1418, 1981, 1686, 1429, 1409, + /* 545 */ 1427, 1504, 1692, 1686, 1686, 1313, 1448, 1651, 1508, 1686, 1686, 1340, 1686, 1903, 1686, 1686, 1435, 1513, + /* 563 */ 1686, 1283, 1287, 1519, 1686, 1524, 1363, 1568, 1938, 1539, 1566, 1579, 1479, 1533, 1538, 1553, 1544, 1552, + /* 581 */ 1557, 1563, 1574, 1557, 1583, 1589, 1590, 1759, 1594, 1603, 1607, 1611, 1686, 1436, 1514, 1686, 1434, 1656, + /* 599 */ 1686, 1434, 1680, 1686, 1453, 1686, 1686, 1686, 1559, 1617, 1686, 1770, 1418, 1623, 1769, 1629, 1686, 1515, + /* 617 */ 1335, 1686, 1285, 1686, 1671, 1921, 1650, 1686, 1686, 1344, 1308, 1666, 1686, 1686, 1686, 1659, 1685, 1686, + /* 635 */ 1686, 1686, 1686, 1241, 1686, 1686, 1844, 1691, 1686, 1630, 1977, 1970, 1362, 1686, 1686, 1686, 1693, 1698, + /* 653 */ 1686, 1686, 1686, 1697, 1686, 1764, 1715, 1686, 1634, 1638, 1686, 1599, 1585, 1686, 1271, 1686, 1269, 1686, + /* 671 */ 1721, 1686, 1686, 1354, 1686, 1801, 1686, 1799, 1686, 1640, 1686, 1686, 1461, 1686, 1686, 1732, 1686, 1944, + /* 689 */ 1686, 1740, 1686, 1746, 1415, 1396, 1686, 1598, 1547, 1417, 1597, 1416, 1577, 1546, 1397, 1577, 1547, 1548, + /* 707 */ 1570, 1398, 1753, 1686, 1652, 1509, 1686, 1686, 1686, 1757, 1686, 1419, 1686, 1763, 1418, 1768, 1781, 1686, + /* 725 */ 1686, 1686, 1705, 1686, 2048, 1792, 1686, 1686, 1686, 1735, 1686, 1797, 1686, 1686, 1404, 1686, 1639, 1815, + /* 743 */ 1686, 1686, 1418, 2017, 1820, 1686, 1686, 1803, 1686, 1686, 1686, 1736, 1489, 1686, 1686, 1825, 1338, 1260, + /* 761 */ 1263, 1686, 1686, 1785, 1686, 1686, 1728, 1686, 1686, 1749, 1497, 1830, 1830, 1262, 1248, 1261, 1329, 1260, + /* 779 */ 1264, 1329, 1248, 1249, 1259, 1540, 1849, 1842, 1686, 1686, 1835, 1686, 1686, 1816, 1686, 1686, 1831, 1882, + /* 797 */ 1848, 1686, 1686, 1686, 1774, 2071, 1854, 1686, 1686, 1469, 1884, 1686, 1821, 1859, 1686, 1686, 1350, 1883, + /* 815 */ 1686, 1686, 1686, 1781, 1391, 1875, 1686, 1686, 1613, 1644, 1686, 1686, 1889, 1686, 1686, 1662, 1884, 1686, + /* 833 */ 1885, 1890, 1686, 1686, 1686, 1894, 1686, 1686, 1678, 1686, 1907, 1686, 1686, 1529, 1914, 1686, 1838, 1686, + /* 851 */ 1686, 1881, 1686, 1686, 1872, 1876, 1836, 1919, 1686, 1837, 1692, 1910, 1686, 1925, 1928, 1742, 1686, 1811, + /* 869 */ 1811, 1930, 1810, 1929, 1935, 1928, 1900, 1942, 1867, 1868, 1931, 1035, 1788, 1948, 1952, 1956, 1960, 1964, + /* 887 */ 1686, 1976, 1686, 1686, 1686, 2065, 1686, 1992, 2037, 1686, 1686, 1998, 2009, 1972, 2002, 1686, 1686, 1686, + /* 905 */ 2077, 1300, 2023, 1686, 1686, 1686, 1807, 2031, 1686, 1686, 1686, 1860, 1500, 2032, 1686, 1686, 1686, 2083, + /* 923 */ 1686, 2036, 1686, 1277, 1276, 2042, 1877, 1686, 1686, 2041, 1686, 1686, 2027, 2037, 2012, 1686, 2012, 1855, + /* 941 */ 1850, 1686, 2046, 1686, 1686, 2054, 1996, 1686, 1897, 1309, 2059, 2052, 1686, 2058, 1686, 1686, 2081, 1686, + /* 959 */ 1717, 1477, 1686, 1331, 1686, 1686, 1687, 1686, 1860, 1681, 1686, 1686, 1686, 1966, 1724, 1686, 1686, 1686, + /* 977 */ 1984, 2015, 1686, 1686, 1686, 1988, 1686, 2063, 1686, 1686, 1686, 2005, 1686, 1727, 1686, 1686, 1711, 1457, + /* 995 */ 2069, 1686, 1686, 1686, 2019, 2075, 1686, 1686, 1915, 1686, 1686, 1793, 1874, 1686, 1686, 1491, 1362, 1449, + /* 1013 */ 1686, 1686, 1460, 2098, 2087, 2091, 2095, 2184, 2102, 2113, 2780, 2117, 2134, 2142, 2281, 2146, 2146, 2146, + /* 1031 */ 2304, 2296, 2181, 2639, 2591, 2872, 2592, 2873, 2313, 2195, 2200, 2281, 2146, 2273, 2226, 2204, 2152, 2219, + /* 1049 */ 2276, 2167, 2177, 2276, 2235, 2276, 2276, 2230, 2281, 2276, 2296, 2276, 2293, 2276, 2276, 2276, 2276, 2234, + /* 1067 */ 2276, 2311, 2314, 2210, 2199, 2217, 2222, 2276, 2276, 2276, 2240, 2276, 2294, 2276, 2276, 2173, 2276, 2198, + /* 1085 */ 2281, 2281, 2281, 2281, 2282, 2146, 2146, 2146, 2146, 2205, 2146, 2204, 2248, 2276, 2235, 2276, 2297, 2276, + /* 1103 */ 2276, 2276, 2277, 2256, 2281, 2283, 2146, 2146, 2146, 2275, 2276, 2295, 2276, 2276, 2293, 2146, 2304, 2264, + /* 1121 */ 2269, 2221, 2276, 2276, 2276, 2293, 2295, 2276, 2276, 2276, 2295, 2263, 2205, 2268, 2220, 2172, 2276, 2276, + /* 1139 */ 2276, 2296, 2276, 2276, 2296, 2294, 2276, 2276, 2278, 2281, 2281, 2280, 2281, 2281, 2281, 2283, 2206, 2223, + /* 1157 */ 2276, 2276, 2279, 2281, 2281, 2146, 2273, 2276, 2276, 2281, 2281, 2281, 2276, 2292, 2276, 2298, 2225, 2276, + /* 1175 */ 2298, 2169, 2224, 2292, 2298, 2171, 2229, 2281, 2281, 2171, 2236, 2281, 2281, 2281, 2146, 2275, 2225, 2292, + /* 1193 */ 2299, 2276, 2229, 2281, 2146, 2276, 2290, 2297, 2283, 2146, 2146, 2274, 2224, 2227, 2298, 2225, 2297, 2276, + /* 1211 */ 2230, 2170, 2230, 2282, 2146, 2147, 2151, 2156, 2288, 2276, 2230, 2303, 2308, 2236, 2284, 2228, 2318, 2318, + /* 1229 */ 2318, 2326, 2335, 2339, 2343, 2349, 2416, 2693, 2357, 2592, 2109, 2592, 2592, 2162, 2943, 2823, 2646, 2592, + /* 1247 */ 2361, 2592, 2122, 2592, 2592, 2122, 2470, 2592, 2592, 2592, 2109, 2107, 2592, 2592, 2592, 2123, 2592, 2592, + /* 1265 */ 2592, 2125, 2592, 2413, 2592, 2592, 2592, 2127, 2592, 2592, 2414, 2592, 2592, 2592, 2130, 2952, 2592, 2594, + /* 1283 */ 2592, 2592, 2212, 2609, 2252, 2592, 2592, 2592, 2446, 2434, 2592, 2592, 2592, 2212, 2446, 2450, 2456, 2431, + /* 1301 */ 2435, 2592, 2592, 2243, 2478, 2448, 2439, 2946, 2592, 2592, 2592, 2368, 2809, 2813, 2450, 2441, 2212, 2812, + /* 1319 */ 2449, 2440, 2947, 2592, 2592, 2592, 2345, 2451, 2457, 2948, 2592, 2124, 2592, 2592, 2650, 2823, 2449, 2455, + /* 1337 */ 2946, 2592, 2128, 2592, 2592, 2649, 2952, 2592, 2810, 2448, 2461, 2991, 2467, 2592, 2592, 2329, 2817, 2474, + /* 1355 */ 2990, 2466, 2592, 2592, 2373, 2447, 2992, 2469, 2592, 2592, 2592, 2373, 2447, 2477, 2468, 2592, 2592, 2353, + /* 1373 */ 2469, 2592, 2495, 2592, 2592, 2415, 2483, 2592, 2415, 2496, 2592, 2592, 2352, 2592, 2592, 2352, 2352, 2469, + /* 1391 */ 2592, 2592, 2363, 2331, 2494, 2592, 2592, 2592, 2375, 2592, 2375, 2415, 2504, 2592, 2592, 2367, 2372, 2503, + /* 1409 */ 2592, 2592, 2592, 2389, 2418, 2415, 2592, 2592, 2373, 2592, 2592, 2592, 2593, 2732, 2417, 2415, 2592, 2417, + /* 1427 */ 2520, 2592, 2592, 2592, 2390, 2521, 2521, 2592, 2592, 2592, 2401, 2599, 2585, 2526, 2531, 2120, 2592, 2212, + /* 1445 */ 2426, 2450, 2463, 2948, 2592, 2592, 2592, 2213, 2389, 2527, 2532, 2121, 2542, 2551, 2105, 2592, 2213, 2592, + /* 1463 */ 2592, 2592, 2558, 2538, 2544, 2553, 2557, 2537, 2543, 2552, 2421, 2572, 2576, 2546, 2543, 2547, 2592, 2592, + /* 1481 */ 2373, 2615, 2575, 2545, 2105, 2592, 2244, 2479, 2592, 2129, 2592, 2592, 2628, 2690, 2469, 2562, 2566, 2592, + /* 1499 */ 2592, 2592, 2415, 2928, 2934, 2401, 2570, 2574, 2564, 2572, 2585, 2590, 2592, 2592, 2585, 2965, 2592, 2592, + /* 1517 */ 2592, 2445, 2251, 2592, 2592, 2592, 2474, 2592, 2609, 2892, 2592, 2362, 2592, 2592, 2138, 2851, 2159, 2592, + /* 1535 */ 2592, 2592, 2509, 2888, 2892, 2592, 2592, 2592, 2490, 2418, 2891, 2592, 2592, 2376, 2592, 2592, 2374, 2592, + /* 1553 */ 2889, 2388, 2592, 2373, 2373, 2890, 2592, 2592, 2387, 2592, 2887, 2505, 2892, 2592, 2373, 2610, 2388, 2592, + /* 1571 */ 2592, 2376, 2373, 2592, 2887, 2891, 2592, 2374, 2592, 2592, 2608, 2159, 2614, 2620, 2592, 2592, 2394, 2594, + /* 1589 */ 2887, 2399, 2592, 2887, 2397, 2508, 2374, 2507, 2592, 2375, 2592, 2592, 2592, 2595, 2508, 2506, 2592, 2506, + /* 1607 */ 2505, 2505, 2592, 2507, 2637, 2505, 2592, 2592, 2401, 2661, 2592, 2643, 2592, 2592, 2417, 2592, 2655, 2592, + /* 1625 */ 2592, 2592, 2510, 2414, 2656, 2592, 2592, 2592, 2516, 2592, 2593, 2660, 2665, 2880, 2592, 2592, 2592, 2522, + /* 1643 */ 2767, 2666, 2881, 2592, 2592, 2420, 2571, 2696, 2592, 2592, 2592, 2580, 2572, 2686, 2632, 2698, 2592, 2383, + /* 1661 */ 2514, 2592, 2163, 2932, 2465, 2685, 2631, 2697, 2592, 2388, 2592, 2592, 2212, 2604, 2671, 2632, 2678, 2592, + /* 1679 */ 2401, 2405, 2409, 2592, 2592, 2592, 2679, 2592, 2592, 2592, 2592, 2108, 2677, 2591, 2592, 2592, 2592, 2419, + /* 1697 */ 2592, 2683, 2187, 2191, 2469, 2671, 2189, 2467, 2592, 2401, 2629, 2633, 2702, 2468, 2592, 2592, 2421, 2536, + /* 1715 */ 2703, 2469, 2592, 2592, 2422, 2573, 2593, 2672, 2467, 2592, 2402, 2406, 2592, 2402, 2979, 2592, 2592, 2626, + /* 1733 */ 2673, 2467, 2592, 2446, 2259, 2947, 2592, 2377, 2709, 2592, 2592, 2522, 2862, 2713, 2468, 2592, 2592, 2581, + /* 1751 */ 2572, 2562, 2374, 2374, 2592, 2376, 2721, 2724, 2592, 2592, 2624, 2373, 2731, 2592, 2592, 2592, 2626, 2732, + /* 1769 */ 2592, 2592, 2592, 2755, 2656, 2726, 2736, 2741, 2592, 2486, 2593, 2381, 2592, 2727, 2737, 2742, 2715, 2747, + /* 1787 */ 2753, 2592, 2498, 2469, 2873, 2743, 2592, 2592, 2592, 2791, 2759, 2763, 2592, 2592, 2627, 2704, 2592, 2592, + /* 1805 */ 2522, 2789, 2593, 2761, 2753, 2592, 2498, 2863, 2592, 2592, 2767, 2592, 2592, 2592, 2792, 2789, 2592, 2592, + /* 1823 */ 2592, 2803, 2126, 2592, 2592, 2592, 2811, 2122, 2592, 2592, 2592, 2834, 2777, 2592, 2592, 2592, 2848, 2936, + /* 1841 */ 2591, 2489, 2797, 2592, 2592, 2670, 2631, 2490, 2798, 2592, 2592, 2592, 2963, 2807, 2592, 2592, 2592, 2965, + /* 1859 */ 2838, 2592, 2592, 2592, 2975, 2330, 2818, 2829, 2592, 2498, 2939, 2592, 2498, 2592, 2791, 2331, 2819, 2830, + /* 1877 */ 2592, 2592, 2592, 2982, 2834, 2817, 2828, 2106, 2592, 2592, 2592, 2405, 2405, 2817, 2828, 2592, 2592, 2415, + /* 1895 */ 2849, 2842, 2592, 2522, 2773, 2592, 2522, 2868, 2592, 2580, 2600, 2586, 2137, 2850, 2843, 2592, 2592, 2855, + /* 1913 */ 2937, 2844, 2592, 2592, 2592, 2987, 2936, 2591, 2592, 2592, 2684, 2630, 2592, 2856, 2938, 2592, 2592, 2860, + /* 1931 */ 2939, 2592, 2592, 2872, 2592, 2861, 2591, 2592, 2592, 2887, 2616, 2592, 2867, 2592, 2592, 2708, 2592, 2498, + /* 1949 */ 2469, 2498, 2497, 2785, 2773, 2499, 2783, 2770, 2877, 2877, 2877, 2772, 2592, 2592, 2345, 2885, 2592, 2592, + /* 1967 */ 2592, 2715, 2762, 2515, 2896, 2592, 2592, 2715, 2917, 2516, 2897, 2592, 2592, 2592, 2901, 2906, 2911, 2592, + /* 1985 */ 2592, 2956, 2960, 2715, 2902, 2907, 2912, 2593, 2916, 2920, 2820, 2922, 2822, 2592, 2592, 2715, 2927, 2921, + /* 2003 */ 2821, 2106, 2592, 2592, 2974, 2408, 2321, 2821, 2106, 2592, 2592, 2983, 2592, 2593, 2404, 2408, 2592, 2592, + /* 2021 */ 2717, 2749, 2716, 2928, 2322, 2822, 2593, 2926, 2919, 2820, 2934, 2823, 2592, 2592, 2592, 2651, 2824, 2592, + /* 2039 */ 2592, 2592, 2130, 2952, 2592, 2592, 2592, 2592, 2964, 2592, 2592, 2716, 2748, 2592, 2969, 2592, 2592, 2716, + /* 2057 */ 2918, 2368, 2970, 2592, 2592, 2592, 2403, 2407, 2592, 2592, 2787, 2211, 2404, 2409, 2592, 2592, 2802, 2837, + /* 2075 */ 2987, 2592, 2592, 2592, 2809, 2427, 2592, 2793, 2592, 2592, 2809, 2447, 1073741824, 0x80000000, 539754496, + /* 2090 */ 542375936, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 512, 2048, 256, + /* 2101 */ 1024, 0, 1024, 0, 1073741824, 0x80000000, 0, 0, 0, 8388608, 0, 0, 1073741824, 1073741824, 0, 0x80000000, + /* 2117 */ 537133056, 4194304, 1048576, 268435456, -1073741824, 0, 0, 0, 1048576, 0, 0, 0, 1572864, 0, 0, 0, 4194304, + /* 2134 */ 0, 134217728, 16777216, 0, 0, 32, 64, 98304, 0, 33554432, 8388608, 192, 67108864, 67108864, 67108864, + /* 2149 */ 67108864, 16, 32, 4, 0, 8192, 196608, 196608, 229376, 80, 4096, 524288, 8388608, 0, 0, 32, 128, 256, 24576, + /* 2168 */ 24600, 24576, 24576, 2, 24576, 24576, 24576, 24584, 24592, 24576, 24578, 24576, 24578, 24576, 24576, 16, + /* 2184 */ 512, 2048, 2048, 256, 4096, 32768, 1048576, 4194304, 67108864, 134217728, 268435456, 262144, 134217728, 0, + /* 2198 */ 128, 128, 64, 16384, 16384, 16384, 67108864, 32, 32, 4, 4, 4096, 262144, 134217728, 0, 0, 0, 2, 0, 8192, + /* 2218 */ 131072, 131072, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, + /* 2234 */ 24576, 24584, 24576, 24576, 24576, 16384, 24576, 536870912, 262144, 0, 0, 32, 2048, 8192, 4, 4096, 4096, + /* 2251 */ 4096, 786432, 8388608, 16777216, 0, 128, 16384, 16384, 16384, 32768, 65536, 2097152, 32, 32, 32, 32, 4, 4, + /* 2269 */ 4, 4, 4, 4096, 67108864, 67108864, 67108864, 24576, 24576, 24576, 24576, 0, 16384, 16384, 16384, 16384, + /* 2285 */ 67108864, 67108864, 8, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 24578, 24576, 24576, 24576, 2, 2, 2, + /* 2303 */ 16384, 67108864, 67108864, 67108864, 32, 67108864, 8, 8, 24576, 2048, 0x80000000, 536870912, 262144, + /* 2316 */ 262144, 262144, 67108864, 8, 24576, 16384, 32768, 1048576, 4194304, 25165824, 67108864, 24576, 32770, 2, 4, + /* 2331 */ 112, 512, 98304, 524288, 50, 402653186, 1049090, 1049091, 10, 66, 100925514, 10, 66, 12582914, 0, 0, + /* 2347 */ -1678194207, -1678194207, -1041543218, 0, 32768, 0, 0, 32, 65536, 268435456, 1, 1, 513, 1048577, 0, + /* 2362 */ 12582912, 0, 0, 0, 4, 1792, 0, 0, 0, 7, 29360128, 0, 0, 0, 8, 0, 0, 0, 12, 1, 1, 0, 0, -604102721, + /* 2386 */ -604102721, 4194304, 8388608, 0, 0, 0, 31, 925600, 997981306, 997981306, 997981306, 0, 0, 2048, 8388608, 0, + /* 2402 */ 0, 1, 2, 4, 32, 64, 512, 8192, 0, 0, 0, 245760, 997720064, 0, 0, 0, 32, 0, 0, 0, 3, 12, 16, 32, 8, 112, + /* 2428 */ 3072, 12288, 16384, 32768, 65536, 131072, 7864320, 16777216, 973078528, 0, 0, 65536, 131072, 3670016, + /* 2442 */ 4194304, 16777216, 33554432, 2, 8, 48, 2048, 8192, 16384, 32768, 65536, 131072, 524288, 131072, 524288, + /* 2457 */ 3145728, 4194304, 16777216, 33554432, 65536, 131072, 2097152, 4194304, 16777216, 33554432, 134217728, + /* 2468 */ 268435456, 536870912, 0, 0, 0, 1024, 0, 8, 48, 2048, 8192, 65536, 33554432, 268435456, 536870912, 65536, + /* 2484 */ 268435456, 536870912, 0, 0, 32768, 0, 0, 126, 623104, 65011712, 0, 32, 65536, 536870912, 0, 0, 65536, + /* 2501 */ 524288, 0, 32, 65536, 0, 0, 0, 2048, 0, 0, 0, 15482, 245760, -604102721, 0, 0, 0, 18913, 33062912, 925600, + /* 2521 */ -605028352, 0, 0, 0, 65536, 31, 8096, 131072, 786432, 3145728, 3145728, 12582912, 50331648, 134217728, + /* 2535 */ 268435456, 160, 256, 512, 7168, 131072, 786432, 131072, 786432, 1048576, 2097152, 12582912, 16777216, + /* 2548 */ 268435456, 1073741824, 0x80000000, 12582912, 16777216, 33554432, 268435456, 1073741824, 0x80000000, 3, 12, + /* 2559 */ 16, 160, 256, 7168, 786432, 1048576, 12582912, 16777216, 268435456, 1073741824, 0, 8, 16, 32, 128, 256, + /* 2575 */ 512, 7168, 786432, 1048576, 2097152, 0, 1, 2, 8, 16, 7168, 786432, 1048576, 8388608, 16777216, 16777216, + /* 2591 */ 1073741824, 0, 0, 0, 0, 1, 0, 0, 8, 32, 128, 256, 7168, 8, 32, 0, 3072, 0, 8, 32, 3072, 4096, 524288, 8, + /* 2615 */ 32, 0, 0, 3072, 4096, 0, 2048, 524288, 8388608, 8, 2048, 0, 0, 1, 12, 256, 4096, 32768, 262144, 1048576, + /* 2635 */ 4194304, 67108864, 0, 2048, 0, 2048, 2048, 1073741824, -58805985, -58805985, -58805985, 0, 0, 262144, 0, 0, + /* 2651 */ 32, 4194304, 16777216, 134217728, 4382, 172032, -58982400, 0, 0, 2, 28, 256, 4096, 8192, 8192, 32768, + /* 2667 */ 131072, 262144, 524288, 1, 2, 12, 256, 4096, 0, 0, 4194304, 67108864, 134217728, 805306368, 1073741824, 0, + /* 2683 */ 0, 1, 2, 12, 16, 256, 4096, 1048576, 67108864, 134217728, 268435456, 0, 512, 1048576, 4194304, 201326592, + /* 2699 */ 1879048192, 0, 0, 12, 256, 4096, 134217728, 268435456, 536870912, 12, 256, 268435456, 536870912, 0, 12, + /* 2714 */ 256, 0, 0, 1, 32, 64, 512, 0, 0, 205236961, 205236961, 0, 0, 0, 1, 96, 640, 1, 10976, 229376, 204996608, 0, + /* 2736 */ 640, 2048, 8192, 229376, 1572864, 1572864, 2097152, 201326592, 0, 0, 0, 64, 512, 2048, 229376, 1572864, + /* 2752 */ 201326592, 1572864, 201326592, 0, 0, 1, 4382, 0, 1, 32, 2048, 65536, 131072, 1572864, 201326592, 131072, + /* 2768 */ 1572864, 134217728, 0, 0, 524288, 524288, 0, 0, 0, -68582786, -68582786, -68582786, 0, 0, 2097152, 524288, + /* 2784 */ 0, 524288, 0, 0, 65536, 131072, 1572864, 0, 0, 2, 4, 0, 0, 65011712, -134217728, 0, 0, 0, 0, 2, 4, 120, + /* 2806 */ 512, -268435456, 0, 0, 0, 2, 8, 48, 64, 2048, 8192, 98304, 524288, 2097152, 4194304, 25165824, 33554432, + /* 2823 */ 134217728, 268435456, 0x80000000, 0, 0, 25165824, 33554432, 134217728, 1879048192, 0x80000000, 0, 0, 4, + /* 2836 */ 112, 512, 622592, 65011712, 134217728, -268435456, 16777216, 33554432, 134217728, 1610612736, 0, 0, 0, 64, + /* 2850 */ 98304, 524288, 4194304, 16777216, 33554432, 0, 98304, 524288, 16777216, 33554432, 0, 65536, 524288, + /* 2863 */ 33554432, 536870912, 1073741824, 0, 65536, 524288, 536870912, 1073741824, 0, 0, 65536, 524288, 536870912, + /* 2876 */ 0, 524288, 0, 524288, 524288, 1048576, 2086666240, 0x80000000, 0, -1678194207, 0, 0, 0, 8, 32, 2048, + /* 2892 */ 524288, 8388608, 0, 0, 33062912, 436207616, 0x80000000, 0, 0, 32, 64, 2432, 16384, 32768, 32768, 524288, + /* 2908 */ 3145728, 4194304, 25165824, 25165824, 167772160, 268435456, 0x80000000, 0, 32, 64, 384, 2048, 16384, 32768, + /* 2922 */ 1048576, 2097152, 4194304, 25165824, 32, 64, 128, 256, 2048, 16384, 2048, 16384, 1048576, 4194304, + /* 2936 */ 16777216, 33554432, 134217728, 536870912, 1073741824, 0, 0, 2048, 16384, 4194304, 16777216, 33554432, + /* 2948 */ 134217728, 805306368, 0, 0, 16777216, 134217728, 268435456, 0x80000000, 0, 622592, 622592, 622592, 8807, + /* 2961 */ 8807, 434791, 0, 0, 16777216, 0, 0, 0, 7, 608, 8192, 0, 0, 0, 3, 4, 96, 512, 32, 64, 8192, 0, 0, 16777216, + /* 2985 */ 134217728, 0, 0, 2, 4, 8192, 16384, 65536, 2097152, 33554432, 268435456 +]; + +XQueryTokenizer.TOKEN = +[ + "(0)", + "ModuleDecl", + "Annotation", + "OptionDecl", + "Operator", + "Variable", + "Tag", + "EndTag", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSectionContents", + "AttrTest", + "Wildcard", + "EQName", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "QuotChar", + "AposChar", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "NCName", + "QName", + "S", + "CharRef", + "CommentContents", + "DocTag", + "DocCommentContents", + "EOF", + "'!'", + "'\"'", + "'#'", + "'#)'", + "''''", + "'('", + "'(#'", + "'(:'", + "'(:~'", + "')'", + "'*'", + "'*'", + "','", + "'-->'", + "'.'", + "'/'", + "'/>'", + "':'", + "':)'", + "';'", + "'<!--'", + "'<![CDATA['", + "'<?'", + "'='", + "'>'", + "'?'", + "'?>'", + "'NaN'", + "'['", + "']'", + "']]>'", + "'after'", + "'all'", + "'allowing'", + "'ancestor'", + "'ancestor-or-self'", + "'and'", + "'any'", + "'append'", + "'array'", + "'as'", + "'ascending'", + "'at'", + "'attribute'", + "'base-uri'", + "'before'", + "'boundary-space'", + "'break'", + "'by'", + "'case'", + "'cast'", + "'castable'", + "'catch'", + "'check'", + "'child'", + "'collation'", + "'collection'", + "'comment'", + "'constraint'", + "'construction'", + "'contains'", + "'content'", + "'context'", + "'continue'", + "'copy'", + "'copy-namespaces'", + "'count'", + "'decimal-format'", + "'decimal-separator'", + "'declare'", + "'default'", + "'delete'", + "'descendant'", + "'descendant-or-self'", + "'descending'", + "'diacritics'", + "'different'", + "'digit'", + "'distance'", + "'div'", + "'document'", + "'document-node'", + "'element'", + "'else'", + "'empty'", + "'empty-sequence'", + "'encoding'", + "'end'", + "'entire'", + "'eq'", + "'every'", + "'exactly'", + "'except'", + "'exit'", + "'external'", + "'first'", + "'following'", + "'following-sibling'", + "'for'", + "'foreach'", + "'foreign'", + "'from'", + "'ft-option'", + "'ftand'", + "'ftnot'", + "'ftor'", + "'function'", + "'ge'", + "'greatest'", + "'group'", + "'grouping-separator'", + "'gt'", + "'idiv'", + "'if'", + "'import'", + "'in'", + "'index'", + "'infinity'", + "'inherit'", + "'insensitive'", + "'insert'", + "'instance'", + "'integrity'", + "'intersect'", + "'into'", + "'is'", + "'item'", + "'json'", + "'json-item'", + "'key'", + "'language'", + "'last'", + "'lax'", + "'le'", + "'least'", + "'let'", + "'levels'", + "'loop'", + "'lowercase'", + "'lt'", + "'minus-sign'", + "'mod'", + "'modify'", + "'module'", + "'most'", + "'namespace'", + "'namespace-node'", + "'ne'", + "'next'", + "'no'", + "'no-inherit'", + "'no-preserve'", + "'node'", + "'nodes'", + "'not'", + "'object'", + "'occurs'", + "'of'", + "'on'", + "'only'", + "'option'", + "'or'", + "'order'", + "'ordered'", + "'ordering'", + "'paragraph'", + "'paragraphs'", + "'parent'", + "'pattern-separator'", + "'per-mille'", + "'percent'", + "'phrase'", + "'position'", + "'preceding'", + "'preceding-sibling'", + "'preserve'", + "'previous'", + "'processing-instruction'", + "'relationship'", + "'rename'", + "'replace'", + "'return'", + "'returning'", + "'revalidation'", + "'same'", + "'satisfies'", + "'schema'", + "'schema-attribute'", + "'schema-element'", + "'score'", + "'self'", + "'sensitive'", + "'sentence'", + "'sentences'", + "'skip'", + "'sliding'", + "'some'", + "'stable'", + "'start'", + "'stemming'", + "'stop'", + "'strict'", + "'strip'", + "'structured-item'", + "'switch'", + "'text'", + "'then'", + "'thesaurus'", + "'times'", + "'to'", + "'treat'", + "'try'", + "'tumbling'", + "'type'", + "'typeswitch'", + "'union'", + "'unique'", + "'unordered'", + "'updating'", + "'uppercase'", + "'using'", + "'validate'", + "'value'", + "'variable'", + "'version'", + "'weight'", + "'when'", + "'where'", + "'while'", + "'wildcards'", + "'window'", + "'with'", + "'without'", + "'word'", + "'words'", + "'xquery'", + "'zero-digit'", + "'{'", + "'{{'", + "'|'", + "'}'", + "'}}'" +]; + +// End + +},{}],"/node_modules/xqlint/lib/lexers/jsoniq_lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var JSONiqTokenizer = _dereq_('./JSONiqTokenizer').JSONiqTokenizer; +var Lexer = _dereq_('./lexer').Lexer; + +var keys = 'NaN|after|allowing|ancestor|ancestor-or-self|and|append|array|as|ascending|at|attribute|base-uri|before|boundary-space|break|by|case|cast|castable|catch|child|collation|comment|constraint|construction|contains|context|continue|copy|copy-namespaces|count|decimal-format|decimal-separator|declare|default|delete|descendant|descendant-or-self|descending|digit|div|document|document-node|element|else|empty|empty-sequence|encoding|end|eq|every|except|exit|external|false|first|following|following-sibling|for|from|ft-option|function|ge|greatest|group|grouping-separator|gt|idiv|if|import|in|index|infinity|insert|instance|integrity|intersect|into|is|item|json|json-item|jsoniq|last|lax|le|least|let|loop|lt|minus-sign|mod|modify|module|namespace|namespace-node|ne|next|node|nodes|not|null|object|of|only|option|or|order|ordered|ordering|paragraphs|parent|pattern-separator|per-mille|percent|preceding|preceding-sibling|previous|processing-instruction|rename|replace|return|returning|revalidation|satisfies|schema|schema-attribute|schema-element|score|select|self|sentences|sliding|some|stable|start|strict|switch|text|then|times|to|treat|true|try|tumbling|type|typeswitch|union|unordered|updating|validate|value|variable|version|when|where|while|window|with|words|xquery|zero-digit'.split('|'); +var keywords = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'keyword' }; }); +var ncnames = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'text', next: function(stack){ stack.pop(); } }; }); + +var cdata = 'constant.language'; +var number = 'constant'; +var xmlcomment = 'comment'; +var pi = 'xml-pe'; +var pragma = 'constant.buildin'; +var n = function(name){ + return '\'' + name + '\''; +}; +var Rules = { + start: [ + { name: n('(#'), token: pragma, next: function(stack){ stack.push('Pragma'); } }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n('(:~'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n('<!--'), token: xmlcomment, next: function(stack){ stack.push('XMLComment'); } }, + { name: n('<?'), token: pi, next: function(stack) { stack.push('PI'); } }, + { name: n('\'\''), token: 'string', next: function(stack){ stack.push('AposString'); } }, + { name: n('"'), token: 'string', next: function(stack){ stack.push('QuotString'); } }, + { name: 'Annotation', token: 'support.function' }, + { name: 'ModuleDecl', token: 'keyword', next: function(stack){ stack.push('Prefix'); } }, + { name: 'OptionDecl', token: 'keyword', next: function(stack){ stack.push('_EQName'); } }, + { name: 'AttrTest', token: 'support.type' }, + { name: 'Variable', token: 'variable' }, + { name: n('<![CDATA['), token: cdata, next: function(stack){ stack.push('CData'); } }, + { name: 'IntegerLiteral', token: number }, + { name: 'DecimalLiteral', token: number }, + { name: 'DoubleLiteral', token: number }, + { name: 'Operator', token: 'keyword.operator' }, + { name: 'EQName', token: function(val) { return keys.indexOf(val) !== -1 ? 'keyword' : 'support.function'; } }, + { name: n('('), token: 'lparen' }, + { name: n(')'), token: 'rparen' }, + { name: 'Tag', token: 'meta.tag', next: function(stack){ stack.push('StartTag'); } }, + { name: n('}'), token: 'text', next: function(stack){ if(stack.length > 1) { stack.pop(); } } }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } //, next: function(stack){ if(stack.length > 1) { stack.pop(); } } } + ].concat(keywords), + _EQName: [ + { name: 'EQName', token: 'text', next: function(stack) { stack.pop(); } } + ].concat(ncnames), + Prefix: [ + { name: 'NCName', token: 'text', next: function(stack) { stack.pop(); } } + ].concat(ncnames), + StartTag: [ + { name: n('>'), token: 'meta.tag', next: function(stack){ stack.push('TagContent'); } }, + { name: 'QName', token: 'entity.other.attribute-name' }, + { name: n('='), token: 'text' }, + { name: n('\'\''), token: 'string', next: function(stack){ stack.push('AposAttr'); } }, + { name: n('"'), token: 'string', next: function(stack){ stack.push('QuotAttr'); } }, + { name: n('/>'), token: 'meta.tag.r', next: function(stack){ stack.pop(); } } + ], + TagContent: [ + { name: 'ElementContentChar', token: 'text' }, + { name: n('<![CDATA['), token: cdata, next: function(stack){ stack.push('CData'); } }, + { name: n('<!--'), token: xmlcomment, next: function(stack){ stack.push('XMLComment'); } }, + { name: 'Tag', token: 'meta.tag', next: function(stack){ stack.push('StartTag'); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'text' }, + { name: n('}}'), token: 'text' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } }, + { name: 'EndTag', token: 'meta.tag', next: function(stack){ stack.pop(); stack.pop(); } } + ], + AposAttr: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposAttrContentChar', token: 'string' }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'string' }, + { name: n('}}'), token: 'string' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } + ], + QuotAttr: [ + { name: n('\"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'EscapeQuot', token: 'constant.language.escape' }, + { name: 'QuotAttrContentChar', token: 'string' }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'string' }, + { name: n('}}'), token: 'string' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } + ], + Pragma: [ + { name: 'PragmaContents', token: pragma }, + { name: n('#'), token: pragma }, + { name: n('#)'), token: pragma, next: function(stack){ stack.pop(); } } + ], + Comment: [ + { name: 'CommentContents', token: 'comment' }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n(':)'), token: 'comment', next: function(stack){ stack.pop(); } } + ], + CommentDoc: [ + { name: 'DocCommentContents', token: 'comment.doc' }, + { name: 'DocTag', token: 'comment.doc.tag' }, + { name: n('(:'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n(':)'), token: 'comment.doc', next: function(stack){ stack.pop(); } } + ], + XMLComment: [ + { name: 'DirCommentContents', token: xmlcomment }, + { name: n('-->'), token: xmlcomment, next: function(stack){ stack.pop(); } } + ], + CData: [ + { name: 'CDataSectionContents', token: cdata }, + { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } + ], + PI: [ + { name: 'DirPIContents', token: pi }, + { name: n('?'), token: pi }, + { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } + ], + AposString: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposChar', token: 'string' } + ], + QuotString: [ + { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'JSONPredefinedCharRef', token: 'constant.language.escape' }, + { name: 'JSONCharRef', token: 'constant.language.escape' }, + { name: 'JSONChar', token: 'string' } + ] +}; + +exports.JSONiqLexer = function(){ return new Lexer(JSONiqTokenizer, Rules); }; +},{"./JSONiqTokenizer":"/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}],"/node_modules/xqlint/lib/lexers/lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var TokenHandler = function(code) { + var input = code; + this.tokens = []; + + this.reset = function() { + input = input; + this.tokens = []; + }; + + this.startNonterminal = function() {}; + this.endNonterminal = function() {}; + + this.terminal = function(name, begin, end) { + this.tokens.push({ + name: name, + value: input.substring(begin, end) + }); + }; + + this.whitespace = function(begin, end) { + this.tokens.push({ + name: 'WS', + value: input.substring(begin, end) + }); + }; +}; + +exports.Lexer = function(Tokenizer, Rules) { + + this.tokens = []; + + this.getLineTokens = function(line, state) { + state = (state === 'start' || !state) ? '["start"]' : state; + var stack = JSON.parse(state); + var h = new TokenHandler(line); + var tokenizer = new Tokenizer(line, h); + var tokens = []; + + while(true) { + var currentState = stack[stack.length - 1]; + try { + h.tokens = []; + tokenizer['parse_' + currentState](); + var info = null; + + if(h.tokens.length > 1 && h.tokens[0].name === 'WS') { + tokens.push({ + type: 'text', + value: h.tokens[0].value + }); + h.tokens.splice(0, 1); + } + + var token = h.tokens[0]; + var rules = Rules[currentState]; + for(var k = 0; k < rules.length; k++) { + var rule = Rules[currentState][k]; + if((typeof(rule.name) === 'function' && rule.name(token)) || rule.name === token.name) { + info = rule; + break; + } + } + + if(token.name === 'EOF') { break; } + if(token.value === '') { throw 'Encountered empty string lexical rule.'; } + + tokens.push({ + type: info === null ? 'text' : (typeof(info.token) === 'function' ? info.token(token.value) : info.token), + value: token.value + }); + + if(info && info.next) { + info.next(stack); + } + + } catch(e) { + if(e instanceof tokenizer.ParseException) { + var index = 0; + for(var i=0; i < tokens.length; i++) { + index += tokens[i].value.length; + } + tokens.push({ type: 'text', value: line.substring(index) }); + return { + tokens: tokens, + state: JSON.stringify(['start']) + }; + } else { + throw e; + } + } + } + + return { + tokens: tokens, + state: JSON.stringify(stack) + }; + }; +}; +},{}],"/node_modules/xqlint/lib/lexers/xquery_lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var XQueryTokenizer = _dereq_('./XQueryTokenizer').XQueryTokenizer; +var Lexer = _dereq_('./lexer').Lexer; + +var keys = 'after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position|strict'.split('|'); + +var keywords = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'keyword' }; }); +var ncnames = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'text', next: function(stack){ stack.pop(); } }; }); + +var cdata = 'constant.language'; +var number = 'constant'; +var xmlcomment = 'comment'; +var pi = 'xml-pe'; +var pragma = 'constant.buildin'; +var n = function(name){ + return '\'' + name + '\''; +}; +var Rules = { + start: [ + { name: n('(#'), token: pragma, next: function(stack){ stack.push('Pragma'); } }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n('(:~'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n('<!--'), token: xmlcomment, next: function(stack){ stack.push('XMLComment'); } }, + { name: n('<?'), token: pi, next: function(stack) { stack.push('PI'); } }, + { name: n('\'\''), token: 'string', next: function(stack){ stack.push('AposString'); } }, + { name: n('"'), token: 'string', next: function(stack){ stack.push('QuotString'); } }, + { name: 'Annotation', token: 'support.function' }, + { name: 'ModuleDecl', token: 'keyword', next: function(stack){ stack.push('Prefix'); } }, + { name: 'OptionDecl', token: 'keyword', next: function(stack){ stack.push('_EQName'); } }, + { name: 'AttrTest', token: 'support.type' }, + { name: 'Variable', token: 'variable' }, + { name: n('<![CDATA['), token: cdata, next: function(stack){ stack.push('CData'); } }, + { name: 'IntegerLiteral', token: number }, + { name: 'DecimalLiteral', token: number }, + { name: 'DoubleLiteral', token: number }, + { name: 'Operator', token: 'keyword.operator' }, + { name: 'EQName', token: function(val) { return keys.indexOf(val) !== -1 ? 'keyword' : 'support.function'; } }, + { name: n('('), token: 'lparen' }, + { name: n(')'), token: 'rparen' }, + { name: 'Tag', token: 'meta.tag', next: function(stack){ stack.push('StartTag'); } }, + { name: n('}'), token: 'text', next: function(stack){ if(stack.length > 1) { stack.pop(); } } }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } //, next: function(stack){ if(stack.length > 1) { stack.pop(); } } } + ].concat(keywords), + _EQName: [ + { name: 'EQName', token: 'text', next: function(stack) { stack.pop(); } } + ].concat(ncnames), + Prefix: [ + { name: 'NCName', token: 'text', next: function(stack) { stack.pop(); } } + ].concat(ncnames), + StartTag: [ + { name: n('>'), token: 'meta.tag', next: function(stack){ stack.push('TagContent'); } }, + { name: 'QName', token: 'entity.other.attribute-name' }, + { name: n('='), token: 'text' }, + { name: n('\'\''), token: 'string', next: function(stack){ stack.push('AposAttr'); } }, + { name: n('"'), token: 'string', next: function(stack){ stack.push('QuotAttr'); } }, + { name: n('/>'), token: 'meta.tag.r', next: function(stack){ stack.pop(); } } + ], + TagContent: [ + { name: 'ElementContentChar', token: 'text' }, + { name: n('<![CDATA['), token: cdata, next: function(stack){ stack.push('CData'); } }, + { name: n('<!--'), token: xmlcomment, next: function(stack){ stack.push('XMLComment'); } }, + { name: 'Tag', token: 'meta.tag', next: function(stack){ stack.push('StartTag'); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'text' }, + { name: n('}}'), token: 'text' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } }, + { name: 'EndTag', token: 'meta.tag', next: function(stack){ stack.pop(); stack.pop(); } } + ], + AposAttr: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposAttrContentChar', token: 'string' }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'string' }, + { name: n('}}'), token: 'string' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } + ], + QuotAttr: [ + { name: n('\"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'EscapeQuot', token: 'constant.language.escape' }, + { name: 'QuotAttrContentChar', token: 'string' }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'string' }, + { name: n('}}'), token: 'string' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } + ], + Pragma: [ + { name: 'PragmaContents', token: pragma }, + { name: n('#'), token: pragma }, + { name: n('#)'), token: pragma, next: function(stack){ stack.pop(); } } + ], + Comment: [ + { name: 'CommentContents', token: 'comment' }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n(':)'), token: 'comment', next: function(stack){ stack.pop(); } } + ], + CommentDoc: [ + { name: 'DocCommentContents', token: 'comment.doc' }, + { name: 'DocTag', token: 'comment.doc.tag' }, + { name: n('(:'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n(':)'), token: 'comment.doc', next: function(stack){ stack.pop(); } } + ], + XMLComment: [ + { name: 'DirCommentContents', token: xmlcomment }, + { name: n('-->'), token: xmlcomment, next: function(stack){ stack.pop(); } } + ], + CData: [ + { name: 'CDataSectionContents', token: cdata }, + { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } + ], + PI: [ + { name: 'DirPIContents', token: pi }, + { name: n('?'), token: pi }, + { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } + ], + AposString: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposChar', token: 'string' } + ], + QuotString: [ + { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeQuot', token: 'constant.language.escape' }, + { name: 'QuotChar', token: 'string' } + ] +}; + +exports.XQueryLexer = function(){ return new Lexer(XQueryTokenizer, Rules); }; +},{"./XQueryTokenizer":"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}],"/node_modules/xqlint/lib/parsers/JSONParseTreeHandler.js":[function(_dereq_,module,exports){ +exports.JSONParseTreeHandler = function (code) { + 'use strict'; + + //List of Nodes to be indexed + var toBeIndex = ['VarDecl', 'FunctionDecl']; + + //List of nodes that are not targeted by the parse tree size optimization. + var list = [ + 'OrExpr', 'AndExpr', 'ComparisonExpr', 'StringConcatExpr', 'RangeExpr', + 'AdditiveExpr', 'MultiplicativeExpr', + 'UnionExpr', 'IntersectExceptExpr', 'InstanceofExpr', 'TreatExpr', 'CastableExpr', 'CastExpr', 'UnaryExpr', 'ValueExpr', + 'FTContainsExpr', 'SimpleMapExpr', 'PathExpr', 'RelativePathExpr', 'PostfixExpr', 'StepExpr' + ]; + + var ast = null; + var ptr = null; + var remains = code; + var cursor = 0; + var lineCursor = 0; + var line = 0; + //var col = 0; + + function createNode(name) { + return { + name: name, + children: [], + getParent: null, + pos: { + sl: 0, + sc: 0, + el: 0, + ec: 0 + } + }; + } + + function pushNode(name) { //begin + var node = createNode(name); + if (ast === null) { + ast = node; + ast.index = []; + ptr = node; + } else { + node.getParent = ptr; + ptr.children.push(node); + ptr = ptr.children[ptr.children.length - 1]; + } + } + + function popNode() { + + if (ptr.children.length > 0) { + var s = ptr.children[0]; + var e = null; + //We want to skip empty non terminals. For instance: + // [108] AxisStep ::= (ReverseStep | ForwardStep) PredicateList + // [120] PredicateList ::= Predicate* + for (var i = ptr.children.length - 1; i >= 0; i--) { + e = ptr.children[i]; + if (e.pos.el !== 0 || e.pos.ec !== 0) { + break; + } + } + ptr.pos.sl = s.pos.sl; + ptr.pos.sc = s.pos.sc; + ptr.pos.el = e.pos.el; + ptr.pos.ec = e.pos.ec; + } + + //Normalize EQName && FunctionName + if (ptr.name === 'FunctionName') { + ptr.name = 'EQName'; + } + if (ptr.name === 'EQName' && ptr.value === undefined) { + ptr.value = ptr.children[0].value; + ptr.children.pop(); + } + + if(toBeIndex.indexOf(ptr.name) !== -1) { + ast.index.push(ptr); + } + + if (ptr.getParent !== null) { + ptr = ptr.getParent; + //for(var i in ptr.children) { + //delete ptr.children[i].getParent; + //} + } else { + //delete ptr.getParent; + } + + //Parse tree size optimization + if (ptr.children.length > 0) { + var lastChild = ptr.children[ptr.children.length - 1]; + if (lastChild.children.length === 1 && list.indexOf(lastChild.name) !== -1) { + ptr.children[ptr.children.length - 1] = lastChild.children[0]; + } + } + } + + this.closeParseTree = function () { + while (ptr.getParent !== null) { + popNode(); + } + popNode(); + }; + + this.peek = function () { + return ptr; + }; + + this.getParseTree = function () { + return ast; + }; + + this.reset = function () {}; //input + + this.startNonterminal = function (name, begin) { + pushNode(name, begin); + }; + + this.endNonterminal = function () {//name, end + popNode(); + }; + + this.terminal = function (name, begin, end) { + name = (name.substring(0, 1) === '\'' && name.substring(name.length - 1) === '\'') ? 'TOKEN' : name; + pushNode(name, begin); + setValue(ptr, begin, end); + popNode(); + }; + + this.whitespace = function (begin, end) { + var name = 'WS'; + pushNode(name, begin); + setValue(ptr, begin, end); + popNode(); + }; + + function setValue(node, begin, end) { + + var e = end - cursor; + ptr.value = remains.substring(0, e); + remains = remains.substring(e); + cursor = end; + + var sl = line; + var sc = lineCursor; + var el = sl + ptr.value.split('\n').length - 1; + var lastIdx = ptr.value.lastIndexOf('\n'); + var ec = lastIdx === -1 ? sc + ptr.value.length : ptr.value.substring(lastIdx + 1).length; + // ec = ec === 0 ? 0 : ec - 1; + + line = el; + //lineCursor = ec === 0 ? 0 : ec; + lineCursor = ec; + + ptr.pos.sl = sl; + ptr.pos.sc = sc; + ptr.pos.el = el; + ptr.pos.ec = ec; + } +}; + +},{}],"/node_modules/xqlint/lib/parsers/JSONiqParser.js":[function(_dereq_,module,exports){ +// This file was generated on Fri Apr 10, 2015 00:54 (UTC+01) by REx v5.33 which is Copyright (c) 1979-2015 by Gunther Rademacher <grd@gmx.net> +// REx command line: JSONiqParser.ebnf -ll 2 -backtrack -tree -javascript -a xqlint + + // line 2 "JSONiqParser.ebnf" + var JSONiqParser = exports.JSONiqParser = function JSONiqParser(string, parsingEventHandler) + { + init(string, parsingEventHandler); + // line 9 "JSONiqParser.js" + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + l2 = 0; + end = e; + ex = -1; + memo = {}; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? JSONiqParser.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = JSONiqParser.getTokenSet(- e.getState()); + } + else + { + expected = [JSONiqParser.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_XQuery = function() + { + eventHandler.startNonterminal("XQuery", e0); + lookahead1W(277); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Module(); + shift(25); // EOF + eventHandler.endNonterminal("XQuery", e0); + }; + + function parse_Module() + { + eventHandler.startNonterminal("Module", e0); + switch (l1) + { + case 170: // 'jsoniq' + lookahead2W(168); // S^WS | '#' | '(' | '(:' | 'encoding' | 'version' + break; + default: + lk = l1; + } + if (lk == 64682 // 'jsoniq' 'encoding' + || lk == 137898) // 'jsoniq' 'version' + { + parse_VersionDecl(); + } + lookahead1W(277); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 185: // 'module' + lookahead2W(146); // S^WS | '#' | '(' | '(:' | 'namespace' + break; + default: + lk = l1; + } + switch (lk) + { + case 95929: // 'module' 'namespace' + whitespace(); + parse_LibraryModule(); + break; + default: + whitespace(); + parse_MainModule(); + } + eventHandler.endNonterminal("Module", e0); + } + + function parse_VersionDecl() + { + eventHandler.startNonterminal("VersionDecl", e0); + shift(170); // 'jsoniq' + lookahead1W(120); // S^WS | '(:' | 'encoding' | 'version' + switch (l1) + { + case 126: // 'encoding' + shift(126); // 'encoding' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + break; + default: + shift(269); // 'version' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + lookahead1W(113); // S^WS | '(:' | ';' | 'encoding' + if (l1 == 126) // 'encoding' + { + shift(126); // 'encoding' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + } + lookahead1W(29); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + eventHandler.endNonterminal("VersionDecl", e0); + } + + function parse_LibraryModule() + { + eventHandler.startNonterminal("LibraryModule", e0); + parse_ModuleDecl(); + lookahead1W(142); // S^WS | EOF | '(:' | 'declare' | 'import' + whitespace(); + parse_Prolog(); + eventHandler.endNonterminal("LibraryModule", e0); + } + + function parse_ModuleDecl() + { + eventHandler.startNonterminal("ModuleDecl", e0); + shift(185); // 'module' + lookahead1W(64); // S^WS | '(:' | 'namespace' + shift(187); // 'namespace' + lookahead1W(239); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + whitespace(); + parse_NCName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(29); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + eventHandler.endNonterminal("ModuleDecl", e0); + } + + function parse_Prolog() + { + eventHandler.startNonterminal("Prolog", e0); + for (;;) + { + lookahead1W(277); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 109: // 'declare' + lookahead2W(206); // S^WS | '#' | '%' | '(' | '(:' | 'base-uri' | 'boundary-space' | 'collection' | + // 'construction' | 'context' | 'copy-namespaces' | 'decimal-format' | 'default' | + // 'ft-option' | 'function' | 'index' | 'integrity' | 'namespace' | 'option' | + // 'ordering' | 'revalidation' | 'updating' | 'variable' + break; + case 155: // 'import' + lookahead2W(169); // S^WS | '#' | '(' | '(:' | 'module' | 'schema' + break; + default: + lk = l1; + } + if (lk != 43117 // 'declare' 'base-uri' + && lk != 44141 // 'declare' 'boundary-space' + && lk != 50797 // 'declare' 'construction' + && lk != 53869 // 'declare' 'copy-namespaces' + && lk != 54893 // 'declare' 'decimal-format' + && lk != 56429 // 'declare' 'default' + && lk != 73325 // 'declare' 'ft-option' + && lk != 94875 // 'import' 'module' + && lk != 95853 // 'declare' 'namespace' + && lk != 106093 // 'declare' 'ordering' + && lk != 115821 // 'declare' 'revalidation' + && lk != 117403) // 'import' 'schema' + { + break; + } + switch (l1) + { + case 109: // 'declare' + lookahead2W(200); // S^WS | '(:' | 'base-uri' | 'boundary-space' | 'construction' | + // 'copy-namespaces' | 'decimal-format' | 'default' | 'ft-option' | 'namespace' | + // 'ordering' | 'revalidation' + break; + default: + lk = l1; + } + if (lk == 56429) // 'declare' 'default' + { + lk = memoized(0, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_DefaultNamespaceDecl(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(0, e0, lk); + } + } + switch (lk) + { + case -1: + whitespace(); + parse_DefaultNamespaceDecl(); + break; + case 95853: // 'declare' 'namespace' + whitespace(); + parse_NamespaceDecl(); + break; + case 155: // 'import' + whitespace(); + parse_Import(); + break; + case 73325: // 'declare' 'ft-option' + whitespace(); + parse_FTOptionDecl(); + break; + default: + whitespace(); + parse_Setter(); + } + lookahead1W(29); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + } + for (;;) + { + lookahead1W(277); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 109: // 'declare' + lookahead2W(201); // S^WS | '#' | '%' | '(' | '(:' | 'collection' | 'context' | 'function' | 'index' | + // 'integrity' | 'option' | 'updating' | 'variable' + break; + default: + lk = l1; + } + if (lk != 17005 // 'declare' '%' + && lk != 49261 // 'declare' 'collection' + && lk != 52333 // 'declare' 'context' + && lk != 75373 // 'declare' 'function' + && lk != 80493 // 'declare' 'index' + && lk != 83565 // 'declare' 'integrity' + && lk != 104045 // 'declare' 'option' + && lk != 134765 // 'declare' 'updating' + && lk != 137325) // 'declare' 'variable' + { + break; + } + switch (l1) + { + case 109: // 'declare' + lookahead2W(197); // S^WS | '%' | '(:' | 'collection' | 'context' | 'function' | 'index' | + // 'integrity' | 'option' | 'updating' | 'variable' + break; + default: + lk = l1; + } + switch (lk) + { + case 52333: // 'declare' 'context' + whitespace(); + parse_ContextItemDecl(); + break; + case 104045: // 'declare' 'option' + whitespace(); + parse_OptionDecl(); + break; + default: + whitespace(); + parse_AnnotatedDecl(); + } + lookahead1W(29); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + } + eventHandler.endNonterminal("Prolog", e0); + } + + function parse_Separator() + { + eventHandler.startNonterminal("Separator", e0); + shift(54); // ';' + eventHandler.endNonterminal("Separator", e0); + } + + function parse_Setter() + { + eventHandler.startNonterminal("Setter", e0); + switch (l1) + { + case 109: // 'declare' + lookahead2W(194); // S^WS | '(:' | 'base-uri' | 'boundary-space' | 'construction' | + // 'copy-namespaces' | 'decimal-format' | 'default' | 'ordering' | 'revalidation' + break; + default: + lk = l1; + } + if (lk == 56429) // 'declare' 'default' + { + lk = memoized(1, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_DefaultCollationDecl(); + lk = -2; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_EmptyOrderDecl(); + lk = -6; + } + catch (p6A) + { + lk = -9; + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(1, e0, lk); + } + } + switch (lk) + { + case 44141: // 'declare' 'boundary-space' + parse_BoundarySpaceDecl(); + break; + case -2: + parse_DefaultCollationDecl(); + break; + case 43117: // 'declare' 'base-uri' + parse_BaseURIDecl(); + break; + case 50797: // 'declare' 'construction' + parse_ConstructionDecl(); + break; + case 106093: // 'declare' 'ordering' + parse_OrderingModeDecl(); + break; + case -6: + parse_EmptyOrderDecl(); + break; + case 115821: // 'declare' 'revalidation' + parse_RevalidationDecl(); + break; + case 53869: // 'declare' 'copy-namespaces' + parse_CopyNamespacesDecl(); + break; + default: + parse_DecimalFormatDecl(); + } + eventHandler.endNonterminal("Setter", e0); + } + + function parse_BoundarySpaceDecl() + { + eventHandler.startNonterminal("BoundarySpaceDecl", e0); + shift(109); // 'declare' + lookahead1W(36); // S^WS | '(:' | 'boundary-space' + shift(86); // 'boundary-space' + lookahead1W(137); // S^WS | '(:' | 'preserve' | 'strip' + switch (l1) + { + case 218: // 'preserve' + shift(218); // 'preserve' + break; + default: + shift(246); // 'strip' + } + eventHandler.endNonterminal("BoundarySpaceDecl", e0); + } + + function parse_DefaultCollationDecl() + { + eventHandler.startNonterminal("DefaultCollationDecl", e0); + shift(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shift(110); // 'default' + lookahead1W(41); // S^WS | '(:' | 'collation' + shift(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("DefaultCollationDecl", e0); + } + + function try_DefaultCollationDecl() + { + shiftT(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shiftT(110); // 'default' + lookahead1W(41); // S^WS | '(:' | 'collation' + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + + function parse_BaseURIDecl() + { + eventHandler.startNonterminal("BaseURIDecl", e0); + shift(109); // 'declare' + lookahead1W(35); // S^WS | '(:' | 'base-uri' + shift(84); // 'base-uri' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("BaseURIDecl", e0); + } + + function parse_ConstructionDecl() + { + eventHandler.startNonterminal("ConstructionDecl", e0); + shift(109); // 'declare' + lookahead1W(44); // S^WS | '(:' | 'construction' + shift(99); // 'construction' + lookahead1W(137); // S^WS | '(:' | 'preserve' | 'strip' + switch (l1) + { + case 246: // 'strip' + shift(246); // 'strip' + break; + default: + shift(218); // 'preserve' + } + eventHandler.endNonterminal("ConstructionDecl", e0); + } + + function parse_OrderingModeDecl() + { + eventHandler.startNonterminal("OrderingModeDecl", e0); + shift(109); // 'declare' + lookahead1W(71); // S^WS | '(:' | 'ordering' + shift(207); // 'ordering' + lookahead1W(135); // S^WS | '(:' | 'ordered' | 'unordered' + switch (l1) + { + case 206: // 'ordered' + shift(206); // 'ordered' + break; + default: + shift(262); // 'unordered' + } + eventHandler.endNonterminal("OrderingModeDecl", e0); + } + + function parse_EmptyOrderDecl() + { + eventHandler.startNonterminal("EmptyOrderDecl", e0); + shift(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shift(110); // 'default' + lookahead1W(70); // S^WS | '(:' | 'order' + shift(205); // 'order' + lookahead1W(52); // S^WS | '(:' | 'empty' + shift(124); // 'empty' + lookahead1W(125); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 149: // 'greatest' + shift(149); // 'greatest' + break; + default: + shift(176); // 'least' + } + eventHandler.endNonterminal("EmptyOrderDecl", e0); + } + + function try_EmptyOrderDecl() + { + shiftT(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shiftT(110); // 'default' + lookahead1W(70); // S^WS | '(:' | 'order' + shiftT(205); // 'order' + lookahead1W(52); // S^WS | '(:' | 'empty' + shiftT(124); // 'empty' + lookahead1W(125); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 149: // 'greatest' + shiftT(149); // 'greatest' + break; + default: + shiftT(176); // 'least' + } + } + + function parse_CopyNamespacesDecl() + { + eventHandler.startNonterminal("CopyNamespacesDecl", e0); + shift(109); // 'declare' + lookahead1W(47); // S^WS | '(:' | 'copy-namespaces' + shift(105); // 'copy-namespaces' + lookahead1W(132); // S^WS | '(:' | 'no-preserve' | 'preserve' + whitespace(); + parse_PreserveMode(); + lookahead1W(25); // S^WS | '(:' | ',' + shift(42); // ',' + lookahead1W(127); // S^WS | '(:' | 'inherit' | 'no-inherit' + whitespace(); + parse_InheritMode(); + eventHandler.endNonterminal("CopyNamespacesDecl", e0); + } + + function parse_PreserveMode() + { + eventHandler.startNonterminal("PreserveMode", e0); + switch (l1) + { + case 218: // 'preserve' + shift(218); // 'preserve' + break; + default: + shift(193); // 'no-preserve' + } + eventHandler.endNonterminal("PreserveMode", e0); + } + + function parse_InheritMode() + { + eventHandler.startNonterminal("InheritMode", e0); + switch (l1) + { + case 159: // 'inherit' + shift(159); // 'inherit' + break; + default: + shift(192); // 'no-inherit' + } + eventHandler.endNonterminal("InheritMode", e0); + } + + function parse_DecimalFormatDecl() + { + eventHandler.startNonterminal("DecimalFormatDecl", e0); + shift(109); // 'declare' + lookahead1W(118); // S^WS | '(:' | 'decimal-format' | 'default' + switch (l1) + { + case 107: // 'decimal-format' + shift(107); // 'decimal-format' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + break; + default: + shift(110); // 'default' + lookahead1W(48); // S^WS | '(:' | 'decimal-format' + shift(107); // 'decimal-format' + } + for (;;) + { + lookahead1W(203); // S^WS | '(:' | ';' | 'NaN' | 'decimal-separator' | 'digit' | + // 'grouping-separator' | 'infinity' | 'minus-sign' | 'pattern-separator' | + // 'per-mille' | 'percent' | 'zero-digit' + if (l1 == 54) // ';' + { + break; + } + whitespace(); + parse_DFPropertyName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + eventHandler.endNonterminal("DecimalFormatDecl", e0); + } + + function parse_DFPropertyName() + { + eventHandler.startNonterminal("DFPropertyName", e0); + switch (l1) + { + case 108: // 'decimal-separator' + shift(108); // 'decimal-separator' + break; + case 151: // 'grouping-separator' + shift(151); // 'grouping-separator' + break; + case 158: // 'infinity' + shift(158); // 'infinity' + break; + case 182: // 'minus-sign' + shift(182); // 'minus-sign' + break; + case 68: // 'NaN' + shift(68); // 'NaN' + break; + case 213: // 'percent' + shift(213); // 'percent' + break; + case 212: // 'per-mille' + shift(212); // 'per-mille' + break; + case 280: // 'zero-digit' + shift(280); // 'zero-digit' + break; + case 117: // 'digit' + shift(117); // 'digit' + break; + default: + shift(211); // 'pattern-separator' + } + eventHandler.endNonterminal("DFPropertyName", e0); + } + + function parse_Import() + { + eventHandler.startNonterminal("Import", e0); + switch (l1) + { + case 155: // 'import' + lookahead2W(130); // S^WS | '(:' | 'module' | 'schema' + break; + default: + lk = l1; + } + switch (lk) + { + case 117403: // 'import' 'schema' + parse_SchemaImport(); + break; + default: + parse_ModuleImport(); + } + eventHandler.endNonterminal("Import", e0); + } + + function parse_SchemaImport() + { + eventHandler.startNonterminal("SchemaImport", e0); + shift(155); // 'import' + lookahead1W(76); // S^WS | '(:' | 'schema' + shift(229); // 'schema' + lookahead1W(141); // URILiteral | S^WS | '(:' | 'default' | 'namespace' + if (l1 != 7) // URILiteral + { + whitespace(); + parse_SchemaPrefix(); + } + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(112); // S^WS | '(:' | ';' | 'at' + if (l1 == 82) // 'at' + { + shift(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + for (;;) + { + lookahead1W(107); // S^WS | '(:' | ',' | ';' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + } + eventHandler.endNonterminal("SchemaImport", e0); + } + + function parse_SchemaPrefix() + { + eventHandler.startNonterminal("SchemaPrefix", e0); + switch (l1) + { + case 187: // 'namespace' + shift(187); // 'namespace' + lookahead1W(239); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + whitespace(); + parse_NCName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + break; + default: + shift(110); // 'default' + lookahead1W(50); // S^WS | '(:' | 'element' + shift(122); // 'element' + lookahead1W(64); // S^WS | '(:' | 'namespace' + shift(187); // 'namespace' + } + eventHandler.endNonterminal("SchemaPrefix", e0); + } + + function parse_ModuleImport() + { + eventHandler.startNonterminal("ModuleImport", e0); + shift(155); // 'import' + lookahead1W(63); // S^WS | '(:' | 'module' + shift(185); // 'module' + lookahead1W(93); // URILiteral | S^WS | '(:' | 'namespace' + if (l1 == 187) // 'namespace' + { + shift(187); // 'namespace' + lookahead1W(239); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + whitespace(); + parse_NCName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + } + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(112); // S^WS | '(:' | ';' | 'at' + if (l1 == 82) // 'at' + { + shift(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + for (;;) + { + lookahead1W(107); // S^WS | '(:' | ',' | ';' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + } + eventHandler.endNonterminal("ModuleImport", e0); + } + + function parse_NamespaceDecl() + { + eventHandler.startNonterminal("NamespaceDecl", e0); + shift(109); // 'declare' + lookahead1W(64); // S^WS | '(:' | 'namespace' + shift(187); // 'namespace' + lookahead1W(239); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + whitespace(); + parse_NCName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("NamespaceDecl", e0); + } + + function parse_DefaultNamespaceDecl() + { + eventHandler.startNonterminal("DefaultNamespaceDecl", e0); + shift(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shift(110); // 'default' + lookahead1W(119); // S^WS | '(:' | 'element' | 'function' + switch (l1) + { + case 122: // 'element' + shift(122); // 'element' + break; + default: + shift(147); // 'function' + } + lookahead1W(64); // S^WS | '(:' | 'namespace' + shift(187); // 'namespace' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("DefaultNamespaceDecl", e0); + } + + function try_DefaultNamespaceDecl() + { + shiftT(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shiftT(110); // 'default' + lookahead1W(119); // S^WS | '(:' | 'element' | 'function' + switch (l1) + { + case 122: // 'element' + shiftT(122); // 'element' + break; + default: + shiftT(147); // 'function' + } + lookahead1W(64); // S^WS | '(:' | 'namespace' + shiftT(187); // 'namespace' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + + function parse_FTOptionDecl() + { + eventHandler.startNonterminal("FTOptionDecl", e0); + shift(109); // 'declare' + lookahead1W(55); // S^WS | '(:' | 'ft-option' + shift(143); // 'ft-option' + lookahead1W(84); // S^WS | '(:' | 'using' + whitespace(); + parse_FTMatchOptions(); + eventHandler.endNonterminal("FTOptionDecl", e0); + } + + function parse_AnnotatedDecl() + { + eventHandler.startNonterminal("AnnotatedDecl", e0); + shift(109); // 'declare' + for (;;) + { + lookahead1W(192); // S^WS | '%' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + // 'updating' | 'variable' + if (l1 != 33 // '%' + && l1 != 263) // 'updating' + { + break; + } + switch (l1) + { + case 263: // 'updating' + whitespace(); + parse_CompatibilityAnnotation(); + break; + default: + whitespace(); + parse_Annotation(); + } + } + switch (l1) + { + case 268: // 'variable' + whitespace(); + parse_VarDecl(); + break; + case 147: // 'function' + whitespace(); + parse_FunctionDecl(); + break; + case 96: // 'collection' + whitespace(); + parse_CollectionDecl(); + break; + case 157: // 'index' + whitespace(); + parse_IndexDecl(); + break; + default: + whitespace(); + parse_ICDecl(); + } + eventHandler.endNonterminal("AnnotatedDecl", e0); + } + + function parse_CompatibilityAnnotation() + { + eventHandler.startNonterminal("CompatibilityAnnotation", e0); + shift(263); // 'updating' + eventHandler.endNonterminal("CompatibilityAnnotation", e0); + } + + function parse_Annotation() + { + eventHandler.startNonterminal("Annotation", e0); + shift(33); // '%' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(193); // S^WS | '%' | '(' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + // 'updating' | 'variable' + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(190); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' | + // 'false' | 'null' | 'true' + whitespace(); + parse_Literal(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(190); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' | + // 'false' | 'null' | 'true' + whitespace(); + parse_Literal(); + } + shift(38); // ')' + } + eventHandler.endNonterminal("Annotation", e0); + } + + function try_Annotation() + { + shiftT(33); // '%' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_EQName(); + lookahead1W(193); // S^WS | '%' | '(' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + // 'updating' | 'variable' + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(190); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' | + // 'false' | 'null' | 'true' + try_Literal(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(190); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' | + // 'false' | 'null' | 'true' + try_Literal(); + } + shiftT(38); // ')' + } + } + + function parse_VarDecl() + { + eventHandler.startNonterminal("VarDecl", e0); + shift(268); // 'variable' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(157); // S^WS | '(:' | ':=' | 'as' | 'external' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(110); // S^WS | '(:' | ':=' | 'external' + switch (l1) + { + case 53: // ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_VarValue(); + break; + default: + shift(134); // 'external' + lookahead1W(108); // S^WS | '(:' | ':=' | ';' + if (l1 == 53) // ':=' + { + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_VarDefaultValue(); + } + } + eventHandler.endNonterminal("VarDecl", e0); + } + + function parse_VarValue() + { + eventHandler.startNonterminal("VarValue", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("VarValue", e0); + } + + function parse_VarDefaultValue() + { + eventHandler.startNonterminal("VarDefaultValue", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("VarDefaultValue", e0); + } + + function parse_ContextItemDecl() + { + eventHandler.startNonterminal("ContextItemDecl", e0); + shift(109); // 'declare' + lookahead1W(46); // S^WS | '(:' | 'context' + shift(102); // 'context' + lookahead1W(58); // S^WS | '(:' | 'item' + shift(167); // 'item' + lookahead1W(157); // S^WS | '(:' | ':=' | 'as' | 'external' + if (l1 == 80) // 'as' + { + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_ItemType(); + } + lookahead1W(110); // S^WS | '(:' | ':=' | 'external' + switch (l1) + { + case 53: // ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_VarValue(); + break; + default: + shift(134); // 'external' + lookahead1W(108); // S^WS | '(:' | ':=' | ';' + if (l1 == 53) // ':=' + { + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_VarDefaultValue(); + } + } + eventHandler.endNonterminal("ContextItemDecl", e0); + } + + function parse_ParamList() + { + eventHandler.startNonterminal("ParamList", e0); + parse_Param(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_Param(); + } + eventHandler.endNonterminal("ParamList", e0); + } + + function try_ParamList() + { + try_Param(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_Param(); + } + } + + function parse_Param() + { + eventHandler.startNonterminal("Param", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(153); // S^WS | '(:' | ')' | ',' | 'as' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + eventHandler.endNonterminal("Param", e0); + } + + function try_Param() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_EQName(); + lookahead1W(153); // S^WS | '(:' | ')' | ',' | 'as' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + } + + function parse_FunctionBody() + { + eventHandler.startNonterminal("FunctionBody", e0); + parse_EnclosedExpr(); + eventHandler.endNonterminal("FunctionBody", e0); + } + + function try_FunctionBody() + { + try_EnclosedExpr(); + } + + function parse_EnclosedExpr() + { + eventHandler.startNonterminal("EnclosedExpr", e0); + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("EnclosedExpr", e0); + } + + function try_EnclosedExpr() + { + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + } + + function parse_OptionDecl() + { + eventHandler.startNonterminal("OptionDecl", e0); + shift(109); // 'declare' + lookahead1W(69); // S^WS | '(:' | 'option' + shift(203); // 'option' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("OptionDecl", e0); + } + + function parse_Expr() + { + eventHandler.startNonterminal("Expr", e0); + parse_ExprSingle(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + eventHandler.endNonterminal("Expr", e0); + } + + function try_Expr() + { + try_ExprSingle(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + } + + function parse_FLWORExpr() + { + eventHandler.startNonterminal("FLWORExpr", e0); + parse_InitialClause(); + for (;;) + { + lookahead1W(195); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + // 'where' + if (l1 == 224) // 'return' + { + break; + } + whitespace(); + parse_IntermediateClause(); + } + whitespace(); + parse_ReturnClause(); + eventHandler.endNonterminal("FLWORExpr", e0); + } + + function try_FLWORExpr() + { + try_InitialClause(); + for (;;) + { + lookahead1W(195); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + // 'where' + if (l1 == 224) // 'return' + { + break; + } + try_IntermediateClause(); + } + try_ReturnClause(); + } + + function parse_InitialClause() + { + eventHandler.startNonterminal("InitialClause", e0); + switch (l1) + { + case 139: // 'for' + lookahead2W(151); // S^WS | '$' | '(:' | 'sliding' | 'tumbling' + break; + default: + lk = l1; + } + switch (lk) + { + case 16011: // 'for' '$' + parse_ForClause(); + break; + case 177: // 'let' + parse_LetClause(); + break; + default: + parse_WindowClause(); + } + eventHandler.endNonterminal("InitialClause", e0); + } + + function try_InitialClause() + { + switch (l1) + { + case 139: // 'for' + lookahead2W(151); // S^WS | '$' | '(:' | 'sliding' | 'tumbling' + break; + default: + lk = l1; + } + switch (lk) + { + case 16011: // 'for' '$' + try_ForClause(); + break; + case 177: // 'let' + try_LetClause(); + break; + default: + try_WindowClause(); + } + } + + function parse_IntermediateClause() + { + eventHandler.startNonterminal("IntermediateClause", e0); + switch (l1) + { + case 139: // 'for' + case 177: // 'let' + parse_InitialClause(); + break; + case 272: // 'where' + parse_WhereClause(); + break; + case 150: // 'group' + parse_GroupByClause(); + break; + case 106: // 'count' + parse_CountClause(); + break; + default: + parse_OrderByClause(); + } + eventHandler.endNonterminal("IntermediateClause", e0); + } + + function try_IntermediateClause() + { + switch (l1) + { + case 139: // 'for' + case 177: // 'let' + try_InitialClause(); + break; + case 272: // 'where' + try_WhereClause(); + break; + case 150: // 'group' + try_GroupByClause(); + break; + case 106: // 'count' + try_CountClause(); + break; + default: + try_OrderByClause(); + } + } + + function parse_ForClause() + { + eventHandler.startNonterminal("ForClause", e0); + shift(139); // 'for' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_ForBinding(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_ForBinding(); + } + eventHandler.endNonterminal("ForClause", e0); + } + + function try_ForClause() + { + shiftT(139); // 'for' + lookahead1W(21); // S^WS | '$' | '(:' + try_ForBinding(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_ForBinding(); + } + } + + function parse_ForBinding() + { + eventHandler.startNonterminal("ForBinding", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(182); // S^WS | '(:' | 'allowing' | 'as' | 'at' | 'in' | 'score' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(173); // S^WS | '(:' | 'allowing' | 'at' | 'in' | 'score' + if (l1 == 73) // 'allowing' + { + whitespace(); + parse_AllowingEmpty(); + } + lookahead1W(160); // S^WS | '(:' | 'at' | 'in' | 'score' + if (l1 == 82) // 'at' + { + whitespace(); + parse_PositionalVar(); + } + lookahead1W(126); // S^WS | '(:' | 'in' | 'score' + if (l1 == 232) // 'score' + { + whitespace(); + parse_FTScoreVar(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ForBinding", e0); + } + + function try_ForBinding() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(182); // S^WS | '(:' | 'allowing' | 'as' | 'at' | 'in' | 'score' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(173); // S^WS | '(:' | 'allowing' | 'at' | 'in' | 'score' + if (l1 == 73) // 'allowing' + { + try_AllowingEmpty(); + } + lookahead1W(160); // S^WS | '(:' | 'at' | 'in' | 'score' + if (l1 == 82) // 'at' + { + try_PositionalVar(); + } + lookahead1W(126); // S^WS | '(:' | 'in' | 'score' + if (l1 == 232) // 'score' + { + try_FTScoreVar(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_AllowingEmpty() + { + eventHandler.startNonterminal("AllowingEmpty", e0); + shift(73); // 'allowing' + lookahead1W(52); // S^WS | '(:' | 'empty' + shift(124); // 'empty' + eventHandler.endNonterminal("AllowingEmpty", e0); + } + + function try_AllowingEmpty() + { + shiftT(73); // 'allowing' + lookahead1W(52); // S^WS | '(:' | 'empty' + shiftT(124); // 'empty' + } + + function parse_PositionalVar() + { + eventHandler.startNonterminal("PositionalVar", e0); + shift(82); // 'at' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("PositionalVar", e0); + } + + function try_PositionalVar() + { + shiftT(82); // 'at' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + } + + function parse_FTScoreVar() + { + eventHandler.startNonterminal("FTScoreVar", e0); + shift(232); // 'score' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("FTScoreVar", e0); + } + + function try_FTScoreVar() + { + shiftT(232); // 'score' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + } + + function parse_LetClause() + { + eventHandler.startNonterminal("LetClause", e0); + shift(177); // 'let' + lookahead1W(100); // S^WS | '$' | '(:' | 'score' + whitespace(); + parse_LetBinding(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(100); // S^WS | '$' | '(:' | 'score' + whitespace(); + parse_LetBinding(); + } + eventHandler.endNonterminal("LetClause", e0); + } + + function try_LetClause() + { + shiftT(177); // 'let' + lookahead1W(100); // S^WS | '$' | '(:' | 'score' + try_LetBinding(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(100); // S^WS | '$' | '(:' | 'score' + try_LetBinding(); + } + } + + function parse_LetBinding() + { + eventHandler.startNonterminal("LetBinding", e0); + switch (l1) + { + case 31: // '$' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(109); // S^WS | '(:' | ':=' | 'as' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + break; + default: + parse_FTScoreVar(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("LetBinding", e0); + } + + function try_LetBinding() + { + switch (l1) + { + case 31: // '$' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(109); // S^WS | '(:' | ':=' | 'as' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + break; + default: + try_FTScoreVar(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_WindowClause() + { + eventHandler.startNonterminal("WindowClause", e0); + shift(139); // 'for' + lookahead1W(139); // S^WS | '(:' | 'sliding' | 'tumbling' + switch (l1) + { + case 257: // 'tumbling' + whitespace(); + parse_TumblingWindowClause(); + break; + default: + whitespace(); + parse_SlidingWindowClause(); + } + eventHandler.endNonterminal("WindowClause", e0); + } + + function try_WindowClause() + { + shiftT(139); // 'for' + lookahead1W(139); // S^WS | '(:' | 'sliding' | 'tumbling' + switch (l1) + { + case 257: // 'tumbling' + try_TumblingWindowClause(); + break; + default: + try_SlidingWindowClause(); + } + } + + function parse_TumblingWindowClause() + { + eventHandler.startNonterminal("TumblingWindowClause", e0); + shift(257); // 'tumbling' + lookahead1W(88); // S^WS | '(:' | 'window' + shift(275); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + whitespace(); + parse_WindowStartCondition(); + if (l1 == 127 // 'end' + || l1 == 202) // 'only' + { + whitespace(); + parse_WindowEndCondition(); + } + eventHandler.endNonterminal("TumblingWindowClause", e0); + } + + function try_TumblingWindowClause() + { + shiftT(257); // 'tumbling' + lookahead1W(88); // S^WS | '(:' | 'window' + shiftT(275); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + try_WindowStartCondition(); + if (l1 == 127 // 'end' + || l1 == 202) // 'only' + { + try_WindowEndCondition(); + } + } + + function parse_SlidingWindowClause() + { + eventHandler.startNonterminal("SlidingWindowClause", e0); + shift(239); // 'sliding' + lookahead1W(88); // S^WS | '(:' | 'window' + shift(275); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + whitespace(); + parse_WindowStartCondition(); + whitespace(); + parse_WindowEndCondition(); + eventHandler.endNonterminal("SlidingWindowClause", e0); + } + + function try_SlidingWindowClause() + { + shiftT(239); // 'sliding' + lookahead1W(88); // S^WS | '(:' | 'window' + shiftT(275); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + try_WindowStartCondition(); + try_WindowEndCondition(); + } + + function parse_WindowStartCondition() + { + eventHandler.startNonterminal("WindowStartCondition", e0); + shift(242); // 'start' + lookahead1W(181); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + whitespace(); + parse_WindowVars(); + lookahead1W(86); // S^WS | '(:' | 'when' + shift(271); // 'when' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WindowStartCondition", e0); + } + + function try_WindowStartCondition() + { + shiftT(242); // 'start' + lookahead1W(181); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + try_WindowVars(); + lookahead1W(86); // S^WS | '(:' | 'when' + shiftT(271); // 'when' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_WindowEndCondition() + { + eventHandler.startNonterminal("WindowEndCondition", e0); + if (l1 == 202) // 'only' + { + shift(202); // 'only' + } + lookahead1W(53); // S^WS | '(:' | 'end' + shift(127); // 'end' + lookahead1W(181); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + whitespace(); + parse_WindowVars(); + lookahead1W(86); // S^WS | '(:' | 'when' + shift(271); // 'when' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WindowEndCondition", e0); + } + + function try_WindowEndCondition() + { + if (l1 == 202) // 'only' + { + shiftT(202); // 'only' + } + lookahead1W(53); // S^WS | '(:' | 'end' + shiftT(127); // 'end' + lookahead1W(181); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + try_WindowVars(); + lookahead1W(86); // S^WS | '(:' | 'when' + shiftT(271); // 'when' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_WindowVars() + { + eventHandler.startNonterminal("WindowVars", e0); + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_CurrentItem(); + } + lookahead1W(174); // S^WS | '(:' | 'at' | 'next' | 'previous' | 'when' + if (l1 == 82) // 'at' + { + whitespace(); + parse_PositionalVar(); + } + lookahead1W(163); // S^WS | '(:' | 'next' | 'previous' | 'when' + if (l1 == 219) // 'previous' + { + shift(219); // 'previous' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_PreviousItem(); + } + lookahead1W(131); // S^WS | '(:' | 'next' | 'when' + if (l1 == 190) // 'next' + { + shift(190); // 'next' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_NextItem(); + } + eventHandler.endNonterminal("WindowVars", e0); + } + + function try_WindowVars() + { + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_CurrentItem(); + } + lookahead1W(174); // S^WS | '(:' | 'at' | 'next' | 'previous' | 'when' + if (l1 == 82) // 'at' + { + try_PositionalVar(); + } + lookahead1W(163); // S^WS | '(:' | 'next' | 'previous' | 'when' + if (l1 == 219) // 'previous' + { + shiftT(219); // 'previous' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_PreviousItem(); + } + lookahead1W(131); // S^WS | '(:' | 'next' | 'when' + if (l1 == 190) // 'next' + { + shiftT(190); // 'next' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_NextItem(); + } + } + + function parse_CurrentItem() + { + eventHandler.startNonterminal("CurrentItem", e0); + parse_EQName(); + eventHandler.endNonterminal("CurrentItem", e0); + } + + function try_CurrentItem() + { + try_EQName(); + } + + function parse_PreviousItem() + { + eventHandler.startNonterminal("PreviousItem", e0); + parse_EQName(); + eventHandler.endNonterminal("PreviousItem", e0); + } + + function try_PreviousItem() + { + try_EQName(); + } + + function parse_NextItem() + { + eventHandler.startNonterminal("NextItem", e0); + parse_EQName(); + eventHandler.endNonterminal("NextItem", e0); + } + + function try_NextItem() + { + try_EQName(); + } + + function parse_CountClause() + { + eventHandler.startNonterminal("CountClause", e0); + shift(106); // 'count' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("CountClause", e0); + } + + function try_CountClause() + { + shiftT(106); // 'count' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + } + + function parse_WhereClause() + { + eventHandler.startNonterminal("WhereClause", e0); + shift(272); // 'where' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WhereClause", e0); + } + + function try_WhereClause() + { + shiftT(272); // 'where' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_GroupByClause() + { + eventHandler.startNonterminal("GroupByClause", e0); + shift(150); // 'group' + lookahead1W(37); // S^WS | '(:' | 'by' + shift(88); // 'by' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_GroupingSpecList(); + eventHandler.endNonterminal("GroupByClause", e0); + } + + function try_GroupByClause() + { + shiftT(150); // 'group' + lookahead1W(37); // S^WS | '(:' | 'by' + shiftT(88); // 'by' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_GroupingSpecList(); + } + + function parse_GroupingSpecList() + { + eventHandler.startNonterminal("GroupingSpecList", e0); + parse_GroupingSpec(); + for (;;) + { + lookahead1W(198); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + // 'stable' | 'where' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_GroupingSpec(); + } + eventHandler.endNonterminal("GroupingSpecList", e0); + } + + function try_GroupingSpecList() + { + try_GroupingSpec(); + for (;;) + { + lookahead1W(198); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + // 'stable' | 'where' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_GroupingSpec(); + } + } + + function parse_GroupingSpec() + { + eventHandler.startNonterminal("GroupingSpec", e0); + switch (l1) + { + case 31: // '$' + lookahead2W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + default: + lk = l1; + } + if (lk == 3103 // '$' EQName^Token + || lk == 36383 // '$' 'after' + || lk == 37407 // '$' 'allowing' + || lk == 37919 // '$' 'ancestor' + || lk == 38431 // '$' 'ancestor-or-self' + || lk == 38943 // '$' 'and' + || lk == 39967 // '$' 'append' + || lk == 40479 // '$' 'array' + || lk == 40991 // '$' 'as' + || lk == 41503 // '$' 'ascending' + || lk == 42015 // '$' 'at' + || lk == 42527 // '$' 'attribute' + || lk == 43039 // '$' 'base-uri' + || lk == 43551 // '$' 'before' + || lk == 44063 // '$' 'boundary-space' + || lk == 44575 // '$' 'break' + || lk == 45599 // '$' 'case' + || lk == 46111 // '$' 'cast' + || lk == 46623 // '$' 'castable' + || lk == 47135 // '$' 'catch' + || lk == 48159 // '$' 'child' + || lk == 48671 // '$' 'collation' + || lk == 49695 // '$' 'comment' + || lk == 50207 // '$' 'constraint' + || lk == 50719 // '$' 'construction' + || lk == 52255 // '$' 'context' + || lk == 52767 // '$' 'continue' + || lk == 53279 // '$' 'copy' + || lk == 53791 // '$' 'copy-namespaces' + || lk == 54303 // '$' 'count' + || lk == 54815 // '$' 'decimal-format' + || lk == 55839 // '$' 'declare' + || lk == 56351 // '$' 'default' + || lk == 56863 // '$' 'delete' + || lk == 57375 // '$' 'descendant' + || lk == 57887 // '$' 'descendant-or-self' + || lk == 58399 // '$' 'descending' + || lk == 60959 // '$' 'div' + || lk == 61471 // '$' 'document' + || lk == 61983 // '$' 'document-node' + || lk == 62495 // '$' 'element' + || lk == 63007 // '$' 'else' + || lk == 63519 // '$' 'empty' + || lk == 64031 // '$' 'empty-sequence' + || lk == 64543 // '$' 'encoding' + || lk == 65055 // '$' 'end' + || lk == 66079 // '$' 'eq' + || lk == 66591 // '$' 'every' + || lk == 67615 // '$' 'except' + || lk == 68127 // '$' 'exit' + || lk == 68639 // '$' 'external' + || lk == 69151 // '$' 'false' + || lk == 69663 // '$' 'first' + || lk == 70175 // '$' 'following' + || lk == 70687 // '$' 'following-sibling' + || lk == 71199 // '$' 'for' + || lk == 72735 // '$' 'from' + || lk == 73247 // '$' 'ft-option' + || lk == 75295 // '$' 'function' + || lk == 75807 // '$' 'ge' + || lk == 76831 // '$' 'group' + || lk == 77855 // '$' 'gt' + || lk == 78367 // '$' 'idiv' + || lk == 78879 // '$' 'if' + || lk == 79391 // '$' 'import' + || lk == 79903 // '$' 'in' + || lk == 80415 // '$' 'index' + || lk == 82463 // '$' 'insert' + || lk == 82975 // '$' 'instance' + || lk == 83487 // '$' 'integrity' + || lk == 83999 // '$' 'intersect' + || lk == 84511 // '$' 'into' + || lk == 85023 // '$' 'is' + || lk == 85535 // '$' 'item' + || lk == 86047 // '$' 'json' + || lk == 86559 // '$' 'json-item' + || lk == 87071 // '$' 'jsoniq' + || lk == 88607 // '$' 'last' + || lk == 89119 // '$' 'lax' + || lk == 89631 // '$' 'le' + || lk == 90655 // '$' 'let' + || lk == 91679 // '$' 'loop' + || lk == 92703 // '$' 'lt' + || lk == 93727 // '$' 'mod' + || lk == 94239 // '$' 'modify' + || lk == 94751 // '$' 'module' + || lk == 95775 // '$' 'namespace' + || lk == 96287 // '$' 'namespace-node' + || lk == 96799 // '$' 'ne' + || lk == 99359 // '$' 'node' + || lk == 99871 // '$' 'nodes' + || lk == 100895 // '$' 'null' + || lk == 101407 // '$' 'object' + || lk == 103455 // '$' 'only' + || lk == 103967 // '$' 'option' + || lk == 104479 // '$' 'or' + || lk == 104991 // '$' 'order' + || lk == 105503 // '$' 'ordered' + || lk == 106015 // '$' 'ordering' + || lk == 107551 // '$' 'parent' + || lk == 110623 // '$' 'preceding' + || lk == 111135 // '$' 'preceding-sibling' + || lk == 112671 // '$' 'processing-instruction' + || lk == 113695 // '$' 'rename' + || lk == 114207 // '$' 'replace' + || lk == 114719 // '$' 'return' + || lk == 115231 // '$' 'returning' + || lk == 115743 // '$' 'revalidation' + || lk == 116767 // '$' 'satisfies' + || lk == 117279 // '$' 'schema' + || lk == 117791 // '$' 'schema-attribute' + || lk == 118303 // '$' 'schema-element' + || lk == 118815 // '$' 'score' + || lk == 119327 // '$' 'select' + || lk == 119839 // '$' 'self' + || lk == 122399 // '$' 'sliding' + || lk == 122911 // '$' 'some' + || lk == 123423 // '$' 'stable' + || lk == 123935 // '$' 'start' + || lk == 125471 // '$' 'strict' + || lk == 126495 // '$' 'structured-item' + || lk == 127007 // '$' 'switch' + || lk == 127519 // '$' 'text' + || lk == 129567 // '$' 'to' + || lk == 130079 // '$' 'treat' + || lk == 130591 // '$' 'true' + || lk == 131103 // '$' 'try' + || lk == 131615 // '$' 'tumbling' + || lk == 132127 // '$' 'type' + || lk == 132639 // '$' 'typeswitch' + || lk == 133151 // '$' 'union' + || lk == 134175 // '$' 'unordered' + || lk == 134687 // '$' 'updating' + || lk == 136223 // '$' 'validate' + || lk == 136735 // '$' 'value' + || lk == 137247 // '$' 'variable' + || lk == 137759 // '$' 'version' + || lk == 139295 // '$' 'where' + || lk == 139807 // '$' 'while' + || lk == 141343) // '$' 'with' + { + lk = memoized(2, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_GroupingVariable(); + lookahead1W(205); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + // 'let' | 'order' | 'return' | 'stable' | 'where' + if (l1 == 53 // ':=' + || l1 == 80) // 'as' + { + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + if (l1 == 95) // 'collation' + { + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(2, e0, lk); + } + } + switch (lk) + { + case -1: + parse_GroupingVariable(); + lookahead1W(205); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + // 'let' | 'order' | 'return' | 'stable' | 'where' + if (l1 == 53 // ':=' + || l1 == 80) // 'as' + { + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + if (l1 == 95) // 'collation' + { + shift(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + break; + default: + parse_ExprSingle(); + } + eventHandler.endNonterminal("GroupingSpec", e0); + } + + function try_GroupingSpec() + { + switch (l1) + { + case 31: // '$' + lookahead2W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + default: + lk = l1; + } + if (lk == 3103 // '$' EQName^Token + || lk == 36383 // '$' 'after' + || lk == 37407 // '$' 'allowing' + || lk == 37919 // '$' 'ancestor' + || lk == 38431 // '$' 'ancestor-or-self' + || lk == 38943 // '$' 'and' + || lk == 39967 // '$' 'append' + || lk == 40479 // '$' 'array' + || lk == 40991 // '$' 'as' + || lk == 41503 // '$' 'ascending' + || lk == 42015 // '$' 'at' + || lk == 42527 // '$' 'attribute' + || lk == 43039 // '$' 'base-uri' + || lk == 43551 // '$' 'before' + || lk == 44063 // '$' 'boundary-space' + || lk == 44575 // '$' 'break' + || lk == 45599 // '$' 'case' + || lk == 46111 // '$' 'cast' + || lk == 46623 // '$' 'castable' + || lk == 47135 // '$' 'catch' + || lk == 48159 // '$' 'child' + || lk == 48671 // '$' 'collation' + || lk == 49695 // '$' 'comment' + || lk == 50207 // '$' 'constraint' + || lk == 50719 // '$' 'construction' + || lk == 52255 // '$' 'context' + || lk == 52767 // '$' 'continue' + || lk == 53279 // '$' 'copy' + || lk == 53791 // '$' 'copy-namespaces' + || lk == 54303 // '$' 'count' + || lk == 54815 // '$' 'decimal-format' + || lk == 55839 // '$' 'declare' + || lk == 56351 // '$' 'default' + || lk == 56863 // '$' 'delete' + || lk == 57375 // '$' 'descendant' + || lk == 57887 // '$' 'descendant-or-self' + || lk == 58399 // '$' 'descending' + || lk == 60959 // '$' 'div' + || lk == 61471 // '$' 'document' + || lk == 61983 // '$' 'document-node' + || lk == 62495 // '$' 'element' + || lk == 63007 // '$' 'else' + || lk == 63519 // '$' 'empty' + || lk == 64031 // '$' 'empty-sequence' + || lk == 64543 // '$' 'encoding' + || lk == 65055 // '$' 'end' + || lk == 66079 // '$' 'eq' + || lk == 66591 // '$' 'every' + || lk == 67615 // '$' 'except' + || lk == 68127 // '$' 'exit' + || lk == 68639 // '$' 'external' + || lk == 69151 // '$' 'false' + || lk == 69663 // '$' 'first' + || lk == 70175 // '$' 'following' + || lk == 70687 // '$' 'following-sibling' + || lk == 71199 // '$' 'for' + || lk == 72735 // '$' 'from' + || lk == 73247 // '$' 'ft-option' + || lk == 75295 // '$' 'function' + || lk == 75807 // '$' 'ge' + || lk == 76831 // '$' 'group' + || lk == 77855 // '$' 'gt' + || lk == 78367 // '$' 'idiv' + || lk == 78879 // '$' 'if' + || lk == 79391 // '$' 'import' + || lk == 79903 // '$' 'in' + || lk == 80415 // '$' 'index' + || lk == 82463 // '$' 'insert' + || lk == 82975 // '$' 'instance' + || lk == 83487 // '$' 'integrity' + || lk == 83999 // '$' 'intersect' + || lk == 84511 // '$' 'into' + || lk == 85023 // '$' 'is' + || lk == 85535 // '$' 'item' + || lk == 86047 // '$' 'json' + || lk == 86559 // '$' 'json-item' + || lk == 87071 // '$' 'jsoniq' + || lk == 88607 // '$' 'last' + || lk == 89119 // '$' 'lax' + || lk == 89631 // '$' 'le' + || lk == 90655 // '$' 'let' + || lk == 91679 // '$' 'loop' + || lk == 92703 // '$' 'lt' + || lk == 93727 // '$' 'mod' + || lk == 94239 // '$' 'modify' + || lk == 94751 // '$' 'module' + || lk == 95775 // '$' 'namespace' + || lk == 96287 // '$' 'namespace-node' + || lk == 96799 // '$' 'ne' + || lk == 99359 // '$' 'node' + || lk == 99871 // '$' 'nodes' + || lk == 100895 // '$' 'null' + || lk == 101407 // '$' 'object' + || lk == 103455 // '$' 'only' + || lk == 103967 // '$' 'option' + || lk == 104479 // '$' 'or' + || lk == 104991 // '$' 'order' + || lk == 105503 // '$' 'ordered' + || lk == 106015 // '$' 'ordering' + || lk == 107551 // '$' 'parent' + || lk == 110623 // '$' 'preceding' + || lk == 111135 // '$' 'preceding-sibling' + || lk == 112671 // '$' 'processing-instruction' + || lk == 113695 // '$' 'rename' + || lk == 114207 // '$' 'replace' + || lk == 114719 // '$' 'return' + || lk == 115231 // '$' 'returning' + || lk == 115743 // '$' 'revalidation' + || lk == 116767 // '$' 'satisfies' + || lk == 117279 // '$' 'schema' + || lk == 117791 // '$' 'schema-attribute' + || lk == 118303 // '$' 'schema-element' + || lk == 118815 // '$' 'score' + || lk == 119327 // '$' 'select' + || lk == 119839 // '$' 'self' + || lk == 122399 // '$' 'sliding' + || lk == 122911 // '$' 'some' + || lk == 123423 // '$' 'stable' + || lk == 123935 // '$' 'start' + || lk == 125471 // '$' 'strict' + || lk == 126495 // '$' 'structured-item' + || lk == 127007 // '$' 'switch' + || lk == 127519 // '$' 'text' + || lk == 129567 // '$' 'to' + || lk == 130079 // '$' 'treat' + || lk == 130591 // '$' 'true' + || lk == 131103 // '$' 'try' + || lk == 131615 // '$' 'tumbling' + || lk == 132127 // '$' 'type' + || lk == 132639 // '$' 'typeswitch' + || lk == 133151 // '$' 'union' + || lk == 134175 // '$' 'unordered' + || lk == 134687 // '$' 'updating' + || lk == 136223 // '$' 'validate' + || lk == 136735 // '$' 'value' + || lk == 137247 // '$' 'variable' + || lk == 137759 // '$' 'version' + || lk == 139295 // '$' 'where' + || lk == 139807 // '$' 'while' + || lk == 141343) // '$' 'with' + { + lk = memoized(2, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_GroupingVariable(); + lookahead1W(205); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + // 'let' | 'order' | 'return' | 'stable' | 'where' + if (l1 == 53 // ':=' + || l1 == 80) // 'as' + { + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + if (l1 == 95) // 'collation' + { + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + memoize(2, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(2, e0A, -2); + } + } + } + switch (lk) + { + case -1: + try_GroupingVariable(); + lookahead1W(205); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + // 'let' | 'order' | 'return' | 'stable' | 'where' + if (l1 == 53 // ':=' + || l1 == 80) // 'as' + { + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + if (l1 == 95) // 'collation' + { + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + break; + case -3: + break; + default: + try_ExprSingle(); + } + } + + function parse_GroupingVariable() + { + eventHandler.startNonterminal("GroupingVariable", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("GroupingVariable", e0); + } + + function try_GroupingVariable() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + } + + function parse_OrderByClause() + { + eventHandler.startNonterminal("OrderByClause", e0); + switch (l1) + { + case 205: // 'order' + shift(205); // 'order' + lookahead1W(37); // S^WS | '(:' | 'by' + shift(88); // 'by' + break; + default: + shift(241); // 'stable' + lookahead1W(70); // S^WS | '(:' | 'order' + shift(205); // 'order' + lookahead1W(37); // S^WS | '(:' | 'by' + shift(88); // 'by' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_OrderSpecList(); + eventHandler.endNonterminal("OrderByClause", e0); + } + + function try_OrderByClause() + { + switch (l1) + { + case 205: // 'order' + shiftT(205); // 'order' + lookahead1W(37); // S^WS | '(:' | 'by' + shiftT(88); // 'by' + break; + default: + shiftT(241); // 'stable' + lookahead1W(70); // S^WS | '(:' | 'order' + shiftT(205); // 'order' + lookahead1W(37); // S^WS | '(:' | 'by' + shiftT(88); // 'by' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_OrderSpecList(); + } + + function parse_OrderSpecList() + { + eventHandler.startNonterminal("OrderSpecList", e0); + parse_OrderSpec(); + for (;;) + { + lookahead1W(198); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + // 'stable' | 'where' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_OrderSpec(); + } + eventHandler.endNonterminal("OrderSpecList", e0); + } + + function try_OrderSpecList() + { + try_OrderSpec(); + for (;;) + { + lookahead1W(198); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + // 'stable' | 'where' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_OrderSpec(); + } + } + + function parse_OrderSpec() + { + eventHandler.startNonterminal("OrderSpec", e0); + parse_ExprSingle(); + whitespace(); + parse_OrderModifier(); + eventHandler.endNonterminal("OrderSpec", e0); + } + + function try_OrderSpec() + { + try_ExprSingle(); + try_OrderModifier(); + } + + function parse_OrderModifier() + { + eventHandler.startNonterminal("OrderModifier", e0); + if (l1 == 81 // 'ascending' + || l1 == 114) // 'descending' + { + switch (l1) + { + case 81: // 'ascending' + shift(81); // 'ascending' + break; + default: + shift(114); // 'descending' + } + } + lookahead1W(202); // S^WS | '(:' | ',' | 'collation' | 'count' | 'empty' | 'for' | 'group' | 'let' | + // 'order' | 'return' | 'stable' | 'where' + if (l1 == 124) // 'empty' + { + shift(124); // 'empty' + lookahead1W(125); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 149: // 'greatest' + shift(149); // 'greatest' + break; + default: + shift(176); // 'least' + } + } + lookahead1W(199); // S^WS | '(:' | ',' | 'collation' | 'count' | 'for' | 'group' | 'let' | 'order' | + // 'return' | 'stable' | 'where' + if (l1 == 95) // 'collation' + { + shift(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + eventHandler.endNonterminal("OrderModifier", e0); + } + + function try_OrderModifier() + { + if (l1 == 81 // 'ascending' + || l1 == 114) // 'descending' + { + switch (l1) + { + case 81: // 'ascending' + shiftT(81); // 'ascending' + break; + default: + shiftT(114); // 'descending' + } + } + lookahead1W(202); // S^WS | '(:' | ',' | 'collation' | 'count' | 'empty' | 'for' | 'group' | 'let' | + // 'order' | 'return' | 'stable' | 'where' + if (l1 == 124) // 'empty' + { + shiftT(124); // 'empty' + lookahead1W(125); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 149: // 'greatest' + shiftT(149); // 'greatest' + break; + default: + shiftT(176); // 'least' + } + } + lookahead1W(199); // S^WS | '(:' | ',' | 'collation' | 'count' | 'for' | 'group' | 'let' | 'order' | + // 'return' | 'stable' | 'where' + if (l1 == 95) // 'collation' + { + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + } + + function parse_ReturnClause() + { + eventHandler.startNonterminal("ReturnClause", e0); + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ReturnClause", e0); + } + + function try_ReturnClause() + { + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_QuantifiedExpr() + { + eventHandler.startNonterminal("QuantifiedExpr", e0); + switch (l1) + { + case 240: // 'some' + shift(240); // 'some' + break; + default: + shift(130); // 'every' + } + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_QuantifiedVarDecl(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_QuantifiedVarDecl(); + } + shift(228); // 'satisfies' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("QuantifiedExpr", e0); + } + + function try_QuantifiedExpr() + { + switch (l1) + { + case 240: // 'some' + shiftT(240); // 'some' + break; + default: + shiftT(130); // 'every' + } + lookahead1W(21); // S^WS | '$' | '(:' + try_QuantifiedVarDecl(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_QuantifiedVarDecl(); + } + shiftT(228); // 'satisfies' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_QuantifiedVarDecl() + { + eventHandler.startNonterminal("QuantifiedVarDecl", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("QuantifiedVarDecl", e0); + } + + function try_QuantifiedVarDecl() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_SwitchExpr() + { + eventHandler.startNonterminal("SwitchExpr", e0); + shift(248); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + whitespace(); + parse_SwitchCaseClause(); + if (l1 != 89) // 'case' + { + break; + } + } + shift(110); // 'default' + lookahead1W(73); // S^WS | '(:' | 'return' + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchExpr", e0); + } + + function try_SwitchExpr() + { + shiftT(248); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + try_SwitchCaseClause(); + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(110); // 'default' + lookahead1W(73); // S^WS | '(:' | 'return' + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_SwitchCaseClause() + { + eventHandler.startNonterminal("SwitchCaseClause", e0); + for (;;) + { + shift(89); // 'case' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_SwitchCaseOperand(); + if (l1 != 89) // 'case' + { + break; + } + } + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchCaseClause", e0); + } + + function try_SwitchCaseClause() + { + for (;;) + { + shiftT(89); // 'case' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_SwitchCaseOperand(); + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_SwitchCaseOperand() + { + eventHandler.startNonterminal("SwitchCaseOperand", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchCaseOperand", e0); + } + + function try_SwitchCaseOperand() + { + try_ExprSingle(); + } + + function parse_TypeswitchExpr() + { + eventHandler.startNonterminal("TypeswitchExpr", e0); + shift(259); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + whitespace(); + parse_CaseClause(); + if (l1 != 89) // 'case' + { + break; + } + } + shift(110); // 'default' + lookahead1W(99); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + } + lookahead1W(73); // S^WS | '(:' | 'return' + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TypeswitchExpr", e0); + } + + function try_TypeswitchExpr() + { + shiftT(259); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + try_CaseClause(); + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(110); // 'default' + lookahead1W(99); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + } + lookahead1W(73); // S^WS | '(:' | 'return' + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_CaseClause() + { + eventHandler.startNonterminal("CaseClause", e0); + shift(89); // 'case' + lookahead1W(257); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + } + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceTypeUnion(); + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("CaseClause", e0); + } + + function try_CaseClause() + { + shiftT(89); // 'case' + lookahead1W(257); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + } + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceTypeUnion(); + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_SequenceTypeUnion() + { + eventHandler.startNonterminal("SequenceTypeUnion", e0); + parse_SequenceType(); + for (;;) + { + lookahead1W(138); // S^WS | '(:' | 'return' | '|' + if (l1 != 284) // '|' + { + break; + } + shift(284); // '|' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("SequenceTypeUnion", e0); + } + + function try_SequenceTypeUnion() + { + try_SequenceType(); + for (;;) + { + lookahead1W(138); // S^WS | '(:' | 'return' | '|' + if (l1 != 284) // '|' + { + break; + } + shiftT(284); // '|' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceType(); + } + } + + function parse_IfExpr() + { + eventHandler.startNonterminal("IfExpr", e0); + shift(154); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(38); // ')' + lookahead1W(80); // S^WS | '(:' | 'then' + shift(250); // 'then' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(123); // 'else' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("IfExpr", e0); + } + + function try_IfExpr() + { + shiftT(154); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(38); // ')' + lookahead1W(80); // S^WS | '(:' | 'then' + shiftT(250); // 'then' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + shiftT(123); // 'else' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_TryCatchExpr() + { + eventHandler.startNonterminal("TryCatchExpr", e0); + parse_TryClause(); + for (;;) + { + lookahead1W(39); // S^WS | '(:' | 'catch' + whitespace(); + parse_CatchClause(); + lookahead1W(207); // S^WS | EOF | '(:' | ')' | ',' | ':' | ';' | ']' | 'after' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'catch' | 'collation' | 'count' | 'default' | + // 'descending' | 'else' | 'empty' | 'end' | 'for' | 'group' | 'into' | 'let' | + // 'modify' | 'only' | 'order' | 'return' | 'satisfies' | 'stable' | 'start' | + // 'where' | 'with' | '|}' | '}' + if (l1 != 92) // 'catch' + { + break; + } + } + eventHandler.endNonterminal("TryCatchExpr", e0); + } + + function try_TryCatchExpr() + { + try_TryClause(); + for (;;) + { + lookahead1W(39); // S^WS | '(:' | 'catch' + try_CatchClause(); + lookahead1W(207); // S^WS | EOF | '(:' | ')' | ',' | ':' | ';' | ']' | 'after' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'catch' | 'collation' | 'count' | 'default' | + // 'descending' | 'else' | 'empty' | 'end' | 'for' | 'group' | 'into' | 'let' | + // 'modify' | 'only' | 'order' | 'return' | 'satisfies' | 'stable' | 'start' | + // 'where' | 'with' | '|}' | '}' + if (l1 != 92) // 'catch' + { + break; + } + } + } + + function parse_TryClause() + { + eventHandler.startNonterminal("TryClause", e0); + shift(256); // 'try' + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_TryTargetExpr(); + shift(287); // '}' + eventHandler.endNonterminal("TryClause", e0); + } + + function try_TryClause() + { + shiftT(256); // 'try' + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_TryTargetExpr(); + shiftT(287); // '}' + } + + function parse_TryTargetExpr() + { + eventHandler.startNonterminal("TryTargetExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("TryTargetExpr", e0); + } + + function try_TryTargetExpr() + { + try_Expr(); + } + + function parse_CatchClause() + { + eventHandler.startNonterminal("CatchClause", e0); + shift(92); // 'catch' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_CatchErrorList(); + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("CatchClause", e0); + } + + function try_CatchClause() + { + shiftT(92); // 'catch' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_CatchErrorList(); + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + } + + function parse_CatchErrorList() + { + eventHandler.startNonterminal("CatchErrorList", e0); + parse_NameTest(); + for (;;) + { + lookahead1W(140); // S^WS | '(:' | '{' | '|' + if (l1 != 284) // '|' + { + break; + } + shift(284); // '|' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_NameTest(); + } + eventHandler.endNonterminal("CatchErrorList", e0); + } + + function try_CatchErrorList() + { + try_NameTest(); + for (;;) + { + lookahead1W(140); // S^WS | '(:' | '{' | '|' + if (l1 != 284) // '|' + { + break; + } + shiftT(284); // '|' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_NameTest(); + } + } + + function parse_OrExpr() + { + eventHandler.startNonterminal("OrExpr", e0); + parse_AndExpr(); + for (;;) + { + if (l1 != 204) // 'or' + { + break; + } + shift(204); // 'or' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_AndExpr(); + } + eventHandler.endNonterminal("OrExpr", e0); + } + + function try_OrExpr() + { + try_AndExpr(); + for (;;) + { + if (l1 != 204) // 'or' + { + break; + } + shiftT(204); // 'or' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_AndExpr(); + } + } + + function parse_AndExpr() + { + eventHandler.startNonterminal("AndExpr", e0); + parse_NotExpr(); + for (;;) + { + if (l1 != 76) // 'and' + { + break; + } + shift(76); // 'and' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_NotExpr(); + } + eventHandler.endNonterminal("AndExpr", e0); + } + + function try_AndExpr() + { + try_NotExpr(); + for (;;) + { + if (l1 != 76) // 'and' + { + break; + } + shiftT(76); // 'and' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_NotExpr(); + } + } + + function parse_NotExpr() + { + eventHandler.startNonterminal("NotExpr", e0); + if (l1 == 196) // 'not' + { + shift(196); // 'not' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_ComparisonExpr(); + eventHandler.endNonterminal("NotExpr", e0); + } + + function try_NotExpr() + { + if (l1 == 196) // 'not' + { + shiftT(196); // 'not' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_ComparisonExpr(); + } + + function parse_ComparisonExpr() + { + eventHandler.startNonterminal("ComparisonExpr", e0); + parse_FTContainsExpr(); + if (l1 == 27 // '!=' + || l1 == 55 // '<' + || l1 == 58 // '<<' + || l1 == 59 // '<=' + || l1 == 61 // '=' + || l1 == 62 // '>' + || l1 == 63 // '>=' + || l1 == 64 // '>>' + || l1 == 129 // 'eq' + || l1 == 148 // 'ge' + || l1 == 152 // 'gt' + || l1 == 166 // 'is' + || l1 == 175 // 'le' + || l1 == 181 // 'lt' + || l1 == 189) // 'ne' + { + switch (l1) + { + case 129: // 'eq' + case 148: // 'ge' + case 152: // 'gt' + case 175: // 'le' + case 181: // 'lt' + case 189: // 'ne' + whitespace(); + parse_ValueComp(); + break; + case 58: // '<<' + case 64: // '>>' + case 166: // 'is' + whitespace(); + parse_NodeComp(); + break; + default: + whitespace(); + parse_GeneralComp(); + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_FTContainsExpr(); + } + eventHandler.endNonterminal("ComparisonExpr", e0); + } + + function try_ComparisonExpr() + { + try_FTContainsExpr(); + if (l1 == 27 // '!=' + || l1 == 55 // '<' + || l1 == 58 // '<<' + || l1 == 59 // '<=' + || l1 == 61 // '=' + || l1 == 62 // '>' + || l1 == 63 // '>=' + || l1 == 64 // '>>' + || l1 == 129 // 'eq' + || l1 == 148 // 'ge' + || l1 == 152 // 'gt' + || l1 == 166 // 'is' + || l1 == 175 // 'le' + || l1 == 181 // 'lt' + || l1 == 189) // 'ne' + { + switch (l1) + { + case 129: // 'eq' + case 148: // 'ge' + case 152: // 'gt' + case 175: // 'le' + case 181: // 'lt' + case 189: // 'ne' + try_ValueComp(); + break; + case 58: // '<<' + case 64: // '>>' + case 166: // 'is' + try_NodeComp(); + break; + default: + try_GeneralComp(); + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_FTContainsExpr(); + } + } + + function parse_FTContainsExpr() + { + eventHandler.startNonterminal("FTContainsExpr", e0); + parse_StringConcatExpr(); + if (l1 == 100) // 'contains' + { + shift(100); // 'contains' + lookahead1W(79); // S^WS | '(:' | 'text' + shift(249); // 'text' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTSelection(); + if (l1 == 277) // 'without' + { + whitespace(); + parse_FTIgnoreOption(); + } + } + eventHandler.endNonterminal("FTContainsExpr", e0); + } + + function try_FTContainsExpr() + { + try_StringConcatExpr(); + if (l1 == 100) // 'contains' + { + shiftT(100); // 'contains' + lookahead1W(79); // S^WS | '(:' | 'text' + shiftT(249); // 'text' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTSelection(); + if (l1 == 277) // 'without' + { + try_FTIgnoreOption(); + } + } + } + + function parse_StringConcatExpr() + { + eventHandler.startNonterminal("StringConcatExpr", e0); + parse_RangeExpr(); + for (;;) + { + if (l1 != 285) // '||' + { + break; + } + shift(285); // '||' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_RangeExpr(); + } + eventHandler.endNonterminal("StringConcatExpr", e0); + } + + function try_StringConcatExpr() + { + try_RangeExpr(); + for (;;) + { + if (l1 != 285) // '||' + { + break; + } + shiftT(285); // '||' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_RangeExpr(); + } + } + + function parse_RangeExpr() + { + eventHandler.startNonterminal("RangeExpr", e0); + parse_AdditiveExpr(); + if (l1 == 253) // 'to' + { + shift(253); // 'to' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + } + eventHandler.endNonterminal("RangeExpr", e0); + } + + function try_RangeExpr() + { + try_AdditiveExpr(); + if (l1 == 253) // 'to' + { + shiftT(253); // 'to' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_AdditiveExpr(); + } + } + + function parse_AdditiveExpr() + { + eventHandler.startNonterminal("AdditiveExpr", e0); + parse_MultiplicativeExpr(); + for (;;) + { + if (l1 != 41 // '+' + && l1 != 43) // '-' + { + break; + } + switch (l1) + { + case 41: // '+' + shift(41); // '+' + break; + default: + shift(43); // '-' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_MultiplicativeExpr(); + } + eventHandler.endNonterminal("AdditiveExpr", e0); + } + + function try_AdditiveExpr() + { + try_MultiplicativeExpr(); + for (;;) + { + if (l1 != 41 // '+' + && l1 != 43) // '-' + { + break; + } + switch (l1) + { + case 41: // '+' + shiftT(41); // '+' + break; + default: + shiftT(43); // '-' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_MultiplicativeExpr(); + } + } + + function parse_MultiplicativeExpr() + { + eventHandler.startNonterminal("MultiplicativeExpr", e0); + parse_UnionExpr(); + for (;;) + { + if (l1 != 39 // '*' + && l1 != 119 // 'div' + && l1 != 153 // 'idiv' + && l1 != 183) // 'mod' + { + break; + } + switch (l1) + { + case 39: // '*' + shift(39); // '*' + break; + case 119: // 'div' + shift(119); // 'div' + break; + case 153: // 'idiv' + shift(153); // 'idiv' + break; + default: + shift(183); // 'mod' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_UnionExpr(); + } + eventHandler.endNonterminal("MultiplicativeExpr", e0); + } + + function try_MultiplicativeExpr() + { + try_UnionExpr(); + for (;;) + { + if (l1 != 39 // '*' + && l1 != 119 // 'div' + && l1 != 153 // 'idiv' + && l1 != 183) // 'mod' + { + break; + } + switch (l1) + { + case 39: // '*' + shiftT(39); // '*' + break; + case 119: // 'div' + shiftT(119); // 'div' + break; + case 153: // 'idiv' + shiftT(153); // 'idiv' + break; + default: + shiftT(183); // 'mod' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_UnionExpr(); + } + } + + function parse_UnionExpr() + { + eventHandler.startNonterminal("UnionExpr", e0); + parse_IntersectExceptExpr(); + for (;;) + { + if (l1 != 260 // 'union' + && l1 != 284) // '|' + { + break; + } + switch (l1) + { + case 260: // 'union' + shift(260); // 'union' + break; + default: + shift(284); // '|' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_IntersectExceptExpr(); + } + eventHandler.endNonterminal("UnionExpr", e0); + } + + function try_UnionExpr() + { + try_IntersectExceptExpr(); + for (;;) + { + if (l1 != 260 // 'union' + && l1 != 284) // '|' + { + break; + } + switch (l1) + { + case 260: // 'union' + shiftT(260); // 'union' + break; + default: + shiftT(284); // '|' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_IntersectExceptExpr(); + } + } + + function parse_IntersectExceptExpr() + { + eventHandler.startNonterminal("IntersectExceptExpr", e0); + parse_InstanceofExpr(); + for (;;) + { + lookahead1W(221); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'intersect' | 'into' | 'is' | 'le' | 'let' | + // 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | + // 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 132 // 'except' + && l1 != 164) // 'intersect' + { + break; + } + switch (l1) + { + case 164: // 'intersect' + shift(164); // 'intersect' + break; + default: + shift(132); // 'except' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_InstanceofExpr(); + } + eventHandler.endNonterminal("IntersectExceptExpr", e0); + } + + function try_IntersectExceptExpr() + { + try_InstanceofExpr(); + for (;;) + { + lookahead1W(221); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'intersect' | 'into' | 'is' | 'le' | 'let' | + // 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | + // 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 132 // 'except' + && l1 != 164) // 'intersect' + { + break; + } + switch (l1) + { + case 164: // 'intersect' + shiftT(164); // 'intersect' + break; + default: + shiftT(132); // 'except' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_InstanceofExpr(); + } + } + + function parse_InstanceofExpr() + { + eventHandler.startNonterminal("InstanceofExpr", e0); + parse_TreatExpr(); + lookahead1W(222); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 == 162) // 'instance' + { + shift(162); // 'instance' + lookahead1W(67); // S^WS | '(:' | 'of' + shift(200); // 'of' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("InstanceofExpr", e0); + } + + function try_InstanceofExpr() + { + try_TreatExpr(); + lookahead1W(222); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 == 162) // 'instance' + { + shiftT(162); // 'instance' + lookahead1W(67); // S^WS | '(:' | 'of' + shiftT(200); // 'of' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceType(); + } + } + + function parse_TreatExpr() + { + eventHandler.startNonterminal("TreatExpr", e0); + parse_CastableExpr(); + lookahead1W(223); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + if (l1 == 254) // 'treat' + { + shift(254); // 'treat' + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("TreatExpr", e0); + } + + function try_TreatExpr() + { + try_CastableExpr(); + lookahead1W(223); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + if (l1 == 254) // 'treat' + { + shiftT(254); // 'treat' + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceType(); + } + } + + function parse_CastableExpr() + { + eventHandler.startNonterminal("CastableExpr", e0); + parse_CastExpr(); + lookahead1W(224); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'castable' | 'collation' | 'contains' | 'count' | + // 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | + // 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + if (l1 == 91) // 'castable' + { + shift(91); // 'castable' + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SingleType(); + } + eventHandler.endNonterminal("CastableExpr", e0); + } + + function try_CastableExpr() + { + try_CastExpr(); + lookahead1W(224); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'castable' | 'collation' | 'contains' | 'count' | + // 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | + // 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + if (l1 == 91) // 'castable' + { + shiftT(91); // 'castable' + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SingleType(); + } + } + + function parse_CastExpr() + { + eventHandler.startNonterminal("CastExpr", e0); + parse_UnaryExpr(); + lookahead1W(226); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'cast' | 'castable' | 'collation' | 'contains' | + // 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | + // 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | + // 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | + // 'order' | 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | + // 'start' | 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | + // '||' | '|}' | '}' + if (l1 == 90) // 'cast' + { + shift(90); // 'cast' + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SingleType(); + } + eventHandler.endNonterminal("CastExpr", e0); + } + + function try_CastExpr() + { + try_UnaryExpr(); + lookahead1W(226); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'cast' | 'castable' | 'collation' | 'contains' | + // 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | + // 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | + // 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | + // 'order' | 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | + // 'start' | 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | + // '||' | '|}' | '}' + if (l1 == 90) // 'cast' + { + shiftT(90); // 'cast' + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SingleType(); + } + } + + function parse_UnaryExpr() + { + eventHandler.startNonterminal("UnaryExpr", e0); + for (;;) + { + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + if (l1 != 41 // '+' + && l1 != 43) // '-' + { + break; + } + switch (l1) + { + case 43: // '-' + shift(43); // '-' + break; + default: + shift(41); // '+' + } + } + whitespace(); + parse_ValueExpr(); + eventHandler.endNonterminal("UnaryExpr", e0); + } + + function try_UnaryExpr() + { + for (;;) + { + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + if (l1 != 41 // '+' + && l1 != 43) // '-' + { + break; + } + switch (l1) + { + case 43: // '-' + shiftT(43); // '-' + break; + default: + shiftT(41); // '+' + } + } + try_ValueExpr(); + } + + function parse_ValueExpr() + { + eventHandler.startNonterminal("ValueExpr", e0); + switch (l1) + { + case 266: // 'validate' + lookahead2W(188); // S^WS | '#' | '(' | '(:' | 'lax' | 'strict' | 'type' | '{' + break; + default: + lk = l1; + } + switch (lk) + { + case 89354: // 'validate' 'lax' + case 125706: // 'validate' 'strict' + case 132362: // 'validate' 'type' + case 144138: // 'validate' '{' + parse_ValidateExpr(); + break; + case 36: // '(#' + parse_ExtensionExpr(); + break; + default: + parse_SimpleMapExpr(); + } + eventHandler.endNonterminal("ValueExpr", e0); + } + + function try_ValueExpr() + { + switch (l1) + { + case 266: // 'validate' + lookahead2W(188); // S^WS | '#' | '(' | '(:' | 'lax' | 'strict' | 'type' | '{' + break; + default: + lk = l1; + } + switch (lk) + { + case 89354: // 'validate' 'lax' + case 125706: // 'validate' 'strict' + case 132362: // 'validate' 'type' + case 144138: // 'validate' '{' + try_ValidateExpr(); + break; + case 36: // '(#' + try_ExtensionExpr(); + break; + default: + try_SimpleMapExpr(); + } + } + + function parse_SimpleMapExpr() + { + eventHandler.startNonterminal("SimpleMapExpr", e0); + parse_PathExpr(); + for (;;) + { + if (l1 != 26) // '!' + { + break; + } + shift(26); // '!' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '/' | '//' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_PathExpr(); + } + eventHandler.endNonterminal("SimpleMapExpr", e0); + } + + function try_SimpleMapExpr() + { + try_PathExpr(); + for (;;) + { + if (l1 != 26) // '!' + { + break; + } + shiftT(26); // '!' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '/' | '//' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + try_PathExpr(); + } + } + + function parse_GeneralComp() + { + eventHandler.startNonterminal("GeneralComp", e0); + switch (l1) + { + case 61: // '=' + shift(61); // '=' + break; + case 27: // '!=' + shift(27); // '!=' + break; + case 55: // '<' + shift(55); // '<' + break; + case 59: // '<=' + shift(59); // '<=' + break; + case 62: // '>' + shift(62); // '>' + break; + default: + shift(63); // '>=' + } + eventHandler.endNonterminal("GeneralComp", e0); + } + + function try_GeneralComp() + { + switch (l1) + { + case 61: // '=' + shiftT(61); // '=' + break; + case 27: // '!=' + shiftT(27); // '!=' + break; + case 55: // '<' + shiftT(55); // '<' + break; + case 59: // '<=' + shiftT(59); // '<=' + break; + case 62: // '>' + shiftT(62); // '>' + break; + default: + shiftT(63); // '>=' + } + } + + function parse_ValueComp() + { + eventHandler.startNonterminal("ValueComp", e0); + switch (l1) + { + case 129: // 'eq' + shift(129); // 'eq' + break; + case 189: // 'ne' + shift(189); // 'ne' + break; + case 181: // 'lt' + shift(181); // 'lt' + break; + case 175: // 'le' + shift(175); // 'le' + break; + case 152: // 'gt' + shift(152); // 'gt' + break; + default: + shift(148); // 'ge' + } + eventHandler.endNonterminal("ValueComp", e0); + } + + function try_ValueComp() + { + switch (l1) + { + case 129: // 'eq' + shiftT(129); // 'eq' + break; + case 189: // 'ne' + shiftT(189); // 'ne' + break; + case 181: // 'lt' + shiftT(181); // 'lt' + break; + case 175: // 'le' + shiftT(175); // 'le' + break; + case 152: // 'gt' + shiftT(152); // 'gt' + break; + default: + shiftT(148); // 'ge' + } + } + + function parse_NodeComp() + { + eventHandler.startNonterminal("NodeComp", e0); + switch (l1) + { + case 166: // 'is' + shift(166); // 'is' + break; + case 58: // '<<' + shift(58); // '<<' + break; + default: + shift(64); // '>>' + } + eventHandler.endNonterminal("NodeComp", e0); + } + + function try_NodeComp() + { + switch (l1) + { + case 166: // 'is' + shiftT(166); // 'is' + break; + case 58: // '<<' + shiftT(58); // '<<' + break; + default: + shiftT(64); // '>>' + } + } + + function parse_ValidateExpr() + { + eventHandler.startNonterminal("ValidateExpr", e0); + shift(266); // 'validate' + lookahead1W(175); // S^WS | '(:' | 'lax' | 'strict' | 'type' | '{' + if (l1 != 281) // '{' + { + switch (l1) + { + case 258: // 'type' + shift(258); // 'type' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_TypeName(); + break; + default: + whitespace(); + parse_ValidationMode(); + } + } + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("ValidateExpr", e0); + } + + function try_ValidateExpr() + { + shiftT(266); // 'validate' + lookahead1W(175); // S^WS | '(:' | 'lax' | 'strict' | 'type' | '{' + if (l1 != 281) // '{' + { + switch (l1) + { + case 258: // 'type' + shiftT(258); // 'type' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_TypeName(); + break; + default: + try_ValidationMode(); + } + } + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + } + + function parse_ValidationMode() + { + eventHandler.startNonterminal("ValidationMode", e0); + switch (l1) + { + case 174: // 'lax' + shift(174); // 'lax' + break; + default: + shift(245); // 'strict' + } + eventHandler.endNonterminal("ValidationMode", e0); + } + + function try_ValidationMode() + { + switch (l1) + { + case 174: // 'lax' + shiftT(174); // 'lax' + break; + default: + shiftT(245); // 'strict' + } + } + + function parse_ExtensionExpr() + { + eventHandler.startNonterminal("ExtensionExpr", e0); + for (;;) + { + whitespace(); + parse_Pragma(); + lookahead1W(104); // S^WS | '(#' | '(:' | '{' + if (l1 != 36) // '(#' + { + break; + } + } + shift(281); // '{' + lookahead1W(274); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + if (l1 != 287) // '}' + { + whitespace(); + parse_Expr(); + } + shift(287); // '}' + eventHandler.endNonterminal("ExtensionExpr", e0); + } + + function try_ExtensionExpr() + { + for (;;) + { + try_Pragma(); + lookahead1W(104); // S^WS | '(#' | '(:' | '{' + if (l1 != 36) // '(#' + { + break; + } + } + shiftT(281); // '{' + lookahead1W(274); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + if (l1 != 287) // '}' + { + try_Expr(); + } + shiftT(287); // '}' + } + + function parse_Pragma() + { + eventHandler.startNonterminal("Pragma", e0); + shift(36); // '(#' + lookahead1(242); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 == 21) // S + { + shift(21); // S + } + parse_EQName(); + lookahead1(10); // S | '#)' + if (l1 == 21) // S + { + shift(21); // S + lookahead1(0); // PragmaContents + shift(1); // PragmaContents + } + lookahead1(5); // '#)' + shift(30); // '#)' + eventHandler.endNonterminal("Pragma", e0); + } + + function try_Pragma() + { + shiftT(36); // '(#' + lookahead1(242); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 == 21) // S + { + shiftT(21); // S + } + try_EQName(); + lookahead1(10); // S | '#)' + if (l1 == 21) // S + { + shiftT(21); // S + lookahead1(0); // PragmaContents + shiftT(1); // PragmaContents + } + lookahead1(5); // '#)' + shiftT(30); // '#)' + } + + function parse_PathExpr() + { + eventHandler.startNonterminal("PathExpr", e0); + switch (l1) + { + case 47: // '/' + shift(47); // '/' + lookahead1W(288); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '!' | '!=' | '$' | '$$' | '%' | '(' | '(:' | ')' | '*' | '+' | ',' | + // '-' | ':' | ';' | '<' | '<!--' | '<<' | '<=' | '<?' | '=' | '>' | '>=' | '>>' | + // '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + // 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | 'castable' | + // 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | + // 'contains' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'paragraphs' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sentences' | 'sliding' | 'some' | 'stable' | + // 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'times' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | 'words' | '{' | '{|' | '|' | '||' | '|}' | '}' + switch (l1) + { + case 25: // EOF + case 26: // '!' + case 27: // '!=' + case 38: // ')' + case 39: // '*' + case 41: // '+' + case 42: // ',' + case 43: // '-' + case 50: // ':' + case 54: // ';' + case 58: // '<<' + case 59: // '<=' + case 61: // '=' + case 62: // '>' + case 63: // '>=' + case 64: // '>>' + case 70: // ']' + case 88: // 'by' + case 100: // 'contains' + case 209: // 'paragraphs' + case 237: // 'sentences' + case 252: // 'times' + case 279: // 'words' + case 284: // '|' + case 285: // '||' + case 286: // '|}' + case 287: // '}' + break; + default: + whitespace(); + parse_RelativePathExpr(); + } + break; + case 48: // '//' + shift(48); // '//' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_RelativePathExpr(); + break; + default: + parse_RelativePathExpr(); + } + eventHandler.endNonterminal("PathExpr", e0); + } + + function try_PathExpr() + { + switch (l1) + { + case 47: // '/' + shiftT(47); // '/' + lookahead1W(288); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '!' | '!=' | '$' | '$$' | '%' | '(' | '(:' | ')' | '*' | '+' | ',' | + // '-' | ':' | ';' | '<' | '<!--' | '<<' | '<=' | '<?' | '=' | '>' | '>=' | '>>' | + // '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + // 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | 'castable' | + // 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | + // 'contains' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'paragraphs' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sentences' | 'sliding' | 'some' | 'stable' | + // 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'times' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | 'words' | '{' | '{|' | '|' | '||' | '|}' | '}' + switch (l1) + { + case 25: // EOF + case 26: // '!' + case 27: // '!=' + case 38: // ')' + case 39: // '*' + case 41: // '+' + case 42: // ',' + case 43: // '-' + case 50: // ':' + case 54: // ';' + case 58: // '<<' + case 59: // '<=' + case 61: // '=' + case 62: // '>' + case 63: // '>=' + case 64: // '>>' + case 70: // ']' + case 88: // 'by' + case 100: // 'contains' + case 209: // 'paragraphs' + case 237: // 'sentences' + case 252: // 'times' + case 279: // 'words' + case 284: // '|' + case 285: // '||' + case 286: // '|}' + case 287: // '}' + break; + default: + try_RelativePathExpr(); + } + break; + case 48: // '//' + shiftT(48); // '//' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + try_RelativePathExpr(); + break; + default: + try_RelativePathExpr(); + } + } + + function parse_RelativePathExpr() + { + eventHandler.startNonterminal("RelativePathExpr", e0); + parse_PostfixExpr(); + for (;;) + { + switch (l1) + { + case 26: // '!' + lookahead2W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '$$' | '%' | '(' | '(:' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 27 // '!=' + && lk != 38 // ')' + && lk != 39 // '*' + && lk != 41 // '+' + && lk != 42 // ',' + && lk != 43 // '-' + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 50 // ':' + && lk != 54 // ';' + && lk != 55 // '<' + && lk != 58 // '<<' + && lk != 59 // '<=' + && lk != 61 // '=' + && lk != 62 // '>' + && lk != 63 // '>=' + && lk != 64 // '>>' + && lk != 70 // ']' + && lk != 71 // 'after' + && lk != 76 // 'and' + && lk != 80 // 'as' + && lk != 81 // 'ascending' + && lk != 82 // 'at' + && lk != 85 // 'before' + && lk != 88 // 'by' + && lk != 89 // 'case' + && lk != 90 // 'cast' + && lk != 91 // 'castable' + && lk != 95 // 'collation' + && lk != 100 // 'contains' + && lk != 106 // 'count' + && lk != 110 // 'default' + && lk != 114 // 'descending' + && lk != 119 // 'div' + && lk != 123 // 'else' + && lk != 124 // 'empty' + && lk != 127 // 'end' + && lk != 129 // 'eq' + && lk != 132 // 'except' + && lk != 139 // 'for' + && lk != 148 // 'ge' + && lk != 150 // 'group' + && lk != 152 // 'gt' + && lk != 153 // 'idiv' + && lk != 162 // 'instance' + && lk != 164 // 'intersect' + && lk != 165 // 'into' + && lk != 166 // 'is' + && lk != 175 // 'le' + && lk != 177 // 'let' + && lk != 181 // 'lt' + && lk != 183 // 'mod' + && lk != 184 // 'modify' + && lk != 189 // 'ne' + && lk != 202 // 'only' + && lk != 204 // 'or' + && lk != 205 // 'order' + && lk != 209 // 'paragraphs' + && lk != 224 // 'return' + && lk != 228 // 'satisfies' + && lk != 237 // 'sentences' + && lk != 241 // 'stable' + && lk != 242 // 'start' + && lk != 252 // 'times' + && lk != 253 // 'to' + && lk != 254 // 'treat' + && lk != 260 // 'union' + && lk != 272 // 'where' + && lk != 276 // 'with' + && lk != 279 // 'words' + && lk != 284 // '|' + && lk != 285 // '||' + && lk != 286 // '|}' + && lk != 287 // '}' + && lk != 2586 // '!' Wildcard + && lk != 23578 // '!' '..' + && lk != 24090 // '!' '/' + && lk != 24602 // '!' '//' + && lk != 34330) // '!' '@' + { + lk = memoized(3, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + switch (l1) + { + case 47: // '/' + shiftT(47); // '/' + break; + case 48: // '//' + shiftT(48); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(263); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '$$' | '%' | '(' | '(:' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_StepExpr(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(3, e0, lk); + } + } + if (lk != -1 + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 2586 // '!' Wildcard + && lk != 23578 // '!' '..' + && lk != 34330) // '!' '@' + { + break; + } + switch (l1) + { + case 47: // '/' + shift(47); // '/' + break; + case 48: // '//' + shift(48); // '//' + break; + default: + shift(26); // '!' + } + lookahead1W(263); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '$$' | '%' | '(' | '(:' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_StepExpr(); + } + eventHandler.endNonterminal("RelativePathExpr", e0); + } + + function try_RelativePathExpr() + { + try_PostfixExpr(); + for (;;) + { + switch (l1) + { + case 26: // '!' + lookahead2W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '$$' | '%' | '(' | '(:' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 27 // '!=' + && lk != 38 // ')' + && lk != 39 // '*' + && lk != 41 // '+' + && lk != 42 // ',' + && lk != 43 // '-' + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 50 // ':' + && lk != 54 // ';' + && lk != 55 // '<' + && lk != 58 // '<<' + && lk != 59 // '<=' + && lk != 61 // '=' + && lk != 62 // '>' + && lk != 63 // '>=' + && lk != 64 // '>>' + && lk != 70 // ']' + && lk != 71 // 'after' + && lk != 76 // 'and' + && lk != 80 // 'as' + && lk != 81 // 'ascending' + && lk != 82 // 'at' + && lk != 85 // 'before' + && lk != 88 // 'by' + && lk != 89 // 'case' + && lk != 90 // 'cast' + && lk != 91 // 'castable' + && lk != 95 // 'collation' + && lk != 100 // 'contains' + && lk != 106 // 'count' + && lk != 110 // 'default' + && lk != 114 // 'descending' + && lk != 119 // 'div' + && lk != 123 // 'else' + && lk != 124 // 'empty' + && lk != 127 // 'end' + && lk != 129 // 'eq' + && lk != 132 // 'except' + && lk != 139 // 'for' + && lk != 148 // 'ge' + && lk != 150 // 'group' + && lk != 152 // 'gt' + && lk != 153 // 'idiv' + && lk != 162 // 'instance' + && lk != 164 // 'intersect' + && lk != 165 // 'into' + && lk != 166 // 'is' + && lk != 175 // 'le' + && lk != 177 // 'let' + && lk != 181 // 'lt' + && lk != 183 // 'mod' + && lk != 184 // 'modify' + && lk != 189 // 'ne' + && lk != 202 // 'only' + && lk != 204 // 'or' + && lk != 205 // 'order' + && lk != 209 // 'paragraphs' + && lk != 224 // 'return' + && lk != 228 // 'satisfies' + && lk != 237 // 'sentences' + && lk != 241 // 'stable' + && lk != 242 // 'start' + && lk != 252 // 'times' + && lk != 253 // 'to' + && lk != 254 // 'treat' + && lk != 260 // 'union' + && lk != 272 // 'where' + && lk != 276 // 'with' + && lk != 279 // 'words' + && lk != 284 // '|' + && lk != 285 // '||' + && lk != 286 // '|}' + && lk != 287 // '}' + && lk != 2586 // '!' Wildcard + && lk != 23578 // '!' '..' + && lk != 24090 // '!' '/' + && lk != 24602 // '!' '//' + && lk != 34330) // '!' '@' + { + lk = memoized(3, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + switch (l1) + { + case 47: // '/' + shiftT(47); // '/' + break; + case 48: // '//' + shiftT(48); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(263); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '$$' | '%' | '(' | '(:' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_StepExpr(); + memoize(3, e0A, -1); + continue; + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(3, e0A, -2); + break; + } + } + } + if (lk != -1 + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 2586 // '!' Wildcard + && lk != 23578 // '!' '..' + && lk != 34330) // '!' '@' + { + break; + } + switch (l1) + { + case 47: // '/' + shiftT(47); // '/' + break; + case 48: // '//' + shiftT(48); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(263); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '$$' | '%' | '(' | '(:' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_StepExpr(); + } + } + + function parse_StepExpr() + { + eventHandler.startNonterminal("StepExpr", e0); + switch (l1) + { + case 83: // 'attribute' + lookahead2W(287); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | + // '>=' | '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'paragraphs' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sentences' | 'sliding' | 'some' | 'stable' | + // 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'times' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 122: // 'element' + lookahead2W(286); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'paragraphs' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sentences' | 'sliding' | 'some' | 'stable' | + // 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'times' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 187: // 'namespace' + case 220: // 'processing-instruction' + lookahead2W(284); // NCName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | 'castable' | + // 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | + // 'contains' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'paragraphs' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sentences' | 'sliding' | 'some' | 'stable' | + // 'start' | 'strict' | 'switch' | 'text' | 'times' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(236); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '.' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | + // 'cast' | 'castable' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + break; + case 97: // 'comment' + case 120: // 'document' + case 206: // 'ordered' + case 249: // 'text' + case 262: // 'unordered' + lookahead2W(238); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 79: // 'array' + case 125: // 'empty-sequence' + case 154: // 'if' + case 167: // 'item' + case 169: // 'json-item' + case 247: // 'structured-item' + case 248: // 'switch' + case 259: // 'typeswitch' + lookahead2W(229); // S^WS | EOF | '!' | '!=' | '#' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 94: // 'child' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 137: // 'following' + case 138: // 'following-sibling' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 234: // 'self' + lookahead2W(237); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | + // 'cast' | 'castable' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + break; + case 6: // EQName^Token + case 71: // 'after' + case 73: // 'allowing' + case 76: // 'and' + case 78: // 'append' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 87: // 'break' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 103: // 'continue' + case 104: // 'copy' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 111: // 'delete' + case 114: // 'descending' + case 119: // 'div' + case 121: // 'document-node' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 130: // 'every' + case 132: // 'except' + case 133: // 'exit' + case 134: // 'external' + case 136: // 'first' + case 139: // 'for' + case 142: // 'from' + case 143: // 'ft-option' + case 147: // 'function' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 161: // 'insert' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 177: // 'let' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 188: // 'namespace-node' + case 189: // 'ne' + case 194: // 'node' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 222: // 'rename' + case 223: // 'replace' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 232: // 'score' + case 233: // 'select' + case 239: // 'sliding' + case 240: // 'some' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 253: // 'to' + case 254: // 'treat' + case 256: // 'try' + case 257: // 'tumbling' + case 258: // 'type' + case 260: // 'union' + case 263: // 'updating' + case 266: // 'validate' + case 267: // 'value' + case 268: // 'variable' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(233); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + if (lk == 12935 // 'false' EOF + || lk == 12997 // 'null' EOF + || lk == 13055 // 'true' EOF + || lk == 13447 // 'false' '!' + || lk == 13509 // 'null' '!' + || lk == 13567 // 'true' '!' + || lk == 13959 // 'false' '!=' + || lk == 14021 // 'null' '!=' + || lk == 14079 // 'true' '!=' + || lk == 19591 // 'false' ')' + || lk == 19653 // 'null' ')' + || lk == 19711 // 'true' ')' + || lk == 20103 // 'false' '*' + || lk == 20165 // 'null' '*' + || lk == 20223 // 'true' '*' + || lk == 21127 // 'false' '+' + || lk == 21189 // 'null' '+' + || lk == 21247 // 'true' '+' + || lk == 21639 // 'false' ',' + || lk == 21701 // 'null' ',' + || lk == 21759 // 'true' ',' + || lk == 22151 // 'false' '-' + || lk == 22213 // 'null' '-' + || lk == 22271 // 'true' '-' + || lk == 24199 // 'false' '/' + || lk == 24261 // 'null' '/' + || lk == 24319 // 'true' '/' + || lk == 24711 // 'false' '//' + || lk == 24773 // 'null' '//' + || lk == 24831 // 'true' '//' + || lk == 25735 // 'false' ':' + || lk == 25797 // 'null' ':' + || lk == 25855 // 'true' ':' + || lk == 27783 // 'false' ';' + || lk == 27845 // 'null' ';' + || lk == 27903 // 'true' ';' + || lk == 28295 // 'false' '<' + || lk == 28357 // 'null' '<' + || lk == 28415 // 'true' '<' + || lk == 29831 // 'false' '<<' + || lk == 29893 // 'null' '<<' + || lk == 29951 // 'true' '<<' + || lk == 30343 // 'false' '<=' + || lk == 30405 // 'null' '<=' + || lk == 30463 // 'true' '<=' + || lk == 31367 // 'false' '=' + || lk == 31429 // 'null' '=' + || lk == 31487 // 'true' '=' + || lk == 31879 // 'false' '>' + || lk == 31941 // 'null' '>' + || lk == 31999 // 'true' '>' + || lk == 32391 // 'false' '>=' + || lk == 32453 // 'null' '>=' + || lk == 32511 // 'true' '>=' + || lk == 32903 // 'false' '>>' + || lk == 32965 // 'null' '>>' + || lk == 33023 // 'true' '>>' + || lk == 35463 // 'false' '[' + || lk == 35525 // 'null' '[' + || lk == 35583 // 'true' '[' + || lk == 35975 // 'false' ']' + || lk == 36037 // 'null' ']' + || lk == 36095 // 'true' ']' + || lk == 36435 // 'attribute' 'after' + || lk == 36474 // 'element' 'after' + || lk == 36487 // 'false' 'after' + || lk == 36539 // 'namespace' 'after' + || lk == 36549 // 'null' 'after' + || lk == 36572 // 'processing-instruction' 'after' + || lk == 36607 // 'true' 'after' + || lk == 38995 // 'attribute' 'and' + || lk == 39034 // 'element' 'and' + || lk == 39047 // 'false' 'and' + || lk == 39099 // 'namespace' 'and' + || lk == 39109 // 'null' 'and' + || lk == 39132 // 'processing-instruction' 'and' + || lk == 39167 // 'true' 'and' + || lk == 41043 // 'attribute' 'as' + || lk == 41082 // 'element' 'as' + || lk == 41095 // 'false' 'as' + || lk == 41147 // 'namespace' 'as' + || lk == 41157 // 'null' 'as' + || lk == 41180 // 'processing-instruction' 'as' + || lk == 41215 // 'true' 'as' + || lk == 41555 // 'attribute' 'ascending' + || lk == 41594 // 'element' 'ascending' + || lk == 41607 // 'false' 'ascending' + || lk == 41659 // 'namespace' 'ascending' + || lk == 41669 // 'null' 'ascending' + || lk == 41692 // 'processing-instruction' 'ascending' + || lk == 41727 // 'true' 'ascending' + || lk == 42067 // 'attribute' 'at' + || lk == 42106 // 'element' 'at' + || lk == 42119 // 'false' 'at' + || lk == 42171 // 'namespace' 'at' + || lk == 42181 // 'null' 'at' + || lk == 42204 // 'processing-instruction' 'at' + || lk == 42239 // 'true' 'at' + || lk == 43603 // 'attribute' 'before' + || lk == 43642 // 'element' 'before' + || lk == 43655 // 'false' 'before' + || lk == 43707 // 'namespace' 'before' + || lk == 43717 // 'null' 'before' + || lk == 43740 // 'processing-instruction' 'before' + || lk == 43775 // 'true' 'before' + || lk == 45191 // 'false' 'by' + || lk == 45253 // 'null' 'by' + || lk == 45311 // 'true' 'by' + || lk == 45651 // 'attribute' 'case' + || lk == 45690 // 'element' 'case' + || lk == 45703 // 'false' 'case' + || lk == 45755 // 'namespace' 'case' + || lk == 45765 // 'null' 'case' + || lk == 45788 // 'processing-instruction' 'case' + || lk == 45823 // 'true' 'case' + || lk == 46163 // 'attribute' 'cast' + || lk == 46202 // 'element' 'cast' + || lk == 46215 // 'false' 'cast' + || lk == 46267 // 'namespace' 'cast' + || lk == 46277 // 'null' 'cast' + || lk == 46300 // 'processing-instruction' 'cast' + || lk == 46335 // 'true' 'cast' + || lk == 46675 // 'attribute' 'castable' + || lk == 46714 // 'element' 'castable' + || lk == 46727 // 'false' 'castable' + || lk == 46779 // 'namespace' 'castable' + || lk == 46789 // 'null' 'castable' + || lk == 46812 // 'processing-instruction' 'castable' + || lk == 46847 // 'true' 'castable' + || lk == 48723 // 'attribute' 'collation' + || lk == 48762 // 'element' 'collation' + || lk == 48775 // 'false' 'collation' + || lk == 48827 // 'namespace' 'collation' + || lk == 48837 // 'null' 'collation' + || lk == 48860 // 'processing-instruction' 'collation' + || lk == 48895 // 'true' 'collation' + || lk == 51335 // 'false' 'contains' + || lk == 51397 // 'null' 'contains' + || lk == 51455 // 'true' 'contains' + || lk == 54355 // 'attribute' 'count' + || lk == 54394 // 'element' 'count' + || lk == 54407 // 'false' 'count' + || lk == 54459 // 'namespace' 'count' + || lk == 54469 // 'null' 'count' + || lk == 54492 // 'processing-instruction' 'count' + || lk == 54527 // 'true' 'count' + || lk == 56403 // 'attribute' 'default' + || lk == 56442 // 'element' 'default' + || lk == 56455 // 'false' 'default' + || lk == 56507 // 'namespace' 'default' + || lk == 56517 // 'null' 'default' + || lk == 56540 // 'processing-instruction' 'default' + || lk == 56575 // 'true' 'default' + || lk == 58451 // 'attribute' 'descending' + || lk == 58490 // 'element' 'descending' + || lk == 58503 // 'false' 'descending' + || lk == 58555 // 'namespace' 'descending' + || lk == 58565 // 'null' 'descending' + || lk == 58588 // 'processing-instruction' 'descending' + || lk == 58623 // 'true' 'descending' + || lk == 61011 // 'attribute' 'div' + || lk == 61050 // 'element' 'div' + || lk == 61063 // 'false' 'div' + || lk == 61115 // 'namespace' 'div' + || lk == 61125 // 'null' 'div' + || lk == 61148 // 'processing-instruction' 'div' + || lk == 61183 // 'true' 'div' + || lk == 63059 // 'attribute' 'else' + || lk == 63098 // 'element' 'else' + || lk == 63111 // 'false' 'else' + || lk == 63163 // 'namespace' 'else' + || lk == 63173 // 'null' 'else' + || lk == 63196 // 'processing-instruction' 'else' + || lk == 63231 // 'true' 'else' + || lk == 63571 // 'attribute' 'empty' + || lk == 63610 // 'element' 'empty' + || lk == 63623 // 'false' 'empty' + || lk == 63675 // 'namespace' 'empty' + || lk == 63685 // 'null' 'empty' + || lk == 63708 // 'processing-instruction' 'empty' + || lk == 63743 // 'true' 'empty' + || lk == 65107 // 'attribute' 'end' + || lk == 65146 // 'element' 'end' + || lk == 65159 // 'false' 'end' + || lk == 65211 // 'namespace' 'end' + || lk == 65221 // 'null' 'end' + || lk == 65244 // 'processing-instruction' 'end' + || lk == 65279 // 'true' 'end' + || lk == 66131 // 'attribute' 'eq' + || lk == 66170 // 'element' 'eq' + || lk == 66183 // 'false' 'eq' + || lk == 66235 // 'namespace' 'eq' + || lk == 66245 // 'null' 'eq' + || lk == 66268 // 'processing-instruction' 'eq' + || lk == 66303 // 'true' 'eq' + || lk == 67667 // 'attribute' 'except' + || lk == 67706 // 'element' 'except' + || lk == 67719 // 'false' 'except' + || lk == 67771 // 'namespace' 'except' + || lk == 67781 // 'null' 'except' + || lk == 67804 // 'processing-instruction' 'except' + || lk == 67839 // 'true' 'except' + || lk == 71251 // 'attribute' 'for' + || lk == 71290 // 'element' 'for' + || lk == 71303 // 'false' 'for' + || lk == 71355 // 'namespace' 'for' + || lk == 71365 // 'null' 'for' + || lk == 71388 // 'processing-instruction' 'for' + || lk == 71423 // 'true' 'for' + || lk == 75859 // 'attribute' 'ge' + || lk == 75898 // 'element' 'ge' + || lk == 75911 // 'false' 'ge' + || lk == 75963 // 'namespace' 'ge' + || lk == 75973 // 'null' 'ge' + || lk == 75996 // 'processing-instruction' 'ge' + || lk == 76031 // 'true' 'ge' + || lk == 76883 // 'attribute' 'group' + || lk == 76922 // 'element' 'group' + || lk == 76935 // 'false' 'group' + || lk == 76987 // 'namespace' 'group' + || lk == 76997 // 'null' 'group' + || lk == 77020 // 'processing-instruction' 'group' + || lk == 77055 // 'true' 'group' + || lk == 77907 // 'attribute' 'gt' + || lk == 77946 // 'element' 'gt' + || lk == 77959 // 'false' 'gt' + || lk == 78011 // 'namespace' 'gt' + || lk == 78021 // 'null' 'gt' + || lk == 78044 // 'processing-instruction' 'gt' + || lk == 78079 // 'true' 'gt' + || lk == 78419 // 'attribute' 'idiv' + || lk == 78458 // 'element' 'idiv' + || lk == 78471 // 'false' 'idiv' + || lk == 78523 // 'namespace' 'idiv' + || lk == 78533 // 'null' 'idiv' + || lk == 78556 // 'processing-instruction' 'idiv' + || lk == 78591 // 'true' 'idiv' + || lk == 83027 // 'attribute' 'instance' + || lk == 83066 // 'element' 'instance' + || lk == 83079 // 'false' 'instance' + || lk == 83131 // 'namespace' 'instance' + || lk == 83141 // 'null' 'instance' + || lk == 83164 // 'processing-instruction' 'instance' + || lk == 83199 // 'true' 'instance' + || lk == 84051 // 'attribute' 'intersect' + || lk == 84090 // 'element' 'intersect' + || lk == 84103 // 'false' 'intersect' + || lk == 84155 // 'namespace' 'intersect' + || lk == 84165 // 'null' 'intersect' + || lk == 84188 // 'processing-instruction' 'intersect' + || lk == 84223 // 'true' 'intersect' + || lk == 84563 // 'attribute' 'into' + || lk == 84602 // 'element' 'into' + || lk == 84615 // 'false' 'into' + || lk == 84667 // 'namespace' 'into' + || lk == 84677 // 'null' 'into' + || lk == 84700 // 'processing-instruction' 'into' + || lk == 84735 // 'true' 'into' + || lk == 85075 // 'attribute' 'is' + || lk == 85114 // 'element' 'is' + || lk == 85127 // 'false' 'is' + || lk == 85179 // 'namespace' 'is' + || lk == 85189 // 'null' 'is' + || lk == 85212 // 'processing-instruction' 'is' + || lk == 85247 // 'true' 'is' + || lk == 89683 // 'attribute' 'le' + || lk == 89722 // 'element' 'le' + || lk == 89735 // 'false' 'le' + || lk == 89787 // 'namespace' 'le' + || lk == 89797 // 'null' 'le' + || lk == 89820 // 'processing-instruction' 'le' + || lk == 89855 // 'true' 'le' + || lk == 90707 // 'attribute' 'let' + || lk == 90746 // 'element' 'let' + || lk == 90759 // 'false' 'let' + || lk == 90811 // 'namespace' 'let' + || lk == 90821 // 'null' 'let' + || lk == 90844 // 'processing-instruction' 'let' + || lk == 90879 // 'true' 'let' + || lk == 92755 // 'attribute' 'lt' + || lk == 92794 // 'element' 'lt' + || lk == 92807 // 'false' 'lt' + || lk == 92859 // 'namespace' 'lt' + || lk == 92869 // 'null' 'lt' + || lk == 92892 // 'processing-instruction' 'lt' + || lk == 92927 // 'true' 'lt' + || lk == 93779 // 'attribute' 'mod' + || lk == 93818 // 'element' 'mod' + || lk == 93831 // 'false' 'mod' + || lk == 93883 // 'namespace' 'mod' + || lk == 93893 // 'null' 'mod' + || lk == 93916 // 'processing-instruction' 'mod' + || lk == 93951 // 'true' 'mod' + || lk == 94291 // 'attribute' 'modify' + || lk == 94330 // 'element' 'modify' + || lk == 94343 // 'false' 'modify' + || lk == 94395 // 'namespace' 'modify' + || lk == 94405 // 'null' 'modify' + || lk == 94428 // 'processing-instruction' 'modify' + || lk == 94463 // 'true' 'modify' + || lk == 96851 // 'attribute' 'ne' + || lk == 96890 // 'element' 'ne' + || lk == 96903 // 'false' 'ne' + || lk == 96955 // 'namespace' 'ne' + || lk == 96965 // 'null' 'ne' + || lk == 96988 // 'processing-instruction' 'ne' + || lk == 97023 // 'true' 'ne' + || lk == 103507 // 'attribute' 'only' + || lk == 103546 // 'element' 'only' + || lk == 103559 // 'false' 'only' + || lk == 103611 // 'namespace' 'only' + || lk == 103621 // 'null' 'only' + || lk == 103644 // 'processing-instruction' 'only' + || lk == 103679 // 'true' 'only' + || lk == 104531 // 'attribute' 'or' + || lk == 104570 // 'element' 'or' + || lk == 104583 // 'false' 'or' + || lk == 104635 // 'namespace' 'or' + || lk == 104645 // 'null' 'or' + || lk == 104668 // 'processing-instruction' 'or' + || lk == 104703 // 'true' 'or' + || lk == 105043 // 'attribute' 'order' + || lk == 105082 // 'element' 'order' + || lk == 105095 // 'false' 'order' + || lk == 105147 // 'namespace' 'order' + || lk == 105157 // 'null' 'order' + || lk == 105180 // 'processing-instruction' 'order' + || lk == 105215 // 'true' 'order' + || lk == 107143 // 'false' 'paragraphs' + || lk == 107205 // 'null' 'paragraphs' + || lk == 107263 // 'true' 'paragraphs' + || lk == 114771 // 'attribute' 'return' + || lk == 114810 // 'element' 'return' + || lk == 114823 // 'false' 'return' + || lk == 114875 // 'namespace' 'return' + || lk == 114885 // 'null' 'return' + || lk == 114908 // 'processing-instruction' 'return' + || lk == 114943 // 'true' 'return' + || lk == 116819 // 'attribute' 'satisfies' + || lk == 116858 // 'element' 'satisfies' + || lk == 116871 // 'false' 'satisfies' + || lk == 116923 // 'namespace' 'satisfies' + || lk == 116933 // 'null' 'satisfies' + || lk == 116956 // 'processing-instruction' 'satisfies' + || lk == 116991 // 'true' 'satisfies' + || lk == 121479 // 'false' 'sentences' + || lk == 121541 // 'null' 'sentences' + || lk == 121599 // 'true' 'sentences' + || lk == 123475 // 'attribute' 'stable' + || lk == 123514 // 'element' 'stable' + || lk == 123527 // 'false' 'stable' + || lk == 123579 // 'namespace' 'stable' + || lk == 123589 // 'null' 'stable' + || lk == 123612 // 'processing-instruction' 'stable' + || lk == 123647 // 'true' 'stable' + || lk == 123987 // 'attribute' 'start' + || lk == 124026 // 'element' 'start' + || lk == 124039 // 'false' 'start' + || lk == 124091 // 'namespace' 'start' + || lk == 124101 // 'null' 'start' + || lk == 124124 // 'processing-instruction' 'start' + || lk == 124159 // 'true' 'start' + || lk == 129159 // 'false' 'times' + || lk == 129221 // 'null' 'times' + || lk == 129279 // 'true' 'times' + || lk == 129619 // 'attribute' 'to' + || lk == 129658 // 'element' 'to' + || lk == 129671 // 'false' 'to' + || lk == 129723 // 'namespace' 'to' + || lk == 129733 // 'null' 'to' + || lk == 129756 // 'processing-instruction' 'to' + || lk == 129791 // 'true' 'to' + || lk == 130131 // 'attribute' 'treat' + || lk == 130170 // 'element' 'treat' + || lk == 130183 // 'false' 'treat' + || lk == 130235 // 'namespace' 'treat' + || lk == 130245 // 'null' 'treat' + || lk == 130268 // 'processing-instruction' 'treat' + || lk == 130303 // 'true' 'treat' + || lk == 133203 // 'attribute' 'union' + || lk == 133242 // 'element' 'union' + || lk == 133255 // 'false' 'union' + || lk == 133307 // 'namespace' 'union' + || lk == 133317 // 'null' 'union' + || lk == 133340 // 'processing-instruction' 'union' + || lk == 133375 // 'true' 'union' + || lk == 139347 // 'attribute' 'where' + || lk == 139386 // 'element' 'where' + || lk == 139399 // 'false' 'where' + || lk == 139451 // 'namespace' 'where' + || lk == 139461 // 'null' 'where' + || lk == 139484 // 'processing-instruction' 'where' + || lk == 139519 // 'true' 'where' + || lk == 141395 // 'attribute' 'with' + || lk == 141434 // 'element' 'with' + || lk == 141447 // 'false' 'with' + || lk == 141499 // 'namespace' 'with' + || lk == 141509 // 'null' 'with' + || lk == 141532 // 'processing-instruction' 'with' + || lk == 141567 // 'true' 'with' + || lk == 142983 // 'false' 'words' + || lk == 143045 // 'null' 'words' + || lk == 143103 // 'true' 'words' + || lk == 145543 // 'false' '|' + || lk == 145605 // 'null' '|' + || lk == 145663 // 'true' '|' + || lk == 146055 // 'false' '||' + || lk == 146117 // 'null' '||' + || lk == 146175 // 'true' '||' + || lk == 146567 // 'false' '|}' + || lk == 146629 // 'null' '|}' + || lk == 146687 // 'true' '|}' + || lk == 147079 // 'false' '}' + || lk == 147141 // 'null' '}' + || lk == 147199) // 'true' '}' + { + lk = memoized(4, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_PostfixExpr(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(4, e0, lk); + } + } + switch (lk) + { + case -1: + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 31: // '$' + case 32: // '$$' + case 33: // '%' + case 35: // '(' + case 55: // '<' + case 56: // '<!--' + case 60: // '<?' + case 69: // '[' + case 281: // '{' + case 283: // '{|' + case 3155: // 'attribute' EQName^Token + case 3194: // 'element' EQName^Token + case 9915: // 'namespace' NCName^Token + case 9948: // 'processing-instruction' NCName^Token + case 14854: // EQName^Token '#' + case 14919: // 'after' '#' + case 14921: // 'allowing' '#' + case 14922: // 'ancestor' '#' + case 14923: // 'ancestor-or-self' '#' + case 14924: // 'and' '#' + case 14926: // 'append' '#' + case 14927: // 'array' '#' + case 14928: // 'as' '#' + case 14929: // 'ascending' '#' + case 14930: // 'at' '#' + case 14931: // 'attribute' '#' + case 14932: // 'base-uri' '#' + case 14933: // 'before' '#' + case 14934: // 'boundary-space' '#' + case 14935: // 'break' '#' + case 14937: // 'case' '#' + case 14938: // 'cast' '#' + case 14939: // 'castable' '#' + case 14940: // 'catch' '#' + case 14942: // 'child' '#' + case 14943: // 'collation' '#' + case 14945: // 'comment' '#' + case 14946: // 'constraint' '#' + case 14947: // 'construction' '#' + case 14950: // 'context' '#' + case 14951: // 'continue' '#' + case 14952: // 'copy' '#' + case 14953: // 'copy-namespaces' '#' + case 14954: // 'count' '#' + case 14955: // 'decimal-format' '#' + case 14957: // 'declare' '#' + case 14958: // 'default' '#' + case 14959: // 'delete' '#' + case 14960: // 'descendant' '#' + case 14961: // 'descendant-or-self' '#' + case 14962: // 'descending' '#' + case 14967: // 'div' '#' + case 14968: // 'document' '#' + case 14969: // 'document-node' '#' + case 14970: // 'element' '#' + case 14971: // 'else' '#' + case 14972: // 'empty' '#' + case 14973: // 'empty-sequence' '#' + case 14974: // 'encoding' '#' + case 14975: // 'end' '#' + case 14977: // 'eq' '#' + case 14978: // 'every' '#' + case 14980: // 'except' '#' + case 14981: // 'exit' '#' + case 14982: // 'external' '#' + case 14983: // 'false' '#' + case 14984: // 'first' '#' + case 14985: // 'following' '#' + case 14986: // 'following-sibling' '#' + case 14987: // 'for' '#' + case 14990: // 'from' '#' + case 14991: // 'ft-option' '#' + case 14995: // 'function' '#' + case 14996: // 'ge' '#' + case 14998: // 'group' '#' + case 15000: // 'gt' '#' + case 15001: // 'idiv' '#' + case 15002: // 'if' '#' + case 15003: // 'import' '#' + case 15004: // 'in' '#' + case 15005: // 'index' '#' + case 15009: // 'insert' '#' + case 15010: // 'instance' '#' + case 15011: // 'integrity' '#' + case 15012: // 'intersect' '#' + case 15013: // 'into' '#' + case 15014: // 'is' '#' + case 15015: // 'item' '#' + case 15016: // 'json' '#' + case 15017: // 'json-item' '#' + case 15018: // 'jsoniq' '#' + case 15021: // 'last' '#' + case 15022: // 'lax' '#' + case 15023: // 'le' '#' + case 15025: // 'let' '#' + case 15027: // 'loop' '#' + case 15029: // 'lt' '#' + case 15031: // 'mod' '#' + case 15032: // 'modify' '#' + case 15033: // 'module' '#' + case 15035: // 'namespace' '#' + case 15036: // 'namespace-node' '#' + case 15037: // 'ne' '#' + case 15042: // 'node' '#' + case 15043: // 'nodes' '#' + case 15045: // 'null' '#' + case 15046: // 'object' '#' + case 15050: // 'only' '#' + case 15051: // 'option' '#' + case 15052: // 'or' '#' + case 15053: // 'order' '#' + case 15054: // 'ordered' '#' + case 15055: // 'ordering' '#' + case 15058: // 'parent' '#' + case 15064: // 'preceding' '#' + case 15065: // 'preceding-sibling' '#' + case 15068: // 'processing-instruction' '#' + case 15070: // 'rename' '#' + case 15071: // 'replace' '#' + case 15072: // 'return' '#' + case 15073: // 'returning' '#' + case 15074: // 'revalidation' '#' + case 15076: // 'satisfies' '#' + case 15077: // 'schema' '#' + case 15078: // 'schema-attribute' '#' + case 15079: // 'schema-element' '#' + case 15080: // 'score' '#' + case 15081: // 'select' '#' + case 15082: // 'self' '#' + case 15087: // 'sliding' '#' + case 15088: // 'some' '#' + case 15089: // 'stable' '#' + case 15090: // 'start' '#' + case 15093: // 'strict' '#' + case 15095: // 'structured-item' '#' + case 15096: // 'switch' '#' + case 15097: // 'text' '#' + case 15101: // 'to' '#' + case 15102: // 'treat' '#' + case 15103: // 'true' '#' + case 15104: // 'try' '#' + case 15105: // 'tumbling' '#' + case 15106: // 'type' '#' + case 15107: // 'typeswitch' '#' + case 15108: // 'union' '#' + case 15110: // 'unordered' '#' + case 15111: // 'updating' '#' + case 15114: // 'validate' '#' + case 15115: // 'value' '#' + case 15116: // 'variable' '#' + case 15117: // 'version' '#' + case 15120: // 'where' '#' + case 15121: // 'while' '#' + case 15124: // 'with' '#' + case 17926: // EQName^Token '(' + case 17991: // 'after' '(' + case 17993: // 'allowing' '(' + case 17994: // 'ancestor' '(' + case 17995: // 'ancestor-or-self' '(' + case 17996: // 'and' '(' + case 17998: // 'append' '(' + case 18000: // 'as' '(' + case 18001: // 'ascending' '(' + case 18002: // 'at' '(' + case 18004: // 'base-uri' '(' + case 18005: // 'before' '(' + case 18006: // 'boundary-space' '(' + case 18007: // 'break' '(' + case 18009: // 'case' '(' + case 18010: // 'cast' '(' + case 18011: // 'castable' '(' + case 18012: // 'catch' '(' + case 18014: // 'child' '(' + case 18015: // 'collation' '(' + case 18018: // 'constraint' '(' + case 18019: // 'construction' '(' + case 18022: // 'context' '(' + case 18023: // 'continue' '(' + case 18024: // 'copy' '(' + case 18025: // 'copy-namespaces' '(' + case 18026: // 'count' '(' + case 18027: // 'decimal-format' '(' + case 18029: // 'declare' '(' + case 18030: // 'default' '(' + case 18031: // 'delete' '(' + case 18032: // 'descendant' '(' + case 18033: // 'descendant-or-self' '(' + case 18034: // 'descending' '(' + case 18039: // 'div' '(' + case 18040: // 'document' '(' + case 18043: // 'else' '(' + case 18044: // 'empty' '(' + case 18046: // 'encoding' '(' + case 18047: // 'end' '(' + case 18049: // 'eq' '(' + case 18050: // 'every' '(' + case 18052: // 'except' '(' + case 18053: // 'exit' '(' + case 18054: // 'external' '(' + case 18055: // 'false' '(' + case 18056: // 'first' '(' + case 18057: // 'following' '(' + case 18058: // 'following-sibling' '(' + case 18059: // 'for' '(' + case 18062: // 'from' '(' + case 18063: // 'ft-option' '(' + case 18067: // 'function' '(' + case 18068: // 'ge' '(' + case 18070: // 'group' '(' + case 18072: // 'gt' '(' + case 18073: // 'idiv' '(' + case 18075: // 'import' '(' + case 18076: // 'in' '(' + case 18077: // 'index' '(' + case 18081: // 'insert' '(' + case 18082: // 'instance' '(' + case 18083: // 'integrity' '(' + case 18084: // 'intersect' '(' + case 18085: // 'into' '(' + case 18086: // 'is' '(' + case 18088: // 'json' '(' + case 18090: // 'jsoniq' '(' + case 18093: // 'last' '(' + case 18094: // 'lax' '(' + case 18095: // 'le' '(' + case 18097: // 'let' '(' + case 18099: // 'loop' '(' + case 18101: // 'lt' '(' + case 18103: // 'mod' '(' + case 18104: // 'modify' '(' + case 18105: // 'module' '(' + case 18107: // 'namespace' '(' + case 18109: // 'ne' '(' + case 18115: // 'nodes' '(' + case 18117: // 'null' '(' + case 18118: // 'object' '(' + case 18122: // 'only' '(' + case 18123: // 'option' '(' + case 18124: // 'or' '(' + case 18125: // 'order' '(' + case 18126: // 'ordered' '(' + case 18127: // 'ordering' '(' + case 18130: // 'parent' '(' + case 18136: // 'preceding' '(' + case 18137: // 'preceding-sibling' '(' + case 18142: // 'rename' '(' + case 18143: // 'replace' '(' + case 18144: // 'return' '(' + case 18145: // 'returning' '(' + case 18146: // 'revalidation' '(' + case 18148: // 'satisfies' '(' + case 18149: // 'schema' '(' + case 18152: // 'score' '(' + case 18153: // 'select' '(' + case 18154: // 'self' '(' + case 18159: // 'sliding' '(' + case 18160: // 'some' '(' + case 18161: // 'stable' '(' + case 18162: // 'start' '(' + case 18165: // 'strict' '(' + case 18173: // 'to' '(' + case 18174: // 'treat' '(' + case 18175: // 'true' '(' + case 18176: // 'try' '(' + case 18177: // 'tumbling' '(' + case 18178: // 'type' '(' + case 18180: // 'union' '(' + case 18182: // 'unordered' '(' + case 18183: // 'updating' '(' + case 18186: // 'validate' '(' + case 18187: // 'value' '(' + case 18188: // 'variable' '(' + case 18189: // 'version' '(' + case 18192: // 'where' '(' + case 18193: // 'while' '(' + case 18196: // 'with' '(' + case 23175: // 'false' '.' + case 23237: // 'null' '.' + case 23295: // 'true' '.' + case 37459: // 'attribute' 'allowing' + case 37498: // 'element' 'allowing' + case 37563: // 'namespace' 'allowing' + case 37596: // 'processing-instruction' 'allowing' + case 37971: // 'attribute' 'ancestor' + case 38010: // 'element' 'ancestor' + case 38075: // 'namespace' 'ancestor' + case 38108: // 'processing-instruction' 'ancestor' + case 38483: // 'attribute' 'ancestor-or-self' + case 38522: // 'element' 'ancestor-or-self' + case 38587: // 'namespace' 'ancestor-or-self' + case 38620: // 'processing-instruction' 'ancestor-or-self' + case 40019: // 'attribute' 'append' + case 40058: // 'element' 'append' + case 40123: // 'namespace' 'append' + case 40156: // 'processing-instruction' 'append' + case 40531: // 'attribute' 'array' + case 40570: // 'element' 'array' + case 42579: // 'attribute' 'attribute' + case 42618: // 'element' 'attribute' + case 42683: // 'namespace' 'attribute' + case 42716: // 'processing-instruction' 'attribute' + case 43091: // 'attribute' 'base-uri' + case 43130: // 'element' 'base-uri' + case 43195: // 'namespace' 'base-uri' + case 43228: // 'processing-instruction' 'base-uri' + case 44115: // 'attribute' 'boundary-space' + case 44154: // 'element' 'boundary-space' + case 44219: // 'namespace' 'boundary-space' + case 44252: // 'processing-instruction' 'boundary-space' + case 44627: // 'attribute' 'break' + case 44666: // 'element' 'break' + case 44731: // 'namespace' 'break' + case 44764: // 'processing-instruction' 'break' + case 47187: // 'attribute' 'catch' + case 47226: // 'element' 'catch' + case 47291: // 'namespace' 'catch' + case 47324: // 'processing-instruction' 'catch' + case 48211: // 'attribute' 'child' + case 48250: // 'element' 'child' + case 48315: // 'namespace' 'child' + case 48348: // 'processing-instruction' 'child' + case 49747: // 'attribute' 'comment' + case 49786: // 'element' 'comment' + case 49851: // 'namespace' 'comment' + case 49884: // 'processing-instruction' 'comment' + case 50259: // 'attribute' 'constraint' + case 50298: // 'element' 'constraint' + case 50363: // 'namespace' 'constraint' + case 50396: // 'processing-instruction' 'constraint' + case 50771: // 'attribute' 'construction' + case 50810: // 'element' 'construction' + case 50875: // 'namespace' 'construction' + case 50908: // 'processing-instruction' 'construction' + case 52307: // 'attribute' 'context' + case 52346: // 'element' 'context' + case 52411: // 'namespace' 'context' + case 52444: // 'processing-instruction' 'context' + case 52819: // 'attribute' 'continue' + case 52858: // 'element' 'continue' + case 52923: // 'namespace' 'continue' + case 52956: // 'processing-instruction' 'continue' + case 53331: // 'attribute' 'copy' + case 53370: // 'element' 'copy' + case 53435: // 'namespace' 'copy' + case 53468: // 'processing-instruction' 'copy' + case 53843: // 'attribute' 'copy-namespaces' + case 53882: // 'element' 'copy-namespaces' + case 53947: // 'namespace' 'copy-namespaces' + case 53980: // 'processing-instruction' 'copy-namespaces' + case 54867: // 'attribute' 'decimal-format' + case 54906: // 'element' 'decimal-format' + case 54971: // 'namespace' 'decimal-format' + case 55004: // 'processing-instruction' 'decimal-format' + case 55891: // 'attribute' 'declare' + case 55930: // 'element' 'declare' + case 55995: // 'namespace' 'declare' + case 56028: // 'processing-instruction' 'declare' + case 56915: // 'attribute' 'delete' + case 56954: // 'element' 'delete' + case 57019: // 'namespace' 'delete' + case 57052: // 'processing-instruction' 'delete' + case 57427: // 'attribute' 'descendant' + case 57466: // 'element' 'descendant' + case 57531: // 'namespace' 'descendant' + case 57564: // 'processing-instruction' 'descendant' + case 57939: // 'attribute' 'descendant-or-self' + case 57978: // 'element' 'descendant-or-self' + case 58043: // 'namespace' 'descendant-or-self' + case 58076: // 'processing-instruction' 'descendant-or-self' + case 61523: // 'attribute' 'document' + case 61562: // 'element' 'document' + case 61627: // 'namespace' 'document' + case 61660: // 'processing-instruction' 'document' + case 62035: // 'attribute' 'document-node' + case 62074: // 'element' 'document-node' + case 62139: // 'namespace' 'document-node' + case 62172: // 'processing-instruction' 'document-node' + case 62547: // 'attribute' 'element' + case 62586: // 'element' 'element' + case 62651: // 'namespace' 'element' + case 62684: // 'processing-instruction' 'element' + case 64083: // 'attribute' 'empty-sequence' + case 64122: // 'element' 'empty-sequence' + case 64187: // 'namespace' 'empty-sequence' + case 64220: // 'processing-instruction' 'empty-sequence' + case 64595: // 'attribute' 'encoding' + case 64634: // 'element' 'encoding' + case 64699: // 'namespace' 'encoding' + case 64732: // 'processing-instruction' 'encoding' + case 66643: // 'attribute' 'every' + case 66682: // 'element' 'every' + case 66747: // 'namespace' 'every' + case 66780: // 'processing-instruction' 'every' + case 68179: // 'attribute' 'exit' + case 68218: // 'element' 'exit' + case 68283: // 'namespace' 'exit' + case 68316: // 'processing-instruction' 'exit' + case 68691: // 'attribute' 'external' + case 68730: // 'element' 'external' + case 68795: // 'namespace' 'external' + case 68828: // 'processing-instruction' 'external' + case 69203: // 'attribute' 'false' + case 69242: // 'element' 'false' + case 69307: // 'namespace' 'false' + case 69340: // 'processing-instruction' 'false' + case 69715: // 'attribute' 'first' + case 69754: // 'element' 'first' + case 69819: // 'namespace' 'first' + case 69852: // 'processing-instruction' 'first' + case 70227: // 'attribute' 'following' + case 70266: // 'element' 'following' + case 70331: // 'namespace' 'following' + case 70364: // 'processing-instruction' 'following' + case 70739: // 'attribute' 'following-sibling' + case 70778: // 'element' 'following-sibling' + case 70843: // 'namespace' 'following-sibling' + case 70876: // 'processing-instruction' 'following-sibling' + case 72787: // 'attribute' 'from' + case 72826: // 'element' 'from' + case 72891: // 'namespace' 'from' + case 72924: // 'processing-instruction' 'from' + case 73299: // 'attribute' 'ft-option' + case 73338: // 'element' 'ft-option' + case 73403: // 'namespace' 'ft-option' + case 73436: // 'processing-instruction' 'ft-option' + case 75347: // 'attribute' 'function' + case 75386: // 'element' 'function' + case 75451: // 'namespace' 'function' + case 75484: // 'processing-instruction' 'function' + case 78931: // 'attribute' 'if' + case 78970: // 'element' 'if' + case 79035: // 'namespace' 'if' + case 79068: // 'processing-instruction' 'if' + case 79443: // 'attribute' 'import' + case 79482: // 'element' 'import' + case 79547: // 'namespace' 'import' + case 79580: // 'processing-instruction' 'import' + case 79955: // 'attribute' 'in' + case 79994: // 'element' 'in' + case 80059: // 'namespace' 'in' + case 80092: // 'processing-instruction' 'in' + case 80467: // 'attribute' 'index' + case 80506: // 'element' 'index' + case 80571: // 'namespace' 'index' + case 80604: // 'processing-instruction' 'index' + case 82515: // 'attribute' 'insert' + case 82554: // 'element' 'insert' + case 82619: // 'namespace' 'insert' + case 82652: // 'processing-instruction' 'insert' + case 83539: // 'attribute' 'integrity' + case 83578: // 'element' 'integrity' + case 83643: // 'namespace' 'integrity' + case 83676: // 'processing-instruction' 'integrity' + case 85587: // 'attribute' 'item' + case 85626: // 'element' 'item' + case 85691: // 'namespace' 'item' + case 85724: // 'processing-instruction' 'item' + case 86099: // 'attribute' 'json' + case 86138: // 'element' 'json' + case 86203: // 'namespace' 'json' + case 86236: // 'processing-instruction' 'json' + case 86611: // 'attribute' 'json-item' + case 86650: // 'element' 'json-item' + case 87123: // 'attribute' 'jsoniq' + case 87162: // 'element' 'jsoniq' + case 87227: // 'namespace' 'jsoniq' + case 87260: // 'processing-instruction' 'jsoniq' + case 88659: // 'attribute' 'last' + case 88698: // 'element' 'last' + case 88763: // 'namespace' 'last' + case 88796: // 'processing-instruction' 'last' + case 89171: // 'attribute' 'lax' + case 89210: // 'element' 'lax' + case 89275: // 'namespace' 'lax' + case 89308: // 'processing-instruction' 'lax' + case 91731: // 'attribute' 'loop' + case 91770: // 'element' 'loop' + case 91835: // 'namespace' 'loop' + case 91868: // 'processing-instruction' 'loop' + case 94803: // 'attribute' 'module' + case 94842: // 'element' 'module' + case 94907: // 'namespace' 'module' + case 94940: // 'processing-instruction' 'module' + case 95827: // 'attribute' 'namespace' + case 95866: // 'element' 'namespace' + case 95931: // 'namespace' 'namespace' + case 95964: // 'processing-instruction' 'namespace' + case 96339: // 'attribute' 'namespace-node' + case 96378: // 'element' 'namespace-node' + case 96443: // 'namespace' 'namespace-node' + case 96476: // 'processing-instruction' 'namespace-node' + case 99411: // 'attribute' 'node' + case 99450: // 'element' 'node' + case 99515: // 'namespace' 'node' + case 99548: // 'processing-instruction' 'node' + case 99923: // 'attribute' 'nodes' + case 99962: // 'element' 'nodes' + case 100027: // 'namespace' 'nodes' + case 100060: // 'processing-instruction' 'nodes' + case 100947: // 'attribute' 'null' + case 100986: // 'element' 'null' + case 101051: // 'namespace' 'null' + case 101084: // 'processing-instruction' 'null' + case 101459: // 'attribute' 'object' + case 101498: // 'element' 'object' + case 101563: // 'namespace' 'object' + case 101596: // 'processing-instruction' 'object' + case 104019: // 'attribute' 'option' + case 104058: // 'element' 'option' + case 104123: // 'namespace' 'option' + case 104156: // 'processing-instruction' 'option' + case 105555: // 'attribute' 'ordered' + case 105594: // 'element' 'ordered' + case 105659: // 'namespace' 'ordered' + case 105692: // 'processing-instruction' 'ordered' + case 106067: // 'attribute' 'ordering' + case 106106: // 'element' 'ordering' + case 106171: // 'namespace' 'ordering' + case 106204: // 'processing-instruction' 'ordering' + case 107603: // 'attribute' 'parent' + case 107642: // 'element' 'parent' + case 107707: // 'namespace' 'parent' + case 107740: // 'processing-instruction' 'parent' + case 110675: // 'attribute' 'preceding' + case 110714: // 'element' 'preceding' + case 110779: // 'namespace' 'preceding' + case 110812: // 'processing-instruction' 'preceding' + case 111187: // 'attribute' 'preceding-sibling' + case 111226: // 'element' 'preceding-sibling' + case 111291: // 'namespace' 'preceding-sibling' + case 111324: // 'processing-instruction' 'preceding-sibling' + case 112723: // 'attribute' 'processing-instruction' + case 112762: // 'element' 'processing-instruction' + case 112827: // 'namespace' 'processing-instruction' + case 112860: // 'processing-instruction' 'processing-instruction' + case 113747: // 'attribute' 'rename' + case 113786: // 'element' 'rename' + case 113851: // 'namespace' 'rename' + case 113884: // 'processing-instruction' 'rename' + case 114259: // 'attribute' 'replace' + case 114298: // 'element' 'replace' + case 114363: // 'namespace' 'replace' + case 114396: // 'processing-instruction' 'replace' + case 115283: // 'attribute' 'returning' + case 115322: // 'element' 'returning' + case 115387: // 'namespace' 'returning' + case 115420: // 'processing-instruction' 'returning' + case 115795: // 'attribute' 'revalidation' + case 115834: // 'element' 'revalidation' + case 115899: // 'namespace' 'revalidation' + case 115932: // 'processing-instruction' 'revalidation' + case 117331: // 'attribute' 'schema' + case 117370: // 'element' 'schema' + case 117435: // 'namespace' 'schema' + case 117468: // 'processing-instruction' 'schema' + case 117843: // 'attribute' 'schema-attribute' + case 117882: // 'element' 'schema-attribute' + case 117947: // 'namespace' 'schema-attribute' + case 117980: // 'processing-instruction' 'schema-attribute' + case 118355: // 'attribute' 'schema-element' + case 118394: // 'element' 'schema-element' + case 118459: // 'namespace' 'schema-element' + case 118492: // 'processing-instruction' 'schema-element' + case 118867: // 'attribute' 'score' + case 118906: // 'element' 'score' + case 118971: // 'namespace' 'score' + case 119004: // 'processing-instruction' 'score' + case 119379: // 'attribute' 'select' + case 119418: // 'element' 'select' + case 119483: // 'namespace' 'select' + case 119516: // 'processing-instruction' 'select' + case 119891: // 'attribute' 'self' + case 119930: // 'element' 'self' + case 119995: // 'namespace' 'self' + case 120028: // 'processing-instruction' 'self' + case 122451: // 'attribute' 'sliding' + case 122490: // 'element' 'sliding' + case 122555: // 'namespace' 'sliding' + case 122588: // 'processing-instruction' 'sliding' + case 122963: // 'attribute' 'some' + case 123002: // 'element' 'some' + case 123067: // 'namespace' 'some' + case 123100: // 'processing-instruction' 'some' + case 125523: // 'attribute' 'strict' + case 125562: // 'element' 'strict' + case 125627: // 'namespace' 'strict' + case 125660: // 'processing-instruction' 'strict' + case 126547: // 'attribute' 'structured-item' + case 126586: // 'element' 'structured-item' + case 127059: // 'attribute' 'switch' + case 127098: // 'element' 'switch' + case 127163: // 'namespace' 'switch' + case 127196: // 'processing-instruction' 'switch' + case 127571: // 'attribute' 'text' + case 127610: // 'element' 'text' + case 127675: // 'namespace' 'text' + case 127708: // 'processing-instruction' 'text' + case 130643: // 'attribute' 'true' + case 130682: // 'element' 'true' + case 130747: // 'namespace' 'true' + case 130780: // 'processing-instruction' 'true' + case 131155: // 'attribute' 'try' + case 131194: // 'element' 'try' + case 131259: // 'namespace' 'try' + case 131292: // 'processing-instruction' 'try' + case 131667: // 'attribute' 'tumbling' + case 131706: // 'element' 'tumbling' + case 131771: // 'namespace' 'tumbling' + case 131804: // 'processing-instruction' 'tumbling' + case 132179: // 'attribute' 'type' + case 132218: // 'element' 'type' + case 132283: // 'namespace' 'type' + case 132316: // 'processing-instruction' 'type' + case 132691: // 'attribute' 'typeswitch' + case 132730: // 'element' 'typeswitch' + case 132795: // 'namespace' 'typeswitch' + case 132828: // 'processing-instruction' 'typeswitch' + case 134227: // 'attribute' 'unordered' + case 134266: // 'element' 'unordered' + case 134331: // 'namespace' 'unordered' + case 134364: // 'processing-instruction' 'unordered' + case 134739: // 'attribute' 'updating' + case 134778: // 'element' 'updating' + case 134843: // 'namespace' 'updating' + case 134876: // 'processing-instruction' 'updating' + case 136275: // 'attribute' 'validate' + case 136314: // 'element' 'validate' + case 136379: // 'namespace' 'validate' + case 136412: // 'processing-instruction' 'validate' + case 136787: // 'attribute' 'value' + case 136826: // 'element' 'value' + case 136891: // 'namespace' 'value' + case 136924: // 'processing-instruction' 'value' + case 137299: // 'attribute' 'variable' + case 137338: // 'element' 'variable' + case 137403: // 'namespace' 'variable' + case 137436: // 'processing-instruction' 'variable' + case 137811: // 'attribute' 'version' + case 137850: // 'element' 'version' + case 137915: // 'namespace' 'version' + case 137948: // 'processing-instruction' 'version' + case 139859: // 'attribute' 'while' + case 139898: // 'element' 'while' + case 139963: // 'namespace' 'while' + case 139996: // 'processing-instruction' 'while' + case 143955: // 'attribute' '{' + case 143969: // 'comment' '{' + case 143992: // 'document' '{' + case 143994: // 'element' '{' + case 144059: // 'namespace' '{' + case 144078: // 'ordered' '{' + case 144092: // 'processing-instruction' '{' + case 144121: // 'text' '{' + case 144134: // 'unordered' '{' + parse_PostfixExpr(); + break; + default: + parse_AxisStep(); + } + eventHandler.endNonterminal("StepExpr", e0); + } + + function try_StepExpr() + { + switch (l1) + { + case 83: // 'attribute' + lookahead2W(287); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | + // '>=' | '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'paragraphs' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sentences' | 'sliding' | 'some' | 'stable' | + // 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'times' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 122: // 'element' + lookahead2W(286); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'paragraphs' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sentences' | 'sliding' | 'some' | 'stable' | + // 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'times' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 187: // 'namespace' + case 220: // 'processing-instruction' + lookahead2W(284); // NCName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | 'castable' | + // 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | + // 'contains' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'paragraphs' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sentences' | 'sliding' | 'some' | 'stable' | + // 'start' | 'strict' | 'switch' | 'text' | 'times' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(236); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '.' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | + // 'cast' | 'castable' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + break; + case 97: // 'comment' + case 120: // 'document' + case 206: // 'ordered' + case 249: // 'text' + case 262: // 'unordered' + lookahead2W(238); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 79: // 'array' + case 125: // 'empty-sequence' + case 154: // 'if' + case 167: // 'item' + case 169: // 'json-item' + case 247: // 'structured-item' + case 248: // 'switch' + case 259: // 'typeswitch' + lookahead2W(229); // S^WS | EOF | '!' | '!=' | '#' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 94: // 'child' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 137: // 'following' + case 138: // 'following-sibling' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 234: // 'self' + lookahead2W(237); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | + // 'cast' | 'castable' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + break; + case 6: // EQName^Token + case 71: // 'after' + case 73: // 'allowing' + case 76: // 'and' + case 78: // 'append' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 87: // 'break' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 103: // 'continue' + case 104: // 'copy' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 111: // 'delete' + case 114: // 'descending' + case 119: // 'div' + case 121: // 'document-node' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 130: // 'every' + case 132: // 'except' + case 133: // 'exit' + case 134: // 'external' + case 136: // 'first' + case 139: // 'for' + case 142: // 'from' + case 143: // 'ft-option' + case 147: // 'function' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 161: // 'insert' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 177: // 'let' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 188: // 'namespace-node' + case 189: // 'ne' + case 194: // 'node' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 222: // 'rename' + case 223: // 'replace' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 232: // 'score' + case 233: // 'select' + case 239: // 'sliding' + case 240: // 'some' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 253: // 'to' + case 254: // 'treat' + case 256: // 'try' + case 257: // 'tumbling' + case 258: // 'type' + case 260: // 'union' + case 263: // 'updating' + case 266: // 'validate' + case 267: // 'value' + case 268: // 'variable' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(233); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + if (lk == 12935 // 'false' EOF + || lk == 12997 // 'null' EOF + || lk == 13055 // 'true' EOF + || lk == 13447 // 'false' '!' + || lk == 13509 // 'null' '!' + || lk == 13567 // 'true' '!' + || lk == 13959 // 'false' '!=' + || lk == 14021 // 'null' '!=' + || lk == 14079 // 'true' '!=' + || lk == 19591 // 'false' ')' + || lk == 19653 // 'null' ')' + || lk == 19711 // 'true' ')' + || lk == 20103 // 'false' '*' + || lk == 20165 // 'null' '*' + || lk == 20223 // 'true' '*' + || lk == 21127 // 'false' '+' + || lk == 21189 // 'null' '+' + || lk == 21247 // 'true' '+' + || lk == 21639 // 'false' ',' + || lk == 21701 // 'null' ',' + || lk == 21759 // 'true' ',' + || lk == 22151 // 'false' '-' + || lk == 22213 // 'null' '-' + || lk == 22271 // 'true' '-' + || lk == 24199 // 'false' '/' + || lk == 24261 // 'null' '/' + || lk == 24319 // 'true' '/' + || lk == 24711 // 'false' '//' + || lk == 24773 // 'null' '//' + || lk == 24831 // 'true' '//' + || lk == 25735 // 'false' ':' + || lk == 25797 // 'null' ':' + || lk == 25855 // 'true' ':' + || lk == 27783 // 'false' ';' + || lk == 27845 // 'null' ';' + || lk == 27903 // 'true' ';' + || lk == 28295 // 'false' '<' + || lk == 28357 // 'null' '<' + || lk == 28415 // 'true' '<' + || lk == 29831 // 'false' '<<' + || lk == 29893 // 'null' '<<' + || lk == 29951 // 'true' '<<' + || lk == 30343 // 'false' '<=' + || lk == 30405 // 'null' '<=' + || lk == 30463 // 'true' '<=' + || lk == 31367 // 'false' '=' + || lk == 31429 // 'null' '=' + || lk == 31487 // 'true' '=' + || lk == 31879 // 'false' '>' + || lk == 31941 // 'null' '>' + || lk == 31999 // 'true' '>' + || lk == 32391 // 'false' '>=' + || lk == 32453 // 'null' '>=' + || lk == 32511 // 'true' '>=' + || lk == 32903 // 'false' '>>' + || lk == 32965 // 'null' '>>' + || lk == 33023 // 'true' '>>' + || lk == 35463 // 'false' '[' + || lk == 35525 // 'null' '[' + || lk == 35583 // 'true' '[' + || lk == 35975 // 'false' ']' + || lk == 36037 // 'null' ']' + || lk == 36095 // 'true' ']' + || lk == 36435 // 'attribute' 'after' + || lk == 36474 // 'element' 'after' + || lk == 36487 // 'false' 'after' + || lk == 36539 // 'namespace' 'after' + || lk == 36549 // 'null' 'after' + || lk == 36572 // 'processing-instruction' 'after' + || lk == 36607 // 'true' 'after' + || lk == 38995 // 'attribute' 'and' + || lk == 39034 // 'element' 'and' + || lk == 39047 // 'false' 'and' + || lk == 39099 // 'namespace' 'and' + || lk == 39109 // 'null' 'and' + || lk == 39132 // 'processing-instruction' 'and' + || lk == 39167 // 'true' 'and' + || lk == 41043 // 'attribute' 'as' + || lk == 41082 // 'element' 'as' + || lk == 41095 // 'false' 'as' + || lk == 41147 // 'namespace' 'as' + || lk == 41157 // 'null' 'as' + || lk == 41180 // 'processing-instruction' 'as' + || lk == 41215 // 'true' 'as' + || lk == 41555 // 'attribute' 'ascending' + || lk == 41594 // 'element' 'ascending' + || lk == 41607 // 'false' 'ascending' + || lk == 41659 // 'namespace' 'ascending' + || lk == 41669 // 'null' 'ascending' + || lk == 41692 // 'processing-instruction' 'ascending' + || lk == 41727 // 'true' 'ascending' + || lk == 42067 // 'attribute' 'at' + || lk == 42106 // 'element' 'at' + || lk == 42119 // 'false' 'at' + || lk == 42171 // 'namespace' 'at' + || lk == 42181 // 'null' 'at' + || lk == 42204 // 'processing-instruction' 'at' + || lk == 42239 // 'true' 'at' + || lk == 43603 // 'attribute' 'before' + || lk == 43642 // 'element' 'before' + || lk == 43655 // 'false' 'before' + || lk == 43707 // 'namespace' 'before' + || lk == 43717 // 'null' 'before' + || lk == 43740 // 'processing-instruction' 'before' + || lk == 43775 // 'true' 'before' + || lk == 45191 // 'false' 'by' + || lk == 45253 // 'null' 'by' + || lk == 45311 // 'true' 'by' + || lk == 45651 // 'attribute' 'case' + || lk == 45690 // 'element' 'case' + || lk == 45703 // 'false' 'case' + || lk == 45755 // 'namespace' 'case' + || lk == 45765 // 'null' 'case' + || lk == 45788 // 'processing-instruction' 'case' + || lk == 45823 // 'true' 'case' + || lk == 46163 // 'attribute' 'cast' + || lk == 46202 // 'element' 'cast' + || lk == 46215 // 'false' 'cast' + || lk == 46267 // 'namespace' 'cast' + || lk == 46277 // 'null' 'cast' + || lk == 46300 // 'processing-instruction' 'cast' + || lk == 46335 // 'true' 'cast' + || lk == 46675 // 'attribute' 'castable' + || lk == 46714 // 'element' 'castable' + || lk == 46727 // 'false' 'castable' + || lk == 46779 // 'namespace' 'castable' + || lk == 46789 // 'null' 'castable' + || lk == 46812 // 'processing-instruction' 'castable' + || lk == 46847 // 'true' 'castable' + || lk == 48723 // 'attribute' 'collation' + || lk == 48762 // 'element' 'collation' + || lk == 48775 // 'false' 'collation' + || lk == 48827 // 'namespace' 'collation' + || lk == 48837 // 'null' 'collation' + || lk == 48860 // 'processing-instruction' 'collation' + || lk == 48895 // 'true' 'collation' + || lk == 51335 // 'false' 'contains' + || lk == 51397 // 'null' 'contains' + || lk == 51455 // 'true' 'contains' + || lk == 54355 // 'attribute' 'count' + || lk == 54394 // 'element' 'count' + || lk == 54407 // 'false' 'count' + || lk == 54459 // 'namespace' 'count' + || lk == 54469 // 'null' 'count' + || lk == 54492 // 'processing-instruction' 'count' + || lk == 54527 // 'true' 'count' + || lk == 56403 // 'attribute' 'default' + || lk == 56442 // 'element' 'default' + || lk == 56455 // 'false' 'default' + || lk == 56507 // 'namespace' 'default' + || lk == 56517 // 'null' 'default' + || lk == 56540 // 'processing-instruction' 'default' + || lk == 56575 // 'true' 'default' + || lk == 58451 // 'attribute' 'descending' + || lk == 58490 // 'element' 'descending' + || lk == 58503 // 'false' 'descending' + || lk == 58555 // 'namespace' 'descending' + || lk == 58565 // 'null' 'descending' + || lk == 58588 // 'processing-instruction' 'descending' + || lk == 58623 // 'true' 'descending' + || lk == 61011 // 'attribute' 'div' + || lk == 61050 // 'element' 'div' + || lk == 61063 // 'false' 'div' + || lk == 61115 // 'namespace' 'div' + || lk == 61125 // 'null' 'div' + || lk == 61148 // 'processing-instruction' 'div' + || lk == 61183 // 'true' 'div' + || lk == 63059 // 'attribute' 'else' + || lk == 63098 // 'element' 'else' + || lk == 63111 // 'false' 'else' + || lk == 63163 // 'namespace' 'else' + || lk == 63173 // 'null' 'else' + || lk == 63196 // 'processing-instruction' 'else' + || lk == 63231 // 'true' 'else' + || lk == 63571 // 'attribute' 'empty' + || lk == 63610 // 'element' 'empty' + || lk == 63623 // 'false' 'empty' + || lk == 63675 // 'namespace' 'empty' + || lk == 63685 // 'null' 'empty' + || lk == 63708 // 'processing-instruction' 'empty' + || lk == 63743 // 'true' 'empty' + || lk == 65107 // 'attribute' 'end' + || lk == 65146 // 'element' 'end' + || lk == 65159 // 'false' 'end' + || lk == 65211 // 'namespace' 'end' + || lk == 65221 // 'null' 'end' + || lk == 65244 // 'processing-instruction' 'end' + || lk == 65279 // 'true' 'end' + || lk == 66131 // 'attribute' 'eq' + || lk == 66170 // 'element' 'eq' + || lk == 66183 // 'false' 'eq' + || lk == 66235 // 'namespace' 'eq' + || lk == 66245 // 'null' 'eq' + || lk == 66268 // 'processing-instruction' 'eq' + || lk == 66303 // 'true' 'eq' + || lk == 67667 // 'attribute' 'except' + || lk == 67706 // 'element' 'except' + || lk == 67719 // 'false' 'except' + || lk == 67771 // 'namespace' 'except' + || lk == 67781 // 'null' 'except' + || lk == 67804 // 'processing-instruction' 'except' + || lk == 67839 // 'true' 'except' + || lk == 71251 // 'attribute' 'for' + || lk == 71290 // 'element' 'for' + || lk == 71303 // 'false' 'for' + || lk == 71355 // 'namespace' 'for' + || lk == 71365 // 'null' 'for' + || lk == 71388 // 'processing-instruction' 'for' + || lk == 71423 // 'true' 'for' + || lk == 75859 // 'attribute' 'ge' + || lk == 75898 // 'element' 'ge' + || lk == 75911 // 'false' 'ge' + || lk == 75963 // 'namespace' 'ge' + || lk == 75973 // 'null' 'ge' + || lk == 75996 // 'processing-instruction' 'ge' + || lk == 76031 // 'true' 'ge' + || lk == 76883 // 'attribute' 'group' + || lk == 76922 // 'element' 'group' + || lk == 76935 // 'false' 'group' + || lk == 76987 // 'namespace' 'group' + || lk == 76997 // 'null' 'group' + || lk == 77020 // 'processing-instruction' 'group' + || lk == 77055 // 'true' 'group' + || lk == 77907 // 'attribute' 'gt' + || lk == 77946 // 'element' 'gt' + || lk == 77959 // 'false' 'gt' + || lk == 78011 // 'namespace' 'gt' + || lk == 78021 // 'null' 'gt' + || lk == 78044 // 'processing-instruction' 'gt' + || lk == 78079 // 'true' 'gt' + || lk == 78419 // 'attribute' 'idiv' + || lk == 78458 // 'element' 'idiv' + || lk == 78471 // 'false' 'idiv' + || lk == 78523 // 'namespace' 'idiv' + || lk == 78533 // 'null' 'idiv' + || lk == 78556 // 'processing-instruction' 'idiv' + || lk == 78591 // 'true' 'idiv' + || lk == 83027 // 'attribute' 'instance' + || lk == 83066 // 'element' 'instance' + || lk == 83079 // 'false' 'instance' + || lk == 83131 // 'namespace' 'instance' + || lk == 83141 // 'null' 'instance' + || lk == 83164 // 'processing-instruction' 'instance' + || lk == 83199 // 'true' 'instance' + || lk == 84051 // 'attribute' 'intersect' + || lk == 84090 // 'element' 'intersect' + || lk == 84103 // 'false' 'intersect' + || lk == 84155 // 'namespace' 'intersect' + || lk == 84165 // 'null' 'intersect' + || lk == 84188 // 'processing-instruction' 'intersect' + || lk == 84223 // 'true' 'intersect' + || lk == 84563 // 'attribute' 'into' + || lk == 84602 // 'element' 'into' + || lk == 84615 // 'false' 'into' + || lk == 84667 // 'namespace' 'into' + || lk == 84677 // 'null' 'into' + || lk == 84700 // 'processing-instruction' 'into' + || lk == 84735 // 'true' 'into' + || lk == 85075 // 'attribute' 'is' + || lk == 85114 // 'element' 'is' + || lk == 85127 // 'false' 'is' + || lk == 85179 // 'namespace' 'is' + || lk == 85189 // 'null' 'is' + || lk == 85212 // 'processing-instruction' 'is' + || lk == 85247 // 'true' 'is' + || lk == 89683 // 'attribute' 'le' + || lk == 89722 // 'element' 'le' + || lk == 89735 // 'false' 'le' + || lk == 89787 // 'namespace' 'le' + || lk == 89797 // 'null' 'le' + || lk == 89820 // 'processing-instruction' 'le' + || lk == 89855 // 'true' 'le' + || lk == 90707 // 'attribute' 'let' + || lk == 90746 // 'element' 'let' + || lk == 90759 // 'false' 'let' + || lk == 90811 // 'namespace' 'let' + || lk == 90821 // 'null' 'let' + || lk == 90844 // 'processing-instruction' 'let' + || lk == 90879 // 'true' 'let' + || lk == 92755 // 'attribute' 'lt' + || lk == 92794 // 'element' 'lt' + || lk == 92807 // 'false' 'lt' + || lk == 92859 // 'namespace' 'lt' + || lk == 92869 // 'null' 'lt' + || lk == 92892 // 'processing-instruction' 'lt' + || lk == 92927 // 'true' 'lt' + || lk == 93779 // 'attribute' 'mod' + || lk == 93818 // 'element' 'mod' + || lk == 93831 // 'false' 'mod' + || lk == 93883 // 'namespace' 'mod' + || lk == 93893 // 'null' 'mod' + || lk == 93916 // 'processing-instruction' 'mod' + || lk == 93951 // 'true' 'mod' + || lk == 94291 // 'attribute' 'modify' + || lk == 94330 // 'element' 'modify' + || lk == 94343 // 'false' 'modify' + || lk == 94395 // 'namespace' 'modify' + || lk == 94405 // 'null' 'modify' + || lk == 94428 // 'processing-instruction' 'modify' + || lk == 94463 // 'true' 'modify' + || lk == 96851 // 'attribute' 'ne' + || lk == 96890 // 'element' 'ne' + || lk == 96903 // 'false' 'ne' + || lk == 96955 // 'namespace' 'ne' + || lk == 96965 // 'null' 'ne' + || lk == 96988 // 'processing-instruction' 'ne' + || lk == 97023 // 'true' 'ne' + || lk == 103507 // 'attribute' 'only' + || lk == 103546 // 'element' 'only' + || lk == 103559 // 'false' 'only' + || lk == 103611 // 'namespace' 'only' + || lk == 103621 // 'null' 'only' + || lk == 103644 // 'processing-instruction' 'only' + || lk == 103679 // 'true' 'only' + || lk == 104531 // 'attribute' 'or' + || lk == 104570 // 'element' 'or' + || lk == 104583 // 'false' 'or' + || lk == 104635 // 'namespace' 'or' + || lk == 104645 // 'null' 'or' + || lk == 104668 // 'processing-instruction' 'or' + || lk == 104703 // 'true' 'or' + || lk == 105043 // 'attribute' 'order' + || lk == 105082 // 'element' 'order' + || lk == 105095 // 'false' 'order' + || lk == 105147 // 'namespace' 'order' + || lk == 105157 // 'null' 'order' + || lk == 105180 // 'processing-instruction' 'order' + || lk == 105215 // 'true' 'order' + || lk == 107143 // 'false' 'paragraphs' + || lk == 107205 // 'null' 'paragraphs' + || lk == 107263 // 'true' 'paragraphs' + || lk == 114771 // 'attribute' 'return' + || lk == 114810 // 'element' 'return' + || lk == 114823 // 'false' 'return' + || lk == 114875 // 'namespace' 'return' + || lk == 114885 // 'null' 'return' + || lk == 114908 // 'processing-instruction' 'return' + || lk == 114943 // 'true' 'return' + || lk == 116819 // 'attribute' 'satisfies' + || lk == 116858 // 'element' 'satisfies' + || lk == 116871 // 'false' 'satisfies' + || lk == 116923 // 'namespace' 'satisfies' + || lk == 116933 // 'null' 'satisfies' + || lk == 116956 // 'processing-instruction' 'satisfies' + || lk == 116991 // 'true' 'satisfies' + || lk == 121479 // 'false' 'sentences' + || lk == 121541 // 'null' 'sentences' + || lk == 121599 // 'true' 'sentences' + || lk == 123475 // 'attribute' 'stable' + || lk == 123514 // 'element' 'stable' + || lk == 123527 // 'false' 'stable' + || lk == 123579 // 'namespace' 'stable' + || lk == 123589 // 'null' 'stable' + || lk == 123612 // 'processing-instruction' 'stable' + || lk == 123647 // 'true' 'stable' + || lk == 123987 // 'attribute' 'start' + || lk == 124026 // 'element' 'start' + || lk == 124039 // 'false' 'start' + || lk == 124091 // 'namespace' 'start' + || lk == 124101 // 'null' 'start' + || lk == 124124 // 'processing-instruction' 'start' + || lk == 124159 // 'true' 'start' + || lk == 129159 // 'false' 'times' + || lk == 129221 // 'null' 'times' + || lk == 129279 // 'true' 'times' + || lk == 129619 // 'attribute' 'to' + || lk == 129658 // 'element' 'to' + || lk == 129671 // 'false' 'to' + || lk == 129723 // 'namespace' 'to' + || lk == 129733 // 'null' 'to' + || lk == 129756 // 'processing-instruction' 'to' + || lk == 129791 // 'true' 'to' + || lk == 130131 // 'attribute' 'treat' + || lk == 130170 // 'element' 'treat' + || lk == 130183 // 'false' 'treat' + || lk == 130235 // 'namespace' 'treat' + || lk == 130245 // 'null' 'treat' + || lk == 130268 // 'processing-instruction' 'treat' + || lk == 130303 // 'true' 'treat' + || lk == 133203 // 'attribute' 'union' + || lk == 133242 // 'element' 'union' + || lk == 133255 // 'false' 'union' + || lk == 133307 // 'namespace' 'union' + || lk == 133317 // 'null' 'union' + || lk == 133340 // 'processing-instruction' 'union' + || lk == 133375 // 'true' 'union' + || lk == 139347 // 'attribute' 'where' + || lk == 139386 // 'element' 'where' + || lk == 139399 // 'false' 'where' + || lk == 139451 // 'namespace' 'where' + || lk == 139461 // 'null' 'where' + || lk == 139484 // 'processing-instruction' 'where' + || lk == 139519 // 'true' 'where' + || lk == 141395 // 'attribute' 'with' + || lk == 141434 // 'element' 'with' + || lk == 141447 // 'false' 'with' + || lk == 141499 // 'namespace' 'with' + || lk == 141509 // 'null' 'with' + || lk == 141532 // 'processing-instruction' 'with' + || lk == 141567 // 'true' 'with' + || lk == 142983 // 'false' 'words' + || lk == 143045 // 'null' 'words' + || lk == 143103 // 'true' 'words' + || lk == 145543 // 'false' '|' + || lk == 145605 // 'null' '|' + || lk == 145663 // 'true' '|' + || lk == 146055 // 'false' '||' + || lk == 146117 // 'null' '||' + || lk == 146175 // 'true' '||' + || lk == 146567 // 'false' '|}' + || lk == 146629 // 'null' '|}' + || lk == 146687 // 'true' '|}' + || lk == 147079 // 'false' '}' + || lk == 147141 // 'null' '}' + || lk == 147199) // 'true' '}' + { + lk = memoized(4, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_PostfixExpr(); + memoize(4, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(4, e0A, -2); + } + } + } + switch (lk) + { + case -1: + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 31: // '$' + case 32: // '$$' + case 33: // '%' + case 35: // '(' + case 55: // '<' + case 56: // '<!--' + case 60: // '<?' + case 69: // '[' + case 281: // '{' + case 283: // '{|' + case 3155: // 'attribute' EQName^Token + case 3194: // 'element' EQName^Token + case 9915: // 'namespace' NCName^Token + case 9948: // 'processing-instruction' NCName^Token + case 14854: // EQName^Token '#' + case 14919: // 'after' '#' + case 14921: // 'allowing' '#' + case 14922: // 'ancestor' '#' + case 14923: // 'ancestor-or-self' '#' + case 14924: // 'and' '#' + case 14926: // 'append' '#' + case 14927: // 'array' '#' + case 14928: // 'as' '#' + case 14929: // 'ascending' '#' + case 14930: // 'at' '#' + case 14931: // 'attribute' '#' + case 14932: // 'base-uri' '#' + case 14933: // 'before' '#' + case 14934: // 'boundary-space' '#' + case 14935: // 'break' '#' + case 14937: // 'case' '#' + case 14938: // 'cast' '#' + case 14939: // 'castable' '#' + case 14940: // 'catch' '#' + case 14942: // 'child' '#' + case 14943: // 'collation' '#' + case 14945: // 'comment' '#' + case 14946: // 'constraint' '#' + case 14947: // 'construction' '#' + case 14950: // 'context' '#' + case 14951: // 'continue' '#' + case 14952: // 'copy' '#' + case 14953: // 'copy-namespaces' '#' + case 14954: // 'count' '#' + case 14955: // 'decimal-format' '#' + case 14957: // 'declare' '#' + case 14958: // 'default' '#' + case 14959: // 'delete' '#' + case 14960: // 'descendant' '#' + case 14961: // 'descendant-or-self' '#' + case 14962: // 'descending' '#' + case 14967: // 'div' '#' + case 14968: // 'document' '#' + case 14969: // 'document-node' '#' + case 14970: // 'element' '#' + case 14971: // 'else' '#' + case 14972: // 'empty' '#' + case 14973: // 'empty-sequence' '#' + case 14974: // 'encoding' '#' + case 14975: // 'end' '#' + case 14977: // 'eq' '#' + case 14978: // 'every' '#' + case 14980: // 'except' '#' + case 14981: // 'exit' '#' + case 14982: // 'external' '#' + case 14983: // 'false' '#' + case 14984: // 'first' '#' + case 14985: // 'following' '#' + case 14986: // 'following-sibling' '#' + case 14987: // 'for' '#' + case 14990: // 'from' '#' + case 14991: // 'ft-option' '#' + case 14995: // 'function' '#' + case 14996: // 'ge' '#' + case 14998: // 'group' '#' + case 15000: // 'gt' '#' + case 15001: // 'idiv' '#' + case 15002: // 'if' '#' + case 15003: // 'import' '#' + case 15004: // 'in' '#' + case 15005: // 'index' '#' + case 15009: // 'insert' '#' + case 15010: // 'instance' '#' + case 15011: // 'integrity' '#' + case 15012: // 'intersect' '#' + case 15013: // 'into' '#' + case 15014: // 'is' '#' + case 15015: // 'item' '#' + case 15016: // 'json' '#' + case 15017: // 'json-item' '#' + case 15018: // 'jsoniq' '#' + case 15021: // 'last' '#' + case 15022: // 'lax' '#' + case 15023: // 'le' '#' + case 15025: // 'let' '#' + case 15027: // 'loop' '#' + case 15029: // 'lt' '#' + case 15031: // 'mod' '#' + case 15032: // 'modify' '#' + case 15033: // 'module' '#' + case 15035: // 'namespace' '#' + case 15036: // 'namespace-node' '#' + case 15037: // 'ne' '#' + case 15042: // 'node' '#' + case 15043: // 'nodes' '#' + case 15045: // 'null' '#' + case 15046: // 'object' '#' + case 15050: // 'only' '#' + case 15051: // 'option' '#' + case 15052: // 'or' '#' + case 15053: // 'order' '#' + case 15054: // 'ordered' '#' + case 15055: // 'ordering' '#' + case 15058: // 'parent' '#' + case 15064: // 'preceding' '#' + case 15065: // 'preceding-sibling' '#' + case 15068: // 'processing-instruction' '#' + case 15070: // 'rename' '#' + case 15071: // 'replace' '#' + case 15072: // 'return' '#' + case 15073: // 'returning' '#' + case 15074: // 'revalidation' '#' + case 15076: // 'satisfies' '#' + case 15077: // 'schema' '#' + case 15078: // 'schema-attribute' '#' + case 15079: // 'schema-element' '#' + case 15080: // 'score' '#' + case 15081: // 'select' '#' + case 15082: // 'self' '#' + case 15087: // 'sliding' '#' + case 15088: // 'some' '#' + case 15089: // 'stable' '#' + case 15090: // 'start' '#' + case 15093: // 'strict' '#' + case 15095: // 'structured-item' '#' + case 15096: // 'switch' '#' + case 15097: // 'text' '#' + case 15101: // 'to' '#' + case 15102: // 'treat' '#' + case 15103: // 'true' '#' + case 15104: // 'try' '#' + case 15105: // 'tumbling' '#' + case 15106: // 'type' '#' + case 15107: // 'typeswitch' '#' + case 15108: // 'union' '#' + case 15110: // 'unordered' '#' + case 15111: // 'updating' '#' + case 15114: // 'validate' '#' + case 15115: // 'value' '#' + case 15116: // 'variable' '#' + case 15117: // 'version' '#' + case 15120: // 'where' '#' + case 15121: // 'while' '#' + case 15124: // 'with' '#' + case 17926: // EQName^Token '(' + case 17991: // 'after' '(' + case 17993: // 'allowing' '(' + case 17994: // 'ancestor' '(' + case 17995: // 'ancestor-or-self' '(' + case 17996: // 'and' '(' + case 17998: // 'append' '(' + case 18000: // 'as' '(' + case 18001: // 'ascending' '(' + case 18002: // 'at' '(' + case 18004: // 'base-uri' '(' + case 18005: // 'before' '(' + case 18006: // 'boundary-space' '(' + case 18007: // 'break' '(' + case 18009: // 'case' '(' + case 18010: // 'cast' '(' + case 18011: // 'castable' '(' + case 18012: // 'catch' '(' + case 18014: // 'child' '(' + case 18015: // 'collation' '(' + case 18018: // 'constraint' '(' + case 18019: // 'construction' '(' + case 18022: // 'context' '(' + case 18023: // 'continue' '(' + case 18024: // 'copy' '(' + case 18025: // 'copy-namespaces' '(' + case 18026: // 'count' '(' + case 18027: // 'decimal-format' '(' + case 18029: // 'declare' '(' + case 18030: // 'default' '(' + case 18031: // 'delete' '(' + case 18032: // 'descendant' '(' + case 18033: // 'descendant-or-self' '(' + case 18034: // 'descending' '(' + case 18039: // 'div' '(' + case 18040: // 'document' '(' + case 18043: // 'else' '(' + case 18044: // 'empty' '(' + case 18046: // 'encoding' '(' + case 18047: // 'end' '(' + case 18049: // 'eq' '(' + case 18050: // 'every' '(' + case 18052: // 'except' '(' + case 18053: // 'exit' '(' + case 18054: // 'external' '(' + case 18055: // 'false' '(' + case 18056: // 'first' '(' + case 18057: // 'following' '(' + case 18058: // 'following-sibling' '(' + case 18059: // 'for' '(' + case 18062: // 'from' '(' + case 18063: // 'ft-option' '(' + case 18067: // 'function' '(' + case 18068: // 'ge' '(' + case 18070: // 'group' '(' + case 18072: // 'gt' '(' + case 18073: // 'idiv' '(' + case 18075: // 'import' '(' + case 18076: // 'in' '(' + case 18077: // 'index' '(' + case 18081: // 'insert' '(' + case 18082: // 'instance' '(' + case 18083: // 'integrity' '(' + case 18084: // 'intersect' '(' + case 18085: // 'into' '(' + case 18086: // 'is' '(' + case 18088: // 'json' '(' + case 18090: // 'jsoniq' '(' + case 18093: // 'last' '(' + case 18094: // 'lax' '(' + case 18095: // 'le' '(' + case 18097: // 'let' '(' + case 18099: // 'loop' '(' + case 18101: // 'lt' '(' + case 18103: // 'mod' '(' + case 18104: // 'modify' '(' + case 18105: // 'module' '(' + case 18107: // 'namespace' '(' + case 18109: // 'ne' '(' + case 18115: // 'nodes' '(' + case 18117: // 'null' '(' + case 18118: // 'object' '(' + case 18122: // 'only' '(' + case 18123: // 'option' '(' + case 18124: // 'or' '(' + case 18125: // 'order' '(' + case 18126: // 'ordered' '(' + case 18127: // 'ordering' '(' + case 18130: // 'parent' '(' + case 18136: // 'preceding' '(' + case 18137: // 'preceding-sibling' '(' + case 18142: // 'rename' '(' + case 18143: // 'replace' '(' + case 18144: // 'return' '(' + case 18145: // 'returning' '(' + case 18146: // 'revalidation' '(' + case 18148: // 'satisfies' '(' + case 18149: // 'schema' '(' + case 18152: // 'score' '(' + case 18153: // 'select' '(' + case 18154: // 'self' '(' + case 18159: // 'sliding' '(' + case 18160: // 'some' '(' + case 18161: // 'stable' '(' + case 18162: // 'start' '(' + case 18165: // 'strict' '(' + case 18173: // 'to' '(' + case 18174: // 'treat' '(' + case 18175: // 'true' '(' + case 18176: // 'try' '(' + case 18177: // 'tumbling' '(' + case 18178: // 'type' '(' + case 18180: // 'union' '(' + case 18182: // 'unordered' '(' + case 18183: // 'updating' '(' + case 18186: // 'validate' '(' + case 18187: // 'value' '(' + case 18188: // 'variable' '(' + case 18189: // 'version' '(' + case 18192: // 'where' '(' + case 18193: // 'while' '(' + case 18196: // 'with' '(' + case 23175: // 'false' '.' + case 23237: // 'null' '.' + case 23295: // 'true' '.' + case 37459: // 'attribute' 'allowing' + case 37498: // 'element' 'allowing' + case 37563: // 'namespace' 'allowing' + case 37596: // 'processing-instruction' 'allowing' + case 37971: // 'attribute' 'ancestor' + case 38010: // 'element' 'ancestor' + case 38075: // 'namespace' 'ancestor' + case 38108: // 'processing-instruction' 'ancestor' + case 38483: // 'attribute' 'ancestor-or-self' + case 38522: // 'element' 'ancestor-or-self' + case 38587: // 'namespace' 'ancestor-or-self' + case 38620: // 'processing-instruction' 'ancestor-or-self' + case 40019: // 'attribute' 'append' + case 40058: // 'element' 'append' + case 40123: // 'namespace' 'append' + case 40156: // 'processing-instruction' 'append' + case 40531: // 'attribute' 'array' + case 40570: // 'element' 'array' + case 42579: // 'attribute' 'attribute' + case 42618: // 'element' 'attribute' + case 42683: // 'namespace' 'attribute' + case 42716: // 'processing-instruction' 'attribute' + case 43091: // 'attribute' 'base-uri' + case 43130: // 'element' 'base-uri' + case 43195: // 'namespace' 'base-uri' + case 43228: // 'processing-instruction' 'base-uri' + case 44115: // 'attribute' 'boundary-space' + case 44154: // 'element' 'boundary-space' + case 44219: // 'namespace' 'boundary-space' + case 44252: // 'processing-instruction' 'boundary-space' + case 44627: // 'attribute' 'break' + case 44666: // 'element' 'break' + case 44731: // 'namespace' 'break' + case 44764: // 'processing-instruction' 'break' + case 47187: // 'attribute' 'catch' + case 47226: // 'element' 'catch' + case 47291: // 'namespace' 'catch' + case 47324: // 'processing-instruction' 'catch' + case 48211: // 'attribute' 'child' + case 48250: // 'element' 'child' + case 48315: // 'namespace' 'child' + case 48348: // 'processing-instruction' 'child' + case 49747: // 'attribute' 'comment' + case 49786: // 'element' 'comment' + case 49851: // 'namespace' 'comment' + case 49884: // 'processing-instruction' 'comment' + case 50259: // 'attribute' 'constraint' + case 50298: // 'element' 'constraint' + case 50363: // 'namespace' 'constraint' + case 50396: // 'processing-instruction' 'constraint' + case 50771: // 'attribute' 'construction' + case 50810: // 'element' 'construction' + case 50875: // 'namespace' 'construction' + case 50908: // 'processing-instruction' 'construction' + case 52307: // 'attribute' 'context' + case 52346: // 'element' 'context' + case 52411: // 'namespace' 'context' + case 52444: // 'processing-instruction' 'context' + case 52819: // 'attribute' 'continue' + case 52858: // 'element' 'continue' + case 52923: // 'namespace' 'continue' + case 52956: // 'processing-instruction' 'continue' + case 53331: // 'attribute' 'copy' + case 53370: // 'element' 'copy' + case 53435: // 'namespace' 'copy' + case 53468: // 'processing-instruction' 'copy' + case 53843: // 'attribute' 'copy-namespaces' + case 53882: // 'element' 'copy-namespaces' + case 53947: // 'namespace' 'copy-namespaces' + case 53980: // 'processing-instruction' 'copy-namespaces' + case 54867: // 'attribute' 'decimal-format' + case 54906: // 'element' 'decimal-format' + case 54971: // 'namespace' 'decimal-format' + case 55004: // 'processing-instruction' 'decimal-format' + case 55891: // 'attribute' 'declare' + case 55930: // 'element' 'declare' + case 55995: // 'namespace' 'declare' + case 56028: // 'processing-instruction' 'declare' + case 56915: // 'attribute' 'delete' + case 56954: // 'element' 'delete' + case 57019: // 'namespace' 'delete' + case 57052: // 'processing-instruction' 'delete' + case 57427: // 'attribute' 'descendant' + case 57466: // 'element' 'descendant' + case 57531: // 'namespace' 'descendant' + case 57564: // 'processing-instruction' 'descendant' + case 57939: // 'attribute' 'descendant-or-self' + case 57978: // 'element' 'descendant-or-self' + case 58043: // 'namespace' 'descendant-or-self' + case 58076: // 'processing-instruction' 'descendant-or-self' + case 61523: // 'attribute' 'document' + case 61562: // 'element' 'document' + case 61627: // 'namespace' 'document' + case 61660: // 'processing-instruction' 'document' + case 62035: // 'attribute' 'document-node' + case 62074: // 'element' 'document-node' + case 62139: // 'namespace' 'document-node' + case 62172: // 'processing-instruction' 'document-node' + case 62547: // 'attribute' 'element' + case 62586: // 'element' 'element' + case 62651: // 'namespace' 'element' + case 62684: // 'processing-instruction' 'element' + case 64083: // 'attribute' 'empty-sequence' + case 64122: // 'element' 'empty-sequence' + case 64187: // 'namespace' 'empty-sequence' + case 64220: // 'processing-instruction' 'empty-sequence' + case 64595: // 'attribute' 'encoding' + case 64634: // 'element' 'encoding' + case 64699: // 'namespace' 'encoding' + case 64732: // 'processing-instruction' 'encoding' + case 66643: // 'attribute' 'every' + case 66682: // 'element' 'every' + case 66747: // 'namespace' 'every' + case 66780: // 'processing-instruction' 'every' + case 68179: // 'attribute' 'exit' + case 68218: // 'element' 'exit' + case 68283: // 'namespace' 'exit' + case 68316: // 'processing-instruction' 'exit' + case 68691: // 'attribute' 'external' + case 68730: // 'element' 'external' + case 68795: // 'namespace' 'external' + case 68828: // 'processing-instruction' 'external' + case 69203: // 'attribute' 'false' + case 69242: // 'element' 'false' + case 69307: // 'namespace' 'false' + case 69340: // 'processing-instruction' 'false' + case 69715: // 'attribute' 'first' + case 69754: // 'element' 'first' + case 69819: // 'namespace' 'first' + case 69852: // 'processing-instruction' 'first' + case 70227: // 'attribute' 'following' + case 70266: // 'element' 'following' + case 70331: // 'namespace' 'following' + case 70364: // 'processing-instruction' 'following' + case 70739: // 'attribute' 'following-sibling' + case 70778: // 'element' 'following-sibling' + case 70843: // 'namespace' 'following-sibling' + case 70876: // 'processing-instruction' 'following-sibling' + case 72787: // 'attribute' 'from' + case 72826: // 'element' 'from' + case 72891: // 'namespace' 'from' + case 72924: // 'processing-instruction' 'from' + case 73299: // 'attribute' 'ft-option' + case 73338: // 'element' 'ft-option' + case 73403: // 'namespace' 'ft-option' + case 73436: // 'processing-instruction' 'ft-option' + case 75347: // 'attribute' 'function' + case 75386: // 'element' 'function' + case 75451: // 'namespace' 'function' + case 75484: // 'processing-instruction' 'function' + case 78931: // 'attribute' 'if' + case 78970: // 'element' 'if' + case 79035: // 'namespace' 'if' + case 79068: // 'processing-instruction' 'if' + case 79443: // 'attribute' 'import' + case 79482: // 'element' 'import' + case 79547: // 'namespace' 'import' + case 79580: // 'processing-instruction' 'import' + case 79955: // 'attribute' 'in' + case 79994: // 'element' 'in' + case 80059: // 'namespace' 'in' + case 80092: // 'processing-instruction' 'in' + case 80467: // 'attribute' 'index' + case 80506: // 'element' 'index' + case 80571: // 'namespace' 'index' + case 80604: // 'processing-instruction' 'index' + case 82515: // 'attribute' 'insert' + case 82554: // 'element' 'insert' + case 82619: // 'namespace' 'insert' + case 82652: // 'processing-instruction' 'insert' + case 83539: // 'attribute' 'integrity' + case 83578: // 'element' 'integrity' + case 83643: // 'namespace' 'integrity' + case 83676: // 'processing-instruction' 'integrity' + case 85587: // 'attribute' 'item' + case 85626: // 'element' 'item' + case 85691: // 'namespace' 'item' + case 85724: // 'processing-instruction' 'item' + case 86099: // 'attribute' 'json' + case 86138: // 'element' 'json' + case 86203: // 'namespace' 'json' + case 86236: // 'processing-instruction' 'json' + case 86611: // 'attribute' 'json-item' + case 86650: // 'element' 'json-item' + case 87123: // 'attribute' 'jsoniq' + case 87162: // 'element' 'jsoniq' + case 87227: // 'namespace' 'jsoniq' + case 87260: // 'processing-instruction' 'jsoniq' + case 88659: // 'attribute' 'last' + case 88698: // 'element' 'last' + case 88763: // 'namespace' 'last' + case 88796: // 'processing-instruction' 'last' + case 89171: // 'attribute' 'lax' + case 89210: // 'element' 'lax' + case 89275: // 'namespace' 'lax' + case 89308: // 'processing-instruction' 'lax' + case 91731: // 'attribute' 'loop' + case 91770: // 'element' 'loop' + case 91835: // 'namespace' 'loop' + case 91868: // 'processing-instruction' 'loop' + case 94803: // 'attribute' 'module' + case 94842: // 'element' 'module' + case 94907: // 'namespace' 'module' + case 94940: // 'processing-instruction' 'module' + case 95827: // 'attribute' 'namespace' + case 95866: // 'element' 'namespace' + case 95931: // 'namespace' 'namespace' + case 95964: // 'processing-instruction' 'namespace' + case 96339: // 'attribute' 'namespace-node' + case 96378: // 'element' 'namespace-node' + case 96443: // 'namespace' 'namespace-node' + case 96476: // 'processing-instruction' 'namespace-node' + case 99411: // 'attribute' 'node' + case 99450: // 'element' 'node' + case 99515: // 'namespace' 'node' + case 99548: // 'processing-instruction' 'node' + case 99923: // 'attribute' 'nodes' + case 99962: // 'element' 'nodes' + case 100027: // 'namespace' 'nodes' + case 100060: // 'processing-instruction' 'nodes' + case 100947: // 'attribute' 'null' + case 100986: // 'element' 'null' + case 101051: // 'namespace' 'null' + case 101084: // 'processing-instruction' 'null' + case 101459: // 'attribute' 'object' + case 101498: // 'element' 'object' + case 101563: // 'namespace' 'object' + case 101596: // 'processing-instruction' 'object' + case 104019: // 'attribute' 'option' + case 104058: // 'element' 'option' + case 104123: // 'namespace' 'option' + case 104156: // 'processing-instruction' 'option' + case 105555: // 'attribute' 'ordered' + case 105594: // 'element' 'ordered' + case 105659: // 'namespace' 'ordered' + case 105692: // 'processing-instruction' 'ordered' + case 106067: // 'attribute' 'ordering' + case 106106: // 'element' 'ordering' + case 106171: // 'namespace' 'ordering' + case 106204: // 'processing-instruction' 'ordering' + case 107603: // 'attribute' 'parent' + case 107642: // 'element' 'parent' + case 107707: // 'namespace' 'parent' + case 107740: // 'processing-instruction' 'parent' + case 110675: // 'attribute' 'preceding' + case 110714: // 'element' 'preceding' + case 110779: // 'namespace' 'preceding' + case 110812: // 'processing-instruction' 'preceding' + case 111187: // 'attribute' 'preceding-sibling' + case 111226: // 'element' 'preceding-sibling' + case 111291: // 'namespace' 'preceding-sibling' + case 111324: // 'processing-instruction' 'preceding-sibling' + case 112723: // 'attribute' 'processing-instruction' + case 112762: // 'element' 'processing-instruction' + case 112827: // 'namespace' 'processing-instruction' + case 112860: // 'processing-instruction' 'processing-instruction' + case 113747: // 'attribute' 'rename' + case 113786: // 'element' 'rename' + case 113851: // 'namespace' 'rename' + case 113884: // 'processing-instruction' 'rename' + case 114259: // 'attribute' 'replace' + case 114298: // 'element' 'replace' + case 114363: // 'namespace' 'replace' + case 114396: // 'processing-instruction' 'replace' + case 115283: // 'attribute' 'returning' + case 115322: // 'element' 'returning' + case 115387: // 'namespace' 'returning' + case 115420: // 'processing-instruction' 'returning' + case 115795: // 'attribute' 'revalidation' + case 115834: // 'element' 'revalidation' + case 115899: // 'namespace' 'revalidation' + case 115932: // 'processing-instruction' 'revalidation' + case 117331: // 'attribute' 'schema' + case 117370: // 'element' 'schema' + case 117435: // 'namespace' 'schema' + case 117468: // 'processing-instruction' 'schema' + case 117843: // 'attribute' 'schema-attribute' + case 117882: // 'element' 'schema-attribute' + case 117947: // 'namespace' 'schema-attribute' + case 117980: // 'processing-instruction' 'schema-attribute' + case 118355: // 'attribute' 'schema-element' + case 118394: // 'element' 'schema-element' + case 118459: // 'namespace' 'schema-element' + case 118492: // 'processing-instruction' 'schema-element' + case 118867: // 'attribute' 'score' + case 118906: // 'element' 'score' + case 118971: // 'namespace' 'score' + case 119004: // 'processing-instruction' 'score' + case 119379: // 'attribute' 'select' + case 119418: // 'element' 'select' + case 119483: // 'namespace' 'select' + case 119516: // 'processing-instruction' 'select' + case 119891: // 'attribute' 'self' + case 119930: // 'element' 'self' + case 119995: // 'namespace' 'self' + case 120028: // 'processing-instruction' 'self' + case 122451: // 'attribute' 'sliding' + case 122490: // 'element' 'sliding' + case 122555: // 'namespace' 'sliding' + case 122588: // 'processing-instruction' 'sliding' + case 122963: // 'attribute' 'some' + case 123002: // 'element' 'some' + case 123067: // 'namespace' 'some' + case 123100: // 'processing-instruction' 'some' + case 125523: // 'attribute' 'strict' + case 125562: // 'element' 'strict' + case 125627: // 'namespace' 'strict' + case 125660: // 'processing-instruction' 'strict' + case 126547: // 'attribute' 'structured-item' + case 126586: // 'element' 'structured-item' + case 127059: // 'attribute' 'switch' + case 127098: // 'element' 'switch' + case 127163: // 'namespace' 'switch' + case 127196: // 'processing-instruction' 'switch' + case 127571: // 'attribute' 'text' + case 127610: // 'element' 'text' + case 127675: // 'namespace' 'text' + case 127708: // 'processing-instruction' 'text' + case 130643: // 'attribute' 'true' + case 130682: // 'element' 'true' + case 130747: // 'namespace' 'true' + case 130780: // 'processing-instruction' 'true' + case 131155: // 'attribute' 'try' + case 131194: // 'element' 'try' + case 131259: // 'namespace' 'try' + case 131292: // 'processing-instruction' 'try' + case 131667: // 'attribute' 'tumbling' + case 131706: // 'element' 'tumbling' + case 131771: // 'namespace' 'tumbling' + case 131804: // 'processing-instruction' 'tumbling' + case 132179: // 'attribute' 'type' + case 132218: // 'element' 'type' + case 132283: // 'namespace' 'type' + case 132316: // 'processing-instruction' 'type' + case 132691: // 'attribute' 'typeswitch' + case 132730: // 'element' 'typeswitch' + case 132795: // 'namespace' 'typeswitch' + case 132828: // 'processing-instruction' 'typeswitch' + case 134227: // 'attribute' 'unordered' + case 134266: // 'element' 'unordered' + case 134331: // 'namespace' 'unordered' + case 134364: // 'processing-instruction' 'unordered' + case 134739: // 'attribute' 'updating' + case 134778: // 'element' 'updating' + case 134843: // 'namespace' 'updating' + case 134876: // 'processing-instruction' 'updating' + case 136275: // 'attribute' 'validate' + case 136314: // 'element' 'validate' + case 136379: // 'namespace' 'validate' + case 136412: // 'processing-instruction' 'validate' + case 136787: // 'attribute' 'value' + case 136826: // 'element' 'value' + case 136891: // 'namespace' 'value' + case 136924: // 'processing-instruction' 'value' + case 137299: // 'attribute' 'variable' + case 137338: // 'element' 'variable' + case 137403: // 'namespace' 'variable' + case 137436: // 'processing-instruction' 'variable' + case 137811: // 'attribute' 'version' + case 137850: // 'element' 'version' + case 137915: // 'namespace' 'version' + case 137948: // 'processing-instruction' 'version' + case 139859: // 'attribute' 'while' + case 139898: // 'element' 'while' + case 139963: // 'namespace' 'while' + case 139996: // 'processing-instruction' 'while' + case 143955: // 'attribute' '{' + case 143969: // 'comment' '{' + case 143992: // 'document' '{' + case 143994: // 'element' '{' + case 144059: // 'namespace' '{' + case 144078: // 'ordered' '{' + case 144092: // 'processing-instruction' '{' + case 144121: // 'text' '{' + case 144134: // 'unordered' '{' + try_PostfixExpr(); + break; + case -3: + break; + default: + try_AxisStep(); + } + } + + function parse_AxisStep() + { + eventHandler.startNonterminal("AxisStep", e0); + switch (l1) + { + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + lookahead2W(231); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 46: // '..' + case 26698: // 'ancestor' '::' + case 26699: // 'ancestor-or-self' '::' + case 26834: // 'parent' '::' + case 26840: // 'preceding' '::' + case 26841: // 'preceding-sibling' '::' + parse_ReverseStep(); + break; + default: + parse_ForwardStep(); + } + lookahead1W(227); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | 'and' | + // 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | 'castable' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + whitespace(); + parse_PredicateList(); + eventHandler.endNonterminal("AxisStep", e0); + } + + function try_AxisStep() + { + switch (l1) + { + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + lookahead2W(231); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 46: // '..' + case 26698: // 'ancestor' '::' + case 26699: // 'ancestor-or-self' '::' + case 26834: // 'parent' '::' + case 26840: // 'preceding' '::' + case 26841: // 'preceding-sibling' '::' + try_ReverseStep(); + break; + default: + try_ForwardStep(); + } + lookahead1W(227); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | 'and' | + // 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | 'castable' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + try_PredicateList(); + } + + function parse_ForwardStep() + { + eventHandler.startNonterminal("ForwardStep", e0); + switch (l1) + { + case 83: // 'attribute' + lookahead2W(235); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + case 94: // 'child' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 137: // 'following' + case 138: // 'following-sibling' + case 234: // 'self' + lookahead2W(231); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 26707: // 'attribute' '::' + case 26718: // 'child' '::' + case 26736: // 'descendant' '::' + case 26737: // 'descendant-or-self' '::' + case 26761: // 'following' '::' + case 26762: // 'following-sibling' '::' + case 26858: // 'self' '::' + parse_ForwardAxis(); + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_NodeTest(); + break; + default: + parse_AbbrevForwardStep(); + } + eventHandler.endNonterminal("ForwardStep", e0); + } + + function try_ForwardStep() + { + switch (l1) + { + case 83: // 'attribute' + lookahead2W(235); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + case 94: // 'child' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 137: // 'following' + case 138: // 'following-sibling' + case 234: // 'self' + lookahead2W(231); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 26707: // 'attribute' '::' + case 26718: // 'child' '::' + case 26736: // 'descendant' '::' + case 26737: // 'descendant-or-self' '::' + case 26761: // 'following' '::' + case 26762: // 'following-sibling' '::' + case 26858: // 'self' '::' + try_ForwardAxis(); + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_NodeTest(); + break; + default: + try_AbbrevForwardStep(); + } + } + + function parse_ForwardAxis() + { + eventHandler.startNonterminal("ForwardAxis", e0); + switch (l1) + { + case 94: // 'child' + shift(94); // 'child' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + case 112: // 'descendant' + shift(112); // 'descendant' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + case 83: // 'attribute' + shift(83); // 'attribute' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + case 234: // 'self' + shift(234); // 'self' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + case 113: // 'descendant-or-self' + shift(113); // 'descendant-or-self' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + case 138: // 'following-sibling' + shift(138); // 'following-sibling' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + default: + shift(137); // 'following' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + } + eventHandler.endNonterminal("ForwardAxis", e0); + } + + function try_ForwardAxis() + { + switch (l1) + { + case 94: // 'child' + shiftT(94); // 'child' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + case 112: // 'descendant' + shiftT(112); // 'descendant' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + case 83: // 'attribute' + shiftT(83); // 'attribute' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + case 234: // 'self' + shiftT(234); // 'self' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + case 113: // 'descendant-or-self' + shiftT(113); // 'descendant-or-self' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + case 138: // 'following-sibling' + shiftT(138); // 'following-sibling' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + default: + shiftT(137); // 'following' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + } + } + + function parse_AbbrevForwardStep() + { + eventHandler.startNonterminal("AbbrevForwardStep", e0); + if (l1 == 67) // '@' + { + shift(67); // '@' + } + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_NodeTest(); + eventHandler.endNonterminal("AbbrevForwardStep", e0); + } + + function try_AbbrevForwardStep() + { + if (l1 == 67) // '@' + { + shiftT(67); // '@' + } + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_NodeTest(); + } + + function parse_ReverseStep() + { + eventHandler.startNonterminal("ReverseStep", e0); + switch (l1) + { + case 46: // '..' + parse_AbbrevReverseStep(); + break; + default: + parse_ReverseAxis(); + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_NodeTest(); + } + eventHandler.endNonterminal("ReverseStep", e0); + } + + function try_ReverseStep() + { + switch (l1) + { + case 46: // '..' + try_AbbrevReverseStep(); + break; + default: + try_ReverseAxis(); + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_NodeTest(); + } + } + + function parse_ReverseAxis() + { + eventHandler.startNonterminal("ReverseAxis", e0); + switch (l1) + { + case 210: // 'parent' + shift(210); // 'parent' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + case 74: // 'ancestor' + shift(74); // 'ancestor' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + case 217: // 'preceding-sibling' + shift(217); // 'preceding-sibling' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + case 216: // 'preceding' + shift(216); // 'preceding' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + break; + default: + shift(75); // 'ancestor-or-self' + lookahead1W(27); // S^WS | '(:' | '::' + shift(52); // '::' + } + eventHandler.endNonterminal("ReverseAxis", e0); + } + + function try_ReverseAxis() + { + switch (l1) + { + case 210: // 'parent' + shiftT(210); // 'parent' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + case 74: // 'ancestor' + shiftT(74); // 'ancestor' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + case 217: // 'preceding-sibling' + shiftT(217); // 'preceding-sibling' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + case 216: // 'preceding' + shiftT(216); // 'preceding' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + break; + default: + shiftT(75); // 'ancestor-or-self' + lookahead1W(27); // S^WS | '(:' | '::' + shiftT(52); // '::' + } + } + + function parse_AbbrevReverseStep() + { + eventHandler.startNonterminal("AbbrevReverseStep", e0); + shift(46); // '..' + eventHandler.endNonterminal("AbbrevReverseStep", e0); + } + + function try_AbbrevReverseStep() + { + shiftT(46); // '..' + } + + function parse_NodeTest() + { + eventHandler.startNonterminal("NodeTest", e0); + switch (l1) + { + case 83: // 'attribute' + case 97: // 'comment' + case 121: // 'document-node' + case 122: // 'element' + case 188: // 'namespace-node' + case 194: // 'node' + case 220: // 'processing-instruction' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 249: // 'text' + lookahead2W(230); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 18003: // 'attribute' '(' + case 18017: // 'comment' '(' + case 18041: // 'document-node' '(' + case 18042: // 'element' '(' + case 18108: // 'namespace-node' '(' + case 18114: // 'node' '(' + case 18140: // 'processing-instruction' '(' + case 18150: // 'schema-attribute' '(' + case 18151: // 'schema-element' '(' + case 18169: // 'text' '(' + parse_KindTest(); + break; + default: + parse_NameTest(); + } + eventHandler.endNonterminal("NodeTest", e0); + } + + function try_NodeTest() + { + switch (l1) + { + case 83: // 'attribute' + case 97: // 'comment' + case 121: // 'document-node' + case 122: // 'element' + case 188: // 'namespace-node' + case 194: // 'node' + case 220: // 'processing-instruction' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 249: // 'text' + lookahead2W(230); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 18003: // 'attribute' '(' + case 18017: // 'comment' '(' + case 18041: // 'document-node' '(' + case 18042: // 'element' '(' + case 18108: // 'namespace-node' '(' + case 18114: // 'node' '(' + case 18140: // 'processing-instruction' '(' + case 18150: // 'schema-attribute' '(' + case 18151: // 'schema-element' '(' + case 18169: // 'text' '(' + try_KindTest(); + break; + default: + try_NameTest(); + } + } + + function parse_NameTest() + { + eventHandler.startNonterminal("NameTest", e0); + switch (l1) + { + case 5: // Wildcard + shift(5); // Wildcard + break; + default: + parse_EQName(); + } + eventHandler.endNonterminal("NameTest", e0); + } + + function try_NameTest() + { + switch (l1) + { + case 5: // Wildcard + shiftT(5); // Wildcard + break; + default: + try_EQName(); + } + } + + function parse_PostfixExpr() + { + eventHandler.startNonterminal("PostfixExpr", e0); + parse_PrimaryExpr(); + for (;;) + { + lookahead1W(234); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '.' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 35 // '(' + && l1 != 45 // '.' + && l1 != 69) // '[' + { + break; + } + switch (l1) + { + case 69: // '[' + lookahead2W(272); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 35397) // '[' '[' + { + lk = memoized(5, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_Predicate(); + lk = -1; + } + catch (p1A) + { + lk = -4; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(5, e0, lk); + } + } + switch (lk) + { + case 35: // '(' + whitespace(); + parse_ArgumentList(); + break; + case 45: // '.' + whitespace(); + parse_ObjectLookup(); + break; + case -4: + whitespace(); + parse_ArrayLookup(); + break; + case 35909: // '[' ']' + whitespace(); + parse_ArrayUnboxing(); + break; + default: + whitespace(); + parse_Predicate(); + } + } + eventHandler.endNonterminal("PostfixExpr", e0); + } + + function try_PostfixExpr() + { + try_PrimaryExpr(); + for (;;) + { + lookahead1W(234); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '.' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 35 // '(' + && l1 != 45 // '.' + && l1 != 69) // '[' + { + break; + } + switch (l1) + { + case 69: // '[' + lookahead2W(272); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 35397) // '[' '[' + { + lk = memoized(5, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_Predicate(); + memoize(5, e0A, -1); + lk = -6; + } + catch (p1A) + { + lk = -4; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(5, e0A, -4); + } + } + } + switch (lk) + { + case 35: // '(' + try_ArgumentList(); + break; + case 45: // '.' + try_ObjectLookup(); + break; + case -4: + try_ArrayLookup(); + break; + case 35909: // '[' ']' + try_ArrayUnboxing(); + break; + case -6: + break; + default: + try_Predicate(); + } + } + } + + function parse_ObjectLookup() + { + eventHandler.startNonterminal("ObjectLookup", e0); + shift(45); // '.' + lookahead1W(250); // StringLiteral | NCName^Token | S^WS | '$' | '$$' | '(' | '(:' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + case 35: // '(' + whitespace(); + parse_ParenthesizedExpr(); + break; + case 31: // '$' + whitespace(); + parse_VarRef(); + break; + case 32: // '$$' + whitespace(); + parse_ContextItemExpr(); + break; + default: + whitespace(); + parse_NCName(); + } + eventHandler.endNonterminal("ObjectLookup", e0); + } + + function try_ObjectLookup() + { + shiftT(45); // '.' + lookahead1W(250); // StringLiteral | NCName^Token | S^WS | '$' | '$$' | '(' | '(:' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + case 35: // '(' + try_ParenthesizedExpr(); + break; + case 31: // '$' + try_VarRef(); + break; + case 32: // '$$' + try_ContextItemExpr(); + break; + default: + try_NCName(); + } + } + + function parse_ArrayLookup() + { + eventHandler.startNonterminal("ArrayLookup", e0); + shift(69); // '[' + lookahead1W(31); // S^WS | '(:' | '[' + shift(69); // '[' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(70); // ']' + lookahead1W(32); // S^WS | '(:' | ']' + shift(70); // ']' + eventHandler.endNonterminal("ArrayLookup", e0); + } + + function try_ArrayLookup() + { + shiftT(69); // '[' + lookahead1W(31); // S^WS | '(:' | '[' + shiftT(69); // '[' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(70); // ']' + lookahead1W(32); // S^WS | '(:' | ']' + shiftT(70); // ']' + } + + function parse_ArrayUnboxing() + { + eventHandler.startNonterminal("ArrayUnboxing", e0); + shift(69); // '[' + lookahead1W(32); // S^WS | '(:' | ']' + shift(70); // ']' + eventHandler.endNonterminal("ArrayUnboxing", e0); + } + + function try_ArrayUnboxing() + { + shiftT(69); // '[' + lookahead1W(32); // S^WS | '(:' | ']' + shiftT(70); // ']' + } + + function parse_ArgumentList() + { + eventHandler.startNonterminal("ArgumentList", e0); + shift(35); // '(' + lookahead1W(279); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + if (l1 != 38) // ')' + { + whitespace(); + parse_Argument(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(271); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Argument(); + } + } + shift(38); // ')' + eventHandler.endNonterminal("ArgumentList", e0); + } + + function try_ArgumentList() + { + shiftT(35); // '(' + lookahead1W(279); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + if (l1 != 38) // ')' + { + try_Argument(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(271); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Argument(); + } + } + shiftT(38); // ')' + } + + function parse_PredicateList() + { + eventHandler.startNonterminal("PredicateList", e0); + for (;;) + { + lookahead1W(227); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | 'and' | + // 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | 'castable' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 69) // '[' + { + break; + } + whitespace(); + parse_Predicate(); + } + eventHandler.endNonterminal("PredicateList", e0); + } + + function try_PredicateList() + { + for (;;) + { + lookahead1W(227); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | 'and' | + // 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | 'castable' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 69) // '[' + { + break; + } + try_Predicate(); + } + } + + function parse_Predicate() + { + eventHandler.startNonterminal("Predicate", e0); + shift(69); // '[' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(70); // ']' + eventHandler.endNonterminal("Predicate", e0); + } + + function try_Predicate() + { + shiftT(69); // '[' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(70); // ']' + } + + function parse_Literal() + { + eventHandler.startNonterminal("Literal", e0); + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + case 135: // 'false' + case 255: // 'true' + parse_BooleanLiteral(); + break; + case 197: // 'null' + parse_NullLiteral(); + break; + default: + parse_NumericLiteral(); + } + eventHandler.endNonterminal("Literal", e0); + } + + function try_Literal() + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + case 135: // 'false' + case 255: // 'true' + try_BooleanLiteral(); + break; + case 197: // 'null' + try_NullLiteral(); + break; + default: + try_NumericLiteral(); + } + } + + function parse_BooleanLiteral() + { + eventHandler.startNonterminal("BooleanLiteral", e0); + switch (l1) + { + case 255: // 'true' + shift(255); // 'true' + break; + default: + shift(135); // 'false' + } + eventHandler.endNonterminal("BooleanLiteral", e0); + } + + function try_BooleanLiteral() + { + switch (l1) + { + case 255: // 'true' + shiftT(255); // 'true' + break; + default: + shiftT(135); // 'false' + } + } + + function parse_NullLiteral() + { + eventHandler.startNonterminal("NullLiteral", e0); + shift(197); // 'null' + eventHandler.endNonterminal("NullLiteral", e0); + } + + function try_NullLiteral() + { + shiftT(197); // 'null' + } + + function parse_NumericLiteral() + { + eventHandler.startNonterminal("NumericLiteral", e0); + switch (l1) + { + case 8: // IntegerLiteral + shift(8); // IntegerLiteral + break; + case 9: // DecimalLiteral + shift(9); // DecimalLiteral + break; + default: + shift(10); // DoubleLiteral + } + eventHandler.endNonterminal("NumericLiteral", e0); + } + + function try_NumericLiteral() + { + switch (l1) + { + case 8: // IntegerLiteral + shiftT(8); // IntegerLiteral + break; + case 9: // DecimalLiteral + shiftT(9); // DecimalLiteral + break; + default: + shiftT(10); // DoubleLiteral + } + } + + function parse_VarRef() + { + eventHandler.startNonterminal("VarRef", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("VarRef", e0); + } + + function try_VarRef() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + } + + function parse_VarName() + { + eventHandler.startNonterminal("VarName", e0); + parse_EQName(); + eventHandler.endNonterminal("VarName", e0); + } + + function try_VarName() + { + try_EQName(); + } + + function parse_ParenthesizedExpr() + { + eventHandler.startNonterminal("ParenthesizedExpr", e0); + shift(35); // '(' + lookahead1W(269); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + if (l1 != 38) // ')' + { + whitespace(); + parse_Expr(); + } + shift(38); // ')' + eventHandler.endNonterminal("ParenthesizedExpr", e0); + } + + function try_ParenthesizedExpr() + { + shiftT(35); // '(' + lookahead1W(269); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + if (l1 != 38) // ')' + { + try_Expr(); + } + shiftT(38); // ')' + } + + function parse_ContextItemExpr() + { + eventHandler.startNonterminal("ContextItemExpr", e0); + shift(32); // '$$' + eventHandler.endNonterminal("ContextItemExpr", e0); + } + + function try_ContextItemExpr() + { + shiftT(32); // '$$' + } + + function parse_OrderedExpr() + { + eventHandler.startNonterminal("OrderedExpr", e0); + shift(206); // 'ordered' + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("OrderedExpr", e0); + } + + function try_OrderedExpr() + { + shiftT(206); // 'ordered' + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + } + + function parse_UnorderedExpr() + { + eventHandler.startNonterminal("UnorderedExpr", e0); + shift(262); // 'unordered' + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("UnorderedExpr", e0); + } + + function try_UnorderedExpr() + { + shiftT(262); // 'unordered' + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + } + + function parse_FunctionCall() + { + eventHandler.startNonterminal("FunctionCall", e0); + parse_FunctionName(); + lookahead1W(22); // S^WS | '(' | '(:' + whitespace(); + parse_ArgumentList(); + eventHandler.endNonterminal("FunctionCall", e0); + } + + function try_FunctionCall() + { + try_FunctionName(); + lookahead1W(22); // S^WS | '(' | '(:' + try_ArgumentList(); + } + + function parse_Argument() + { + eventHandler.startNonterminal("Argument", e0); + switch (l1) + { + case 65: // '?' + parse_ArgumentPlaceholder(); + break; + default: + parse_ExprSingle(); + } + eventHandler.endNonterminal("Argument", e0); + } + + function try_Argument() + { + switch (l1) + { + case 65: // '?' + try_ArgumentPlaceholder(); + break; + default: + try_ExprSingle(); + } + } + + function parse_ArgumentPlaceholder() + { + eventHandler.startNonterminal("ArgumentPlaceholder", e0); + shift(65); // '?' + eventHandler.endNonterminal("ArgumentPlaceholder", e0); + } + + function try_ArgumentPlaceholder() + { + shiftT(65); // '?' + } + + function parse_Constructor() + { + eventHandler.startNonterminal("Constructor", e0); + switch (l1) + { + case 55: // '<' + case 56: // '<!--' + case 60: // '<?' + parse_DirectConstructor(); + break; + default: + parse_ComputedConstructor(); + } + eventHandler.endNonterminal("Constructor", e0); + } + + function try_Constructor() + { + switch (l1) + { + case 55: // '<' + case 56: // '<!--' + case 60: // '<?' + try_DirectConstructor(); + break; + default: + try_ComputedConstructor(); + } + } + + function parse_DirectConstructor() + { + eventHandler.startNonterminal("DirectConstructor", e0); + switch (l1) + { + case 55: // '<' + parse_DirElemConstructor(); + break; + case 56: // '<!--' + parse_DirCommentConstructor(); + break; + default: + parse_DirPIConstructor(); + } + eventHandler.endNonterminal("DirectConstructor", e0); + } + + function try_DirectConstructor() + { + switch (l1) + { + case 55: // '<' + try_DirElemConstructor(); + break; + case 56: // '<!--' + try_DirCommentConstructor(); + break; + default: + try_DirPIConstructor(); + } + } + + function parse_DirElemConstructor() + { + eventHandler.startNonterminal("DirElemConstructor", e0); + shift(55); // '<' + lookahead1(4); // QName + shift(20); // QName + parse_DirAttributeList(); + switch (l1) + { + case 49: // '/>' + shift(49); // '/>' + break; + default: + shift(62); // '>' + for (;;) + { + lookahead1(196); // CDataSection | PredefinedEntityRef | ElementContentChar | CharRef | '<' | + // '<!--' | '</' | '<?' | '{' | '{{' | '}}' + if (l1 == 57) // '</' + { + break; + } + parse_DirElemContent(); + } + shift(57); // '</' + lookahead1(4); // QName + shift(20); // QName + lookahead1(12); // S | '>' + if (l1 == 21) // S + { + shift(21); // S + } + lookahead1(8); // '>' + shift(62); // '>' + } + eventHandler.endNonterminal("DirElemConstructor", e0); + } + + function try_DirElemConstructor() + { + shiftT(55); // '<' + lookahead1(4); // QName + shiftT(20); // QName + try_DirAttributeList(); + switch (l1) + { + case 49: // '/>' + shiftT(49); // '/>' + break; + default: + shiftT(62); // '>' + for (;;) + { + lookahead1(196); // CDataSection | PredefinedEntityRef | ElementContentChar | CharRef | '<' | + // '<!--' | '</' | '<?' | '{' | '{{' | '}}' + if (l1 == 57) // '</' + { + break; + } + try_DirElemContent(); + } + shiftT(57); // '</' + lookahead1(4); // QName + shiftT(20); // QName + lookahead1(12); // S | '>' + if (l1 == 21) // S + { + shiftT(21); // S + } + lookahead1(8); // '>' + shiftT(62); // '>' + } + } + + function parse_DirAttributeList() + { + eventHandler.startNonterminal("DirAttributeList", e0); + for (;;) + { + lookahead1(19); // S | '/>' | '>' + if (l1 != 21) // S + { + break; + } + shift(21); // S + lookahead1(94); // QName | S | '/>' | '>' + if (l1 == 20) // QName + { + shift(20); // QName + lookahead1(11); // S | '=' + if (l1 == 21) // S + { + shift(21); // S + } + lookahead1(7); // '=' + shift(61); // '=' + lookahead1(18); // S | '"' | "'" + if (l1 == 21) // S + { + shift(21); // S + } + parse_DirAttributeValue(); + } + } + eventHandler.endNonterminal("DirAttributeList", e0); + } + + function try_DirAttributeList() + { + for (;;) + { + lookahead1(19); // S | '/>' | '>' + if (l1 != 21) // S + { + break; + } + shiftT(21); // S + lookahead1(94); // QName | S | '/>' | '>' + if (l1 == 20) // QName + { + shiftT(20); // QName + lookahead1(11); // S | '=' + if (l1 == 21) // S + { + shiftT(21); // S + } + lookahead1(7); // '=' + shiftT(61); // '=' + lookahead1(18); // S | '"' | "'" + if (l1 == 21) // S + { + shiftT(21); // S + } + try_DirAttributeValue(); + } + } + } + + function parse_DirAttributeValue() + { + eventHandler.startNonterminal("DirAttributeValue", e0); + lookahead1(14); // '"' | "'" + switch (l1) + { + case 28: // '"' + shift(28); // '"' + for (;;) + { + lookahead1(185); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | '"' | '{' | + // '{{' | '}}' + if (l1 == 28) // '"' + { + break; + } + switch (l1) + { + case 13: // EscapeQuot + shift(13); // EscapeQuot + break; + default: + parse_QuotAttrValueContent(); + } + } + shift(28); // '"' + break; + default: + shift(34); // "'" + for (;;) + { + lookahead1(186); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | "'" | '{' | + // '{{' | '}}' + if (l1 == 34) // "'" + { + break; + } + switch (l1) + { + case 14: // EscapeApos + shift(14); // EscapeApos + break; + default: + parse_AposAttrValueContent(); + } + } + shift(34); // "'" + } + eventHandler.endNonterminal("DirAttributeValue", e0); + } + + function try_DirAttributeValue() + { + lookahead1(14); // '"' | "'" + switch (l1) + { + case 28: // '"' + shiftT(28); // '"' + for (;;) + { + lookahead1(185); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | '"' | '{' | + // '{{' | '}}' + if (l1 == 28) // '"' + { + break; + } + switch (l1) + { + case 13: // EscapeQuot + shiftT(13); // EscapeQuot + break; + default: + try_QuotAttrValueContent(); + } + } + shiftT(28); // '"' + break; + default: + shiftT(34); // "'" + for (;;) + { + lookahead1(186); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | "'" | '{' | + // '{{' | '}}' + if (l1 == 34) // "'" + { + break; + } + switch (l1) + { + case 14: // EscapeApos + shiftT(14); // EscapeApos + break; + default: + try_AposAttrValueContent(); + } + } + shiftT(34); // "'" + } + } + + function parse_QuotAttrValueContent() + { + eventHandler.startNonterminal("QuotAttrValueContent", e0); + switch (l1) + { + case 16: // QuotAttrContentChar + shift(16); // QuotAttrContentChar + break; + default: + parse_CommonContent(); + } + eventHandler.endNonterminal("QuotAttrValueContent", e0); + } + + function try_QuotAttrValueContent() + { + switch (l1) + { + case 16: // QuotAttrContentChar + shiftT(16); // QuotAttrContentChar + break; + default: + try_CommonContent(); + } + } + + function parse_AposAttrValueContent() + { + eventHandler.startNonterminal("AposAttrValueContent", e0); + switch (l1) + { + case 17: // AposAttrContentChar + shift(17); // AposAttrContentChar + break; + default: + parse_CommonContent(); + } + eventHandler.endNonterminal("AposAttrValueContent", e0); + } + + function try_AposAttrValueContent() + { + switch (l1) + { + case 17: // AposAttrContentChar + shiftT(17); // AposAttrContentChar + break; + default: + try_CommonContent(); + } + } + + function parse_DirElemContent() + { + eventHandler.startNonterminal("DirElemContent", e0); + switch (l1) + { + case 55: // '<' + case 56: // '<!--' + case 60: // '<?' + parse_DirectConstructor(); + break; + case 4: // CDataSection + shift(4); // CDataSection + break; + case 15: // ElementContentChar + shift(15); // ElementContentChar + break; + default: + parse_CommonContent(); + } + eventHandler.endNonterminal("DirElemContent", e0); + } + + function try_DirElemContent() + { + switch (l1) + { + case 55: // '<' + case 56: // '<!--' + case 60: // '<?' + try_DirectConstructor(); + break; + case 4: // CDataSection + shiftT(4); // CDataSection + break; + case 15: // ElementContentChar + shiftT(15); // ElementContentChar + break; + default: + try_CommonContent(); + } + } + + function parse_DirCommentConstructor() + { + eventHandler.startNonterminal("DirCommentConstructor", e0); + shift(56); // '<!--' + lookahead1(1); // DirCommentContents + shift(2); // DirCommentContents + lookahead1(6); // '-->' + shift(44); // '-->' + eventHandler.endNonterminal("DirCommentConstructor", e0); + } + + function try_DirCommentConstructor() + { + shiftT(56); // '<!--' + lookahead1(1); // DirCommentContents + shiftT(2); // DirCommentContents + lookahead1(6); // '-->' + shiftT(44); // '-->' + } + + function parse_DirPIConstructor() + { + eventHandler.startNonterminal("DirPIConstructor", e0); + shift(60); // '<?' + lookahead1(3); // PITarget + shift(18); // PITarget + lookahead1(13); // S | '?>' + if (l1 == 21) // S + { + shift(21); // S + lookahead1(2); // DirPIContents + shift(3); // DirPIContents + } + lookahead1(9); // '?>' + shift(66); // '?>' + eventHandler.endNonterminal("DirPIConstructor", e0); + } + + function try_DirPIConstructor() + { + shiftT(60); // '<?' + lookahead1(3); // PITarget + shiftT(18); // PITarget + lookahead1(13); // S | '?>' + if (l1 == 21) // S + { + shiftT(21); // S + lookahead1(2); // DirPIContents + shiftT(3); // DirPIContents + } + lookahead1(9); // '?>' + shiftT(66); // '?>' + } + + function parse_ComputedConstructor() + { + eventHandler.startNonterminal("ComputedConstructor", e0); + switch (l1) + { + case 120: // 'document' + parse_CompDocConstructor(); + break; + case 122: // 'element' + parse_CompElemConstructor(); + break; + case 83: // 'attribute' + parse_CompAttrConstructor(); + break; + case 187: // 'namespace' + parse_CompNamespaceConstructor(); + break; + case 249: // 'text' + parse_CompTextConstructor(); + break; + case 97: // 'comment' + parse_CompCommentConstructor(); + break; + default: + parse_CompPIConstructor(); + } + eventHandler.endNonterminal("ComputedConstructor", e0); + } + + function try_ComputedConstructor() + { + switch (l1) + { + case 120: // 'document' + try_CompDocConstructor(); + break; + case 122: // 'element' + try_CompElemConstructor(); + break; + case 83: // 'attribute' + try_CompAttrConstructor(); + break; + case 187: // 'namespace' + try_CompNamespaceConstructor(); + break; + case 249: // 'text' + try_CompTextConstructor(); + break; + case 97: // 'comment' + try_CompCommentConstructor(); + break; + default: + try_CompPIConstructor(); + } + } + + function parse_CompElemConstructor() + { + eventHandler.startNonterminal("CompElemConstructor", e0); + shift(122); // 'element' + lookahead1W(249); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + switch (l1) + { + case 281: // '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + break; + default: + whitespace(); + parse_EQName(); + } + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + if (l1 != 287) // '}' + { + whitespace(); + parse_ContentExpr(); + } + shift(287); // '}' + eventHandler.endNonterminal("CompElemConstructor", e0); + } + + function try_CompElemConstructor() + { + shiftT(122); // 'element' + lookahead1W(249); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + switch (l1) + { + case 281: // '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + break; + default: + try_EQName(); + } + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + if (l1 != 287) // '}' + { + try_ContentExpr(); + } + shiftT(287); // '}' + } + + function parse_CompNamespaceConstructor() + { + eventHandler.startNonterminal("CompNamespaceConstructor", e0); + shift(187); // 'namespace' + lookahead1W(241); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + switch (l1) + { + case 281: // '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_PrefixExpr(); + shift(287); // '}' + break; + default: + whitespace(); + parse_Prefix(); + } + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_URIExpr(); + shift(287); // '}' + eventHandler.endNonterminal("CompNamespaceConstructor", e0); + } + + function try_CompNamespaceConstructor() + { + shiftT(187); // 'namespace' + lookahead1W(241); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + switch (l1) + { + case 281: // '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_PrefixExpr(); + shiftT(287); // '}' + break; + default: + try_Prefix(); + } + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_URIExpr(); + shiftT(287); // '}' + } + + function parse_Prefix() + { + eventHandler.startNonterminal("Prefix", e0); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + } + + function try_Prefix() + { + try_NCName(); + } + + function parse_PrefixExpr() + { + eventHandler.startNonterminal("PrefixExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("PrefixExpr", e0); + } + + function try_PrefixExpr() + { + try_Expr(); + } + + function parse_URIExpr() + { + eventHandler.startNonterminal("URIExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("URIExpr", e0); + } + + function try_URIExpr() + { + try_Expr(); + } + + function parse_FunctionItemExpr() + { + eventHandler.startNonterminal("FunctionItemExpr", e0); + switch (l1) + { + case 147: // 'function' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 33: // '%' + case 18067: // 'function' '(' + parse_InlineFunctionExpr(); + break; + default: + parse_NamedFunctionRef(); + } + eventHandler.endNonterminal("FunctionItemExpr", e0); + } + + function try_FunctionItemExpr() + { + switch (l1) + { + case 147: // 'function' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 33: // '%' + case 18067: // 'function' '(' + try_InlineFunctionExpr(); + break; + default: + try_NamedFunctionRef(); + } + } + + function parse_NamedFunctionRef() + { + eventHandler.startNonterminal("NamedFunctionRef", e0); + parse_EQName(); + lookahead1W(20); // S^WS | '#' | '(:' + shift(29); // '#' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + eventHandler.endNonterminal("NamedFunctionRef", e0); + } + + function try_NamedFunctionRef() + { + try_EQName(); + lookahead1W(20); // S^WS | '#' | '(:' + shiftT(29); // '#' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + + function parse_InlineFunctionExpr() + { + eventHandler.startNonterminal("InlineFunctionExpr", e0); + for (;;) + { + lookahead1W(101); // S^WS | '%' | '(:' | 'function' + if (l1 != 33) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + shift(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(98); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + whitespace(); + parse_ParamList(); + } + shift(38); // ')' + lookahead1W(115); // S^WS | '(:' | 'as' | '{' + if (l1 == 80) // 'as' + { + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + } + lookahead1W(90); // S^WS | '(:' | '{' + whitespace(); + parse_FunctionBody(); + eventHandler.endNonterminal("InlineFunctionExpr", e0); + } + + function try_InlineFunctionExpr() + { + for (;;) + { + lookahead1W(101); // S^WS | '%' | '(:' | 'function' + if (l1 != 33) // '%' + { + break; + } + try_Annotation(); + } + shiftT(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(98); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + try_ParamList(); + } + shiftT(38); // ')' + lookahead1W(115); // S^WS | '(:' | 'as' | '{' + if (l1 == 80) // 'as' + { + shiftT(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceType(); + } + lookahead1W(90); // S^WS | '(:' | '{' + try_FunctionBody(); + } + + function parse_SingleType() + { + eventHandler.startNonterminal("SingleType", e0); + parse_SimpleTypeName(); + lookahead1W(225); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | 'and' | 'as' | + // 'ascending' | 'at' | 'before' | 'case' | 'castable' | 'collation' | 'contains' | + // 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | + // 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | + // 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | + // 'order' | 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | + // 'start' | 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | + // '||' | '|}' | '}' + if (l1 == 65) // '?' + { + shift(65); // '?' + } + eventHandler.endNonterminal("SingleType", e0); + } + + function try_SingleType() + { + try_SimpleTypeName(); + lookahead1W(225); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | 'and' | 'as' | + // 'ascending' | 'at' | 'before' | 'case' | 'castable' | 'collation' | 'contains' | + // 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | + // 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | + // 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | + // 'order' | 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | + // 'start' | 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | + // '||' | '|}' | '}' + if (l1 == 65) // '?' + { + shiftT(65); // '?' + } + } + + function parse_TypeDeclaration() + { + eventHandler.startNonterminal("TypeDeclaration", e0); + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("TypeDeclaration", e0); + } + + function try_TypeDeclaration() + { + shiftT(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceType(); + } + + function parse_SequenceType() + { + eventHandler.startNonterminal("SequenceType", e0); + switch (l1) + { + case 35: // '(' + lookahead2W(258); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + case 125: // 'empty-sequence' + lookahead2W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 18045: // 'empty-sequence' '(' + case 19491: // '(' ')' + if (l1 == 125) // 'empty-sequence' + { + shift(125); // 'empty-sequence' + } + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + break; + default: + parse_ItemType(); + lookahead1W(228); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | 'allowing' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'collation' | + // 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | + // 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + switch (l1) + { + case 40: // '*' + case 41: // '+' + case 65: // '?' + whitespace(); + parse_OccurrenceIndicator(); + break; + default: + break; + } + } + eventHandler.endNonterminal("SequenceType", e0); + } + + function try_SequenceType() + { + switch (l1) + { + case 35: // '(' + lookahead2W(258); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + case 125: // 'empty-sequence' + lookahead2W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 18045: // 'empty-sequence' '(' + case 19491: // '(' ')' + if (l1 == 125) // 'empty-sequence' + { + shiftT(125); // 'empty-sequence' + } + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + break; + default: + try_ItemType(); + lookahead1W(228); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | 'allowing' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'collation' | + // 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | + // 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + switch (l1) + { + case 40: // '*' + case 41: // '+' + case 65: // '?' + try_OccurrenceIndicator(); + break; + default: + break; + } + } + } + + function parse_OccurrenceIndicator() + { + eventHandler.startNonterminal("OccurrenceIndicator", e0); + switch (l1) + { + case 65: // '?' + shift(65); // '?' + break; + case 40: // '*' + shift(40); // '*' + break; + default: + shift(41); // '+' + } + eventHandler.endNonterminal("OccurrenceIndicator", e0); + } + + function try_OccurrenceIndicator() + { + switch (l1) + { + case 65: // '?' + shiftT(65); // '?' + break; + case 40: // '*' + shiftT(40); // '*' + break; + default: + shiftT(41); // '+' + } + } + + function parse_ItemType() + { + eventHandler.startNonterminal("ItemType", e0); + switch (l1) + { + case 79: // 'array' + case 83: // 'attribute' + case 97: // 'comment' + case 121: // 'document-node' + case 122: // 'element' + case 147: // 'function' + case 167: // 'item' + case 169: // 'json-item' + case 188: // 'namespace-node' + case 194: // 'node' + case 198: // 'object' + case 220: // 'processing-instruction' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 247: // 'structured-item' + case 249: // 'text' + lookahead2W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + if (lk == 12879 // 'array' EOF + || lk == 12969 // 'json-item' EOF + || lk == 12998 // 'object' EOF + || lk == 13047 // 'structured-item' EOF + || lk == 13903 // 'array' '!=' + || lk == 13993 // 'json-item' '!=' + || lk == 14022 // 'object' '!=' + || lk == 14071 // 'structured-item' '!=' + || lk == 19535 // 'array' ')' + || lk == 19625 // 'json-item' ')' + || lk == 19654 // 'object' ')' + || lk == 19703 // 'structured-item' ')' + || lk == 20047 // 'array' '*' + || lk == 20137 // 'json-item' '*' + || lk == 20166 // 'object' '*' + || lk == 20215 // 'structured-item' '*' + || lk == 20559 // 'array' '*' + || lk == 20649 // 'json-item' '*' + || lk == 20678 // 'object' '*' + || lk == 20727 // 'structured-item' '*' + || lk == 21071 // 'array' '+' + || lk == 21161 // 'json-item' '+' + || lk == 21190 // 'object' '+' + || lk == 21239 // 'structured-item' '+' + || lk == 21583 // 'array' ',' + || lk == 21673 // 'json-item' ',' + || lk == 21702 // 'object' ',' + || lk == 21751 // 'structured-item' ',' + || lk == 22095 // 'array' '-' + || lk == 22185 // 'json-item' '-' + || lk == 22214 // 'object' '-' + || lk == 22263 // 'structured-item' '-' + || lk == 25679 // 'array' ':' + || lk == 25769 // 'json-item' ':' + || lk == 25798 // 'object' ':' + || lk == 25847 // 'structured-item' ':' + || lk == 27215 // 'array' ':=' + || lk == 27305 // 'json-item' ':=' + || lk == 27334 // 'object' ':=' + || lk == 27383 // 'structured-item' ':=' + || lk == 27727 // 'array' ';' + || lk == 27817 // 'json-item' ';' + || lk == 27846 // 'object' ';' + || lk == 27895 // 'structured-item' ';' + || lk == 28239 // 'array' '<' + || lk == 28329 // 'json-item' '<' + || lk == 28358 // 'object' '<' + || lk == 28407 // 'structured-item' '<' + || lk == 29775 // 'array' '<<' + || lk == 29865 // 'json-item' '<<' + || lk == 29894 // 'object' '<<' + || lk == 29943 // 'structured-item' '<<' + || lk == 30287 // 'array' '<=' + || lk == 30377 // 'json-item' '<=' + || lk == 30406 // 'object' '<=' + || lk == 30455 // 'structured-item' '<=' + || lk == 31311 // 'array' '=' + || lk == 31401 // 'json-item' '=' + || lk == 31430 // 'object' '=' + || lk == 31479 // 'structured-item' '=' + || lk == 31823 // 'array' '>' + || lk == 31913 // 'json-item' '>' + || lk == 31942 // 'object' '>' + || lk == 31991 // 'structured-item' '>' + || lk == 32335 // 'array' '>=' + || lk == 32425 // 'json-item' '>=' + || lk == 32454 // 'object' '>=' + || lk == 32503 // 'structured-item' '>=' + || lk == 32847 // 'array' '>>' + || lk == 32937 // 'json-item' '>>' + || lk == 32966 // 'object' '>>' + || lk == 33015 // 'structured-item' '>>' + || lk == 33359 // 'array' '?' + || lk == 33449 // 'json-item' '?' + || lk == 33478 // 'object' '?' + || lk == 33527 // 'structured-item' '?' + || lk == 35919 // 'array' ']' + || lk == 36009 // 'json-item' ']' + || lk == 36038 // 'object' ']' + || lk == 36087 // 'structured-item' ']' + || lk == 36431 // 'array' 'after' + || lk == 36521 // 'json-item' 'after' + || lk == 36550 // 'object' 'after' + || lk == 36599 // 'structured-item' 'after' + || lk == 37455 // 'array' 'allowing' + || lk == 37545 // 'json-item' 'allowing' + || lk == 37574 // 'object' 'allowing' + || lk == 37623 // 'structured-item' 'allowing' + || lk == 38991 // 'array' 'and' + || lk == 39081 // 'json-item' 'and' + || lk == 39110 // 'object' 'and' + || lk == 39159 // 'structured-item' 'and' + || lk == 41039 // 'array' 'as' + || lk == 41129 // 'json-item' 'as' + || lk == 41158 // 'object' 'as' + || lk == 41207 // 'structured-item' 'as' + || lk == 41551 // 'array' 'ascending' + || lk == 41641 // 'json-item' 'ascending' + || lk == 41670 // 'object' 'ascending' + || lk == 41719 // 'structured-item' 'ascending' + || lk == 42063 // 'array' 'at' + || lk == 42153 // 'json-item' 'at' + || lk == 42182 // 'object' 'at' + || lk == 42231 // 'structured-item' 'at' + || lk == 43599 // 'array' 'before' + || lk == 43689 // 'json-item' 'before' + || lk == 43718 // 'object' 'before' + || lk == 43767 // 'structured-item' 'before' + || lk == 45647 // 'array' 'case' + || lk == 45737 // 'json-item' 'case' + || lk == 45766 // 'object' 'case' + || lk == 45815 // 'structured-item' 'case' + || lk == 48719 // 'array' 'collation' + || lk == 48809 // 'json-item' 'collation' + || lk == 48838 // 'object' 'collation' + || lk == 48887 // 'structured-item' 'collation' + || lk == 51279 // 'array' 'contains' + || lk == 51369 // 'json-item' 'contains' + || lk == 51398 // 'object' 'contains' + || lk == 51447 // 'structured-item' 'contains' + || lk == 54351 // 'array' 'count' + || lk == 54441 // 'json-item' 'count' + || lk == 54470 // 'object' 'count' + || lk == 54519 // 'structured-item' 'count' + || lk == 56399 // 'array' 'default' + || lk == 56489 // 'json-item' 'default' + || lk == 56518 // 'object' 'default' + || lk == 56567 // 'structured-item' 'default' + || lk == 58447 // 'array' 'descending' + || lk == 58537 // 'json-item' 'descending' + || lk == 58566 // 'object' 'descending' + || lk == 58615 // 'structured-item' 'descending' + || lk == 61007 // 'array' 'div' + || lk == 61097 // 'json-item' 'div' + || lk == 61126 // 'object' 'div' + || lk == 61175 // 'structured-item' 'div' + || lk == 63055 // 'array' 'else' + || lk == 63145 // 'json-item' 'else' + || lk == 63174 // 'object' 'else' + || lk == 63223 // 'structured-item' 'else' + || lk == 63567 // 'array' 'empty' + || lk == 63657 // 'json-item' 'empty' + || lk == 63686 // 'object' 'empty' + || lk == 63735 // 'structured-item' 'empty' + || lk == 65103 // 'array' 'end' + || lk == 65193 // 'json-item' 'end' + || lk == 65222 // 'object' 'end' + || lk == 65271 // 'structured-item' 'end' + || lk == 66127 // 'array' 'eq' + || lk == 66217 // 'json-item' 'eq' + || lk == 66246 // 'object' 'eq' + || lk == 66295 // 'structured-item' 'eq' + || lk == 67663 // 'array' 'except' + || lk == 67753 // 'json-item' 'except' + || lk == 67782 // 'object' 'except' + || lk == 67831 // 'structured-item' 'except' + || lk == 68687 // 'array' 'external' + || lk == 68777 // 'json-item' 'external' + || lk == 68806 // 'object' 'external' + || lk == 68855 // 'structured-item' 'external' + || lk == 71247 // 'array' 'for' + || lk == 71337 // 'json-item' 'for' + || lk == 71366 // 'object' 'for' + || lk == 71415 // 'structured-item' 'for' + || lk == 75855 // 'array' 'ge' + || lk == 75945 // 'json-item' 'ge' + || lk == 75974 // 'object' 'ge' + || lk == 76023 // 'structured-item' 'ge' + || lk == 76879 // 'array' 'group' + || lk == 76969 // 'json-item' 'group' + || lk == 76998 // 'object' 'group' + || lk == 77047 // 'structured-item' 'group' + || lk == 77903 // 'array' 'gt' + || lk == 77993 // 'json-item' 'gt' + || lk == 78022 // 'object' 'gt' + || lk == 78071 // 'structured-item' 'gt' + || lk == 78415 // 'array' 'idiv' + || lk == 78505 // 'json-item' 'idiv' + || lk == 78534 // 'object' 'idiv' + || lk == 78583 // 'structured-item' 'idiv' + || lk == 79951 // 'array' 'in' + || lk == 80041 // 'json-item' 'in' + || lk == 80070 // 'object' 'in' + || lk == 80119 // 'structured-item' 'in' + || lk == 83023 // 'array' 'instance' + || lk == 83113 // 'json-item' 'instance' + || lk == 83142 // 'object' 'instance' + || lk == 83191 // 'structured-item' 'instance' + || lk == 84047 // 'array' 'intersect' + || lk == 84137 // 'json-item' 'intersect' + || lk == 84166 // 'object' 'intersect' + || lk == 84215 // 'structured-item' 'intersect' + || lk == 84559 // 'array' 'into' + || lk == 84649 // 'json-item' 'into' + || lk == 84678 // 'object' 'into' + || lk == 84727 // 'structured-item' 'into' + || lk == 85071 // 'array' 'is' + || lk == 85161 // 'json-item' 'is' + || lk == 85190 // 'object' 'is' + || lk == 85239 // 'structured-item' 'is' + || lk == 89679 // 'array' 'le' + || lk == 89769 // 'json-item' 'le' + || lk == 89798 // 'object' 'le' + || lk == 89847 // 'structured-item' 'le' + || lk == 90703 // 'array' 'let' + || lk == 90793 // 'json-item' 'let' + || lk == 90822 // 'object' 'let' + || lk == 90871 // 'structured-item' 'let' + || lk == 92751 // 'array' 'lt' + || lk == 92841 // 'json-item' 'lt' + || lk == 92870 // 'object' 'lt' + || lk == 92919 // 'structured-item' 'lt' + || lk == 93775 // 'array' 'mod' + || lk == 93865 // 'json-item' 'mod' + || lk == 93894 // 'object' 'mod' + || lk == 93943 // 'structured-item' 'mod' + || lk == 94287 // 'array' 'modify' + || lk == 94377 // 'json-item' 'modify' + || lk == 94406 // 'object' 'modify' + || lk == 94455 // 'structured-item' 'modify' + || lk == 96847 // 'array' 'ne' + || lk == 96937 // 'json-item' 'ne' + || lk == 96966 // 'object' 'ne' + || lk == 97015 // 'structured-item' 'ne' + || lk == 103503 // 'array' 'only' + || lk == 103593 // 'json-item' 'only' + || lk == 103622 // 'object' 'only' + || lk == 103671 // 'structured-item' 'only' + || lk == 104527 // 'array' 'or' + || lk == 104617 // 'json-item' 'or' + || lk == 104646 // 'object' 'or' + || lk == 104695 // 'structured-item' 'or' + || lk == 105039 // 'array' 'order' + || lk == 105129 // 'json-item' 'order' + || lk == 105158 // 'object' 'order' + || lk == 105207 // 'structured-item' 'order' + || lk == 107087 // 'array' 'paragraphs' + || lk == 107177 // 'json-item' 'paragraphs' + || lk == 107206 // 'object' 'paragraphs' + || lk == 107255 // 'structured-item' 'paragraphs' + || lk == 114767 // 'array' 'return' + || lk == 114857 // 'json-item' 'return' + || lk == 114886 // 'object' 'return' + || lk == 114935 // 'structured-item' 'return' + || lk == 116815 // 'array' 'satisfies' + || lk == 116905 // 'json-item' 'satisfies' + || lk == 116934 // 'object' 'satisfies' + || lk == 116983 // 'structured-item' 'satisfies' + || lk == 118863 // 'array' 'score' + || lk == 118953 // 'json-item' 'score' + || lk == 118982 // 'object' 'score' + || lk == 119031 // 'structured-item' 'score' + || lk == 121423 // 'array' 'sentences' + || lk == 121513 // 'json-item' 'sentences' + || lk == 121542 // 'object' 'sentences' + || lk == 121591 // 'structured-item' 'sentences' + || lk == 123471 // 'array' 'stable' + || lk == 123561 // 'json-item' 'stable' + || lk == 123590 // 'object' 'stable' + || lk == 123639 // 'structured-item' 'stable' + || lk == 123983 // 'array' 'start' + || lk == 124073 // 'json-item' 'start' + || lk == 124102 // 'object' 'start' + || lk == 124151 // 'structured-item' 'start' + || lk == 129103 // 'array' 'times' + || lk == 129193 // 'json-item' 'times' + || lk == 129222 // 'object' 'times' + || lk == 129271 // 'structured-item' 'times' + || lk == 129615 // 'array' 'to' + || lk == 129705 // 'json-item' 'to' + || lk == 129734 // 'object' 'to' + || lk == 129783 // 'structured-item' 'to' + || lk == 133199 // 'array' 'union' + || lk == 133289 // 'json-item' 'union' + || lk == 133318 // 'object' 'union' + || lk == 133367 // 'structured-item' 'union' + || lk == 139343 // 'array' 'where' + || lk == 139433 // 'json-item' 'where' + || lk == 139462 // 'object' 'where' + || lk == 139511 // 'structured-item' 'where' + || lk == 141391 // 'array' 'with' + || lk == 141481 // 'json-item' 'with' + || lk == 141510 // 'object' 'with' + || lk == 141559 // 'structured-item' 'with' + || lk == 142927 // 'array' 'words' + || lk == 143017 // 'json-item' 'words' + || lk == 143046 // 'object' 'words' + || lk == 143095 // 'structured-item' 'words' + || lk == 143951 // 'array' '{' + || lk == 144041 // 'json-item' '{' + || lk == 144070 // 'object' '{' + || lk == 144119 // 'structured-item' '{' + || lk == 145487 // 'array' '|' + || lk == 145577 // 'json-item' '|' + || lk == 145606 // 'object' '|' + || lk == 145655 // 'structured-item' '|' + || lk == 145999 // 'array' '||' + || lk == 146089 // 'json-item' '||' + || lk == 146118 // 'object' '||' + || lk == 146167 // 'structured-item' '||' + || lk == 146511 // 'array' '|}' + || lk == 146601 // 'json-item' '|}' + || lk == 146630 // 'object' '|}' + || lk == 146679 // 'structured-item' '|}' + || lk == 147023 // 'array' '}' + || lk == 147113 // 'json-item' '}' + || lk == 147142 // 'object' '}' + || lk == 147191) // 'structured-item' '}' + { + lk = memoized(6, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AtomicOrUnionType(); + lk = -4; + } + catch (p4A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONTest(); + lk = -6; + } + catch (p6A) + { + lk = -7; + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(6, e0, lk); + } + } + switch (lk) + { + case 18003: // 'attribute' '(' + case 18017: // 'comment' '(' + case 18041: // 'document-node' '(' + case 18042: // 'element' '(' + case 18108: // 'namespace-node' '(' + case 18114: // 'node' '(' + case 18140: // 'processing-instruction' '(' + case 18150: // 'schema-attribute' '(' + case 18151: // 'schema-element' '(' + case 18169: // 'text' '(' + parse_KindTest(); + break; + case 18087: // 'item' '(' + shift(167); // 'item' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + break; + case 33: // '%' + case 18067: // 'function' '(' + parse_FunctionTest(); + break; + case 35: // '(' + parse_ParenthesizedItemType(); + break; + case -6: + case 17999: // 'array' '(' + case 18089: // 'json-item' '(' + case 18118: // 'object' '(' + parse_JSONTest(); + break; + case -7: + case 18167: // 'structured-item' '(' + parse_StructuredItemTest(); + break; + default: + parse_AtomicOrUnionType(); + } + eventHandler.endNonterminal("ItemType", e0); + } + + function try_ItemType() + { + switch (l1) + { + case 79: // 'array' + case 83: // 'attribute' + case 97: // 'comment' + case 121: // 'document-node' + case 122: // 'element' + case 147: // 'function' + case 167: // 'item' + case 169: // 'json-item' + case 188: // 'namespace-node' + case 194: // 'node' + case 198: // 'object' + case 220: // 'processing-instruction' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 247: // 'structured-item' + case 249: // 'text' + lookahead2W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + if (lk == 12879 // 'array' EOF + || lk == 12969 // 'json-item' EOF + || lk == 12998 // 'object' EOF + || lk == 13047 // 'structured-item' EOF + || lk == 13903 // 'array' '!=' + || lk == 13993 // 'json-item' '!=' + || lk == 14022 // 'object' '!=' + || lk == 14071 // 'structured-item' '!=' + || lk == 19535 // 'array' ')' + || lk == 19625 // 'json-item' ')' + || lk == 19654 // 'object' ')' + || lk == 19703 // 'structured-item' ')' + || lk == 20047 // 'array' '*' + || lk == 20137 // 'json-item' '*' + || lk == 20166 // 'object' '*' + || lk == 20215 // 'structured-item' '*' + || lk == 20559 // 'array' '*' + || lk == 20649 // 'json-item' '*' + || lk == 20678 // 'object' '*' + || lk == 20727 // 'structured-item' '*' + || lk == 21071 // 'array' '+' + || lk == 21161 // 'json-item' '+' + || lk == 21190 // 'object' '+' + || lk == 21239 // 'structured-item' '+' + || lk == 21583 // 'array' ',' + || lk == 21673 // 'json-item' ',' + || lk == 21702 // 'object' ',' + || lk == 21751 // 'structured-item' ',' + || lk == 22095 // 'array' '-' + || lk == 22185 // 'json-item' '-' + || lk == 22214 // 'object' '-' + || lk == 22263 // 'structured-item' '-' + || lk == 25679 // 'array' ':' + || lk == 25769 // 'json-item' ':' + || lk == 25798 // 'object' ':' + || lk == 25847 // 'structured-item' ':' + || lk == 27215 // 'array' ':=' + || lk == 27305 // 'json-item' ':=' + || lk == 27334 // 'object' ':=' + || lk == 27383 // 'structured-item' ':=' + || lk == 27727 // 'array' ';' + || lk == 27817 // 'json-item' ';' + || lk == 27846 // 'object' ';' + || lk == 27895 // 'structured-item' ';' + || lk == 28239 // 'array' '<' + || lk == 28329 // 'json-item' '<' + || lk == 28358 // 'object' '<' + || lk == 28407 // 'structured-item' '<' + || lk == 29775 // 'array' '<<' + || lk == 29865 // 'json-item' '<<' + || lk == 29894 // 'object' '<<' + || lk == 29943 // 'structured-item' '<<' + || lk == 30287 // 'array' '<=' + || lk == 30377 // 'json-item' '<=' + || lk == 30406 // 'object' '<=' + || lk == 30455 // 'structured-item' '<=' + || lk == 31311 // 'array' '=' + || lk == 31401 // 'json-item' '=' + || lk == 31430 // 'object' '=' + || lk == 31479 // 'structured-item' '=' + || lk == 31823 // 'array' '>' + || lk == 31913 // 'json-item' '>' + || lk == 31942 // 'object' '>' + || lk == 31991 // 'structured-item' '>' + || lk == 32335 // 'array' '>=' + || lk == 32425 // 'json-item' '>=' + || lk == 32454 // 'object' '>=' + || lk == 32503 // 'structured-item' '>=' + || lk == 32847 // 'array' '>>' + || lk == 32937 // 'json-item' '>>' + || lk == 32966 // 'object' '>>' + || lk == 33015 // 'structured-item' '>>' + || lk == 33359 // 'array' '?' + || lk == 33449 // 'json-item' '?' + || lk == 33478 // 'object' '?' + || lk == 33527 // 'structured-item' '?' + || lk == 35919 // 'array' ']' + || lk == 36009 // 'json-item' ']' + || lk == 36038 // 'object' ']' + || lk == 36087 // 'structured-item' ']' + || lk == 36431 // 'array' 'after' + || lk == 36521 // 'json-item' 'after' + || lk == 36550 // 'object' 'after' + || lk == 36599 // 'structured-item' 'after' + || lk == 37455 // 'array' 'allowing' + || lk == 37545 // 'json-item' 'allowing' + || lk == 37574 // 'object' 'allowing' + || lk == 37623 // 'structured-item' 'allowing' + || lk == 38991 // 'array' 'and' + || lk == 39081 // 'json-item' 'and' + || lk == 39110 // 'object' 'and' + || lk == 39159 // 'structured-item' 'and' + || lk == 41039 // 'array' 'as' + || lk == 41129 // 'json-item' 'as' + || lk == 41158 // 'object' 'as' + || lk == 41207 // 'structured-item' 'as' + || lk == 41551 // 'array' 'ascending' + || lk == 41641 // 'json-item' 'ascending' + || lk == 41670 // 'object' 'ascending' + || lk == 41719 // 'structured-item' 'ascending' + || lk == 42063 // 'array' 'at' + || lk == 42153 // 'json-item' 'at' + || lk == 42182 // 'object' 'at' + || lk == 42231 // 'structured-item' 'at' + || lk == 43599 // 'array' 'before' + || lk == 43689 // 'json-item' 'before' + || lk == 43718 // 'object' 'before' + || lk == 43767 // 'structured-item' 'before' + || lk == 45647 // 'array' 'case' + || lk == 45737 // 'json-item' 'case' + || lk == 45766 // 'object' 'case' + || lk == 45815 // 'structured-item' 'case' + || lk == 48719 // 'array' 'collation' + || lk == 48809 // 'json-item' 'collation' + || lk == 48838 // 'object' 'collation' + || lk == 48887 // 'structured-item' 'collation' + || lk == 51279 // 'array' 'contains' + || lk == 51369 // 'json-item' 'contains' + || lk == 51398 // 'object' 'contains' + || lk == 51447 // 'structured-item' 'contains' + || lk == 54351 // 'array' 'count' + || lk == 54441 // 'json-item' 'count' + || lk == 54470 // 'object' 'count' + || lk == 54519 // 'structured-item' 'count' + || lk == 56399 // 'array' 'default' + || lk == 56489 // 'json-item' 'default' + || lk == 56518 // 'object' 'default' + || lk == 56567 // 'structured-item' 'default' + || lk == 58447 // 'array' 'descending' + || lk == 58537 // 'json-item' 'descending' + || lk == 58566 // 'object' 'descending' + || lk == 58615 // 'structured-item' 'descending' + || lk == 61007 // 'array' 'div' + || lk == 61097 // 'json-item' 'div' + || lk == 61126 // 'object' 'div' + || lk == 61175 // 'structured-item' 'div' + || lk == 63055 // 'array' 'else' + || lk == 63145 // 'json-item' 'else' + || lk == 63174 // 'object' 'else' + || lk == 63223 // 'structured-item' 'else' + || lk == 63567 // 'array' 'empty' + || lk == 63657 // 'json-item' 'empty' + || lk == 63686 // 'object' 'empty' + || lk == 63735 // 'structured-item' 'empty' + || lk == 65103 // 'array' 'end' + || lk == 65193 // 'json-item' 'end' + || lk == 65222 // 'object' 'end' + || lk == 65271 // 'structured-item' 'end' + || lk == 66127 // 'array' 'eq' + || lk == 66217 // 'json-item' 'eq' + || lk == 66246 // 'object' 'eq' + || lk == 66295 // 'structured-item' 'eq' + || lk == 67663 // 'array' 'except' + || lk == 67753 // 'json-item' 'except' + || lk == 67782 // 'object' 'except' + || lk == 67831 // 'structured-item' 'except' + || lk == 68687 // 'array' 'external' + || lk == 68777 // 'json-item' 'external' + || lk == 68806 // 'object' 'external' + || lk == 68855 // 'structured-item' 'external' + || lk == 71247 // 'array' 'for' + || lk == 71337 // 'json-item' 'for' + || lk == 71366 // 'object' 'for' + || lk == 71415 // 'structured-item' 'for' + || lk == 75855 // 'array' 'ge' + || lk == 75945 // 'json-item' 'ge' + || lk == 75974 // 'object' 'ge' + || lk == 76023 // 'structured-item' 'ge' + || lk == 76879 // 'array' 'group' + || lk == 76969 // 'json-item' 'group' + || lk == 76998 // 'object' 'group' + || lk == 77047 // 'structured-item' 'group' + || lk == 77903 // 'array' 'gt' + || lk == 77993 // 'json-item' 'gt' + || lk == 78022 // 'object' 'gt' + || lk == 78071 // 'structured-item' 'gt' + || lk == 78415 // 'array' 'idiv' + || lk == 78505 // 'json-item' 'idiv' + || lk == 78534 // 'object' 'idiv' + || lk == 78583 // 'structured-item' 'idiv' + || lk == 79951 // 'array' 'in' + || lk == 80041 // 'json-item' 'in' + || lk == 80070 // 'object' 'in' + || lk == 80119 // 'structured-item' 'in' + || lk == 83023 // 'array' 'instance' + || lk == 83113 // 'json-item' 'instance' + || lk == 83142 // 'object' 'instance' + || lk == 83191 // 'structured-item' 'instance' + || lk == 84047 // 'array' 'intersect' + || lk == 84137 // 'json-item' 'intersect' + || lk == 84166 // 'object' 'intersect' + || lk == 84215 // 'structured-item' 'intersect' + || lk == 84559 // 'array' 'into' + || lk == 84649 // 'json-item' 'into' + || lk == 84678 // 'object' 'into' + || lk == 84727 // 'structured-item' 'into' + || lk == 85071 // 'array' 'is' + || lk == 85161 // 'json-item' 'is' + || lk == 85190 // 'object' 'is' + || lk == 85239 // 'structured-item' 'is' + || lk == 89679 // 'array' 'le' + || lk == 89769 // 'json-item' 'le' + || lk == 89798 // 'object' 'le' + || lk == 89847 // 'structured-item' 'le' + || lk == 90703 // 'array' 'let' + || lk == 90793 // 'json-item' 'let' + || lk == 90822 // 'object' 'let' + || lk == 90871 // 'structured-item' 'let' + || lk == 92751 // 'array' 'lt' + || lk == 92841 // 'json-item' 'lt' + || lk == 92870 // 'object' 'lt' + || lk == 92919 // 'structured-item' 'lt' + || lk == 93775 // 'array' 'mod' + || lk == 93865 // 'json-item' 'mod' + || lk == 93894 // 'object' 'mod' + || lk == 93943 // 'structured-item' 'mod' + || lk == 94287 // 'array' 'modify' + || lk == 94377 // 'json-item' 'modify' + || lk == 94406 // 'object' 'modify' + || lk == 94455 // 'structured-item' 'modify' + || lk == 96847 // 'array' 'ne' + || lk == 96937 // 'json-item' 'ne' + || lk == 96966 // 'object' 'ne' + || lk == 97015 // 'structured-item' 'ne' + || lk == 103503 // 'array' 'only' + || lk == 103593 // 'json-item' 'only' + || lk == 103622 // 'object' 'only' + || lk == 103671 // 'structured-item' 'only' + || lk == 104527 // 'array' 'or' + || lk == 104617 // 'json-item' 'or' + || lk == 104646 // 'object' 'or' + || lk == 104695 // 'structured-item' 'or' + || lk == 105039 // 'array' 'order' + || lk == 105129 // 'json-item' 'order' + || lk == 105158 // 'object' 'order' + || lk == 105207 // 'structured-item' 'order' + || lk == 107087 // 'array' 'paragraphs' + || lk == 107177 // 'json-item' 'paragraphs' + || lk == 107206 // 'object' 'paragraphs' + || lk == 107255 // 'structured-item' 'paragraphs' + || lk == 114767 // 'array' 'return' + || lk == 114857 // 'json-item' 'return' + || lk == 114886 // 'object' 'return' + || lk == 114935 // 'structured-item' 'return' + || lk == 116815 // 'array' 'satisfies' + || lk == 116905 // 'json-item' 'satisfies' + || lk == 116934 // 'object' 'satisfies' + || lk == 116983 // 'structured-item' 'satisfies' + || lk == 118863 // 'array' 'score' + || lk == 118953 // 'json-item' 'score' + || lk == 118982 // 'object' 'score' + || lk == 119031 // 'structured-item' 'score' + || lk == 121423 // 'array' 'sentences' + || lk == 121513 // 'json-item' 'sentences' + || lk == 121542 // 'object' 'sentences' + || lk == 121591 // 'structured-item' 'sentences' + || lk == 123471 // 'array' 'stable' + || lk == 123561 // 'json-item' 'stable' + || lk == 123590 // 'object' 'stable' + || lk == 123639 // 'structured-item' 'stable' + || lk == 123983 // 'array' 'start' + || lk == 124073 // 'json-item' 'start' + || lk == 124102 // 'object' 'start' + || lk == 124151 // 'structured-item' 'start' + || lk == 129103 // 'array' 'times' + || lk == 129193 // 'json-item' 'times' + || lk == 129222 // 'object' 'times' + || lk == 129271 // 'structured-item' 'times' + || lk == 129615 // 'array' 'to' + || lk == 129705 // 'json-item' 'to' + || lk == 129734 // 'object' 'to' + || lk == 129783 // 'structured-item' 'to' + || lk == 133199 // 'array' 'union' + || lk == 133289 // 'json-item' 'union' + || lk == 133318 // 'object' 'union' + || lk == 133367 // 'structured-item' 'union' + || lk == 139343 // 'array' 'where' + || lk == 139433 // 'json-item' 'where' + || lk == 139462 // 'object' 'where' + || lk == 139511 // 'structured-item' 'where' + || lk == 141391 // 'array' 'with' + || lk == 141481 // 'json-item' 'with' + || lk == 141510 // 'object' 'with' + || lk == 141559 // 'structured-item' 'with' + || lk == 142927 // 'array' 'words' + || lk == 143017 // 'json-item' 'words' + || lk == 143046 // 'object' 'words' + || lk == 143095 // 'structured-item' 'words' + || lk == 143951 // 'array' '{' + || lk == 144041 // 'json-item' '{' + || lk == 144070 // 'object' '{' + || lk == 144119 // 'structured-item' '{' + || lk == 145487 // 'array' '|' + || lk == 145577 // 'json-item' '|' + || lk == 145606 // 'object' '|' + || lk == 145655 // 'structured-item' '|' + || lk == 145999 // 'array' '||' + || lk == 146089 // 'json-item' '||' + || lk == 146118 // 'object' '||' + || lk == 146167 // 'structured-item' '||' + || lk == 146511 // 'array' '|}' + || lk == 146601 // 'json-item' '|}' + || lk == 146630 // 'object' '|}' + || lk == 146679 // 'structured-item' '|}' + || lk == 147023 // 'array' '}' + || lk == 147113 // 'json-item' '}' + || lk == 147142 // 'object' '}' + || lk == 147191) // 'structured-item' '}' + { + lk = memoized(6, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AtomicOrUnionType(); + memoize(6, e0A, -4); + lk = -8; + } + catch (p4A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONTest(); + memoize(6, e0A, -6); + lk = -8; + } + catch (p6A) + { + lk = -7; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(6, e0A, -7); + } + } + } + } + switch (lk) + { + case 18003: // 'attribute' '(' + case 18017: // 'comment' '(' + case 18041: // 'document-node' '(' + case 18042: // 'element' '(' + case 18108: // 'namespace-node' '(' + case 18114: // 'node' '(' + case 18140: // 'processing-instruction' '(' + case 18150: // 'schema-attribute' '(' + case 18151: // 'schema-element' '(' + case 18169: // 'text' '(' + try_KindTest(); + break; + case 18087: // 'item' '(' + shiftT(167); // 'item' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + break; + case 33: // '%' + case 18067: // 'function' '(' + try_FunctionTest(); + break; + case 35: // '(' + try_ParenthesizedItemType(); + break; + case -6: + case 17999: // 'array' '(' + case 18089: // 'json-item' '(' + case 18118: // 'object' '(' + try_JSONTest(); + break; + case -7: + case 18167: // 'structured-item' '(' + try_StructuredItemTest(); + break; + case -8: + break; + default: + try_AtomicOrUnionType(); + } + } + + function parse_JSONTest() + { + eventHandler.startNonterminal("JSONTest", e0); + switch (l1) + { + case 169: // 'json-item' + parse_JSONItemTest(); + break; + case 198: // 'object' + parse_JSONObjectTest(); + break; + default: + parse_JSONArrayTest(); + } + eventHandler.endNonterminal("JSONTest", e0); + } + + function try_JSONTest() + { + switch (l1) + { + case 169: // 'json-item' + try_JSONItemTest(); + break; + case 198: // 'object' + try_JSONObjectTest(); + break; + default: + try_JSONArrayTest(); + } + } + + function parse_StructuredItemTest() + { + eventHandler.startNonterminal("StructuredItemTest", e0); + shift(247); // 'structured-item' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + } + eventHandler.endNonterminal("StructuredItemTest", e0); + } + + function try_StructuredItemTest() + { + shiftT(247); // 'structured-item' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + } + + function parse_JSONItemTest() + { + eventHandler.startNonterminal("JSONItemTest", e0); + shift(169); // 'json-item' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + } + eventHandler.endNonterminal("JSONItemTest", e0); + } + + function try_JSONItemTest() + { + shiftT(169); // 'json-item' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + } + + function parse_JSONObjectTest() + { + eventHandler.startNonterminal("JSONObjectTest", e0); + shift(198); // 'object' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + } + eventHandler.endNonterminal("JSONObjectTest", e0); + } + + function try_JSONObjectTest() + { + shiftT(198); // 'object' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + } + + function parse_JSONArrayTest() + { + eventHandler.startNonterminal("JSONArrayTest", e0); + shift(79); // 'array' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + } + eventHandler.endNonterminal("JSONArrayTest", e0); + } + + function try_JSONArrayTest() + { + shiftT(79); // 'array' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + } + + function parse_AtomicOrUnionType() + { + eventHandler.startNonterminal("AtomicOrUnionType", e0); + parse_EQName(); + eventHandler.endNonterminal("AtomicOrUnionType", e0); + } + + function try_AtomicOrUnionType() + { + try_EQName(); + } + + function parse_KindTest() + { + eventHandler.startNonterminal("KindTest", e0); + switch (l1) + { + case 121: // 'document-node' + parse_DocumentTest(); + break; + case 122: // 'element' + parse_ElementTest(); + break; + case 83: // 'attribute' + parse_AttributeTest(); + break; + case 231: // 'schema-element' + parse_SchemaElementTest(); + break; + case 230: // 'schema-attribute' + parse_SchemaAttributeTest(); + break; + case 220: // 'processing-instruction' + parse_PITest(); + break; + case 97: // 'comment' + parse_CommentTest(); + break; + case 249: // 'text' + parse_TextTest(); + break; + case 188: // 'namespace-node' + parse_NamespaceNodeTest(); + break; + default: + parse_AnyKindTest(); + } + eventHandler.endNonterminal("KindTest", e0); + } + + function try_KindTest() + { + switch (l1) + { + case 121: // 'document-node' + try_DocumentTest(); + break; + case 122: // 'element' + try_ElementTest(); + break; + case 83: // 'attribute' + try_AttributeTest(); + break; + case 231: // 'schema-element' + try_SchemaElementTest(); + break; + case 230: // 'schema-attribute' + try_SchemaAttributeTest(); + break; + case 220: // 'processing-instruction' + try_PITest(); + break; + case 97: // 'comment' + try_CommentTest(); + break; + case 249: // 'text' + try_TextTest(); + break; + case 188: // 'namespace-node' + try_NamespaceNodeTest(); + break; + default: + try_AnyKindTest(); + } + } + + function parse_AnyKindTest() + { + eventHandler.startNonterminal("AnyKindTest", e0); + shift(194); // 'node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("AnyKindTest", e0); + } + + function try_AnyKindTest() + { + shiftT(194); // 'node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_DocumentTest() + { + eventHandler.startNonterminal("DocumentTest", e0); + shift(121); // 'document-node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(154); // S^WS | '(:' | ')' | 'element' | 'schema-element' + if (l1 != 38) // ')' + { + switch (l1) + { + case 122: // 'element' + whitespace(); + parse_ElementTest(); + break; + default: + whitespace(); + parse_SchemaElementTest(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("DocumentTest", e0); + } + + function try_DocumentTest() + { + shiftT(121); // 'document-node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(154); // S^WS | '(:' | ')' | 'element' | 'schema-element' + if (l1 != 38) // ')' + { + switch (l1) + { + case 122: // 'element' + try_ElementTest(); + break; + default: + try_SchemaElementTest(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_TextTest() + { + eventHandler.startNonterminal("TextTest", e0); + shift(249); // 'text' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("TextTest", e0); + } + + function try_TextTest() + { + shiftT(249); // 'text' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_CommentTest() + { + eventHandler.startNonterminal("CommentTest", e0); + shift(97); // 'comment' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("CommentTest", e0); + } + + function try_CommentTest() + { + shiftT(97); // 'comment' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_NamespaceNodeTest() + { + eventHandler.startNonterminal("NamespaceNodeTest", e0); + shift(188); // 'namespace-node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("NamespaceNodeTest", e0); + } + + function try_NamespaceNodeTest() + { + shiftT(188); // 'namespace-node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_PITest() + { + eventHandler.startNonterminal("PITest", e0); + shift(220); // 'processing-instruction' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(243); // StringLiteral | NCName^Token | S^WS | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + if (l1 != 38) // ')' + { + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + whitespace(); + parse_NCName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("PITest", e0); + } + + function try_PITest() + { + shiftT(220); // 'processing-instruction' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(243); // StringLiteral | NCName^Token | S^WS | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + if (l1 != 38) // ')' + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + try_NCName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_AttributeTest() + { + eventHandler.startNonterminal("AttributeTest", e0); + shift(83); // 'attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 != 38) // ')' + { + whitespace(); + parse_AttribNameOrWildcard(); + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 == 42) // ',' + { + shift(42); // ',' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_TypeName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("AttributeTest", e0); + } + + function try_AttributeTest() + { + shiftT(83); // 'attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 != 38) // ')' + { + try_AttribNameOrWildcard(); + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 == 42) // ',' + { + shiftT(42); // ',' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_TypeName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_AttribNameOrWildcard() + { + eventHandler.startNonterminal("AttribNameOrWildcard", e0); + switch (l1) + { + case 39: // '*' + shift(39); // '*' + break; + default: + parse_AttributeName(); + } + eventHandler.endNonterminal("AttribNameOrWildcard", e0); + } + + function try_AttribNameOrWildcard() + { + switch (l1) + { + case 39: // '*' + shiftT(39); // '*' + break; + default: + try_AttributeName(); + } + } + + function parse_SchemaAttributeTest() + { + eventHandler.startNonterminal("SchemaAttributeTest", e0); + shift(230); // 'schema-attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_AttributeDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("SchemaAttributeTest", e0); + } + + function try_SchemaAttributeTest() + { + shiftT(230); // 'schema-attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_AttributeDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_AttributeDeclaration() + { + eventHandler.startNonterminal("AttributeDeclaration", e0); + parse_AttributeName(); + eventHandler.endNonterminal("AttributeDeclaration", e0); + } + + function try_AttributeDeclaration() + { + try_AttributeName(); + } + + function parse_ElementTest() + { + eventHandler.startNonterminal("ElementTest", e0); + shift(122); // 'element' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 != 38) // ')' + { + whitespace(); + parse_ElementNameOrWildcard(); + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 == 42) // ',' + { + shift(42); // ',' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_TypeName(); + lookahead1W(106); // S^WS | '(:' | ')' | '?' + if (l1 == 65) // '?' + { + shift(65); // '?' + } + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("ElementTest", e0); + } + + function try_ElementTest() + { + shiftT(122); // 'element' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 != 38) // ')' + { + try_ElementNameOrWildcard(); + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 == 42) // ',' + { + shiftT(42); // ',' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_TypeName(); + lookahead1W(106); // S^WS | '(:' | ')' | '?' + if (l1 == 65) // '?' + { + shiftT(65); // '?' + } + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_ElementNameOrWildcard() + { + eventHandler.startNonterminal("ElementNameOrWildcard", e0); + switch (l1) + { + case 39: // '*' + shift(39); // '*' + break; + default: + parse_ElementName(); + } + eventHandler.endNonterminal("ElementNameOrWildcard", e0); + } + + function try_ElementNameOrWildcard() + { + switch (l1) + { + case 39: // '*' + shiftT(39); // '*' + break; + default: + try_ElementName(); + } + } + + function parse_SchemaElementTest() + { + eventHandler.startNonterminal("SchemaElementTest", e0); + shift(231); // 'schema-element' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_ElementDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("SchemaElementTest", e0); + } + + function try_SchemaElementTest() + { + shiftT(231); // 'schema-element' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_ElementDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_ElementDeclaration() + { + eventHandler.startNonterminal("ElementDeclaration", e0); + parse_ElementName(); + eventHandler.endNonterminal("ElementDeclaration", e0); + } + + function try_ElementDeclaration() + { + try_ElementName(); + } + + function parse_AttributeName() + { + eventHandler.startNonterminal("AttributeName", e0); + parse_EQName(); + eventHandler.endNonterminal("AttributeName", e0); + } + + function try_AttributeName() + { + try_EQName(); + } + + function parse_ElementName() + { + eventHandler.startNonterminal("ElementName", e0); + parse_EQName(); + eventHandler.endNonterminal("ElementName", e0); + } + + function try_ElementName() + { + try_EQName(); + } + + function parse_SimpleTypeName() + { + eventHandler.startNonterminal("SimpleTypeName", e0); + parse_TypeName(); + eventHandler.endNonterminal("SimpleTypeName", e0); + } + + function try_SimpleTypeName() + { + try_TypeName(); + } + + function parse_TypeName() + { + eventHandler.startNonterminal("TypeName", e0); + parse_EQName(); + eventHandler.endNonterminal("TypeName", e0); + } + + function try_TypeName() + { + try_EQName(); + } + + function parse_FunctionTest() + { + eventHandler.startNonterminal("FunctionTest", e0); + for (;;) + { + lookahead1W(101); // S^WS | '%' | '(:' | 'function' + if (l1 != 33) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + switch (l1) + { + case 147: // 'function' + lookahead2W(22); // S^WS | '(' | '(:' + break; + default: + lk = l1; + } + lk = memoized(7, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AnyFunctionTest(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(7, e0, lk); + } + switch (lk) + { + case -1: + whitespace(); + parse_AnyFunctionTest(); + break; + default: + whitespace(); + parse_TypedFunctionTest(); + } + eventHandler.endNonterminal("FunctionTest", e0); + } + + function try_FunctionTest() + { + for (;;) + { + lookahead1W(101); // S^WS | '%' | '(:' | 'function' + if (l1 != 33) // '%' + { + break; + } + try_Annotation(); + } + switch (l1) + { + case 147: // 'function' + lookahead2W(22); // S^WS | '(' | '(:' + break; + default: + lk = l1; + } + lk = memoized(7, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AnyFunctionTest(); + memoize(7, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(7, e0A, -2); + } + } + switch (lk) + { + case -1: + try_AnyFunctionTest(); + break; + case -3: + break; + default: + try_TypedFunctionTest(); + } + } + + function parse_AnyFunctionTest() + { + eventHandler.startNonterminal("AnyFunctionTest", e0); + shift(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(24); // S^WS | '(:' | '*' + shift(39); // '*' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("AnyFunctionTest", e0); + } + + function try_AnyFunctionTest() + { + shiftT(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(24); // S^WS | '(:' | '*' + shiftT(39); // '*' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_TypedFunctionTest() + { + eventHandler.startNonterminal("TypedFunctionTest", e0); + shift(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(258); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 != 38) // ')' + { + whitespace(); + parse_SequenceType(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + } + } + shift(38); // ')' + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("TypedFunctionTest", e0); + } + + function try_TypedFunctionTest() + { + shiftT(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(258); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 != 38) // ')' + { + try_SequenceType(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceType(); + } + } + shiftT(38); // ')' + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceType(); + } + + function parse_ParenthesizedItemType() + { + eventHandler.startNonterminal("ParenthesizedItemType", e0); + shift(35); // '(' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_ItemType(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("ParenthesizedItemType", e0); + } + + function try_ParenthesizedItemType() + { + shiftT(35); // '(' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_ItemType(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_RevalidationDecl() + { + eventHandler.startNonterminal("RevalidationDecl", e0); + shift(109); // 'declare' + lookahead1W(75); // S^WS | '(:' | 'revalidation' + shift(226); // 'revalidation' + lookahead1W(162); // S^WS | '(:' | 'lax' | 'skip' | 'strict' + switch (l1) + { + case 245: // 'strict' + shift(245); // 'strict' + break; + case 174: // 'lax' + shift(174); // 'lax' + break; + default: + shift(238); // 'skip' + } + eventHandler.endNonterminal("RevalidationDecl", e0); + } + + function parse_InsertExprTargetChoice() + { + eventHandler.startNonterminal("InsertExprTargetChoice", e0); + switch (l1) + { + case 71: // 'after' + shift(71); // 'after' + break; + case 85: // 'before' + shift(85); // 'before' + break; + default: + if (l1 == 80) // 'as' + { + shift(80); // 'as' + lookahead1W(123); // S^WS | '(:' | 'first' | 'last' + switch (l1) + { + case 136: // 'first' + shift(136); // 'first' + break; + default: + shift(173); // 'last' + } + } + lookahead1W(57); // S^WS | '(:' | 'into' + shift(165); // 'into' + } + eventHandler.endNonterminal("InsertExprTargetChoice", e0); + } + + function try_InsertExprTargetChoice() + { + switch (l1) + { + case 71: // 'after' + shiftT(71); // 'after' + break; + case 85: // 'before' + shiftT(85); // 'before' + break; + default: + if (l1 == 80) // 'as' + { + shiftT(80); // 'as' + lookahead1W(123); // S^WS | '(:' | 'first' | 'last' + switch (l1) + { + case 136: // 'first' + shiftT(136); // 'first' + break; + default: + shiftT(173); // 'last' + } + } + lookahead1W(57); // S^WS | '(:' | 'into' + shiftT(165); // 'into' + } + } + + function parse_InsertExpr() + { + eventHandler.startNonterminal("InsertExpr", e0); + shift(161); // 'insert' + lookahead1W(133); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 194: // 'node' + shift(194); // 'node' + break; + default: + shift(195); // 'nodes' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_SourceExpr(); + whitespace(); + parse_InsertExprTargetChoice(); + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_TargetExpr(); + eventHandler.endNonterminal("InsertExpr", e0); + } + + function try_InsertExpr() + { + shiftT(161); // 'insert' + lookahead1W(133); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 194: // 'node' + shiftT(194); // 'node' + break; + default: + shiftT(195); // 'nodes' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_SourceExpr(); + try_InsertExprTargetChoice(); + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_TargetExpr(); + } + + function parse_DeleteExpr() + { + eventHandler.startNonterminal("DeleteExpr", e0); + shift(111); // 'delete' + lookahead1W(133); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 194: // 'node' + shift(194); // 'node' + break; + default: + shift(195); // 'nodes' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_TargetExpr(); + eventHandler.endNonterminal("DeleteExpr", e0); + } + + function try_DeleteExpr() + { + shiftT(111); // 'delete' + lookahead1W(133); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 194: // 'node' + shiftT(194); // 'node' + break; + default: + shiftT(195); // 'nodes' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_TargetExpr(); + } + + function parse_ReplaceExpr() + { + eventHandler.startNonterminal("ReplaceExpr", e0); + shift(223); // 'replace' + lookahead1W(134); // S^WS | '(:' | 'node' | 'value' + if (l1 == 267) // 'value' + { + shift(267); // 'value' + lookahead1W(67); // S^WS | '(:' | 'of' + shift(200); // 'of' + } + lookahead1W(65); // S^WS | '(:' | 'node' + shift(194); // 'node' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_TargetExpr(); + shift(276); // 'with' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ReplaceExpr", e0); + } + + function try_ReplaceExpr() + { + shiftT(223); // 'replace' + lookahead1W(134); // S^WS | '(:' | 'node' | 'value' + if (l1 == 267) // 'value' + { + shiftT(267); // 'value' + lookahead1W(67); // S^WS | '(:' | 'of' + shiftT(200); // 'of' + } + lookahead1W(65); // S^WS | '(:' | 'node' + shiftT(194); // 'node' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_TargetExpr(); + shiftT(276); // 'with' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_RenameExpr() + { + eventHandler.startNonterminal("RenameExpr", e0); + shift(222); // 'rename' + lookahead1W(65); // S^WS | '(:' | 'node' + shift(194); // 'node' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_TargetExpr(); + shift(80); // 'as' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_NewNameExpr(); + eventHandler.endNonterminal("RenameExpr", e0); + } + + function try_RenameExpr() + { + shiftT(222); // 'rename' + lookahead1W(65); // S^WS | '(:' | 'node' + shiftT(194); // 'node' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_TargetExpr(); + shiftT(80); // 'as' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_NewNameExpr(); + } + + function parse_SourceExpr() + { + eventHandler.startNonterminal("SourceExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("SourceExpr", e0); + } + + function try_SourceExpr() + { + try_ExprSingle(); + } + + function parse_TargetExpr() + { + eventHandler.startNonterminal("TargetExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("TargetExpr", e0); + } + + function try_TargetExpr() + { + try_ExprSingle(); + } + + function parse_NewNameExpr() + { + eventHandler.startNonterminal("NewNameExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("NewNameExpr", e0); + } + + function try_NewNameExpr() + { + try_ExprSingle(); + } + + function parse_TransformExpr() + { + eventHandler.startNonterminal("TransformExpr", e0); + shift(104); // 'copy' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_TransformSpec(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_TransformSpec(); + } + shift(184); // 'modify' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TransformExpr", e0); + } + + function try_TransformExpr() + { + shiftT(104); // 'copy' + lookahead1W(21); // S^WS | '$' | '(:' + try_TransformSpec(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_TransformSpec(); + } + shiftT(184); // 'modify' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_TransformSpec() + { + eventHandler.startNonterminal("TransformSpec", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(28); // S^WS | '(:' | ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TransformSpec", e0); + } + + function try_TransformSpec() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_FTSelection() + { + eventHandler.startNonterminal("FTSelection", e0); + parse_FTOr(); + for (;;) + { + lookahead1W(211); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | + // 'only' | 'or' | 'order' | 'ordered' | 'return' | 'same' | 'satisfies' | + // 'stable' | 'start' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + switch (l1) + { + case 82: // 'at' + lookahead2W(161); // S^WS | '(:' | 'end' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk != 116 // 'different' + && lk != 118 // 'distance' + && lk != 128 // 'entire' + && lk != 206 // 'ordered' + && lk != 227 // 'same' + && lk != 275 // 'window' + && lk != 65106 // 'at' 'end' + && lk != 123986) // 'at' 'start' + { + break; + } + whitespace(); + parse_FTPosFilter(); + } + eventHandler.endNonterminal("FTSelection", e0); + } + + function try_FTSelection() + { + try_FTOr(); + for (;;) + { + lookahead1W(211); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | + // 'only' | 'or' | 'order' | 'ordered' | 'return' | 'same' | 'satisfies' | + // 'stable' | 'start' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + switch (l1) + { + case 82: // 'at' + lookahead2W(161); // S^WS | '(:' | 'end' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk != 116 // 'different' + && lk != 118 // 'distance' + && lk != 128 // 'entire' + && lk != 206 // 'ordered' + && lk != 227 // 'same' + && lk != 275 // 'window' + && lk != 65106 // 'at' 'end' + && lk != 123986) // 'at' 'start' + { + break; + } + try_FTPosFilter(); + } + } + + function parse_FTWeight() + { + eventHandler.startNonterminal("FTWeight", e0); + shift(270); // 'weight' + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("FTWeight", e0); + } + + function try_FTWeight() + { + shiftT(270); // 'weight' + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + } + + function parse_FTOr() + { + eventHandler.startNonterminal("FTOr", e0); + parse_FTAnd(); + for (;;) + { + if (l1 != 146) // 'ftor' + { + break; + } + shift(146); // 'ftor' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTAnd(); + } + eventHandler.endNonterminal("FTOr", e0); + } + + function try_FTOr() + { + try_FTAnd(); + for (;;) + { + if (l1 != 146) // 'ftor' + { + break; + } + shiftT(146); // 'ftor' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTAnd(); + } + } + + function parse_FTAnd() + { + eventHandler.startNonterminal("FTAnd", e0); + parse_FTMildNot(); + for (;;) + { + if (l1 != 144) // 'ftand' + { + break; + } + shift(144); // 'ftand' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTMildNot(); + } + eventHandler.endNonterminal("FTAnd", e0); + } + + function try_FTAnd() + { + try_FTMildNot(); + for (;;) + { + if (l1 != 144) // 'ftand' + { + break; + } + shiftT(144); // 'ftand' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTMildNot(); + } + } + + function parse_FTMildNot() + { + eventHandler.startNonterminal("FTMildNot", e0); + parse_FTUnaryNot(); + for (;;) + { + lookahead1W(212); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'where' | 'window' | 'with' | + // 'without' | '|}' | '}' + if (l1 != 196) // 'not' + { + break; + } + shift(196); // 'not' + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTUnaryNot(); + } + eventHandler.endNonterminal("FTMildNot", e0); + } + + function try_FTMildNot() + { + try_FTUnaryNot(); + for (;;) + { + lookahead1W(212); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'where' | 'window' | 'with' | + // 'without' | '|}' | '}' + if (l1 != 196) // 'not' + { + break; + } + shiftT(196); // 'not' + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTUnaryNot(); + } + } + + function parse_FTUnaryNot() + { + eventHandler.startNonterminal("FTUnaryNot", e0); + if (l1 == 145) // 'ftnot' + { + shift(145); // 'ftnot' + } + lookahead1W(164); // StringLiteral | S^WS | '(' | '(#' | '(:' | '{' + whitespace(); + parse_FTPrimaryWithOptions(); + eventHandler.endNonterminal("FTUnaryNot", e0); + } + + function try_FTUnaryNot() + { + if (l1 == 145) // 'ftnot' + { + shiftT(145); // 'ftnot' + } + lookahead1W(164); // StringLiteral | S^WS | '(' | '(#' | '(:' | '{' + try_FTPrimaryWithOptions(); + } + + function parse_FTPrimaryWithOptions() + { + eventHandler.startNonterminal("FTPrimaryWithOptions", e0); + parse_FTPrimary(); + lookahead1W(213); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | 'where' | + // 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 265) // 'using' + { + whitespace(); + parse_FTMatchOptions(); + } + if (l1 == 270) // 'weight' + { + whitespace(); + parse_FTWeight(); + } + eventHandler.endNonterminal("FTPrimaryWithOptions", e0); + } + + function try_FTPrimaryWithOptions() + { + try_FTPrimary(); + lookahead1W(213); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | 'where' | + // 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 265) // 'using' + { + try_FTMatchOptions(); + } + if (l1 == 270) // 'weight' + { + try_FTWeight(); + } + } + + function parse_FTPrimary() + { + eventHandler.startNonterminal("FTPrimary", e0); + switch (l1) + { + case 35: // '(' + shift(35); // '(' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTSelection(); + shift(38); // ')' + break; + case 36: // '(#' + parse_FTExtensionSelection(); + break; + default: + parse_FTWords(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 199) // 'occurs' + { + whitespace(); + parse_FTTimes(); + } + } + eventHandler.endNonterminal("FTPrimary", e0); + } + + function try_FTPrimary() + { + switch (l1) + { + case 35: // '(' + shiftT(35); // '(' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTSelection(); + shiftT(38); // ')' + break; + case 36: // '(#' + try_FTExtensionSelection(); + break; + default: + try_FTWords(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 199) // 'occurs' + { + try_FTTimes(); + } + } + } + + function parse_FTWords() + { + eventHandler.startNonterminal("FTWords", e0); + parse_FTWordsValue(); + lookahead1W(220); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'all' | 'and' | 'any' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'phrase' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | + // 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 72 // 'all' + || l1 == 77 // 'any' + || l1 == 214) // 'phrase' + { + whitespace(); + parse_FTAnyallOption(); + } + eventHandler.endNonterminal("FTWords", e0); + } + + function try_FTWords() + { + try_FTWordsValue(); + lookahead1W(220); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'all' | 'and' | 'any' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'phrase' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | + // 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 72 // 'all' + || l1 == 77 // 'any' + || l1 == 214) // 'phrase' + { + try_FTAnyallOption(); + } + } + + function parse_FTWordsValue() + { + eventHandler.startNonterminal("FTWordsValue", e0); + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + } + eventHandler.endNonterminal("FTWordsValue", e0); + } + + function try_FTWordsValue() + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + } + } + + function parse_FTExtensionSelection() + { + eventHandler.startNonterminal("FTExtensionSelection", e0); + for (;;) + { + whitespace(); + parse_Pragma(); + lookahead1W(104); // S^WS | '(#' | '(:' | '{' + if (l1 != 36) // '(#' + { + break; + } + } + shift(281); // '{' + lookahead1W(184); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' | '}' + if (l1 != 287) // '}' + { + whitespace(); + parse_FTSelection(); + } + shift(287); // '}' + eventHandler.endNonterminal("FTExtensionSelection", e0); + } + + function try_FTExtensionSelection() + { + for (;;) + { + try_Pragma(); + lookahead1W(104); // S^WS | '(#' | '(:' | '{' + if (l1 != 36) // '(#' + { + break; + } + } + shiftT(281); // '{' + lookahead1W(184); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' | '}' + if (l1 != 287) // '}' + { + try_FTSelection(); + } + shiftT(287); // '}' + } + + function parse_FTAnyallOption() + { + eventHandler.startNonterminal("FTAnyallOption", e0); + switch (l1) + { + case 77: // 'any' + shift(77); // 'any' + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | 'word' | '|}' | '}' + if (l1 == 278) // 'word' + { + shift(278); // 'word' + } + break; + case 72: // 'all' + shift(72); // 'all' + lookahead1W(218); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | 'words' | '|}' | '}' + if (l1 == 279) // 'words' + { + shift(279); // 'words' + } + break; + default: + shift(214); // 'phrase' + } + eventHandler.endNonterminal("FTAnyallOption", e0); + } + + function try_FTAnyallOption() + { + switch (l1) + { + case 77: // 'any' + shiftT(77); // 'any' + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | 'word' | '|}' | '}' + if (l1 == 278) // 'word' + { + shiftT(278); // 'word' + } + break; + case 72: // 'all' + shiftT(72); // 'all' + lookahead1W(218); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | 'words' | '|}' | '}' + if (l1 == 279) // 'words' + { + shiftT(279); // 'words' + } + break; + default: + shiftT(214); // 'phrase' + } + } + + function parse_FTTimes() + { + eventHandler.startNonterminal("FTTimes", e0); + shift(199); // 'occurs' + lookahead1W(159); // S^WS | '(:' | 'at' | 'exactly' | 'from' + whitespace(); + parse_FTRange(); + shift(252); // 'times' + eventHandler.endNonterminal("FTTimes", e0); + } + + function try_FTTimes() + { + shiftT(199); // 'occurs' + lookahead1W(159); // S^WS | '(:' | 'at' | 'exactly' | 'from' + try_FTRange(); + shiftT(252); // 'times' + } + + function parse_FTRange() + { + eventHandler.startNonterminal("FTRange", e0); + switch (l1) + { + case 131: // 'exactly' + shift(131); // 'exactly' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + break; + case 82: // 'at' + shift(82); // 'at' + lookahead1W(129); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 176: // 'least' + shift(176); // 'least' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + break; + default: + shift(186); // 'most' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + } + break; + default: + shift(142); // 'from' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + shift(253); // 'to' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + } + eventHandler.endNonterminal("FTRange", e0); + } + + function try_FTRange() + { + switch (l1) + { + case 131: // 'exactly' + shiftT(131); // 'exactly' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_AdditiveExpr(); + break; + case 82: // 'at' + shiftT(82); // 'at' + lookahead1W(129); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 176: // 'least' + shiftT(176); // 'least' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_AdditiveExpr(); + break; + default: + shiftT(186); // 'most' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_AdditiveExpr(); + } + break; + default: + shiftT(142); // 'from' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_AdditiveExpr(); + shiftT(253); // 'to' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_AdditiveExpr(); + } + } + + function parse_FTPosFilter() + { + eventHandler.startNonterminal("FTPosFilter", e0); + switch (l1) + { + case 206: // 'ordered' + parse_FTOrder(); + break; + case 275: // 'window' + parse_FTWindow(); + break; + case 118: // 'distance' + parse_FTDistance(); + break; + case 116: // 'different' + case 227: // 'same' + parse_FTScope(); + break; + default: + parse_FTContent(); + } + eventHandler.endNonterminal("FTPosFilter", e0); + } + + function try_FTPosFilter() + { + switch (l1) + { + case 206: // 'ordered' + try_FTOrder(); + break; + case 275: // 'window' + try_FTWindow(); + break; + case 118: // 'distance' + try_FTDistance(); + break; + case 116: // 'different' + case 227: // 'same' + try_FTScope(); + break; + default: + try_FTContent(); + } + } + + function parse_FTOrder() + { + eventHandler.startNonterminal("FTOrder", e0); + shift(206); // 'ordered' + eventHandler.endNonterminal("FTOrder", e0); + } + + function try_FTOrder() + { + shiftT(206); // 'ordered' + } + + function parse_FTWindow() + { + eventHandler.startNonterminal("FTWindow", e0); + shift(275); // 'window' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + whitespace(); + parse_FTUnit(); + eventHandler.endNonterminal("FTWindow", e0); + } + + function try_FTWindow() + { + shiftT(275); // 'window' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_AdditiveExpr(); + try_FTUnit(); + } + + function parse_FTDistance() + { + eventHandler.startNonterminal("FTDistance", e0); + shift(118); // 'distance' + lookahead1W(159); // S^WS | '(:' | 'at' | 'exactly' | 'from' + whitespace(); + parse_FTRange(); + whitespace(); + parse_FTUnit(); + eventHandler.endNonterminal("FTDistance", e0); + } + + function try_FTDistance() + { + shiftT(118); // 'distance' + lookahead1W(159); // S^WS | '(:' | 'at' | 'exactly' | 'from' + try_FTRange(); + try_FTUnit(); + } + + function parse_FTUnit() + { + eventHandler.startNonterminal("FTUnit", e0); + switch (l1) + { + case 279: // 'words' + shift(279); // 'words' + break; + case 237: // 'sentences' + shift(237); // 'sentences' + break; + default: + shift(209); // 'paragraphs' + } + eventHandler.endNonterminal("FTUnit", e0); + } + + function try_FTUnit() + { + switch (l1) + { + case 279: // 'words' + shiftT(279); // 'words' + break; + case 237: // 'sentences' + shiftT(237); // 'sentences' + break; + default: + shiftT(209); // 'paragraphs' + } + } + + function parse_FTScope() + { + eventHandler.startNonterminal("FTScope", e0); + switch (l1) + { + case 227: // 'same' + shift(227); // 'same' + break; + default: + shift(116); // 'different' + } + lookahead1W(136); // S^WS | '(:' | 'paragraph' | 'sentence' + whitespace(); + parse_FTBigUnit(); + eventHandler.endNonterminal("FTScope", e0); + } + + function try_FTScope() + { + switch (l1) + { + case 227: // 'same' + shiftT(227); // 'same' + break; + default: + shiftT(116); // 'different' + } + lookahead1W(136); // S^WS | '(:' | 'paragraph' | 'sentence' + try_FTBigUnit(); + } + + function parse_FTBigUnit() + { + eventHandler.startNonterminal("FTBigUnit", e0); + switch (l1) + { + case 236: // 'sentence' + shift(236); // 'sentence' + break; + default: + shift(208); // 'paragraph' + } + eventHandler.endNonterminal("FTBigUnit", e0); + } + + function try_FTBigUnit() + { + switch (l1) + { + case 236: // 'sentence' + shiftT(236); // 'sentence' + break; + default: + shiftT(208); // 'paragraph' + } + } + + function parse_FTContent() + { + eventHandler.startNonterminal("FTContent", e0); + switch (l1) + { + case 82: // 'at' + shift(82); // 'at' + lookahead1W(121); // S^WS | '(:' | 'end' | 'start' + switch (l1) + { + case 242: // 'start' + shift(242); // 'start' + break; + default: + shift(127); // 'end' + } + break; + default: + shift(128); // 'entire' + lookahead1W(45); // S^WS | '(:' | 'content' + shift(101); // 'content' + } + eventHandler.endNonterminal("FTContent", e0); + } + + function try_FTContent() + { + switch (l1) + { + case 82: // 'at' + shiftT(82); // 'at' + lookahead1W(121); // S^WS | '(:' | 'end' | 'start' + switch (l1) + { + case 242: // 'start' + shiftT(242); // 'start' + break; + default: + shiftT(127); // 'end' + } + break; + default: + shiftT(128); // 'entire' + lookahead1W(45); // S^WS | '(:' | 'content' + shiftT(101); // 'content' + } + } + + function parse_FTMatchOptions() + { + eventHandler.startNonterminal("FTMatchOptions", e0); + for (;;) + { + shift(265); // 'using' + lookahead1W(204); // S^WS | '(:' | 'case' | 'diacritics' | 'language' | 'lowercase' | 'no' | + // 'option' | 'stemming' | 'stop' | 'thesaurus' | 'uppercase' | 'wildcards' + whitespace(); + parse_FTMatchOption(); + lookahead1W(213); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | 'where' | + // 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 265) // 'using' + { + break; + } + } + eventHandler.endNonterminal("FTMatchOptions", e0); + } + + function try_FTMatchOptions() + { + for (;;) + { + shiftT(265); // 'using' + lookahead1W(204); // S^WS | '(:' | 'case' | 'diacritics' | 'language' | 'lowercase' | 'no' | + // 'option' | 'stemming' | 'stop' | 'thesaurus' | 'uppercase' | 'wildcards' + try_FTMatchOption(); + lookahead1W(213); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | 'where' | + // 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 265) // 'using' + { + break; + } + } + } + + function parse_FTMatchOption() + { + eventHandler.startNonterminal("FTMatchOption", e0); + switch (l1) + { + case 191: // 'no' + lookahead2W(176); // S^WS | '(:' | 'stemming' | 'stop' | 'thesaurus' | 'wildcards' + break; + default: + lk = l1; + } + switch (lk) + { + case 172: // 'language' + parse_FTLanguageOption(); + break; + case 274: // 'wildcards' + case 140479: // 'no' 'wildcards' + parse_FTWildCardOption(); + break; + case 251: // 'thesaurus' + case 128703: // 'no' 'thesaurus' + parse_FTThesaurusOption(); + break; + case 243: // 'stemming' + case 124607: // 'no' 'stemming' + parse_FTStemOption(); + break; + case 115: // 'diacritics' + parse_FTDiacriticsOption(); + break; + case 244: // 'stop' + case 125119: // 'no' 'stop' + parse_FTStopWordOption(); + break; + case 203: // 'option' + parse_FTExtensionOption(); + break; + default: + parse_FTCaseOption(); + } + eventHandler.endNonterminal("FTMatchOption", e0); + } + + function try_FTMatchOption() + { + switch (l1) + { + case 191: // 'no' + lookahead2W(176); // S^WS | '(:' | 'stemming' | 'stop' | 'thesaurus' | 'wildcards' + break; + default: + lk = l1; + } + switch (lk) + { + case 172: // 'language' + try_FTLanguageOption(); + break; + case 274: // 'wildcards' + case 140479: // 'no' 'wildcards' + try_FTWildCardOption(); + break; + case 251: // 'thesaurus' + case 128703: // 'no' 'thesaurus' + try_FTThesaurusOption(); + break; + case 243: // 'stemming' + case 124607: // 'no' 'stemming' + try_FTStemOption(); + break; + case 115: // 'diacritics' + try_FTDiacriticsOption(); + break; + case 244: // 'stop' + case 125119: // 'no' 'stop' + try_FTStopWordOption(); + break; + case 203: // 'option' + try_FTExtensionOption(); + break; + default: + try_FTCaseOption(); + } + } + + function parse_FTCaseOption() + { + eventHandler.startNonterminal("FTCaseOption", e0); + switch (l1) + { + case 89: // 'case' + shift(89); // 'case' + lookahead1W(128); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 160: // 'insensitive' + shift(160); // 'insensitive' + break; + default: + shift(235); // 'sensitive' + } + break; + case 180: // 'lowercase' + shift(180); // 'lowercase' + break; + default: + shift(264); // 'uppercase' + } + eventHandler.endNonterminal("FTCaseOption", e0); + } + + function try_FTCaseOption() + { + switch (l1) + { + case 89: // 'case' + shiftT(89); // 'case' + lookahead1W(128); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 160: // 'insensitive' + shiftT(160); // 'insensitive' + break; + default: + shiftT(235); // 'sensitive' + } + break; + case 180: // 'lowercase' + shiftT(180); // 'lowercase' + break; + default: + shiftT(264); // 'uppercase' + } + } + + function parse_FTDiacriticsOption() + { + eventHandler.startNonterminal("FTDiacriticsOption", e0); + shift(115); // 'diacritics' + lookahead1W(128); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 160: // 'insensitive' + shift(160); // 'insensitive' + break; + default: + shift(235); // 'sensitive' + } + eventHandler.endNonterminal("FTDiacriticsOption", e0); + } + + function try_FTDiacriticsOption() + { + shiftT(115); // 'diacritics' + lookahead1W(128); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 160: // 'insensitive' + shiftT(160); // 'insensitive' + break; + default: + shiftT(235); // 'sensitive' + } + } + + function parse_FTStemOption() + { + eventHandler.startNonterminal("FTStemOption", e0); + switch (l1) + { + case 243: // 'stemming' + shift(243); // 'stemming' + break; + default: + shift(191); // 'no' + lookahead1W(77); // S^WS | '(:' | 'stemming' + shift(243); // 'stemming' + } + eventHandler.endNonterminal("FTStemOption", e0); + } + + function try_FTStemOption() + { + switch (l1) + { + case 243: // 'stemming' + shiftT(243); // 'stemming' + break; + default: + shiftT(191); // 'no' + lookahead1W(77); // S^WS | '(:' | 'stemming' + shiftT(243); // 'stemming' + } + } + + function parse_FTThesaurusOption() + { + eventHandler.startNonterminal("FTThesaurusOption", e0); + switch (l1) + { + case 251: // 'thesaurus' + shift(251); // 'thesaurus' + lookahead1W(152); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 82: // 'at' + whitespace(); + parse_FTThesaurusID(); + break; + case 110: // 'default' + shift(110); // 'default' + break; + default: + shift(35); // '(' + lookahead1W(116); // S^WS | '(:' | 'at' | 'default' + switch (l1) + { + case 82: // 'at' + whitespace(); + parse_FTThesaurusID(); + break; + default: + shift(110); // 'default' + } + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(34); // S^WS | '(:' | 'at' + whitespace(); + parse_FTThesaurusID(); + } + shift(38); // ')' + } + break; + default: + shift(191); // 'no' + lookahead1W(81); // S^WS | '(:' | 'thesaurus' + shift(251); // 'thesaurus' + } + eventHandler.endNonterminal("FTThesaurusOption", e0); + } + + function try_FTThesaurusOption() + { + switch (l1) + { + case 251: // 'thesaurus' + shiftT(251); // 'thesaurus' + lookahead1W(152); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 82: // 'at' + try_FTThesaurusID(); + break; + case 110: // 'default' + shiftT(110); // 'default' + break; + default: + shiftT(35); // '(' + lookahead1W(116); // S^WS | '(:' | 'at' | 'default' + switch (l1) + { + case 82: // 'at' + try_FTThesaurusID(); + break; + default: + shiftT(110); // 'default' + } + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(34); // S^WS | '(:' | 'at' + try_FTThesaurusID(); + } + shiftT(38); // ')' + } + break; + default: + shiftT(191); // 'no' + lookahead1W(81); // S^WS | '(:' | 'thesaurus' + shiftT(251); // 'thesaurus' + } + } + + function parse_FTThesaurusID() + { + eventHandler.startNonterminal("FTThesaurusID", e0); + shift(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(219); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'exactly' | 'for' | 'from' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'relationship' | 'return' | 'same' | 'satisfies' | 'stable' | + // 'start' | 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | + // '}' + if (l1 == 221) // 'relationship' + { + shift(221); // 'relationship' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + lookahead1W(215); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'exactly' | 'for' | 'from' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | + // 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + switch (l1) + { + case 82: // 'at' + lookahead2W(183); // S^WS | '(:' | 'end' | 'least' | 'most' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk == 131 // 'exactly' + || lk == 142 // 'from' + || lk == 90194 // 'at' 'least' + || lk == 95314) // 'at' 'most' + { + whitespace(); + parse_FTLiteralRange(); + lookahead1W(61); // S^WS | '(:' | 'levels' + shift(178); // 'levels' + } + eventHandler.endNonterminal("FTThesaurusID", e0); + } + + function try_FTThesaurusID() + { + shiftT(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + lookahead1W(219); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'exactly' | 'for' | 'from' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'relationship' | 'return' | 'same' | 'satisfies' | 'stable' | + // 'start' | 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | + // '}' + if (l1 == 221) // 'relationship' + { + shiftT(221); // 'relationship' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + lookahead1W(215); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'exactly' | 'for' | 'from' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | + // 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + switch (l1) + { + case 82: // 'at' + lookahead2W(183); // S^WS | '(:' | 'end' | 'least' | 'most' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk == 131 // 'exactly' + || lk == 142 // 'from' + || lk == 90194 // 'at' 'least' + || lk == 95314) // 'at' 'most' + { + try_FTLiteralRange(); + lookahead1W(61); // S^WS | '(:' | 'levels' + shiftT(178); // 'levels' + } + } + + function parse_FTLiteralRange() + { + eventHandler.startNonterminal("FTLiteralRange", e0); + switch (l1) + { + case 131: // 'exactly' + shift(131); // 'exactly' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + break; + case 82: // 'at' + shift(82); // 'at' + lookahead1W(129); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 176: // 'least' + shift(176); // 'least' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + break; + default: + shift(186); // 'most' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + } + break; + default: + shift(142); // 'from' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + lookahead1W(82); // S^WS | '(:' | 'to' + shift(253); // 'to' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + } + eventHandler.endNonterminal("FTLiteralRange", e0); + } + + function try_FTLiteralRange() + { + switch (l1) + { + case 131: // 'exactly' + shiftT(131); // 'exactly' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + break; + case 82: // 'at' + shiftT(82); // 'at' + lookahead1W(129); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 176: // 'least' + shiftT(176); // 'least' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + break; + default: + shiftT(186); // 'most' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + break; + default: + shiftT(142); // 'from' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + lookahead1W(82); // S^WS | '(:' | 'to' + shiftT(253); // 'to' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + } + + function parse_FTStopWordOption() + { + eventHandler.startNonterminal("FTStopWordOption", e0); + switch (l1) + { + case 244: // 'stop' + shift(244); // 'stop' + lookahead1W(89); // S^WS | '(:' | 'words' + shift(279); // 'words' + lookahead1W(152); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 110: // 'default' + shift(110); // 'default' + for (;;) + { + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'except' | 'for' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'union' | + // 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 132 // 'except' + && l1 != 260) // 'union' + { + break; + } + whitespace(); + parse_FTStopWordsInclExcl(); + } + break; + default: + whitespace(); + parse_FTStopWords(); + for (;;) + { + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'except' | 'for' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'union' | + // 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 132 // 'except' + && l1 != 260) // 'union' + { + break; + } + whitespace(); + parse_FTStopWordsInclExcl(); + } + } + break; + default: + shift(191); // 'no' + lookahead1W(78); // S^WS | '(:' | 'stop' + shift(244); // 'stop' + lookahead1W(89); // S^WS | '(:' | 'words' + shift(279); // 'words' + } + eventHandler.endNonterminal("FTStopWordOption", e0); + } + + function try_FTStopWordOption() + { + switch (l1) + { + case 244: // 'stop' + shiftT(244); // 'stop' + lookahead1W(89); // S^WS | '(:' | 'words' + shiftT(279); // 'words' + lookahead1W(152); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 110: // 'default' + shiftT(110); // 'default' + for (;;) + { + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'except' | 'for' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'union' | + // 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 132 // 'except' + && l1 != 260) // 'union' + { + break; + } + try_FTStopWordsInclExcl(); + } + break; + default: + try_FTStopWords(); + for (;;) + { + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'except' | 'for' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'union' | + // 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 132 // 'except' + && l1 != 260) // 'union' + { + break; + } + try_FTStopWordsInclExcl(); + } + } + break; + default: + shiftT(191); // 'no' + lookahead1W(78); // S^WS | '(:' | 'stop' + shiftT(244); // 'stop' + lookahead1W(89); // S^WS | '(:' | 'words' + shiftT(279); // 'words' + } + } + + function parse_FTStopWords() + { + eventHandler.startNonterminal("FTStopWords", e0); + switch (l1) + { + case 82: // 'at' + shift(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + break; + default: + shift(35); // '(' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + shift(38); // ')' + } + eventHandler.endNonterminal("FTStopWords", e0); + } + + function try_FTStopWords() + { + switch (l1) + { + case 82: // 'at' + shiftT(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + break; + default: + shiftT(35); // '(' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + shiftT(38); // ')' + } + } + + function parse_FTStopWordsInclExcl() + { + eventHandler.startNonterminal("FTStopWordsInclExcl", e0); + switch (l1) + { + case 260: // 'union' + shift(260); // 'union' + break; + default: + shift(132); // 'except' + } + lookahead1W(103); // S^WS | '(' | '(:' | 'at' + whitespace(); + parse_FTStopWords(); + eventHandler.endNonterminal("FTStopWordsInclExcl", e0); + } + + function try_FTStopWordsInclExcl() + { + switch (l1) + { + case 260: // 'union' + shiftT(260); // 'union' + break; + default: + shiftT(132); // 'except' + } + lookahead1W(103); // S^WS | '(' | '(:' | 'at' + try_FTStopWords(); + } + + function parse_FTLanguageOption() + { + eventHandler.startNonterminal("FTLanguageOption", e0); + shift(172); // 'language' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("FTLanguageOption", e0); + } + + function try_FTLanguageOption() + { + shiftT(172); // 'language' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + + function parse_FTWildCardOption() + { + eventHandler.startNonterminal("FTWildCardOption", e0); + switch (l1) + { + case 274: // 'wildcards' + shift(274); // 'wildcards' + break; + default: + shift(191); // 'no' + lookahead1W(87); // S^WS | '(:' | 'wildcards' + shift(274); // 'wildcards' + } + eventHandler.endNonterminal("FTWildCardOption", e0); + } + + function try_FTWildCardOption() + { + switch (l1) + { + case 274: // 'wildcards' + shiftT(274); // 'wildcards' + break; + default: + shiftT(191); // 'no' + lookahead1W(87); // S^WS | '(:' | 'wildcards' + shiftT(274); // 'wildcards' + } + } + + function parse_FTExtensionOption() + { + eventHandler.startNonterminal("FTExtensionOption", e0); + shift(203); // 'option' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("FTExtensionOption", e0); + } + + function try_FTExtensionOption() + { + shiftT(203); // 'option' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + + function parse_FTIgnoreOption() + { + eventHandler.startNonterminal("FTIgnoreOption", e0); + shift(277); // 'without' + lookahead1W(45); // S^WS | '(:' | 'content' + shift(101); // 'content' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_UnionExpr(); + eventHandler.endNonterminal("FTIgnoreOption", e0); + } + + function try_FTIgnoreOption() + { + shiftT(277); // 'without' + lookahead1W(45); // S^WS | '(:' | 'content' + shiftT(101); // 'content' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + try_UnionExpr(); + } + + function parse_CollectionDecl() + { + eventHandler.startNonterminal("CollectionDecl", e0); + shift(96); // 'collection' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(111); // S^WS | '(:' | ';' | 'as' + if (l1 == 80) // 'as' + { + whitespace(); + parse_CollectionTypeDecl(); + } + eventHandler.endNonterminal("CollectionDecl", e0); + } + + function parse_CollectionTypeDecl() + { + eventHandler.startNonterminal("CollectionTypeDecl", e0); + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_ItemType(); + lookahead1W(171); // S^WS | '(:' | '*' | '+' | ';' | '?' + if (l1 != 54) // ';' + { + whitespace(); + parse_OccurrenceIndicator(); + } + eventHandler.endNonterminal("CollectionTypeDecl", e0); + } + + function parse_IndexName() + { + eventHandler.startNonterminal("IndexName", e0); + parse_EQName(); + eventHandler.endNonterminal("IndexName", e0); + } + + function parse_IndexDomainExpr() + { + eventHandler.startNonterminal("IndexDomainExpr", e0); + parse_PathExpr(); + eventHandler.endNonterminal("IndexDomainExpr", e0); + } + + function parse_IndexKeySpec() + { + eventHandler.startNonterminal("IndexKeySpec", e0); + parse_IndexKeyExpr(); + if (l1 == 80) // 'as' + { + whitespace(); + parse_IndexKeyTypeDecl(); + } + lookahead1W(156); // S^WS | '(:' | ',' | ';' | 'collation' + if (l1 == 95) // 'collation' + { + whitespace(); + parse_IndexKeyCollation(); + } + eventHandler.endNonterminal("IndexKeySpec", e0); + } + + function parse_IndexKeyExpr() + { + eventHandler.startNonterminal("IndexKeyExpr", e0); + parse_PathExpr(); + eventHandler.endNonterminal("IndexKeyExpr", e0); + } + + function parse_IndexKeyTypeDecl() + { + eventHandler.startNonterminal("IndexKeyTypeDecl", e0); + shift(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_AtomicType(); + lookahead1W(189); // S^WS | '(:' | '*' | '+' | ',' | ';' | '?' | 'collation' + if (l1 == 40 // '*' + || l1 == 41 // '+' + || l1 == 65) // '?' + { + whitespace(); + parse_OccurrenceIndicator(); + } + eventHandler.endNonterminal("IndexKeyTypeDecl", e0); + } + + function parse_AtomicType() + { + eventHandler.startNonterminal("AtomicType", e0); + parse_EQName(); + eventHandler.endNonterminal("AtomicType", e0); + } + + function parse_IndexKeyCollation() + { + eventHandler.startNonterminal("IndexKeyCollation", e0); + shift(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("IndexKeyCollation", e0); + } + + function parse_IndexDecl() + { + eventHandler.startNonterminal("IndexDecl", e0); + shift(157); // 'index' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_IndexName(); + lookahead1W(68); // S^WS | '(:' | 'on' + shift(201); // 'on' + lookahead1W(66); // S^WS | '(:' | 'nodes' + shift(195); // 'nodes' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '/' | '//' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_IndexDomainExpr(); + shift(88); // 'by' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '/' | '//' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_IndexKeySpec(); + for (;;) + { + lookahead1W(107); // S^WS | '(:' | ',' | ';' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '/' | '//' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_IndexKeySpec(); + } + eventHandler.endNonterminal("IndexDecl", e0); + } + + function parse_ICDecl() + { + eventHandler.startNonterminal("ICDecl", e0); + shift(163); // 'integrity' + lookahead1W(43); // S^WS | '(:' | 'constraint' + shift(98); // 'constraint' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(124); // S^WS | '(:' | 'foreign' | 'on' + switch (l1) + { + case 201: // 'on' + whitespace(); + parse_ICCollection(); + break; + default: + whitespace(); + parse_ICForeignKey(); + } + eventHandler.endNonterminal("ICDecl", e0); + } + + function parse_ICCollection() + { + eventHandler.startNonterminal("ICCollection", e0); + shift(201); // 'on' + lookahead1W(42); // S^WS | '(:' | 'collection' + shift(96); // 'collection' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(150); // S^WS | '$' | '(:' | 'foreach' | 'node' + switch (l1) + { + case 31: // '$' + whitespace(); + parse_ICCollSequence(); + break; + case 194: // 'node' + whitespace(); + parse_ICCollSequenceUnique(); + break; + default: + whitespace(); + parse_ICCollNode(); + } + eventHandler.endNonterminal("ICCollection", e0); + } + + function parse_ICCollSequence() + { + eventHandler.startNonterminal("ICCollSequence", e0); + parse_VarRef(); + lookahead1W(40); // S^WS | '(:' | 'check' + shift(93); // 'check' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ICCollSequence", e0); + } + + function parse_ICCollSequenceUnique() + { + eventHandler.startNonterminal("ICCollSequenceUnique", e0); + shift(194); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(40); // S^WS | '(:' | 'check' + shift(93); // 'check' + lookahead1W(83); // S^WS | '(:' | 'unique' + shift(261); // 'unique' + lookahead1W(60); // S^WS | '(:' | 'key' + shift(171); // 'key' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '/' | '//' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_PathExpr(); + eventHandler.endNonterminal("ICCollSequenceUnique", e0); + } + + function parse_ICCollNode() + { + eventHandler.startNonterminal("ICCollNode", e0); + shift(140); // 'foreach' + lookahead1W(65); // S^WS | '(:' | 'node' + shift(194); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(40); // S^WS | '(:' | 'check' + shift(93); // 'check' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ICCollNode", e0); + } + + function parse_ICForeignKey() + { + eventHandler.startNonterminal("ICForeignKey", e0); + shift(141); // 'foreign' + lookahead1W(60); // S^WS | '(:' | 'key' + shift(171); // 'key' + lookahead1W(54); // S^WS | '(:' | 'from' + whitespace(); + parse_ICForeignKeySource(); + whitespace(); + parse_ICForeignKeyTarget(); + eventHandler.endNonterminal("ICForeignKey", e0); + } + + function parse_ICForeignKeySource() + { + eventHandler.startNonterminal("ICForeignKeySource", e0); + shift(142); // 'from' + lookahead1W(42); // S^WS | '(:' | 'collection' + whitespace(); + parse_ICForeignKeyValues(); + eventHandler.endNonterminal("ICForeignKeySource", e0); + } + + function parse_ICForeignKeyTarget() + { + eventHandler.startNonterminal("ICForeignKeyTarget", e0); + shift(253); // 'to' + lookahead1W(42); // S^WS | '(:' | 'collection' + whitespace(); + parse_ICForeignKeyValues(); + eventHandler.endNonterminal("ICForeignKeyTarget", e0); + } + + function parse_ICForeignKeyValues() + { + eventHandler.startNonterminal("ICForeignKeyValues", e0); + shift(96); // 'collection' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(65); // S^WS | '(:' | 'node' + shift(194); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(60); // S^WS | '(:' | 'key' + shift(171); // 'key' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '/' | '//' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_PathExpr(); + eventHandler.endNonterminal("ICForeignKeyValues", e0); + } + + function try_Comment() + { + shiftT(37); // '(:' + for (;;) + { + lookahead1(92); // CommentContents | '(:' | ':)' + if (l1 == 51) // ':)' + { + break; + } + switch (l1) + { + case 24: // CommentContents + shiftT(24); // CommentContents + break; + default: + try_Comment(); + } + } + shiftT(51); // ':)' + } + + function try_Whitespace() + { + switch (l1) + { + case 22: // S^WS + shiftT(22); // S^WS + break; + default: + try_Comment(); + } + } + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + lookahead1(240); // EQName^Token | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + // 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | + // 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + switch (l1) + { + case 83: // 'attribute' + shift(83); // 'attribute' + break; + case 97: // 'comment' + shift(97); // 'comment' + break; + case 121: // 'document-node' + shift(121); // 'document-node' + break; + case 122: // 'element' + shift(122); // 'element' + break; + case 125: // 'empty-sequence' + shift(125); // 'empty-sequence' + break; + case 147: // 'function' + shift(147); // 'function' + break; + case 154: // 'if' + shift(154); // 'if' + break; + case 167: // 'item' + shift(167); // 'item' + break; + case 188: // 'namespace-node' + shift(188); // 'namespace-node' + break; + case 194: // 'node' + shift(194); // 'node' + break; + case 220: // 'processing-instruction' + shift(220); // 'processing-instruction' + break; + case 230: // 'schema-attribute' + shift(230); // 'schema-attribute' + break; + case 231: // 'schema-element' + shift(231); // 'schema-element' + break; + case 248: // 'switch' + shift(248); // 'switch' + break; + case 249: // 'text' + shift(249); // 'text' + break; + case 259: // 'typeswitch' + shift(259); // 'typeswitch' + break; + case 79: // 'array' + shift(79); // 'array' + break; + case 169: // 'json-item' + shift(169); // 'json-item' + break; + case 247: // 'structured-item' + shift(247); // 'structured-item' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function try_EQName() + { + lookahead1(240); // EQName^Token | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + // 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | + // 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' + switch (l1) + { + case 83: // 'attribute' + shiftT(83); // 'attribute' + break; + case 97: // 'comment' + shiftT(97); // 'comment' + break; + case 121: // 'document-node' + shiftT(121); // 'document-node' + break; + case 122: // 'element' + shiftT(122); // 'element' + break; + case 125: // 'empty-sequence' + shiftT(125); // 'empty-sequence' + break; + case 147: // 'function' + shiftT(147); // 'function' + break; + case 154: // 'if' + shiftT(154); // 'if' + break; + case 167: // 'item' + shiftT(167); // 'item' + break; + case 188: // 'namespace-node' + shiftT(188); // 'namespace-node' + break; + case 194: // 'node' + shiftT(194); // 'node' + break; + case 220: // 'processing-instruction' + shiftT(220); // 'processing-instruction' + break; + case 230: // 'schema-attribute' + shiftT(230); // 'schema-attribute' + break; + case 231: // 'schema-element' + shiftT(231); // 'schema-element' + break; + case 248: // 'switch' + shiftT(248); // 'switch' + break; + case 249: // 'text' + shiftT(249); // 'text' + break; + case 259: // 'typeswitch' + shiftT(259); // 'typeswitch' + break; + case 79: // 'array' + shiftT(79); // 'array' + break; + case 169: // 'json-item' + shiftT(169); // 'json-item' + break; + case 247: // 'structured-item' + shiftT(247); // 'structured-item' + break; + default: + try_FunctionName(); + } + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 6: // EQName^Token + shift(6); // EQName^Token + break; + case 71: // 'after' + shift(71); // 'after' + break; + case 74: // 'ancestor' + shift(74); // 'ancestor' + break; + case 75: // 'ancestor-or-self' + shift(75); // 'ancestor-or-self' + break; + case 76: // 'and' + shift(76); // 'and' + break; + case 80: // 'as' + shift(80); // 'as' + break; + case 81: // 'ascending' + shift(81); // 'ascending' + break; + case 85: // 'before' + shift(85); // 'before' + break; + case 89: // 'case' + shift(89); // 'case' + break; + case 90: // 'cast' + shift(90); // 'cast' + break; + case 91: // 'castable' + shift(91); // 'castable' + break; + case 94: // 'child' + shift(94); // 'child' + break; + case 95: // 'collation' + shift(95); // 'collation' + break; + case 104: // 'copy' + shift(104); // 'copy' + break; + case 106: // 'count' + shift(106); // 'count' + break; + case 109: // 'declare' + shift(109); // 'declare' + break; + case 110: // 'default' + shift(110); // 'default' + break; + case 111: // 'delete' + shift(111); // 'delete' + break; + case 112: // 'descendant' + shift(112); // 'descendant' + break; + case 113: // 'descendant-or-self' + shift(113); // 'descendant-or-self' + break; + case 114: // 'descending' + shift(114); // 'descending' + break; + case 119: // 'div' + shift(119); // 'div' + break; + case 120: // 'document' + shift(120); // 'document' + break; + case 123: // 'else' + shift(123); // 'else' + break; + case 124: // 'empty' + shift(124); // 'empty' + break; + case 127: // 'end' + shift(127); // 'end' + break; + case 129: // 'eq' + shift(129); // 'eq' + break; + case 130: // 'every' + shift(130); // 'every' + break; + case 132: // 'except' + shift(132); // 'except' + break; + case 136: // 'first' + shift(136); // 'first' + break; + case 137: // 'following' + shift(137); // 'following' + break; + case 138: // 'following-sibling' + shift(138); // 'following-sibling' + break; + case 139: // 'for' + shift(139); // 'for' + break; + case 148: // 'ge' + shift(148); // 'ge' + break; + case 150: // 'group' + shift(150); // 'group' + break; + case 152: // 'gt' + shift(152); // 'gt' + break; + case 153: // 'idiv' + shift(153); // 'idiv' + break; + case 155: // 'import' + shift(155); // 'import' + break; + case 161: // 'insert' + shift(161); // 'insert' + break; + case 162: // 'instance' + shift(162); // 'instance' + break; + case 164: // 'intersect' + shift(164); // 'intersect' + break; + case 165: // 'into' + shift(165); // 'into' + break; + case 166: // 'is' + shift(166); // 'is' + break; + case 173: // 'last' + shift(173); // 'last' + break; + case 175: // 'le' + shift(175); // 'le' + break; + case 177: // 'let' + shift(177); // 'let' + break; + case 181: // 'lt' + shift(181); // 'lt' + break; + case 183: // 'mod' + shift(183); // 'mod' + break; + case 184: // 'modify' + shift(184); // 'modify' + break; + case 185: // 'module' + shift(185); // 'module' + break; + case 187: // 'namespace' + shift(187); // 'namespace' + break; + case 189: // 'ne' + shift(189); // 'ne' + break; + case 202: // 'only' + shift(202); // 'only' + break; + case 204: // 'or' + shift(204); // 'or' + break; + case 205: // 'order' + shift(205); // 'order' + break; + case 206: // 'ordered' + shift(206); // 'ordered' + break; + case 210: // 'parent' + shift(210); // 'parent' + break; + case 216: // 'preceding' + shift(216); // 'preceding' + break; + case 217: // 'preceding-sibling' + shift(217); // 'preceding-sibling' + break; + case 222: // 'rename' + shift(222); // 'rename' + break; + case 223: // 'replace' + shift(223); // 'replace' + break; + case 224: // 'return' + shift(224); // 'return' + break; + case 228: // 'satisfies' + shift(228); // 'satisfies' + break; + case 234: // 'self' + shift(234); // 'self' + break; + case 240: // 'some' + shift(240); // 'some' + break; + case 241: // 'stable' + shift(241); // 'stable' + break; + case 242: // 'start' + shift(242); // 'start' + break; + case 253: // 'to' + shift(253); // 'to' + break; + case 254: // 'treat' + shift(254); // 'treat' + break; + case 256: // 'try' + shift(256); // 'try' + break; + case 260: // 'union' + shift(260); // 'union' + break; + case 262: // 'unordered' + shift(262); // 'unordered' + break; + case 266: // 'validate' + shift(266); // 'validate' + break; + case 272: // 'where' + shift(272); // 'where' + break; + case 276: // 'with' + shift(276); // 'with' + break; + case 170: // 'jsoniq' + shift(170); // 'jsoniq' + break; + case 73: // 'allowing' + shift(73); // 'allowing' + break; + case 82: // 'at' + shift(82); // 'at' + break; + case 84: // 'base-uri' + shift(84); // 'base-uri' + break; + case 86: // 'boundary-space' + shift(86); // 'boundary-space' + break; + case 87: // 'break' + shift(87); // 'break' + break; + case 92: // 'catch' + shift(92); // 'catch' + break; + case 99: // 'construction' + shift(99); // 'construction' + break; + case 102: // 'context' + shift(102); // 'context' + break; + case 103: // 'continue' + shift(103); // 'continue' + break; + case 105: // 'copy-namespaces' + shift(105); // 'copy-namespaces' + break; + case 107: // 'decimal-format' + shift(107); // 'decimal-format' + break; + case 126: // 'encoding' + shift(126); // 'encoding' + break; + case 133: // 'exit' + shift(133); // 'exit' + break; + case 134: // 'external' + shift(134); // 'external' + break; + case 143: // 'ft-option' + shift(143); // 'ft-option' + break; + case 156: // 'in' + shift(156); // 'in' + break; + case 157: // 'index' + shift(157); // 'index' + break; + case 163: // 'integrity' + shift(163); // 'integrity' + break; + case 174: // 'lax' + shift(174); // 'lax' + break; + case 195: // 'nodes' + shift(195); // 'nodes' + break; + case 203: // 'option' + shift(203); // 'option' + break; + case 207: // 'ordering' + shift(207); // 'ordering' + break; + case 226: // 'revalidation' + shift(226); // 'revalidation' + break; + case 229: // 'schema' + shift(229); // 'schema' + break; + case 232: // 'score' + shift(232); // 'score' + break; + case 239: // 'sliding' + shift(239); // 'sliding' + break; + case 245: // 'strict' + shift(245); // 'strict' + break; + case 257: // 'tumbling' + shift(257); // 'tumbling' + break; + case 258: // 'type' + shift(258); // 'type' + break; + case 263: // 'updating' + shift(263); // 'updating' + break; + case 267: // 'value' + shift(267); // 'value' + break; + case 268: // 'variable' + shift(268); // 'variable' + break; + case 269: // 'version' + shift(269); // 'version' + break; + case 273: // 'while' + shift(273); // 'while' + break; + case 98: // 'constraint' + shift(98); // 'constraint' + break; + case 179: // 'loop' + shift(179); // 'loop' + break; + case 225: // 'returning' + shift(225); // 'returning' + break; + case 78: // 'append' + shift(78); // 'append' + break; + case 135: // 'false' + shift(135); // 'false' + break; + case 142: // 'from' + shift(142); // 'from' + break; + case 197: // 'null' + shift(197); // 'null' + break; + case 168: // 'json' + shift(168); // 'json' + break; + case 198: // 'object' + shift(198); // 'object' + break; + case 233: // 'select' + shift(233); // 'select' + break; + default: + shift(255); // 'true' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function try_FunctionName() + { + switch (l1) + { + case 6: // EQName^Token + shiftT(6); // EQName^Token + break; + case 71: // 'after' + shiftT(71); // 'after' + break; + case 74: // 'ancestor' + shiftT(74); // 'ancestor' + break; + case 75: // 'ancestor-or-self' + shiftT(75); // 'ancestor-or-self' + break; + case 76: // 'and' + shiftT(76); // 'and' + break; + case 80: // 'as' + shiftT(80); // 'as' + break; + case 81: // 'ascending' + shiftT(81); // 'ascending' + break; + case 85: // 'before' + shiftT(85); // 'before' + break; + case 89: // 'case' + shiftT(89); // 'case' + break; + case 90: // 'cast' + shiftT(90); // 'cast' + break; + case 91: // 'castable' + shiftT(91); // 'castable' + break; + case 94: // 'child' + shiftT(94); // 'child' + break; + case 95: // 'collation' + shiftT(95); // 'collation' + break; + case 104: // 'copy' + shiftT(104); // 'copy' + break; + case 106: // 'count' + shiftT(106); // 'count' + break; + case 109: // 'declare' + shiftT(109); // 'declare' + break; + case 110: // 'default' + shiftT(110); // 'default' + break; + case 111: // 'delete' + shiftT(111); // 'delete' + break; + case 112: // 'descendant' + shiftT(112); // 'descendant' + break; + case 113: // 'descendant-or-self' + shiftT(113); // 'descendant-or-self' + break; + case 114: // 'descending' + shiftT(114); // 'descending' + break; + case 119: // 'div' + shiftT(119); // 'div' + break; + case 120: // 'document' + shiftT(120); // 'document' + break; + case 123: // 'else' + shiftT(123); // 'else' + break; + case 124: // 'empty' + shiftT(124); // 'empty' + break; + case 127: // 'end' + shiftT(127); // 'end' + break; + case 129: // 'eq' + shiftT(129); // 'eq' + break; + case 130: // 'every' + shiftT(130); // 'every' + break; + case 132: // 'except' + shiftT(132); // 'except' + break; + case 136: // 'first' + shiftT(136); // 'first' + break; + case 137: // 'following' + shiftT(137); // 'following' + break; + case 138: // 'following-sibling' + shiftT(138); // 'following-sibling' + break; + case 139: // 'for' + shiftT(139); // 'for' + break; + case 148: // 'ge' + shiftT(148); // 'ge' + break; + case 150: // 'group' + shiftT(150); // 'group' + break; + case 152: // 'gt' + shiftT(152); // 'gt' + break; + case 153: // 'idiv' + shiftT(153); // 'idiv' + break; + case 155: // 'import' + shiftT(155); // 'import' + break; + case 161: // 'insert' + shiftT(161); // 'insert' + break; + case 162: // 'instance' + shiftT(162); // 'instance' + break; + case 164: // 'intersect' + shiftT(164); // 'intersect' + break; + case 165: // 'into' + shiftT(165); // 'into' + break; + case 166: // 'is' + shiftT(166); // 'is' + break; + case 173: // 'last' + shiftT(173); // 'last' + break; + case 175: // 'le' + shiftT(175); // 'le' + break; + case 177: // 'let' + shiftT(177); // 'let' + break; + case 181: // 'lt' + shiftT(181); // 'lt' + break; + case 183: // 'mod' + shiftT(183); // 'mod' + break; + case 184: // 'modify' + shiftT(184); // 'modify' + break; + case 185: // 'module' + shiftT(185); // 'module' + break; + case 187: // 'namespace' + shiftT(187); // 'namespace' + break; + case 189: // 'ne' + shiftT(189); // 'ne' + break; + case 202: // 'only' + shiftT(202); // 'only' + break; + case 204: // 'or' + shiftT(204); // 'or' + break; + case 205: // 'order' + shiftT(205); // 'order' + break; + case 206: // 'ordered' + shiftT(206); // 'ordered' + break; + case 210: // 'parent' + shiftT(210); // 'parent' + break; + case 216: // 'preceding' + shiftT(216); // 'preceding' + break; + case 217: // 'preceding-sibling' + shiftT(217); // 'preceding-sibling' + break; + case 222: // 'rename' + shiftT(222); // 'rename' + break; + case 223: // 'replace' + shiftT(223); // 'replace' + break; + case 224: // 'return' + shiftT(224); // 'return' + break; + case 228: // 'satisfies' + shiftT(228); // 'satisfies' + break; + case 234: // 'self' + shiftT(234); // 'self' + break; + case 240: // 'some' + shiftT(240); // 'some' + break; + case 241: // 'stable' + shiftT(241); // 'stable' + break; + case 242: // 'start' + shiftT(242); // 'start' + break; + case 253: // 'to' + shiftT(253); // 'to' + break; + case 254: // 'treat' + shiftT(254); // 'treat' + break; + case 256: // 'try' + shiftT(256); // 'try' + break; + case 260: // 'union' + shiftT(260); // 'union' + break; + case 262: // 'unordered' + shiftT(262); // 'unordered' + break; + case 266: // 'validate' + shiftT(266); // 'validate' + break; + case 272: // 'where' + shiftT(272); // 'where' + break; + case 276: // 'with' + shiftT(276); // 'with' + break; + case 170: // 'jsoniq' + shiftT(170); // 'jsoniq' + break; + case 73: // 'allowing' + shiftT(73); // 'allowing' + break; + case 82: // 'at' + shiftT(82); // 'at' + break; + case 84: // 'base-uri' + shiftT(84); // 'base-uri' + break; + case 86: // 'boundary-space' + shiftT(86); // 'boundary-space' + break; + case 87: // 'break' + shiftT(87); // 'break' + break; + case 92: // 'catch' + shiftT(92); // 'catch' + break; + case 99: // 'construction' + shiftT(99); // 'construction' + break; + case 102: // 'context' + shiftT(102); // 'context' + break; + case 103: // 'continue' + shiftT(103); // 'continue' + break; + case 105: // 'copy-namespaces' + shiftT(105); // 'copy-namespaces' + break; + case 107: // 'decimal-format' + shiftT(107); // 'decimal-format' + break; + case 126: // 'encoding' + shiftT(126); // 'encoding' + break; + case 133: // 'exit' + shiftT(133); // 'exit' + break; + case 134: // 'external' + shiftT(134); // 'external' + break; + case 143: // 'ft-option' + shiftT(143); // 'ft-option' + break; + case 156: // 'in' + shiftT(156); // 'in' + break; + case 157: // 'index' + shiftT(157); // 'index' + break; + case 163: // 'integrity' + shiftT(163); // 'integrity' + break; + case 174: // 'lax' + shiftT(174); // 'lax' + break; + case 195: // 'nodes' + shiftT(195); // 'nodes' + break; + case 203: // 'option' + shiftT(203); // 'option' + break; + case 207: // 'ordering' + shiftT(207); // 'ordering' + break; + case 226: // 'revalidation' + shiftT(226); // 'revalidation' + break; + case 229: // 'schema' + shiftT(229); // 'schema' + break; + case 232: // 'score' + shiftT(232); // 'score' + break; + case 239: // 'sliding' + shiftT(239); // 'sliding' + break; + case 245: // 'strict' + shiftT(245); // 'strict' + break; + case 257: // 'tumbling' + shiftT(257); // 'tumbling' + break; + case 258: // 'type' + shiftT(258); // 'type' + break; + case 263: // 'updating' + shiftT(263); // 'updating' + break; + case 267: // 'value' + shiftT(267); // 'value' + break; + case 268: // 'variable' + shiftT(268); // 'variable' + break; + case 269: // 'version' + shiftT(269); // 'version' + break; + case 273: // 'while' + shiftT(273); // 'while' + break; + case 98: // 'constraint' + shiftT(98); // 'constraint' + break; + case 179: // 'loop' + shiftT(179); // 'loop' + break; + case 225: // 'returning' + shiftT(225); // 'returning' + break; + case 78: // 'append' + shiftT(78); // 'append' + break; + case 135: // 'false' + shiftT(135); // 'false' + break; + case 142: // 'from' + shiftT(142); // 'from' + break; + case 197: // 'null' + shiftT(197); // 'null' + break; + case 168: // 'json' + shiftT(168); // 'json' + break; + case 198: // 'object' + shiftT(198); // 'object' + break; + case 233: // 'select' + shiftT(233); // 'select' + break; + default: + shiftT(255); // 'true' + } + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 19: // NCName^Token + shift(19); // NCName^Token + break; + case 71: // 'after' + shift(71); // 'after' + break; + case 76: // 'and' + shift(76); // 'and' + break; + case 80: // 'as' + shift(80); // 'as' + break; + case 81: // 'ascending' + shift(81); // 'ascending' + break; + case 85: // 'before' + shift(85); // 'before' + break; + case 89: // 'case' + shift(89); // 'case' + break; + case 90: // 'cast' + shift(90); // 'cast' + break; + case 91: // 'castable' + shift(91); // 'castable' + break; + case 95: // 'collation' + shift(95); // 'collation' + break; + case 106: // 'count' + shift(106); // 'count' + break; + case 110: // 'default' + shift(110); // 'default' + break; + case 114: // 'descending' + shift(114); // 'descending' + break; + case 119: // 'div' + shift(119); // 'div' + break; + case 123: // 'else' + shift(123); // 'else' + break; + case 124: // 'empty' + shift(124); // 'empty' + break; + case 127: // 'end' + shift(127); // 'end' + break; + case 129: // 'eq' + shift(129); // 'eq' + break; + case 132: // 'except' + shift(132); // 'except' + break; + case 139: // 'for' + shift(139); // 'for' + break; + case 148: // 'ge' + shift(148); // 'ge' + break; + case 150: // 'group' + shift(150); // 'group' + break; + case 152: // 'gt' + shift(152); // 'gt' + break; + case 153: // 'idiv' + shift(153); // 'idiv' + break; + case 162: // 'instance' + shift(162); // 'instance' + break; + case 164: // 'intersect' + shift(164); // 'intersect' + break; + case 165: // 'into' + shift(165); // 'into' + break; + case 166: // 'is' + shift(166); // 'is' + break; + case 175: // 'le' + shift(175); // 'le' + break; + case 177: // 'let' + shift(177); // 'let' + break; + case 181: // 'lt' + shift(181); // 'lt' + break; + case 183: // 'mod' + shift(183); // 'mod' + break; + case 184: // 'modify' + shift(184); // 'modify' + break; + case 189: // 'ne' + shift(189); // 'ne' + break; + case 202: // 'only' + shift(202); // 'only' + break; + case 204: // 'or' + shift(204); // 'or' + break; + case 205: // 'order' + shift(205); // 'order' + break; + case 224: // 'return' + shift(224); // 'return' + break; + case 228: // 'satisfies' + shift(228); // 'satisfies' + break; + case 241: // 'stable' + shift(241); // 'stable' + break; + case 242: // 'start' + shift(242); // 'start' + break; + case 253: // 'to' + shift(253); // 'to' + break; + case 254: // 'treat' + shift(254); // 'treat' + break; + case 260: // 'union' + shift(260); // 'union' + break; + case 272: // 'where' + shift(272); // 'where' + break; + case 276: // 'with' + shift(276); // 'with' + break; + case 74: // 'ancestor' + shift(74); // 'ancestor' + break; + case 75: // 'ancestor-or-self' + shift(75); // 'ancestor-or-self' + break; + case 83: // 'attribute' + shift(83); // 'attribute' + break; + case 94: // 'child' + shift(94); // 'child' + break; + case 97: // 'comment' + shift(97); // 'comment' + break; + case 104: // 'copy' + shift(104); // 'copy' + break; + case 109: // 'declare' + shift(109); // 'declare' + break; + case 111: // 'delete' + shift(111); // 'delete' + break; + case 112: // 'descendant' + shift(112); // 'descendant' + break; + case 113: // 'descendant-or-self' + shift(113); // 'descendant-or-self' + break; + case 120: // 'document' + shift(120); // 'document' + break; + case 121: // 'document-node' + shift(121); // 'document-node' + break; + case 122: // 'element' + shift(122); // 'element' + break; + case 125: // 'empty-sequence' + shift(125); // 'empty-sequence' + break; + case 130: // 'every' + shift(130); // 'every' + break; + case 136: // 'first' + shift(136); // 'first' + break; + case 137: // 'following' + shift(137); // 'following' + break; + case 138: // 'following-sibling' + shift(138); // 'following-sibling' + break; + case 147: // 'function' + shift(147); // 'function' + break; + case 154: // 'if' + shift(154); // 'if' + break; + case 155: // 'import' + shift(155); // 'import' + break; + case 161: // 'insert' + shift(161); // 'insert' + break; + case 167: // 'item' + shift(167); // 'item' + break; + case 173: // 'last' + shift(173); // 'last' + break; + case 185: // 'module' + shift(185); // 'module' + break; + case 187: // 'namespace' + shift(187); // 'namespace' + break; + case 188: // 'namespace-node' + shift(188); // 'namespace-node' + break; + case 194: // 'node' + shift(194); // 'node' + break; + case 206: // 'ordered' + shift(206); // 'ordered' + break; + case 210: // 'parent' + shift(210); // 'parent' + break; + case 216: // 'preceding' + shift(216); // 'preceding' + break; + case 217: // 'preceding-sibling' + shift(217); // 'preceding-sibling' + break; + case 220: // 'processing-instruction' + shift(220); // 'processing-instruction' + break; + case 222: // 'rename' + shift(222); // 'rename' + break; + case 223: // 'replace' + shift(223); // 'replace' + break; + case 230: // 'schema-attribute' + shift(230); // 'schema-attribute' + break; + case 231: // 'schema-element' + shift(231); // 'schema-element' + break; + case 234: // 'self' + shift(234); // 'self' + break; + case 240: // 'some' + shift(240); // 'some' + break; + case 248: // 'switch' + shift(248); // 'switch' + break; + case 249: // 'text' + shift(249); // 'text' + break; + case 256: // 'try' + shift(256); // 'try' + break; + case 259: // 'typeswitch' + shift(259); // 'typeswitch' + break; + case 262: // 'unordered' + shift(262); // 'unordered' + break; + case 266: // 'validate' + shift(266); // 'validate' + break; + case 268: // 'variable' + shift(268); // 'variable' + break; + case 170: // 'jsoniq' + shift(170); // 'jsoniq' + break; + case 73: // 'allowing' + shift(73); // 'allowing' + break; + case 82: // 'at' + shift(82); // 'at' + break; + case 84: // 'base-uri' + shift(84); // 'base-uri' + break; + case 86: // 'boundary-space' + shift(86); // 'boundary-space' + break; + case 87: // 'break' + shift(87); // 'break' + break; + case 92: // 'catch' + shift(92); // 'catch' + break; + case 99: // 'construction' + shift(99); // 'construction' + break; + case 102: // 'context' + shift(102); // 'context' + break; + case 103: // 'continue' + shift(103); // 'continue' + break; + case 105: // 'copy-namespaces' + shift(105); // 'copy-namespaces' + break; + case 107: // 'decimal-format' + shift(107); // 'decimal-format' + break; + case 126: // 'encoding' + shift(126); // 'encoding' + break; + case 133: // 'exit' + shift(133); // 'exit' + break; + case 134: // 'external' + shift(134); // 'external' + break; + case 143: // 'ft-option' + shift(143); // 'ft-option' + break; + case 156: // 'in' + shift(156); // 'in' + break; + case 157: // 'index' + shift(157); // 'index' + break; + case 163: // 'integrity' + shift(163); // 'integrity' + break; + case 174: // 'lax' + shift(174); // 'lax' + break; + case 195: // 'nodes' + shift(195); // 'nodes' + break; + case 203: // 'option' + shift(203); // 'option' + break; + case 207: // 'ordering' + shift(207); // 'ordering' + break; + case 226: // 'revalidation' + shift(226); // 'revalidation' + break; + case 229: // 'schema' + shift(229); // 'schema' + break; + case 232: // 'score' + shift(232); // 'score' + break; + case 239: // 'sliding' + shift(239); // 'sliding' + break; + case 245: // 'strict' + shift(245); // 'strict' + break; + case 257: // 'tumbling' + shift(257); // 'tumbling' + break; + case 258: // 'type' + shift(258); // 'type' + break; + case 263: // 'updating' + shift(263); // 'updating' + break; + case 267: // 'value' + shift(267); // 'value' + break; + case 269: // 'version' + shift(269); // 'version' + break; + case 273: // 'while' + shift(273); // 'while' + break; + case 98: // 'constraint' + shift(98); // 'constraint' + break; + case 179: // 'loop' + shift(179); // 'loop' + break; + case 225: // 'returning' + shift(225); // 'returning' + break; + case 78: // 'append' + shift(78); // 'append' + break; + case 135: // 'false' + shift(135); // 'false' + break; + case 142: // 'from' + shift(142); // 'from' + break; + case 197: // 'null' + shift(197); // 'null' + break; + case 168: // 'json' + shift(168); // 'json' + break; + case 198: // 'object' + shift(198); // 'object' + break; + case 233: // 'select' + shift(233); // 'select' + break; + default: + shift(255); // 'true' + } + eventHandler.endNonterminal("NCName", e0); + } + + function try_NCName() + { + switch (l1) + { + case 19: // NCName^Token + shiftT(19); // NCName^Token + break; + case 71: // 'after' + shiftT(71); // 'after' + break; + case 76: // 'and' + shiftT(76); // 'and' + break; + case 80: // 'as' + shiftT(80); // 'as' + break; + case 81: // 'ascending' + shiftT(81); // 'ascending' + break; + case 85: // 'before' + shiftT(85); // 'before' + break; + case 89: // 'case' + shiftT(89); // 'case' + break; + case 90: // 'cast' + shiftT(90); // 'cast' + break; + case 91: // 'castable' + shiftT(91); // 'castable' + break; + case 95: // 'collation' + shiftT(95); // 'collation' + break; + case 106: // 'count' + shiftT(106); // 'count' + break; + case 110: // 'default' + shiftT(110); // 'default' + break; + case 114: // 'descending' + shiftT(114); // 'descending' + break; + case 119: // 'div' + shiftT(119); // 'div' + break; + case 123: // 'else' + shiftT(123); // 'else' + break; + case 124: // 'empty' + shiftT(124); // 'empty' + break; + case 127: // 'end' + shiftT(127); // 'end' + break; + case 129: // 'eq' + shiftT(129); // 'eq' + break; + case 132: // 'except' + shiftT(132); // 'except' + break; + case 139: // 'for' + shiftT(139); // 'for' + break; + case 148: // 'ge' + shiftT(148); // 'ge' + break; + case 150: // 'group' + shiftT(150); // 'group' + break; + case 152: // 'gt' + shiftT(152); // 'gt' + break; + case 153: // 'idiv' + shiftT(153); // 'idiv' + break; + case 162: // 'instance' + shiftT(162); // 'instance' + break; + case 164: // 'intersect' + shiftT(164); // 'intersect' + break; + case 165: // 'into' + shiftT(165); // 'into' + break; + case 166: // 'is' + shiftT(166); // 'is' + break; + case 175: // 'le' + shiftT(175); // 'le' + break; + case 177: // 'let' + shiftT(177); // 'let' + break; + case 181: // 'lt' + shiftT(181); // 'lt' + break; + case 183: // 'mod' + shiftT(183); // 'mod' + break; + case 184: // 'modify' + shiftT(184); // 'modify' + break; + case 189: // 'ne' + shiftT(189); // 'ne' + break; + case 202: // 'only' + shiftT(202); // 'only' + break; + case 204: // 'or' + shiftT(204); // 'or' + break; + case 205: // 'order' + shiftT(205); // 'order' + break; + case 224: // 'return' + shiftT(224); // 'return' + break; + case 228: // 'satisfies' + shiftT(228); // 'satisfies' + break; + case 241: // 'stable' + shiftT(241); // 'stable' + break; + case 242: // 'start' + shiftT(242); // 'start' + break; + case 253: // 'to' + shiftT(253); // 'to' + break; + case 254: // 'treat' + shiftT(254); // 'treat' + break; + case 260: // 'union' + shiftT(260); // 'union' + break; + case 272: // 'where' + shiftT(272); // 'where' + break; + case 276: // 'with' + shiftT(276); // 'with' + break; + case 74: // 'ancestor' + shiftT(74); // 'ancestor' + break; + case 75: // 'ancestor-or-self' + shiftT(75); // 'ancestor-or-self' + break; + case 83: // 'attribute' + shiftT(83); // 'attribute' + break; + case 94: // 'child' + shiftT(94); // 'child' + break; + case 97: // 'comment' + shiftT(97); // 'comment' + break; + case 104: // 'copy' + shiftT(104); // 'copy' + break; + case 109: // 'declare' + shiftT(109); // 'declare' + break; + case 111: // 'delete' + shiftT(111); // 'delete' + break; + case 112: // 'descendant' + shiftT(112); // 'descendant' + break; + case 113: // 'descendant-or-self' + shiftT(113); // 'descendant-or-self' + break; + case 120: // 'document' + shiftT(120); // 'document' + break; + case 121: // 'document-node' + shiftT(121); // 'document-node' + break; + case 122: // 'element' + shiftT(122); // 'element' + break; + case 125: // 'empty-sequence' + shiftT(125); // 'empty-sequence' + break; + case 130: // 'every' + shiftT(130); // 'every' + break; + case 136: // 'first' + shiftT(136); // 'first' + break; + case 137: // 'following' + shiftT(137); // 'following' + break; + case 138: // 'following-sibling' + shiftT(138); // 'following-sibling' + break; + case 147: // 'function' + shiftT(147); // 'function' + break; + case 154: // 'if' + shiftT(154); // 'if' + break; + case 155: // 'import' + shiftT(155); // 'import' + break; + case 161: // 'insert' + shiftT(161); // 'insert' + break; + case 167: // 'item' + shiftT(167); // 'item' + break; + case 173: // 'last' + shiftT(173); // 'last' + break; + case 185: // 'module' + shiftT(185); // 'module' + break; + case 187: // 'namespace' + shiftT(187); // 'namespace' + break; + case 188: // 'namespace-node' + shiftT(188); // 'namespace-node' + break; + case 194: // 'node' + shiftT(194); // 'node' + break; + case 206: // 'ordered' + shiftT(206); // 'ordered' + break; + case 210: // 'parent' + shiftT(210); // 'parent' + break; + case 216: // 'preceding' + shiftT(216); // 'preceding' + break; + case 217: // 'preceding-sibling' + shiftT(217); // 'preceding-sibling' + break; + case 220: // 'processing-instruction' + shiftT(220); // 'processing-instruction' + break; + case 222: // 'rename' + shiftT(222); // 'rename' + break; + case 223: // 'replace' + shiftT(223); // 'replace' + break; + case 230: // 'schema-attribute' + shiftT(230); // 'schema-attribute' + break; + case 231: // 'schema-element' + shiftT(231); // 'schema-element' + break; + case 234: // 'self' + shiftT(234); // 'self' + break; + case 240: // 'some' + shiftT(240); // 'some' + break; + case 248: // 'switch' + shiftT(248); // 'switch' + break; + case 249: // 'text' + shiftT(249); // 'text' + break; + case 256: // 'try' + shiftT(256); // 'try' + break; + case 259: // 'typeswitch' + shiftT(259); // 'typeswitch' + break; + case 262: // 'unordered' + shiftT(262); // 'unordered' + break; + case 266: // 'validate' + shiftT(266); // 'validate' + break; + case 268: // 'variable' + shiftT(268); // 'variable' + break; + case 170: // 'jsoniq' + shiftT(170); // 'jsoniq' + break; + case 73: // 'allowing' + shiftT(73); // 'allowing' + break; + case 82: // 'at' + shiftT(82); // 'at' + break; + case 84: // 'base-uri' + shiftT(84); // 'base-uri' + break; + case 86: // 'boundary-space' + shiftT(86); // 'boundary-space' + break; + case 87: // 'break' + shiftT(87); // 'break' + break; + case 92: // 'catch' + shiftT(92); // 'catch' + break; + case 99: // 'construction' + shiftT(99); // 'construction' + break; + case 102: // 'context' + shiftT(102); // 'context' + break; + case 103: // 'continue' + shiftT(103); // 'continue' + break; + case 105: // 'copy-namespaces' + shiftT(105); // 'copy-namespaces' + break; + case 107: // 'decimal-format' + shiftT(107); // 'decimal-format' + break; + case 126: // 'encoding' + shiftT(126); // 'encoding' + break; + case 133: // 'exit' + shiftT(133); // 'exit' + break; + case 134: // 'external' + shiftT(134); // 'external' + break; + case 143: // 'ft-option' + shiftT(143); // 'ft-option' + break; + case 156: // 'in' + shiftT(156); // 'in' + break; + case 157: // 'index' + shiftT(157); // 'index' + break; + case 163: // 'integrity' + shiftT(163); // 'integrity' + break; + case 174: // 'lax' + shiftT(174); // 'lax' + break; + case 195: // 'nodes' + shiftT(195); // 'nodes' + break; + case 203: // 'option' + shiftT(203); // 'option' + break; + case 207: // 'ordering' + shiftT(207); // 'ordering' + break; + case 226: // 'revalidation' + shiftT(226); // 'revalidation' + break; + case 229: // 'schema' + shiftT(229); // 'schema' + break; + case 232: // 'score' + shiftT(232); // 'score' + break; + case 239: // 'sliding' + shiftT(239); // 'sliding' + break; + case 245: // 'strict' + shiftT(245); // 'strict' + break; + case 257: // 'tumbling' + shiftT(257); // 'tumbling' + break; + case 258: // 'type' + shiftT(258); // 'type' + break; + case 263: // 'updating' + shiftT(263); // 'updating' + break; + case 267: // 'value' + shiftT(267); // 'value' + break; + case 269: // 'version' + shiftT(269); // 'version' + break; + case 273: // 'while' + shiftT(273); // 'while' + break; + case 98: // 'constraint' + shiftT(98); // 'constraint' + break; + case 179: // 'loop' + shiftT(179); // 'loop' + break; + case 225: // 'returning' + shiftT(225); // 'returning' + break; + case 78: // 'append' + shiftT(78); // 'append' + break; + case 135: // 'false' + shiftT(135); // 'false' + break; + case 142: // 'from' + shiftT(142); // 'from' + break; + case 197: // 'null' + shiftT(197); // 'null' + break; + case 168: // 'json' + shiftT(168); // 'json' + break; + case 198: // 'object' + shiftT(198); // 'object' + break; + case 233: // 'select' + shiftT(233); // 'select' + break; + default: + shiftT(255); // 'true' + } + } + + function parse_MainModule() + { + eventHandler.startNonterminal("MainModule", e0); + parse_Prolog(); + whitespace(); + parse_Program(); + eventHandler.endNonterminal("MainModule", e0); + } + + function parse_Program() + { + eventHandler.startNonterminal("Program", e0); + parse_StatementsAndOptionalExpr(); + eventHandler.endNonterminal("Program", e0); + } + + function parse_Statements() + { + eventHandler.startNonterminal("Statements", e0); + for (;;) + { + lookahead1W(283); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + switch (l1) + { + case 35: // '(' + lookahead2W(269); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 36: // '(#' + lookahead2(242); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' + break; + case 47: // '/' + lookahead2W(285); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '!' | '!=' | '$' | '$$' | '%' | '(' | '(:' | '*' | '+' | ',' | '-' | + // ';' | '<' | '<!--' | '<<' | '<=' | '<?' | '=' | '>' | '>=' | '>>' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' | '|' | '||' | + // '}' + break; + case 48: // '//' + lookahead2W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + case 55: // '<' + lookahead2(4); // QName + break; + case 56: // '<!--' + lookahead2(1); // DirCommentContents + break; + case 60: // '<?' + lookahead2(3); // PITarget + break; + case 69: // '[' + lookahead2W(272); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 78: // 'append' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 133: // 'exit' + lookahead2W(147); // S^WS | '#' | '(' | '(:' | 'returning' + break; + case 139: // 'for' + lookahead2W(179); // S^WS | '#' | '$' | '(' | '(:' | 'sliding' | 'tumbling' + break; + case 161: // 'insert' + lookahead2W(275); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | + // '/' | '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 177: // 'let' + lookahead2W(166); // S^WS | '#' | '$' | '(' | '(:' | 'score' + break; + case 187: // 'namespace' + lookahead2W(246); // NCName^Token | S^WS | '#' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 220: // 'processing-instruction' + lookahead2W(244); // NCName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 223: // 'replace' + lookahead2W(170); // S^WS | '#' | '(' | '(:' | 'node' | 'value' + break; + case 266: // 'validate' + lookahead2W(188); // S^WS | '#' | '(' | '(:' | 'lax' | 'strict' | 'type' | '{' + break; + case 281: // '{' + lookahead2W(282); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + case 283: // '{|' + lookahead2W(273); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '|}' + break; + case 31: // '$' + case 33: // '%' + lookahead2W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + case 83: // 'attribute' + case 122: // 'element' + lookahead2W(252); // EQName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + break; + case 87: // 'break' + case 103: // 'continue' + lookahead2W(145); // S^WS | '#' | '(' | '(:' | 'loop' + break; + case 97: // 'comment' + case 249: // 'text' + lookahead2W(97); // S^WS | '#' | '(:' | '{' + break; + case 111: // 'delete' + case 222: // 'rename' + lookahead2W(260); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + case 41: // '+' + case 43: // '-' + case 196: // 'not' + lookahead2W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(210); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '.' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + case 104: // 'copy' + case 130: // 'every' + case 240: // 'some' + case 268: // 'variable' + lookahead2W(143); // S^WS | '#' | '$' | '(' | '(:' + break; + case 120: // 'document' + case 206: // 'ordered' + case 256: // 'try' + case 262: // 'unordered' + lookahead2W(148); // S^WS | '#' | '(' | '(:' | '{' + break; + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 32: // '$$' + lookahead2W(209); // S^WS | EOF | '!' | '!=' | '(' | '(:' | '*' | '+' | ',' | '-' | '.' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + case 79: // 'array' + case 121: // 'document-node' + case 125: // 'empty-sequence' + case 167: // 'item' + case 169: // 'json-item' + case 188: // 'namespace-node' + case 194: // 'node' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 247: // 'structured-item' + lookahead2W(20); // S^WS | '#' | '(:' + break; + case 6: // EQName^Token + case 71: // 'after' + case 73: // 'allowing' + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 76: // 'and' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 94: // 'child' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 114: // 'descending' + case 119: // 'div' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 132: // 'except' + case 134: // 'external' + case 136: // 'first' + case 137: // 'following' + case 138: // 'following-sibling' + case 142: // 'from' + case 143: // 'ft-option' + case 147: // 'function' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 154: // 'if' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 189: // 'ne' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 232: // 'score' + case 233: // 'select' + case 234: // 'self' + case 239: // 'sliding' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 248: // 'switch' + case 253: // 'to' + case 254: // 'treat' + case 257: // 'tumbling' + case 258: // 'type' + case 259: // 'typeswitch' + case 260: // 'union' + case 263: // 'updating' + case 267: // 'value' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 54 // ';' + && lk != 287 // '}' + && lk != 12808 // IntegerLiteral EOF + && lk != 12809 // DecimalLiteral EOF + && lk != 12810 // DoubleLiteral EOF + && lk != 12811 // StringLiteral EOF + && lk != 12832 // '$$' EOF + && lk != 12847 // '/' EOF + && lk != 12935 // 'false' EOF + && lk != 12997 // 'null' EOF + && lk != 13055 // 'true' EOF + && lk != 16140 // 'variable' '$' + && lk != 21512 // IntegerLiteral ',' + && lk != 21513 // DecimalLiteral ',' + && lk != 21514 // DoubleLiteral ',' + && lk != 21515 // StringLiteral ',' + && lk != 21536 // '$$' ',' + && lk != 21551 // '/' ',' + && lk != 21639 // 'false' ',' + && lk != 21701 // 'null' ',' + && lk != 21759 // 'true' ',' + && lk != 27656 // IntegerLiteral ';' + && lk != 27657 // DecimalLiteral ';' + && lk != 27658 // DoubleLiteral ';' + && lk != 27659 // StringLiteral ';' + && lk != 27680 // '$$' ';' + && lk != 27695 // '/' ';' + && lk != 27783 // 'false' ';' + && lk != 27845 // 'null' ';' + && lk != 27903 // 'true' ';' + && lk != 91735 // 'break' 'loop' + && lk != 91751 // 'continue' 'loop' + && lk != 115333 // 'exit' 'returning' + && lk != 146952 // IntegerLiteral '}' + && lk != 146953 // DecimalLiteral '}' + && lk != 146954 // DoubleLiteral '}' + && lk != 146955 // StringLiteral '}' + && lk != 146976 // '$$' '}' + && lk != 146991 // '/' '}' + && lk != 147079 // 'false' '}' + && lk != 147141 // 'null' '}' + && lk != 147199) // 'true' '}' + { + lk = memoized(8, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_Statement(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(8, e0, lk); + } + } + if (lk != -1 + && lk != 54 // ';' + && lk != 16140 // 'variable' '$' + && lk != 27656 // IntegerLiteral ';' + && lk != 27657 // DecimalLiteral ';' + && lk != 27658 // DoubleLiteral ';' + && lk != 27659 // StringLiteral ';' + && lk != 27680 // '$$' ';' + && lk != 27695 // '/' ';' + && lk != 27783 // 'false' ';' + && lk != 27845 // 'null' ';' + && lk != 27903 // 'true' ';' + && lk != 91735 // 'break' 'loop' + && lk != 91751 // 'continue' 'loop' + && lk != 115333) // 'exit' 'returning' + { + break; + } + whitespace(); + parse_Statement(); + } + eventHandler.endNonterminal("Statements", e0); + } + + function try_Statements() + { + for (;;) + { + lookahead1W(283); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + switch (l1) + { + case 35: // '(' + lookahead2W(269); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 36: // '(#' + lookahead2(242); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' + break; + case 47: // '/' + lookahead2W(285); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '!' | '!=' | '$' | '$$' | '%' | '(' | '(:' | '*' | '+' | ',' | '-' | + // ';' | '<' | '<!--' | '<<' | '<=' | '<?' | '=' | '>' | '>=' | '>>' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' | '|' | '||' | + // '}' + break; + case 48: // '//' + lookahead2W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + case 55: // '<' + lookahead2(4); // QName + break; + case 56: // '<!--' + lookahead2(1); // DirCommentContents + break; + case 60: // '<?' + lookahead2(3); // PITarget + break; + case 69: // '[' + lookahead2W(272); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 78: // 'append' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 133: // 'exit' + lookahead2W(147); // S^WS | '#' | '(' | '(:' | 'returning' + break; + case 139: // 'for' + lookahead2W(179); // S^WS | '#' | '$' | '(' | '(:' | 'sliding' | 'tumbling' + break; + case 161: // 'insert' + lookahead2W(275); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | + // '/' | '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 177: // 'let' + lookahead2W(166); // S^WS | '#' | '$' | '(' | '(:' | 'score' + break; + case 187: // 'namespace' + lookahead2W(246); // NCName^Token | S^WS | '#' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 220: // 'processing-instruction' + lookahead2W(244); // NCName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 223: // 'replace' + lookahead2W(170); // S^WS | '#' | '(' | '(:' | 'node' | 'value' + break; + case 266: // 'validate' + lookahead2W(188); // S^WS | '#' | '(' | '(:' | 'lax' | 'strict' | 'type' | '{' + break; + case 281: // '{' + lookahead2W(282); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + case 283: // '{|' + lookahead2W(273); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '|}' + break; + case 31: // '$' + case 33: // '%' + lookahead2W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + case 83: // 'attribute' + case 122: // 'element' + lookahead2W(252); // EQName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + break; + case 87: // 'break' + case 103: // 'continue' + lookahead2W(145); // S^WS | '#' | '(' | '(:' | 'loop' + break; + case 97: // 'comment' + case 249: // 'text' + lookahead2W(97); // S^WS | '#' | '(:' | '{' + break; + case 111: // 'delete' + case 222: // 'rename' + lookahead2W(260); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + case 41: // '+' + case 43: // '-' + case 196: // 'not' + lookahead2W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | + // 'switch' | 'text' | 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | + // 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | 'value' | + // 'variable' | 'version' | 'where' | 'while' | 'with' | '{' | '{|' + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(210); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '.' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + case 104: // 'copy' + case 130: // 'every' + case 240: // 'some' + case 268: // 'variable' + lookahead2W(143); // S^WS | '#' | '$' | '(' | '(:' + break; + case 120: // 'document' + case 206: // 'ordered' + case 256: // 'try' + case 262: // 'unordered' + lookahead2W(148); // S^WS | '#' | '(' | '(:' | '{' + break; + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 32: // '$$' + lookahead2W(209); // S^WS | EOF | '!' | '!=' | '(' | '(:' | '*' | '+' | ',' | '-' | '.' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + case 79: // 'array' + case 121: // 'document-node' + case 125: // 'empty-sequence' + case 167: // 'item' + case 169: // 'json-item' + case 188: // 'namespace-node' + case 194: // 'node' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 247: // 'structured-item' + lookahead2W(20); // S^WS | '#' | '(:' + break; + case 6: // EQName^Token + case 71: // 'after' + case 73: // 'allowing' + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 76: // 'and' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 94: // 'child' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 114: // 'descending' + case 119: // 'div' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 132: // 'except' + case 134: // 'external' + case 136: // 'first' + case 137: // 'following' + case 138: // 'following-sibling' + case 142: // 'from' + case 143: // 'ft-option' + case 147: // 'function' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 154: // 'if' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 189: // 'ne' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 232: // 'score' + case 233: // 'select' + case 234: // 'self' + case 239: // 'sliding' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 248: // 'switch' + case 253: // 'to' + case 254: // 'treat' + case 257: // 'tumbling' + case 258: // 'type' + case 259: // 'typeswitch' + case 260: // 'union' + case 263: // 'updating' + case 267: // 'value' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 54 // ';' + && lk != 287 // '}' + && lk != 12808 // IntegerLiteral EOF + && lk != 12809 // DecimalLiteral EOF + && lk != 12810 // DoubleLiteral EOF + && lk != 12811 // StringLiteral EOF + && lk != 12832 // '$$' EOF + && lk != 12847 // '/' EOF + && lk != 12935 // 'false' EOF + && lk != 12997 // 'null' EOF + && lk != 13055 // 'true' EOF + && lk != 16140 // 'variable' '$' + && lk != 21512 // IntegerLiteral ',' + && lk != 21513 // DecimalLiteral ',' + && lk != 21514 // DoubleLiteral ',' + && lk != 21515 // StringLiteral ',' + && lk != 21536 // '$$' ',' + && lk != 21551 // '/' ',' + && lk != 21639 // 'false' ',' + && lk != 21701 // 'null' ',' + && lk != 21759 // 'true' ',' + && lk != 27656 // IntegerLiteral ';' + && lk != 27657 // DecimalLiteral ';' + && lk != 27658 // DoubleLiteral ';' + && lk != 27659 // StringLiteral ';' + && lk != 27680 // '$$' ';' + && lk != 27695 // '/' ';' + && lk != 27783 // 'false' ';' + && lk != 27845 // 'null' ';' + && lk != 27903 // 'true' ';' + && lk != 91735 // 'break' 'loop' + && lk != 91751 // 'continue' 'loop' + && lk != 115333 // 'exit' 'returning' + && lk != 146952 // IntegerLiteral '}' + && lk != 146953 // DecimalLiteral '}' + && lk != 146954 // DoubleLiteral '}' + && lk != 146955 // StringLiteral '}' + && lk != 146976 // '$$' '}' + && lk != 146991 // '/' '}' + && lk != 147079 // 'false' '}' + && lk != 147141 // 'null' '}' + && lk != 147199) // 'true' '}' + { + lk = memoized(8, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_Statement(); + memoize(8, e0A, -1); + continue; + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(8, e0A, -2); + break; + } + } + } + if (lk != -1 + && lk != 54 // ';' + && lk != 16140 // 'variable' '$' + && lk != 27656 // IntegerLiteral ';' + && lk != 27657 // DecimalLiteral ';' + && lk != 27658 // DoubleLiteral ';' + && lk != 27659 // StringLiteral ';' + && lk != 27680 // '$$' ';' + && lk != 27695 // '/' ';' + && lk != 27783 // 'false' ';' + && lk != 27845 // 'null' ';' + && lk != 27903 // 'true' ';' + && lk != 91735 // 'break' 'loop' + && lk != 91751 // 'continue' 'loop' + && lk != 115333) // 'exit' 'returning' + { + break; + } + try_Statement(); + } + } + + function parse_StatementsAndExpr() + { + eventHandler.startNonterminal("StatementsAndExpr", e0); + parse_Statements(); + whitespace(); + parse_Expr(); + eventHandler.endNonterminal("StatementsAndExpr", e0); + } + + function try_StatementsAndExpr() + { + try_Statements(); + try_Expr(); + } + + function parse_StatementsAndOptionalExpr() + { + eventHandler.startNonterminal("StatementsAndOptionalExpr", e0); + parse_Statements(); + if (l1 != 25 // EOF + && l1 != 287) // '}' + { + whitespace(); + parse_Expr(); + } + eventHandler.endNonterminal("StatementsAndOptionalExpr", e0); + } + + function try_StatementsAndOptionalExpr() + { + try_Statements(); + if (l1 != 25 // EOF + && l1 != 287) // '}' + { + try_Expr(); + } + } + + function parse_Statement() + { + eventHandler.startNonterminal("Statement", e0); + switch (l1) + { + case 133: // 'exit' + lookahead2W(147); // S^WS | '#' | '(' | '(:' | 'returning' + break; + case 139: // 'for' + lookahead2W(179); // S^WS | '#' | '$' | '(' | '(:' | 'sliding' | 'tumbling' + break; + case 177: // 'let' + lookahead2W(166); // S^WS | '#' | '$' | '(' | '(:' | 'score' + break; + case 256: // 'try' + lookahead2W(148); // S^WS | '#' | '(' | '(:' | '{' + break; + case 268: // 'variable' + lookahead2W(143); // S^WS | '#' | '$' | '(' | '(:' + break; + case 281: // '{' + lookahead2W(282); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + case 31: // '$' + case 33: // '%' + lookahead2W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + case 87: // 'break' + case 103: // 'continue' + lookahead2W(145); // S^WS | '#' | '(' | '(:' | 'loop' + break; + case 154: // 'if' + case 248: // 'switch' + case 259: // 'typeswitch' + case 273: // 'while' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk != 6 // EQName^Token + && lk != 8 // IntegerLiteral + && lk != 9 // DecimalLiteral + && lk != 10 // DoubleLiteral + && lk != 11 // StringLiteral + && lk != 32 // '$$' + && lk != 35 // '(' + && lk != 36 // '(#' + && lk != 41 // '+' + && lk != 43 // '-' + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 54 // ';' + && lk != 55 // '<' + && lk != 56 // '<!--' + && lk != 60 // '<?' + && lk != 69 // '[' + && lk != 71 // 'after' + && lk != 73 // 'allowing' + && lk != 74 // 'ancestor' + && lk != 75 // 'ancestor-or-self' + && lk != 76 // 'and' + && lk != 78 // 'append' + && lk != 79 // 'array' + && lk != 80 // 'as' + && lk != 81 // 'ascending' + && lk != 82 // 'at' + && lk != 83 // 'attribute' + && lk != 84 // 'base-uri' + && lk != 85 // 'before' + && lk != 86 // 'boundary-space' + && lk != 89 // 'case' + && lk != 90 // 'cast' + && lk != 91 // 'castable' + && lk != 92 // 'catch' + && lk != 94 // 'child' + && lk != 95 // 'collation' + && lk != 97 // 'comment' + && lk != 98 // 'constraint' + && lk != 99 // 'construction' + && lk != 102 // 'context' + && lk != 104 // 'copy' + && lk != 105 // 'copy-namespaces' + && lk != 106 // 'count' + && lk != 107 // 'decimal-format' + && lk != 109 // 'declare' + && lk != 110 // 'default' + && lk != 111 // 'delete' + && lk != 112 // 'descendant' + && lk != 113 // 'descendant-or-self' + && lk != 114 // 'descending' + && lk != 119 // 'div' + && lk != 120 // 'document' + && lk != 121 // 'document-node' + && lk != 122 // 'element' + && lk != 123 // 'else' + && lk != 124 // 'empty' + && lk != 125 // 'empty-sequence' + && lk != 126 // 'encoding' + && lk != 127 // 'end' + && lk != 129 // 'eq' + && lk != 130 // 'every' + && lk != 132 // 'except' + && lk != 134 // 'external' + && lk != 135 // 'false' + && lk != 136 // 'first' + && lk != 137 // 'following' + && lk != 138 // 'following-sibling' + && lk != 142 // 'from' + && lk != 143 // 'ft-option' + && lk != 147 // 'function' + && lk != 148 // 'ge' + && lk != 150 // 'group' + && lk != 152 // 'gt' + && lk != 153 // 'idiv' + && lk != 155 // 'import' + && lk != 156 // 'in' + && lk != 157 // 'index' + && lk != 161 // 'insert' + && lk != 162 // 'instance' + && lk != 163 // 'integrity' + && lk != 164 // 'intersect' + && lk != 165 // 'into' + && lk != 166 // 'is' + && lk != 167 // 'item' + && lk != 168 // 'json' + && lk != 169 // 'json-item' + && lk != 170 // 'jsoniq' + && lk != 173 // 'last' + && lk != 174 // 'lax' + && lk != 175 // 'le' + && lk != 179 // 'loop' + && lk != 181 // 'lt' + && lk != 183 // 'mod' + && lk != 184 // 'modify' + && lk != 185 // 'module' + && lk != 187 // 'namespace' + && lk != 188 // 'namespace-node' + && lk != 189 // 'ne' + && lk != 194 // 'node' + && lk != 195 // 'nodes' + && lk != 196 // 'not' + && lk != 197 // 'null' + && lk != 198 // 'object' + && lk != 202 // 'only' + && lk != 203 // 'option' + && lk != 204 // 'or' + && lk != 205 // 'order' + && lk != 206 // 'ordered' + && lk != 207 // 'ordering' + && lk != 210 // 'parent' + && lk != 216 // 'preceding' + && lk != 217 // 'preceding-sibling' + && lk != 220 // 'processing-instruction' + && lk != 222 // 'rename' + && lk != 223 // 'replace' + && lk != 224 // 'return' + && lk != 225 // 'returning' + && lk != 226 // 'revalidation' + && lk != 228 // 'satisfies' + && lk != 229 // 'schema' + && lk != 230 // 'schema-attribute' + && lk != 231 // 'schema-element' + && lk != 232 // 'score' + && lk != 233 // 'select' + && lk != 234 // 'self' + && lk != 239 // 'sliding' + && lk != 240 // 'some' + && lk != 241 // 'stable' + && lk != 242 // 'start' + && lk != 245 // 'strict' + && lk != 247 // 'structured-item' + && lk != 249 // 'text' + && lk != 253 // 'to' + && lk != 254 // 'treat' + && lk != 255 // 'true' + && lk != 257 // 'tumbling' + && lk != 258 // 'type' + && lk != 260 // 'union' + && lk != 262 // 'unordered' + && lk != 263 // 'updating' + && lk != 266 // 'validate' + && lk != 267 // 'value' + && lk != 269 // 'version' + && lk != 272 // 'where' + && lk != 276 // 'with' + && lk != 283 // '{|' + && lk != 10009 // '{' NCName^Token + && lk != 14935 // 'break' '#' + && lk != 14951 // 'continue' '#' + && lk != 14981 // 'exit' '#' + && lk != 14987 // 'for' '#' + && lk != 15002 // 'if' '#' + && lk != 15025 // 'let' '#' + && lk != 15096 // 'switch' '#' + && lk != 15104 // 'try' '#' + && lk != 15107 // 'typeswitch' '#' + && lk != 15116 // 'variable' '#' + && lk != 15121 // 'while' '#' + && lk != 16011 // 'for' '$' + && lk != 16049 // 'let' '$' + && lk != 16140 // 'variable' '$' + && lk != 18007 // 'break' '(' + && lk != 18023 // 'continue' '(' + && lk != 18053 // 'exit' '(' + && lk != 18059 // 'for' '(' + && lk != 18074 // 'if' '(' + && lk != 18097 // 'let' '(' + && lk != 18168 // 'switch' '(' + && lk != 18176 // 'try' '(' + && lk != 18179 // 'typeswitch' '(' + && lk != 18188 // 'variable' '(' + && lk != 91735 // 'break' 'loop' + && lk != 91751 // 'continue' 'loop' + && lk != 115333 // 'exit' 'returning' + && lk != 118961 // 'let' 'score' + && lk != 122507 // 'for' 'sliding' + && lk != 131723 // 'for' 'tumbling' + && lk != 144128 // 'try' '{' + && lk != 147225) // '{' '}' + { + lk = memoized(9, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_ApplyStatement(); + lk = -1; + } + catch (p1A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_AssignStatement(); + lk = -2; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_BlockStatement(); + lk = -3; + } + catch (p3A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_VarDeclStatement(); + lk = -12; + } + catch (p12A) + { + lk = -13; + } + } + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(9, e0, lk); + } + } + switch (lk) + { + case -2: + parse_AssignStatement(); + break; + case -3: + parse_BlockStatement(); + break; + case 91735: // 'break' 'loop' + parse_BreakStatement(); + break; + case 91751: // 'continue' 'loop' + parse_ContinueStatement(); + break; + case 115333: // 'exit' 'returning' + parse_ExitStatement(); + break; + case 16011: // 'for' '$' + case 16049: // 'let' '$' + case 118961: // 'let' 'score' + case 122507: // 'for' 'sliding' + case 131723: // 'for' 'tumbling' + parse_FLWORStatement(); + break; + case 18074: // 'if' '(' + parse_IfStatement(); + break; + case 18168: // 'switch' '(' + parse_SwitchStatement(); + break; + case 144128: // 'try' '{' + parse_TryCatchStatement(); + break; + case 18179: // 'typeswitch' '(' + parse_TypeswitchStatement(); + break; + case -12: + case 16140: // 'variable' '$' + parse_VarDeclStatement(); + break; + case -13: + parse_WhileStatement(); + break; + case 54: // ';' + parse_VoidStatement(); + break; + default: + parse_ApplyStatement(); + } + eventHandler.endNonterminal("Statement", e0); + } + + function try_Statement() + { + switch (l1) + { + case 133: // 'exit' + lookahead2W(147); // S^WS | '#' | '(' | '(:' | 'returning' + break; + case 139: // 'for' + lookahead2W(179); // S^WS | '#' | '$' | '(' | '(:' | 'sliding' | 'tumbling' + break; + case 177: // 'let' + lookahead2W(166); // S^WS | '#' | '$' | '(' | '(:' | 'score' + break; + case 256: // 'try' + lookahead2W(148); // S^WS | '#' | '(' | '(:' | '{' + break; + case 268: // 'variable' + lookahead2W(143); // S^WS | '#' | '$' | '(' | '(:' + break; + case 281: // '{' + lookahead2W(282); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + case 31: // '$' + case 33: // '%' + lookahead2W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + case 87: // 'break' + case 103: // 'continue' + lookahead2W(145); // S^WS | '#' | '(' | '(:' | 'loop' + break; + case 154: // 'if' + case 248: // 'switch' + case 259: // 'typeswitch' + case 273: // 'while' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk != 6 // EQName^Token + && lk != 8 // IntegerLiteral + && lk != 9 // DecimalLiteral + && lk != 10 // DoubleLiteral + && lk != 11 // StringLiteral + && lk != 32 // '$$' + && lk != 35 // '(' + && lk != 36 // '(#' + && lk != 41 // '+' + && lk != 43 // '-' + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 54 // ';' + && lk != 55 // '<' + && lk != 56 // '<!--' + && lk != 60 // '<?' + && lk != 69 // '[' + && lk != 71 // 'after' + && lk != 73 // 'allowing' + && lk != 74 // 'ancestor' + && lk != 75 // 'ancestor-or-self' + && lk != 76 // 'and' + && lk != 78 // 'append' + && lk != 79 // 'array' + && lk != 80 // 'as' + && lk != 81 // 'ascending' + && lk != 82 // 'at' + && lk != 83 // 'attribute' + && lk != 84 // 'base-uri' + && lk != 85 // 'before' + && lk != 86 // 'boundary-space' + && lk != 89 // 'case' + && lk != 90 // 'cast' + && lk != 91 // 'castable' + && lk != 92 // 'catch' + && lk != 94 // 'child' + && lk != 95 // 'collation' + && lk != 97 // 'comment' + && lk != 98 // 'constraint' + && lk != 99 // 'construction' + && lk != 102 // 'context' + && lk != 104 // 'copy' + && lk != 105 // 'copy-namespaces' + && lk != 106 // 'count' + && lk != 107 // 'decimal-format' + && lk != 109 // 'declare' + && lk != 110 // 'default' + && lk != 111 // 'delete' + && lk != 112 // 'descendant' + && lk != 113 // 'descendant-or-self' + && lk != 114 // 'descending' + && lk != 119 // 'div' + && lk != 120 // 'document' + && lk != 121 // 'document-node' + && lk != 122 // 'element' + && lk != 123 // 'else' + && lk != 124 // 'empty' + && lk != 125 // 'empty-sequence' + && lk != 126 // 'encoding' + && lk != 127 // 'end' + && lk != 129 // 'eq' + && lk != 130 // 'every' + && lk != 132 // 'except' + && lk != 134 // 'external' + && lk != 135 // 'false' + && lk != 136 // 'first' + && lk != 137 // 'following' + && lk != 138 // 'following-sibling' + && lk != 142 // 'from' + && lk != 143 // 'ft-option' + && lk != 147 // 'function' + && lk != 148 // 'ge' + && lk != 150 // 'group' + && lk != 152 // 'gt' + && lk != 153 // 'idiv' + && lk != 155 // 'import' + && lk != 156 // 'in' + && lk != 157 // 'index' + && lk != 161 // 'insert' + && lk != 162 // 'instance' + && lk != 163 // 'integrity' + && lk != 164 // 'intersect' + && lk != 165 // 'into' + && lk != 166 // 'is' + && lk != 167 // 'item' + && lk != 168 // 'json' + && lk != 169 // 'json-item' + && lk != 170 // 'jsoniq' + && lk != 173 // 'last' + && lk != 174 // 'lax' + && lk != 175 // 'le' + && lk != 179 // 'loop' + && lk != 181 // 'lt' + && lk != 183 // 'mod' + && lk != 184 // 'modify' + && lk != 185 // 'module' + && lk != 187 // 'namespace' + && lk != 188 // 'namespace-node' + && lk != 189 // 'ne' + && lk != 194 // 'node' + && lk != 195 // 'nodes' + && lk != 196 // 'not' + && lk != 197 // 'null' + && lk != 198 // 'object' + && lk != 202 // 'only' + && lk != 203 // 'option' + && lk != 204 // 'or' + && lk != 205 // 'order' + && lk != 206 // 'ordered' + && lk != 207 // 'ordering' + && lk != 210 // 'parent' + && lk != 216 // 'preceding' + && lk != 217 // 'preceding-sibling' + && lk != 220 // 'processing-instruction' + && lk != 222 // 'rename' + && lk != 223 // 'replace' + && lk != 224 // 'return' + && lk != 225 // 'returning' + && lk != 226 // 'revalidation' + && lk != 228 // 'satisfies' + && lk != 229 // 'schema' + && lk != 230 // 'schema-attribute' + && lk != 231 // 'schema-element' + && lk != 232 // 'score' + && lk != 233 // 'select' + && lk != 234 // 'self' + && lk != 239 // 'sliding' + && lk != 240 // 'some' + && lk != 241 // 'stable' + && lk != 242 // 'start' + && lk != 245 // 'strict' + && lk != 247 // 'structured-item' + && lk != 249 // 'text' + && lk != 253 // 'to' + && lk != 254 // 'treat' + && lk != 255 // 'true' + && lk != 257 // 'tumbling' + && lk != 258 // 'type' + && lk != 260 // 'union' + && lk != 262 // 'unordered' + && lk != 263 // 'updating' + && lk != 266 // 'validate' + && lk != 267 // 'value' + && lk != 269 // 'version' + && lk != 272 // 'where' + && lk != 276 // 'with' + && lk != 283 // '{|' + && lk != 10009 // '{' NCName^Token + && lk != 14935 // 'break' '#' + && lk != 14951 // 'continue' '#' + && lk != 14981 // 'exit' '#' + && lk != 14987 // 'for' '#' + && lk != 15002 // 'if' '#' + && lk != 15025 // 'let' '#' + && lk != 15096 // 'switch' '#' + && lk != 15104 // 'try' '#' + && lk != 15107 // 'typeswitch' '#' + && lk != 15116 // 'variable' '#' + && lk != 15121 // 'while' '#' + && lk != 16011 // 'for' '$' + && lk != 16049 // 'let' '$' + && lk != 16140 // 'variable' '$' + && lk != 18007 // 'break' '(' + && lk != 18023 // 'continue' '(' + && lk != 18053 // 'exit' '(' + && lk != 18059 // 'for' '(' + && lk != 18074 // 'if' '(' + && lk != 18097 // 'let' '(' + && lk != 18168 // 'switch' '(' + && lk != 18176 // 'try' '(' + && lk != 18179 // 'typeswitch' '(' + && lk != 18188 // 'variable' '(' + && lk != 91735 // 'break' 'loop' + && lk != 91751 // 'continue' 'loop' + && lk != 115333 // 'exit' 'returning' + && lk != 118961 // 'let' 'score' + && lk != 122507 // 'for' 'sliding' + && lk != 131723 // 'for' 'tumbling' + && lk != 144128 // 'try' '{' + && lk != 147225) // '{' '}' + { + lk = memoized(9, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_ApplyStatement(); + memoize(9, e0A, -1); + lk = -15; + } + catch (p1A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_AssignStatement(); + memoize(9, e0A, -2); + lk = -15; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_BlockStatement(); + memoize(9, e0A, -3); + lk = -15; + } + catch (p3A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_VarDeclStatement(); + memoize(9, e0A, -12); + lk = -15; + } + catch (p12A) + { + lk = -13; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(9, e0A, -13); + } + } + } + } + } + } + switch (lk) + { + case -2: + try_AssignStatement(); + break; + case -3: + try_BlockStatement(); + break; + case 91735: // 'break' 'loop' + try_BreakStatement(); + break; + case 91751: // 'continue' 'loop' + try_ContinueStatement(); + break; + case 115333: // 'exit' 'returning' + try_ExitStatement(); + break; + case 16011: // 'for' '$' + case 16049: // 'let' '$' + case 118961: // 'let' 'score' + case 122507: // 'for' 'sliding' + case 131723: // 'for' 'tumbling' + try_FLWORStatement(); + break; + case 18074: // 'if' '(' + try_IfStatement(); + break; + case 18168: // 'switch' '(' + try_SwitchStatement(); + break; + case 144128: // 'try' '{' + try_TryCatchStatement(); + break; + case 18179: // 'typeswitch' '(' + try_TypeswitchStatement(); + break; + case -12: + case 16140: // 'variable' '$' + try_VarDeclStatement(); + break; + case -13: + try_WhileStatement(); + break; + case 54: // ';' + try_VoidStatement(); + break; + case -15: + break; + default: + try_ApplyStatement(); + } + } + + function parse_ApplyStatement() + { + eventHandler.startNonterminal("ApplyStatement", e0); + parse_ExprSimple(); + shift(54); // ';' + eventHandler.endNonterminal("ApplyStatement", e0); + } + + function try_ApplyStatement() + { + try_ExprSimple(); + shiftT(54); // ';' + } + + function parse_AssignStatement() + { + eventHandler.startNonterminal("AssignStatement", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(28); // S^WS | '(:' | ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(54); // ';' + eventHandler.endNonterminal("AssignStatement", e0); + } + + function try_AssignStatement() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + shiftT(54); // ';' + } + + function parse_BlockStatement() + { + eventHandler.startNonterminal("BlockStatement", e0); + shift(281); // '{' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + whitespace(); + parse_Statements(); + shift(287); // '}' + eventHandler.endNonterminal("BlockStatement", e0); + } + + function try_BlockStatement() + { + shiftT(281); // '{' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + try_Statements(); + shiftT(287); // '}' + } + + function parse_BreakStatement() + { + eventHandler.startNonterminal("BreakStatement", e0); + shift(87); // 'break' + lookahead1W(62); // S^WS | '(:' | 'loop' + shift(179); // 'loop' + lookahead1W(29); // S^WS | '(:' | ';' + shift(54); // ';' + eventHandler.endNonterminal("BreakStatement", e0); + } + + function try_BreakStatement() + { + shiftT(87); // 'break' + lookahead1W(62); // S^WS | '(:' | 'loop' + shiftT(179); // 'loop' + lookahead1W(29); // S^WS | '(:' | ';' + shiftT(54); // ';' + } + + function parse_ContinueStatement() + { + eventHandler.startNonterminal("ContinueStatement", e0); + shift(103); // 'continue' + lookahead1W(62); // S^WS | '(:' | 'loop' + shift(179); // 'loop' + lookahead1W(29); // S^WS | '(:' | ';' + shift(54); // ';' + eventHandler.endNonterminal("ContinueStatement", e0); + } + + function try_ContinueStatement() + { + shiftT(103); // 'continue' + lookahead1W(62); // S^WS | '(:' | 'loop' + shiftT(179); // 'loop' + lookahead1W(29); // S^WS | '(:' | ';' + shiftT(54); // ';' + } + + function parse_ExitStatement() + { + eventHandler.startNonterminal("ExitStatement", e0); + shift(133); // 'exit' + lookahead1W(74); // S^WS | '(:' | 'returning' + shift(225); // 'returning' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(54); // ';' + eventHandler.endNonterminal("ExitStatement", e0); + } + + function try_ExitStatement() + { + shiftT(133); // 'exit' + lookahead1W(74); // S^WS | '(:' | 'returning' + shiftT(225); // 'returning' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + shiftT(54); // ';' + } + + function parse_FLWORStatement() + { + eventHandler.startNonterminal("FLWORStatement", e0); + parse_InitialClause(); + for (;;) + { + lookahead1W(195); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + // 'where' + if (l1 == 224) // 'return' + { + break; + } + whitespace(); + parse_IntermediateClause(); + } + whitespace(); + parse_ReturnStatement(); + eventHandler.endNonterminal("FLWORStatement", e0); + } + + function try_FLWORStatement() + { + try_InitialClause(); + for (;;) + { + lookahead1W(195); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + // 'where' + if (l1 == 224) // 'return' + { + break; + } + try_IntermediateClause(); + } + try_ReturnStatement(); + } + + function parse_ReturnStatement() + { + eventHandler.startNonterminal("ReturnStatement", e0); + shift(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("ReturnStatement", e0); + } + + function try_ReturnStatement() + { + shiftT(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + } + + function parse_IfStatement() + { + eventHandler.startNonterminal("IfStatement", e0); + shift(154); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(38); // ')' + lookahead1W(80); // S^WS | '(:' | 'then' + shift(250); // 'then' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + lookahead1W(51); // S^WS | '(:' | 'else' + shift(123); // 'else' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("IfStatement", e0); + } + + function try_IfStatement() + { + shiftT(154); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(38); // ')' + lookahead1W(80); // S^WS | '(:' | 'then' + shiftT(250); // 'then' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + lookahead1W(51); // S^WS | '(:' | 'else' + shiftT(123); // 'else' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + } + + function parse_SwitchStatement() + { + eventHandler.startNonterminal("SwitchStatement", e0); + shift(248); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + whitespace(); + parse_SwitchCaseStatement(); + lookahead1W(117); // S^WS | '(:' | 'case' | 'default' + if (l1 != 89) // 'case' + { + break; + } + } + shift(110); // 'default' + lookahead1W(73); // S^WS | '(:' | 'return' + shift(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("SwitchStatement", e0); + } + + function try_SwitchStatement() + { + shiftT(248); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + try_SwitchCaseStatement(); + lookahead1W(117); // S^WS | '(:' | 'case' | 'default' + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(110); // 'default' + lookahead1W(73); // S^WS | '(:' | 'return' + shiftT(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + } + + function parse_SwitchCaseStatement() + { + eventHandler.startNonterminal("SwitchCaseStatement", e0); + for (;;) + { + shift(89); // 'case' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_SwitchCaseOperand(); + if (l1 != 89) // 'case' + { + break; + } + } + shift(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("SwitchCaseStatement", e0); + } + + function try_SwitchCaseStatement() + { + for (;;) + { + shiftT(89); // 'case' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_SwitchCaseOperand(); + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + } + + function parse_TryCatchStatement() + { + eventHandler.startNonterminal("TryCatchStatement", e0); + shift(256); // 'try' + lookahead1W(90); // S^WS | '(:' | '{' + whitespace(); + parse_BlockStatement(); + for (;;) + { + lookahead1W(39); // S^WS | '(:' | 'catch' + shift(92); // 'catch' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_CatchErrorList(); + whitespace(); + parse_BlockStatement(); + lookahead1W(283); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + switch (l1) + { + case 92: // 'catch' + lookahead2W(255); // Wildcard | EQName^Token | S^WS | '#' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + default: + lk = l1; + } + if (lk != 2652 // 'catch' Wildcard + && lk != 3164 // 'catch' EQName^Token + && lk != 36444 // 'catch' 'after' + && lk != 37468 // 'catch' 'allowing' + && lk != 37980 // 'catch' 'ancestor' + && lk != 38492 // 'catch' 'ancestor-or-self' + && lk != 39004 // 'catch' 'and' + && lk != 40028 // 'catch' 'append' + && lk != 40540 // 'catch' 'array' + && lk != 41052 // 'catch' 'as' + && lk != 41564 // 'catch' 'ascending' + && lk != 42076 // 'catch' 'at' + && lk != 42588 // 'catch' 'attribute' + && lk != 43100 // 'catch' 'base-uri' + && lk != 43612 // 'catch' 'before' + && lk != 44124 // 'catch' 'boundary-space' + && lk != 44636 // 'catch' 'break' + && lk != 45660 // 'catch' 'case' + && lk != 46172 // 'catch' 'cast' + && lk != 46684 // 'catch' 'castable' + && lk != 47196 // 'catch' 'catch' + && lk != 48220 // 'catch' 'child' + && lk != 48732 // 'catch' 'collation' + && lk != 49756 // 'catch' 'comment' + && lk != 50268 // 'catch' 'constraint' + && lk != 50780 // 'catch' 'construction' + && lk != 52316 // 'catch' 'context' + && lk != 52828 // 'catch' 'continue' + && lk != 53340 // 'catch' 'copy' + && lk != 53852 // 'catch' 'copy-namespaces' + && lk != 54364 // 'catch' 'count' + && lk != 54876 // 'catch' 'decimal-format' + && lk != 55900 // 'catch' 'declare' + && lk != 56412 // 'catch' 'default' + && lk != 56924 // 'catch' 'delete' + && lk != 57436 // 'catch' 'descendant' + && lk != 57948 // 'catch' 'descendant-or-self' + && lk != 58460 // 'catch' 'descending' + && lk != 61020 // 'catch' 'div' + && lk != 61532 // 'catch' 'document' + && lk != 62044 // 'catch' 'document-node' + && lk != 62556 // 'catch' 'element' + && lk != 63068 // 'catch' 'else' + && lk != 63580 // 'catch' 'empty' + && lk != 64092 // 'catch' 'empty-sequence' + && lk != 64604 // 'catch' 'encoding' + && lk != 65116 // 'catch' 'end' + && lk != 66140 // 'catch' 'eq' + && lk != 66652 // 'catch' 'every' + && lk != 67676 // 'catch' 'except' + && lk != 68188 // 'catch' 'exit' + && lk != 68700 // 'catch' 'external' + && lk != 69212 // 'catch' 'false' + && lk != 69724 // 'catch' 'first' + && lk != 70236 // 'catch' 'following' + && lk != 70748 // 'catch' 'following-sibling' + && lk != 71260 // 'catch' 'for' + && lk != 72796 // 'catch' 'from' + && lk != 73308 // 'catch' 'ft-option' + && lk != 75356 // 'catch' 'function' + && lk != 75868 // 'catch' 'ge' + && lk != 76892 // 'catch' 'group' + && lk != 77916 // 'catch' 'gt' + && lk != 78428 // 'catch' 'idiv' + && lk != 78940 // 'catch' 'if' + && lk != 79452 // 'catch' 'import' + && lk != 79964 // 'catch' 'in' + && lk != 80476 // 'catch' 'index' + && lk != 82524 // 'catch' 'insert' + && lk != 83036 // 'catch' 'instance' + && lk != 83548 // 'catch' 'integrity' + && lk != 84060 // 'catch' 'intersect' + && lk != 84572 // 'catch' 'into' + && lk != 85084 // 'catch' 'is' + && lk != 85596 // 'catch' 'item' + && lk != 86108 // 'catch' 'json' + && lk != 86620 // 'catch' 'json-item' + && lk != 87132 // 'catch' 'jsoniq' + && lk != 88668 // 'catch' 'last' + && lk != 89180 // 'catch' 'lax' + && lk != 89692 // 'catch' 'le' + && lk != 90716 // 'catch' 'let' + && lk != 91740 // 'catch' 'loop' + && lk != 92764 // 'catch' 'lt' + && lk != 93788 // 'catch' 'mod' + && lk != 94300 // 'catch' 'modify' + && lk != 94812 // 'catch' 'module' + && lk != 95836 // 'catch' 'namespace' + && lk != 96348 // 'catch' 'namespace-node' + && lk != 96860 // 'catch' 'ne' + && lk != 99420 // 'catch' 'node' + && lk != 99932 // 'catch' 'nodes' + && lk != 100956 // 'catch' 'null' + && lk != 101468 // 'catch' 'object' + && lk != 103516 // 'catch' 'only' + && lk != 104028 // 'catch' 'option' + && lk != 104540 // 'catch' 'or' + && lk != 105052 // 'catch' 'order' + && lk != 105564 // 'catch' 'ordered' + && lk != 106076 // 'catch' 'ordering' + && lk != 107612 // 'catch' 'parent' + && lk != 110684 // 'catch' 'preceding' + && lk != 111196 // 'catch' 'preceding-sibling' + && lk != 112732 // 'catch' 'processing-instruction' + && lk != 113756 // 'catch' 'rename' + && lk != 114268 // 'catch' 'replace' + && lk != 114780 // 'catch' 'return' + && lk != 115292 // 'catch' 'returning' + && lk != 115804 // 'catch' 'revalidation' + && lk != 116828 // 'catch' 'satisfies' + && lk != 117340 // 'catch' 'schema' + && lk != 117852 // 'catch' 'schema-attribute' + && lk != 118364 // 'catch' 'schema-element' + && lk != 118876 // 'catch' 'score' + && lk != 119388 // 'catch' 'select' + && lk != 119900 // 'catch' 'self' + && lk != 122460 // 'catch' 'sliding' + && lk != 122972 // 'catch' 'some' + && lk != 123484 // 'catch' 'stable' + && lk != 123996 // 'catch' 'start' + && lk != 125532 // 'catch' 'strict' + && lk != 126556 // 'catch' 'structured-item' + && lk != 127068 // 'catch' 'switch' + && lk != 127580 // 'catch' 'text' + && lk != 129628 // 'catch' 'to' + && lk != 130140 // 'catch' 'treat' + && lk != 130652 // 'catch' 'true' + && lk != 131164 // 'catch' 'try' + && lk != 131676 // 'catch' 'tumbling' + && lk != 132188 // 'catch' 'type' + && lk != 132700 // 'catch' 'typeswitch' + && lk != 133212 // 'catch' 'union' + && lk != 134236 // 'catch' 'unordered' + && lk != 134748 // 'catch' 'updating' + && lk != 136284 // 'catch' 'validate' + && lk != 136796 // 'catch' 'value' + && lk != 137308 // 'catch' 'variable' + && lk != 137820 // 'catch' 'version' + && lk != 139356 // 'catch' 'where' + && lk != 139868 // 'catch' 'while' + && lk != 141404) // 'catch' 'with' + { + break; + } + } + eventHandler.endNonterminal("TryCatchStatement", e0); + } + + function try_TryCatchStatement() + { + shiftT(256); // 'try' + lookahead1W(90); // S^WS | '(:' | '{' + try_BlockStatement(); + for (;;) + { + lookahead1W(39); // S^WS | '(:' | 'catch' + shiftT(92); // 'catch' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_CatchErrorList(); + try_BlockStatement(); + lookahead1W(283); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | EOF | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + switch (l1) + { + case 92: // 'catch' + lookahead2W(255); // Wildcard | EQName^Token | S^WS | '#' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + break; + default: + lk = l1; + } + if (lk != 2652 // 'catch' Wildcard + && lk != 3164 // 'catch' EQName^Token + && lk != 36444 // 'catch' 'after' + && lk != 37468 // 'catch' 'allowing' + && lk != 37980 // 'catch' 'ancestor' + && lk != 38492 // 'catch' 'ancestor-or-self' + && lk != 39004 // 'catch' 'and' + && lk != 40028 // 'catch' 'append' + && lk != 40540 // 'catch' 'array' + && lk != 41052 // 'catch' 'as' + && lk != 41564 // 'catch' 'ascending' + && lk != 42076 // 'catch' 'at' + && lk != 42588 // 'catch' 'attribute' + && lk != 43100 // 'catch' 'base-uri' + && lk != 43612 // 'catch' 'before' + && lk != 44124 // 'catch' 'boundary-space' + && lk != 44636 // 'catch' 'break' + && lk != 45660 // 'catch' 'case' + && lk != 46172 // 'catch' 'cast' + && lk != 46684 // 'catch' 'castable' + && lk != 47196 // 'catch' 'catch' + && lk != 48220 // 'catch' 'child' + && lk != 48732 // 'catch' 'collation' + && lk != 49756 // 'catch' 'comment' + && lk != 50268 // 'catch' 'constraint' + && lk != 50780 // 'catch' 'construction' + && lk != 52316 // 'catch' 'context' + && lk != 52828 // 'catch' 'continue' + && lk != 53340 // 'catch' 'copy' + && lk != 53852 // 'catch' 'copy-namespaces' + && lk != 54364 // 'catch' 'count' + && lk != 54876 // 'catch' 'decimal-format' + && lk != 55900 // 'catch' 'declare' + && lk != 56412 // 'catch' 'default' + && lk != 56924 // 'catch' 'delete' + && lk != 57436 // 'catch' 'descendant' + && lk != 57948 // 'catch' 'descendant-or-self' + && lk != 58460 // 'catch' 'descending' + && lk != 61020 // 'catch' 'div' + && lk != 61532 // 'catch' 'document' + && lk != 62044 // 'catch' 'document-node' + && lk != 62556 // 'catch' 'element' + && lk != 63068 // 'catch' 'else' + && lk != 63580 // 'catch' 'empty' + && lk != 64092 // 'catch' 'empty-sequence' + && lk != 64604 // 'catch' 'encoding' + && lk != 65116 // 'catch' 'end' + && lk != 66140 // 'catch' 'eq' + && lk != 66652 // 'catch' 'every' + && lk != 67676 // 'catch' 'except' + && lk != 68188 // 'catch' 'exit' + && lk != 68700 // 'catch' 'external' + && lk != 69212 // 'catch' 'false' + && lk != 69724 // 'catch' 'first' + && lk != 70236 // 'catch' 'following' + && lk != 70748 // 'catch' 'following-sibling' + && lk != 71260 // 'catch' 'for' + && lk != 72796 // 'catch' 'from' + && lk != 73308 // 'catch' 'ft-option' + && lk != 75356 // 'catch' 'function' + && lk != 75868 // 'catch' 'ge' + && lk != 76892 // 'catch' 'group' + && lk != 77916 // 'catch' 'gt' + && lk != 78428 // 'catch' 'idiv' + && lk != 78940 // 'catch' 'if' + && lk != 79452 // 'catch' 'import' + && lk != 79964 // 'catch' 'in' + && lk != 80476 // 'catch' 'index' + && lk != 82524 // 'catch' 'insert' + && lk != 83036 // 'catch' 'instance' + && lk != 83548 // 'catch' 'integrity' + && lk != 84060 // 'catch' 'intersect' + && lk != 84572 // 'catch' 'into' + && lk != 85084 // 'catch' 'is' + && lk != 85596 // 'catch' 'item' + && lk != 86108 // 'catch' 'json' + && lk != 86620 // 'catch' 'json-item' + && lk != 87132 // 'catch' 'jsoniq' + && lk != 88668 // 'catch' 'last' + && lk != 89180 // 'catch' 'lax' + && lk != 89692 // 'catch' 'le' + && lk != 90716 // 'catch' 'let' + && lk != 91740 // 'catch' 'loop' + && lk != 92764 // 'catch' 'lt' + && lk != 93788 // 'catch' 'mod' + && lk != 94300 // 'catch' 'modify' + && lk != 94812 // 'catch' 'module' + && lk != 95836 // 'catch' 'namespace' + && lk != 96348 // 'catch' 'namespace-node' + && lk != 96860 // 'catch' 'ne' + && lk != 99420 // 'catch' 'node' + && lk != 99932 // 'catch' 'nodes' + && lk != 100956 // 'catch' 'null' + && lk != 101468 // 'catch' 'object' + && lk != 103516 // 'catch' 'only' + && lk != 104028 // 'catch' 'option' + && lk != 104540 // 'catch' 'or' + && lk != 105052 // 'catch' 'order' + && lk != 105564 // 'catch' 'ordered' + && lk != 106076 // 'catch' 'ordering' + && lk != 107612 // 'catch' 'parent' + && lk != 110684 // 'catch' 'preceding' + && lk != 111196 // 'catch' 'preceding-sibling' + && lk != 112732 // 'catch' 'processing-instruction' + && lk != 113756 // 'catch' 'rename' + && lk != 114268 // 'catch' 'replace' + && lk != 114780 // 'catch' 'return' + && lk != 115292 // 'catch' 'returning' + && lk != 115804 // 'catch' 'revalidation' + && lk != 116828 // 'catch' 'satisfies' + && lk != 117340 // 'catch' 'schema' + && lk != 117852 // 'catch' 'schema-attribute' + && lk != 118364 // 'catch' 'schema-element' + && lk != 118876 // 'catch' 'score' + && lk != 119388 // 'catch' 'select' + && lk != 119900 // 'catch' 'self' + && lk != 122460 // 'catch' 'sliding' + && lk != 122972 // 'catch' 'some' + && lk != 123484 // 'catch' 'stable' + && lk != 123996 // 'catch' 'start' + && lk != 125532 // 'catch' 'strict' + && lk != 126556 // 'catch' 'structured-item' + && lk != 127068 // 'catch' 'switch' + && lk != 127580 // 'catch' 'text' + && lk != 129628 // 'catch' 'to' + && lk != 130140 // 'catch' 'treat' + && lk != 130652 // 'catch' 'true' + && lk != 131164 // 'catch' 'try' + && lk != 131676 // 'catch' 'tumbling' + && lk != 132188 // 'catch' 'type' + && lk != 132700 // 'catch' 'typeswitch' + && lk != 133212 // 'catch' 'union' + && lk != 134236 // 'catch' 'unordered' + && lk != 134748 // 'catch' 'updating' + && lk != 136284 // 'catch' 'validate' + && lk != 136796 // 'catch' 'value' + && lk != 137308 // 'catch' 'variable' + && lk != 137820 // 'catch' 'version' + && lk != 139356 // 'catch' 'where' + && lk != 139868 // 'catch' 'while' + && lk != 141404) // 'catch' 'with' + { + break; + } + } + } + + function parse_TypeswitchStatement() + { + eventHandler.startNonterminal("TypeswitchStatement", e0); + shift(259); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + whitespace(); + parse_CaseStatement(); + lookahead1W(117); // S^WS | '(:' | 'case' | 'default' + if (l1 != 89) // 'case' + { + break; + } + } + shift(110); // 'default' + lookahead1W(99); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + } + lookahead1W(73); // S^WS | '(:' | 'return' + shift(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("TypeswitchStatement", e0); + } + + function try_TypeswitchStatement() + { + shiftT(259); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + try_CaseStatement(); + lookahead1W(117); // S^WS | '(:' | 'case' | 'default' + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(110); // 'default' + lookahead1W(99); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + } + lookahead1W(73); // S^WS | '(:' | 'return' + shiftT(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + } + + function parse_CaseStatement() + { + eventHandler.startNonterminal("CaseStatement", e0); + shift(89); // 'case' + lookahead1W(257); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + } + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + lookahead1W(73); // S^WS | '(:' | 'return' + shift(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("CaseStatement", e0); + } + + function try_CaseStatement() + { + shiftT(89); // 'case' + lookahead1W(257); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + } + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_SequenceType(); + lookahead1W(73); // S^WS | '(:' | 'return' + shiftT(224); // 'return' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + } + + function parse_VarDeclStatement() + { + eventHandler.startNonterminal("VarDeclStatement", e0); + for (;;) + { + lookahead1W(102); // S^WS | '%' | '(:' | 'variable' + if (l1 != 33) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + shift(268); // 'variable' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(172); // S^WS | '(:' | ',' | ':=' | ';' | 'as' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(155); // S^WS | '(:' | ',' | ':=' | ';' + if (l1 == 53) // ':=' + { + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_VarName(); + lookahead1W(172); // S^WS | '(:' | ',' | ':=' | ';' | 'as' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(155); // S^WS | '(:' | ',' | ':=' | ';' + if (l1 == 53) // ':=' + { + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + } + shift(54); // ';' + eventHandler.endNonterminal("VarDeclStatement", e0); + } + + function try_VarDeclStatement() + { + for (;;) + { + lookahead1W(102); // S^WS | '%' | '(:' | 'variable' + if (l1 != 33) // '%' + { + break; + } + try_Annotation(); + } + shiftT(268); // 'variable' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(172); // S^WS | '(:' | ',' | ':=' | ';' | 'as' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(155); // S^WS | '(:' | ',' | ':=' | ';' + if (l1 == 53) // ':=' + { + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + try_VarName(); + lookahead1W(172); // S^WS | '(:' | ',' | ':=' | ';' | 'as' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(155); // S^WS | '(:' | ',' | ':=' | ';' + if (l1 == 53) // ':=' + { + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + } + shiftT(54); // ';' + } + + function parse_WhileStatement() + { + eventHandler.startNonterminal("WhileStatement", e0); + shift(273); // 'while' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(38); // ')' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("WhileStatement", e0); + } + + function try_WhileStatement() + { + shiftT(273); // 'while' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(38); // ')' + lookahead1W(270); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Statement(); + } + + function parse_VoidStatement() + { + eventHandler.startNonterminal("VoidStatement", e0); + shift(54); // ';' + eventHandler.endNonterminal("VoidStatement", e0); + } + + function try_VoidStatement() + { + shiftT(54); // ';' + } + + function parse_ExprSingle() + { + eventHandler.startNonterminal("ExprSingle", e0); + switch (l1) + { + case 139: // 'for' + lookahead2W(179); // S^WS | '#' | '$' | '(' | '(:' | 'sliding' | 'tumbling' + break; + case 177: // 'let' + lookahead2W(166); // S^WS | '#' | '$' | '(' | '(:' | 'score' + break; + case 256: // 'try' + lookahead2W(148); // S^WS | '#' | '(' | '(:' | '{' + break; + case 154: // 'if' + case 248: // 'switch' + case 259: // 'typeswitch' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 16011: // 'for' '$' + case 16049: // 'let' '$' + case 118961: // 'let' 'score' + case 122507: // 'for' 'sliding' + case 131723: // 'for' 'tumbling' + parse_FLWORExpr(); + break; + case 18074: // 'if' '(' + parse_IfExpr(); + break; + case 18168: // 'switch' '(' + parse_SwitchExpr(); + break; + case 144128: // 'try' '{' + parse_TryCatchExpr(); + break; + case 18179: // 'typeswitch' '(' + parse_TypeswitchExpr(); + break; + default: + parse_ExprSimple(); + } + eventHandler.endNonterminal("ExprSingle", e0); + } + + function try_ExprSingle() + { + switch (l1) + { + case 139: // 'for' + lookahead2W(179); // S^WS | '#' | '$' | '(' | '(:' | 'sliding' | 'tumbling' + break; + case 177: // 'let' + lookahead2W(166); // S^WS | '#' | '$' | '(' | '(:' | 'score' + break; + case 256: // 'try' + lookahead2W(148); // S^WS | '#' | '(' | '(:' | '{' + break; + case 154: // 'if' + case 248: // 'switch' + case 259: // 'typeswitch' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 16011: // 'for' '$' + case 16049: // 'let' '$' + case 118961: // 'let' 'score' + case 122507: // 'for' 'sliding' + case 131723: // 'for' 'tumbling' + try_FLWORExpr(); + break; + case 18074: // 'if' '(' + try_IfExpr(); + break; + case 18168: // 'switch' '(' + try_SwitchExpr(); + break; + case 144128: // 'try' '{' + try_TryCatchExpr(); + break; + case 18179: // 'typeswitch' '(' + try_TypeswitchExpr(); + break; + default: + try_ExprSimple(); + } + } + + function parse_ExprSimple() + { + eventHandler.startNonterminal("ExprSimple", e0); + switch (l1) + { + case 78: // 'append' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 161: // 'insert' + lookahead2W(275); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | + // '/' | '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 223: // 'replace' + lookahead2W(170); // S^WS | '#' | '(' | '(:' | 'node' | 'value' + break; + case 111: // 'delete' + case 222: // 'rename' + lookahead2W(260); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + case 104: // 'copy' + case 130: // 'every' + case 240: // 'some' + lookahead2W(143); // S^WS | '#' | '$' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk == 17998 // 'append' '(' + || lk == 18031 // 'delete' '(' + || lk == 18081 // 'insert' '(' + || lk == 18142 // 'rename' '(' + || lk == 99439 // 'delete' 'node' + || lk == 99489 // 'insert' 'node' + || lk == 99550 // 'rename' 'node' + || lk == 99951 // 'delete' 'nodes' + || lk == 100001 // 'insert' 'nodes' + || lk == 136927) // 'replace' 'value' + { + lk = memoized(10, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_OrExpr(); + lk = -2; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_InsertExpr(); + lk = -3; + } + catch (p3A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_DeleteExpr(); + lk = -4; + } + catch (p4A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_RenameExpr(); + lk = -5; + } + catch (p5A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_ReplaceExpr(); + lk = -6; + } + catch (p6A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONDeleteExpr(); + lk = -8; + } + catch (p8A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONInsertExpr(); + lk = -9; + } + catch (p9A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONRenameExpr(); + lk = -10; + } + catch (p10A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONReplaceExpr(); + lk = -11; + } + catch (p11A) + { + lk = -12; + } + } + } + } + } + } + } + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(10, e0, lk); + } + } + switch (lk) + { + case 16002: // 'every' '$' + case 16112: // 'some' '$' + parse_QuantifiedExpr(); + break; + case -3: + parse_InsertExpr(); + break; + case -4: + parse_DeleteExpr(); + break; + case -5: + parse_RenameExpr(); + break; + case -6: + case 99551: // 'replace' 'node' + parse_ReplaceExpr(); + break; + case 15976: // 'copy' '$' + parse_TransformExpr(); + break; + case -8: + case 3183: // 'delete' EQName^Token + case 4207: // 'delete' IntegerLiteral + case 4719: // 'delete' DecimalLiteral + case 5231: // 'delete' DoubleLiteral + case 5743: // 'delete' StringLiteral + case 15983: // 'delete' '$' + case 16495: // 'delete' '$$' + case 17007: // 'delete' '%' + case 28271: // 'delete' '<' + case 28783: // 'delete' '<!--' + case 30831: // 'delete' '<?' + case 35439: // 'delete' '[' + case 36463: // 'delete' 'after' + case 37487: // 'delete' 'allowing' + case 37999: // 'delete' 'ancestor' + case 38511: // 'delete' 'ancestor-or-self' + case 39023: // 'delete' 'and' + case 40047: // 'delete' 'append' + case 40559: // 'delete' 'array' + case 41071: // 'delete' 'as' + case 41583: // 'delete' 'ascending' + case 42095: // 'delete' 'at' + case 42607: // 'delete' 'attribute' + case 43119: // 'delete' 'base-uri' + case 43631: // 'delete' 'before' + case 44143: // 'delete' 'boundary-space' + case 44655: // 'delete' 'break' + case 45679: // 'delete' 'case' + case 46191: // 'delete' 'cast' + case 46703: // 'delete' 'castable' + case 47215: // 'delete' 'catch' + case 48239: // 'delete' 'child' + case 48751: // 'delete' 'collation' + case 49775: // 'delete' 'comment' + case 50287: // 'delete' 'constraint' + case 50799: // 'delete' 'construction' + case 52335: // 'delete' 'context' + case 52847: // 'delete' 'continue' + case 53359: // 'delete' 'copy' + case 53871: // 'delete' 'copy-namespaces' + case 54383: // 'delete' 'count' + case 54895: // 'delete' 'decimal-format' + case 55919: // 'delete' 'declare' + case 56431: // 'delete' 'default' + case 56943: // 'delete' 'delete' + case 57455: // 'delete' 'descendant' + case 57967: // 'delete' 'descendant-or-self' + case 58479: // 'delete' 'descending' + case 61039: // 'delete' 'div' + case 61551: // 'delete' 'document' + case 62063: // 'delete' 'document-node' + case 62575: // 'delete' 'element' + case 63087: // 'delete' 'else' + case 63599: // 'delete' 'empty' + case 64111: // 'delete' 'empty-sequence' + case 64623: // 'delete' 'encoding' + case 65135: // 'delete' 'end' + case 66159: // 'delete' 'eq' + case 66671: // 'delete' 'every' + case 67695: // 'delete' 'except' + case 68207: // 'delete' 'exit' + case 68719: // 'delete' 'external' + case 69231: // 'delete' 'false' + case 69743: // 'delete' 'first' + case 70255: // 'delete' 'following' + case 70767: // 'delete' 'following-sibling' + case 71279: // 'delete' 'for' + case 72815: // 'delete' 'from' + case 73327: // 'delete' 'ft-option' + case 75375: // 'delete' 'function' + case 75887: // 'delete' 'ge' + case 76911: // 'delete' 'group' + case 77935: // 'delete' 'gt' + case 78447: // 'delete' 'idiv' + case 78959: // 'delete' 'if' + case 79471: // 'delete' 'import' + case 79983: // 'delete' 'in' + case 80495: // 'delete' 'index' + case 82543: // 'delete' 'insert' + case 83055: // 'delete' 'instance' + case 83567: // 'delete' 'integrity' + case 84079: // 'delete' 'intersect' + case 84591: // 'delete' 'into' + case 85103: // 'delete' 'is' + case 85615: // 'delete' 'item' + case 86127: // 'delete' 'json' + case 86639: // 'delete' 'json-item' + case 87151: // 'delete' 'jsoniq' + case 88687: // 'delete' 'last' + case 89199: // 'delete' 'lax' + case 89711: // 'delete' 'le' + case 90735: // 'delete' 'let' + case 91759: // 'delete' 'loop' + case 92783: // 'delete' 'lt' + case 93807: // 'delete' 'mod' + case 94319: // 'delete' 'modify' + case 94831: // 'delete' 'module' + case 95855: // 'delete' 'namespace' + case 96367: // 'delete' 'namespace-node' + case 96879: // 'delete' 'ne' + case 100975: // 'delete' 'null' + case 101487: // 'delete' 'object' + case 103535: // 'delete' 'only' + case 104047: // 'delete' 'option' + case 104559: // 'delete' 'or' + case 105071: // 'delete' 'order' + case 105583: // 'delete' 'ordered' + case 106095: // 'delete' 'ordering' + case 107631: // 'delete' 'parent' + case 110703: // 'delete' 'preceding' + case 111215: // 'delete' 'preceding-sibling' + case 112751: // 'delete' 'processing-instruction' + case 113775: // 'delete' 'rename' + case 114287: // 'delete' 'replace' + case 114799: // 'delete' 'return' + case 115311: // 'delete' 'returning' + case 115823: // 'delete' 'revalidation' + case 116847: // 'delete' 'satisfies' + case 117359: // 'delete' 'schema' + case 117871: // 'delete' 'schema-attribute' + case 118383: // 'delete' 'schema-element' + case 118895: // 'delete' 'score' + case 119407: // 'delete' 'select' + case 119919: // 'delete' 'self' + case 122479: // 'delete' 'sliding' + case 122991: // 'delete' 'some' + case 123503: // 'delete' 'stable' + case 124015: // 'delete' 'start' + case 125551: // 'delete' 'strict' + case 126575: // 'delete' 'structured-item' + case 127087: // 'delete' 'switch' + case 127599: // 'delete' 'text' + case 129647: // 'delete' 'to' + case 130159: // 'delete' 'treat' + case 130671: // 'delete' 'true' + case 131183: // 'delete' 'try' + case 131695: // 'delete' 'tumbling' + case 132207: // 'delete' 'type' + case 132719: // 'delete' 'typeswitch' + case 133231: // 'delete' 'union' + case 134255: // 'delete' 'unordered' + case 134767: // 'delete' 'updating' + case 136303: // 'delete' 'validate' + case 136815: // 'delete' 'value' + case 137327: // 'delete' 'variable' + case 137839: // 'delete' 'version' + case 139375: // 'delete' 'where' + case 139887: // 'delete' 'while' + case 141423: // 'delete' 'with' + case 143983: // 'delete' '{' + case 145007: // 'delete' '{|' + parse_JSONDeleteExpr(); + break; + case -9: + case 3233: // 'insert' EQName^Token + case 4257: // 'insert' IntegerLiteral + case 4769: // 'insert' DecimalLiteral + case 5281: // 'insert' DoubleLiteral + case 5793: // 'insert' StringLiteral + case 9889: // 'insert' NCName^Token + case 16033: // 'insert' '$' + case 16545: // 'insert' '$$' + case 17057: // 'insert' '%' + case 18593: // 'insert' '(#' + case 21153: // 'insert' '+' + case 22177: // 'insert' '-' + case 24225: // 'insert' '/' + case 24737: // 'insert' '//' + case 28321: // 'insert' '<' + case 28833: // 'insert' '<!--' + case 30881: // 'insert' '<?' + case 35489: // 'insert' '[' + case 36513: // 'insert' 'after' + case 37537: // 'insert' 'allowing' + case 38049: // 'insert' 'ancestor' + case 38561: // 'insert' 'ancestor-or-self' + case 39073: // 'insert' 'and' + case 40097: // 'insert' 'append' + case 40609: // 'insert' 'array' + case 41121: // 'insert' 'as' + case 41633: // 'insert' 'ascending' + case 42145: // 'insert' 'at' + case 42657: // 'insert' 'attribute' + case 43169: // 'insert' 'base-uri' + case 43681: // 'insert' 'before' + case 44193: // 'insert' 'boundary-space' + case 44705: // 'insert' 'break' + case 45729: // 'insert' 'case' + case 46241: // 'insert' 'cast' + case 46753: // 'insert' 'castable' + case 47265: // 'insert' 'catch' + case 48289: // 'insert' 'child' + case 48801: // 'insert' 'collation' + case 49825: // 'insert' 'comment' + case 50337: // 'insert' 'constraint' + case 50849: // 'insert' 'construction' + case 52385: // 'insert' 'context' + case 52897: // 'insert' 'continue' + case 53409: // 'insert' 'copy' + case 53921: // 'insert' 'copy-namespaces' + case 54433: // 'insert' 'count' + case 54945: // 'insert' 'decimal-format' + case 55969: // 'insert' 'declare' + case 56481: // 'insert' 'default' + case 56993: // 'insert' 'delete' + case 57505: // 'insert' 'descendant' + case 58017: // 'insert' 'descendant-or-self' + case 58529: // 'insert' 'descending' + case 61089: // 'insert' 'div' + case 61601: // 'insert' 'document' + case 62113: // 'insert' 'document-node' + case 62625: // 'insert' 'element' + case 63137: // 'insert' 'else' + case 63649: // 'insert' 'empty' + case 64161: // 'insert' 'empty-sequence' + case 64673: // 'insert' 'encoding' + case 65185: // 'insert' 'end' + case 66209: // 'insert' 'eq' + case 66721: // 'insert' 'every' + case 67745: // 'insert' 'except' + case 68257: // 'insert' 'exit' + case 68769: // 'insert' 'external' + case 69281: // 'insert' 'false' + case 69793: // 'insert' 'first' + case 70305: // 'insert' 'following' + case 70817: // 'insert' 'following-sibling' + case 71329: // 'insert' 'for' + case 72865: // 'insert' 'from' + case 73377: // 'insert' 'ft-option' + case 75425: // 'insert' 'function' + case 75937: // 'insert' 'ge' + case 76961: // 'insert' 'group' + case 77985: // 'insert' 'gt' + case 78497: // 'insert' 'idiv' + case 79009: // 'insert' 'if' + case 79521: // 'insert' 'import' + case 80033: // 'insert' 'in' + case 80545: // 'insert' 'index' + case 82593: // 'insert' 'insert' + case 83105: // 'insert' 'instance' + case 83617: // 'insert' 'integrity' + case 84129: // 'insert' 'intersect' + case 84641: // 'insert' 'into' + case 85153: // 'insert' 'is' + case 85665: // 'insert' 'item' + case 86177: // 'insert' 'json' + case 86689: // 'insert' 'json-item' + case 87201: // 'insert' 'jsoniq' + case 88737: // 'insert' 'last' + case 89249: // 'insert' 'lax' + case 89761: // 'insert' 'le' + case 90785: // 'insert' 'let' + case 91809: // 'insert' 'loop' + case 92833: // 'insert' 'lt' + case 93857: // 'insert' 'mod' + case 94369: // 'insert' 'modify' + case 94881: // 'insert' 'module' + case 95905: // 'insert' 'namespace' + case 96417: // 'insert' 'namespace-node' + case 96929: // 'insert' 'ne' + case 100513: // 'insert' 'not' + case 101025: // 'insert' 'null' + case 101537: // 'insert' 'object' + case 103585: // 'insert' 'only' + case 104097: // 'insert' 'option' + case 104609: // 'insert' 'or' + case 105121: // 'insert' 'order' + case 105633: // 'insert' 'ordered' + case 106145: // 'insert' 'ordering' + case 107681: // 'insert' 'parent' + case 110753: // 'insert' 'preceding' + case 111265: // 'insert' 'preceding-sibling' + case 112801: // 'insert' 'processing-instruction' + case 113825: // 'insert' 'rename' + case 114337: // 'insert' 'replace' + case 114849: // 'insert' 'return' + case 115361: // 'insert' 'returning' + case 115873: // 'insert' 'revalidation' + case 116897: // 'insert' 'satisfies' + case 117409: // 'insert' 'schema' + case 117921: // 'insert' 'schema-attribute' + case 118433: // 'insert' 'schema-element' + case 118945: // 'insert' 'score' + case 119457: // 'insert' 'select' + case 119969: // 'insert' 'self' + case 122529: // 'insert' 'sliding' + case 123041: // 'insert' 'some' + case 123553: // 'insert' 'stable' + case 124065: // 'insert' 'start' + case 125601: // 'insert' 'strict' + case 126625: // 'insert' 'structured-item' + case 127137: // 'insert' 'switch' + case 127649: // 'insert' 'text' + case 129697: // 'insert' 'to' + case 130209: // 'insert' 'treat' + case 130721: // 'insert' 'true' + case 131233: // 'insert' 'try' + case 131745: // 'insert' 'tumbling' + case 132257: // 'insert' 'type' + case 132769: // 'insert' 'typeswitch' + case 133281: // 'insert' 'union' + case 134305: // 'insert' 'unordered' + case 134817: // 'insert' 'updating' + case 136353: // 'insert' 'validate' + case 136865: // 'insert' 'value' + case 137377: // 'insert' 'variable' + case 137889: // 'insert' 'version' + case 139425: // 'insert' 'where' + case 139937: // 'insert' 'while' + case 141473: // 'insert' 'with' + case 144033: // 'insert' '{' + case 145057: // 'insert' '{|' + parse_JSONInsertExpr(); + break; + case -10: + case 3294: // 'rename' EQName^Token + case 4318: // 'rename' IntegerLiteral + case 4830: // 'rename' DecimalLiteral + case 5342: // 'rename' DoubleLiteral + case 5854: // 'rename' StringLiteral + case 16094: // 'rename' '$' + case 16606: // 'rename' '$$' + case 17118: // 'rename' '%' + case 28382: // 'rename' '<' + case 28894: // 'rename' '<!--' + case 30942: // 'rename' '<?' + case 35550: // 'rename' '[' + case 36574: // 'rename' 'after' + case 37598: // 'rename' 'allowing' + case 38110: // 'rename' 'ancestor' + case 38622: // 'rename' 'ancestor-or-self' + case 39134: // 'rename' 'and' + case 40158: // 'rename' 'append' + case 40670: // 'rename' 'array' + case 41182: // 'rename' 'as' + case 41694: // 'rename' 'ascending' + case 42206: // 'rename' 'at' + case 42718: // 'rename' 'attribute' + case 43230: // 'rename' 'base-uri' + case 43742: // 'rename' 'before' + case 44254: // 'rename' 'boundary-space' + case 44766: // 'rename' 'break' + case 45790: // 'rename' 'case' + case 46302: // 'rename' 'cast' + case 46814: // 'rename' 'castable' + case 47326: // 'rename' 'catch' + case 48350: // 'rename' 'child' + case 48862: // 'rename' 'collation' + case 49886: // 'rename' 'comment' + case 50398: // 'rename' 'constraint' + case 50910: // 'rename' 'construction' + case 52446: // 'rename' 'context' + case 52958: // 'rename' 'continue' + case 53470: // 'rename' 'copy' + case 53982: // 'rename' 'copy-namespaces' + case 54494: // 'rename' 'count' + case 55006: // 'rename' 'decimal-format' + case 56030: // 'rename' 'declare' + case 56542: // 'rename' 'default' + case 57054: // 'rename' 'delete' + case 57566: // 'rename' 'descendant' + case 58078: // 'rename' 'descendant-or-self' + case 58590: // 'rename' 'descending' + case 61150: // 'rename' 'div' + case 61662: // 'rename' 'document' + case 62174: // 'rename' 'document-node' + case 62686: // 'rename' 'element' + case 63198: // 'rename' 'else' + case 63710: // 'rename' 'empty' + case 64222: // 'rename' 'empty-sequence' + case 64734: // 'rename' 'encoding' + case 65246: // 'rename' 'end' + case 66270: // 'rename' 'eq' + case 66782: // 'rename' 'every' + case 67806: // 'rename' 'except' + case 68318: // 'rename' 'exit' + case 68830: // 'rename' 'external' + case 69342: // 'rename' 'false' + case 69854: // 'rename' 'first' + case 70366: // 'rename' 'following' + case 70878: // 'rename' 'following-sibling' + case 71390: // 'rename' 'for' + case 72926: // 'rename' 'from' + case 73438: // 'rename' 'ft-option' + case 75486: // 'rename' 'function' + case 75998: // 'rename' 'ge' + case 77022: // 'rename' 'group' + case 78046: // 'rename' 'gt' + case 78558: // 'rename' 'idiv' + case 79070: // 'rename' 'if' + case 79582: // 'rename' 'import' + case 80094: // 'rename' 'in' + case 80606: // 'rename' 'index' + case 82654: // 'rename' 'insert' + case 83166: // 'rename' 'instance' + case 83678: // 'rename' 'integrity' + case 84190: // 'rename' 'intersect' + case 84702: // 'rename' 'into' + case 85214: // 'rename' 'is' + case 85726: // 'rename' 'item' + case 86238: // 'rename' 'json' + case 86750: // 'rename' 'json-item' + case 87262: // 'rename' 'jsoniq' + case 88798: // 'rename' 'last' + case 89310: // 'rename' 'lax' + case 89822: // 'rename' 'le' + case 90846: // 'rename' 'let' + case 91870: // 'rename' 'loop' + case 92894: // 'rename' 'lt' + case 93918: // 'rename' 'mod' + case 94430: // 'rename' 'modify' + case 94942: // 'rename' 'module' + case 95966: // 'rename' 'namespace' + case 96478: // 'rename' 'namespace-node' + case 96990: // 'rename' 'ne' + case 100062: // 'rename' 'nodes' + case 101086: // 'rename' 'null' + case 101598: // 'rename' 'object' + case 103646: // 'rename' 'only' + case 104158: // 'rename' 'option' + case 104670: // 'rename' 'or' + case 105182: // 'rename' 'order' + case 105694: // 'rename' 'ordered' + case 106206: // 'rename' 'ordering' + case 107742: // 'rename' 'parent' + case 110814: // 'rename' 'preceding' + case 111326: // 'rename' 'preceding-sibling' + case 112862: // 'rename' 'processing-instruction' + case 113886: // 'rename' 'rename' + case 114398: // 'rename' 'replace' + case 114910: // 'rename' 'return' + case 115422: // 'rename' 'returning' + case 115934: // 'rename' 'revalidation' + case 116958: // 'rename' 'satisfies' + case 117470: // 'rename' 'schema' + case 117982: // 'rename' 'schema-attribute' + case 118494: // 'rename' 'schema-element' + case 119006: // 'rename' 'score' + case 119518: // 'rename' 'select' + case 120030: // 'rename' 'self' + case 122590: // 'rename' 'sliding' + case 123102: // 'rename' 'some' + case 123614: // 'rename' 'stable' + case 124126: // 'rename' 'start' + case 125662: // 'rename' 'strict' + case 126686: // 'rename' 'structured-item' + case 127198: // 'rename' 'switch' + case 127710: // 'rename' 'text' + case 129758: // 'rename' 'to' + case 130270: // 'rename' 'treat' + case 130782: // 'rename' 'true' + case 131294: // 'rename' 'try' + case 131806: // 'rename' 'tumbling' + case 132318: // 'rename' 'type' + case 132830: // 'rename' 'typeswitch' + case 133342: // 'rename' 'union' + case 134366: // 'rename' 'unordered' + case 134878: // 'rename' 'updating' + case 136414: // 'rename' 'validate' + case 136926: // 'rename' 'value' + case 137438: // 'rename' 'variable' + case 137950: // 'rename' 'version' + case 139486: // 'rename' 'where' + case 139998: // 'rename' 'while' + case 141534: // 'rename' 'with' + case 144094: // 'rename' '{' + case 145118: // 'rename' '{|' + parse_JSONRenameExpr(); + break; + case -11: + parse_JSONReplaceExpr(); + break; + case -12: + case 3150: // 'append' EQName^Token + case 4174: // 'append' IntegerLiteral + case 4686: // 'append' DecimalLiteral + case 5198: // 'append' DoubleLiteral + case 5710: // 'append' StringLiteral + case 15950: // 'append' '$' + case 16462: // 'append' '$$' + case 16974: // 'append' '%' + case 18510: // 'append' '(#' + case 21070: // 'append' '+' + case 22094: // 'append' '-' + case 24142: // 'append' '/' + case 24654: // 'append' '//' + case 28238: // 'append' '<' + case 28750: // 'append' '<!--' + case 30798: // 'append' '<?' + case 35406: // 'append' '[' + case 36430: // 'append' 'after' + case 37454: // 'append' 'allowing' + case 37966: // 'append' 'ancestor' + case 38478: // 'append' 'ancestor-or-self' + case 38990: // 'append' 'and' + case 40014: // 'append' 'append' + case 40526: // 'append' 'array' + case 41038: // 'append' 'as' + case 41550: // 'append' 'ascending' + case 42062: // 'append' 'at' + case 42574: // 'append' 'attribute' + case 43086: // 'append' 'base-uri' + case 43598: // 'append' 'before' + case 44110: // 'append' 'boundary-space' + case 44622: // 'append' 'break' + case 45646: // 'append' 'case' + case 46158: // 'append' 'cast' + case 46670: // 'append' 'castable' + case 47182: // 'append' 'catch' + case 48206: // 'append' 'child' + case 48718: // 'append' 'collation' + case 49742: // 'append' 'comment' + case 50254: // 'append' 'constraint' + case 50766: // 'append' 'construction' + case 52302: // 'append' 'context' + case 52814: // 'append' 'continue' + case 53326: // 'append' 'copy' + case 53838: // 'append' 'copy-namespaces' + case 54350: // 'append' 'count' + case 54862: // 'append' 'decimal-format' + case 55886: // 'append' 'declare' + case 56398: // 'append' 'default' + case 56910: // 'append' 'delete' + case 57422: // 'append' 'descendant' + case 57934: // 'append' 'descendant-or-self' + case 58446: // 'append' 'descending' + case 61006: // 'append' 'div' + case 61518: // 'append' 'document' + case 62030: // 'append' 'document-node' + case 62542: // 'append' 'element' + case 63054: // 'append' 'else' + case 63566: // 'append' 'empty' + case 64078: // 'append' 'empty-sequence' + case 64590: // 'append' 'encoding' + case 65102: // 'append' 'end' + case 66126: // 'append' 'eq' + case 66638: // 'append' 'every' + case 67662: // 'append' 'except' + case 68174: // 'append' 'exit' + case 68686: // 'append' 'external' + case 69198: // 'append' 'false' + case 69710: // 'append' 'first' + case 70222: // 'append' 'following' + case 70734: // 'append' 'following-sibling' + case 71246: // 'append' 'for' + case 72782: // 'append' 'from' + case 73294: // 'append' 'ft-option' + case 75342: // 'append' 'function' + case 75854: // 'append' 'ge' + case 76878: // 'append' 'group' + case 77902: // 'append' 'gt' + case 78414: // 'append' 'idiv' + case 78926: // 'append' 'if' + case 79438: // 'append' 'import' + case 79950: // 'append' 'in' + case 80462: // 'append' 'index' + case 82510: // 'append' 'insert' + case 83022: // 'append' 'instance' + case 83534: // 'append' 'integrity' + case 84046: // 'append' 'intersect' + case 84558: // 'append' 'into' + case 85070: // 'append' 'is' + case 85582: // 'append' 'item' + case 86094: // 'append' 'json' + case 86606: // 'append' 'json-item' + case 87118: // 'append' 'jsoniq' + case 88654: // 'append' 'last' + case 89166: // 'append' 'lax' + case 89678: // 'append' 'le' + case 90702: // 'append' 'let' + case 91726: // 'append' 'loop' + case 92750: // 'append' 'lt' + case 93774: // 'append' 'mod' + case 94286: // 'append' 'modify' + case 94798: // 'append' 'module' + case 95822: // 'append' 'namespace' + case 96334: // 'append' 'namespace-node' + case 96846: // 'append' 'ne' + case 99406: // 'append' 'node' + case 99918: // 'append' 'nodes' + case 100430: // 'append' 'not' + case 100942: // 'append' 'null' + case 101454: // 'append' 'object' + case 103502: // 'append' 'only' + case 104014: // 'append' 'option' + case 104526: // 'append' 'or' + case 105038: // 'append' 'order' + case 105550: // 'append' 'ordered' + case 106062: // 'append' 'ordering' + case 107598: // 'append' 'parent' + case 110670: // 'append' 'preceding' + case 111182: // 'append' 'preceding-sibling' + case 112718: // 'append' 'processing-instruction' + case 113742: // 'append' 'rename' + case 114254: // 'append' 'replace' + case 114766: // 'append' 'return' + case 115278: // 'append' 'returning' + case 115790: // 'append' 'revalidation' + case 116814: // 'append' 'satisfies' + case 117326: // 'append' 'schema' + case 117838: // 'append' 'schema-attribute' + case 118350: // 'append' 'schema-element' + case 118862: // 'append' 'score' + case 119374: // 'append' 'select' + case 119886: // 'append' 'self' + case 122446: // 'append' 'sliding' + case 122958: // 'append' 'some' + case 123470: // 'append' 'stable' + case 123982: // 'append' 'start' + case 125518: // 'append' 'strict' + case 126542: // 'append' 'structured-item' + case 127054: // 'append' 'switch' + case 127566: // 'append' 'text' + case 129614: // 'append' 'to' + case 130126: // 'append' 'treat' + case 130638: // 'append' 'true' + case 131150: // 'append' 'try' + case 131662: // 'append' 'tumbling' + case 132174: // 'append' 'type' + case 132686: // 'append' 'typeswitch' + case 133198: // 'append' 'union' + case 134222: // 'append' 'unordered' + case 134734: // 'append' 'updating' + case 136270: // 'append' 'validate' + case 136782: // 'append' 'value' + case 137294: // 'append' 'variable' + case 137806: // 'append' 'version' + case 139342: // 'append' 'where' + case 139854: // 'append' 'while' + case 141390: // 'append' 'with' + case 143950: // 'append' '{' + case 144974: // 'append' '{|' + parse_JSONAppendExpr(); + break; + default: + parse_OrExpr(); + } + eventHandler.endNonterminal("ExprSimple", e0); + } + + function try_ExprSimple() + { + switch (l1) + { + case 78: // 'append' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 161: // 'insert' + lookahead2W(275); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | + // '/' | '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 223: // 'replace' + lookahead2W(170); // S^WS | '#' | '(' | '(:' | 'node' | 'value' + break; + case 111: // 'delete' + case 222: // 'rename' + lookahead2W(260); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + case 104: // 'copy' + case 130: // 'every' + case 240: // 'some' + lookahead2W(143); // S^WS | '#' | '$' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk == 17998 // 'append' '(' + || lk == 18031 // 'delete' '(' + || lk == 18081 // 'insert' '(' + || lk == 18142 // 'rename' '(' + || lk == 99439 // 'delete' 'node' + || lk == 99489 // 'insert' 'node' + || lk == 99550 // 'rename' 'node' + || lk == 99951 // 'delete' 'nodes' + || lk == 100001 // 'insert' 'nodes' + || lk == 136927) // 'replace' 'value' + { + lk = memoized(10, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_OrExpr(); + memoize(10, e0A, -2); + lk = -13; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_InsertExpr(); + memoize(10, e0A, -3); + lk = -13; + } + catch (p3A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_DeleteExpr(); + memoize(10, e0A, -4); + lk = -13; + } + catch (p4A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_RenameExpr(); + memoize(10, e0A, -5); + lk = -13; + } + catch (p5A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_ReplaceExpr(); + memoize(10, e0A, -6); + lk = -13; + } + catch (p6A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONDeleteExpr(); + memoize(10, e0A, -8); + lk = -13; + } + catch (p8A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONInsertExpr(); + memoize(10, e0A, -9); + lk = -13; + } + catch (p9A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONRenameExpr(); + memoize(10, e0A, -10); + lk = -13; + } + catch (p10A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONReplaceExpr(); + memoize(10, e0A, -11); + lk = -13; + } + catch (p11A) + { + lk = -12; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(10, e0A, -12); + } + } + } + } + } + } + } + } + } + } + } + switch (lk) + { + case 16002: // 'every' '$' + case 16112: // 'some' '$' + try_QuantifiedExpr(); + break; + case -3: + try_InsertExpr(); + break; + case -4: + try_DeleteExpr(); + break; + case -5: + try_RenameExpr(); + break; + case -6: + case 99551: // 'replace' 'node' + try_ReplaceExpr(); + break; + case 15976: // 'copy' '$' + try_TransformExpr(); + break; + case -8: + case 3183: // 'delete' EQName^Token + case 4207: // 'delete' IntegerLiteral + case 4719: // 'delete' DecimalLiteral + case 5231: // 'delete' DoubleLiteral + case 5743: // 'delete' StringLiteral + case 15983: // 'delete' '$' + case 16495: // 'delete' '$$' + case 17007: // 'delete' '%' + case 28271: // 'delete' '<' + case 28783: // 'delete' '<!--' + case 30831: // 'delete' '<?' + case 35439: // 'delete' '[' + case 36463: // 'delete' 'after' + case 37487: // 'delete' 'allowing' + case 37999: // 'delete' 'ancestor' + case 38511: // 'delete' 'ancestor-or-self' + case 39023: // 'delete' 'and' + case 40047: // 'delete' 'append' + case 40559: // 'delete' 'array' + case 41071: // 'delete' 'as' + case 41583: // 'delete' 'ascending' + case 42095: // 'delete' 'at' + case 42607: // 'delete' 'attribute' + case 43119: // 'delete' 'base-uri' + case 43631: // 'delete' 'before' + case 44143: // 'delete' 'boundary-space' + case 44655: // 'delete' 'break' + case 45679: // 'delete' 'case' + case 46191: // 'delete' 'cast' + case 46703: // 'delete' 'castable' + case 47215: // 'delete' 'catch' + case 48239: // 'delete' 'child' + case 48751: // 'delete' 'collation' + case 49775: // 'delete' 'comment' + case 50287: // 'delete' 'constraint' + case 50799: // 'delete' 'construction' + case 52335: // 'delete' 'context' + case 52847: // 'delete' 'continue' + case 53359: // 'delete' 'copy' + case 53871: // 'delete' 'copy-namespaces' + case 54383: // 'delete' 'count' + case 54895: // 'delete' 'decimal-format' + case 55919: // 'delete' 'declare' + case 56431: // 'delete' 'default' + case 56943: // 'delete' 'delete' + case 57455: // 'delete' 'descendant' + case 57967: // 'delete' 'descendant-or-self' + case 58479: // 'delete' 'descending' + case 61039: // 'delete' 'div' + case 61551: // 'delete' 'document' + case 62063: // 'delete' 'document-node' + case 62575: // 'delete' 'element' + case 63087: // 'delete' 'else' + case 63599: // 'delete' 'empty' + case 64111: // 'delete' 'empty-sequence' + case 64623: // 'delete' 'encoding' + case 65135: // 'delete' 'end' + case 66159: // 'delete' 'eq' + case 66671: // 'delete' 'every' + case 67695: // 'delete' 'except' + case 68207: // 'delete' 'exit' + case 68719: // 'delete' 'external' + case 69231: // 'delete' 'false' + case 69743: // 'delete' 'first' + case 70255: // 'delete' 'following' + case 70767: // 'delete' 'following-sibling' + case 71279: // 'delete' 'for' + case 72815: // 'delete' 'from' + case 73327: // 'delete' 'ft-option' + case 75375: // 'delete' 'function' + case 75887: // 'delete' 'ge' + case 76911: // 'delete' 'group' + case 77935: // 'delete' 'gt' + case 78447: // 'delete' 'idiv' + case 78959: // 'delete' 'if' + case 79471: // 'delete' 'import' + case 79983: // 'delete' 'in' + case 80495: // 'delete' 'index' + case 82543: // 'delete' 'insert' + case 83055: // 'delete' 'instance' + case 83567: // 'delete' 'integrity' + case 84079: // 'delete' 'intersect' + case 84591: // 'delete' 'into' + case 85103: // 'delete' 'is' + case 85615: // 'delete' 'item' + case 86127: // 'delete' 'json' + case 86639: // 'delete' 'json-item' + case 87151: // 'delete' 'jsoniq' + case 88687: // 'delete' 'last' + case 89199: // 'delete' 'lax' + case 89711: // 'delete' 'le' + case 90735: // 'delete' 'let' + case 91759: // 'delete' 'loop' + case 92783: // 'delete' 'lt' + case 93807: // 'delete' 'mod' + case 94319: // 'delete' 'modify' + case 94831: // 'delete' 'module' + case 95855: // 'delete' 'namespace' + case 96367: // 'delete' 'namespace-node' + case 96879: // 'delete' 'ne' + case 100975: // 'delete' 'null' + case 101487: // 'delete' 'object' + case 103535: // 'delete' 'only' + case 104047: // 'delete' 'option' + case 104559: // 'delete' 'or' + case 105071: // 'delete' 'order' + case 105583: // 'delete' 'ordered' + case 106095: // 'delete' 'ordering' + case 107631: // 'delete' 'parent' + case 110703: // 'delete' 'preceding' + case 111215: // 'delete' 'preceding-sibling' + case 112751: // 'delete' 'processing-instruction' + case 113775: // 'delete' 'rename' + case 114287: // 'delete' 'replace' + case 114799: // 'delete' 'return' + case 115311: // 'delete' 'returning' + case 115823: // 'delete' 'revalidation' + case 116847: // 'delete' 'satisfies' + case 117359: // 'delete' 'schema' + case 117871: // 'delete' 'schema-attribute' + case 118383: // 'delete' 'schema-element' + case 118895: // 'delete' 'score' + case 119407: // 'delete' 'select' + case 119919: // 'delete' 'self' + case 122479: // 'delete' 'sliding' + case 122991: // 'delete' 'some' + case 123503: // 'delete' 'stable' + case 124015: // 'delete' 'start' + case 125551: // 'delete' 'strict' + case 126575: // 'delete' 'structured-item' + case 127087: // 'delete' 'switch' + case 127599: // 'delete' 'text' + case 129647: // 'delete' 'to' + case 130159: // 'delete' 'treat' + case 130671: // 'delete' 'true' + case 131183: // 'delete' 'try' + case 131695: // 'delete' 'tumbling' + case 132207: // 'delete' 'type' + case 132719: // 'delete' 'typeswitch' + case 133231: // 'delete' 'union' + case 134255: // 'delete' 'unordered' + case 134767: // 'delete' 'updating' + case 136303: // 'delete' 'validate' + case 136815: // 'delete' 'value' + case 137327: // 'delete' 'variable' + case 137839: // 'delete' 'version' + case 139375: // 'delete' 'where' + case 139887: // 'delete' 'while' + case 141423: // 'delete' 'with' + case 143983: // 'delete' '{' + case 145007: // 'delete' '{|' + try_JSONDeleteExpr(); + break; + case -9: + case 3233: // 'insert' EQName^Token + case 4257: // 'insert' IntegerLiteral + case 4769: // 'insert' DecimalLiteral + case 5281: // 'insert' DoubleLiteral + case 5793: // 'insert' StringLiteral + case 9889: // 'insert' NCName^Token + case 16033: // 'insert' '$' + case 16545: // 'insert' '$$' + case 17057: // 'insert' '%' + case 18593: // 'insert' '(#' + case 21153: // 'insert' '+' + case 22177: // 'insert' '-' + case 24225: // 'insert' '/' + case 24737: // 'insert' '//' + case 28321: // 'insert' '<' + case 28833: // 'insert' '<!--' + case 30881: // 'insert' '<?' + case 35489: // 'insert' '[' + case 36513: // 'insert' 'after' + case 37537: // 'insert' 'allowing' + case 38049: // 'insert' 'ancestor' + case 38561: // 'insert' 'ancestor-or-self' + case 39073: // 'insert' 'and' + case 40097: // 'insert' 'append' + case 40609: // 'insert' 'array' + case 41121: // 'insert' 'as' + case 41633: // 'insert' 'ascending' + case 42145: // 'insert' 'at' + case 42657: // 'insert' 'attribute' + case 43169: // 'insert' 'base-uri' + case 43681: // 'insert' 'before' + case 44193: // 'insert' 'boundary-space' + case 44705: // 'insert' 'break' + case 45729: // 'insert' 'case' + case 46241: // 'insert' 'cast' + case 46753: // 'insert' 'castable' + case 47265: // 'insert' 'catch' + case 48289: // 'insert' 'child' + case 48801: // 'insert' 'collation' + case 49825: // 'insert' 'comment' + case 50337: // 'insert' 'constraint' + case 50849: // 'insert' 'construction' + case 52385: // 'insert' 'context' + case 52897: // 'insert' 'continue' + case 53409: // 'insert' 'copy' + case 53921: // 'insert' 'copy-namespaces' + case 54433: // 'insert' 'count' + case 54945: // 'insert' 'decimal-format' + case 55969: // 'insert' 'declare' + case 56481: // 'insert' 'default' + case 56993: // 'insert' 'delete' + case 57505: // 'insert' 'descendant' + case 58017: // 'insert' 'descendant-or-self' + case 58529: // 'insert' 'descending' + case 61089: // 'insert' 'div' + case 61601: // 'insert' 'document' + case 62113: // 'insert' 'document-node' + case 62625: // 'insert' 'element' + case 63137: // 'insert' 'else' + case 63649: // 'insert' 'empty' + case 64161: // 'insert' 'empty-sequence' + case 64673: // 'insert' 'encoding' + case 65185: // 'insert' 'end' + case 66209: // 'insert' 'eq' + case 66721: // 'insert' 'every' + case 67745: // 'insert' 'except' + case 68257: // 'insert' 'exit' + case 68769: // 'insert' 'external' + case 69281: // 'insert' 'false' + case 69793: // 'insert' 'first' + case 70305: // 'insert' 'following' + case 70817: // 'insert' 'following-sibling' + case 71329: // 'insert' 'for' + case 72865: // 'insert' 'from' + case 73377: // 'insert' 'ft-option' + case 75425: // 'insert' 'function' + case 75937: // 'insert' 'ge' + case 76961: // 'insert' 'group' + case 77985: // 'insert' 'gt' + case 78497: // 'insert' 'idiv' + case 79009: // 'insert' 'if' + case 79521: // 'insert' 'import' + case 80033: // 'insert' 'in' + case 80545: // 'insert' 'index' + case 82593: // 'insert' 'insert' + case 83105: // 'insert' 'instance' + case 83617: // 'insert' 'integrity' + case 84129: // 'insert' 'intersect' + case 84641: // 'insert' 'into' + case 85153: // 'insert' 'is' + case 85665: // 'insert' 'item' + case 86177: // 'insert' 'json' + case 86689: // 'insert' 'json-item' + case 87201: // 'insert' 'jsoniq' + case 88737: // 'insert' 'last' + case 89249: // 'insert' 'lax' + case 89761: // 'insert' 'le' + case 90785: // 'insert' 'let' + case 91809: // 'insert' 'loop' + case 92833: // 'insert' 'lt' + case 93857: // 'insert' 'mod' + case 94369: // 'insert' 'modify' + case 94881: // 'insert' 'module' + case 95905: // 'insert' 'namespace' + case 96417: // 'insert' 'namespace-node' + case 96929: // 'insert' 'ne' + case 100513: // 'insert' 'not' + case 101025: // 'insert' 'null' + case 101537: // 'insert' 'object' + case 103585: // 'insert' 'only' + case 104097: // 'insert' 'option' + case 104609: // 'insert' 'or' + case 105121: // 'insert' 'order' + case 105633: // 'insert' 'ordered' + case 106145: // 'insert' 'ordering' + case 107681: // 'insert' 'parent' + case 110753: // 'insert' 'preceding' + case 111265: // 'insert' 'preceding-sibling' + case 112801: // 'insert' 'processing-instruction' + case 113825: // 'insert' 'rename' + case 114337: // 'insert' 'replace' + case 114849: // 'insert' 'return' + case 115361: // 'insert' 'returning' + case 115873: // 'insert' 'revalidation' + case 116897: // 'insert' 'satisfies' + case 117409: // 'insert' 'schema' + case 117921: // 'insert' 'schema-attribute' + case 118433: // 'insert' 'schema-element' + case 118945: // 'insert' 'score' + case 119457: // 'insert' 'select' + case 119969: // 'insert' 'self' + case 122529: // 'insert' 'sliding' + case 123041: // 'insert' 'some' + case 123553: // 'insert' 'stable' + case 124065: // 'insert' 'start' + case 125601: // 'insert' 'strict' + case 126625: // 'insert' 'structured-item' + case 127137: // 'insert' 'switch' + case 127649: // 'insert' 'text' + case 129697: // 'insert' 'to' + case 130209: // 'insert' 'treat' + case 130721: // 'insert' 'true' + case 131233: // 'insert' 'try' + case 131745: // 'insert' 'tumbling' + case 132257: // 'insert' 'type' + case 132769: // 'insert' 'typeswitch' + case 133281: // 'insert' 'union' + case 134305: // 'insert' 'unordered' + case 134817: // 'insert' 'updating' + case 136353: // 'insert' 'validate' + case 136865: // 'insert' 'value' + case 137377: // 'insert' 'variable' + case 137889: // 'insert' 'version' + case 139425: // 'insert' 'where' + case 139937: // 'insert' 'while' + case 141473: // 'insert' 'with' + case 144033: // 'insert' '{' + case 145057: // 'insert' '{|' + try_JSONInsertExpr(); + break; + case -10: + case 3294: // 'rename' EQName^Token + case 4318: // 'rename' IntegerLiteral + case 4830: // 'rename' DecimalLiteral + case 5342: // 'rename' DoubleLiteral + case 5854: // 'rename' StringLiteral + case 16094: // 'rename' '$' + case 16606: // 'rename' '$$' + case 17118: // 'rename' '%' + case 28382: // 'rename' '<' + case 28894: // 'rename' '<!--' + case 30942: // 'rename' '<?' + case 35550: // 'rename' '[' + case 36574: // 'rename' 'after' + case 37598: // 'rename' 'allowing' + case 38110: // 'rename' 'ancestor' + case 38622: // 'rename' 'ancestor-or-self' + case 39134: // 'rename' 'and' + case 40158: // 'rename' 'append' + case 40670: // 'rename' 'array' + case 41182: // 'rename' 'as' + case 41694: // 'rename' 'ascending' + case 42206: // 'rename' 'at' + case 42718: // 'rename' 'attribute' + case 43230: // 'rename' 'base-uri' + case 43742: // 'rename' 'before' + case 44254: // 'rename' 'boundary-space' + case 44766: // 'rename' 'break' + case 45790: // 'rename' 'case' + case 46302: // 'rename' 'cast' + case 46814: // 'rename' 'castable' + case 47326: // 'rename' 'catch' + case 48350: // 'rename' 'child' + case 48862: // 'rename' 'collation' + case 49886: // 'rename' 'comment' + case 50398: // 'rename' 'constraint' + case 50910: // 'rename' 'construction' + case 52446: // 'rename' 'context' + case 52958: // 'rename' 'continue' + case 53470: // 'rename' 'copy' + case 53982: // 'rename' 'copy-namespaces' + case 54494: // 'rename' 'count' + case 55006: // 'rename' 'decimal-format' + case 56030: // 'rename' 'declare' + case 56542: // 'rename' 'default' + case 57054: // 'rename' 'delete' + case 57566: // 'rename' 'descendant' + case 58078: // 'rename' 'descendant-or-self' + case 58590: // 'rename' 'descending' + case 61150: // 'rename' 'div' + case 61662: // 'rename' 'document' + case 62174: // 'rename' 'document-node' + case 62686: // 'rename' 'element' + case 63198: // 'rename' 'else' + case 63710: // 'rename' 'empty' + case 64222: // 'rename' 'empty-sequence' + case 64734: // 'rename' 'encoding' + case 65246: // 'rename' 'end' + case 66270: // 'rename' 'eq' + case 66782: // 'rename' 'every' + case 67806: // 'rename' 'except' + case 68318: // 'rename' 'exit' + case 68830: // 'rename' 'external' + case 69342: // 'rename' 'false' + case 69854: // 'rename' 'first' + case 70366: // 'rename' 'following' + case 70878: // 'rename' 'following-sibling' + case 71390: // 'rename' 'for' + case 72926: // 'rename' 'from' + case 73438: // 'rename' 'ft-option' + case 75486: // 'rename' 'function' + case 75998: // 'rename' 'ge' + case 77022: // 'rename' 'group' + case 78046: // 'rename' 'gt' + case 78558: // 'rename' 'idiv' + case 79070: // 'rename' 'if' + case 79582: // 'rename' 'import' + case 80094: // 'rename' 'in' + case 80606: // 'rename' 'index' + case 82654: // 'rename' 'insert' + case 83166: // 'rename' 'instance' + case 83678: // 'rename' 'integrity' + case 84190: // 'rename' 'intersect' + case 84702: // 'rename' 'into' + case 85214: // 'rename' 'is' + case 85726: // 'rename' 'item' + case 86238: // 'rename' 'json' + case 86750: // 'rename' 'json-item' + case 87262: // 'rename' 'jsoniq' + case 88798: // 'rename' 'last' + case 89310: // 'rename' 'lax' + case 89822: // 'rename' 'le' + case 90846: // 'rename' 'let' + case 91870: // 'rename' 'loop' + case 92894: // 'rename' 'lt' + case 93918: // 'rename' 'mod' + case 94430: // 'rename' 'modify' + case 94942: // 'rename' 'module' + case 95966: // 'rename' 'namespace' + case 96478: // 'rename' 'namespace-node' + case 96990: // 'rename' 'ne' + case 100062: // 'rename' 'nodes' + case 101086: // 'rename' 'null' + case 101598: // 'rename' 'object' + case 103646: // 'rename' 'only' + case 104158: // 'rename' 'option' + case 104670: // 'rename' 'or' + case 105182: // 'rename' 'order' + case 105694: // 'rename' 'ordered' + case 106206: // 'rename' 'ordering' + case 107742: // 'rename' 'parent' + case 110814: // 'rename' 'preceding' + case 111326: // 'rename' 'preceding-sibling' + case 112862: // 'rename' 'processing-instruction' + case 113886: // 'rename' 'rename' + case 114398: // 'rename' 'replace' + case 114910: // 'rename' 'return' + case 115422: // 'rename' 'returning' + case 115934: // 'rename' 'revalidation' + case 116958: // 'rename' 'satisfies' + case 117470: // 'rename' 'schema' + case 117982: // 'rename' 'schema-attribute' + case 118494: // 'rename' 'schema-element' + case 119006: // 'rename' 'score' + case 119518: // 'rename' 'select' + case 120030: // 'rename' 'self' + case 122590: // 'rename' 'sliding' + case 123102: // 'rename' 'some' + case 123614: // 'rename' 'stable' + case 124126: // 'rename' 'start' + case 125662: // 'rename' 'strict' + case 126686: // 'rename' 'structured-item' + case 127198: // 'rename' 'switch' + case 127710: // 'rename' 'text' + case 129758: // 'rename' 'to' + case 130270: // 'rename' 'treat' + case 130782: // 'rename' 'true' + case 131294: // 'rename' 'try' + case 131806: // 'rename' 'tumbling' + case 132318: // 'rename' 'type' + case 132830: // 'rename' 'typeswitch' + case 133342: // 'rename' 'union' + case 134366: // 'rename' 'unordered' + case 134878: // 'rename' 'updating' + case 136414: // 'rename' 'validate' + case 136926: // 'rename' 'value' + case 137438: // 'rename' 'variable' + case 137950: // 'rename' 'version' + case 139486: // 'rename' 'where' + case 139998: // 'rename' 'while' + case 141534: // 'rename' 'with' + case 144094: // 'rename' '{' + case 145118: // 'rename' '{|' + try_JSONRenameExpr(); + break; + case -11: + try_JSONReplaceExpr(); + break; + case -12: + case 3150: // 'append' EQName^Token + case 4174: // 'append' IntegerLiteral + case 4686: // 'append' DecimalLiteral + case 5198: // 'append' DoubleLiteral + case 5710: // 'append' StringLiteral + case 15950: // 'append' '$' + case 16462: // 'append' '$$' + case 16974: // 'append' '%' + case 18510: // 'append' '(#' + case 21070: // 'append' '+' + case 22094: // 'append' '-' + case 24142: // 'append' '/' + case 24654: // 'append' '//' + case 28238: // 'append' '<' + case 28750: // 'append' '<!--' + case 30798: // 'append' '<?' + case 35406: // 'append' '[' + case 36430: // 'append' 'after' + case 37454: // 'append' 'allowing' + case 37966: // 'append' 'ancestor' + case 38478: // 'append' 'ancestor-or-self' + case 38990: // 'append' 'and' + case 40014: // 'append' 'append' + case 40526: // 'append' 'array' + case 41038: // 'append' 'as' + case 41550: // 'append' 'ascending' + case 42062: // 'append' 'at' + case 42574: // 'append' 'attribute' + case 43086: // 'append' 'base-uri' + case 43598: // 'append' 'before' + case 44110: // 'append' 'boundary-space' + case 44622: // 'append' 'break' + case 45646: // 'append' 'case' + case 46158: // 'append' 'cast' + case 46670: // 'append' 'castable' + case 47182: // 'append' 'catch' + case 48206: // 'append' 'child' + case 48718: // 'append' 'collation' + case 49742: // 'append' 'comment' + case 50254: // 'append' 'constraint' + case 50766: // 'append' 'construction' + case 52302: // 'append' 'context' + case 52814: // 'append' 'continue' + case 53326: // 'append' 'copy' + case 53838: // 'append' 'copy-namespaces' + case 54350: // 'append' 'count' + case 54862: // 'append' 'decimal-format' + case 55886: // 'append' 'declare' + case 56398: // 'append' 'default' + case 56910: // 'append' 'delete' + case 57422: // 'append' 'descendant' + case 57934: // 'append' 'descendant-or-self' + case 58446: // 'append' 'descending' + case 61006: // 'append' 'div' + case 61518: // 'append' 'document' + case 62030: // 'append' 'document-node' + case 62542: // 'append' 'element' + case 63054: // 'append' 'else' + case 63566: // 'append' 'empty' + case 64078: // 'append' 'empty-sequence' + case 64590: // 'append' 'encoding' + case 65102: // 'append' 'end' + case 66126: // 'append' 'eq' + case 66638: // 'append' 'every' + case 67662: // 'append' 'except' + case 68174: // 'append' 'exit' + case 68686: // 'append' 'external' + case 69198: // 'append' 'false' + case 69710: // 'append' 'first' + case 70222: // 'append' 'following' + case 70734: // 'append' 'following-sibling' + case 71246: // 'append' 'for' + case 72782: // 'append' 'from' + case 73294: // 'append' 'ft-option' + case 75342: // 'append' 'function' + case 75854: // 'append' 'ge' + case 76878: // 'append' 'group' + case 77902: // 'append' 'gt' + case 78414: // 'append' 'idiv' + case 78926: // 'append' 'if' + case 79438: // 'append' 'import' + case 79950: // 'append' 'in' + case 80462: // 'append' 'index' + case 82510: // 'append' 'insert' + case 83022: // 'append' 'instance' + case 83534: // 'append' 'integrity' + case 84046: // 'append' 'intersect' + case 84558: // 'append' 'into' + case 85070: // 'append' 'is' + case 85582: // 'append' 'item' + case 86094: // 'append' 'json' + case 86606: // 'append' 'json-item' + case 87118: // 'append' 'jsoniq' + case 88654: // 'append' 'last' + case 89166: // 'append' 'lax' + case 89678: // 'append' 'le' + case 90702: // 'append' 'let' + case 91726: // 'append' 'loop' + case 92750: // 'append' 'lt' + case 93774: // 'append' 'mod' + case 94286: // 'append' 'modify' + case 94798: // 'append' 'module' + case 95822: // 'append' 'namespace' + case 96334: // 'append' 'namespace-node' + case 96846: // 'append' 'ne' + case 99406: // 'append' 'node' + case 99918: // 'append' 'nodes' + case 100430: // 'append' 'not' + case 100942: // 'append' 'null' + case 101454: // 'append' 'object' + case 103502: // 'append' 'only' + case 104014: // 'append' 'option' + case 104526: // 'append' 'or' + case 105038: // 'append' 'order' + case 105550: // 'append' 'ordered' + case 106062: // 'append' 'ordering' + case 107598: // 'append' 'parent' + case 110670: // 'append' 'preceding' + case 111182: // 'append' 'preceding-sibling' + case 112718: // 'append' 'processing-instruction' + case 113742: // 'append' 'rename' + case 114254: // 'append' 'replace' + case 114766: // 'append' 'return' + case 115278: // 'append' 'returning' + case 115790: // 'append' 'revalidation' + case 116814: // 'append' 'satisfies' + case 117326: // 'append' 'schema' + case 117838: // 'append' 'schema-attribute' + case 118350: // 'append' 'schema-element' + case 118862: // 'append' 'score' + case 119374: // 'append' 'select' + case 119886: // 'append' 'self' + case 122446: // 'append' 'sliding' + case 122958: // 'append' 'some' + case 123470: // 'append' 'stable' + case 123982: // 'append' 'start' + case 125518: // 'append' 'strict' + case 126542: // 'append' 'structured-item' + case 127054: // 'append' 'switch' + case 127566: // 'append' 'text' + case 129614: // 'append' 'to' + case 130126: // 'append' 'treat' + case 130638: // 'append' 'true' + case 131150: // 'append' 'try' + case 131662: // 'append' 'tumbling' + case 132174: // 'append' 'type' + case 132686: // 'append' 'typeswitch' + case 133198: // 'append' 'union' + case 134222: // 'append' 'unordered' + case 134734: // 'append' 'updating' + case 136270: // 'append' 'validate' + case 136782: // 'append' 'value' + case 137294: // 'append' 'variable' + case 137806: // 'append' 'version' + case 139342: // 'append' 'where' + case 139854: // 'append' 'while' + case 141390: // 'append' 'with' + case 143950: // 'append' '{' + case 144974: // 'append' '{|' + try_JSONAppendExpr(); + break; + case -13: + break; + default: + try_OrExpr(); + } + } + + function parse_JSONDeleteExpr() + { + eventHandler.startNonterminal("JSONDeleteExpr", e0); + shift(111); // 'delete' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(260); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(11, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(168); // 'json' + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(11, e0, lk); + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shift(168); // 'json' + } + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_PostfixExpr(); + eventHandler.endNonterminal("JSONDeleteExpr", e0); + } + + function try_JSONDeleteExpr() + { + shiftT(111); // 'delete' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(260); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(11, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(168); // 'json' + memoize(11, e0A, -1); + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(11, e0A, -2); + } + lk = -2; + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shiftT(168); // 'json' + } + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + try_PostfixExpr(); + } + + function parse_JSONInsertExpr() + { + eventHandler.startNonterminal("JSONInsertExpr", e0); + switch (l1) + { + case 161: // 'insert' + lookahead2W(267); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk != 9889) // 'insert' NCName^Token + { + lk = memoized(12, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(161); // 'insert' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(13, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(168); // 'json' + memoize(13, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(13, e0B, -2); + } + lk = -2; + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 18600 // 'json' '(#' + || lk == 21160 // 'json' '+' + || lk == 22184 // 'json' '-' + || lk == 24232 // 'json' '/' + || lk == 24744 // 'json' '//' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 100520 // 'json' 'not' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shiftT(168); // 'json' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + shiftT(165); // 'into' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + switch (l1) + { + case 82: // 'at' + lookahead2W(72); // S^WS | '(:' | 'position' + break; + default: + lk = l1; + } + if (lk == 110162) // 'at' 'position' + { + lk = memoized(14, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(82); // 'at' + lookahead1W(72); // S^WS | '(:' | 'position' + shiftT(215); // 'position' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + memoize(14, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(14, e0B, -2); + } + lk = -2; + } + } + if (lk == -1) + { + shiftT(82); // 'at' + lookahead1W(72); // S^WS | '(:' | 'position' + shiftT(215); // 'position' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(12, e0, lk); + } + } + switch (lk) + { + case -1: + shift(161); // 'insert' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(13, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(168); // 'json' + lk = -1; + } + catch (p1B) + { + lk = -2; + } + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(13, e0, lk); + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 18600 // 'json' '(#' + || lk == 21160 // 'json' '+' + || lk == 22184 // 'json' '-' + || lk == 24232 // 'json' '/' + || lk == 24744 // 'json' '//' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 100520 // 'json' 'not' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shift(168); // 'json' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(165); // 'into' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + switch (l1) + { + case 82: // 'at' + lookahead2W(72); // S^WS | '(:' | 'position' + break; + default: + lk = l1; + } + if (lk == 110162) // 'at' 'position' + { + lk = memoized(14, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(82); // 'at' + lookahead1W(72); // S^WS | '(:' | 'position' + shiftT(215); // 'position' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + lk = -1; + } + catch (p1B) + { + lk = -2; + } + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(14, e0, lk); + } + } + if (lk == -1) + { + shift(82); // 'at' + lookahead1W(72); // S^WS | '(:' | 'position' + shift(215); // 'position' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + break; + default: + shift(161); // 'insert' + lookahead1W(267); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(281); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | + // '/' | '//' | ':' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(15, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(168); // 'json' + lk = -1; + } + catch (p1B) + { + lk = -2; + } + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(15, e0, lk); + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 9896 // 'json' NCName^Token + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 18600 // 'json' '(#' + || lk == 21160 // 'json' '+' + || lk == 22184 // 'json' '-' + || lk == 24232 // 'json' '/' + || lk == 24744 // 'json' '//' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 100520 // 'json' 'not' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shift(168); // 'json' + } + lookahead1W(267); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_PairConstructorList(); + shift(165); // 'into' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + eventHandler.endNonterminal("JSONInsertExpr", e0); + } + + function try_JSONInsertExpr() + { + switch (l1) + { + case 161: // 'insert' + lookahead2W(267); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk != 9889) // 'insert' NCName^Token + { + lk = memoized(12, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(161); // 'insert' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(13, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(168); // 'json' + memoize(13, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(13, e0B, -2); + } + lk = -2; + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 18600 // 'json' '(#' + || lk == 21160 // 'json' '+' + || lk == 22184 // 'json' '-' + || lk == 24232 // 'json' '/' + || lk == 24744 // 'json' '//' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 100520 // 'json' 'not' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shiftT(168); // 'json' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + shiftT(165); // 'into' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + switch (l1) + { + case 82: // 'at' + lookahead2W(72); // S^WS | '(:' | 'position' + break; + default: + lk = l1; + } + if (lk == 110162) // 'at' 'position' + { + lk = memoized(14, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(82); // 'at' + lookahead1W(72); // S^WS | '(:' | 'position' + shiftT(215); // 'position' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + memoize(14, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(14, e0B, -2); + } + lk = -2; + } + } + if (lk == -1) + { + shiftT(82); // 'at' + lookahead1W(72); // S^WS | '(:' | 'position' + shiftT(215); // 'position' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + memoize(12, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(12, e0A, -2); + } + } + } + switch (lk) + { + case -1: + shiftT(161); // 'insert' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(13, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(168); // 'json' + memoize(13, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(13, e0B, -2); + } + lk = -2; + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 18600 // 'json' '(#' + || lk == 21160 // 'json' '+' + || lk == 22184 // 'json' '-' + || lk == 24232 // 'json' '/' + || lk == 24744 // 'json' '//' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 100520 // 'json' 'not' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shiftT(168); // 'json' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + shiftT(165); // 'into' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + switch (l1) + { + case 82: // 'at' + lookahead2W(72); // S^WS | '(:' | 'position' + break; + default: + lk = l1; + } + if (lk == 110162) // 'at' 'position' + { + lk = memoized(14, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(82); // 'at' + lookahead1W(72); // S^WS | '(:' | 'position' + shiftT(215); // 'position' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + memoize(14, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(14, e0B, -2); + } + lk = -2; + } + } + if (lk == -1) + { + shiftT(82); // 'at' + lookahead1W(72); // S^WS | '(:' | 'position' + shiftT(215); // 'position' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + break; + case -3: + break; + default: + shiftT(161); // 'insert' + lookahead1W(267); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(281); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | + // '/' | '//' | ':' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(15, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(168); // 'json' + memoize(15, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(15, e0B, -2); + } + lk = -2; + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 9896 // 'json' NCName^Token + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 18600 // 'json' '(#' + || lk == 21160 // 'json' '+' + || lk == 22184 // 'json' '-' + || lk == 24232 // 'json' '/' + || lk == 24744 // 'json' '//' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 100520 // 'json' 'not' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shiftT(168); // 'json' + } + lookahead1W(267); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_PairConstructorList(); + shiftT(165); // 'into' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + } + + function parse_JSONRenameExpr() + { + eventHandler.startNonterminal("JSONRenameExpr", e0); + shift(222); // 'rename' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(260); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(16, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(168); // 'json' + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(16, e0, lk); + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shift(168); // 'json' + } + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_PostfixExpr(); + shift(80); // 'as' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("JSONRenameExpr", e0); + } + + function try_JSONRenameExpr() + { + shiftT(222); // 'rename' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(260); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(16, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(168); // 'json' + memoize(16, e0A, -1); + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(16, e0A, -2); + } + lk = -2; + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shiftT(168); // 'json' + } + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + try_PostfixExpr(); + shiftT(80); // 'as' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_JSONReplaceExpr() + { + eventHandler.startNonterminal("JSONReplaceExpr", e0); + shift(223); // 'replace' + lookahead1W(85); // S^WS | '(:' | 'value' + shift(267); // 'value' + lookahead1W(67); // S^WS | '(:' | 'of' + shift(200); // 'of' + lookahead1W(59); // S^WS | '(:' | 'json' + shift(168); // 'json' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + whitespace(); + parse_PostfixExpr(); + shift(276); // 'with' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("JSONReplaceExpr", e0); + } + + function try_JSONReplaceExpr() + { + shiftT(223); // 'replace' + lookahead1W(85); // S^WS | '(:' | 'value' + shiftT(267); // 'value' + lookahead1W(67); // S^WS | '(:' | 'of' + shiftT(200); // 'of' + lookahead1W(59); // S^WS | '(:' | 'json' + shiftT(168); // 'json' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(:' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + try_PostfixExpr(); + shiftT(276); // 'with' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_JSONAppendExpr() + { + eventHandler.startNonterminal("JSONAppendExpr", e0); + shift(78); // 'append' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(17, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(168); // 'json' + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(17, e0, lk); + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 18600 // 'json' '(#' + || lk == 21160 // 'json' '+' + || lk == 22184 // 'json' '-' + || lk == 24232 // 'json' '/' + || lk == 24744 // 'json' '//' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 100520 // 'json' 'not' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shift(168); // 'json' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(165); // 'into' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("JSONAppendExpr", e0); + } + + function try_JSONAppendExpr() + { + shiftT(78); // 'append' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + switch (l1) + { + case 168: // 'json' + lookahead2W(268); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + default: + lk = l1; + } + if (lk == 18088) // 'json' '(' + { + lk = memoized(17, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(168); // 'json' + memoize(17, e0A, -1); + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(17, e0A, -2); + } + lk = -2; + } + } + if (lk == -1 + || lk == 3240 // 'json' EQName^Token + || lk == 4264 // 'json' IntegerLiteral + || lk == 4776 // 'json' DecimalLiteral + || lk == 5288 // 'json' DoubleLiteral + || lk == 5800 // 'json' StringLiteral + || lk == 16040 // 'json' '$' + || lk == 16552 // 'json' '$$' + || lk == 17064 // 'json' '%' + || lk == 18600 // 'json' '(#' + || lk == 21160 // 'json' '+' + || lk == 22184 // 'json' '-' + || lk == 24232 // 'json' '/' + || lk == 24744 // 'json' '//' + || lk == 28328 // 'json' '<' + || lk == 28840 // 'json' '<!--' + || lk == 30888 // 'json' '<?' + || lk == 35496 // 'json' '[' + || lk == 36520 // 'json' 'after' + || lk == 37544 // 'json' 'allowing' + || lk == 38056 // 'json' 'ancestor' + || lk == 38568 // 'json' 'ancestor-or-self' + || lk == 39080 // 'json' 'and' + || lk == 40104 // 'json' 'append' + || lk == 40616 // 'json' 'array' + || lk == 41128 // 'json' 'as' + || lk == 41640 // 'json' 'ascending' + || lk == 42152 // 'json' 'at' + || lk == 42664 // 'json' 'attribute' + || lk == 43176 // 'json' 'base-uri' + || lk == 43688 // 'json' 'before' + || lk == 44200 // 'json' 'boundary-space' + || lk == 44712 // 'json' 'break' + || lk == 45736 // 'json' 'case' + || lk == 46248 // 'json' 'cast' + || lk == 46760 // 'json' 'castable' + || lk == 47272 // 'json' 'catch' + || lk == 48296 // 'json' 'child' + || lk == 48808 // 'json' 'collation' + || lk == 49832 // 'json' 'comment' + || lk == 50344 // 'json' 'constraint' + || lk == 50856 // 'json' 'construction' + || lk == 52392 // 'json' 'context' + || lk == 52904 // 'json' 'continue' + || lk == 53416 // 'json' 'copy' + || lk == 53928 // 'json' 'copy-namespaces' + || lk == 54440 // 'json' 'count' + || lk == 54952 // 'json' 'decimal-format' + || lk == 55976 // 'json' 'declare' + || lk == 56488 // 'json' 'default' + || lk == 57000 // 'json' 'delete' + || lk == 57512 // 'json' 'descendant' + || lk == 58024 // 'json' 'descendant-or-self' + || lk == 58536 // 'json' 'descending' + || lk == 61096 // 'json' 'div' + || lk == 61608 // 'json' 'document' + || lk == 62120 // 'json' 'document-node' + || lk == 62632 // 'json' 'element' + || lk == 63144 // 'json' 'else' + || lk == 63656 // 'json' 'empty' + || lk == 64168 // 'json' 'empty-sequence' + || lk == 64680 // 'json' 'encoding' + || lk == 65192 // 'json' 'end' + || lk == 66216 // 'json' 'eq' + || lk == 66728 // 'json' 'every' + || lk == 67752 // 'json' 'except' + || lk == 68264 // 'json' 'exit' + || lk == 68776 // 'json' 'external' + || lk == 69288 // 'json' 'false' + || lk == 69800 // 'json' 'first' + || lk == 70312 // 'json' 'following' + || lk == 70824 // 'json' 'following-sibling' + || lk == 71336 // 'json' 'for' + || lk == 72872 // 'json' 'from' + || lk == 73384 // 'json' 'ft-option' + || lk == 75432 // 'json' 'function' + || lk == 75944 // 'json' 'ge' + || lk == 76968 // 'json' 'group' + || lk == 77992 // 'json' 'gt' + || lk == 78504 // 'json' 'idiv' + || lk == 79016 // 'json' 'if' + || lk == 79528 // 'json' 'import' + || lk == 80040 // 'json' 'in' + || lk == 80552 // 'json' 'index' + || lk == 82600 // 'json' 'insert' + || lk == 83112 // 'json' 'instance' + || lk == 83624 // 'json' 'integrity' + || lk == 84136 // 'json' 'intersect' + || lk == 84648 // 'json' 'into' + || lk == 85160 // 'json' 'is' + || lk == 85672 // 'json' 'item' + || lk == 86184 // 'json' 'json' + || lk == 86696 // 'json' 'json-item' + || lk == 87208 // 'json' 'jsoniq' + || lk == 88744 // 'json' 'last' + || lk == 89256 // 'json' 'lax' + || lk == 89768 // 'json' 'le' + || lk == 90792 // 'json' 'let' + || lk == 91816 // 'json' 'loop' + || lk == 92840 // 'json' 'lt' + || lk == 93864 // 'json' 'mod' + || lk == 94376 // 'json' 'modify' + || lk == 94888 // 'json' 'module' + || lk == 95912 // 'json' 'namespace' + || lk == 96424 // 'json' 'namespace-node' + || lk == 96936 // 'json' 'ne' + || lk == 99496 // 'json' 'node' + || lk == 100008 // 'json' 'nodes' + || lk == 100520 // 'json' 'not' + || lk == 101032 // 'json' 'null' + || lk == 101544 // 'json' 'object' + || lk == 103592 // 'json' 'only' + || lk == 104104 // 'json' 'option' + || lk == 104616 // 'json' 'or' + || lk == 105128 // 'json' 'order' + || lk == 105640 // 'json' 'ordered' + || lk == 106152 // 'json' 'ordering' + || lk == 107688 // 'json' 'parent' + || lk == 110760 // 'json' 'preceding' + || lk == 111272 // 'json' 'preceding-sibling' + || lk == 112808 // 'json' 'processing-instruction' + || lk == 113832 // 'json' 'rename' + || lk == 114344 // 'json' 'replace' + || lk == 114856 // 'json' 'return' + || lk == 115368 // 'json' 'returning' + || lk == 115880 // 'json' 'revalidation' + || lk == 116904 // 'json' 'satisfies' + || lk == 117416 // 'json' 'schema' + || lk == 117928 // 'json' 'schema-attribute' + || lk == 118440 // 'json' 'schema-element' + || lk == 118952 // 'json' 'score' + || lk == 119464 // 'json' 'select' + || lk == 119976 // 'json' 'self' + || lk == 122536 // 'json' 'sliding' + || lk == 123048 // 'json' 'some' + || lk == 123560 // 'json' 'stable' + || lk == 124072 // 'json' 'start' + || lk == 125608 // 'json' 'strict' + || lk == 126632 // 'json' 'structured-item' + || lk == 127144 // 'json' 'switch' + || lk == 127656 // 'json' 'text' + || lk == 129704 // 'json' 'to' + || lk == 130216 // 'json' 'treat' + || lk == 130728 // 'json' 'true' + || lk == 131240 // 'json' 'try' + || lk == 131752 // 'json' 'tumbling' + || lk == 132264 // 'json' 'type' + || lk == 132776 // 'json' 'typeswitch' + || lk == 133288 // 'json' 'union' + || lk == 134312 // 'json' 'unordered' + || lk == 134824 // 'json' 'updating' + || lk == 136360 // 'json' 'validate' + || lk == 136872 // 'json' 'value' + || lk == 137384 // 'json' 'variable' + || lk == 137896 // 'json' 'version' + || lk == 139432 // 'json' 'where' + || lk == 139944 // 'json' 'while' + || lk == 141480 // 'json' 'with' + || lk == 144040 // 'json' '{' + || lk == 145064) // 'json' '{|' + { + shiftT(168); // 'json' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + shiftT(165); // 'into' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_CommonContent() + { + eventHandler.startNonterminal("CommonContent", e0); + switch (l1) + { + case 12: // PredefinedEntityRef + shift(12); // PredefinedEntityRef + break; + case 23: // CharRef + shift(23); // CharRef + break; + case 282: // '{{' + shift(282); // '{{' + break; + case 288: // '}}' + shift(288); // '}}' + break; + default: + parse_BlockExpr(); + } + eventHandler.endNonterminal("CommonContent", e0); + } + + function try_CommonContent() + { + switch (l1) + { + case 12: // PredefinedEntityRef + shiftT(12); // PredefinedEntityRef + break; + case 23: // CharRef + shiftT(23); // CharRef + break; + case 282: // '{{' + shiftT(282); // '{{' + break; + case 288: // '}}' + shiftT(288); // '}}' + break; + default: + try_BlockExpr(); + } + } + + function parse_ContentExpr() + { + eventHandler.startNonterminal("ContentExpr", e0); + parse_StatementsAndExpr(); + eventHandler.endNonterminal("ContentExpr", e0); + } + + function try_ContentExpr() + { + try_StatementsAndExpr(); + } + + function parse_CompDocConstructor() + { + eventHandler.startNonterminal("CompDocConstructor", e0); + shift(120); // 'document' + lookahead1W(90); // S^WS | '(:' | '{' + whitespace(); + parse_BlockExpr(); + eventHandler.endNonterminal("CompDocConstructor", e0); + } + + function try_CompDocConstructor() + { + shiftT(120); // 'document' + lookahead1W(90); // S^WS | '(:' | '{' + try_BlockExpr(); + } + + function parse_CompAttrConstructor() + { + eventHandler.startNonterminal("CompAttrConstructor", e0); + shift(83); // 'attribute' + lookahead1W(249); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + switch (l1) + { + case 281: // '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + break; + default: + whitespace(); + parse_EQName(); + } + lookahead1W(90); // S^WS | '(:' | '{' + switch (l1) + { + case 281: // '{' + lookahead2W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + default: + lk = l1; + } + if (lk == 147225) // '{' '}' + { + lk = memoized(18, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(281); // '{' + lookahead1W(91); // S^WS | '(:' | '}' + shiftT(287); // '}' + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(18, e0, lk); + } + } + switch (lk) + { + case -1: + shift(281); // '{' + lookahead1W(91); // S^WS | '(:' | '}' + shift(287); // '}' + break; + default: + whitespace(); + parse_BlockExpr(); + } + eventHandler.endNonterminal("CompAttrConstructor", e0); + } + + function try_CompAttrConstructor() + { + shiftT(83); // 'attribute' + lookahead1W(249); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + switch (l1) + { + case 281: // '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + break; + default: + try_EQName(); + } + lookahead1W(90); // S^WS | '(:' | '{' + switch (l1) + { + case 281: // '{' + lookahead2W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + default: + lk = l1; + } + if (lk == 147225) // '{' '}' + { + lk = memoized(18, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(281); // '{' + lookahead1W(91); // S^WS | '(:' | '}' + shiftT(287); // '}' + memoize(18, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(18, e0A, -2); + } + } + } + switch (lk) + { + case -1: + shiftT(281); // '{' + lookahead1W(91); // S^WS | '(:' | '}' + shiftT(287); // '}' + break; + case -3: + break; + default: + try_BlockExpr(); + } + } + + function parse_CompPIConstructor() + { + eventHandler.startNonterminal("CompPIConstructor", e0); + shift(220); // 'processing-instruction' + lookahead1W(241); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + switch (l1) + { + case 281: // '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_Expr(); + shift(287); // '}' + break; + default: + whitespace(); + parse_NCName(); + } + lookahead1W(90); // S^WS | '(:' | '{' + switch (l1) + { + case 281: // '{' + lookahead2W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + default: + lk = l1; + } + if (lk == 147225) // '{' '}' + { + lk = memoized(19, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(281); // '{' + lookahead1W(91); // S^WS | '(:' | '}' + shiftT(287); // '}' + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(19, e0, lk); + } + } + switch (lk) + { + case -1: + shift(281); // '{' + lookahead1W(91); // S^WS | '(:' | '}' + shift(287); // '}' + break; + default: + whitespace(); + parse_BlockExpr(); + } + eventHandler.endNonterminal("CompPIConstructor", e0); + } + + function try_CompPIConstructor() + { + shiftT(220); // 'processing-instruction' + lookahead1W(241); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + switch (l1) + { + case 281: // '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_Expr(); + shiftT(287); // '}' + break; + default: + try_NCName(); + } + lookahead1W(90); // S^WS | '(:' | '{' + switch (l1) + { + case 281: // '{' + lookahead2W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + default: + lk = l1; + } + if (lk == 147225) // '{' '}' + { + lk = memoized(19, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(281); // '{' + lookahead1W(91); // S^WS | '(:' | '}' + shiftT(287); // '}' + memoize(19, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(19, e0A, -2); + } + } + } + switch (lk) + { + case -1: + shiftT(281); // '{' + lookahead1W(91); // S^WS | '(:' | '}' + shiftT(287); // '}' + break; + case -3: + break; + default: + try_BlockExpr(); + } + } + + function parse_CompCommentConstructor() + { + eventHandler.startNonterminal("CompCommentConstructor", e0); + shift(97); // 'comment' + lookahead1W(90); // S^WS | '(:' | '{' + whitespace(); + parse_BlockExpr(); + eventHandler.endNonterminal("CompCommentConstructor", e0); + } + + function try_CompCommentConstructor() + { + shiftT(97); // 'comment' + lookahead1W(90); // S^WS | '(:' | '{' + try_BlockExpr(); + } + + function parse_CompTextConstructor() + { + eventHandler.startNonterminal("CompTextConstructor", e0); + shift(249); // 'text' + lookahead1W(90); // S^WS | '(:' | '{' + whitespace(); + parse_BlockExpr(); + eventHandler.endNonterminal("CompTextConstructor", e0); + } + + function try_CompTextConstructor() + { + shiftT(249); // 'text' + lookahead1W(90); // S^WS | '(:' | '{' + try_BlockExpr(); + } + + function parse_PrimaryExpr() + { + eventHandler.startNonterminal("PrimaryExpr", e0); + switch (l1) + { + case 187: // 'namespace' + lookahead2W(246); // NCName^Token | S^WS | '#' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 220: // 'processing-instruction' + lookahead2W(244); // NCName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 281: // '{' + lookahead2W(282); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + case 83: // 'attribute' + case 122: // 'element' + lookahead2W(252); // EQName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + break; + case 97: // 'comment' + case 249: // 'text' + lookahead2W(97); // S^WS | '#' | '(:' | '{' + break; + case 120: // 'document' + case 206: // 'ordered' + case 262: // 'unordered' + lookahead2W(148); // S^WS | '#' | '(' | '(:' | '{' + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(236); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '.' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | + // 'cast' | 'castable' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + break; + case 6: // EQName^Token + case 71: // 'after' + case 73: // 'allowing' + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 76: // 'and' + case 78: // 'append' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 87: // 'break' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 94: // 'child' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 103: // 'continue' + case 104: // 'copy' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 111: // 'delete' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 114: // 'descending' + case 119: // 'div' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 130: // 'every' + case 132: // 'except' + case 133: // 'exit' + case 134: // 'external' + case 136: // 'first' + case 137: // 'following' + case 138: // 'following-sibling' + case 139: // 'for' + case 142: // 'from' + case 143: // 'ft-option' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 161: // 'insert' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 177: // 'let' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 189: // 'ne' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 222: // 'rename' + case 223: // 'replace' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 232: // 'score' + case 233: // 'select' + case 234: // 'self' + case 239: // 'sliding' + case 240: // 'some' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 253: // 'to' + case 254: // 'treat' + case 256: // 'try' + case 257: // 'tumbling' + case 258: // 'type' + case 260: // 'union' + case 263: // 'updating' + case 266: // 'validate' + case 267: // 'value' + case 268: // 'variable' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk == 3353 // '{' EQName^Token + || lk == 4377 // '{' IntegerLiteral + || lk == 4889 // '{' DecimalLiteral + || lk == 5401 // '{' DoubleLiteral + || lk == 5913 // '{' StringLiteral + || lk == 16153 // '{' '$' + || lk == 16665 // '{' '$$' + || lk == 17177 // '{' '%' + || lk == 18055 // 'false' '(' + || lk == 18117 // 'null' '(' + || lk == 18175 // 'true' '(' + || lk == 18201 // '{' '(' + || lk == 18713 // '{' '(#' + || lk == 21273 // '{' '+' + || lk == 22297 // '{' '-' + || lk == 24345 // '{' '/' + || lk == 24857 // '{' '//' + || lk == 28441 // '{' '<' + || lk == 28953 // '{' '<!--' + || lk == 31001 // '{' '<?' + || lk == 35609 // '{' '[' + || lk == 36633 // '{' 'after' + || lk == 37657 // '{' 'allowing' + || lk == 38169 // '{' 'ancestor' + || lk == 38681 // '{' 'ancestor-or-self' + || lk == 39193 // '{' 'and' + || lk == 40217 // '{' 'append' + || lk == 40729 // '{' 'array' + || lk == 41241 // '{' 'as' + || lk == 41753 // '{' 'ascending' + || lk == 42265 // '{' 'at' + || lk == 42777 // '{' 'attribute' + || lk == 43289 // '{' 'base-uri' + || lk == 43801 // '{' 'before' + || lk == 44313 // '{' 'boundary-space' + || lk == 44825 // '{' 'break' + || lk == 45849 // '{' 'case' + || lk == 46361 // '{' 'cast' + || lk == 46873 // '{' 'castable' + || lk == 47385 // '{' 'catch' + || lk == 48409 // '{' 'child' + || lk == 48921 // '{' 'collation' + || lk == 49945 // '{' 'comment' + || lk == 50457 // '{' 'constraint' + || lk == 50969 // '{' 'construction' + || lk == 52505 // '{' 'context' + || lk == 53017 // '{' 'continue' + || lk == 53529 // '{' 'copy' + || lk == 54041 // '{' 'copy-namespaces' + || lk == 54553 // '{' 'count' + || lk == 55065 // '{' 'decimal-format' + || lk == 56089 // '{' 'declare' + || lk == 56601 // '{' 'default' + || lk == 57113 // '{' 'delete' + || lk == 57625 // '{' 'descendant' + || lk == 58137 // '{' 'descendant-or-self' + || lk == 58649 // '{' 'descending' + || lk == 61209 // '{' 'div' + || lk == 61721 // '{' 'document' + || lk == 62233 // '{' 'document-node' + || lk == 62745 // '{' 'element' + || lk == 63257 // '{' 'else' + || lk == 63769 // '{' 'empty' + || lk == 64281 // '{' 'empty-sequence' + || lk == 64793 // '{' 'encoding' + || lk == 65305 // '{' 'end' + || lk == 66329 // '{' 'eq' + || lk == 66841 // '{' 'every' + || lk == 67865 // '{' 'except' + || lk == 68377 // '{' 'exit' + || lk == 68889 // '{' 'external' + || lk == 69401 // '{' 'false' + || lk == 69913 // '{' 'first' + || lk == 70425 // '{' 'following' + || lk == 70937 // '{' 'following-sibling' + || lk == 71449 // '{' 'for' + || lk == 72985 // '{' 'from' + || lk == 73497 // '{' 'ft-option' + || lk == 75545 // '{' 'function' + || lk == 76057 // '{' 'ge' + || lk == 77081 // '{' 'group' + || lk == 78105 // '{' 'gt' + || lk == 78617 // '{' 'idiv' + || lk == 79129 // '{' 'if' + || lk == 79641 // '{' 'import' + || lk == 80153 // '{' 'in' + || lk == 80665 // '{' 'index' + || lk == 82713 // '{' 'insert' + || lk == 83225 // '{' 'instance' + || lk == 83737 // '{' 'integrity' + || lk == 84249 // '{' 'intersect' + || lk == 84761 // '{' 'into' + || lk == 85273 // '{' 'is' + || lk == 85785 // '{' 'item' + || lk == 86297 // '{' 'json' + || lk == 86809 // '{' 'json-item' + || lk == 87321 // '{' 'jsoniq' + || lk == 88857 // '{' 'last' + || lk == 89369 // '{' 'lax' + || lk == 89881 // '{' 'le' + || lk == 90905 // '{' 'let' + || lk == 91929 // '{' 'loop' + || lk == 92953 // '{' 'lt' + || lk == 93977 // '{' 'mod' + || lk == 94489 // '{' 'modify' + || lk == 95001 // '{' 'module' + || lk == 96025 // '{' 'namespace' + || lk == 96537 // '{' 'namespace-node' + || lk == 97049 // '{' 'ne' + || lk == 99609 // '{' 'node' + || lk == 100121 // '{' 'nodes' + || lk == 100633 // '{' 'not' + || lk == 101145 // '{' 'null' + || lk == 101657 // '{' 'object' + || lk == 103705 // '{' 'only' + || lk == 104217 // '{' 'option' + || lk == 104729 // '{' 'or' + || lk == 105241 // '{' 'order' + || lk == 105753 // '{' 'ordered' + || lk == 106265 // '{' 'ordering' + || lk == 107801 // '{' 'parent' + || lk == 110873 // '{' 'preceding' + || lk == 111385 // '{' 'preceding-sibling' + || lk == 112921 // '{' 'processing-instruction' + || lk == 113945 // '{' 'rename' + || lk == 114457 // '{' 'replace' + || lk == 114969 // '{' 'return' + || lk == 115481 // '{' 'returning' + || lk == 115993 // '{' 'revalidation' + || lk == 117017 // '{' 'satisfies' + || lk == 117529 // '{' 'schema' + || lk == 118041 // '{' 'schema-attribute' + || lk == 118553 // '{' 'schema-element' + || lk == 119065 // '{' 'score' + || lk == 119577 // '{' 'select' + || lk == 120089 // '{' 'self' + || lk == 122649 // '{' 'sliding' + || lk == 123161 // '{' 'some' + || lk == 123673 // '{' 'stable' + || lk == 124185 // '{' 'start' + || lk == 125721 // '{' 'strict' + || lk == 126745 // '{' 'structured-item' + || lk == 127257 // '{' 'switch' + || lk == 127769 // '{' 'text' + || lk == 129817 // '{' 'to' + || lk == 130329 // '{' 'treat' + || lk == 130841 // '{' 'true' + || lk == 131353 // '{' 'try' + || lk == 131865 // '{' 'tumbling' + || lk == 132377 // '{' 'type' + || lk == 132889 // '{' 'typeswitch' + || lk == 133401 // '{' 'union' + || lk == 134425 // '{' 'unordered' + || lk == 134937 // '{' 'updating' + || lk == 136473 // '{' 'validate' + || lk == 136985 // '{' 'value' + || lk == 137497 // '{' 'variable' + || lk == 138009 // '{' 'version' + || lk == 139545 // '{' 'where' + || lk == 140057 // '{' 'while' + || lk == 141593 // '{' 'with' + || lk == 144153 // '{' '{' + || lk == 145177 // '{' '{|' + || lk == 147225) // '{' '}' + { + lk = memoized(20, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_Literal(); + lk = -1; + } + catch (p1A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_FunctionCall(); + lk = -5; + } + catch (p5A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_BlockExpr(); + lk = -10; + } + catch (p10A) + { + lk = -11; + } + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(20, e0, lk); + } + } + switch (lk) + { + case -1: + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 12935: // 'false' EOF + case 12997: // 'null' EOF + case 13055: // 'true' EOF + case 13447: // 'false' '!' + case 13509: // 'null' '!' + case 13567: // 'true' '!' + case 13959: // 'false' '!=' + case 14021: // 'null' '!=' + case 14079: // 'true' '!=' + case 19591: // 'false' ')' + case 19653: // 'null' ')' + case 19711: // 'true' ')' + case 20103: // 'false' '*' + case 20165: // 'null' '*' + case 20223: // 'true' '*' + case 21127: // 'false' '+' + case 21189: // 'null' '+' + case 21247: // 'true' '+' + case 21639: // 'false' ',' + case 21701: // 'null' ',' + case 21759: // 'true' ',' + case 22151: // 'false' '-' + case 22213: // 'null' '-' + case 22271: // 'true' '-' + case 23175: // 'false' '.' + case 23237: // 'null' '.' + case 23295: // 'true' '.' + case 24199: // 'false' '/' + case 24261: // 'null' '/' + case 24319: // 'true' '/' + case 24711: // 'false' '//' + case 24773: // 'null' '//' + case 24831: // 'true' '//' + case 25735: // 'false' ':' + case 25797: // 'null' ':' + case 25855: // 'true' ':' + case 27783: // 'false' ';' + case 27845: // 'null' ';' + case 27903: // 'true' ';' + case 28295: // 'false' '<' + case 28357: // 'null' '<' + case 28415: // 'true' '<' + case 29831: // 'false' '<<' + case 29893: // 'null' '<<' + case 29951: // 'true' '<<' + case 30343: // 'false' '<=' + case 30405: // 'null' '<=' + case 30463: // 'true' '<=' + case 31367: // 'false' '=' + case 31429: // 'null' '=' + case 31487: // 'true' '=' + case 31879: // 'false' '>' + case 31941: // 'null' '>' + case 31999: // 'true' '>' + case 32391: // 'false' '>=' + case 32453: // 'null' '>=' + case 32511: // 'true' '>=' + case 32903: // 'false' '>>' + case 32965: // 'null' '>>' + case 33023: // 'true' '>>' + case 35463: // 'false' '[' + case 35525: // 'null' '[' + case 35583: // 'true' '[' + case 35975: // 'false' ']' + case 36037: // 'null' ']' + case 36095: // 'true' ']' + case 36487: // 'false' 'after' + case 36549: // 'null' 'after' + case 36607: // 'true' 'after' + case 39047: // 'false' 'and' + case 39109: // 'null' 'and' + case 39167: // 'true' 'and' + case 41095: // 'false' 'as' + case 41157: // 'null' 'as' + case 41215: // 'true' 'as' + case 41607: // 'false' 'ascending' + case 41669: // 'null' 'ascending' + case 41727: // 'true' 'ascending' + case 42119: // 'false' 'at' + case 42181: // 'null' 'at' + case 42239: // 'true' 'at' + case 43655: // 'false' 'before' + case 43717: // 'null' 'before' + case 43775: // 'true' 'before' + case 45191: // 'false' 'by' + case 45253: // 'null' 'by' + case 45311: // 'true' 'by' + case 45703: // 'false' 'case' + case 45765: // 'null' 'case' + case 45823: // 'true' 'case' + case 46215: // 'false' 'cast' + case 46277: // 'null' 'cast' + case 46335: // 'true' 'cast' + case 46727: // 'false' 'castable' + case 46789: // 'null' 'castable' + case 46847: // 'true' 'castable' + case 48775: // 'false' 'collation' + case 48837: // 'null' 'collation' + case 48895: // 'true' 'collation' + case 51335: // 'false' 'contains' + case 51397: // 'null' 'contains' + case 51455: // 'true' 'contains' + case 54407: // 'false' 'count' + case 54469: // 'null' 'count' + case 54527: // 'true' 'count' + case 56455: // 'false' 'default' + case 56517: // 'null' 'default' + case 56575: // 'true' 'default' + case 58503: // 'false' 'descending' + case 58565: // 'null' 'descending' + case 58623: // 'true' 'descending' + case 61063: // 'false' 'div' + case 61125: // 'null' 'div' + case 61183: // 'true' 'div' + case 63111: // 'false' 'else' + case 63173: // 'null' 'else' + case 63231: // 'true' 'else' + case 63623: // 'false' 'empty' + case 63685: // 'null' 'empty' + case 63743: // 'true' 'empty' + case 65159: // 'false' 'end' + case 65221: // 'null' 'end' + case 65279: // 'true' 'end' + case 66183: // 'false' 'eq' + case 66245: // 'null' 'eq' + case 66303: // 'true' 'eq' + case 67719: // 'false' 'except' + case 67781: // 'null' 'except' + case 67839: // 'true' 'except' + case 71303: // 'false' 'for' + case 71365: // 'null' 'for' + case 71423: // 'true' 'for' + case 75911: // 'false' 'ge' + case 75973: // 'null' 'ge' + case 76031: // 'true' 'ge' + case 76935: // 'false' 'group' + case 76997: // 'null' 'group' + case 77055: // 'true' 'group' + case 77959: // 'false' 'gt' + case 78021: // 'null' 'gt' + case 78079: // 'true' 'gt' + case 78471: // 'false' 'idiv' + case 78533: // 'null' 'idiv' + case 78591: // 'true' 'idiv' + case 83079: // 'false' 'instance' + case 83141: // 'null' 'instance' + case 83199: // 'true' 'instance' + case 84103: // 'false' 'intersect' + case 84165: // 'null' 'intersect' + case 84223: // 'true' 'intersect' + case 84615: // 'false' 'into' + case 84677: // 'null' 'into' + case 84735: // 'true' 'into' + case 85127: // 'false' 'is' + case 85189: // 'null' 'is' + case 85247: // 'true' 'is' + case 89735: // 'false' 'le' + case 89797: // 'null' 'le' + case 89855: // 'true' 'le' + case 90759: // 'false' 'let' + case 90821: // 'null' 'let' + case 90879: // 'true' 'let' + case 92807: // 'false' 'lt' + case 92869: // 'null' 'lt' + case 92927: // 'true' 'lt' + case 93831: // 'false' 'mod' + case 93893: // 'null' 'mod' + case 93951: // 'true' 'mod' + case 94343: // 'false' 'modify' + case 94405: // 'null' 'modify' + case 94463: // 'true' 'modify' + case 96903: // 'false' 'ne' + case 96965: // 'null' 'ne' + case 97023: // 'true' 'ne' + case 103559: // 'false' 'only' + case 103621: // 'null' 'only' + case 103679: // 'true' 'only' + case 104583: // 'false' 'or' + case 104645: // 'null' 'or' + case 104703: // 'true' 'or' + case 105095: // 'false' 'order' + case 105157: // 'null' 'order' + case 105215: // 'true' 'order' + case 107143: // 'false' 'paragraphs' + case 107205: // 'null' 'paragraphs' + case 107263: // 'true' 'paragraphs' + case 114823: // 'false' 'return' + case 114885: // 'null' 'return' + case 114943: // 'true' 'return' + case 116871: // 'false' 'satisfies' + case 116933: // 'null' 'satisfies' + case 116991: // 'true' 'satisfies' + case 121479: // 'false' 'sentences' + case 121541: // 'null' 'sentences' + case 121599: // 'true' 'sentences' + case 123527: // 'false' 'stable' + case 123589: // 'null' 'stable' + case 123647: // 'true' 'stable' + case 124039: // 'false' 'start' + case 124101: // 'null' 'start' + case 124159: // 'true' 'start' + case 129159: // 'false' 'times' + case 129221: // 'null' 'times' + case 129279: // 'true' 'times' + case 129671: // 'false' 'to' + case 129733: // 'null' 'to' + case 129791: // 'true' 'to' + case 130183: // 'false' 'treat' + case 130245: // 'null' 'treat' + case 130303: // 'true' 'treat' + case 133255: // 'false' 'union' + case 133317: // 'null' 'union' + case 133375: // 'true' 'union' + case 139399: // 'false' 'where' + case 139461: // 'null' 'where' + case 139519: // 'true' 'where' + case 141447: // 'false' 'with' + case 141509: // 'null' 'with' + case 141567: // 'true' 'with' + case 142983: // 'false' 'words' + case 143045: // 'null' 'words' + case 143103: // 'true' 'words' + case 145543: // 'false' '|' + case 145605: // 'null' '|' + case 145663: // 'true' '|' + case 146055: // 'false' '||' + case 146117: // 'null' '||' + case 146175: // 'true' '||' + case 146567: // 'false' '|}' + case 146629: // 'null' '|}' + case 146687: // 'true' '|}' + case 147079: // 'false' '}' + case 147141: // 'null' '}' + case 147199: // 'true' '}' + parse_Literal(); + break; + case 31: // '$' + parse_VarRef(); + break; + case 35: // '(' + parse_ParenthesizedExpr(); + break; + case 32: // '$$' + parse_ContextItemExpr(); + break; + case -5: + case 17926: // EQName^Token '(' + case 17991: // 'after' '(' + case 17993: // 'allowing' '(' + case 17994: // 'ancestor' '(' + case 17995: // 'ancestor-or-self' '(' + case 17996: // 'and' '(' + case 17998: // 'append' '(' + case 18000: // 'as' '(' + case 18001: // 'ascending' '(' + case 18002: // 'at' '(' + case 18004: // 'base-uri' '(' + case 18005: // 'before' '(' + case 18006: // 'boundary-space' '(' + case 18007: // 'break' '(' + case 18009: // 'case' '(' + case 18010: // 'cast' '(' + case 18011: // 'castable' '(' + case 18012: // 'catch' '(' + case 18014: // 'child' '(' + case 18015: // 'collation' '(' + case 18018: // 'constraint' '(' + case 18019: // 'construction' '(' + case 18022: // 'context' '(' + case 18023: // 'continue' '(' + case 18024: // 'copy' '(' + case 18025: // 'copy-namespaces' '(' + case 18026: // 'count' '(' + case 18027: // 'decimal-format' '(' + case 18029: // 'declare' '(' + case 18030: // 'default' '(' + case 18031: // 'delete' '(' + case 18032: // 'descendant' '(' + case 18033: // 'descendant-or-self' '(' + case 18034: // 'descending' '(' + case 18039: // 'div' '(' + case 18040: // 'document' '(' + case 18043: // 'else' '(' + case 18044: // 'empty' '(' + case 18046: // 'encoding' '(' + case 18047: // 'end' '(' + case 18049: // 'eq' '(' + case 18050: // 'every' '(' + case 18052: // 'except' '(' + case 18053: // 'exit' '(' + case 18054: // 'external' '(' + case 18056: // 'first' '(' + case 18057: // 'following' '(' + case 18058: // 'following-sibling' '(' + case 18059: // 'for' '(' + case 18062: // 'from' '(' + case 18063: // 'ft-option' '(' + case 18068: // 'ge' '(' + case 18070: // 'group' '(' + case 18072: // 'gt' '(' + case 18073: // 'idiv' '(' + case 18075: // 'import' '(' + case 18076: // 'in' '(' + case 18077: // 'index' '(' + case 18081: // 'insert' '(' + case 18082: // 'instance' '(' + case 18083: // 'integrity' '(' + case 18084: // 'intersect' '(' + case 18085: // 'into' '(' + case 18086: // 'is' '(' + case 18088: // 'json' '(' + case 18090: // 'jsoniq' '(' + case 18093: // 'last' '(' + case 18094: // 'lax' '(' + case 18095: // 'le' '(' + case 18097: // 'let' '(' + case 18099: // 'loop' '(' + case 18101: // 'lt' '(' + case 18103: // 'mod' '(' + case 18104: // 'modify' '(' + case 18105: // 'module' '(' + case 18107: // 'namespace' '(' + case 18109: // 'ne' '(' + case 18115: // 'nodes' '(' + case 18118: // 'object' '(' + case 18122: // 'only' '(' + case 18123: // 'option' '(' + case 18124: // 'or' '(' + case 18125: // 'order' '(' + case 18126: // 'ordered' '(' + case 18127: // 'ordering' '(' + case 18130: // 'parent' '(' + case 18136: // 'preceding' '(' + case 18137: // 'preceding-sibling' '(' + case 18142: // 'rename' '(' + case 18143: // 'replace' '(' + case 18144: // 'return' '(' + case 18145: // 'returning' '(' + case 18146: // 'revalidation' '(' + case 18148: // 'satisfies' '(' + case 18149: // 'schema' '(' + case 18152: // 'score' '(' + case 18153: // 'select' '(' + case 18154: // 'self' '(' + case 18159: // 'sliding' '(' + case 18160: // 'some' '(' + case 18161: // 'stable' '(' + case 18162: // 'start' '(' + case 18165: // 'strict' '(' + case 18173: // 'to' '(' + case 18174: // 'treat' '(' + case 18176: // 'try' '(' + case 18177: // 'tumbling' '(' + case 18178: // 'type' '(' + case 18180: // 'union' '(' + case 18182: // 'unordered' '(' + case 18183: // 'updating' '(' + case 18186: // 'validate' '(' + case 18187: // 'value' '(' + case 18188: // 'variable' '(' + case 18189: // 'version' '(' + case 18192: // 'where' '(' + case 18193: // 'while' '(' + case 18196: // 'with' '(' + parse_FunctionCall(); + break; + case 144078: // 'ordered' '{' + parse_OrderedExpr(); + break; + case 144134: // 'unordered' '{' + parse_UnorderedExpr(); + break; + case 33: // '%' + case 79: // 'array' + case 121: // 'document-node' + case 125: // 'empty-sequence' + case 147: // 'function' + case 154: // 'if' + case 167: // 'item' + case 169: // 'json-item' + case 188: // 'namespace-node' + case 194: // 'node' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 247: // 'structured-item' + case 248: // 'switch' + case 259: // 'typeswitch' + case 14854: // EQName^Token '#' + case 14919: // 'after' '#' + case 14921: // 'allowing' '#' + case 14922: // 'ancestor' '#' + case 14923: // 'ancestor-or-self' '#' + case 14924: // 'and' '#' + case 14926: // 'append' '#' + case 14928: // 'as' '#' + case 14929: // 'ascending' '#' + case 14930: // 'at' '#' + case 14931: // 'attribute' '#' + case 14932: // 'base-uri' '#' + case 14933: // 'before' '#' + case 14934: // 'boundary-space' '#' + case 14935: // 'break' '#' + case 14937: // 'case' '#' + case 14938: // 'cast' '#' + case 14939: // 'castable' '#' + case 14940: // 'catch' '#' + case 14942: // 'child' '#' + case 14943: // 'collation' '#' + case 14945: // 'comment' '#' + case 14946: // 'constraint' '#' + case 14947: // 'construction' '#' + case 14950: // 'context' '#' + case 14951: // 'continue' '#' + case 14952: // 'copy' '#' + case 14953: // 'copy-namespaces' '#' + case 14954: // 'count' '#' + case 14955: // 'decimal-format' '#' + case 14957: // 'declare' '#' + case 14958: // 'default' '#' + case 14959: // 'delete' '#' + case 14960: // 'descendant' '#' + case 14961: // 'descendant-or-self' '#' + case 14962: // 'descending' '#' + case 14967: // 'div' '#' + case 14968: // 'document' '#' + case 14970: // 'element' '#' + case 14971: // 'else' '#' + case 14972: // 'empty' '#' + case 14974: // 'encoding' '#' + case 14975: // 'end' '#' + case 14977: // 'eq' '#' + case 14978: // 'every' '#' + case 14980: // 'except' '#' + case 14981: // 'exit' '#' + case 14982: // 'external' '#' + case 14983: // 'false' '#' + case 14984: // 'first' '#' + case 14985: // 'following' '#' + case 14986: // 'following-sibling' '#' + case 14987: // 'for' '#' + case 14990: // 'from' '#' + case 14991: // 'ft-option' '#' + case 14996: // 'ge' '#' + case 14998: // 'group' '#' + case 15000: // 'gt' '#' + case 15001: // 'idiv' '#' + case 15003: // 'import' '#' + case 15004: // 'in' '#' + case 15005: // 'index' '#' + case 15009: // 'insert' '#' + case 15010: // 'instance' '#' + case 15011: // 'integrity' '#' + case 15012: // 'intersect' '#' + case 15013: // 'into' '#' + case 15014: // 'is' '#' + case 15016: // 'json' '#' + case 15018: // 'jsoniq' '#' + case 15021: // 'last' '#' + case 15022: // 'lax' '#' + case 15023: // 'le' '#' + case 15025: // 'let' '#' + case 15027: // 'loop' '#' + case 15029: // 'lt' '#' + case 15031: // 'mod' '#' + case 15032: // 'modify' '#' + case 15033: // 'module' '#' + case 15035: // 'namespace' '#' + case 15037: // 'ne' '#' + case 15043: // 'nodes' '#' + case 15045: // 'null' '#' + case 15046: // 'object' '#' + case 15050: // 'only' '#' + case 15051: // 'option' '#' + case 15052: // 'or' '#' + case 15053: // 'order' '#' + case 15054: // 'ordered' '#' + case 15055: // 'ordering' '#' + case 15058: // 'parent' '#' + case 15064: // 'preceding' '#' + case 15065: // 'preceding-sibling' '#' + case 15068: // 'processing-instruction' '#' + case 15070: // 'rename' '#' + case 15071: // 'replace' '#' + case 15072: // 'return' '#' + case 15073: // 'returning' '#' + case 15074: // 'revalidation' '#' + case 15076: // 'satisfies' '#' + case 15077: // 'schema' '#' + case 15080: // 'score' '#' + case 15081: // 'select' '#' + case 15082: // 'self' '#' + case 15087: // 'sliding' '#' + case 15088: // 'some' '#' + case 15089: // 'stable' '#' + case 15090: // 'start' '#' + case 15093: // 'strict' '#' + case 15097: // 'text' '#' + case 15101: // 'to' '#' + case 15102: // 'treat' '#' + case 15103: // 'true' '#' + case 15104: // 'try' '#' + case 15105: // 'tumbling' '#' + case 15106: // 'type' '#' + case 15108: // 'union' '#' + case 15110: // 'unordered' '#' + case 15111: // 'updating' '#' + case 15114: // 'validate' '#' + case 15115: // 'value' '#' + case 15116: // 'variable' '#' + case 15117: // 'version' '#' + case 15120: // 'where' '#' + case 15121: // 'while' '#' + case 15124: // 'with' '#' + parse_FunctionItemExpr(); + break; + case -10: + case 27929: // '{' ';' + parse_BlockExpr(); + break; + case -11: + case 10009: // '{' NCName^Token + parse_ObjectConstructor(); + break; + case 69: // '[' + parse_ArrayConstructor(); + break; + case 283: // '{|' + parse_JSONSimpleObjectUnion(); + break; + default: + parse_Constructor(); + } + eventHandler.endNonterminal("PrimaryExpr", e0); + } + + function try_PrimaryExpr() + { + switch (l1) + { + case 187: // 'namespace' + lookahead2W(246); // NCName^Token | S^WS | '#' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 220: // 'processing-instruction' + lookahead2W(244); // NCName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 281: // '{' + lookahead2W(282); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | ';' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + break; + case 83: // 'attribute' + case 122: // 'element' + lookahead2W(252); // EQName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + break; + case 97: // 'comment' + case 249: // 'text' + lookahead2W(97); // S^WS | '#' | '(:' | '{' + break; + case 120: // 'document' + case 206: // 'ordered' + case 262: // 'unordered' + lookahead2W(148); // S^WS | '#' | '(' | '(:' | '{' + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(236); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '.' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | + // 'cast' | 'castable' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + break; + case 6: // EQName^Token + case 71: // 'after' + case 73: // 'allowing' + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 76: // 'and' + case 78: // 'append' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 87: // 'break' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 94: // 'child' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 103: // 'continue' + case 104: // 'copy' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 111: // 'delete' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 114: // 'descending' + case 119: // 'div' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 130: // 'every' + case 132: // 'except' + case 133: // 'exit' + case 134: // 'external' + case 136: // 'first' + case 137: // 'following' + case 138: // 'following-sibling' + case 139: // 'for' + case 142: // 'from' + case 143: // 'ft-option' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 161: // 'insert' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 177: // 'let' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 189: // 'ne' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 222: // 'rename' + case 223: // 'replace' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 232: // 'score' + case 233: // 'select' + case 234: // 'self' + case 239: // 'sliding' + case 240: // 'some' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 253: // 'to' + case 254: // 'treat' + case 256: // 'try' + case 257: // 'tumbling' + case 258: // 'type' + case 260: // 'union' + case 263: // 'updating' + case 266: // 'validate' + case 267: // 'value' + case 268: // 'variable' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk == 3353 // '{' EQName^Token + || lk == 4377 // '{' IntegerLiteral + || lk == 4889 // '{' DecimalLiteral + || lk == 5401 // '{' DoubleLiteral + || lk == 5913 // '{' StringLiteral + || lk == 16153 // '{' '$' + || lk == 16665 // '{' '$$' + || lk == 17177 // '{' '%' + || lk == 18055 // 'false' '(' + || lk == 18117 // 'null' '(' + || lk == 18175 // 'true' '(' + || lk == 18201 // '{' '(' + || lk == 18713 // '{' '(#' + || lk == 21273 // '{' '+' + || lk == 22297 // '{' '-' + || lk == 24345 // '{' '/' + || lk == 24857 // '{' '//' + || lk == 28441 // '{' '<' + || lk == 28953 // '{' '<!--' + || lk == 31001 // '{' '<?' + || lk == 35609 // '{' '[' + || lk == 36633 // '{' 'after' + || lk == 37657 // '{' 'allowing' + || lk == 38169 // '{' 'ancestor' + || lk == 38681 // '{' 'ancestor-or-self' + || lk == 39193 // '{' 'and' + || lk == 40217 // '{' 'append' + || lk == 40729 // '{' 'array' + || lk == 41241 // '{' 'as' + || lk == 41753 // '{' 'ascending' + || lk == 42265 // '{' 'at' + || lk == 42777 // '{' 'attribute' + || lk == 43289 // '{' 'base-uri' + || lk == 43801 // '{' 'before' + || lk == 44313 // '{' 'boundary-space' + || lk == 44825 // '{' 'break' + || lk == 45849 // '{' 'case' + || lk == 46361 // '{' 'cast' + || lk == 46873 // '{' 'castable' + || lk == 47385 // '{' 'catch' + || lk == 48409 // '{' 'child' + || lk == 48921 // '{' 'collation' + || lk == 49945 // '{' 'comment' + || lk == 50457 // '{' 'constraint' + || lk == 50969 // '{' 'construction' + || lk == 52505 // '{' 'context' + || lk == 53017 // '{' 'continue' + || lk == 53529 // '{' 'copy' + || lk == 54041 // '{' 'copy-namespaces' + || lk == 54553 // '{' 'count' + || lk == 55065 // '{' 'decimal-format' + || lk == 56089 // '{' 'declare' + || lk == 56601 // '{' 'default' + || lk == 57113 // '{' 'delete' + || lk == 57625 // '{' 'descendant' + || lk == 58137 // '{' 'descendant-or-self' + || lk == 58649 // '{' 'descending' + || lk == 61209 // '{' 'div' + || lk == 61721 // '{' 'document' + || lk == 62233 // '{' 'document-node' + || lk == 62745 // '{' 'element' + || lk == 63257 // '{' 'else' + || lk == 63769 // '{' 'empty' + || lk == 64281 // '{' 'empty-sequence' + || lk == 64793 // '{' 'encoding' + || lk == 65305 // '{' 'end' + || lk == 66329 // '{' 'eq' + || lk == 66841 // '{' 'every' + || lk == 67865 // '{' 'except' + || lk == 68377 // '{' 'exit' + || lk == 68889 // '{' 'external' + || lk == 69401 // '{' 'false' + || lk == 69913 // '{' 'first' + || lk == 70425 // '{' 'following' + || lk == 70937 // '{' 'following-sibling' + || lk == 71449 // '{' 'for' + || lk == 72985 // '{' 'from' + || lk == 73497 // '{' 'ft-option' + || lk == 75545 // '{' 'function' + || lk == 76057 // '{' 'ge' + || lk == 77081 // '{' 'group' + || lk == 78105 // '{' 'gt' + || lk == 78617 // '{' 'idiv' + || lk == 79129 // '{' 'if' + || lk == 79641 // '{' 'import' + || lk == 80153 // '{' 'in' + || lk == 80665 // '{' 'index' + || lk == 82713 // '{' 'insert' + || lk == 83225 // '{' 'instance' + || lk == 83737 // '{' 'integrity' + || lk == 84249 // '{' 'intersect' + || lk == 84761 // '{' 'into' + || lk == 85273 // '{' 'is' + || lk == 85785 // '{' 'item' + || lk == 86297 // '{' 'json' + || lk == 86809 // '{' 'json-item' + || lk == 87321 // '{' 'jsoniq' + || lk == 88857 // '{' 'last' + || lk == 89369 // '{' 'lax' + || lk == 89881 // '{' 'le' + || lk == 90905 // '{' 'let' + || lk == 91929 // '{' 'loop' + || lk == 92953 // '{' 'lt' + || lk == 93977 // '{' 'mod' + || lk == 94489 // '{' 'modify' + || lk == 95001 // '{' 'module' + || lk == 96025 // '{' 'namespace' + || lk == 96537 // '{' 'namespace-node' + || lk == 97049 // '{' 'ne' + || lk == 99609 // '{' 'node' + || lk == 100121 // '{' 'nodes' + || lk == 100633 // '{' 'not' + || lk == 101145 // '{' 'null' + || lk == 101657 // '{' 'object' + || lk == 103705 // '{' 'only' + || lk == 104217 // '{' 'option' + || lk == 104729 // '{' 'or' + || lk == 105241 // '{' 'order' + || lk == 105753 // '{' 'ordered' + || lk == 106265 // '{' 'ordering' + || lk == 107801 // '{' 'parent' + || lk == 110873 // '{' 'preceding' + || lk == 111385 // '{' 'preceding-sibling' + || lk == 112921 // '{' 'processing-instruction' + || lk == 113945 // '{' 'rename' + || lk == 114457 // '{' 'replace' + || lk == 114969 // '{' 'return' + || lk == 115481 // '{' 'returning' + || lk == 115993 // '{' 'revalidation' + || lk == 117017 // '{' 'satisfies' + || lk == 117529 // '{' 'schema' + || lk == 118041 // '{' 'schema-attribute' + || lk == 118553 // '{' 'schema-element' + || lk == 119065 // '{' 'score' + || lk == 119577 // '{' 'select' + || lk == 120089 // '{' 'self' + || lk == 122649 // '{' 'sliding' + || lk == 123161 // '{' 'some' + || lk == 123673 // '{' 'stable' + || lk == 124185 // '{' 'start' + || lk == 125721 // '{' 'strict' + || lk == 126745 // '{' 'structured-item' + || lk == 127257 // '{' 'switch' + || lk == 127769 // '{' 'text' + || lk == 129817 // '{' 'to' + || lk == 130329 // '{' 'treat' + || lk == 130841 // '{' 'true' + || lk == 131353 // '{' 'try' + || lk == 131865 // '{' 'tumbling' + || lk == 132377 // '{' 'type' + || lk == 132889 // '{' 'typeswitch' + || lk == 133401 // '{' 'union' + || lk == 134425 // '{' 'unordered' + || lk == 134937 // '{' 'updating' + || lk == 136473 // '{' 'validate' + || lk == 136985 // '{' 'value' + || lk == 137497 // '{' 'variable' + || lk == 138009 // '{' 'version' + || lk == 139545 // '{' 'where' + || lk == 140057 // '{' 'while' + || lk == 141593 // '{' 'with' + || lk == 144153 // '{' '{' + || lk == 145177 // '{' '{|' + || lk == 147225) // '{' '}' + { + lk = memoized(20, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_Literal(); + memoize(20, e0A, -1); + lk = -14; + } + catch (p1A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_FunctionCall(); + memoize(20, e0A, -5); + lk = -14; + } + catch (p5A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_BlockExpr(); + memoize(20, e0A, -10); + lk = -14; + } + catch (p10A) + { + lk = -11; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(20, e0A, -11); + } + } + } + } + } + switch (lk) + { + case -1: + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 12935: // 'false' EOF + case 12997: // 'null' EOF + case 13055: // 'true' EOF + case 13447: // 'false' '!' + case 13509: // 'null' '!' + case 13567: // 'true' '!' + case 13959: // 'false' '!=' + case 14021: // 'null' '!=' + case 14079: // 'true' '!=' + case 19591: // 'false' ')' + case 19653: // 'null' ')' + case 19711: // 'true' ')' + case 20103: // 'false' '*' + case 20165: // 'null' '*' + case 20223: // 'true' '*' + case 21127: // 'false' '+' + case 21189: // 'null' '+' + case 21247: // 'true' '+' + case 21639: // 'false' ',' + case 21701: // 'null' ',' + case 21759: // 'true' ',' + case 22151: // 'false' '-' + case 22213: // 'null' '-' + case 22271: // 'true' '-' + case 23175: // 'false' '.' + case 23237: // 'null' '.' + case 23295: // 'true' '.' + case 24199: // 'false' '/' + case 24261: // 'null' '/' + case 24319: // 'true' '/' + case 24711: // 'false' '//' + case 24773: // 'null' '//' + case 24831: // 'true' '//' + case 25735: // 'false' ':' + case 25797: // 'null' ':' + case 25855: // 'true' ':' + case 27783: // 'false' ';' + case 27845: // 'null' ';' + case 27903: // 'true' ';' + case 28295: // 'false' '<' + case 28357: // 'null' '<' + case 28415: // 'true' '<' + case 29831: // 'false' '<<' + case 29893: // 'null' '<<' + case 29951: // 'true' '<<' + case 30343: // 'false' '<=' + case 30405: // 'null' '<=' + case 30463: // 'true' '<=' + case 31367: // 'false' '=' + case 31429: // 'null' '=' + case 31487: // 'true' '=' + case 31879: // 'false' '>' + case 31941: // 'null' '>' + case 31999: // 'true' '>' + case 32391: // 'false' '>=' + case 32453: // 'null' '>=' + case 32511: // 'true' '>=' + case 32903: // 'false' '>>' + case 32965: // 'null' '>>' + case 33023: // 'true' '>>' + case 35463: // 'false' '[' + case 35525: // 'null' '[' + case 35583: // 'true' '[' + case 35975: // 'false' ']' + case 36037: // 'null' ']' + case 36095: // 'true' ']' + case 36487: // 'false' 'after' + case 36549: // 'null' 'after' + case 36607: // 'true' 'after' + case 39047: // 'false' 'and' + case 39109: // 'null' 'and' + case 39167: // 'true' 'and' + case 41095: // 'false' 'as' + case 41157: // 'null' 'as' + case 41215: // 'true' 'as' + case 41607: // 'false' 'ascending' + case 41669: // 'null' 'ascending' + case 41727: // 'true' 'ascending' + case 42119: // 'false' 'at' + case 42181: // 'null' 'at' + case 42239: // 'true' 'at' + case 43655: // 'false' 'before' + case 43717: // 'null' 'before' + case 43775: // 'true' 'before' + case 45191: // 'false' 'by' + case 45253: // 'null' 'by' + case 45311: // 'true' 'by' + case 45703: // 'false' 'case' + case 45765: // 'null' 'case' + case 45823: // 'true' 'case' + case 46215: // 'false' 'cast' + case 46277: // 'null' 'cast' + case 46335: // 'true' 'cast' + case 46727: // 'false' 'castable' + case 46789: // 'null' 'castable' + case 46847: // 'true' 'castable' + case 48775: // 'false' 'collation' + case 48837: // 'null' 'collation' + case 48895: // 'true' 'collation' + case 51335: // 'false' 'contains' + case 51397: // 'null' 'contains' + case 51455: // 'true' 'contains' + case 54407: // 'false' 'count' + case 54469: // 'null' 'count' + case 54527: // 'true' 'count' + case 56455: // 'false' 'default' + case 56517: // 'null' 'default' + case 56575: // 'true' 'default' + case 58503: // 'false' 'descending' + case 58565: // 'null' 'descending' + case 58623: // 'true' 'descending' + case 61063: // 'false' 'div' + case 61125: // 'null' 'div' + case 61183: // 'true' 'div' + case 63111: // 'false' 'else' + case 63173: // 'null' 'else' + case 63231: // 'true' 'else' + case 63623: // 'false' 'empty' + case 63685: // 'null' 'empty' + case 63743: // 'true' 'empty' + case 65159: // 'false' 'end' + case 65221: // 'null' 'end' + case 65279: // 'true' 'end' + case 66183: // 'false' 'eq' + case 66245: // 'null' 'eq' + case 66303: // 'true' 'eq' + case 67719: // 'false' 'except' + case 67781: // 'null' 'except' + case 67839: // 'true' 'except' + case 71303: // 'false' 'for' + case 71365: // 'null' 'for' + case 71423: // 'true' 'for' + case 75911: // 'false' 'ge' + case 75973: // 'null' 'ge' + case 76031: // 'true' 'ge' + case 76935: // 'false' 'group' + case 76997: // 'null' 'group' + case 77055: // 'true' 'group' + case 77959: // 'false' 'gt' + case 78021: // 'null' 'gt' + case 78079: // 'true' 'gt' + case 78471: // 'false' 'idiv' + case 78533: // 'null' 'idiv' + case 78591: // 'true' 'idiv' + case 83079: // 'false' 'instance' + case 83141: // 'null' 'instance' + case 83199: // 'true' 'instance' + case 84103: // 'false' 'intersect' + case 84165: // 'null' 'intersect' + case 84223: // 'true' 'intersect' + case 84615: // 'false' 'into' + case 84677: // 'null' 'into' + case 84735: // 'true' 'into' + case 85127: // 'false' 'is' + case 85189: // 'null' 'is' + case 85247: // 'true' 'is' + case 89735: // 'false' 'le' + case 89797: // 'null' 'le' + case 89855: // 'true' 'le' + case 90759: // 'false' 'let' + case 90821: // 'null' 'let' + case 90879: // 'true' 'let' + case 92807: // 'false' 'lt' + case 92869: // 'null' 'lt' + case 92927: // 'true' 'lt' + case 93831: // 'false' 'mod' + case 93893: // 'null' 'mod' + case 93951: // 'true' 'mod' + case 94343: // 'false' 'modify' + case 94405: // 'null' 'modify' + case 94463: // 'true' 'modify' + case 96903: // 'false' 'ne' + case 96965: // 'null' 'ne' + case 97023: // 'true' 'ne' + case 103559: // 'false' 'only' + case 103621: // 'null' 'only' + case 103679: // 'true' 'only' + case 104583: // 'false' 'or' + case 104645: // 'null' 'or' + case 104703: // 'true' 'or' + case 105095: // 'false' 'order' + case 105157: // 'null' 'order' + case 105215: // 'true' 'order' + case 107143: // 'false' 'paragraphs' + case 107205: // 'null' 'paragraphs' + case 107263: // 'true' 'paragraphs' + case 114823: // 'false' 'return' + case 114885: // 'null' 'return' + case 114943: // 'true' 'return' + case 116871: // 'false' 'satisfies' + case 116933: // 'null' 'satisfies' + case 116991: // 'true' 'satisfies' + case 121479: // 'false' 'sentences' + case 121541: // 'null' 'sentences' + case 121599: // 'true' 'sentences' + case 123527: // 'false' 'stable' + case 123589: // 'null' 'stable' + case 123647: // 'true' 'stable' + case 124039: // 'false' 'start' + case 124101: // 'null' 'start' + case 124159: // 'true' 'start' + case 129159: // 'false' 'times' + case 129221: // 'null' 'times' + case 129279: // 'true' 'times' + case 129671: // 'false' 'to' + case 129733: // 'null' 'to' + case 129791: // 'true' 'to' + case 130183: // 'false' 'treat' + case 130245: // 'null' 'treat' + case 130303: // 'true' 'treat' + case 133255: // 'false' 'union' + case 133317: // 'null' 'union' + case 133375: // 'true' 'union' + case 139399: // 'false' 'where' + case 139461: // 'null' 'where' + case 139519: // 'true' 'where' + case 141447: // 'false' 'with' + case 141509: // 'null' 'with' + case 141567: // 'true' 'with' + case 142983: // 'false' 'words' + case 143045: // 'null' 'words' + case 143103: // 'true' 'words' + case 145543: // 'false' '|' + case 145605: // 'null' '|' + case 145663: // 'true' '|' + case 146055: // 'false' '||' + case 146117: // 'null' '||' + case 146175: // 'true' '||' + case 146567: // 'false' '|}' + case 146629: // 'null' '|}' + case 146687: // 'true' '|}' + case 147079: // 'false' '}' + case 147141: // 'null' '}' + case 147199: // 'true' '}' + try_Literal(); + break; + case 31: // '$' + try_VarRef(); + break; + case 35: // '(' + try_ParenthesizedExpr(); + break; + case 32: // '$$' + try_ContextItemExpr(); + break; + case -5: + case 17926: // EQName^Token '(' + case 17991: // 'after' '(' + case 17993: // 'allowing' '(' + case 17994: // 'ancestor' '(' + case 17995: // 'ancestor-or-self' '(' + case 17996: // 'and' '(' + case 17998: // 'append' '(' + case 18000: // 'as' '(' + case 18001: // 'ascending' '(' + case 18002: // 'at' '(' + case 18004: // 'base-uri' '(' + case 18005: // 'before' '(' + case 18006: // 'boundary-space' '(' + case 18007: // 'break' '(' + case 18009: // 'case' '(' + case 18010: // 'cast' '(' + case 18011: // 'castable' '(' + case 18012: // 'catch' '(' + case 18014: // 'child' '(' + case 18015: // 'collation' '(' + case 18018: // 'constraint' '(' + case 18019: // 'construction' '(' + case 18022: // 'context' '(' + case 18023: // 'continue' '(' + case 18024: // 'copy' '(' + case 18025: // 'copy-namespaces' '(' + case 18026: // 'count' '(' + case 18027: // 'decimal-format' '(' + case 18029: // 'declare' '(' + case 18030: // 'default' '(' + case 18031: // 'delete' '(' + case 18032: // 'descendant' '(' + case 18033: // 'descendant-or-self' '(' + case 18034: // 'descending' '(' + case 18039: // 'div' '(' + case 18040: // 'document' '(' + case 18043: // 'else' '(' + case 18044: // 'empty' '(' + case 18046: // 'encoding' '(' + case 18047: // 'end' '(' + case 18049: // 'eq' '(' + case 18050: // 'every' '(' + case 18052: // 'except' '(' + case 18053: // 'exit' '(' + case 18054: // 'external' '(' + case 18056: // 'first' '(' + case 18057: // 'following' '(' + case 18058: // 'following-sibling' '(' + case 18059: // 'for' '(' + case 18062: // 'from' '(' + case 18063: // 'ft-option' '(' + case 18068: // 'ge' '(' + case 18070: // 'group' '(' + case 18072: // 'gt' '(' + case 18073: // 'idiv' '(' + case 18075: // 'import' '(' + case 18076: // 'in' '(' + case 18077: // 'index' '(' + case 18081: // 'insert' '(' + case 18082: // 'instance' '(' + case 18083: // 'integrity' '(' + case 18084: // 'intersect' '(' + case 18085: // 'into' '(' + case 18086: // 'is' '(' + case 18088: // 'json' '(' + case 18090: // 'jsoniq' '(' + case 18093: // 'last' '(' + case 18094: // 'lax' '(' + case 18095: // 'le' '(' + case 18097: // 'let' '(' + case 18099: // 'loop' '(' + case 18101: // 'lt' '(' + case 18103: // 'mod' '(' + case 18104: // 'modify' '(' + case 18105: // 'module' '(' + case 18107: // 'namespace' '(' + case 18109: // 'ne' '(' + case 18115: // 'nodes' '(' + case 18118: // 'object' '(' + case 18122: // 'only' '(' + case 18123: // 'option' '(' + case 18124: // 'or' '(' + case 18125: // 'order' '(' + case 18126: // 'ordered' '(' + case 18127: // 'ordering' '(' + case 18130: // 'parent' '(' + case 18136: // 'preceding' '(' + case 18137: // 'preceding-sibling' '(' + case 18142: // 'rename' '(' + case 18143: // 'replace' '(' + case 18144: // 'return' '(' + case 18145: // 'returning' '(' + case 18146: // 'revalidation' '(' + case 18148: // 'satisfies' '(' + case 18149: // 'schema' '(' + case 18152: // 'score' '(' + case 18153: // 'select' '(' + case 18154: // 'self' '(' + case 18159: // 'sliding' '(' + case 18160: // 'some' '(' + case 18161: // 'stable' '(' + case 18162: // 'start' '(' + case 18165: // 'strict' '(' + case 18173: // 'to' '(' + case 18174: // 'treat' '(' + case 18176: // 'try' '(' + case 18177: // 'tumbling' '(' + case 18178: // 'type' '(' + case 18180: // 'union' '(' + case 18182: // 'unordered' '(' + case 18183: // 'updating' '(' + case 18186: // 'validate' '(' + case 18187: // 'value' '(' + case 18188: // 'variable' '(' + case 18189: // 'version' '(' + case 18192: // 'where' '(' + case 18193: // 'while' '(' + case 18196: // 'with' '(' + try_FunctionCall(); + break; + case 144078: // 'ordered' '{' + try_OrderedExpr(); + break; + case 144134: // 'unordered' '{' + try_UnorderedExpr(); + break; + case 33: // '%' + case 79: // 'array' + case 121: // 'document-node' + case 125: // 'empty-sequence' + case 147: // 'function' + case 154: // 'if' + case 167: // 'item' + case 169: // 'json-item' + case 188: // 'namespace-node' + case 194: // 'node' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 247: // 'structured-item' + case 248: // 'switch' + case 259: // 'typeswitch' + case 14854: // EQName^Token '#' + case 14919: // 'after' '#' + case 14921: // 'allowing' '#' + case 14922: // 'ancestor' '#' + case 14923: // 'ancestor-or-self' '#' + case 14924: // 'and' '#' + case 14926: // 'append' '#' + case 14928: // 'as' '#' + case 14929: // 'ascending' '#' + case 14930: // 'at' '#' + case 14931: // 'attribute' '#' + case 14932: // 'base-uri' '#' + case 14933: // 'before' '#' + case 14934: // 'boundary-space' '#' + case 14935: // 'break' '#' + case 14937: // 'case' '#' + case 14938: // 'cast' '#' + case 14939: // 'castable' '#' + case 14940: // 'catch' '#' + case 14942: // 'child' '#' + case 14943: // 'collation' '#' + case 14945: // 'comment' '#' + case 14946: // 'constraint' '#' + case 14947: // 'construction' '#' + case 14950: // 'context' '#' + case 14951: // 'continue' '#' + case 14952: // 'copy' '#' + case 14953: // 'copy-namespaces' '#' + case 14954: // 'count' '#' + case 14955: // 'decimal-format' '#' + case 14957: // 'declare' '#' + case 14958: // 'default' '#' + case 14959: // 'delete' '#' + case 14960: // 'descendant' '#' + case 14961: // 'descendant-or-self' '#' + case 14962: // 'descending' '#' + case 14967: // 'div' '#' + case 14968: // 'document' '#' + case 14970: // 'element' '#' + case 14971: // 'else' '#' + case 14972: // 'empty' '#' + case 14974: // 'encoding' '#' + case 14975: // 'end' '#' + case 14977: // 'eq' '#' + case 14978: // 'every' '#' + case 14980: // 'except' '#' + case 14981: // 'exit' '#' + case 14982: // 'external' '#' + case 14983: // 'false' '#' + case 14984: // 'first' '#' + case 14985: // 'following' '#' + case 14986: // 'following-sibling' '#' + case 14987: // 'for' '#' + case 14990: // 'from' '#' + case 14991: // 'ft-option' '#' + case 14996: // 'ge' '#' + case 14998: // 'group' '#' + case 15000: // 'gt' '#' + case 15001: // 'idiv' '#' + case 15003: // 'import' '#' + case 15004: // 'in' '#' + case 15005: // 'index' '#' + case 15009: // 'insert' '#' + case 15010: // 'instance' '#' + case 15011: // 'integrity' '#' + case 15012: // 'intersect' '#' + case 15013: // 'into' '#' + case 15014: // 'is' '#' + case 15016: // 'json' '#' + case 15018: // 'jsoniq' '#' + case 15021: // 'last' '#' + case 15022: // 'lax' '#' + case 15023: // 'le' '#' + case 15025: // 'let' '#' + case 15027: // 'loop' '#' + case 15029: // 'lt' '#' + case 15031: // 'mod' '#' + case 15032: // 'modify' '#' + case 15033: // 'module' '#' + case 15035: // 'namespace' '#' + case 15037: // 'ne' '#' + case 15043: // 'nodes' '#' + case 15045: // 'null' '#' + case 15046: // 'object' '#' + case 15050: // 'only' '#' + case 15051: // 'option' '#' + case 15052: // 'or' '#' + case 15053: // 'order' '#' + case 15054: // 'ordered' '#' + case 15055: // 'ordering' '#' + case 15058: // 'parent' '#' + case 15064: // 'preceding' '#' + case 15065: // 'preceding-sibling' '#' + case 15068: // 'processing-instruction' '#' + case 15070: // 'rename' '#' + case 15071: // 'replace' '#' + case 15072: // 'return' '#' + case 15073: // 'returning' '#' + case 15074: // 'revalidation' '#' + case 15076: // 'satisfies' '#' + case 15077: // 'schema' '#' + case 15080: // 'score' '#' + case 15081: // 'select' '#' + case 15082: // 'self' '#' + case 15087: // 'sliding' '#' + case 15088: // 'some' '#' + case 15089: // 'stable' '#' + case 15090: // 'start' '#' + case 15093: // 'strict' '#' + case 15097: // 'text' '#' + case 15101: // 'to' '#' + case 15102: // 'treat' '#' + case 15103: // 'true' '#' + case 15104: // 'try' '#' + case 15105: // 'tumbling' '#' + case 15106: // 'type' '#' + case 15108: // 'union' '#' + case 15110: // 'unordered' '#' + case 15111: // 'updating' '#' + case 15114: // 'validate' '#' + case 15115: // 'value' '#' + case 15116: // 'variable' '#' + case 15117: // 'version' '#' + case 15120: // 'where' '#' + case 15121: // 'while' '#' + case 15124: // 'with' '#' + try_FunctionItemExpr(); + break; + case -10: + case 27929: // '{' ';' + try_BlockExpr(); + break; + case -11: + case 10009: // '{' NCName^Token + try_ObjectConstructor(); + break; + case 69: // '[' + try_ArrayConstructor(); + break; + case 283: // '{|' + try_JSONSimpleObjectUnion(); + break; + case -14: + break; + default: + try_Constructor(); + } + } + + function parse_JSONSimpleObjectUnion() + { + eventHandler.startNonterminal("JSONSimpleObjectUnion", e0); + shift(283); // '{|' + lookahead1W(273); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '|}' + if (l1 != 286) // '|}' + { + whitespace(); + parse_Expr(); + } + shift(286); // '|}' + eventHandler.endNonterminal("JSONSimpleObjectUnion", e0); + } + + function try_JSONSimpleObjectUnion() + { + shiftT(283); // '{|' + lookahead1W(273); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '|}' + if (l1 != 286) // '|}' + { + try_Expr(); + } + shiftT(286); // '|}' + } + + function parse_ObjectConstructor() + { + eventHandler.startNonterminal("ObjectConstructor", e0); + shift(281); // '{' + lookahead1W(276); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + if (l1 != 287) // '}' + { + whitespace(); + parse_PairConstructorList(); + } + shift(287); // '}' + eventHandler.endNonterminal("ObjectConstructor", e0); + } + + function try_ObjectConstructor() + { + shiftT(281); // '{' + lookahead1W(276); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + if (l1 != 287) // '}' + { + try_PairConstructorList(); + } + shiftT(287); // '}' + } + + function parse_PairConstructorList() + { + eventHandler.startNonterminal("PairConstructorList", e0); + parse_PairConstructor(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(267); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_PairConstructor(); + } + eventHandler.endNonterminal("PairConstructorList", e0); + } + + function try_PairConstructorList() + { + try_PairConstructor(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(267); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | + // '//' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_PairConstructor(); + } + } + + function parse_PairConstructor() + { + eventHandler.startNonterminal("PairConstructor", e0); + switch (l1) + { + case 78: // 'append' + lookahead2W(278); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ':' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 139: // 'for' + lookahead2W(187); // S^WS | '#' | '$' | '(' | '(:' | ':' | 'sliding' | 'tumbling' + break; + case 161: // 'insert' + lookahead2W(281); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | + // '/' | '//' | ':' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 177: // 'let' + lookahead2W(178); // S^WS | '#' | '$' | '(' | '(:' | ':' | 'score' + break; + case 187: // 'namespace' + lookahead2W(251); // NCName^Token | S^WS | '#' | '(' | '(:' | ':' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 220: // 'processing-instruction' + lookahead2W(247); // NCName^Token | S^WS | '#' | '(:' | ':' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 223: // 'replace' + lookahead2W(180); // S^WS | '#' | '(' | '(:' | ':' | 'node' | 'value' + break; + case 266: // 'validate' + lookahead2W(191); // S^WS | '#' | '(' | '(:' | ':' | 'lax' | 'strict' | 'type' | '{' + break; + case 83: // 'attribute' + case 122: // 'element' + lookahead2W(256); // EQName^Token | S^WS | '#' | '(:' | ':' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + break; + case 97: // 'comment' + case 249: // 'text' + lookahead2W(149); // S^WS | '#' | '(:' | ':' | '{' + break; + case 111: // 'delete' + case 222: // 'rename' + lookahead2W(261); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | ':' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + case 104: // 'copy' + case 130: // 'every' + case 240: // 'some' + lookahead2W(165); // S^WS | '#' | '$' | '(' | '(:' | ':' + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(208); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '.' | '/' | '//' | ':' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' + break; + case 120: // 'document' + case 206: // 'ordered' + case 256: // 'try' + case 262: // 'unordered' + lookahead2W(167); // S^WS | '#' | '(' | '(:' | ':' | '{' + break; + case 121: // 'document-node' + case 125: // 'empty-sequence' + case 167: // 'item' + case 188: // 'namespace-node' + case 194: // 'node' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + lookahead2W(96); // S^WS | '#' | '(:' | ':' + break; + case 71: // 'after' + case 73: // 'allowing' + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 76: // 'and' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 87: // 'break' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 94: // 'child' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 103: // 'continue' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 114: // 'descending' + case 119: // 'div' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 132: // 'except' + case 133: // 'exit' + case 134: // 'external' + case 136: // 'first' + case 137: // 'following' + case 138: // 'following-sibling' + case 142: // 'from' + case 143: // 'ft-option' + case 147: // 'function' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 154: // 'if' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 189: // 'ne' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 232: // 'score' + case 233: // 'select' + case 234: // 'self' + case 239: // 'sliding' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 248: // 'switch' + case 253: // 'to' + case 254: // 'treat' + case 257: // 'tumbling' + case 258: // 'type' + case 259: // 'typeswitch' + case 260: // 'union' + case 263: // 'updating' + case 267: // 'value' + case 268: // 'variable' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(144); // S^WS | '#' | '(' | '(:' | ':' + break; + default: + lk = l1; + } + if (lk == 25735 // 'false' ':' + || lk == 25797 // 'null' ':' + || lk == 25855) // 'true' ':' + { + lk = memoized(21, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_ExprSingle(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(21, e0, lk); + } + } + switch (lk) + { + case -2: + case 19: // NCName^Token + case 25671: // 'after' ':' + case 25673: // 'allowing' ':' + case 25674: // 'ancestor' ':' + case 25675: // 'ancestor-or-self' ':' + case 25676: // 'and' ':' + case 25678: // 'append' ':' + case 25680: // 'as' ':' + case 25681: // 'ascending' ':' + case 25682: // 'at' ':' + case 25683: // 'attribute' ':' + case 25684: // 'base-uri' ':' + case 25685: // 'before' ':' + case 25686: // 'boundary-space' ':' + case 25687: // 'break' ':' + case 25689: // 'case' ':' + case 25690: // 'cast' ':' + case 25691: // 'castable' ':' + case 25692: // 'catch' ':' + case 25694: // 'child' ':' + case 25695: // 'collation' ':' + case 25697: // 'comment' ':' + case 25698: // 'constraint' ':' + case 25699: // 'construction' ':' + case 25702: // 'context' ':' + case 25703: // 'continue' ':' + case 25704: // 'copy' ':' + case 25705: // 'copy-namespaces' ':' + case 25706: // 'count' ':' + case 25707: // 'decimal-format' ':' + case 25709: // 'declare' ':' + case 25710: // 'default' ':' + case 25711: // 'delete' ':' + case 25712: // 'descendant' ':' + case 25713: // 'descendant-or-self' ':' + case 25714: // 'descending' ':' + case 25719: // 'div' ':' + case 25720: // 'document' ':' + case 25721: // 'document-node' ':' + case 25722: // 'element' ':' + case 25723: // 'else' ':' + case 25724: // 'empty' ':' + case 25725: // 'empty-sequence' ':' + case 25726: // 'encoding' ':' + case 25727: // 'end' ':' + case 25729: // 'eq' ':' + case 25730: // 'every' ':' + case 25732: // 'except' ':' + case 25733: // 'exit' ':' + case 25734: // 'external' ':' + case 25736: // 'first' ':' + case 25737: // 'following' ':' + case 25738: // 'following-sibling' ':' + case 25739: // 'for' ':' + case 25742: // 'from' ':' + case 25743: // 'ft-option' ':' + case 25747: // 'function' ':' + case 25748: // 'ge' ':' + case 25750: // 'group' ':' + case 25752: // 'gt' ':' + case 25753: // 'idiv' ':' + case 25754: // 'if' ':' + case 25755: // 'import' ':' + case 25756: // 'in' ':' + case 25757: // 'index' ':' + case 25761: // 'insert' ':' + case 25762: // 'instance' ':' + case 25763: // 'integrity' ':' + case 25764: // 'intersect' ':' + case 25765: // 'into' ':' + case 25766: // 'is' ':' + case 25767: // 'item' ':' + case 25768: // 'json' ':' + case 25770: // 'jsoniq' ':' + case 25773: // 'last' ':' + case 25774: // 'lax' ':' + case 25775: // 'le' ':' + case 25777: // 'let' ':' + case 25779: // 'loop' ':' + case 25781: // 'lt' ':' + case 25783: // 'mod' ':' + case 25784: // 'modify' ':' + case 25785: // 'module' ':' + case 25787: // 'namespace' ':' + case 25788: // 'namespace-node' ':' + case 25789: // 'ne' ':' + case 25794: // 'node' ':' + case 25795: // 'nodes' ':' + case 25798: // 'object' ':' + case 25802: // 'only' ':' + case 25803: // 'option' ':' + case 25804: // 'or' ':' + case 25805: // 'order' ':' + case 25806: // 'ordered' ':' + case 25807: // 'ordering' ':' + case 25810: // 'parent' ':' + case 25816: // 'preceding' ':' + case 25817: // 'preceding-sibling' ':' + case 25820: // 'processing-instruction' ':' + case 25822: // 'rename' ':' + case 25823: // 'replace' ':' + case 25824: // 'return' ':' + case 25825: // 'returning' ':' + case 25826: // 'revalidation' ':' + case 25828: // 'satisfies' ':' + case 25829: // 'schema' ':' + case 25830: // 'schema-attribute' ':' + case 25831: // 'schema-element' ':' + case 25832: // 'score' ':' + case 25833: // 'select' ':' + case 25834: // 'self' ':' + case 25839: // 'sliding' ':' + case 25840: // 'some' ':' + case 25841: // 'stable' ':' + case 25842: // 'start' ':' + case 25845: // 'strict' ':' + case 25848: // 'switch' ':' + case 25849: // 'text' ':' + case 25853: // 'to' ':' + case 25854: // 'treat' ':' + case 25856: // 'try' ':' + case 25857: // 'tumbling' ':' + case 25858: // 'type' ':' + case 25859: // 'typeswitch' ':' + case 25860: // 'union' ':' + case 25862: // 'unordered' ':' + case 25863: // 'updating' ':' + case 25866: // 'validate' ':' + case 25867: // 'value' ':' + case 25868: // 'variable' ':' + case 25869: // 'version' ':' + case 25872: // 'where' ':' + case 25873: // 'while' ':' + case 25876: // 'with' ':' + parse_NCName(); + break; + default: + parse_ExprSingle(); + } + lookahead1W(26); // S^WS | '(:' | ':' + shift(50); // ':' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("PairConstructor", e0); + } + + function try_PairConstructor() + { + switch (l1) + { + case 78: // 'append' + lookahead2W(278); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | + // ':' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 139: // 'for' + lookahead2W(187); // S^WS | '#' | '$' | '(' | '(:' | ':' | 'sliding' | 'tumbling' + break; + case 161: // 'insert' + lookahead2W(281); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // NCName^Token | S^WS | '#' | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | + // '/' | '//' | ':' | '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + break; + case 177: // 'let' + lookahead2W(178); // S^WS | '#' | '$' | '(' | '(:' | ':' | 'score' + break; + case 187: // 'namespace' + lookahead2W(251); // NCName^Token | S^WS | '#' | '(' | '(:' | ':' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 220: // 'processing-instruction' + lookahead2W(247); // NCName^Token | S^WS | '#' | '(:' | ':' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | + // 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | + // 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' + break; + case 223: // 'replace' + lookahead2W(180); // S^WS | '#' | '(' | '(:' | ':' | 'node' | 'value' + break; + case 266: // 'validate' + lookahead2W(191); // S^WS | '#' | '(' | '(:' | ':' | 'lax' | 'strict' | 'type' | '{' + break; + case 83: // 'attribute' + case 122: // 'element' + lookahead2W(256); // EQName^Token | S^WS | '#' | '(:' | ':' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | '{' + break; + case 97: // 'comment' + case 249: // 'text' + lookahead2W(149); // S^WS | '#' | '(:' | ':' | '{' + break; + case 111: // 'delete' + case 222: // 'rename' + lookahead2W(261); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '#' | '$' | '$$' | '%' | '(' | '(:' | ':' | '<' | '<!--' | '<?' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'false' | 'first' | 'following' | 'following-sibling' | + // 'for' | 'from' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'jsoniq' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'null' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'select' | 'self' | 'sliding' | + // 'some' | 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | + // 'to' | 'treat' | 'true' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | '{' | '{|' + break; + case 104: // 'copy' + case 130: // 'every' + case 240: // 'some' + lookahead2W(165); // S^WS | '#' | '$' | '(' | '(:' | ':' + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(208); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '.' | '/' | '//' | ':' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' + break; + case 120: // 'document' + case 206: // 'ordered' + case 256: // 'try' + case 262: // 'unordered' + lookahead2W(167); // S^WS | '#' | '(' | '(:' | ':' | '{' + break; + case 121: // 'document-node' + case 125: // 'empty-sequence' + case 167: // 'item' + case 188: // 'namespace-node' + case 194: // 'node' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + lookahead2W(96); // S^WS | '#' | '(:' | ':' + break; + case 71: // 'after' + case 73: // 'allowing' + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 76: // 'and' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 87: // 'break' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 94: // 'child' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 103: // 'continue' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 114: // 'descending' + case 119: // 'div' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 132: // 'except' + case 133: // 'exit' + case 134: // 'external' + case 136: // 'first' + case 137: // 'following' + case 138: // 'following-sibling' + case 142: // 'from' + case 143: // 'ft-option' + case 147: // 'function' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 154: // 'if' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 189: // 'ne' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 232: // 'score' + case 233: // 'select' + case 234: // 'self' + case 239: // 'sliding' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 248: // 'switch' + case 253: // 'to' + case 254: // 'treat' + case 257: // 'tumbling' + case 258: // 'type' + case 259: // 'typeswitch' + case 260: // 'union' + case 263: // 'updating' + case 267: // 'value' + case 268: // 'variable' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(144); // S^WS | '#' | '(' | '(:' | ':' + break; + default: + lk = l1; + } + if (lk == 25735 // 'false' ':' + || lk == 25797 // 'null' ':' + || lk == 25855) // 'true' ':' + { + lk = memoized(21, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_ExprSingle(); + memoize(21, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(21, e0A, -2); + } + } + } + switch (lk) + { + case -2: + case 19: // NCName^Token + case 25671: // 'after' ':' + case 25673: // 'allowing' ':' + case 25674: // 'ancestor' ':' + case 25675: // 'ancestor-or-self' ':' + case 25676: // 'and' ':' + case 25678: // 'append' ':' + case 25680: // 'as' ':' + case 25681: // 'ascending' ':' + case 25682: // 'at' ':' + case 25683: // 'attribute' ':' + case 25684: // 'base-uri' ':' + case 25685: // 'before' ':' + case 25686: // 'boundary-space' ':' + case 25687: // 'break' ':' + case 25689: // 'case' ':' + case 25690: // 'cast' ':' + case 25691: // 'castable' ':' + case 25692: // 'catch' ':' + case 25694: // 'child' ':' + case 25695: // 'collation' ':' + case 25697: // 'comment' ':' + case 25698: // 'constraint' ':' + case 25699: // 'construction' ':' + case 25702: // 'context' ':' + case 25703: // 'continue' ':' + case 25704: // 'copy' ':' + case 25705: // 'copy-namespaces' ':' + case 25706: // 'count' ':' + case 25707: // 'decimal-format' ':' + case 25709: // 'declare' ':' + case 25710: // 'default' ':' + case 25711: // 'delete' ':' + case 25712: // 'descendant' ':' + case 25713: // 'descendant-or-self' ':' + case 25714: // 'descending' ':' + case 25719: // 'div' ':' + case 25720: // 'document' ':' + case 25721: // 'document-node' ':' + case 25722: // 'element' ':' + case 25723: // 'else' ':' + case 25724: // 'empty' ':' + case 25725: // 'empty-sequence' ':' + case 25726: // 'encoding' ':' + case 25727: // 'end' ':' + case 25729: // 'eq' ':' + case 25730: // 'every' ':' + case 25732: // 'except' ':' + case 25733: // 'exit' ':' + case 25734: // 'external' ':' + case 25736: // 'first' ':' + case 25737: // 'following' ':' + case 25738: // 'following-sibling' ':' + case 25739: // 'for' ':' + case 25742: // 'from' ':' + case 25743: // 'ft-option' ':' + case 25747: // 'function' ':' + case 25748: // 'ge' ':' + case 25750: // 'group' ':' + case 25752: // 'gt' ':' + case 25753: // 'idiv' ':' + case 25754: // 'if' ':' + case 25755: // 'import' ':' + case 25756: // 'in' ':' + case 25757: // 'index' ':' + case 25761: // 'insert' ':' + case 25762: // 'instance' ':' + case 25763: // 'integrity' ':' + case 25764: // 'intersect' ':' + case 25765: // 'into' ':' + case 25766: // 'is' ':' + case 25767: // 'item' ':' + case 25768: // 'json' ':' + case 25770: // 'jsoniq' ':' + case 25773: // 'last' ':' + case 25774: // 'lax' ':' + case 25775: // 'le' ':' + case 25777: // 'let' ':' + case 25779: // 'loop' ':' + case 25781: // 'lt' ':' + case 25783: // 'mod' ':' + case 25784: // 'modify' ':' + case 25785: // 'module' ':' + case 25787: // 'namespace' ':' + case 25788: // 'namespace-node' ':' + case 25789: // 'ne' ':' + case 25794: // 'node' ':' + case 25795: // 'nodes' ':' + case 25798: // 'object' ':' + case 25802: // 'only' ':' + case 25803: // 'option' ':' + case 25804: // 'or' ':' + case 25805: // 'order' ':' + case 25806: // 'ordered' ':' + case 25807: // 'ordering' ':' + case 25810: // 'parent' ':' + case 25816: // 'preceding' ':' + case 25817: // 'preceding-sibling' ':' + case 25820: // 'processing-instruction' ':' + case 25822: // 'rename' ':' + case 25823: // 'replace' ':' + case 25824: // 'return' ':' + case 25825: // 'returning' ':' + case 25826: // 'revalidation' ':' + case 25828: // 'satisfies' ':' + case 25829: // 'schema' ':' + case 25830: // 'schema-attribute' ':' + case 25831: // 'schema-element' ':' + case 25832: // 'score' ':' + case 25833: // 'select' ':' + case 25834: // 'self' ':' + case 25839: // 'sliding' ':' + case 25840: // 'some' ':' + case 25841: // 'stable' ':' + case 25842: // 'start' ':' + case 25845: // 'strict' ':' + case 25848: // 'switch' ':' + case 25849: // 'text' ':' + case 25853: // 'to' ':' + case 25854: // 'treat' ':' + case 25856: // 'try' ':' + case 25857: // 'tumbling' ':' + case 25858: // 'type' ':' + case 25859: // 'typeswitch' ':' + case 25860: // 'union' ':' + case 25862: // 'unordered' ':' + case 25863: // 'updating' ':' + case 25866: // 'validate' ':' + case 25867: // 'value' ':' + case 25868: // 'variable' ':' + case 25869: // 'version' ':' + case 25872: // 'where' ':' + case 25873: // 'while' ':' + case 25876: // 'with' ':' + try_NCName(); + break; + case -3: + break; + default: + try_ExprSingle(); + } + lookahead1W(26); // S^WS | '(:' | ':' + shiftT(50); // ':' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'false' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'from' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + try_ExprSingle(); + } + + function parse_ArrayConstructor() + { + eventHandler.startNonterminal("ArrayConstructor", e0); + shift(69); // '[' + lookahead1W(272); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + if (l1 != 70) // ']' + { + whitespace(); + parse_Expr(); + } + shift(70); // ']' + eventHandler.endNonterminal("ArrayConstructor", e0); + } + + function try_ArrayConstructor() + { + shiftT(69); // '[' + lookahead1W(272); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | '<' | + // '<!--' | '<?' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' + if (l1 != 70) // ']' + { + try_Expr(); + } + shiftT(70); // ']' + } + + function parse_BlockExpr() + { + eventHandler.startNonterminal("BlockExpr", e0); + shift(281); // '{' + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + whitespace(); + parse_StatementsAndOptionalExpr(); + shift(287); // '}' + eventHandler.endNonterminal("BlockExpr", e0); + } + + function try_BlockExpr() + { + shiftT(281); // '{' + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + try_StatementsAndOptionalExpr(); + shiftT(287); // '}' + } + + function parse_FunctionDecl() + { + eventHandler.startNonterminal("FunctionDecl", e0); + shift(147); // 'function' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_EQName(); + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(98); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + whitespace(); + parse_ParamList(); + } + shift(38); // ')' + lookahead1W(158); // S^WS | '(:' | 'as' | 'external' | '{' + if (l1 == 80) // 'as' + { + whitespace(); + parse_ReturnType(); + } + lookahead1W(122); // S^WS | '(:' | 'external' | '{' + switch (l1) + { + case 281: // '{' + shift(281); // '{' + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '$$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<!--' | '<?' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'not' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // '{' | '{|' | '}' + whitespace(); + parse_StatementsAndOptionalExpr(); + shift(287); // '}' + break; + default: + shift(134); // 'external' + } + eventHandler.endNonterminal("FunctionDecl", e0); + } + + function parse_ReturnType() + { + eventHandler.startNonterminal("ReturnType", e0); + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'false' | + // 'first' | 'following' | 'following-sibling' | 'for' | 'from' | 'ft-option' | + // 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | + // 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | + // 'json' | 'json-item' | 'jsoniq' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | + // 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | + // 'nodes' | 'null' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'select' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | + // 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'true' | + // 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("ReturnType", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(JSONiqParser.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = l2; if (l1 != 0) { + b1 = b2; e1 = e2; l2 = 0; } + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function shiftT(t) + { + if (l1 == t) + { + b0 = b1; e0 = e1; l1 = l2; if (l1 != 0) { + b1 = b2; e1 = e2; l2 = 0; } + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function skip(code) + { + var b0W = b0; var e0W = e0; var l1W = l1; + var b1W = b1; var e1W = e1; + + l1 = code; b1 = begin; e1 = end; + l2 = 0; + + try_Whitespace(); + + b0 = b0W; e0 = e0W; l1 = l1W; if (l1 != 0) { + b1 = b1W; e1 = e1W; } + } + + function whitespace() + { + if (e0 != b1) + { + eventHandler.whitespace(e0, b1); + e0 = b1; + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 22) // S^WS + { + if (code != 37) // '(:' + { + break; + } + skip(code); + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead2W(set) + { + if (l2 == 0) + { + l2 = matchW(set); + b2 = begin; + e2 = end; + } + lk = (l2 << 9) | l1; + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function lookahead2(set) + { + if (l2 == 0) + { + l2 = match(set); + b2 = begin; + e2 = end; + } + lk = (l2 << 9) | l1; + } + + function error(b, e, s, l, t) + { + if (e >= ex) + { + bx = b; + ex = e; + sx = s; + lx = l; + tx = t; + } + throw new self.ParseException(bx, ex, sx, lx, tx); + } + + var lk, b0, e0; + var l1, b1, e1; + var l2, b2, e2; + var bx, ex, sx, lx, tx; + var eventHandler; + var memo; + + function memoize(i, e, v) + { + memo[(e << 5) + i] = v; + } + + function memoized(i, e) + { + var v = memo[(e << 5) + i]; + return typeof v != "undefined" ? v : 0; + } + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = JSONiqParser.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 8191; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = JSONiqParser.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = JSONiqParser.MAP1[(c0 & 15) + JSONiqParser.MAP1[(c1 & 31) + JSONiqParser.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (JSONiqParser.MAP2[m] > c0) hi = m - 1; + else if (JSONiqParser.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = JSONiqParser.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 13) + code - 1; + code = JSONiqParser.TRANSITION[(i0 & 31) + JSONiqParser.TRANSITION[i0 >> 5]]; + + if (code > 8191) + { + result = code; + code &= 8191; + end = current; + } + } + + result >>= 13; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +JSONiqParser.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : JSONiqParser.INITIAL[tokenSetId] & 8191; + for (var i = 0; i < 289; i += 32) + { + var j = i; + var i0 = (i >> 5) * 4235 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = JSONiqParser.EXPECTED[(i0 & 3) + JSONiqParser.EXPECTED[(i1 & 3) + JSONiqParser.EXPECTED[(i2 & 15) + JSONiqParser.EXPECTED[i2 >> 4]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(JSONiqParser.TOKEN[j]); + } + } + } + return set; +}; + +JSONiqParser.MAP0 = +[ + /* 0 */ 71, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, + /* 36 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, + /* 64 */ 24, 25, 26, 27, 28, 29, 26, 30, 30, 30, 30, 30, 31, 32, 33, 30, 30, 34, 30, 30, 35, 30, 30, 30, 36, 30, 30, + /* 91 */ 37, 38, 39, 40, 30, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + /* 118 */ 62, 63, 64, 65, 66, 67, 68, 69, 40, 40 +]; + +JSONiqParser.MAP1 = +[ + /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, + /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 105 */ 214, 214, 214, 247, 261, 277, 293, 309, 355, 371, 387, 423, 423, 423, 415, 339, 331, 339, 331, 339, 339, + /* 126 */ 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 440, 440, 440, 440, 440, 440, 440, + /* 147 */ 324, 339, 339, 339, 339, 339, 339, 339, 339, 401, 423, 423, 424, 422, 423, 423, 339, 339, 339, 339, 339, + /* 168 */ 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 423, 423, 423, 423, 423, 423, 423, 423, + /* 189 */ 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + /* 210 */ 423, 423, 423, 338, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + /* 231 */ 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 423, 71, 0, 0, 0, 0, 0, 0, 0, 0, + /* 256 */ 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + /* 290 */ 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 26, 30, + /* 317 */ 30, 30, 30, 30, 31, 32, 33, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 40, 30, 30, 30, 30, 30, + /* 344 */ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 34, 30, 30, 35, 30, 30, 30, 36, 30, 30, 37, 38, 39, 40, 30, + /* 371 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + /* 398 */ 67, 68, 69, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 30, 40, 40, 40, 40, 40, 40, 40, 70, 40, 40, + /* 425 */ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + /* 452 */ 70, 70, 70, 70 +]; + +JSONiqParser.MAP2 = +[ + /* 0 */ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 40, 30, 40, 30, 30, + /* 17 */ 40 +]; + +JSONiqParser.INITIAL = +[ + /* 0 */ 1, 24578, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + /* 28 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + /* 55 */ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + /* 82 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + /* 107 */ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + /* 128 */ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + /* 149 */ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + /* 170 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + /* 191 */ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + /* 212 */ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + /* 233 */ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + /* 254 */ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + /* 275 */ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 +]; + +JSONiqParser.TRANSITION = +[ + /* 0 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 30 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 45 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 60 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 75 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 90 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 105 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 120 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 135 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 150 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 165 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 180 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 195 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 210 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 225 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 240 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 255 */ 32640, 18432, 18508, 18512, 18508, 18508, 18471, 18503, 18452, 18508, 18544, 32640, 25253, 32640, 72986, + /* 270 */ 32640, 32640, 18907, 32640, 23058, 21807, 31154, 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22037, + /* 285 */ 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, + /* 300 */ 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, + /* 315 */ 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, + /* 330 */ 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, + /* 345 */ 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, + /* 360 */ 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, + /* 375 */ 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, + /* 390 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 405 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 420 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 435 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 450 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 465 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 480 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 495 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 510 */ 32640, 32640, 22530, 32640, 61740, 32640, 32640, 53140, 22565, 22594, 54694, 22641, 32640, 25253, 32640, + /* 525 */ 22707, 32640, 32640, 18907, 32640, 40804, 19219, 31154, 19779, 32640, 18612, 18649, 18757, 18789, 18959, + /* 540 */ 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, + /* 555 */ 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, + /* 570 */ 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, + /* 585 */ 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, + /* 600 */ 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, + /* 615 */ 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, + /* 630 */ 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, + /* 645 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 660 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 675 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 690 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 705 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 720 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 735 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 750 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 765 */ 32640, 32640, 32640, 22757, 32640, 23442, 32640, 20728, 22822, 22912, 62853, 22949, 23023, 32640, 25253, + /* 780 */ 37379, 72986, 32640, 32640, 18907, 32640, 23058, 40482, 31154, 19779, 32640, 18612, 18649, 18757, 18789, + /* 795 */ 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, + /* 810 */ 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, + /* 825 */ 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, + /* 840 */ 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, + /* 855 */ 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, + /* 870 */ 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, 21431, + /* 885 */ 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, + /* 900 */ 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 915 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 930 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 945 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 960 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 975 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 990 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1005 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1020 */ 32640, 32640, 32640, 32640, 23090, 32640, 70756, 57235, 23625, 57174, 23143, 53889, 57205, 23194, 32640, + /* 1035 */ 44590, 57237, 72986, 32640, 32640, 18907, 32640, 23058, 18925, 31154, 19779, 32640, 18612, 18649, 18757, + /* 1050 */ 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, 19041, + /* 1065 */ 62458, 19134, 40819, 22132, 19073, 46732, 23294, 19074, 46733, 19106, 19193, 40822, 19438, 66570, 19251, + /* 1080 */ 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, 19422, + /* 1095 */ 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, 19969, + /* 1110 */ 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, + /* 1125 */ 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, + /* 1140 */ 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, + /* 1155 */ 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1170 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1185 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1200 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1215 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1230 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1245 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1260 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1275 */ 32640, 32640, 32640, 32640, 32640, 23361, 32640, 61740, 23437, 23807, 23824, 22912, 35136, 23474, 23607, + /* 1290 */ 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 40461, 21807, 31154, 19779, 32640, 18612, 18649, + /* 1305 */ 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, + /* 1320 */ 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, 66570, + /* 1335 */ 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, + /* 1350 */ 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, + /* 1365 */ 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, + /* 1380 */ 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, + /* 1395 */ 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, + /* 1410 */ 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1425 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1440 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1455 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1470 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1485 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1500 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1515 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1530 */ 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, 57592, 32640, 53140, 23657, 43708, 23704, + /* 1545 */ 23789, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, 31154, 19779, 32640, 18612, + /* 1560 */ 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, + /* 1575 */ 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, + /* 1590 */ 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, + /* 1605 */ 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, + /* 1620 */ 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, + /* 1635 */ 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, + /* 1650 */ 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, + /* 1665 */ 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1680 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1695 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1710 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1725 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1740 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1755 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1770 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1785 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, 32640, 32640, 39259, 23856, 32640, + /* 1800 */ 32640, 23893, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, 31154, 19779, 32640, + /* 1815 */ 18612, 18649, 18757, 18789, 18959, 73053, 22069, 23965, 22057, 18887, 18787, 18957, 18991, 36451, 32640, + /* 1830 */ 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, + /* 1845 */ 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, + /* 1860 */ 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, + /* 1875 */ 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, + /* 1890 */ 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, + /* 1905 */ 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, + /* 1920 */ 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1935 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1950 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1965 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1980 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 1995 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2010 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2025 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2040 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 24031, 32640, 23861, 32640, 22776, 24082, 22912, + /* 2055 */ 56240, 24206, 24329, 32640, 25253, 32640, 24379, 32640, 32640, 18907, 32640, 23058, 57529, 31154, 19779, + /* 2070 */ 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, + /* 2085 */ 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, + /* 2100 */ 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, + /* 2115 */ 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, + /* 2130 */ 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, + /* 2145 */ 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, + /* 2160 */ 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, + /* 2175 */ 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2190 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2205 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2220 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2235 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2250 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2265 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2280 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2295 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 24415, 24449, 24453, 24440, 24534, 24485, + /* 2310 */ 24515, 24566, 24596, 24628, 32640, 32105, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, 31154, + /* 2325 */ 45903, 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, + /* 2340 */ 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, + /* 2355 */ 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, + /* 2370 */ 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, + /* 2385 */ 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, + /* 2400 */ 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, + /* 2415 */ 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, + /* 2430 */ 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2445 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2460 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2475 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2490 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2505 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2520 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2535 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2550 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 24678, 32640, 61740, 24746, 48361, + /* 2565 */ 53140, 24789, 24808, 24825, 24857, 32640, 27397, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, + /* 2580 */ 31154, 45563, 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, + /* 2595 */ 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, + /* 2610 */ 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, + /* 2625 */ 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, + /* 2640 */ 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, + /* 2655 */ 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, + /* 2670 */ 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, + /* 2685 */ 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2700 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2715 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2730 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2745 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2760 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2775 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2790 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2805 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 24907, 32640, 61740, 32640, + /* 2820 */ 32640, 52064, 24984, 25013, 61799, 25045, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, + /* 2835 */ 21807, 31154, 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 25095, 22057, 18887, 18787, + /* 2850 */ 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, + /* 2865 */ 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, + /* 2880 */ 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, + /* 2895 */ 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, + /* 2910 */ 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, + /* 2925 */ 21094, 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, + /* 2940 */ 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2955 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2970 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 2985 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3000 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3015 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3030 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3045 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3060 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, + /* 3075 */ 32640, 32640, 54034, 25151, 25188, 25171, 25235, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, + /* 3090 */ 23058, 21807, 31154, 19779, 32640, 25302, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, + /* 3105 */ 18787, 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, + /* 3120 */ 19074, 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, + /* 3135 */ 19538, 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, + /* 3150 */ 30851, 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, + /* 3165 */ 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, + /* 3180 */ 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, + /* 3195 */ 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, + /* 3210 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3225 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3240 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3255 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3270 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3285 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3300 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3315 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 25340, 32640, + /* 3330 */ 61740, 24702, 35413, 25353, 25385, 25402, 58363, 25449, 32640, 25253, 32640, 72986, 32640, 32640, 18907, + /* 3345 */ 32640, 23058, 21807, 31154, 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, + /* 3360 */ 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, + /* 3375 */ 21342, 19074, 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, + /* 3390 */ 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, + /* 3405 */ 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, + /* 3420 */ 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, + /* 3435 */ 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, + /* 3450 */ 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, + /* 3465 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3480 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3495 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3510 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3525 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3540 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3555 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3570 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 25499, + /* 3585 */ 32640, 61740, 32640, 32640, 53140, 25538, 25575, 25558, 25622, 32640, 25253, 32640, 72986, 32640, 32640, + /* 3600 */ 49347, 54782, 64809, 35297, 64457, 32024, 25672, 25724, 32640, 25308, 42746, 72012, 48724, 25775, 59604, + /* 3615 */ 63895, 70062, 53329, 26051, 44572, 32640, 32640, 53365, 69246, 32640, 64131, 72012, 72012, 25809, 25776, + /* 3630 */ 25776, 25844, 25983, 25984, 26051, 26051, 26018, 36217, 25878, 32640, 32640, 25912, 56403, 72012, 72012, + /* 3645 */ 47453, 69896, 25776, 64787, 25947, 25982, 26472, 26016, 26050, 68602, 32640, 32640, 21278, 65491, 41507, + /* 3660 */ 72012, 47768, 59999, 36922, 55439, 25983, 53287, 66001, 26051, 68608, 32640, 35129, 65495, 72012, 26084, + /* 3675 */ 25776, 26132, 25983, 66375, 26051, 26181, 26227, 36550, 62167, 71378, 26264, 56947, 53286, 26299, 56814, + /* 3690 */ 66968, 50229, 37146, 26336, 26407, 64681, 37193, 26609, 67516, 26450, 26504, 26590, 60773, 47253, 26654, + /* 3705 */ 26722, 26771, 49912, 26461, 51539, 26820, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, + /* 3720 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3735 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3750 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3765 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3780 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3795 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3810 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3825 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3840 */ 22530, 32640, 61740, 32640, 32640, 29428, 26976, 69042, 27027, 27107, 32640, 25253, 32640, 27176, 32640, + /* 3855 */ 32640, 18907, 32640, 35800, 21807, 31154, 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, + /* 3870 */ 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, + /* 3885 */ 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, + /* 3900 */ 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, + /* 3915 */ 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, + /* 3930 */ 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, + /* 3945 */ 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, + /* 3960 */ 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, + /* 3975 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 3990 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4005 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4020 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4035 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4050 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4065 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4080 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4095 */ 32640, 27212, 32640, 18617, 32640, 32640, 53140, 27264, 27332, 41428, 27379, 32640, 25253, 32640, 27446, + /* 4110 */ 36386, 32640, 18907, 32640, 23058, 40482, 31154, 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22037, + /* 4125 */ 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, + /* 4140 */ 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, + /* 4155 */ 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, + /* 4170 */ 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, + /* 4185 */ 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, + /* 4200 */ 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, + /* 4215 */ 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, + /* 4230 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4245 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4260 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4275 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4290 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4305 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4320 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4335 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4350 */ 32640, 32640, 27496, 32640, 61740, 32640, 32640, 45704, 22912, 32640, 27545, 27614, 32640, 25253, 32640, + /* 4365 */ 27679, 32640, 32640, 49347, 54782, 51035, 35297, 32640, 32024, 32640, 27715, 32640, 25308, 72012, 72012, + /* 4380 */ 48724, 25776, 59604, 25983, 61672, 26051, 26051, 49853, 32640, 32640, 70980, 32640, 32640, 64131, 72012, + /* 4395 */ 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 40010, 32640, 32640, 25692, 32640, + /* 4410 */ 68393, 72012, 72012, 27753, 25776, 25776, 39830, 25983, 25983, 39566, 26051, 26051, 43098, 32640, 32640, + /* 4425 */ 32640, 65491, 72012, 72012, 27795, 25776, 60349, 39842, 25983, 53287, 26051, 26051, 70527, 32640, 32640, + /* 4440 */ 65495, 72012, 46827, 25776, 55996, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, + /* 4455 */ 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, + /* 4470 */ 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, + /* 4485 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4500 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4515 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4530 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4545 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4560 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4575 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4590 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4605 */ 32640, 32640, 32640, 27836, 32640, 26232, 27985, 34535, 60068, 27930, 27958, 60099, 28032, 32640, 32366, + /* 4620 */ 32640, 72986, 32640, 32640, 73079, 29194, 30273, 28620, 31154, 44986, 32640, 18612, 18649, 18757, 18789, + /* 4635 */ 18959, 32755, 28084, 30249, 28403, 29274, 28141, 28173, 28885, 36451, 32640, 24875, 69179, 19041, 62458, + /* 4650 */ 19134, 40819, 21681, 28259, 30189, 28317, 28376, 29214, 30382, 28201, 30288, 28732, 66570, 19251, 21244, + /* 4665 */ 41014, 19334, 19366, 19398, 28435, 28285, 28497, 28109, 28529, 28561, 28593, 28652, 28684, 28716, 19661, + /* 4680 */ 19735, 19811, 19878, 19910, 19942, 28764, 21709, 32781, 28826, 28935, 28991, 29023, 29361, 30055, 20090, + /* 4695 */ 20138, 20211, 20265, 29171, 28465, 29246, 28344, 29334, 29302, 29393, 20579, 20709, 20774, 29460, 29082, + /* 4710 */ 29111, 29139, 29492, 29611, 20949, 21030, 29555, 29643, 29675, 28857, 29707, 21310, 29804, 29832, 29864, + /* 4725 */ 29896, 29992, 30024, 30105, 30173, 28959, 30221, 29583, 29053, 28794, 28227, 30320, 30352, 29523, 30414, + /* 4740 */ 30442, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4755 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4770 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4785 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4800 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4815 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4830 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4845 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 4860 */ 32640, 32640, 32640, 32640, 30485, 32640, 61740, 55714, 40332, 67370, 30532, 30549, 30500, 30596, 32640, + /* 4875 */ 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, 31154, 19779, 32640, 18612, 18649, 18757, + /* 4890 */ 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 25063, 69179, 19041, + /* 4905 */ 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 62487, 66570, 19251, + /* 4920 */ 64424, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, 30661, + /* 4935 */ 19661, 19735, 19811, 19878, 19910, 19942, 30758, 30851, 33683, 30826, 30858, 20058, 19907, 21927, 19969, + /* 4950 */ 20090, 20138, 20211, 20265, 30890, 63521, 30967, 63518, 20488, 20547, 20291, 20579, 20709, 20774, 20821, + /* 4965 */ 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, 21374, + /* 4980 */ 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, 22427, + /* 4995 */ 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5010 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5025 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5040 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5055 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5070 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5085 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5100 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5115 */ 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, 32640, 32640, 32640, 31025, 31042, 31089, 31121, + /* 5130 */ 32640, 25253, 32640, 72986, 41921, 32640, 18907, 32640, 23058, 19161, 31154, 19779, 32640, 18612, 18649, + /* 5145 */ 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, 69179, + /* 5160 */ 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, 66570, + /* 5175 */ 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, 19629, + /* 5190 */ 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, 21927, + /* 5205 */ 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, 20774, + /* 5220 */ 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, 21452, + /* 5235 */ 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, 22281, + /* 5250 */ 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5265 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5280 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5295 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5310 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5325 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5340 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5355 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5370 */ 32640, 32640, 32640, 32640, 32640, 32640, 31186, 32640, 61740, 32640, 32640, 53140, 31304, 31321, 61422, + /* 5385 */ 31368, 32640, 25253, 32640, 72986, 38336, 32640, 18907, 32640, 23058, 19597, 31154, 19779, 32640, 18612, + /* 5400 */ 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, 24875, + /* 5415 */ 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, 19438, + /* 5430 */ 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, 19359, + /* 5445 */ 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, 19907, + /* 5460 */ 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, 20709, + /* 5475 */ 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, 21310, + /* 5490 */ 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, 22249, + /* 5505 */ 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5520 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5535 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5550 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5565 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5580 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5595 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5610 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5625 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31436, 32640, 22917, 32640, 32640, 53140, 31488, 31505, + /* 5640 */ 63455, 31552, 32640, 25253, 32640, 72986, 23911, 32640, 18907, 32640, 23058, 20233, 31154, 19779, 32640, + /* 5655 */ 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, + /* 5670 */ 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, + /* 5685 */ 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, + /* 5700 */ 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, + /* 5715 */ 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, + /* 5730 */ 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, + /* 5745 */ 21310, 21452, 21374, 21431, 21484, 21618, 21650, 31603, 21802, 23057, 21839, 21899, 21959, 22101, 21154, + /* 5760 */ 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5775 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5790 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5805 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5820 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5835 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5850 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5865 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 5880 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31688, 32640, 61740, 27887, 32640, 57839, 22912, + /* 5895 */ 31734, 24347, 31775, 32640, 25253, 32640, 31840, 32640, 32640, 18907, 32640, 57508, 20515, 31154, 19779, + /* 5910 */ 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, + /* 5925 */ 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, + /* 5940 */ 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, + /* 5955 */ 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, + /* 5970 */ 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, + /* 5985 */ 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, + /* 6000 */ 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, + /* 6015 */ 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6030 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6045 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6060 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6075 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6090 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6105 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6120 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6135 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, 32640, 32640, 53140, + /* 6150 */ 22912, 32640, 62571, 27379, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, 31154, + /* 6165 */ 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, + /* 6180 */ 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, + /* 6195 */ 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, + /* 6210 */ 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, + /* 6225 */ 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, + /* 6240 */ 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, + /* 6255 */ 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, + /* 6270 */ 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6285 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6300 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6315 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6330 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6345 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6360 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6375 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6390 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, 72814, 32640, 32640, + /* 6405 */ 53140, 22912, 36567, 70299, 34240, 32640, 25253, 32640, 32640, 32640, 32640, 49347, 54782, 64809, 51195, + /* 6420 */ 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, 26051, 26051, + /* 6435 */ 53000, 32640, 32640, 25682, 32640, 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, + /* 6450 */ 26051, 26051, 26018, 34467, 32640, 32640, 25692, 32640, 68393, 72012, 72012, 33962, 25776, 25776, 55427, + /* 6465 */ 25983, 25983, 39566, 26051, 26051, 43098, 32640, 32640, 46497, 65491, 72012, 72012, 51277, 25776, 46932, + /* 6480 */ 39842, 25983, 53287, 26051, 26051, 70527, 32640, 32640, 65495, 72012, 46827, 25776, 55996, 25983, 53288, + /* 6495 */ 26051, 37187, 32640, 52315, 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, + /* 6510 */ 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, + /* 6525 */ 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6540 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6555 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6570 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6585 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6600 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6615 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6630 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6645 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, 72814, 32640, + /* 6660 */ 32640, 53140, 22912, 36567, 70299, 34240, 32640, 25253, 32640, 32640, 32640, 32640, 49347, 54782, 64809, + /* 6675 */ 51195, 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, 26051, + /* 6690 */ 26051, 53000, 32640, 32640, 25682, 32640, 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, + /* 6705 */ 25984, 26051, 26051, 26018, 34467, 32640, 32640, 25692, 32640, 68393, 72012, 72012, 33962, 25776, 25776, + /* 6720 */ 55427, 25983, 25983, 39566, 26051, 26051, 43098, 32640, 32640, 32640, 65491, 72012, 72012, 51277, 25776, + /* 6735 */ 46932, 39842, 25983, 53287, 26051, 26051, 70527, 32640, 32640, 65495, 72012, 46827, 25776, 55996, 25983, + /* 6750 */ 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, + /* 6765 */ 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, + /* 6780 */ 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6795 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6810 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6825 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6840 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6855 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6870 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6885 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 6900 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, 72814, + /* 6915 */ 32640, 32640, 53140, 22912, 36567, 70299, 34240, 32640, 25253, 32640, 32640, 32640, 32640, 49347, 54782, + /* 6930 */ 64809, 51195, 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, + /* 6945 */ 26051, 26051, 53000, 32640, 32640, 25682, 32497, 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, + /* 6960 */ 25983, 25984, 26051, 26051, 26018, 34467, 32640, 32640, 25692, 32640, 68393, 72012, 72012, 33962, 25776, + /* 6975 */ 25776, 55427, 25983, 25983, 39566, 26051, 26051, 43098, 32640, 32640, 32640, 65491, 72012, 72012, 51277, + /* 6990 */ 25776, 46932, 39842, 25983, 53287, 26051, 26051, 70527, 32640, 32640, 65495, 72012, 46827, 25776, 55996, + /* 7005 */ 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, + /* 7020 */ 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, + /* 7035 */ 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, + /* 7050 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7065 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7080 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7095 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7110 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7125 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7140 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7155 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, + /* 7170 */ 72814, 32640, 32640, 53140, 22912, 36567, 70299, 34240, 32640, 25253, 32640, 32640, 32640, 32640, 49347, + /* 7185 */ 54782, 64809, 51195, 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, + /* 7200 */ 61672, 26051, 26051, 53000, 32640, 32640, 25682, 32640, 32640, 64131, 72012, 72012, 25809, 25776, 25776, + /* 7215 */ 25844, 25983, 25984, 26051, 26051, 26018, 34467, 32640, 32640, 20179, 32640, 68393, 72012, 72012, 33962, + /* 7230 */ 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, 43098, 32640, 32640, 32640, 65491, 72012, 72012, + /* 7245 */ 51277, 25776, 46932, 39842, 25983, 53287, 26051, 26051, 70527, 32640, 32640, 65495, 72012, 46827, 25776, + /* 7260 */ 55996, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, + /* 7275 */ 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, + /* 7290 */ 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, + /* 7305 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7320 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7335 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7350 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7365 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7380 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7395 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7410 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, + /* 7425 */ 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, 34240, 32640, 25253, 32640, 31980, 32640, 32640, + /* 7440 */ 49347, 54782, 64809, 51195, 32640, 32024, 32640, 31979, 32640, 25308, 72012, 72012, 31942, 25776, 62010, + /* 7455 */ 25983, 61672, 26051, 26051, 53000, 32640, 32640, 25682, 32640, 32640, 64131, 72012, 72012, 25809, 25776, + /* 7470 */ 25776, 25844, 25983, 25984, 26051, 26051, 26018, 34467, 32640, 32640, 25692, 32640, 68393, 72012, 72012, + /* 7485 */ 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, 43098, 32640, 32640, 32640, 65491, 72012, + /* 7500 */ 72012, 51277, 25776, 46932, 39842, 25983, 53287, 26051, 26051, 70527, 32640, 32640, 65495, 72012, 46827, + /* 7515 */ 25776, 55996, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, 26051, 46302, + /* 7530 */ 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, + /* 7545 */ 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, + /* 7560 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7575 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7590 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7605 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7620 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7635 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7650 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7665 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7680 */ 31905, 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, 34240, 32640, 25253, 32640, 32640, 32640, + /* 7695 */ 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 31942, 25776, + /* 7710 */ 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, 32640, 32640, 64131, 72012, 72012, 25809, + /* 7725 */ 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, 32640, 32640, 32640, 68393, 72012, + /* 7740 */ 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, 68602, 32640, 32640, 32640, 65491, + /* 7755 */ 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, 68608, 32640, 32640, 65495, 72012, + /* 7770 */ 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, 26051, + /* 7785 */ 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, + /* 7800 */ 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, + /* 7815 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7830 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7845 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7860 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7875 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7890 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7905 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7920 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 7935 */ 32640, 31905, 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, 34240, 32640, 25253, 32640, 32640, + /* 7950 */ 32640, 32640, 49347, 54782, 64809, 69771, 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 31942, + /* 7965 */ 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, 32640, 32640, 64131, 72012, 72012, + /* 7980 */ 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, 32640, 32640, 32640, 68393, + /* 7995 */ 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, 68602, 32640, 32640, 32640, + /* 8010 */ 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, 68608, 32640, 32640, 65495, + /* 8025 */ 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, + /* 8040 */ 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, + /* 8055 */ 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, + /* 8070 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8085 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8100 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8115 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8130 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8145 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8160 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8175 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8190 */ 32640, 32640, 31905, 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, 41903, 32640, 25253, 32640, + /* 8205 */ 32640, 32640, 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, + /* 8220 */ 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, 32640, 32640, 64131, 72012, + /* 8235 */ 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, 32640, 32640, 32640, + /* 8250 */ 68393, 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, 68602, 32640, 32640, + /* 8265 */ 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, 68608, 32640, 32640, + /* 8280 */ 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, + /* 8295 */ 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, + /* 8310 */ 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, + /* 8325 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8340 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8355 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8370 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8385 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8400 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8415 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8430 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8445 */ 32640, 32640, 32640, 31905, 32640, 72814, 32640, 32640, 53140, 32012, 36567, 70299, 34240, 32640, 25253, + /* 8460 */ 32640, 32640, 32640, 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 57111, 32640, 25308, 72012, + /* 8475 */ 72012, 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, 32640, 32640, 64131, + /* 8490 */ 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, 32640, 32640, + /* 8505 */ 32640, 68393, 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, 68602, 32640, + /* 8520 */ 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, 68608, 32640, + /* 8535 */ 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, + /* 8550 */ 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, + /* 8565 */ 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, + /* 8580 */ 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8595 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8610 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8625 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8640 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8655 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8670 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8685 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8700 */ 32640, 32640, 32640, 32640, 31905, 32640, 72814, 32640, 32640, 53140, 22912, 27513, 32056, 32087, 32640, + /* 8715 */ 25253, 32640, 32640, 32640, 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 32640, 32640, 25308, + /* 8730 */ 72012, 72012, 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, 32640, 32640, + /* 8745 */ 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, 32640, + /* 8760 */ 32640, 32640, 68393, 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, 68602, + /* 8775 */ 32640, 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, 68608, + /* 8790 */ 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, + /* 8805 */ 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, + /* 8820 */ 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, + /* 8835 */ 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8850 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8865 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8880 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8895 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8910 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8925 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8940 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 8955 */ 32640, 32640, 32640, 32640, 32640, 31905, 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, 34240, + /* 8970 */ 32640, 25253, 32640, 32640, 32640, 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 32640, 32640, + /* 8985 */ 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, 32640, + /* 9000 */ 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, + /* 9015 */ 32640, 32640, 32640, 68393, 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, + /* 9030 */ 68602, 32640, 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, + /* 9045 */ 68608, 32640, 31793, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, + /* 9060 */ 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, + /* 9075 */ 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, + /* 9090 */ 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9105 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9120 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9135 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9150 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9165 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9180 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9195 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9210 */ 32640, 32640, 32640, 32640, 32640, 32640, 32154, 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, + /* 9225 */ 34240, 32640, 25253, 32640, 32640, 32640, 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 32640, + /* 9240 */ 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, + /* 9255 */ 32640, 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, + /* 9270 */ 32640, 32640, 32640, 32640, 68393, 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, + /* 9285 */ 26051, 68602, 32640, 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, + /* 9300 */ 26051, 68608, 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, + /* 9315 */ 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, + /* 9330 */ 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, + /* 9345 */ 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9360 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9375 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9390 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9405 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9420 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9435 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9450 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9465 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32191, 32640, 61740, 32640, 32640, 53140, 32266, 32219, + /* 9480 */ 32317, 32348, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, 31154, 19779, 32640, + /* 9495 */ 32398, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, 32640, + /* 9510 */ 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, + /* 9525 */ 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, + /* 9540 */ 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, + /* 9555 */ 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, + /* 9570 */ 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 32449, 21030, 21062, 21094, 21084, 21126, 21186, + /* 9585 */ 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, + /* 9600 */ 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9615 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9630 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9645 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9660 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9675 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9690 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9705 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9720 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, 32640, 32640, 53140, 22912, + /* 9735 */ 32640, 32640, 32541, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 40482, 31154, 19779, + /* 9750 */ 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, + /* 9765 */ 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, + /* 9780 */ 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, + /* 9795 */ 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, + /* 9810 */ 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, + /* 9825 */ 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, + /* 9840 */ 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, + /* 9855 */ 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9870 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9885 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9900 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9915 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9930 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9945 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9960 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 9975 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32639, 61740, 32640, 32640, 53140, + /* 9990 */ 32606, 32625, 66147, 32673, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, 31154, + /* 10005 */ 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, + /* 10020 */ 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, + /* 10035 */ 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, + /* 10050 */ 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, + /* 10065 */ 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, + /* 10080 */ 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, + /* 10095 */ 21126, 21186, 32724, 21452, 21374, 21431, 32813, 21618, 21650, 32920, 21802, 23057, 21839, 21899, 21959, + /* 10110 */ 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10125 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10140 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10155 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10170 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10185 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10200 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10215 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10230 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, 32640, 32640, + /* 10245 */ 53140, 22912, 32640, 32640, 27379, 32640, 25253, 32640, 72986, 32640, 32640, 18907, 32640, 23058, 21807, + /* 10260 */ 31154, 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, + /* 10275 */ 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, + /* 10290 */ 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, + /* 10305 */ 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, + /* 10320 */ 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, + /* 10335 */ 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, + /* 10350 */ 21084, 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, + /* 10365 */ 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10380 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10395 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10410 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10425 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10440 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10455 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10470 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10485 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 33014, 72814, 65242, + /* 10500 */ 23329, 65262, 33049, 33078, 33110, 33141, 72172, 33868, 38406, 33224, 33302, 35892, 33415, 33497, 33529, + /* 10515 */ 33657, 32640, 70241, 33715, 23262, 70547, 65483, 72012, 56115, 31942, 25776, 33771, 25983, 62395, 26051, + /* 10530 */ 60426, 53000, 43338, 33820, 20169, 33900, 28052, 33936, 72012, 34004, 34096, 25776, 69679, 34153, 25983, + /* 10545 */ 34209, 34305, 26051, 34381, 34413, 59316, 60982, 34567, 18580, 43988, 66280, 56105, 34613, 34671, 54769, + /* 10560 */ 57995, 34763, 50540, 69616, 34835, 44365, 69116, 72659, 27683, 51215, 45101, 34941, 55781, 57901, 25776, + /* 10575 */ 68182, 34981, 25983, 35037, 38017, 43551, 35100, 35168, 46148, 32692, 38542, 69316, 67857, 54357, 35200, + /* 10590 */ 37506, 35270, 39191, 36089, 32640, 37090, 24260, 50683, 56669, 60278, 35348, 46302, 32640, 68392, 71381, + /* 10605 */ 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 43929, 35445, 35530, 35582, + /* 10620 */ 50980, 66874, 47849, 48295, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10635 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10650 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10665 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10680 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10695 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10710 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10725 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10740 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 35651, 72814, + /* 10755 */ 32640, 32640, 53140, 35689, 35718, 35750, 35781, 32640, 25253, 32640, 32640, 32640, 32640, 42703, 63159, + /* 10770 */ 35832, 71490, 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, + /* 10785 */ 26051, 26051, 53000, 32640, 32640, 71083, 54414, 54421, 64131, 72012, 55872, 25809, 25776, 60149, 25844, + /* 10800 */ 25983, 63179, 26051, 26051, 34327, 34467, 32640, 32640, 25692, 32640, 68393, 72012, 72012, 33962, 25776, + /* 10815 */ 25776, 55427, 25983, 25983, 39566, 26051, 26051, 43098, 32640, 35952, 27144, 30726, 72012, 63213, 63138, + /* 10830 */ 25776, 69714, 35989, 25983, 42068, 36035, 26051, 36069, 32640, 32640, 65495, 72012, 46827, 25776, 55996, + /* 10845 */ 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, + /* 10860 */ 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, + /* 10875 */ 20456, 36134, 36191, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, + /* 10890 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10905 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10920 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10935 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10950 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10965 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10980 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 10995 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 64516, + /* 11010 */ 72814, 48426, 59530, 63767, 36272, 36304, 36336, 36367, 32640, 36432, 25203, 32640, 32640, 41660, 37716, + /* 11025 */ 55922, 36483, 36530, 48415, 59494, 31702, 18855, 62820, 64973, 39682, 72012, 36599, 25776, 18725, 36659, + /* 11040 */ 69934, 36699, 26051, 52493, 36750, 23246, 55732, 34581, 32640, 18679, 55301, 36783, 36820, 35485, 36918, + /* 11055 */ 36954, 37494, 37030, 64702, 65892, 37178, 34467, 32640, 37225, 65319, 32640, 68393, 72012, 37261, 33962, + /* 11070 */ 25776, 37316, 55427, 25983, 39119, 39566, 26051, 49047, 43098, 37375, 42559, 23999, 65491, 72012, 48479, + /* 11085 */ 51277, 25776, 37411, 39842, 45287, 53287, 26051, 67220, 70527, 32640, 37538, 37571, 37131, 46827, 23541, + /* 11100 */ 55996, 67894, 53288, 53572, 47622, 37618, 25915, 66600, 37659, 46843, 32872, 37796, 37836, 46302, 47046, + /* 11115 */ 68392, 23524, 65621, 25983, 37889, 41315, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, + /* 11130 */ 43861, 37927, 37988, 38060, 47849, 36159, 34716, 26535, 44815, 38151, 26933, 32640, 32640, 32640, 32640, + /* 11145 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11160 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11175 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11190 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11205 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11220 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11235 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11250 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, + /* 11265 */ 20106, 72814, 32509, 23162, 53140, 38224, 38253, 38285, 38316, 32640, 25253, 32640, 32640, 60657, 39330, + /* 11280 */ 34441, 50711, 54836, 51195, 33270, 38384, 46719, 22206, 33192, 38438, 72385, 38511, 38616, 40937, 20657, + /* 11295 */ 38673, 38705, 39528, 38892, 38940, 32640, 47380, 49323, 32640, 70823, 64131, 72012, 32968, 25809, 25776, + /* 11310 */ 45195, 25844, 25983, 46666, 26051, 26051, 58683, 38996, 32640, 59450, 25692, 27180, 22361, 39052, 64136, + /* 11325 */ 40912, 42209, 25776, 39090, 66443, 25983, 39151, 60300, 26051, 39223, 32640, 32640, 36102, 70444, 72012, + /* 11340 */ 71366, 65683, 25776, 39291, 39362, 35619, 34803, 26051, 43538, 70527, 72942, 37229, 65495, 39402, 46827, + /* 11355 */ 39434, 39492, 52767, 39560, 39598, 39731, 22659, 32640, 64131, 71378, 25776, 29955, 53286, 26051, 46302, + /* 11370 */ 19837, 68392, 68106, 33972, 25983, 39769, 58918, 26609, 71375, 56493, 39511, 67952, 33375, 70146, 67746, + /* 11385 */ 39807, 39877, 27300, 39932, 39984, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, + /* 11400 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11415 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11430 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11445 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11460 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11475 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11490 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11505 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11520 */ 31905, 22609, 72814, 27464, 30794, 40060, 40119, 40148, 40180, 40211, 40263, 40295, 40364, 40412, 40514, + /* 11535 */ 40546, 40606, 40667, 40699, 40731, 40783, 20976, 40854, 40994, 52527, 25308, 41046, 39699, 41078, 46357, + /* 11550 */ 49141, 41137, 44544, 41236, 41286, 41368, 47192, 41460, 41554, 41610, 40087, 41703, 41735, 41816, 41872, + /* 11565 */ 41968, 42030, 42100, 42250, 42282, 42373, 42458, 42490, 42522, 42554, 42591, 31571, 42679, 24113, 42735, + /* 11580 */ 42778, 42826, 42887, 59586, 42933, 43014, 20677, 52796, 43080, 37857, 50773, 19009, 50153, 72778, 68055, + /* 11595 */ 66201, 43130, 61992, 43205, 43285, 43380, 36003, 43457, 50341, 43583, 43639, 62580, 43704, 43740, 65764, + /* 11610 */ 46827, 43772, 55996, 43804, 43857, 43893, 43961, 72604, 44020, 44104, 67022, 44136, 44196, 44228, 44289, + /* 11625 */ 44397, 41399, 46788, 44452, 69369, 44513, 44648, 70208, 20438, 68896, 51376, 63626, 44257, 54317, 44622, + /* 11640 */ 67433, 55113, 55250, 49487, 51457, 67801, 44680, 44712, 34716, 38736, 44788, 26905, 26933, 32640, 32640, + /* 11655 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11670 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11685 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11700 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11715 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11730 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11745 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11760 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11775 */ 32640, 31905, 54076, 72814, 67462, 71804, 46979, 44874, 44903, 44935, 44966, 65157, 25253, 32640, 32640, + /* 11790 */ 45018, 45029, 45061, 36627, 47904, 71490, 70229, 49986, 32640, 30141, 65148, 45093, 45133, 72012, 45175, + /* 11805 */ 25776, 67154, 25983, 61672, 45240, 26051, 53000, 32640, 32640, 25682, 32640, 30614, 64131, 72012, 62187, + /* 11820 */ 25809, 25776, 34052, 25844, 25983, 58051, 26051, 26051, 68586, 34467, 32640, 32640, 25692, 49974, 68393, + /* 11835 */ 36788, 72012, 33962, 51715, 25776, 55427, 25983, 45283, 39566, 26051, 45319, 43098, 32640, 32640, 22533, + /* 11850 */ 65491, 72012, 65748, 51277, 25776, 40635, 39842, 48131, 53287, 26051, 72059, 70527, 32640, 32640, 65495, + /* 11865 */ 72012, 46827, 25776, 55996, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, + /* 11880 */ 26051, 26195, 32640, 30913, 33383, 31947, 68516, 43425, 37193, 26609, 71375, 60465, 43860, 58860, 33375, + /* 11895 */ 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 38767, 44815, 45355, 26933, 32640, + /* 11910 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11925 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11940 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11955 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11970 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 11985 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12000 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12015 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12030 */ 32640, 32640, 31905, 32640, 72814, 72990, 32640, 53140, 45461, 45480, 45512, 45543, 32640, 25253, 25880, + /* 12045 */ 32640, 32640, 32640, 49347, 54782, 64809, 65216, 32640, 32024, 32640, 29772, 32640, 25308, 72012, 72012, + /* 12060 */ 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, 26944, 43348, 64131, 72012, + /* 12075 */ 72012, 45595, 25776, 25776, 45631, 25983, 25984, 26051, 26051, 26018, 58552, 32640, 45666, 62963, 32640, + /* 12090 */ 45736, 45143, 72012, 33962, 47777, 25776, 55427, 45634, 25983, 39566, 62106, 26051, 66507, 32640, 61374, + /* 12105 */ 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, 68608, 32640, 45776, + /* 12120 */ 65495, 72012, 45833, 25776, 43236, 25983, 48970, 26051, 35378, 19759, 45883, 40885, 45935, 34121, 45988, + /* 12135 */ 46059, 68691, 46114, 46509, 48784, 46180, 46232, 52911, 56583, 46294, 61320, 46334, 46389, 52972, 46541, + /* 12150 */ 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 57068, 26905, 26933, + /* 12165 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12180 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12195 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12210 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12225 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12240 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12255 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12270 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12285 */ 32640, 32640, 32640, 31905, 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, 37061, 32640, 46592, + /* 12300 */ 32640, 23927, 23933, 35920, 72528, 46641, 71255, 46698, 32640, 41638, 46765, 32640, 32640, 25308, 72012, + /* 12315 */ 32982, 31942, 25812, 62010, 25983, 52465, 26051, 62071, 44572, 32640, 32640, 32640, 32640, 46875, 64131, + /* 12330 */ 72012, 72012, 46928, 25776, 25777, 25844, 25983, 25846, 26051, 26051, 48238, 66922, 32640, 32640, 32640, + /* 12345 */ 58432, 34888, 72012, 72012, 24139, 25776, 25776, 64186, 25983, 25983, 64365, 26051, 26051, 68602, 32640, + /* 12360 */ 31139, 32640, 65491, 72012, 59125, 47768, 25776, 23575, 39842, 25983, 43409, 26051, 51585, 68608, 32640, + /* 12375 */ 40326, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, + /* 12390 */ 29955, 53286, 26051, 46302, 23989, 59115, 71381, 31947, 25983, 51580, 26788, 46560, 61892, 58181, 67203, + /* 12405 */ 61301, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, + /* 12420 */ 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12435 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12450 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12465 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12480 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12495 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12510 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12525 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12540 */ 32640, 32640, 32640, 32640, 31905, 48851, 72814, 23672, 46964, 47011, 47078, 47108, 47140, 47171, 32640, + /* 12555 */ 41336, 32640, 50620, 20998, 40574, 47224, 47285, 49169, 47359, 32640, 35316, 31404, 32640, 22498, 71540, + /* 12570 */ 47426, 22395, 47485, 41998, 47553, 68243, 35005, 43487, 49590, 47654, 45801, 22675, 32476, 32285, 47707, + /* 12585 */ 67491, 67589, 47739, 47809, 47521, 53771, 47881, 39370, 54202, 70106, 63727, 47936, 58552, 32640, 49793, + /* 12600 */ 48007, 32640, 65551, 71979, 37586, 48049, 48729, 71596, 33444, 48130, 48163, 50320, 48235, 48270, 34864, + /* 12615 */ 70560, 48327, 48393, 48458, 72887, 48523, 38468, 37956, 42313, 48632, 55501, 51516, 36886, 48664, 48761, + /* 12630 */ 48816, 50855, 27414, 41840, 48883, 63268, 48941, 45429, 49017, 55015, 49079, 32640, 22725, 23734, 49111, + /* 12645 */ 51113, 69533, 55593, 49224, 46302, 49298, 68392, 71381, 31947, 25983, 51580, 58698, 26609, 49388, 58232, + /* 12660 */ 70503, 49450, 42622, 70146, 67746, 49519, 60834, 49912, 26461, 39900, 47849, 56608, 49551, 26535, 44815, + /* 12675 */ 49622, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12690 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12705 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12720 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12735 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12750 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12765 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12780 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12795 */ 32640, 32640, 32640, 32640, 32640, 31905, 69860, 72814, 32640, 32640, 53140, 22912, 46609, 49741, 49772, + /* 12810 */ 32640, 25253, 32640, 32640, 32640, 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 32640, 32640, + /* 12825 */ 25308, 72012, 57444, 31942, 38479, 62010, 25983, 49825, 26051, 53559, 44572, 32640, 32640, 32640, 32640, + /* 12840 */ 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, + /* 12855 */ 32640, 32640, 32640, 68393, 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, + /* 12870 */ 68602, 32640, 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, + /* 12885 */ 68608, 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, + /* 12900 */ 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, + /* 12915 */ 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, + /* 12930 */ 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12945 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12960 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12975 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 12990 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13005 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13020 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13035 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13050 */ 32640, 32640, 32640, 32640, 32640, 32640, 31905, 59709, 72814, 32640, 32640, 53140, 22912, 36567, 70299, + /* 13065 */ 34240, 32640, 25253, 61385, 32640, 32640, 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 32640, + /* 13080 */ 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, + /* 13095 */ 32640, 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 55063, + /* 13110 */ 32640, 32640, 32640, 32640, 51342, 72012, 72012, 34031, 25776, 25776, 21586, 25983, 25983, 37804, 26051, + /* 13125 */ 26051, 68602, 32640, 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, + /* 13140 */ 26051, 68608, 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, + /* 13155 */ 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, + /* 13170 */ 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, + /* 13185 */ 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13200 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13215 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13230 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13245 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13260 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13275 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13290 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13305 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 52831, 72814, 72305, 49953, 50018, 50050, 50069, + /* 13320 */ 50101, 50132, 70815, 25253, 24050, 32640, 72261, 50206, 50261, 50293, 50389, 50456, 50572, 49266, 32159, + /* 13335 */ 46476, 50609, 46896, 49653, 37284, 50652, 61556, 51136, 34792, 50743, 43516, 41182, 50834, 50887, 32640, + /* 13350 */ 37764, 32640, 32640, 39657, 23757, 50924, 50956, 53683, 55377, 51012, 52437, 51082, 71275, 51168, 51247, + /* 13365 */ 58552, 31456, 32640, 51318, 32640, 68393, 71632, 34909, 33962, 25776, 51408, 55427, 25983, 51489, 51571, + /* 13380 */ 26051, 51617, 51676, 60646, 71309, 32640, 65491, 66269, 72012, 47768, 51714, 36922, 67551, 25983, 53287, + /* 13395 */ 50411, 26051, 51682, 70346, 19987, 51747, 72012, 24952, 25776, 68123, 51821, 47327, 51856, 50424, 31808, + /* 13410 */ 72723, 44072, 71378, 24163, 55203, 53286, 67732, 46302, 62840, 68392, 67136, 45208, 51824, 51580, 51892, + /* 13425 */ 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 49192, 51996, 52096, + /* 13440 */ 48579, 26535, 57041, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13455 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13470 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13485 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13500 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13515 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13530 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13545 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13560 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32641, 72814, 32640, 52167, 20380, 52202, + /* 13575 */ 52231, 52263, 52294, 52373, 25253, 38352, 32640, 52375, 52359, 29926, 52407, 61167, 51195, 57599, 32024, + /* 13590 */ 25590, 52525, 32640, 52559, 51778, 52613, 52685, 43173, 52736, 25950, 43825, 49580, 44319, 53632, 52043, + /* 13605 */ 52828, 32640, 32640, 32640, 58759, 38563, 72012, 52863, 54749, 25776, 52943, 55231, 25984, 38908, 53056, + /* 13620 */ 26018, 58552, 53105, 32640, 22853, 53172, 39020, 53205, 55838, 69472, 53239, 53488, 67539, 53276, 33788, + /* 13635 */ 39566, 53320, 63643, 68602, 32640, 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, + /* 13650 */ 53287, 26051, 26051, 68608, 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, + /* 13665 */ 53361, 32640, 72366, 71378, 53397, 57660, 53286, 53431, 46302, 32640, 68392, 71381, 47833, 35238, 66390, + /* 13680 */ 37193, 26609, 71375, 60465, 43860, 63958, 50482, 38641, 53073, 53467, 53538, 49912, 26461, 39900, 47849, + /* 13695 */ 36159, 48078, 53604, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13710 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13725 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13740 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13755 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13770 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13785 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13800 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13815 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, 53715, 36751, 53803, 53858, + /* 13830 */ 53921, 53950, 53982, 54013, 68341, 65423, 54066, 22337, 73196, 54108, 54140, 54172, 54234, 54389, 39321, + /* 13845 */ 25417, 42341, 50174, 54455, 44050, 56059, 66616, 54504, 54555, 45851, 57679, 42130, 56789, 64232, 60925, + /* 13860 */ 56829, 19692, 32640, 54689, 69055, 20609, 57455, 72012, 54726, 52653, 25776, 54814, 63908, 25984, 61227, + /* 13875 */ 36498, 26018, 58552, 32640, 47394, 24383, 68318, 72870, 72012, 54868, 18707, 25776, 69705, 54929, 25983, + /* 13890 */ 71927, 54995, 26051, 43915, 55047, 31632, 29738, 32574, 55095, 55145, 55282, 55174, 55347, 55409, 55471, + /* 13905 */ 55533, 55625, 55661, 26850, 67349, 33333, 55693, 55764, 55813, 55904, 55954, 45409, 55563, 59673, 58326, + /* 13920 */ 64010, 31239, 37627, 56028, 56147, 63574, 71739, 56202, 48600, 52021, 33017, 44420, 56272, 51439, 56304, + /* 13935 */ 26558, 56379, 49469, 56435, 56525, 55629, 58860, 53658, 56557, 38796, 56640, 56760, 53746, 56861, 56918, + /* 13950 */ 47849, 36159, 34716, 35068, 57014, 26905, 57100, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13965 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13980 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 13995 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14010 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14025 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14040 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14055 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14070 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, 57143, 60501, 46140, + /* 14085 */ 53140, 57269, 57298, 57330, 57361, 57393, 21867, 57487, 53826, 57561, 73137, 57631, 57725, 57757, 57818, + /* 14100 */ 64532, 33845, 25743, 28903, 32640, 30718, 48491, 57871, 57933, 57965, 50507, 34177, 46420, 65902, 58083, + /* 14115 */ 44572, 34502, 27347, 47675, 69192, 32417, 27057, 58115, 45744, 58167, 58213, 58473, 58264, 36980, 26375, + /* 14130 */ 58296, 44349, 69977, 37742, 31057, 58358, 32640, 35957, 68393, 49673, 58395, 33962, 23558, 65824, 55427, + /* 14145 */ 66456, 46015, 39566, 60313, 47611, 68602, 32640, 47038, 58431, 65491, 72012, 72012, 58464, 25776, 27804, + /* 14160 */ 58505, 25983, 57693, 26051, 26051, 58542, 33253, 32640, 51913, 22383, 49691, 64312, 64327, 50524, 46027, + /* 14175 */ 71028, 38028, 53132, 32640, 21514, 49356, 67641, 68454, 61634, 65986, 49249, 32640, 68392, 71381, 31947, + /* 14190 */ 25983, 51580, 39737, 67971, 58592, 35498, 68821, 42982, 65031, 58624, 58730, 58791, 58892, 49912, 26461, + /* 14205 */ 39900, 47849, 36159, 34716, 60897, 62262, 58971, 59003, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14220 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14235 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14250 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14265 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14280 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14295 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14310 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14325 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, 53024, 32640, + /* 14340 */ 59046, 59088, 59157, 59186, 59218, 59249, 26690, 25253, 32640, 62512, 59314, 32640, 21399, 45956, 59348, + /* 14355 */ 59428, 60204, 32024, 59282, 59482, 59526, 27721, 62325, 42794, 59562, 37343, 41105, 59653, 46262, 57786, + /* 14370 */ 56728, 42158, 59014, 59705, 59741, 32640, 32640, 64131, 27582, 72012, 25809, 51286, 25776, 25844, 68525, + /* 14385 */ 25984, 26051, 69412, 26018, 38086, 59766, 53173, 30453, 31873, 68393, 59807, 72012, 38182, 56458, 25776, + /* 14400 */ 67880, 68261, 25983, 39566, 61247, 26051, 68602, 40380, 32640, 32640, 65491, 72012, 59857, 47966, 60005, + /* 14415 */ 45599, 39842, 71940, 53287, 26051, 59892, 68608, 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, + /* 14430 */ 53288, 26051, 37187, 71116, 32640, 59931, 71378, 25776, 29955, 53286, 26051, 56227, 32640, 68392, 71381, + /* 14445 */ 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 36718, 59969, 24280, 60037, 60131, 43861, 49912, + /* 14460 */ 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14475 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14490 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14505 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14520 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14535 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14550 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14565 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14580 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, 72814, + /* 14595 */ 32640, 32640, 53140, 22912, 36567, 70299, 34240, 32640, 25253, 54423, 32640, 20742, 60181, 32843, 60251, + /* 14610 */ 67710, 54291, 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, + /* 14625 */ 26051, 26051, 44572, 32640, 29420, 32640, 32640, 32640, 64131, 72012, 72012, 60345, 25776, 25776, 60381, + /* 14640 */ 25983, 25984, 26051, 26051, 26018, 58552, 32640, 32640, 32640, 32640, 68393, 72012, 72012, 33962, 25776, + /* 14655 */ 25776, 55427, 25983, 25983, 39566, 26051, 26051, 68602, 32640, 32640, 32640, 65491, 53207, 72012, 47768, + /* 14670 */ 27763, 36922, 39842, 71874, 53287, 26051, 60418, 68608, 32640, 32640, 65495, 72012, 51360, 25776, 65698, + /* 14685 */ 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 70720, + /* 14700 */ 71381, 60458, 35226, 48985, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, + /* 14715 */ 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, + /* 14730 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14745 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14760 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14775 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14790 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14805 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14820 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 14835 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, + /* 14850 */ 36240, 60497, 23383, 53140, 60533, 60561, 60593, 60624, 23405, 25467, 22160, 33169, 60689, 60747, 60715, + /* 14865 */ 60805, 60866, 60957, 32640, 36400, 61023, 26995, 32640, 33355, 55315, 59825, 61082, 65831, 61145, 47313, + /* 14880 */ 61199, 61279, 67236, 61352, 32640, 30073, 61417, 71794, 61454, 22979, 61508, 38584, 61544, 61588, 56170, + /* 14895 */ 61624, 61666, 64623, 61704, 26051, 48694, 58552, 65333, 72472, 61736, 61772, 61831, 56082, 61881, 64292, + /* 14910 */ 46200, 55981, 63076, 32888, 56329, 36998, 50357, 58842, 68602, 61924, 31336, 31217, 32949, 61962, 72012, + /* 14925 */ 54897, 52135, 36922, 43253, 54949, 53287, 62059, 62103, 54635, 69791, 32640, 71552, 72012, 20633, 25776, + /* 14940 */ 66700, 25983, 70631, 26051, 43048, 60991, 32640, 27575, 38860, 26267, 35612, 71431, 26052, 46302, 39252, + /* 14955 */ 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, 59396, 61050, 48909, 62138, 49921, + /* 14970 */ 43861, 50802, 44756, 26873, 47849, 36159, 34716, 33560, 62235, 62294, 26933, 32640, 32640, 32640, 32640, + /* 14985 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15000 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15015 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15030 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15045 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15060 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15075 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15090 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 31905, + /* 15105 */ 32640, 69266, 62427, 62544, 62612, 62644, 62673, 62705, 62736, 31256, 49878, 31910, 32640, 62790, 62885, + /* 15120 */ 62917, 44164, 69556, 51644, 62949, 62995, 45696, 32640, 19278, 63027, 63108, 63211, 63245, 54342, 53506, + /* 15135 */ 63300, 61672, 63378, 63410, 44572, 63450, 21770, 63487, 58560, 32640, 57422, 68884, 61512, 63553, 47513, + /* 15150 */ 61592, 63606, 63675, 29960, 51050, 63717, 37895, 63759, 18562, 21217, 40028, 32560, 63799, 59860, 58135, + /* 15165 */ 43158, 25776, 63843, 70614, 25983, 63875, 63940, 26051, 63990, 64042, 64442, 21262, 32640, 64117, 58399, + /* 15180 */ 38848, 47768, 24174, 64168, 39842, 56347, 53287, 26051, 64218, 68608, 27898, 31520, 65495, 64264, 51931, + /* 15195 */ 42855, 67656, 26365, 64359, 39180, 64397, 32640, 22880, 64131, 71378, 25776, 29955, 53286, 26051, 56886, + /* 15210 */ 32234, 41489, 41766, 51964, 60386, 51580, 64489, 54657, 64564, 34064, 72128, 35550, 42184, 64655, 39628, + /* 15225 */ 49921, 43861, 62758, 40962, 68714, 54610, 64734, 36847, 26535, 44815, 26905, 26933, 32640, 32640, 32640, + /* 15240 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15255 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15270 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15285 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15300 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15315 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15330 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15345 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15360 */ 31905, 32640, 25270, 32640, 23111, 32122, 64856, 64887, 64919, 64950, 31389, 65005, 27232, 34519, 65063, + /* 15375 */ 65120, 65088, 61113, 65189, 65294, 65365, 65397, 32640, 65455, 65527, 65583, 65653, 65730, 65796, 42647, + /* 15390 */ 52704, 58025, 65863, 65934, 65966, 66033, 64072, 66099, 26683, 30564, 66131, 66179, 66246, 41522, 66312, + /* 15405 */ 64765, 26100, 66344, 66422, 62027, 63346, 66488, 48098, 66539, 38119, 40439, 30690, 24714, 66648, 46809, + /* 15420 */ 22991, 67082, 66680, 47975, 66732, 66764, 58510, 66819, 66851, 26304, 66906, 66954, 31272, 32640, 67000, + /* 15435 */ 67054, 67114, 21544, 34639, 21568, 67186, 67268, 67325, 67402, 54264, 43607, 48017, 34273, 42426, 67583, + /* 15450 */ 30935, 67621, 41784, 67688, 48203, 67778, 64824, 41671, 20315, 24236, 67833, 44481, 37470, 67926, 59378, + /* 15465 */ 68003, 32640, 68087, 68155, 34696, 68214, 39952, 68293, 68373, 68425, 68486, 66787, 35862, 33375, 70146, + /* 15480 */ 67746, 49921, 43861, 49912, 58817, 68777, 68557, 68640, 68746, 58655, 44815, 68853, 26933, 32640, 32640, + /* 15495 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15510 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15525 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15540 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15555 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15570 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15585 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15600 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15615 */ 32640, 31905, 32640, 64085, 32640, 48353, 53140, 68928, 68957, 68989, 69020, 32640, 27125, 27632, 30788, + /* 15630 */ 27143, 32640, 31656, 64595, 69087, 69148, 32640, 32024, 32640, 69224, 32640, 49895, 69298, 39058, 69348, + /* 15645 */ 25776, 49418, 25983, 70024, 69401, 45323, 46448, 24757, 70970, 32640, 27865, 31743, 52581, 61849, 69444, + /* 15660 */ 69504, 54523, 54583, 69588, 33465, 69648, 59899, 33588, 69746, 58552, 69823, 32640, 32640, 69855, 38964, + /* 15675 */ 72012, 72012, 65611, 69892, 25776, 72113, 69928, 25983, 39566, 69966, 26051, 41254, 35657, 32640, 32640, + /* 15690 */ 61476, 72012, 72012, 62354, 25776, 36922, 70009, 25983, 26418, 26051, 26051, 34349, 32640, 18845, 26622, + /* 15705 */ 72012, 27075, 25776, 39460, 70056, 67293, 70094, 41204, 31858, 32640, 64131, 71378, 25776, 29955, 53286, + /* 15720 */ 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 45386, 70138, 70178, 58860, 33375, + /* 15735 */ 70146, 67746, 49921, 43861, 49912, 26461, 46082, 68666, 70273, 34716, 26535, 44842, 26905, 26933, 32640, + /* 15750 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15765 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15780 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15795 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15810 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15825 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15840 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15855 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 15870 */ 32640, 32640, 31905, 32640, 22217, 68030, 66060, 33739, 70331, 54472, 70378, 70409, 32640, 25253, 32640, + /* 15885 */ 32640, 32640, 32640, 19302, 70476, 56692, 51195, 59775, 43315, 32640, 32640, 27647, 25308, 37113, 62203, + /* 15900 */ 70592, 53244, 62010, 70663, 47583, 56714, 33625, 44572, 32640, 32640, 28000, 32640, 29763, 64131, 55855, + /* 15915 */ 72012, 25809, 51949, 25776, 25844, 56967, 25984, 26051, 33611, 26018, 58552, 32640, 32640, 32640, 32640, + /* 15930 */ 68393, 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, 26051, 68602, 32640, 32640, + /* 15945 */ 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, 26051, 68608, 50577, 32640, + /* 15960 */ 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 25506, 32640, 64131, 71378, 25776, 29955, + /* 15975 */ 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 70701, 71375, 60465, 43860, 58860, + /* 15990 */ 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, + /* 16005 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16020 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16035 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16050 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16065 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16080 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16095 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16110 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16125 */ 32640, 32640, 32640, 31905, 32640, 59056, 32640, 70752, 70788, 70855, 70884, 70916, 70947, 32640, 25253, + /* 16140 */ 32640, 32640, 32640, 32640, 41578, 49709, 71012, 71060, 32640, 32024, 32640, 32640, 71115, 25308, 72012, + /* 16155 */ 72012, 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, 32640, 32640, 64131, + /* 16170 */ 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, 32640, 38108, + /* 16185 */ 32640, 24932, 72012, 72012, 52641, 25776, 25776, 71858, 25983, 25983, 43032, 26051, 26051, 68602, 32640, + /* 16200 */ 71148, 32640, 65491, 51789, 34949, 47768, 56478, 42901, 39842, 71181, 63325, 63418, 36037, 68608, 32640, + /* 16215 */ 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, 25776, + /* 16230 */ 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, 43860, + /* 16245 */ 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, 26905, + /* 16260 */ 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16275 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16290 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16305 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16320 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16335 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16350 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16365 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16380 */ 32640, 32640, 32640, 32640, 32154, 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, 34240, 32640, + /* 16395 */ 25640, 43672, 32640, 22790, 58939, 37441, 71228, 41160, 51195, 32640, 22183, 71515, 71307, 32640, 25308, + /* 16410 */ 72012, 71341, 31942, 35465, 71413, 36667, 59621, 26051, 71463, 42401, 32640, 32640, 32640, 32640, 32640, + /* 16425 */ 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, 32640, 32640, + /* 16440 */ 41936, 32640, 68393, 66214, 72012, 71584, 38192, 25776, 42053, 70669, 25983, 39566, 39775, 26051, 68602, + /* 16455 */ 35405, 32640, 32640, 65491, 71628, 72012, 48552, 25776, 36922, 26149, 25983, 53287, 71664, 26051, 68608, + /* 16470 */ 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, 64131, 71378, + /* 16485 */ 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, 71375, 60465, + /* 16500 */ 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, 44815, + /* 16515 */ 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16530 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16545 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16560 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16575 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16590 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16605 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16620 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16635 */ 32640, 32640, 32640, 32640, 32640, 31905, 32640, 72814, 32640, 32640, 53140, 22912, 36567, 70299, 37690, + /* 16650 */ 32640, 25253, 66067, 32640, 32640, 32640, 71710, 26739, 42964, 71771, 20325, 32024, 32640, 32640, 32640, + /* 16665 */ 27283, 72012, 59937, 31942, 25776, 52893, 25983, 56982, 26051, 51860, 44572, 23321, 32640, 32640, 37539, + /* 16680 */ 32640, 38825, 72013, 72012, 71836, 53399, 25776, 71906, 39845, 25984, 71678, 53435, 26018, 58552, 30134, + /* 16695 */ 32640, 32640, 32640, 68393, 71972, 72012, 63054, 52123, 25776, 62376, 48188, 25983, 24297, 36872, 26051, + /* 16710 */ 68602, 32640, 32640, 33904, 65491, 72012, 72011, 47768, 42218, 36922, 39842, 71196, 53287, 26051, 72045, + /* 16725 */ 68608, 32640, 48843, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 45251, 32640, 34258, 23504, + /* 16740 */ 63811, 25776, 68806, 63685, 26051, 46302, 23041, 68392, 72091, 44738, 54963, 34731, 37193, 26609, 71375, + /* 16755 */ 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, 26535, + /* 16770 */ 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16785 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16800 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16815 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16830 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16845 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16860 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16875 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 16890 */ 32640, 32640, 32640, 32640, 32640, 32640, 31905, 32640, 72814, 32640, 32640, 53140, 72160, 36567, 70299, + /* 16905 */ 34240, 32640, 25253, 32640, 32640, 32640, 32640, 49347, 54782, 64809, 51195, 32640, 32024, 32640, 32640, + /* 16920 */ 32640, 25308, 72012, 72012, 31942, 25776, 62010, 25983, 61672, 26051, 26051, 44572, 32640, 32640, 32640, + /* 16935 */ 32640, 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, 26051, 26051, 26018, 58552, + /* 16950 */ 32640, 32640, 32640, 32640, 68393, 72012, 72012, 33962, 25776, 25776, 55427, 25983, 25983, 39566, 26051, + /* 16965 */ 26051, 68602, 32640, 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, 39842, 25983, 53287, 26051, + /* 16980 */ 26051, 68608, 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, 26051, 37187, 32640, 32640, + /* 16995 */ 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, 25983, 51580, 37193, 26609, + /* 17010 */ 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, 39900, 47849, 36159, 34716, + /* 17025 */ 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17040 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17055 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17070 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17085 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17100 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17115 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17130 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17145 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 72268, 72234, 40231, 72204, 72300, 72337, + /* 17160 */ 72417, 72449, 32640, 25253, 71149, 72986, 32640, 32640, 22011, 19703, 24646, 21807, 31154, 19779, 32640, + /* 17175 */ 18612, 18649, 18757, 18789, 18959, 21985, 22069, 72504, 22057, 18887, 18787, 18957, 18991, 36451, 32640, + /* 17190 */ 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, 40822, + /* 17205 */ 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, 19570, + /* 17220 */ 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, 20058, + /* 17235 */ 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, 20579, + /* 17250 */ 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, 21186, + /* 17265 */ 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, 21154, + /* 17280 */ 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17295 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17310 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17325 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17340 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17355 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17370 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17385 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17400 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, 32640, 70431, 53140, 72560, + /* 17415 */ 72589, 60219, 72636, 32640, 25253, 32640, 72986, 50892, 50890, 18907, 32640, 40751, 21807, 31154, 19779, + /* 17430 */ 32640, 18612, 18649, 18757, 18789, 18959, 22037, 22069, 18821, 22057, 18887, 18787, 18957, 18991, 36451, + /* 17445 */ 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, 19193, + /* 17460 */ 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, 19534, + /* 17475 */ 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, 30858, + /* 17490 */ 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, 20291, + /* 17505 */ 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, 21126, + /* 17520 */ 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, 22101, + /* 17535 */ 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17550 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17565 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17580 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17595 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17610 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17625 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17640 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17655 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61930, 32640, 32640, 19846, + /* 17670 */ 72691, 72708, 30629, 72755, 32640, 25253, 32640, 72810, 59270, 52170, 18907, 32640, 23058, 21807, 31154, + /* 17685 */ 19779, 32640, 18612, 18649, 18757, 18789, 18959, 22311, 22069, 72846, 22057, 18887, 18787, 18957, 18991, + /* 17700 */ 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, 46733, 19106, + /* 17715 */ 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, 25119, 19498, + /* 17730 */ 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, 30993, 20026, + /* 17745 */ 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, 20488, 20547, + /* 17760 */ 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, 21094, 21084, + /* 17775 */ 21126, 21186, 21310, 21452, 21374, 21431, 21484, 21618, 21650, 21741, 21802, 23057, 21839, 21899, 21959, + /* 17790 */ 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17805 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17820 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17835 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17850 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17865 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17880 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17895 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 17910 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 22530, 32640, 61740, 32640, 32640, + /* 17925 */ 53140, 22912, 32640, 32640, 72919, 32640, 25253, 32640, 32640, 32640, 32640, 49347, 54782, 64809, 35297, + /* 17940 */ 32640, 32024, 32640, 32640, 32640, 25308, 72012, 72012, 48724, 25776, 59604, 25983, 61672, 26051, 26051, + /* 17955 */ 44572, 32640, 32640, 32640, 32640, 32640, 64131, 72012, 72012, 25809, 25776, 25776, 25844, 25983, 25984, + /* 17970 */ 26051, 26051, 26018, 58552, 32640, 32640, 32640, 32640, 68393, 72012, 72012, 33962, 25776, 25776, 55427, + /* 17985 */ 25983, 25983, 39566, 26051, 26051, 68602, 32640, 32640, 32640, 65491, 72012, 72012, 47768, 25776, 36922, + /* 18000 */ 39842, 25983, 53287, 26051, 26051, 68608, 32640, 32640, 65495, 72012, 51360, 25776, 65698, 25983, 53288, + /* 18015 */ 26051, 37187, 32640, 32640, 64131, 71378, 25776, 29955, 53286, 26051, 46302, 32640, 68392, 71381, 31947, + /* 18030 */ 25983, 51580, 37193, 26609, 71375, 60465, 43860, 58860, 33375, 70146, 67746, 49921, 43861, 49912, 26461, + /* 18045 */ 39900, 47849, 36159, 34716, 26535, 44815, 26905, 26933, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18060 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18075 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18090 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18105 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18120 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18135 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18150 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18165 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18180 */ 34485, 32640, 23212, 23229, 52327, 72974, 32640, 32640, 32640, 72986, 32640, 32640, 18907, 32640, 23058, + /* 18195 */ 21807, 31154, 43659, 32640, 18612, 18649, 18757, 18789, 18959, 21985, 22069, 72504, 22057, 18887, 18787, + /* 18210 */ 18957, 18991, 36451, 32640, 24875, 69179, 19041, 62458, 19134, 40819, 21341, 19073, 46732, 21342, 19074, + /* 18225 */ 46733, 19106, 19193, 40822, 19438, 66570, 19251, 21244, 41014, 19334, 19366, 19398, 19470, 19502, 19538, + /* 18240 */ 25119, 19498, 19534, 19570, 19359, 19629, 19422, 19661, 19735, 19811, 19878, 19910, 19942, 20019, 30851, + /* 18255 */ 30993, 20026, 30858, 20058, 19907, 21927, 19969, 20090, 20138, 20211, 20265, 20357, 63521, 20412, 63518, + /* 18270 */ 20488, 20547, 20291, 20579, 20709, 20774, 20821, 20870, 20853, 20885, 20789, 20917, 20949, 21030, 21062, + /* 18285 */ 21094, 21084, 21126, 21186, 73022, 21452, 21374, 21431, 73111, 21618, 21650, 73169, 21802, 23057, 21839, + /* 18300 */ 21899, 21959, 22101, 21154, 22249, 22281, 22427, 22459, 22487, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18315 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18330 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18345 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18360 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18375 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18390 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18405 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, + /* 18420 */ 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 32640, 1, 24578, 3, 0, 0, 0, + /* 18438 */ 0, 0, 0, 0, 180523, 180523, 180523, 180523, 0, 188716, 188716, 188716, 180523, 180523, 188716, 188716, + /* 18454 */ 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, + /* 18467 */ 188716, 0, 188716, 180523, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, + /* 18481 */ 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, + /* 18494 */ 188716, 188716, 139264, 147456, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, + /* 18507 */ 131072, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, + /* 18520 */ 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, 188716, + /* 18533 */ 188716, 188716, 188716, 188716, 188716, 188716, 188716, 367, 188716, 180523, 188716, 188716, 1, 24578, 3, + /* 18548 */ 0, 0, 4366336, 0, 0, 0, 180523, 188716, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18573 */ 0, 0, 0, 0, 2289, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2368, 2369, 0, 0, 2371, 0, 0, 0, + /* 18603 */ 0, 2376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4276224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18635 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 307, 0, 0, 5767168, 0, 0, 0, 4857856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18665 */ 0, 0, 5259264, 0, 5414912, 5447680, 0, 0, 5562368, 5636096, 5685248, 0, 5750784, 5873664, 0, 0, 0, 0, 0, + /* 18684 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1877, 521, 521, 521, 521, 521, 521, 521, 521, + /* 18705 */ 521, 1889, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 57886, 57886, 57886, 59821, 57886, 59823, 57886, + /* 18724 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 18739 */ 50657, 58754, 977, 57909, 57909, 58853, 57909, 57909, 58857, 57909, 57909, 57909, 57909, 57909, 57909, + /* 18754 */ 57909, 57909, 58871, 0, 0, 5636096, 5873664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5873664, 0, 0, 0, + /* 18779 */ 0, 0, 0, 0, 5480448, 4358144, 4358144, 4358144, 4358144, 4857856, 4874240, 4358144, 4358144, 4358144, + /* 18793 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5259264, + /* 18804 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5414912, 4358144, 5447680, + /* 18815 */ 4358144, 5464064, 4358144, 5480448, 5562368, 4358144, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18836 */ 0, 977, 0, 0, 0, 0, 0, 4857856, 4874240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18866 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5873664, 0, 0, 0, 0, 0, 0, + /* 18898 */ 0, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 18920 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 18931 */ 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1140, 0, 0, 1145, 0, + /* 18952 */ 4857856, 4874240, 0, 0, 4923392, 5562368, 4358144, 4358144, 4358144, 5636096, 4358144, 5685248, 4358144, + /* 18965 */ 4358144, 5750784, 4358144, 4358144, 4358144, 4358144, 4358144, 5873664, 4358144, 4358144, 4358144, + /* 18976 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6275072, 4358144, 4358144, + /* 18987 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4923392, 4358144, + /* 18998 */ 4358144, 4358144, 4358144, 4358144, 0, 4923392, 0, 0, 0, 0, 4366336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 19021 */ 0, 0, 0, 2755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2766, 0, 0, 0, 0, 0, 0, 4825088, 0, 0, 5177344, 0, 0, + /* 19050 */ 0, 0, 5701632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5808128, 0, 0, 0, 0, 4792320, 4833280, 0, 0, 5701632, 0, + /* 19074 */ 5242880, 0, 0, 0, 0, 0, 0, 0, 5341184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5627904, 5652480, 0, 5701632, + /* 19099 */ 0, 0, 0, 0, 0, 0, 0, 4358144, 4358144, 4358144, 4825088, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19115 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19126 */ 4358144, 4358144, 4358144, 4358144, 5177344, 4358144, 4358144, 4358144, 4358144, 4358144, 5242880, + /* 19137 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5341184, 4358144, 4358144, 4358144, + /* 19148 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5627904, 5652480, + /* 19159 */ 4358144, 5701632, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19170 */ 4358144, 4358144, 483328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4857856, 4874240, 0, 0, 4923392, + /* 19193 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5341184, 4358144, 4358144, 4358144, 4358144, + /* 19204 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5627904, 5652480, 4358144, + /* 19215 */ 5701632, 4358144, 4358144, 5808128, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19226 */ 4358144, 4358144, 4358144, 4358144, 1051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4857856, 4874240, + /* 19248 */ 0, 0, 4923392, 0, 0, 6422528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5619712, 0, 0, 0, 0, 0, 0, 0, 5726208, + /* 19274 */ 5758976, 0, 0, 5791744, 0, 0, 0, 0, 0, 0, 0, 1151, 1278, 0, 0, 0, 0, 0, 0, 1285, 0, 0, 0, 0, 0, 0, 0, + /* 19301 */ 1290, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 848, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 19325 */ 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 0, 6479872, 0, 0, 0, 0, 0, 0, 4358144, 4358144, + /* 19344 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4931584, 4939776, 4358144, + /* 19355 */ 4358144, 4358144, 4358144, 4358144, 4358144, 5054464, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19366 */ 4358144, 4358144, 4358144, 5210112, 4358144, 4358144, 4358144, 4358144, 5292032, 4358144, 4358144, + /* 19377 */ 4358144, 4358144, 5365760, 4358144, 4358144, 4358144, 5455872, 4358144, 4358144, 4358144, 4358144, + /* 19388 */ 4358144, 5554176, 5570560, 5578752, 5619712, 5668864, 4358144, 4358144, 4358144, 5791744, 5816320, + /* 19399 */ 4358144, 5857280, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19410 */ 4358144, 4358144, 4358144, 4358144, 6119424, 4358144, 6168576, 4358144, 4358144, 4358144, 4358144, + /* 19421 */ 6242304, 4358144, 6291456, 4358144, 6316032, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19432 */ 4358144, 4358144, 4358144, 6463488, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 0, 0, + /* 19449 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4931584, 0, 0, 0, 0, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, + /* 19474 */ 4358144, 6463488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4931584, 4939776, 0, 0, 0, 0, 0, 0, + /* 19499 */ 5054464, 0, 0, 0, 0, 0, 0, 0, 0, 5210112, 0, 0, 0, 0, 5292032, 0, 0, 0, 0, 5365760, 0, 0, 0, 5455872, 0, + /* 19524 */ 0, 0, 0, 0, 5554176, 5570560, 5578752, 5619712, 5668864, 0, 5578752, 5619712, 5668864, 0, 0, 0, 5791744, + /* 19541 */ 5816320, 0, 5857280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6119424, 0, 6168576, 0, 0, 0, 0, 0, 6242304, + /* 19566 */ 0, 6291456, 0, 6316032, 0, 6291456, 0, 6316032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6463488, 4358144, 4358144, + /* 19586 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4931584, 4939776, + /* 19597 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 491520, + /* 19609 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4857856, 4874240, 0, 0, 4923392, 5578752, 5619712, 5668864, + /* 19632 */ 4358144, 4358144, 4358144, 5791744, 5816320, 4358144, 5857280, 4358144, 4358144, 4358144, 4358144, + /* 19643 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6119424, 4358144, + /* 19654 */ 6168576, 4358144, 4358144, 4358144, 4358144, 4358144, 6242304, 4956160, 4964352, 0, 0, 0, 0, 0, 0, 0, 0, + /* 19671 */ 0, 0, 5218304, 0, 0, 0, 0, 5799936, 0, 5881856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6373376, 6389760, 0, 0, 0, 0, + /* 19696 */ 0, 1758, 0, 0, 1761, 0, 1763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 977, 0, 0, 0, + /* 19728 */ 0, 0, 0, 0, 0, 0, 0, 0, 6488064, 6103040, 0, 0, 0, 0, 0, 6184960, 5316608, 0, 0, 5644288, 0, 0, 0, 0, 0, + /* 19753 */ 0, 0, 0, 0, 0, 6217728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3384, 0, 0, 0, 3388, 0, 0, 0, 0, 0, 3394, 0, 0, 0, 0, + /* 19783 */ 0, 0, 0, 0, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, 0, 0, 0, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 19813 */ 5390336, 5308416, 5488640, 0, 0, 5070848, 5431296, 0, 6430720, 0, 0, 5160960, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 19834 */ 0, 0, 4784128, 0, 0, 0, 0, 0, 0, 0, 0, 3623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 19866 */ 0, 0, 0, 0, 2359296, 417, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6283264, 6332416, 0, 0, 0, 5881856, 0, 5382144, + /* 19890 */ 0, 0, 0, 0, 0, 0, 6266880, 4784128, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19905 */ 4358144, 4915200, 4358144, 4956160, 4972544, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 19916 */ 5070848, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5218304, 4358144, 5267456, + /* 19927 */ 4358144, 4358144, 5308416, 5316608, 4358144, 4358144, 4358144, 5431296, 4358144, 5488640, 4358144, + /* 19938 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5799936, 4358144, 4358144, 5881856, + /* 19949 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6103040, 4358144, + /* 19960 */ 4358144, 4358144, 6184960, 4358144, 4358144, 6283264, 4358144, 4358144, 6332416, 4358144, 4358144, + /* 19971 */ 4358144, 6389760, 4358144, 4358144, 6430720, 6438912, 4358144, 4358144, 4358144, 6266880, 6488064, 0, 0, + /* 19984 */ 0, 6266880, 6488064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3149, 0, 0, 0, 0, 3154, 0, 0, 0, 0, 0, + /* 20013 */ 0, 0, 0, 0, 0, 0, 4358144, 6430720, 6438912, 0, 0, 0, 0, 0, 0, 4784128, 0, 0, 0, 4849664, 0, 0, 0, 0, 0, + /* 20038 */ 4915200, 0, 4956160, 4972544, 0, 0, 0, 0, 0, 0, 5070848, 0, 0, 0, 0, 0, 0, 0, 5218304, 0, 0, 6103040, 0, + /* 20061 */ 0, 0, 6184960, 0, 0, 0, 6283264, 0, 0, 6332416, 0, 0, 0, 6389760, 0, 0, 6430720, 6438912, 4784128, + /* 20080 */ 4358144, 4358144, 4358144, 4849664, 4358144, 4358144, 4358144, 4358144, 4358144, 4915200, 0, 5660672, + /* 20092 */ 5718016, 0, 5865472, 0, 0, 6037504, 0, 0, 6078464, 0, 0, 6340608, 0, 6455296, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20115 */ 0, 0, 0, 0, 0, 0, 0, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5472256, 0, 0, 0, + /* 20146 */ 6209536, 0, 0, 0, 0, 6176768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4898816, 0, 5709824, 0, 0, 0, 0, + /* 20173 */ 0, 1790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2348, + /* 20205 */ 0, 0, 0, 0, 0, 0, 0, 0, 5283840, 0, 0, 0, 0, 5251072, 0, 6414336, 5832704, 0, 5955584, 0, 0, 4358144, + /* 20227 */ 4358144, 4841472, 4358144, 4358144, 4358144, 4898816, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 20238 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368640, 0, 0, 0, 0, 0, 0, + /* 20260 */ 4857856, 4874240, 0, 0, 4923392, 4358144, 5111808, 4358144, 4358144, 4358144, 4358144, 4358144, 5283840, + /* 20273 */ 4358144, 4358144, 4358144, 4358144, 5472256, 5521408, 4358144, 4358144, 4358144, 5595136, 5709824, + /* 20284 */ 5718016, 4358144, 5824512, 5865472, 4358144, 4358144, 5922816, 4358144, 4358144, 6021120, 4358144, + /* 20295 */ 6037504, 4358144, 4358144, 6078464, 6111232, 4358144, 6176768, 6209536, 4358144, 6234112, 4358144, + /* 20306 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20323 */ 0, 3408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1172, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20356 */ 0, 4358144, 6078464, 6111232, 4358144, 6176768, 6209536, 6234112, 4358144, 4358144, 4358144, 4358144, + /* 20368 */ 4358144, 4358144, 4358144, 0, 0, 0, 0, 4841472, 0, 0, 0, 4898816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, + /* 20393 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 388, 0, 139264, 147456, 0, 0, 0, 0, 0, 6037504, 0, 0, 6078464, 6111232, 0, + /* 20418 */ 6176768, 6209536, 0, 6234112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4841472, 0, 0, 0, 4898816, 0, 0, 0, 0, 0, + /* 20443 */ 0, 0, 0, 3773, 0, 3627, 3775, 0, 0, 3778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, + /* 20471 */ 521, 521, 521, 4024, 521, 4026, 521, 521, 4028, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, + /* 20489 */ 6021120, 0, 6037504, 0, 0, 6078464, 6111232, 0, 6176768, 6209536, 0, 6234112, 0, 0, 0, 0, 0, 0, 0, + /* 20508 */ 4358144, 4358144, 4841472, 4358144, 4358144, 4358144, 4898816, 4358144, 4358144, 4358144, 4358144, + /* 20519 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 499712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20539 */ 0, 0, 0, 4857856, 4874240, 0, 0, 4923392, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 5111808, + /* 20554 */ 4358144, 4358144, 4358144, 4358144, 4358144, 5283840, 4358144, 4358144, 4358144, 4358144, 5472256, + /* 20565 */ 5521408, 4358144, 4358144, 4358144, 4358144, 5595136, 5709824, 5718016, 4358144, 5824512, 5865472, + /* 20576 */ 4358144, 4358144, 5922816, 0, 5029888, 5038080, 0, 0, 5103616, 5201920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20597 */ 0, 0, 6406144, 5357568, 0, 5505024, 0, 0, 0, 0, 0, 5890048, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, + /* 20620 */ 521, 521, 521, 1873, 521, 521, 521, 521, 521, 521, 521, 521, 1884, 521, 521, 521, 521, 521, 521, 521, 521, + /* 20641 */ 521, 3216, 521, 521, 521, 521, 0, 0, 57886, 57886, 57886, 57886, 57886, 60569, 57886, 60570, 57886, 57886, + /* 20659 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58842, 57886, 57886, 57886, 57886, 50657, 58754, 977, + /* 20674 */ 57909, 57909, 58854, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 20689 */ 57909, 59962, 59963, 57909, 57909, 57909, 57909, 57909, 57909, 59970, 57909, 57909, 57909, 57909, 57909, + /* 20704 */ 57909, 57909, 57909, 57909, 57909, 0, 6160384, 0, 5095424, 5349376, 0, 5275648, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20725 */ 0, 0, 5947392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20758 */ 0, 0, 0, 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6471680, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, + /* 20783 */ 4358144, 4358144, 4358144, 4358144, 4997120, 4358144, 4358144, 5038080, 4358144, 4358144, 4358144, + /* 20794 */ 5095424, 5103616, 4358144, 4358144, 5201920, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 20805 */ 4358144, 4358144, 4358144, 4358144, 4358144, 5890048, 4358144, 4358144, 4358144, 6029312, 4358144, + /* 20816 */ 4358144, 4358144, 4358144, 6160384, 4358144, 4358144, 4358144, 4358144, 5890048, 4358144, 4358144, + /* 20827 */ 4358144, 6029312, 4358144, 4358144, 4358144, 4358144, 6160384, 4358144, 4358144, 4358144, 4358144, + /* 20838 */ 4358144, 4358144, 6406144, 0, 0, 0, 0, 0, 0, 0, 0, 4997120, 0, 0, 5038080, 0, 0, 0, 0, 6406144, 0, 0, 0, + /* 20861 */ 0, 0, 0, 0, 0, 4997120, 0, 0, 5038080, 0, 0, 0, 5095424, 5103616, 0, 0, 5201920, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20886 */ 0, 0, 0, 5890048, 0, 0, 0, 6029312, 0, 0, 0, 0, 6160384, 0, 0, 0, 0, 0, 0, 0, 6406144, 4358144, 4358144, + /* 20909 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4997120, 4358144, 4358144, 4358144, 4358144, + /* 20920 */ 4358144, 4358144, 4358144, 6406144, 4358144, 4358144, 4358144, 0, 0, 0, 4890624, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20939 */ 0, 5898240, 5963776, 0, 0, 6193152, 0, 0, 5406720, 6397952, 5300224, 5234688, 5423104, 0, 0, 0, 0, + /* 20956 */ 5988352, 0, 0, 6135808, 6307840, 0, 5996544, 4800512, 0, 6356992, 0, 0, 0, 5496832, 0, 0, 0, 0, 0, + /* 20975 */ 5611520, 0, 0, 0, 0, 0, 0, 0, 1187, 0, 0, 1190, 1191, 0, 0, 0, 0, 1195, 0, 0, 0, 367, 367, 0, 0, 0, 0, 0, + /* 21003 */ 0, 0, 0, 0, 0, 782, 0, 0, 0, 0, 0, 0, 0, 786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 801, 4947968, 5021696, + /* 21032 */ 5529600, 0, 0, 5169152, 0, 0, 0, 4800512, 4808704, 4358144, 4358144, 4890624, 4358144, 4947968, 4358144, + /* 21047 */ 4358144, 4358144, 5046272, 4358144, 4358144, 4358144, 4358144, 5185536, 4358144, 5234688, 5300224, + /* 21058 */ 4358144, 4358144, 5406720, 5529600, 4358144, 4358144, 4358144, 5898240, 4358144, 4358144, 4358144, + /* 21069 */ 4358144, 4358144, 4358144, 4358144, 6307840, 4358144, 4358144, 6356992, 6381568, 6397952, 4800512, + /* 21080 */ 4808704, 0, 0, 4890624, 0, 4947968, 0, 0, 0, 5046272, 0, 0, 0, 0, 5185536, 0, 5234688, 5300224, 0, 0, + /* 21100 */ 5406720, 5529600, 0, 0, 0, 0, 5898240, 0, 0, 0, 0, 0, 0, 0, 0, 6307840, 0, 0, 6356992, 6381568, 6397952, + /* 21121 */ 4800512, 4808704, 0, 0, 4890624, 0, 0, 6356992, 6381568, 6397952, 4800512, 4808704, 4358144, 4358144, + /* 21135 */ 4890624, 4358144, 4947968, 4358144, 4358144, 4358144, 5046272, 4358144, 4358144, 4358144, 4358144, + /* 21146 */ 5185536, 4358144, 5234688, 5300224, 4358144, 4358144, 5406720, 5529600, 4358144, 4358144, 4358144, + /* 21157 */ 4358144, 4358144, 4358144, 4358144, 4907008, 0, 5079040, 6094848, 0, 0, 0, 4358144, 4907008, 4358144, + /* 21171 */ 5079040, 4358144, 5226496, 4358144, 5742592, 4358144, 4358144, 4358144, 6094848, 0, 4907008, 0, 5079040, + /* 21184 */ 0, 5226496, 5898240, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6307840, + /* 21196 */ 4358144, 4358144, 6356992, 6381568, 6397952, 5021696, 4358144, 4358144, 5021696, 0, 0, 0, 4980736, 0, 0, + /* 21211 */ 0, 0, 0, 5373952, 5734400, 6045696, 0, 0, 0, 0, 0, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21239 */ 0, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 6152192, 0, 0, 0, 6316032, 0, 0, 0, 0, 5816320, 6291456, 0, 0, 0, + /* 21265 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2803, 0, 0, 0, + /* 21298 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6258688, 6447104, 0, 0, 6127616, 0, 6348800, 5906432, 0, 5537792, + /* 21320 */ 3627, 0, 0, 0, 0, 5939200, 0, 0, 5677056, 6365184, 4866048, 0, 6070272, 5545984, 5152768, 0, 0, 6144000, + /* 21338 */ 4358144, 4866048, 4882432, 4358144, 0, 0, 0, 0, 0, 4825088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21363 */ 0, 0, 0, 0, 0, 5177344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5324800, 5373952, 5537792, 5545984, 5586944, 5734400, + /* 21384 */ 5971968, 0, 6045696, 0, 6070272, 0, 0, 0, 0, 6348800, 0, 4866048, 4882432, 0, 4980736, 0, 0, 0, 0, 0, 0, + /* 21405 */ 0, 0, 521, 831, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 877, 521, 521, 521, 521, 895, 521, + /* 21427 */ 521, 57886, 57886, 58249, 0, 5324800, 5373952, 5537792, 5545984, 5586944, 5734400, 5971968, 0, 6045696, 0, + /* 21442 */ 6070272, 0, 0, 0, 0, 6348800, 4358144, 4866048, 4882432, 4358144, 4980736, 4358144, 4358144, 4358144, + /* 21456 */ 4358144, 4358144, 4358144, 4358144, 4358144, 5324800, 5373952, 5537792, 5545984, 5734400, 5971968, + /* 21467 */ 4358144, 6045696, 4358144, 6070272, 4358144, 4358144, 4358144, 6348800, 0, 4866048, 4882432, 0, 4980736, + /* 21480 */ 0, 0, 0, 0, 5537792, 5545984, 5586944, 5734400, 5971968, 4358144, 6045696, 4358144, 6070272, 4358144, + /* 21494 */ 4358144, 4358144, 4358144, 6348800, 4358144, 6144000, 0, 6144000, 0, 4988928, 5005312, 0, 0, 0, 0, + /* 21509 */ 5775360, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 3441, 521, 521, 521, 521, 521, + /* 21532 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3454, 521, 521, 521, 0, 0, 0, 0, 0, 0, 57886, + /* 21554 */ 57886, 60242, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60250, 57886, + /* 21569 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60293, 57886, 57886, 57886, 60296, 60297, 57886, + /* 21584 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 57909, + /* 21601 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59917, 57909, 57909, 57909, 57909, 57909, + /* 21616 */ 57909, 57909, 5693440, 0, 6496256, 5144576, 5136384, 0, 5914624, 4358144, 4358144, 5005312, 4358144, + /* 21629 */ 4358144, 4358144, 5120000, 5136384, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 21640 */ 4358144, 4358144, 6324224, 0, 0, 5005312, 0, 0, 0, 5120000, 5136384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21661 */ 6324224, 0, 0, 5005312, 0, 0, 0, 5120000, 5136384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6324224, 4358144, 0, 0, + /* 21684 */ 900, 900, 900, 4825988, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + /* 21704 */ 900, 900, 900, 900, 5178244, 900, 900, 900, 900, 900, 5219204, 900, 5268356, 900, 900, 5309316, 5317508, + /* 21721 */ 900, 900, 900, 5432196, 900, 5489540, 900, 900, 900, 900, 900, 900, 900, 900, 900, 5800836, 900, 900, + /* 21739 */ 5882756, 900, 4358144, 5005312, 4358144, 4358144, 4358144, 5120000, 5136384, 4358144, 4358144, 4358144, + /* 21751 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6324224, 5914624, 5914624, 0, 0, 0, 0, 0, + /* 21766 */ 5513216, 5783552, 0, 3627, 0, 0, 0, 0, 0, 0, 1759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1772, 0, 1774, 0, + /* 21793 */ 0, 0, 1778, 0, 0, 0, 1782, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 21810 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21829 */ 0, 0, 0, 0, 0, 4857856, 4874240, 0, 0, 4923392, 0, 5013504, 0, 0, 6053888, 0, 0, 0, 0, 6012928, 4358144, + /* 21850 */ 4358144, 5013504, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 21861 */ 6053888, 4358144, 4358144, 0, 0, 5013504, 0, 0, 0, 0, 0, 0, 685, 0, 0, 0, 0, 0, 0, 692, 367, 367, 367, 0, + /* 21885 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 705, 0, 0, 0, 0, 0, 0, 0, 0, 6053888, 0, 0, 0, 0, 0, 5013504, 0, 0, 0, 0, 0, + /* 21916 */ 0, 0, 0, 0, 6053888, 0, 0, 0, 4358144, 4358144, 5013504, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 21932 */ 4358144, 4358144, 5799936, 4358144, 4358144, 5881856, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 21943 */ 4358144, 4358144, 4358144, 4358144, 6103040, 4358144, 4358144, 4358144, 6184960, 4358144, 4358144, + /* 21954 */ 4358144, 6283264, 4358144, 4358144, 6332416, 4358144, 4358144, 4358144, 4358144, 4358144, 6053888, + /* 21965 */ 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, 5193728, + /* 21981 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 0, 4857856, 4874240, 0, + /* 21998 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259264, 0, 0, 0, 0, 0, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, + /* 22023 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 22034 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 901, 0, 0, 0, 0, 0, 4857856, 4874240, 0, 0, 0, 0, + /* 22053 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259264, 0, 0, 0, 0, 0, 0, 0, 0, 5414912, 0, 5447680, 0, 5464064, 0, 5480448, + /* 22078 */ 5562368, 0, 0, 0, 5636096, 0, 5685248, 0, 0, 5750784, 0, 0, 0, 0, 0, 5873664, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22103 */ 5193728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5193728, 0, 0, 0, 0, 0, 0, 0, 0, 4358144, 4358144, + /* 22128 */ 4358144, 4358144, 4358144, 5193728, 4358144, 0, 1959, 0, 0, 0, 4825088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22150 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5177344, 0, 0, 0, 0, 0, 0, 715, 0, 717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22182 */ 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22214 */ 0, 1250, 1252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 362, 0, 0, 0, 0, 0, 0, 367, + /* 22246 */ 0, 295, 0, 0, 5742592, 0, 0, 0, 6094848, 0, 0, 4907008, 0, 5079040, 0, 5226496, 0, 5742592, 0, 0, 0, + /* 22267 */ 6094848, 0, 4358144, 4907008, 4358144, 5079040, 4358144, 5226496, 4358144, 5742592, 4358144, 4358144, + /* 22279 */ 4358144, 6094848, 4358144, 5062656, 0, 0, 0, 4358144, 5062656, 4358144, 4358144, 4358144, 4358144, + /* 22292 */ 4358144, 0, 5062656, 0, 0, 0, 0, 0, 6225920, 0, 5062656, 0, 0, 0, 0, 0, 6225920, 4358144, 5062656, + /* 22311 */ 4358144, 4358144, 4358144, 0, 900, 0, 0, 0, 0, 0, 4857856, 4874240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22336 */ 5259264, 0, 0, 0, 0, 0, 0, 0, 746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, 0, 0, 0, 0, 0, 0, 0, + /* 22368 */ 0, 521, 521, 521, 521, 521, 521, 521, 521, 2396, 521, 521, 521, 521, 2400, 521, 521, 521, 521, 521, 521, + /* 22389 */ 521, 521, 521, 521, 521, 3199, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 22410 */ 521, 521, 521, 521, 521, 1390, 521, 521, 1394, 521, 521, 521, 521, 521, 1401, 521, 521, 4358144, 4358144, + /* 22429 */ 4358144, 6225920, 0, 0, 0, 4816896, 4358144, 4358144, 4358144, 4358144, 6086656, 4816896, 0, 0, 0, 0, + /* 22445 */ 6086656, 4816896, 0, 0, 0, 0, 6086656, 4816896, 4358144, 4358144, 4358144, 4358144, 6086656, 5087232, 0, + /* 22460 */ 5931008, 4358144, 5332992, 5980160, 4358144, 0, 5332992, 5980160, 0, 0, 5332992, 5980160, 0, 4358144, + /* 22474 */ 5332992, 5980160, 4358144, 5439488, 5128192, 4358144, 5128192, 0, 5128192, 0, 5128192, 4358144, 4358144, + /* 22487 */ 0, 0, 4358144, 4358144, 0, 0, 4358144, 6004736, 6004736, 6004736, 6004736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22508 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 0, 0, 0, 0, 0, 0, 1294, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, + /* 22540 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2816, 0, 0, 0, 0, 0, 131072, 0, 0, 0, + /* 22573 */ 0, 0, 0, 0, 0, 0, 0, 0, 221645, 221645, 221645, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, + /* 22595 */ 461, 461, 221645, 461, 221645, 221645, 221645, 461, 221645, 221645, 221645, 221645, 221645, 221645, 0, 0, + /* 22611 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221645, + /* 22642 */ 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22669 */ 0, 0, 0, 0, 0, 3390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22702 */ 1780, 0, 0, 0, 0, 0, 0, 0, 4268032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22734 */ 0, 0, 0, 0, 0, 0, 3414, 0, 0, 0, 0, 3418, 0, 0, 0, 0, 3423, 0, 0, 0, 0, 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, + /* 22765 */ 0, 0, 0, 0, 0, 0, 237568, 301, 0, 305, 237568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 302, 0, 0, 0, 0, 0, + /* 22795 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, + /* 22829 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, 305, 237982, 147456, 0, 0, 0, 305, 0, 0, 0, 0, 0, + /* 22858 */ 2334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2349, 0, 0, 0, 0, 0, 0, 0, 3406, 0, 0, + /* 22890 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3420, 3421, 0, 0, 0, 0, 3426, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, + /* 22921 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 516096, 0, 0, 0, 0, 305, + /* 22953 */ 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + /* 22974 */ 305, 305, 305, 0, 305, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 1870, 521, 521, 521, 521, 521, 521, + /* 22997 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2453, 521, 521, 521, 2456, 521, 521, + /* 23018 */ 521, 521, 521, 2461, 521, 305, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 65536, 302, 0, 4268032, 98304, + /* 23040 */ 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23073 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 23084 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4210978, 24578, 3, 0, 0, 296, 0, 0, 0, 0, 296, 0, 0, + /* 23103 */ 0, 0, 0, 0, 0, 0, 0, 245760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + /* 23135 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 245760, 0, 0, 0, 0, 245760, 0, 245760, 0, 245760, + /* 23162 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23195 */ 4210978, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23220 */ 0, 0, 0, 0, 0, 0, 0, 212992, 0, 212992, 212992, 212992, 212992, 212992, 212992, 212992, 212992, 212992, + /* 23238 */ 212992, 212992, 212992, 212992, 212992, 212992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1768, + /* 23262 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1270, 0, 0, + /* 23295 */ 2059, 0, 0, 0, 4825088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5177344, 0, 0, 0, 0, + /* 23325 */ 0, 0, 0, 1730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 310, 0, 0, 0, + /* 23358 */ 310, 310, 311, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262144, 0, 0, 0, 0, 0, + /* 23388 */ 0, 0, 0, 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 657, 0, 0, 0, 0, 0, + /* 23421 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 673, 674, 0, 0, 0, 0, 0, 0, 262144, 262144, 262144, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23450 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 301, 0, 0, 0, 262144, 0, 262731, 262731, + /* 23479 */ 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, + /* 23492 */ 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, 262731, 0, 262731, 0, 0, 0, 0, 0, + /* 23509 */ 521, 521, 521, 521, 521, 3439, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 23530 */ 521, 521, 521, 521, 521, 521, 3670, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 23548 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60591, 57886, 57886, 57886, 57886, 57886, 57886, + /* 23563 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59853, 57886, 57886, 57886, 57886, + /* 23578 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60298, 57886, 57886, + /* 23593 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 262731, 1, 24578, 3, 0, + /* 23612 */ 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23640 */ 245760, 245760, 245760, 245760, 245760, 245760, 245760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278528, 278528, 0, + /* 23660 */ 0, 131072, 278528, 0, 0, 0, 278528, 0, 0, 0, 0, 278528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23689 */ 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, 384, 0, 278528, 278528, 278528, 278528, 278528, 278528, + /* 23711 */ 278528, 278528, 278528, 278528, 278528, 278528, 278528, 278528, 278528, 278528, 278528, 278528, 278528, + /* 23724 */ 278528, 278528, 278528, 278528, 278528, 278528, 278528, 278528, 0, 278528, 0, 0, 0, 0, 0, 521, 521, 521, + /* 23742 */ 521, 3438, 521, 521, 521, 521, 3442, 521, 521, 521, 521, 521, 521, 521, 3448, 521, 521, 521, 521, 521, + /* 23762 */ 521, 521, 521, 521, 1901, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 23783 */ 521, 521, 521, 1921, 521, 521, 278528, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, + /* 23805 */ 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262144, 0, 0, 0, 0, 0, 0, 262144, 262144, 0, 0, 0, + /* 23834 */ 0, 0, 0, 0, 0, 0, 0, 0, 262144, 262144, 0, 262144, 0, 0, 0, 139264, 147456, 262144, 0, 0, 0, 0, 0, 0, 0, + /* 23859 */ 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 302, 0, + /* 23892 */ 0, 0, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 631, 0, 4268032, 305, 634, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23919 */ 0, 0, 0, 0, 0, 0, 0, 532480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23952 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1506, 0, 0, + /* 23984 */ 0, 0, 0, 4857856, 4874240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 24014 */ 0, 0, 0, 0, 0, 0, 0, 0, 2810, 2811, 0, 0, 0, 0, 0, 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 24045 */ 286720, 302, 0, 306, 286720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 733, + /* 24074 */ 0, 0, 0, 0, 733, 0, 739, 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, + /* 24106 */ 306, 139264, 287138, 0, 0, 0, 306, 0, 0, 0, 0, 0, 2386, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 24130 */ 521, 521, 521, 521, 521, 521, 2402, 521, 2404, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 57886, 57886, + /* 24151 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59830, 57886, 57886, 57886, + /* 24166 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60836, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 24181 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60274, + /* 24196 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 306, 306, 306, 306, 306, + /* 24214 */ 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 0, + /* 24235 */ 306, 0, 0, 0, 0, 0, 521, 521, 521, 3437, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 24258 */ 521, 3449, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3464, 521, 3466, 521, 521, 521, 521, 521, 521, + /* 24278 */ 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, + /* 24293 */ 61250, 57909, 57909, 61252, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 24308 */ 57909, 57909, 57909, 57936, 57936, 57936, 57936, 59994, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 24323 */ 57936, 57936, 57936, 57936, 57936, 57936, 306, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 66168, 0, + /* 24344 */ 4268032, 305, 98939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 540672, 0, 0, 0, 0, 0, 0, 0, 540672, 0, + /* 24372 */ 0, 0, 0, 0, 0, 0, 0, 0, 122880, 0, 4268032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 24404 */ 0, 0, 0, 0, 0, 0, 0, 0, 2352, 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, 303, 303, 0, 0, + /* 24435 */ 303, 303, 295215, 303, 303, 303, 303, 303, 303, 303, 303, 303, 295215, 373, 303, 303, 303, 303, 303, 303, + /* 24455 */ 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, + /* 24476 */ 303, 303, 303, 303, 303, 368, 303, 0, 295215, 303, 303, 303, 303, 295285, 295215, 295215, 295215, 295215, + /* 24494 */ 295215, 295215, 303, 303, 303, 303, 303, 303, 295285, 295215, 295215, 295215, 303, 303, 303, 295285, + /* 24510 */ 139264, 147456, 295215, 295215, 303, 303, 295215, 303, 303, 131072, 303, 303, 303, 303, 295215, 303, 303, + /* 24527 */ 303, 303, 295215, 303, 295215, 295215, 295215, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, + /* 24546 */ 303, 303, 303, 295215, 295215, 295215, 295215, 295215, 295215, 303, 303, 303, 295215, 303, 303, 303, 303, + /* 24563 */ 303, 303, 303, 303, 303, 303, 303, 303, 303, 295215, 303, 295215, 295215, 295215, 295215, 295215, 295215, + /* 24580 */ 295215, 303, 0, 303, 0, 303, 303, 303, 295215, 303, 303, 303, 295215, 295215, 303, 295215, 303, 295215, + /* 24598 */ 295215, 295215, 295215, 295215, 295215, 295215, 295215, 295285, 295285, 295285, 295285, 295285, 295285, + /* 24611 */ 295285, 295285, 295285, 295285, 295285, 295285, 295285, 295285, 295285, 295285, 295285, 295285, 295285, + /* 24624 */ 295215, 295215, 295215, 295215, 295215, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, + /* 24644 */ 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4358144, 4359045, 4358144, 4358144, 4358144, + /* 24666 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 24677 */ 4358144, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319488, 0, 0, 0, 0, 0, + /* 24707 */ 0, 0, 0, 0, 352256, 0, 352256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, + /* 24738 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319488, 0, 0, 0, 0, 0, 0, 319488, 319488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 24768 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1743, 0, 0, 0, 0, 0, 0, 0, 1751, 1752, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, + /* 24799 */ 0, 0, 0, 0, 0, 319488, 0, 0, 0, 319488, 319488, 319488, 319488, 319488, 319488, 319488, 319488, 319488, + /* 24817 */ 319488, 319488, 319488, 319488, 319488, 319488, 0, 0, 0, 0, 319488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319488, + /* 24839 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 319488, 0, 0, 0, 0, 319488, 0, 319488, 319488, 319488, 0, 24578, 3, 0, 0, + /* 24863 */ 4366336, 253952, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 24890 */ 5627904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4284416, 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 24920 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327680, 0, 0, 0, 0, 0, 0, 0, 0, 521, 2389, 521, 521, 521, 521, 521, 521, + /* 24948 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3219, 521, 0, 0, 57886, + /* 24969 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60571, 57886, 57886, 57886, 57886, 57886, 57886, 60579, + /* 24984 */ 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327680, 327680, 327680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25013 */ 327680, 327680, 327680, 327680, 335872, 327680, 327680, 327680, 335872, 327680, 327680, 327680, 327680, + /* 25026 */ 327680, 327680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49716, 0, 0, 0, 0, 0, 327680, 49716, 327680, 1, 24578, 3, 0, 0, + /* 25051 */ 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25078 */ 5627904, 0, 0, 0, 0, 0, 0, 196608, 0, 0, 0, 106496, 0, 0, 4284416, 0, 0, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, + /* 25104 */ 0, 0, 0, 0, 0, 0, 49152, 977, 0, 0, 0, 0, 0, 4857856, 4874240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6463488, 0, 0, + /* 25131 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4931584, 4939776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, + /* 25161 */ 0, 0, 0, 0, 0, 0, 344064, 344064, 344064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344064, 344064, 344064, 344064, + /* 25184 */ 344064, 344064, 344064, 344064, 344064, 344064, 344064, 344064, 344064, 344064, 344064, 344064, 344064, + /* 25197 */ 344064, 344064, 344064, 344064, 344064, 344064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 727, + /* 25222 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344064, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, + /* 25250 */ 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25280 */ 0, 0, 0, 0, 0, 356, 357, 358, 359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 295, 0, 0, 0, 0, 0, 4276224, 1245, + /* 25308 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, + /* 25340 */ 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352256, 0, 0, 0, 0, 0, 0, + /* 25372 */ 0, 0, 0, 0, 0, 0, 139264, 147456, 0, 0, 352256, 0, 0, 0, 0, 0, 0, 131072, 0, 352256, 352256, 0, 0, 352256, + /* 25396 */ 0, 0, 352256, 0, 352256, 0, 352256, 352256, 352256, 352256, 352256, 352256, 352256, 352256, 352256, + /* 25411 */ 352256, 352256, 352256, 352256, 352256, 352256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25435 */ 1197, 0, 367, 367, 0, 1200, 0, 0, 0, 0, 0, 0, 0, 0, 352256, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, + /* 25461 */ 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 0, 0, 0, 0, 0, 0, + /* 25490 */ 0, 0, 0, 0, 0, 0, 706, 0, 0, 1, 291, 3, 0, 0, 0, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25523 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25554 */ 360448, 360448, 360448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 360448, 360448, 360448, 360448, 360448, 360448, + /* 25573 */ 360448, 360448, 360448, 360448, 360448, 360448, 360448, 360448, 360448, 360448, 360448, 360448, 360448, + /* 25586 */ 360448, 360448, 360448, 360448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1226, 0, 0, 0, 0, 0, + /* 25614 */ 0, 0, 0, 0, 0, 0, 0, 0, 360448, 1, 0, 3, 155941, 155941, 295, 0, 629, 0, 0, 0, 301, 302, 0, 4268032, 305, + /* 25639 */ 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 0, 0, 0, 0, 698, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25671 */ 0, 0, 0, 0, 0, 1212, 0, 0, 0, 0, 1217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25704 */ 0, 1806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4276224, 1245, 0, 0, 0, 0, 0, + /* 25735 */ 0, 0, 0, 0, 0, 0, 0, 1259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25768 */ 0, 0, 0, 0, 0, 1188, 0, 58796, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 25786 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 25801 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59402, 521, 58754, 0, 57886, 57886, 57886, 57886, 57886, + /* 25817 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 25832 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58826, 57886, 57886, 50657, 0, 57909, + /* 25847 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 25862 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59502, + /* 25877 */ 57886, 0, 2281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25910 */ 739, 0, 0, 0, 2357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25944 */ 0, 3428, 0, 57909, 59926, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 25960 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 25975 */ 57909, 57909, 57909, 57909, 58906, 57909, 57909, 59952, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 25990 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 26005 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57886, 57936, 60009, 57936, 57936, + /* 26020 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 26035 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, + /* 26050 */ 60035, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 26065 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 26080 */ 57936, 57936, 57936, 60937, 521, 3212, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 0, 0, + /* 26100 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 26115 */ 57886, 59387, 59388, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 26130 */ 57886, 57886, 57886, 57886, 57886, 60604, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 26145 */ 57886, 57886, 57886, 57886, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 26161 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60320, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 26176 */ 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60702, 57936, 57936, + /* 26191 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, + /* 26207 */ 57886, 0, 0, 0, 0, 0, 0, 0, 3612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3381, 0, 0, 0, 0, 0, 0, 0, + /* 26239 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 369, 0, 0, 0, 57886, 57886, 60830, 57886, + /* 26268 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 26283 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60853, 57886, + /* 26298 */ 57886, 57936, 57936, 57936, 57936, 60914, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 26313 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 26328 */ 57936, 57936, 57936, 60057, 57936, 57936, 57936, 57936, 61027, 57886, 57886, 57886, 57886, 57886, 57886, + /* 26343 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 26358 */ 57886, 57886, 57886, 57886, 57886, 57909, 61045, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 26373 */ 57909, 60634, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 26388 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59493, 57909, 57909, 57909, 57909, 57909, + /* 26403 */ 57909, 57909, 57909, 57886, 61048, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61056, + /* 26418 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 26433 */ 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60378, 57936, + /* 26448 */ 57936, 57936, 57886, 57886, 57886, 57886, 61156, 57886, 57886, 57886, 57886, 61157, 61158, 57886, 57886, + /* 26463 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 26478 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 26493 */ 59997, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57909, 61175, 57909, 57909, + /* 26508 */ 57909, 57909, 61176, 61177, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, + /* 26523 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61194, 57936, 0, 0, 0, 0, + /* 26540 */ 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, + /* 26557 */ 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61078, 61079, + /* 26572 */ 57936, 57936, 57936, 57936, 61083, 61084, 57936, 57936, 57936, 57936, 57936, 61088, 57936, 57936, 57936, + /* 26587 */ 57936, 57936, 57936, 57936, 57936, 57936, 61195, 61196, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 26602 */ 57936, 57936, 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 26630 */ 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 3177, 521, 521, 521, 521, 521, 521, 3184, 521, 3186, 521, 521, + /* 26653 */ 521, 57936, 57936, 57936, 57936, 57936, 61270, 57936, 57936, 57936, 57936, 57936, 57936, 61276, 57936, + /* 26668 */ 57936, 57936, 61280, 57936, 521, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 0, 1791, 0, 0, 0, 0, + /* 26694 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672, 0, 0, 0, 0, 0, 0, 0, 3947, 521, 521, + /* 26726 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 61306, 57886, 57886, 57886, 57886, 57886, + /* 26744 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58312, 57886, 57886, 57886, 0, + /* 26759 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61322, 57909, 57909, + /* 26774 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61338, 57936, + /* 26789 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, + /* 26804 */ 3759, 521, 57886, 61105, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57886, 61439, 57886, 57886, 57886, 57886, + /* 26826 */ 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 61452, 57909, 57909, 57909, 57909, 57909, + /* 26841 */ 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 61465, 57936, 57936, 57936, 57936, 57936, 57936, + /* 26856 */ 57936, 57936, 57936, 60413, 57936, 57936, 57936, 57936, 57936, 57936, 60421, 57936, 57936, 57936, 57936, + /* 26871 */ 57936, 60426, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 0, 4077, 0, 521, + /* 26890 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 0, 0, 521, 521, 521, 521, + /* 26911 */ 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 0, 521, 521, 57886, + /* 26927 */ 57886, 57909, 57909, 57936, 57936, 521, 57886, 57909, 57936, 521, 57886, 57909, 57936, 521, 57886, 57909, + /* 26943 */ 57936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1829, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 26976 */ 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 376832, 376832, 376832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27005 */ 0, 0, 0, 1254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1268, 1269, 0, 0, 0, 0, 0, 419, 419, 419, 419, + /* 27034 */ 590, 590, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, + /* 27055 */ 0, 419, 0, 0, 0, 0, 0, 521, 1866, 521, 521, 521, 521, 521, 521, 1872, 521, 521, 521, 521, 521, 521, 521, + /* 27078 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 0, 0, 57886, 57886, 57886, 57886, 60568, 57886, + /* 27097 */ 57886, 57886, 57886, 57886, 57886, 60575, 57886, 60577, 57886, 57886, 419, 1, 24578, 3, 0, 0, 4366336, 0, + /* 27115 */ 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 0, + /* 27143 */ 696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2817, 0, + /* 27177 */ 0, 0, 4268773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27209 */ 2380, 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27241 */ 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 731, 0, 637, 731, 0, 735, 736, 637, 0, 0, 0, 0, 0, 0, 0, 131072, 0, + /* 27270 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 393678, 393678, 393678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1309, 0, 0, + /* 27299 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 4025, 521, 521, 521, 521, + /* 27324 */ 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 393678, 0, 393678, 393678, 393678, 0, + /* 27341 */ 393678, 393678, 393678, 393678, 393678, 393678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27365 */ 1771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, + /* 27394 */ 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 425984, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27423 */ 0, 0, 0, 0, 0, 0, 521, 521, 521, 3176, 521, 521, 521, 521, 521, 3181, 521, 521, 521, 521, 521, 521, 521, + /* 27446 */ 0, 0, 0, 4268032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 475136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27478 */ 374, 0, 0, 375, 0, 0, 0, 0, 0, 327, 375, 330, 374, 0, 0, 0, 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27508 */ 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 57887, 521, 57887, 521, 521, 57887, + /* 27535 */ 521, 521, 57910, 57887, 521, 521, 57887, 57887, 57887, 57910, 0, 0, 0, 420, 420, 420, 420, 420, 420, 420, + /* 27555 */ 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 0, 420, 0, 0, 0, + /* 27578 */ 0, 0, 521, 3435, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 27600 */ 521, 521, 521, 521, 521, 521, 521, 1916, 521, 521, 521, 521, 521, 521, 420, 1, 24578, 3, 155941, 155941, + /* 27620 */ 295, 0, 0, 0, 0, 0, 301, 302, 0, 304, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 723, 0, 0, 0, 0, + /* 27651 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, 420, 0, + /* 27684 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2791, 0, 0, 1239, 0, + /* 27717 */ 0, 0, 741, 1246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, + /* 27749 */ 521, 521, 1322, 521, 521, 521, 521, 521, 521, 521, 2468, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, + /* 27768 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 27783 */ 57886, 57886, 57886, 60276, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 521, 521, 521, 2468, + /* 27799 */ 2895, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 27816 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60305, 57886, + /* 27831 */ 57886, 0, 0, 0, 2963, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27862 */ 417792, 308, 309, 0, 0, 0, 0, 0, 0, 1815, 0, 0, 0, 0, 0, 0, 0, 0, 1821, 0, 1823, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27891 */ 0, 0, 0, 0, 0, 0, 540672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3127, 0, 0, 0, + /* 27924 */ 0, 3132, 0, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 309, 0, 417792, 417792, 0, 0, 417792, + /* 27950 */ 417792, 417792, 417792, 417792, 417792, 417792, 417792, 417792, 417792, 417792, 417792, 417792, 418101, + /* 27963 */ 417792, 417792, 418100, 418101, 417792, 417792, 418100, 417792, 418100, 417792, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27981 */ 417792, 0, 0, 0, 417792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 28011 */ 0, 0, 0, 0, 0, 0, 0, 1802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417792, 1, 24578, 3, 0, 0, 4366964, 0, + /* 28040 */ 0, 0, 0, 0, 301, 302, 311296, 4268032, 305, 306, 0, 434176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1846, 0, + /* 28066 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1859, 0, 0, 1860, 0, 0, 900, 900, 5415812, 900, 5448580, 900, 5464964, + /* 28091 */ 900, 5481348, 5563268, 900, 900, 900, 5636996, 900, 5686148, 900, 900, 5751684, 900, 900, 900, 900, 900, + /* 28108 */ 5874564, 900, 900, 900, 900, 900, 900, 900, 900, 900, 6464388, 0, 0, 0, 0, 976, 976, 976, 976, 976, 976, + /* 28129 */ 976, 976, 976, 976, 976, 4932560, 4940752, 976, 976, 976, 976, 976, 4359044, 4858756, 4875140, 4359044, + /* 28145 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 28156 */ 4359044, 5260164, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 5415812, + /* 28167 */ 4359044, 5448580, 4359044, 5464964, 4359044, 5481348, 5563268, 4359044, 4359044, 4359044, 5636996, + /* 28178 */ 4359044, 5686148, 4359044, 4359044, 5751684, 4359044, 4359044, 4359044, 4359044, 4359044, 5874564, + /* 28189 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 28200 */ 6275972, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 5342084, 4359044, 4359044, 4359044, + /* 28211 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 5628804, 5653380, + /* 28222 */ 4359044, 5702532, 4359044, 4359044, 5809028, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 28233 */ 4359044, 4907008, 0, 5079040, 6094848, 0, 0, 0, 4358144, 4907008, 4358144, 5079040, 4358144, 5226496, + /* 28247 */ 4358144, 5742592, 4358144, 4358144, 4358144, 6094848, 900, 4907908, 900, 5079940, 900, 5227396, 900, + /* 28260 */ 5243780, 900, 900, 900, 900, 900, 900, 900, 5342084, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + /* 28279 */ 900, 900, 5628804, 5653380, 900, 5702532, 900, 900, 900, 900, 900, 900, 5211012, 900, 900, 900, 900, + /* 28296 */ 5292932, 900, 900, 900, 900, 5366660, 900, 900, 900, 5456772, 900, 900, 900, 900, 900, 5555076, 5571460, + /* 28313 */ 5579652, 5620612, 5669764, 900, 0, 0, 976, 976, 976, 4826064, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 28332 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 5178320, 976, 976, 976, 976, 976, 5112784, 976, + /* 28351 */ 976, 976, 976, 976, 5284816, 976, 976, 976, 976, 5473232, 5522384, 976, 976, 976, 976, 5596112, 5710800, + /* 28368 */ 5718992, 976, 5825488, 5866448, 976, 976, 5923792, 976, 5243856, 976, 976, 976, 976, 976, 976, 976, + /* 28384 */ 5342160, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 5628880, 5653456, 976, 5702608, 976, + /* 28402 */ 976, 976, 976, 976, 976, 976, 5260240, 976, 976, 976, 976, 976, 976, 976, 976, 5415888, 976, 5448656, 976, + /* 28421 */ 5465040, 976, 5481424, 5563344, 976, 976, 976, 5637072, 976, 5686224, 976, 976, 5751760, 976, 4358144, + /* 28436 */ 4358144, 4358144, 4358144, 4358144, 6463488, 0, 0, 0, 0, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + /* 28455 */ 900, 4932484, 4940676, 900, 900, 900, 900, 900, 900, 5055364, 900, 900, 5112708, 900, 900, 900, 900, 900, + /* 28473 */ 5284740, 900, 900, 900, 900, 5473156, 5522308, 900, 900, 900, 900, 5596036, 5710724, 5718916, 900, + /* 28488 */ 5825412, 5866372, 900, 900, 5923716, 900, 900, 6022020, 900, 900, 900, 5792644, 5817220, 900, 5858180, + /* 28503 */ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 6120324, 900, 6169476, 900, 900, 900, + /* 28522 */ 900, 900, 6243204, 900, 6292356, 900, 6316932, 976, 5055440, 976, 976, 976, 976, 976, 976, 976, 976, + /* 28539 */ 5211088, 976, 976, 976, 976, 5293008, 976, 976, 976, 976, 5366736, 976, 976, 976, 5456848, 976, 976, 976, + /* 28557 */ 976, 976, 5555152, 5571536, 5579728, 5620688, 5669840, 976, 976, 976, 5792720, 5817296, 976, 5858256, 976, + /* 28572 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 6120400, 976, 6169552, 976, 976, 976, 976, + /* 28591 */ 976, 6243280, 976, 6292432, 976, 6317008, 976, 976, 976, 976, 976, 976, 976, 976, 976, 6464464, 4359044, + /* 28608 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4932484, + /* 28619 */ 4940676, 4359044, 4359044, 4359044, 4359044, 4359044, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 28630 */ 4358144, 0, 900, 900, 900, 900, 900, 900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4857856, 4874240, 0, 0, 4923392, + /* 28652 */ 4359044, 5055364, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 5211012, + /* 28663 */ 4359044, 4359044, 4359044, 4359044, 5292932, 4359044, 4359044, 4359044, 4359044, 5366660, 4359044, + /* 28674 */ 4359044, 4359044, 5456772, 4359044, 4359044, 4359044, 4359044, 4359044, 5555076, 5571460, 5579652, + /* 28685 */ 5620612, 5669764, 4359044, 4359044, 4359044, 5792644, 5817220, 4359044, 5858180, 4359044, 4359044, + /* 28696 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 28707 */ 6120324, 4359044, 6169476, 4359044, 4359044, 4359044, 4359044, 4359044, 6243204, 4359044, 6292356, + /* 28718 */ 4359044, 6316932, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 28729 */ 6464388, 4358144, 4358144, 4358144, 4358144, 4358144, 900, 900, 900, 900, 900, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 28749 */ 0, 0, 0, 0, 0, 0, 0, 4931584, 0, 0, 0, 0, 0, 0, 0, 4358144, 6430720, 6438912, 0, 0, 0, 0, 0, 0, 4785028, + /* 28774 */ 900, 900, 900, 4850564, 900, 900, 900, 900, 900, 4916100, 900, 4957060, 4973444, 900, 900, 900, 900, 900, + /* 28792 */ 900, 5071748, 900, 900, 5194628, 900, 900, 900, 900, 900, 900, 900, 900, 976, 976, 976, 976, 976, 5194704, + /* 28811 */ 976, 976, 976, 976, 976, 976, 976, 976, 4359044, 4359044, 4359044, 4359044, 4359044, 5194628, 4359044, 0, + /* 28827 */ 0, 4785104, 976, 976, 976, 4850640, 976, 976, 976, 976, 976, 4916176, 976, 4957136, 4973520, 976, 976, + /* 28844 */ 976, 976, 976, 976, 5071824, 976, 976, 976, 976, 976, 976, 976, 5219280, 976, 976, 6357968, 6382544, + /* 28861 */ 6398928, 4801412, 4809604, 4359044, 4359044, 4891524, 4359044, 4948868, 4359044, 4359044, 4359044, + /* 28872 */ 5047172, 4359044, 4359044, 4359044, 4359044, 5186436, 4359044, 5235588, 5301124, 4359044, 4359044, + /* 28883 */ 5407620, 5530500, 4359044, 4359044, 4359044, 4359044, 4359044, 4923392, 4358144, 4358144, 4358144, + /* 28894 */ 4358144, 4358144, 900, 4924292, 900, 900, 900, 900, 4366336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 28917 */ 1255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1264, 0, 0, 0, 0, 0, 0, 0, 5268432, 976, 976, 5309392, 5317584, 976, 976, + /* 28942 */ 976, 5432272, 976, 5489616, 976, 976, 976, 976, 976, 976, 976, 976, 976, 5800912, 976, 976, 5882832, 976, + /* 28960 */ 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 4359044, 4359044, 4359044, + /* 28978 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 28989 */ 4359044, 4359044, 976, 6104016, 976, 976, 976, 6185936, 976, 976, 976, 6284240, 976, 976, 6333392, 976, + /* 29005 */ 976, 976, 6390736, 976, 976, 6431696, 6439888, 4785028, 4359044, 4359044, 4359044, 4850564, 4359044, + /* 29018 */ 4359044, 4359044, 4359044, 4359044, 4916100, 4359044, 4957060, 4973444, 4359044, 4359044, 4359044, + /* 29029 */ 4359044, 4359044, 4359044, 5071748, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 29040 */ 5219204, 4359044, 5268356, 4359044, 4359044, 5309316, 5317508, 4359044, 4359044, 4359044, 5432196, + /* 29051 */ 4359044, 5489540, 4359044, 4359044, 4359044, 4359044, 4359044, 6054788, 4359044, 4359044, 4359044, 0, 0, + /* 29064 */ 0, 0, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, 5193728, 4358144, 4358144, 4358144, 4358144, + /* 29079 */ 4358144, 4358144, 4358144, 900, 900, 900, 5096324, 5104516, 900, 900, 5202820, 900, 900, 900, 900, 900, + /* 29095 */ 900, 900, 900, 900, 900, 900, 5890948, 900, 900, 900, 6030212, 900, 900, 900, 900, 6161284, 900, 900, 900, + /* 29114 */ 900, 6407044, 976, 976, 976, 976, 976, 976, 976, 976, 4998096, 976, 976, 5039056, 976, 976, 976, 5096400, + /* 29132 */ 5104592, 976, 976, 5202896, 976, 976, 976, 976, 976, 976, 976, 5891024, 976, 976, 976, 6030288, 976, 976, + /* 29150 */ 976, 976, 6161360, 976, 976, 976, 976, 976, 976, 976, 6407120, 4359044, 4359044, 4359044, 4359044, + /* 29165 */ 4359044, 4359044, 4359044, 4359044, 4998020, 4359044, 4358144, 6078464, 6111232, 4358144, 6176768, + /* 29176 */ 6209536, 6234112, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, 900, 900, 4842372, + /* 29190 */ 900, 900, 900, 4899716, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + /* 29210 */ 900, 900, 900, 975, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + /* 29231 */ 976, 976, 6300624, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 5809028, 6038404, 900, 900, + /* 29249 */ 6079364, 6112132, 900, 6177668, 6210436, 900, 6235012, 900, 900, 900, 900, 900, 900, 900, 0, 0, 976, 976, + /* 29267 */ 4842448, 976, 976, 976, 4899792, 976, 976, 976, 976, 976, 976, 5874640, 976, 976, 976, 976, 976, 976, 976, + /* 29286 */ 976, 976, 976, 976, 6276048, 976, 976, 976, 976, 976, 976, 976, 976, 976, 0, 900, 4359044, 4359044, + /* 29304 */ 4359044, 4359044, 4359044, 4359044, 5112708, 4359044, 4359044, 4359044, 4359044, 4359044, 5284740, + /* 29315 */ 4359044, 4359044, 4359044, 4359044, 5473156, 5522308, 4359044, 4359044, 4359044, 4359044, 5596036, + /* 29326 */ 5710724, 5718916, 4359044, 5825412, 5866372, 4359044, 4359044, 5923716, 976, 6022096, 976, 6038480, 976, + /* 29339 */ 976, 6079440, 6112208, 976, 6177744, 6210512, 976, 6235088, 976, 976, 976, 976, 976, 976, 976, 4359044, + /* 29355 */ 4359044, 4842372, 4359044, 4359044, 4359044, 4899716, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 29366 */ 4359044, 4359044, 5800836, 4359044, 4359044, 5882756, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 29377 */ 4359044, 4359044, 4359044, 4359044, 6103940, 4359044, 4359044, 4359044, 6185860, 4359044, 4359044, + /* 29388 */ 4359044, 6284164, 4359044, 4359044, 6333316, 4359044, 4359044, 6022020, 4359044, 6038404, 4359044, + /* 29399 */ 4359044, 6079364, 6112132, 4359044, 6177668, 6210436, 4359044, 6235012, 4359044, 4359044, 4359044, + /* 29410 */ 4359044, 4359044, 4359044, 4359044, 4358144, 4358144, 4358144, 900, 900, 900, 0, 0, 0, 0, 0, 0, 0, 1760, + /* 29428 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139264, 147456, 0, 0, 0, 419, + /* 29459 */ 0, 4358144, 4358144, 4358144, 5890048, 4358144, 4358144, 4358144, 6029312, 4358144, 4358144, 4358144, + /* 29471 */ 4358144, 6160384, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6406144, 900, 900, 900, 900, 900, + /* 29485 */ 900, 900, 900, 4998020, 900, 900, 5038980, 4359044, 5038980, 4359044, 4359044, 4359044, 5096324, 5104516, + /* 29499 */ 4359044, 4359044, 5202820, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 29510 */ 4359044, 4359044, 4359044, 5890948, 4359044, 4359044, 4359044, 6030212, 4359044, 4359044, 4359044, + /* 29521 */ 4359044, 6161284, 4359044, 4359044, 4359044, 6226820, 0, 0, 0, 4816896, 4358144, 4358144, 4358144, + /* 29534 */ 4358144, 6086656, 4817796, 900, 900, 900, 900, 6087556, 4817872, 976, 976, 976, 976, 6087632, 4817796, + /* 29549 */ 4359044, 4359044, 4359044, 4359044, 6087556, 5087232, 4358144, 4358144, 4358144, 5898240, 4358144, + /* 29560 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6307840, 4358144, 4358144, 6356992, 6381568, + /* 29571 */ 6397952, 4801412, 4809604, 900, 900, 4891524, 900, 4948868, 900, 900, 900, 5047172, 900, 900, 900, 900, + /* 29587 */ 900, 6054788, 900, 900, 900, 976, 976, 5014480, 976, 976, 976, 976, 976, 976, 976, 976, 976, 6054864, 976, + /* 29606 */ 976, 976, 4359044, 4359044, 5014404, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 6407044, + /* 29618 */ 4358144, 4358144, 4358144, 900, 900, 900, 4890624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5898240, 5963776, 0, 0, + /* 29638 */ 6193152, 0, 0, 5406720, 6397952, 5186436, 900, 5235588, 5301124, 900, 900, 5407620, 5530500, 900, 900, + /* 29653 */ 900, 900, 5899140, 900, 900, 900, 900, 900, 900, 900, 900, 6308740, 900, 900, 6357892, 6382468, 6398852, + /* 29670 */ 4801488, 4809680, 976, 976, 4891600, 976, 4948944, 976, 976, 976, 5047248, 976, 976, 976, 976, 5186512, + /* 29686 */ 976, 5235664, 5301200, 976, 976, 5407696, 5530576, 976, 976, 976, 976, 5899216, 976, 976, 976, 976, 976, + /* 29703 */ 976, 976, 976, 6308816, 5899140, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 29716 */ 6308740, 4359044, 4359044, 6357892, 6382468, 6398852, 5021696, 4358144, 4358144, 5022596, 900, 900, 0, + /* 29729 */ 4980736, 0, 0, 0, 0, 0, 5373952, 5734400, 6045696, 0, 0, 0, 0, 0, 2771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 29755 */ 0, 0, 0, 0, 0, 2785, 0, 2786, 0, 0, 0, 0, 0, 0, 0, 0, 1843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 29787 */ 0, 0, 0, 0, 0, 0, 0, 0, 1263, 0, 0, 0, 0, 0, 0, 0, 0, 4980736, 4358144, 4358144, 4358144, 4358144, + /* 29809 */ 4358144, 4358144, 4358144, 4358144, 5324800, 5373952, 5537792, 5545984, 5734400, 5971968, 4358144, + /* 29820 */ 6045696, 4358144, 6070272, 4358144, 4358144, 4358144, 6348800, 900, 4866948, 4883332, 900, 4981636, 900, + /* 29833 */ 900, 900, 900, 5325700, 5374852, 5538692, 5546884, 5587844, 5735300, 5972868, 900, 6046596, 900, 6071172, + /* 29847 */ 900, 900, 900, 900, 6349700, 976, 4867024, 4883408, 976, 4981712, 976, 976, 976, 976, 976, 976, 976, 976, + /* 29865 */ 5325776, 5374928, 5538768, 5546960, 5587920, 5735376, 5972944, 976, 6046672, 976, 6071248, 976, 976, 976, + /* 29879 */ 976, 6349776, 4359044, 4866948, 4883332, 4359044, 4981636, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 29891 */ 4359044, 4359044, 4359044, 5325700, 5374852, 5538692, 5546884, 5587844, 5735300, 5972868, 4359044, + /* 29902 */ 6046596, 4359044, 6071172, 4359044, 4359044, 4359044, 4359044, 6349700, 4358144, 6144000, 900, 6144900, 0, + /* 29915 */ 4988928, 5005312, 0, 0, 0, 0, 5775360, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 655, 0, 0, 521, 521, 521, 521, 521, + /* 29939 */ 845, 521, 521, 861, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 29958 */ 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 29973 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59499, + /* 29988 */ 57909, 57909, 57909, 57886, 5693440, 0, 6496256, 5144576, 5136384, 0, 5914624, 4358144, 4358144, 5005312, + /* 30002 */ 4358144, 4358144, 4358144, 5120000, 5136384, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 30013 */ 4358144, 4358144, 4358144, 6324224, 900, 900, 5006212, 900, 900, 900, 5120900, 5137284, 900, 900, 900, + /* 30028 */ 900, 900, 900, 900, 900, 900, 900, 6325124, 976, 976, 5006288, 976, 976, 976, 5120976, 5137360, 976, 976, + /* 30046 */ 976, 976, 976, 976, 976, 976, 976, 976, 6325200, 4359044, 4359044, 4359044, 6390660, 4359044, 4359044, + /* 30061 */ 6431620, 6439812, 4358144, 4358144, 4358144, 6266880, 6488064, 900, 900, 900, 6267780, 6488964, 0, 0, 0, + /* 30076 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1767, 0, 0, 0, 0, 0, 1773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4359044, + /* 30106 */ 5006212, 4359044, 4359044, 4359044, 5120900, 5137284, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 30117 */ 4359044, 4359044, 4359044, 4359044, 4359044, 6325124, 5914624, 5915524, 0, 0, 0, 0, 0, 5513216, 5783552, + /* 30132 */ 0, 3627, 0, 0, 0, 0, 0, 0, 2285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30165 */ 0, 1265, 0, 0, 0, 0, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 30182 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 900, 900, 900, 900, 900, 900, 900, 900, + /* 30197 */ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 6300548, 900, 900, 900, 900, 900, 900, 900, + /* 30217 */ 900, 900, 900, 900, 0, 5013504, 0, 0, 6053888, 0, 0, 0, 0, 6012928, 4358144, 4358144, 5013504, 4358144, + /* 30235 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6053888, 4358144, 4358144, 900, + /* 30247 */ 900, 5014404, 900, 900, 900, 900, 6275972, 900, 900, 900, 900, 900, 900, 900, 900, 900, 0, 0, 977, 976, + /* 30267 */ 976, 976, 976, 976, 4858832, 4875216, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 0, 0, 0, 0, 900, + /* 30288 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 30299 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 6300548, 4359044, 4359044, 4359044, + /* 30310 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4358144, 4358144, 900, 5743492, + /* 30322 */ 900, 900, 900, 6095748, 900, 976, 4907984, 976, 5080016, 976, 5227472, 976, 5743568, 976, 976, 976, + /* 30338 */ 6095824, 976, 4359044, 4907908, 4359044, 5079940, 4359044, 5227396, 4359044, 5743492, 4359044, 4359044, + /* 30350 */ 4359044, 6095748, 4359044, 5062656, 0, 0, 0, 4358144, 5062656, 4358144, 4358144, 4358144, 4358144, + /* 30363 */ 4358144, 900, 5063556, 900, 900, 900, 900, 900, 6226820, 976, 5063632, 976, 976, 976, 976, 976, 6226896, + /* 30380 */ 4359044, 5063556, 4359044, 4359044, 4359044, 4825988, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 30391 */ 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, 4359044, + /* 30402 */ 4359044, 4359044, 4359044, 4359044, 5178244, 4359044, 4359044, 4359044, 4359044, 4359044, 5243780, + /* 30413 */ 4359044, 0, 5931008, 4358144, 5332992, 5980160, 4358144, 900, 5333892, 5981060, 900, 976, 5333968, + /* 30426 */ 5981136, 976, 4359044, 5333892, 5981060, 4359044, 5439488, 5128192, 4358144, 5129092, 900, 5129168, 976, + /* 30439 */ 5129092, 4359044, 4358144, 900, 976, 4359044, 4358144, 900, 976, 4359044, 6004736, 6005636, 6005712, + /* 30452 */ 6005636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2345, 0, 0, 0, 0, 0, 2351, 0, + /* 30483 */ 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 450560, + /* 30515 */ 0, 0, 0, 0, 0, 0, 450560, 0, 0, 450560, 0, 450560, 450560, 450560, 450560, 450560, 450560, 0, 0, 0, 0, + /* 30536 */ 131072, 0, 0, 0, 0, 0, 0, 450560, 0, 0, 0, 450560, 0, 450560, 450560, 450560, 450560, 450560, 450560, + /* 30555 */ 450560, 450560, 450560, 450560, 450560, 450560, 450560, 450560, 450560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30575 */ 0, 0, 0, 0, 0, 0, 0, 1824, 0, 0, 0, 0, 0, 0, 1729, 0, 0, 0, 0, 0, 0, 450560, 1, 24578, 3, 0, 0, 4366336, + /* 30603 */ 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1848, 0, 0, 0, 0, + /* 30633 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2359296, 0, 2359296, 0, 0, 0, 2359296, 0, 2359296, 2359296, + /* 30657 */ 2359296, 2359296, 2359296, 2359296, 4358144, 6291456, 4358144, 6316032, 4358144, 4358144, 4358144, + /* 30668 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6463488, 4358144, 4358144, 4358144, 4358144, + /* 30679 */ 4358144, 0, 0, 0, 0, 0, 0, 302, 0, 0, 306, 0, 0, 0, 0, 0, 0, 2335, 0, 0, 0, 0, 0, 2339, 0, 0, 0, 0, 0, 0, + /* 30709 */ 0, 2343, 2344, 0, 0, 0, 0, 0, 2350, 0, 0, 0, 0, 0, 0, 1302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30740 */ 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 2836, 521, 521, 521, 521, 2840, 521, 521, 4358144, 6430720, + /* 30760 */ 6438912, 901, 0, 0, 0, 901, 0, 4784128, 0, 0, 0, 4849664, 0, 0, 0, 0, 0, 4915200, 0, 4956160, 4972544, 0, + /* 30782 */ 0, 0, 0, 0, 0, 5070848, 0, 0, 0, 0, 0, 744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30815 */ 0, 0, 0, 0, 0, 327, 0, 0, 374, 374, 404, 977, 0, 4784128, 0, 0, 0, 4849664, 0, 0, 0, 0, 0, 4915200, 0, + /* 30840 */ 4956160, 4972544, 0, 0, 0, 0, 0, 0, 5070848, 0, 0, 0, 0, 0, 0, 0, 5218304, 0, 5267456, 0, 0, 5308416, + /* 30862 */ 5316608, 0, 0, 0, 5431296, 0, 5488640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5799936, 0, 0, 5881856, 0, 0, 0, 0, 0, + /* 30887 */ 0, 0, 0, 4358144, 6078464, 6111232, 4358144, 6176768, 6209536, 6234112, 4358144, 4358144, 4358144, + /* 30900 */ 4358144, 4358144, 4358144, 4358144, 901, 0, 0, 0, 4841472, 0, 0, 0, 4898816, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30922 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3653, 521, 521, 521, 521, 521, 521, 521, 521, + /* 30943 */ 521, 521, 521, 3218, 521, 521, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 30961 */ 60573, 57886, 60576, 57886, 57886, 57886, 6037504, 0, 0, 6078464, 6111232, 0, 6176768, 6209536, 0, + /* 30976 */ 6234112, 0, 0, 0, 0, 0, 0, 0, 977, 0, 0, 0, 4841472, 0, 0, 0, 4898816, 0, 0, 0, 0, 0, 0, 0, 0, 6103040, 0, + /* 31003 */ 0, 0, 6184960, 0, 0, 0, 6283264, 0, 0, 6332416, 0, 0, 0, 6389760, 0, 0, 6430720, 6438912, 0, 0, 0, 0, 0, + /* 31026 */ 0, 0, 0, 459186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 459215, 459215, 459215, 459215, 459215, 459215, 459215, + /* 31048 */ 459215, 459215, 459215, 459215, 459215, 459215, 459215, 459215, 459215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31068 */ 0, 0, 0, 0, 0, 0, 0, 2291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 459340, 459340, 459340, 459340, + /* 31096 */ 459340, 459340, 459340, 459340, 459340, 459340, 459340, 459340, 459340, 459340, 459340, 459340, 459340, + /* 31109 */ 459340, 459340, 459340, 459340, 459340, 459340, 459340, 459340, 459215, 459372, 459215, 459215, 459372, 1, + /* 31123 */ 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31150 */ 0, 0, 0, 2777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5480448, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31182 */ 0, 5840896, 5849088, 0, 1, 24578, 3, 0, 0, 0, 0, 507904, 0, 0, 0, 507904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31209 */ 0, 0, 0, 0, 0, 0, 0, 507904, 0, 0, 0, 0, 0, 2796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2804, 0, 0, 0, 0, 0, 0, + /* 31241 */ 0, 0, 0, 0, 0, 0, 0, 0, 3385, 3386, 0, 0, 0, 0, 3391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 662, 0, + /* 31273 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2789, 0, 0, 0, 2793, 0, + /* 31305 */ 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507904, 507904, 507904, 507904, 507904, 507904, 507904, + /* 31327 */ 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31347 */ 0, 0, 0, 0, 0, 0, 0, 2781, 0, 0, 2784, 0, 0, 0, 0, 2788, 0, 0, 0, 0, 0, 507904, 1, 24578, 3, 0, 0, + /* 31374 */ 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 442368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31400 */ 658, 0, 0, 661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1225, 0, 0, 0, 0, 0, 0, 0, 1233, 0, 0, + /* 31432 */ 0, 0, 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, 516096, 0, 0, 0, 516096, 0, 0, 0, 0, 0, 0, 516096, 0, 0, 0, 0, 0, + /* 31461 */ 0, 0, 0, 0, 0, 0, 0, 2287, 0, 2288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31492 */ 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516560, 516560, 516560, 516560, 516560, 516560, 516560, 516560, + /* 31512 */ 516560, 516560, 516560, 516560, 516560, 516560, 516560, 516560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31534 */ 0, 0, 0, 0, 3152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516560, 1, 24578, 0, 0, 0, 4366336, 0, 0, 548864, + /* 31562 */ 0, 0, 301, 302, 0, 4268032, 305, 306, 409600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1806, 0, 2340, 0, 0, + /* 31589 */ 0, 0, 0, 0, 0, 0, 2347, 0, 0, 0, 0, 0, 0, 2354, 4358144, 5005312, 4358144, 4358144, 4358144, 5120000, + /* 31609 */ 5136384, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 31620 */ 6324224, 5914624, 5914624, 0, 0, 0, 0, 0, 5513216, 5783552, 0, 40960, 0, 0, 0, 0, 0, 0, 2747, 0, 2749, 0, + /* 31642 */ 0, 2752, 0, 0, 0, 0, 0, 0, 2757, 0, 0, 0, 2760, 2761, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, + /* 31669 */ 521, 855, 521, 521, 521, 521, 521, 874, 521, 521, 521, 521, 892, 521, 521, 521, 57886, 57886, 57886, 1, + /* 31689 */ 24578, 4227364, 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31720 */ 0, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 540672, 0, 0, 540672, 0, 0, 0, 540672, 0, 0, 0, 0, 0, 0, + /* 31749 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1857, 0, 0, 0, 0, 0, 0, 0, 0, 1, 24578, 4227364, 0, + /* 31780 */ 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3148, + /* 31808 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31842 */ 0, 4268032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 499712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3389, + /* 31873 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + /* 31906 */ 24578, 3, 155941, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31938 */ 636, 0, 0, 0, 521, 521, 521, 58754, 901, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 31956 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 31971 */ 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31995 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 437, 0, 0, 0, 0, + /* 32028 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57887, 57887, + /* 32058 */ 57887, 57887, 57887, 57887, 57887, 57910, 57910, 57887, 57887, 57937, 57887, 57887, 57887, 57887, 57887, + /* 32073 */ 57887, 57887, 57937, 57937, 57887, 57887, 57887, 57887, 57937, 57937, 57887, 521, 57887, 57887, 57887, 1, + /* 32089 */ 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32116 */ 0, 0, 0, 4399797, 4399797, 4399797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 410, 358, 0, 0, 399, 0, + /* 32143 */ 0, 0, 0, 0, 139264, 147456, 399, 410, 0, 423, 410, 1, 24578, 3, 155942, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32169 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1236, 0, 0, 0, 1, 24578, 3, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32202 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 573440, 0, 573440, 573440, 573440, 0, 573440, + /* 32229 */ 573440, 573440, 573440, 573440, 573440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3628, 0, 0, + /* 32255 */ 0, 3631, 0, 0, 0, 0, 0, 0, 0, 0, 3639, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 573440, + /* 32283 */ 573440, 573440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1819, 1820, 0, 1822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32312 */ 0, 0, 0, 1836, 0, 0, 0, 0, 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, + /* 32330 */ 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, 573440, + /* 32343 */ 573440, 573440, 573440, 573440, 573440, 573440, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, + /* 32363 */ 4268032, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4399798, 311296, 4399798, 0, 0, 0, 311296, 0, + /* 32388 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4276224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1260, 0, 0, 0, + /* 32420 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1738, 0, 5300224, + /* 32450 */ 5234688, 5423104, 0, 0, 0, 0, 5988352, 0, 0, 6135808, 6307840, 0, 5996544, 4800512, 0, 6356992, 3627, 0, + /* 32468 */ 0, 5496832, 0, 0, 0, 0, 0, 5611520, 0, 0, 0, 0, 0, 0, 0, 1792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1801, 0, 0, 0, + /* 32497 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1818, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + /* 32530 */ 326, 376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 630, 302, 0, 4268032, + /* 32557 */ 633, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32590 */ 0, 0, 0, 2806, 0, 0, 0, 0, 0, 0, 0, 0, 2814, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32621 */ 581632, 0, 0, 0, 581632, 581632, 581632, 581632, 581632, 581632, 581632, 581632, 581632, 581632, 581632, + /* 32636 */ 581632, 581632, 581632, 581632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32665 */ 0, 0, 0, 0, 0, 0, 0, 340, 581632, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, + /* 32690 */ 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3172, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 32717 */ 521, 3183, 521, 521, 3187, 521, 521, 6258688, 6447104, 0, 0, 6127616, 0, 6348800, 5906432, 0, 5537792, + /* 32734 */ 3774, 0, 0, 0, 0, 5939200, 0, 0, 5677056, 6365184, 4866048, 0, 6070272, 5545984, 5152768, 0, 0, 6144000, + /* 32752 */ 4358144, 4866048, 4882432, 4358144, 4358144, 4358144, 0, 901, 900, 900, 900, 900, 900, 4858756, 4875140, + /* 32767 */ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 5260164, 900, 900, 900, 900, 900, 900, + /* 32787 */ 900, 900, 6103940, 900, 900, 900, 6185860, 900, 900, 900, 6284164, 900, 900, 6333316, 900, 900, 900, + /* 32804 */ 6390660, 900, 900, 6431620, 6439812, 0, 0, 0, 0, 5537792, 5545984, 5586944, 5734400, 5971968, 4358144, + /* 32819 */ 6045696, 4358144, 6070272, 4358144, 4358144, 4358144, 4358144, 6348800, 4358144, 6144000, 0, 6144000, 0, + /* 32832 */ 4988928, 5005312, 0, 0, 0, 0, 5775360, 0, 0, 0, 3869, 0, 0, 0, 0, 0, 787, 0, 0, 521, 521, 521, 521, 521, + /* 32856 */ 847, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 32875 */ 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60869, 57909, 57909, + /* 32890 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59939, + /* 32905 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59946, 57909, 59948, 57909, 59951, 57909, 57909, + /* 32920 */ 4358144, 5005312, 4358144, 4358144, 4358144, 5120000, 5136384, 4358144, 4358144, 4358144, 4358144, + /* 32931 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6324224, 5914624, 5914624, 0, 0, 0, 0, 0, 5513216, + /* 32946 */ 5783552, 0, 3869, 0, 0, 0, 0, 0, 0, 2822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2830, 0, 0, 521, 521, 521, 521, 521, + /* 32973 */ 521, 521, 521, 521, 521, 521, 521, 521, 1938, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 32994 */ 521, 521, 521, 521, 521, 521, 1387, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 0, + /* 33015 */ 310, 311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3638, + /* 33048 */ 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, 451, 465, 465, 465, 478, 478, 478, 478, 478, 478, + /* 33074 */ 478, 478, 478, 499, 478, 478, 478, 478, 517, 478, 478, 478, 517, 478, 478, 478, 478, 478, 478, 522, 57888, + /* 33095 */ 522, 57888, 522, 522, 57888, 522, 522, 57911, 57888, 522, 522, 57888, 57888, 57888, 57911, 57888, 57888, + /* 33112 */ 57888, 57888, 57888, 57888, 57888, 57911, 57911, 57888, 57888, 57938, 57888, 57888, 57888, 57888, 57888, + /* 33127 */ 57888, 57888, 57938, 57938, 57888, 57888, 57888, 57888, 57938, 57938, 57888, 522, 57888, 57888, 57888, 1, + /* 33143 */ 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 638, 0, 0, 641, + /* 33168 */ 642, 0, 0, 0, 0, 0, 0, 745, 0, 0, 0, 0, 0, 0, 751, 0, 0, 0, 0, 0, 0, 0, 0, 761, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 33201 */ 1279, 0, 0, 0, 0, 1284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1292, 0, 0, 0, 0, 0, 0, 0, 0, 743, 0, 0, 0, 0, + /* 33233 */ 638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 758, 0, 0, 0, 0, 764, 0, 0, 768, 0, 0, 0, 0, 0, 0, 3115, 0, 0, 0, 0, 0, + /* 33265 */ 0, 0, 0, 0, 3121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1175, 0, + /* 33297 */ 1177, 1178, 0, 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 0, 780, 0, 0, 0, 0, 0, 0, 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, + /* 33328 */ 0, 0, 0, 0, 641, 0, 0, 0, 0, 0, 3114, 0, 0, 0, 0, 0, 3118, 0, 0, 0, 0, 0, 0, 0, 3124, 3125, 3126, 0, 0, 0, + /* 33358 */ 0, 0, 0, 0, 0, 0, 0, 1306, 0, 0, 0, 1310, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, + /* 33387 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, + /* 33406 */ 57886, 57886, 57886, 57886, 57886, 57886, 61024, 57886, 57886, 0, 824, 825, 0, 0, 0, 0, 780, 521, 521, + /* 33425 */ 834, 838, 521, 521, 850, 521, 521, 521, 866, 521, 871, 521, 879, 521, 882, 521, 521, 896, 521, 57886, + /* 33445 */ 57886, 57886, 57886, 57886, 57886, 59898, 57886, 57886, 57886, 0, 0, 0, 0, 57909, 57909, 57909, 57909, + /* 33462 */ 57909, 57909, 59913, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 33477 */ 59448, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59461, 57909, 57909, + /* 33492 */ 57909, 57909, 57909, 57909, 57909, 58253, 58257, 57886, 57886, 58269, 57886, 57886, 57886, 58285, 57886, + /* 33507 */ 58290, 57886, 58298, 57886, 58301, 57886, 57886, 58315, 57886, 0, 57909, 57909, 57909, 58329, 58333, + /* 33522 */ 57909, 57909, 58345, 57909, 57909, 57909, 58361, 57909, 58366, 57909, 58374, 57909, 58377, 57909, 57909, + /* 33537 */ 58391, 57909, 0, 0, 0, 0, 58290, 57936, 57936, 57936, 58404, 58408, 57936, 57936, 58420, 57936, 57936, + /* 33554 */ 57936, 58436, 57936, 58441, 57936, 58449, 57936, 0, 0, 0, 0, 521, 521, 521, 521, 521, 4172, 521, 57886, + /* 33573 */ 57886, 57886, 57886, 57886, 61522, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 61528, 57909, 57909, + /* 33588 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59544, 57936, 57936, 57936, 57936, + /* 33603 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59557, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 33618 */ 57936, 57936, 57936, 57936, 59545, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 33633 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59014, 57936, 57936, 57936, 57936, + /* 33648 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58452, 57936, 57936, 58466, 57936, 834, + /* 33663 */ 838, 1128, 882, 521, 521, 0, 58257, 58253, 58478, 58301, 57886, 57886, 155941, 1138, 0, 0, 1141, 0, 0, + /* 33682 */ 1146, 0, 0, 0, 0, 0, 0, 0, 0, 6103040, 0, 0, 0, 6184960, 0, 0, 0, 6283264, 0, 0, 6332416, 0, 0, 0, + /* 33706 */ 6389760, 0, 0, 6430720, 6438912, 977, 0, 0, 0, 0, 0, 1210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 33734 */ 0, 0, 0, 0, 1231, 0, 0, 0, 0, 0, 0, 0, 0, 377, 0, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 362, 0, 0, 0, 0, 139264, + /* 33765 */ 147456, 0, 0, 0, 0, 0, 57886, 58831, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 33783 */ 57886, 57886, 50657, 58754, 977, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 33798 */ 57909, 57909, 57909, 57909, 57909, 59964, 57909, 57909, 57909, 57909, 59969, 57909, 57909, 57909, 57909, + /* 33813 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 1753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 33838 */ 0, 0, 0, 0, 0, 0, 1777, 0, 0, 0, 0, 0, 0, 0, 0, 1188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 1199, 0, + /* 33869 */ 0, 0, 0, 0, 0, 0, 0, 0, 688, 0, 0, 0, 0, 367, 367, 367, 0, 0, 697, 0, 0, 0, 0, 0, 0, 0, 704, 0, 0, 0, 0, + /* 33900 */ 0, 0, 0, 1813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 33933 */ 2815, 0, 0, 1861, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1874, 521, 521, 521, 521, + /* 33956 */ 521, 521, 521, 521, 521, 1887, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 57886, 57886, 57886, 57886, + /* 33976 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 33991 */ 57886, 57886, 57886, 57886, 61044, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 521, 521, 521, + /* 34007 */ 521, 521, 1929, 521, 521, 1932, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1945, 521, 521, 521, + /* 34027 */ 521, 521, 521, 1951, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, + /* 34047 */ 57886, 57886, 57886, 57886, 59828, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 34062 */ 57886, 59380, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 34077 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 61166, 57909, 57909, 57909, 61169, + /* 34092 */ 57909, 57909, 57909, 57909, 521, 58754, 1960, 57886, 57886, 57886, 57886, 57886, 59311, 57886, 57886, + /* 34107 */ 57886, 57886, 57886, 59317, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59330, 57886, + /* 34122 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60835, 57886, 57886, 57886, 57886, 57886, 57886, + /* 34137 */ 57886, 57886, 57886, 57886, 60845, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60854, + /* 34152 */ 57886, 50657, 2060, 57909, 57909, 57909, 57909, 57909, 59411, 57909, 57909, 57909, 57909, 57909, 59417, + /* 34167 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59430, 57909, 57909, 57909, 57909, 57909, + /* 34182 */ 57909, 57909, 57909, 57909, 57909, 57909, 58890, 57909, 57909, 57909, 58893, 57909, 57909, 57909, 57909, + /* 34197 */ 57909, 57909, 57909, 58900, 57909, 57909, 58904, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 34212 */ 59472, 57909, 57909, 59475, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59489, + /* 34227 */ 57909, 57909, 57909, 57909, 57909, 57909, 59495, 57909, 57909, 57909, 57909, 57909, 57909, 57886, 1, + /* 34242 */ 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 34269 */ 0, 0, 0, 3413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3151, 0, 0, 0, 3155, 0, 3157, 0, 0, 0, + /* 34300 */ 0, 0, 0, 0, 0, 57936, 57936, 57936, 57936, 57936, 59507, 57936, 57936, 57936, 57936, 57936, 59513, 57936, + /* 34318 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59526, 57936, 57936, 57936, 57936, 57936, 57936, + /* 34333 */ 57936, 57936, 57936, 57936, 57936, 57936, 59579, 57936, 57936, 57936, 57936, 57936, 57936, 59587, 57936, + /* 34348 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 57886, 57886, + /* 34364 */ 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 3105, 0, 0, 0, 0, 0, 0, 57936, 57936, 59568, 57936, 57936, + /* 34386 */ 59571, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59585, 57936, 57936, 57936, + /* 34401 */ 57936, 57936, 57936, 59591, 57936, 57936, 57936, 57936, 57936, 57936, 521, 2256, 521, 521, 521, 57886, + /* 34417 */ 59605, 57886, 57886, 57886, 2265, 0, 2266, 0, 0, 0, 0, 2268, 0, 2269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2275, 0, + /* 34442 */ 0, 0, 0, 0, 0, 791, 0, 521, 521, 521, 521, 521, 521, 521, 521, 859, 521, 521, 521, 521, 521, 521, 521, + /* 34465 */ 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 2265, 0, 2266, 0, 0, 0, 0, 2268, 0, 2269, 0, + /* 34486 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1737, + /* 34518 */ 1738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 34551 */ 417792, 0, 0, 0, 0, 417792, 0, 0, 0, 0, 0, 309, 0, 309, 0, 0, 0, 0, 2331, 0, 2333, 0, 0, 0, 0, 0, 0, 0, 0, + /* 34580 */ 1806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1826, 0, 1828, 0, 0, 0, 0, 0, 0, 0, 1835, + /* 34611 */ 0, 0, 521, 2464, 521, 521, 521, 521, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 34631 */ 57886, 57886, 57886, 57886, 59829, 57886, 57886, 59832, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 34646 */ 57886, 60265, 57886, 57886, 57886, 57886, 60268, 57886, 57886, 60270, 57886, 60271, 57886, 57886, 57886, + /* 34661 */ 57886, 57886, 57886, 57886, 57886, 57886, 60280, 57886, 57886, 60284, 59840, 57886, 57886, 57886, 57886, + /* 34676 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 34691 */ 57886, 57886, 57886, 57886, 59860, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61032, + /* 34706 */ 57886, 57886, 57886, 57886, 57886, 57886, 61038, 57886, 61040, 57886, 57886, 57886, 57886, 57886, 57886, + /* 34721 */ 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 34736 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 34751 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61089, 57936, 57936, 57936, 57909, 57909, 57909, + /* 34766 */ 57909, 59929, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 34781 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59949, 57909, 57909, 57909, 57909, + /* 34796 */ 57909, 57909, 57909, 57909, 58886, 57909, 58888, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 34811 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, + /* 34826 */ 57936, 60375, 57936, 60376, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60012, 57936, + /* 34841 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 34856 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60032, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 34871 */ 57936, 57936, 57936, 60070, 57936, 57936, 57936, 2405, 521, 521, 521, 521, 59836, 57886, 57886, 57886, + /* 34887 */ 57886, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2399, 521, 521, + /* 34911 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 2446, 521, 521, 521, 521, 521, 521, 521, 2452, 521, 521, 521, + /* 34932 */ 521, 521, 521, 2457, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2847, 521, 521, 521, 521, + /* 34953 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 34974 */ 2889, 521, 521, 521, 521, 521, 521, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 34992 */ 60315, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60323, 57909, 57909, + /* 35007 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58924, 57909, 57909, 58928, 57909, 57909, + /* 35022 */ 57909, 57909, 57909, 58935, 57909, 57909, 57909, 58942, 57909, 0, 57886, 57936, 57936, 57936, 57936, + /* 35037 */ 60359, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 35052 */ 60370, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 35067 */ 60380, 57936, 0, 0, 0, 0, 521, 521, 521, 4170, 4171, 521, 521, 57886, 57886, 57886, 61520, 61521, 57886, + /* 35086 */ 57886, 57886, 57909, 57909, 57909, 61526, 61527, 57909, 57909, 57909, 57936, 57936, 57936, 61532, 57936, + /* 35101 */ 57936, 60435, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, + /* 35117 */ 57886, 301, 305, 0, 0, 0, 0, 3104, 0, 0, 0, 3108, 0, 0, 0, 0, 0, 0, 3142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 35147 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262731, 0, 0, 0, 0, 0, 0, 0, 0, 3113, 0, 0, 0, 0, 0, 0, 0, 0, + /* 35180 */ 0, 0, 0, 0, 0, 0, 3123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3136, 57909, 60627, 57909, 57909, 57909, + /* 35205 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60636, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 35220 */ 57909, 57909, 57909, 57909, 57909, 60644, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 35235 */ 57909, 57909, 61057, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 35250 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61062, 57909, 57909, 57909, 57909, 57909, 57909, + /* 35265 */ 57909, 57909, 57909, 57909, 57909, 57936, 57936, 60676, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 35280 */ 57936, 57936, 57936, 60685, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 35295 */ 57936, 60693, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 0, 57886, 57886, 57886, + /* 35312 */ 57886, 57886, 57886, 155941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1192, 1193, 0, 0, 0, 0, 0, 367, 367, + /* 35338 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60915, 57936, 57936, 57936, + /* 35359 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 35374 */ 57936, 60933, 57936, 60935, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60703, 57936, + /* 35389 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, + /* 35405 */ 0, 0, 0, 0, 0, 0, 0, 2748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 35438 */ 352256, 0, 352256, 352256, 0, 0, 0, 0, 521, 3948, 521, 3950, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 35459 */ 521, 521, 57886, 61307, 57886, 61309, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 35474 */ 57886, 57886, 57886, 58807, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 35489 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59347, 57886, 57886, 57886, 57886, 57886, 57886, + /* 35504 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61165, + /* 35519 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61170, 57909, 57909, 57909, 57909, 61323, 57909, 61325, + /* 35534 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 61339, 57936, + /* 35549 */ 61341, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 35564 */ 3859, 521, 61204, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 4012, 0, 0, 0, 4015, 0, 0, + /* 35592 */ 521, 521, 521, 521, 4020, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, + /* 35611 */ 61377, 57886, 57886, 57886, 57886, 57886, 57909, 60861, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 35626 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 35641 */ 57909, 57909, 57909, 60352, 57909, 57909, 57909, 57909, 57909, 57909, 0, 0, 0, 312, 313, 314, 0, 0, 0, 0, + /* 35661 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2765, 0, 0, 0, 0, 0, 0, 426, 0, + /* 35693 */ 131072, 0, 0, 0, 426, 0, 0, 0, 0, 0, 426, 452, 0, 0, 0, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + /* 35718 */ 452, 452, 452, 516, 452, 516, 516, 516, 452, 516, 516, 516, 516, 516, 516, 523, 57889, 523, 57889, 523, + /* 35738 */ 523, 57889, 523, 523, 57912, 57889, 523, 523, 57889, 57889, 57889, 57912, 57889, 57889, 57889, 57889, + /* 35754 */ 57889, 57889, 57889, 57912, 57912, 57889, 57889, 57939, 57889, 57889, 57889, 57889, 57889, 57889, 57889, + /* 35769 */ 57939, 57939, 57889, 57889, 57889, 57889, 57939, 57939, 57889, 614, 57889, 57966, 57966, 1, 24578, 3, + /* 35785 */ 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 35813 */ 385024, 0, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 35825 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 57909, 57909, 58370, 57909, 57909, 57909, + /* 35838 */ 57909, 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 35855 */ 57936, 57936, 57936, 57936, 57936, 57936, 58445, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 35870 */ 57936, 61199, 57936, 57936, 57936, 57936, 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3627, + /* 35892 */ 0, 0, 0, 0, 0, 805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, 0, 820, 780, 0, 0, 0, 0, 0, + /* 35925 */ 0, 754, 0, 0, 754, 0, 0, 0, 0, 0, 754, 754, 0, 0, 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, + /* 35956 */ 2770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379, 0, 0, 0, + /* 35989 */ 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 60312, 57909, 57909, 57909, 57909, 60316, 57909, 57909, + /* 36005 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 36020 */ 57909, 60345, 57909, 57909, 57909, 57909, 60349, 57909, 57909, 57909, 60354, 57909, 57909, 57909, 57909, + /* 36035 */ 60381, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 36050 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 36065 */ 57936, 57936, 60432, 57936, 57936, 57936, 57936, 57936, 60436, 57936, 57936, 57936, 521, 521, 521, 521, + /* 36081 */ 521, 57886, 57886, 57886, 57886, 57886, 301, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3387, 0, 0, 0, 0, 0, + /* 36107 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2807, 0, 0, 0, 0, 0, 2812, 0, 0, 0, 0, 0, 57886, 61381, + /* 36136 */ 57886, 61383, 57886, 57886, 61385, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 36151 */ 61395, 57909, 61397, 57909, 57909, 61399, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 36166 */ 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 36188 */ 57886, 57886, 57886, 57936, 61409, 57936, 61411, 57936, 57936, 61413, 57936, 57936, 0, 0, 0, 0, 0, 0, 0, + /* 36207 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 0, 0, + /* 36227 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 351, 352, 0, 0, 0, 0, 0, 0, 0, + /* 36259 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 295, 0, 319, 319, 427, 428, 131072, 435, 428, 436, 427, 435, 436, 0, + /* 36284 */ 315, 436, 448, 453, 466, 466, 466, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 501, 501, 501, 514, + /* 36305 */ 514, 515, 515, 501, 515, 515, 515, 501, 515, 515, 515, 515, 515, 515, 524, 57890, 524, 57890, 524, 524, + /* 36325 */ 57890, 524, 524, 57913, 57890, 524, 524, 57890, 57890, 57890, 57913, 57890, 57890, 57890, 57890, 57890, + /* 36341 */ 57890, 57890, 57913, 57913, 57890, 57890, 57940, 57890, 57890, 57890, 57890, 57890, 57890, 57890, 57940, + /* 36356 */ 57940, 57890, 57890, 57890, 57890, 57940, 57940, 57890, 615, 57965, 57965, 57965, 1, 24578, 3, 155941, + /* 36372 */ 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401408, 0, + /* 36401 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1198, 367, 367, 0, 0, 1201, 0, 0, 0, 1204, 0, 1206, + /* 36431 */ 0, 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 36463 */ 0, 5242880, 0, 0, 0, 0, 0, 5603328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57909, 57909, 57909, 57909, 57909, + /* 36488 */ 58378, 57909, 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 36505 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59553, 57936, 57936, 57936, 57936, + /* 36520 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58453, 57936, 57936, 57936, 57936, + /* 36535 */ 521, 521, 521, 883, 521, 521, 0, 57886, 57886, 57886, 58302, 57886, 57886, 155941, 1138, 0, 0, 0, 0, 0, 0, + /* 36556 */ 0, 0, 0, 0, 0, 0, 3411, 0, 0, 0, 3415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 57886, 521, + /* 36585 */ 57886, 521, 521, 57886, 521, 521, 57909, 57886, 521, 521, 57886, 57886, 57886, 57909, 521, 521, 521, + /* 36602 */ 58754, 901, 57886, 57886, 58758, 57886, 57886, 58762, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 36617 */ 57886, 58776, 57886, 58781, 57886, 57886, 58785, 57886, 57886, 58788, 57886, 57886, 57886, 57886, 57886, + /* 36632 */ 57886, 58279, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, + /* 36647 */ 57909, 57909, 58322, 57909, 57909, 57909, 57909, 57909, 57909, 58355, 57909, 57909, 57909, 58876, 57909, + /* 36662 */ 57909, 58880, 57909, 57909, 58883, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 36677 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58902, + /* 36692 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 58951, 57936, 57936, 57936, 57936, 57936, 57936, + /* 36707 */ 57936, 57936, 58965, 57936, 58970, 57936, 57936, 58974, 57936, 57936, 58977, 57936, 57936, 57936, 57936, + /* 36722 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 57886, 57886, 3861, 0, 0, + /* 36739 */ 0, 3863, 0, 0, 0, 0, 0, 0, 3627, 3870, 0, 1723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 36770 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, 521, 521, 521, 1927, 1928, 521, 521, 521, 521, 521, 521, 521, + /* 36795 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 36816 */ 2433, 521, 521, 521, 521, 58754, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 36833 */ 57886, 57886, 57886, 59320, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59332, 57886, + /* 36848 */ 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 61494, 57909, 61495, 57909, 57909, 57909, 57909, + /* 36863 */ 57909, 57909, 57909, 57909, 57936, 57936, 61502, 57936, 61503, 57936, 57936, 57936, 57936, 57936, 57936, + /* 36878 */ 57936, 57936, 57936, 57936, 57936, 60018, 57936, 60020, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 36893 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60396, 57936, 57936, 57936, + /* 36908 */ 57936, 57936, 57936, 57936, 60401, 57936, 57936, 57936, 57936, 57936, 57886, 57886, 59370, 59371, 57886, + /* 36923 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 36938 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 50657, 0, + /* 36956 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59420, 57909, + /* 36971 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59432, 57909, 57909, 57909, 57909, 57909, 57909, + /* 36986 */ 57909, 57909, 57909, 57909, 59446, 57909, 57909, 57909, 59450, 57909, 57909, 59455, 57909, 57909, 57909, + /* 37001 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59990, 57936, 57936, 57936, + /* 37016 */ 57936, 57936, 57936, 57936, 59998, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57909, + /* 37031 */ 59470, 59471, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 37046 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 37061 */ 57886, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, + /* 37087 */ 0, 0, 643, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 37111 */ 521, 3447, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1341, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 37132 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3200, 521, 521, 521, 521, 521, 521, 521, + /* 37153 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 61016, 57886, 57886, 57886, 61019, 57886, 57886, + /* 37171 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59566, 59567, 57936, 57936, 57936, 57936, 57936, 57936, + /* 37186 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 37201 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, + /* 37221 */ 0, 0, 0, 0, 0, 0, 0, 2304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 37255 */ 0, 0, 0, 3162, 0, 0, 521, 2437, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2450, + /* 37277 */ 521, 521, 521, 521, 521, 2454, 2455, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1374, 521, 1376, 521, + /* 37297 */ 521, 521, 521, 521, 521, 521, 1389, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1404, 57886, + /* 37317 */ 57886, 57886, 57886, 59869, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 37332 */ 57886, 57886, 59882, 57886, 57886, 57886, 57886, 57886, 59886, 59887, 59888, 57886, 57886, 57886, 57886, + /* 37347 */ 57886, 57886, 57886, 58800, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 37362 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58822, 57886, 57886, 57886, 57886, 0, 0, 0, 2744, + /* 37379 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114688, 0, 0, + /* 37411 */ 57886, 57886, 57886, 60288, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 37426 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 2962, 0, 0, + /* 37443 */ 0, 0, 0, 826, 0, 0, 521, 521, 521, 521, 521, 849, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 37466 */ 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 60863, 57909, 57909, 57909, + /* 37482 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60875, 57909, 57909, 57909, + /* 37497 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59447, 57909, 57909, 57909, 57909, 57909, 57909, + /* 37512 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, + /* 37527 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60672, 3137, 0, 0, 0, 0, 0, 0, 0, 0, + /* 37547 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1837, 0, 0, 0, 3166, 0, 0, 3169, 0, + /* 37579 */ 0, 0, 0, 0, 0, 0, 3173, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 37602 */ 521, 2451, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3379, 0, 0, 0, 0, 0, 0, + /* 37625 */ 0, 3383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3422, 0, 0, 0, 0, 0, 0, + /* 37658 */ 3429, 521, 3458, 3459, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 37678 */ 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60827, 57886, 1, 24578, 3, + /* 37694 */ 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, + /* 37722 */ 0, 695, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 883, 521, 521, + /* 37743 */ 521, 521, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 2267, 0, 1142, 0, 0, 0, 0, 2270, 0, 1147, 0, 0, + /* 37766 */ 0, 0, 0, 0, 0, 0, 0, 0, 1795, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1809, 57909, + /* 37797 */ 60884, 57909, 60886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 37812 */ 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 37827 */ 57936, 60000, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60911, 57936, 57936, 57936, 57936, 57936, + /* 37842 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60926, 57936, 60928, + /* 37857 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60045, 60046, + /* 37872 */ 57936, 57936, 57936, 57936, 57936, 57936, 60053, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 37887 */ 57936, 57936, 61072, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 37902 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 37917 */ 57936, 57936, 57936, 57936, 59595, 57936, 57936, 57936, 1881, 521, 4010, 0, 4011, 0, 0, 0, 0, 0, 0, 0, + /* 37937 */ 521, 4018, 521, 4019, 521, 521, 521, 4023, 521, 521, 521, 521, 521, 521, 521, 57886, 61375, 57886, 61376, + /* 37956 */ 57886, 57886, 57886, 57886, 57886, 57886, 60264, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60269, + /* 37971 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60275, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 37986 */ 60283, 57886, 61380, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 61389, 57909, 61390, + /* 38001 */ 57909, 57909, 57909, 61394, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 61403, 57936, + /* 38016 */ 61404, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60388, 57936, 57936, 57936, + /* 38031 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 38046 */ 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 3376, 0, 0, 61408, 57936, 57936, 57936, + /* 38064 */ 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 38086 */ 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 1710, 0, 0, 0, 0, 0, 0, 1717, 0, 0, 0, 0, 0, 0, + /* 38111 */ 0, 0, 0, 0, 0, 0, 0, 2338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2294, 0, 0, 0, + /* 38144 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 4213, 57886, 57886, 57886, 61559, 57909, 57909, 57909, 61561, + /* 38165 */ 57936, 57936, 57936, 61563, 0, 521, 521, 57886, 57886, 57909, 57909, 57936, 57936, 521, 57886, 57909, + /* 38181 */ 57936, 521, 521, 521, 521, 521, 521, 0, 2471, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 38199 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 38214 */ 59858, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 376, 0, 131072, 0, 0, 0, 376, + /* 38233 */ 0, 0, 438, 444, 0, 376, 454, 467, 467, 467, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 502, 502, + /* 38255 */ 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 525, 57891, 525, 57891, 525, 525, 57891, + /* 38275 */ 525, 525, 57914, 57891, 525, 525, 57891, 57891, 57891, 57914, 57891, 57891, 57891, 57891, 57891, 57891, + /* 38291 */ 57891, 57914, 57914, 57891, 57891, 57941, 57891, 57891, 57891, 57891, 57891, 57891, 57891, 57941, 57941, + /* 38306 */ 57891, 57891, 57891, 57891, 57941, 57941, 57891, 525, 57891, 57891, 57891, 1, 24578, 3, 155941, 155941, + /* 38322 */ 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229376, 0, 491520, + /* 38351 */ 524288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 38384 */ 1180, 1181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 38416 */ 719, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 0, 1166, 0, 1298, 0, 0, 0, 0, 0, + /* 38447 */ 0, 0, 0, 0, 1284, 0, 0, 0, 1312, 1180, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 1321, 521, 521, 521, 0, 0, 0, 0, + /* 38475 */ 0, 0, 57886, 60241, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 38491 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58814, 57886, 57886, 57886, 57886, 57886, + /* 38506 */ 57886, 57886, 57886, 57886, 57886, 521, 521, 521, 521, 521, 1371, 521, 521, 1373, 521, 521, 521, 521, + /* 38524 */ 1378, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1403, 521, 521, 521, + /* 38545 */ 521, 521, 521, 521, 521, 3196, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3203, 521, 521, 521, + /* 38566 */ 521, 521, 521, 521, 521, 521, 521, 521, 1902, 521, 521, 521, 521, 521, 521, 521, 521, 1913, 521, 521, 521, + /* 38587 */ 521, 521, 521, 521, 521, 521, 521, 521, 1935, 521, 521, 521, 1941, 521, 521, 521, 521, 521, 521, 521, 521, + /* 38608 */ 521, 1950, 521, 521, 521, 521, 1956, 521, 521, 521, 521, 58754, 901, 57886, 57886, 58759, 57886, 57886, + /* 38626 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58786, + /* 38641 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61247, 57886, 57886, 57909, 57909, 57909, + /* 38656 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61263, 57909, + /* 38671 */ 57909, 57936, 57909, 57909, 57909, 57909, 58881, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 38686 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58896, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 38701 */ 58905, 57909, 57909, 58907, 57909, 57909, 57909, 57909, 58912, 57909, 57909, 57909, 57909, 57909, 57909, + /* 38716 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58937, 57909, 57909, 57909, 57909, + /* 38731 */ 0, 58812, 57936, 57936, 58948, 57936, 0, 0, 0, 0, 521, 521, 4169, 521, 521, 521, 4173, 57886, 57886, + /* 38750 */ 61519, 57886, 57886, 57886, 61523, 57886, 57909, 57909, 61525, 57909, 57909, 57909, 61529, 57909, 57936, + /* 38765 */ 57936, 61531, 57936, 0, 0, 0, 0, 4168, 521, 521, 521, 521, 521, 521, 61518, 57886, 57886, 57886, 57886, + /* 38784 */ 57886, 57886, 57886, 61524, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61530, 57936, 57936, 57936, + /* 38799 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61274, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 38814 */ 521, 57886, 0, 3938, 0, 0, 3941, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, + /* 38838 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 1883, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2876, 521, + /* 38859 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 38880 */ 57886, 60819, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57936, 57936, 57936, + /* 38895 */ 57936, 57936, 57936, 57936, 58999, 57936, 57936, 59001, 57936, 57936, 57936, 57936, 59007, 57936, 57936, + /* 38910 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59519, + /* 38925 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59530, 57936, 57936, 57936, 57936, 57936, + /* 38940 */ 59032, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, + /* 38957 */ 1138, 1705, 0, 0, 0, 0, 1712, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 38982 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2410, 521, 521, 521, 2259, 57886, 57886, + /* 39001 */ 57886, 57886, 59608, 2265, 0, 2266, 0, 0, 0, 0, 2268, 0, 2269, 0, 0, 0, 0, 0, 2272, 0, 0, 0, 0, 0, 0, 0, + /* 39027 */ 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 39048 */ 2408, 521, 521, 521, 521, 521, 521, 521, 521, 2416, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 39069 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1397, 521, 521, 521, 521, 521, + /* 39090 */ 57886, 59893, 57886, 59895, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 57909, 57909, 57909, + /* 39107 */ 57909, 57909, 57909, 57909, 57909, 57909, 59916, 57909, 57909, 57909, 57909, 59920, 57909, 57909, 57909, + /* 39122 */ 57909, 57909, 57909, 57909, 57909, 59958, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 39137 */ 57909, 57909, 57909, 57909, 59971, 57909, 57909, 57909, 57909, 57909, 59975, 59976, 59977, 57909, 57909, + /* 39152 */ 57909, 57909, 57909, 57909, 59982, 57909, 59984, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, + /* 39167 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59999, 57936, 57936, 57936, 57936, 60003, 57936, 57936, + /* 39182 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60683, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39197 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39212 */ 521, 3369, 521, 57886, 60716, 57886, 0, 0, 0, 0, 0, 57936, 57936, 57936, 57936, 57936, 60065, 57936, + /* 39230 */ 60067, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, + /* 39246 */ 57886, 2739, 2266, 0, 2740, 2269, 0, 0, 0, 0, 0, 0, 3622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 39275 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, 415, 0, 0, 0, 0, 0, 60285, 57886, 57886, 57886, 57886, 57886, 57886, + /* 39298 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 39313 */ 57886, 57886, 57886, 57886, 57886, 57886, 0, 2962, 0, 0, 0, 0, 0, 1156, 1157, 1158, 1159, 0, 0, 0, 0, 0, + /* 39335 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, 57909, 57909, + /* 39366 */ 57909, 60310, 57909, 60311, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 39381 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59460, 57909, + /* 39396 */ 57909, 57909, 57909, 57909, 59467, 57909, 521, 521, 3191, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 39414 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3204, 521, 521, 521, 521, 521, 521, 521, 3210, + /* 39434 */ 57886, 57886, 57886, 60582, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 39449 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60596, 57886, 57886, 57886, 57886, + /* 39464 */ 57886, 57886, 57886, 57886, 60606, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 57909, + /* 39480 */ 57909, 57909, 57909, 60617, 57909, 57909, 57909, 57909, 57909, 57909, 60624, 57909, 57886, 60602, 57886, + /* 39495 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 2962, 0, + /* 39511 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61182, + /* 39526 */ 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39541 */ 57936, 57936, 58975, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39556 */ 57936, 57936, 57936, 58990, 57909, 57909, 57909, 57909, 60651, 57909, 57909, 57909, 57909, 57909, 57909, + /* 39571 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39586 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39601 */ 57936, 57936, 57936, 57936, 60680, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39616 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60694, 57936, 57936, 57936, + /* 39631 */ 57936, 57936, 57936, 57936, 57936, 57936, 61273, 57936, 61275, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39646 */ 521, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 39672 */ 521, 521, 521, 1878, 1879, 521, 521, 521, 521, 1886, 521, 521, 521, 521, 521, 521, 521, 521, 1337, 521, + /* 39692 */ 1342, 521, 521, 1346, 521, 521, 1349, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 39712 */ 521, 521, 1380, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1396, 521, 521, 521, 521, 521, 57936, + /* 39732 */ 57936, 57936, 57936, 57936, 60700, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39747 */ 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 3768, 0, 0, 0, 0, + /* 39769 */ 57909, 61073, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39784 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39799 */ 57936, 57936, 60030, 57936, 57936, 57936, 57936, 57936, 0, 521, 521, 521, 521, 521, 521, 3953, 521, 521, + /* 39817 */ 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 61312, 57886, 57886, 57886, 57886, + /* 39834 */ 57886, 57886, 57886, 57886, 57886, 57886, 2557, 0, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 39851 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 39866 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59466, 57909, 57909, 57909, 57909, 57909, 57909, + /* 39881 */ 57909, 57909, 61328, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, + /* 39896 */ 57936, 57936, 57936, 61344, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 0, + /* 39914 */ 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, + /* 39934 */ 61382, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 39949 */ 57909, 61396, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39964 */ 57936, 57936, 61080, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 39979 */ 57936, 57936, 61090, 57936, 57936, 57936, 57936, 61410, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, + /* 39996 */ 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, + /* 40017 */ 57886, 2265, 1706, 2266, 0, 0, 0, 0, 2268, 1713, 2269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1243, 0, + /* 40044 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2353, 0, 0, 330, 0, 0, 0, 0, 0, 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, + /* 40077 */ 0, 0, 0, 0, 0, 0, 330, 0, 139264, 147456, 0, 0, 0, 0, 0, 0, 0, 1842, 0, 0, 1845, 0, 0, 0, 0, 0, 0, 1851, + /* 40105 */ 1852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1845, 0, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 329, 0, 0, 0, 0, 455, + /* 40135 */ 468, 468, 468, 481, 481, 481, 481, 492, 494, 481, 481, 492, 481, 503, 503, 503, 503, 518, 503, 503, 503, + /* 40156 */ 518, 503, 503, 503, 503, 503, 503, 526, 57892, 526, 57892, 526, 526, 57892, 526, 526, 57915, 57892, 526, + /* 40175 */ 526, 57892, 57892, 57892, 57915, 57892, 57892, 57892, 57892, 57892, 57892, 57892, 57915, 57915, 57892, + /* 40190 */ 57892, 57942, 57892, 57892, 57892, 57892, 57892, 57892, 57892, 57942, 57942, 57892, 57892, 57892, 57892, + /* 40205 */ 57942, 57942, 57892, 526, 57892, 57892, 57892, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, + /* 40225 */ 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2310144, 0, 0, 0, 0, 0, 0, 0, 2310144, 2310144, + /* 40253 */ 0, 0, 0, 0, 0, 0, 0, 0, 2310144, 0, 0, 0, 0, 0, 651, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 663, 664, 0, 0, 0, + /* 40284 */ 0, 0, 0, 0, 0, 0, 0, 0, 676, 677, 678, 0, 0, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 0, 0, 0, + /* 40315 */ 0, 0, 0, 700, 701, 0, 0, 0, 0, 0, 707, 0, 0, 0, 0, 0, 3141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 40347 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 450560, 450560, 0, 0, 0, 0, 0, 711, 0, 713, 0, 0, 0, 0, 0, 0, 720, 0, + /* 40377 */ 0, 0, 724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 40411 */ 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 752, 0, 0, 0, 0, 0, 0, 759, 0, 0, 0, 765, 766, 0, 0, 0, 0, + /* 40443 */ 0, 0, 0, 2308, 0, 0, 0, 0, 2313, 2314, 0, 0, 2316, 2317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270336, + /* 40472 */ 0, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 40486 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 0, 0, + /* 40506 */ 305, 0, 0, 4857856, 4874240, 0, 0, 4923392, 0, 0, 0, 775, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 40533 */ 0, 789, 0, 794, 0, 797, 0, 0, 0, 0, 0, 0, 777, 0, 789, 0, 803, 0, 0, 0, 0, 797, 809, 0, 0, 0, 0, 0, 809, + /* 40562 */ 809, 812, 0, 0, 0, 777, 0, 0, 0, 0, 0, 821, 0, 0, 0, 0, 0, 0, 806, 0, 0, 806, 0, 0, 0, 0, 0, 806, 806, 0, + /* 40592 */ 0, 0, 0, 786, 0, 0, 0, 0, 0, 0, 822, 782, 0, 0, 0, 0, 0, 775, 0, 0, 0, 821, 521, 521, 835, 521, 841, 521, + /* 40620 */ 521, 856, 521, 521, 867, 521, 872, 521, 521, 881, 884, 889, 521, 897, 521, 57886, 57886, 57886, 57886, + /* 40639 */ 57886, 57886, 60291, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 40654 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 2962, 0, 0, 58254, 57886, 58260, 57886, + /* 40671 */ 57886, 58275, 57886, 57886, 58286, 57886, 58291, 57886, 57886, 58300, 58303, 58308, 57886, 58316, 57886, + /* 40686 */ 0, 57909, 57909, 57909, 58330, 57909, 58336, 57909, 57909, 58351, 57909, 57909, 58362, 57909, 58367, + /* 40701 */ 57909, 57909, 58376, 58379, 58384, 57909, 58392, 57909, 0, 0, 0, 0, 58291, 57936, 57936, 57936, 58405, + /* 40718 */ 57936, 58411, 57936, 57936, 58426, 57936, 57936, 58437, 57936, 58442, 57936, 57936, 58451, 58454, 58459, + /* 40733 */ 57936, 58467, 57936, 835, 521, 521, 1129, 889, 521, 0, 57886, 58254, 57886, 58479, 58308, 57886, 155941, + /* 40750 */ 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2326528, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 40771 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 40782 */ 4358144, 0, 0, 1153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0, 0, 0, 0, 0, 1170, 0, 0, 0, 0, 0, 0, 0, 0, + /* 40812 */ 0, 0, 0, 1051, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 40828 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 40839 */ 4358144, 6299648, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 40850 */ 4358144, 4358144, 4358144, 4358144, 0, 1209, 0, 0, 0, 0, 0, 0, 0, 0, 1218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 40875 */ 0, 0, 0, 0, 0, 0, 1235, 0, 0, 1187, 0, 0, 0, 0, 0, 3434, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 40901 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3451, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 57886, + /* 40923 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59827, 57886, 57886, 57886, 57886, 59831, 57886, + /* 40938 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58801, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 40953 */ 58810, 57886, 57886, 58812, 57886, 57886, 57886, 57886, 58817, 57886, 57886, 57886, 57886, 57886, 57886, + /* 40968 */ 57886, 57886, 57886, 61388, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 40983 */ 57909, 57909, 57909, 57909, 61402, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 742, 0, 0, 0, 0, + /* 41003 */ 0, 0, 0, 0, 0, 0, 0, 0, 1258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5857280, 0, 6463488, 4939776, 0, + /* 41031 */ 0, 5455872, 0, 0, 0, 0, 0, 0, 0, 0, 6062080, 6463488, 0, 5398528, 0, 521, 521, 521, 521, 1328, 521, 521, + /* 41053 */ 521, 521, 521, 521, 1343, 521, 521, 521, 1348, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 41074 */ 521, 521, 521, 1365, 521, 1407, 521, 58754, 901, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 41091 */ 57886, 57886, 58767, 57886, 57886, 57886, 57886, 57886, 57886, 58782, 57886, 57886, 57886, 58787, 57886, + /* 41106 */ 57886, 57886, 57886, 57886, 57886, 57886, 58839, 57886, 57886, 57886, 57886, 57886, 57886, 50657, 58754, + /* 41121 */ 977, 57909, 57909, 57909, 58855, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58869, + /* 41136 */ 57909, 57909, 57909, 58877, 57909, 57909, 57909, 58882, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 41151 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58899, 57909, 57909, 57909, 57909, 57909, 57909, + /* 41166 */ 57909, 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 58419, 57936, + /* 41183 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59003, 57936, 59005, 57936, 57936, + /* 41198 */ 57936, 57936, 57936, 57936, 57936, 59018, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 41213 */ 57936, 57936, 57936, 60704, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, + /* 41229 */ 57886, 57886, 0, 0, 0, 0, 0, 57936, 57936, 57936, 57936, 57936, 57936, 58956, 57936, 57936, 57936, 57936, + /* 41247 */ 57936, 57936, 58971, 57936, 57936, 57936, 58976, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 41262 */ 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 0, + /* 41279 */ 0, 0, 0, 0, 0, 2741, 0, 57936, 58993, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 41297 */ 57936, 57936, 57936, 57936, 57936, 57936, 59009, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 41312 */ 57936, 57936, 59025, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61101, 57936, + /* 41327 */ 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 690, 691, 0, + /* 41350 */ 367, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 703, 0, 0, 0, 0, 0, 57936, 57936, 57936, 59036, 57936, 521, 521, + /* 41375 */ 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 1138, 1705, 0, 0, 0, 0, 1712, 0, 0, 0, 0, + /* 41396 */ 1719, 0, 1721, 0, 0, 0, 0, 0, 3621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3632, 0, 0, 0, + /* 41426 */ 3635, 3636, 0, 0, 0, 0, 0, 0, 393678, 0, 393678, 393678, 393678, 393678, 393678, 393678, 393678, 393678, + /* 41444 */ 393678, 393678, 393678, 393678, 393678, 393678, 393678, 393678, 393678, 393678, 393678, 393678, 393678, 0, + /* 41458 */ 393678, 393678, 0, 1754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1770, 0, 0, 0, 0, 0, 1776, 0, 0, + /* 41486 */ 1779, 0, 1781, 0, 0, 0, 0, 0, 0, 3642, 0, 3644, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 41509 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2854, 521, 521, 521, 521, 521, 521, 521, 521, + /* 41530 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 1943, 1944, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 41551 */ 521, 521, 521, 0, 0, 1787, 1788, 0, 0, 0, 0, 0, 0, 0, 0, 1797, 1798, 0, 0, 0, 0, 0, 0, 1804, 0, 0, 1806, + /* 41578 */ 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 41602 */ 888, 521, 521, 521, 521, 57886, 57886, 57886, 1810, 1811, 1812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 41627 */ 0, 0, 0, 0, 0, 0, 1830, 1831, 0, 1832, 1833, 0, 0, 0, 0, 0, 0, 1186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 41657 */ 0, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 41690 */ 0, 0, 0, 3395, 0, 0, 3397, 0, 0, 0, 0, 0, 0, 0, 0, 1863, 1721, 1721, 1865, 521, 1867, 521, 1868, 1869, + /* 41714 */ 521, 1871, 521, 521, 521, 1875, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1888, 521, 521, 521, 521, + /* 41734 */ 1892, 521, 521, 521, 521, 1896, 521, 1898, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1908, 1909, + /* 41754 */ 1911, 521, 521, 521, 521, 521, 521, 521, 1919, 1920, 521, 1922, 521, 521, 521, 521, 521, 521, 521, 521, + /* 41774 */ 3667, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 41791 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60611, 57886, 57886, 0, 0, 57909, 57909, 57909, 57909, + /* 41807 */ 57909, 57909, 57909, 57909, 57909, 57909, 60622, 57909, 60625, 521, 1925, 1926, 521, 521, 521, 521, 521, + /* 41824 */ 521, 521, 1934, 521, 1936, 521, 1939, 521, 521, 521, 521, 521, 1946, 521, 521, 1948, 521, 521, 521, 521, + /* 41844 */ 521, 521, 521, 521, 521, 3197, 3198, 521, 521, 521, 521, 3201, 521, 521, 521, 521, 521, 521, 521, 521, + /* 41864 */ 521, 521, 3206, 521, 521, 521, 3209, 521, 521, 58754, 0, 59307, 57886, 59309, 57886, 59310, 57886, 59312, + /* 41882 */ 57886, 59314, 57886, 57886, 57886, 59318, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 41897 */ 59331, 57886, 57886, 57886, 57886, 59335, 57886, 1, 24578, 3, 155941, 156275, 295, 0, 0, 0, 0, 0, 301, + /* 41916 */ 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 483328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 41948 */ 0, 0, 0, 0, 0, 0, 2341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57886, 57886, 57886, 59339, 57886, 59341, + /* 41974 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59351, 59352, 59354, 57886, 57886, + /* 41989 */ 57886, 57886, 57886, 57886, 57886, 59362, 59363, 57886, 59365, 57886, 57886, 57886, 57886, 57886, 58799, + /* 42004 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 42019 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58829, 59368, 59369, 57886, 57886, + /* 42034 */ 57886, 57886, 57886, 57886, 57886, 59377, 57886, 59379, 57886, 59382, 57886, 57886, 57886, 57886, 57886, + /* 42049 */ 59390, 57886, 57886, 59392, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 2558, 0, + /* 42065 */ 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 42081 */ 57909, 57909, 57909, 57909, 60371, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 60377, + /* 42096 */ 57936, 57936, 57936, 57936, 50657, 0, 59407, 57909, 59409, 57909, 59410, 57909, 59412, 57909, 59414, + /* 42111 */ 57909, 57909, 57909, 59418, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59431, 57909, + /* 42126 */ 57909, 57909, 57909, 59435, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58916, 57909, 57909, 57909, + /* 42141 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 42156 */ 0, 57886, 57936, 57936, 57936, 57936, 57936, 521, 1335, 521, 521, 521, 521, 58774, 57886, 57886, 57886, + /* 42173 */ 57886, 57886, 1138, 0, 0, 1709, 0, 0, 0, 0, 1716, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, + /* 42198 */ 521, 521, 521, 3882, 521, 3884, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 42216 */ 57886, 59847, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 42231 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60277, 57886, 57886, 57886, + /* 42246 */ 57886, 57886, 57886, 57886, 57909, 57909, 59439, 57909, 59441, 57909, 57909, 57909, 57909, 57909, 57909, + /* 42261 */ 57909, 57909, 57909, 57909, 59451, 59452, 59454, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59462, + /* 42276 */ 59463, 57909, 59465, 57909, 57909, 59468, 59469, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59477, + /* 42291 */ 57909, 59479, 57909, 59482, 57909, 57909, 57909, 57909, 57909, 59490, 57909, 57909, 59492, 57909, 57909, + /* 42306 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57886, 57886, 57886, 57886, 57886, 60290, 57886, 57886, + /* 42321 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60299, 57886, 57886, 57886, 60302, 57886, + /* 42336 */ 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 1214, 0, 0, 0, 0, 0, 0, 0, 0, 1223, 0, 0, 0, 0, 0, 0, + /* 42363 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1238, 59503, 57936, 59505, 57936, 59506, 57936, 59508, 57936, 59510, 57936, + /* 42383 */ 57936, 57936, 59514, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59527, 57936, 57936, + /* 42398 */ 57936, 57936, 59531, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 42415 */ 57886, 57886, 57886, 1138, 0, 1707, 0, 0, 0, 0, 1714, 0, 0, 0, 0, 0, 0, 0, 0, 3170, 0, 0, 0, 0, 0, 0, 521, + /* 42442 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 3182, 521, 3185, 521, 521, 521, 521, 59535, 57936, 59537, + /* 42461 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59547, 59548, 59550, 57936, 57936, + /* 42476 */ 57936, 57936, 57936, 57936, 57936, 59558, 59559, 57936, 57936, 59561, 57936, 57936, 59564, 59565, 57936, + /* 42491 */ 57936, 57936, 57936, 57936, 57936, 57936, 59573, 57936, 59575, 57936, 59578, 57936, 57936, 57936, 57936, + /* 42506 */ 57936, 59586, 57936, 57936, 59588, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, + /* 42521 */ 1926, 521, 2258, 521, 57886, 59369, 57886, 59607, 57886, 2265, 0, 2266, 0, 0, 0, 0, 2268, 0, 2269, 0, 0, + /* 42542 */ 0, 0, 0, 0, 0, 0, 0, 0, 2276, 0, 0, 2279, 2280, 0, 0, 0, 2284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 42573 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2790, 0, 0, 0, 0, 2303, 0, 0, 0, 0, 2307, 0, 0, 0, 0, 0, 0, 0, + /* 42605 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2323, 0, 0, 0, 0, 2327, 0, 0, 0, 0, 0, 3873, 0, 521, 521, 521, 521, 521, + /* 42634 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, + /* 42653 */ 57886, 57886, 58803, 57886, 57886, 57886, 57886, 58808, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 42668 */ 57886, 57886, 58816, 57886, 57886, 57886, 58823, 58825, 57886, 57886, 57886, 0, 2356, 0, 0, 0, 0, 0, 0, 0, + /* 42688 */ 0, 2365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2375, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, + /* 42717 */ 521, 521, 521, 521, 521, 521, 521, 875, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 2412, 521, + /* 42737 */ 2414, 521, 521, 521, 521, 521, 521, 521, 2420, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 42758 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 1357, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 42779 */ 521, 521, 521, 521, 521, 2441, 2442, 521, 521, 521, 521, 521, 521, 2449, 521, 521, 521, 521, 521, 521, + /* 42799 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1383, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 42820 */ 521, 521, 1400, 521, 521, 521, 2463, 521, 521, 2466, 2467, 521, 0, 0, 0, 0, 57886, 57886, 57886, 57886, + /* 42840 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59833, 57886, 59835, + /* 42855 */ 57886, 57886, 57886, 57886, 57886, 57886, 60585, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 42870 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60599, + /* 42885 */ 57886, 57886, 57886, 57886, 57886, 59843, 57886, 59845, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 42900 */ 59851, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 42915 */ 57886, 57886, 57886, 57886, 60300, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, + /* 42932 */ 0, 57886, 57886, 57886, 57886, 59896, 57886, 57886, 59899, 59900, 57886, 0, 0, 0, 0, 57909, 57909, 57909, + /* 42950 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59922, 57909, + /* 42965 */ 57909, 57909, 57909, 57909, 57909, 58388, 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 57936, + /* 42982 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, + /* 42997 */ 521, 57886, 57886, 0, 0, 0, 3862, 0, 0, 3865, 0, 0, 0, 0, 3627, 0, 0, 59924, 57909, 57909, 57909, 57909, + /* 43019 */ 57909, 57909, 59932, 57909, 59934, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59940, 57909, 57909, + /* 43034 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 59991, 57936, + /* 43049 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43064 */ 60707, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 60007, 57936, 57936, + /* 43083 */ 57936, 57936, 57936, 57936, 60015, 57936, 60017, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60023, + /* 43098 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, + /* 43113 */ 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 2739, 2266, 0, 2740, 2269, 0, 0, 0, 521, 2868, 521, + /* 43133 */ 521, 521, 521, 2872, 521, 521, 521, 2877, 521, 521, 521, 521, 521, 521, 521, 521, 2885, 521, 521, 521, + /* 43153 */ 521, 521, 521, 521, 2890, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 57886, 57886, 59820, 57886, 57886, + /* 43173 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 43188 */ 57886, 57886, 58811, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 43203 */ 57886, 57886, 57886, 60259, 57886, 60261, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 43218 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60278, 57886, 57886, + /* 43233 */ 57886, 57886, 60282, 57886, 57886, 57886, 57886, 57886, 60605, 57886, 57886, 57886, 57886, 57886, 57886, + /* 43248 */ 57886, 57886, 57886, 57886, 57886, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 43264 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60319, 57909, 57909, 57909, 57909, 57909, 60324, 57909, + /* 43279 */ 57909, 57909, 57909, 57909, 57909, 57909, 57886, 57886, 60287, 57886, 57886, 57886, 57886, 57886, 57886, + /* 43294 */ 57886, 57886, 60295, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60301, 57886, 57886, 57886, + /* 43309 */ 57886, 57886, 57886, 57886, 0, 2962, 0, 0, 0, 0, 0, 1185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, + /* 43336 */ 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 43370 */ 0, 1856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60314, + /* 43391 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 43406 */ 60326, 57909, 60328, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60365, 57909, 57909, 57909, + /* 43421 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43436 */ 57936, 57936, 57936, 57936, 57936, 57936, 61082, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43451 */ 57936, 57936, 57936, 57936, 57936, 57936, 57909, 57909, 57909, 57909, 60362, 57909, 57909, 57909, 57909, + /* 43466 */ 57909, 57909, 57909, 57909, 60368, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, + /* 43481 */ 57936, 57936, 57936, 57936, 57936, 60379, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58959, + /* 43496 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58978, 57936, 57936, 57936, 57936, 57936, + /* 43511 */ 57936, 57936, 57936, 57936, 58988, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58960, + /* 43526 */ 58967, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58980, 57936, 58982, 57936, 57936, 57936, + /* 43541 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60417, 57936, 57936, 57936, 57936, 57936, + /* 43556 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60424, + /* 43571 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43586 */ 57936, 57936, 60410, 57936, 57936, 57936, 57936, 60414, 57936, 57936, 57936, 60419, 57936, 57936, 57936, + /* 43601 */ 57936, 57936, 57936, 57936, 57936, 60427, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, + /* 43616 */ 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 0, 3103, 0, 0, 3106, 3107, 0, 0, 3110, + /* 43638 */ 3111, 60433, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 57886, 57886, + /* 43654 */ 57886, 57886, 57886, 301, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 43682 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3140, 0, 0, 0, 0, 0, 0, 0, 0, + /* 43716 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278528, 0, 0, 0, 0, 0, 0, 3167, 3168, 0, 0, + /* 43748 */ 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3189, + /* 43772 */ 60580, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 43787 */ 57886, 57886, 60593, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 43802 */ 57886, 60600, 57909, 57909, 57909, 60629, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 43817 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60642, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 43832 */ 57909, 57909, 57909, 57909, 57909, 58925, 57909, 57909, 57909, 57909, 57909, 58933, 57909, 57909, 57909, + /* 43847 */ 57909, 57909, 57909, 57909, 0, 57886, 57936, 57936, 57936, 57936, 57909, 57909, 60649, 57909, 57909, + /* 43862 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 43877 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43892 */ 57936, 57936, 57936, 57936, 57936, 60678, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43907 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60691, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43922 */ 57936, 57936, 57936, 57936, 57936, 60044, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43937 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 57886, 3937, 0, 3939, 0, 0, 0, + /* 43955 */ 0, 0, 3627, 3943, 0, 3945, 57936, 57936, 57936, 60698, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 43972 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, + /* 43988 */ 0, 0, 0, 0, 0, 0, 0, 2368, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2398, 521, 521, 2401, + /* 44011 */ 521, 521, 521, 521, 521, 521, 2409, 521, 521, 3403, 0, 0, 0, 0, 3405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 44038 */ 0, 0, 0, 3419, 0, 0, 0, 0, 3424, 3425, 0, 3427, 0, 0, 0, 0, 0, 1197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1286, 0, + /* 44067 */ 0, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 44091 */ 521, 521, 521, 521, 521, 521, 521, 521, 3452, 521, 521, 521, 521, 3430, 0, 0, 0, 3433, 521, 521, 521, 521, + /* 44113 */ 521, 521, 3440, 521, 521, 521, 521, 521, 3444, 521, 521, 521, 521, 521, 521, 521, 3450, 521, 521, 521, + /* 44133 */ 521, 521, 3456, 60828, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60834, 57886, 57886, 57886, 57886, + /* 44149 */ 57886, 60840, 57886, 57886, 60843, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60850, 60852, + /* 44164 */ 57886, 57886, 57886, 57886, 57886, 57886, 58282, 58284, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 44179 */ 57886, 57886, 57886, 57886, 0, 57909, 57909, 58327, 57909, 57909, 57909, 57909, 57909, 57909, 58358, + /* 44194 */ 58360, 57909, 60856, 57886, 60858, 60859, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 60866, 57909, + /* 44209 */ 57909, 57909, 57909, 57909, 60870, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60876, 57909, 57909, + /* 44224 */ 57909, 57909, 57909, 60882, 57909, 57909, 60885, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 44239 */ 60892, 60894, 57909, 57909, 57909, 57909, 60898, 57909, 60900, 60901, 57909, 57936, 57936, 57936, 57936, + /* 44254 */ 57936, 57936, 60908, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61200, 57936, + /* 44269 */ 57936, 57936, 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 3866, 3867, 0, 3627, 0, 3871, 57936, 57936, + /* 44291 */ 60912, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60918, 57936, 57936, 57936, 57936, 57936, 60924, + /* 44306 */ 57936, 57936, 60927, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60934, 60936, 57936, 57936, + /* 44321 */ 57936, 57936, 57936, 57936, 57936, 57936, 59000, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 44336 */ 57936, 57936, 57936, 57936, 57936, 57936, 59020, 57936, 57936, 57936, 57936, 57936, 59028, 57936, 57936, + /* 44351 */ 57936, 57936, 57936, 57936, 57936, 57936, 59542, 57936, 57936, 57936, 59546, 57936, 57936, 59551, 57936, + /* 44366 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 44381 */ 60048, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 44396 */ 57936, 57936, 57936, 60940, 57936, 60942, 60943, 57936, 521, 521, 3602, 57886, 57886, 60949, 0, 0, 0, 0, + /* 44414 */ 0, 0, 3611, 0, 0, 3614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 3649, 3650, 521, + /* 44439 */ 521, 521, 521, 3654, 3655, 521, 521, 521, 521, 521, 3659, 521, 521, 521, 521, 3662, 521, 521, 521, 521, + /* 44459 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 61018, 57886, 57886, 57886, 57886, + /* 44477 */ 57886, 57886, 57886, 61023, 57886, 57886, 57886, 57886, 57886, 57886, 60833, 57886, 57886, 57886, 57886, + /* 44492 */ 57886, 57886, 57886, 57886, 60841, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 44507 */ 57886, 57886, 57886, 57886, 57886, 60855, 57909, 57909, 57909, 57909, 57909, 57909, 61052, 57909, 57909, + /* 44522 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61063, 57909, 57909, + /* 44537 */ 57909, 57909, 57909, 57909, 57909, 57909, 61071, 57909, 57909, 57909, 57909, 57909, 57909, 58914, 57909, + /* 44552 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58930, 57909, 57909, 57909, 57909, 57909, + /* 44567 */ 57909, 58941, 57909, 0, 57886, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 57886, + /* 44584 */ 57886, 57886, 57886, 57886, 57886, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 0, 0, 0, + /* 44610 */ 303104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57886, 57886, 61240, 57886, 57886, 57886, 57886, 57886, 57886, + /* 44631 */ 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61256, 57909, 57909, + /* 44646 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 61076, 57936, 57936, 57936, 57936, + /* 44661 */ 57936, 57936, 57936, 61081, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 44676 */ 57936, 57936, 57936, 61092, 57886, 57886, 57886, 61440, 57886, 61442, 57886, 57886, 57886, 57886, 61447, + /* 44691 */ 61448, 61449, 61450, 57909, 57909, 57909, 61453, 57909, 61455, 57909, 57909, 57909, 57909, 61460, 61461, + /* 44706 */ 61462, 61463, 57936, 57936, 57936, 61466, 57936, 61468, 57936, 57936, 57936, 57936, 61473, 0, 0, 0, 0, 0, + /* 44724 */ 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, + /* 44743 */ 57886, 57886, 57886, 61031, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 44758 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 61392, 57909, 57909, + /* 44773 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 61406, 57936, + /* 44788 */ 57936, 57936, 61535, 57936, 0, 0, 0, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, + /* 44806 */ 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 521, + /* 44823 */ 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, + /* 44839 */ 57909, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 521, 521, 521, 521, 4198, 521, 57886, 57886, + /* 44857 */ 57886, 57886, 61546, 57886, 57909, 57909, 57909, 57909, 61550, 57909, 57936, 57936, 57936, 57936, 61554, + /* 44872 */ 57936, 0, 371, 371, 0, 429, 131072, 371, 429, 429, 332, 371, 429, 0, 0, 429, 449, 429, 0, 0, 0, 429, 488, + /* 44895 */ 488, 488, 493, 488, 488, 488, 493, 488, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, + /* 44916 */ 429, 429, 527, 57893, 527, 57893, 527, 527, 57893, 527, 527, 57916, 57893, 527, 527, 57893, 57893, 57893, + /* 44934 */ 57916, 57893, 57893, 57893, 57893, 57893, 57893, 57893, 57916, 57916, 57893, 57893, 57943, 57893, 57893, + /* 44949 */ 57893, 57893, 57893, 57893, 57893, 57943, 57943, 57893, 57893, 57893, 57893, 57943, 57943, 57893, 527, + /* 44964 */ 57893, 57893, 57893, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, + /* 44987 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, 0, 0, 0, 0, 4399798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 45018 */ 0, 0, 773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, 0, + /* 45052 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, 521, 828, 521, 521, 521, 521, 521, 521, 860, 521, + /* 45079 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 58246, 1295, 0, 0, 0, 0, 0, 0, 0, 0, + /* 45102 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 2839, 521, + /* 45130 */ 521, 521, 521, 521, 521, 1326, 521, 521, 521, 521, 521, 1338, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 45151 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2430, 521, 521, 521, 521, 521, 521, + /* 45172 */ 521, 521, 521, 521, 521, 521, 58754, 901, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58765, + /* 45189 */ 57886, 57886, 57886, 57886, 57886, 58777, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 45204 */ 57886, 57886, 57886, 59381, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 45219 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61041, 57886, 57886, 57886, 57886, 57886, 57886, + /* 45234 */ 57886, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 58954, 57936, 57936, 57936, 57936, + /* 45249 */ 57936, 58966, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 45264 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 3375, 0, 0, + /* 45282 */ 0, 57909, 57909, 57909, 59954, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 45297 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 45312 */ 57909, 57909, 57909, 60355, 57909, 57909, 57909, 57936, 57936, 57936, 60037, 57936, 57936, 57936, 57936, + /* 45327 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 45342 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59026, 57936, 57936, 57936, 0, 0, 4212, + /* 45358 */ 521, 521, 521, 61558, 57886, 57886, 57886, 61560, 57909, 57909, 57909, 61562, 57936, 57936, 57936, 0, 521, + /* 45375 */ 521, 57886, 57886, 57909, 57909, 57936, 57936, 521, 57886, 57909, 57936, 521, 521, 521, 521, 521, 521, + /* 45392 */ 521, 521, 3793, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 45412 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60607, 57886, 57886, 60610, 57886, 57886, 60613, 0, 0, + /* 45428 */ 60614, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60637, + /* 45443 */ 60638, 57909, 57909, 57909, 57909, 60641, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 45458 */ 57909, 57909, 60647, 0, 0, 0, 430, 131072, 0, 430, 430, 0, 0, 430, 439, 0, 430, 0, 430, 469, 469, 469, + /* 45480 */ 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 528, 57894, 528, 57894, 528, + /* 45500 */ 528, 57894, 528, 528, 57917, 57894, 528, 528, 57894, 57894, 57894, 57917, 57894, 57894, 57894, 57894, + /* 45516 */ 57894, 57894, 57894, 57917, 57917, 57894, 57894, 57944, 57894, 57894, 57894, 57894, 57894, 57894, 57894, + /* 45531 */ 57944, 57944, 57894, 57894, 57894, 57894, 57944, 57944, 57894, 528, 57894, 57894, 57894, 1, 24578, 3, + /* 45547 */ 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 45575 */ 6275072, 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 58754, 1961, 57886, 57886, 57886, + /* 45601 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 45616 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 2561, 0, 50657, 2061, + /* 45633 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 45648 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 45663 */ 59950, 57909, 57909, 2302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 45693 */ 0, 0, 2326, 0, 0, 0, 0, 0, 1213, 0, 1215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 45725 */ 0, 0, 0, 0, 139264, 147456, 0, 0, 0, 420, 0, 0, 0, 0, 0, 2385, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, + /* 45751 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1949, 521, 521, 521, + /* 45772 */ 521, 521, 521, 521, 0, 3138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3158, 0, 0, + /* 45803 */ 0, 0, 0, 0, 0, 0, 1731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1747, 0, 0, 1750, 0, 0, 521, + /* 45834 */ 521, 521, 3213, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 0, 0, 57886, 57886, 57886, 57886, 57886, + /* 45854 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 50657, 58754, 977, 57909, + /* 45869 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58868, 57909, 0, 0, + /* 45885 */ 3404, 0, 0, 0, 0, 0, 3407, 0, 3409, 0, 0, 3412, 0, 0, 0, 0, 0, 3417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 45915 */ 6275072, 0, 0, 0, 0, 0, 0, 0, 4399797, 4399797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 3460, + /* 45940 */ 521, 521, 521, 521, 521, 521, 521, 521, 3468, 521, 521, 3471, 521, 521, 521, 60818, 57886, 57886, 57886, + /* 45959 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58296, 57886, 57886, 57886, 57886, 58314, 57886, + /* 45974 */ 57886, 0, 57909, 57909, 58325, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57886, + /* 45989 */ 60857, 57886, 57886, 57886, 60860, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 46004 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60877, 57909, 57909, 57909, 57909, + /* 46019 */ 57909, 57909, 57909, 57909, 57909, 57909, 59959, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 46034 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 60664, + /* 46049 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57909, 57909, 57909, 57909, 57909, + /* 46064 */ 60887, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60896, 57909, 57909, 60899, 57909, + /* 46079 */ 57909, 57909, 60902, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 0, 0, 0, + /* 46098 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 4089, 521, 57886, 57886, 57886, 60938, 57936, + /* 46116 */ 57936, 60941, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46139 */ 3615, 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46173 */ 3159, 3160, 0, 0, 0, 0, 0, 521, 521, 521, 521, 3663, 521, 3665, 521, 521, 521, 521, 521, 521, 521, 521, + /* 46195 */ 521, 521, 57886, 57886, 61017, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46210 */ 57886, 57886, 59850, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59857, 57886, 59859, 57886, + /* 46225 */ 59862, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61029, 57886, 57886, 57886, + /* 46240 */ 57886, 57886, 57886, 57886, 57886, 61035, 57886, 61037, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46255 */ 57886, 57886, 57886, 57886, 57909, 57909, 61046, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58917, + /* 46270 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58934, 57909, 57909, 57909, + /* 46285 */ 57909, 57909, 57909, 0, 57886, 57936, 57936, 57936, 58949, 57936, 61093, 57936, 61095, 57936, 57936, + /* 46300 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, + /* 46317 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 3791, 521, 521, 521, 521, + /* 46345 */ 521, 521, 521, 521, 3797, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46363 */ 57886, 57886, 57886, 57886, 58804, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46378 */ 57886, 57886, 57886, 57886, 57886, 58819, 57886, 57886, 57886, 57886, 57886, 57886, 61153, 57886, 57886, + /* 46393 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61159, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46408 */ 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61172, 57909, 57909, 57909, + /* 46423 */ 57909, 57909, 57909, 58915, 57909, 57909, 58922, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 46438 */ 57909, 57909, 58936, 57909, 57909, 57909, 57909, 57909, 0, 57886, 57936, 57936, 57936, 57936, 57936, 521, + /* 46454 */ 1336, 521, 521, 521, 521, 58775, 57886, 57886, 57886, 57886, 57886, 1138, 0, 0, 0, 0, 1711, 0, 0, 0, 0, + /* 46475 */ 1718, 0, 0, 0, 0, 0, 0, 1247, 1248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1155, 1154, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46505 */ 0, 0, 0, 2799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3630, 0, 0, 0, 0, 0, 0, 0, + /* 46538 */ 3637, 0, 0, 57936, 57936, 57936, 57936, 57936, 61197, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 46554 */ 57936, 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46583 */ 0, 0, 3782, 0, 0, 521, 521, 521, 521, 0, 0, 0, 0, 683, 684, 0, 0, 0, 0, 689, 0, 0, 0, 367, 367, 367, 0, 0, + /* 46611 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, 57896, 530, 57896, 530, 530, 57896, 530, 530, 57919, 57896, + /* 46635 */ 530, 530, 57896, 57896, 57896, 57919, 57886, 58258, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46650 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58317, 0, 57909, 57909, 57909, 57909, + /* 46665 */ 58334, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59481, 57909, 57909, + /* 46680 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 46695 */ 57909, 57909, 57886, 57936, 57936, 57936, 57936, 58468, 521, 839, 521, 521, 521, 898, 0, 58258, 57886, + /* 46712 */ 57886, 57886, 57886, 58317, 155941, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1219, 1220, 0, 0, 0, 0, 0, + /* 46737 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6299648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5808128, 0, 0, 0, + /* 46768 */ 1211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, + /* 46799 */ 521, 3647, 521, 521, 521, 521, 521, 521, 521, 3652, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 46820 */ 2421, 521, 521, 521, 2424, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 46841 */ 2895, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46857 */ 57886, 57886, 60842, 57886, 60844, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46872 */ 57886, 57886, 57886, 0, 0, 1839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1853, 0, 0, 0, 0, 0, 0, + /* 46901 */ 0, 0, 0, 0, 0, 0, 1307, 1308, 0, 0, 1154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 1319, 521, 521, 521, 1958, + /* 46929 */ 58754, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46944 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 46959 */ 57886, 0, 2962, 0, 0, 386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46991 */ 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 412, 139264, 147456, 0, 0, 0, 421, 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, + /* 47020 */ 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, 333, 0, 0, 139264, 147456, 0, 0, 0, 0, 0, 0, 0, 2773, 0, 0, 0, 0, + /* 47050 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3634, 0, 0, 0, 0, 0, 0, 424, 424, 0, 0, + /* 47082 */ 131072, 424, 0, 0, 0, 424, 0, 440, 0, 0, 424, 334, 470, 470, 470, 483, 483, 483, 483, 483, 483, 483, 483, + /* 47105 */ 483, 483, 504, 512, 512, 512, 512, 519, 512, 512, 512, 519, 512, 512, 512, 512, 512, 512, 529, 57895, 529, + /* 47126 */ 57895, 529, 529, 57895, 529, 529, 57918, 57895, 529, 529, 57895, 57895, 57895, 57918, 57895, 57895, 57895, + /* 47143 */ 57895, 57895, 57895, 57895, 57918, 57918, 57895, 57895, 57945, 57895, 57895, 57895, 57895, 57895, 57895, + /* 47158 */ 57895, 57945, 57945, 57895, 57895, 57895, 57895, 57945, 57945, 57895, 529, 57895, 57895, 57895, 1, 24578, + /* 47174 */ 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 47203 */ 1734, 0, 0, 0, 0, 0, 0, 0, 0, 1741, 0, 0, 1744, 1745, 1746, 0, 1748, 1749, 0, 0, 0, 822, 0, 0, 0, 0, 0, 0, + /* 47231 */ 0, 521, 521, 521, 521, 842, 521, 851, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 47252 */ 899, 57886, 57886, 57886, 57886, 57886, 57886, 61244, 57886, 57886, 57886, 61248, 57886, 57909, 57909, + /* 47267 */ 57909, 57909, 57909, 57909, 61254, 57909, 57909, 57909, 57909, 57909, 57909, 61260, 57909, 57909, 57909, + /* 47282 */ 61264, 57909, 57936, 57886, 57886, 58261, 57886, 58270, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47297 */ 57886, 57886, 57886, 57886, 57886, 57886, 58318, 0, 57909, 57909, 57909, 57909, 57909, 58337, 57909, + /* 47312 */ 58346, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58887, 58889, 57909, 57909, 57909, + /* 47327 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 47342 */ 57909, 57909, 57909, 60661, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60669, 57936, + /* 47357 */ 57936, 57936, 57936, 57936, 57936, 57936, 58469, 521, 521, 521, 521, 1130, 899, 0, 57886, 57886, 57886, + /* 47374 */ 57886, 58480, 58318, 155941, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1764, 1765, 1766, 0, 0, 0, 0, 0, 0, + /* 47400 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2319, 2320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, + /* 47430 */ 521, 521, 1331, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1350, 521, 521, 521, 521, 521, 521, 521, 521, + /* 47451 */ 521, 1360, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47470 */ 59825, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59837, 57886, 57886, + /* 47485 */ 521, 1408, 521, 58754, 901, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47501 */ 57886, 58770, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58789, 57886, 57886, 57886, + /* 47516 */ 57886, 57886, 57886, 59342, 59343, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47531 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47546 */ 59360, 57886, 57886, 57886, 57886, 57886, 59367, 57886, 57886, 58833, 57886, 57886, 57886, 57886, 57886, + /* 47561 */ 58840, 57886, 57886, 57886, 58847, 57886, 50657, 58754, 977, 57909, 57909, 57909, 57909, 57909, 57909, + /* 47576 */ 57909, 57909, 57909, 57909, 57909, 57909, 58865, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58919, + /* 47591 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 47606 */ 57909, 57909, 57909, 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 47621 */ 60042, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 47636 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 3370, 57886, 57886, 60717, 0, 0, 0, 0, 0, + /* 47654 */ 57936, 57936, 57936, 59037, 57936, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47671 */ 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1796, 0, 0, 0, 0, 0, 0, 0, 1803, 0, 1805, 0, 0, 0, 1807, + /* 47701 */ 0, 739, 0, 0, 0, 0, 1838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 47734 */ 0, 0, 0, 0, 1836, 1924, 521, 521, 521, 521, 521, 521, 521, 521, 1933, 521, 521, 521, 521, 521, 521, 1942, + /* 47756 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1952, 1954, 521, 521, 521, 0, 0, 0, 0, 0, 0, 57886, + /* 47778 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47793 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59861, 57886, 57886, 57886, 57886, 57886, + /* 47808 */ 57886, 521, 58754, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47824 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59328, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47839 */ 57886, 57886, 57886, 57886, 61033, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47854 */ 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 47869 */ 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 50657, 0, 57909, + /* 47884 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 47899 */ 57909, 57909, 57909, 57909, 59428, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 47914 */ 0, 0, 0, 0, 57886, 57936, 57936, 58397, 57936, 57936, 57936, 57936, 57936, 57936, 58430, 57936, 57936, + /* 47931 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59572, 57936, 57936, 57936, + /* 47946 */ 57936, 57936, 57936, 59581, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59592, + /* 47961 */ 59594, 57936, 57936, 57936, 57936, 521, 521, 521, 0, 0, 2472, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, + /* 47980 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 47995 */ 57886, 57886, 57886, 59885, 57886, 57886, 57886, 57886, 59889, 57886, 57886, 57886, 2329, 0, 0, 0, 0, 0, + /* 48013 */ 0, 0, 0, 2337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3128, 0, 0, 0, 0, 0, + /* 48046 */ 0, 0, 0, 521, 521, 2465, 521, 521, 521, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 59824, + /* 48066 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59836, 57886, 57886, 57886, + /* 48081 */ 57886, 57886, 57886, 61492, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48096 */ 57909, 61500, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48111 */ 57936, 59583, 59584, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48126 */ 57936, 57936, 2255, 521, 59925, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48141 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48156 */ 57909, 57909, 57909, 57909, 57909, 57909, 60358, 59953, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48171 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48186 */ 57909, 59972, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59935, 57909, + /* 48201 */ 59937, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48216 */ 57909, 57909, 57909, 57909, 60660, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48231 */ 57936, 57936, 60671, 57936, 60008, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48246 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48261 */ 57936, 57936, 57936, 57936, 57936, 57936, 59598, 521, 521, 60036, 57936, 57936, 57936, 57936, 57936, + /* 48276 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48291 */ 57936, 57936, 57936, 60055, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 0, 4132, 0, 521, + /* 48310 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, + /* 48330 */ 2769, 0, 0, 2772, 0, 0, 0, 0, 0, 0, 2776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2787, 0, 0, 0, 0, 0, 0, 0, 394, + /* 48361 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319488, 319488, 0, 0, 0, 0, 0, + /* 48393 */ 0, 2795, 0, 0, 0, 0, 2797, 0, 0, 0, 0, 0, 0, 0, 2801, 2802, 0, 0, 2805, 0, 0, 2808, 0, 0, 0, 0, 0, 0, 0, + /* 48422 */ 0, 0, 0, 1161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, + /* 48456 */ 0, 0, 2818, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2828, 0, 0, 0, 0, 521, 2832, 521, 521, 521, 521, 521, + /* 48484 */ 521, 521, 521, 521, 521, 521, 2878, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 48505 */ 521, 521, 521, 521, 521, 521, 1356, 521, 521, 521, 1359, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 48526 */ 521, 521, 521, 2873, 521, 521, 521, 521, 521, 521, 2880, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 48547 */ 2888, 521, 521, 521, 2891, 521, 521, 521, 0, 0, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, + /* 48567 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60253, 57886, 57886, 57886, + /* 48582 */ 57886, 57886, 57886, 57886, 61493, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48597 */ 57909, 57909, 61501, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48612 */ 57936, 60921, 57936, 60923, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60930, 57936, 57936, 60932, + /* 48627 */ 57936, 57936, 57936, 57936, 57936, 0, 0, 57909, 60308, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48643 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48658 */ 57909, 57909, 57909, 57909, 57909, 60331, 57936, 57936, 60407, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48673 */ 57936, 60415, 57936, 57936, 57936, 57936, 57936, 57936, 60422, 57936, 57936, 57936, 57936, 57936, 57936, + /* 48688 */ 57936, 57936, 57936, 57936, 57936, 60431, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59574, + /* 48703 */ 57936, 57936, 57936, 59580, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59590, 57936, + /* 48718 */ 57936, 57936, 57936, 59596, 57936, 57936, 521, 521, 521, 0, 901, 57886, 57886, 57886, 57886, 57886, 57886, + /* 48735 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 48750 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59864, 57886, 57886, 57886, 57936, 60434, 57936, 57936, + /* 48765 */ 57936, 57936, 57936, 57936, 3094, 521, 521, 521, 521, 60441, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 3102, + /* 48784 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 3646, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 48808 */ 521, 521, 521, 521, 3658, 521, 521, 521, 3112, 0, 0, 0, 0, 0, 0, 0, 3116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 48836 */ 0, 0, 0, 0, 0, 3130, 3131, 0, 0, 0, 0, 0, 0, 0, 3143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 48868 */ 0, 0, 0, 0, 0, 0, 0, 333, 334, 335, 0, 0, 0, 0, 0, 3211, 521, 521, 521, 521, 521, 521, 521, 3215, 521, + /* 48893 */ 521, 521, 521, 521, 0, 0, 57886, 57886, 57886, 60567, 57886, 57886, 57886, 57886, 57886, 60572, 57886, + /* 48910 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61246, 57886, 57886, 57886, 61249, 57909, 57909, 57909, + /* 48925 */ 57909, 61253, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61262, 57909, 57909, 57909, + /* 48940 */ 61265, 60601, 57886, 60603, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60608, 57886, 57886, + /* 48955 */ 57886, 57886, 57886, 0, 0, 57909, 57909, 57909, 60616, 57909, 57909, 57909, 57909, 57909, 60621, 57909, + /* 48971 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60654, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 48986 */ 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 49001 */ 57936, 57936, 57936, 57936, 57936, 61086, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 49016 */ 57936, 57909, 57909, 57909, 60650, 57909, 60652, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 49031 */ 60657, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 60665, 57936, 57936, 57936, 57936, 57936, + /* 49046 */ 60670, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60041, 57936, 57936, 57936, 57936, 57936, + /* 49061 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60054, 57936, 57936, 57936, 57936, 57936, 60058, + /* 49076 */ 60059, 60060, 57936, 60696, 57936, 57936, 57936, 60699, 57936, 60701, 57936, 57936, 57936, 57936, 57936, + /* 49091 */ 57936, 57936, 57936, 60706, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 3374, + /* 49107 */ 0, 0, 3377, 3378, 521, 521, 521, 521, 521, 521, 3462, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 49128 */ 521, 521, 521, 57886, 57886, 57886, 57886, 60822, 57886, 57886, 57886, 57886, 60826, 57886, 57886, 57886, + /* 49144 */ 57886, 57886, 58835, 57886, 57886, 57886, 57886, 57886, 57886, 58846, 57886, 50657, 58754, 977, 57909, + /* 49159 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58862, 57909, 57909, 57909, 57909, 57909, + /* 49174 */ 57909, 57909, 57909, 57909, 58394, 0, 0, 0, 0, 57886, 57936, 57936, 57936, 57936, 57936, 58412, 57936, + /* 49191 */ 58421, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, + /* 49211 */ 521, 521, 521, 521, 4085, 521, 4087, 521, 521, 521, 57886, 57886, 57886, 57936, 57936, 57936, 57936, + /* 49228 */ 57936, 57936, 57936, 60916, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 49243 */ 57936, 57936, 57936, 57936, 57936, 60931, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, + /* 49259 */ 57886, 57886, 57886, 0, 0, 0, 3608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1194, 0, 1196, 0, 0, 367, + /* 49287 */ 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3619, 3620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 49320 */ 0, 0, 3633, 0, 0, 0, 0, 0, 0, 0, 0, 1793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1806, 0, 0, 0, 0, 0, + /* 49352 */ 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 49374 */ 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60825, 57886, 57886, 57886, 57886, 521, 521, + /* 49390 */ 3787, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3798, 521, 521, 521, 521, 521, + /* 49411 */ 57886, 57886, 57886, 57886, 57886, 57886, 61149, 57886, 57886, 57886, 57886, 57886, 58836, 57886, 57886, + /* 49426 */ 57886, 57886, 57886, 57886, 57886, 57886, 50657, 58754, 977, 57909, 57909, 57909, 57909, 57909, 57909, + /* 49441 */ 57909, 57909, 57909, 58861, 57909, 57909, 57909, 58870, 57909, 57936, 57936, 57936, 57936, 57936, 57936, + /* 49456 */ 57936, 61198, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 49477 */ 0, 0, 3627, 0, 0, 3777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 4022, 521, + /* 49505 */ 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 61379, 0, 521, 521, 521, 521, + /* 49524 */ 521, 521, 521, 521, 3955, 521, 3957, 3958, 521, 3960, 521, 57886, 57886, 57886, 57886, 57886, 57886, + /* 49541 */ 57886, 57886, 61314, 57886, 61316, 61317, 57886, 61319, 57886, 61321, 61488, 57886, 61489, 57886, 57886, + /* 49556 */ 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 61496, 57909, 61497, 57909, 57909, 57909, 57909, + /* 49571 */ 57936, 57936, 57936, 57936, 57936, 57936, 61504, 57936, 61505, 57936, 57936, 57936, 57936, 57936, 57936, + /* 49586 */ 57936, 57936, 57936, 58961, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 49601 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59019, 57936, 57936, 59023, + /* 49616 */ 57936, 57936, 57936, 57936, 57936, 59030, 0, 0, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57909, + /* 49633 */ 57909, 57909, 57909, 57936, 57936, 57936, 57936, 0, 521, 521, 57886, 57886, 57909, 57909, 57936, 57936, + /* 49649 */ 4224, 61569, 61570, 61571, 521, 521, 521, 521, 521, 521, 521, 1332, 1339, 521, 521, 521, 521, 521, 521, + /* 49668 */ 521, 521, 1352, 521, 1354, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2422, 521, 521, + /* 49688 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 0, 0, 57886, 60566, + /* 49709 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58307, + /* 49724 */ 57886, 57886, 57886, 57886, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 49739 */ 57909, 57909, 57896, 57896, 57896, 57896, 57896, 57896, 57896, 57919, 57919, 57896, 57896, 57946, 57896, + /* 49754 */ 57896, 57896, 57896, 57896, 57896, 57896, 57946, 57946, 57896, 57896, 57896, 57896, 57946, 57946, 57896, + /* 49769 */ 530, 57896, 57896, 57896, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, + /* 49792 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2312, 0, 0, 0, 2315, 0, 0, 0, 0, 0, 2321, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 49824 */ 0, 57909, 58909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 49839 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, 57886, 57936, + /* 49854 */ 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 1138, + /* 49871 */ 1705, 1706, 0, 0, 0, 1712, 1713, 0, 0, 0, 0, 0, 0, 0, 0, 687, 0, 0, 0, 0, 0, 367, 367, 367, 0, 0, 0, 0, 0, + /* 49900 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, + /* 49929 */ 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 49946 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, + /* 49971 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 50005 */ 0, 367, 367, 0, 0, 0, 0, 0, 1162, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, + /* 50037 */ 0, 0, 0, 0, 383, 0, 139264, 147456, 0, 405, 0, 0, 405, 0, 0, 0, 431, 131072, 0, 431, 431, 0, 0, 431, 0, + /* 50062 */ 445, 431, 0, 431, 471, 471, 471, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, + /* 50083 */ 484, 531, 57897, 531, 57897, 531, 531, 57897, 531, 531, 57920, 57897, 531, 531, 57897, 57897, 57897, + /* 50100 */ 57920, 57897, 57897, 57897, 57897, 57897, 57897, 57897, 57920, 57920, 57897, 57897, 57947, 57897, 57897, + /* 50115 */ 57897, 57897, 57897, 57897, 57897, 57947, 57947, 57897, 57897, 57897, 57897, 57947, 57947, 57897, 531, + /* 50130 */ 57897, 57897, 57897, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, + /* 50153 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2775, 0, 0, 0, 0, 0, 2780, 0, 2782, 2783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 50184 */ 0, 1157, 0, 0, 0, 0, 0, 0, 0, 1159, 0, 0, 0, 0, 0, 0, 1266, 0, 0, 0, 0, 1271, 654, 0, 0, 0, 0, 0, 0, 0, 0, + /* 50215 */ 0, 0, 654, 0, 654, 0, 0, 0, 0, 813, 0, 0, 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 3645, 521, 521, 521, + /* 50243 */ 3648, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3656, 521, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, + /* 50265 */ 733, 654, 0, 0, 521, 829, 521, 521, 521, 844, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 885, 521, + /* 50287 */ 521, 521, 521, 57886, 57886, 58247, 57886, 57886, 57886, 58263, 57886, 57886, 57886, 57886, 57886, 57886, + /* 50303 */ 57886, 57886, 57886, 57886, 58304, 57886, 57886, 57886, 57886, 0, 57909, 57909, 58323, 57909, 57909, + /* 50318 */ 57909, 58339, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59987, 57909, 57909, + /* 50333 */ 57909, 57936, 57936, 57936, 57936, 57936, 57936, 59996, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 50348 */ 57936, 57936, 57936, 57936, 57936, 57936, 60391, 57936, 60393, 57936, 57936, 57936, 57936, 57936, 57936, + /* 50363 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60022, 57936, 57936, 57936, 57936, + /* 50378 */ 57936, 57936, 57936, 57936, 60029, 57936, 60031, 57936, 60034, 57936, 57936, 57909, 57909, 57909, 57909, + /* 50393 */ 57909, 58380, 57909, 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 58398, 57936, 57936, 57936, + /* 50410 */ 58414, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60390, 57936, + /* 50425 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 50440 */ 57936, 57936, 57936, 60710, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 58455, 57936, 57936, + /* 50459 */ 57936, 57936, 521, 521, 521, 885, 521, 521, 0, 57886, 57886, 57886, 58304, 57886, 57886, 293, 1138, 0, 0, + /* 50478 */ 1142, 0, 0, 1147, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 50502 */ 521, 521, 521, 3888, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58841, 57886, 57886, + /* 50518 */ 57886, 57886, 57886, 50657, 58754, 977, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 50533 */ 57909, 57909, 57909, 57909, 57909, 57909, 60639, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 50548 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59965, 57909, 57909, 57909, 57909, 57909, 57909, + /* 50563 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, 0, 0, 1154, 1155, 0, 0, 0, 0, 0, 0, 0, + /* 50584 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3133, 0, 0, 0, 0, 0, 0, 1155, 0, 0, 0, 0, + /* 50617 */ 0, 0, 1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 760, 0, 0, 763, 0, 0, 767, 0, + /* 50649 */ 0, 0, 0, 521, 521, 521, 58754, 901, 57886, 58757, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 50667 */ 57886, 57886, 57886, 58771, 58778, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58791, 57886, + /* 50682 */ 58793, 57886, 57886, 57886, 57886, 57886, 60831, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 50697 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60849, 57886, 60851, 57886, + /* 50712 */ 57886, 57886, 57886, 57886, 57886, 58278, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 50727 */ 57886, 57886, 57886, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58354, 57909, + /* 50742 */ 57909, 58908, 57909, 58910, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58923, 57909, 57909, 57909, + /* 50757 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58938, 57909, 57909, 57909, 0, 57886, 57936, + /* 50772 */ 58946, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60068, 57936, 57936, 60071, 60072, 57936, + /* 50787 */ 2404, 521, 2731, 521, 521, 59835, 57886, 60080, 57886, 57886, 2739, 2266, 0, 2740, 2269, 0, 0, 0, 0, 0, 0, + /* 50808 */ 4014, 0, 4016, 0, 521, 521, 521, 521, 521, 4021, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, + /* 50828 */ 57886, 57886, 57886, 57886, 61378, 57886, 57936, 59033, 57936, 57936, 57936, 521, 1332, 521, 1389, 521, + /* 50844 */ 521, 58771, 57886, 57886, 58828, 57886, 57886, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3146, 0, 0, + /* 50869 */ 0, 0, 0, 0, 0, 0, 0, 0, 3156, 0, 0, 0, 0, 3161, 0, 0, 0, 3163, 0, 1724, 1725, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 50899 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2342912, 0, 0, 0, 521, 521, 521, 521, 521, + /* 50929 */ 521, 1930, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 50950 */ 521, 521, 521, 521, 521, 1957, 521, 58754, 1961, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 50967 */ 57886, 57886, 57886, 57886, 57886, 57886, 59321, 59322, 57886, 57886, 57886, 57886, 59329, 57886, 57886, + /* 50982 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 61391, 57909, 57909, 57909, + /* 50997 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 61405, 57936, 57936, + /* 51012 */ 50657, 2061, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 51027 */ 57909, 59421, 59422, 57909, 57909, 57909, 57909, 59429, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 51042 */ 57909, 57909, 57909, 0, 0, 0, 741, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51059 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59520, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51074 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57909, 57909, 57909, 57909, 59473, 57909, 57909, + /* 51089 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 51104 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59501, 57909, 57886, 57886, 57886, 57886, 57886, 60832, + /* 51119 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 51134 */ 57886, 60847, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58843, 57886, 57886, + /* 51149 */ 57886, 50657, 58754, 977, 57909, 58852, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 51164 */ 57909, 57909, 58866, 58873, 57936, 57936, 57936, 57936, 57936, 59540, 57936, 57936, 57936, 57936, 57936, + /* 51179 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51194 */ 59560, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 0, 57886, 57886, 57886, 57886, + /* 51211 */ 57886, 57886, 155941, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2809, 0, + /* 51239 */ 0, 0, 0, 0, 0, 0, 0, 0, 57936, 57936, 57936, 59569, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51258 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51273 */ 57936, 57936, 59597, 57936, 521, 521, 521, 0, 2895, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, + /* 51292 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 51307 */ 57886, 57886, 57886, 59359, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 2330, 0, 0, 0, 0, 0, 0, 0, + /* 51327 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2346, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, + /* 51357 */ 521, 521, 2397, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 0, 0, 57886, 57886, + /* 51378 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61162, + /* 51393 */ 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 51408 */ 59866, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59878, + /* 51423 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59884, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 51438 */ 59890, 57886, 57886, 57886, 57886, 57886, 61030, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 51453 */ 61036, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, + /* 51468 */ 57909, 57909, 57909, 57909, 61393, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, + /* 51483 */ 57936, 57936, 57936, 57936, 57936, 61407, 57909, 57909, 57909, 57909, 59955, 57909, 57909, 57909, 57909, + /* 51498 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59967, 57909, 57909, 57909, 57909, 57909, + /* 51513 */ 57909, 57909, 59973, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60366, 57909, + /* 51528 */ 57909, 57909, 60369, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 60373, 57936, 57936, 57936, 57936, + /* 51543 */ 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 4083, 521, 521, 521, 521, 521, + /* 51565 */ 521, 521, 521, 57886, 57886, 57886, 57909, 57909, 59979, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 51581 */ 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51596 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51611 */ 57936, 60430, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60038, 57936, 57936, 57936, 57936, + /* 51626 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60050, 57936, 57936, 57936, 57936, 57936, + /* 51641 */ 57936, 57936, 60056, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 0, 57886, 57886, + /* 51658 */ 57886, 57886, 57886, 57886, 155941, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1149, 0, 0, 57936, 57936, 60062, + /* 51679 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, + /* 51695 */ 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3109, 0, 0, 60258, 57886, 57886, + /* 51717 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 51732 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59865, + /* 51747 */ 3164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 3180, 521, 521, + /* 51773 */ 521, 521, 521, 521, 3188, 521, 521, 521, 521, 521, 521, 521, 1333, 521, 521, 521, 521, 521, 521, 521, 521, + /* 51794 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2858, 521, 521, 521, 521, + /* 51815 */ 521, 521, 521, 521, 521, 521, 57909, 57909, 60628, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 51832 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 51847 */ 57909, 57909, 57909, 57909, 57909, 57909, 61070, 57909, 57909, 57936, 57936, 57936, 60677, 57936, 57936, + /* 51862 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51877 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59027, 57936, 57936, 57936, + /* 51892 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61099, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 51907 */ 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3171, 0, 0, 0, 521, 3175, 521, 521, + /* 51932 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 0, 2472, 57886, 57886, 57886, 57886, + /* 51951 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59349, 57886, 57886, + /* 51966 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 51981 */ 61039, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, + /* 51996 */ 57886, 57886, 57886, 57886, 61441, 57886, 61443, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, + /* 52011 */ 57909, 57909, 57909, 61454, 57909, 61456, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, + /* 52026 */ 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 3607, 0, 3609, 0, 0, 0, 3613, 0, 0, 0, 0, 0, 0, 0, + /* 52050 */ 0, 0, 0, 1733, 0, 0, 0, 1736, 0, 0, 1739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 335872, 0, 0, 0, 0, 0, + /* 52081 */ 0, 0, 0, 0, 0, 0, 0, 0, 139264, 147456, 0, 0, 335872, 0, 0, 61467, 57936, 61469, 57936, 57936, 57936, + /* 52102 */ 57936, 0, 0, 0, 0, 0, 0, 0, 4134, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 61485, 57886, + /* 52124 */ 57886, 57886, 57886, 57886, 57886, 57886, 59846, 57886, 59848, 57886, 57886, 57886, 57886, 57886, 57886, + /* 52139 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 52154 */ 57886, 60273, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 388, 340, 0, + /* 52171 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2351104, 0, 0, 0, + /* 52204 */ 0, 0, 131072, 0, 0, 0, 0, 0, 0, 441, 0, 0, 0, 456, 472, 472, 472, 456, 456, 456, 456, 456, 456, 456, 456, + /* 52229 */ 456, 456, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 532, 57898, 532, + /* 52249 */ 57898, 532, 532, 57898, 532, 532, 57921, 57898, 532, 532, 57898, 57898, 57898, 57921, 57898, 57898, 57898, + /* 52266 */ 57898, 57898, 57898, 57898, 57921, 57921, 57898, 57898, 57948, 57898, 57898, 57898, 57898, 57898, 57898, + /* 52281 */ 57898, 57948, 57948, 57898, 57898, 57898, 57898, 57948, 57948, 57898, 532, 57898, 57898, 57898, 1, 24578, + /* 52297 */ 3, 155941, 156275, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 52326 */ 3410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212992, 0, 0, 0, 0, 0, 212992, + /* 52355 */ 212992, 212992, 212992, 212992, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 655, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, + /* 52381 */ 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57886, 57886, 57886, + /* 52410 */ 58264, 57886, 57886, 58280, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 52425 */ 57886, 0, 57909, 57909, 57909, 57909, 57909, 57909, 58340, 57909, 57909, 58356, 57909, 57909, 57909, + /* 52440 */ 57909, 57909, 57909, 57909, 59444, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 52455 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59464, 57909, 57909, 57909, 57909, 57909, + /* 52470 */ 57909, 57909, 57909, 57909, 58921, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 52485 */ 57909, 57909, 57909, 57909, 57909, 57909, 0, 57886, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, + /* 52502 */ 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 1138, 1705, 0, 0, 0, 0, 1712, 0, 0, 0, 0, 0, 0, 0, + /* 52524 */ 1722, 0, 1241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 52557 */ 1293, 0, 0, 0, 0, 0, 1299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 0, 521, 521, + /* 52588 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 52609 */ 521, 1890, 521, 521, 521, 521, 521, 521, 521, 521, 1372, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 52630 */ 521, 521, 521, 521, 1391, 521, 521, 521, 521, 521, 1399, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 57886, + /* 52652 */ 59819, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 52667 */ 57886, 57886, 57886, 57886, 57886, 57886, 59357, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 52682 */ 57886, 57886, 57886, 521, 521, 521, 58754, 901, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 52698 */ 57886, 57886, 57886, 57886, 57886, 58772, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 52713 */ 57886, 57886, 57886, 57886, 58848, 50657, 58754, 977, 58851, 57909, 57909, 57909, 57909, 57909, 58858, + /* 52728 */ 57909, 57909, 57909, 57909, 58864, 57909, 57909, 57909, 58830, 57886, 57886, 57886, 57886, 57886, 58838, + /* 52743 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 50657, 58754, 977, 57909, 57909, 57909, 57909, 57909, + /* 52758 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58867, 57909, 57909, 57909, 57909, 57909, 57909, + /* 52773 */ 60631, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 52788 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60645, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 52803 */ 57909, 59985, 57909, 57909, 59988, 59989, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 52818 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60005, 57936, 0, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, + /* 52839 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 338, 339, 0, 521, 58754, 0, 57886, 57886, + /* 52868 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59323, + /* 52883 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59334, 57886, 57886, 57886, 57886, 57886, + /* 52898 */ 58837, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 50657, 58754, 977, 57909, 57909, 57909, + /* 52913 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61058, 57909, 57909, + /* 52928 */ 57909, 57909, 57909, 57909, 57909, 57909, 61064, 57909, 61066, 57909, 57909, 57909, 57909, 57909, 57909, + /* 52943 */ 50657, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 52958 */ 57909, 57909, 57909, 59423, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59434, 57909, + /* 52973 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61178, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 52988 */ 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61191, 57936, 57936, 57936, + /* 53003 */ 57936, 57936, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 1138, 1705, 0, 0, 0, + /* 53022 */ 0, 1712, 0, 0, 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, + /* 53054 */ 295, 0, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59541, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53070 */ 57936, 57936, 59552, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53085 */ 57936, 57936, 57936, 61279, 57936, 57936, 521, 57886, 0, 0, 0, 3940, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, + /* 53107 */ 2282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2298, 2299, 0, 0, 0, 0, 0, 0, 0, + /* 53139 */ 3382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139264, 147456, 0, 0, 0, + /* 53170 */ 0, 0, 2355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 53204 */ 2328, 521, 2413, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 53225 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2866, 57886, 57886, 57886, 57886, 59844, + /* 53244 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 53259 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58824, 57886, 57886, + /* 53274 */ 57886, 57886, 57909, 57909, 57909, 59928, 57909, 57909, 57909, 57909, 59933, 57909, 57909, 57909, 57909, + /* 53289 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 53304 */ 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53319 */ 57936, 57936, 57936, 57936, 60011, 57936, 57936, 57936, 57936, 60016, 57936, 57936, 57936, 57936, 57936, + /* 53334 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53349 */ 57936, 57936, 57936, 58985, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 3380, 0, 0, + /* 53367 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4284416, 0, 0, 57886, + /* 53398 */ 60829, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 53413 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 53428 */ 57886, 59366, 57886, 57936, 57936, 57936, 60913, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53443 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53458 */ 57936, 57936, 57936, 57936, 57936, 59562, 57936, 57936, 57936, 0, 521, 521, 521, 521, 3951, 521, 521, 521, + /* 53476 */ 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 61310, 57886, 57886, 57886, 57886, 57886, + /* 53493 */ 57886, 57886, 57886, 57886, 57886, 57886, 59875, 57886, 57886, 57886, 57886, 59880, 57886, 57886, 57886, + /* 53508 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 50657, 58754, 977, + /* 53523 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58859, 57909, 57909, 57909, 58863, 57909, 57909, 58874, + /* 53538 */ 57909, 57909, 57909, 57909, 61326, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 53553 */ 57909, 57936, 57936, 57936, 57936, 61342, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53568 */ 57936, 57936, 57936, 59004, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53583 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60689, 57936, 57936, 57936, 57936, 57936, 57936, + /* 53598 */ 57936, 57936, 57936, 57936, 57936, 57936, 61508, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 57886, + /* 53617 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 53632 */ 57936, 57936, 57936, 57936, 57936, 521, 1333, 521, 521, 1698, 521, 58772, 57886, 57886, 57886, 59047, + /* 53648 */ 57886, 1138, 0, 0, 1708, 0, 0, 0, 0, 1715, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, + /* 53673 */ 521, 521, 521, 3883, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 53691 */ 59344, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 53706 */ 57886, 57886, 57886, 57886, 57886, 59364, 57886, 57886, 57886, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 53727 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 341, 295, 0, 0, 0, 0, 0, 4013, 0, 0, 0, 0, 521, 521, + /* 53758 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 4027, 521, 521, 4029, 57886, 57886, 57886, 57886, 57886, + /* 53776 */ 57886, 57886, 57886, 59376, 57886, 57886, 57886, 57886, 57886, 57886, 59385, 57886, 57886, 57886, 57886, + /* 53791 */ 57886, 57886, 57886, 57886, 57886, 57886, 59396, 59398, 57886, 57886, 57886, 57886, 0, 0, 0, 389, 390, + /* 53808 */ 392, 342, 0, 0, 0, 0, 0, 0, 341, 0, 0, 0, 0, 341, 0, 0, 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, 748, 749, + /* 53838 */ 750, 0, 0, 0, 0, 0, 756, 757, 0, 0, 0, 0, 0, 0, 0, 0, 769, 770, 0, 772, 0, 0, 0, 389, 0, 0, 0, 0, 0, 0, + /* 53868 */ 342, 0, 0, 0, 389, 0, 0, 0, 0, 0, 342, 389, 0, 0, 0, 139264, 147456, 0, 0, 0, 422, 0, 0, 0, 0, 0, 245760, + /* 53895 */ 0, 0, 0, 245760, 0, 0, 245760, 245760, 245760, 0, 0, 0, 0, 0, 245760, 0, 245760, 245760, 0, 0, 0, 245760, + /* 53917 */ 245760, 0, 0, 245760, 0, 0, 0, 0, 131072, 0, 0, 0, 341, 0, 0, 0, 446, 0, 341, 0, 473, 473, 473, 473, 489, + /* 53942 */ 489, 489, 489, 489, 489, 489, 489, 489, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, + /* 53963 */ 473, 473, 533, 57899, 533, 57899, 533, 533, 57899, 533, 533, 57922, 57899, 533, 533, 57899, 57899, 57899, + /* 53981 */ 57922, 57899, 57899, 57899, 57899, 57899, 57899, 57899, 57922, 57922, 57899, 57935, 57949, 57935, 57935, + /* 53996 */ 57935, 57935, 57935, 57935, 57935, 57949, 57949, 57935, 57935, 57935, 57935, 57949, 57949, 57935, 533, + /* 54011 */ 57899, 57899, 57899, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, + /* 54034 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139264, 147456, 0, 0, + /* 54063 */ 344064, 0, 0, 0, 710, 0, 0, 0, 0, 0, 0, 0, 718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 54095 */ 0, 0, 0, 331, 332, 0, 0, 0, 0, 0, 0, 0, 0, 802, 0, 660, 0, 779, 0, 0, 0, 0, 0, 779, 802, 0, 802, 800, 0, + /* 54124 */ 0, 0, 814, 0, 0, 0, 656, 817, 0, 779, 0, 0, 0, 0, 0, 823, 0, 0, 0, 0, 783, 656, 827, 0, 521, 830, 521, + /* 54151 */ 521, 521, 846, 521, 521, 862, 521, 521, 521, 521, 876, 521, 521, 521, 521, 894, 521, 521, 57886, 57886, + /* 54171 */ 58248, 57886, 57886, 57886, 58265, 57886, 57886, 58281, 57886, 57886, 57886, 57886, 58295, 57886, 57886, + /* 54186 */ 57886, 57886, 58313, 57886, 57886, 0, 57909, 57909, 58324, 57909, 57909, 57909, 58341, 57909, 57909, + /* 54201 */ 58357, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59476, 57909, 57909, 57909, 57909, 57909, 57909, + /* 54216 */ 59485, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59496, 59498, 57909, 57909, + /* 54231 */ 57909, 57909, 57886, 57909, 57909, 58371, 57909, 57909, 57909, 57909, 58389, 57909, 57909, 0, 0, 0, 0, + /* 54248 */ 57886, 57936, 57936, 58399, 57936, 57936, 57936, 58416, 57936, 57936, 58432, 57936, 57936, 57936, 57936, + /* 54263 */ 58446, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60412, 57936, 57936, 60416, 57936, 57936, + /* 54278 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60425, 57936, 57936, 57936, 60428, 60429, 57936, 57936, + /* 54293 */ 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 0, 57886, 57886, 57886, 57886, 57886, 57886, 155941, + /* 54310 */ 1138, 0, 0, 1143, 0, 0, 1148, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3881, 521, + /* 54335 */ 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58802, 57886, + /* 54352 */ 57886, 57886, 58806, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54367 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 2962, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 54383 */ 57909, 57909, 57909, 57909, 60623, 57909, 57936, 57936, 58464, 57936, 57936, 521, 521, 521, 521, 521, 521, + /* 54400 */ 0, 57886, 57886, 57886, 57886, 57886, 57886, 155941, 1138, 0, 301, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, + /* 54422 */ 1816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 740, 0, 0, + /* 54456 */ 0, 0, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 540, + /* 54488 */ 57906, 540, 57906, 540, 540, 57906, 540, 540, 57929, 57906, 540, 540, 57906, 57906, 57906, 57929, 521, + /* 54505 */ 521, 521, 58754, 901, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54521 */ 57886, 58773, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54536 */ 59348, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59361, 57886, 57886, + /* 54551 */ 57886, 57886, 57886, 57886, 57886, 58797, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54566 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54581 */ 57886, 58821, 57886, 57886, 57886, 57886, 57886, 57886, 59374, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54596 */ 57886, 57886, 59386, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59397, 57886, + /* 54611 */ 57886, 57886, 57886, 57886, 57886, 57886, 61444, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, + /* 54626 */ 57909, 57909, 57909, 57909, 57909, 61457, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, + /* 54641 */ 57936, 57936, 521, 3095, 521, 521, 521, 57886, 60442, 57886, 57886, 57886, 0, 0, 3100, 3101, 0, 0, 0, 0, + /* 54661 */ 0, 0, 0, 0, 0, 0, 3627, 0, 3776, 0, 0, 0, 0, 3780, 0, 0, 0, 0, 0, 0, 0, 0, 3783, 0, 521, 521, 521, 3785, + /* 54689 */ 0, 0, 0, 0, 1814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 54722 */ 221645, 221645, 221645, 221645, 521, 58754, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54737 */ 57886, 57886, 59316, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59327, 57886, 57886, 57886, + /* 54752 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59345, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54767 */ 57886, 59356, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59876, + /* 54782 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54797 */ 57886, 57886, 57886, 57886, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 54812 */ 57909, 57909, 50657, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59416, + /* 54827 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59427, 57909, 57909, 57909, 57909, 57909, 57909, + /* 54842 */ 57909, 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 54859 */ 57936, 58429, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 2440, 521, 521, + /* 54876 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2459, + /* 54897 */ 521, 521, 521, 0, 0, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 54916 */ 57886, 57886, 57886, 57886, 57886, 57886, 60252, 57886, 57886, 57886, 57886, 57886, 60257, 59892, 57886, + /* 54931 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 57909, 57909, 57909, 59910, 57909, + /* 54948 */ 59912, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60340, + /* 54963 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 54978 */ 57909, 57909, 57909, 61060, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 54993 */ 57909, 57909, 57909, 57909, 57909, 57909, 59981, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 55008 */ 57909, 57936, 57936, 57936, 59993, 57936, 59995, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 55023 */ 57936, 57936, 57936, 57936, 57936, 57936, 60686, 60687, 57936, 57936, 57936, 57936, 60690, 57936, 57936, + /* 55038 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60064, 57936, + /* 55053 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 55069 */ 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2274, 0, 0, 0, 0, 0, 0, 0, 2820, 0, 0, + /* 55100 */ 0, 0, 2823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2831, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 55125 */ 521, 521, 521, 3961, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 55141 */ 57886, 57886, 61320, 57886, 521, 2842, 521, 521, 2845, 2846, 521, 521, 521, 521, 521, 2851, 521, 2853, + /* 55159 */ 521, 521, 521, 521, 2857, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2863, 521, 521, 521, 0, 0, 0, 0, 0, + /* 55182 */ 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 55197 */ 57886, 60251, 57886, 57886, 60254, 60255, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, + /* 55212 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 55227 */ 57909, 57909, 57909, 60878, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59445, 57909, + /* 55242 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59456, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 55257 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61336, 57909, 57936, 57936, 57936, 57936, 57936, 57936, + /* 55272 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61352, 57936, 521, 521, 521, 521, 521, 2871, 521, + /* 55289 */ 521, 521, 521, 521, 521, 2879, 521, 521, 521, 521, 521, 2884, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 55310 */ 521, 521, 521, 521, 1904, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 55331 */ 521, 521, 1353, 1355, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 60260, + /* 55350 */ 57886, 60262, 57886, 57886, 57886, 57886, 60266, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 55365 */ 57886, 60272, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60281, 57886, 57886, 57886, + /* 55380 */ 57886, 57886, 59373, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 55395 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59401, 57886, 57886, + /* 55410 */ 57886, 57886, 57886, 60289, 57886, 57886, 57886, 57886, 57886, 60294, 57886, 57886, 57886, 57886, 57886, + /* 55425 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 57909, + /* 55442 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 55457 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60330, 57909, 0, 0, + /* 55473 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 55488 */ 60318, 57909, 57909, 60321, 60322, 57909, 57909, 57909, 57909, 57909, 60327, 57909, 60329, 57909, 57909, + /* 55503 */ 57909, 57909, 57909, 57909, 57909, 60336, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60342, 57909, + /* 55518 */ 57909, 57909, 57909, 57909, 57909, 57909, 60350, 57909, 57909, 57909, 57909, 57909, 57909, 60357, 57909, + /* 55533 */ 57909, 57909, 60333, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60339, 57909, 57909, + /* 55548 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60348, 57909, 57909, 57909, 57909, 57909, 57909, 60356, + /* 55563 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60632, 57909, 57909, 60635, 57909, 57909, 57909, 57909, + /* 55578 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60646, + /* 55593 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60889, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 55608 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 60906, 57936, 57936, 57936, + /* 55623 */ 57936, 60910, 57909, 57909, 57909, 60361, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 55638 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 55653 */ 57936, 57936, 57936, 57936, 61192, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60383, 57936, 57936, + /* 55668 */ 60386, 60387, 57936, 57936, 57936, 57936, 57936, 60392, 57936, 60394, 57936, 57936, 57936, 57936, 60398, + /* 55683 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60404, 0, 0, 3139, 0, 0, 0, 0, 0, 0, 0, + /* 55703 */ 3145, 0, 3147, 0, 0, 0, 3150, 0, 0, 3153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 450560, 450560, 0, 0, + /* 55729 */ 450560, 450560, 450560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1799, 0, 0, 0, 0, 0, 0, 0, 0, 1806, 0, + /* 55757 */ 0, 0, 0, 0, 0, 0, 0, 0, 3165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3174, 521, 521, 521, 521, 521, 521, + /* 55786 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2882, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 55807 */ 521, 521, 521, 2892, 521, 521, 521, 521, 521, 3192, 521, 521, 3195, 521, 521, 521, 521, 521, 521, 521, + /* 55827 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3205, 521, 521, 521, 521, 521, 521, 521, 521, 2443, 521, + /* 55848 */ 521, 521, 521, 2448, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 55869 */ 521, 1906, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1940, 521, 521, + /* 55890 */ 521, 521, 521, 521, 1947, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 55911 */ 3214, 521, 521, 3217, 521, 521, 3220, 0, 0, 60565, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 55929 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58302, 57886, 57886, 57886, 57886, 0, 57909, 57909, + /* 55944 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57886, 57886, 57886, 57886, 60583, + /* 55959 */ 57886, 57886, 60586, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 55974 */ 57886, 57886, 57886, 57886, 57886, 57886, 60597, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59871, + /* 55989 */ 57886, 57886, 57886, 57886, 57886, 59877, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 56004 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 2962, 0, 57909, 57909, 57909, 57909, 57909, + /* 56020 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, 0, 3431, 0, 0, 521, 521, 3436, 521, 521, 521, + /* 56039 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3453, 521, 3455, 521, + /* 56060 */ 521, 521, 521, 521, 521, 521, 1334, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 56081 */ 1358, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2419, 521, 521, 521, 521, 521, 521, 521, 521, 2426, + /* 56101 */ 521, 2428, 521, 2431, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2444, 521, 521, 521, 521, 521, 521, + /* 56121 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1392, 521, 521, 521, 521, + /* 56142 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3461, 521, 521, 3463, 521, 521, 521, 521, 521, 521, 521, + /* 56163 */ 521, 521, 521, 521, 57886, 57886, 60820, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 56179 */ 57886, 59378, 57886, 57886, 57886, 59384, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 56194 */ 59394, 57886, 57886, 57886, 57886, 59400, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 60888, + /* 56209 */ 57909, 57909, 60890, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56224 */ 57936, 57936, 60904, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 3601, 521, 57886, 60948, 57886, + /* 56240 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 521, + /* 56273 */ 521, 521, 521, 521, 3664, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 56292 */ 57886, 57886, 57886, 57886, 61020, 61021, 57886, 57886, 57886, 57886, 61025, 61026, 57909, 57909, 61049, + /* 56307 */ 61050, 57909, 57909, 57909, 57909, 61054, 61055, 57909, 57909, 57909, 57909, 57909, 61059, 57909, 57909, + /* 56322 */ 57909, 57909, 57909, 57909, 57909, 57909, 61065, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56337 */ 57909, 57909, 57909, 59960, 57909, 57909, 57909, 57909, 57909, 59966, 57909, 57909, 57909, 57909, 57909, + /* 56352 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60341, 57909, 57909, 57909, 57909, 57909, + /* 56367 */ 57909, 57909, 57909, 57909, 57909, 57909, 60353, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 61094, + /* 56382 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, + /* 56398 */ 57886, 57886, 0, 0, 3764, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 2394, 521, 521, 521, 521, + /* 56422 */ 521, 521, 521, 521, 521, 521, 521, 2406, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3792, + /* 56443 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, + /* 56462 */ 57886, 57886, 57886, 57886, 57886, 57886, 59849, 57886, 57886, 57886, 57886, 57886, 57886, 59854, 57886, + /* 56477 */ 59856, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60267, 57886, + /* 56492 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 56507 */ 57886, 57886, 57886, 61163, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56522 */ 57909, 57909, 57909, 57886, 57886, 61154, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 56537 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56552 */ 57909, 57909, 57909, 57909, 61173, 57886, 57886, 57886, 57886, 61242, 57886, 57886, 57886, 57886, 57886, + /* 56567 */ 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61258, 57909, + /* 56582 */ 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 61075, 57936, 57936, 57936, 57936, 57936, 57936, + /* 56597 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61087, 57936, 57936, 57936, 57936, + /* 56612 */ 57936, 57936, 57936, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 4137, 521, 4138, 521, 521, 521, + /* 56634 */ 57886, 57886, 57886, 57886, 57886, 57886, 0, 521, 521, 3949, 521, 521, 521, 521, 3954, 521, 521, 521, 521, + /* 56653 */ 3959, 521, 521, 57886, 57886, 61308, 57886, 57886, 57886, 57886, 61313, 57886, 57886, 57886, 57886, 61318, + /* 56669 */ 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56684 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60873, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56699 */ 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 58418, 57936, 57936, + /* 56716 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58969, 57936, 57936, 57936, 57936, 57936, + /* 56731 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 56746 */ 59012, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59029, 57936, 57909, + /* 56761 */ 57909, 61324, 57909, 57909, 57909, 57909, 61329, 57909, 57909, 57909, 57909, 61334, 57909, 57909, 57909, + /* 56776 */ 57936, 57936, 61340, 57936, 57936, 57936, 57936, 61345, 57936, 57936, 57936, 57936, 61350, 57936, 57936, + /* 56791 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58962, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 56806 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58986, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 56821 */ 521, 521, 521, 57886, 57886, 57886, 0, 3606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1740, + /* 56848 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 61384, 57886, 57886, 61386, 57886, + /* 56870 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61398, 57909, 57909, 61400, + /* 56885 */ 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 3600, 521, 521, 60947, 57886, 57886, 0, 0, 0, 0, + /* 56903 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3617, 3618, 0, 0, 57936, 57936, 57936, 57936, 61412, 57936, 57936, 61414, + /* 56926 */ 57936, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, + /* 56949 */ 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56964 */ 57909, 57909, 60872, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56979 */ 57909, 59449, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 56994 */ 57909, 57909, 57909, 57909, 57909, 58932, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, + /* 57009 */ 57886, 57936, 57936, 57936, 57936, 61533, 57936, 57936, 57936, 0, 0, 0, 521, 521, 521, 521, 521, 521, + /* 57027 */ 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, + /* 57042 */ 57936, 57936, 57936, 0, 0, 0, 521, 4195, 521, 521, 521, 521, 57886, 61543, 57886, 57886, 57886, 57886, + /* 57060 */ 57909, 61547, 57909, 57909, 57909, 57909, 57936, 61551, 57936, 57936, 57936, 57936, 0, 0, 0, 521, 521, + /* 57077 */ 4196, 4197, 521, 521, 57886, 57886, 61544, 61545, 57886, 57886, 57909, 57909, 61548, 61549, 57909, 57909, + /* 57093 */ 57936, 57936, 61552, 61553, 57936, 57936, 0, 57886, 57909, 57936, 4232, 61577, 61578, 61579, 521, 57886, + /* 57109 */ 57909, 57936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1261, 0, 0, 0, 0, 0, 0, 0, 0, + /* 57141 */ 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, + /* 57172 */ 0, 295, 0, 0, 0, 0, 0, 245760, 245760, 245760, 245760, 245760, 245760, 0, 0, 0, 0, 0, 0, 0, 245760, + /* 57193 */ 245760, 245760, 0, 0, 0, 0, 139264, 147456, 245760, 245760, 0, 0, 245760, 0, 0, 0, 245760, 245760, 0, 0, + /* 57213 */ 0, 0, 0, 0, 245760, 0, 0, 0, 0, 0, 0, 245760, 0, 0, 245760, 0, 0, 245760, 0, 0, 245760, 0, 245760, 245760, + /* 57237 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 737, 0, 0, 0, + /* 57271 */ 348, 347, 131072, 346, 347, 347, 348, 346, 347, 0, 346, 347, 450, 457, 474, 474, 474, 485, 485, 485, 491, + /* 57292 */ 485, 485, 491, 491, 485, 491, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + /* 57313 */ 534, 57900, 534, 57900, 534, 534, 57900, 534, 534, 57923, 57900, 534, 534, 57900, 57900, 57900, 57923, + /* 57330 */ 57900, 57900, 57900, 57900, 57900, 57900, 57900, 57923, 57923, 57900, 57900, 57950, 57900, 57900, 57900, + /* 57345 */ 57900, 57900, 57900, 57900, 57950, 57950, 57900, 57900, 57900, 57900, 57950, 57950, 57900, 534, 57900, + /* 57360 */ 57900, 57900, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, + /* 57385 */ 639, 0, 0, 0, 0, 644, 645, 646, 647, 648, 649, 650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 665, 666, 0, + /* 57414 */ 668, 669, 0, 0, 0, 0, 0, 675, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 57439 */ 521, 521, 521, 521, 1881, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1375, 521, 521, 521, 521, 521, + /* 57460 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1914, 521, 521, 521, 521, + /* 57481 */ 521, 521, 521, 521, 521, 521, 709, 0, 0, 712, 0, 714, 0, 716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 726, 0, 0, 0, 0, + /* 57509 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 499712, 0, 0, 0, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 57529 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 0, 0, + /* 57542 */ 0, 0, 0, 0, 0, 0, 0, 0, 301, 0, 302, 305, 0, 306, 4857856, 4874240, 0, 0, 4923392, 0, 0, 0, 0, 757, 0, 0, + /* 57568 */ 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 0, 0, 0, 0, 796, 0, 0, 685, 0, 0, 0, 757, 0, 0, 0, 0, 0, 278528, + /* 57598 */ 278528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1176, 0, 0, 0, 0, 0, + /* 57631 */ 685, 816, 816, 0, 0, 0, 0, 0, 521, 521, 836, 840, 843, 521, 852, 521, 521, 521, 868, 870, 873, 521, 521, + /* 57654 */ 521, 886, 890, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, + /* 57671 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60871, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 57686 */ 57909, 57909, 57909, 57909, 57909, 57909, 58892, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 57701 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60372, 57909, 57909, 57936, 57936, + /* 57716 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58255, 58259, 58262, 57886, 58271, 57886, + /* 57731 */ 57886, 57886, 58287, 58289, 58292, 57886, 57886, 57886, 58305, 58309, 57886, 57886, 57886, 0, 57909, + /* 57746 */ 57909, 57909, 58331, 58335, 58338, 57909, 58347, 57909, 57909, 57909, 58363, 58365, 58368, 57909, 57909, + /* 57761 */ 57909, 58381, 58385, 57909, 57909, 57909, 0, 0, 0, 0, 58396, 57936, 57936, 57936, 58406, 58410, 58413, + /* 57778 */ 57936, 58422, 57936, 57936, 57936, 58438, 58440, 58443, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 57793 */ 57936, 57936, 58963, 57936, 57936, 57936, 57936, 58973, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 57808 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58989, 57936, 58456, 58460, 57936, 57936, 57936, + /* 57823 */ 836, 1127, 521, 886, 890, 1131, 0, 58476, 58255, 57886, 58305, 58309, 58481, 155941, 1138, 0, 0, 0, 0, 0, + /* 57843 */ 0, 0, 0, 0, 0, 0, 0, 540672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139264, 147456, 0, 0, 540672, 0, 0, + /* 57871 */ 1366, 521, 521, 1370, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1381, 521, 521, 1388, 521, + /* 57891 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 1402, 521, 521, 521, 0, 2895, 0, 0, 0, 0, 57886, 57886, + /* 57912 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60248, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 57927 */ 57886, 57886, 57886, 57886, 60256, 57886, 521, 521, 521, 58754, 901, 57886, 57886, 57886, 57886, 57886, + /* 57943 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 57958 */ 57886, 57886, 57886, 57886, 57886, 57886, 58795, 57886, 57886, 57886, 58798, 57886, 57886, 57886, 57886, + /* 57973 */ 57886, 57886, 57886, 58805, 57886, 57886, 58809, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 57988 */ 57886, 57886, 57886, 58820, 57886, 57886, 58827, 57886, 57886, 57886, 57886, 57886, 59897, 57886, 57886, + /* 58003 */ 57886, 57886, 0, 0, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 58020 */ 57909, 59918, 57909, 57909, 59921, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58885, 57909, 57909, + /* 58035 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58898, 57909, 57909, 57909, 57909, + /* 58050 */ 58903, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59480, 57909, 57909, 57909, + /* 58065 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 58080 */ 57909, 57909, 57886, 57936, 57936, 58994, 57936, 57936, 58998, 57936, 57936, 57936, 57936, 57936, 57936, + /* 58095 */ 57936, 57936, 57936, 57936, 57936, 59010, 57936, 57936, 59017, 57936, 57936, 57936, 57936, 57936, 57936, + /* 58110 */ 57936, 57936, 57936, 57936, 59031, 521, 1894, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1903, 521, + /* 58129 */ 521, 521, 1907, 521, 521, 1912, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2447, 521, + /* 58149 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2458, 521, 521, 521, 521, 521, 58754, 0, + /* 58170 */ 57886, 59308, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59315, 57886, 57886, 57886, 57886, 57886, + /* 58185 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61164, + /* 58200 */ 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59337, 57886, + /* 58215 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59346, 57886, 57886, 57886, 59350, 57886, + /* 58230 */ 57886, 59355, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 58245 */ 61160, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 61168, 57909, + /* 58260 */ 57909, 57909, 57909, 57909, 50657, 0, 57909, 59408, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 58275 */ 59415, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 58290 */ 57909, 57909, 57909, 57909, 57909, 59437, 57936, 59504, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 58305 */ 59511, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 58320 */ 57936, 57936, 57936, 57936, 57936, 59533, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60681, + /* 58335 */ 57936, 57936, 60684, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 58350 */ 57936, 57936, 57936, 57936, 57936, 57936, 60695, 57936, 0, 0, 0, 0, 2305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 58374 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352256, 352256, 352256, 352256, 521, 521, 521, 2438, + /* 58399 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 58420 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 2865, 521, 2794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 58447 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2381, 2894, 521, 521, 0, 0, 0, 2896, 0, 1961, 57886, + /* 58474 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 58489 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59393, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 58504 */ 57886, 0, 2061, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 58520 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 58535 */ 57909, 57909, 59974, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 60437, 57936, 57936, + /* 58550 */ 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 58575 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1727, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 3789, 521, 521, 521, 521, 521, + /* 58602 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 61146, 57886, 57886, 57886, 57886, 57886, + /* 58621 */ 57886, 57886, 61151, 57886, 61239, 57886, 57886, 57886, 57886, 57886, 61245, 57886, 57886, 57886, 57886, + /* 58636 */ 57909, 57909, 57909, 61251, 57909, 57909, 57909, 57909, 61255, 57909, 57909, 57909, 57909, 57909, 61261, + /* 58651 */ 57909, 57909, 57909, 57909, 57936, 0, 0, 4166, 0, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 58670 */ 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, + /* 58685 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59577, 57936, 57936, 57936, 57936, 57936, 57936, + /* 58700 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, + /* 58716 */ 57886, 57886, 57886, 0, 0, 0, 0, 3766, 0, 0, 0, 0, 0, 3769, 57936, 57936, 61267, 57936, 57936, 57936, + /* 58736 */ 57936, 61271, 57936, 57936, 57936, 57936, 57936, 61277, 57936, 57936, 57936, 57936, 521, 57886, 0, 0, 0, + /* 58753 */ 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 58778 */ 521, 1880, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1891, 521, 0, 521, 521, 521, 521, 521, 3952, 521, + /* 58799 */ 521, 521, 3956, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 61311, 57886, 57886, 57886, + /* 58816 */ 61315, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61387, 57909, 57909, 57909, 57909, 57909, + /* 58831 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61401, 57936, 57936, 57936, 57936, + /* 58846 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60043, 57936, 57936, 57936, 57936, 57936, 60049, 57936, + /* 58861 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, + /* 58876 */ 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 57909, 57909, 57909, 57909, 57909, 61327, + /* 58898 */ 57909, 57909, 57909, 61331, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, + /* 58913 */ 61343, 57936, 57936, 57936, 61347, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 58928 */ 57936, 61102, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 58950 */ 728, 0, 788, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 57886, + /* 58978 */ 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 0, 521, 521, 57886, 57886, + /* 58994 */ 57909, 57909, 57936, 57936, 521, 57886, 57909, 57936, 4228, 61573, 61574, 61575, 521, 57886, 57909, 57936, + /* 59010 */ 521, 57886, 57909, 57936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1742, 0, 0, 0, 0, + /* 59040 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 391, 0, 0, 0, 395, 391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 59073 */ 0, 0, 0, 0, 0, 363, 364, 365, 366, 0, 0, 367, 0, 295, 0, 0, 349, 0, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 59102 */ 407, 0, 0, 0, 0, 0, 0, 407, 0, 349, 0, 139264, 147456, 0, 0, 0, 0, 0, 0, 0, 3643, 0, 521, 521, 521, 521, + /* 59128 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2887, 521, + /* 59149 */ 521, 521, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, + /* 59177 */ 0, 0, 0, 0, 0, 0, 0, 0, 500, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + /* 59201 */ 535, 57901, 535, 57901, 535, 535, 57901, 535, 535, 57924, 57901, 535, 535, 57901, 57901, 57901, 57924, + /* 59218 */ 57901, 57901, 57901, 57901, 57901, 57901, 57901, 57924, 57924, 57901, 57901, 57951, 57901, 57901, 57901, + /* 59233 */ 57901, 57901, 57901, 57901, 57951, 57951, 57901, 57901, 57901, 57901, 57951, 57951, 57901, 616, 57901, + /* 59248 */ 57967, 57967, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, + /* 59273 */ 0, 0, 0, 0, 0, 0, 0, 0, 2351104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, 0, 0, + /* 59305 */ 0, 0, 0, 0, 0, 0, 1237, 0, 0, 0, 672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 59339 */ 0, 0, 0, 0, 0, 0, 0, 2300, 0, 57909, 57909, 58372, 57909, 57909, 57909, 57909, 58390, 57909, 57909, 0, 0, + /* 59360 */ 0, 0, 57886, 57936, 57936, 58400, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 59376 */ 57936, 58447, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60917, 57936, 57936, 57936, 57936, + /* 59391 */ 57936, 57936, 57936, 57936, 60925, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 59406 */ 57936, 57936, 57936, 57936, 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 3864, 0, 0, 0, 0, 0, 3627, 0, 0, 57936, + /* 59429 */ 57936, 58465, 57936, 57936, 521, 521, 521, 521, 521, 521, 0, 57886, 57886, 57886, 57886, 57886, 57886, + /* 59446 */ 155941, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 59478 */ 2325, 0, 0, 0, 0, 1242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 59510 */ 0, 0, 0, 0, 367, 367, 0, 0, 0, 0, 1203, 1161, 0, 0, 0, 0, 0, 0, 1273, 1160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 59540 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 0, 0, 0, 521, 521, 521, 58754, 901, 57886, + /* 59568 */ 57886, 57886, 58760, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58774, 57886, 57886, + /* 59583 */ 57886, 57886, 58784, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59873, 59874, 57886, + /* 59598 */ 57886, 57886, 57886, 57886, 57886, 59881, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 59613 */ 57886, 57886, 57886, 57886, 57886, 0, 0, 977, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 59629 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58929, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 59644 */ 57909, 57909, 57909, 0, 57886, 57936, 57936, 57936, 57936, 57909, 57909, 57909, 58879, 57909, 57909, + /* 59659 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58895, 57909, + /* 59674 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60656, 57909, 57909, + /* 59689 */ 60659, 57909, 57909, 60662, 60663, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 59704 */ 57936, 0, 0, 0, 1756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 59737 */ 337, 0, 0, 0, 1785, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1800, 0, 0, 0, 0, 0, 0, 0, 1243, 0, 0, 0, + /* 59769 */ 0, 0, 0, 0, 0, 2286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1173, 0, 0, 0, + /* 59802 */ 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 2418, 521, 521, 521, 521, 521, 521, 2423, 521, 2425, + /* 59824 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1379, 521, 521, 521, 521, 521, + /* 59845 */ 521, 521, 1393, 521, 521, 521, 521, 521, 521, 521, 521, 1405, 521, 521, 2869, 521, 521, 521, 521, 521, + /* 59865 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 59886 */ 521, 521, 521, 521, 2435, 2436, 57936, 57936, 57936, 57936, 57936, 57936, 60411, 57936, 57936, 57936, + /* 59902 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 59917 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59529, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, + /* 59934 */ 3432, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 59955 */ 521, 521, 521, 521, 521, 521, 521, 521, 1398, 521, 521, 521, 521, 521, 0, 3872, 0, 0, 0, 0, 0, 521, 3875, + /* 59978 */ 521, 521, 3877, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 61234, 57886, + /* 59997 */ 57886, 61236, 57886, 57886, 57886, 57886, 57886, 60263, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 60012 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 60027 */ 57886, 57886, 57886, 57886, 60279, 57886, 57886, 57886, 57886, 57886, 61266, 57936, 57936, 61268, 57936, + /* 60042 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 57886, 0, + /* 60058 */ 0, 0, 0, 0, 0, 0, 0, 3627, 0, 3944, 0, 0, 0, 0, 0, 417792, 0, 417792, 0, 0, 0, 0, 309, 0, 0, 0, 0, 0, + /* 60086 */ 417792, 0, 417792, 0, 0, 0, 0, 139264, 147456, 417792, 0, 0, 0, 417792, 0, 0, 0, 0, 417792, 0, 0, 0, 0, 0, + /* 60110 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417792, 0, 0, 417792, 0, 0, 417792, 0, 417792, 418100, 3946, 521, 521, + /* 60134 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, + /* 60153 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59383, 57886, 57886, 57886, 57886, + /* 60168 */ 57886, 57886, 59391, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 787, 0, 0, 0, + /* 60185 */ 0, 0, 0, 0, 0, 0, 0, 787, 0, 787, 0, 0, 0, 0, 0, 0, 0, 0, 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1160, 0, 0, 0, + /* 60217 */ 0, 1165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2335231, + /* 60248 */ 2335197, 2335231, 2335231, 57886, 57886, 57886, 58266, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 60262 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 57909, 57909, 57909, 57909, 57909, 57909, + /* 60277 */ 58342, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60891, 57909, 60893, 57909, + /* 60292 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 60307 */ 57936, 57936, 57936, 57936, 57936, 60019, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 60322 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60025, 57936, 57936, 57936, 57936, + /* 60337 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 58754, 1962, 57886, 57886, 57886, 57886, + /* 60352 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 60367 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 2557, 2962, 0, 0, 50657, 2062, + /* 60383 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 60398 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 60413 */ 61068, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 60408, 57936, 57936, 57936, 57936, 57936, 57936, + /* 60428 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 60443 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59021, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 60458 */ 57886, 61028, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 60473 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, + /* 60488 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 60511 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, 0, 0, 0, 0, 352, 350, 131072, 0, 350, 350, + /* 60541 */ 352, 0, 350, 0, 0, 350, 352, 350, 0, 0, 0, 350, 350, 350, 350, 350, 350, 350, 350, 498, 350, 350, 350, + /* 60564 */ 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 536, 57902, 536, 57902, 536, 536, 57902, 536, + /* 60584 */ 536, 57925, 57902, 536, 536, 57902, 57902, 57902, 57925, 57902, 57902, 57902, 57902, 57902, 57902, 57902, + /* 60600 */ 57925, 57925, 57902, 57902, 57952, 57902, 57902, 57902, 57902, 57902, 57902, 57902, 57952, 57952, 57902, + /* 60615 */ 57902, 57902, 57902, 57952, 57952, 57902, 536, 57902, 57902, 57902, 1, 24578, 3, 155941, 155941, 295, 0, + /* 60632 */ 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2751, 0, 0, 0, 0, 0, 0, 0, + /* 60664 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 674, 0, 0, 0, 0, 0, 0, + /* 60697 */ 673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 798, 799, 0, 0, 0, 0, 0, 0, 0, 521, 521, 837, 521, + /* 60727 */ 521, 521, 853, 857, 521, 521, 521, 521, 521, 878, 880, 521, 521, 891, 521, 521, 521, 57886, 57886, 58250, + /* 60747 */ 0, 751, 0, 0, 804, 0, 0, 0, 0, 0, 804, 0, 657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 819, 0, 0, 0, 0, 0, 0, + /* 60779 */ 0, 521, 521, 521, 521, 521, 521, 3879, 521, 521, 521, 521, 521, 521, 3885, 521, 521, 521, 521, 57886, + /* 60799 */ 57886, 57886, 57886, 57886, 57886, 61238, 58256, 57886, 57886, 57886, 58272, 58276, 57886, 57886, 57886, + /* 60814 */ 57886, 57886, 58297, 58299, 57886, 57886, 58310, 57886, 57886, 57886, 0, 57909, 57909, 58326, 58332, + /* 60829 */ 57909, 57909, 57909, 58348, 58352, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61330, 57909, + /* 60844 */ 61332, 61333, 57909, 61335, 57909, 61337, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61346, + /* 60859 */ 57936, 61348, 61349, 57936, 61351, 57936, 61353, 57909, 57909, 58373, 58375, 57909, 57909, 58386, 57909, + /* 60874 */ 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 58401, 58407, 57936, 57936, 57936, 58423, 58427, 57936, + /* 60891 */ 57936, 57936, 57936, 57936, 58448, 58450, 57936, 0, 4165, 0, 4167, 521, 521, 521, 521, 521, 521, 521, + /* 60909 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 60924 */ 57909, 57936, 57936, 57936, 57936, 57936, 521, 1695, 521, 1697, 521, 521, 59044, 57886, 57886, 59046, + /* 60940 */ 57886, 57886, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1720, 0, 0, 57936, 58461, 57936, 57936, 57936, 837, + /* 60963 */ 521, 880, 521, 891, 521, 0, 57886, 58256, 58299, 57886, 58310, 57886, 155941, 1138, 0, 301, 0, 0, 305, 0, + /* 60983 */ 0, 0, 0, 0, 0, 0, 0, 2309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3396, + /* 61016 */ 0, 0, 0, 0, 0, 0, 0, 1208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1222, 0, 1224, 0, 0, 0, 0, 1229, 0, 0, + /* 61047 */ 0, 0, 1234, 0, 0, 0, 0, 0, 0, 0, 3874, 521, 521, 521, 521, 3878, 521, 521, 521, 521, 521, 521, 521, 521, + /* 61071 */ 521, 3887, 521, 521, 61233, 57886, 57886, 57886, 57886, 61237, 57886, 1406, 521, 521, 58754, 901, 57886, + /* 61088 */ 57886, 57886, 57886, 58761, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 61103 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58792, 58794, 57886, 57886, 57886, 57886, 58273, + /* 61118 */ 58277, 58283, 57886, 58288, 57886, 57886, 57886, 57886, 57886, 58306, 57886, 57886, 57886, 57886, 0, + /* 61133 */ 57909, 57909, 58328, 57909, 57909, 57909, 57909, 58349, 58353, 58359, 57909, 58364, 57886, 58832, 57886, + /* 61148 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58844, 58845, 57886, 57886, 50657, 58754, 977, 57909, + /* 61163 */ 57909, 57909, 57909, 58856, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, 0, 0, + /* 61180 */ 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 58415, 57936, 57936, 58431, 57936, 57936, 57936, + /* 61195 */ 57936, 57936, 57936, 57936, 57909, 57909, 57909, 57909, 57909, 58913, 57909, 57909, 57909, 57909, 57909, + /* 61210 */ 57909, 57909, 58927, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58939, 58940, 57909, 57909, + /* 61225 */ 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59512, 57936, 57936, + /* 61240 */ 57936, 57936, 57936, 57936, 57936, 57936, 59523, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 61255 */ 57936, 57936, 57936, 57936, 57936, 57936, 60021, 57936, 57936, 57936, 57936, 57936, 57936, 60026, 57936, + /* 61270 */ 60028, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58950, 57936, 57936, 57936, 57936, 57936, + /* 61285 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58981, + /* 61300 */ 58983, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61202, 57936, + /* 61315 */ 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3781, 0, 0, + /* 61344 */ 0, 0, 0, 0, 521, 521, 521, 521, 57936, 59034, 59035, 57936, 57936, 521, 521, 1696, 521, 521, 1699, 57886, + /* 61364 */ 57886, 59045, 57886, 57886, 59048, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2774, 0, 0, 0, 0, 0, 0, + /* 61391 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1789, 0, 0, 0, + /* 61425 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507904, 507904, 507904, 507904, + /* 61454 */ 0, 1773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 61486 */ 2825, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 2837, 521, 521, 521, 521, 521, 521, 521, 521, + /* 61510 */ 521, 1895, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 61531 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1955, 521, 521, 521, 58754, 0, 57886, 57886, 57886, + /* 61550 */ 57886, 57886, 57886, 57886, 59313, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 61565 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58813, 57886, 58815, 57886, + /* 61580 */ 57886, 57886, 57886, 57886, 57886, 57886, 58828, 57886, 57886, 57886, 59338, 57886, 57886, 57886, 57886, + /* 61595 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 61610 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59399, 57886, 57886, 57886, 50657, + /* 61625 */ 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59413, 57909, 57909, 57909, 57909, 57909, 57909, + /* 61640 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 61655 */ 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60909, 57936, 57936, 57909, 59438, 57909, 57909, + /* 61670 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 61685 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, 57886, + /* 61700 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59509, 57936, 57936, 57936, + /* 61715 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 61730 */ 57936, 57936, 57936, 57936, 57936, 59534, 0, 0, 0, 2332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 61756 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, 0, 0, 0, 0, 2358, 0, 2360, 2361, 2362, 0, 2364, 0, 0, 0, 0, + /* 61786 */ 0, 0, 0, 0, 0, 0, 2372, 0, 0, 0, 0, 2377, 2378, 0, 0, 0, 0, 0, 0, 0, 49716, 49716, 0, 0, 0, 0, 0, 0, 0, 0, + /* 61816 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327680, 327680, 327680, 327680, 2382, 0, 0, 0, 0, 0, 0, 0, 2388, 521, + /* 61841 */ 521, 521, 521, 521, 521, 2395, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 61862 */ 521, 1905, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1918, 521, 521, 521, 521, 521, 521, 521, + /* 61883 */ 521, 521, 2439, 521, 521, 521, 521, 521, 2445, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 61904 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 3801, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 61922 */ 57886, 57886, 0, 0, 0, 0, 2745, 2746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 61953 */ 0, 0, 0, 0, 2359296, 367, 0, 0, 0, 521, 521, 2843, 521, 521, 521, 521, 521, 2848, 521, 521, 521, 521, 521, + /* 61976 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2864, 521, 521, 521, 0, 2895, + /* 61997 */ 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60247, 57886, 57886, 57886, 57886, + /* 62014 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 50657, 58754, 977, 57909, 57909, + /* 62029 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59487, 59488, + /* 62044 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57886, + /* 62059 */ 57936, 57936, 57936, 57936, 57936, 60384, 57936, 57936, 57936, 57936, 57936, 60389, 57936, 57936, 57936, + /* 62074 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 62089 */ 57936, 57936, 59016, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60405, + /* 62104 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 62119 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 62134 */ 57936, 60033, 57936, 57936, 57936, 57936, 57936, 57936, 61269, 57936, 57936, 57936, 57936, 57936, 57936, + /* 62149 */ 57936, 57936, 57936, 61278, 57936, 57936, 57936, 521, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, + /* 62172 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3446, 521, 521, 521, 521, 521, 521, + /* 62193 */ 521, 521, 521, 521, 521, 521, 1937, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 62214 */ 521, 521, 521, 521, 521, 1385, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 62235 */ 57936, 61534, 57936, 57936, 4192, 0, 4194, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, + /* 62252 */ 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 0, 4193, + /* 62268 */ 0, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, + /* 62285 */ 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 0, 4211, 0, 521, 521, 521, 521, 57886, 57886, + /* 62302 */ 57886, 57886, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 0, 521, 521, 57886, 57886, 57909, + /* 62318 */ 57909, 57936, 57936, 521, 57886, 57909, 57936, 521, 521, 521, 521, 521, 521, 521, 1335, 521, 521, 521, + /* 62336 */ 521, 1345, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1361, 521, 521, 521, + /* 62357 */ 0, 0, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60246, 57886, 57886, 57886, 57886, + /* 62375 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 57909, 57909, + /* 62392 */ 57909, 57909, 59911, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 62407 */ 57909, 58926, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, + /* 62422 */ 57886, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 62450 */ 0, 0, 378, 0, 0, 0, 0, 370, 0, 0, 0, 0, 0, 4358144, 4358144, 4358144, 4825088, 4358144, 4358144, 4358144, + /* 62470 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 62481 */ 4358144, 4358144, 4358144, 4358144, 4358144, 5177344, 4358144, 4358144, 4358144, 0, 0, 0, 0, 0, 0, 302, 0, + /* 62498 */ 0, 0, 302, 0, 0, 306, 0, 0, 0, 306, 0, 0, 0, 4931584, 0, 0, 0, 0, 0, 0, 0, 0, 747, 0, 0, 0, 0, 0, 0, 0, 0, + /* 62529 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 771, 0, 387, 0, 353, 0, 0, 0, 0, 0, 396, 397, 0, 398, 0, 0, 0, 0, + /* 62560 */ 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, 403, 0, 0, 0, 0, 0, 0, 0, 557056, 557056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 62591 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3129, 0, 0, 0, 0, 0, 0, 0, 370, 378, 406, 0, 0, 0, 370, 0, 0, 353, + /* 62622 */ 0, 0, 0, 370, 0, 409, 411, 0, 370, 398, 0, 0, 370, 378, 0, 139264, 147456, 398, 409, 0, 0, 409, 0, 0, 0, + /* 62647 */ 432, 131072, 0, 432, 432, 0, 0, 432, 0, 411, 432, 0, 458, 0, 0, 0, 486, 486, 486, 486, 486, 486, 486, 486, + /* 62671 */ 486, 486, 508, 508, 508, 508, 520, 508, 508, 508, 520, 508, 508, 508, 508, 508, 508, 537, 57903, 537, + /* 62691 */ 57903, 537, 537, 57903, 537, 537, 57926, 57903, 537, 537, 57903, 57903, 57903, 57926, 57903, 57903, 57903, + /* 62708 */ 57903, 57903, 57903, 57903, 57926, 57926, 57903, 57903, 57953, 57903, 57903, 57903, 57903, 57903, 57903, + /* 62723 */ 57903, 57953, 57953, 57903, 57903, 57903, 57903, 57953, 57953, 57903, 617, 57903, 57968, 57968, 1, 24578, + /* 62739 */ 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 62767 */ 0, 4017, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 61374, 57886, 57886, 57886, + /* 62787 */ 57886, 57886, 57886, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 793, 0, 0, 0, 0, 0, + /* 62817 */ 0, 0, 774, 0, 0, 0, 0, 0, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 62850 */ 0, 0, 3625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, + /* 62883 */ 0, 0, 0, 0, 793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 687, 0, 0, 0, 774, 0, 0, 0, 0, 793, 0, 0, 0, 0, 0, 0, 0, + /* 62916 */ 793, 0, 0, 0, 0, 774, 0, 793, 0, 521, 832, 521, 521, 521, 521, 521, 521, 863, 865, 521, 521, 521, 521, + /* 62939 */ 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 58251, 1151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1164, 0, + /* 62964 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 62997 */ 1182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1207, 1296, + /* 63028 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1290, 1316, 1317, 0, 1290, 521, 521, 521, + /* 63057 */ 521, 521, 521, 0, 0, 0, 0, 57886, 57886, 57886, 57886, 59822, 57886, 57886, 57886, 57886, 57886, 57886, + /* 63075 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 59907, 57909, + /* 63092 */ 57909, 57909, 57909, 57909, 57909, 57909, 59915, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63107 */ 57909, 521, 1325, 521, 521, 521, 1329, 521, 521, 1340, 521, 521, 1344, 521, 521, 521, 521, 521, 521, 521, + /* 63127 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1363, 521, 521, 521, 0, 2895, 0, 0, 0, 0, 57886, 57886, + /* 63149 */ 57886, 57886, 57886, 57886, 60245, 57886, 57886, 57886, 57886, 60249, 57886, 57886, 57886, 57886, 57886, + /* 63164 */ 57886, 57886, 57886, 57886, 57886, 57886, 58294, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, + /* 63179 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59483, 57909, + /* 63194 */ 57909, 57909, 57909, 57909, 57909, 59491, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63209 */ 57909, 57886, 521, 1367, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 63229 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2893, 521, 521, 521, 58754, + /* 63249 */ 901, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58764, 57886, 57886, 57886, 58768, 57886, 57886, + /* 63264 */ 58779, 57886, 57886, 58783, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60588, + /* 63279 */ 60589, 57886, 57886, 57886, 57886, 60592, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 63294 */ 57886, 57886, 60598, 57886, 57886, 57886, 57909, 57909, 58878, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63309 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58897, 57909, 57909, 57909, + /* 63324 */ 58901, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60367, 57909, 57909, + /* 63339 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 63354 */ 57936, 57936, 57936, 57936, 59515, 57936, 57936, 57936, 57936, 59521, 57936, 57936, 57936, 57936, 57936, + /* 63369 */ 57936, 57936, 57936, 57936, 57936, 59532, 57936, 57936, 57936, 57936, 57936, 57936, 58953, 57936, 57936, + /* 63384 */ 57936, 58957, 57936, 57936, 58968, 57936, 57936, 58972, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 63399 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58991, 57936, 57936, 57936, 58995, + /* 63414 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 63429 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60399, 57936, + /* 63444 */ 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 1726, 1727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 63469 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516560, 516560, 516560, 516560, 0, 1786, 0, 0, 0, 0, 0, 0, 0, 0, + /* 63497 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1808, 0, 0, 0, 0, 0, 5111808, 0, 0, 0, 0, 0, + /* 63529 */ 5283840, 0, 0, 0, 0, 5472256, 5521408, 0, 0, 0, 0, 5595136, 5709824, 5718016, 0, 5824512, 5865472, 0, 0, + /* 63548 */ 5922816, 0, 0, 6021120, 0, 521, 58754, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 63565 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59324, 57886, 57886, 57886, 57886, 57886, 57886, + /* 63580 */ 57886, 57886, 57886, 57886, 57886, 60837, 57886, 60839, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 63595 */ 60846, 57886, 57886, 60848, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 50657, 0, 57909, 57909, + /* 63610 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63625 */ 59424, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61181, + /* 63640 */ 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 63655 */ 57936, 57936, 57936, 60047, 57936, 57936, 57936, 57936, 60052, 57936, 57936, 57936, 57936, 57936, 57936, + /* 63670 */ 57936, 57936, 57936, 57936, 57936, 57909, 57909, 57909, 57909, 57909, 59442, 59443, 57909, 57909, 57909, + /* 63685 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63700 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 60907, 57936, 57936, + /* 63715 */ 57936, 57936, 57936, 57936, 57936, 59538, 59539, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 63730 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 63745 */ 57936, 57936, 57936, 57936, 59556, 57936, 57936, 57936, 57936, 57936, 57936, 59563, 57936, 57936, 521, + /* 63760 */ 521, 521, 59324, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 63787 */ 0, 0, 0, 0, 0, 139264, 147456, 0, 0, 318, 0, 0, 0, 0, 0, 2384, 0, 0, 2387, 0, 521, 521, 2390, 521, 521, + /* 63812 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, + /* 63832 */ 57886, 57886, 57886, 57886, 60823, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59867, 59868, 57886, + /* 63847 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59879, 57886, 57886, 57886, + /* 63862 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59891, 57909, 57909, + /* 63877 */ 57909, 57909, 57909, 59956, 59957, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63892 */ 57909, 57909, 59968, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63907 */ 58891, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63922 */ 57909, 57909, 57909, 57909, 57909, 59457, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63937 */ 57909, 57909, 57909, 57909, 57909, 57909, 59980, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 63952 */ 57909, 57909, 57936, 57936, 59992, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 63967 */ 57936, 57936, 57936, 57936, 57936, 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3868, 3627, 0, 0, + /* 63990 */ 57936, 57936, 57936, 57936, 57936, 60039, 60040, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 64005 */ 57936, 57936, 57936, 57936, 60051, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 64020 */ 57936, 57936, 57936, 57936, 60705, 57936, 57936, 60708, 57936, 57936, 60711, 3368, 521, 521, 60715, 57886, + /* 64036 */ 57886, 0, 0, 0, 0, 0, 57936, 57936, 57936, 60063, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 64054 */ 57936, 57936, 521, 521, 521, 2732, 2733, 57886, 57886, 57886, 60081, 60082, 0, 0, 1710, 0, 0, 1717, 0, 0, + /* 64074 */ 0, 0, 0, 1728, 1729, 0, 0, 0, 0, 0, 1735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 360, + /* 64105 */ 361, 0, 0, 0, 0, 0, 0, 0, 367, 0, 295, 0, 0, 0, 0, 2821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2827, 0, 0, 0, 0, 0, + /* 64136 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 64157 */ 521, 521, 521, 521, 521, 521, 521, 521, 2460, 521, 2462, 57886, 60286, 57886, 57886, 57886, 57886, 57886, + /* 64175 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 64190 */ 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 64207 */ 57909, 57909, 57909, 57909, 57909, 57909, 59919, 57909, 57909, 57909, 57909, 57936, 60406, 57936, 57936, + /* 64222 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60418, 57936, 57936, 57936, 57936, 57936, + /* 64237 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59011, 57936, + /* 64252 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, + /* 64268 */ 521, 3194, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 64289 */ 521, 521, 3207, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 59818, 57886, 57886, 57886, 57886, 57886, 57886, + /* 64309 */ 57886, 59826, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 64324 */ 60590, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 64339 */ 57886, 57886, 57886, 57886, 57886, 0, 0, 57909, 60615, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 64355 */ 57909, 57909, 57909, 57909, 60648, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 64370 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, + /* 64385 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60002, 57936, 57936, 57936, 57936, 57936, 60697, 57936, + /* 64400 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 64415 */ 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 6152192, 0, 0, 0, 6316032, + /* 64436 */ 0, 196608, 0, 0, 5816320, 6291456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2754, 0, 0, 0, 0, 0, 0, 0, 0, + /* 64465 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57936, 57936, 57936, 57936, + /* 64493 */ 57936, 61097, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 3760, 57886, 57886, + /* 64509 */ 61106, 3763, 0, 0, 0, 0, 3767, 0, 0, 0, 0, 0, 0, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, + /* 64534 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1167, 0, 0, 0, 0, 1171, 0, 0, 1174, 0, 0, 0, 0, 0, 0, 0, 521, + /* 64565 */ 521, 521, 3788, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 64586 */ 521, 57886, 57886, 57886, 61147, 57886, 57886, 57886, 61150, 57886, 57886, 57886, 57886, 58274, 57886, + /* 64601 */ 57886, 57886, 57886, 57886, 58293, 57886, 57886, 57886, 57886, 58311, 57886, 57886, 57886, 0, 57909, + /* 64616 */ 57909, 57909, 57909, 57909, 57909, 57909, 58350, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 64631 */ 57909, 59478, 57909, 57909, 57909, 59484, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 64646 */ 59494, 57909, 57909, 57909, 57909, 59500, 57909, 57909, 57886, 57886, 57886, 57886, 61241, 57886, 61243, + /* 64661 */ 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 64676 */ 57909, 61257, 57909, 61259, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 61074, 57936, 57936, 57936, + /* 64691 */ 61077, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61085, 57936, 57936, 57936, 57936, + /* 64706 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59516, 57936, 57936, 57936, 57936, 57936, + /* 64721 */ 57936, 57936, 57936, 57936, 59528, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 64736 */ 57936, 61470, 57936, 57936, 57936, 0, 4130, 0, 0, 0, 0, 0, 521, 521, 4135, 521, 4136, 521, 521, 521, 521, + /* 64757 */ 521, 521, 521, 57886, 57886, 61486, 57886, 61487, 57886, 57886, 57886, 57886, 59340, 57886, 57886, 57886, + /* 64773 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59353, 57886, 57886, 57886, 59358, 57886, + /* 64788 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 57909, 57909, 57909, 57909, + /* 64805 */ 57909, 57909, 57909, 59914, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, 0, 0, + /* 64822 */ 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 64837 */ 57936, 57936, 57936, 57936, 57936, 60709, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, + /* 64856 */ 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 358, 0, 0, 0, 475, 475, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, + /* 64886 */ 509, 513, 513, 513, 513, 509, 513, 513, 513, 509, 513, 513, 513, 513, 513, 513, 538, 57904, 538, 57904, + /* 64906 */ 538, 538, 57904, 538, 538, 57927, 57904, 538, 538, 57904, 57904, 57904, 57927, 57904, 57904, 57904, 57904, + /* 64923 */ 57904, 57904, 57904, 57927, 57927, 57904, 57904, 57954, 57904, 57904, 57904, 57904, 57904, 57904, 57904, + /* 64938 */ 57954, 57954, 57904, 57904, 57904, 57904, 57954, 57954, 57904, 618, 57904, 57969, 57969, 1, 24578, 3, + /* 64954 */ 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 64982 */ 1305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1288, 0, 521, 521, 1320, 521, 1323, 0, 680, 681, 0, 0, + /* 65010 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 367, 367, 0, 0, 0, 0, 0, 0, 0, 0, 702, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, + /* 65041 */ 3876, 521, 521, 521, 521, 3880, 521, 521, 521, 521, 521, 3886, 521, 521, 521, 57886, 57886, 57886, 61235, + /* 65060 */ 57886, 57886, 57886, 658, 0, 637, 0, 0, 0, 0, 0, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 0, 795, 0, 0, + /* 65088 */ 0, 0, 0, 0, 637, 0, 0, 781, 521, 833, 521, 521, 521, 521, 854, 858, 864, 521, 869, 521, 521, 521, 521, + /* 65111 */ 521, 887, 521, 521, 521, 521, 57886, 57886, 58252, 0, 790, 0, 795, 0, 781, 0, 807, 0, 0, 0, 0, 807, 0, 0, + /* 65135 */ 0, 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, 781, 0, 0, 0, 0, 0, 0, 1277, 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 65167 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 57909, 57909, 57909, 57909, 57909, + /* 65194 */ 58382, 57909, 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 58403, 57936, 57936, 57936, 57936, + /* 65211 */ 58424, 58428, 58434, 57936, 58439, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 0, + /* 65228 */ 57886, 57886, 57886, 57886, 57886, 57886, 155941, 1138, 0, 0, 1142, 0, 0, 1147, 0, 0, 0, 0, 0, 0, 0, 311, + /* 65250 */ 0, 0, 0, 0, 0, 310, 0, 310, 311, 0, 310, 310, 311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 310, 408, 311, 0, 0, + /* 65279 */ 0, 0, 0, 0, 311, 413, 0, 0, 139264, 147456, 0, 0, 0, 0, 0, 58457, 57936, 57936, 57936, 57936, 521, 521, + /* 65301 */ 521, 887, 521, 521, 0, 57886, 57886, 57886, 58306, 57886, 57886, 155941, 1138, 0, 301, 0, 0, 305, 0, 0, 0, + /* 65322 */ 0, 0, 0, 0, 0, 2336, 0, 0, 0, 0, 1806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2292, + /* 65353 */ 2293, 0, 2295, 2296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 65384 */ 1169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1179, 0, 0, 0, 1183, 1184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 65415 */ 0, 0, 367, 367, 0, 0, 0, 1202, 0, 0, 0, 0, 0, 0, 0, 686, 0, 0, 0, 0, 0, 0, 367, 367, 367, 0, 0, 0, 0, 0, + /* 65445 */ 699, 0, 0, 0, 0, 0, 0, 0, 0, 708, 0, 0, 1243, 0, 0, 0, 0, 0, 0, 1251, 0, 0, 0, 0, 0, 1256, 0, 0, 0, 0, 0, + /* 65476 */ 0, 0, 0, 0, 0, 0, 1267, 0, 0, 0, 0, 0, 0, 1301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 65509 */ 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 0, 0, 0, 0, 1275, + /* 65532 */ 0, 0, 1152, 0, 0, 0, 1281, 0, 1283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1291, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, + /* 65561 */ 521, 521, 521, 2393, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2405, 521, 521, 521, 521, 521, + /* 65582 */ 521, 0, 1297, 1256, 0, 1281, 1300, 0, 1303, 0, 0, 0, 1183, 0, 0, 0, 0, 1311, 0, 0, 0, 0, 0, 1311, 0, 0, + /* 65608 */ 1202, 1311, 1318, 521, 521, 521, 521, 521, 521, 0, 0, 0, 2473, 57886, 57886, 57886, 57886, 57886, 57886, + /* 65627 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 65642 */ 57886, 61043, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 1324, 521, 521, 521, 521, + /* 65658 */ 1330, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1351, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 65679 */ 521, 521, 521, 1364, 521, 521, 521, 0, 2895, 0, 0, 0, 0, 57886, 57886, 57886, 60243, 57886, 60244, 57886, + /* 65699 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 65714 */ 57886, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 65730 */ 521, 521, 1369, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1377, 521, 521, 521, 1384, 1386, 521, 521, + /* 65750 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2881, 521, 521, 521, 521, 521, 521, 521, 521, + /* 65771 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 3202, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 65792 */ 521, 3208, 521, 521, 521, 521, 1409, 58754, 901, 58756, 57886, 57886, 57886, 57886, 57886, 58763, 57886, + /* 65809 */ 57886, 57886, 57886, 58769, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 58790, + /* 65824 */ 57886, 57886, 57886, 57886, 57886, 57886, 59870, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 65839 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 65854 */ 57886, 57886, 58818, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 58911, 57909, 57909, + /* 65869 */ 57909, 58918, 58920, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 65884 */ 57909, 57909, 57909, 57909, 58943, 0, 58944, 58945, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 65899 */ 57936, 57936, 59543, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 65914 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58984, 57936, 57936, 57936, 58987, + /* 65929 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58952, 57936, 57936, 57936, 57936, 58958, 57936, 57936, + /* 65944 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58979, 57936, 57936, 57936, 57936, 57936, 57936, + /* 65959 */ 57936, 57936, 57936, 57936, 57936, 57936, 58992, 57936, 57936, 57936, 57936, 58997, 57936, 57936, 57936, + /* 65974 */ 57936, 57936, 59002, 57936, 57936, 57936, 59006, 57936, 57936, 57936, 59013, 59015, 57936, 57936, 57936, + /* 65989 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60922, 57936, 57936, 57936, + /* 66004 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60395, + /* 66019 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 66034 */ 57936, 57936, 57936, 59038, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 1138, + /* 66051 */ 0, 0, 0, 1710, 0, 0, 0, 0, 1717, 0, 0, 0, 0, 0, 0, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 66084 */ 0, 0, 0, 0, 0, 0, 0, 0, 734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 66118 */ 0, 0, 0, 1775, 0, 0, 0, 0, 0, 0, 0, 1783, 1784, 0, 0, 0, 0, 1840, 1841, 0, 0, 0, 1844, 0, 0, 0, 0, 0, + /* 66146 */ 1849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 581632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 581632, 0, + /* 66177 */ 581632, 581632, 0, 1862, 0, 1864, 1840, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1876, 521, + /* 66197 */ 521, 521, 521, 1882, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2850, 521, 2852, 521, 521, 521, + /* 66217 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2427, 521, 521, 521, 521, + /* 66238 */ 521, 521, 521, 521, 521, 521, 521, 521, 1893, 521, 521, 521, 521, 1897, 521, 521, 521, 521, 521, 521, 521, + /* 66259 */ 521, 521, 521, 521, 521, 1910, 521, 521, 521, 1915, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2849, + /* 66279 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 66300 */ 521, 2429, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 58754, 0, 57886, 57886, 57886, 57886, + /* 66319 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59319, 57886, 57886, 57886, 57886, 59325, 57886, + /* 66334 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59336, 50657, 0, 57909, 57909, 57909, + /* 66349 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59419, 57909, 57909, 57909, 57909, 59425, + /* 66364 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59436, 57909, 57909, 57909, 57909, + /* 66379 */ 57909, 57909, 60653, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 66394 */ 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 66409 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61091, 57936, 57909, 57909, + /* 66424 */ 57909, 59440, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59453, + /* 66439 */ 57909, 57909, 57909, 59458, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 66454 */ 57909, 59936, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 66469 */ 57909, 57909, 57909, 57909, 57909, 57909, 59942, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 66484 */ 57909, 57909, 57909, 57909, 57936, 59536, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 66499 */ 57936, 57936, 57936, 59549, 57936, 57936, 57936, 59554, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 66514 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 2730, 521, 521, 521, 57886, 60079, 57886, 57886, + /* 66530 */ 57886, 0, 0, 0, 0, 0, 0, 0, 0, 2257, 521, 521, 59604, 57886, 59606, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, + /* 66555 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2277, 2278, 0, 0, 0, 0, 0, 5210112, 0, 5365760, 0, 5554176, + /* 66580 */ 5570560, 5578752, 0, 5668864, 0, 0, 5791744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6201344, 6242304, 6250496, 0, + /* 66601 */ 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3443, 521, 521, 521, 521, 521, 521, 521, + /* 66623 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 1382, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 66644 */ 521, 521, 521, 521, 0, 0, 2383, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 66668 */ 521, 521, 521, 521, 2403, 521, 521, 2407, 521, 521, 521, 2411, 57886, 57886, 59842, 57886, 57886, 57886, + /* 66686 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59852, 57886, 57886, 57886, 59855, 57886, 57886, + /* 66701 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60609, 57886, 57886, 57886, + /* 66716 */ 57886, 0, 0, 57909, 57909, 57909, 57909, 57909, 60618, 57909, 60619, 57909, 57909, 57909, 57909, 57909, + /* 66732 */ 57886, 57886, 59894, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 2561, 0, 57909, 57909, 57909, + /* 66749 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59923, + /* 66764 */ 57909, 57909, 59927, 57909, 57909, 57909, 59931, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 66779 */ 57909, 57909, 57909, 59941, 57909, 57909, 57909, 59944, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 66794 */ 57909, 57909, 57909, 57909, 57909, 61180, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, + /* 66809 */ 61186, 57936, 57936, 57936, 61190, 57936, 57936, 57936, 57936, 57936, 59978, 57909, 57909, 57909, 57909, + /* 66824 */ 57909, 59983, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, + /* 66839 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60006, 57936, 57936, 60010, + /* 66854 */ 57936, 57936, 57936, 60014, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 66869 */ 60024, 57936, 57936, 57936, 60027, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, + /* 66886 */ 0, 4076, 0, 4078, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 66906 */ 60061, 57936, 57936, 57936, 57936, 57936, 60066, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, + /* 66921 */ 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 66947 */ 2273, 0, 0, 0, 0, 0, 0, 0, 0, 2743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 66979 */ 0, 0, 0, 0, 0, 0, 0, 0, 3629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 67012 */ 2826, 0, 0, 0, 0, 0, 0, 521, 521, 2833, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3465, 3467, 521, + /* 67035 */ 521, 521, 3470, 521, 3472, 3473, 521, 57886, 57886, 57886, 57886, 57886, 57886, 60824, 57886, 57886, + /* 67051 */ 57886, 57886, 57886, 2841, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 67071 */ 2856, 521, 521, 521, 521, 2859, 521, 521, 2861, 521, 2862, 521, 521, 521, 521, 521, 521, 0, 0, 2472, 0, + /* 67092 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 67107 */ 57886, 57886, 59834, 57886, 57886, 59838, 57886, 521, 521, 521, 521, 2870, 521, 521, 2874, 521, 521, 521, + /* 67125 */ 521, 521, 521, 521, 521, 521, 2883, 521, 521, 521, 2886, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 67146 */ 3669, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 67163 */ 57886, 57886, 57886, 57886, 57886, 50657, 58754, 977, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 67178 */ 57909, 58860, 57909, 57909, 57909, 57909, 57909, 58872, 0, 0, 57909, 57909, 60309, 57909, 57909, 57909, + /* 67194 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60317, 57909, 57909, 57909, 57909, 57909, 57909, + /* 67209 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61183, 57909, 57936, 57936, 57936, 57936, + /* 67224 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60420, 57936, 57936, 57936, + /* 67239 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59008, 57936, + /* 67254 */ 57936, 57936, 57936, 57936, 57936, 57936, 59022, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57909, + /* 67269 */ 60332, 57909, 57909, 57909, 57909, 60335, 57909, 57909, 60337, 57909, 60338, 57909, 57909, 57909, 57909, + /* 67284 */ 57909, 57909, 57909, 57909, 57909, 60347, 57909, 57909, 60351, 57909, 57909, 57909, 57909, 57909, 57909, + /* 67299 */ 57909, 57909, 57909, 57909, 57909, 60655, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, + /* 67314 */ 57936, 57936, 57936, 60666, 57936, 57936, 57936, 57936, 57936, 57936, 60673, 57909, 57909, 60360, 57909, + /* 67329 */ 57909, 57909, 60363, 60364, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 67344 */ 57909, 57909, 57936, 57936, 60374, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 3096, + /* 67360 */ 521, 521, 57886, 57886, 60443, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 450560, 450560, 0, + /* 67384 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139264, 147456, 0, 0, 450560, 0, 0, 57936, 57936, 57936, 60382, 57936, + /* 67407 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 67422 */ 60397, 57936, 57936, 57936, 57936, 60400, 57936, 57936, 60402, 57936, 60403, 57936, 57936, 57936, 57936, + /* 67437 */ 57936, 57936, 57936, 57936, 61272, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, + /* 67452 */ 57886, 0, 0, 0, 0, 0, 0, 0, 3942, 3627, 0, 0, 0, 0, 0, 371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 67483 */ 0, 0, 371, 0, 0, 0, 379, 381, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 67508 */ 521, 521, 521, 521, 521, 521, 521, 1885, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3794, 521, 521, 521, + /* 67529 */ 3795, 3796, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 67546 */ 57886, 57886, 57886, 0, 2559, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 67563 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60325, 57909, + /* 67578 */ 57909, 57909, 57909, 57909, 57909, 3190, 521, 521, 521, 3193, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 67597 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1917, 521, 521, + /* 67618 */ 521, 521, 521, 57886, 60581, 57886, 57886, 57886, 60584, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 67634 */ 57886, 57886, 57886, 57886, 57886, 60594, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 67649 */ 57886, 57886, 57886, 57886, 60838, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 67664 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 2561, 57909, 57909, 57909, 57909, 57909, + /* 67680 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60630, 57909, 57909, + /* 67695 */ 57909, 60633, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60643, + /* 67710 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, + /* 67727 */ 57936, 57936, 57936, 57936, 58417, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 67742 */ 57936, 57936, 60920, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 67757 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 60674, + /* 67779 */ 57936, 57936, 57936, 57936, 60679, 57936, 57936, 57936, 60682, 57936, 57936, 57936, 57936, 57936, 57936, + /* 67794 */ 57936, 57936, 57936, 57936, 57936, 57936, 60692, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 67809 */ 57936, 4072, 4073, 0, 0, 0, 0, 0, 4079, 4080, 4081, 521, 521, 521, 4084, 521, 4086, 521, 521, 521, 521, + /* 67830 */ 61435, 61436, 61437, 3457, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3469, 521, + /* 67849 */ 521, 521, 521, 521, 57886, 57886, 57886, 60821, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 67865 */ 57886, 60587, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60595, + /* 67880 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 2560, 0, 0, 57909, 57909, 57909, + /* 67897 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 67912 */ 60640, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60883, + /* 67927 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 67942 */ 60897, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 60905, 57936, 57936, 57936, 57936, 57936, + /* 67957 */ 57936, 57936, 57936, 57936, 57936, 57936, 61201, 57936, 57936, 521, 521, 57886, 57886, 0, 0, 0, 0, 0, 0, + /* 67976 */ 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3784, 521, 521, 521, 57936, 60939, + /* 68005 */ 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, 0, 0, 0, 3610, 0, 0, 0, 0, 0, + /* 68027 */ 0, 0, 3616, 0, 0, 0, 0, 0, 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 377, 0, 0, 0, 0, 0, + /* 68060 */ 0, 0, 0, 2824, 2782, 0, 0, 0, 0, 0, 2829, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 2838, 521, 521, 521, + /* 68085 */ 521, 521, 0, 0, 0, 3640, 3641, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3651, 521, 521, + /* 68108 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3671, 521, 521, 521, 57886, 57886, 57886, 57886, + /* 68127 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60612, 57886, 0, 0, 57909, + /* 68143 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60620, 57909, 57909, 57909, 57909, 521, 3661, 521, 521, + /* 68159 */ 521, 521, 521, 3666, 521, 3668, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, + /* 68177 */ 57886, 57886, 57886, 57886, 61022, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60292, 57886, 57886, + /* 68192 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 60303, 57886, 57886, + /* 68207 */ 57886, 57886, 57886, 0, 2962, 0, 0, 57909, 57909, 57909, 57909, 61051, 57909, 57909, 57909, 57909, 57909, + /* 68224 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61061, 57909, 57909, 57909, 57909, 57909, + /* 68239 */ 57909, 61067, 57909, 61069, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58884, 57909, 57909, 57909, + /* 68254 */ 57909, 57909, 57909, 57909, 57909, 57909, 58894, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 68269 */ 57909, 57909, 57909, 57909, 57909, 57909, 59938, 57909, 57909, 57909, 57909, 57909, 57909, 59943, 57909, + /* 68284 */ 59945, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 61096, 57936, + /* 68299 */ 61098, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, 0, 0, + /* 68316 */ 0, 3765, 0, 0, 0, 0, 0, 0, 0, 0, 2363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2374, 0, 0, 0, 0, 0, 0, 0, + /* 68348 */ 0, 0, 656, 0, 0, 659, 660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3770, 0, 0, 0, 0, + /* 68380 */ 0, 0, 0, 3627, 0, 0, 0, 0, 0, 3779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, + /* 68408 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3786, 521, 521, + /* 68429 */ 521, 3790, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3799, 521, 521, 521, 57886, + /* 68449 */ 57886, 57886, 57886, 57886, 61148, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, + /* 68464 */ 57909, 57909, 60867, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 68479 */ 57909, 57909, 57909, 57909, 60880, 57909, 57909, 61152, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 68494 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61161, 57886, 57886, 57886, 57886, 57909, 57909, 57909, + /* 68509 */ 57909, 57909, 61167, 57909, 57909, 57909, 61171, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61053, + /* 68524 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 68539 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59459, 57909, 57909, 57909, 57909, 57909, + /* 68554 */ 57909, 57909, 57909, 61438, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61446, 57886, 57909, + /* 68569 */ 57909, 57909, 61451, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61459, 57909, 57936, 57936, + /* 68584 */ 57936, 61464, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59576, 57936, 57936, 57936, + /* 68599 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 68614 */ 57936, 57936, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 68637 */ 0, 0, 0, 57936, 57936, 57936, 57936, 57936, 61472, 57936, 0, 0, 0, 0, 4131, 0, 4133, 521, 521, 521, 521, + /* 68658 */ 521, 521, 521, 521, 521, 4139, 4140, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 61445, + /* 68675 */ 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 61458, 57909, + /* 68690 */ 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60919, 57936, 57936, + /* 68705 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60929, 57936, 57936, 57936, 57936, 57936, 57936, + /* 68720 */ 57936, 57936, 57936, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 4088, 521, + /* 68742 */ 521, 57886, 57886, 57886, 57886, 57886, 57886, 61490, 61491, 57886, 57886, 57909, 57909, 57909, 57909, + /* 68757 */ 57909, 57909, 57909, 57909, 57909, 61498, 61499, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, + /* 68772 */ 57936, 57936, 57936, 61506, 61507, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61415, 0, 0, + /* 68788 */ 4074, 4075, 0, 0, 0, 521, 521, 521, 4082, 521, 521, 521, 521, 521, 521, 521, 521, 4090, 57886, 57886, + /* 68808 */ 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 60865, 57909, 57909, 57909, 57909, 57909, 57909, + /* 68823 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 68838 */ 61184, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61189, 57936, 57936, 57936, 57936, 57936, 57936, + /* 68853 */ 0, 0, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57936, 57936, 57936, + /* 68870 */ 57936, 0, 521, 4220, 57886, 61565, 57909, 61566, 57936, 61567, 521, 57886, 57909, 57936, 521, 521, 521, + /* 68887 */ 521, 521, 521, 521, 1899, 1900, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 68908 */ 521, 521, 521, 521, 521, 521, 521, 521, 3800, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 68926 */ 57886, 57886, 425, 425, 0, 0, 131072, 425, 0, 0, 0, 425, 0, 0, 447, 0, 425, 0, 476, 476, 476, 0, 0, 361, + /* 68950 */ 361, 361, 495, 361, 361, 361, 361, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 68971 */ 476, 539, 57905, 539, 57905, 539, 539, 57905, 539, 539, 57928, 57905, 539, 539, 57905, 57905, 57905, + /* 68988 */ 57928, 57905, 57905, 57905, 57905, 57905, 57905, 57905, 57928, 57928, 57905, 57905, 57955, 57905, 57905, + /* 69003 */ 57905, 57905, 57905, 57905, 57905, 57955, 57955, 57905, 57905, 57905, 57905, 57955, 57955, 57905, 539, + /* 69018 */ 57905, 57905, 57905, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, 0, + /* 69041 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 376832, 0, 376832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 69073 */ 0, 0, 1854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57909, 58369, 57909, 57909, 57909, 57909, 58387, 57909, + /* 69095 */ 57909, 57909, 0, 0, 0, 0, 58293, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58425, 57936, 57936, + /* 69112 */ 57936, 57936, 57936, 58444, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60069, 57936, + /* 69127 */ 57936, 57936, 57936, 2729, 521, 521, 521, 521, 60078, 57886, 57886, 57886, 57886, 2739, 2266, 0, 2740, + /* 69144 */ 2269, 0, 0, 2742, 57936, 58462, 57936, 57936, 57936, 521, 521, 521, 521, 892, 521, 0, 57886, 57886, 57886, + /* 69163 */ 57886, 58311, 57886, 155941, 1138, 0, 1139, 0, 0, 1144, 0, 0, 0, 0, 0, 1150, 0, 0, 0, 0, 0, 5341184, 0, + /* 69186 */ 5652480, 0, 0, 0, 0, 4759552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1827, 0, 0, 0, + /* 69216 */ 0, 0, 0, 0, 1834, 0, 0, 0, 0, 0, 0, 1244, 0, 0, 0, 0, 1249, 0, 0, 0, 1253, 0, 0, 0, 0, 0, 0, 0, 1253, 0, + /* 69246 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 466944, 0, 0, 0, 0, 0, 0, 0, 0, 1825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 69278 */ 353, 354, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 295, 0, 521, 521, 521, 1327, 521, 521, 521, + /* 69305 */ 1336, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 69326 */ 521, 521, 521, 521, 2895, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 69343 */ 60574, 57886, 57886, 60578, 57886, 521, 521, 521, 58754, 901, 57886, 57886, 57886, 57886, 57886, 57886, + /* 69359 */ 57886, 57886, 57886, 58766, 57886, 57886, 57886, 58775, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 69374 */ 57886, 57886, 57886, 57886, 57886, 57886, 61034, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 69389 */ 61042, 57886, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 61047, 57909, 57936, 57936, 57936, + /* 69404 */ 57936, 57936, 58955, 57936, 57936, 57936, 58964, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 69419 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59555, + /* 69434 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 521, + /* 69451 */ 1931, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1953, + /* 69472 */ 521, 521, 521, 521, 521, 521, 0, 2470, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 69490 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59839, 521, + /* 69505 */ 58754, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 69520 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59333, 57886, 57886, + /* 69535 */ 57886, 57886, 57886, 57909, 57909, 57909, 57909, 60864, 57909, 57909, 57909, 57909, 60868, 57909, 57909, + /* 69550 */ 57909, 57909, 57909, 57909, 57909, 60874, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 69565 */ 57909, 0, 0, 0, 0, 57886, 57936, 57936, 58402, 57936, 57936, 57936, 57936, 57936, 57936, 58433, 58435, + /* 69582 */ 57936, 57936, 57936, 57936, 57936, 57936, 50657, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 69597 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 69612 */ 57909, 57909, 57909, 59433, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59986, 57909, + /* 69627 */ 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 69642 */ 60001, 57936, 57936, 60004, 57936, 57936, 57909, 57909, 57909, 57909, 57909, 59474, 57909, 57909, 57909, + /* 69657 */ 57909, 57909, 57909, 57909, 57909, 59486, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 69672 */ 57909, 59497, 57909, 57909, 57909, 57909, 57909, 57886, 57886, 57886, 57886, 59372, 57886, 57886, 59375, + /* 69687 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59389, 57886, 57886, 57886, 57886, + /* 69702 */ 57886, 57886, 59395, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59872, 57886, 57886, 57886, + /* 69717 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 69732 */ 57886, 57886, 57886, 57886, 57886, 57886, 60304, 57886, 57886, 57886, 0, 2962, 0, 0, 57936, 57936, 57936, + /* 69749 */ 57936, 59570, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59582, 57936, 57936, 57936, 57936, + /* 69764 */ 57936, 57936, 57936, 57936, 57936, 57936, 59593, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, + /* 69780 */ 521, 521, 0, 57886, 57886, 57886, 57886, 57886, 57886, 293, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 69803 */ 3119, 0, 3120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3135, 0, 0, 0, 0, 2283, 0, 0, 0, 0, 0, 0, 0, + /* 69834 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2301, 0, 0, 0, 0, 2359, 0, 0, 0, 0, 0, 0, 0, + /* 69867 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 0, 0, 57886, 59841, 57886, 57886, + /* 69896 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 69911 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59863, 57886, + /* 69926 */ 57886, 57886, 57909, 57909, 57909, 57909, 57909, 59930, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 69941 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 69956 */ 57909, 57909, 57909, 57909, 0, 57886, 57936, 57936, 58947, 57936, 57936, 57936, 57936, 57936, 57936, + /* 69971 */ 60013, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 69986 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59589, 57936, 57936, + /* 70001 */ 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 0, 0, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70018 */ 60313, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70033 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 58931, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70048 */ 57909, 57909, 0, 57886, 57936, 57936, 57936, 57936, 60626, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70063 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70078 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 1259, 57886, 57936, 57936, 57936, + /* 70093 */ 57936, 57936, 60675, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 70108 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 70123 */ 57936, 57936, 57936, 59524, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 70138 */ 57886, 57886, 57886, 61155, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 70153 */ 57886, 57886, 57886, 57886, 57886, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70168 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 61174, 57909, 57909, 57909, 57909, + /* 70183 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, + /* 70198 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 61193, 57936, 57936, 57936, 57936, 57936, + /* 70213 */ 57936, 57936, 57936, 61100, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 57886, 57886, 57886, + /* 70229 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, + /* 70262 */ 367, 0, 0, 0, 0, 0, 0, 0, 1205, 0, 0, 57936, 57936, 57936, 57936, 61471, 57936, 57936, 0, 0, 0, 0, 0, 0, + /* 70286 */ 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, + /* 70305 */ 57886, 57909, 57909, 57886, 57886, 57936, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57936, 57936, + /* 70320 */ 57886, 57886, 57886, 57886, 57936, 57936, 57886, 521, 57886, 57886, 57886, 372, 372, 0, 0, 131072, 372, 0, + /* 70338 */ 0, 0, 372, 0, 0, 0, 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3122, 0, 0, 0, 0, 0, 0, 0, + /* 70371 */ 0, 0, 0, 0, 0, 0, 0, 57906, 57906, 57906, 57906, 57906, 57906, 57906, 57929, 57929, 57906, 57906, 57956, + /* 70390 */ 57906, 57906, 57906, 57906, 57906, 57906, 57906, 57956, 57956, 57906, 57906, 57906, 57906, 57956, 57956, + /* 70405 */ 57906, 540, 57906, 57906, 57906, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, + /* 70426 */ 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2334720, 0, 2334720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 70457 */ 0, 0, 0, 0, 0, 0, 521, 521, 521, 2834, 2835, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 70479 */ 58267, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 70494 */ 57886, 0, 57909, 57909, 57909, 57909, 57909, 57909, 58343, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70509 */ 57909, 57909, 57909, 57909, 61179, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, + /* 70524 */ 57936, 57936, 61187, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, + /* 70540 */ 57886, 57886, 57886, 57886, 57886, 301, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1282, 0, 0, 0, 0, 0, 0, + /* 70566 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2758, 2759, 0, 0, 2762, 0, 2764, 0, 0, 0, 0, 0, 521, 521, 521, + /* 70595 */ 58754, 901, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 70610 */ 57886, 57886, 58780, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 0, 0, 0, + /* 70627 */ 0, 57909, 57909, 59909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70642 */ 57909, 57909, 57909, 57909, 60658, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 57936, 57936, 60667, + /* 70657 */ 57936, 60668, 57936, 57936, 57936, 57936, 58875, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70672 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 70687 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59947, 57909, 57909, 57909, 57909, 57909, 0, 0, 0, + /* 70704 */ 3771, 0, 3772, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 521, + /* 70733 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3657, 521, 521, 521, 521, 521, 521, 0, 0, 0, + /* 70755 */ 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, + /* 70787 */ 245760, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 0, 364, 0, 0, 0, 0, 363, 0, 0, 0, 139264, 147456, + /* 70815 */ 0, 0, 0, 0, 0, 0, 653, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 70848 */ 1858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 433, 131072, 0, 433, 433, 0, 0, 433, 0, 364, 433, 0, 459, 0, 0, 0, 487, + /* 70875 */ 487, 490, 490, 490, 490, 496, 497, 490, 490, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, + /* 70896 */ 510, 510, 510, 541, 57907, 541, 57907, 541, 541, 57907, 541, 541, 57930, 57907, 541, 541, 57907, 57907, + /* 70914 */ 57907, 57930, 57907, 57907, 57907, 57907, 57907, 57907, 57907, 57930, 57930, 57907, 57907, 57957, 57907, + /* 70929 */ 57907, 57907, 57907, 57907, 57907, 57907, 57957, 57957, 57907, 57907, 57907, 57907, 57957, 57957, 57907, + /* 70944 */ 619, 57907, 57970, 57970, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, 306, 0, 0, + /* 70967 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 71001 */ 0, 1239, 1806, 0, 0, 0, 0, 1246, 1246, 0, 0, 57909, 57909, 57909, 57909, 57909, 58383, 57909, 57909, + /* 71020 */ 57909, 57909, 0, 0, 0, 0, 57886, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 71037 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60688, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 71052 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 58458, 57936, 57936, 57936, 57936, 521, 521, 521, + /* 71068 */ 888, 521, 521, 0, 57886, 57886, 57886, 58307, 57886, 57886, 155941, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 71091 */ 0, 1794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1806, 0, 0, 0, 0, 0, 0, 0, 0, 1272, 0, 0, 0, 0, 0, 0, 0, + /* 71123 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3402, 2768, 0, 0, 0, 0, 0, 0, 0, + /* 71156 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2318336, 57909, 57909, 57909, + /* 71184 */ 57909, 57909, 60334, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 71199 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60344, + /* 71214 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57886, + /* 71229 */ 57886, 57886, 58268, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 71244 */ 57886, 57886, 57886, 0, 57909, 57909, 57909, 57909, 57909, 57909, 58344, 57909, 57909, 57909, 57909, + /* 71259 */ 57909, 57909, 57909, 57909, 57909, 58393, 0, 0, 0, 0, 57886, 57936, 57936, 57936, 57936, 58409, 57936, + /* 71276 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59517, 59518, + /* 71291 */ 57936, 57936, 57936, 57936, 59525, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 71306 */ 57936, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 71339 */ 2792, 0, 521, 1368, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 71360 */ 521, 521, 521, 521, 521, 1395, 521, 521, 521, 521, 521, 521, 521, 521, 2875, 521, 521, 521, 521, 521, 521, + /* 71381 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, + /* 71401 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 71416 */ 58834, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 50657, 58754, 977, 57909, + /* 71431 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60895, + /* 71446 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 60903, 57936, 57936, 57936, 57936, 57936, 57936, + /* 71461 */ 57936, 57936, 57936, 57936, 57936, 58996, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 71476 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 59024, 57936, + /* 71491 */ 57936, 57936, 57936, 57936, 521, 521, 521, 521, 521, 521, 0, 57886, 57886, 57886, 57886, 57886, 57886, + /* 71508 */ 155941, 1138, 0, 301, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 1216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 71538 */ 0, 1232, 0, 0, 0, 0, 0, 0, 0, 0, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, + /* 71569 */ 521, 521, 521, 3178, 521, 3179, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 71590 */ 2469, 0, 0, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 71607 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59883, 57886, 57886, 57886, 57886, 57886, + /* 71622 */ 57886, 57886, 57886, 57886, 57886, 57886, 521, 521, 521, 2844, 521, 521, 521, 521, 521, 521, 521, 521, + /* 71640 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 71661 */ 2434, 521, 521, 57936, 57936, 57936, 57936, 57936, 57936, 60385, 57936, 57936, 57936, 57936, 57936, 57936, + /* 71677 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 71692 */ 57936, 57936, 57936, 57936, 59522, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 71707 */ 57936, 57936, 57936, 0, 0, 0, 640, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 71730 */ 521, 521, 521, 521, 521, 893, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57909, 57909, 60862, + /* 71747 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 71762 */ 57909, 57909, 57909, 57909, 57909, 60879, 57909, 60881, 57909, 57936, 58463, 57936, 57936, 57936, 1126, + /* 71777 */ 521, 521, 521, 893, 521, 0, 57886, 58477, 57886, 57886, 58312, 57886, 155941, 1138, 0, 0, 0, 0, 0, 0, 0, + /* 71798 */ 0, 0, 0, 0, 0, 1817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 0, 0, + /* 71832 */ 0, 0, 0, 331, 521, 58754, 0, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 71850 */ 57886, 57886, 57886, 57886, 57886, 57886, 57886, 59326, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 71865 */ 57886, 57886, 57886, 0, 0, 0, 0, 57909, 59908, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 71882 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 60343, 57909, 57909, 57909, 57909, 57909, 57909, + /* 71897 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 50657, 0, 57909, 57909, 57909, 57909, + /* 71912 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59426, + /* 71927 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 59961, 57909, 57909, + /* 71942 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 71957 */ 57909, 57909, 60346, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 71972 */ 521, 521, 521, 521, 2415, 521, 2417, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 71993 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2432, 521, 521, 521, 521, 521, 521, 2867, 521, 521, + /* 72014 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 72035 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 1923, 57936, 57936, 57936, 57936, 60409, 57936, 57936, 57936, + /* 72053 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, + /* 72068 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 60423, 57936, 57936, 57936, 57936, 57936, + /* 72083 */ 57936, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 3660, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 72101 */ 521, 521, 521, 521, 521, 521, 521, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, 57886, + /* 72118 */ 57886, 57886, 57886, 57886, 57886, 0, 0, 0, 2562, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, + /* 72135 */ 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57909, 57936, 57936, 57936, 61185, 57936, + /* 72150 */ 57936, 57936, 61188, 57936, 57936, 57936, 57936, 57936, 57936, 57936, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, + /* 72170 */ 0, 443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72204 */ 0, 0, 0, 0, 2310144, 0, 0, 2310144, 0, 0, 0, 0, 0, 0, 0, 2310144, 0, 2310144, 0, 0, 0, 0, 0, 0, 2310144, + /* 72229 */ 2310560, 2310560, 0, 2310144, 0, 0, 2310144, 0, 0, 0, 0, 0, 0, 2310144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72253 */ 2310144, 0, 0, 0, 0, 0, 0, 2310144, 0, 0, 0, 0, 0, 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72284 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2310144, 0, 367, 0, 0, 0, 0, 0, 0, 0, 2310560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72315 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 383, 0, 0, 0, 0, 0, 0, 2310144, 0, 0, 0, + /* 72345 */ 2310144, 0, 0, 0, 0, 0, 2310144, 0, 0, 2310144, 0, 0, 2310144, 0, 2310144, 2310144, 0, 2310144, 0, + /* 72364 */ 2310144, 2310144, 0, 0, 0, 0, 0, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 3445, + /* 72385 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1347, 521, 521, 521, 521, 521, 521, 521, + /* 72406 */ 521, 521, 521, 521, 521, 521, 521, 521, 1362, 521, 521, 2310144, 0, 0, 2310733, 2310733, 2310733, 2310733, + /* 72424 */ 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, + /* 72435 */ 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310733, 2310144, + /* 72446 */ 2310733, 2310144, 2310144, 2310733, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, + /* 72466 */ 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2310, 0, 0, 0, 0, 0, 0, 0, 0, 2318, 0, 0, 0, 0, 0, 2322, 0, + /* 72498 */ 0, 2324, 0, 0, 0, 0, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4857856, + /* 72527 */ 4874240, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 839, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 72550 */ 521, 521, 521, 521, 521, 521, 898, 57886, 57886, 57886, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72575 */ 460, 2335197, 2335197, 2335197, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 2335231, 2335231, + /* 72591 */ 2335231, 2335231, 2335231, 2335231, 2335231, 2335231, 2335231, 2335231, 2335231, 2335231, 2335231, + /* 72602 */ 2335231, 2335231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3392, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72631 */ 3399, 3400, 0, 3401, 0, 2335231, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, + /* 72653 */ 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2763, 0, + /* 72686 */ 0, 0, 0, 0, 2767, 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2359296, 0, 2359296, 2359296, 2359296, + /* 72711 */ 2359296, 2359296, 2359296, 2359296, 2359296, 2359296, 2359296, 2359296, 2359296, 2359296, 2359296, + /* 72722 */ 2359296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72754 */ 0, 2359296, 1, 24578, 3, 0, 0, 4366336, 0, 0, 0, 0, 0, 301, 302, 0, 4268032, 305, 306, 0, 0, 0, 0, 0, 0, + /* 72779 */ 0, 0, 0, 0, 0, 0, 0, 0, 2798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2813, 0, 0, 0, 0, + /* 72810 */ 2367488, 0, 0, 4268032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72841 */ 0, 367, 0, 295, 0, 0, 0, 0, 0, 6275072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 976, 0, 0, 0, 0, 0, 4857856, + /* 72869 */ 4874240, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 521, 2391, 2392, 521, 521, 521, 521, 521, 521, 521, 521, 521, + /* 72892 */ 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 2855, 521, 521, 521, 521, 521, 521, 521, 2860, 521, 521, + /* 72913 */ 521, 521, 521, 521, 521, 521, 0, 1, 24578, 3, 155941, 155941, 295, 0, 0, 0, 0, 0, 301, 302, 0, 0, 305, + /* 72936 */ 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72970 */ 0, 3134, 0, 0, 212992, 0, 0, 0, 0, 0, 4366336, 0, 0, 0, 0, 0, 0, 0, 0, 4268032, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 72999 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 0, 0, 6258688, 6447104, 0, 0, 6127616, 0, + /* 73028 */ 6348800, 5906432, 0, 5537792, 0, 0, 0, 0, 0, 5939200, 0, 0, 5677056, 6365184, 4866048, 0, 6070272, + /* 73045 */ 5545984, 5152768, 0, 0, 6144000, 4358144, 4866048, 4882432, 4358144, 4358144, 4358144, 0, 1411, 0, 0, 0, + /* 73061 */ 0, 0, 4857856, 4874240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259264, 0, 0, 0, 0, 0, 0, 0, 0, 4358144, + /* 73088 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, + /* 73099 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 900, 900, 900, 5537792, + /* 73112 */ 5545984, 5586944, 5734400, 5971968, 4358144, 6045696, 4358144, 6070272, 4358144, 4358144, 4358144, + /* 73123 */ 4358144, 6348800, 4358144, 6144000, 0, 6144000, 0, 4988928, 5005312, 0, 0, 0, 0, 5775360, 0, 0, 0, 0, 0, + /* 73142 */ 0, 0, 750, 808, 0, 0, 0, 750, 0, 0, 811, 692, 0, 0, 0, 816, 0, 0, 0, 818, 0, 0, 0, 685, 692, 0, 0, + /* 73169 */ 4358144, 5005312, 4358144, 4358144, 4358144, 5120000, 5136384, 4358144, 4358144, 4358144, 4358144, + /* 73180 */ 4358144, 4358144, 4358144, 4358144, 4358144, 4358144, 6324224, 5914624, 5914624, 0, 0, 0, 0, 0, 5513216, + /* 73195 */ 5783552, 0, 0, 0, 0, 0, 0, 656, 0, 779, 0, 0, 0, 0, 0, 0, 0, 783, 0, 0, 0, 0, 792, 0, 0, 0, 0, 0, 800, 0, + /* 73225 */ 783, 0, 0 +]; + +JSONiqParser.EXPECTED = +[ + /* 0 */ 166, 182, 211, 1104, 242, 1452, 1467, 273, 289, 712, 1117, 319, 349, 333, 365, 381, 397, 413, 195, 1866, + /* 20 */ 2240, 2243, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 429, 445, 461, 477, 2088, + /* 38 */ 226, 493, 2075, 939, 621, 523, 543, 1716, 559, 575, 591, 607, 1422, 650, 666, 1822, 697, 1565, 634, 728, + /* 58 */ 738, 754, 796, 812, 828, 844, 860, 876, 892, 908, 924, 955, 2180, 985, 681, 2211, 1015, 1044, 1028, 1060, + /* 78 */ 1090, 1133, 1320, 1149, 1165, 1551, 1181, 1197, 1213, 1229, 1259, 1904, 1365, 1375, 999, 969, 1762, 1289, + /* 96 */ 1305, 1336, 1351, 1488, 1391, 1407, 1504, 1623, 1520, 1536, 1581, 1273, 1610, 1639, 1655, 1671, 2118, 2149, + /* 114 */ 1687, 1703, 1437, 507, 1732, 1748, 1778, 1074, 780, 1809, 1838, 1854, 1890, 1920, 1936, 1952, 1968, 1984, + /* 132 */ 2000, 2016, 2032, 2061, 257, 2104, 303, 2045, 767, 1793, 1594, 2134, 1243, 2165, 2196, 2227, 2234, 1874, + /* 150 */ 1479, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 536, 2259, 2263, + /* 168 */ 2271, 2271, 2271, 2265, 2269, 2271, 2272, 2276, 2279, 2286, 2282, 2290, 2294, 2298, 2302, 2306, 2310, 2381, + /* 186 */ 2790, 2790, 4003, 4941, 2790, 2791, 2314, 3074, 2982, 2790, 2790, 2790, 2687, 2790, 5013, 2790, 2790, 2790, + /* 204 */ 2790, 2790, 2790, 2790, 2827, 2790, 2571, 3537, 4080, 2436, 2320, 2443, 2466, 2326, 2336, 2790, 2790, 2790, + /* 222 */ 2343, 2790, 2790, 2349, 3841, 2707, 2790, 2734, 2759, 2790, 2790, 2790, 2790, 4756, 2738, 2790, 2790, 2790, + /* 240 */ 2790, 4767, 2321, 2390, 2466, 2466, 2466, 2466, 2355, 2361, 2790, 2790, 2790, 2790, 2790, 2371, 4535, 2790, + /* 258 */ 2696, 4816, 2790, 2790, 2790, 2697, 4817, 2790, 2790, 2790, 4822, 4790, 2790, 2790, 3017, 3842, 2448, 2790, + /* 276 */ 2790, 3537, 4079, 4079, 4079, 4079, 4079, 4099, 2436, 2436, 2436, 2436, 2436, 2387, 2321, 2321, 2321, 2321, + /* 294 */ 2321, 2459, 2466, 2466, 2466, 2466, 2466, 2332, 2401, 2790, 2790, 2762, 4873, 2790, 2790, 2790, 2790, 2820, + /* 312 */ 4885, 2790, 2790, 2790, 2790, 3243, 4891, 3542, 4079, 4079, 4079, 4097, 2436, 2436, 2436, 2436, 2458, 2321, + /* 330 */ 2321, 2321, 2331, 2466, 2466, 2426, 2790, 2790, 3074, 4076, 4079, 4079, 2396, 2436, 2482, 2321, 2321, 2464, + /* 348 */ 2466, 2466, 2411, 2790, 2790, 4535, 2790, 4077, 4079, 4079, 2480, 2436, 2436, 2457, 2321, 2321, 2420, 2467, + /* 366 */ 2428, 2834, 3536, 4079, 2434, 2436, 2441, 2321, 2465, 2332, 2447, 4095, 4081, 2437, 2376, 2466, 2452, 4078, + /* 384 */ 2436, 2321, 2466, 4335, 4081, 2456, 2463, 2422, 4080, 2482, 2463, 2471, 4098, 2483, 2331, 2478, 2329, 2487, + /* 402 */ 2491, 2474, 2495, 2498, 2508, 2512, 2519, 2519, 2519, 2515, 2525, 2519, 2521, 2529, 2536, 2532, 2540, 2544, + /* 420 */ 2548, 2552, 2556, 2560, 4697, 2790, 2790, 2790, 4729, 2790, 4591, 2584, 2858, 2790, 2790, 2790, 3364, 2591, + /* 438 */ 2790, 3610, 2603, 2609, 2613, 2617, 2621, 2625, 2628, 2632, 2636, 4053, 2702, 2790, 2790, 2790, 2790, 3877, + /* 456 */ 2642, 2648, 2892, 4432, 2646, 2915, 2367, 2654, 3828, 2813, 2790, 2652, 3406, 2659, 2664, 2790, 2790, 2790, + /* 474 */ 2790, 2790, 2671, 4434, 2580, 4063, 2790, 2676, 2680, 2790, 2790, 2790, 3867, 2684, 2790, 2790, 2790, 3868, + /* 492 */ 2685, 2750, 2790, 2790, 2790, 2790, 2756, 2760, 2790, 2790, 2790, 2790, 2790, 2880, 2666, 2790, 2790, 2777, + /* 510 */ 4228, 3359, 2851, 4232, 4238, 2790, 4246, 4420, 4253, 3266, 4258, 4264, 3443, 2790, 4721, 2782, 2790, 2790, + /* 528 */ 2790, 3228, 3232, 2790, 2790, 2790, 2790, 4105, 2790, 2790, 2790, 2790, 2790, 2790, 3903, 3876, 2788, 4641, + /* 546 */ 2790, 2790, 2790, 3307, 2790, 2790, 2790, 4640, 2818, 2790, 2790, 3306, 2795, 2935, 2812, 2790, 2790, 2744, + /* 564 */ 2790, 3875, 3239, 2817, 2790, 4088, 2790, 2790, 2824, 2790, 3502, 2818, 2790, 3007, 2790, 3959, 3750, 2960, + /* 582 */ 2745, 3748, 2790, 4626, 2790, 4622, 2667, 2940, 2842, 3754, 2902, 4615, 2840, 3753, 3753, 3753, 4616, 2838, + /* 600 */ 4624, 4624, 3006, 3753, 2841, 2903, 2719, 3291, 3292, 3752, 2941, 2998, 3000, 2847, 2790, 2790, 2790, 2790, + /* 618 */ 2790, 3322, 3326, 2790, 2790, 2790, 3241, 4802, 2775, 4735, 2782, 2790, 2790, 2790, 4802, 3231, 2790, 2790, + /* 636 */ 2790, 2771, 4780, 3110, 4601, 2790, 3607, 2790, 3763, 3555, 2886, 2973, 2790, 3980, 2790, 3666, 2790, 4542, + /* 654 */ 2416, 2884, 2890, 2896, 2907, 4569, 2911, 2790, 2919, 5035, 2790, 2913, 2925, 2790, 4599, 2686, 2790, 3665, + /* 672 */ 2790, 4541, 3125, 4330, 4429, 2929, 2934, 2939, 3953, 2790, 2790, 4197, 3440, 2790, 2790, 2790, 2790, 4592, + /* 690 */ 3426, 2790, 2790, 2790, 2790, 2790, 4860, 2951, 2790, 3324, 2790, 2790, 3609, 3761, 2790, 4016, 2955, 2741, + /* 708 */ 2842, 2790, 4742, 2959, 2790, 2790, 4535, 2790, 2790, 4096, 4079, 4079, 4079, 4079, 2435, 2436, 2436, 2436, + /* 726 */ 2436, 2437, 2980, 2790, 2790, 2790, 2790, 2802, 2989, 2790, 2790, 2790, 2790, 2801, 2988, 2790, 2790, 2790, + /* 744 */ 4818, 4810, 3928, 2790, 3608, 3761, 2316, 2993, 3004, 2790, 3011, 3032, 2790, 2790, 2790, 4503, 3015, 2790, + /* 762 */ 2790, 2790, 2790, 3011, 3032, 2790, 2790, 2790, 2790, 2790, 3026, 4920, 2790, 2790, 2790, 2790, 3025, 4919, + /* 780 */ 2790, 2790, 2790, 2790, 2790, 4355, 3755, 4359, 2790, 2790, 3354, 3059, 4366, 4372, 4240, 2834, 4504, 3016, + /* 798 */ 2790, 2790, 3635, 3927, 3023, 3031, 4541, 3436, 3037, 3854, 3044, 2790, 2790, 3451, 3049, 2790, 2790, 3024, + /* 816 */ 3043, 2790, 2790, 2801, 3048, 2790, 2790, 3053, 3064, 3031, 4492, 3071, 2975, 3079, 2790, 3470, 3088, 2790, + /* 834 */ 3421, 3079, 2790, 2801, 3098, 2790, 4152, 3102, 3109, 2574, 3114, 3122, 2790, 4585, 3124, 2790, 3129, 2790, + /* 852 */ 4584, 3123, 2790, 4154, 3033, 3133, 4950, 3518, 3142, 4948, 4952, 3148, 2790, 4155, 3156, 3188, 3160, 3150, + /* 870 */ 4950, 3167, 3186, 3174, 3174, 3174, 3180, 3184, 3192, 3192, 3196, 3200, 3175, 3209, 3433, 3213, 3176, 3861, + /* 888 */ 3217, 3221, 4494, 3225, 3236, 3247, 2790, 2790, 2790, 2790, 3914, 2790, 2790, 3253, 3263, 3403, 3170, 3479, + /* 906 */ 3270, 3274, 3278, 3282, 3285, 3285, 3286, 2790, 2790, 3913, 2790, 3549, 3337, 3848, 3342, 3290, 3496, 2655, + /* 924 */ 3296, 3300, 3311, 3318, 4953, 3330, 4637, 2790, 3320, 2790, 2790, 3659, 2790, 2790, 3336, 2790, 2790, 4722, + /* 942 */ 2770, 2790, 2790, 2790, 2790, 4722, 2770, 2790, 2790, 2790, 2790, 2790, 4190, 3341, 3484, 3460, 3144, 3346, + /* 960 */ 3363, 3369, 2976, 3375, 2790, 2790, 2790, 3383, 3388, 2790, 2790, 2790, 3472, 2790, 2790, 2790, 4413, 2790, + /* 978 */ 4305, 3786, 4825, 2790, 2790, 2364, 2790, 3482, 3486, 2790, 3416, 3420, 2790, 4591, 3425, 2790, 2790, 2790, + /* 996 */ 2790, 2672, 3430, 2790, 2790, 2790, 3769, 2790, 2790, 2790, 2790, 3471, 3736, 2790, 2790, 2790, 2790, 3776, + /* 1014 */ 2790, 3469, 2790, 2790, 2790, 2790, 4198, 3468, 2790, 2790, 2790, 2790, 4198, 3468, 2790, 2790, 2790, 2790, + /* 1032 */ 2921, 3506, 2790, 2790, 2790, 4591, 3513, 2790, 2790, 2790, 3724, 2660, 2790, 4124, 3542, 3476, 3490, 3494, + /* 1050 */ 3634, 3500, 2790, 2921, 3506, 2790, 2790, 2790, 2790, 3512, 3517, 3522, 2833, 3204, 2790, 3527, 2790, 2790, + /* 1068 */ 2790, 4249, 2790, 2790, 2790, 3526, 2790, 2790, 2790, 3821, 2761, 2790, 2790, 2790, 2790, 4347, 2686, 2790, + /* 1086 */ 2790, 2790, 2790, 4351, 2790, 4248, 2790, 2790, 2790, 3531, 3517, 3412, 2790, 2790, 4987, 2790, 2790, 2563, + /* 1104 */ 2790, 2790, 2790, 4094, 4079, 4079, 4079, 4079, 2435, 2436, 2436, 2436, 2397, 2321, 2321, 2321, 2321, 2321, + /* 1122 */ 2464, 2466, 2466, 2466, 2466, 2393, 2405, 2790, 2790, 2833, 2790, 4987, 2790, 2790, 4422, 2790, 2790, 4126, + /* 1140 */ 4322, 3032, 2790, 4987, 2790, 3390, 4989, 2790, 2605, 2730, 2790, 3541, 3547, 4788, 3547, 2566, 2566, 2566, + /* 1158 */ 4894, 4014, 4014, 4014, 4788, 2832, 3553, 2315, 4875, 2567, 4015, 4896, 2830, 2899, 3559, 3560, 3564, 2790, + /* 1176 */ 2790, 2790, 2790, 2790, 3615, 3614, 2790, 2790, 4465, 3917, 2585, 3619, 3625, 3737, 4266, 4915, 3629, 3649, + /* 1194 */ 4306, 3633, 3639, 3647, 3653, 2790, 2790, 4691, 3658, 2790, 4464, 3916, 2790, 3663, 2722, 3670, 3674, 4193, + /* 1212 */ 4196, 2790, 3690, 2790, 2790, 2790, 2382, 3694, 2790, 2790, 2790, 2383, 3695, 2790, 2790, 2790, 2339, 3143, + /* 1230 */ 2790, 2790, 2790, 4517, 2790, 2965, 4474, 4719, 4065, 4703, 2578, 3699, 3704, 2790, 2790, 3118, 2790, 2790, + /* 1248 */ 2790, 4999, 2790, 4869, 4984, 5004, 2752, 2790, 2790, 3118, 2790, 4317, 3723, 2790, 2790, 2790, 2790, 4391, + /* 1266 */ 3711, 2790, 2790, 2790, 2790, 3716, 3847, 2790, 2790, 3259, 2790, 2790, 2790, 2790, 2790, 3258, 2783, 2790, + /* 1284 */ 2790, 2790, 2790, 3258, 2783, 3791, 2725, 2790, 3795, 2790, 2790, 3803, 2790, 2790, 3810, 2790, 2790, 2638, + /* 1302 */ 2790, 4782, 3202, 2716, 3818, 2790, 3795, 2790, 4584, 3812, 2790, 2351, 2790, 2790, 3811, 2790, 3825, 3838, + /* 1320 */ 2790, 2790, 4988, 2790, 3725, 4875, 2790, 2414, 2790, 3535, 4942, 2790, 2430, 2790, 4323, 4014, 3846, 3205, + /* 1338 */ 3847, 4039, 2790, 2713, 2790, 3852, 3683, 3067, 3104, 2790, 3685, 4305, 3685, 3915, 3915, 3105, 3683, 3683, + /* 1356 */ 3683, 3066, 3331, 3105, 3332, 3331, 3332, 3684, 3256, 2790, 2790, 3371, 3735, 2790, 2790, 2790, 2790, 3421, + /* 1374 */ 3742, 2790, 2790, 2790, 2790, 2790, 3741, 2790, 2790, 2790, 2790, 3746, 2790, 3759, 2703, 3621, 4113, 3881, + /* 1392 */ 3885, 3889, 3893, 3894, 3898, 3902, 2790, 2790, 3162, 2790, 2790, 3643, 2983, 4501, 4562, 3907, 3765, 4282, + /* 1410 */ 3921, 2790, 4554, 4022, 2790, 3925, 3932, 4556, 3936, 2790, 4242, 3941, 2790, 2855, 2784, 3943, 4375, 4402, + /* 1428 */ 2862, 2866, 2870, 2874, 2874, 2875, 2879, 2819, 3325, 2790, 2778, 2790, 4182, 4960, 4187, 2504, 5007, 4203, + /* 1446 */ 4207, 4211, 4215, 4219, 4222, 4224, 2790, 2790, 4077, 4079, 4079, 4079, 4079, 4079, 2396, 2436, 2436, 2436, + /* 1464 */ 2436, 2436, 2375, 2321, 2321, 2321, 2322, 2466, 2466, 2466, 2466, 2466, 2332, 2357, 2380, 2790, 2790, 2790, + /* 1482 */ 2790, 2790, 2790, 2790, 2790, 3204, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 3163, 2790, 2790, 2746, + /* 1500 */ 3858, 4848, 4930, 3872, 3642, 4579, 2727, 4118, 2315, 3764, 3947, 3951, 2790, 2790, 3814, 3957, 2790, 2790, + /* 1518 */ 2790, 3967, 3350, 2984, 2729, 3978, 3548, 3984, 3961, 2790, 2790, 3813, 3988, 2790, 2790, 2790, 2790, 3686, + /* 1536 */ 4027, 2790, 2790, 2790, 2790, 3257, 4051, 2790, 3074, 2790, 2790, 4299, 3993, 2790, 4007, 2790, 2984, 2790, + /* 1554 */ 3568, 3575, 4260, 3583, 3587, 3591, 3594, 3597, 3600, 3601, 3605, 2790, 2790, 2790, 4750, 2964, 2790, 2790, + /* 1572 */ 2790, 2790, 2969, 2761, 2790, 2790, 2790, 2790, 4743, 2790, 4834, 2790, 3348, 4604, 4013, 4070, 4311, 4020, + /* 1590 */ 2790, 2790, 2790, 4026, 2790, 2790, 2790, 2790, 3578, 4964, 2790, 2790, 2790, 2790, 4969, 2790, 2790, 2790, + /* 1608 */ 2790, 3579, 2790, 4031, 2790, 4037, 2790, 4043, 2789, 4333, 4571, 4021, 2790, 2790, 4362, 2790, 2790, 2790, + /* 1626 */ 2790, 3968, 4183, 2790, 2790, 4271, 3972, 4033, 2790, 2790, 4832, 2790, 2796, 2790, 4360, 3993, 2790, 2790, + /* 1644 */ 2790, 2790, 4049, 2790, 2790, 2790, 2790, 4361, 2761, 4510, 4241, 4057, 4254, 4773, 4069, 4439, 2790, 2790, + /* 1662 */ 4976, 2790, 2790, 2790, 4457, 2761, 2790, 2790, 4485, 3989, 2790, 2790, 4456, 4074, 3731, 4836, 4254, 4085, + /* 1680 */ 4092, 3707, 2790, 4060, 2790, 2790, 4060, 4147, 4132, 4140, 4134, 4843, 2501, 4130, 4921, 4921, 4921, 4291, + /* 1698 */ 4135, 4132, 4132, 4132, 4139, 4922, 4135, 4144, 4922, 4923, 4133, 4159, 4169, 4171, 4166, 4163, 4175, 4178, + /* 1716 */ 2790, 2790, 2790, 2800, 2790, 2746, 3958, 4087, 2818, 2790, 3314, 2806, 2790, 3502, 2818, 2790, 2790, 4270, + /* 1734 */ 3039, 4275, 2790, 2790, 2790, 4279, 3358, 2850, 4286, 4295, 2790, 3397, 3607, 4303, 4310, 2790, 2790, 4965, + /* 1752 */ 4315, 2790, 2790, 2790, 3378, 4321, 2790, 2790, 2790, 3379, 2790, 2790, 3472, 2790, 2790, 2790, 2345, 3847, + /* 1770 */ 2790, 2790, 3471, 3736, 2790, 4603, 2790, 4305, 2790, 4812, 4327, 4339, 2790, 2790, 3352, 3356, 2996, 4343, + /* 1788 */ 3937, 4297, 4995, 4476, 2843, 2790, 3025, 4927, 2790, 2790, 4934, 2406, 2599, 4938, 5023, 4946, 2790, 2790, + /* 1806 */ 2790, 2790, 4957, 4381, 4359, 2790, 2790, 2790, 3806, 4389, 2790, 2790, 2790, 2790, 3963, 4396, 2790, 2790, + /* 1824 */ 2790, 2946, 2790, 2790, 2790, 3712, 2947, 2790, 2790, 2790, 4234, 3973, 2790, 2790, 2790, 3962, 4395, 2790, + /* 1842 */ 2790, 2790, 2790, 3962, 4395, 3755, 4359, 2790, 3056, 3060, 4368, 3960, 4535, 4377, 2790, 2790, 2790, 2808, + /* 1860 */ 4400, 2790, 2790, 2790, 2790, 4406, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 4708, 2790, 2790, 2790, 2790, + /* 1878 */ 2790, 2790, 2790, 2790, 2790, 3152, 3203, 2790, 2790, 2790, 2790, 2790, 3963, 4411, 2790, 2790, 2790, 2807, + /* 1896 */ 4407, 4446, 2790, 4417, 2942, 4426, 3654, 3761, 2790, 2790, 3720, 2790, 2790, 2790, 2790, 2790, 3729, 2790, + /* 1914 */ 4472, 2790, 2586, 3787, 3138, 2790, 4862, 4438, 2790, 2790, 2807, 4451, 2790, 2790, 2790, 4443, 2790, 2790, + /* 1932 */ 2790, 4450, 4689, 3400, 2942, 4455, 4536, 4484, 2790, 4461, 2790, 2790, 4469, 2790, 2790, 4480, 2790, 2790, + /* 1950 */ 3779, 4523, 4489, 4498, 3654, 4483, 2790, 4508, 2790, 5040, 4002, 2790, 4514, 2790, 2790, 4521, 4525, 4529, + /* 1968 */ 4540, 4384, 4590, 4385, 2790, 4514, 2790, 4547, 4551, 2790, 3997, 4560, 4566, 3999, 4575, 3995, 4009, 4009, + /* 1986 */ 4009, 4583, 4589, 4001, 4001, 4596, 3680, 4608, 4879, 4613, 4620, 4609, 4877, 2407, 3782, 4792, 4793, 2790, + /* 2004 */ 2790, 2790, 2790, 2790, 2790, 2790, 3018, 4630, 4634, 4645, 4649, 4653, 4657, 4661, 4665, 4669, 4672, 4676, + /* 2022 */ 4679, 4683, 2790, 2790, 2790, 3017, 4695, 4542, 4761, 4701, 4577, 4906, 4707, 4712, 4716, 4727, 2790, 3832, + /* 2040 */ 2594, 3075, 4733, 3830, 4739, 2790, 2790, 2790, 3019, 4842, 2597, 4900, 4904, 4853, 4912, 2790, 2790, 2790, + /* 2058 */ 2790, 2790, 3027, 4747, 4754, 4760, 4765, 4771, 4777, 4786, 4797, 4801, 2790, 2790, 2790, 2790, 4807, 2790, + /* 2076 */ 2790, 3876, 4543, 4150, 2930, 2766, 2790, 2790, 2790, 2790, 2790, 4723, 2790, 2790, 2790, 2691, 2790, 2790, + /* 2094 */ 2790, 3094, 2695, 2701, 2790, 2790, 2790, 2790, 3508, 2790, 4840, 2406, 4847, 4803, 4111, 4852, 4857, 4914, + /* 2112 */ 2790, 2790, 2790, 2790, 2696, 4866, 2790, 2790, 3910, 2790, 2790, 4686, 4531, 4887, 3772, 3082, 3706, 2790, + /* 2130 */ 4289, 2790, 3974, 3915, 4973, 2790, 4980, 4984, 5018, 4907, 4994, 2790, 2790, 2801, 4830, 2790, 2790, 2790, + /* 2148 */ 5000, 2790, 3091, 2790, 2790, 4103, 4533, 4109, 3084, 2790, 4117, 4908, 2790, 3303, 2790, 4122, 3249, 2790, + /* 2166 */ 4999, 2790, 2790, 4828, 2790, 2790, 3571, 2790, 5011, 5017, 5022, 2790, 2790, 3799, 2790, 3384, 3389, 2790, + /* 2184 */ 2790, 5029, 3394, 2790, 2790, 2790, 2790, 4881, 2790, 3543, 3449, 3410, 3116, 5028, 2790, 3798, 2790, 2790, + /* 2202 */ 5027, 3365, 3864, 2790, 4990, 2790, 4045, 2790, 2710, 2790, 3447, 4603, 3455, 3459, 3700, 3677, 2790, 2790, + /* 2220 */ 3464, 2790, 2790, 2790, 2790, 2790, 4199, 5033, 3136, 2790, 4383, 5039, 2587, 3834, 2790, 2790, 2790, 2790, + /* 2238 */ 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2578, 2790, 2790, 2790, 2790, 2790, + /* 2256 */ 2790, 2790, 2790, 6090, 6563, 5044, 5057, 5054, 6594, 6596, 6596, 6596, 6591, 5074, 6595, 6596, 6596, 6596, + /* 2274 */ 6596, 5087, 5061, 5074, 6596, 6596, 5067, 5062, 6596, 5078, 5084, 5080, 5066, 6594, 6163, 5071, 5091, 5094, + /* 2292 */ 5094, 5094, 5095, 5099, 5099, 5103, 5107, 5114, 5111, 5118, 5122, 5134, 5137, 5129, 5130, 5127, 5125, 5141, + /* 2310 */ 5145, 6561, 6446, 5234, 5173, 5635, 5635, 5635, 5219, 5598, 5503, 5251, 5251, 5251, 5251, 5252, 5196, 5267, + /* 2328 */ 6248, 5502, 5251, 5251, 5196, 5196, 5196, 5266, 5202, 5212, 5632, 5635, 5050, 6519, 6509, 5635, 6818, 5635, + /* 2346 */ 5635, 5146, 5150, 6535, 5218, 5635, 5635, 5147, 5154, 5196, 5267, 5268, 5502, 5213, 5214, 5232, 5214, 5631, + /* 2364 */ 5635, 5146, 5151, 5635, 5155, 5619, 6297, 5635, 6532, 6536, 5244, 5250, 5251, 5251, 5251, 5295, 5631, 5633, + /* 2382 */ 5635, 5635, 5635, 5049, 6518, 5502, 5502, 5293, 5251, 5251, 5226, 5196, 5196, 6247, 5270, 5502, 5502, 5502, + /* 2400 */ 5504, 5268, 5502, 5214, 5633, 5282, 5635, 5635, 5635, 5273, 6084, 5196, 5267, 5271, 5635, 5166, 5635, 5635, + /* 2418 */ 5749, 5219, 5251, 5296, 5196, 5196, 5306, 5635, 5196, 5265, 5269, 5273, 5635, 5635, 5165, 5635, 6247, 5268, + /* 2436 */ 5502, 5502, 5502, 5502, 5251, 5502, 5251, 5251, 5251, 5186, 5193, 5272, 5635, 5635, 6261, 5635, 5298, 5635, + /* 2454 */ 5635, 6262, 5502, 5502, 5294, 5251, 5251, 5251, 5296, 5251, 5251, 5264, 5196, 5196, 5196, 5196, 5265, 5196, + /* 2472 */ 5197, 5635, 6245, 5269, 5293, 5296, 5306, 6246, 6247, 5502, 5502, 5502, 5292, 5251, 5251, 5196, 6255, 6247, + /* 2490 */ 5270, 5292, 5251, 5264, 5197, 5198, 5302, 5297, 5312, 5312, 5304, 5635, 5179, 5635, 5643, 5168, 5635, 6860, + /* 2508 */ 5329, 5590, 5333, 5336, 5339, 5343, 5362, 5419, 5347, 5351, 5404, 5419, 5419, 5419, 5419, 5368, 5384, 5393, + /* 2526 */ 5355, 5359, 5418, 5367, 5372, 5346, 5420, 5381, 5390, 5397, 5377, 5386, 5419, 5376, 5401, 5416, 5424, 5428, + /* 2544 */ 5430, 5430, 5434, 5436, 5440, 5473, 5444, 5446, 5365, 5407, 5450, 5454, 5458, 5466, 5464, 5466, 5462, 5470, + /* 2562 */ 5477, 5635, 5181, 6353, 5635, 5219, 5635, 5635, 5219, 5635, 7266, 5635, 5904, 5635, 6256, 6080, 5635, 6853, + /* 2580 */ 5635, 5635, 5169, 5672, 6820, 5635, 5635, 5635, 5275, 5635, 5635, 7112, 6346, 7172, 5635, 5220, 7282, 5635, + /* 2598 */ 5273, 5642, 5635, 5635, 6879, 5246, 5891, 5635, 5635, 5182, 6258, 5523, 6083, 6080, 5977, 6569, 5635, 6877, + /* 2616 */ 6875, 6150, 5527, 5530, 5531, 5535, 5538, 5542, 5547, 5545, 5551, 5553, 5554, 5558, 5561, 5569, 5562, 5566, + /* 2634 */ 5562, 5572, 5574, 5578, 5635, 6820, 6222, 5635, 5975, 5635, 5635, 6702, 6210, 5614, 5635, 5635, 5189, 5635, + /* 2652 */ 5635, 6773, 5656, 5635, 5635, 5635, 5307, 5668, 5635, 5635, 5635, 5315, 6779, 5662, 5666, 5635, 5635, 5635, + /* 2670 */ 5582, 5675, 5635, 5635, 5635, 5320, 5679, 6567, 5635, 5683, 5691, 5698, 5706, 5734, 5699, 5707, 6568, 5635, + /* 2688 */ 5635, 5635, 5491, 6736, 5694, 5700, 5708, 5162, 5635, 5635, 5635, 5513, 7310, 6318, 5664, 5635, 5635, 5635, + /* 2706 */ 5277, 5746, 5635, 5712, 5635, 5274, 5273, 5635, 5274, 6223, 5635, 5275, 5635, 6695, 5635, 5635, 6694, 5823, + /* 2724 */ 6568, 5635, 5322, 5635, 5635, 5910, 5635, 5635, 5635, 6618, 5236, 5635, 5717, 6739, 6745, 5731, 6568, 5635, + /* 2742 */ 5324, 5635, 6335, 5811, 5635, 5635, 5635, 5675, 5701, 5732, 5635, 5635, 5318, 5635, 5635, 6736, 6740, 6744, + /* 2760 */ 5730, 5734, 5635, 5635, 5635, 5514, 5768, 5701, 5775, 6568, 5776, 5635, 5635, 5635, 5615, 5747, 7254, 5635, + /* 2778 */ 5635, 5512, 6989, 5208, 6448, 5733, 5635, 5635, 5635, 5625, 5788, 7253, 5635, 5635, 5635, 5635, 5159, 5797, + /* 2796 */ 5635, 5635, 5635, 5638, 6319, 5635, 5635, 5635, 5640, 6027, 5799, 5635, 5635, 5635, 5646, 5650, 6805, 5635, + /* 2814 */ 5635, 5635, 5655, 5805, 5798, 5635, 5635, 5635, 5636, 5515, 5803, 6804, 6568, 5635, 5496, 5048, 5635, 5219, + /* 2832 */ 6618, 5635, 5635, 5635, 6260, 5635, 5583, 5635, 5635, 5819, 6695, 5635, 5635, 5635, 5724, 5819, 5635, 5821, + /* 2850 */ 5819, 5635, 5635, 6934, 6878, 5756, 5815, 5829, 5635, 5508, 5204, 5664, 5842, 5846, 5854, 5858, 5862, 5866, + /* 2868 */ 5866, 5868, 5870, 5870, 5870, 5870, 5874, 5874, 5874, 5874, 5877, 5879, 5635, 5635, 5635, 5738, 7116, 5885, + /* 2886 */ 5635, 6258, 6080, 5635, 5899, 5917, 5635, 5635, 5594, 5635, 5324, 5635, 5635, 6618, 5635, 6618, 5635, 5582, + /* 2904 */ 5635, 5635, 5819, 5921, 5635, 5635, 5487, 7303, 5485, 5635, 6834, 5635, 5635, 5612, 5635, 6832, 5932, 5635, + /* 2922 */ 5635, 5635, 7178, 5635, 6696, 5635, 5937, 5325, 5635, 5635, 5635, 5761, 5969, 5635, 5635, 5635, 5804, 5984, + /* 2940 */ 5635, 5635, 5635, 5819, 5635, 5850, 6339, 5992, 5606, 5635, 5635, 5635, 6696, 5635, 5938, 5635, 6256, 6930, + /* 2958 */ 6081, 6015, 5635, 5635, 5635, 5895, 6016, 5635, 5635, 5635, 5902, 5640, 5999, 6005, 6011, 6261, 5635, 6095, + /* 2976 */ 5635, 5635, 6088, 6289, 6037, 6042, 5635, 5635, 5635, 7255, 5635, 5635, 6027, 6032, 6038, 6043, 5635, 5635, + /* 2994 */ 6256, 5635, 6082, 5635, 5820, 5635, 5820, 5635, 5635, 5821, 6261, 6335, 6695, 5635, 5635, 6692, 6568, 5923, + /* 3012 */ 7028, 6032, 6058, 6033, 6059, 5635, 5635, 5635, 5908, 7128, 7132, 6613, 5635, 5635, 5635, 5923, 5517, 6786, + /* 3030 */ 6790, 5635, 6564, 5635, 5635, 5635, 5907, 6260, 6318, 5635, 5635, 5635, 7259, 6072, 6033, 6064, 5635, 5635, + /* 3048 */ 7027, 6032, 6063, 6564, 5635, 5635, 6260, 6261, 5636, 6988, 7255, 5678, 5635, 6082, 5635, 5821, 5945, 5412, + /* 3066 */ 5635, 5635, 5635, 7285, 5635, 5635, 6257, 6081, 6261, 5635, 5635, 5635, 5221, 6071, 6711, 6064, 5635, 5635, + /* 3084 */ 6838, 5635, 5589, 6617, 6072, 6712, 6065, 5635, 5635, 6844, 5635, 5635, 6851, 6568, 6070, 6710, 6063, 6564, + /* 3102 */ 5943, 6983, 5635, 5635, 5635, 7286, 5635, 5756, 5635, 5635, 5635, 5943, 6260, 6094, 5635, 5635, 5635, 7332, + /* 3120 */ 5720, 5635, 6821, 6073, 6109, 5635, 5635, 5635, 5956, 5635, 6099, 6107, 6066, 6256, 6081, 6337, 5635, 5635, + /* 3138 */ 6852, 5635, 5320, 5635, 6075, 6079, 5635, 5635, 5635, 5958, 5635, 6820, 7158, 6077, 5635, 5635, 5635, 7346, + /* 3156 */ 5635, 6131, 6821, 6074, 6076, 5635, 5635, 6820, 6708, 6127, 5635, 5635, 7156, 5634, 5905, 5635, 5228, 6053, + /* 3174 */ 5274, 6116, 6079, 5635, 6981, 6142, 7156, 5822, 5635, 7157, 6118, 5635, 5635, 6115, 6078, 5635, 5635, 6114, + /* 3192 */ 6078, 5635, 5635, 6115, 6078, 5635, 5674, 5285, 5674, 6117, 5635, 5635, 5636, 5635, 5635, 5635, 6221, 6118, + /* 3210 */ 5635, 5635, 6116, 6139, 6079, 5635, 6139, 7083, 5674, 6617, 7134, 5635, 7134, 5635, 7134, 5635, 6616, 6614, + /* 3228 */ 5635, 5635, 6878, 5764, 6744, 6449, 5734, 5635, 5287, 6614, 6614, 6614, 7253, 5635, 5674, 5635, 5635, 5512, + /* 3246 */ 5516, 5635, 6392, 6392, 5635, 5636, 5642, 6257, 5635, 6085, 7286, 5635, 5635, 5635, 6481, 6485, 5733, 6255, + /* 3264 */ 6840, 6147, 5635, 5635, 6940, 6946, 7286, 6617, 6879, 6154, 6160, 6167, 6156, 6171, 6175, 6179, 6183, 6184, + /* 3282 */ 6189, 6189, 6185, 6193, 6193, 6193, 6193, 6196, 7276, 5635, 5583, 5635, 5635, 5582, 6208, 5635, 5635, 6214, + /* 3300 */ 6197, 5278, 6228, 5635, 5635, 6975, 5635, 5635, 7001, 5769, 5797, 5308, 5635, 6961, 5635, 5635, 7001, 5770, + /* 3318 */ 6236, 5635, 5980, 6254, 5635, 5635, 5636, 5945, 5412, 5951, 5635, 5635, 6252, 5635, 5635, 5635, 6053, 5635, + /* 3336 */ 6255, 6086, 6855, 6868, 5635, 6399, 5635, 6614, 5635, 5635, 6273, 5635, 5635, 5638, 5964, 6676, 5635, 5635, + /* 3354 */ 5636, 6988, 6994, 5635, 5678, 5635, 6081, 5635, 5819, 5972, 5635, 5635, 5635, 6082, 6085, 5635, 6281, 5635, + /* 3372 */ 5635, 5640, 6573, 6802, 5206, 6295, 5635, 5635, 7007, 7016, 7041, 5635, 7144, 6290, 6803, 5207, 5207, 6296, + /* 3390 */ 5635, 5635, 5635, 6084, 6291, 5771, 6995, 5635, 5635, 7034, 5635, 5635, 7152, 5635, 5635, 7253, 5635, 5635, + /* 3408 */ 6954, 5657, 5635, 7252, 6400, 5635, 6670, 5635, 6259, 6209, 5635, 5639, 6347, 5635, 5635, 5635, 6088, 6309, + /* 3426 */ 6301, 6325, 6329, 5635, 6310, 6302, 6326, 6079, 5635, 6982, 5907, 5635, 6258, 6081, 6311, 6801, 6327, 5635, + /* 3444 */ 5635, 7257, 6960, 6255, 6086, 6856, 6869, 5635, 5635, 5640, 7027, 6400, 5635, 6735, 7277, 6693, 5635, 6671, + /* 3462 */ 5635, 5635, 5320, 6310, 6323, 6327, 6324, 6328, 5635, 5635, 5635, 6089, 5149, 5153, 6086, 6866, 6567, 5635, + /* 3480 */ 5635, 7287, 6616, 5635, 6879, 7278, 5582, 5635, 6769, 6564, 5635, 7252, 6400, 5288, 6079, 6695, 6669, 5635, + /* 3498 */ 5635, 6201, 5635, 6344, 5635, 5635, 5674, 5805, 6351, 6357, 5635, 5635, 5676, 5635, 6820, 7179, 6366, 6329, + /* 3516 */ 5635, 5260, 5635, 5635, 5635, 6122, 6399, 5635, 5635, 6671, 5635, 6259, 6365, 7255, 5635, 6021, 5635, 5635, + /* 3534 */ 5315, 5167, 5635, 5635, 5635, 6247, 6247, 6619, 5635, 5635, 5635, 6255, 6086, 5635, 6620, 5635, 5635, 5635, + /* 3552 */ 6256, 5219, 5635, 5635, 6619, 5904, 5748, 6771, 6620, 6618, 5635, 7096, 6618, 6618, 6618, 6770, 5901, 5511, + /* 3570 */ 6370, 5635, 5635, 7333, 5721, 5635, 7255, 7154, 5635, 5635, 7349, 5518, 7319, 6209, 6384, 5635, 6372, 5985, + /* 3588 */ 6719, 6390, 6396, 6404, 6408, 6411, 6413, 6417, 6418, 6418, 6422, 6424, 6425, 6429, 6429, 6429, 6429, 6430, + /* 3606 */ 6429, 5635, 5635, 5755, 5635, 5635, 5635, 5888, 5635, 6604, 7326, 5635, 5635, 5635, 6616, 5635, 6692, 5635, + /* 3624 */ 5824, 6457, 6568, 5635, 6852, 5635, 6948, 5635, 6949, 6455, 5635, 5635, 5635, 6261, 6260, 5635, 6462, 6456, + /* 3642 */ 5635, 5637, 5640, 6675, 7115, 5635, 6467, 5635, 5658, 6453, 5635, 6463, 5635, 5635, 5635, 6262, 7328, 5635, + /* 3660 */ 5635, 5635, 6267, 5277, 6615, 5635, 5635, 5755, 5818, 5635, 6819, 5635, 5635, 6494, 6473, 5635, 6477, 5635, + /* 3678 */ 5638, 6346, 5635, 5635, 7275, 5635, 5635, 7287, 5635, 5635, 5635, 6480, 5635, 6498, 6507, 6513, 6518, 6508, + /* 3696 */ 6514, 5635, 5635, 6523, 5635, 5635, 5635, 6315, 5635, 6540, 5635, 5635, 5783, 5635, 5635, 6554, 5635, 5635, + /* 3714 */ 5635, 6339, 5635, 6263, 6549, 6503, 5635, 6547, 5176, 6553, 5635, 5635, 5635, 6334, 5635, 6558, 7327, 5635, + /* 3732 */ 5635, 5784, 5635, 6578, 5153, 5635, 5635, 5635, 6439, 6088, 6574, 6579, 5154, 5635, 5635, 6583, 5635, 5635, + /* 3750 */ 5894, 5810, 5635, 5635, 5581, 5635, 5635, 5635, 5725, 6054, 5637, 5635, 5635, 5900, 5635, 5635, 5635, 5904, + /* 3768 */ 5635, 6088, 6588, 5153, 5635, 5638, 6826, 7252, 6088, 5148, 5152, 5635, 5640, 7087, 6772, 6084, 6772, 6084, + /* 3786 */ 5275, 5635, 6694, 5904, 6338, 5277, 6693, 5635, 5825, 5635, 6821, 6600, 5635, 5640, 7334, 5907, 5635, 5635, + /* 3804 */ 6822, 6224, 5635, 5644, 5648, 6102, 5635, 6821, 6223, 5635, 5635, 5635, 6479, 6762, 5824, 5635, 5321, 5635, + /* 3822 */ 5647, 7054, 7038, 5635, 7255, 5637, 5635, 5654, 5635, 5635, 5222, 7284, 5635, 5635, 5276, 5635, 5277, 6695, + /* 3840 */ 6337, 6260, 5635, 5635, 5635, 5256, 6220, 5154, 5635, 5635, 5635, 6399, 5638, 6692, 5635, 5635, 5923, 6072, + /* 3858 */ 5638, 7024, 6610, 5635, 5674, 6141, 5635, 5635, 6854, 5635, 5635, 6878, 5693, 5699, 7255, 6216, 6771, 5635, + /* 3876 */ 5677, 5635, 5635, 5635, 5587, 5911, 6624, 5628, 6630, 6638, 6641, 6645, 6648, 6656, 6656, 6656, 6656, 6651, + /* 3894 */ 6652, 6652, 6652, 6660, 6660, 6660, 6660, 6662, 6666, 5635, 5635, 5635, 6566, 6048, 5635, 5622, 5635, 5686, + /* 3912 */ 5838, 5635, 5686, 6053, 5635, 5635, 5635, 5985, 5635, 5589, 6694, 5939, 6617, 5912, 6686, 5635, 5635, 5944, + /* 3930 */ 5411, 6052, 6691, 5635, 5635, 6756, 6701, 5635, 5635, 5635, 6567, 6125, 6772, 5635, 5635, 5987, 5635, 5635, + /* 3948 */ 6723, 6729, 7278, 6695, 6734, 5635, 5635, 5991, 5605, 6749, 5635, 5635, 5635, 6615, 5635, 5635, 5635, 5645, + /* 3966 */ 5649, 5635, 6480, 6763, 6750, 5635, 6764, 5607, 5635, 5635, 5635, 5835, 5635, 6717, 5635, 5635, 6026, 6031, + /* 3984 */ 5608, 5635, 6730, 6143, 6483, 6487, 6568, 5635, 5635, 6486, 5734, 5635, 5635, 6133, 6881, 5635, 5635, 6133, + /* 4002 */ 7095, 5635, 5635, 5635, 6816, 6204, 6203, 5635, 5635, 6134, 6772, 5909, 5635, 5635, 5635, 6620, 5635, 5597, + /* 4020 */ 6879, 6795, 5635, 5635, 5635, 6685, 6480, 6484, 6488, 5635, 5635, 6616, 6615, 5635, 5635, 6204, 6202, 5274, + /* 4038 */ 6126, 5635, 5635, 6220, 6224, 7347, 6777, 5635, 5635, 6230, 5635, 5635, 6230, 6485, 5733, 5635, 5635, 6054, + /* 4056 */ 5204, 5635, 7269, 6772, 5635, 5687, 5952, 5635, 5713, 5635, 5635, 5276, 6615, 5635, 6277, 5635, 5635, 6619, + /* 4074 */ 6809, 5734, 5635, 5635, 6246, 6247, 6247, 6247, 6247, 5270, 5502, 7114, 5635, 7254, 5635, 5674, 5805, 5798, + /* 4092 */ 6276, 5748, 5635, 5635, 6255, 6247, 6247, 6247, 5269, 5502, 5502, 5835, 6053, 5635, 5635, 6318, 6568, 5635, + /* 4110 */ 7347, 7114, 5635, 5635, 6819, 5321, 5635, 6845, 5635, 5635, 5635, 6716, 5635, 6974, 5635, 5635, 6333, 5635, + /* 4128 */ 6256, 5317, 6285, 5635, 5635, 6966, 5635, 5635, 6965, 5635, 5635, 6257, 5635, 6961, 6053, 5635, 5635, 6967, + /* 4146 */ 5635, 6255, 5589, 6617, 5635, 5753, 5635, 5635, 5323, 5635, 6113, 5634, 5904, 5635, 6256, 6961, 6053, 6255, + /* 4164 */ 6965, 6965, 6965, 5635, 6967, 6965, 5635, 6965, 5635, 6258, 6967, 6965, 7286, 6269, 5741, 5741, 5741, 6053, + /* 4182 */ 6849, 5635, 5635, 5635, 6754, 5635, 7342, 6334, 5635, 5780, 6568, 5635, 5492, 6542, 6492, 5635, 5635, 5635, + /* 4200 */ 6307, 6311, 6324, 6936, 6083, 6873, 5319, 6886, 6892, 6890, 6896, 6900, 6900, 6902, 6908, 6906, 6906, 6908, + /* 4218 */ 6916, 6915, 6912, 6920, 6921, 6921, 6921, 6921, 6925, 6928, 5208, 5635, 5635, 6855, 6526, 6380, 5635, 5635, + /* 4236 */ 6340, 5993, 6565, 5635, 5635, 6617, 5635, 5635, 5635, 6706, 5635, 6239, 5635, 5635, 6364, 7154, 5635, 6242, + /* 4254 */ 5635, 5635, 5637, 5965, 5635, 6953, 5635, 5635, 6376, 5635, 5635, 6958, 5635, 5635, 6443, 5589, 7258, 5635, + /* 4272 */ 5635, 5635, 6760, 5635, 6971, 5635, 6979, 6987, 6993, 6329, 5635, 5832, 6260, 6680, 6878, 5791, 6543, 5635, + /* 4290 */ 5836, 5635, 5635, 6284, 5635, 5635, 6567, 5635, 6616, 5635, 5635, 6469, 6482, 6999, 5635, 5639, 5635, 5635, + /* 4308 */ 5635, 6461, 5725, 5635, 5635, 5635, 6768, 7012, 7040, 5635, 5635, 6547, 6501, 7041, 5635, 5635, 5635, 6769, + /* 4326 */ 5635, 7008, 7017, 7042, 5635, 5848, 5748, 6255, 5483, 5635, 5635, 6245, 6247, 5635, 7021, 5933, 6053, 5904, + /* 4344 */ 6935, 6879, 5792, 5644, 5648, 7055, 7046, 5645, 7052, 7056, 7047, 5646, 7053, 7057, 7048, 5724, 5635, 5635, + /* 4362 */ 5635, 6783, 6486, 5734, 5820, 5635, 5904, 6935, 6879, 5748, 6879, 5793, 5635, 6566, 5635, 5757, 5635, 5635, + /* 4380 */ 5724, 5756, 5635, 5277, 5635, 5635, 5635, 7176, 7094, 7061, 7048, 5635, 5635, 6548, 6502, 5649, 6103, 7067, + /* 4398 */ 7048, 5635, 7061, 6564, 5635, 5635, 6568, 5635, 5646, 5650, 7066, 7124, 5635, 7065, 7123, 5635, 5635, 6584, + /* 4416 */ 5635, 5635, 6987, 7154, 5635, 5881, 5635, 5635, 6365, 5635, 6878, 5318, 6615, 5635, 5899, 5962, 5635, 5602, + /* 4434 */ 5635, 5635, 5188, 5635, 7077, 5635, 5635, 5635, 6794, 5647, 7076, 7069, 5635, 5900, 6053, 5726, 5646, 7075, + /* 4452 */ 7068, 5635, 5635, 6879, 5635, 5635, 5635, 6799, 6809, 5635, 7176, 7081, 5635, 5901, 7114, 6434, 5635, 5635, + /* 4470 */ 7176, 7089, 5635, 5902, 5511, 6435, 5635, 5635, 5757, 5274, 5635, 6088, 7088, 5635, 5902, 5635, 5635, 5635, + /* 4488 */ 6800, 5635, 6088, 7154, 5635, 5903, 5635, 5906, 6616, 6614, 5820, 5904, 6880, 5635, 5908, 5635, 5635, 5924, + /* 4506 */ 7029, 6033, 5640, 7178, 5635, 5635, 6614, 5635, 5635, 6088, 7093, 5635, 5908, 6605, 7327, 7177, 7095, 5635, + /* 4524 */ 5901, 5902, 5635, 5640, 6218, 5821, 6880, 5635, 5635, 6615, 6616, 5635, 5635, 6259, 5635, 5635, 6259, 5635, + /* 4542 */ 5903, 5635, 5635, 5635, 5745, 5640, 7178, 6772, 5238, 5635, 7100, 6880, 5635, 5913, 6687, 5635, 6700, 5635, + /* 4560 */ 5635, 6135, 5635, 5635, 6681, 5635, 5635, 6820, 7094, 5635, 5928, 5635, 5635, 5608, 6878, 5635, 7100, 6881, + /* 4578 */ 5635, 7115, 5635, 5635, 7254, 7106, 5635, 5635, 5635, 6821, 6073, 6820, 7275, 5635, 5635, 5635, 6820, 6309, + /* 4596 */ 6133, 7095, 6880, 5635, 5943, 5410, 5949, 5635, 5635, 5635, 7252, 5635, 5635, 7120, 5635, 5635, 7273, 7120, + /* 4614 */ 6878, 5635, 5635, 6693, 5635, 5635, 5635, 7274, 5635, 5635, 6695, 5635, 5635, 5819, 5809, 5635, 7138, 5635, + /* 4632 */ 6963, 5905, 6209, 5635, 6961, 5635, 5979, 6253, 5635, 5635, 7002, 6744, 5798, 5240, 5635, 6021, 5499, 7109, + /* 4650 */ 5673, 5635, 7142, 5635, 6962, 6021, 6964, 6625, 6022, 7174, 7271, 7149, 7162, 7166, 7170, 7183, 7187, 7191, + /* 4668 */ 7194, 7202, 7197, 7198, 7206, 7208, 7212, 7218, 7217, 7213, 7222, 7232, 7232, 7225, 7231, 7227, 7236, 7240, + /* 4686 */ 5635, 5985, 5837, 5635, 5723, 5635, 5635, 6602, 6606, 7128, 7132, 5904, 5635, 5910, 5481, 7100, 7241, 5635, + /* 4704 */ 5635, 6695, 5824, 6360, 5635, 5635, 5635, 6853, 6259, 6079, 5635, 6529, 7245, 7247, 7251, 5635, 5986, 5635, + /* 4722 */ 5635, 5763, 6743, 5702, 5776, 5635, 7263, 5635, 5635, 6725, 5492, 7283, 7255, 5635, 5635, 6737, 5769, 7291, + /* 4740 */ 5635, 7292, 5635, 5997, 6003, 6009, 6015, 5635, 7296, 7130, 5635, 5998, 6004, 6010, 5907, 5903, 5635, 5635, + /* 4758 */ 6737, 6741, 5635, 6086, 5641, 5635, 5635, 5635, 7100, 5635, 5635, 6738, 6742, 6879, 5635, 7114, 5635, 7252, + /* 4776 */ 5635, 5635, 6853, 6855, 5635, 6020, 5635, 5635, 5635, 7254, 5635, 6337, 5635, 5635, 6770, 5635, 6772, 5635, + /* 4794 */ 6086, 6084, 5635, 5635, 6259, 5635, 7301, 6386, 5635, 5635, 5635, 6878, 5635, 5512, 7309, 6633, 5635, 6047, + /* 4812 */ 5635, 5635, 5635, 7256, 7310, 6634, 5635, 5635, 5635, 6882, 5635, 7307, 7311, 6338, 6853, 5320, 5635, 5640, + /* 4830 */ 7334, 5722, 5635, 5635, 6821, 6126, 5635, 5635, 6021, 6772, 7128, 7132, 5258, 5635, 5635, 5635, 6966, 5642, + /* 4848 */ 5635, 5635, 7101, 5635, 6850, 5635, 6336, 5635, 6260, 5635, 6261, 7102, 5985, 6334, 5635, 5635, 5644, 7073, + /* 4866 */ 7315, 7319, 6338, 5635, 6080, 5906, 5903, 7316, 6788, 5635, 5635, 6772, 5635, 6084, 7095, 5635, 5635, 5686, + /* 4884 */ 5635, 7317, 6789, 5635, 5635, 6813, 5635, 7318, 6790, 6770, 6769, 5635, 5635, 6619, 5635, 6769, 6820, 5635, + /* 4902 */ 5635, 6881, 7115, 5635, 6852, 6855, 5635, 5635, 5635, 6845, 5635, 6718, 6694, 5635, 5635, 5635, 6942, 6786, + /* 4920 */ 6790, 5635, 5635, 5635, 6967, 5635, 5635, 6786, 6790, 6770, 6769, 7254, 5635, 7101, 5635, 7297, 7132, 5258, + /* 4938 */ 7113, 5635, 5635, 6819, 5635, 5635, 5635, 5166, 6379, 5048, 5635, 5635, 6821, 6074, 6078, 5635, 5635, 5635, + /* 4956 */ 5978, 7350, 5519, 7320, 5635, 6081, 5678, 6626, 7319, 5635, 5635, 5635, 7006, 7348, 5517, 6786, 6617, 5635, + /* 4974 */ 6772, 6771, 5635, 6084, 6303, 6488, 5635, 7324, 5906, 5903, 5635, 6085, 5641, 5635, 6084, 6352, 5635, 5635, + /* 4992 */ 5635, 6231, 5047, 5635, 5635, 5635, 7033, 5635, 7348, 7335, 5903, 5635, 6879, 5635, 6851, 5678, 5909, 6855, + /* 5010 */ 6864, 5635, 7340, 5635, 5635, 6829, 5635, 6087, 5635, 6881, 5635, 6852, 6819, 6850, 5635, 5635, 6261, 7332, + /* 5028 */ 7336, 5635, 5635, 5635, 7145, 5635, 6232, 5635, 5635, 6833, 5635, 5274, 5635, 5635, 5635, 7177, 0, 0, + /* 5046 */ 1075838976, 2097152, 16384, 0, 0, 0, 62, 64, 4194560, 4196352, 270532608, 2097152, 2097152, 268435456, + /* 5060 */ 4194432, 541065216, 541065216, 541065216, 541065216, 4194304, 4194304, 4196352, -1606418432, -1606418432, + /* 5070 */ 541065216, 541065216, 4194304, 4198144, 541065216, 541065216, -2143289344, -2143289344, 8425488, 4194304, + /* 5080 */ 4194304, 4194304, 541065216, 37748736, 4194304, 541065216, 4194304, 4194304, 4194432, 37748736, + /* 5090 */ -1606418432, 742391808, 239075328, 775946240, 171966464, 171966464, 171966464, 171966464, 239075328, + /* 5099 */ 171966464, 775946240, 239075328, 239075328, 775946240, 775946240, 775946240, 4718592, 64, 4718592, 2097216, + /* 5110 */ 4720640, 4194400, 4194368, -2142763008, 541589504, 4194368, 541589504, 541589504, 541065280, 4194368, + /* 5120 */ 4194368, 541065312, 541065280, -2143289280, 4194368, -2143285440, -1605890240, -2142761152, -2109731008, + /* 5129 */ -1606414528, -2143285440, -2143285440, -2143285440, -1605890240, -1606414528, -1606414528, -2143285440, + /* 5137 */ -2143285408, -2143285440, -2143285440, -2142761152, 776470528, -1908404416, 775946304, 775946304, + /* 5145 */ -1908404416, 2, 4, 8, 16, 512, 1024, 16777216, 33554432, 402653184, 0, 0, 0, -1979711488, 0, 8192, 8392704, + /* 5162 */ 0, 0x80000000, 16777216, 0, 0, 1536, 32768, 0, 0, 128, 196608, 0, 16384, 1536, 1792, 8192, 16384, 131072, + /* 5180 */ 131072, 0, 0, 64, 1536, 32768, 96, 96, 0, 0, 0x80000000, 16, 0, 0, 1536, 64, 524352, 524352, 524352, + /* 5199 */ 524352, 0, 524288, 64, 64, 262144, 1048576, 4194304, 16777216, 33554432, 67108864, 134217728, 536870912, 0, + /* 5213 */ 128, 128, 128, 128, 2048, 1536, 1024, 0, 0, 0, 15, 208, 15360, 96, 96, 0, 64, 64, 16392, 64, 1048576, 128, + /* 5235 */ 128, 0, 256, 8192, 0, 8192, 0, 33554432, 0, 1024, 1024, 0, 0, 0x80000000, 65536, 32, 96, 96, 96, 96, 64, 0, + /* 5257 */ 8388608, 4096, 0, 0, 8192, 2097152, 0x80000000, 96, 524352, 524352, 524352, 524288, 524288, 524288, 64, 64, + /* 5273 */ 64, 0, 0, 0, 8, 0, 0, 0, 11, 64, 64, 128, 2048, 0, 4096, 0, 0, 131072, 128, 64, 64, 64, 96, 96, 96, 524352, + /* 5299 */ 524352, 524288, 64, 524288, 64, 64, 96, 524352, 0, 0, 0, 18, 33554432, 64, 96, 524352, 524288, 0, 64, 0, + /* 5319 */ 2097152, 0, 0, 4, 16, 0, 0, 16, 8388608, 0, 0, 4096, 536870912, 1073741824, 0, 4, 32, 32, 4, 1073872896, + /* 5339 */ 32, 40, 96, 160, 1056, 262176, 1048608, 2097184, 32, 32, 32, 524320, 32, 1073872896, 40, 262176, 1120, 96, + /* 5357 */ 4195360, 6291488, 2097184, 2097184, 4194336, 4194336, 536870944, 32, 32, 40, 262176, 32, 32, 40, 262184, + /* 5372 */ 1120, 96, 6292512, 4195360, 56, 262184, 40, 262184, 40, 0, 4, 262184, 40, 40, 40, 40, 4195104, 6292512, + /* 5390 */ 4196128, 32, 262184, 34, 34, 40, 48, 42, 32, 32, 327155712, 34, 1056, 1056, 32, 96, 32, 32, 41, 262184, 32, + /* 5411 */ 64, 512, 2048, 16384, 67108864, 42, 1056, 4194336, 32, 32, 32, 32, 56, 2098208, 42, 4457568, -326784344, + /* 5428 */ -322851160, -322851160, -322698144, -322698144, -322698144, -322698144, -322695456, -322695456, -322695456, + /* 5437 */ -322695456, -322597152, -320598176, -322597152, -322597144, -321548576, -320598168, -321548568, -322597144, + /* 5446 */ 32, 0, 96, 32, 42, 224, 40, 262176, 42, 106, 293601323, 293601323, 293863467, 293699627, 293617707, + /* 5461 */ 293716011, 297896507, 293964347, 293702267, 297896507, 293702203, 293702203, 293702203, 293702203, + /* 5470 */ 293964347, 297896507, 297896507, -322597144, -322588952, -321548568, -322588952, -37744981, -322597144, + /* 5479 */ -321548568, -37482773, 0, 131072, 1048576, 2097152, 0, 0, -1744830464, 0, -1744830464, 0, 318767104, 0, 0, + /* 5494 */ 0, 48, 0, 1, 285212672, 0, 0, 2048, 64, 64, 64, 64, 32, 96, 0, 32, 64, 65536, 0, 0, 1, 2, 12, 16, 64, 128, + /* 5520 */ 1024, 2048, 4096, 0, 2, 65536, 262656, 5242880, -1842937664, 201330721, 201330721, -2111369023, + /* 5532 */ -2111369023, -2111369023, -2111369023, -2111369023, -2111369023, -2111360575, -2111369023, -2111369023, + /* 5540 */ -1977151295, -1977151293, -1910042431, -1893265183, -2111368509, -1893265183, -1893265183, -1893265183, + /* 5548 */ -1893265183, -2111368509, -1893265183, -1893265183, -553689472, -553656704, -553689472, -553689472, + /* 5556 */ -553656704, -553656704, -553656704, -553656704, -553656704, -553656704, -553656672, -553656672, -553656672, + /* 5565 */ -553656672, -553656672, -553656670, -553656608, -553656672, -553656664, -553656664, -553656672, -553656670, + /* 5574 */ -553656672, -553656672, -536912159, -553656671, -536879391, -536879391, -536879391, 0, 0, 2048, 4194304, 0, + /* 5586 */ 0, 0, 262656, 0, 0, 0, 536870912, 1073741824, 458880, 2097152, -1845493760, 0, 0, 4096, 2097152, 0, 0, 1, + /* 5604 */ 4096, 201326592, 805306368, -1073741824, 0, 0, 0, 24576, 471424, 0, -2113929216, 0, 0, 0, 220, -1912602624, + /* 5620 */ 18874368, 463488, 0, 0, 9216, 0, 0, 16384, 8192, 8192, 32768, 2048, 2048, 2048, 2048, 0, 0, 0, 0, 1, 0, 0, + /* 5642 */ 0, 2, 0, 0, 0, 3, 4, 16, 224, 256, 512, 32768, 0, 1040000, 15728640, -570425344, 0, 0, 0, 254, 4194304, + /* 5663 */ 16777216, 33554432, 268435456, 536870912, 0x80000000, 0, 0, -570425344, 32505856, 2097152, 301989888, 0, 0, + /* 5676 */ 0, 512, 0, 0, 0, 256, 12288, 0, 167772160, 234881024, 0, 0, 16384, 32768, 50331648, 0, 128, 512, 7168, + /* 5695 */ 16384, 32768, 196608, 16384, 196608, 786432, 1048576, 2097152, 4194304, 8388608, 33554432, 2097152, + /* 5707 */ 4194304, 8388608, 503316480, 1073741824, 0x80000000, 0, 4096, 201326592, 0, 0, 0, 167772160, 234881024, + /* 5720 */ 128, 1024, 4096, 8192, 0, 0, 8192, 268435456, 0, 0, 4194304, 8388608, 234881024, 268435456, 1073741824, + /* 5735 */ 0x80000000, 0, 0, 1048576, 4194304, 33554432, 268435456, 268435456, 268435456, 268435456, 0, 128, 131072, + /* 5748 */ 2097152, 0, 0, 0, 520, 0, 201326592, 0, 0, 0, 1073741824, 0, 0, 0, 134217728, 128, 512, 3072, 16384, 32768, + /* 5768 */ 3072, 16384, 131072, 524288, 1048576, 4194304, 16777216, 33554432, 201326592, 268435456, 1073741824, + /* 5779 */ 0x80000000, 1048576, 4194304, 268435456, 536870912, 131072, 0, 0, 131072, 0, 131072, 2097152, 0, 0, 16384, + /* 5794 */ 2097152, 0, 0, 2097152, 4194304, 134217728, 0x80000000, 0, 0, 0, 512, 3072, 131072, 524288, 1048576, + /* 5809 */ 131072, 524288, 4194304, 0x80000000, 0, 0, 0, 16384, 16384, 18432, 0, 0, 0, 2048, 0, 0, 4096, 1048576, 0, + /* 5828 */ 0, 67108864, 1073741824, 0x80000000, 0, 0, 29696, 0, 0, 32768, 50331648, 268435456, 0x80000000, 0, 0, 1, 1, + /* 5845 */ 18952, 1024, 0, 65, 1024, 0, 4096, 32768, 0, 1024, 18952, 65, 268436480, 2101248, 524288, 1024, 19017, + /* 5862 */ -1744550912, 8388624, 8388624, 8388624, -1739308032, -1739308032, -1739308032, -1739308032, -1736162288, + /* 5871 */ -1736162288, -1736162288, -1736162288, -7868466, -7868466, -7868466, -7868466, -7868450, -7868450, + /* 5880 */ -7868450, 0, 0, 0, 1610612736, 1024, 0, 2101248, 0, 0, 262144, 65536, 262144, 262144, 0, 0, 2048, 131072, + /* 5898 */ 524288, 585, 0, 0, 0, 8192, 0, 0, 0, 4096, 0, 0, 0, 32, 0, 0, 0, 44, 64576, 0, 1024, 278528, -1744830464, + /* 5921 */ 5521408, -1744830464, 0, 0, 2, 12, 64, 0, 1040, 8667136, -1744830464, -67108864, 0, 0, 0, 9728, 0, 2014, 0, + /* 5940 */ 0, 0, 13312, 0, 1, 4, 8, 32, 64, 16384, 67108864, 134217728, 268435456, 0x80000000, 0, 0, 520, 1024, 0, 0, + /* 5960 */ 2, 16, 0, 278528, 0, 0, 2, 67108864, 16384, 0, 5242880, 0x80000000, 0, 0, 327680, 0, 0, 328192, 0, 0, 0, + /* 5981 */ 118, 577408, 22020096, 1040, 0, 0, 0, 16384, 0, 67108864, 1998, 518144, 8388608, 50331648, 201326592, + /* 5996 */ 805306368, 0, 2, 204, 768, 1024, 10240, 1024, 10240, 16384, 32768, 458752, 8388608, 458752, 8388608, + /* 6011 */ 50331648, 67108864, 134217728, 805306368, 134217728, 805306368, 1073741824, 0x80000000, 0, 220, 0, 0, 0, + /* 6024 */ 32768, 33554436, 2, 12, 192, 768, 1024, 1024, 2048, 8192, 16384, 32768, 458752, 32768, 458752, 50331648, + /* 6040 */ 67108864, 134217728, 134217728, 805306368, 1073741824, 0, 0, 208, 0, 0, 0, 34816, 67108864, 268435456, 0, + /* 6055 */ 0, 0, 65536, 458752, 50331648, 67108864, 805306368, 1073741824, 458752, 50331648, 67108864, 536870912, + /* 6067 */ 1073741824, 0, 0, 4, 8, 64, 128, 512, 2048, 196608, 262144, 33554432, 536870912, 0, 0, 0, 262144, 0, 0, 0, + /* 6087 */ 64, 0, 0, 2, 4, 8, 262144, 0, 1048576, 4194304, 0, 0, 4, 8, 128, 512, 1024, 32768, 65536, 131072, 2048, + /* 6108 */ 196608, 262144, 50331648, 536870912, 1073741824, 1, 4, 8, 512, 2048, 131072, 33554432, 536870912, 0, 0, 4, + /* 6124 */ 8, 512, 2048, 8192, 32768, 8388608, 0, 524288, 262144, 0, 0, 4, 64, 128, 8388608, 0, 512, 2048, 131072, + /* 6143 */ 536870912, 0, 0, 4194304, 8192, 2097152, 268435456, 0x80000000, 16, 33554432, -2147418112, 537395200, + /* 6155 */ 537395200, 0, 4196352, 537427968, 4196352, 0, 537395200, 4196352, 4196352, 276901888, 8540160, -1606418432, + /* 6167 */ 32768, 537395200, 4196352, 1082130432, 51380242, 51380242, 51380242, 22022147, 22349827, 22349827, + /* 6177 */ 22349827, 22366219, 22349843, 22349827, 22349827, 22366219, 22349827, 55576594, 55576594, 55576594, + /* 6187 */ 55576594, 1062785014, 324012114, 55576594, 55576594, 55576594, 1062785014, 1062785014, 1062785014, + /* 6196 */ 1062785014, 0, 0, 0, 329728, 557056, 0, 0, 0, 393216, 0, 0, 17825792, 33554432, 0, 0, 0, 462976, 3, + /* 6215 */ 22020096, 0, 0, 4, 134217728, 0, 0, 8, 16, 512, 402653184, 0, 0, 346112, 19, 0, 0, 8, 64, 0, 0, 0, 82, + /* 6238 */ 301989888, 0, 0, 393232, 0, 0, 393240, 0, 0, 524288, 524288, 524288, 524288, 0, 577408, 22020096, + /* 6254 */ 1040187392, 0, 0, 0, 524288, 0, 0, 0, 16, 0, 0, 0, 6, 16384, 32768, 268435456, 0, 268435456, 0, 1048576, + /* 6274 */ 16777216, 33554432, 0, 0, 524288, 1048576, 2097152, 0, 80, 268435456, 0, 0, 524288, 536870912, 0, 112, 128, + /* 6291 */ 256, 3584, 16384, 32768, 134217728, 805306368, 0, 0, 0, 1007232, 256, 1536, 2048, 16384, 32768, 262144, 0, + /* 6308 */ 4, 16, 32, 64, 128, 256, 1536, 0, 16, 33554432, 0, 0, 1048576, 4194304, 0x80000000, 1536, 16384, 32768, + /* 6326 */ 524288, 4194304, 33554432, 134217728, 536870912, 0, 0, 0, 32768, 0, 0, 0, 1048576, 0, 0, 0, 1998, 518144, + /* 6344 */ 1, 0, 0, 65536, 262144, 0, 0, 256, 1536, 32768, 524288, 0, 0, 4194304, 134217728, 536870912, 0, 0, 1114112, + /* 6363 */ 1073741824, 16, 64, 1536, 32768, 524288, 4194304, 67174400, 33554432, 1073741824, 0, 67174400, 0, 0, 16384, + /* 6378 */ 1073741824, 0, 0, 2097152, 0, 1572864, 0, 1073741824, 16384, 0, 4194304, 0, 8, 0, 131072, 0, 131072, 0, 8, + /* 6397 */ 131072, 131072, 134217728, 4096, 0, 8, 0, 8, 131072, 4194304, -2146430976, 131072, 134217736, 16908320, + /* 6411 */ 547389524, 547389524, 555909216, 555909216, 555909216, 555909216, 564297840, 564297844, 564297844, + /* 6420 */ 564297844, 564297844, 564297844, 564297844, 1001055742, 1001056254, 1001055742, 1001055742, 1001056254, + /* 6429 */ 1001056254, 1001056254, 1001056254, 1001056254, 1001055742, 1, 0, 67108864, 1073741824, 0, 84, 2129920, + /* 6441 */ 8388608, 536870912, 0, 96, 2260992, 0, 0, 2097152, 4194304, 8388608, 134217728, 268435456, 1280, 2809856, + /* 6455 */ 58720256, 939524096, 0, 0, 0, 1052672, 0, 254, 1792, 2809856, 58720256, 939524096, 0, 939524096, 0, 0, 12, + /* 6472 */ 16, 32768, 2097152, 8388608, 536870912, 0, 163840, 0, 0, 12, 32, 64, 1024, 2048, 57344, 262144, 50331648, + /* 6489 */ 268435456, 1073741824, 0x80000000, 0, 52, 0, 0, 20, 64, 62, 64, 128, 1280, 8192, 16384, 131072, 524288, + /* 6506 */ 58720256, 24576, 163840, 524288, 2097152, 58720256, 402653184, 58720256, 402653184, 536870912, 0, 0, 64, + /* 6519 */ 128, 1792, 24576, 163840, 4, 16, 8388608, 0, 0, 2113536, 0, 0, 3735552, 0, 0, 8388608, 8388608, 4096, 4096, + /* 6538 */ 4096, 4096, 0, 48, 25165824, 0, 0, 0, 1572864, 0, 6, 56, 128, 1792, 8192, 524288, 58720256, 402653184, 0, + /* 6557 */ 0, 32, 128, 256, 262144, 262144, 1048576, 1073741824, 0, 0, 0, 0x80000000, 0, 0, 0, -2147483646, 4, 24, 32, + /* 6576 */ 128, 1792, 1280, 8192, 524288, 16777216, 33554432, 0, 262144, 33554432, 134217728, 0, 8, 16, 1024, + /* 6591 */ 16777216, 4194432, 3145728, 541065216, -2143289344, 4194304, 4194304, 4194304, 4194304, 16, 402653184, 0, + /* 6603 */ 0, 32, 128, 256, 2048, 262144, 524288, 4, 16384, 65536, 67108864, 0, 0, 0, 131072, 0, 0, 0, 1024, 0, 0, + /* 6624 */ 32768, 8192, 0, 2048, 0, 32, 8192, 3670016, 2048, 8192, 196608, 1048576, 0, 0, 34816, 9216, 4096, 4096, + /* 6642 */ 29696, 29712, 29712, 29840, 29712, 29712, 29840, 536900624, 4224144, 144384, -754647956, -754647956, + /* 6654 */ -754647956, -754647956, 144384, 144384, 144384, 144384, -754647940, -754647940, -754647940, -754647940, + /* 6664 */ -754516884, -754647956, -754516884, -754516884, -754516884, 0, 0, 8388608, 1073741824, 0, 0, 67108864, 12, + /* 6677 */ 16384, 0, 65536, 29824, 0, 0, 0, 3670016, 44, 64576, 319029248, -1073741824, 0, 0, 60, 0, 0, 0, 4194304, 0, + /* 6697 */ 0, 0, 2014, 0, 319160320, 0, 0, 0, 5242880, 0, 4, 8, 256, 512, 2048, 8192, 16384, 458752, 50331648, 0, + /* 6717 */ 524288, 3145728, 0, 0, 16384, 8, 0, 28672, 0, 0, 32, 524288, 0, 16, 0, 128, 0, 12288, 131072, 0, 0, 128, + /* 6739 */ 512, 3072, 4096, 16384, 32768, 131072, 524288, 1048576, 2097152, 4194304, 262144, 318767104, -1073741824, + /* 6752 */ 0, 0, 0, 28, 0, 0, 60, 64576, 28, 32, 64, 1024, 2048, 61440, 262144, 318767104, 24576, 0, 0, 0, 8388608, 0, + /* 6774 */ 0, 0, 1040000, 67108864, 16384, 0, 65536, 262144, 1048576, 0, 8, 64, 2048, 4096, 8192, 65536, 131072, + /* 6791 */ 1048576, 0, 0, 128, 536870912, 4194304, 131072, 0, 0, 64, 2048, 16384, 32768, 524288, 1048576, 4194304, + /* 6807 */ 134217728, 0x80000000, 32768, 262144, 50331648, 268435456, 0, 32768, 8388608, 0, 0, 16777216, 16777216, 0, + /* 6821 */ 0, 0, 4, 8, 16, 2, 67108864, 0, 65536, 201326592, 0x80000000, 0, 0, 1998, 59238400, -67108864, 0, 524288, + /* 6839 */ 1048576, 0, 0, 64, 256, 32768, 50331648, 268435456, 0, 0, 1, 256, 0, 0, 0, 16777216, 0, 0, 256, 0, 8192, 0, + /* 6861 */ 256, 262144, 2113536, 2097152, 135790592, 0, 256, 8192, 2097152, 0, 0x80000000, 0, 32768, 2097152, 0, + /* 6876 */ 0x80000000, 5242880, 0, 0, 0, 128, 0, 0, 0, 208, 131073, 0, 0, 131073, 0, 135790592, 131073, 4, 0, 131073, + /* 6896 */ 393233, 1610612736, 1610612736, 1610612736, 393241, 393241, 393241, 393241, 805707793, 805707793, + /* 6906 */ 1879449617, 805708049, 1879449617, 1879449617, 1879449617, 1879449617, -483948553, -475559945, -475559945, + /* 6915 */ -483948553, -483948553, -475559945, -483948553, -475559945, -483948553, -475559945, -475559945, -475559945, + /* 6924 */ -475559945, -475559945, -215504905, -475559945, -207116297, -207116297, 0, 0, 72, 0, 4096, 4194304, 32768, + /* 6937 */ 0, 0, 256, 401424, 805306368, 0, 0, 112, 25165824, 0, 1879048192, 0, 0, 116, 0, 0, 401680, 0, 0, 0, + /* 6957 */ 32505856, 7, 19367920, -503316480, 0, 0, 0, 33554432, 0, 0, 33554432, 268435456, 0, 0, 0, 19376112, + /* 6973 */ -234881024, 0, 0, 50331648, 268435456, 0, 27764720, -234881024, 0, 0, 512, 2048, 0, 0, 1, 2, 4, 32, 524288, + /* 6992 */ 1048576, 524288, 1048576, 33554432, 67108864, 134217728, 805306368, 0, 24, 0, 0, 512, 3072, 16384, 0, 7, + /* 7008 */ 16, 480, 1536, 32768, 1536, 32768, 65536, 2490368, 32768, 65536, 10878976, 16777216, 33554432, 0, 9728, + /* 7023 */ 268435456, 0, 0, 67108866, 12, 64, 128, 512, 1024, 2048, 0, 16, 393216, 0, 0, 393216, 2097152, 16777216, + /* 7041 */ 33554432, 536870912, -1073741824, 0, 0, 10485760, 16777216, 33554432, 1073741824, 0x80000000, 0, 16, 224, + /* 7054 */ 256, 1536, 32768, 65536, 393216, 10485760, 16777216, 131072, 262144, 2097152, 16777216, 32768, 131072, + /* 7067 */ 262144, 2097152, 8388608, 16777216, 0, 0, 4, 16, 224, 512, 32768, 131072, 2097152, 16777216, 192, 32768, 0, + /* 7084 */ 0, 512, 4096, 4, 16, 192, 32768, 8388608, 0, 16, 64, 128, 8388608, 0, 0, 1024, 0, 4, 0, 0, 0, 3145728, 0, + /* 7107 */ 4, 128, 0, 0, 268435456, 2, 0, 0, 65536, 0, 0, 0, 65, 0, 64, 128, 8388608, 16777216, 1073741824, 0, 0, 512, + /* 7129 */ 2048, 32768, 262144, 524288, 8388608, 0, 0, 512, 131072, 524288, 8388608, 33554432, 0x80000000, 33554432, + /* 7143 */ 33554432, 0, 2, 4, 112, 128, -2113929216, 100663296, 100663296, 2, 4, 524288, 134217728, 0, 0, 8, 512, + /* 7160 */ 2048, 196608, 33554436, 0, 0, 33554436, 4224, 4224, 0, 65536, 100663296, 4224, 65536, 65536, 262144, + /* 7175 */ 33554432, 0, 2, 4, 16, 64, 128, 256, 0, 4224, 65536, 16777216, 262400, 65536, 4224, -1072627712, 805306384, + /* 7192 */ -1342177264, -1342177264, -1070006272, -1069989376, -1069989376, -1069989376, -258932720, -258932720, + /* 7200 */ -258932720, -258932720, -1069989360, -1065795072, -1061600768, -1069989376, -225378288, -258932720, + /* 7208 */ -258932720, -258932720, -225378288, 1260767, 1260767, 34815199, 1260767, 1260767, 1260767, 1260767, + /* 7218 */ 34815199, 1260767, 34815199, 34815199, 34815199, 1260767, 1260767, 169032927, 1242774751, -1978450721, + /* 7228 */ 169032927, -1978450721, -1978450721, -1978450721, 169032927, 169032927, 169032927, 169032927, -225231649, + /* 7237 */ -1173144353, -225231649, -225231649, -91013921, 0, 0, 0, 67108864, 0, 3751936, 0, 0, 528, 7946240, + /* 7251 */ 12140544, 0, 0, 0, 134217728, 0, 0, 0, 7, 27756528, -503316480, 0, 0, 9502720, 1610612736, 0, 0, 486539264, + /* 7269 */ 0, 0, 2048, 32768, 0, 0, 64, 128, 0, 0, 536870912, 0, 0, 208, 15360, 1245184, 0, 0, 0, 268435456, 0, 0, 0, + /* 7292 */ 15, 9633792, 0, 0, 0, 32, 512, 2048, 262144, 0, 3670016, 0, 0, 1040, 1040, 1, 2, 12, 80, 128, 7168, 8192, + /* 7314 */ 196608, 16, 64, 128, 3072, 4096, 8192, 65536, 131072, 0, 0, 32, 262144, 524288, 33554432, 134217728, 0, 0, + /* 7332 */ 0, 2, 8, 64, 128, 1024, 4096, 0, 0, 262144, 0, 4096, 4194304, 1, 1, 1, 0, 0, 2, 8, 16, 64 +]; + +JSONiqParser.TOKEN = +[ + "(0)", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSection", + "Wildcard", + "EQName", + "URILiteral", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "StringLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "PITarget", + "NCName", + "QName", + "S", + "S", + "CharRef", + "CommentContents", + "EOF", + "'!'", + "'!='", + "'\"'", + "'#'", + "'#)'", + "'$'", + "'$$'", + "'%'", + "''''", + "'('", + "'(#'", + "'(:'", + "')'", + "'*'", + "'*'", + "'+'", + "','", + "'-'", + "'-->'", + "'.'", + "'..'", + "'/'", + "'//'", + "'/>'", + "':'", + "':)'", + "'::'", + "':='", + "';'", + "'<'", + "'<!--'", + "'</'", + "'<<'", + "'<='", + "'<?'", + "'='", + "'>'", + "'>='", + "'>>'", + "'?'", + "'?>'", + "'@'", + "'NaN'", + "'['", + "']'", + "'after'", + "'all'", + "'allowing'", + "'ancestor'", + "'ancestor-or-self'", + "'and'", + "'any'", + "'append'", + "'array'", + "'as'", + "'ascending'", + "'at'", + "'attribute'", + "'base-uri'", + "'before'", + "'boundary-space'", + "'break'", + "'by'", + "'case'", + "'cast'", + "'castable'", + "'catch'", + "'check'", + "'child'", + "'collation'", + "'collection'", + "'comment'", + "'constraint'", + "'construction'", + "'contains'", + "'content'", + "'context'", + "'continue'", + "'copy'", + "'copy-namespaces'", + "'count'", + "'decimal-format'", + "'decimal-separator'", + "'declare'", + "'default'", + "'delete'", + "'descendant'", + "'descendant-or-self'", + "'descending'", + "'diacritics'", + "'different'", + "'digit'", + "'distance'", + "'div'", + "'document'", + "'document-node'", + "'element'", + "'else'", + "'empty'", + "'empty-sequence'", + "'encoding'", + "'end'", + "'entire'", + "'eq'", + "'every'", + "'exactly'", + "'except'", + "'exit'", + "'external'", + "'false'", + "'first'", + "'following'", + "'following-sibling'", + "'for'", + "'foreach'", + "'foreign'", + "'from'", + "'ft-option'", + "'ftand'", + "'ftnot'", + "'ftor'", + "'function'", + "'ge'", + "'greatest'", + "'group'", + "'grouping-separator'", + "'gt'", + "'idiv'", + "'if'", + "'import'", + "'in'", + "'index'", + "'infinity'", + "'inherit'", + "'insensitive'", + "'insert'", + "'instance'", + "'integrity'", + "'intersect'", + "'into'", + "'is'", + "'item'", + "'json'", + "'json-item'", + "'jsoniq'", + "'key'", + "'language'", + "'last'", + "'lax'", + "'le'", + "'least'", + "'let'", + "'levels'", + "'loop'", + "'lowercase'", + "'lt'", + "'minus-sign'", + "'mod'", + "'modify'", + "'module'", + "'most'", + "'namespace'", + "'namespace-node'", + "'ne'", + "'next'", + "'no'", + "'no-inherit'", + "'no-preserve'", + "'node'", + "'nodes'", + "'not'", + "'null'", + "'object'", + "'occurs'", + "'of'", + "'on'", + "'only'", + "'option'", + "'or'", + "'order'", + "'ordered'", + "'ordering'", + "'paragraph'", + "'paragraphs'", + "'parent'", + "'pattern-separator'", + "'per-mille'", + "'percent'", + "'phrase'", + "'position'", + "'preceding'", + "'preceding-sibling'", + "'preserve'", + "'previous'", + "'processing-instruction'", + "'relationship'", + "'rename'", + "'replace'", + "'return'", + "'returning'", + "'revalidation'", + "'same'", + "'satisfies'", + "'schema'", + "'schema-attribute'", + "'schema-element'", + "'score'", + "'select'", + "'self'", + "'sensitive'", + "'sentence'", + "'sentences'", + "'skip'", + "'sliding'", + "'some'", + "'stable'", + "'start'", + "'stemming'", + "'stop'", + "'strict'", + "'strip'", + "'structured-item'", + "'switch'", + "'text'", + "'then'", + "'thesaurus'", + "'times'", + "'to'", + "'treat'", + "'true'", + "'try'", + "'tumbling'", + "'type'", + "'typeswitch'", + "'union'", + "'unique'", + "'unordered'", + "'updating'", + "'uppercase'", + "'using'", + "'validate'", + "'value'", + "'variable'", + "'version'", + "'weight'", + "'when'", + "'where'", + "'while'", + "'wildcards'", + "'window'", + "'with'", + "'without'", + "'word'", + "'words'", + "'zero-digit'", + "'{'", + "'{{'", + "'{|'", + "'|'", + "'||'", + "'|}'", + "'}'", + "'}}'" +]; + +// End + +},{}],"/node_modules/xqlint/lib/parsers/XQueryParser.js":[function(_dereq_,module,exports){ +// This file was generated on Fri Apr 10, 2015 00:54 (UTC+01) by REx v5.33 which is Copyright (c) 1979-2015 by Gunther Rademacher <grd@gmx.net> +// REx command line: XQueryParser.ebnf -ll 2 -backtrack -tree -javascript -a xqlint + + // line 2 "XQueryParser.ebnf" + var XQueryParser = exports.XQueryParser = function XQueryParser(string, parsingEventHandler) + { + init(string, parsingEventHandler); + // line 9 "XQueryParser.js" + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + l2 = 0; + end = e; + ex = -1; + memo = {}; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? XQueryParser.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = XQueryParser.getTokenSet(- e.getState()); + } + else + { + expected = [XQueryParser.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_XQuery = function() + { + eventHandler.startNonterminal("XQuery", e0); + lookahead1W(274); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | + // '..' | '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + whitespace(); + parse_Module(); + shift(25); // EOF + eventHandler.endNonterminal("XQuery", e0); + }; + + function parse_Module() + { + eventHandler.startNonterminal("Module", e0); + switch (l1) + { + case 274: // 'xquery' + lookahead2W(198); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'encoding' | 'eq' | 'except' | 'ge' | 'gt' | + // 'idiv' | 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | + // 'to' | 'treat' | 'union' | 'version' | '|' | '||' + break; + default: + lk = l1; + } + if (lk == 64274 // 'xquery' 'encoding' + || lk == 134930) // 'xquery' 'version' + { + parse_VersionDecl(); + } + lookahead1W(274); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | + // '..' | '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + switch (l1) + { + case 182: // 'module' + lookahead2W(193); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'namespace' | 'ne' | + // 'or' | 'to' | 'treat' | 'union' | '|' | '||' + break; + default: + lk = l1; + } + switch (lk) + { + case 94390: // 'module' 'namespace' + whitespace(); + parse_LibraryModule(); + break; + default: + whitespace(); + parse_MainModule(); + } + eventHandler.endNonterminal("Module", e0); + } + + function parse_VersionDecl() + { + eventHandler.startNonterminal("VersionDecl", e0); + shift(274); // 'xquery' + lookahead1W(116); // S^WS | '(:' | 'encoding' | 'version' + switch (l1) + { + case 125: // 'encoding' + shift(125); // 'encoding' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + break; + default: + shift(263); // 'version' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + lookahead1W(109); // S^WS | '(:' | ';' | 'encoding' + if (l1 == 125) // 'encoding' + { + shift(125); // 'encoding' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + } + lookahead1W(28); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + eventHandler.endNonterminal("VersionDecl", e0); + } + + function parse_LibraryModule() + { + eventHandler.startNonterminal("LibraryModule", e0); + parse_ModuleDecl(); + lookahead1W(138); // S^WS | EOF | '(:' | 'declare' | 'import' + whitespace(); + parse_Prolog(); + eventHandler.endNonterminal("LibraryModule", e0); + } + + function parse_ModuleDecl() + { + eventHandler.startNonterminal("ModuleDecl", e0); + shift(182); // 'module' + lookahead1W(61); // S^WS | '(:' | 'namespace' + shift(184); // 'namespace' + lookahead1W(248); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' + whitespace(); + parse_NCName(); + lookahead1W(29); // S^WS | '(:' | '=' + shift(60); // '=' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(28); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + eventHandler.endNonterminal("ModuleDecl", e0); + } + + function parse_Prolog() + { + eventHandler.startNonterminal("Prolog", e0); + for (;;) + { + lookahead1W(274); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | + // '..' | '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + switch (l1) + { + case 108: // 'declare' + lookahead2W(213); // S^WS | EOF | '!' | '!=' | '#' | '%' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | + // 'base-uri' | 'boundary-space' | 'cast' | 'castable' | 'collection' | + // 'construction' | 'contains' | 'context' | 'copy-namespaces' | 'decimal-format' | + // 'default' | 'div' | 'eq' | 'except' | 'ft-option' | 'function' | 'ge' | 'gt' | + // 'idiv' | 'index' | 'instance' | 'integrity' | 'intersect' | 'is' | 'le' | 'lt' | + // 'mod' | 'namespace' | 'ne' | 'option' | 'or' | 'ordering' | 'revalidation' | + // 'to' | 'treat' | 'union' | 'updating' | 'variable' | '|' | '||' + break; + case 153: // 'import' + lookahead2W(201); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'module' | 'ne' | 'or' | + // 'schema' | 'to' | 'treat' | 'union' | '|' | '||' + break; + default: + lk = l1; + } + if (lk != 42604 // 'declare' 'base-uri' + && lk != 43628 // 'declare' 'boundary-space' + && lk != 50284 // 'declare' 'construction' + && lk != 53356 // 'declare' 'copy-namespaces' + && lk != 54380 // 'declare' 'decimal-format' + && lk != 55916 // 'declare' 'default' + && lk != 72300 // 'declare' 'ft-option' + && lk != 93337 // 'import' 'module' + && lk != 94316 // 'declare' 'namespace' + && lk != 104044 // 'declare' 'ordering' + && lk != 113772 // 'declare' 'revalidation' + && lk != 115353) // 'import' 'schema' + { + break; + } + switch (l1) + { + case 108: // 'declare' + lookahead2W(178); // S^WS | '(:' | 'base-uri' | 'boundary-space' | 'construction' | + // 'copy-namespaces' | 'decimal-format' | 'default' | 'ft-option' | 'namespace' | + // 'ordering' | 'revalidation' + break; + default: + lk = l1; + } + if (lk == 55916) // 'declare' 'default' + { + lk = memoized(0, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_DefaultNamespaceDecl(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(0, e0, lk); + } + } + switch (lk) + { + case -1: + whitespace(); + parse_DefaultNamespaceDecl(); + break; + case 94316: // 'declare' 'namespace' + whitespace(); + parse_NamespaceDecl(); + break; + case 153: // 'import' + whitespace(); + parse_Import(); + break; + case 72300: // 'declare' 'ft-option' + whitespace(); + parse_FTOptionDecl(); + break; + default: + whitespace(); + parse_Setter(); + } + lookahead1W(28); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + } + for (;;) + { + lookahead1W(274); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | + // '..' | '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + switch (l1) + { + case 108: // 'declare' + lookahead2W(210); // S^WS | EOF | '!' | '!=' | '#' | '%' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'collection' | 'contains' | 'context' | 'div' | 'eq' | 'except' | + // 'function' | 'ge' | 'gt' | 'idiv' | 'index' | 'instance' | 'integrity' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'option' | 'or' | 'to' | + // 'treat' | 'union' | 'updating' | 'variable' | '|' | '||' + break; + default: + lk = l1; + } + if (lk != 16492 // 'declare' '%' + && lk != 48748 // 'declare' 'collection' + && lk != 51820 // 'declare' 'context' + && lk != 74348 // 'declare' 'function' + && lk != 79468 // 'declare' 'index' + && lk != 82540 // 'declare' 'integrity' + && lk != 101996 // 'declare' 'option' + && lk != 131692 // 'declare' 'updating' + && lk != 134252) // 'declare' 'variable' + { + break; + } + switch (l1) + { + case 108: // 'declare' + lookahead2W(175); // S^WS | '%' | '(:' | 'collection' | 'context' | 'function' | 'index' | + // 'integrity' | 'option' | 'updating' | 'variable' + break; + default: + lk = l1; + } + switch (lk) + { + case 51820: // 'declare' 'context' + whitespace(); + parse_ContextItemDecl(); + break; + case 101996: // 'declare' 'option' + whitespace(); + parse_OptionDecl(); + break; + default: + whitespace(); + parse_AnnotatedDecl(); + } + lookahead1W(28); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + } + eventHandler.endNonterminal("Prolog", e0); + } + + function parse_Separator() + { + eventHandler.startNonterminal("Separator", e0); + shift(53); // ';' + eventHandler.endNonterminal("Separator", e0); + } + + function parse_Setter() + { + eventHandler.startNonterminal("Setter", e0); + switch (l1) + { + case 108: // 'declare' + lookahead2W(172); // S^WS | '(:' | 'base-uri' | 'boundary-space' | 'construction' | + // 'copy-namespaces' | 'decimal-format' | 'default' | 'ordering' | 'revalidation' + break; + default: + lk = l1; + } + if (lk == 55916) // 'declare' 'default' + { + lk = memoized(1, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_DefaultCollationDecl(); + lk = -2; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_EmptyOrderDecl(); + lk = -6; + } + catch (p6A) + { + lk = -9; + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(1, e0, lk); + } + } + switch (lk) + { + case 43628: // 'declare' 'boundary-space' + parse_BoundarySpaceDecl(); + break; + case -2: + parse_DefaultCollationDecl(); + break; + case 42604: // 'declare' 'base-uri' + parse_BaseURIDecl(); + break; + case 50284: // 'declare' 'construction' + parse_ConstructionDecl(); + break; + case 104044: // 'declare' 'ordering' + parse_OrderingModeDecl(); + break; + case -6: + parse_EmptyOrderDecl(); + break; + case 113772: // 'declare' 'revalidation' + parse_RevalidationDecl(); + break; + case 53356: // 'declare' 'copy-namespaces' + parse_CopyNamespacesDecl(); + break; + default: + parse_DecimalFormatDecl(); + } + eventHandler.endNonterminal("Setter", e0); + } + + function parse_BoundarySpaceDecl() + { + eventHandler.startNonterminal("BoundarySpaceDecl", e0); + shift(108); // 'declare' + lookahead1W(33); // S^WS | '(:' | 'boundary-space' + shift(85); // 'boundary-space' + lookahead1W(133); // S^WS | '(:' | 'preserve' | 'strip' + switch (l1) + { + case 214: // 'preserve' + shift(214); // 'preserve' + break; + default: + shift(241); // 'strip' + } + eventHandler.endNonterminal("BoundarySpaceDecl", e0); + } + + function parse_DefaultCollationDecl() + { + eventHandler.startNonterminal("DefaultCollationDecl", e0); + shift(108); // 'declare' + lookahead1W(46); // S^WS | '(:' | 'default' + shift(109); // 'default' + lookahead1W(38); // S^WS | '(:' | 'collation' + shift(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("DefaultCollationDecl", e0); + } + + function try_DefaultCollationDecl() + { + shiftT(108); // 'declare' + lookahead1W(46); // S^WS | '(:' | 'default' + shiftT(109); // 'default' + lookahead1W(38); // S^WS | '(:' | 'collation' + shiftT(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + + function parse_BaseURIDecl() + { + eventHandler.startNonterminal("BaseURIDecl", e0); + shift(108); // 'declare' + lookahead1W(32); // S^WS | '(:' | 'base-uri' + shift(83); // 'base-uri' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("BaseURIDecl", e0); + } + + function parse_ConstructionDecl() + { + eventHandler.startNonterminal("ConstructionDecl", e0); + shift(108); // 'declare' + lookahead1W(41); // S^WS | '(:' | 'construction' + shift(98); // 'construction' + lookahead1W(133); // S^WS | '(:' | 'preserve' | 'strip' + switch (l1) + { + case 241: // 'strip' + shift(241); // 'strip' + break; + default: + shift(214); // 'preserve' + } + eventHandler.endNonterminal("ConstructionDecl", e0); + } + + function parse_OrderingModeDecl() + { + eventHandler.startNonterminal("OrderingModeDecl", e0); + shift(108); // 'declare' + lookahead1W(68); // S^WS | '(:' | 'ordering' + shift(203); // 'ordering' + lookahead1W(131); // S^WS | '(:' | 'ordered' | 'unordered' + switch (l1) + { + case 202: // 'ordered' + shift(202); // 'ordered' + break; + default: + shift(256); // 'unordered' + } + eventHandler.endNonterminal("OrderingModeDecl", e0); + } + + function parse_EmptyOrderDecl() + { + eventHandler.startNonterminal("EmptyOrderDecl", e0); + shift(108); // 'declare' + lookahead1W(46); // S^WS | '(:' | 'default' + shift(109); // 'default' + lookahead1W(67); // S^WS | '(:' | 'order' + shift(201); // 'order' + lookahead1W(49); // S^WS | '(:' | 'empty' + shift(123); // 'empty' + lookahead1W(121); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 147: // 'greatest' + shift(147); // 'greatest' + break; + default: + shift(173); // 'least' + } + eventHandler.endNonterminal("EmptyOrderDecl", e0); + } + + function try_EmptyOrderDecl() + { + shiftT(108); // 'declare' + lookahead1W(46); // S^WS | '(:' | 'default' + shiftT(109); // 'default' + lookahead1W(67); // S^WS | '(:' | 'order' + shiftT(201); // 'order' + lookahead1W(49); // S^WS | '(:' | 'empty' + shiftT(123); // 'empty' + lookahead1W(121); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 147: // 'greatest' + shiftT(147); // 'greatest' + break; + default: + shiftT(173); // 'least' + } + } + + function parse_CopyNamespacesDecl() + { + eventHandler.startNonterminal("CopyNamespacesDecl", e0); + shift(108); // 'declare' + lookahead1W(44); // S^WS | '(:' | 'copy-namespaces' + shift(104); // 'copy-namespaces' + lookahead1W(128); // S^WS | '(:' | 'no-preserve' | 'preserve' + whitespace(); + parse_PreserveMode(); + lookahead1W(25); // S^WS | '(:' | ',' + shift(41); // ',' + lookahead1W(123); // S^WS | '(:' | 'inherit' | 'no-inherit' + whitespace(); + parse_InheritMode(); + eventHandler.endNonterminal("CopyNamespacesDecl", e0); + } + + function parse_PreserveMode() + { + eventHandler.startNonterminal("PreserveMode", e0); + switch (l1) + { + case 214: // 'preserve' + shift(214); // 'preserve' + break; + default: + shift(190); // 'no-preserve' + } + eventHandler.endNonterminal("PreserveMode", e0); + } + + function parse_InheritMode() + { + eventHandler.startNonterminal("InheritMode", e0); + switch (l1) + { + case 157: // 'inherit' + shift(157); // 'inherit' + break; + default: + shift(189); // 'no-inherit' + } + eventHandler.endNonterminal("InheritMode", e0); + } + + function parse_DecimalFormatDecl() + { + eventHandler.startNonterminal("DecimalFormatDecl", e0); + shift(108); // 'declare' + lookahead1W(114); // S^WS | '(:' | 'decimal-format' | 'default' + switch (l1) + { + case 106: // 'decimal-format' + shift(106); // 'decimal-format' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + break; + default: + shift(109); // 'default' + lookahead1W(45); // S^WS | '(:' | 'decimal-format' + shift(106); // 'decimal-format' + } + for (;;) + { + lookahead1W(180); // S^WS | '(:' | ';' | 'NaN' | 'decimal-separator' | 'digit' | + // 'grouping-separator' | 'infinity' | 'minus-sign' | 'pattern-separator' | + // 'per-mille' | 'percent' | 'zero-digit' + if (l1 == 53) // ';' + { + break; + } + whitespace(); + parse_DFPropertyName(); + lookahead1W(29); // S^WS | '(:' | '=' + shift(60); // '=' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + eventHandler.endNonterminal("DecimalFormatDecl", e0); + } + + function parse_DFPropertyName() + { + eventHandler.startNonterminal("DFPropertyName", e0); + switch (l1) + { + case 107: // 'decimal-separator' + shift(107); // 'decimal-separator' + break; + case 149: // 'grouping-separator' + shift(149); // 'grouping-separator' + break; + case 156: // 'infinity' + shift(156); // 'infinity' + break; + case 179: // 'minus-sign' + shift(179); // 'minus-sign' + break; + case 67: // 'NaN' + shift(67); // 'NaN' + break; + case 209: // 'percent' + shift(209); // 'percent' + break; + case 208: // 'per-mille' + shift(208); // 'per-mille' + break; + case 275: // 'zero-digit' + shift(275); // 'zero-digit' + break; + case 116: // 'digit' + shift(116); // 'digit' + break; + default: + shift(207); // 'pattern-separator' + } + eventHandler.endNonterminal("DFPropertyName", e0); + } + + function parse_Import() + { + eventHandler.startNonterminal("Import", e0); + switch (l1) + { + case 153: // 'import' + lookahead2W(126); // S^WS | '(:' | 'module' | 'schema' + break; + default: + lk = l1; + } + switch (lk) + { + case 115353: // 'import' 'schema' + parse_SchemaImport(); + break; + default: + parse_ModuleImport(); + } + eventHandler.endNonterminal("Import", e0); + } + + function parse_SchemaImport() + { + eventHandler.startNonterminal("SchemaImport", e0); + shift(153); // 'import' + lookahead1W(73); // S^WS | '(:' | 'schema' + shift(225); // 'schema' + lookahead1W(137); // URILiteral | S^WS | '(:' | 'default' | 'namespace' + if (l1 != 7) // URILiteral + { + whitespace(); + parse_SchemaPrefix(); + } + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(108); // S^WS | '(:' | ';' | 'at' + if (l1 == 81) // 'at' + { + shift(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + for (;;) + { + lookahead1W(103); // S^WS | '(:' | ',' | ';' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + } + eventHandler.endNonterminal("SchemaImport", e0); + } + + function parse_SchemaPrefix() + { + eventHandler.startNonterminal("SchemaPrefix", e0); + switch (l1) + { + case 184: // 'namespace' + shift(184); // 'namespace' + lookahead1W(248); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' + whitespace(); + parse_NCName(); + lookahead1W(29); // S^WS | '(:' | '=' + shift(60); // '=' + break; + default: + shift(109); // 'default' + lookahead1W(47); // S^WS | '(:' | 'element' + shift(121); // 'element' + lookahead1W(61); // S^WS | '(:' | 'namespace' + shift(184); // 'namespace' + } + eventHandler.endNonterminal("SchemaPrefix", e0); + } + + function parse_ModuleImport() + { + eventHandler.startNonterminal("ModuleImport", e0); + shift(153); // 'import' + lookahead1W(60); // S^WS | '(:' | 'module' + shift(182); // 'module' + lookahead1W(90); // URILiteral | S^WS | '(:' | 'namespace' + if (l1 == 184) // 'namespace' + { + shift(184); // 'namespace' + lookahead1W(248); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' + whitespace(); + parse_NCName(); + lookahead1W(29); // S^WS | '(:' | '=' + shift(60); // '=' + } + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(108); // S^WS | '(:' | ';' | 'at' + if (l1 == 81) // 'at' + { + shift(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + for (;;) + { + lookahead1W(103); // S^WS | '(:' | ',' | ';' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + } + eventHandler.endNonterminal("ModuleImport", e0); + } + + function parse_NamespaceDecl() + { + eventHandler.startNonterminal("NamespaceDecl", e0); + shift(108); // 'declare' + lookahead1W(61); // S^WS | '(:' | 'namespace' + shift(184); // 'namespace' + lookahead1W(248); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' + whitespace(); + parse_NCName(); + lookahead1W(29); // S^WS | '(:' | '=' + shift(60); // '=' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("NamespaceDecl", e0); + } + + function parse_DefaultNamespaceDecl() + { + eventHandler.startNonterminal("DefaultNamespaceDecl", e0); + shift(108); // 'declare' + lookahead1W(46); // S^WS | '(:' | 'default' + shift(109); // 'default' + lookahead1W(115); // S^WS | '(:' | 'element' | 'function' + switch (l1) + { + case 121: // 'element' + shift(121); // 'element' + break; + default: + shift(145); // 'function' + } + lookahead1W(61); // S^WS | '(:' | 'namespace' + shift(184); // 'namespace' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("DefaultNamespaceDecl", e0); + } + + function try_DefaultNamespaceDecl() + { + shiftT(108); // 'declare' + lookahead1W(46); // S^WS | '(:' | 'default' + shiftT(109); // 'default' + lookahead1W(115); // S^WS | '(:' | 'element' | 'function' + switch (l1) + { + case 121: // 'element' + shiftT(121); // 'element' + break; + default: + shiftT(145); // 'function' + } + lookahead1W(61); // S^WS | '(:' | 'namespace' + shiftT(184); // 'namespace' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + + function parse_FTOptionDecl() + { + eventHandler.startNonterminal("FTOptionDecl", e0); + shift(108); // 'declare' + lookahead1W(52); // S^WS | '(:' | 'ft-option' + shift(141); // 'ft-option' + lookahead1W(81); // S^WS | '(:' | 'using' + whitespace(); + parse_FTMatchOptions(); + eventHandler.endNonterminal("FTOptionDecl", e0); + } + + function parse_AnnotatedDecl() + { + eventHandler.startNonterminal("AnnotatedDecl", e0); + shift(108); // 'declare' + for (;;) + { + lookahead1W(170); // S^WS | '%' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + // 'updating' | 'variable' + if (l1 != 32 // '%' + && l1 != 257) // 'updating' + { + break; + } + switch (l1) + { + case 257: // 'updating' + whitespace(); + parse_CompatibilityAnnotation(); + break; + default: + whitespace(); + parse_Annotation(); + } + } + switch (l1) + { + case 262: // 'variable' + whitespace(); + parse_VarDecl(); + break; + case 145: // 'function' + whitespace(); + parse_FunctionDecl(); + break; + case 95: // 'collection' + whitespace(); + parse_CollectionDecl(); + break; + case 155: // 'index' + whitespace(); + parse_IndexDecl(); + break; + default: + whitespace(); + parse_ICDecl(); + } + eventHandler.endNonterminal("AnnotatedDecl", e0); + } + + function parse_CompatibilityAnnotation() + { + eventHandler.startNonterminal("CompatibilityAnnotation", e0); + shift(257); // 'updating' + eventHandler.endNonterminal("CompatibilityAnnotation", e0); + } + + function parse_Annotation() + { + eventHandler.startNonterminal("Annotation", e0); + shift(32); // '%' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(171); // S^WS | '%' | '(' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + // 'updating' | 'variable' + if (l1 == 34) // '(' + { + shift(34); // '(' + lookahead1W(154); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' + whitespace(); + parse_Literal(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(154); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' + whitespace(); + parse_Literal(); + } + shift(37); // ')' + } + eventHandler.endNonterminal("Annotation", e0); + } + + function try_Annotation() + { + shiftT(32); // '%' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_EQName(); + lookahead1W(171); // S^WS | '%' | '(' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + // 'updating' | 'variable' + if (l1 == 34) // '(' + { + shiftT(34); // '(' + lookahead1W(154); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' + try_Literal(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(154); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' + try_Literal(); + } + shiftT(37); // ')' + } + } + + function parse_VarDecl() + { + eventHandler.startNonterminal("VarDecl", e0); + shift(262); // 'variable' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(147); // S^WS | '(:' | ':=' | 'as' | 'external' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(106); // S^WS | '(:' | ':=' | 'external' + switch (l1) + { + case 52: // ':=' + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_VarValue(); + break; + default: + shift(133); // 'external' + lookahead1W(104); // S^WS | '(:' | ':=' | ';' + if (l1 == 52) // ':=' + { + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_VarDefaultValue(); + } + } + eventHandler.endNonterminal("VarDecl", e0); + } + + function parse_VarValue() + { + eventHandler.startNonterminal("VarValue", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("VarValue", e0); + } + + function parse_VarDefaultValue() + { + eventHandler.startNonterminal("VarDefaultValue", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("VarDefaultValue", e0); + } + + function parse_ContextItemDecl() + { + eventHandler.startNonterminal("ContextItemDecl", e0); + shift(108); // 'declare' + lookahead1W(43); // S^WS | '(:' | 'context' + shift(101); // 'context' + lookahead1W(55); // S^WS | '(:' | 'item' + shift(165); // 'item' + lookahead1W(147); // S^WS | '(:' | ':=' | 'as' | 'external' + if (l1 == 79) // 'as' + { + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_ItemType(); + } + lookahead1W(106); // S^WS | '(:' | ':=' | 'external' + switch (l1) + { + case 52: // ':=' + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_VarValue(); + break; + default: + shift(133); // 'external' + lookahead1W(104); // S^WS | '(:' | ':=' | ';' + if (l1 == 52) // ':=' + { + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_VarDefaultValue(); + } + } + eventHandler.endNonterminal("ContextItemDecl", e0); + } + + function parse_ParamList() + { + eventHandler.startNonterminal("ParamList", e0); + parse_Param(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_Param(); + } + eventHandler.endNonterminal("ParamList", e0); + } + + function try_ParamList() + { + try_Param(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_Param(); + } + } + + function parse_Param() + { + eventHandler.startNonterminal("Param", e0); + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(143); // S^WS | '(:' | ')' | ',' | 'as' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + eventHandler.endNonterminal("Param", e0); + } + + function try_Param() + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_EQName(); + lookahead1W(143); // S^WS | '(:' | ')' | ',' | 'as' + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + } + + function parse_FunctionBody() + { + eventHandler.startNonterminal("FunctionBody", e0); + parse_EnclosedExpr(); + eventHandler.endNonterminal("FunctionBody", e0); + } + + function try_FunctionBody() + { + try_EnclosedExpr(); + } + + function parse_EnclosedExpr() + { + eventHandler.startNonterminal("EnclosedExpr", e0); + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + eventHandler.endNonterminal("EnclosedExpr", e0); + } + + function try_EnclosedExpr() + { + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + } + + function parse_OptionDecl() + { + eventHandler.startNonterminal("OptionDecl", e0); + shift(108); // 'declare' + lookahead1W(66); // S^WS | '(:' | 'option' + shift(199); // 'option' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("OptionDecl", e0); + } + + function parse_Expr() + { + eventHandler.startNonterminal("Expr", e0); + parse_ExprSingle(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + eventHandler.endNonterminal("Expr", e0); + } + + function try_Expr() + { + try_ExprSingle(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + } + + function parse_FLWORExpr() + { + eventHandler.startNonterminal("FLWORExpr", e0); + parse_InitialClause(); + for (;;) + { + lookahead1W(173); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + // 'where' + if (l1 == 220) // 'return' + { + break; + } + whitespace(); + parse_IntermediateClause(); + } + whitespace(); + parse_ReturnClause(); + eventHandler.endNonterminal("FLWORExpr", e0); + } + + function try_FLWORExpr() + { + try_InitialClause(); + for (;;) + { + lookahead1W(173); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + // 'where' + if (l1 == 220) // 'return' + { + break; + } + try_IntermediateClause(); + } + try_ReturnClause(); + } + + function parse_InitialClause() + { + eventHandler.startNonterminal("InitialClause", e0); + switch (l1) + { + case 137: // 'for' + lookahead2W(141); // S^WS | '$' | '(:' | 'sliding' | 'tumbling' + break; + default: + lk = l1; + } + switch (lk) + { + case 16009: // 'for' '$' + parse_ForClause(); + break; + case 174: // 'let' + parse_LetClause(); + break; + default: + parse_WindowClause(); + } + eventHandler.endNonterminal("InitialClause", e0); + } + + function try_InitialClause() + { + switch (l1) + { + case 137: // 'for' + lookahead2W(141); // S^WS | '$' | '(:' | 'sliding' | 'tumbling' + break; + default: + lk = l1; + } + switch (lk) + { + case 16009: // 'for' '$' + try_ForClause(); + break; + case 174: // 'let' + try_LetClause(); + break; + default: + try_WindowClause(); + } + } + + function parse_IntermediateClause() + { + eventHandler.startNonterminal("IntermediateClause", e0); + switch (l1) + { + case 137: // 'for' + case 174: // 'let' + parse_InitialClause(); + break; + case 266: // 'where' + parse_WhereClause(); + break; + case 148: // 'group' + parse_GroupByClause(); + break; + case 105: // 'count' + parse_CountClause(); + break; + default: + parse_OrderByClause(); + } + eventHandler.endNonterminal("IntermediateClause", e0); + } + + function try_IntermediateClause() + { + switch (l1) + { + case 137: // 'for' + case 174: // 'let' + try_InitialClause(); + break; + case 266: // 'where' + try_WhereClause(); + break; + case 148: // 'group' + try_GroupByClause(); + break; + case 105: // 'count' + try_CountClause(); + break; + default: + try_OrderByClause(); + } + } + + function parse_ForClause() + { + eventHandler.startNonterminal("ForClause", e0); + shift(137); // 'for' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_ForBinding(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_ForBinding(); + } + eventHandler.endNonterminal("ForClause", e0); + } + + function try_ForClause() + { + shiftT(137); // 'for' + lookahead1W(21); // S^WS | '$' | '(:' + try_ForBinding(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_ForBinding(); + } + } + + function parse_ForBinding() + { + eventHandler.startNonterminal("ForBinding", e0); + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(164); // S^WS | '(:' | 'allowing' | 'as' | 'at' | 'in' | 'score' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(158); // S^WS | '(:' | 'allowing' | 'at' | 'in' | 'score' + if (l1 == 72) // 'allowing' + { + whitespace(); + parse_AllowingEmpty(); + } + lookahead1W(150); // S^WS | '(:' | 'at' | 'in' | 'score' + if (l1 == 81) // 'at' + { + whitespace(); + parse_PositionalVar(); + } + lookahead1W(122); // S^WS | '(:' | 'in' | 'score' + if (l1 == 228) // 'score' + { + whitespace(); + parse_FTScoreVar(); + } + lookahead1W(53); // S^WS | '(:' | 'in' + shift(154); // 'in' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ForBinding", e0); + } + + function try_ForBinding() + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(164); // S^WS | '(:' | 'allowing' | 'as' | 'at' | 'in' | 'score' + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(158); // S^WS | '(:' | 'allowing' | 'at' | 'in' | 'score' + if (l1 == 72) // 'allowing' + { + try_AllowingEmpty(); + } + lookahead1W(150); // S^WS | '(:' | 'at' | 'in' | 'score' + if (l1 == 81) // 'at' + { + try_PositionalVar(); + } + lookahead1W(122); // S^WS | '(:' | 'in' | 'score' + if (l1 == 228) // 'score' + { + try_FTScoreVar(); + } + lookahead1W(53); // S^WS | '(:' | 'in' + shiftT(154); // 'in' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_AllowingEmpty() + { + eventHandler.startNonterminal("AllowingEmpty", e0); + shift(72); // 'allowing' + lookahead1W(49); // S^WS | '(:' | 'empty' + shift(123); // 'empty' + eventHandler.endNonterminal("AllowingEmpty", e0); + } + + function try_AllowingEmpty() + { + shiftT(72); // 'allowing' + lookahead1W(49); // S^WS | '(:' | 'empty' + shiftT(123); // 'empty' + } + + function parse_PositionalVar() + { + eventHandler.startNonterminal("PositionalVar", e0); + shift(81); // 'at' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("PositionalVar", e0); + } + + function try_PositionalVar() + { + shiftT(81); // 'at' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + } + + function parse_FTScoreVar() + { + eventHandler.startNonterminal("FTScoreVar", e0); + shift(228); // 'score' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("FTScoreVar", e0); + } + + function try_FTScoreVar() + { + shiftT(228); // 'score' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + } + + function parse_LetClause() + { + eventHandler.startNonterminal("LetClause", e0); + shift(174); // 'let' + lookahead1W(96); // S^WS | '$' | '(:' | 'score' + whitespace(); + parse_LetBinding(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(96); // S^WS | '$' | '(:' | 'score' + whitespace(); + parse_LetBinding(); + } + eventHandler.endNonterminal("LetClause", e0); + } + + function try_LetClause() + { + shiftT(174); // 'let' + lookahead1W(96); // S^WS | '$' | '(:' | 'score' + try_LetBinding(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(96); // S^WS | '$' | '(:' | 'score' + try_LetBinding(); + } + } + + function parse_LetBinding() + { + eventHandler.startNonterminal("LetBinding", e0); + switch (l1) + { + case 31: // '$' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(105); // S^WS | '(:' | ':=' | 'as' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + break; + default: + parse_FTScoreVar(); + } + lookahead1W(27); // S^WS | '(:' | ':=' + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("LetBinding", e0); + } + + function try_LetBinding() + { + switch (l1) + { + case 31: // '$' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(105); // S^WS | '(:' | ':=' | 'as' + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + break; + default: + try_FTScoreVar(); + } + lookahead1W(27); // S^WS | '(:' | ':=' + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_WindowClause() + { + eventHandler.startNonterminal("WindowClause", e0); + shift(137); // 'for' + lookahead1W(135); // S^WS | '(:' | 'sliding' | 'tumbling' + switch (l1) + { + case 251: // 'tumbling' + whitespace(); + parse_TumblingWindowClause(); + break; + default: + whitespace(); + parse_SlidingWindowClause(); + } + eventHandler.endNonterminal("WindowClause", e0); + } + + function try_WindowClause() + { + shiftT(137); // 'for' + lookahead1W(135); // S^WS | '(:' | 'sliding' | 'tumbling' + switch (l1) + { + case 251: // 'tumbling' + try_TumblingWindowClause(); + break; + default: + try_SlidingWindowClause(); + } + } + + function parse_TumblingWindowClause() + { + eventHandler.startNonterminal("TumblingWindowClause", e0); + shift(251); // 'tumbling' + lookahead1W(85); // S^WS | '(:' | 'window' + shift(269); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(110); // S^WS | '(:' | 'as' | 'in' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(53); // S^WS | '(:' | 'in' + shift(154); // 'in' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + whitespace(); + parse_WindowStartCondition(); + if (l1 == 126 // 'end' + || l1 == 198) // 'only' + { + whitespace(); + parse_WindowEndCondition(); + } + eventHandler.endNonterminal("TumblingWindowClause", e0); + } + + function try_TumblingWindowClause() + { + shiftT(251); // 'tumbling' + lookahead1W(85); // S^WS | '(:' | 'window' + shiftT(269); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(110); // S^WS | '(:' | 'as' | 'in' + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(53); // S^WS | '(:' | 'in' + shiftT(154); // 'in' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + try_WindowStartCondition(); + if (l1 == 126 // 'end' + || l1 == 198) // 'only' + { + try_WindowEndCondition(); + } + } + + function parse_SlidingWindowClause() + { + eventHandler.startNonterminal("SlidingWindowClause", e0); + shift(234); // 'sliding' + lookahead1W(85); // S^WS | '(:' | 'window' + shift(269); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(110); // S^WS | '(:' | 'as' | 'in' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(53); // S^WS | '(:' | 'in' + shift(154); // 'in' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + whitespace(); + parse_WindowStartCondition(); + whitespace(); + parse_WindowEndCondition(); + eventHandler.endNonterminal("SlidingWindowClause", e0); + } + + function try_SlidingWindowClause() + { + shiftT(234); // 'sliding' + lookahead1W(85); // S^WS | '(:' | 'window' + shiftT(269); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(110); // S^WS | '(:' | 'as' | 'in' + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(53); // S^WS | '(:' | 'in' + shiftT(154); // 'in' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + try_WindowStartCondition(); + try_WindowEndCondition(); + } + + function parse_WindowStartCondition() + { + eventHandler.startNonterminal("WindowStartCondition", e0); + shift(237); // 'start' + lookahead1W(163); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + whitespace(); + parse_WindowVars(); + lookahead1W(83); // S^WS | '(:' | 'when' + shift(265); // 'when' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WindowStartCondition", e0); + } + + function try_WindowStartCondition() + { + shiftT(237); // 'start' + lookahead1W(163); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + try_WindowVars(); + lookahead1W(83); // S^WS | '(:' | 'when' + shiftT(265); // 'when' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_WindowEndCondition() + { + eventHandler.startNonterminal("WindowEndCondition", e0); + if (l1 == 198) // 'only' + { + shift(198); // 'only' + } + lookahead1W(50); // S^WS | '(:' | 'end' + shift(126); // 'end' + lookahead1W(163); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + whitespace(); + parse_WindowVars(); + lookahead1W(83); // S^WS | '(:' | 'when' + shift(265); // 'when' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WindowEndCondition", e0); + } + + function try_WindowEndCondition() + { + if (l1 == 198) // 'only' + { + shiftT(198); // 'only' + } + lookahead1W(50); // S^WS | '(:' | 'end' + shiftT(126); // 'end' + lookahead1W(163); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + try_WindowVars(); + lookahead1W(83); // S^WS | '(:' | 'when' + shiftT(265); // 'when' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_WindowVars() + { + eventHandler.startNonterminal("WindowVars", e0); + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_CurrentItem(); + } + lookahead1W(159); // S^WS | '(:' | 'at' | 'next' | 'previous' | 'when' + if (l1 == 81) // 'at' + { + whitespace(); + parse_PositionalVar(); + } + lookahead1W(153); // S^WS | '(:' | 'next' | 'previous' | 'when' + if (l1 == 215) // 'previous' + { + shift(215); // 'previous' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_PreviousItem(); + } + lookahead1W(127); // S^WS | '(:' | 'next' | 'when' + if (l1 == 187) // 'next' + { + shift(187); // 'next' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_NextItem(); + } + eventHandler.endNonterminal("WindowVars", e0); + } + + function try_WindowVars() + { + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_CurrentItem(); + } + lookahead1W(159); // S^WS | '(:' | 'at' | 'next' | 'previous' | 'when' + if (l1 == 81) // 'at' + { + try_PositionalVar(); + } + lookahead1W(153); // S^WS | '(:' | 'next' | 'previous' | 'when' + if (l1 == 215) // 'previous' + { + shiftT(215); // 'previous' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_PreviousItem(); + } + lookahead1W(127); // S^WS | '(:' | 'next' | 'when' + if (l1 == 187) // 'next' + { + shiftT(187); // 'next' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_NextItem(); + } + } + + function parse_CurrentItem() + { + eventHandler.startNonterminal("CurrentItem", e0); + parse_EQName(); + eventHandler.endNonterminal("CurrentItem", e0); + } + + function try_CurrentItem() + { + try_EQName(); + } + + function parse_PreviousItem() + { + eventHandler.startNonterminal("PreviousItem", e0); + parse_EQName(); + eventHandler.endNonterminal("PreviousItem", e0); + } + + function try_PreviousItem() + { + try_EQName(); + } + + function parse_NextItem() + { + eventHandler.startNonterminal("NextItem", e0); + parse_EQName(); + eventHandler.endNonterminal("NextItem", e0); + } + + function try_NextItem() + { + try_EQName(); + } + + function parse_CountClause() + { + eventHandler.startNonterminal("CountClause", e0); + shift(105); // 'count' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("CountClause", e0); + } + + function try_CountClause() + { + shiftT(105); // 'count' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + } + + function parse_WhereClause() + { + eventHandler.startNonterminal("WhereClause", e0); + shift(266); // 'where' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WhereClause", e0); + } + + function try_WhereClause() + { + shiftT(266); // 'where' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_GroupByClause() + { + eventHandler.startNonterminal("GroupByClause", e0); + shift(148); // 'group' + lookahead1W(34); // S^WS | '(:' | 'by' + shift(87); // 'by' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_GroupingSpecList(); + eventHandler.endNonterminal("GroupByClause", e0); + } + + function try_GroupByClause() + { + shiftT(148); // 'group' + lookahead1W(34); // S^WS | '(:' | 'by' + shiftT(87); // 'by' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_GroupingSpecList(); + } + + function parse_GroupingSpecList() + { + eventHandler.startNonterminal("GroupingSpecList", e0); + parse_GroupingSpec(); + for (;;) + { + lookahead1W(176); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + // 'stable' | 'where' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_GroupingSpec(); + } + eventHandler.endNonterminal("GroupingSpecList", e0); + } + + function try_GroupingSpecList() + { + try_GroupingSpec(); + for (;;) + { + lookahead1W(176); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + // 'stable' | 'where' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_GroupingSpec(); + } + } + + function parse_GroupingSpec() + { + eventHandler.startNonterminal("GroupingSpec", e0); + switch (l1) + { + case 31: // '$' + lookahead2W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + default: + lk = l1; + } + if (lk == 3103 // '$' EQName^Token + || lk == 35871 // '$' 'after' + || lk == 36895 // '$' 'allowing' + || lk == 37407 // '$' 'ancestor' + || lk == 37919 // '$' 'ancestor-or-self' + || lk == 38431 // '$' 'and' + || lk == 39455 // '$' 'append' + || lk == 39967 // '$' 'array' + || lk == 40479 // '$' 'as' + || lk == 40991 // '$' 'ascending' + || lk == 41503 // '$' 'at' + || lk == 42015 // '$' 'attribute' + || lk == 42527 // '$' 'base-uri' + || lk == 43039 // '$' 'before' + || lk == 43551 // '$' 'boundary-space' + || lk == 44063 // '$' 'break' + || lk == 45087 // '$' 'case' + || lk == 45599 // '$' 'cast' + || lk == 46111 // '$' 'castable' + || lk == 46623 // '$' 'catch' + || lk == 47647 // '$' 'child' + || lk == 48159 // '$' 'collation' + || lk == 49183 // '$' 'comment' + || lk == 49695 // '$' 'constraint' + || lk == 50207 // '$' 'construction' + || lk == 51743 // '$' 'context' + || lk == 52255 // '$' 'continue' + || lk == 52767 // '$' 'copy' + || lk == 53279 // '$' 'copy-namespaces' + || lk == 53791 // '$' 'count' + || lk == 54303 // '$' 'decimal-format' + || lk == 55327 // '$' 'declare' + || lk == 55839 // '$' 'default' + || lk == 56351 // '$' 'delete' + || lk == 56863 // '$' 'descendant' + || lk == 57375 // '$' 'descendant-or-self' + || lk == 57887 // '$' 'descending' + || lk == 60447 // '$' 'div' + || lk == 60959 // '$' 'document' + || lk == 61471 // '$' 'document-node' + || lk == 61983 // '$' 'element' + || lk == 62495 // '$' 'else' + || lk == 63007 // '$' 'empty' + || lk == 63519 // '$' 'empty-sequence' + || lk == 64031 // '$' 'encoding' + || lk == 64543 // '$' 'end' + || lk == 65567 // '$' 'eq' + || lk == 66079 // '$' 'every' + || lk == 67103 // '$' 'except' + || lk == 67615 // '$' 'exit' + || lk == 68127 // '$' 'external' + || lk == 68639 // '$' 'first' + || lk == 69151 // '$' 'following' + || lk == 69663 // '$' 'following-sibling' + || lk == 70175 // '$' 'for' + || lk == 72223 // '$' 'ft-option' + || lk == 74271 // '$' 'function' + || lk == 74783 // '$' 'ge' + || lk == 75807 // '$' 'group' + || lk == 76831 // '$' 'gt' + || lk == 77343 // '$' 'idiv' + || lk == 77855 // '$' 'if' + || lk == 78367 // '$' 'import' + || lk == 78879 // '$' 'in' + || lk == 79391 // '$' 'index' + || lk == 81439 // '$' 'insert' + || lk == 81951 // '$' 'instance' + || lk == 82463 // '$' 'integrity' + || lk == 82975 // '$' 'intersect' + || lk == 83487 // '$' 'into' + || lk == 83999 // '$' 'is' + || lk == 84511 // '$' 'item' + || lk == 85023 // '$' 'json' + || lk == 85535 // '$' 'json-item' + || lk == 87071 // '$' 'last' + || lk == 87583 // '$' 'lax' + || lk == 88095 // '$' 'le' + || lk == 89119 // '$' 'let' + || lk == 90143 // '$' 'loop' + || lk == 91167 // '$' 'lt' + || lk == 92191 // '$' 'mod' + || lk == 92703 // '$' 'modify' + || lk == 93215 // '$' 'module' + || lk == 94239 // '$' 'namespace' + || lk == 94751 // '$' 'namespace-node' + || lk == 95263 // '$' 'ne' + || lk == 97823 // '$' 'node' + || lk == 98335 // '$' 'nodes' + || lk == 99359 // '$' 'object' + || lk == 101407 // '$' 'only' + || lk == 101919 // '$' 'option' + || lk == 102431 // '$' 'or' + || lk == 102943 // '$' 'order' + || lk == 103455 // '$' 'ordered' + || lk == 103967 // '$' 'ordering' + || lk == 105503 // '$' 'parent' + || lk == 108575 // '$' 'preceding' + || lk == 109087 // '$' 'preceding-sibling' + || lk == 110623 // '$' 'processing-instruction' + || lk == 111647 // '$' 'rename' + || lk == 112159 // '$' 'replace' + || lk == 112671 // '$' 'return' + || lk == 113183 // '$' 'returning' + || lk == 113695 // '$' 'revalidation' + || lk == 114719 // '$' 'satisfies' + || lk == 115231 // '$' 'schema' + || lk == 115743 // '$' 'schema-attribute' + || lk == 116255 // '$' 'schema-element' + || lk == 116767 // '$' 'score' + || lk == 117279 // '$' 'self' + || lk == 119839 // '$' 'sliding' + || lk == 120351 // '$' 'some' + || lk == 120863 // '$' 'stable' + || lk == 121375 // '$' 'start' + || lk == 122911 // '$' 'strict' + || lk == 123935 // '$' 'structured-item' + || lk == 124447 // '$' 'switch' + || lk == 124959 // '$' 'text' + || lk == 127007 // '$' 'to' + || lk == 127519 // '$' 'treat' + || lk == 128031 // '$' 'try' + || lk == 128543 // '$' 'tumbling' + || lk == 129055 // '$' 'type' + || lk == 129567 // '$' 'typeswitch' + || lk == 130079 // '$' 'union' + || lk == 131103 // '$' 'unordered' + || lk == 131615 // '$' 'updating' + || lk == 133151 // '$' 'validate' + || lk == 133663 // '$' 'value' + || lk == 134175 // '$' 'variable' + || lk == 134687 // '$' 'version' + || lk == 136223 // '$' 'where' + || lk == 136735 // '$' 'while' + || lk == 138271 // '$' 'with' + || lk == 140319) // '$' 'xquery' + { + lk = memoized(2, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_GroupingVariable(); + lookahead1W(182); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + // 'let' | 'order' | 'return' | 'stable' | 'where' + if (l1 == 52 // ':=' + || l1 == 79) // 'as' + { + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(27); // S^WS | '(:' | ':=' + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + if (l1 == 94) // 'collation' + { + shiftT(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(2, e0, lk); + } + } + switch (lk) + { + case -1: + parse_GroupingVariable(); + lookahead1W(182); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + // 'let' | 'order' | 'return' | 'stable' | 'where' + if (l1 == 52 // ':=' + || l1 == 79) // 'as' + { + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(27); // S^WS | '(:' | ':=' + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + if (l1 == 94) // 'collation' + { + shift(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + break; + default: + parse_ExprSingle(); + } + eventHandler.endNonterminal("GroupingSpec", e0); + } + + function try_GroupingSpec() + { + switch (l1) + { + case 31: // '$' + lookahead2W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + default: + lk = l1; + } + if (lk == 3103 // '$' EQName^Token + || lk == 35871 // '$' 'after' + || lk == 36895 // '$' 'allowing' + || lk == 37407 // '$' 'ancestor' + || lk == 37919 // '$' 'ancestor-or-self' + || lk == 38431 // '$' 'and' + || lk == 39455 // '$' 'append' + || lk == 39967 // '$' 'array' + || lk == 40479 // '$' 'as' + || lk == 40991 // '$' 'ascending' + || lk == 41503 // '$' 'at' + || lk == 42015 // '$' 'attribute' + || lk == 42527 // '$' 'base-uri' + || lk == 43039 // '$' 'before' + || lk == 43551 // '$' 'boundary-space' + || lk == 44063 // '$' 'break' + || lk == 45087 // '$' 'case' + || lk == 45599 // '$' 'cast' + || lk == 46111 // '$' 'castable' + || lk == 46623 // '$' 'catch' + || lk == 47647 // '$' 'child' + || lk == 48159 // '$' 'collation' + || lk == 49183 // '$' 'comment' + || lk == 49695 // '$' 'constraint' + || lk == 50207 // '$' 'construction' + || lk == 51743 // '$' 'context' + || lk == 52255 // '$' 'continue' + || lk == 52767 // '$' 'copy' + || lk == 53279 // '$' 'copy-namespaces' + || lk == 53791 // '$' 'count' + || lk == 54303 // '$' 'decimal-format' + || lk == 55327 // '$' 'declare' + || lk == 55839 // '$' 'default' + || lk == 56351 // '$' 'delete' + || lk == 56863 // '$' 'descendant' + || lk == 57375 // '$' 'descendant-or-self' + || lk == 57887 // '$' 'descending' + || lk == 60447 // '$' 'div' + || lk == 60959 // '$' 'document' + || lk == 61471 // '$' 'document-node' + || lk == 61983 // '$' 'element' + || lk == 62495 // '$' 'else' + || lk == 63007 // '$' 'empty' + || lk == 63519 // '$' 'empty-sequence' + || lk == 64031 // '$' 'encoding' + || lk == 64543 // '$' 'end' + || lk == 65567 // '$' 'eq' + || lk == 66079 // '$' 'every' + || lk == 67103 // '$' 'except' + || lk == 67615 // '$' 'exit' + || lk == 68127 // '$' 'external' + || lk == 68639 // '$' 'first' + || lk == 69151 // '$' 'following' + || lk == 69663 // '$' 'following-sibling' + || lk == 70175 // '$' 'for' + || lk == 72223 // '$' 'ft-option' + || lk == 74271 // '$' 'function' + || lk == 74783 // '$' 'ge' + || lk == 75807 // '$' 'group' + || lk == 76831 // '$' 'gt' + || lk == 77343 // '$' 'idiv' + || lk == 77855 // '$' 'if' + || lk == 78367 // '$' 'import' + || lk == 78879 // '$' 'in' + || lk == 79391 // '$' 'index' + || lk == 81439 // '$' 'insert' + || lk == 81951 // '$' 'instance' + || lk == 82463 // '$' 'integrity' + || lk == 82975 // '$' 'intersect' + || lk == 83487 // '$' 'into' + || lk == 83999 // '$' 'is' + || lk == 84511 // '$' 'item' + || lk == 85023 // '$' 'json' + || lk == 85535 // '$' 'json-item' + || lk == 87071 // '$' 'last' + || lk == 87583 // '$' 'lax' + || lk == 88095 // '$' 'le' + || lk == 89119 // '$' 'let' + || lk == 90143 // '$' 'loop' + || lk == 91167 // '$' 'lt' + || lk == 92191 // '$' 'mod' + || lk == 92703 // '$' 'modify' + || lk == 93215 // '$' 'module' + || lk == 94239 // '$' 'namespace' + || lk == 94751 // '$' 'namespace-node' + || lk == 95263 // '$' 'ne' + || lk == 97823 // '$' 'node' + || lk == 98335 // '$' 'nodes' + || lk == 99359 // '$' 'object' + || lk == 101407 // '$' 'only' + || lk == 101919 // '$' 'option' + || lk == 102431 // '$' 'or' + || lk == 102943 // '$' 'order' + || lk == 103455 // '$' 'ordered' + || lk == 103967 // '$' 'ordering' + || lk == 105503 // '$' 'parent' + || lk == 108575 // '$' 'preceding' + || lk == 109087 // '$' 'preceding-sibling' + || lk == 110623 // '$' 'processing-instruction' + || lk == 111647 // '$' 'rename' + || lk == 112159 // '$' 'replace' + || lk == 112671 // '$' 'return' + || lk == 113183 // '$' 'returning' + || lk == 113695 // '$' 'revalidation' + || lk == 114719 // '$' 'satisfies' + || lk == 115231 // '$' 'schema' + || lk == 115743 // '$' 'schema-attribute' + || lk == 116255 // '$' 'schema-element' + || lk == 116767 // '$' 'score' + || lk == 117279 // '$' 'self' + || lk == 119839 // '$' 'sliding' + || lk == 120351 // '$' 'some' + || lk == 120863 // '$' 'stable' + || lk == 121375 // '$' 'start' + || lk == 122911 // '$' 'strict' + || lk == 123935 // '$' 'structured-item' + || lk == 124447 // '$' 'switch' + || lk == 124959 // '$' 'text' + || lk == 127007 // '$' 'to' + || lk == 127519 // '$' 'treat' + || lk == 128031 // '$' 'try' + || lk == 128543 // '$' 'tumbling' + || lk == 129055 // '$' 'type' + || lk == 129567 // '$' 'typeswitch' + || lk == 130079 // '$' 'union' + || lk == 131103 // '$' 'unordered' + || lk == 131615 // '$' 'updating' + || lk == 133151 // '$' 'validate' + || lk == 133663 // '$' 'value' + || lk == 134175 // '$' 'variable' + || lk == 134687 // '$' 'version' + || lk == 136223 // '$' 'where' + || lk == 136735 // '$' 'while' + || lk == 138271 // '$' 'with' + || lk == 140319) // '$' 'xquery' + { + lk = memoized(2, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_GroupingVariable(); + lookahead1W(182); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + // 'let' | 'order' | 'return' | 'stable' | 'where' + if (l1 == 52 // ':=' + || l1 == 79) // 'as' + { + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(27); // S^WS | '(:' | ':=' + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + if (l1 == 94) // 'collation' + { + shiftT(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + memoize(2, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(2, e0A, -2); + } + } + } + switch (lk) + { + case -1: + try_GroupingVariable(); + lookahead1W(182); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + // 'let' | 'order' | 'return' | 'stable' | 'where' + if (l1 == 52 // ':=' + || l1 == 79) // 'as' + { + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(27); // S^WS | '(:' | ':=' + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + if (l1 == 94) // 'collation' + { + shiftT(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + break; + case -3: + break; + default: + try_ExprSingle(); + } + } + + function parse_GroupingVariable() + { + eventHandler.startNonterminal("GroupingVariable", e0); + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("GroupingVariable", e0); + } + + function try_GroupingVariable() + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + } + + function parse_OrderByClause() + { + eventHandler.startNonterminal("OrderByClause", e0); + switch (l1) + { + case 201: // 'order' + shift(201); // 'order' + lookahead1W(34); // S^WS | '(:' | 'by' + shift(87); // 'by' + break; + default: + shift(236); // 'stable' + lookahead1W(67); // S^WS | '(:' | 'order' + shift(201); // 'order' + lookahead1W(34); // S^WS | '(:' | 'by' + shift(87); // 'by' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_OrderSpecList(); + eventHandler.endNonterminal("OrderByClause", e0); + } + + function try_OrderByClause() + { + switch (l1) + { + case 201: // 'order' + shiftT(201); // 'order' + lookahead1W(34); // S^WS | '(:' | 'by' + shiftT(87); // 'by' + break; + default: + shiftT(236); // 'stable' + lookahead1W(67); // S^WS | '(:' | 'order' + shiftT(201); // 'order' + lookahead1W(34); // S^WS | '(:' | 'by' + shiftT(87); // 'by' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_OrderSpecList(); + } + + function parse_OrderSpecList() + { + eventHandler.startNonterminal("OrderSpecList", e0); + parse_OrderSpec(); + for (;;) + { + lookahead1W(176); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + // 'stable' | 'where' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_OrderSpec(); + } + eventHandler.endNonterminal("OrderSpecList", e0); + } + + function try_OrderSpecList() + { + try_OrderSpec(); + for (;;) + { + lookahead1W(176); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + // 'stable' | 'where' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_OrderSpec(); + } + } + + function parse_OrderSpec() + { + eventHandler.startNonterminal("OrderSpec", e0); + parse_ExprSingle(); + whitespace(); + parse_OrderModifier(); + eventHandler.endNonterminal("OrderSpec", e0); + } + + function try_OrderSpec() + { + try_ExprSingle(); + try_OrderModifier(); + } + + function parse_OrderModifier() + { + eventHandler.startNonterminal("OrderModifier", e0); + if (l1 == 80 // 'ascending' + || l1 == 113) // 'descending' + { + switch (l1) + { + case 80: // 'ascending' + shift(80); // 'ascending' + break; + default: + shift(113); // 'descending' + } + } + lookahead1W(179); // S^WS | '(:' | ',' | 'collation' | 'count' | 'empty' | 'for' | 'group' | 'let' | + // 'order' | 'return' | 'stable' | 'where' + if (l1 == 123) // 'empty' + { + shift(123); // 'empty' + lookahead1W(121); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 147: // 'greatest' + shift(147); // 'greatest' + break; + default: + shift(173); // 'least' + } + } + lookahead1W(177); // S^WS | '(:' | ',' | 'collation' | 'count' | 'for' | 'group' | 'let' | 'order' | + // 'return' | 'stable' | 'where' + if (l1 == 94) // 'collation' + { + shift(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + eventHandler.endNonterminal("OrderModifier", e0); + } + + function try_OrderModifier() + { + if (l1 == 80 // 'ascending' + || l1 == 113) // 'descending' + { + switch (l1) + { + case 80: // 'ascending' + shiftT(80); // 'ascending' + break; + default: + shiftT(113); // 'descending' + } + } + lookahead1W(179); // S^WS | '(:' | ',' | 'collation' | 'count' | 'empty' | 'for' | 'group' | 'let' | + // 'order' | 'return' | 'stable' | 'where' + if (l1 == 123) // 'empty' + { + shiftT(123); // 'empty' + lookahead1W(121); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 147: // 'greatest' + shiftT(147); // 'greatest' + break; + default: + shiftT(173); // 'least' + } + } + lookahead1W(177); // S^WS | '(:' | ',' | 'collation' | 'count' | 'for' | 'group' | 'let' | 'order' | + // 'return' | 'stable' | 'where' + if (l1 == 94) // 'collation' + { + shiftT(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + } + + function parse_ReturnClause() + { + eventHandler.startNonterminal("ReturnClause", e0); + shift(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ReturnClause", e0); + } + + function try_ReturnClause() + { + shiftT(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_QuantifiedExpr() + { + eventHandler.startNonterminal("QuantifiedExpr", e0); + switch (l1) + { + case 235: // 'some' + shift(235); // 'some' + break; + default: + shift(129); // 'every' + } + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_QuantifiedVarDecl(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_QuantifiedVarDecl(); + } + shift(224); // 'satisfies' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("QuantifiedExpr", e0); + } + + function try_QuantifiedExpr() + { + switch (l1) + { + case 235: // 'some' + shiftT(235); // 'some' + break; + default: + shiftT(129); // 'every' + } + lookahead1W(21); // S^WS | '$' | '(:' + try_QuantifiedVarDecl(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_QuantifiedVarDecl(); + } + shiftT(224); // 'satisfies' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_QuantifiedVarDecl() + { + eventHandler.startNonterminal("QuantifiedVarDecl", e0); + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(110); // S^WS | '(:' | 'as' | 'in' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(53); // S^WS | '(:' | 'in' + shift(154); // 'in' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("QuantifiedVarDecl", e0); + } + + function try_QuantifiedVarDecl() + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(110); // S^WS | '(:' | 'as' | 'in' + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(53); // S^WS | '(:' | 'in' + shiftT(154); // 'in' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_SwitchExpr() + { + eventHandler.startNonterminal("SwitchExpr", e0); + shift(243); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(37); // ')' + for (;;) + { + lookahead1W(35); // S^WS | '(:' | 'case' + whitespace(); + parse_SwitchCaseClause(); + if (l1 != 88) // 'case' + { + break; + } + } + shift(109); // 'default' + lookahead1W(70); // S^WS | '(:' | 'return' + shift(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchExpr", e0); + } + + function try_SwitchExpr() + { + shiftT(243); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(37); // ')' + for (;;) + { + lookahead1W(35); // S^WS | '(:' | 'case' + try_SwitchCaseClause(); + if (l1 != 88) // 'case' + { + break; + } + } + shiftT(109); // 'default' + lookahead1W(70); // S^WS | '(:' | 'return' + shiftT(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_SwitchCaseClause() + { + eventHandler.startNonterminal("SwitchCaseClause", e0); + for (;;) + { + shift(88); // 'case' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_SwitchCaseOperand(); + if (l1 != 88) // 'case' + { + break; + } + } + shift(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchCaseClause", e0); + } + + function try_SwitchCaseClause() + { + for (;;) + { + shiftT(88); // 'case' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_SwitchCaseOperand(); + if (l1 != 88) // 'case' + { + break; + } + } + shiftT(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_SwitchCaseOperand() + { + eventHandler.startNonterminal("SwitchCaseOperand", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchCaseOperand", e0); + } + + function try_SwitchCaseOperand() + { + try_ExprSingle(); + } + + function parse_TypeswitchExpr() + { + eventHandler.startNonterminal("TypeswitchExpr", e0); + shift(253); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(37); // ')' + for (;;) + { + lookahead1W(35); // S^WS | '(:' | 'case' + whitespace(); + parse_CaseClause(); + if (l1 != 88) // 'case' + { + break; + } + } + shift(109); // 'default' + lookahead1W(95); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + } + lookahead1W(70); // S^WS | '(:' | 'return' + shift(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TypeswitchExpr", e0); + } + + function try_TypeswitchExpr() + { + shiftT(253); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(37); // ')' + for (;;) + { + lookahead1W(35); // S^WS | '(:' | 'case' + try_CaseClause(); + if (l1 != 88) // 'case' + { + break; + } + } + shiftT(109); // 'default' + lookahead1W(95); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + } + lookahead1W(70); // S^WS | '(:' | 'return' + shiftT(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_CaseClause() + { + eventHandler.startNonterminal("CaseClause", e0); + shift(88); // 'case' + lookahead1W(261); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(30); // S^WS | '(:' | 'as' + shift(79); // 'as' + } + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceTypeUnion(); + shift(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("CaseClause", e0); + } + + function try_CaseClause() + { + shiftT(88); // 'case' + lookahead1W(261); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(30); // S^WS | '(:' | 'as' + shiftT(79); // 'as' + } + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceTypeUnion(); + shiftT(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_SequenceTypeUnion() + { + eventHandler.startNonterminal("SequenceTypeUnion", e0); + parse_SequenceType(); + for (;;) + { + lookahead1W(134); // S^WS | '(:' | 'return' | '|' + if (l1 != 279) // '|' + { + break; + } + shift(279); // '|' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("SequenceTypeUnion", e0); + } + + function try_SequenceTypeUnion() + { + try_SequenceType(); + for (;;) + { + lookahead1W(134); // S^WS | '(:' | 'return' | '|' + if (l1 != 279) // '|' + { + break; + } + shiftT(279); // '|' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceType(); + } + } + + function parse_IfExpr() + { + eventHandler.startNonterminal("IfExpr", e0); + shift(152); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(37); // ')' + lookahead1W(77); // S^WS | '(:' | 'then' + shift(245); // 'then' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(122); // 'else' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("IfExpr", e0); + } + + function try_IfExpr() + { + shiftT(152); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(37); // ')' + lookahead1W(77); // S^WS | '(:' | 'then' + shiftT(245); // 'then' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + shiftT(122); // 'else' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_TryCatchExpr() + { + eventHandler.startNonterminal("TryCatchExpr", e0); + parse_TryClause(); + for (;;) + { + lookahead1W(36); // S^WS | '(:' | 'catch' + whitespace(); + parse_CatchClause(); + lookahead1W(183); // S^WS | EOF | '(:' | ')' | ',' | ':' | ';' | ']' | 'after' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'catch' | 'collation' | 'count' | 'default' | + // 'descending' | 'else' | 'empty' | 'end' | 'for' | 'group' | 'into' | 'let' | + // 'modify' | 'only' | 'order' | 'return' | 'satisfies' | 'stable' | 'start' | + // 'where' | 'with' | '|}' | '}' + if (l1 != 91) // 'catch' + { + break; + } + } + eventHandler.endNonterminal("TryCatchExpr", e0); + } + + function try_TryCatchExpr() + { + try_TryClause(); + for (;;) + { + lookahead1W(36); // S^WS | '(:' | 'catch' + try_CatchClause(); + lookahead1W(183); // S^WS | EOF | '(:' | ')' | ',' | ':' | ';' | ']' | 'after' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'catch' | 'collation' | 'count' | 'default' | + // 'descending' | 'else' | 'empty' | 'end' | 'for' | 'group' | 'into' | 'let' | + // 'modify' | 'only' | 'order' | 'return' | 'satisfies' | 'stable' | 'start' | + // 'where' | 'with' | '|}' | '}' + if (l1 != 91) // 'catch' + { + break; + } + } + } + + function parse_TryClause() + { + eventHandler.startNonterminal("TryClause", e0); + shift(250); // 'try' + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_TryTargetExpr(); + shift(282); // '}' + eventHandler.endNonterminal("TryClause", e0); + } + + function try_TryClause() + { + shiftT(250); // 'try' + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_TryTargetExpr(); + shiftT(282); // '}' + } + + function parse_TryTargetExpr() + { + eventHandler.startNonterminal("TryTargetExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("TryTargetExpr", e0); + } + + function try_TryTargetExpr() + { + try_Expr(); + } + + function parse_CatchClause() + { + eventHandler.startNonterminal("CatchClause", e0); + shift(91); // 'catch' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_CatchErrorList(); + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + eventHandler.endNonterminal("CatchClause", e0); + } + + function try_CatchClause() + { + shiftT(91); // 'catch' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_CatchErrorList(); + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + } + + function parse_CatchErrorList() + { + eventHandler.startNonterminal("CatchErrorList", e0); + parse_NameTest(); + for (;;) + { + lookahead1W(136); // S^WS | '(:' | '{' | '|' + if (l1 != 279) // '|' + { + break; + } + shift(279); // '|' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_NameTest(); + } + eventHandler.endNonterminal("CatchErrorList", e0); + } + + function try_CatchErrorList() + { + try_NameTest(); + for (;;) + { + lookahead1W(136); // S^WS | '(:' | '{' | '|' + if (l1 != 279) // '|' + { + break; + } + shiftT(279); // '|' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_NameTest(); + } + } + + function parse_OrExpr() + { + eventHandler.startNonterminal("OrExpr", e0); + parse_AndExpr(); + for (;;) + { + if (l1 != 200) // 'or' + { + break; + } + shift(200); // 'or' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_AndExpr(); + } + eventHandler.endNonterminal("OrExpr", e0); + } + + function try_OrExpr() + { + try_AndExpr(); + for (;;) + { + if (l1 != 200) // 'or' + { + break; + } + shiftT(200); // 'or' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_AndExpr(); + } + } + + function parse_AndExpr() + { + eventHandler.startNonterminal("AndExpr", e0); + parse_ComparisonExpr(); + for (;;) + { + if (l1 != 75) // 'and' + { + break; + } + shift(75); // 'and' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ComparisonExpr(); + } + eventHandler.endNonterminal("AndExpr", e0); + } + + function try_AndExpr() + { + try_ComparisonExpr(); + for (;;) + { + if (l1 != 75) // 'and' + { + break; + } + shiftT(75); // 'and' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ComparisonExpr(); + } + } + + function parse_ComparisonExpr() + { + eventHandler.startNonterminal("ComparisonExpr", e0); + parse_FTContainsExpr(); + if (l1 == 27 // '!=' + || l1 == 54 // '<' + || l1 == 57 // '<<' + || l1 == 58 // '<=' + || l1 == 60 // '=' + || l1 == 61 // '>' + || l1 == 62 // '>=' + || l1 == 63 // '>>' + || l1 == 128 // 'eq' + || l1 == 146 // 'ge' + || l1 == 150 // 'gt' + || l1 == 164 // 'is' + || l1 == 172 // 'le' + || l1 == 178 // 'lt' + || l1 == 186) // 'ne' + { + switch (l1) + { + case 128: // 'eq' + case 146: // 'ge' + case 150: // 'gt' + case 172: // 'le' + case 178: // 'lt' + case 186: // 'ne' + whitespace(); + parse_ValueComp(); + break; + case 57: // '<<' + case 63: // '>>' + case 164: // 'is' + whitespace(); + parse_NodeComp(); + break; + default: + whitespace(); + parse_GeneralComp(); + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_FTContainsExpr(); + } + eventHandler.endNonterminal("ComparisonExpr", e0); + } + + function try_ComparisonExpr() + { + try_FTContainsExpr(); + if (l1 == 27 // '!=' + || l1 == 54 // '<' + || l1 == 57 // '<<' + || l1 == 58 // '<=' + || l1 == 60 // '=' + || l1 == 61 // '>' + || l1 == 62 // '>=' + || l1 == 63 // '>>' + || l1 == 128 // 'eq' + || l1 == 146 // 'ge' + || l1 == 150 // 'gt' + || l1 == 164 // 'is' + || l1 == 172 // 'le' + || l1 == 178 // 'lt' + || l1 == 186) // 'ne' + { + switch (l1) + { + case 128: // 'eq' + case 146: // 'ge' + case 150: // 'gt' + case 172: // 'le' + case 178: // 'lt' + case 186: // 'ne' + try_ValueComp(); + break; + case 57: // '<<' + case 63: // '>>' + case 164: // 'is' + try_NodeComp(); + break; + default: + try_GeneralComp(); + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_FTContainsExpr(); + } + } + + function parse_FTContainsExpr() + { + eventHandler.startNonterminal("FTContainsExpr", e0); + parse_StringConcatExpr(); + if (l1 == 99) // 'contains' + { + shift(99); // 'contains' + lookahead1W(76); // S^WS | '(:' | 'text' + shift(244); // 'text' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTSelection(); + if (l1 == 271) // 'without' + { + whitespace(); + parse_FTIgnoreOption(); + } + } + eventHandler.endNonterminal("FTContainsExpr", e0); + } + + function try_FTContainsExpr() + { + try_StringConcatExpr(); + if (l1 == 99) // 'contains' + { + shiftT(99); // 'contains' + lookahead1W(76); // S^WS | '(:' | 'text' + shiftT(244); // 'text' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTSelection(); + if (l1 == 271) // 'without' + { + try_FTIgnoreOption(); + } + } + } + + function parse_StringConcatExpr() + { + eventHandler.startNonterminal("StringConcatExpr", e0); + parse_RangeExpr(); + for (;;) + { + if (l1 != 280) // '||' + { + break; + } + shift(280); // '||' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_RangeExpr(); + } + eventHandler.endNonterminal("StringConcatExpr", e0); + } + + function try_StringConcatExpr() + { + try_RangeExpr(); + for (;;) + { + if (l1 != 280) // '||' + { + break; + } + shiftT(280); // '||' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_RangeExpr(); + } + } + + function parse_RangeExpr() + { + eventHandler.startNonterminal("RangeExpr", e0); + parse_AdditiveExpr(); + if (l1 == 248) // 'to' + { + shift(248); // 'to' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + } + eventHandler.endNonterminal("RangeExpr", e0); + } + + function try_RangeExpr() + { + try_AdditiveExpr(); + if (l1 == 248) // 'to' + { + shiftT(248); // 'to' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_AdditiveExpr(); + } + } + + function parse_AdditiveExpr() + { + eventHandler.startNonterminal("AdditiveExpr", e0); + parse_MultiplicativeExpr(); + for (;;) + { + if (l1 != 40 // '+' + && l1 != 42) // '-' + { + break; + } + switch (l1) + { + case 40: // '+' + shift(40); // '+' + break; + default: + shift(42); // '-' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_MultiplicativeExpr(); + } + eventHandler.endNonterminal("AdditiveExpr", e0); + } + + function try_AdditiveExpr() + { + try_MultiplicativeExpr(); + for (;;) + { + if (l1 != 40 // '+' + && l1 != 42) // '-' + { + break; + } + switch (l1) + { + case 40: // '+' + shiftT(40); // '+' + break; + default: + shiftT(42); // '-' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_MultiplicativeExpr(); + } + } + + function parse_MultiplicativeExpr() + { + eventHandler.startNonterminal("MultiplicativeExpr", e0); + parse_UnionExpr(); + for (;;) + { + if (l1 != 38 // '*' + && l1 != 118 // 'div' + && l1 != 151 // 'idiv' + && l1 != 180) // 'mod' + { + break; + } + switch (l1) + { + case 38: // '*' + shift(38); // '*' + break; + case 118: // 'div' + shift(118); // 'div' + break; + case 151: // 'idiv' + shift(151); // 'idiv' + break; + default: + shift(180); // 'mod' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_UnionExpr(); + } + eventHandler.endNonterminal("MultiplicativeExpr", e0); + } + + function try_MultiplicativeExpr() + { + try_UnionExpr(); + for (;;) + { + if (l1 != 38 // '*' + && l1 != 118 // 'div' + && l1 != 151 // 'idiv' + && l1 != 180) // 'mod' + { + break; + } + switch (l1) + { + case 38: // '*' + shiftT(38); // '*' + break; + case 118: // 'div' + shiftT(118); // 'div' + break; + case 151: // 'idiv' + shiftT(151); // 'idiv' + break; + default: + shiftT(180); // 'mod' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_UnionExpr(); + } + } + + function parse_UnionExpr() + { + eventHandler.startNonterminal("UnionExpr", e0); + parse_IntersectExceptExpr(); + for (;;) + { + if (l1 != 254 // 'union' + && l1 != 279) // '|' + { + break; + } + switch (l1) + { + case 254: // 'union' + shift(254); // 'union' + break; + default: + shift(279); // '|' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_IntersectExceptExpr(); + } + eventHandler.endNonterminal("UnionExpr", e0); + } + + function try_UnionExpr() + { + try_IntersectExceptExpr(); + for (;;) + { + if (l1 != 254 // 'union' + && l1 != 279) // '|' + { + break; + } + switch (l1) + { + case 254: // 'union' + shiftT(254); // 'union' + break; + default: + shiftT(279); // '|' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_IntersectExceptExpr(); + } + } + + function parse_IntersectExceptExpr() + { + eventHandler.startNonterminal("IntersectExceptExpr", e0); + parse_InstanceofExpr(); + for (;;) + { + lookahead1W(222); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'intersect' | 'into' | 'is' | 'le' | 'let' | + // 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | + // 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 131 // 'except' + && l1 != 162) // 'intersect' + { + break; + } + switch (l1) + { + case 162: // 'intersect' + shift(162); // 'intersect' + break; + default: + shift(131); // 'except' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_InstanceofExpr(); + } + eventHandler.endNonterminal("IntersectExceptExpr", e0); + } + + function try_IntersectExceptExpr() + { + try_InstanceofExpr(); + for (;;) + { + lookahead1W(222); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'intersect' | 'into' | 'is' | 'le' | 'let' | + // 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | + // 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 131 // 'except' + && l1 != 162) // 'intersect' + { + break; + } + switch (l1) + { + case 162: // 'intersect' + shiftT(162); // 'intersect' + break; + default: + shiftT(131); // 'except' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_InstanceofExpr(); + } + } + + function parse_InstanceofExpr() + { + eventHandler.startNonterminal("InstanceofExpr", e0); + parse_TreatExpr(); + lookahead1W(223); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 == 160) // 'instance' + { + shift(160); // 'instance' + lookahead1W(64); // S^WS | '(:' | 'of' + shift(196); // 'of' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("InstanceofExpr", e0); + } + + function try_InstanceofExpr() + { + try_TreatExpr(); + lookahead1W(223); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 == 160) // 'instance' + { + shiftT(160); // 'instance' + lookahead1W(64); // S^WS | '(:' | 'of' + shiftT(196); // 'of' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceType(); + } + } + + function parse_TreatExpr() + { + eventHandler.startNonterminal("TreatExpr", e0); + parse_CastableExpr(); + lookahead1W(224); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + if (l1 == 249) // 'treat' + { + shift(249); // 'treat' + lookahead1W(30); // S^WS | '(:' | 'as' + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("TreatExpr", e0); + } + + function try_TreatExpr() + { + try_CastableExpr(); + lookahead1W(224); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + if (l1 == 249) // 'treat' + { + shiftT(249); // 'treat' + lookahead1W(30); // S^WS | '(:' | 'as' + shiftT(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceType(); + } + } + + function parse_CastableExpr() + { + eventHandler.startNonterminal("CastableExpr", e0); + parse_CastExpr(); + lookahead1W(225); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'castable' | 'collation' | 'contains' | 'count' | + // 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | + // 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + if (l1 == 90) // 'castable' + { + shift(90); // 'castable' + lookahead1W(30); // S^WS | '(:' | 'as' + shift(79); // 'as' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SingleType(); + } + eventHandler.endNonterminal("CastableExpr", e0); + } + + function try_CastableExpr() + { + try_CastExpr(); + lookahead1W(225); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'castable' | 'collation' | 'contains' | 'count' | + // 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | + // 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + if (l1 == 90) // 'castable' + { + shiftT(90); // 'castable' + lookahead1W(30); // S^WS | '(:' | 'as' + shiftT(79); // 'as' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SingleType(); + } + } + + function parse_CastExpr() + { + eventHandler.startNonterminal("CastExpr", e0); + parse_UnaryExpr(); + lookahead1W(227); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'cast' | 'castable' | 'collation' | 'contains' | + // 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | + // 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | + // 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | + // 'order' | 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | + // 'start' | 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | + // '||' | '|}' | '}' + if (l1 == 89) // 'cast' + { + shift(89); // 'cast' + lookahead1W(30); // S^WS | '(:' | 'as' + shift(79); // 'as' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SingleType(); + } + eventHandler.endNonterminal("CastExpr", e0); + } + + function try_CastExpr() + { + try_UnaryExpr(); + lookahead1W(227); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'cast' | 'castable' | 'collation' | 'contains' | + // 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | + // 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | + // 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | + // 'order' | 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | + // 'start' | 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | + // '||' | '|}' | '}' + if (l1 == 89) // 'cast' + { + shiftT(89); // 'cast' + lookahead1W(30); // S^WS | '(:' | 'as' + shiftT(79); // 'as' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SingleType(); + } + } + + function parse_UnaryExpr() + { + eventHandler.startNonterminal("UnaryExpr", e0); + for (;;) + { + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + if (l1 != 40 // '+' + && l1 != 42) // '-' + { + break; + } + switch (l1) + { + case 42: // '-' + shift(42); // '-' + break; + default: + shift(40); // '+' + } + } + whitespace(); + parse_ValueExpr(); + eventHandler.endNonterminal("UnaryExpr", e0); + } + + function try_UnaryExpr() + { + for (;;) + { + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + if (l1 != 40 // '+' + && l1 != 42) // '-' + { + break; + } + switch (l1) + { + case 42: // '-' + shiftT(42); // '-' + break; + default: + shiftT(40); // '+' + } + } + try_ValueExpr(); + } + + function parse_ValueExpr() + { + eventHandler.startNonterminal("ValueExpr", e0); + switch (l1) + { + case 260: // 'validate' + lookahead2W(247); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'lax' | 'le' | 'let' | + // 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | + // 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | 'strict' | 'times' | + // 'to' | 'treat' | 'type' | 'union' | 'where' | 'with' | 'words' | '{' | '|' | + // '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 87812: // 'validate' 'lax' + case 123140: // 'validate' 'strict' + case 129284: // 'validate' 'type' + case 141572: // 'validate' '{' + parse_ValidateExpr(); + break; + case 35: // '(#' + parse_ExtensionExpr(); + break; + default: + parse_SimpleMapExpr(); + } + eventHandler.endNonterminal("ValueExpr", e0); + } + + function try_ValueExpr() + { + switch (l1) + { + case 260: // 'validate' + lookahead2W(247); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'lax' | 'le' | 'let' | + // 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | + // 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | 'strict' | 'times' | + // 'to' | 'treat' | 'type' | 'union' | 'where' | 'with' | 'words' | '{' | '|' | + // '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 87812: // 'validate' 'lax' + case 123140: // 'validate' 'strict' + case 129284: // 'validate' 'type' + case 141572: // 'validate' '{' + try_ValidateExpr(); + break; + case 35: // '(#' + try_ExtensionExpr(); + break; + default: + try_SimpleMapExpr(); + } + } + + function parse_SimpleMapExpr() + { + eventHandler.startNonterminal("SimpleMapExpr", e0); + parse_PathExpr(); + for (;;) + { + if (l1 != 26) // '!' + { + break; + } + shift(26); // '!' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_PathExpr(); + } + eventHandler.endNonterminal("SimpleMapExpr", e0); + } + + function try_SimpleMapExpr() + { + try_PathExpr(); + for (;;) + { + if (l1 != 26) // '!' + { + break; + } + shiftT(26); // '!' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_PathExpr(); + } + } + + function parse_GeneralComp() + { + eventHandler.startNonterminal("GeneralComp", e0); + switch (l1) + { + case 60: // '=' + shift(60); // '=' + break; + case 27: // '!=' + shift(27); // '!=' + break; + case 54: // '<' + shift(54); // '<' + break; + case 58: // '<=' + shift(58); // '<=' + break; + case 61: // '>' + shift(61); // '>' + break; + default: + shift(62); // '>=' + } + eventHandler.endNonterminal("GeneralComp", e0); + } + + function try_GeneralComp() + { + switch (l1) + { + case 60: // '=' + shiftT(60); // '=' + break; + case 27: // '!=' + shiftT(27); // '!=' + break; + case 54: // '<' + shiftT(54); // '<' + break; + case 58: // '<=' + shiftT(58); // '<=' + break; + case 61: // '>' + shiftT(61); // '>' + break; + default: + shiftT(62); // '>=' + } + } + + function parse_ValueComp() + { + eventHandler.startNonterminal("ValueComp", e0); + switch (l1) + { + case 128: // 'eq' + shift(128); // 'eq' + break; + case 186: // 'ne' + shift(186); // 'ne' + break; + case 178: // 'lt' + shift(178); // 'lt' + break; + case 172: // 'le' + shift(172); // 'le' + break; + case 150: // 'gt' + shift(150); // 'gt' + break; + default: + shift(146); // 'ge' + } + eventHandler.endNonterminal("ValueComp", e0); + } + + function try_ValueComp() + { + switch (l1) + { + case 128: // 'eq' + shiftT(128); // 'eq' + break; + case 186: // 'ne' + shiftT(186); // 'ne' + break; + case 178: // 'lt' + shiftT(178); // 'lt' + break; + case 172: // 'le' + shiftT(172); // 'le' + break; + case 150: // 'gt' + shiftT(150); // 'gt' + break; + default: + shiftT(146); // 'ge' + } + } + + function parse_NodeComp() + { + eventHandler.startNonterminal("NodeComp", e0); + switch (l1) + { + case 164: // 'is' + shift(164); // 'is' + break; + case 57: // '<<' + shift(57); // '<<' + break; + default: + shift(63); // '>>' + } + eventHandler.endNonterminal("NodeComp", e0); + } + + function try_NodeComp() + { + switch (l1) + { + case 164: // 'is' + shiftT(164); // 'is' + break; + case 57: // '<<' + shiftT(57); // '<<' + break; + default: + shiftT(63); // '>>' + } + } + + function parse_ValidateExpr() + { + eventHandler.startNonterminal("ValidateExpr", e0); + shift(260); // 'validate' + lookahead1W(160); // S^WS | '(:' | 'lax' | 'strict' | 'type' | '{' + if (l1 != 276) // '{' + { + switch (l1) + { + case 252: // 'type' + shift(252); // 'type' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_TypeName(); + break; + default: + whitespace(); + parse_ValidationMode(); + } + } + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + eventHandler.endNonterminal("ValidateExpr", e0); + } + + function try_ValidateExpr() + { + shiftT(260); // 'validate' + lookahead1W(160); // S^WS | '(:' | 'lax' | 'strict' | 'type' | '{' + if (l1 != 276) // '{' + { + switch (l1) + { + case 252: // 'type' + shiftT(252); // 'type' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_TypeName(); + break; + default: + try_ValidationMode(); + } + } + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + } + + function parse_ValidationMode() + { + eventHandler.startNonterminal("ValidationMode", e0); + switch (l1) + { + case 171: // 'lax' + shift(171); // 'lax' + break; + default: + shift(240); // 'strict' + } + eventHandler.endNonterminal("ValidationMode", e0); + } + + function try_ValidationMode() + { + switch (l1) + { + case 171: // 'lax' + shiftT(171); // 'lax' + break; + default: + shiftT(240); // 'strict' + } + } + + function parse_ExtensionExpr() + { + eventHandler.startNonterminal("ExtensionExpr", e0); + for (;;) + { + whitespace(); + parse_Pragma(); + lookahead1W(100); // S^WS | '(#' | '(:' | '{' + if (l1 != 35) // '(#' + { + break; + } + } + shift(276); // '{' + lookahead1W(273); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + if (l1 != 282) // '}' + { + whitespace(); + parse_Expr(); + } + shift(282); // '}' + eventHandler.endNonterminal("ExtensionExpr", e0); + } + + function try_ExtensionExpr() + { + for (;;) + { + try_Pragma(); + lookahead1W(100); // S^WS | '(#' | '(:' | '{' + if (l1 != 35) // '(#' + { + break; + } + } + shiftT(276); // '{' + lookahead1W(273); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + if (l1 != 282) // '}' + { + try_Expr(); + } + shiftT(282); // '}' + } + + function parse_Pragma() + { + eventHandler.startNonterminal("Pragma", e0); + shift(35); // '(#' + lookahead1(251); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 == 21) // S + { + shift(21); // S + } + parse_EQName(); + lookahead1(10); // S | '#)' + if (l1 == 21) // S + { + shift(21); // S + lookahead1(0); // PragmaContents + shift(1); // PragmaContents + } + lookahead1(5); // '#)' + shift(30); // '#)' + eventHandler.endNonterminal("Pragma", e0); + } + + function try_Pragma() + { + shiftT(35); // '(#' + lookahead1(251); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 == 21) // S + { + shiftT(21); // S + } + try_EQName(); + lookahead1(10); // S | '#)' + if (l1 == 21) // S + { + shiftT(21); // S + lookahead1(0); // PragmaContents + shiftT(1); // PragmaContents + } + lookahead1(5); // '#)' + shiftT(30); // '#)' + } + + function parse_PathExpr() + { + eventHandler.startNonterminal("PathExpr", e0); + switch (l1) + { + case 46: // '/' + shift(46); // '/' + lookahead1W(285); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '!' | '!=' | '$' | '%' | '(' | '(:' | ')' | '*' | + // '+' | ',' | '-' | '.' | '..' | ':' | ';' | '<' | '<!--' | '<<' | '<=' | '<?' | + // '=' | '>' | '>=' | '>>' | '@' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'paragraphs' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'self' | + // 'sentences' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'times' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'words' | 'xquery' | '{' | '{|' | '|' | '||' | '|}' | '}' + switch (l1) + { + case 25: // EOF + case 26: // '!' + case 27: // '!=' + case 37: // ')' + case 38: // '*' + case 40: // '+' + case 41: // ',' + case 42: // '-' + case 49: // ':' + case 53: // ';' + case 57: // '<<' + case 58: // '<=' + case 60: // '=' + case 61: // '>' + case 62: // '>=' + case 63: // '>>' + case 69: // ']' + case 87: // 'by' + case 99: // 'contains' + case 205: // 'paragraphs' + case 232: // 'sentences' + case 247: // 'times' + case 273: // 'words' + case 279: // '|' + case 280: // '||' + case 281: // '|}' + case 282: // '}' + break; + default: + whitespace(); + parse_RelativePathExpr(); + } + break; + case 47: // '//' + shift(47); // '//' + lookahead1W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_RelativePathExpr(); + break; + default: + parse_RelativePathExpr(); + } + eventHandler.endNonterminal("PathExpr", e0); + } + + function try_PathExpr() + { + switch (l1) + { + case 46: // '/' + shiftT(46); // '/' + lookahead1W(285); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '!' | '!=' | '$' | '%' | '(' | '(:' | ')' | '*' | + // '+' | ',' | '-' | '.' | '..' | ':' | ';' | '<' | '<!--' | '<<' | '<=' | '<?' | + // '=' | '>' | '>=' | '>>' | '@' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'paragraphs' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'self' | + // 'sentences' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'times' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'words' | 'xquery' | '{' | '{|' | '|' | '||' | '|}' | '}' + switch (l1) + { + case 25: // EOF + case 26: // '!' + case 27: // '!=' + case 37: // ')' + case 38: // '*' + case 40: // '+' + case 41: // ',' + case 42: // '-' + case 49: // ':' + case 53: // ';' + case 57: // '<<' + case 58: // '<=' + case 60: // '=' + case 61: // '>' + case 62: // '>=' + case 63: // '>>' + case 69: // ']' + case 87: // 'by' + case 99: // 'contains' + case 205: // 'paragraphs' + case 232: // 'sentences' + case 247: // 'times' + case 273: // 'words' + case 279: // '|' + case 280: // '||' + case 281: // '|}' + case 282: // '}' + break; + default: + try_RelativePathExpr(); + } + break; + case 47: // '//' + shiftT(47); // '//' + lookahead1W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_RelativePathExpr(); + break; + default: + try_RelativePathExpr(); + } + } + + function parse_RelativePathExpr() + { + eventHandler.startNonterminal("RelativePathExpr", e0); + parse_StepExpr(); + for (;;) + { + switch (l1) + { + case 26: // '!' + lookahead2W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 27 // '!=' + && lk != 37 // ')' + && lk != 38 // '*' + && lk != 40 // '+' + && lk != 41 // ',' + && lk != 42 // '-' + && lk != 46 // '/' + && lk != 47 // '//' + && lk != 49 // ':' + && lk != 53 // ';' + && lk != 54 // '<' + && lk != 57 // '<<' + && lk != 58 // '<=' + && lk != 60 // '=' + && lk != 61 // '>' + && lk != 62 // '>=' + && lk != 63 // '>>' + && lk != 69 // ']' + && lk != 70 // 'after' + && lk != 75 // 'and' + && lk != 79 // 'as' + && lk != 80 // 'ascending' + && lk != 81 // 'at' + && lk != 84 // 'before' + && lk != 87 // 'by' + && lk != 88 // 'case' + && lk != 89 // 'cast' + && lk != 90 // 'castable' + && lk != 94 // 'collation' + && lk != 99 // 'contains' + && lk != 105 // 'count' + && lk != 109 // 'default' + && lk != 113 // 'descending' + && lk != 118 // 'div' + && lk != 122 // 'else' + && lk != 123 // 'empty' + && lk != 126 // 'end' + && lk != 128 // 'eq' + && lk != 131 // 'except' + && lk != 137 // 'for' + && lk != 146 // 'ge' + && lk != 148 // 'group' + && lk != 150 // 'gt' + && lk != 151 // 'idiv' + && lk != 160 // 'instance' + && lk != 162 // 'intersect' + && lk != 163 // 'into' + && lk != 164 // 'is' + && lk != 172 // 'le' + && lk != 174 // 'let' + && lk != 178 // 'lt' + && lk != 180 // 'mod' + && lk != 181 // 'modify' + && lk != 186 // 'ne' + && lk != 198 // 'only' + && lk != 200 // 'or' + && lk != 201 // 'order' + && lk != 205 // 'paragraphs' + && lk != 220 // 'return' + && lk != 224 // 'satisfies' + && lk != 232 // 'sentences' + && lk != 236 // 'stable' + && lk != 237 // 'start' + && lk != 247 // 'times' + && lk != 248 // 'to' + && lk != 249 // 'treat' + && lk != 254 // 'union' + && lk != 266 // 'where' + && lk != 270 // 'with' + && lk != 273 // 'words' + && lk != 279 // '|' + && lk != 280 // '||' + && lk != 281 // '|}' + && lk != 282 // '}' + && lk != 23578 // '!' '/' + && lk != 24090) // '!' '//' + { + lk = memoized(3, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + switch (l1) + { + case 46: // '/' + shiftT(46); // '/' + break; + case 47: // '//' + shiftT(47); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_StepExpr(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(3, e0, lk); + } + } + if (lk != -1 + && lk != 46 // '/' + && lk != 47) // '//' + { + break; + } + switch (l1) + { + case 46: // '/' + shift(46); // '/' + break; + case 47: // '//' + shift(47); // '//' + break; + default: + shift(26); // '!' + } + lookahead1W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_StepExpr(); + } + eventHandler.endNonterminal("RelativePathExpr", e0); + } + + function try_RelativePathExpr() + { + try_StepExpr(); + for (;;) + { + switch (l1) + { + case 26: // '!' + lookahead2W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 27 // '!=' + && lk != 37 // ')' + && lk != 38 // '*' + && lk != 40 // '+' + && lk != 41 // ',' + && lk != 42 // '-' + && lk != 46 // '/' + && lk != 47 // '//' + && lk != 49 // ':' + && lk != 53 // ';' + && lk != 54 // '<' + && lk != 57 // '<<' + && lk != 58 // '<=' + && lk != 60 // '=' + && lk != 61 // '>' + && lk != 62 // '>=' + && lk != 63 // '>>' + && lk != 69 // ']' + && lk != 70 // 'after' + && lk != 75 // 'and' + && lk != 79 // 'as' + && lk != 80 // 'ascending' + && lk != 81 // 'at' + && lk != 84 // 'before' + && lk != 87 // 'by' + && lk != 88 // 'case' + && lk != 89 // 'cast' + && lk != 90 // 'castable' + && lk != 94 // 'collation' + && lk != 99 // 'contains' + && lk != 105 // 'count' + && lk != 109 // 'default' + && lk != 113 // 'descending' + && lk != 118 // 'div' + && lk != 122 // 'else' + && lk != 123 // 'empty' + && lk != 126 // 'end' + && lk != 128 // 'eq' + && lk != 131 // 'except' + && lk != 137 // 'for' + && lk != 146 // 'ge' + && lk != 148 // 'group' + && lk != 150 // 'gt' + && lk != 151 // 'idiv' + && lk != 160 // 'instance' + && lk != 162 // 'intersect' + && lk != 163 // 'into' + && lk != 164 // 'is' + && lk != 172 // 'le' + && lk != 174 // 'let' + && lk != 178 // 'lt' + && lk != 180 // 'mod' + && lk != 181 // 'modify' + && lk != 186 // 'ne' + && lk != 198 // 'only' + && lk != 200 // 'or' + && lk != 201 // 'order' + && lk != 205 // 'paragraphs' + && lk != 220 // 'return' + && lk != 224 // 'satisfies' + && lk != 232 // 'sentences' + && lk != 236 // 'stable' + && lk != 237 // 'start' + && lk != 247 // 'times' + && lk != 248 // 'to' + && lk != 249 // 'treat' + && lk != 254 // 'union' + && lk != 266 // 'where' + && lk != 270 // 'with' + && lk != 273 // 'words' + && lk != 279 // '|' + && lk != 280 // '||' + && lk != 281 // '|}' + && lk != 282 // '}' + && lk != 23578 // '!' '/' + && lk != 24090) // '!' '//' + { + lk = memoized(3, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + switch (l1) + { + case 46: // '/' + shiftT(46); // '/' + break; + case 47: // '//' + shiftT(47); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_StepExpr(); + memoize(3, e0A, -1); + continue; + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(3, e0A, -2); + break; + } + } + } + if (lk != -1 + && lk != 46 // '/' + && lk != 47) // '//' + { + break; + } + switch (l1) + { + case 46: // '/' + shiftT(46); // '/' + break; + case 47: // '//' + shiftT(47); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_StepExpr(); + } + } + + function parse_StepExpr() + { + eventHandler.startNonterminal("StepExpr", e0); + switch (l1) + { + case 82: // 'attribute' + lookahead2W(284); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | + // '>=' | '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'paragraphs' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'self' | + // 'sentences' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'times' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'words' | 'xquery' | '{' | '|' | '||' | '|}' | '}' + break; + case 121: // 'element' + lookahead2W(282); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'paragraphs' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'self' | + // 'sentences' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'times' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'words' | 'xquery' | '{' | '|' | '||' | '|}' | '}' + break; + case 184: // 'namespace' + case 216: // 'processing-instruction' + lookahead2W(281); // NCName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | 'castable' | + // 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | + // 'contains' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'paragraphs' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sentences' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | + // 'times' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | 'words' | 'xquery' | '{' | '|' | '||' | '|}' | '}' + break; + case 96: // 'comment' + case 119: // 'document' + case 202: // 'ordered' + case 244: // 'text' + case 256: // 'unordered' + lookahead2W(246); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 78: // 'array' + case 124: // 'empty-sequence' + case 152: // 'if' + case 165: // 'item' + case 167: // 'json-item' + case 242: // 'structured-item' + case 243: // 'switch' + case 253: // 'typeswitch' + lookahead2W(239); // S^WS | EOF | '!' | '!=' | '#' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + case 73: // 'ancestor' + case 74: // 'ancestor-or-self' + case 93: // 'child' + case 111: // 'descendant' + case 112: // 'descendant-or-self' + case 135: // 'following' + case 136: // 'following-sibling' + case 206: // 'parent' + case 212: // 'preceding' + case 213: // 'preceding-sibling' + case 229: // 'self' + lookahead2W(245); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | + // 'cast' | 'castable' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + break; + case 6: // EQName^Token + case 70: // 'after' + case 72: // 'allowing' + case 75: // 'and' + case 77: // 'append' + case 79: // 'as' + case 80: // 'ascending' + case 81: // 'at' + case 83: // 'base-uri' + case 84: // 'before' + case 85: // 'boundary-space' + case 86: // 'break' + case 88: // 'case' + case 89: // 'cast' + case 90: // 'castable' + case 91: // 'catch' + case 94: // 'collation' + case 97: // 'constraint' + case 98: // 'construction' + case 101: // 'context' + case 102: // 'continue' + case 103: // 'copy' + case 104: // 'copy-namespaces' + case 105: // 'count' + case 106: // 'decimal-format' + case 108: // 'declare' + case 109: // 'default' + case 110: // 'delete' + case 113: // 'descending' + case 118: // 'div' + case 120: // 'document-node' + case 122: // 'else' + case 123: // 'empty' + case 125: // 'encoding' + case 126: // 'end' + case 128: // 'eq' + case 129: // 'every' + case 131: // 'except' + case 132: // 'exit' + case 133: // 'external' + case 134: // 'first' + case 137: // 'for' + case 141: // 'ft-option' + case 145: // 'function' + case 146: // 'ge' + case 148: // 'group' + case 150: // 'gt' + case 151: // 'idiv' + case 153: // 'import' + case 154: // 'in' + case 155: // 'index' + case 159: // 'insert' + case 160: // 'instance' + case 161: // 'integrity' + case 162: // 'intersect' + case 163: // 'into' + case 164: // 'is' + case 166: // 'json' + case 170: // 'last' + case 171: // 'lax' + case 172: // 'le' + case 174: // 'let' + case 176: // 'loop' + case 178: // 'lt' + case 180: // 'mod' + case 181: // 'modify' + case 182: // 'module' + case 185: // 'namespace-node' + case 186: // 'ne' + case 191: // 'node' + case 192: // 'nodes' + case 194: // 'object' + case 198: // 'only' + case 199: // 'option' + case 200: // 'or' + case 201: // 'order' + case 203: // 'ordering' + case 218: // 'rename' + case 219: // 'replace' + case 220: // 'return' + case 221: // 'returning' + case 222: // 'revalidation' + case 224: // 'satisfies' + case 225: // 'schema' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 228: // 'score' + case 234: // 'sliding' + case 235: // 'some' + case 236: // 'stable' + case 237: // 'start' + case 240: // 'strict' + case 248: // 'to' + case 249: // 'treat' + case 250: // 'try' + case 251: // 'tumbling' + case 252: // 'type' + case 254: // 'union' + case 257: // 'updating' + case 260: // 'validate' + case 261: // 'value' + case 262: // 'variable' + case 263: // 'version' + case 266: // 'where' + case 267: // 'while' + case 270: // 'with' + case 274: // 'xquery' + lookahead2W(243); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + if (lk == 35922 // 'attribute' 'after' + || lk == 35961 // 'element' 'after' + || lk == 36024 // 'namespace' 'after' + || lk == 36056 // 'processing-instruction' 'after' + || lk == 38482 // 'attribute' 'and' + || lk == 38521 // 'element' 'and' + || lk == 38584 // 'namespace' 'and' + || lk == 38616 // 'processing-instruction' 'and' + || lk == 40530 // 'attribute' 'as' + || lk == 40569 // 'element' 'as' + || lk == 40632 // 'namespace' 'as' + || lk == 40664 // 'processing-instruction' 'as' + || lk == 41042 // 'attribute' 'ascending' + || lk == 41081 // 'element' 'ascending' + || lk == 41144 // 'namespace' 'ascending' + || lk == 41176 // 'processing-instruction' 'ascending' + || lk == 41554 // 'attribute' 'at' + || lk == 41593 // 'element' 'at' + || lk == 41656 // 'namespace' 'at' + || lk == 41688 // 'processing-instruction' 'at' + || lk == 43090 // 'attribute' 'before' + || lk == 43129 // 'element' 'before' + || lk == 43192 // 'namespace' 'before' + || lk == 43224 // 'processing-instruction' 'before' + || lk == 45138 // 'attribute' 'case' + || lk == 45177 // 'element' 'case' + || lk == 45240 // 'namespace' 'case' + || lk == 45272 // 'processing-instruction' 'case' + || lk == 45650 // 'attribute' 'cast' + || lk == 45689 // 'element' 'cast' + || lk == 45752 // 'namespace' 'cast' + || lk == 45784 // 'processing-instruction' 'cast' + || lk == 46162 // 'attribute' 'castable' + || lk == 46201 // 'element' 'castable' + || lk == 46264 // 'namespace' 'castable' + || lk == 46296 // 'processing-instruction' 'castable' + || lk == 48210 // 'attribute' 'collation' + || lk == 48249 // 'element' 'collation' + || lk == 48312 // 'namespace' 'collation' + || lk == 48344 // 'processing-instruction' 'collation' + || lk == 53842 // 'attribute' 'count' + || lk == 53881 // 'element' 'count' + || lk == 53944 // 'namespace' 'count' + || lk == 53976 // 'processing-instruction' 'count' + || lk == 55890 // 'attribute' 'default' + || lk == 55929 // 'element' 'default' + || lk == 55992 // 'namespace' 'default' + || lk == 56024 // 'processing-instruction' 'default' + || lk == 57938 // 'attribute' 'descending' + || lk == 57977 // 'element' 'descending' + || lk == 58040 // 'namespace' 'descending' + || lk == 58072 // 'processing-instruction' 'descending' + || lk == 60498 // 'attribute' 'div' + || lk == 60537 // 'element' 'div' + || lk == 60600 // 'namespace' 'div' + || lk == 60632 // 'processing-instruction' 'div' + || lk == 62546 // 'attribute' 'else' + || lk == 62585 // 'element' 'else' + || lk == 62648 // 'namespace' 'else' + || lk == 62680 // 'processing-instruction' 'else' + || lk == 63058 // 'attribute' 'empty' + || lk == 63097 // 'element' 'empty' + || lk == 63160 // 'namespace' 'empty' + || lk == 63192 // 'processing-instruction' 'empty' + || lk == 64594 // 'attribute' 'end' + || lk == 64633 // 'element' 'end' + || lk == 64696 // 'namespace' 'end' + || lk == 64728 // 'processing-instruction' 'end' + || lk == 65618 // 'attribute' 'eq' + || lk == 65657 // 'element' 'eq' + || lk == 65720 // 'namespace' 'eq' + || lk == 65752 // 'processing-instruction' 'eq' + || lk == 67154 // 'attribute' 'except' + || lk == 67193 // 'element' 'except' + || lk == 67256 // 'namespace' 'except' + || lk == 67288 // 'processing-instruction' 'except' + || lk == 70226 // 'attribute' 'for' + || lk == 70265 // 'element' 'for' + || lk == 70328 // 'namespace' 'for' + || lk == 70360 // 'processing-instruction' 'for' + || lk == 74834 // 'attribute' 'ge' + || lk == 74873 // 'element' 'ge' + || lk == 74936 // 'namespace' 'ge' + || lk == 74968 // 'processing-instruction' 'ge' + || lk == 75858 // 'attribute' 'group' + || lk == 75897 // 'element' 'group' + || lk == 75960 // 'namespace' 'group' + || lk == 75992 // 'processing-instruction' 'group' + || lk == 76882 // 'attribute' 'gt' + || lk == 76921 // 'element' 'gt' + || lk == 76984 // 'namespace' 'gt' + || lk == 77016 // 'processing-instruction' 'gt' + || lk == 77394 // 'attribute' 'idiv' + || lk == 77433 // 'element' 'idiv' + || lk == 77496 // 'namespace' 'idiv' + || lk == 77528 // 'processing-instruction' 'idiv' + || lk == 82002 // 'attribute' 'instance' + || lk == 82041 // 'element' 'instance' + || lk == 82104 // 'namespace' 'instance' + || lk == 82136 // 'processing-instruction' 'instance' + || lk == 83026 // 'attribute' 'intersect' + || lk == 83065 // 'element' 'intersect' + || lk == 83128 // 'namespace' 'intersect' + || lk == 83160 // 'processing-instruction' 'intersect' + || lk == 83538 // 'attribute' 'into' + || lk == 83577 // 'element' 'into' + || lk == 83640 // 'namespace' 'into' + || lk == 83672 // 'processing-instruction' 'into' + || lk == 84050 // 'attribute' 'is' + || lk == 84089 // 'element' 'is' + || lk == 84152 // 'namespace' 'is' + || lk == 84184 // 'processing-instruction' 'is' + || lk == 88146 // 'attribute' 'le' + || lk == 88185 // 'element' 'le' + || lk == 88248 // 'namespace' 'le' + || lk == 88280 // 'processing-instruction' 'le' + || lk == 89170 // 'attribute' 'let' + || lk == 89209 // 'element' 'let' + || lk == 89272 // 'namespace' 'let' + || lk == 89304 // 'processing-instruction' 'let' + || lk == 91218 // 'attribute' 'lt' + || lk == 91257 // 'element' 'lt' + || lk == 91320 // 'namespace' 'lt' + || lk == 91352 // 'processing-instruction' 'lt' + || lk == 92242 // 'attribute' 'mod' + || lk == 92281 // 'element' 'mod' + || lk == 92344 // 'namespace' 'mod' + || lk == 92376 // 'processing-instruction' 'mod' + || lk == 92754 // 'attribute' 'modify' + || lk == 92793 // 'element' 'modify' + || lk == 92856 // 'namespace' 'modify' + || lk == 92888 // 'processing-instruction' 'modify' + || lk == 95314 // 'attribute' 'ne' + || lk == 95353 // 'element' 'ne' + || lk == 95416 // 'namespace' 'ne' + || lk == 95448 // 'processing-instruction' 'ne' + || lk == 101458 // 'attribute' 'only' + || lk == 101497 // 'element' 'only' + || lk == 101560 // 'namespace' 'only' + || lk == 101592 // 'processing-instruction' 'only' + || lk == 102482 // 'attribute' 'or' + || lk == 102521 // 'element' 'or' + || lk == 102584 // 'namespace' 'or' + || lk == 102616 // 'processing-instruction' 'or' + || lk == 102994 // 'attribute' 'order' + || lk == 103033 // 'element' 'order' + || lk == 103096 // 'namespace' 'order' + || lk == 103128 // 'processing-instruction' 'order' + || lk == 112722 // 'attribute' 'return' + || lk == 112761 // 'element' 'return' + || lk == 112824 // 'namespace' 'return' + || lk == 112856 // 'processing-instruction' 'return' + || lk == 114770 // 'attribute' 'satisfies' + || lk == 114809 // 'element' 'satisfies' + || lk == 114872 // 'namespace' 'satisfies' + || lk == 114904 // 'processing-instruction' 'satisfies' + || lk == 120914 // 'attribute' 'stable' + || lk == 120953 // 'element' 'stable' + || lk == 121016 // 'namespace' 'stable' + || lk == 121048 // 'processing-instruction' 'stable' + || lk == 121426 // 'attribute' 'start' + || lk == 121465 // 'element' 'start' + || lk == 121528 // 'namespace' 'start' + || lk == 121560 // 'processing-instruction' 'start' + || lk == 127058 // 'attribute' 'to' + || lk == 127097 // 'element' 'to' + || lk == 127160 // 'namespace' 'to' + || lk == 127192 // 'processing-instruction' 'to' + || lk == 127570 // 'attribute' 'treat' + || lk == 127609 // 'element' 'treat' + || lk == 127672 // 'namespace' 'treat' + || lk == 127704 // 'processing-instruction' 'treat' + || lk == 130130 // 'attribute' 'union' + || lk == 130169 // 'element' 'union' + || lk == 130232 // 'namespace' 'union' + || lk == 130264 // 'processing-instruction' 'union' + || lk == 136274 // 'attribute' 'where' + || lk == 136313 // 'element' 'where' + || lk == 136376 // 'namespace' 'where' + || lk == 136408 // 'processing-instruction' 'where' + || lk == 138322 // 'attribute' 'with' + || lk == 138361 // 'element' 'with' + || lk == 138424 // 'namespace' 'with' + || lk == 138456) // 'processing-instruction' 'with' + { + lk = memoized(4, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_PostfixExpr(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(4, e0, lk); + } + } + switch (lk) + { + case -1: + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 31: // '$' + case 32: // '%' + case 34: // '(' + case 44: // '.' + case 54: // '<' + case 55: // '<!--' + case 59: // '<?' + case 68: // '[' + case 276: // '{' + case 278: // '{|' + case 3154: // 'attribute' EQName^Token + case 3193: // 'element' EQName^Token + case 9912: // 'namespace' NCName^Token + case 9944: // 'processing-instruction' NCName^Token + case 14854: // EQName^Token '#' + case 14918: // 'after' '#' + case 14920: // 'allowing' '#' + case 14921: // 'ancestor' '#' + case 14922: // 'ancestor-or-self' '#' + case 14923: // 'and' '#' + case 14925: // 'append' '#' + case 14926: // 'array' '#' + case 14927: // 'as' '#' + case 14928: // 'ascending' '#' + case 14929: // 'at' '#' + case 14930: // 'attribute' '#' + case 14931: // 'base-uri' '#' + case 14932: // 'before' '#' + case 14933: // 'boundary-space' '#' + case 14934: // 'break' '#' + case 14936: // 'case' '#' + case 14937: // 'cast' '#' + case 14938: // 'castable' '#' + case 14939: // 'catch' '#' + case 14941: // 'child' '#' + case 14942: // 'collation' '#' + case 14944: // 'comment' '#' + case 14945: // 'constraint' '#' + case 14946: // 'construction' '#' + case 14949: // 'context' '#' + case 14950: // 'continue' '#' + case 14951: // 'copy' '#' + case 14952: // 'copy-namespaces' '#' + case 14953: // 'count' '#' + case 14954: // 'decimal-format' '#' + case 14956: // 'declare' '#' + case 14957: // 'default' '#' + case 14958: // 'delete' '#' + case 14959: // 'descendant' '#' + case 14960: // 'descendant-or-self' '#' + case 14961: // 'descending' '#' + case 14966: // 'div' '#' + case 14967: // 'document' '#' + case 14968: // 'document-node' '#' + case 14969: // 'element' '#' + case 14970: // 'else' '#' + case 14971: // 'empty' '#' + case 14972: // 'empty-sequence' '#' + case 14973: // 'encoding' '#' + case 14974: // 'end' '#' + case 14976: // 'eq' '#' + case 14977: // 'every' '#' + case 14979: // 'except' '#' + case 14980: // 'exit' '#' + case 14981: // 'external' '#' + case 14982: // 'first' '#' + case 14983: // 'following' '#' + case 14984: // 'following-sibling' '#' + case 14985: // 'for' '#' + case 14989: // 'ft-option' '#' + case 14993: // 'function' '#' + case 14994: // 'ge' '#' + case 14996: // 'group' '#' + case 14998: // 'gt' '#' + case 14999: // 'idiv' '#' + case 15000: // 'if' '#' + case 15001: // 'import' '#' + case 15002: // 'in' '#' + case 15003: // 'index' '#' + case 15007: // 'insert' '#' + case 15008: // 'instance' '#' + case 15009: // 'integrity' '#' + case 15010: // 'intersect' '#' + case 15011: // 'into' '#' + case 15012: // 'is' '#' + case 15013: // 'item' '#' + case 15014: // 'json' '#' + case 15015: // 'json-item' '#' + case 15018: // 'last' '#' + case 15019: // 'lax' '#' + case 15020: // 'le' '#' + case 15022: // 'let' '#' + case 15024: // 'loop' '#' + case 15026: // 'lt' '#' + case 15028: // 'mod' '#' + case 15029: // 'modify' '#' + case 15030: // 'module' '#' + case 15032: // 'namespace' '#' + case 15033: // 'namespace-node' '#' + case 15034: // 'ne' '#' + case 15039: // 'node' '#' + case 15040: // 'nodes' '#' + case 15042: // 'object' '#' + case 15046: // 'only' '#' + case 15047: // 'option' '#' + case 15048: // 'or' '#' + case 15049: // 'order' '#' + case 15050: // 'ordered' '#' + case 15051: // 'ordering' '#' + case 15054: // 'parent' '#' + case 15060: // 'preceding' '#' + case 15061: // 'preceding-sibling' '#' + case 15064: // 'processing-instruction' '#' + case 15066: // 'rename' '#' + case 15067: // 'replace' '#' + case 15068: // 'return' '#' + case 15069: // 'returning' '#' + case 15070: // 'revalidation' '#' + case 15072: // 'satisfies' '#' + case 15073: // 'schema' '#' + case 15074: // 'schema-attribute' '#' + case 15075: // 'schema-element' '#' + case 15076: // 'score' '#' + case 15077: // 'self' '#' + case 15082: // 'sliding' '#' + case 15083: // 'some' '#' + case 15084: // 'stable' '#' + case 15085: // 'start' '#' + case 15088: // 'strict' '#' + case 15090: // 'structured-item' '#' + case 15091: // 'switch' '#' + case 15092: // 'text' '#' + case 15096: // 'to' '#' + case 15097: // 'treat' '#' + case 15098: // 'try' '#' + case 15099: // 'tumbling' '#' + case 15100: // 'type' '#' + case 15101: // 'typeswitch' '#' + case 15102: // 'union' '#' + case 15104: // 'unordered' '#' + case 15105: // 'updating' '#' + case 15108: // 'validate' '#' + case 15109: // 'value' '#' + case 15110: // 'variable' '#' + case 15111: // 'version' '#' + case 15114: // 'where' '#' + case 15115: // 'while' '#' + case 15118: // 'with' '#' + case 15122: // 'xquery' '#' + case 17414: // EQName^Token '(' + case 17478: // 'after' '(' + case 17480: // 'allowing' '(' + case 17481: // 'ancestor' '(' + case 17482: // 'ancestor-or-self' '(' + case 17483: // 'and' '(' + case 17485: // 'append' '(' + case 17487: // 'as' '(' + case 17488: // 'ascending' '(' + case 17489: // 'at' '(' + case 17491: // 'base-uri' '(' + case 17492: // 'before' '(' + case 17493: // 'boundary-space' '(' + case 17494: // 'break' '(' + case 17496: // 'case' '(' + case 17497: // 'cast' '(' + case 17498: // 'castable' '(' + case 17499: // 'catch' '(' + case 17501: // 'child' '(' + case 17502: // 'collation' '(' + case 17505: // 'constraint' '(' + case 17506: // 'construction' '(' + case 17509: // 'context' '(' + case 17510: // 'continue' '(' + case 17511: // 'copy' '(' + case 17512: // 'copy-namespaces' '(' + case 17513: // 'count' '(' + case 17514: // 'decimal-format' '(' + case 17516: // 'declare' '(' + case 17517: // 'default' '(' + case 17518: // 'delete' '(' + case 17519: // 'descendant' '(' + case 17520: // 'descendant-or-self' '(' + case 17521: // 'descending' '(' + case 17526: // 'div' '(' + case 17527: // 'document' '(' + case 17530: // 'else' '(' + case 17531: // 'empty' '(' + case 17533: // 'encoding' '(' + case 17534: // 'end' '(' + case 17536: // 'eq' '(' + case 17537: // 'every' '(' + case 17539: // 'except' '(' + case 17540: // 'exit' '(' + case 17541: // 'external' '(' + case 17542: // 'first' '(' + case 17543: // 'following' '(' + case 17544: // 'following-sibling' '(' + case 17545: // 'for' '(' + case 17549: // 'ft-option' '(' + case 17553: // 'function' '(' + case 17554: // 'ge' '(' + case 17556: // 'group' '(' + case 17558: // 'gt' '(' + case 17559: // 'idiv' '(' + case 17561: // 'import' '(' + case 17562: // 'in' '(' + case 17563: // 'index' '(' + case 17567: // 'insert' '(' + case 17568: // 'instance' '(' + case 17569: // 'integrity' '(' + case 17570: // 'intersect' '(' + case 17571: // 'into' '(' + case 17572: // 'is' '(' + case 17574: // 'json' '(' + case 17578: // 'last' '(' + case 17579: // 'lax' '(' + case 17580: // 'le' '(' + case 17582: // 'let' '(' + case 17584: // 'loop' '(' + case 17586: // 'lt' '(' + case 17588: // 'mod' '(' + case 17589: // 'modify' '(' + case 17590: // 'module' '(' + case 17592: // 'namespace' '(' + case 17594: // 'ne' '(' + case 17600: // 'nodes' '(' + case 17602: // 'object' '(' + case 17606: // 'only' '(' + case 17607: // 'option' '(' + case 17608: // 'or' '(' + case 17609: // 'order' '(' + case 17610: // 'ordered' '(' + case 17611: // 'ordering' '(' + case 17614: // 'parent' '(' + case 17620: // 'preceding' '(' + case 17621: // 'preceding-sibling' '(' + case 17626: // 'rename' '(' + case 17627: // 'replace' '(' + case 17628: // 'return' '(' + case 17629: // 'returning' '(' + case 17630: // 'revalidation' '(' + case 17632: // 'satisfies' '(' + case 17633: // 'schema' '(' + case 17636: // 'score' '(' + case 17637: // 'self' '(' + case 17642: // 'sliding' '(' + case 17643: // 'some' '(' + case 17644: // 'stable' '(' + case 17645: // 'start' '(' + case 17648: // 'strict' '(' + case 17656: // 'to' '(' + case 17657: // 'treat' '(' + case 17658: // 'try' '(' + case 17659: // 'tumbling' '(' + case 17660: // 'type' '(' + case 17662: // 'union' '(' + case 17664: // 'unordered' '(' + case 17665: // 'updating' '(' + case 17668: // 'validate' '(' + case 17669: // 'value' '(' + case 17670: // 'variable' '(' + case 17671: // 'version' '(' + case 17674: // 'where' '(' + case 17675: // 'while' '(' + case 17678: // 'with' '(' + case 17682: // 'xquery' '(' + case 36946: // 'attribute' 'allowing' + case 36985: // 'element' 'allowing' + case 37048: // 'namespace' 'allowing' + case 37080: // 'processing-instruction' 'allowing' + case 37458: // 'attribute' 'ancestor' + case 37497: // 'element' 'ancestor' + case 37560: // 'namespace' 'ancestor' + case 37592: // 'processing-instruction' 'ancestor' + case 37970: // 'attribute' 'ancestor-or-self' + case 38009: // 'element' 'ancestor-or-self' + case 38072: // 'namespace' 'ancestor-or-self' + case 38104: // 'processing-instruction' 'ancestor-or-self' + case 39506: // 'attribute' 'append' + case 39545: // 'element' 'append' + case 39608: // 'namespace' 'append' + case 39640: // 'processing-instruction' 'append' + case 40018: // 'attribute' 'array' + case 40057: // 'element' 'array' + case 42066: // 'attribute' 'attribute' + case 42105: // 'element' 'attribute' + case 42168: // 'namespace' 'attribute' + case 42200: // 'processing-instruction' 'attribute' + case 42578: // 'attribute' 'base-uri' + case 42617: // 'element' 'base-uri' + case 42680: // 'namespace' 'base-uri' + case 42712: // 'processing-instruction' 'base-uri' + case 43602: // 'attribute' 'boundary-space' + case 43641: // 'element' 'boundary-space' + case 43704: // 'namespace' 'boundary-space' + case 43736: // 'processing-instruction' 'boundary-space' + case 44114: // 'attribute' 'break' + case 44153: // 'element' 'break' + case 44216: // 'namespace' 'break' + case 44248: // 'processing-instruction' 'break' + case 46674: // 'attribute' 'catch' + case 46713: // 'element' 'catch' + case 46776: // 'namespace' 'catch' + case 46808: // 'processing-instruction' 'catch' + case 47698: // 'attribute' 'child' + case 47737: // 'element' 'child' + case 47800: // 'namespace' 'child' + case 47832: // 'processing-instruction' 'child' + case 49234: // 'attribute' 'comment' + case 49273: // 'element' 'comment' + case 49336: // 'namespace' 'comment' + case 49368: // 'processing-instruction' 'comment' + case 49746: // 'attribute' 'constraint' + case 49785: // 'element' 'constraint' + case 49848: // 'namespace' 'constraint' + case 49880: // 'processing-instruction' 'constraint' + case 50258: // 'attribute' 'construction' + case 50297: // 'element' 'construction' + case 50360: // 'namespace' 'construction' + case 50392: // 'processing-instruction' 'construction' + case 51794: // 'attribute' 'context' + case 51833: // 'element' 'context' + case 51896: // 'namespace' 'context' + case 51928: // 'processing-instruction' 'context' + case 52306: // 'attribute' 'continue' + case 52345: // 'element' 'continue' + case 52408: // 'namespace' 'continue' + case 52440: // 'processing-instruction' 'continue' + case 52818: // 'attribute' 'copy' + case 52857: // 'element' 'copy' + case 52920: // 'namespace' 'copy' + case 52952: // 'processing-instruction' 'copy' + case 53330: // 'attribute' 'copy-namespaces' + case 53369: // 'element' 'copy-namespaces' + case 53432: // 'namespace' 'copy-namespaces' + case 53464: // 'processing-instruction' 'copy-namespaces' + case 54354: // 'attribute' 'decimal-format' + case 54393: // 'element' 'decimal-format' + case 54456: // 'namespace' 'decimal-format' + case 54488: // 'processing-instruction' 'decimal-format' + case 55378: // 'attribute' 'declare' + case 55417: // 'element' 'declare' + case 55480: // 'namespace' 'declare' + case 55512: // 'processing-instruction' 'declare' + case 56402: // 'attribute' 'delete' + case 56441: // 'element' 'delete' + case 56504: // 'namespace' 'delete' + case 56536: // 'processing-instruction' 'delete' + case 56914: // 'attribute' 'descendant' + case 56953: // 'element' 'descendant' + case 57016: // 'namespace' 'descendant' + case 57048: // 'processing-instruction' 'descendant' + case 57426: // 'attribute' 'descendant-or-self' + case 57465: // 'element' 'descendant-or-self' + case 57528: // 'namespace' 'descendant-or-self' + case 57560: // 'processing-instruction' 'descendant-or-self' + case 61010: // 'attribute' 'document' + case 61049: // 'element' 'document' + case 61112: // 'namespace' 'document' + case 61144: // 'processing-instruction' 'document' + case 61522: // 'attribute' 'document-node' + case 61561: // 'element' 'document-node' + case 61624: // 'namespace' 'document-node' + case 61656: // 'processing-instruction' 'document-node' + case 62034: // 'attribute' 'element' + case 62073: // 'element' 'element' + case 62136: // 'namespace' 'element' + case 62168: // 'processing-instruction' 'element' + case 63570: // 'attribute' 'empty-sequence' + case 63609: // 'element' 'empty-sequence' + case 63672: // 'namespace' 'empty-sequence' + case 63704: // 'processing-instruction' 'empty-sequence' + case 64082: // 'attribute' 'encoding' + case 64121: // 'element' 'encoding' + case 64184: // 'namespace' 'encoding' + case 64216: // 'processing-instruction' 'encoding' + case 66130: // 'attribute' 'every' + case 66169: // 'element' 'every' + case 66232: // 'namespace' 'every' + case 66264: // 'processing-instruction' 'every' + case 67666: // 'attribute' 'exit' + case 67705: // 'element' 'exit' + case 67768: // 'namespace' 'exit' + case 67800: // 'processing-instruction' 'exit' + case 68178: // 'attribute' 'external' + case 68217: // 'element' 'external' + case 68280: // 'namespace' 'external' + case 68312: // 'processing-instruction' 'external' + case 68690: // 'attribute' 'first' + case 68729: // 'element' 'first' + case 68792: // 'namespace' 'first' + case 68824: // 'processing-instruction' 'first' + case 69202: // 'attribute' 'following' + case 69241: // 'element' 'following' + case 69304: // 'namespace' 'following' + case 69336: // 'processing-instruction' 'following' + case 69714: // 'attribute' 'following-sibling' + case 69753: // 'element' 'following-sibling' + case 69816: // 'namespace' 'following-sibling' + case 69848: // 'processing-instruction' 'following-sibling' + case 72274: // 'attribute' 'ft-option' + case 72313: // 'element' 'ft-option' + case 72376: // 'namespace' 'ft-option' + case 72408: // 'processing-instruction' 'ft-option' + case 74322: // 'attribute' 'function' + case 74361: // 'element' 'function' + case 74424: // 'namespace' 'function' + case 74456: // 'processing-instruction' 'function' + case 77906: // 'attribute' 'if' + case 77945: // 'element' 'if' + case 78008: // 'namespace' 'if' + case 78040: // 'processing-instruction' 'if' + case 78418: // 'attribute' 'import' + case 78457: // 'element' 'import' + case 78520: // 'namespace' 'import' + case 78552: // 'processing-instruction' 'import' + case 78930: // 'attribute' 'in' + case 78969: // 'element' 'in' + case 79032: // 'namespace' 'in' + case 79064: // 'processing-instruction' 'in' + case 79442: // 'attribute' 'index' + case 79481: // 'element' 'index' + case 79544: // 'namespace' 'index' + case 79576: // 'processing-instruction' 'index' + case 81490: // 'attribute' 'insert' + case 81529: // 'element' 'insert' + case 81592: // 'namespace' 'insert' + case 81624: // 'processing-instruction' 'insert' + case 82514: // 'attribute' 'integrity' + case 82553: // 'element' 'integrity' + case 82616: // 'namespace' 'integrity' + case 82648: // 'processing-instruction' 'integrity' + case 84562: // 'attribute' 'item' + case 84601: // 'element' 'item' + case 84664: // 'namespace' 'item' + case 84696: // 'processing-instruction' 'item' + case 85074: // 'attribute' 'json' + case 85113: // 'element' 'json' + case 85176: // 'namespace' 'json' + case 85208: // 'processing-instruction' 'json' + case 85586: // 'attribute' 'json-item' + case 85625: // 'element' 'json-item' + case 87122: // 'attribute' 'last' + case 87161: // 'element' 'last' + case 87224: // 'namespace' 'last' + case 87256: // 'processing-instruction' 'last' + case 87634: // 'attribute' 'lax' + case 87673: // 'element' 'lax' + case 87736: // 'namespace' 'lax' + case 87768: // 'processing-instruction' 'lax' + case 90194: // 'attribute' 'loop' + case 90233: // 'element' 'loop' + case 90296: // 'namespace' 'loop' + case 90328: // 'processing-instruction' 'loop' + case 93266: // 'attribute' 'module' + case 93305: // 'element' 'module' + case 93368: // 'namespace' 'module' + case 93400: // 'processing-instruction' 'module' + case 94290: // 'attribute' 'namespace' + case 94329: // 'element' 'namespace' + case 94392: // 'namespace' 'namespace' + case 94424: // 'processing-instruction' 'namespace' + case 94802: // 'attribute' 'namespace-node' + case 94841: // 'element' 'namespace-node' + case 94904: // 'namespace' 'namespace-node' + case 94936: // 'processing-instruction' 'namespace-node' + case 97874: // 'attribute' 'node' + case 97913: // 'element' 'node' + case 97976: // 'namespace' 'node' + case 98008: // 'processing-instruction' 'node' + case 98386: // 'attribute' 'nodes' + case 98425: // 'element' 'nodes' + case 98488: // 'namespace' 'nodes' + case 98520: // 'processing-instruction' 'nodes' + case 99410: // 'attribute' 'object' + case 99449: // 'element' 'object' + case 99512: // 'namespace' 'object' + case 99544: // 'processing-instruction' 'object' + case 101970: // 'attribute' 'option' + case 102009: // 'element' 'option' + case 102072: // 'namespace' 'option' + case 102104: // 'processing-instruction' 'option' + case 103506: // 'attribute' 'ordered' + case 103545: // 'element' 'ordered' + case 103608: // 'namespace' 'ordered' + case 103640: // 'processing-instruction' 'ordered' + case 104018: // 'attribute' 'ordering' + case 104057: // 'element' 'ordering' + case 104120: // 'namespace' 'ordering' + case 104152: // 'processing-instruction' 'ordering' + case 105554: // 'attribute' 'parent' + case 105593: // 'element' 'parent' + case 105656: // 'namespace' 'parent' + case 105688: // 'processing-instruction' 'parent' + case 108626: // 'attribute' 'preceding' + case 108665: // 'element' 'preceding' + case 108728: // 'namespace' 'preceding' + case 108760: // 'processing-instruction' 'preceding' + case 109138: // 'attribute' 'preceding-sibling' + case 109177: // 'element' 'preceding-sibling' + case 109240: // 'namespace' 'preceding-sibling' + case 109272: // 'processing-instruction' 'preceding-sibling' + case 110674: // 'attribute' 'processing-instruction' + case 110713: // 'element' 'processing-instruction' + case 110776: // 'namespace' 'processing-instruction' + case 110808: // 'processing-instruction' 'processing-instruction' + case 111698: // 'attribute' 'rename' + case 111737: // 'element' 'rename' + case 111800: // 'namespace' 'rename' + case 111832: // 'processing-instruction' 'rename' + case 112210: // 'attribute' 'replace' + case 112249: // 'element' 'replace' + case 112312: // 'namespace' 'replace' + case 112344: // 'processing-instruction' 'replace' + case 113234: // 'attribute' 'returning' + case 113273: // 'element' 'returning' + case 113336: // 'namespace' 'returning' + case 113368: // 'processing-instruction' 'returning' + case 113746: // 'attribute' 'revalidation' + case 113785: // 'element' 'revalidation' + case 113848: // 'namespace' 'revalidation' + case 113880: // 'processing-instruction' 'revalidation' + case 115282: // 'attribute' 'schema' + case 115321: // 'element' 'schema' + case 115384: // 'namespace' 'schema' + case 115416: // 'processing-instruction' 'schema' + case 115794: // 'attribute' 'schema-attribute' + case 115833: // 'element' 'schema-attribute' + case 115896: // 'namespace' 'schema-attribute' + case 115928: // 'processing-instruction' 'schema-attribute' + case 116306: // 'attribute' 'schema-element' + case 116345: // 'element' 'schema-element' + case 116408: // 'namespace' 'schema-element' + case 116440: // 'processing-instruction' 'schema-element' + case 116818: // 'attribute' 'score' + case 116857: // 'element' 'score' + case 116920: // 'namespace' 'score' + case 116952: // 'processing-instruction' 'score' + case 117330: // 'attribute' 'self' + case 117369: // 'element' 'self' + case 117432: // 'namespace' 'self' + case 117464: // 'processing-instruction' 'self' + case 119890: // 'attribute' 'sliding' + case 119929: // 'element' 'sliding' + case 119992: // 'namespace' 'sliding' + case 120024: // 'processing-instruction' 'sliding' + case 120402: // 'attribute' 'some' + case 120441: // 'element' 'some' + case 120504: // 'namespace' 'some' + case 120536: // 'processing-instruction' 'some' + case 122962: // 'attribute' 'strict' + case 123001: // 'element' 'strict' + case 123064: // 'namespace' 'strict' + case 123096: // 'processing-instruction' 'strict' + case 123986: // 'attribute' 'structured-item' + case 124025: // 'element' 'structured-item' + case 124498: // 'attribute' 'switch' + case 124537: // 'element' 'switch' + case 124600: // 'namespace' 'switch' + case 124632: // 'processing-instruction' 'switch' + case 125010: // 'attribute' 'text' + case 125049: // 'element' 'text' + case 125112: // 'namespace' 'text' + case 125144: // 'processing-instruction' 'text' + case 128082: // 'attribute' 'try' + case 128121: // 'element' 'try' + case 128184: // 'namespace' 'try' + case 128216: // 'processing-instruction' 'try' + case 128594: // 'attribute' 'tumbling' + case 128633: // 'element' 'tumbling' + case 128696: // 'namespace' 'tumbling' + case 128728: // 'processing-instruction' 'tumbling' + case 129106: // 'attribute' 'type' + case 129145: // 'element' 'type' + case 129208: // 'namespace' 'type' + case 129240: // 'processing-instruction' 'type' + case 129618: // 'attribute' 'typeswitch' + case 129657: // 'element' 'typeswitch' + case 129720: // 'namespace' 'typeswitch' + case 129752: // 'processing-instruction' 'typeswitch' + case 131154: // 'attribute' 'unordered' + case 131193: // 'element' 'unordered' + case 131256: // 'namespace' 'unordered' + case 131288: // 'processing-instruction' 'unordered' + case 131666: // 'attribute' 'updating' + case 131705: // 'element' 'updating' + case 131768: // 'namespace' 'updating' + case 131800: // 'processing-instruction' 'updating' + case 133202: // 'attribute' 'validate' + case 133241: // 'element' 'validate' + case 133304: // 'namespace' 'validate' + case 133336: // 'processing-instruction' 'validate' + case 133714: // 'attribute' 'value' + case 133753: // 'element' 'value' + case 133816: // 'namespace' 'value' + case 133848: // 'processing-instruction' 'value' + case 134226: // 'attribute' 'variable' + case 134265: // 'element' 'variable' + case 134328: // 'namespace' 'variable' + case 134360: // 'processing-instruction' 'variable' + case 134738: // 'attribute' 'version' + case 134777: // 'element' 'version' + case 134840: // 'namespace' 'version' + case 134872: // 'processing-instruction' 'version' + case 136786: // 'attribute' 'while' + case 136825: // 'element' 'while' + case 136888: // 'namespace' 'while' + case 136920: // 'processing-instruction' 'while' + case 140370: // 'attribute' 'xquery' + case 140409: // 'element' 'xquery' + case 140472: // 'namespace' 'xquery' + case 140504: // 'processing-instruction' 'xquery' + case 141394: // 'attribute' '{' + case 141408: // 'comment' '{' + case 141431: // 'document' '{' + case 141433: // 'element' '{' + case 141496: // 'namespace' '{' + case 141514: // 'ordered' '{' + case 141528: // 'processing-instruction' '{' + case 141556: // 'text' '{' + case 141568: // 'unordered' '{' + parse_PostfixExpr(); + break; + default: + parse_AxisStep(); + } + eventHandler.endNonterminal("StepExpr", e0); + } + + function try_StepExpr() + { + switch (l1) + { + case 82: // 'attribute' + lookahead2W(284); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | + // '>=' | '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'paragraphs' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'self' | + // 'sentences' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'times' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'words' | 'xquery' | '{' | '|' | '||' | '|}' | '}' + break; + case 121: // 'element' + lookahead2W(282); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'paragraphs' | + // 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | + // 'rename' | 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | + // 'schema' | 'schema-attribute' | 'schema-element' | 'score' | 'self' | + // 'sentences' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'times' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'words' | 'xquery' | '{' | '|' | '||' | '|}' | '}' + break; + case 184: // 'namespace' + case 216: // 'processing-instruction' + lookahead2W(281); // NCName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + // ',' | '-' | '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | ']' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'by' | 'case' | 'cast' | 'castable' | + // 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | + // 'contains' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'paragraphs' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sentences' | + // 'sliding' | 'some' | 'stable' | 'start' | 'strict' | 'switch' | 'text' | + // 'times' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | + // 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | 'version' | + // 'where' | 'while' | 'with' | 'words' | 'xquery' | '{' | '|' | '||' | '|}' | '}' + break; + case 96: // 'comment' + case 119: // 'document' + case 202: // 'ordered' + case 244: // 'text' + case 256: // 'unordered' + lookahead2W(246); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + case 78: // 'array' + case 124: // 'empty-sequence' + case 152: // 'if' + case 165: // 'item' + case 167: // 'json-item' + case 242: // 'structured-item' + case 243: // 'switch' + case 253: // 'typeswitch' + lookahead2W(239); // S^WS | EOF | '!' | '!=' | '#' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + case 73: // 'ancestor' + case 74: // 'ancestor-or-self' + case 93: // 'child' + case 111: // 'descendant' + case 112: // 'descendant-or-self' + case 135: // 'following' + case 136: // 'following-sibling' + case 206: // 'parent' + case 212: // 'preceding' + case 213: // 'preceding-sibling' + case 229: // 'self' + lookahead2W(245); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | + // 'cast' | 'castable' | 'collation' | 'contains' | 'count' | 'default' | + // 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | + // 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | + // 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | 'start' | + // 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | '||' | + // '|}' | '}' + break; + case 6: // EQName^Token + case 70: // 'after' + case 72: // 'allowing' + case 75: // 'and' + case 77: // 'append' + case 79: // 'as' + case 80: // 'ascending' + case 81: // 'at' + case 83: // 'base-uri' + case 84: // 'before' + case 85: // 'boundary-space' + case 86: // 'break' + case 88: // 'case' + case 89: // 'cast' + case 90: // 'castable' + case 91: // 'catch' + case 94: // 'collation' + case 97: // 'constraint' + case 98: // 'construction' + case 101: // 'context' + case 102: // 'continue' + case 103: // 'copy' + case 104: // 'copy-namespaces' + case 105: // 'count' + case 106: // 'decimal-format' + case 108: // 'declare' + case 109: // 'default' + case 110: // 'delete' + case 113: // 'descending' + case 118: // 'div' + case 120: // 'document-node' + case 122: // 'else' + case 123: // 'empty' + case 125: // 'encoding' + case 126: // 'end' + case 128: // 'eq' + case 129: // 'every' + case 131: // 'except' + case 132: // 'exit' + case 133: // 'external' + case 134: // 'first' + case 137: // 'for' + case 141: // 'ft-option' + case 145: // 'function' + case 146: // 'ge' + case 148: // 'group' + case 150: // 'gt' + case 151: // 'idiv' + case 153: // 'import' + case 154: // 'in' + case 155: // 'index' + case 159: // 'insert' + case 160: // 'instance' + case 161: // 'integrity' + case 162: // 'intersect' + case 163: // 'into' + case 164: // 'is' + case 166: // 'json' + case 170: // 'last' + case 171: // 'lax' + case 172: // 'le' + case 174: // 'let' + case 176: // 'loop' + case 178: // 'lt' + case 180: // 'mod' + case 181: // 'modify' + case 182: // 'module' + case 185: // 'namespace-node' + case 186: // 'ne' + case 191: // 'node' + case 192: // 'nodes' + case 194: // 'object' + case 198: // 'only' + case 199: // 'option' + case 200: // 'or' + case 201: // 'order' + case 203: // 'ordering' + case 218: // 'rename' + case 219: // 'replace' + case 220: // 'return' + case 221: // 'returning' + case 222: // 'revalidation' + case 224: // 'satisfies' + case 225: // 'schema' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 228: // 'score' + case 234: // 'sliding' + case 235: // 'some' + case 236: // 'stable' + case 237: // 'start' + case 240: // 'strict' + case 248: // 'to' + case 249: // 'treat' + case 250: // 'try' + case 251: // 'tumbling' + case 252: // 'type' + case 254: // 'union' + case 257: // 'updating' + case 260: // 'validate' + case 261: // 'value' + case 262: // 'variable' + case 263: // 'version' + case 266: // 'where' + case 267: // 'while' + case 270: // 'with' + case 274: // 'xquery' + lookahead2W(243); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + if (lk == 35922 // 'attribute' 'after' + || lk == 35961 // 'element' 'after' + || lk == 36024 // 'namespace' 'after' + || lk == 36056 // 'processing-instruction' 'after' + || lk == 38482 // 'attribute' 'and' + || lk == 38521 // 'element' 'and' + || lk == 38584 // 'namespace' 'and' + || lk == 38616 // 'processing-instruction' 'and' + || lk == 40530 // 'attribute' 'as' + || lk == 40569 // 'element' 'as' + || lk == 40632 // 'namespace' 'as' + || lk == 40664 // 'processing-instruction' 'as' + || lk == 41042 // 'attribute' 'ascending' + || lk == 41081 // 'element' 'ascending' + || lk == 41144 // 'namespace' 'ascending' + || lk == 41176 // 'processing-instruction' 'ascending' + || lk == 41554 // 'attribute' 'at' + || lk == 41593 // 'element' 'at' + || lk == 41656 // 'namespace' 'at' + || lk == 41688 // 'processing-instruction' 'at' + || lk == 43090 // 'attribute' 'before' + || lk == 43129 // 'element' 'before' + || lk == 43192 // 'namespace' 'before' + || lk == 43224 // 'processing-instruction' 'before' + || lk == 45138 // 'attribute' 'case' + || lk == 45177 // 'element' 'case' + || lk == 45240 // 'namespace' 'case' + || lk == 45272 // 'processing-instruction' 'case' + || lk == 45650 // 'attribute' 'cast' + || lk == 45689 // 'element' 'cast' + || lk == 45752 // 'namespace' 'cast' + || lk == 45784 // 'processing-instruction' 'cast' + || lk == 46162 // 'attribute' 'castable' + || lk == 46201 // 'element' 'castable' + || lk == 46264 // 'namespace' 'castable' + || lk == 46296 // 'processing-instruction' 'castable' + || lk == 48210 // 'attribute' 'collation' + || lk == 48249 // 'element' 'collation' + || lk == 48312 // 'namespace' 'collation' + || lk == 48344 // 'processing-instruction' 'collation' + || lk == 53842 // 'attribute' 'count' + || lk == 53881 // 'element' 'count' + || lk == 53944 // 'namespace' 'count' + || lk == 53976 // 'processing-instruction' 'count' + || lk == 55890 // 'attribute' 'default' + || lk == 55929 // 'element' 'default' + || lk == 55992 // 'namespace' 'default' + || lk == 56024 // 'processing-instruction' 'default' + || lk == 57938 // 'attribute' 'descending' + || lk == 57977 // 'element' 'descending' + || lk == 58040 // 'namespace' 'descending' + || lk == 58072 // 'processing-instruction' 'descending' + || lk == 60498 // 'attribute' 'div' + || lk == 60537 // 'element' 'div' + || lk == 60600 // 'namespace' 'div' + || lk == 60632 // 'processing-instruction' 'div' + || lk == 62546 // 'attribute' 'else' + || lk == 62585 // 'element' 'else' + || lk == 62648 // 'namespace' 'else' + || lk == 62680 // 'processing-instruction' 'else' + || lk == 63058 // 'attribute' 'empty' + || lk == 63097 // 'element' 'empty' + || lk == 63160 // 'namespace' 'empty' + || lk == 63192 // 'processing-instruction' 'empty' + || lk == 64594 // 'attribute' 'end' + || lk == 64633 // 'element' 'end' + || lk == 64696 // 'namespace' 'end' + || lk == 64728 // 'processing-instruction' 'end' + || lk == 65618 // 'attribute' 'eq' + || lk == 65657 // 'element' 'eq' + || lk == 65720 // 'namespace' 'eq' + || lk == 65752 // 'processing-instruction' 'eq' + || lk == 67154 // 'attribute' 'except' + || lk == 67193 // 'element' 'except' + || lk == 67256 // 'namespace' 'except' + || lk == 67288 // 'processing-instruction' 'except' + || lk == 70226 // 'attribute' 'for' + || lk == 70265 // 'element' 'for' + || lk == 70328 // 'namespace' 'for' + || lk == 70360 // 'processing-instruction' 'for' + || lk == 74834 // 'attribute' 'ge' + || lk == 74873 // 'element' 'ge' + || lk == 74936 // 'namespace' 'ge' + || lk == 74968 // 'processing-instruction' 'ge' + || lk == 75858 // 'attribute' 'group' + || lk == 75897 // 'element' 'group' + || lk == 75960 // 'namespace' 'group' + || lk == 75992 // 'processing-instruction' 'group' + || lk == 76882 // 'attribute' 'gt' + || lk == 76921 // 'element' 'gt' + || lk == 76984 // 'namespace' 'gt' + || lk == 77016 // 'processing-instruction' 'gt' + || lk == 77394 // 'attribute' 'idiv' + || lk == 77433 // 'element' 'idiv' + || lk == 77496 // 'namespace' 'idiv' + || lk == 77528 // 'processing-instruction' 'idiv' + || lk == 82002 // 'attribute' 'instance' + || lk == 82041 // 'element' 'instance' + || lk == 82104 // 'namespace' 'instance' + || lk == 82136 // 'processing-instruction' 'instance' + || lk == 83026 // 'attribute' 'intersect' + || lk == 83065 // 'element' 'intersect' + || lk == 83128 // 'namespace' 'intersect' + || lk == 83160 // 'processing-instruction' 'intersect' + || lk == 83538 // 'attribute' 'into' + || lk == 83577 // 'element' 'into' + || lk == 83640 // 'namespace' 'into' + || lk == 83672 // 'processing-instruction' 'into' + || lk == 84050 // 'attribute' 'is' + || lk == 84089 // 'element' 'is' + || lk == 84152 // 'namespace' 'is' + || lk == 84184 // 'processing-instruction' 'is' + || lk == 88146 // 'attribute' 'le' + || lk == 88185 // 'element' 'le' + || lk == 88248 // 'namespace' 'le' + || lk == 88280 // 'processing-instruction' 'le' + || lk == 89170 // 'attribute' 'let' + || lk == 89209 // 'element' 'let' + || lk == 89272 // 'namespace' 'let' + || lk == 89304 // 'processing-instruction' 'let' + || lk == 91218 // 'attribute' 'lt' + || lk == 91257 // 'element' 'lt' + || lk == 91320 // 'namespace' 'lt' + || lk == 91352 // 'processing-instruction' 'lt' + || lk == 92242 // 'attribute' 'mod' + || lk == 92281 // 'element' 'mod' + || lk == 92344 // 'namespace' 'mod' + || lk == 92376 // 'processing-instruction' 'mod' + || lk == 92754 // 'attribute' 'modify' + || lk == 92793 // 'element' 'modify' + || lk == 92856 // 'namespace' 'modify' + || lk == 92888 // 'processing-instruction' 'modify' + || lk == 95314 // 'attribute' 'ne' + || lk == 95353 // 'element' 'ne' + || lk == 95416 // 'namespace' 'ne' + || lk == 95448 // 'processing-instruction' 'ne' + || lk == 101458 // 'attribute' 'only' + || lk == 101497 // 'element' 'only' + || lk == 101560 // 'namespace' 'only' + || lk == 101592 // 'processing-instruction' 'only' + || lk == 102482 // 'attribute' 'or' + || lk == 102521 // 'element' 'or' + || lk == 102584 // 'namespace' 'or' + || lk == 102616 // 'processing-instruction' 'or' + || lk == 102994 // 'attribute' 'order' + || lk == 103033 // 'element' 'order' + || lk == 103096 // 'namespace' 'order' + || lk == 103128 // 'processing-instruction' 'order' + || lk == 112722 // 'attribute' 'return' + || lk == 112761 // 'element' 'return' + || lk == 112824 // 'namespace' 'return' + || lk == 112856 // 'processing-instruction' 'return' + || lk == 114770 // 'attribute' 'satisfies' + || lk == 114809 // 'element' 'satisfies' + || lk == 114872 // 'namespace' 'satisfies' + || lk == 114904 // 'processing-instruction' 'satisfies' + || lk == 120914 // 'attribute' 'stable' + || lk == 120953 // 'element' 'stable' + || lk == 121016 // 'namespace' 'stable' + || lk == 121048 // 'processing-instruction' 'stable' + || lk == 121426 // 'attribute' 'start' + || lk == 121465 // 'element' 'start' + || lk == 121528 // 'namespace' 'start' + || lk == 121560 // 'processing-instruction' 'start' + || lk == 127058 // 'attribute' 'to' + || lk == 127097 // 'element' 'to' + || lk == 127160 // 'namespace' 'to' + || lk == 127192 // 'processing-instruction' 'to' + || lk == 127570 // 'attribute' 'treat' + || lk == 127609 // 'element' 'treat' + || lk == 127672 // 'namespace' 'treat' + || lk == 127704 // 'processing-instruction' 'treat' + || lk == 130130 // 'attribute' 'union' + || lk == 130169 // 'element' 'union' + || lk == 130232 // 'namespace' 'union' + || lk == 130264 // 'processing-instruction' 'union' + || lk == 136274 // 'attribute' 'where' + || lk == 136313 // 'element' 'where' + || lk == 136376 // 'namespace' 'where' + || lk == 136408 // 'processing-instruction' 'where' + || lk == 138322 // 'attribute' 'with' + || lk == 138361 // 'element' 'with' + || lk == 138424 // 'namespace' 'with' + || lk == 138456) // 'processing-instruction' 'with' + { + lk = memoized(4, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_PostfixExpr(); + memoize(4, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(4, e0A, -2); + } + } + } + switch (lk) + { + case -1: + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 31: // '$' + case 32: // '%' + case 34: // '(' + case 44: // '.' + case 54: // '<' + case 55: // '<!--' + case 59: // '<?' + case 68: // '[' + case 276: // '{' + case 278: // '{|' + case 3154: // 'attribute' EQName^Token + case 3193: // 'element' EQName^Token + case 9912: // 'namespace' NCName^Token + case 9944: // 'processing-instruction' NCName^Token + case 14854: // EQName^Token '#' + case 14918: // 'after' '#' + case 14920: // 'allowing' '#' + case 14921: // 'ancestor' '#' + case 14922: // 'ancestor-or-self' '#' + case 14923: // 'and' '#' + case 14925: // 'append' '#' + case 14926: // 'array' '#' + case 14927: // 'as' '#' + case 14928: // 'ascending' '#' + case 14929: // 'at' '#' + case 14930: // 'attribute' '#' + case 14931: // 'base-uri' '#' + case 14932: // 'before' '#' + case 14933: // 'boundary-space' '#' + case 14934: // 'break' '#' + case 14936: // 'case' '#' + case 14937: // 'cast' '#' + case 14938: // 'castable' '#' + case 14939: // 'catch' '#' + case 14941: // 'child' '#' + case 14942: // 'collation' '#' + case 14944: // 'comment' '#' + case 14945: // 'constraint' '#' + case 14946: // 'construction' '#' + case 14949: // 'context' '#' + case 14950: // 'continue' '#' + case 14951: // 'copy' '#' + case 14952: // 'copy-namespaces' '#' + case 14953: // 'count' '#' + case 14954: // 'decimal-format' '#' + case 14956: // 'declare' '#' + case 14957: // 'default' '#' + case 14958: // 'delete' '#' + case 14959: // 'descendant' '#' + case 14960: // 'descendant-or-self' '#' + case 14961: // 'descending' '#' + case 14966: // 'div' '#' + case 14967: // 'document' '#' + case 14968: // 'document-node' '#' + case 14969: // 'element' '#' + case 14970: // 'else' '#' + case 14971: // 'empty' '#' + case 14972: // 'empty-sequence' '#' + case 14973: // 'encoding' '#' + case 14974: // 'end' '#' + case 14976: // 'eq' '#' + case 14977: // 'every' '#' + case 14979: // 'except' '#' + case 14980: // 'exit' '#' + case 14981: // 'external' '#' + case 14982: // 'first' '#' + case 14983: // 'following' '#' + case 14984: // 'following-sibling' '#' + case 14985: // 'for' '#' + case 14989: // 'ft-option' '#' + case 14993: // 'function' '#' + case 14994: // 'ge' '#' + case 14996: // 'group' '#' + case 14998: // 'gt' '#' + case 14999: // 'idiv' '#' + case 15000: // 'if' '#' + case 15001: // 'import' '#' + case 15002: // 'in' '#' + case 15003: // 'index' '#' + case 15007: // 'insert' '#' + case 15008: // 'instance' '#' + case 15009: // 'integrity' '#' + case 15010: // 'intersect' '#' + case 15011: // 'into' '#' + case 15012: // 'is' '#' + case 15013: // 'item' '#' + case 15014: // 'json' '#' + case 15015: // 'json-item' '#' + case 15018: // 'last' '#' + case 15019: // 'lax' '#' + case 15020: // 'le' '#' + case 15022: // 'let' '#' + case 15024: // 'loop' '#' + case 15026: // 'lt' '#' + case 15028: // 'mod' '#' + case 15029: // 'modify' '#' + case 15030: // 'module' '#' + case 15032: // 'namespace' '#' + case 15033: // 'namespace-node' '#' + case 15034: // 'ne' '#' + case 15039: // 'node' '#' + case 15040: // 'nodes' '#' + case 15042: // 'object' '#' + case 15046: // 'only' '#' + case 15047: // 'option' '#' + case 15048: // 'or' '#' + case 15049: // 'order' '#' + case 15050: // 'ordered' '#' + case 15051: // 'ordering' '#' + case 15054: // 'parent' '#' + case 15060: // 'preceding' '#' + case 15061: // 'preceding-sibling' '#' + case 15064: // 'processing-instruction' '#' + case 15066: // 'rename' '#' + case 15067: // 'replace' '#' + case 15068: // 'return' '#' + case 15069: // 'returning' '#' + case 15070: // 'revalidation' '#' + case 15072: // 'satisfies' '#' + case 15073: // 'schema' '#' + case 15074: // 'schema-attribute' '#' + case 15075: // 'schema-element' '#' + case 15076: // 'score' '#' + case 15077: // 'self' '#' + case 15082: // 'sliding' '#' + case 15083: // 'some' '#' + case 15084: // 'stable' '#' + case 15085: // 'start' '#' + case 15088: // 'strict' '#' + case 15090: // 'structured-item' '#' + case 15091: // 'switch' '#' + case 15092: // 'text' '#' + case 15096: // 'to' '#' + case 15097: // 'treat' '#' + case 15098: // 'try' '#' + case 15099: // 'tumbling' '#' + case 15100: // 'type' '#' + case 15101: // 'typeswitch' '#' + case 15102: // 'union' '#' + case 15104: // 'unordered' '#' + case 15105: // 'updating' '#' + case 15108: // 'validate' '#' + case 15109: // 'value' '#' + case 15110: // 'variable' '#' + case 15111: // 'version' '#' + case 15114: // 'where' '#' + case 15115: // 'while' '#' + case 15118: // 'with' '#' + case 15122: // 'xquery' '#' + case 17414: // EQName^Token '(' + case 17478: // 'after' '(' + case 17480: // 'allowing' '(' + case 17481: // 'ancestor' '(' + case 17482: // 'ancestor-or-self' '(' + case 17483: // 'and' '(' + case 17485: // 'append' '(' + case 17487: // 'as' '(' + case 17488: // 'ascending' '(' + case 17489: // 'at' '(' + case 17491: // 'base-uri' '(' + case 17492: // 'before' '(' + case 17493: // 'boundary-space' '(' + case 17494: // 'break' '(' + case 17496: // 'case' '(' + case 17497: // 'cast' '(' + case 17498: // 'castable' '(' + case 17499: // 'catch' '(' + case 17501: // 'child' '(' + case 17502: // 'collation' '(' + case 17505: // 'constraint' '(' + case 17506: // 'construction' '(' + case 17509: // 'context' '(' + case 17510: // 'continue' '(' + case 17511: // 'copy' '(' + case 17512: // 'copy-namespaces' '(' + case 17513: // 'count' '(' + case 17514: // 'decimal-format' '(' + case 17516: // 'declare' '(' + case 17517: // 'default' '(' + case 17518: // 'delete' '(' + case 17519: // 'descendant' '(' + case 17520: // 'descendant-or-self' '(' + case 17521: // 'descending' '(' + case 17526: // 'div' '(' + case 17527: // 'document' '(' + case 17530: // 'else' '(' + case 17531: // 'empty' '(' + case 17533: // 'encoding' '(' + case 17534: // 'end' '(' + case 17536: // 'eq' '(' + case 17537: // 'every' '(' + case 17539: // 'except' '(' + case 17540: // 'exit' '(' + case 17541: // 'external' '(' + case 17542: // 'first' '(' + case 17543: // 'following' '(' + case 17544: // 'following-sibling' '(' + case 17545: // 'for' '(' + case 17549: // 'ft-option' '(' + case 17553: // 'function' '(' + case 17554: // 'ge' '(' + case 17556: // 'group' '(' + case 17558: // 'gt' '(' + case 17559: // 'idiv' '(' + case 17561: // 'import' '(' + case 17562: // 'in' '(' + case 17563: // 'index' '(' + case 17567: // 'insert' '(' + case 17568: // 'instance' '(' + case 17569: // 'integrity' '(' + case 17570: // 'intersect' '(' + case 17571: // 'into' '(' + case 17572: // 'is' '(' + case 17574: // 'json' '(' + case 17578: // 'last' '(' + case 17579: // 'lax' '(' + case 17580: // 'le' '(' + case 17582: // 'let' '(' + case 17584: // 'loop' '(' + case 17586: // 'lt' '(' + case 17588: // 'mod' '(' + case 17589: // 'modify' '(' + case 17590: // 'module' '(' + case 17592: // 'namespace' '(' + case 17594: // 'ne' '(' + case 17600: // 'nodes' '(' + case 17602: // 'object' '(' + case 17606: // 'only' '(' + case 17607: // 'option' '(' + case 17608: // 'or' '(' + case 17609: // 'order' '(' + case 17610: // 'ordered' '(' + case 17611: // 'ordering' '(' + case 17614: // 'parent' '(' + case 17620: // 'preceding' '(' + case 17621: // 'preceding-sibling' '(' + case 17626: // 'rename' '(' + case 17627: // 'replace' '(' + case 17628: // 'return' '(' + case 17629: // 'returning' '(' + case 17630: // 'revalidation' '(' + case 17632: // 'satisfies' '(' + case 17633: // 'schema' '(' + case 17636: // 'score' '(' + case 17637: // 'self' '(' + case 17642: // 'sliding' '(' + case 17643: // 'some' '(' + case 17644: // 'stable' '(' + case 17645: // 'start' '(' + case 17648: // 'strict' '(' + case 17656: // 'to' '(' + case 17657: // 'treat' '(' + case 17658: // 'try' '(' + case 17659: // 'tumbling' '(' + case 17660: // 'type' '(' + case 17662: // 'union' '(' + case 17664: // 'unordered' '(' + case 17665: // 'updating' '(' + case 17668: // 'validate' '(' + case 17669: // 'value' '(' + case 17670: // 'variable' '(' + case 17671: // 'version' '(' + case 17674: // 'where' '(' + case 17675: // 'while' '(' + case 17678: // 'with' '(' + case 17682: // 'xquery' '(' + case 36946: // 'attribute' 'allowing' + case 36985: // 'element' 'allowing' + case 37048: // 'namespace' 'allowing' + case 37080: // 'processing-instruction' 'allowing' + case 37458: // 'attribute' 'ancestor' + case 37497: // 'element' 'ancestor' + case 37560: // 'namespace' 'ancestor' + case 37592: // 'processing-instruction' 'ancestor' + case 37970: // 'attribute' 'ancestor-or-self' + case 38009: // 'element' 'ancestor-or-self' + case 38072: // 'namespace' 'ancestor-or-self' + case 38104: // 'processing-instruction' 'ancestor-or-self' + case 39506: // 'attribute' 'append' + case 39545: // 'element' 'append' + case 39608: // 'namespace' 'append' + case 39640: // 'processing-instruction' 'append' + case 40018: // 'attribute' 'array' + case 40057: // 'element' 'array' + case 42066: // 'attribute' 'attribute' + case 42105: // 'element' 'attribute' + case 42168: // 'namespace' 'attribute' + case 42200: // 'processing-instruction' 'attribute' + case 42578: // 'attribute' 'base-uri' + case 42617: // 'element' 'base-uri' + case 42680: // 'namespace' 'base-uri' + case 42712: // 'processing-instruction' 'base-uri' + case 43602: // 'attribute' 'boundary-space' + case 43641: // 'element' 'boundary-space' + case 43704: // 'namespace' 'boundary-space' + case 43736: // 'processing-instruction' 'boundary-space' + case 44114: // 'attribute' 'break' + case 44153: // 'element' 'break' + case 44216: // 'namespace' 'break' + case 44248: // 'processing-instruction' 'break' + case 46674: // 'attribute' 'catch' + case 46713: // 'element' 'catch' + case 46776: // 'namespace' 'catch' + case 46808: // 'processing-instruction' 'catch' + case 47698: // 'attribute' 'child' + case 47737: // 'element' 'child' + case 47800: // 'namespace' 'child' + case 47832: // 'processing-instruction' 'child' + case 49234: // 'attribute' 'comment' + case 49273: // 'element' 'comment' + case 49336: // 'namespace' 'comment' + case 49368: // 'processing-instruction' 'comment' + case 49746: // 'attribute' 'constraint' + case 49785: // 'element' 'constraint' + case 49848: // 'namespace' 'constraint' + case 49880: // 'processing-instruction' 'constraint' + case 50258: // 'attribute' 'construction' + case 50297: // 'element' 'construction' + case 50360: // 'namespace' 'construction' + case 50392: // 'processing-instruction' 'construction' + case 51794: // 'attribute' 'context' + case 51833: // 'element' 'context' + case 51896: // 'namespace' 'context' + case 51928: // 'processing-instruction' 'context' + case 52306: // 'attribute' 'continue' + case 52345: // 'element' 'continue' + case 52408: // 'namespace' 'continue' + case 52440: // 'processing-instruction' 'continue' + case 52818: // 'attribute' 'copy' + case 52857: // 'element' 'copy' + case 52920: // 'namespace' 'copy' + case 52952: // 'processing-instruction' 'copy' + case 53330: // 'attribute' 'copy-namespaces' + case 53369: // 'element' 'copy-namespaces' + case 53432: // 'namespace' 'copy-namespaces' + case 53464: // 'processing-instruction' 'copy-namespaces' + case 54354: // 'attribute' 'decimal-format' + case 54393: // 'element' 'decimal-format' + case 54456: // 'namespace' 'decimal-format' + case 54488: // 'processing-instruction' 'decimal-format' + case 55378: // 'attribute' 'declare' + case 55417: // 'element' 'declare' + case 55480: // 'namespace' 'declare' + case 55512: // 'processing-instruction' 'declare' + case 56402: // 'attribute' 'delete' + case 56441: // 'element' 'delete' + case 56504: // 'namespace' 'delete' + case 56536: // 'processing-instruction' 'delete' + case 56914: // 'attribute' 'descendant' + case 56953: // 'element' 'descendant' + case 57016: // 'namespace' 'descendant' + case 57048: // 'processing-instruction' 'descendant' + case 57426: // 'attribute' 'descendant-or-self' + case 57465: // 'element' 'descendant-or-self' + case 57528: // 'namespace' 'descendant-or-self' + case 57560: // 'processing-instruction' 'descendant-or-self' + case 61010: // 'attribute' 'document' + case 61049: // 'element' 'document' + case 61112: // 'namespace' 'document' + case 61144: // 'processing-instruction' 'document' + case 61522: // 'attribute' 'document-node' + case 61561: // 'element' 'document-node' + case 61624: // 'namespace' 'document-node' + case 61656: // 'processing-instruction' 'document-node' + case 62034: // 'attribute' 'element' + case 62073: // 'element' 'element' + case 62136: // 'namespace' 'element' + case 62168: // 'processing-instruction' 'element' + case 63570: // 'attribute' 'empty-sequence' + case 63609: // 'element' 'empty-sequence' + case 63672: // 'namespace' 'empty-sequence' + case 63704: // 'processing-instruction' 'empty-sequence' + case 64082: // 'attribute' 'encoding' + case 64121: // 'element' 'encoding' + case 64184: // 'namespace' 'encoding' + case 64216: // 'processing-instruction' 'encoding' + case 66130: // 'attribute' 'every' + case 66169: // 'element' 'every' + case 66232: // 'namespace' 'every' + case 66264: // 'processing-instruction' 'every' + case 67666: // 'attribute' 'exit' + case 67705: // 'element' 'exit' + case 67768: // 'namespace' 'exit' + case 67800: // 'processing-instruction' 'exit' + case 68178: // 'attribute' 'external' + case 68217: // 'element' 'external' + case 68280: // 'namespace' 'external' + case 68312: // 'processing-instruction' 'external' + case 68690: // 'attribute' 'first' + case 68729: // 'element' 'first' + case 68792: // 'namespace' 'first' + case 68824: // 'processing-instruction' 'first' + case 69202: // 'attribute' 'following' + case 69241: // 'element' 'following' + case 69304: // 'namespace' 'following' + case 69336: // 'processing-instruction' 'following' + case 69714: // 'attribute' 'following-sibling' + case 69753: // 'element' 'following-sibling' + case 69816: // 'namespace' 'following-sibling' + case 69848: // 'processing-instruction' 'following-sibling' + case 72274: // 'attribute' 'ft-option' + case 72313: // 'element' 'ft-option' + case 72376: // 'namespace' 'ft-option' + case 72408: // 'processing-instruction' 'ft-option' + case 74322: // 'attribute' 'function' + case 74361: // 'element' 'function' + case 74424: // 'namespace' 'function' + case 74456: // 'processing-instruction' 'function' + case 77906: // 'attribute' 'if' + case 77945: // 'element' 'if' + case 78008: // 'namespace' 'if' + case 78040: // 'processing-instruction' 'if' + case 78418: // 'attribute' 'import' + case 78457: // 'element' 'import' + case 78520: // 'namespace' 'import' + case 78552: // 'processing-instruction' 'import' + case 78930: // 'attribute' 'in' + case 78969: // 'element' 'in' + case 79032: // 'namespace' 'in' + case 79064: // 'processing-instruction' 'in' + case 79442: // 'attribute' 'index' + case 79481: // 'element' 'index' + case 79544: // 'namespace' 'index' + case 79576: // 'processing-instruction' 'index' + case 81490: // 'attribute' 'insert' + case 81529: // 'element' 'insert' + case 81592: // 'namespace' 'insert' + case 81624: // 'processing-instruction' 'insert' + case 82514: // 'attribute' 'integrity' + case 82553: // 'element' 'integrity' + case 82616: // 'namespace' 'integrity' + case 82648: // 'processing-instruction' 'integrity' + case 84562: // 'attribute' 'item' + case 84601: // 'element' 'item' + case 84664: // 'namespace' 'item' + case 84696: // 'processing-instruction' 'item' + case 85074: // 'attribute' 'json' + case 85113: // 'element' 'json' + case 85176: // 'namespace' 'json' + case 85208: // 'processing-instruction' 'json' + case 85586: // 'attribute' 'json-item' + case 85625: // 'element' 'json-item' + case 87122: // 'attribute' 'last' + case 87161: // 'element' 'last' + case 87224: // 'namespace' 'last' + case 87256: // 'processing-instruction' 'last' + case 87634: // 'attribute' 'lax' + case 87673: // 'element' 'lax' + case 87736: // 'namespace' 'lax' + case 87768: // 'processing-instruction' 'lax' + case 90194: // 'attribute' 'loop' + case 90233: // 'element' 'loop' + case 90296: // 'namespace' 'loop' + case 90328: // 'processing-instruction' 'loop' + case 93266: // 'attribute' 'module' + case 93305: // 'element' 'module' + case 93368: // 'namespace' 'module' + case 93400: // 'processing-instruction' 'module' + case 94290: // 'attribute' 'namespace' + case 94329: // 'element' 'namespace' + case 94392: // 'namespace' 'namespace' + case 94424: // 'processing-instruction' 'namespace' + case 94802: // 'attribute' 'namespace-node' + case 94841: // 'element' 'namespace-node' + case 94904: // 'namespace' 'namespace-node' + case 94936: // 'processing-instruction' 'namespace-node' + case 97874: // 'attribute' 'node' + case 97913: // 'element' 'node' + case 97976: // 'namespace' 'node' + case 98008: // 'processing-instruction' 'node' + case 98386: // 'attribute' 'nodes' + case 98425: // 'element' 'nodes' + case 98488: // 'namespace' 'nodes' + case 98520: // 'processing-instruction' 'nodes' + case 99410: // 'attribute' 'object' + case 99449: // 'element' 'object' + case 99512: // 'namespace' 'object' + case 99544: // 'processing-instruction' 'object' + case 101970: // 'attribute' 'option' + case 102009: // 'element' 'option' + case 102072: // 'namespace' 'option' + case 102104: // 'processing-instruction' 'option' + case 103506: // 'attribute' 'ordered' + case 103545: // 'element' 'ordered' + case 103608: // 'namespace' 'ordered' + case 103640: // 'processing-instruction' 'ordered' + case 104018: // 'attribute' 'ordering' + case 104057: // 'element' 'ordering' + case 104120: // 'namespace' 'ordering' + case 104152: // 'processing-instruction' 'ordering' + case 105554: // 'attribute' 'parent' + case 105593: // 'element' 'parent' + case 105656: // 'namespace' 'parent' + case 105688: // 'processing-instruction' 'parent' + case 108626: // 'attribute' 'preceding' + case 108665: // 'element' 'preceding' + case 108728: // 'namespace' 'preceding' + case 108760: // 'processing-instruction' 'preceding' + case 109138: // 'attribute' 'preceding-sibling' + case 109177: // 'element' 'preceding-sibling' + case 109240: // 'namespace' 'preceding-sibling' + case 109272: // 'processing-instruction' 'preceding-sibling' + case 110674: // 'attribute' 'processing-instruction' + case 110713: // 'element' 'processing-instruction' + case 110776: // 'namespace' 'processing-instruction' + case 110808: // 'processing-instruction' 'processing-instruction' + case 111698: // 'attribute' 'rename' + case 111737: // 'element' 'rename' + case 111800: // 'namespace' 'rename' + case 111832: // 'processing-instruction' 'rename' + case 112210: // 'attribute' 'replace' + case 112249: // 'element' 'replace' + case 112312: // 'namespace' 'replace' + case 112344: // 'processing-instruction' 'replace' + case 113234: // 'attribute' 'returning' + case 113273: // 'element' 'returning' + case 113336: // 'namespace' 'returning' + case 113368: // 'processing-instruction' 'returning' + case 113746: // 'attribute' 'revalidation' + case 113785: // 'element' 'revalidation' + case 113848: // 'namespace' 'revalidation' + case 113880: // 'processing-instruction' 'revalidation' + case 115282: // 'attribute' 'schema' + case 115321: // 'element' 'schema' + case 115384: // 'namespace' 'schema' + case 115416: // 'processing-instruction' 'schema' + case 115794: // 'attribute' 'schema-attribute' + case 115833: // 'element' 'schema-attribute' + case 115896: // 'namespace' 'schema-attribute' + case 115928: // 'processing-instruction' 'schema-attribute' + case 116306: // 'attribute' 'schema-element' + case 116345: // 'element' 'schema-element' + case 116408: // 'namespace' 'schema-element' + case 116440: // 'processing-instruction' 'schema-element' + case 116818: // 'attribute' 'score' + case 116857: // 'element' 'score' + case 116920: // 'namespace' 'score' + case 116952: // 'processing-instruction' 'score' + case 117330: // 'attribute' 'self' + case 117369: // 'element' 'self' + case 117432: // 'namespace' 'self' + case 117464: // 'processing-instruction' 'self' + case 119890: // 'attribute' 'sliding' + case 119929: // 'element' 'sliding' + case 119992: // 'namespace' 'sliding' + case 120024: // 'processing-instruction' 'sliding' + case 120402: // 'attribute' 'some' + case 120441: // 'element' 'some' + case 120504: // 'namespace' 'some' + case 120536: // 'processing-instruction' 'some' + case 122962: // 'attribute' 'strict' + case 123001: // 'element' 'strict' + case 123064: // 'namespace' 'strict' + case 123096: // 'processing-instruction' 'strict' + case 123986: // 'attribute' 'structured-item' + case 124025: // 'element' 'structured-item' + case 124498: // 'attribute' 'switch' + case 124537: // 'element' 'switch' + case 124600: // 'namespace' 'switch' + case 124632: // 'processing-instruction' 'switch' + case 125010: // 'attribute' 'text' + case 125049: // 'element' 'text' + case 125112: // 'namespace' 'text' + case 125144: // 'processing-instruction' 'text' + case 128082: // 'attribute' 'try' + case 128121: // 'element' 'try' + case 128184: // 'namespace' 'try' + case 128216: // 'processing-instruction' 'try' + case 128594: // 'attribute' 'tumbling' + case 128633: // 'element' 'tumbling' + case 128696: // 'namespace' 'tumbling' + case 128728: // 'processing-instruction' 'tumbling' + case 129106: // 'attribute' 'type' + case 129145: // 'element' 'type' + case 129208: // 'namespace' 'type' + case 129240: // 'processing-instruction' 'type' + case 129618: // 'attribute' 'typeswitch' + case 129657: // 'element' 'typeswitch' + case 129720: // 'namespace' 'typeswitch' + case 129752: // 'processing-instruction' 'typeswitch' + case 131154: // 'attribute' 'unordered' + case 131193: // 'element' 'unordered' + case 131256: // 'namespace' 'unordered' + case 131288: // 'processing-instruction' 'unordered' + case 131666: // 'attribute' 'updating' + case 131705: // 'element' 'updating' + case 131768: // 'namespace' 'updating' + case 131800: // 'processing-instruction' 'updating' + case 133202: // 'attribute' 'validate' + case 133241: // 'element' 'validate' + case 133304: // 'namespace' 'validate' + case 133336: // 'processing-instruction' 'validate' + case 133714: // 'attribute' 'value' + case 133753: // 'element' 'value' + case 133816: // 'namespace' 'value' + case 133848: // 'processing-instruction' 'value' + case 134226: // 'attribute' 'variable' + case 134265: // 'element' 'variable' + case 134328: // 'namespace' 'variable' + case 134360: // 'processing-instruction' 'variable' + case 134738: // 'attribute' 'version' + case 134777: // 'element' 'version' + case 134840: // 'namespace' 'version' + case 134872: // 'processing-instruction' 'version' + case 136786: // 'attribute' 'while' + case 136825: // 'element' 'while' + case 136888: // 'namespace' 'while' + case 136920: // 'processing-instruction' 'while' + case 140370: // 'attribute' 'xquery' + case 140409: // 'element' 'xquery' + case 140472: // 'namespace' 'xquery' + case 140504: // 'processing-instruction' 'xquery' + case 141394: // 'attribute' '{' + case 141408: // 'comment' '{' + case 141431: // 'document' '{' + case 141433: // 'element' '{' + case 141496: // 'namespace' '{' + case 141514: // 'ordered' '{' + case 141528: // 'processing-instruction' '{' + case 141556: // 'text' '{' + case 141568: // 'unordered' '{' + try_PostfixExpr(); + break; + case -3: + break; + default: + try_AxisStep(); + } + } + + function parse_AxisStep() + { + eventHandler.startNonterminal("AxisStep", e0); + switch (l1) + { + case 73: // 'ancestor' + case 74: // 'ancestor-or-self' + case 206: // 'parent' + case 212: // 'preceding' + case 213: // 'preceding-sibling' + lookahead2W(241); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 45: // '..' + case 26185: // 'ancestor' '::' + case 26186: // 'ancestor-or-self' '::' + case 26318: // 'parent' '::' + case 26324: // 'preceding' '::' + case 26325: // 'preceding-sibling' '::' + parse_ReverseStep(); + break; + default: + parse_ForwardStep(); + } + lookahead1W(237); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | 'and' | + // 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | 'castable' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + whitespace(); + parse_PredicateList(); + eventHandler.endNonterminal("AxisStep", e0); + } + + function try_AxisStep() + { + switch (l1) + { + case 73: // 'ancestor' + case 74: // 'ancestor-or-self' + case 206: // 'parent' + case 212: // 'preceding' + case 213: // 'preceding-sibling' + lookahead2W(241); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 45: // '..' + case 26185: // 'ancestor' '::' + case 26186: // 'ancestor-or-self' '::' + case 26318: // 'parent' '::' + case 26324: // 'preceding' '::' + case 26325: // 'preceding-sibling' '::' + try_ReverseStep(); + break; + default: + try_ForwardStep(); + } + lookahead1W(237); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | 'and' | + // 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | 'castable' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + try_PredicateList(); + } + + function parse_ForwardStep() + { + eventHandler.startNonterminal("ForwardStep", e0); + switch (l1) + { + case 82: // 'attribute' + lookahead2W(244); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + case 93: // 'child' + case 111: // 'descendant' + case 112: // 'descendant-or-self' + case 135: // 'following' + case 136: // 'following-sibling' + case 229: // 'self' + lookahead2W(241); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 26194: // 'attribute' '::' + case 26205: // 'child' '::' + case 26223: // 'descendant' '::' + case 26224: // 'descendant-or-self' '::' + case 26247: // 'following' '::' + case 26248: // 'following-sibling' '::' + case 26341: // 'self' '::' + parse_ForwardAxis(); + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_NodeTest(); + break; + default: + parse_AbbrevForwardStep(); + } + eventHandler.endNonterminal("ForwardStep", e0); + } + + function try_ForwardStep() + { + switch (l1) + { + case 82: // 'attribute' + lookahead2W(244); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + case 93: // 'child' + case 111: // 'descendant' + case 112: // 'descendant-or-self' + case 135: // 'following' + case 136: // 'following-sibling' + case 229: // 'self' + lookahead2W(241); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 26194: // 'attribute' '::' + case 26205: // 'child' '::' + case 26223: // 'descendant' '::' + case 26224: // 'descendant-or-self' '::' + case 26247: // 'following' '::' + case 26248: // 'following-sibling' '::' + case 26341: // 'self' '::' + try_ForwardAxis(); + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_NodeTest(); + break; + default: + try_AbbrevForwardStep(); + } + } + + function parse_ForwardAxis() + { + eventHandler.startNonterminal("ForwardAxis", e0); + switch (l1) + { + case 93: // 'child' + shift(93); // 'child' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + case 111: // 'descendant' + shift(111); // 'descendant' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + case 82: // 'attribute' + shift(82); // 'attribute' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + case 229: // 'self' + shift(229); // 'self' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + case 112: // 'descendant-or-self' + shift(112); // 'descendant-or-self' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + case 136: // 'following-sibling' + shift(136); // 'following-sibling' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + default: + shift(135); // 'following' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + } + eventHandler.endNonterminal("ForwardAxis", e0); + } + + function try_ForwardAxis() + { + switch (l1) + { + case 93: // 'child' + shiftT(93); // 'child' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + case 111: // 'descendant' + shiftT(111); // 'descendant' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + case 82: // 'attribute' + shiftT(82); // 'attribute' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + case 229: // 'self' + shiftT(229); // 'self' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + case 112: // 'descendant-or-self' + shiftT(112); // 'descendant-or-self' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + case 136: // 'following-sibling' + shiftT(136); // 'following-sibling' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + default: + shiftT(135); // 'following' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + } + } + + function parse_AbbrevForwardStep() + { + eventHandler.startNonterminal("AbbrevForwardStep", e0); + if (l1 == 66) // '@' + { + shift(66); // '@' + } + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_NodeTest(); + eventHandler.endNonterminal("AbbrevForwardStep", e0); + } + + function try_AbbrevForwardStep() + { + if (l1 == 66) // '@' + { + shiftT(66); // '@' + } + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_NodeTest(); + } + + function parse_ReverseStep() + { + eventHandler.startNonterminal("ReverseStep", e0); + switch (l1) + { + case 45: // '..' + parse_AbbrevReverseStep(); + break; + default: + parse_ReverseAxis(); + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_NodeTest(); + } + eventHandler.endNonterminal("ReverseStep", e0); + } + + function try_ReverseStep() + { + switch (l1) + { + case 45: // '..' + try_AbbrevReverseStep(); + break; + default: + try_ReverseAxis(); + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_NodeTest(); + } + } + + function parse_ReverseAxis() + { + eventHandler.startNonterminal("ReverseAxis", e0); + switch (l1) + { + case 206: // 'parent' + shift(206); // 'parent' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + case 73: // 'ancestor' + shift(73); // 'ancestor' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + case 213: // 'preceding-sibling' + shift(213); // 'preceding-sibling' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + case 212: // 'preceding' + shift(212); // 'preceding' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + break; + default: + shift(74); // 'ancestor-or-self' + lookahead1W(26); // S^WS | '(:' | '::' + shift(51); // '::' + } + eventHandler.endNonterminal("ReverseAxis", e0); + } + + function try_ReverseAxis() + { + switch (l1) + { + case 206: // 'parent' + shiftT(206); // 'parent' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + case 73: // 'ancestor' + shiftT(73); // 'ancestor' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + case 213: // 'preceding-sibling' + shiftT(213); // 'preceding-sibling' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + case 212: // 'preceding' + shiftT(212); // 'preceding' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + break; + default: + shiftT(74); // 'ancestor-or-self' + lookahead1W(26); // S^WS | '(:' | '::' + shiftT(51); // '::' + } + } + + function parse_AbbrevReverseStep() + { + eventHandler.startNonterminal("AbbrevReverseStep", e0); + shift(45); // '..' + eventHandler.endNonterminal("AbbrevReverseStep", e0); + } + + function try_AbbrevReverseStep() + { + shiftT(45); // '..' + } + + function parse_NodeTest() + { + eventHandler.startNonterminal("NodeTest", e0); + switch (l1) + { + case 82: // 'attribute' + case 96: // 'comment' + case 120: // 'document-node' + case 121: // 'element' + case 185: // 'namespace-node' + case 191: // 'node' + case 216: // 'processing-instruction' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 244: // 'text' + lookahead2W(240); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 17490: // 'attribute' '(' + case 17504: // 'comment' '(' + case 17528: // 'document-node' '(' + case 17529: // 'element' '(' + case 17593: // 'namespace-node' '(' + case 17599: // 'node' '(' + case 17624: // 'processing-instruction' '(' + case 17634: // 'schema-attribute' '(' + case 17635: // 'schema-element' '(' + case 17652: // 'text' '(' + parse_KindTest(); + break; + default: + parse_NameTest(); + } + eventHandler.endNonterminal("NodeTest", e0); + } + + function try_NodeTest() + { + switch (l1) + { + case 82: // 'attribute' + case 96: // 'comment' + case 120: // 'document-node' + case 121: // 'element' + case 185: // 'namespace-node' + case 191: // 'node' + case 216: // 'processing-instruction' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 244: // 'text' + lookahead2W(240); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 17490: // 'attribute' '(' + case 17504: // 'comment' '(' + case 17528: // 'document-node' '(' + case 17529: // 'element' '(' + case 17593: // 'namespace-node' '(' + case 17599: // 'node' '(' + case 17624: // 'processing-instruction' '(' + case 17634: // 'schema-attribute' '(' + case 17635: // 'schema-element' '(' + case 17652: // 'text' '(' + try_KindTest(); + break; + default: + try_NameTest(); + } + } + + function parse_NameTest() + { + eventHandler.startNonterminal("NameTest", e0); + switch (l1) + { + case 5: // Wildcard + shift(5); // Wildcard + break; + default: + parse_EQName(); + } + eventHandler.endNonterminal("NameTest", e0); + } + + function try_NameTest() + { + switch (l1) + { + case 5: // Wildcard + shiftT(5); // Wildcard + break; + default: + try_EQName(); + } + } + + function parse_PostfixExpr() + { + eventHandler.startNonterminal("PostfixExpr", e0); + parse_PrimaryExpr(); + for (;;) + { + lookahead1W(240); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 34 // '(' + && l1 != 68) // '[' + { + break; + } + switch (l1) + { + case 68: // '[' + whitespace(); + parse_Predicate(); + break; + default: + whitespace(); + parse_ArgumentList(); + } + } + eventHandler.endNonterminal("PostfixExpr", e0); + } + + function try_PostfixExpr() + { + try_PrimaryExpr(); + for (;;) + { + lookahead1W(240); // S^WS | EOF | '!' | '!=' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + // ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 34 // '(' + && l1 != 68) // '[' + { + break; + } + switch (l1) + { + case 68: // '[' + try_Predicate(); + break; + default: + try_ArgumentList(); + } + } + } + + function parse_ArgumentList() + { + eventHandler.startNonterminal("ArgumentList", e0); + shift(34); // '(' + lookahead1W(275); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '.' | + // '..' | '/' | '//' | '<' | '<!--' | '<?' | '?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + if (l1 != 37) // ')' + { + whitespace(); + parse_Argument(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(270); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Argument(); + } + } + shift(37); // ')' + eventHandler.endNonterminal("ArgumentList", e0); + } + + function try_ArgumentList() + { + shiftT(34); // '(' + lookahead1W(275); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '.' | + // '..' | '/' | '//' | '<' | '<!--' | '<?' | '?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + if (l1 != 37) // ')' + { + try_Argument(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(270); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Argument(); + } + } + shiftT(37); // ')' + } + + function parse_PredicateList() + { + eventHandler.startNonterminal("PredicateList", e0); + for (;;) + { + lookahead1W(237); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | 'and' | + // 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | 'castable' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 68) // '[' + { + break; + } + whitespace(); + parse_Predicate(); + } + eventHandler.endNonterminal("PredicateList", e0); + } + + function try_PredicateList() + { + for (;;) + { + lookahead1W(237); // S^WS | EOF | '!' | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | ':' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | 'after' | 'and' | + // 'as' | 'ascending' | 'at' | 'before' | 'by' | 'case' | 'cast' | 'castable' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | 'words' | '|' | '||' | '|}' | '}' + if (l1 != 68) // '[' + { + break; + } + try_Predicate(); + } + } + + function parse_Predicate() + { + eventHandler.startNonterminal("Predicate", e0); + shift(68); // '[' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(69); // ']' + eventHandler.endNonterminal("Predicate", e0); + } + + function try_Predicate() + { + shiftT(68); // '[' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(69); // ']' + } + + function parse_Literal() + { + eventHandler.startNonterminal("Literal", e0); + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + parse_NumericLiteral(); + } + eventHandler.endNonterminal("Literal", e0); + } + + function try_Literal() + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + try_NumericLiteral(); + } + } + + function parse_NumericLiteral() + { + eventHandler.startNonterminal("NumericLiteral", e0); + switch (l1) + { + case 8: // IntegerLiteral + shift(8); // IntegerLiteral + break; + case 9: // DecimalLiteral + shift(9); // DecimalLiteral + break; + default: + shift(10); // DoubleLiteral + } + eventHandler.endNonterminal("NumericLiteral", e0); + } + + function try_NumericLiteral() + { + switch (l1) + { + case 8: // IntegerLiteral + shiftT(8); // IntegerLiteral + break; + case 9: // DecimalLiteral + shiftT(9); // DecimalLiteral + break; + default: + shiftT(10); // DoubleLiteral + } + } + + function parse_VarRef() + { + eventHandler.startNonterminal("VarRef", e0); + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("VarRef", e0); + } + + function try_VarRef() + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + } + + function parse_VarName() + { + eventHandler.startNonterminal("VarName", e0); + parse_EQName(); + eventHandler.endNonterminal("VarName", e0); + } + + function try_VarName() + { + try_EQName(); + } + + function parse_ParenthesizedExpr() + { + eventHandler.startNonterminal("ParenthesizedExpr", e0); + shift(34); // '(' + lookahead1W(268); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '.' | + // '..' | '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + if (l1 != 37) // ')' + { + whitespace(); + parse_Expr(); + } + shift(37); // ')' + eventHandler.endNonterminal("ParenthesizedExpr", e0); + } + + function try_ParenthesizedExpr() + { + shiftT(34); // '(' + lookahead1W(268); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '.' | + // '..' | '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + if (l1 != 37) // ')' + { + try_Expr(); + } + shiftT(37); // ')' + } + + function parse_ContextItemExpr() + { + eventHandler.startNonterminal("ContextItemExpr", e0); + shift(44); // '.' + eventHandler.endNonterminal("ContextItemExpr", e0); + } + + function try_ContextItemExpr() + { + shiftT(44); // '.' + } + + function parse_OrderedExpr() + { + eventHandler.startNonterminal("OrderedExpr", e0); + shift(202); // 'ordered' + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + eventHandler.endNonterminal("OrderedExpr", e0); + } + + function try_OrderedExpr() + { + shiftT(202); // 'ordered' + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + } + + function parse_UnorderedExpr() + { + eventHandler.startNonterminal("UnorderedExpr", e0); + shift(256); // 'unordered' + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + eventHandler.endNonterminal("UnorderedExpr", e0); + } + + function try_UnorderedExpr() + { + shiftT(256); // 'unordered' + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + } + + function parse_FunctionCall() + { + eventHandler.startNonterminal("FunctionCall", e0); + parse_FunctionName(); + lookahead1W(22); // S^WS | '(' | '(:' + whitespace(); + parse_ArgumentList(); + eventHandler.endNonterminal("FunctionCall", e0); + } + + function try_FunctionCall() + { + try_FunctionName(); + lookahead1W(22); // S^WS | '(' | '(:' + try_ArgumentList(); + } + + function parse_Argument() + { + eventHandler.startNonterminal("Argument", e0); + switch (l1) + { + case 64: // '?' + parse_ArgumentPlaceholder(); + break; + default: + parse_ExprSingle(); + } + eventHandler.endNonterminal("Argument", e0); + } + + function try_Argument() + { + switch (l1) + { + case 64: // '?' + try_ArgumentPlaceholder(); + break; + default: + try_ExprSingle(); + } + } + + function parse_ArgumentPlaceholder() + { + eventHandler.startNonterminal("ArgumentPlaceholder", e0); + shift(64); // '?' + eventHandler.endNonterminal("ArgumentPlaceholder", e0); + } + + function try_ArgumentPlaceholder() + { + shiftT(64); // '?' + } + + function parse_Constructor() + { + eventHandler.startNonterminal("Constructor", e0); + switch (l1) + { + case 54: // '<' + case 55: // '<!--' + case 59: // '<?' + parse_DirectConstructor(); + break; + default: + parse_ComputedConstructor(); + } + eventHandler.endNonterminal("Constructor", e0); + } + + function try_Constructor() + { + switch (l1) + { + case 54: // '<' + case 55: // '<!--' + case 59: // '<?' + try_DirectConstructor(); + break; + default: + try_ComputedConstructor(); + } + } + + function parse_DirectConstructor() + { + eventHandler.startNonterminal("DirectConstructor", e0); + switch (l1) + { + case 54: // '<' + parse_DirElemConstructor(); + break; + case 55: // '<!--' + parse_DirCommentConstructor(); + break; + default: + parse_DirPIConstructor(); + } + eventHandler.endNonterminal("DirectConstructor", e0); + } + + function try_DirectConstructor() + { + switch (l1) + { + case 54: // '<' + try_DirElemConstructor(); + break; + case 55: // '<!--' + try_DirCommentConstructor(); + break; + default: + try_DirPIConstructor(); + } + } + + function parse_DirElemConstructor() + { + eventHandler.startNonterminal("DirElemConstructor", e0); + shift(54); // '<' + lookahead1(4); // QName + shift(20); // QName + parse_DirAttributeList(); + switch (l1) + { + case 48: // '/>' + shift(48); // '/>' + break; + default: + shift(61); // '>' + for (;;) + { + lookahead1(174); // CDataSection | PredefinedEntityRef | ElementContentChar | CharRef | '<' | + // '<!--' | '</' | '<?' | '{' | '{{' | '}}' + if (l1 == 56) // '</' + { + break; + } + parse_DirElemContent(); + } + shift(56); // '</' + lookahead1(4); // QName + shift(20); // QName + lookahead1(12); // S | '>' + if (l1 == 21) // S + { + shift(21); // S + } + lookahead1(8); // '>' + shift(61); // '>' + } + eventHandler.endNonterminal("DirElemConstructor", e0); + } + + function try_DirElemConstructor() + { + shiftT(54); // '<' + lookahead1(4); // QName + shiftT(20); // QName + try_DirAttributeList(); + switch (l1) + { + case 48: // '/>' + shiftT(48); // '/>' + break; + default: + shiftT(61); // '>' + for (;;) + { + lookahead1(174); // CDataSection | PredefinedEntityRef | ElementContentChar | CharRef | '<' | + // '<!--' | '</' | '<?' | '{' | '{{' | '}}' + if (l1 == 56) // '</' + { + break; + } + try_DirElemContent(); + } + shiftT(56); // '</' + lookahead1(4); // QName + shiftT(20); // QName + lookahead1(12); // S | '>' + if (l1 == 21) // S + { + shiftT(21); // S + } + lookahead1(8); // '>' + shiftT(61); // '>' + } + } + + function parse_DirAttributeList() + { + eventHandler.startNonterminal("DirAttributeList", e0); + for (;;) + { + lookahead1(19); // S | '/>' | '>' + if (l1 != 21) // S + { + break; + } + shift(21); // S + lookahead1(91); // QName | S | '/>' | '>' + if (l1 == 20) // QName + { + shift(20); // QName + lookahead1(11); // S | '=' + if (l1 == 21) // S + { + shift(21); // S + } + lookahead1(7); // '=' + shift(60); // '=' + lookahead1(18); // S | '"' | "'" + if (l1 == 21) // S + { + shift(21); // S + } + parse_DirAttributeValue(); + } + } + eventHandler.endNonterminal("DirAttributeList", e0); + } + + function try_DirAttributeList() + { + for (;;) + { + lookahead1(19); // S | '/>' | '>' + if (l1 != 21) // S + { + break; + } + shiftT(21); // S + lookahead1(91); // QName | S | '/>' | '>' + if (l1 == 20) // QName + { + shiftT(20); // QName + lookahead1(11); // S | '=' + if (l1 == 21) // S + { + shiftT(21); // S + } + lookahead1(7); // '=' + shiftT(60); // '=' + lookahead1(18); // S | '"' | "'" + if (l1 == 21) // S + { + shiftT(21); // S + } + try_DirAttributeValue(); + } + } + } + + function parse_DirAttributeValue() + { + eventHandler.startNonterminal("DirAttributeValue", e0); + lookahead1(14); // '"' | "'" + switch (l1) + { + case 28: // '"' + shift(28); // '"' + for (;;) + { + lookahead1(167); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | '"' | '{' | + // '{{' | '}}' + if (l1 == 28) // '"' + { + break; + } + switch (l1) + { + case 13: // EscapeQuot + shift(13); // EscapeQuot + break; + default: + parse_QuotAttrValueContent(); + } + } + shift(28); // '"' + break; + default: + shift(33); // "'" + for (;;) + { + lookahead1(168); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | "'" | '{' | + // '{{' | '}}' + if (l1 == 33) // "'" + { + break; + } + switch (l1) + { + case 14: // EscapeApos + shift(14); // EscapeApos + break; + default: + parse_AposAttrValueContent(); + } + } + shift(33); // "'" + } + eventHandler.endNonterminal("DirAttributeValue", e0); + } + + function try_DirAttributeValue() + { + lookahead1(14); // '"' | "'" + switch (l1) + { + case 28: // '"' + shiftT(28); // '"' + for (;;) + { + lookahead1(167); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | '"' | '{' | + // '{{' | '}}' + if (l1 == 28) // '"' + { + break; + } + switch (l1) + { + case 13: // EscapeQuot + shiftT(13); // EscapeQuot + break; + default: + try_QuotAttrValueContent(); + } + } + shiftT(28); // '"' + break; + default: + shiftT(33); // "'" + for (;;) + { + lookahead1(168); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | "'" | '{' | + // '{{' | '}}' + if (l1 == 33) // "'" + { + break; + } + switch (l1) + { + case 14: // EscapeApos + shiftT(14); // EscapeApos + break; + default: + try_AposAttrValueContent(); + } + } + shiftT(33); // "'" + } + } + + function parse_QuotAttrValueContent() + { + eventHandler.startNonterminal("QuotAttrValueContent", e0); + switch (l1) + { + case 16: // QuotAttrContentChar + shift(16); // QuotAttrContentChar + break; + default: + parse_CommonContent(); + } + eventHandler.endNonterminal("QuotAttrValueContent", e0); + } + + function try_QuotAttrValueContent() + { + switch (l1) + { + case 16: // QuotAttrContentChar + shiftT(16); // QuotAttrContentChar + break; + default: + try_CommonContent(); + } + } + + function parse_AposAttrValueContent() + { + eventHandler.startNonterminal("AposAttrValueContent", e0); + switch (l1) + { + case 17: // AposAttrContentChar + shift(17); // AposAttrContentChar + break; + default: + parse_CommonContent(); + } + eventHandler.endNonterminal("AposAttrValueContent", e0); + } + + function try_AposAttrValueContent() + { + switch (l1) + { + case 17: // AposAttrContentChar + shiftT(17); // AposAttrContentChar + break; + default: + try_CommonContent(); + } + } + + function parse_DirElemContent() + { + eventHandler.startNonterminal("DirElemContent", e0); + switch (l1) + { + case 54: // '<' + case 55: // '<!--' + case 59: // '<?' + parse_DirectConstructor(); + break; + case 4: // CDataSection + shift(4); // CDataSection + break; + case 15: // ElementContentChar + shift(15); // ElementContentChar + break; + default: + parse_CommonContent(); + } + eventHandler.endNonterminal("DirElemContent", e0); + } + + function try_DirElemContent() + { + switch (l1) + { + case 54: // '<' + case 55: // '<!--' + case 59: // '<?' + try_DirectConstructor(); + break; + case 4: // CDataSection + shiftT(4); // CDataSection + break; + case 15: // ElementContentChar + shiftT(15); // ElementContentChar + break; + default: + try_CommonContent(); + } + } + + function parse_DirCommentConstructor() + { + eventHandler.startNonterminal("DirCommentConstructor", e0); + shift(55); // '<!--' + lookahead1(1); // DirCommentContents + shift(2); // DirCommentContents + lookahead1(6); // '-->' + shift(43); // '-->' + eventHandler.endNonterminal("DirCommentConstructor", e0); + } + + function try_DirCommentConstructor() + { + shiftT(55); // '<!--' + lookahead1(1); // DirCommentContents + shiftT(2); // DirCommentContents + lookahead1(6); // '-->' + shiftT(43); // '-->' + } + + function parse_DirPIConstructor() + { + eventHandler.startNonterminal("DirPIConstructor", e0); + shift(59); // '<?' + lookahead1(3); // PITarget + shift(18); // PITarget + lookahead1(13); // S | '?>' + if (l1 == 21) // S + { + shift(21); // S + lookahead1(2); // DirPIContents + shift(3); // DirPIContents + } + lookahead1(9); // '?>' + shift(65); // '?>' + eventHandler.endNonterminal("DirPIConstructor", e0); + } + + function try_DirPIConstructor() + { + shiftT(59); // '<?' + lookahead1(3); // PITarget + shiftT(18); // PITarget + lookahead1(13); // S | '?>' + if (l1 == 21) // S + { + shiftT(21); // S + lookahead1(2); // DirPIContents + shiftT(3); // DirPIContents + } + lookahead1(9); // '?>' + shiftT(65); // '?>' + } + + function parse_ComputedConstructor() + { + eventHandler.startNonterminal("ComputedConstructor", e0); + switch (l1) + { + case 119: // 'document' + parse_CompDocConstructor(); + break; + case 121: // 'element' + parse_CompElemConstructor(); + break; + case 82: // 'attribute' + parse_CompAttrConstructor(); + break; + case 184: // 'namespace' + parse_CompNamespaceConstructor(); + break; + case 244: // 'text' + parse_CompTextConstructor(); + break; + case 96: // 'comment' + parse_CompCommentConstructor(); + break; + default: + parse_CompPIConstructor(); + } + eventHandler.endNonterminal("ComputedConstructor", e0); + } + + function try_ComputedConstructor() + { + switch (l1) + { + case 119: // 'document' + try_CompDocConstructor(); + break; + case 121: // 'element' + try_CompElemConstructor(); + break; + case 82: // 'attribute' + try_CompAttrConstructor(); + break; + case 184: // 'namespace' + try_CompNamespaceConstructor(); + break; + case 244: // 'text' + try_CompTextConstructor(); + break; + case 96: // 'comment' + try_CompCommentConstructor(); + break; + default: + try_CompPIConstructor(); + } + } + + function parse_CompElemConstructor() + { + eventHandler.startNonterminal("CompElemConstructor", e0); + shift(121); // 'element' + lookahead1W(257); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' + switch (l1) + { + case 276: // '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + break; + default: + whitespace(); + parse_EQName(); + } + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + if (l1 != 282) // '}' + { + whitespace(); + parse_ContentExpr(); + } + shift(282); // '}' + eventHandler.endNonterminal("CompElemConstructor", e0); + } + + function try_CompElemConstructor() + { + shiftT(121); // 'element' + lookahead1W(257); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' + switch (l1) + { + case 276: // '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + break; + default: + try_EQName(); + } + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + if (l1 != 282) // '}' + { + try_ContentExpr(); + } + shiftT(282); // '}' + } + + function parse_CompNamespaceConstructor() + { + eventHandler.startNonterminal("CompNamespaceConstructor", e0); + shift(184); // 'namespace' + lookahead1W(250); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' + switch (l1) + { + case 276: // '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_PrefixExpr(); + shift(282); // '}' + break; + default: + whitespace(); + parse_Prefix(); + } + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_URIExpr(); + shift(282); // '}' + eventHandler.endNonterminal("CompNamespaceConstructor", e0); + } + + function try_CompNamespaceConstructor() + { + shiftT(184); // 'namespace' + lookahead1W(250); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' + switch (l1) + { + case 276: // '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_PrefixExpr(); + shiftT(282); // '}' + break; + default: + try_Prefix(); + } + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_URIExpr(); + shiftT(282); // '}' + } + + function parse_Prefix() + { + eventHandler.startNonterminal("Prefix", e0); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + } + + function try_Prefix() + { + try_NCName(); + } + + function parse_PrefixExpr() + { + eventHandler.startNonterminal("PrefixExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("PrefixExpr", e0); + } + + function try_PrefixExpr() + { + try_Expr(); + } + + function parse_URIExpr() + { + eventHandler.startNonterminal("URIExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("URIExpr", e0); + } + + function try_URIExpr() + { + try_Expr(); + } + + function parse_FunctionItemExpr() + { + eventHandler.startNonterminal("FunctionItemExpr", e0); + switch (l1) + { + case 145: // 'function' + lookahead2W(92); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 32: // '%' + case 17553: // 'function' '(' + parse_InlineFunctionExpr(); + break; + default: + parse_NamedFunctionRef(); + } + eventHandler.endNonterminal("FunctionItemExpr", e0); + } + + function try_FunctionItemExpr() + { + switch (l1) + { + case 145: // 'function' + lookahead2W(92); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 32: // '%' + case 17553: // 'function' '(' + try_InlineFunctionExpr(); + break; + default: + try_NamedFunctionRef(); + } + } + + function parse_NamedFunctionRef() + { + eventHandler.startNonterminal("NamedFunctionRef", e0); + parse_EQName(); + lookahead1W(20); // S^WS | '#' | '(:' + shift(29); // '#' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + eventHandler.endNonterminal("NamedFunctionRef", e0); + } + + function try_NamedFunctionRef() + { + try_EQName(); + lookahead1W(20); // S^WS | '#' | '(:' + shiftT(29); // '#' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + + function parse_InlineFunctionExpr() + { + eventHandler.startNonterminal("InlineFunctionExpr", e0); + for (;;) + { + lookahead1W(97); // S^WS | '%' | '(:' | 'function' + if (l1 != 32) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + shift(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(94); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + whitespace(); + parse_ParamList(); + } + shift(37); // ')' + lookahead1W(111); // S^WS | '(:' | 'as' | '{' + if (l1 == 79) // 'as' + { + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + } + lookahead1W(87); // S^WS | '(:' | '{' + whitespace(); + parse_FunctionBody(); + eventHandler.endNonterminal("InlineFunctionExpr", e0); + } + + function try_InlineFunctionExpr() + { + for (;;) + { + lookahead1W(97); // S^WS | '%' | '(:' | 'function' + if (l1 != 32) // '%' + { + break; + } + try_Annotation(); + } + shiftT(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(94); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + try_ParamList(); + } + shiftT(37); // ')' + lookahead1W(111); // S^WS | '(:' | 'as' | '{' + if (l1 == 79) // 'as' + { + shiftT(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceType(); + } + lookahead1W(87); // S^WS | '(:' | '{' + try_FunctionBody(); + } + + function parse_SingleType() + { + eventHandler.startNonterminal("SingleType", e0); + parse_SimpleTypeName(); + lookahead1W(226); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | 'and' | 'as' | + // 'ascending' | 'at' | 'before' | 'case' | 'castable' | 'collation' | 'contains' | + // 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | + // 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | + // 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | + // 'order' | 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | + // 'start' | 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | + // '||' | '|}' | '}' + if (l1 == 64) // '?' + { + shift(64); // '?' + } + eventHandler.endNonterminal("SingleType", e0); + } + + function try_SingleType() + { + try_SimpleTypeName(); + lookahead1W(226); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + // '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | 'and' | 'as' | + // 'ascending' | 'at' | 'before' | 'case' | 'castable' | 'collation' | 'contains' | + // 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | + // 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | + // 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | + // 'order' | 'paragraphs' | 'return' | 'satisfies' | 'sentences' | 'stable' | + // 'start' | 'times' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'words' | '|' | + // '||' | '|}' | '}' + if (l1 == 64) // '?' + { + shiftT(64); // '?' + } + } + + function parse_TypeDeclaration() + { + eventHandler.startNonterminal("TypeDeclaration", e0); + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("TypeDeclaration", e0); + } + + function try_TypeDeclaration() + { + shiftT(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceType(); + } + + function parse_SequenceType() + { + eventHandler.startNonterminal("SequenceType", e0); + switch (l1) + { + case 124: // 'empty-sequence' + lookahead2W(242); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 17532: // 'empty-sequence' '(' + shift(124); // 'empty-sequence' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + break; + default: + parse_ItemType(); + lookahead1W(238); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | 'allowing' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'collation' | + // 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | + // 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + switch (l1) + { + case 39: // '*' + case 40: // '+' + case 64: // '?' + whitespace(); + parse_OccurrenceIndicator(); + break; + default: + break; + } + } + eventHandler.endNonterminal("SequenceType", e0); + } + + function try_SequenceType() + { + switch (l1) + { + case 124: // 'empty-sequence' + lookahead2W(242); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 17532: // 'empty-sequence' '(' + shiftT(124); // 'empty-sequence' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + break; + default: + try_ItemType(); + lookahead1W(238); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | 'allowing' | + // 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'collation' | + // 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | + // 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | + // 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | + // 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + switch (l1) + { + case 39: // '*' + case 40: // '+' + case 64: // '?' + try_OccurrenceIndicator(); + break; + default: + break; + } + } + } + + function parse_OccurrenceIndicator() + { + eventHandler.startNonterminal("OccurrenceIndicator", e0); + switch (l1) + { + case 64: // '?' + shift(64); // '?' + break; + case 39: // '*' + shift(39); // '*' + break; + default: + shift(40); // '+' + } + eventHandler.endNonterminal("OccurrenceIndicator", e0); + } + + function try_OccurrenceIndicator() + { + switch (l1) + { + case 64: // '?' + shiftT(64); // '?' + break; + case 39: // '*' + shiftT(39); // '*' + break; + default: + shiftT(40); // '+' + } + } + + function parse_ItemType() + { + eventHandler.startNonterminal("ItemType", e0); + switch (l1) + { + case 78: // 'array' + case 82: // 'attribute' + case 96: // 'comment' + case 120: // 'document-node' + case 121: // 'element' + case 145: // 'function' + case 165: // 'item' + case 167: // 'json-item' + case 185: // 'namespace-node' + case 191: // 'node' + case 194: // 'object' + case 216: // 'processing-instruction' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 242: // 'structured-item' + case 244: // 'text' + lookahead2W(242); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 17490: // 'attribute' '(' + case 17504: // 'comment' '(' + case 17528: // 'document-node' '(' + case 17529: // 'element' '(' + case 17593: // 'namespace-node' '(' + case 17599: // 'node' '(' + case 17624: // 'processing-instruction' '(' + case 17634: // 'schema-attribute' '(' + case 17635: // 'schema-element' '(' + case 17652: // 'text' '(' + parse_KindTest(); + break; + case 17573: // 'item' '(' + shift(165); // 'item' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + break; + case 32: // '%' + case 17553: // 'function' '(' + parse_FunctionTest(); + break; + case 34: // '(' + parse_ParenthesizedItemType(); + break; + case 17486: // 'array' '(' + case 17575: // 'json-item' '(' + case 17602: // 'object' '(' + parse_JSONTest(); + break; + case 17650: // 'structured-item' '(' + parse_StructuredItemTest(); + break; + default: + parse_AtomicOrUnionType(); + } + eventHandler.endNonterminal("ItemType", e0); + } + + function try_ItemType() + { + switch (l1) + { + case 78: // 'array' + case 82: // 'attribute' + case 96: // 'comment' + case 120: // 'document-node' + case 121: // 'element' + case 145: // 'function' + case 165: // 'item' + case 167: // 'json-item' + case 185: // 'namespace-node' + case 191: // 'node' + case 194: // 'object' + case 216: // 'processing-instruction' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 242: // 'structured-item' + case 244: // 'text' + lookahead2W(242); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '?' | ']' | 'after' | + // 'allowing' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | + // 'collation' | 'contains' | 'count' | 'default' | 'descending' | 'div' | 'else' | + // 'empty' | 'end' | 'eq' | 'except' | 'external' | 'for' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'in' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'paragraphs' | 'return' | + // 'satisfies' | 'score' | 'sentences' | 'stable' | 'start' | 'times' | 'to' | + // 'union' | 'where' | 'with' | 'words' | '{' | '|' | '||' | '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 17490: // 'attribute' '(' + case 17504: // 'comment' '(' + case 17528: // 'document-node' '(' + case 17529: // 'element' '(' + case 17593: // 'namespace-node' '(' + case 17599: // 'node' '(' + case 17624: // 'processing-instruction' '(' + case 17634: // 'schema-attribute' '(' + case 17635: // 'schema-element' '(' + case 17652: // 'text' '(' + try_KindTest(); + break; + case 17573: // 'item' '(' + shiftT(165); // 'item' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + break; + case 32: // '%' + case 17553: // 'function' '(' + try_FunctionTest(); + break; + case 34: // '(' + try_ParenthesizedItemType(); + break; + case 17486: // 'array' '(' + case 17575: // 'json-item' '(' + case 17602: // 'object' '(' + try_JSONTest(); + break; + case 17650: // 'structured-item' '(' + try_StructuredItemTest(); + break; + default: + try_AtomicOrUnionType(); + } + } + + function parse_JSONTest() + { + eventHandler.startNonterminal("JSONTest", e0); + switch (l1) + { + case 167: // 'json-item' + parse_JSONItemTest(); + break; + case 194: // 'object' + parse_JSONObjectTest(); + break; + default: + parse_JSONArrayTest(); + } + eventHandler.endNonterminal("JSONTest", e0); + } + + function try_JSONTest() + { + switch (l1) + { + case 167: // 'json-item' + try_JSONItemTest(); + break; + case 194: // 'object' + try_JSONObjectTest(); + break; + default: + try_JSONArrayTest(); + } + } + + function parse_StructuredItemTest() + { + eventHandler.startNonterminal("StructuredItemTest", e0); + shift(242); // 'structured-item' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("StructuredItemTest", e0); + } + + function try_StructuredItemTest() + { + shiftT(242); // 'structured-item' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_JSONItemTest() + { + eventHandler.startNonterminal("JSONItemTest", e0); + shift(167); // 'json-item' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("JSONItemTest", e0); + } + + function try_JSONItemTest() + { + shiftT(167); // 'json-item' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_JSONObjectTest() + { + eventHandler.startNonterminal("JSONObjectTest", e0); + shift(194); // 'object' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("JSONObjectTest", e0); + } + + function try_JSONObjectTest() + { + shiftT(194); // 'object' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_JSONArrayTest() + { + eventHandler.startNonterminal("JSONArrayTest", e0); + shift(78); // 'array' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("JSONArrayTest", e0); + } + + function try_JSONArrayTest() + { + shiftT(78); // 'array' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_AtomicOrUnionType() + { + eventHandler.startNonterminal("AtomicOrUnionType", e0); + parse_EQName(); + eventHandler.endNonterminal("AtomicOrUnionType", e0); + } + + function try_AtomicOrUnionType() + { + try_EQName(); + } + + function parse_KindTest() + { + eventHandler.startNonterminal("KindTest", e0); + switch (l1) + { + case 120: // 'document-node' + parse_DocumentTest(); + break; + case 121: // 'element' + parse_ElementTest(); + break; + case 82: // 'attribute' + parse_AttributeTest(); + break; + case 227: // 'schema-element' + parse_SchemaElementTest(); + break; + case 226: // 'schema-attribute' + parse_SchemaAttributeTest(); + break; + case 216: // 'processing-instruction' + parse_PITest(); + break; + case 96: // 'comment' + parse_CommentTest(); + break; + case 244: // 'text' + parse_TextTest(); + break; + case 185: // 'namespace-node' + parse_NamespaceNodeTest(); + break; + default: + parse_AnyKindTest(); + } + eventHandler.endNonterminal("KindTest", e0); + } + + function try_KindTest() + { + switch (l1) + { + case 120: // 'document-node' + try_DocumentTest(); + break; + case 121: // 'element' + try_ElementTest(); + break; + case 82: // 'attribute' + try_AttributeTest(); + break; + case 227: // 'schema-element' + try_SchemaElementTest(); + break; + case 226: // 'schema-attribute' + try_SchemaAttributeTest(); + break; + case 216: // 'processing-instruction' + try_PITest(); + break; + case 96: // 'comment' + try_CommentTest(); + break; + case 244: // 'text' + try_TextTest(); + break; + case 185: // 'namespace-node' + try_NamespaceNodeTest(); + break; + default: + try_AnyKindTest(); + } + } + + function parse_AnyKindTest() + { + eventHandler.startNonterminal("AnyKindTest", e0); + shift(191); // 'node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("AnyKindTest", e0); + } + + function try_AnyKindTest() + { + shiftT(191); // 'node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_DocumentTest() + { + eventHandler.startNonterminal("DocumentTest", e0); + shift(120); // 'document-node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(144); // S^WS | '(:' | ')' | 'element' | 'schema-element' + if (l1 != 37) // ')' + { + switch (l1) + { + case 121: // 'element' + whitespace(); + parse_ElementTest(); + break; + default: + whitespace(); + parse_SchemaElementTest(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("DocumentTest", e0); + } + + function try_DocumentTest() + { + shiftT(120); // 'document-node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(144); // S^WS | '(:' | ')' | 'element' | 'schema-element' + if (l1 != 37) // ')' + { + switch (l1) + { + case 121: // 'element' + try_ElementTest(); + break; + default: + try_SchemaElementTest(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_TextTest() + { + eventHandler.startNonterminal("TextTest", e0); + shift(244); // 'text' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("TextTest", e0); + } + + function try_TextTest() + { + shiftT(244); // 'text' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_CommentTest() + { + eventHandler.startNonterminal("CommentTest", e0); + shift(96); // 'comment' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("CommentTest", e0); + } + + function try_CommentTest() + { + shiftT(96); // 'comment' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_NamespaceNodeTest() + { + eventHandler.startNonterminal("NamespaceNodeTest", e0); + shift(185); // 'namespace-node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("NamespaceNodeTest", e0); + } + + function try_NamespaceNodeTest() + { + shiftT(185); // 'namespace-node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_PITest() + { + eventHandler.startNonterminal("PITest", e0); + shift(216); // 'processing-instruction' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(252); // StringLiteral | NCName^Token | S^WS | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | + // 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + if (l1 != 37) // ')' + { + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + whitespace(); + parse_NCName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("PITest", e0); + } + + function try_PITest() + { + shiftT(216); // 'processing-instruction' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(252); // StringLiteral | NCName^Token | S^WS | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | + // 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + if (l1 != 37) // ')' + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + try_NCName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_AttributeTest() + { + eventHandler.startNonterminal("AttributeTest", e0); + shift(82); // 'attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(260); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 != 37) // ')' + { + whitespace(); + parse_AttribNameOrWildcard(); + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 == 41) // ',' + { + shift(41); // ',' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_TypeName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("AttributeTest", e0); + } + + function try_AttributeTest() + { + shiftT(82); // 'attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(260); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 != 37) // ')' + { + try_AttribNameOrWildcard(); + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 == 41) // ',' + { + shiftT(41); // ',' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_TypeName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_AttribNameOrWildcard() + { + eventHandler.startNonterminal("AttribNameOrWildcard", e0); + switch (l1) + { + case 38: // '*' + shift(38); // '*' + break; + default: + parse_AttributeName(); + } + eventHandler.endNonterminal("AttribNameOrWildcard", e0); + } + + function try_AttribNameOrWildcard() + { + switch (l1) + { + case 38: // '*' + shiftT(38); // '*' + break; + default: + try_AttributeName(); + } + } + + function parse_SchemaAttributeTest() + { + eventHandler.startNonterminal("SchemaAttributeTest", e0); + shift(226); // 'schema-attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_AttributeDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("SchemaAttributeTest", e0); + } + + function try_SchemaAttributeTest() + { + shiftT(226); // 'schema-attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_AttributeDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_AttributeDeclaration() + { + eventHandler.startNonterminal("AttributeDeclaration", e0); + parse_AttributeName(); + eventHandler.endNonterminal("AttributeDeclaration", e0); + } + + function try_AttributeDeclaration() + { + try_AttributeName(); + } + + function parse_ElementTest() + { + eventHandler.startNonterminal("ElementTest", e0); + shift(121); // 'element' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(260); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 != 37) // ')' + { + whitespace(); + parse_ElementNameOrWildcard(); + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 == 41) // ',' + { + shift(41); // ',' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_TypeName(); + lookahead1W(102); // S^WS | '(:' | ')' | '?' + if (l1 == 64) // '?' + { + shift(64); // '?' + } + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("ElementTest", e0); + } + + function try_ElementTest() + { + shiftT(121); // 'element' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(260); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 != 37) // ')' + { + try_ElementNameOrWildcard(); + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 == 41) // ',' + { + shiftT(41); // ',' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_TypeName(); + lookahead1W(102); // S^WS | '(:' | ')' | '?' + if (l1 == 64) // '?' + { + shiftT(64); // '?' + } + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_ElementNameOrWildcard() + { + eventHandler.startNonterminal("ElementNameOrWildcard", e0); + switch (l1) + { + case 38: // '*' + shift(38); // '*' + break; + default: + parse_ElementName(); + } + eventHandler.endNonterminal("ElementNameOrWildcard", e0); + } + + function try_ElementNameOrWildcard() + { + switch (l1) + { + case 38: // '*' + shiftT(38); // '*' + break; + default: + try_ElementName(); + } + } + + function parse_SchemaElementTest() + { + eventHandler.startNonterminal("SchemaElementTest", e0); + shift(227); // 'schema-element' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_ElementDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("SchemaElementTest", e0); + } + + function try_SchemaElementTest() + { + shiftT(227); // 'schema-element' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_ElementDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_ElementDeclaration() + { + eventHandler.startNonterminal("ElementDeclaration", e0); + parse_ElementName(); + eventHandler.endNonterminal("ElementDeclaration", e0); + } + + function try_ElementDeclaration() + { + try_ElementName(); + } + + function parse_AttributeName() + { + eventHandler.startNonterminal("AttributeName", e0); + parse_EQName(); + eventHandler.endNonterminal("AttributeName", e0); + } + + function try_AttributeName() + { + try_EQName(); + } + + function parse_ElementName() + { + eventHandler.startNonterminal("ElementName", e0); + parse_EQName(); + eventHandler.endNonterminal("ElementName", e0); + } + + function try_ElementName() + { + try_EQName(); + } + + function parse_SimpleTypeName() + { + eventHandler.startNonterminal("SimpleTypeName", e0); + parse_TypeName(); + eventHandler.endNonterminal("SimpleTypeName", e0); + } + + function try_SimpleTypeName() + { + try_TypeName(); + } + + function parse_TypeName() + { + eventHandler.startNonterminal("TypeName", e0); + parse_EQName(); + eventHandler.endNonterminal("TypeName", e0); + } + + function try_TypeName() + { + try_EQName(); + } + + function parse_FunctionTest() + { + eventHandler.startNonterminal("FunctionTest", e0); + for (;;) + { + lookahead1W(97); // S^WS | '%' | '(:' | 'function' + if (l1 != 32) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + switch (l1) + { + case 145: // 'function' + lookahead2W(22); // S^WS | '(' | '(:' + break; + default: + lk = l1; + } + lk = memoized(5, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AnyFunctionTest(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(5, e0, lk); + } + switch (lk) + { + case -1: + whitespace(); + parse_AnyFunctionTest(); + break; + default: + whitespace(); + parse_TypedFunctionTest(); + } + eventHandler.endNonterminal("FunctionTest", e0); + } + + function try_FunctionTest() + { + for (;;) + { + lookahead1W(97); // S^WS | '%' | '(:' | 'function' + if (l1 != 32) // '%' + { + break; + } + try_Annotation(); + } + switch (l1) + { + case 145: // 'function' + lookahead2W(22); // S^WS | '(' | '(:' + break; + default: + lk = l1; + } + lk = memoized(5, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AnyFunctionTest(); + memoize(5, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(5, e0A, -2); + } + } + switch (lk) + { + case -1: + try_AnyFunctionTest(); + break; + case -3: + break; + default: + try_TypedFunctionTest(); + } + } + + function parse_AnyFunctionTest() + { + eventHandler.startNonterminal("AnyFunctionTest", e0); + shift(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(24); // S^WS | '(:' | '*' + shift(38); // '*' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("AnyFunctionTest", e0); + } + + function try_AnyFunctionTest() + { + shiftT(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(24); // S^WS | '(:' | '*' + shiftT(38); // '*' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_TypedFunctionTest() + { + eventHandler.startNonterminal("TypedFunctionTest", e0); + shift(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(262); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 != 37) // ')' + { + whitespace(); + parse_SequenceType(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + } + } + shift(37); // ')' + lookahead1W(30); // S^WS | '(:' | 'as' + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("TypedFunctionTest", e0); + } + + function try_TypedFunctionTest() + { + shiftT(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(262); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 != 37) // ')' + { + try_SequenceType(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceType(); + } + } + shiftT(37); // ')' + lookahead1W(30); // S^WS | '(:' | 'as' + shiftT(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceType(); + } + + function parse_ParenthesizedItemType() + { + eventHandler.startNonterminal("ParenthesizedItemType", e0); + shift(34); // '(' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_ItemType(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("ParenthesizedItemType", e0); + } + + function try_ParenthesizedItemType() + { + shiftT(34); // '(' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_ItemType(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_RevalidationDecl() + { + eventHandler.startNonterminal("RevalidationDecl", e0); + shift(108); // 'declare' + lookahead1W(72); // S^WS | '(:' | 'revalidation' + shift(222); // 'revalidation' + lookahead1W(152); // S^WS | '(:' | 'lax' | 'skip' | 'strict' + switch (l1) + { + case 240: // 'strict' + shift(240); // 'strict' + break; + case 171: // 'lax' + shift(171); // 'lax' + break; + default: + shift(233); // 'skip' + } + eventHandler.endNonterminal("RevalidationDecl", e0); + } + + function parse_InsertExprTargetChoice() + { + eventHandler.startNonterminal("InsertExprTargetChoice", e0); + switch (l1) + { + case 70: // 'after' + shift(70); // 'after' + break; + case 84: // 'before' + shift(84); // 'before' + break; + default: + if (l1 == 79) // 'as' + { + shift(79); // 'as' + lookahead1W(119); // S^WS | '(:' | 'first' | 'last' + switch (l1) + { + case 134: // 'first' + shift(134); // 'first' + break; + default: + shift(170); // 'last' + } + } + lookahead1W(54); // S^WS | '(:' | 'into' + shift(163); // 'into' + } + eventHandler.endNonterminal("InsertExprTargetChoice", e0); + } + + function try_InsertExprTargetChoice() + { + switch (l1) + { + case 70: // 'after' + shiftT(70); // 'after' + break; + case 84: // 'before' + shiftT(84); // 'before' + break; + default: + if (l1 == 79) // 'as' + { + shiftT(79); // 'as' + lookahead1W(119); // S^WS | '(:' | 'first' | 'last' + switch (l1) + { + case 134: // 'first' + shiftT(134); // 'first' + break; + default: + shiftT(170); // 'last' + } + } + lookahead1W(54); // S^WS | '(:' | 'into' + shiftT(163); // 'into' + } + } + + function parse_InsertExpr() + { + eventHandler.startNonterminal("InsertExpr", e0); + shift(159); // 'insert' + lookahead1W(129); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 191: // 'node' + shift(191); // 'node' + break; + default: + shift(192); // 'nodes' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_SourceExpr(); + whitespace(); + parse_InsertExprTargetChoice(); + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_TargetExpr(); + eventHandler.endNonterminal("InsertExpr", e0); + } + + function try_InsertExpr() + { + shiftT(159); // 'insert' + lookahead1W(129); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 191: // 'node' + shiftT(191); // 'node' + break; + default: + shiftT(192); // 'nodes' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_SourceExpr(); + try_InsertExprTargetChoice(); + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_TargetExpr(); + } + + function parse_DeleteExpr() + { + eventHandler.startNonterminal("DeleteExpr", e0); + shift(110); // 'delete' + lookahead1W(129); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 191: // 'node' + shift(191); // 'node' + break; + default: + shift(192); // 'nodes' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_TargetExpr(); + eventHandler.endNonterminal("DeleteExpr", e0); + } + + function try_DeleteExpr() + { + shiftT(110); // 'delete' + lookahead1W(129); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 191: // 'node' + shiftT(191); // 'node' + break; + default: + shiftT(192); // 'nodes' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_TargetExpr(); + } + + function parse_ReplaceExpr() + { + eventHandler.startNonterminal("ReplaceExpr", e0); + shift(219); // 'replace' + lookahead1W(130); // S^WS | '(:' | 'node' | 'value' + if (l1 == 261) // 'value' + { + shift(261); // 'value' + lookahead1W(64); // S^WS | '(:' | 'of' + shift(196); // 'of' + } + lookahead1W(62); // S^WS | '(:' | 'node' + shift(191); // 'node' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_TargetExpr(); + shift(270); // 'with' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ReplaceExpr", e0); + } + + function try_ReplaceExpr() + { + shiftT(219); // 'replace' + lookahead1W(130); // S^WS | '(:' | 'node' | 'value' + if (l1 == 261) // 'value' + { + shiftT(261); // 'value' + lookahead1W(64); // S^WS | '(:' | 'of' + shiftT(196); // 'of' + } + lookahead1W(62); // S^WS | '(:' | 'node' + shiftT(191); // 'node' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_TargetExpr(); + shiftT(270); // 'with' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_RenameExpr() + { + eventHandler.startNonterminal("RenameExpr", e0); + shift(218); // 'rename' + lookahead1W(62); // S^WS | '(:' | 'node' + shift(191); // 'node' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_TargetExpr(); + shift(79); // 'as' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_NewNameExpr(); + eventHandler.endNonterminal("RenameExpr", e0); + } + + function try_RenameExpr() + { + shiftT(218); // 'rename' + lookahead1W(62); // S^WS | '(:' | 'node' + shiftT(191); // 'node' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_TargetExpr(); + shiftT(79); // 'as' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_NewNameExpr(); + } + + function parse_SourceExpr() + { + eventHandler.startNonterminal("SourceExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("SourceExpr", e0); + } + + function try_SourceExpr() + { + try_ExprSingle(); + } + + function parse_TargetExpr() + { + eventHandler.startNonterminal("TargetExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("TargetExpr", e0); + } + + function try_TargetExpr() + { + try_ExprSingle(); + } + + function parse_NewNameExpr() + { + eventHandler.startNonterminal("NewNameExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("NewNameExpr", e0); + } + + function try_NewNameExpr() + { + try_ExprSingle(); + } + + function parse_TransformExpr() + { + eventHandler.startNonterminal("TransformExpr", e0); + shift(103); // 'copy' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_TransformSpec(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_TransformSpec(); + } + shift(181); // 'modify' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TransformExpr", e0); + } + + function try_TransformExpr() + { + shiftT(103); // 'copy' + lookahead1W(21); // S^WS | '$' | '(:' + try_TransformSpec(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_TransformSpec(); + } + shiftT(181); // 'modify' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + shiftT(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_TransformSpec() + { + eventHandler.startNonterminal("TransformSpec", e0); + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(27); // S^WS | '(:' | ':=' + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TransformSpec", e0); + } + + function try_TransformSpec() + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(27); // S^WS | '(:' | ':=' + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_FTSelection() + { + eventHandler.startNonterminal("FTSelection", e0); + parse_FTOr(); + for (;;) + { + lookahead1W(211); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | + // 'only' | 'or' | 'order' | 'ordered' | 'return' | 'same' | 'satisfies' | + // 'stable' | 'start' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + switch (l1) + { + case 81: // 'at' + lookahead2W(151); // S^WS | '(:' | 'end' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk != 115 // 'different' + && lk != 117 // 'distance' + && lk != 127 // 'entire' + && lk != 202 // 'ordered' + && lk != 223 // 'same' + && lk != 269 // 'window' + && lk != 64593 // 'at' 'end' + && lk != 121425) // 'at' 'start' + { + break; + } + whitespace(); + parse_FTPosFilter(); + } + eventHandler.endNonterminal("FTSelection", e0); + } + + function try_FTSelection() + { + try_FTOr(); + for (;;) + { + lookahead1W(211); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | + // 'only' | 'or' | 'order' | 'ordered' | 'return' | 'same' | 'satisfies' | + // 'stable' | 'start' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + switch (l1) + { + case 81: // 'at' + lookahead2W(151); // S^WS | '(:' | 'end' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk != 115 // 'different' + && lk != 117 // 'distance' + && lk != 127 // 'entire' + && lk != 202 // 'ordered' + && lk != 223 // 'same' + && lk != 269 // 'window' + && lk != 64593 // 'at' 'end' + && lk != 121425) // 'at' 'start' + { + break; + } + try_FTPosFilter(); + } + } + + function parse_FTWeight() + { + eventHandler.startNonterminal("FTWeight", e0); + shift(264); // 'weight' + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + eventHandler.endNonterminal("FTWeight", e0); + } + + function try_FTWeight() + { + shiftT(264); // 'weight' + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + } + + function parse_FTOr() + { + eventHandler.startNonterminal("FTOr", e0); + parse_FTAnd(); + for (;;) + { + if (l1 != 144) // 'ftor' + { + break; + } + shift(144); // 'ftor' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTAnd(); + } + eventHandler.endNonterminal("FTOr", e0); + } + + function try_FTOr() + { + try_FTAnd(); + for (;;) + { + if (l1 != 144) // 'ftor' + { + break; + } + shiftT(144); // 'ftor' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTAnd(); + } + } + + function parse_FTAnd() + { + eventHandler.startNonterminal("FTAnd", e0); + parse_FTMildNot(); + for (;;) + { + if (l1 != 142) // 'ftand' + { + break; + } + shift(142); // 'ftand' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTMildNot(); + } + eventHandler.endNonterminal("FTAnd", e0); + } + + function try_FTAnd() + { + try_FTMildNot(); + for (;;) + { + if (l1 != 142) // 'ftand' + { + break; + } + shiftT(142); // 'ftand' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTMildNot(); + } + } + + function parse_FTMildNot() + { + eventHandler.startNonterminal("FTMildNot", e0); + parse_FTUnaryNot(); + for (;;) + { + lookahead1W(212); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'where' | 'window' | 'with' | + // 'without' | '|}' | '}' + if (l1 != 193) // 'not' + { + break; + } + shift(193); // 'not' + lookahead1W(53); // S^WS | '(:' | 'in' + shift(154); // 'in' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTUnaryNot(); + } + eventHandler.endNonterminal("FTMildNot", e0); + } + + function try_FTMildNot() + { + try_FTUnaryNot(); + for (;;) + { + lookahead1W(212); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'where' | 'window' | 'with' | + // 'without' | '|}' | '}' + if (l1 != 193) // 'not' + { + break; + } + shiftT(193); // 'not' + lookahead1W(53); // S^WS | '(:' | 'in' + shiftT(154); // 'in' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTUnaryNot(); + } + } + + function parse_FTUnaryNot() + { + eventHandler.startNonterminal("FTUnaryNot", e0); + if (l1 == 143) // 'ftnot' + { + shift(143); // 'ftnot' + } + lookahead1W(155); // StringLiteral | S^WS | '(' | '(#' | '(:' | '{' + whitespace(); + parse_FTPrimaryWithOptions(); + eventHandler.endNonterminal("FTUnaryNot", e0); + } + + function try_FTUnaryNot() + { + if (l1 == 143) // 'ftnot' + { + shiftT(143); // 'ftnot' + } + lookahead1W(155); // StringLiteral | S^WS | '(' | '(#' | '(:' | '{' + try_FTPrimaryWithOptions(); + } + + function parse_FTPrimaryWithOptions() + { + eventHandler.startNonterminal("FTPrimaryWithOptions", e0); + parse_FTPrimary(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | 'where' | + // 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 259) // 'using' + { + whitespace(); + parse_FTMatchOptions(); + } + if (l1 == 264) // 'weight' + { + whitespace(); + parse_FTWeight(); + } + eventHandler.endNonterminal("FTPrimaryWithOptions", e0); + } + + function try_FTPrimaryWithOptions() + { + try_FTPrimary(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | 'where' | + // 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 259) // 'using' + { + try_FTMatchOptions(); + } + if (l1 == 264) // 'weight' + { + try_FTWeight(); + } + } + + function parse_FTPrimary() + { + eventHandler.startNonterminal("FTPrimary", e0); + switch (l1) + { + case 34: // '(' + shift(34); // '(' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTSelection(); + shift(37); // ')' + break; + case 35: // '(#' + parse_FTExtensionSelection(); + break; + default: + parse_FTWords(); + lookahead1W(215); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 195) // 'occurs' + { + whitespace(); + parse_FTTimes(); + } + } + eventHandler.endNonterminal("FTPrimary", e0); + } + + function try_FTPrimary() + { + switch (l1) + { + case 34: // '(' + shiftT(34); // '(' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTSelection(); + shiftT(37); // ')' + break; + case 35: // '(#' + try_FTExtensionSelection(); + break; + default: + try_FTWords(); + lookahead1W(215); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 195) // 'occurs' + { + try_FTTimes(); + } + } + } + + function parse_FTWords() + { + eventHandler.startNonterminal("FTWords", e0); + parse_FTWordsValue(); + lookahead1W(221); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'all' | 'and' | 'any' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'phrase' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | + // 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 71 // 'all' + || l1 == 76 // 'any' + || l1 == 210) // 'phrase' + { + whitespace(); + parse_FTAnyallOption(); + } + eventHandler.endNonterminal("FTWords", e0); + } + + function try_FTWords() + { + try_FTWordsValue(); + lookahead1W(221); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'all' | 'and' | 'any' | 'as' | 'ascending' | + // 'at' | 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'phrase' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | + // 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 == 71 // 'all' + || l1 == 76 // 'any' + || l1 == 210) // 'phrase' + { + try_FTAnyallOption(); + } + } + + function parse_FTWordsValue() + { + eventHandler.startNonterminal("FTWordsValue", e0); + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + } + eventHandler.endNonterminal("FTWordsValue", e0); + } + + function try_FTWordsValue() + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + } + } + + function parse_FTExtensionSelection() + { + eventHandler.startNonterminal("FTExtensionSelection", e0); + for (;;) + { + whitespace(); + parse_Pragma(); + lookahead1W(100); // S^WS | '(#' | '(:' | '{' + if (l1 != 35) // '(#' + { + break; + } + } + shift(276); // '{' + lookahead1W(166); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' | '}' + if (l1 != 282) // '}' + { + whitespace(); + parse_FTSelection(); + } + shift(282); // '}' + eventHandler.endNonterminal("FTExtensionSelection", e0); + } + + function try_FTExtensionSelection() + { + for (;;) + { + try_Pragma(); + lookahead1W(100); // S^WS | '(#' | '(:' | '{' + if (l1 != 35) // '(#' + { + break; + } + } + shiftT(276); // '{' + lookahead1W(166); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' | '}' + if (l1 != 282) // '}' + { + try_FTSelection(); + } + shiftT(282); // '}' + } + + function parse_FTAnyallOption() + { + eventHandler.startNonterminal("FTAnyallOption", e0); + switch (l1) + { + case 76: // 'any' + shift(76); // 'any' + lookahead1W(218); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | 'word' | '|}' | '}' + if (l1 == 272) // 'word' + { + shift(272); // 'word' + } + break; + case 71: // 'all' + shift(71); // 'all' + lookahead1W(219); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | 'words' | '|}' | '}' + if (l1 == 273) // 'words' + { + shift(273); // 'words' + } + break; + default: + shift(210); // 'phrase' + } + eventHandler.endNonterminal("FTAnyallOption", e0); + } + + function try_FTAnyallOption() + { + switch (l1) + { + case 76: // 'any' + shiftT(76); // 'any' + lookahead1W(218); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | 'word' | '|}' | '}' + if (l1 == 272) // 'word' + { + shiftT(272); // 'word' + } + break; + case 71: // 'all' + shiftT(71); // 'all' + lookahead1W(219); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'occurs' | 'only' | 'or' | 'order' | 'ordered' | + // 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | + // 'where' | 'window' | 'with' | 'without' | 'words' | '|}' | '}' + if (l1 == 273) // 'words' + { + shiftT(273); // 'words' + } + break; + default: + shiftT(210); // 'phrase' + } + } + + function parse_FTTimes() + { + eventHandler.startNonterminal("FTTimes", e0); + shift(195); // 'occurs' + lookahead1W(149); // S^WS | '(:' | 'at' | 'exactly' | 'from' + whitespace(); + parse_FTRange(); + shift(247); // 'times' + eventHandler.endNonterminal("FTTimes", e0); + } + + function try_FTTimes() + { + shiftT(195); // 'occurs' + lookahead1W(149); // S^WS | '(:' | 'at' | 'exactly' | 'from' + try_FTRange(); + shiftT(247); // 'times' + } + + function parse_FTRange() + { + eventHandler.startNonterminal("FTRange", e0); + switch (l1) + { + case 130: // 'exactly' + shift(130); // 'exactly' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + break; + case 81: // 'at' + shift(81); // 'at' + lookahead1W(125); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 173: // 'least' + shift(173); // 'least' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + break; + default: + shift(183); // 'most' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + } + break; + default: + shift(140); // 'from' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + shift(248); // 'to' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + } + eventHandler.endNonterminal("FTRange", e0); + } + + function try_FTRange() + { + switch (l1) + { + case 130: // 'exactly' + shiftT(130); // 'exactly' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_AdditiveExpr(); + break; + case 81: // 'at' + shiftT(81); // 'at' + lookahead1W(125); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 173: // 'least' + shiftT(173); // 'least' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_AdditiveExpr(); + break; + default: + shiftT(183); // 'most' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_AdditiveExpr(); + } + break; + default: + shiftT(140); // 'from' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_AdditiveExpr(); + shiftT(248); // 'to' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_AdditiveExpr(); + } + } + + function parse_FTPosFilter() + { + eventHandler.startNonterminal("FTPosFilter", e0); + switch (l1) + { + case 202: // 'ordered' + parse_FTOrder(); + break; + case 269: // 'window' + parse_FTWindow(); + break; + case 117: // 'distance' + parse_FTDistance(); + break; + case 115: // 'different' + case 223: // 'same' + parse_FTScope(); + break; + default: + parse_FTContent(); + } + eventHandler.endNonterminal("FTPosFilter", e0); + } + + function try_FTPosFilter() + { + switch (l1) + { + case 202: // 'ordered' + try_FTOrder(); + break; + case 269: // 'window' + try_FTWindow(); + break; + case 117: // 'distance' + try_FTDistance(); + break; + case 115: // 'different' + case 223: // 'same' + try_FTScope(); + break; + default: + try_FTContent(); + } + } + + function parse_FTOrder() + { + eventHandler.startNonterminal("FTOrder", e0); + shift(202); // 'ordered' + eventHandler.endNonterminal("FTOrder", e0); + } + + function try_FTOrder() + { + shiftT(202); // 'ordered' + } + + function parse_FTWindow() + { + eventHandler.startNonterminal("FTWindow", e0); + shift(269); // 'window' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_AdditiveExpr(); + whitespace(); + parse_FTUnit(); + eventHandler.endNonterminal("FTWindow", e0); + } + + function try_FTWindow() + { + shiftT(269); // 'window' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_AdditiveExpr(); + try_FTUnit(); + } + + function parse_FTDistance() + { + eventHandler.startNonterminal("FTDistance", e0); + shift(117); // 'distance' + lookahead1W(149); // S^WS | '(:' | 'at' | 'exactly' | 'from' + whitespace(); + parse_FTRange(); + whitespace(); + parse_FTUnit(); + eventHandler.endNonterminal("FTDistance", e0); + } + + function try_FTDistance() + { + shiftT(117); // 'distance' + lookahead1W(149); // S^WS | '(:' | 'at' | 'exactly' | 'from' + try_FTRange(); + try_FTUnit(); + } + + function parse_FTUnit() + { + eventHandler.startNonterminal("FTUnit", e0); + switch (l1) + { + case 273: // 'words' + shift(273); // 'words' + break; + case 232: // 'sentences' + shift(232); // 'sentences' + break; + default: + shift(205); // 'paragraphs' + } + eventHandler.endNonterminal("FTUnit", e0); + } + + function try_FTUnit() + { + switch (l1) + { + case 273: // 'words' + shiftT(273); // 'words' + break; + case 232: // 'sentences' + shiftT(232); // 'sentences' + break; + default: + shiftT(205); // 'paragraphs' + } + } + + function parse_FTScope() + { + eventHandler.startNonterminal("FTScope", e0); + switch (l1) + { + case 223: // 'same' + shift(223); // 'same' + break; + default: + shift(115); // 'different' + } + lookahead1W(132); // S^WS | '(:' | 'paragraph' | 'sentence' + whitespace(); + parse_FTBigUnit(); + eventHandler.endNonterminal("FTScope", e0); + } + + function try_FTScope() + { + switch (l1) + { + case 223: // 'same' + shiftT(223); // 'same' + break; + default: + shiftT(115); // 'different' + } + lookahead1W(132); // S^WS | '(:' | 'paragraph' | 'sentence' + try_FTBigUnit(); + } + + function parse_FTBigUnit() + { + eventHandler.startNonterminal("FTBigUnit", e0); + switch (l1) + { + case 231: // 'sentence' + shift(231); // 'sentence' + break; + default: + shift(204); // 'paragraph' + } + eventHandler.endNonterminal("FTBigUnit", e0); + } + + function try_FTBigUnit() + { + switch (l1) + { + case 231: // 'sentence' + shiftT(231); // 'sentence' + break; + default: + shiftT(204); // 'paragraph' + } + } + + function parse_FTContent() + { + eventHandler.startNonterminal("FTContent", e0); + switch (l1) + { + case 81: // 'at' + shift(81); // 'at' + lookahead1W(117); // S^WS | '(:' | 'end' | 'start' + switch (l1) + { + case 237: // 'start' + shift(237); // 'start' + break; + default: + shift(126); // 'end' + } + break; + default: + shift(127); // 'entire' + lookahead1W(42); // S^WS | '(:' | 'content' + shift(100); // 'content' + } + eventHandler.endNonterminal("FTContent", e0); + } + + function try_FTContent() + { + switch (l1) + { + case 81: // 'at' + shiftT(81); // 'at' + lookahead1W(117); // S^WS | '(:' | 'end' | 'start' + switch (l1) + { + case 237: // 'start' + shiftT(237); // 'start' + break; + default: + shiftT(126); // 'end' + } + break; + default: + shiftT(127); // 'entire' + lookahead1W(42); // S^WS | '(:' | 'content' + shiftT(100); // 'content' + } + } + + function parse_FTMatchOptions() + { + eventHandler.startNonterminal("FTMatchOptions", e0); + for (;;) + { + shift(259); // 'using' + lookahead1W(181); // S^WS | '(:' | 'case' | 'diacritics' | 'language' | 'lowercase' | 'no' | + // 'option' | 'stemming' | 'stop' | 'thesaurus' | 'uppercase' | 'wildcards' + whitespace(); + parse_FTMatchOption(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | 'where' | + // 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 259) // 'using' + { + break; + } + } + eventHandler.endNonterminal("FTMatchOptions", e0); + } + + function try_FTMatchOptions() + { + for (;;) + { + shiftT(259); // 'using' + lookahead1W(181); // S^WS | '(:' | 'case' | 'diacritics' | 'language' | 'lowercase' | 'no' | + // 'option' | 'stemming' | 'stop' | 'thesaurus' | 'uppercase' | 'wildcards' + try_FTMatchOption(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | 'for' | + // 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | 'ordered' | 'return' | + // 'same' | 'satisfies' | 'stable' | 'start' | 'using' | 'weight' | 'where' | + // 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 259) // 'using' + { + break; + } + } + } + + function parse_FTMatchOption() + { + eventHandler.startNonterminal("FTMatchOption", e0); + switch (l1) + { + case 188: // 'no' + lookahead2W(161); // S^WS | '(:' | 'stemming' | 'stop' | 'thesaurus' | 'wildcards' + break; + default: + lk = l1; + } + switch (lk) + { + case 169: // 'language' + parse_FTLanguageOption(); + break; + case 268: // 'wildcards' + case 137404: // 'no' 'wildcards' + parse_FTWildCardOption(); + break; + case 246: // 'thesaurus' + case 126140: // 'no' 'thesaurus' + parse_FTThesaurusOption(); + break; + case 238: // 'stemming' + case 122044: // 'no' 'stemming' + parse_FTStemOption(); + break; + case 114: // 'diacritics' + parse_FTDiacriticsOption(); + break; + case 239: // 'stop' + case 122556: // 'no' 'stop' + parse_FTStopWordOption(); + break; + case 199: // 'option' + parse_FTExtensionOption(); + break; + default: + parse_FTCaseOption(); + } + eventHandler.endNonterminal("FTMatchOption", e0); + } + + function try_FTMatchOption() + { + switch (l1) + { + case 188: // 'no' + lookahead2W(161); // S^WS | '(:' | 'stemming' | 'stop' | 'thesaurus' | 'wildcards' + break; + default: + lk = l1; + } + switch (lk) + { + case 169: // 'language' + try_FTLanguageOption(); + break; + case 268: // 'wildcards' + case 137404: // 'no' 'wildcards' + try_FTWildCardOption(); + break; + case 246: // 'thesaurus' + case 126140: // 'no' 'thesaurus' + try_FTThesaurusOption(); + break; + case 238: // 'stemming' + case 122044: // 'no' 'stemming' + try_FTStemOption(); + break; + case 114: // 'diacritics' + try_FTDiacriticsOption(); + break; + case 239: // 'stop' + case 122556: // 'no' 'stop' + try_FTStopWordOption(); + break; + case 199: // 'option' + try_FTExtensionOption(); + break; + default: + try_FTCaseOption(); + } + } + + function parse_FTCaseOption() + { + eventHandler.startNonterminal("FTCaseOption", e0); + switch (l1) + { + case 88: // 'case' + shift(88); // 'case' + lookahead1W(124); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 158: // 'insensitive' + shift(158); // 'insensitive' + break; + default: + shift(230); // 'sensitive' + } + break; + case 177: // 'lowercase' + shift(177); // 'lowercase' + break; + default: + shift(258); // 'uppercase' + } + eventHandler.endNonterminal("FTCaseOption", e0); + } + + function try_FTCaseOption() + { + switch (l1) + { + case 88: // 'case' + shiftT(88); // 'case' + lookahead1W(124); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 158: // 'insensitive' + shiftT(158); // 'insensitive' + break; + default: + shiftT(230); // 'sensitive' + } + break; + case 177: // 'lowercase' + shiftT(177); // 'lowercase' + break; + default: + shiftT(258); // 'uppercase' + } + } + + function parse_FTDiacriticsOption() + { + eventHandler.startNonterminal("FTDiacriticsOption", e0); + shift(114); // 'diacritics' + lookahead1W(124); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 158: // 'insensitive' + shift(158); // 'insensitive' + break; + default: + shift(230); // 'sensitive' + } + eventHandler.endNonterminal("FTDiacriticsOption", e0); + } + + function try_FTDiacriticsOption() + { + shiftT(114); // 'diacritics' + lookahead1W(124); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 158: // 'insensitive' + shiftT(158); // 'insensitive' + break; + default: + shiftT(230); // 'sensitive' + } + } + + function parse_FTStemOption() + { + eventHandler.startNonterminal("FTStemOption", e0); + switch (l1) + { + case 238: // 'stemming' + shift(238); // 'stemming' + break; + default: + shift(188); // 'no' + lookahead1W(74); // S^WS | '(:' | 'stemming' + shift(238); // 'stemming' + } + eventHandler.endNonterminal("FTStemOption", e0); + } + + function try_FTStemOption() + { + switch (l1) + { + case 238: // 'stemming' + shiftT(238); // 'stemming' + break; + default: + shiftT(188); // 'no' + lookahead1W(74); // S^WS | '(:' | 'stemming' + shiftT(238); // 'stemming' + } + } + + function parse_FTThesaurusOption() + { + eventHandler.startNonterminal("FTThesaurusOption", e0); + switch (l1) + { + case 246: // 'thesaurus' + shift(246); // 'thesaurus' + lookahead1W(142); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 81: // 'at' + whitespace(); + parse_FTThesaurusID(); + break; + case 109: // 'default' + shift(109); // 'default' + break; + default: + shift(34); // '(' + lookahead1W(112); // S^WS | '(:' | 'at' | 'default' + switch (l1) + { + case 81: // 'at' + whitespace(); + parse_FTThesaurusID(); + break; + default: + shift(109); // 'default' + } + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(31); // S^WS | '(:' | 'at' + whitespace(); + parse_FTThesaurusID(); + } + shift(37); // ')' + } + break; + default: + shift(188); // 'no' + lookahead1W(78); // S^WS | '(:' | 'thesaurus' + shift(246); // 'thesaurus' + } + eventHandler.endNonterminal("FTThesaurusOption", e0); + } + + function try_FTThesaurusOption() + { + switch (l1) + { + case 246: // 'thesaurus' + shiftT(246); // 'thesaurus' + lookahead1W(142); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 81: // 'at' + try_FTThesaurusID(); + break; + case 109: // 'default' + shiftT(109); // 'default' + break; + default: + shiftT(34); // '(' + lookahead1W(112); // S^WS | '(:' | 'at' | 'default' + switch (l1) + { + case 81: // 'at' + try_FTThesaurusID(); + break; + default: + shiftT(109); // 'default' + } + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(31); // S^WS | '(:' | 'at' + try_FTThesaurusID(); + } + shiftT(37); // ')' + } + break; + default: + shiftT(188); // 'no' + lookahead1W(78); // S^WS | '(:' | 'thesaurus' + shiftT(246); // 'thesaurus' + } + } + + function parse_FTThesaurusID() + { + eventHandler.startNonterminal("FTThesaurusID", e0); + shift(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(220); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'exactly' | 'for' | 'from' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'relationship' | 'return' | 'same' | 'satisfies' | 'stable' | + // 'start' | 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | + // '}' + if (l1 == 217) // 'relationship' + { + shift(217); // 'relationship' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'exactly' | 'for' | 'from' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | + // 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + switch (l1) + { + case 81: // 'at' + lookahead2W(165); // S^WS | '(:' | 'end' | 'least' | 'most' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk == 130 // 'exactly' + || lk == 140 // 'from' + || lk == 88657 // 'at' 'least' + || lk == 93777) // 'at' 'most' + { + whitespace(); + parse_FTLiteralRange(); + lookahead1W(58); // S^WS | '(:' | 'levels' + shift(175); // 'levels' + } + eventHandler.endNonterminal("FTThesaurusID", e0); + } + + function try_FTThesaurusID() + { + shiftT(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + lookahead1W(220); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'exactly' | 'for' | 'from' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'relationship' | 'return' | 'same' | 'satisfies' | 'stable' | + // 'start' | 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | + // '}' + if (l1 == 217) // 'relationship' + { + shiftT(217); // 'relationship' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'exactly' | 'for' | 'from' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | + // 'is' | 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'using' | + // 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + switch (l1) + { + case 81: // 'at' + lookahead2W(165); // S^WS | '(:' | 'end' | 'least' | 'most' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk == 130 // 'exactly' + || lk == 140 // 'from' + || lk == 88657 // 'at' 'least' + || lk == 93777) // 'at' 'most' + { + try_FTLiteralRange(); + lookahead1W(58); // S^WS | '(:' | 'levels' + shiftT(175); // 'levels' + } + } + + function parse_FTLiteralRange() + { + eventHandler.startNonterminal("FTLiteralRange", e0); + switch (l1) + { + case 130: // 'exactly' + shift(130); // 'exactly' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + break; + case 81: // 'at' + shift(81); // 'at' + lookahead1W(125); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 173: // 'least' + shift(173); // 'least' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + break; + default: + shift(183); // 'most' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + } + break; + default: + shift(140); // 'from' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + lookahead1W(79); // S^WS | '(:' | 'to' + shift(248); // 'to' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + } + eventHandler.endNonterminal("FTLiteralRange", e0); + } + + function try_FTLiteralRange() + { + switch (l1) + { + case 130: // 'exactly' + shiftT(130); // 'exactly' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + break; + case 81: // 'at' + shiftT(81); // 'at' + lookahead1W(125); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 173: // 'least' + shiftT(173); // 'least' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + break; + default: + shiftT(183); // 'most' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + break; + default: + shiftT(140); // 'from' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + lookahead1W(79); // S^WS | '(:' | 'to' + shiftT(248); // 'to' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + } + + function parse_FTStopWordOption() + { + eventHandler.startNonterminal("FTStopWordOption", e0); + switch (l1) + { + case 239: // 'stop' + shift(239); // 'stop' + lookahead1W(86); // S^WS | '(:' | 'words' + shift(273); // 'words' + lookahead1W(142); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 109: // 'default' + shift(109); // 'default' + for (;;) + { + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'except' | 'for' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'union' | + // 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 131 // 'except' + && l1 != 254) // 'union' + { + break; + } + whitespace(); + parse_FTStopWordsInclExcl(); + } + break; + default: + whitespace(); + parse_FTStopWords(); + for (;;) + { + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'except' | 'for' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'union' | + // 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 131 // 'except' + && l1 != 254) // 'union' + { + break; + } + whitespace(); + parse_FTStopWordsInclExcl(); + } + } + break; + default: + shift(188); // 'no' + lookahead1W(75); // S^WS | '(:' | 'stop' + shift(239); // 'stop' + lookahead1W(86); // S^WS | '(:' | 'words' + shift(273); // 'words' + } + eventHandler.endNonterminal("FTStopWordOption", e0); + } + + function try_FTStopWordOption() + { + switch (l1) + { + case 239: // 'stop' + shiftT(239); // 'stop' + lookahead1W(86); // S^WS | '(:' | 'words' + shiftT(273); // 'words' + lookahead1W(142); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 109: // 'default' + shiftT(109); // 'default' + for (;;) + { + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'except' | 'for' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'union' | + // 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 131 // 'except' + && l1 != 254) // 'union' + { + break; + } + try_FTStopWordsInclExcl(); + } + break; + default: + try_FTStopWords(); + for (;;) + { + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + // '>' | '>=' | '>>' | ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | + // 'before' | 'case' | 'collation' | 'count' | 'default' | 'descending' | + // 'different' | 'distance' | 'else' | 'empty' | 'end' | 'entire' | 'eq' | + // 'except' | 'for' | 'ftand' | 'ftor' | 'ge' | 'group' | 'gt' | 'into' | 'is' | + // 'le' | 'let' | 'lt' | 'modify' | 'ne' | 'not' | 'only' | 'or' | 'order' | + // 'ordered' | 'return' | 'same' | 'satisfies' | 'stable' | 'start' | 'union' | + // 'using' | 'weight' | 'where' | 'window' | 'with' | 'without' | '|}' | '}' + if (l1 != 131 // 'except' + && l1 != 254) // 'union' + { + break; + } + try_FTStopWordsInclExcl(); + } + } + break; + default: + shiftT(188); // 'no' + lookahead1W(75); // S^WS | '(:' | 'stop' + shiftT(239); // 'stop' + lookahead1W(86); // S^WS | '(:' | 'words' + shiftT(273); // 'words' + } + } + + function parse_FTStopWords() + { + eventHandler.startNonterminal("FTStopWords", e0); + switch (l1) + { + case 81: // 'at' + shift(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + break; + default: + shift(34); // '(' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + shift(37); // ')' + } + eventHandler.endNonterminal("FTStopWords", e0); + } + + function try_FTStopWords() + { + switch (l1) + { + case 81: // 'at' + shiftT(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + break; + default: + shiftT(34); // '(' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + shiftT(37); // ')' + } + } + + function parse_FTStopWordsInclExcl() + { + eventHandler.startNonterminal("FTStopWordsInclExcl", e0); + switch (l1) + { + case 254: // 'union' + shift(254); // 'union' + break; + default: + shift(131); // 'except' + } + lookahead1W(99); // S^WS | '(' | '(:' | 'at' + whitespace(); + parse_FTStopWords(); + eventHandler.endNonterminal("FTStopWordsInclExcl", e0); + } + + function try_FTStopWordsInclExcl() + { + switch (l1) + { + case 254: // 'union' + shiftT(254); // 'union' + break; + default: + shiftT(131); // 'except' + } + lookahead1W(99); // S^WS | '(' | '(:' | 'at' + try_FTStopWords(); + } + + function parse_FTLanguageOption() + { + eventHandler.startNonterminal("FTLanguageOption", e0); + shift(169); // 'language' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("FTLanguageOption", e0); + } + + function try_FTLanguageOption() + { + shiftT(169); // 'language' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + + function parse_FTWildCardOption() + { + eventHandler.startNonterminal("FTWildCardOption", e0); + switch (l1) + { + case 268: // 'wildcards' + shift(268); // 'wildcards' + break; + default: + shift(188); // 'no' + lookahead1W(84); // S^WS | '(:' | 'wildcards' + shift(268); // 'wildcards' + } + eventHandler.endNonterminal("FTWildCardOption", e0); + } + + function try_FTWildCardOption() + { + switch (l1) + { + case 268: // 'wildcards' + shiftT(268); // 'wildcards' + break; + default: + shiftT(188); // 'no' + lookahead1W(84); // S^WS | '(:' | 'wildcards' + shiftT(268); // 'wildcards' + } + } + + function parse_FTExtensionOption() + { + eventHandler.startNonterminal("FTExtensionOption", e0); + shift(199); // 'option' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("FTExtensionOption", e0); + } + + function try_FTExtensionOption() + { + shiftT(199); // 'option' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + + function parse_FTIgnoreOption() + { + eventHandler.startNonterminal("FTIgnoreOption", e0); + shift(271); // 'without' + lookahead1W(42); // S^WS | '(:' | 'content' + shift(100); // 'content' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_UnionExpr(); + eventHandler.endNonterminal("FTIgnoreOption", e0); + } + + function try_FTIgnoreOption() + { + shiftT(271); // 'without' + lookahead1W(42); // S^WS | '(:' | 'content' + shiftT(100); // 'content' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_UnionExpr(); + } + + function parse_CollectionDecl() + { + eventHandler.startNonterminal("CollectionDecl", e0); + shift(95); // 'collection' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(107); // S^WS | '(:' | ';' | 'as' + if (l1 == 79) // 'as' + { + whitespace(); + parse_CollectionTypeDecl(); + } + eventHandler.endNonterminal("CollectionDecl", e0); + } + + function parse_CollectionTypeDecl() + { + eventHandler.startNonterminal("CollectionTypeDecl", e0); + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_ItemType(); + lookahead1W(156); // S^WS | '(:' | '*' | '+' | ';' | '?' + if (l1 != 53) // ';' + { + whitespace(); + parse_OccurrenceIndicator(); + } + eventHandler.endNonterminal("CollectionTypeDecl", e0); + } + + function parse_IndexName() + { + eventHandler.startNonterminal("IndexName", e0); + parse_EQName(); + eventHandler.endNonterminal("IndexName", e0); + } + + function parse_IndexDomainExpr() + { + eventHandler.startNonterminal("IndexDomainExpr", e0); + parse_PathExpr(); + eventHandler.endNonterminal("IndexDomainExpr", e0); + } + + function parse_IndexKeySpec() + { + eventHandler.startNonterminal("IndexKeySpec", e0); + parse_IndexKeyExpr(); + if (l1 == 79) // 'as' + { + whitespace(); + parse_IndexKeyTypeDecl(); + } + lookahead1W(146); // S^WS | '(:' | ',' | ';' | 'collation' + if (l1 == 94) // 'collation' + { + whitespace(); + parse_IndexKeyCollation(); + } + eventHandler.endNonterminal("IndexKeySpec", e0); + } + + function parse_IndexKeyExpr() + { + eventHandler.startNonterminal("IndexKeyExpr", e0); + parse_PathExpr(); + eventHandler.endNonterminal("IndexKeyExpr", e0); + } + + function parse_IndexKeyTypeDecl() + { + eventHandler.startNonterminal("IndexKeyTypeDecl", e0); + shift(79); // 'as' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_AtomicType(); + lookahead1W(169); // S^WS | '(:' | '*' | '+' | ',' | ';' | '?' | 'collation' + if (l1 == 39 // '*' + || l1 == 40 // '+' + || l1 == 64) // '?' + { + whitespace(); + parse_OccurrenceIndicator(); + } + eventHandler.endNonterminal("IndexKeyTypeDecl", e0); + } + + function parse_AtomicType() + { + eventHandler.startNonterminal("AtomicType", e0); + parse_EQName(); + eventHandler.endNonterminal("AtomicType", e0); + } + + function parse_IndexKeyCollation() + { + eventHandler.startNonterminal("IndexKeyCollation", e0); + shift(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("IndexKeyCollation", e0); + } + + function parse_IndexDecl() + { + eventHandler.startNonterminal("IndexDecl", e0); + shift(155); // 'index' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_IndexName(); + lookahead1W(65); // S^WS | '(:' | 'on' + shift(197); // 'on' + lookahead1W(63); // S^WS | '(:' | 'nodes' + shift(192); // 'nodes' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_IndexDomainExpr(); + shift(87); // 'by' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_IndexKeySpec(); + for (;;) + { + lookahead1W(103); // S^WS | '(:' | ',' | ';' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_IndexKeySpec(); + } + eventHandler.endNonterminal("IndexDecl", e0); + } + + function parse_ICDecl() + { + eventHandler.startNonterminal("ICDecl", e0); + shift(161); // 'integrity' + lookahead1W(40); // S^WS | '(:' | 'constraint' + shift(97); // 'constraint' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(120); // S^WS | '(:' | 'foreign' | 'on' + switch (l1) + { + case 197: // 'on' + whitespace(); + parse_ICCollection(); + break; + default: + whitespace(); + parse_ICForeignKey(); + } + eventHandler.endNonterminal("ICDecl", e0); + } + + function parse_ICCollection() + { + eventHandler.startNonterminal("ICCollection", e0); + shift(197); // 'on' + lookahead1W(39); // S^WS | '(:' | 'collection' + shift(95); // 'collection' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(140); // S^WS | '$' | '(:' | 'foreach' | 'node' + switch (l1) + { + case 31: // '$' + whitespace(); + parse_ICCollSequence(); + break; + case 191: // 'node' + whitespace(); + parse_ICCollSequenceUnique(); + break; + default: + whitespace(); + parse_ICCollNode(); + } + eventHandler.endNonterminal("ICCollection", e0); + } + + function parse_ICCollSequence() + { + eventHandler.startNonterminal("ICCollSequence", e0); + parse_VarRef(); + lookahead1W(37); // S^WS | '(:' | 'check' + shift(92); // 'check' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ICCollSequence", e0); + } + + function parse_ICCollSequenceUnique() + { + eventHandler.startNonterminal("ICCollSequenceUnique", e0); + shift(191); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(37); // S^WS | '(:' | 'check' + shift(92); // 'check' + lookahead1W(80); // S^WS | '(:' | 'unique' + shift(255); // 'unique' + lookahead1W(57); // S^WS | '(:' | 'key' + shift(168); // 'key' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_PathExpr(); + eventHandler.endNonterminal("ICCollSequenceUnique", e0); + } + + function parse_ICCollNode() + { + eventHandler.startNonterminal("ICCollNode", e0); + shift(138); // 'foreach' + lookahead1W(62); // S^WS | '(:' | 'node' + shift(191); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(37); // S^WS | '(:' | 'check' + shift(92); // 'check' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ICCollNode", e0); + } + + function parse_ICForeignKey() + { + eventHandler.startNonterminal("ICForeignKey", e0); + shift(139); // 'foreign' + lookahead1W(57); // S^WS | '(:' | 'key' + shift(168); // 'key' + lookahead1W(51); // S^WS | '(:' | 'from' + whitespace(); + parse_ICForeignKeySource(); + whitespace(); + parse_ICForeignKeyTarget(); + eventHandler.endNonterminal("ICForeignKey", e0); + } + + function parse_ICForeignKeySource() + { + eventHandler.startNonterminal("ICForeignKeySource", e0); + shift(140); // 'from' + lookahead1W(39); // S^WS | '(:' | 'collection' + whitespace(); + parse_ICForeignKeyValues(); + eventHandler.endNonterminal("ICForeignKeySource", e0); + } + + function parse_ICForeignKeyTarget() + { + eventHandler.startNonterminal("ICForeignKeyTarget", e0); + shift(248); // 'to' + lookahead1W(39); // S^WS | '(:' | 'collection' + whitespace(); + parse_ICForeignKeyValues(); + eventHandler.endNonterminal("ICForeignKeyTarget", e0); + } + + function parse_ICForeignKeyValues() + { + eventHandler.startNonterminal("ICForeignKeyValues", e0); + shift(95); // 'collection' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(62); // S^WS | '(:' | 'node' + shift(191); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(57); // S^WS | '(:' | 'key' + shift(168); // 'key' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '/' | '//' | '<' | + // '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_PathExpr(); + eventHandler.endNonterminal("ICForeignKeyValues", e0); + } + + function try_Comment() + { + shiftT(36); // '(:' + for (;;) + { + lookahead1(89); // CommentContents | '(:' | ':)' + if (l1 == 50) // ':)' + { + break; + } + switch (l1) + { + case 24: // CommentContents + shiftT(24); // CommentContents + break; + default: + try_Comment(); + } + } + shiftT(50); // ':)' + } + + function try_Whitespace() + { + switch (l1) + { + case 22: // S^WS + shiftT(22); // S^WS + break; + default: + try_Comment(); + } + } + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + lookahead1(249); // EQName^Token | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + // 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | + // 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' + switch (l1) + { + case 82: // 'attribute' + shift(82); // 'attribute' + break; + case 96: // 'comment' + shift(96); // 'comment' + break; + case 120: // 'document-node' + shift(120); // 'document-node' + break; + case 121: // 'element' + shift(121); // 'element' + break; + case 124: // 'empty-sequence' + shift(124); // 'empty-sequence' + break; + case 145: // 'function' + shift(145); // 'function' + break; + case 152: // 'if' + shift(152); // 'if' + break; + case 165: // 'item' + shift(165); // 'item' + break; + case 185: // 'namespace-node' + shift(185); // 'namespace-node' + break; + case 191: // 'node' + shift(191); // 'node' + break; + case 216: // 'processing-instruction' + shift(216); // 'processing-instruction' + break; + case 226: // 'schema-attribute' + shift(226); // 'schema-attribute' + break; + case 227: // 'schema-element' + shift(227); // 'schema-element' + break; + case 243: // 'switch' + shift(243); // 'switch' + break; + case 244: // 'text' + shift(244); // 'text' + break; + case 253: // 'typeswitch' + shift(253); // 'typeswitch' + break; + case 78: // 'array' + shift(78); // 'array' + break; + case 167: // 'json-item' + shift(167); // 'json-item' + break; + case 242: // 'structured-item' + shift(242); // 'structured-item' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function try_EQName() + { + lookahead1(249); // EQName^Token | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + // 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | + // 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' + switch (l1) + { + case 82: // 'attribute' + shiftT(82); // 'attribute' + break; + case 96: // 'comment' + shiftT(96); // 'comment' + break; + case 120: // 'document-node' + shiftT(120); // 'document-node' + break; + case 121: // 'element' + shiftT(121); // 'element' + break; + case 124: // 'empty-sequence' + shiftT(124); // 'empty-sequence' + break; + case 145: // 'function' + shiftT(145); // 'function' + break; + case 152: // 'if' + shiftT(152); // 'if' + break; + case 165: // 'item' + shiftT(165); // 'item' + break; + case 185: // 'namespace-node' + shiftT(185); // 'namespace-node' + break; + case 191: // 'node' + shiftT(191); // 'node' + break; + case 216: // 'processing-instruction' + shiftT(216); // 'processing-instruction' + break; + case 226: // 'schema-attribute' + shiftT(226); // 'schema-attribute' + break; + case 227: // 'schema-element' + shiftT(227); // 'schema-element' + break; + case 243: // 'switch' + shiftT(243); // 'switch' + break; + case 244: // 'text' + shiftT(244); // 'text' + break; + case 253: // 'typeswitch' + shiftT(253); // 'typeswitch' + break; + case 78: // 'array' + shiftT(78); // 'array' + break; + case 167: // 'json-item' + shiftT(167); // 'json-item' + break; + case 242: // 'structured-item' + shiftT(242); // 'structured-item' + break; + default: + try_FunctionName(); + } + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 6: // EQName^Token + shift(6); // EQName^Token + break; + case 70: // 'after' + shift(70); // 'after' + break; + case 73: // 'ancestor' + shift(73); // 'ancestor' + break; + case 74: // 'ancestor-or-self' + shift(74); // 'ancestor-or-self' + break; + case 75: // 'and' + shift(75); // 'and' + break; + case 79: // 'as' + shift(79); // 'as' + break; + case 80: // 'ascending' + shift(80); // 'ascending' + break; + case 84: // 'before' + shift(84); // 'before' + break; + case 88: // 'case' + shift(88); // 'case' + break; + case 89: // 'cast' + shift(89); // 'cast' + break; + case 90: // 'castable' + shift(90); // 'castable' + break; + case 93: // 'child' + shift(93); // 'child' + break; + case 94: // 'collation' + shift(94); // 'collation' + break; + case 103: // 'copy' + shift(103); // 'copy' + break; + case 105: // 'count' + shift(105); // 'count' + break; + case 108: // 'declare' + shift(108); // 'declare' + break; + case 109: // 'default' + shift(109); // 'default' + break; + case 110: // 'delete' + shift(110); // 'delete' + break; + case 111: // 'descendant' + shift(111); // 'descendant' + break; + case 112: // 'descendant-or-self' + shift(112); // 'descendant-or-self' + break; + case 113: // 'descending' + shift(113); // 'descending' + break; + case 118: // 'div' + shift(118); // 'div' + break; + case 119: // 'document' + shift(119); // 'document' + break; + case 122: // 'else' + shift(122); // 'else' + break; + case 123: // 'empty' + shift(123); // 'empty' + break; + case 126: // 'end' + shift(126); // 'end' + break; + case 128: // 'eq' + shift(128); // 'eq' + break; + case 129: // 'every' + shift(129); // 'every' + break; + case 131: // 'except' + shift(131); // 'except' + break; + case 134: // 'first' + shift(134); // 'first' + break; + case 135: // 'following' + shift(135); // 'following' + break; + case 136: // 'following-sibling' + shift(136); // 'following-sibling' + break; + case 137: // 'for' + shift(137); // 'for' + break; + case 146: // 'ge' + shift(146); // 'ge' + break; + case 148: // 'group' + shift(148); // 'group' + break; + case 150: // 'gt' + shift(150); // 'gt' + break; + case 151: // 'idiv' + shift(151); // 'idiv' + break; + case 153: // 'import' + shift(153); // 'import' + break; + case 159: // 'insert' + shift(159); // 'insert' + break; + case 160: // 'instance' + shift(160); // 'instance' + break; + case 162: // 'intersect' + shift(162); // 'intersect' + break; + case 163: // 'into' + shift(163); // 'into' + break; + case 164: // 'is' + shift(164); // 'is' + break; + case 170: // 'last' + shift(170); // 'last' + break; + case 172: // 'le' + shift(172); // 'le' + break; + case 174: // 'let' + shift(174); // 'let' + break; + case 178: // 'lt' + shift(178); // 'lt' + break; + case 180: // 'mod' + shift(180); // 'mod' + break; + case 181: // 'modify' + shift(181); // 'modify' + break; + case 182: // 'module' + shift(182); // 'module' + break; + case 184: // 'namespace' + shift(184); // 'namespace' + break; + case 186: // 'ne' + shift(186); // 'ne' + break; + case 198: // 'only' + shift(198); // 'only' + break; + case 200: // 'or' + shift(200); // 'or' + break; + case 201: // 'order' + shift(201); // 'order' + break; + case 202: // 'ordered' + shift(202); // 'ordered' + break; + case 206: // 'parent' + shift(206); // 'parent' + break; + case 212: // 'preceding' + shift(212); // 'preceding' + break; + case 213: // 'preceding-sibling' + shift(213); // 'preceding-sibling' + break; + case 218: // 'rename' + shift(218); // 'rename' + break; + case 219: // 'replace' + shift(219); // 'replace' + break; + case 220: // 'return' + shift(220); // 'return' + break; + case 224: // 'satisfies' + shift(224); // 'satisfies' + break; + case 229: // 'self' + shift(229); // 'self' + break; + case 235: // 'some' + shift(235); // 'some' + break; + case 236: // 'stable' + shift(236); // 'stable' + break; + case 237: // 'start' + shift(237); // 'start' + break; + case 248: // 'to' + shift(248); // 'to' + break; + case 249: // 'treat' + shift(249); // 'treat' + break; + case 250: // 'try' + shift(250); // 'try' + break; + case 254: // 'union' + shift(254); // 'union' + break; + case 256: // 'unordered' + shift(256); // 'unordered' + break; + case 260: // 'validate' + shift(260); // 'validate' + break; + case 266: // 'where' + shift(266); // 'where' + break; + case 270: // 'with' + shift(270); // 'with' + break; + case 274: // 'xquery' + shift(274); // 'xquery' + break; + case 72: // 'allowing' + shift(72); // 'allowing' + break; + case 81: // 'at' + shift(81); // 'at' + break; + case 83: // 'base-uri' + shift(83); // 'base-uri' + break; + case 85: // 'boundary-space' + shift(85); // 'boundary-space' + break; + case 86: // 'break' + shift(86); // 'break' + break; + case 91: // 'catch' + shift(91); // 'catch' + break; + case 98: // 'construction' + shift(98); // 'construction' + break; + case 101: // 'context' + shift(101); // 'context' + break; + case 102: // 'continue' + shift(102); // 'continue' + break; + case 104: // 'copy-namespaces' + shift(104); // 'copy-namespaces' + break; + case 106: // 'decimal-format' + shift(106); // 'decimal-format' + break; + case 125: // 'encoding' + shift(125); // 'encoding' + break; + case 132: // 'exit' + shift(132); // 'exit' + break; + case 133: // 'external' + shift(133); // 'external' + break; + case 141: // 'ft-option' + shift(141); // 'ft-option' + break; + case 154: // 'in' + shift(154); // 'in' + break; + case 155: // 'index' + shift(155); // 'index' + break; + case 161: // 'integrity' + shift(161); // 'integrity' + break; + case 171: // 'lax' + shift(171); // 'lax' + break; + case 192: // 'nodes' + shift(192); // 'nodes' + break; + case 199: // 'option' + shift(199); // 'option' + break; + case 203: // 'ordering' + shift(203); // 'ordering' + break; + case 222: // 'revalidation' + shift(222); // 'revalidation' + break; + case 225: // 'schema' + shift(225); // 'schema' + break; + case 228: // 'score' + shift(228); // 'score' + break; + case 234: // 'sliding' + shift(234); // 'sliding' + break; + case 240: // 'strict' + shift(240); // 'strict' + break; + case 251: // 'tumbling' + shift(251); // 'tumbling' + break; + case 252: // 'type' + shift(252); // 'type' + break; + case 257: // 'updating' + shift(257); // 'updating' + break; + case 261: // 'value' + shift(261); // 'value' + break; + case 262: // 'variable' + shift(262); // 'variable' + break; + case 263: // 'version' + shift(263); // 'version' + break; + case 267: // 'while' + shift(267); // 'while' + break; + case 97: // 'constraint' + shift(97); // 'constraint' + break; + case 176: // 'loop' + shift(176); // 'loop' + break; + case 221: // 'returning' + shift(221); // 'returning' + break; + case 77: // 'append' + shift(77); // 'append' + break; + case 166: // 'json' + shift(166); // 'json' + break; + default: + shift(194); // 'object' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function try_FunctionName() + { + switch (l1) + { + case 6: // EQName^Token + shiftT(6); // EQName^Token + break; + case 70: // 'after' + shiftT(70); // 'after' + break; + case 73: // 'ancestor' + shiftT(73); // 'ancestor' + break; + case 74: // 'ancestor-or-self' + shiftT(74); // 'ancestor-or-self' + break; + case 75: // 'and' + shiftT(75); // 'and' + break; + case 79: // 'as' + shiftT(79); // 'as' + break; + case 80: // 'ascending' + shiftT(80); // 'ascending' + break; + case 84: // 'before' + shiftT(84); // 'before' + break; + case 88: // 'case' + shiftT(88); // 'case' + break; + case 89: // 'cast' + shiftT(89); // 'cast' + break; + case 90: // 'castable' + shiftT(90); // 'castable' + break; + case 93: // 'child' + shiftT(93); // 'child' + break; + case 94: // 'collation' + shiftT(94); // 'collation' + break; + case 103: // 'copy' + shiftT(103); // 'copy' + break; + case 105: // 'count' + shiftT(105); // 'count' + break; + case 108: // 'declare' + shiftT(108); // 'declare' + break; + case 109: // 'default' + shiftT(109); // 'default' + break; + case 110: // 'delete' + shiftT(110); // 'delete' + break; + case 111: // 'descendant' + shiftT(111); // 'descendant' + break; + case 112: // 'descendant-or-self' + shiftT(112); // 'descendant-or-self' + break; + case 113: // 'descending' + shiftT(113); // 'descending' + break; + case 118: // 'div' + shiftT(118); // 'div' + break; + case 119: // 'document' + shiftT(119); // 'document' + break; + case 122: // 'else' + shiftT(122); // 'else' + break; + case 123: // 'empty' + shiftT(123); // 'empty' + break; + case 126: // 'end' + shiftT(126); // 'end' + break; + case 128: // 'eq' + shiftT(128); // 'eq' + break; + case 129: // 'every' + shiftT(129); // 'every' + break; + case 131: // 'except' + shiftT(131); // 'except' + break; + case 134: // 'first' + shiftT(134); // 'first' + break; + case 135: // 'following' + shiftT(135); // 'following' + break; + case 136: // 'following-sibling' + shiftT(136); // 'following-sibling' + break; + case 137: // 'for' + shiftT(137); // 'for' + break; + case 146: // 'ge' + shiftT(146); // 'ge' + break; + case 148: // 'group' + shiftT(148); // 'group' + break; + case 150: // 'gt' + shiftT(150); // 'gt' + break; + case 151: // 'idiv' + shiftT(151); // 'idiv' + break; + case 153: // 'import' + shiftT(153); // 'import' + break; + case 159: // 'insert' + shiftT(159); // 'insert' + break; + case 160: // 'instance' + shiftT(160); // 'instance' + break; + case 162: // 'intersect' + shiftT(162); // 'intersect' + break; + case 163: // 'into' + shiftT(163); // 'into' + break; + case 164: // 'is' + shiftT(164); // 'is' + break; + case 170: // 'last' + shiftT(170); // 'last' + break; + case 172: // 'le' + shiftT(172); // 'le' + break; + case 174: // 'let' + shiftT(174); // 'let' + break; + case 178: // 'lt' + shiftT(178); // 'lt' + break; + case 180: // 'mod' + shiftT(180); // 'mod' + break; + case 181: // 'modify' + shiftT(181); // 'modify' + break; + case 182: // 'module' + shiftT(182); // 'module' + break; + case 184: // 'namespace' + shiftT(184); // 'namespace' + break; + case 186: // 'ne' + shiftT(186); // 'ne' + break; + case 198: // 'only' + shiftT(198); // 'only' + break; + case 200: // 'or' + shiftT(200); // 'or' + break; + case 201: // 'order' + shiftT(201); // 'order' + break; + case 202: // 'ordered' + shiftT(202); // 'ordered' + break; + case 206: // 'parent' + shiftT(206); // 'parent' + break; + case 212: // 'preceding' + shiftT(212); // 'preceding' + break; + case 213: // 'preceding-sibling' + shiftT(213); // 'preceding-sibling' + break; + case 218: // 'rename' + shiftT(218); // 'rename' + break; + case 219: // 'replace' + shiftT(219); // 'replace' + break; + case 220: // 'return' + shiftT(220); // 'return' + break; + case 224: // 'satisfies' + shiftT(224); // 'satisfies' + break; + case 229: // 'self' + shiftT(229); // 'self' + break; + case 235: // 'some' + shiftT(235); // 'some' + break; + case 236: // 'stable' + shiftT(236); // 'stable' + break; + case 237: // 'start' + shiftT(237); // 'start' + break; + case 248: // 'to' + shiftT(248); // 'to' + break; + case 249: // 'treat' + shiftT(249); // 'treat' + break; + case 250: // 'try' + shiftT(250); // 'try' + break; + case 254: // 'union' + shiftT(254); // 'union' + break; + case 256: // 'unordered' + shiftT(256); // 'unordered' + break; + case 260: // 'validate' + shiftT(260); // 'validate' + break; + case 266: // 'where' + shiftT(266); // 'where' + break; + case 270: // 'with' + shiftT(270); // 'with' + break; + case 274: // 'xquery' + shiftT(274); // 'xquery' + break; + case 72: // 'allowing' + shiftT(72); // 'allowing' + break; + case 81: // 'at' + shiftT(81); // 'at' + break; + case 83: // 'base-uri' + shiftT(83); // 'base-uri' + break; + case 85: // 'boundary-space' + shiftT(85); // 'boundary-space' + break; + case 86: // 'break' + shiftT(86); // 'break' + break; + case 91: // 'catch' + shiftT(91); // 'catch' + break; + case 98: // 'construction' + shiftT(98); // 'construction' + break; + case 101: // 'context' + shiftT(101); // 'context' + break; + case 102: // 'continue' + shiftT(102); // 'continue' + break; + case 104: // 'copy-namespaces' + shiftT(104); // 'copy-namespaces' + break; + case 106: // 'decimal-format' + shiftT(106); // 'decimal-format' + break; + case 125: // 'encoding' + shiftT(125); // 'encoding' + break; + case 132: // 'exit' + shiftT(132); // 'exit' + break; + case 133: // 'external' + shiftT(133); // 'external' + break; + case 141: // 'ft-option' + shiftT(141); // 'ft-option' + break; + case 154: // 'in' + shiftT(154); // 'in' + break; + case 155: // 'index' + shiftT(155); // 'index' + break; + case 161: // 'integrity' + shiftT(161); // 'integrity' + break; + case 171: // 'lax' + shiftT(171); // 'lax' + break; + case 192: // 'nodes' + shiftT(192); // 'nodes' + break; + case 199: // 'option' + shiftT(199); // 'option' + break; + case 203: // 'ordering' + shiftT(203); // 'ordering' + break; + case 222: // 'revalidation' + shiftT(222); // 'revalidation' + break; + case 225: // 'schema' + shiftT(225); // 'schema' + break; + case 228: // 'score' + shiftT(228); // 'score' + break; + case 234: // 'sliding' + shiftT(234); // 'sliding' + break; + case 240: // 'strict' + shiftT(240); // 'strict' + break; + case 251: // 'tumbling' + shiftT(251); // 'tumbling' + break; + case 252: // 'type' + shiftT(252); // 'type' + break; + case 257: // 'updating' + shiftT(257); // 'updating' + break; + case 261: // 'value' + shiftT(261); // 'value' + break; + case 262: // 'variable' + shiftT(262); // 'variable' + break; + case 263: // 'version' + shiftT(263); // 'version' + break; + case 267: // 'while' + shiftT(267); // 'while' + break; + case 97: // 'constraint' + shiftT(97); // 'constraint' + break; + case 176: // 'loop' + shiftT(176); // 'loop' + break; + case 221: // 'returning' + shiftT(221); // 'returning' + break; + case 77: // 'append' + shiftT(77); // 'append' + break; + case 166: // 'json' + shiftT(166); // 'json' + break; + default: + shiftT(194); // 'object' + } + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 19: // NCName^Token + shift(19); // NCName^Token + break; + case 70: // 'after' + shift(70); // 'after' + break; + case 75: // 'and' + shift(75); // 'and' + break; + case 79: // 'as' + shift(79); // 'as' + break; + case 80: // 'ascending' + shift(80); // 'ascending' + break; + case 84: // 'before' + shift(84); // 'before' + break; + case 88: // 'case' + shift(88); // 'case' + break; + case 89: // 'cast' + shift(89); // 'cast' + break; + case 90: // 'castable' + shift(90); // 'castable' + break; + case 94: // 'collation' + shift(94); // 'collation' + break; + case 105: // 'count' + shift(105); // 'count' + break; + case 109: // 'default' + shift(109); // 'default' + break; + case 113: // 'descending' + shift(113); // 'descending' + break; + case 118: // 'div' + shift(118); // 'div' + break; + case 122: // 'else' + shift(122); // 'else' + break; + case 123: // 'empty' + shift(123); // 'empty' + break; + case 126: // 'end' + shift(126); // 'end' + break; + case 128: // 'eq' + shift(128); // 'eq' + break; + case 131: // 'except' + shift(131); // 'except' + break; + case 137: // 'for' + shift(137); // 'for' + break; + case 146: // 'ge' + shift(146); // 'ge' + break; + case 148: // 'group' + shift(148); // 'group' + break; + case 150: // 'gt' + shift(150); // 'gt' + break; + case 151: // 'idiv' + shift(151); // 'idiv' + break; + case 160: // 'instance' + shift(160); // 'instance' + break; + case 162: // 'intersect' + shift(162); // 'intersect' + break; + case 163: // 'into' + shift(163); // 'into' + break; + case 164: // 'is' + shift(164); // 'is' + break; + case 172: // 'le' + shift(172); // 'le' + break; + case 174: // 'let' + shift(174); // 'let' + break; + case 178: // 'lt' + shift(178); // 'lt' + break; + case 180: // 'mod' + shift(180); // 'mod' + break; + case 181: // 'modify' + shift(181); // 'modify' + break; + case 186: // 'ne' + shift(186); // 'ne' + break; + case 198: // 'only' + shift(198); // 'only' + break; + case 200: // 'or' + shift(200); // 'or' + break; + case 201: // 'order' + shift(201); // 'order' + break; + case 220: // 'return' + shift(220); // 'return' + break; + case 224: // 'satisfies' + shift(224); // 'satisfies' + break; + case 236: // 'stable' + shift(236); // 'stable' + break; + case 237: // 'start' + shift(237); // 'start' + break; + case 248: // 'to' + shift(248); // 'to' + break; + case 249: // 'treat' + shift(249); // 'treat' + break; + case 254: // 'union' + shift(254); // 'union' + break; + case 266: // 'where' + shift(266); // 'where' + break; + case 270: // 'with' + shift(270); // 'with' + break; + case 73: // 'ancestor' + shift(73); // 'ancestor' + break; + case 74: // 'ancestor-or-self' + shift(74); // 'ancestor-or-self' + break; + case 82: // 'attribute' + shift(82); // 'attribute' + break; + case 93: // 'child' + shift(93); // 'child' + break; + case 96: // 'comment' + shift(96); // 'comment' + break; + case 103: // 'copy' + shift(103); // 'copy' + break; + case 108: // 'declare' + shift(108); // 'declare' + break; + case 110: // 'delete' + shift(110); // 'delete' + break; + case 111: // 'descendant' + shift(111); // 'descendant' + break; + case 112: // 'descendant-or-self' + shift(112); // 'descendant-or-self' + break; + case 119: // 'document' + shift(119); // 'document' + break; + case 120: // 'document-node' + shift(120); // 'document-node' + break; + case 121: // 'element' + shift(121); // 'element' + break; + case 124: // 'empty-sequence' + shift(124); // 'empty-sequence' + break; + case 129: // 'every' + shift(129); // 'every' + break; + case 134: // 'first' + shift(134); // 'first' + break; + case 135: // 'following' + shift(135); // 'following' + break; + case 136: // 'following-sibling' + shift(136); // 'following-sibling' + break; + case 145: // 'function' + shift(145); // 'function' + break; + case 152: // 'if' + shift(152); // 'if' + break; + case 153: // 'import' + shift(153); // 'import' + break; + case 159: // 'insert' + shift(159); // 'insert' + break; + case 165: // 'item' + shift(165); // 'item' + break; + case 170: // 'last' + shift(170); // 'last' + break; + case 182: // 'module' + shift(182); // 'module' + break; + case 184: // 'namespace' + shift(184); // 'namespace' + break; + case 185: // 'namespace-node' + shift(185); // 'namespace-node' + break; + case 191: // 'node' + shift(191); // 'node' + break; + case 202: // 'ordered' + shift(202); // 'ordered' + break; + case 206: // 'parent' + shift(206); // 'parent' + break; + case 212: // 'preceding' + shift(212); // 'preceding' + break; + case 213: // 'preceding-sibling' + shift(213); // 'preceding-sibling' + break; + case 216: // 'processing-instruction' + shift(216); // 'processing-instruction' + break; + case 218: // 'rename' + shift(218); // 'rename' + break; + case 219: // 'replace' + shift(219); // 'replace' + break; + case 226: // 'schema-attribute' + shift(226); // 'schema-attribute' + break; + case 227: // 'schema-element' + shift(227); // 'schema-element' + break; + case 229: // 'self' + shift(229); // 'self' + break; + case 235: // 'some' + shift(235); // 'some' + break; + case 243: // 'switch' + shift(243); // 'switch' + break; + case 244: // 'text' + shift(244); // 'text' + break; + case 250: // 'try' + shift(250); // 'try' + break; + case 253: // 'typeswitch' + shift(253); // 'typeswitch' + break; + case 256: // 'unordered' + shift(256); // 'unordered' + break; + case 260: // 'validate' + shift(260); // 'validate' + break; + case 262: // 'variable' + shift(262); // 'variable' + break; + case 274: // 'xquery' + shift(274); // 'xquery' + break; + case 72: // 'allowing' + shift(72); // 'allowing' + break; + case 81: // 'at' + shift(81); // 'at' + break; + case 83: // 'base-uri' + shift(83); // 'base-uri' + break; + case 85: // 'boundary-space' + shift(85); // 'boundary-space' + break; + case 86: // 'break' + shift(86); // 'break' + break; + case 91: // 'catch' + shift(91); // 'catch' + break; + case 98: // 'construction' + shift(98); // 'construction' + break; + case 101: // 'context' + shift(101); // 'context' + break; + case 102: // 'continue' + shift(102); // 'continue' + break; + case 104: // 'copy-namespaces' + shift(104); // 'copy-namespaces' + break; + case 106: // 'decimal-format' + shift(106); // 'decimal-format' + break; + case 125: // 'encoding' + shift(125); // 'encoding' + break; + case 132: // 'exit' + shift(132); // 'exit' + break; + case 133: // 'external' + shift(133); // 'external' + break; + case 141: // 'ft-option' + shift(141); // 'ft-option' + break; + case 154: // 'in' + shift(154); // 'in' + break; + case 155: // 'index' + shift(155); // 'index' + break; + case 161: // 'integrity' + shift(161); // 'integrity' + break; + case 171: // 'lax' + shift(171); // 'lax' + break; + case 192: // 'nodes' + shift(192); // 'nodes' + break; + case 199: // 'option' + shift(199); // 'option' + break; + case 203: // 'ordering' + shift(203); // 'ordering' + break; + case 222: // 'revalidation' + shift(222); // 'revalidation' + break; + case 225: // 'schema' + shift(225); // 'schema' + break; + case 228: // 'score' + shift(228); // 'score' + break; + case 234: // 'sliding' + shift(234); // 'sliding' + break; + case 240: // 'strict' + shift(240); // 'strict' + break; + case 251: // 'tumbling' + shift(251); // 'tumbling' + break; + case 252: // 'type' + shift(252); // 'type' + break; + case 257: // 'updating' + shift(257); // 'updating' + break; + case 261: // 'value' + shift(261); // 'value' + break; + case 263: // 'version' + shift(263); // 'version' + break; + case 267: // 'while' + shift(267); // 'while' + break; + case 97: // 'constraint' + shift(97); // 'constraint' + break; + case 176: // 'loop' + shift(176); // 'loop' + break; + case 221: // 'returning' + shift(221); // 'returning' + break; + case 77: // 'append' + shift(77); // 'append' + break; + case 166: // 'json' + shift(166); // 'json' + break; + default: + shift(194); // 'object' + } + eventHandler.endNonterminal("NCName", e0); + } + + function try_NCName() + { + switch (l1) + { + case 19: // NCName^Token + shiftT(19); // NCName^Token + break; + case 70: // 'after' + shiftT(70); // 'after' + break; + case 75: // 'and' + shiftT(75); // 'and' + break; + case 79: // 'as' + shiftT(79); // 'as' + break; + case 80: // 'ascending' + shiftT(80); // 'ascending' + break; + case 84: // 'before' + shiftT(84); // 'before' + break; + case 88: // 'case' + shiftT(88); // 'case' + break; + case 89: // 'cast' + shiftT(89); // 'cast' + break; + case 90: // 'castable' + shiftT(90); // 'castable' + break; + case 94: // 'collation' + shiftT(94); // 'collation' + break; + case 105: // 'count' + shiftT(105); // 'count' + break; + case 109: // 'default' + shiftT(109); // 'default' + break; + case 113: // 'descending' + shiftT(113); // 'descending' + break; + case 118: // 'div' + shiftT(118); // 'div' + break; + case 122: // 'else' + shiftT(122); // 'else' + break; + case 123: // 'empty' + shiftT(123); // 'empty' + break; + case 126: // 'end' + shiftT(126); // 'end' + break; + case 128: // 'eq' + shiftT(128); // 'eq' + break; + case 131: // 'except' + shiftT(131); // 'except' + break; + case 137: // 'for' + shiftT(137); // 'for' + break; + case 146: // 'ge' + shiftT(146); // 'ge' + break; + case 148: // 'group' + shiftT(148); // 'group' + break; + case 150: // 'gt' + shiftT(150); // 'gt' + break; + case 151: // 'idiv' + shiftT(151); // 'idiv' + break; + case 160: // 'instance' + shiftT(160); // 'instance' + break; + case 162: // 'intersect' + shiftT(162); // 'intersect' + break; + case 163: // 'into' + shiftT(163); // 'into' + break; + case 164: // 'is' + shiftT(164); // 'is' + break; + case 172: // 'le' + shiftT(172); // 'le' + break; + case 174: // 'let' + shiftT(174); // 'let' + break; + case 178: // 'lt' + shiftT(178); // 'lt' + break; + case 180: // 'mod' + shiftT(180); // 'mod' + break; + case 181: // 'modify' + shiftT(181); // 'modify' + break; + case 186: // 'ne' + shiftT(186); // 'ne' + break; + case 198: // 'only' + shiftT(198); // 'only' + break; + case 200: // 'or' + shiftT(200); // 'or' + break; + case 201: // 'order' + shiftT(201); // 'order' + break; + case 220: // 'return' + shiftT(220); // 'return' + break; + case 224: // 'satisfies' + shiftT(224); // 'satisfies' + break; + case 236: // 'stable' + shiftT(236); // 'stable' + break; + case 237: // 'start' + shiftT(237); // 'start' + break; + case 248: // 'to' + shiftT(248); // 'to' + break; + case 249: // 'treat' + shiftT(249); // 'treat' + break; + case 254: // 'union' + shiftT(254); // 'union' + break; + case 266: // 'where' + shiftT(266); // 'where' + break; + case 270: // 'with' + shiftT(270); // 'with' + break; + case 73: // 'ancestor' + shiftT(73); // 'ancestor' + break; + case 74: // 'ancestor-or-self' + shiftT(74); // 'ancestor-or-self' + break; + case 82: // 'attribute' + shiftT(82); // 'attribute' + break; + case 93: // 'child' + shiftT(93); // 'child' + break; + case 96: // 'comment' + shiftT(96); // 'comment' + break; + case 103: // 'copy' + shiftT(103); // 'copy' + break; + case 108: // 'declare' + shiftT(108); // 'declare' + break; + case 110: // 'delete' + shiftT(110); // 'delete' + break; + case 111: // 'descendant' + shiftT(111); // 'descendant' + break; + case 112: // 'descendant-or-self' + shiftT(112); // 'descendant-or-self' + break; + case 119: // 'document' + shiftT(119); // 'document' + break; + case 120: // 'document-node' + shiftT(120); // 'document-node' + break; + case 121: // 'element' + shiftT(121); // 'element' + break; + case 124: // 'empty-sequence' + shiftT(124); // 'empty-sequence' + break; + case 129: // 'every' + shiftT(129); // 'every' + break; + case 134: // 'first' + shiftT(134); // 'first' + break; + case 135: // 'following' + shiftT(135); // 'following' + break; + case 136: // 'following-sibling' + shiftT(136); // 'following-sibling' + break; + case 145: // 'function' + shiftT(145); // 'function' + break; + case 152: // 'if' + shiftT(152); // 'if' + break; + case 153: // 'import' + shiftT(153); // 'import' + break; + case 159: // 'insert' + shiftT(159); // 'insert' + break; + case 165: // 'item' + shiftT(165); // 'item' + break; + case 170: // 'last' + shiftT(170); // 'last' + break; + case 182: // 'module' + shiftT(182); // 'module' + break; + case 184: // 'namespace' + shiftT(184); // 'namespace' + break; + case 185: // 'namespace-node' + shiftT(185); // 'namespace-node' + break; + case 191: // 'node' + shiftT(191); // 'node' + break; + case 202: // 'ordered' + shiftT(202); // 'ordered' + break; + case 206: // 'parent' + shiftT(206); // 'parent' + break; + case 212: // 'preceding' + shiftT(212); // 'preceding' + break; + case 213: // 'preceding-sibling' + shiftT(213); // 'preceding-sibling' + break; + case 216: // 'processing-instruction' + shiftT(216); // 'processing-instruction' + break; + case 218: // 'rename' + shiftT(218); // 'rename' + break; + case 219: // 'replace' + shiftT(219); // 'replace' + break; + case 226: // 'schema-attribute' + shiftT(226); // 'schema-attribute' + break; + case 227: // 'schema-element' + shiftT(227); // 'schema-element' + break; + case 229: // 'self' + shiftT(229); // 'self' + break; + case 235: // 'some' + shiftT(235); // 'some' + break; + case 243: // 'switch' + shiftT(243); // 'switch' + break; + case 244: // 'text' + shiftT(244); // 'text' + break; + case 250: // 'try' + shiftT(250); // 'try' + break; + case 253: // 'typeswitch' + shiftT(253); // 'typeswitch' + break; + case 256: // 'unordered' + shiftT(256); // 'unordered' + break; + case 260: // 'validate' + shiftT(260); // 'validate' + break; + case 262: // 'variable' + shiftT(262); // 'variable' + break; + case 274: // 'xquery' + shiftT(274); // 'xquery' + break; + case 72: // 'allowing' + shiftT(72); // 'allowing' + break; + case 81: // 'at' + shiftT(81); // 'at' + break; + case 83: // 'base-uri' + shiftT(83); // 'base-uri' + break; + case 85: // 'boundary-space' + shiftT(85); // 'boundary-space' + break; + case 86: // 'break' + shiftT(86); // 'break' + break; + case 91: // 'catch' + shiftT(91); // 'catch' + break; + case 98: // 'construction' + shiftT(98); // 'construction' + break; + case 101: // 'context' + shiftT(101); // 'context' + break; + case 102: // 'continue' + shiftT(102); // 'continue' + break; + case 104: // 'copy-namespaces' + shiftT(104); // 'copy-namespaces' + break; + case 106: // 'decimal-format' + shiftT(106); // 'decimal-format' + break; + case 125: // 'encoding' + shiftT(125); // 'encoding' + break; + case 132: // 'exit' + shiftT(132); // 'exit' + break; + case 133: // 'external' + shiftT(133); // 'external' + break; + case 141: // 'ft-option' + shiftT(141); // 'ft-option' + break; + case 154: // 'in' + shiftT(154); // 'in' + break; + case 155: // 'index' + shiftT(155); // 'index' + break; + case 161: // 'integrity' + shiftT(161); // 'integrity' + break; + case 171: // 'lax' + shiftT(171); // 'lax' + break; + case 192: // 'nodes' + shiftT(192); // 'nodes' + break; + case 199: // 'option' + shiftT(199); // 'option' + break; + case 203: // 'ordering' + shiftT(203); // 'ordering' + break; + case 222: // 'revalidation' + shiftT(222); // 'revalidation' + break; + case 225: // 'schema' + shiftT(225); // 'schema' + break; + case 228: // 'score' + shiftT(228); // 'score' + break; + case 234: // 'sliding' + shiftT(234); // 'sliding' + break; + case 240: // 'strict' + shiftT(240); // 'strict' + break; + case 251: // 'tumbling' + shiftT(251); // 'tumbling' + break; + case 252: // 'type' + shiftT(252); // 'type' + break; + case 257: // 'updating' + shiftT(257); // 'updating' + break; + case 261: // 'value' + shiftT(261); // 'value' + break; + case 263: // 'version' + shiftT(263); // 'version' + break; + case 267: // 'while' + shiftT(267); // 'while' + break; + case 97: // 'constraint' + shiftT(97); // 'constraint' + break; + case 176: // 'loop' + shiftT(176); // 'loop' + break; + case 221: // 'returning' + shiftT(221); // 'returning' + break; + case 77: // 'append' + shiftT(77); // 'append' + break; + case 166: // 'json' + shiftT(166); // 'json' + break; + default: + shiftT(194); // 'object' + } + } + + function parse_MainModule() + { + eventHandler.startNonterminal("MainModule", e0); + parse_Prolog(); + whitespace(); + parse_Program(); + eventHandler.endNonterminal("MainModule", e0); + } + + function parse_Program() + { + eventHandler.startNonterminal("Program", e0); + parse_StatementsAndOptionalExpr(); + eventHandler.endNonterminal("Program", e0); + } + + function parse_Statements() + { + eventHandler.startNonterminal("Statements", e0); + for (;;) + { + lookahead1W(277); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | + // '..' | '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' | '}' + switch (l1) + { + case 34: // '(' + lookahead2W(268); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '.' | + // '..' | '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + case 35: // '(#' + lookahead2(251); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + case 46: // '/' + lookahead2W(283); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '!' | '!=' | '$' | '%' | '(' | '(:' | '*' | '+' | + // ',' | '-' | '.' | '..' | ';' | '<' | '<!--' | '<<' | '<=' | '<?' | '=' | '>' | + // '>=' | '>>' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '|' | '||' | '}' + break; + case 47: // '//' + lookahead2W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + case 54: // '<' + lookahead2(4); // QName + break; + case 55: // '<!--' + lookahead2(1); // DirCommentContents + break; + case 59: // '<?' + lookahead2(3); // PITarget + break; + case 66: // '@' + lookahead2W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + case 68: // '[' + lookahead2W(271); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | ']' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + case 77: // 'append' + lookahead2W(199); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'json' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | + // 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 82: // 'attribute' + lookahead2W(280); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | + // '-' | '/' | '//' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | + // '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '|' | '||' | '}' + break; + case 121: // 'element' + lookahead2W(279); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | + // '-' | '/' | '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '|' | '||' | '}' + break; + case 132: // 'exit' + lookahead2W(202); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | + // 'returning' | 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 137: // 'for' + lookahead2W(207); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'sliding' | + // 'to' | 'treat' | 'tumbling' | 'union' | '|' | '||' | '}' + break; + case 174: // 'let' + lookahead2W(204); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'score' | + // 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 218: // 'rename' + lookahead2W(205); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'json' | 'le' | 'lt' | 'mod' | 'ne' | 'node' | + // 'or' | 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 219: // 'replace' + lookahead2W(206); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'node' | 'or' | + // 'to' | 'treat' | 'union' | 'value' | '|' | '||' | '}' + break; + case 260: // 'validate' + lookahead2W(209); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'lax' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | + // 'strict' | 'to' | 'treat' | 'type' | 'union' | '{' | '|' | '||' | '}' + break; + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + case 278: // '{|' + lookahead2W(272); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '|}' + break; + case 5: // Wildcard + case 45: // '..' + lookahead2W(185); // S^WS | EOF | '!' | '!=' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' | '}' + break; + case 31: // '$' + case 32: // '%' + lookahead2W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + case 40: // '+' + case 42: // '-' + lookahead2W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + case 86: // 'break' + case 102: // 'continue' + lookahead2W(200); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'loop' | 'lt' | 'mod' | 'ne' | 'or' | + // 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 110: // 'delete' + case 159: // 'insert' + lookahead2W(208); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'json' | 'le' | 'lt' | 'mod' | 'ne' | 'node' | + // 'nodes' | 'or' | 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 184: // 'namespace' + case 216: // 'processing-instruction' + lookahead2W(267); // NCName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | + // '-' | '/' | '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | '|' | '||' | '}' + break; + case 103: // 'copy' + case 129: // 'every' + case 235: // 'some' + case 262: // 'variable' + lookahead2W(196); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 44: // '.' + lookahead2W(191); // S^WS | EOF | '!' | '!=' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' | '}' + break; + case 78: // 'array' + case 124: // 'empty-sequence' + case 165: // 'item' + case 167: // 'json-item' + case 242: // 'structured-item' + lookahead2W(190); // S^WS | EOF | '!' | '!=' | '#' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' | '}' + break; + case 96: // 'comment' + case 119: // 'document' + case 202: // 'ordered' + case 244: // 'text' + case 250: // 'try' + case 256: // 'unordered' + lookahead2W(203); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '{' | '|' | '||' | '}' + break; + case 73: // 'ancestor' + case 74: // 'ancestor-or-self' + case 93: // 'child' + case 111: // 'descendant' + case 112: // 'descendant-or-self' + case 135: // 'following' + case 136: // 'following-sibling' + case 206: // 'parent' + case 212: // 'preceding' + case 213: // 'preceding-sibling' + case 229: // 'self' + lookahead2W(197); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + case 6: // EQName^Token + case 70: // 'after' + case 72: // 'allowing' + case 75: // 'and' + case 79: // 'as' + case 80: // 'ascending' + case 81: // 'at' + case 83: // 'base-uri' + case 84: // 'before' + case 85: // 'boundary-space' + case 88: // 'case' + case 89: // 'cast' + case 90: // 'castable' + case 91: // 'catch' + case 94: // 'collation' + case 97: // 'constraint' + case 98: // 'construction' + case 101: // 'context' + case 104: // 'copy-namespaces' + case 105: // 'count' + case 106: // 'decimal-format' + case 108: // 'declare' + case 109: // 'default' + case 113: // 'descending' + case 118: // 'div' + case 120: // 'document-node' + case 122: // 'else' + case 123: // 'empty' + case 125: // 'encoding' + case 126: // 'end' + case 128: // 'eq' + case 131: // 'except' + case 133: // 'external' + case 134: // 'first' + case 141: // 'ft-option' + case 145: // 'function' + case 146: // 'ge' + case 148: // 'group' + case 150: // 'gt' + case 151: // 'idiv' + case 152: // 'if' + case 153: // 'import' + case 154: // 'in' + case 155: // 'index' + case 160: // 'instance' + case 161: // 'integrity' + case 162: // 'intersect' + case 163: // 'into' + case 164: // 'is' + case 166: // 'json' + case 170: // 'last' + case 171: // 'lax' + case 172: // 'le' + case 176: // 'loop' + case 178: // 'lt' + case 180: // 'mod' + case 181: // 'modify' + case 182: // 'module' + case 185: // 'namespace-node' + case 186: // 'ne' + case 191: // 'node' + case 192: // 'nodes' + case 194: // 'object' + case 198: // 'only' + case 199: // 'option' + case 200: // 'or' + case 201: // 'order' + case 203: // 'ordering' + case 220: // 'return' + case 221: // 'returning' + case 222: // 'revalidation' + case 224: // 'satisfies' + case 225: // 'schema' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 228: // 'score' + case 234: // 'sliding' + case 236: // 'stable' + case 237: // 'start' + case 240: // 'strict' + case 243: // 'switch' + case 248: // 'to' + case 249: // 'treat' + case 251: // 'tumbling' + case 252: // 'type' + case 253: // 'typeswitch' + case 254: // 'union' + case 257: // 'updating' + case 261: // 'value' + case 263: // 'version' + case 266: // 'where' + case 267: // 'while' + case 270: // 'with' + case 274: // 'xquery' + lookahead2W(194); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 53 // ';' + && lk != 282 // '}' + && lk != 12805 // Wildcard EOF + && lk != 12806 // EQName^Token EOF + && lk != 12808 // IntegerLiteral EOF + && lk != 12809 // DecimalLiteral EOF + && lk != 12810 // DoubleLiteral EOF + && lk != 12811 // StringLiteral EOF + && lk != 12844 // '.' EOF + && lk != 12845 // '..' EOF + && lk != 12846 // '/' EOF + && lk != 12870 // 'after' EOF + && lk != 12872 // 'allowing' EOF + && lk != 12873 // 'ancestor' EOF + && lk != 12874 // 'ancestor-or-self' EOF + && lk != 12875 // 'and' EOF + && lk != 12877 // 'append' EOF + && lk != 12878 // 'array' EOF + && lk != 12879 // 'as' EOF + && lk != 12880 // 'ascending' EOF + && lk != 12881 // 'at' EOF + && lk != 12882 // 'attribute' EOF + && lk != 12883 // 'base-uri' EOF + && lk != 12884 // 'before' EOF + && lk != 12885 // 'boundary-space' EOF + && lk != 12886 // 'break' EOF + && lk != 12888 // 'case' EOF + && lk != 12889 // 'cast' EOF + && lk != 12890 // 'castable' EOF + && lk != 12891 // 'catch' EOF + && lk != 12893 // 'child' EOF + && lk != 12894 // 'collation' EOF + && lk != 12896 // 'comment' EOF + && lk != 12897 // 'constraint' EOF + && lk != 12898 // 'construction' EOF + && lk != 12901 // 'context' EOF + && lk != 12902 // 'continue' EOF + && lk != 12903 // 'copy' EOF + && lk != 12904 // 'copy-namespaces' EOF + && lk != 12905 // 'count' EOF + && lk != 12906 // 'decimal-format' EOF + && lk != 12908 // 'declare' EOF + && lk != 12909 // 'default' EOF + && lk != 12910 // 'delete' EOF + && lk != 12911 // 'descendant' EOF + && lk != 12912 // 'descendant-or-self' EOF + && lk != 12913 // 'descending' EOF + && lk != 12918 // 'div' EOF + && lk != 12919 // 'document' EOF + && lk != 12920 // 'document-node' EOF + && lk != 12921 // 'element' EOF + && lk != 12922 // 'else' EOF + && lk != 12923 // 'empty' EOF + && lk != 12924 // 'empty-sequence' EOF + && lk != 12925 // 'encoding' EOF + && lk != 12926 // 'end' EOF + && lk != 12928 // 'eq' EOF + && lk != 12929 // 'every' EOF + && lk != 12931 // 'except' EOF + && lk != 12932 // 'exit' EOF + && lk != 12933 // 'external' EOF + && lk != 12934 // 'first' EOF + && lk != 12935 // 'following' EOF + && lk != 12936 // 'following-sibling' EOF + && lk != 12937 // 'for' EOF + && lk != 12941 // 'ft-option' EOF + && lk != 12945 // 'function' EOF + && lk != 12946 // 'ge' EOF + && lk != 12948 // 'group' EOF + && lk != 12950 // 'gt' EOF + && lk != 12951 // 'idiv' EOF + && lk != 12952 // 'if' EOF + && lk != 12953 // 'import' EOF + && lk != 12954 // 'in' EOF + && lk != 12955 // 'index' EOF + && lk != 12959 // 'insert' EOF + && lk != 12960 // 'instance' EOF + && lk != 12961 // 'integrity' EOF + && lk != 12962 // 'intersect' EOF + && lk != 12963 // 'into' EOF + && lk != 12964 // 'is' EOF + && lk != 12965 // 'item' EOF + && lk != 12966 // 'json' EOF + && lk != 12967 // 'json-item' EOF + && lk != 12970 // 'last' EOF + && lk != 12971 // 'lax' EOF + && lk != 12972 // 'le' EOF + && lk != 12974 // 'let' EOF + && lk != 12976 // 'loop' EOF + && lk != 12978 // 'lt' EOF + && lk != 12980 // 'mod' EOF + && lk != 12981 // 'modify' EOF + && lk != 12982 // 'module' EOF + && lk != 12984 // 'namespace' EOF + && lk != 12985 // 'namespace-node' EOF + && lk != 12986 // 'ne' EOF + && lk != 12991 // 'node' EOF + && lk != 12992 // 'nodes' EOF + && lk != 12994 // 'object' EOF + && lk != 12998 // 'only' EOF + && lk != 12999 // 'option' EOF + && lk != 13000 // 'or' EOF + && lk != 13001 // 'order' EOF + && lk != 13002 // 'ordered' EOF + && lk != 13003 // 'ordering' EOF + && lk != 13006 // 'parent' EOF + && lk != 13012 // 'preceding' EOF + && lk != 13013 // 'preceding-sibling' EOF + && lk != 13016 // 'processing-instruction' EOF + && lk != 13018 // 'rename' EOF + && lk != 13019 // 'replace' EOF + && lk != 13020 // 'return' EOF + && lk != 13021 // 'returning' EOF + && lk != 13022 // 'revalidation' EOF + && lk != 13024 // 'satisfies' EOF + && lk != 13025 // 'schema' EOF + && lk != 13026 // 'schema-attribute' EOF + && lk != 13027 // 'schema-element' EOF + && lk != 13028 // 'score' EOF + && lk != 13029 // 'self' EOF + && lk != 13034 // 'sliding' EOF + && lk != 13035 // 'some' EOF + && lk != 13036 // 'stable' EOF + && lk != 13037 // 'start' EOF + && lk != 13040 // 'strict' EOF + && lk != 13042 // 'structured-item' EOF + && lk != 13043 // 'switch' EOF + && lk != 13044 // 'text' EOF + && lk != 13048 // 'to' EOF + && lk != 13049 // 'treat' EOF + && lk != 13050 // 'try' EOF + && lk != 13051 // 'tumbling' EOF + && lk != 13052 // 'type' EOF + && lk != 13053 // 'typeswitch' EOF + && lk != 13054 // 'union' EOF + && lk != 13056 // 'unordered' EOF + && lk != 13057 // 'updating' EOF + && lk != 13060 // 'validate' EOF + && lk != 13061 // 'value' EOF + && lk != 13062 // 'variable' EOF + && lk != 13063 // 'version' EOF + && lk != 13066 // 'where' EOF + && lk != 13067 // 'while' EOF + && lk != 13070 // 'with' EOF + && lk != 13074 // 'xquery' EOF + && lk != 16134 // 'variable' '$' + && lk != 20997 // Wildcard ',' + && lk != 20998 // EQName^Token ',' + && lk != 21000 // IntegerLiteral ',' + && lk != 21001 // DecimalLiteral ',' + && lk != 21002 // DoubleLiteral ',' + && lk != 21003 // StringLiteral ',' + && lk != 21036 // '.' ',' + && lk != 21037 // '..' ',' + && lk != 21038 // '/' ',' + && lk != 21062 // 'after' ',' + && lk != 21064 // 'allowing' ',' + && lk != 21065 // 'ancestor' ',' + && lk != 21066 // 'ancestor-or-self' ',' + && lk != 21067 // 'and' ',' + && lk != 21069 // 'append' ',' + && lk != 21070 // 'array' ',' + && lk != 21071 // 'as' ',' + && lk != 21072 // 'ascending' ',' + && lk != 21073 // 'at' ',' + && lk != 21074 // 'attribute' ',' + && lk != 21075 // 'base-uri' ',' + && lk != 21076 // 'before' ',' + && lk != 21077 // 'boundary-space' ',' + && lk != 21078 // 'break' ',' + && lk != 21080 // 'case' ',' + && lk != 21081 // 'cast' ',' + && lk != 21082 // 'castable' ',' + && lk != 21083 // 'catch' ',' + && lk != 21085 // 'child' ',' + && lk != 21086 // 'collation' ',' + && lk != 21088 // 'comment' ',' + && lk != 21089 // 'constraint' ',' + && lk != 21090 // 'construction' ',' + && lk != 21093 // 'context' ',' + && lk != 21094 // 'continue' ',' + && lk != 21095 // 'copy' ',' + && lk != 21096 // 'copy-namespaces' ',' + && lk != 21097 // 'count' ',' + && lk != 21098 // 'decimal-format' ',' + && lk != 21100 // 'declare' ',' + && lk != 21101 // 'default' ',' + && lk != 21102 // 'delete' ',' + && lk != 21103 // 'descendant' ',' + && lk != 21104 // 'descendant-or-self' ',' + && lk != 21105 // 'descending' ',' + && lk != 21110 // 'div' ',' + && lk != 21111 // 'document' ',' + && lk != 21112 // 'document-node' ',' + && lk != 21113 // 'element' ',' + && lk != 21114 // 'else' ',' + && lk != 21115 // 'empty' ',' + && lk != 21116 // 'empty-sequence' ',' + && lk != 21117 // 'encoding' ',' + && lk != 21118 // 'end' ',' + && lk != 21120 // 'eq' ',' + && lk != 21121 // 'every' ',' + && lk != 21123 // 'except' ',' + && lk != 21124 // 'exit' ',' + && lk != 21125 // 'external' ',' + && lk != 21126 // 'first' ',' + && lk != 21127 // 'following' ',' + && lk != 21128 // 'following-sibling' ',' + && lk != 21129 // 'for' ',' + && lk != 21133 // 'ft-option' ',' + && lk != 21137 // 'function' ',' + && lk != 21138 // 'ge' ',' + && lk != 21140 // 'group' ',' + && lk != 21142 // 'gt' ',' + && lk != 21143 // 'idiv' ',' + && lk != 21144 // 'if' ',' + && lk != 21145 // 'import' ',' + && lk != 21146 // 'in' ',' + && lk != 21147 // 'index' ',' + && lk != 21151 // 'insert' ',' + && lk != 21152 // 'instance' ',' + && lk != 21153 // 'integrity' ',' + && lk != 21154 // 'intersect' ',' + && lk != 21155 // 'into' ',' + && lk != 21156 // 'is' ',' + && lk != 21157 // 'item' ',' + && lk != 21158 // 'json' ',' + && lk != 21159 // 'json-item' ',' + && lk != 21162 // 'last' ',' + && lk != 21163 // 'lax' ',' + && lk != 21164 // 'le' ',' + && lk != 21166 // 'let' ',' + && lk != 21168 // 'loop' ',' + && lk != 21170 // 'lt' ',' + && lk != 21172 // 'mod' ',' + && lk != 21173 // 'modify' ',' + && lk != 21174 // 'module' ',' + && lk != 21176 // 'namespace' ',' + && lk != 21177 // 'namespace-node' ',' + && lk != 21178 // 'ne' ',' + && lk != 21183 // 'node' ',' + && lk != 21184 // 'nodes' ',' + && lk != 21186 // 'object' ',' + && lk != 21190 // 'only' ',' + && lk != 21191 // 'option' ',' + && lk != 21192 // 'or' ',' + && lk != 21193 // 'order' ',' + && lk != 21194 // 'ordered' ',' + && lk != 21195 // 'ordering' ',' + && lk != 21198 // 'parent' ',' + && lk != 21204 // 'preceding' ',' + && lk != 21205 // 'preceding-sibling' ',' + && lk != 21208 // 'processing-instruction' ',' + && lk != 21210 // 'rename' ',' + && lk != 21211 // 'replace' ',' + && lk != 21212 // 'return' ',' + && lk != 21213 // 'returning' ',' + && lk != 21214 // 'revalidation' ',' + && lk != 21216 // 'satisfies' ',' + && lk != 21217 // 'schema' ',' + && lk != 21218 // 'schema-attribute' ',' + && lk != 21219 // 'schema-element' ',' + && lk != 21220 // 'score' ',' + && lk != 21221 // 'self' ',' + && lk != 21226 // 'sliding' ',' + && lk != 21227 // 'some' ',' + && lk != 21228 // 'stable' ',' + && lk != 21229 // 'start' ',' + && lk != 21232 // 'strict' ',' + && lk != 21234 // 'structured-item' ',' + && lk != 21235 // 'switch' ',' + && lk != 21236 // 'text' ',' + && lk != 21240 // 'to' ',' + && lk != 21241 // 'treat' ',' + && lk != 21242 // 'try' ',' + && lk != 21243 // 'tumbling' ',' + && lk != 21244 // 'type' ',' + && lk != 21245 // 'typeswitch' ',' + && lk != 21246 // 'union' ',' + && lk != 21248 // 'unordered' ',' + && lk != 21249 // 'updating' ',' + && lk != 21252 // 'validate' ',' + && lk != 21253 // 'value' ',' + && lk != 21254 // 'variable' ',' + && lk != 21255 // 'version' ',' + && lk != 21258 // 'where' ',' + && lk != 21259 // 'while' ',' + && lk != 21262 // 'with' ',' + && lk != 21266 // 'xquery' ',' + && lk != 27141 // Wildcard ';' + && lk != 27142 // EQName^Token ';' + && lk != 27144 // IntegerLiteral ';' + && lk != 27145 // DecimalLiteral ';' + && lk != 27146 // DoubleLiteral ';' + && lk != 27147 // StringLiteral ';' + && lk != 27180 // '.' ';' + && lk != 27181 // '..' ';' + && lk != 27182 // '/' ';' + && lk != 27206 // 'after' ';' + && lk != 27208 // 'allowing' ';' + && lk != 27209 // 'ancestor' ';' + && lk != 27210 // 'ancestor-or-self' ';' + && lk != 27211 // 'and' ';' + && lk != 27213 // 'append' ';' + && lk != 27214 // 'array' ';' + && lk != 27215 // 'as' ';' + && lk != 27216 // 'ascending' ';' + && lk != 27217 // 'at' ';' + && lk != 27218 // 'attribute' ';' + && lk != 27219 // 'base-uri' ';' + && lk != 27220 // 'before' ';' + && lk != 27221 // 'boundary-space' ';' + && lk != 27222 // 'break' ';' + && lk != 27224 // 'case' ';' + && lk != 27225 // 'cast' ';' + && lk != 27226 // 'castable' ';' + && lk != 27227 // 'catch' ';' + && lk != 27229 // 'child' ';' + && lk != 27230 // 'collation' ';' + && lk != 27232 // 'comment' ';' + && lk != 27233 // 'constraint' ';' + && lk != 27234 // 'construction' ';' + && lk != 27237 // 'context' ';' + && lk != 27238 // 'continue' ';' + && lk != 27239 // 'copy' ';' + && lk != 27240 // 'copy-namespaces' ';' + && lk != 27241 // 'count' ';' + && lk != 27242 // 'decimal-format' ';' + && lk != 27244 // 'declare' ';' + && lk != 27245 // 'default' ';' + && lk != 27246 // 'delete' ';' + && lk != 27247 // 'descendant' ';' + && lk != 27248 // 'descendant-or-self' ';' + && lk != 27249 // 'descending' ';' + && lk != 27254 // 'div' ';' + && lk != 27255 // 'document' ';' + && lk != 27256 // 'document-node' ';' + && lk != 27257 // 'element' ';' + && lk != 27258 // 'else' ';' + && lk != 27259 // 'empty' ';' + && lk != 27260 // 'empty-sequence' ';' + && lk != 27261 // 'encoding' ';' + && lk != 27262 // 'end' ';' + && lk != 27264 // 'eq' ';' + && lk != 27265 // 'every' ';' + && lk != 27267 // 'except' ';' + && lk != 27268 // 'exit' ';' + && lk != 27269 // 'external' ';' + && lk != 27270 // 'first' ';' + && lk != 27271 // 'following' ';' + && lk != 27272 // 'following-sibling' ';' + && lk != 27273 // 'for' ';' + && lk != 27277 // 'ft-option' ';' + && lk != 27281 // 'function' ';' + && lk != 27282 // 'ge' ';' + && lk != 27284 // 'group' ';' + && lk != 27286 // 'gt' ';' + && lk != 27287 // 'idiv' ';' + && lk != 27288 // 'if' ';' + && lk != 27289 // 'import' ';' + && lk != 27290 // 'in' ';' + && lk != 27291 // 'index' ';' + && lk != 27295 // 'insert' ';' + && lk != 27296 // 'instance' ';' + && lk != 27297 // 'integrity' ';' + && lk != 27298 // 'intersect' ';' + && lk != 27299 // 'into' ';' + && lk != 27300 // 'is' ';' + && lk != 27301 // 'item' ';' + && lk != 27302 // 'json' ';' + && lk != 27303 // 'json-item' ';' + && lk != 27306 // 'last' ';' + && lk != 27307 // 'lax' ';' + && lk != 27308 // 'le' ';' + && lk != 27310 // 'let' ';' + && lk != 27312 // 'loop' ';' + && lk != 27314 // 'lt' ';' + && lk != 27316 // 'mod' ';' + && lk != 27317 // 'modify' ';' + && lk != 27318 // 'module' ';' + && lk != 27320 // 'namespace' ';' + && lk != 27321 // 'namespace-node' ';' + && lk != 27322 // 'ne' ';' + && lk != 27327 // 'node' ';' + && lk != 27328 // 'nodes' ';' + && lk != 27330 // 'object' ';' + && lk != 27334 // 'only' ';' + && lk != 27335 // 'option' ';' + && lk != 27336 // 'or' ';' + && lk != 27337 // 'order' ';' + && lk != 27338 // 'ordered' ';' + && lk != 27339 // 'ordering' ';' + && lk != 27342 // 'parent' ';' + && lk != 27348 // 'preceding' ';' + && lk != 27349 // 'preceding-sibling' ';' + && lk != 27352 // 'processing-instruction' ';' + && lk != 27354 // 'rename' ';' + && lk != 27355 // 'replace' ';' + && lk != 27356 // 'return' ';' + && lk != 27357 // 'returning' ';' + && lk != 27358 // 'revalidation' ';' + && lk != 27360 // 'satisfies' ';' + && lk != 27361 // 'schema' ';' + && lk != 27362 // 'schema-attribute' ';' + && lk != 27363 // 'schema-element' ';' + && lk != 27364 // 'score' ';' + && lk != 27365 // 'self' ';' + && lk != 27370 // 'sliding' ';' + && lk != 27371 // 'some' ';' + && lk != 27372 // 'stable' ';' + && lk != 27373 // 'start' ';' + && lk != 27376 // 'strict' ';' + && lk != 27378 // 'structured-item' ';' + && lk != 27379 // 'switch' ';' + && lk != 27380 // 'text' ';' + && lk != 27384 // 'to' ';' + && lk != 27385 // 'treat' ';' + && lk != 27386 // 'try' ';' + && lk != 27387 // 'tumbling' ';' + && lk != 27388 // 'type' ';' + && lk != 27389 // 'typeswitch' ';' + && lk != 27390 // 'union' ';' + && lk != 27392 // 'unordered' ';' + && lk != 27393 // 'updating' ';' + && lk != 27396 // 'validate' ';' + && lk != 27397 // 'value' ';' + && lk != 27398 // 'variable' ';' + && lk != 27399 // 'version' ';' + && lk != 27402 // 'where' ';' + && lk != 27403 // 'while' ';' + && lk != 27406 // 'with' ';' + && lk != 27410 // 'xquery' ';' + && lk != 90198 // 'break' 'loop' + && lk != 90214 // 'continue' 'loop' + && lk != 113284 // 'exit' 'returning' + && lk != 144389 // Wildcard '}' + && lk != 144390 // EQName^Token '}' + && lk != 144392 // IntegerLiteral '}' + && lk != 144393 // DecimalLiteral '}' + && lk != 144394 // DoubleLiteral '}' + && lk != 144395 // StringLiteral '}' + && lk != 144428 // '.' '}' + && lk != 144429 // '..' '}' + && lk != 144430 // '/' '}' + && lk != 144454 // 'after' '}' + && lk != 144456 // 'allowing' '}' + && lk != 144457 // 'ancestor' '}' + && lk != 144458 // 'ancestor-or-self' '}' + && lk != 144459 // 'and' '}' + && lk != 144461 // 'append' '}' + && lk != 144462 // 'array' '}' + && lk != 144463 // 'as' '}' + && lk != 144464 // 'ascending' '}' + && lk != 144465 // 'at' '}' + && lk != 144466 // 'attribute' '}' + && lk != 144467 // 'base-uri' '}' + && lk != 144468 // 'before' '}' + && lk != 144469 // 'boundary-space' '}' + && lk != 144470 // 'break' '}' + && lk != 144472 // 'case' '}' + && lk != 144473 // 'cast' '}' + && lk != 144474 // 'castable' '}' + && lk != 144475 // 'catch' '}' + && lk != 144477 // 'child' '}' + && lk != 144478 // 'collation' '}' + && lk != 144480 // 'comment' '}' + && lk != 144481 // 'constraint' '}' + && lk != 144482 // 'construction' '}' + && lk != 144485 // 'context' '}' + && lk != 144486 // 'continue' '}' + && lk != 144487 // 'copy' '}' + && lk != 144488 // 'copy-namespaces' '}' + && lk != 144489 // 'count' '}' + && lk != 144490 // 'decimal-format' '}' + && lk != 144492 // 'declare' '}' + && lk != 144493 // 'default' '}' + && lk != 144494 // 'delete' '}' + && lk != 144495 // 'descendant' '}' + && lk != 144496 // 'descendant-or-self' '}' + && lk != 144497 // 'descending' '}' + && lk != 144502 // 'div' '}' + && lk != 144503 // 'document' '}' + && lk != 144504 // 'document-node' '}' + && lk != 144505 // 'element' '}' + && lk != 144506 // 'else' '}' + && lk != 144507 // 'empty' '}' + && lk != 144508 // 'empty-sequence' '}' + && lk != 144509 // 'encoding' '}' + && lk != 144510 // 'end' '}' + && lk != 144512 // 'eq' '}' + && lk != 144513 // 'every' '}' + && lk != 144515 // 'except' '}' + && lk != 144516 // 'exit' '}' + && lk != 144517 // 'external' '}' + && lk != 144518 // 'first' '}' + && lk != 144519 // 'following' '}' + && lk != 144520 // 'following-sibling' '}' + && lk != 144521 // 'for' '}' + && lk != 144525 // 'ft-option' '}' + && lk != 144529 // 'function' '}' + && lk != 144530 // 'ge' '}' + && lk != 144532 // 'group' '}' + && lk != 144534 // 'gt' '}' + && lk != 144535 // 'idiv' '}' + && lk != 144536 // 'if' '}' + && lk != 144537 // 'import' '}' + && lk != 144538 // 'in' '}' + && lk != 144539 // 'index' '}' + && lk != 144543 // 'insert' '}' + && lk != 144544 // 'instance' '}' + && lk != 144545 // 'integrity' '}' + && lk != 144546 // 'intersect' '}' + && lk != 144547 // 'into' '}' + && lk != 144548 // 'is' '}' + && lk != 144549 // 'item' '}' + && lk != 144550 // 'json' '}' + && lk != 144551 // 'json-item' '}' + && lk != 144554 // 'last' '}' + && lk != 144555 // 'lax' '}' + && lk != 144556 // 'le' '}' + && lk != 144558 // 'let' '}' + && lk != 144560 // 'loop' '}' + && lk != 144562 // 'lt' '}' + && lk != 144564 // 'mod' '}' + && lk != 144565 // 'modify' '}' + && lk != 144566 // 'module' '}' + && lk != 144568 // 'namespace' '}' + && lk != 144569 // 'namespace-node' '}' + && lk != 144570 // 'ne' '}' + && lk != 144575 // 'node' '}' + && lk != 144576 // 'nodes' '}' + && lk != 144578 // 'object' '}' + && lk != 144582 // 'only' '}' + && lk != 144583 // 'option' '}' + && lk != 144584 // 'or' '}' + && lk != 144585 // 'order' '}' + && lk != 144586 // 'ordered' '}' + && lk != 144587 // 'ordering' '}' + && lk != 144590 // 'parent' '}' + && lk != 144596 // 'preceding' '}' + && lk != 144597 // 'preceding-sibling' '}' + && lk != 144600 // 'processing-instruction' '}' + && lk != 144602 // 'rename' '}' + && lk != 144603 // 'replace' '}' + && lk != 144604 // 'return' '}' + && lk != 144605 // 'returning' '}' + && lk != 144606 // 'revalidation' '}' + && lk != 144608 // 'satisfies' '}' + && lk != 144609 // 'schema' '}' + && lk != 144610 // 'schema-attribute' '}' + && lk != 144611 // 'schema-element' '}' + && lk != 144612 // 'score' '}' + && lk != 144613 // 'self' '}' + && lk != 144618 // 'sliding' '}' + && lk != 144619 // 'some' '}' + && lk != 144620 // 'stable' '}' + && lk != 144621 // 'start' '}' + && lk != 144624 // 'strict' '}' + && lk != 144626 // 'structured-item' '}' + && lk != 144627 // 'switch' '}' + && lk != 144628 // 'text' '}' + && lk != 144632 // 'to' '}' + && lk != 144633 // 'treat' '}' + && lk != 144634 // 'try' '}' + && lk != 144635 // 'tumbling' '}' + && lk != 144636 // 'type' '}' + && lk != 144637 // 'typeswitch' '}' + && lk != 144638 // 'union' '}' + && lk != 144640 // 'unordered' '}' + && lk != 144641 // 'updating' '}' + && lk != 144644 // 'validate' '}' + && lk != 144645 // 'value' '}' + && lk != 144646 // 'variable' '}' + && lk != 144647 // 'version' '}' + && lk != 144650 // 'where' '}' + && lk != 144651 // 'while' '}' + && lk != 144654 // 'with' '}' + && lk != 144658) // 'xquery' '}' + { + lk = memoized(6, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_Statement(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(6, e0, lk); + } + } + if (lk != -1 + && lk != 53 // ';' + && lk != 16134 // 'variable' '$' + && lk != 27141 // Wildcard ';' + && lk != 27142 // EQName^Token ';' + && lk != 27144 // IntegerLiteral ';' + && lk != 27145 // DecimalLiteral ';' + && lk != 27146 // DoubleLiteral ';' + && lk != 27147 // StringLiteral ';' + && lk != 27180 // '.' ';' + && lk != 27181 // '..' ';' + && lk != 27182 // '/' ';' + && lk != 27206 // 'after' ';' + && lk != 27208 // 'allowing' ';' + && lk != 27209 // 'ancestor' ';' + && lk != 27210 // 'ancestor-or-self' ';' + && lk != 27211 // 'and' ';' + && lk != 27213 // 'append' ';' + && lk != 27214 // 'array' ';' + && lk != 27215 // 'as' ';' + && lk != 27216 // 'ascending' ';' + && lk != 27217 // 'at' ';' + && lk != 27218 // 'attribute' ';' + && lk != 27219 // 'base-uri' ';' + && lk != 27220 // 'before' ';' + && lk != 27221 // 'boundary-space' ';' + && lk != 27222 // 'break' ';' + && lk != 27224 // 'case' ';' + && lk != 27225 // 'cast' ';' + && lk != 27226 // 'castable' ';' + && lk != 27227 // 'catch' ';' + && lk != 27229 // 'child' ';' + && lk != 27230 // 'collation' ';' + && lk != 27232 // 'comment' ';' + && lk != 27233 // 'constraint' ';' + && lk != 27234 // 'construction' ';' + && lk != 27237 // 'context' ';' + && lk != 27238 // 'continue' ';' + && lk != 27239 // 'copy' ';' + && lk != 27240 // 'copy-namespaces' ';' + && lk != 27241 // 'count' ';' + && lk != 27242 // 'decimal-format' ';' + && lk != 27244 // 'declare' ';' + && lk != 27245 // 'default' ';' + && lk != 27246 // 'delete' ';' + && lk != 27247 // 'descendant' ';' + && lk != 27248 // 'descendant-or-self' ';' + && lk != 27249 // 'descending' ';' + && lk != 27254 // 'div' ';' + && lk != 27255 // 'document' ';' + && lk != 27256 // 'document-node' ';' + && lk != 27257 // 'element' ';' + && lk != 27258 // 'else' ';' + && lk != 27259 // 'empty' ';' + && lk != 27260 // 'empty-sequence' ';' + && lk != 27261 // 'encoding' ';' + && lk != 27262 // 'end' ';' + && lk != 27264 // 'eq' ';' + && lk != 27265 // 'every' ';' + && lk != 27267 // 'except' ';' + && lk != 27268 // 'exit' ';' + && lk != 27269 // 'external' ';' + && lk != 27270 // 'first' ';' + && lk != 27271 // 'following' ';' + && lk != 27272 // 'following-sibling' ';' + && lk != 27273 // 'for' ';' + && lk != 27277 // 'ft-option' ';' + && lk != 27281 // 'function' ';' + && lk != 27282 // 'ge' ';' + && lk != 27284 // 'group' ';' + && lk != 27286 // 'gt' ';' + && lk != 27287 // 'idiv' ';' + && lk != 27288 // 'if' ';' + && lk != 27289 // 'import' ';' + && lk != 27290 // 'in' ';' + && lk != 27291 // 'index' ';' + && lk != 27295 // 'insert' ';' + && lk != 27296 // 'instance' ';' + && lk != 27297 // 'integrity' ';' + && lk != 27298 // 'intersect' ';' + && lk != 27299 // 'into' ';' + && lk != 27300 // 'is' ';' + && lk != 27301 // 'item' ';' + && lk != 27302 // 'json' ';' + && lk != 27303 // 'json-item' ';' + && lk != 27306 // 'last' ';' + && lk != 27307 // 'lax' ';' + && lk != 27308 // 'le' ';' + && lk != 27310 // 'let' ';' + && lk != 27312 // 'loop' ';' + && lk != 27314 // 'lt' ';' + && lk != 27316 // 'mod' ';' + && lk != 27317 // 'modify' ';' + && lk != 27318 // 'module' ';' + && lk != 27320 // 'namespace' ';' + && lk != 27321 // 'namespace-node' ';' + && lk != 27322 // 'ne' ';' + && lk != 27327 // 'node' ';' + && lk != 27328 // 'nodes' ';' + && lk != 27330 // 'object' ';' + && lk != 27334 // 'only' ';' + && lk != 27335 // 'option' ';' + && lk != 27336 // 'or' ';' + && lk != 27337 // 'order' ';' + && lk != 27338 // 'ordered' ';' + && lk != 27339 // 'ordering' ';' + && lk != 27342 // 'parent' ';' + && lk != 27348 // 'preceding' ';' + && lk != 27349 // 'preceding-sibling' ';' + && lk != 27352 // 'processing-instruction' ';' + && lk != 27354 // 'rename' ';' + && lk != 27355 // 'replace' ';' + && lk != 27356 // 'return' ';' + && lk != 27357 // 'returning' ';' + && lk != 27358 // 'revalidation' ';' + && lk != 27360 // 'satisfies' ';' + && lk != 27361 // 'schema' ';' + && lk != 27362 // 'schema-attribute' ';' + && lk != 27363 // 'schema-element' ';' + && lk != 27364 // 'score' ';' + && lk != 27365 // 'self' ';' + && lk != 27370 // 'sliding' ';' + && lk != 27371 // 'some' ';' + && lk != 27372 // 'stable' ';' + && lk != 27373 // 'start' ';' + && lk != 27376 // 'strict' ';' + && lk != 27378 // 'structured-item' ';' + && lk != 27379 // 'switch' ';' + && lk != 27380 // 'text' ';' + && lk != 27384 // 'to' ';' + && lk != 27385 // 'treat' ';' + && lk != 27386 // 'try' ';' + && lk != 27387 // 'tumbling' ';' + && lk != 27388 // 'type' ';' + && lk != 27389 // 'typeswitch' ';' + && lk != 27390 // 'union' ';' + && lk != 27392 // 'unordered' ';' + && lk != 27393 // 'updating' ';' + && lk != 27396 // 'validate' ';' + && lk != 27397 // 'value' ';' + && lk != 27398 // 'variable' ';' + && lk != 27399 // 'version' ';' + && lk != 27402 // 'where' ';' + && lk != 27403 // 'while' ';' + && lk != 27406 // 'with' ';' + && lk != 27410 // 'xquery' ';' + && lk != 90198 // 'break' 'loop' + && lk != 90214 // 'continue' 'loop' + && lk != 113284) // 'exit' 'returning' + { + break; + } + whitespace(); + parse_Statement(); + } + eventHandler.endNonterminal("Statements", e0); + } + + function try_Statements() + { + for (;;) + { + lookahead1W(277); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | + // '..' | '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' | '}' + switch (l1) + { + case 34: // '(' + lookahead2W(268); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | ')' | '+' | '-' | '.' | + // '..' | '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + case 35: // '(#' + lookahead2(251); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + case 46: // '/' + lookahead2W(283); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '!' | '!=' | '$' | '%' | '(' | '(:' | '*' | '+' | + // ',' | '-' | '.' | '..' | ';' | '<' | '<!--' | '<<' | '<=' | '<?' | '=' | '>' | + // '>=' | '>>' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'contains' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '|' | '||' | '}' + break; + case 47: // '//' + lookahead2W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(:' | '.' | '..' | '<' | '<!--' | + // '<?' | '@' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + case 54: // '<' + lookahead2(4); // QName + break; + case 55: // '<!--' + lookahead2(1); // DirCommentContents + break; + case 59: // '<?' + lookahead2(3); // PITarget + break; + case 66: // '@' + lookahead2W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + case 68: // '[' + lookahead2W(271); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | ']' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + case 77: // 'append' + lookahead2W(199); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'json' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | + // 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 82: // 'attribute' + lookahead2W(280); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | + // '-' | '/' | '//' | '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | + // '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '|' | '||' | '}' + break; + case 121: // 'element' + lookahead2W(279); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | + // '-' | '/' | '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '|' | '||' | '}' + break; + case 132: // 'exit' + lookahead2W(202); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | + // 'returning' | 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 137: // 'for' + lookahead2W(207); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'sliding' | + // 'to' | 'treat' | 'tumbling' | 'union' | '|' | '||' | '}' + break; + case 174: // 'let' + lookahead2W(204); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'score' | + // 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 218: // 'rename' + lookahead2W(205); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'json' | 'le' | 'lt' | 'mod' | 'ne' | 'node' | + // 'or' | 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 219: // 'replace' + lookahead2W(206); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'node' | 'or' | + // 'to' | 'treat' | 'union' | 'value' | '|' | '||' | '}' + break; + case 260: // 'validate' + lookahead2W(209); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'lax' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | + // 'strict' | 'to' | 'treat' | 'type' | 'union' | '{' | '|' | '||' | '}' + break; + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + case 278: // '{|' + lookahead2W(272); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '|}' + break; + case 5: // Wildcard + case 45: // '..' + lookahead2W(185); // S^WS | EOF | '!' | '!=' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' | '}' + break; + case 31: // '$' + case 32: // '%' + lookahead2W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + case 40: // '+' + case 42: // '-' + lookahead2W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + break; + case 86: // 'break' + case 102: // 'continue' + lookahead2W(200); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'loop' | 'lt' | 'mod' | 'ne' | 'or' | + // 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 110: // 'delete' + case 159: // 'insert' + lookahead2W(208); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'json' | 'le' | 'lt' | 'mod' | 'ne' | 'node' | + // 'nodes' | 'or' | 'to' | 'treat' | 'union' | '|' | '||' | '}' + break; + case 184: // 'namespace' + case 216: // 'processing-instruction' + lookahead2W(267); // NCName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | + // '-' | '/' | '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | '|' | '||' | '}' + break; + case 103: // 'copy' + case 129: // 'every' + case 235: // 'some' + case 262: // 'variable' + lookahead2W(196); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | + // '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 44: // '.' + lookahead2W(191); // S^WS | EOF | '!' | '!=' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' | '}' + break; + case 78: // 'array' + case 124: // 'empty-sequence' + case 165: // 'item' + case 167: // 'json-item' + case 242: // 'structured-item' + lookahead2W(190); // S^WS | EOF | '!' | '!=' | '#' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' | '}' + break; + case 96: // 'comment' + case 119: // 'document' + case 202: // 'ordered' + case 244: // 'text' + case 250: // 'try' + case 256: // 'unordered' + lookahead2W(203); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '{' | '|' | '||' | '}' + break; + case 73: // 'ancestor' + case 74: // 'ancestor-or-self' + case 93: // 'child' + case 111: // 'descendant' + case 112: // 'descendant-or-self' + case 135: // 'following' + case 136: // 'following-sibling' + case 206: // 'parent' + case 212: // 'preceding' + case 213: // 'preceding-sibling' + case 229: // 'self' + lookahead2W(197); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // '::' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + case 6: // EQName^Token + case 70: // 'after' + case 72: // 'allowing' + case 75: // 'and' + case 79: // 'as' + case 80: // 'ascending' + case 81: // 'at' + case 83: // 'base-uri' + case 84: // 'before' + case 85: // 'boundary-space' + case 88: // 'case' + case 89: // 'cast' + case 90: // 'castable' + case 91: // 'catch' + case 94: // 'collation' + case 97: // 'constraint' + case 98: // 'construction' + case 101: // 'context' + case 104: // 'copy-namespaces' + case 105: // 'count' + case 106: // 'decimal-format' + case 108: // 'declare' + case 109: // 'default' + case 113: // 'descending' + case 118: // 'div' + case 120: // 'document-node' + case 122: // 'else' + case 123: // 'empty' + case 125: // 'encoding' + case 126: // 'end' + case 128: // 'eq' + case 131: // 'except' + case 133: // 'external' + case 134: // 'first' + case 141: // 'ft-option' + case 145: // 'function' + case 146: // 'ge' + case 148: // 'group' + case 150: // 'gt' + case 151: // 'idiv' + case 152: // 'if' + case 153: // 'import' + case 154: // 'in' + case 155: // 'index' + case 160: // 'instance' + case 161: // 'integrity' + case 162: // 'intersect' + case 163: // 'into' + case 164: // 'is' + case 166: // 'json' + case 170: // 'last' + case 171: // 'lax' + case 172: // 'le' + case 176: // 'loop' + case 178: // 'lt' + case 180: // 'mod' + case 181: // 'modify' + case 182: // 'module' + case 185: // 'namespace-node' + case 186: // 'ne' + case 191: // 'node' + case 192: // 'nodes' + case 194: // 'object' + case 198: // 'only' + case 199: // 'option' + case 200: // 'or' + case 201: // 'order' + case 203: // 'ordering' + case 220: // 'return' + case 221: // 'returning' + case 222: // 'revalidation' + case 224: // 'satisfies' + case 225: // 'schema' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 228: // 'score' + case 234: // 'sliding' + case 236: // 'stable' + case 237: // 'start' + case 240: // 'strict' + case 243: // 'switch' + case 248: // 'to' + case 249: // 'treat' + case 251: // 'tumbling' + case 252: // 'type' + case 253: // 'typeswitch' + case 254: // 'union' + case 257: // 'updating' + case 261: // 'value' + case 263: // 'version' + case 266: // 'where' + case 267: // 'while' + case 270: // 'with' + case 274: // 'xquery' + lookahead2W(194); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | ',' | '-' | '/' | '//' | + // ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | + // 'castable' | 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | + // 'instance' | 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' | '}' + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 53 // ';' + && lk != 282 // '}' + && lk != 12805 // Wildcard EOF + && lk != 12806 // EQName^Token EOF + && lk != 12808 // IntegerLiteral EOF + && lk != 12809 // DecimalLiteral EOF + && lk != 12810 // DoubleLiteral EOF + && lk != 12811 // StringLiteral EOF + && lk != 12844 // '.' EOF + && lk != 12845 // '..' EOF + && lk != 12846 // '/' EOF + && lk != 12870 // 'after' EOF + && lk != 12872 // 'allowing' EOF + && lk != 12873 // 'ancestor' EOF + && lk != 12874 // 'ancestor-or-self' EOF + && lk != 12875 // 'and' EOF + && lk != 12877 // 'append' EOF + && lk != 12878 // 'array' EOF + && lk != 12879 // 'as' EOF + && lk != 12880 // 'ascending' EOF + && lk != 12881 // 'at' EOF + && lk != 12882 // 'attribute' EOF + && lk != 12883 // 'base-uri' EOF + && lk != 12884 // 'before' EOF + && lk != 12885 // 'boundary-space' EOF + && lk != 12886 // 'break' EOF + && lk != 12888 // 'case' EOF + && lk != 12889 // 'cast' EOF + && lk != 12890 // 'castable' EOF + && lk != 12891 // 'catch' EOF + && lk != 12893 // 'child' EOF + && lk != 12894 // 'collation' EOF + && lk != 12896 // 'comment' EOF + && lk != 12897 // 'constraint' EOF + && lk != 12898 // 'construction' EOF + && lk != 12901 // 'context' EOF + && lk != 12902 // 'continue' EOF + && lk != 12903 // 'copy' EOF + && lk != 12904 // 'copy-namespaces' EOF + && lk != 12905 // 'count' EOF + && lk != 12906 // 'decimal-format' EOF + && lk != 12908 // 'declare' EOF + && lk != 12909 // 'default' EOF + && lk != 12910 // 'delete' EOF + && lk != 12911 // 'descendant' EOF + && lk != 12912 // 'descendant-or-self' EOF + && lk != 12913 // 'descending' EOF + && lk != 12918 // 'div' EOF + && lk != 12919 // 'document' EOF + && lk != 12920 // 'document-node' EOF + && lk != 12921 // 'element' EOF + && lk != 12922 // 'else' EOF + && lk != 12923 // 'empty' EOF + && lk != 12924 // 'empty-sequence' EOF + && lk != 12925 // 'encoding' EOF + && lk != 12926 // 'end' EOF + && lk != 12928 // 'eq' EOF + && lk != 12929 // 'every' EOF + && lk != 12931 // 'except' EOF + && lk != 12932 // 'exit' EOF + && lk != 12933 // 'external' EOF + && lk != 12934 // 'first' EOF + && lk != 12935 // 'following' EOF + && lk != 12936 // 'following-sibling' EOF + && lk != 12937 // 'for' EOF + && lk != 12941 // 'ft-option' EOF + && lk != 12945 // 'function' EOF + && lk != 12946 // 'ge' EOF + && lk != 12948 // 'group' EOF + && lk != 12950 // 'gt' EOF + && lk != 12951 // 'idiv' EOF + && lk != 12952 // 'if' EOF + && lk != 12953 // 'import' EOF + && lk != 12954 // 'in' EOF + && lk != 12955 // 'index' EOF + && lk != 12959 // 'insert' EOF + && lk != 12960 // 'instance' EOF + && lk != 12961 // 'integrity' EOF + && lk != 12962 // 'intersect' EOF + && lk != 12963 // 'into' EOF + && lk != 12964 // 'is' EOF + && lk != 12965 // 'item' EOF + && lk != 12966 // 'json' EOF + && lk != 12967 // 'json-item' EOF + && lk != 12970 // 'last' EOF + && lk != 12971 // 'lax' EOF + && lk != 12972 // 'le' EOF + && lk != 12974 // 'let' EOF + && lk != 12976 // 'loop' EOF + && lk != 12978 // 'lt' EOF + && lk != 12980 // 'mod' EOF + && lk != 12981 // 'modify' EOF + && lk != 12982 // 'module' EOF + && lk != 12984 // 'namespace' EOF + && lk != 12985 // 'namespace-node' EOF + && lk != 12986 // 'ne' EOF + && lk != 12991 // 'node' EOF + && lk != 12992 // 'nodes' EOF + && lk != 12994 // 'object' EOF + && lk != 12998 // 'only' EOF + && lk != 12999 // 'option' EOF + && lk != 13000 // 'or' EOF + && lk != 13001 // 'order' EOF + && lk != 13002 // 'ordered' EOF + && lk != 13003 // 'ordering' EOF + && lk != 13006 // 'parent' EOF + && lk != 13012 // 'preceding' EOF + && lk != 13013 // 'preceding-sibling' EOF + && lk != 13016 // 'processing-instruction' EOF + && lk != 13018 // 'rename' EOF + && lk != 13019 // 'replace' EOF + && lk != 13020 // 'return' EOF + && lk != 13021 // 'returning' EOF + && lk != 13022 // 'revalidation' EOF + && lk != 13024 // 'satisfies' EOF + && lk != 13025 // 'schema' EOF + && lk != 13026 // 'schema-attribute' EOF + && lk != 13027 // 'schema-element' EOF + && lk != 13028 // 'score' EOF + && lk != 13029 // 'self' EOF + && lk != 13034 // 'sliding' EOF + && lk != 13035 // 'some' EOF + && lk != 13036 // 'stable' EOF + && lk != 13037 // 'start' EOF + && lk != 13040 // 'strict' EOF + && lk != 13042 // 'structured-item' EOF + && lk != 13043 // 'switch' EOF + && lk != 13044 // 'text' EOF + && lk != 13048 // 'to' EOF + && lk != 13049 // 'treat' EOF + && lk != 13050 // 'try' EOF + && lk != 13051 // 'tumbling' EOF + && lk != 13052 // 'type' EOF + && lk != 13053 // 'typeswitch' EOF + && lk != 13054 // 'union' EOF + && lk != 13056 // 'unordered' EOF + && lk != 13057 // 'updating' EOF + && lk != 13060 // 'validate' EOF + && lk != 13061 // 'value' EOF + && lk != 13062 // 'variable' EOF + && lk != 13063 // 'version' EOF + && lk != 13066 // 'where' EOF + && lk != 13067 // 'while' EOF + && lk != 13070 // 'with' EOF + && lk != 13074 // 'xquery' EOF + && lk != 16134 // 'variable' '$' + && lk != 20997 // Wildcard ',' + && lk != 20998 // EQName^Token ',' + && lk != 21000 // IntegerLiteral ',' + && lk != 21001 // DecimalLiteral ',' + && lk != 21002 // DoubleLiteral ',' + && lk != 21003 // StringLiteral ',' + && lk != 21036 // '.' ',' + && lk != 21037 // '..' ',' + && lk != 21038 // '/' ',' + && lk != 21062 // 'after' ',' + && lk != 21064 // 'allowing' ',' + && lk != 21065 // 'ancestor' ',' + && lk != 21066 // 'ancestor-or-self' ',' + && lk != 21067 // 'and' ',' + && lk != 21069 // 'append' ',' + && lk != 21070 // 'array' ',' + && lk != 21071 // 'as' ',' + && lk != 21072 // 'ascending' ',' + && lk != 21073 // 'at' ',' + && lk != 21074 // 'attribute' ',' + && lk != 21075 // 'base-uri' ',' + && lk != 21076 // 'before' ',' + && lk != 21077 // 'boundary-space' ',' + && lk != 21078 // 'break' ',' + && lk != 21080 // 'case' ',' + && lk != 21081 // 'cast' ',' + && lk != 21082 // 'castable' ',' + && lk != 21083 // 'catch' ',' + && lk != 21085 // 'child' ',' + && lk != 21086 // 'collation' ',' + && lk != 21088 // 'comment' ',' + && lk != 21089 // 'constraint' ',' + && lk != 21090 // 'construction' ',' + && lk != 21093 // 'context' ',' + && lk != 21094 // 'continue' ',' + && lk != 21095 // 'copy' ',' + && lk != 21096 // 'copy-namespaces' ',' + && lk != 21097 // 'count' ',' + && lk != 21098 // 'decimal-format' ',' + && lk != 21100 // 'declare' ',' + && lk != 21101 // 'default' ',' + && lk != 21102 // 'delete' ',' + && lk != 21103 // 'descendant' ',' + && lk != 21104 // 'descendant-or-self' ',' + && lk != 21105 // 'descending' ',' + && lk != 21110 // 'div' ',' + && lk != 21111 // 'document' ',' + && lk != 21112 // 'document-node' ',' + && lk != 21113 // 'element' ',' + && lk != 21114 // 'else' ',' + && lk != 21115 // 'empty' ',' + && lk != 21116 // 'empty-sequence' ',' + && lk != 21117 // 'encoding' ',' + && lk != 21118 // 'end' ',' + && lk != 21120 // 'eq' ',' + && lk != 21121 // 'every' ',' + && lk != 21123 // 'except' ',' + && lk != 21124 // 'exit' ',' + && lk != 21125 // 'external' ',' + && lk != 21126 // 'first' ',' + && lk != 21127 // 'following' ',' + && lk != 21128 // 'following-sibling' ',' + && lk != 21129 // 'for' ',' + && lk != 21133 // 'ft-option' ',' + && lk != 21137 // 'function' ',' + && lk != 21138 // 'ge' ',' + && lk != 21140 // 'group' ',' + && lk != 21142 // 'gt' ',' + && lk != 21143 // 'idiv' ',' + && lk != 21144 // 'if' ',' + && lk != 21145 // 'import' ',' + && lk != 21146 // 'in' ',' + && lk != 21147 // 'index' ',' + && lk != 21151 // 'insert' ',' + && lk != 21152 // 'instance' ',' + && lk != 21153 // 'integrity' ',' + && lk != 21154 // 'intersect' ',' + && lk != 21155 // 'into' ',' + && lk != 21156 // 'is' ',' + && lk != 21157 // 'item' ',' + && lk != 21158 // 'json' ',' + && lk != 21159 // 'json-item' ',' + && lk != 21162 // 'last' ',' + && lk != 21163 // 'lax' ',' + && lk != 21164 // 'le' ',' + && lk != 21166 // 'let' ',' + && lk != 21168 // 'loop' ',' + && lk != 21170 // 'lt' ',' + && lk != 21172 // 'mod' ',' + && lk != 21173 // 'modify' ',' + && lk != 21174 // 'module' ',' + && lk != 21176 // 'namespace' ',' + && lk != 21177 // 'namespace-node' ',' + && lk != 21178 // 'ne' ',' + && lk != 21183 // 'node' ',' + && lk != 21184 // 'nodes' ',' + && lk != 21186 // 'object' ',' + && lk != 21190 // 'only' ',' + && lk != 21191 // 'option' ',' + && lk != 21192 // 'or' ',' + && lk != 21193 // 'order' ',' + && lk != 21194 // 'ordered' ',' + && lk != 21195 // 'ordering' ',' + && lk != 21198 // 'parent' ',' + && lk != 21204 // 'preceding' ',' + && lk != 21205 // 'preceding-sibling' ',' + && lk != 21208 // 'processing-instruction' ',' + && lk != 21210 // 'rename' ',' + && lk != 21211 // 'replace' ',' + && lk != 21212 // 'return' ',' + && lk != 21213 // 'returning' ',' + && lk != 21214 // 'revalidation' ',' + && lk != 21216 // 'satisfies' ',' + && lk != 21217 // 'schema' ',' + && lk != 21218 // 'schema-attribute' ',' + && lk != 21219 // 'schema-element' ',' + && lk != 21220 // 'score' ',' + && lk != 21221 // 'self' ',' + && lk != 21226 // 'sliding' ',' + && lk != 21227 // 'some' ',' + && lk != 21228 // 'stable' ',' + && lk != 21229 // 'start' ',' + && lk != 21232 // 'strict' ',' + && lk != 21234 // 'structured-item' ',' + && lk != 21235 // 'switch' ',' + && lk != 21236 // 'text' ',' + && lk != 21240 // 'to' ',' + && lk != 21241 // 'treat' ',' + && lk != 21242 // 'try' ',' + && lk != 21243 // 'tumbling' ',' + && lk != 21244 // 'type' ',' + && lk != 21245 // 'typeswitch' ',' + && lk != 21246 // 'union' ',' + && lk != 21248 // 'unordered' ',' + && lk != 21249 // 'updating' ',' + && lk != 21252 // 'validate' ',' + && lk != 21253 // 'value' ',' + && lk != 21254 // 'variable' ',' + && lk != 21255 // 'version' ',' + && lk != 21258 // 'where' ',' + && lk != 21259 // 'while' ',' + && lk != 21262 // 'with' ',' + && lk != 21266 // 'xquery' ',' + && lk != 27141 // Wildcard ';' + && lk != 27142 // EQName^Token ';' + && lk != 27144 // IntegerLiteral ';' + && lk != 27145 // DecimalLiteral ';' + && lk != 27146 // DoubleLiteral ';' + && lk != 27147 // StringLiteral ';' + && lk != 27180 // '.' ';' + && lk != 27181 // '..' ';' + && lk != 27182 // '/' ';' + && lk != 27206 // 'after' ';' + && lk != 27208 // 'allowing' ';' + && lk != 27209 // 'ancestor' ';' + && lk != 27210 // 'ancestor-or-self' ';' + && lk != 27211 // 'and' ';' + && lk != 27213 // 'append' ';' + && lk != 27214 // 'array' ';' + && lk != 27215 // 'as' ';' + && lk != 27216 // 'ascending' ';' + && lk != 27217 // 'at' ';' + && lk != 27218 // 'attribute' ';' + && lk != 27219 // 'base-uri' ';' + && lk != 27220 // 'before' ';' + && lk != 27221 // 'boundary-space' ';' + && lk != 27222 // 'break' ';' + && lk != 27224 // 'case' ';' + && lk != 27225 // 'cast' ';' + && lk != 27226 // 'castable' ';' + && lk != 27227 // 'catch' ';' + && lk != 27229 // 'child' ';' + && lk != 27230 // 'collation' ';' + && lk != 27232 // 'comment' ';' + && lk != 27233 // 'constraint' ';' + && lk != 27234 // 'construction' ';' + && lk != 27237 // 'context' ';' + && lk != 27238 // 'continue' ';' + && lk != 27239 // 'copy' ';' + && lk != 27240 // 'copy-namespaces' ';' + && lk != 27241 // 'count' ';' + && lk != 27242 // 'decimal-format' ';' + && lk != 27244 // 'declare' ';' + && lk != 27245 // 'default' ';' + && lk != 27246 // 'delete' ';' + && lk != 27247 // 'descendant' ';' + && lk != 27248 // 'descendant-or-self' ';' + && lk != 27249 // 'descending' ';' + && lk != 27254 // 'div' ';' + && lk != 27255 // 'document' ';' + && lk != 27256 // 'document-node' ';' + && lk != 27257 // 'element' ';' + && lk != 27258 // 'else' ';' + && lk != 27259 // 'empty' ';' + && lk != 27260 // 'empty-sequence' ';' + && lk != 27261 // 'encoding' ';' + && lk != 27262 // 'end' ';' + && lk != 27264 // 'eq' ';' + && lk != 27265 // 'every' ';' + && lk != 27267 // 'except' ';' + && lk != 27268 // 'exit' ';' + && lk != 27269 // 'external' ';' + && lk != 27270 // 'first' ';' + && lk != 27271 // 'following' ';' + && lk != 27272 // 'following-sibling' ';' + && lk != 27273 // 'for' ';' + && lk != 27277 // 'ft-option' ';' + && lk != 27281 // 'function' ';' + && lk != 27282 // 'ge' ';' + && lk != 27284 // 'group' ';' + && lk != 27286 // 'gt' ';' + && lk != 27287 // 'idiv' ';' + && lk != 27288 // 'if' ';' + && lk != 27289 // 'import' ';' + && lk != 27290 // 'in' ';' + && lk != 27291 // 'index' ';' + && lk != 27295 // 'insert' ';' + && lk != 27296 // 'instance' ';' + && lk != 27297 // 'integrity' ';' + && lk != 27298 // 'intersect' ';' + && lk != 27299 // 'into' ';' + && lk != 27300 // 'is' ';' + && lk != 27301 // 'item' ';' + && lk != 27302 // 'json' ';' + && lk != 27303 // 'json-item' ';' + && lk != 27306 // 'last' ';' + && lk != 27307 // 'lax' ';' + && lk != 27308 // 'le' ';' + && lk != 27310 // 'let' ';' + && lk != 27312 // 'loop' ';' + && lk != 27314 // 'lt' ';' + && lk != 27316 // 'mod' ';' + && lk != 27317 // 'modify' ';' + && lk != 27318 // 'module' ';' + && lk != 27320 // 'namespace' ';' + && lk != 27321 // 'namespace-node' ';' + && lk != 27322 // 'ne' ';' + && lk != 27327 // 'node' ';' + && lk != 27328 // 'nodes' ';' + && lk != 27330 // 'object' ';' + && lk != 27334 // 'only' ';' + && lk != 27335 // 'option' ';' + && lk != 27336 // 'or' ';' + && lk != 27337 // 'order' ';' + && lk != 27338 // 'ordered' ';' + && lk != 27339 // 'ordering' ';' + && lk != 27342 // 'parent' ';' + && lk != 27348 // 'preceding' ';' + && lk != 27349 // 'preceding-sibling' ';' + && lk != 27352 // 'processing-instruction' ';' + && lk != 27354 // 'rename' ';' + && lk != 27355 // 'replace' ';' + && lk != 27356 // 'return' ';' + && lk != 27357 // 'returning' ';' + && lk != 27358 // 'revalidation' ';' + && lk != 27360 // 'satisfies' ';' + && lk != 27361 // 'schema' ';' + && lk != 27362 // 'schema-attribute' ';' + && lk != 27363 // 'schema-element' ';' + && lk != 27364 // 'score' ';' + && lk != 27365 // 'self' ';' + && lk != 27370 // 'sliding' ';' + && lk != 27371 // 'some' ';' + && lk != 27372 // 'stable' ';' + && lk != 27373 // 'start' ';' + && lk != 27376 // 'strict' ';' + && lk != 27378 // 'structured-item' ';' + && lk != 27379 // 'switch' ';' + && lk != 27380 // 'text' ';' + && lk != 27384 // 'to' ';' + && lk != 27385 // 'treat' ';' + && lk != 27386 // 'try' ';' + && lk != 27387 // 'tumbling' ';' + && lk != 27388 // 'type' ';' + && lk != 27389 // 'typeswitch' ';' + && lk != 27390 // 'union' ';' + && lk != 27392 // 'unordered' ';' + && lk != 27393 // 'updating' ';' + && lk != 27396 // 'validate' ';' + && lk != 27397 // 'value' ';' + && lk != 27398 // 'variable' ';' + && lk != 27399 // 'version' ';' + && lk != 27402 // 'where' ';' + && lk != 27403 // 'while' ';' + && lk != 27406 // 'with' ';' + && lk != 27410 // 'xquery' ';' + && lk != 90198 // 'break' 'loop' + && lk != 90214 // 'continue' 'loop' + && lk != 113284 // 'exit' 'returning' + && lk != 144389 // Wildcard '}' + && lk != 144390 // EQName^Token '}' + && lk != 144392 // IntegerLiteral '}' + && lk != 144393 // DecimalLiteral '}' + && lk != 144394 // DoubleLiteral '}' + && lk != 144395 // StringLiteral '}' + && lk != 144428 // '.' '}' + && lk != 144429 // '..' '}' + && lk != 144430 // '/' '}' + && lk != 144454 // 'after' '}' + && lk != 144456 // 'allowing' '}' + && lk != 144457 // 'ancestor' '}' + && lk != 144458 // 'ancestor-or-self' '}' + && lk != 144459 // 'and' '}' + && lk != 144461 // 'append' '}' + && lk != 144462 // 'array' '}' + && lk != 144463 // 'as' '}' + && lk != 144464 // 'ascending' '}' + && lk != 144465 // 'at' '}' + && lk != 144466 // 'attribute' '}' + && lk != 144467 // 'base-uri' '}' + && lk != 144468 // 'before' '}' + && lk != 144469 // 'boundary-space' '}' + && lk != 144470 // 'break' '}' + && lk != 144472 // 'case' '}' + && lk != 144473 // 'cast' '}' + && lk != 144474 // 'castable' '}' + && lk != 144475 // 'catch' '}' + && lk != 144477 // 'child' '}' + && lk != 144478 // 'collation' '}' + && lk != 144480 // 'comment' '}' + && lk != 144481 // 'constraint' '}' + && lk != 144482 // 'construction' '}' + && lk != 144485 // 'context' '}' + && lk != 144486 // 'continue' '}' + && lk != 144487 // 'copy' '}' + && lk != 144488 // 'copy-namespaces' '}' + && lk != 144489 // 'count' '}' + && lk != 144490 // 'decimal-format' '}' + && lk != 144492 // 'declare' '}' + && lk != 144493 // 'default' '}' + && lk != 144494 // 'delete' '}' + && lk != 144495 // 'descendant' '}' + && lk != 144496 // 'descendant-or-self' '}' + && lk != 144497 // 'descending' '}' + && lk != 144502 // 'div' '}' + && lk != 144503 // 'document' '}' + && lk != 144504 // 'document-node' '}' + && lk != 144505 // 'element' '}' + && lk != 144506 // 'else' '}' + && lk != 144507 // 'empty' '}' + && lk != 144508 // 'empty-sequence' '}' + && lk != 144509 // 'encoding' '}' + && lk != 144510 // 'end' '}' + && lk != 144512 // 'eq' '}' + && lk != 144513 // 'every' '}' + && lk != 144515 // 'except' '}' + && lk != 144516 // 'exit' '}' + && lk != 144517 // 'external' '}' + && lk != 144518 // 'first' '}' + && lk != 144519 // 'following' '}' + && lk != 144520 // 'following-sibling' '}' + && lk != 144521 // 'for' '}' + && lk != 144525 // 'ft-option' '}' + && lk != 144529 // 'function' '}' + && lk != 144530 // 'ge' '}' + && lk != 144532 // 'group' '}' + && lk != 144534 // 'gt' '}' + && lk != 144535 // 'idiv' '}' + && lk != 144536 // 'if' '}' + && lk != 144537 // 'import' '}' + && lk != 144538 // 'in' '}' + && lk != 144539 // 'index' '}' + && lk != 144543 // 'insert' '}' + && lk != 144544 // 'instance' '}' + && lk != 144545 // 'integrity' '}' + && lk != 144546 // 'intersect' '}' + && lk != 144547 // 'into' '}' + && lk != 144548 // 'is' '}' + && lk != 144549 // 'item' '}' + && lk != 144550 // 'json' '}' + && lk != 144551 // 'json-item' '}' + && lk != 144554 // 'last' '}' + && lk != 144555 // 'lax' '}' + && lk != 144556 // 'le' '}' + && lk != 144558 // 'let' '}' + && lk != 144560 // 'loop' '}' + && lk != 144562 // 'lt' '}' + && lk != 144564 // 'mod' '}' + && lk != 144565 // 'modify' '}' + && lk != 144566 // 'module' '}' + && lk != 144568 // 'namespace' '}' + && lk != 144569 // 'namespace-node' '}' + && lk != 144570 // 'ne' '}' + && lk != 144575 // 'node' '}' + && lk != 144576 // 'nodes' '}' + && lk != 144578 // 'object' '}' + && lk != 144582 // 'only' '}' + && lk != 144583 // 'option' '}' + && lk != 144584 // 'or' '}' + && lk != 144585 // 'order' '}' + && lk != 144586 // 'ordered' '}' + && lk != 144587 // 'ordering' '}' + && lk != 144590 // 'parent' '}' + && lk != 144596 // 'preceding' '}' + && lk != 144597 // 'preceding-sibling' '}' + && lk != 144600 // 'processing-instruction' '}' + && lk != 144602 // 'rename' '}' + && lk != 144603 // 'replace' '}' + && lk != 144604 // 'return' '}' + && lk != 144605 // 'returning' '}' + && lk != 144606 // 'revalidation' '}' + && lk != 144608 // 'satisfies' '}' + && lk != 144609 // 'schema' '}' + && lk != 144610 // 'schema-attribute' '}' + && lk != 144611 // 'schema-element' '}' + && lk != 144612 // 'score' '}' + && lk != 144613 // 'self' '}' + && lk != 144618 // 'sliding' '}' + && lk != 144619 // 'some' '}' + && lk != 144620 // 'stable' '}' + && lk != 144621 // 'start' '}' + && lk != 144624 // 'strict' '}' + && lk != 144626 // 'structured-item' '}' + && lk != 144627 // 'switch' '}' + && lk != 144628 // 'text' '}' + && lk != 144632 // 'to' '}' + && lk != 144633 // 'treat' '}' + && lk != 144634 // 'try' '}' + && lk != 144635 // 'tumbling' '}' + && lk != 144636 // 'type' '}' + && lk != 144637 // 'typeswitch' '}' + && lk != 144638 // 'union' '}' + && lk != 144640 // 'unordered' '}' + && lk != 144641 // 'updating' '}' + && lk != 144644 // 'validate' '}' + && lk != 144645 // 'value' '}' + && lk != 144646 // 'variable' '}' + && lk != 144647 // 'version' '}' + && lk != 144650 // 'where' '}' + && lk != 144651 // 'while' '}' + && lk != 144654 // 'with' '}' + && lk != 144658) // 'xquery' '}' + { + lk = memoized(6, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_Statement(); + memoize(6, e0A, -1); + continue; + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(6, e0A, -2); + break; + } + } + } + if (lk != -1 + && lk != 53 // ';' + && lk != 16134 // 'variable' '$' + && lk != 27141 // Wildcard ';' + && lk != 27142 // EQName^Token ';' + && lk != 27144 // IntegerLiteral ';' + && lk != 27145 // DecimalLiteral ';' + && lk != 27146 // DoubleLiteral ';' + && lk != 27147 // StringLiteral ';' + && lk != 27180 // '.' ';' + && lk != 27181 // '..' ';' + && lk != 27182 // '/' ';' + && lk != 27206 // 'after' ';' + && lk != 27208 // 'allowing' ';' + && lk != 27209 // 'ancestor' ';' + && lk != 27210 // 'ancestor-or-self' ';' + && lk != 27211 // 'and' ';' + && lk != 27213 // 'append' ';' + && lk != 27214 // 'array' ';' + && lk != 27215 // 'as' ';' + && lk != 27216 // 'ascending' ';' + && lk != 27217 // 'at' ';' + && lk != 27218 // 'attribute' ';' + && lk != 27219 // 'base-uri' ';' + && lk != 27220 // 'before' ';' + && lk != 27221 // 'boundary-space' ';' + && lk != 27222 // 'break' ';' + && lk != 27224 // 'case' ';' + && lk != 27225 // 'cast' ';' + && lk != 27226 // 'castable' ';' + && lk != 27227 // 'catch' ';' + && lk != 27229 // 'child' ';' + && lk != 27230 // 'collation' ';' + && lk != 27232 // 'comment' ';' + && lk != 27233 // 'constraint' ';' + && lk != 27234 // 'construction' ';' + && lk != 27237 // 'context' ';' + && lk != 27238 // 'continue' ';' + && lk != 27239 // 'copy' ';' + && lk != 27240 // 'copy-namespaces' ';' + && lk != 27241 // 'count' ';' + && lk != 27242 // 'decimal-format' ';' + && lk != 27244 // 'declare' ';' + && lk != 27245 // 'default' ';' + && lk != 27246 // 'delete' ';' + && lk != 27247 // 'descendant' ';' + && lk != 27248 // 'descendant-or-self' ';' + && lk != 27249 // 'descending' ';' + && lk != 27254 // 'div' ';' + && lk != 27255 // 'document' ';' + && lk != 27256 // 'document-node' ';' + && lk != 27257 // 'element' ';' + && lk != 27258 // 'else' ';' + && lk != 27259 // 'empty' ';' + && lk != 27260 // 'empty-sequence' ';' + && lk != 27261 // 'encoding' ';' + && lk != 27262 // 'end' ';' + && lk != 27264 // 'eq' ';' + && lk != 27265 // 'every' ';' + && lk != 27267 // 'except' ';' + && lk != 27268 // 'exit' ';' + && lk != 27269 // 'external' ';' + && lk != 27270 // 'first' ';' + && lk != 27271 // 'following' ';' + && lk != 27272 // 'following-sibling' ';' + && lk != 27273 // 'for' ';' + && lk != 27277 // 'ft-option' ';' + && lk != 27281 // 'function' ';' + && lk != 27282 // 'ge' ';' + && lk != 27284 // 'group' ';' + && lk != 27286 // 'gt' ';' + && lk != 27287 // 'idiv' ';' + && lk != 27288 // 'if' ';' + && lk != 27289 // 'import' ';' + && lk != 27290 // 'in' ';' + && lk != 27291 // 'index' ';' + && lk != 27295 // 'insert' ';' + && lk != 27296 // 'instance' ';' + && lk != 27297 // 'integrity' ';' + && lk != 27298 // 'intersect' ';' + && lk != 27299 // 'into' ';' + && lk != 27300 // 'is' ';' + && lk != 27301 // 'item' ';' + && lk != 27302 // 'json' ';' + && lk != 27303 // 'json-item' ';' + && lk != 27306 // 'last' ';' + && lk != 27307 // 'lax' ';' + && lk != 27308 // 'le' ';' + && lk != 27310 // 'let' ';' + && lk != 27312 // 'loop' ';' + && lk != 27314 // 'lt' ';' + && lk != 27316 // 'mod' ';' + && lk != 27317 // 'modify' ';' + && lk != 27318 // 'module' ';' + && lk != 27320 // 'namespace' ';' + && lk != 27321 // 'namespace-node' ';' + && lk != 27322 // 'ne' ';' + && lk != 27327 // 'node' ';' + && lk != 27328 // 'nodes' ';' + && lk != 27330 // 'object' ';' + && lk != 27334 // 'only' ';' + && lk != 27335 // 'option' ';' + && lk != 27336 // 'or' ';' + && lk != 27337 // 'order' ';' + && lk != 27338 // 'ordered' ';' + && lk != 27339 // 'ordering' ';' + && lk != 27342 // 'parent' ';' + && lk != 27348 // 'preceding' ';' + && lk != 27349 // 'preceding-sibling' ';' + && lk != 27352 // 'processing-instruction' ';' + && lk != 27354 // 'rename' ';' + && lk != 27355 // 'replace' ';' + && lk != 27356 // 'return' ';' + && lk != 27357 // 'returning' ';' + && lk != 27358 // 'revalidation' ';' + && lk != 27360 // 'satisfies' ';' + && lk != 27361 // 'schema' ';' + && lk != 27362 // 'schema-attribute' ';' + && lk != 27363 // 'schema-element' ';' + && lk != 27364 // 'score' ';' + && lk != 27365 // 'self' ';' + && lk != 27370 // 'sliding' ';' + && lk != 27371 // 'some' ';' + && lk != 27372 // 'stable' ';' + && lk != 27373 // 'start' ';' + && lk != 27376 // 'strict' ';' + && lk != 27378 // 'structured-item' ';' + && lk != 27379 // 'switch' ';' + && lk != 27380 // 'text' ';' + && lk != 27384 // 'to' ';' + && lk != 27385 // 'treat' ';' + && lk != 27386 // 'try' ';' + && lk != 27387 // 'tumbling' ';' + && lk != 27388 // 'type' ';' + && lk != 27389 // 'typeswitch' ';' + && lk != 27390 // 'union' ';' + && lk != 27392 // 'unordered' ';' + && lk != 27393 // 'updating' ';' + && lk != 27396 // 'validate' ';' + && lk != 27397 // 'value' ';' + && lk != 27398 // 'variable' ';' + && lk != 27399 // 'version' ';' + && lk != 27402 // 'where' ';' + && lk != 27403 // 'while' ';' + && lk != 27406 // 'with' ';' + && lk != 27410 // 'xquery' ';' + && lk != 90198 // 'break' 'loop' + && lk != 90214 // 'continue' 'loop' + && lk != 113284) // 'exit' 'returning' + { + break; + } + try_Statement(); + } + } + + function parse_StatementsAndExpr() + { + eventHandler.startNonterminal("StatementsAndExpr", e0); + parse_Statements(); + whitespace(); + parse_Expr(); + eventHandler.endNonterminal("StatementsAndExpr", e0); + } + + function try_StatementsAndExpr() + { + try_Statements(); + try_Expr(); + } + + function parse_StatementsAndOptionalExpr() + { + eventHandler.startNonterminal("StatementsAndOptionalExpr", e0); + parse_Statements(); + if (l1 != 25 // EOF + && l1 != 282) // '}' + { + whitespace(); + parse_Expr(); + } + eventHandler.endNonterminal("StatementsAndOptionalExpr", e0); + } + + function try_StatementsAndOptionalExpr() + { + try_Statements(); + if (l1 != 25 // EOF + && l1 != 282) // '}' + { + try_Expr(); + } + } + + function parse_Statement() + { + eventHandler.startNonterminal("Statement", e0); + switch (l1) + { + case 132: // 'exit' + lookahead2W(188); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'returning' | 'to' | + // 'treat' | 'union' | '|' | '||' + break; + case 137: // 'for' + lookahead2W(195); // S^WS | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'sliding' | 'to' | + // 'treat' | 'tumbling' | 'union' | '|' | '||' + break; + case 174: // 'let' + lookahead2W(192); // S^WS | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'score' | 'to' | + // 'treat' | 'union' | '|' | '||' + break; + case 250: // 'try' + lookahead2W(189); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '{' | '|' | '||' + break; + case 262: // 'variable' + lookahead2W(186); // S^WS | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' + break; + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + case 31: // '$' + case 32: // '%' + lookahead2W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + case 86: // 'break' + case 102: // 'continue' + lookahead2W(187); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'loop' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' + break; + case 152: // 'if' + case 243: // 'switch' + case 253: // 'typeswitch' + case 267: // 'while' + lookahead2W(184); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' + break; + default: + lk = l1; + } + if (lk == 2836 // '{' Wildcard + || lk == 3103 // '$' EQName^Token + || lk == 3104 // '%' EQName^Token + || lk == 3348 // '{' EQName^Token + || lk == 4372 // '{' IntegerLiteral + || lk == 4884 // '{' DecimalLiteral + || lk == 5396 // '{' DoubleLiteral + || lk == 5908 // '{' StringLiteral + || lk == 16148 // '{' '$' + || lk == 16660 // '{' '%' + || lk == 17675 // 'while' '(' + || lk == 17684 // '{' '(' + || lk == 18196 // '{' '(#' + || lk == 20756 // '{' '+' + || lk == 21780 // '{' '-' + || lk == 22804 // '{' '.' + || lk == 23316 // '{' '..' + || lk == 23828 // '{' '/' + || lk == 24340 // '{' '//' + || lk == 27412 // '{' ';' + || lk == 27924 // '{' '<' + || lk == 28436 // '{' '<!--' + || lk == 30484 // '{' '<?' + || lk == 34068 // '{' '@' + || lk == 35092 // '{' '[' + || lk == 35871 // '$' 'after' + || lk == 35872 // '%' 'after' + || lk == 36116 // '{' 'after' + || lk == 36895 // '$' 'allowing' + || lk == 36896 // '%' 'allowing' + || lk == 37140 // '{' 'allowing' + || lk == 37407 // '$' 'ancestor' + || lk == 37408 // '%' 'ancestor' + || lk == 37652 // '{' 'ancestor' + || lk == 37919 // '$' 'ancestor-or-self' + || lk == 37920 // '%' 'ancestor-or-self' + || lk == 38164 // '{' 'ancestor-or-self' + || lk == 38431 // '$' 'and' + || lk == 38432 // '%' 'and' + || lk == 38676 // '{' 'and' + || lk == 39455 // '$' 'append' + || lk == 39456 // '%' 'append' + || lk == 39700 // '{' 'append' + || lk == 39967 // '$' 'array' + || lk == 39968 // '%' 'array' + || lk == 40212 // '{' 'array' + || lk == 40479 // '$' 'as' + || lk == 40480 // '%' 'as' + || lk == 40724 // '{' 'as' + || lk == 40991 // '$' 'ascending' + || lk == 40992 // '%' 'ascending' + || lk == 41236 // '{' 'ascending' + || lk == 41503 // '$' 'at' + || lk == 41504 // '%' 'at' + || lk == 41748 // '{' 'at' + || lk == 42015 // '$' 'attribute' + || lk == 42016 // '%' 'attribute' + || lk == 42260 // '{' 'attribute' + || lk == 42527 // '$' 'base-uri' + || lk == 42528 // '%' 'base-uri' + || lk == 42772 // '{' 'base-uri' + || lk == 43039 // '$' 'before' + || lk == 43040 // '%' 'before' + || lk == 43284 // '{' 'before' + || lk == 43551 // '$' 'boundary-space' + || lk == 43552 // '%' 'boundary-space' + || lk == 43796 // '{' 'boundary-space' + || lk == 44063 // '$' 'break' + || lk == 44064 // '%' 'break' + || lk == 44308 // '{' 'break' + || lk == 45087 // '$' 'case' + || lk == 45088 // '%' 'case' + || lk == 45332 // '{' 'case' + || lk == 45599 // '$' 'cast' + || lk == 45600 // '%' 'cast' + || lk == 45844 // '{' 'cast' + || lk == 46111 // '$' 'castable' + || lk == 46112 // '%' 'castable' + || lk == 46356 // '{' 'castable' + || lk == 46623 // '$' 'catch' + || lk == 46624 // '%' 'catch' + || lk == 46868 // '{' 'catch' + || lk == 47647 // '$' 'child' + || lk == 47648 // '%' 'child' + || lk == 47892 // '{' 'child' + || lk == 48159 // '$' 'collation' + || lk == 48160 // '%' 'collation' + || lk == 48404 // '{' 'collation' + || lk == 49183 // '$' 'comment' + || lk == 49184 // '%' 'comment' + || lk == 49428 // '{' 'comment' + || lk == 49695 // '$' 'constraint' + || lk == 49696 // '%' 'constraint' + || lk == 49940 // '{' 'constraint' + || lk == 50207 // '$' 'construction' + || lk == 50208 // '%' 'construction' + || lk == 50452 // '{' 'construction' + || lk == 51743 // '$' 'context' + || lk == 51744 // '%' 'context' + || lk == 51988 // '{' 'context' + || lk == 52255 // '$' 'continue' + || lk == 52256 // '%' 'continue' + || lk == 52500 // '{' 'continue' + || lk == 52767 // '$' 'copy' + || lk == 52768 // '%' 'copy' + || lk == 53012 // '{' 'copy' + || lk == 53279 // '$' 'copy-namespaces' + || lk == 53280 // '%' 'copy-namespaces' + || lk == 53524 // '{' 'copy-namespaces' + || lk == 53791 // '$' 'count' + || lk == 53792 // '%' 'count' + || lk == 54036 // '{' 'count' + || lk == 54303 // '$' 'decimal-format' + || lk == 54304 // '%' 'decimal-format' + || lk == 54548 // '{' 'decimal-format' + || lk == 55327 // '$' 'declare' + || lk == 55328 // '%' 'declare' + || lk == 55572 // '{' 'declare' + || lk == 55839 // '$' 'default' + || lk == 55840 // '%' 'default' + || lk == 56084 // '{' 'default' + || lk == 56351 // '$' 'delete' + || lk == 56352 // '%' 'delete' + || lk == 56596 // '{' 'delete' + || lk == 56863 // '$' 'descendant' + || lk == 56864 // '%' 'descendant' + || lk == 57108 // '{' 'descendant' + || lk == 57375 // '$' 'descendant-or-self' + || lk == 57376 // '%' 'descendant-or-self' + || lk == 57620 // '{' 'descendant-or-self' + || lk == 57887 // '$' 'descending' + || lk == 57888 // '%' 'descending' + || lk == 58132 // '{' 'descending' + || lk == 60447 // '$' 'div' + || lk == 60448 // '%' 'div' + || lk == 60692 // '{' 'div' + || lk == 60959 // '$' 'document' + || lk == 60960 // '%' 'document' + || lk == 61204 // '{' 'document' + || lk == 61471 // '$' 'document-node' + || lk == 61472 // '%' 'document-node' + || lk == 61716 // '{' 'document-node' + || lk == 61983 // '$' 'element' + || lk == 61984 // '%' 'element' + || lk == 62228 // '{' 'element' + || lk == 62495 // '$' 'else' + || lk == 62496 // '%' 'else' + || lk == 62740 // '{' 'else' + || lk == 63007 // '$' 'empty' + || lk == 63008 // '%' 'empty' + || lk == 63252 // '{' 'empty' + || lk == 63519 // '$' 'empty-sequence' + || lk == 63520 // '%' 'empty-sequence' + || lk == 63764 // '{' 'empty-sequence' + || lk == 64031 // '$' 'encoding' + || lk == 64032 // '%' 'encoding' + || lk == 64276 // '{' 'encoding' + || lk == 64543 // '$' 'end' + || lk == 64544 // '%' 'end' + || lk == 64788 // '{' 'end' + || lk == 65567 // '$' 'eq' + || lk == 65568 // '%' 'eq' + || lk == 65812 // '{' 'eq' + || lk == 66079 // '$' 'every' + || lk == 66080 // '%' 'every' + || lk == 66324 // '{' 'every' + || lk == 67103 // '$' 'except' + || lk == 67104 // '%' 'except' + || lk == 67348 // '{' 'except' + || lk == 67615 // '$' 'exit' + || lk == 67616 // '%' 'exit' + || lk == 67860 // '{' 'exit' + || lk == 68127 // '$' 'external' + || lk == 68128 // '%' 'external' + || lk == 68372 // '{' 'external' + || lk == 68639 // '$' 'first' + || lk == 68640 // '%' 'first' + || lk == 68884 // '{' 'first' + || lk == 69151 // '$' 'following' + || lk == 69152 // '%' 'following' + || lk == 69396 // '{' 'following' + || lk == 69663 // '$' 'following-sibling' + || lk == 69664 // '%' 'following-sibling' + || lk == 69908 // '{' 'following-sibling' + || lk == 70175 // '$' 'for' + || lk == 70176 // '%' 'for' + || lk == 70420 // '{' 'for' + || lk == 72223 // '$' 'ft-option' + || lk == 72224 // '%' 'ft-option' + || lk == 72468 // '{' 'ft-option' + || lk == 74271 // '$' 'function' + || lk == 74272 // '%' 'function' + || lk == 74516 // '{' 'function' + || lk == 74783 // '$' 'ge' + || lk == 74784 // '%' 'ge' + || lk == 75028 // '{' 'ge' + || lk == 75807 // '$' 'group' + || lk == 75808 // '%' 'group' + || lk == 76052 // '{' 'group' + || lk == 76831 // '$' 'gt' + || lk == 76832 // '%' 'gt' + || lk == 77076 // '{' 'gt' + || lk == 77343 // '$' 'idiv' + || lk == 77344 // '%' 'idiv' + || lk == 77588 // '{' 'idiv' + || lk == 77855 // '$' 'if' + || lk == 77856 // '%' 'if' + || lk == 78100 // '{' 'if' + || lk == 78367 // '$' 'import' + || lk == 78368 // '%' 'import' + || lk == 78612 // '{' 'import' + || lk == 78879 // '$' 'in' + || lk == 78880 // '%' 'in' + || lk == 79124 // '{' 'in' + || lk == 79391 // '$' 'index' + || lk == 79392 // '%' 'index' + || lk == 79636 // '{' 'index' + || lk == 81439 // '$' 'insert' + || lk == 81440 // '%' 'insert' + || lk == 81684 // '{' 'insert' + || lk == 81951 // '$' 'instance' + || lk == 81952 // '%' 'instance' + || lk == 82196 // '{' 'instance' + || lk == 82463 // '$' 'integrity' + || lk == 82464 // '%' 'integrity' + || lk == 82708 // '{' 'integrity' + || lk == 82975 // '$' 'intersect' + || lk == 82976 // '%' 'intersect' + || lk == 83220 // '{' 'intersect' + || lk == 83487 // '$' 'into' + || lk == 83488 // '%' 'into' + || lk == 83732 // '{' 'into' + || lk == 83999 // '$' 'is' + || lk == 84000 // '%' 'is' + || lk == 84244 // '{' 'is' + || lk == 84511 // '$' 'item' + || lk == 84512 // '%' 'item' + || lk == 84756 // '{' 'item' + || lk == 85023 // '$' 'json' + || lk == 85024 // '%' 'json' + || lk == 85268 // '{' 'json' + || lk == 85535 // '$' 'json-item' + || lk == 85536 // '%' 'json-item' + || lk == 85780 // '{' 'json-item' + || lk == 87071 // '$' 'last' + || lk == 87072 // '%' 'last' + || lk == 87316 // '{' 'last' + || lk == 87583 // '$' 'lax' + || lk == 87584 // '%' 'lax' + || lk == 87828 // '{' 'lax' + || lk == 88095 // '$' 'le' + || lk == 88096 // '%' 'le' + || lk == 88340 // '{' 'le' + || lk == 89119 // '$' 'let' + || lk == 89120 // '%' 'let' + || lk == 89364 // '{' 'let' + || lk == 90143 // '$' 'loop' + || lk == 90144 // '%' 'loop' + || lk == 90388 // '{' 'loop' + || lk == 91167 // '$' 'lt' + || lk == 91168 // '%' 'lt' + || lk == 91412 // '{' 'lt' + || lk == 92191 // '$' 'mod' + || lk == 92192 // '%' 'mod' + || lk == 92436 // '{' 'mod' + || lk == 92703 // '$' 'modify' + || lk == 92704 // '%' 'modify' + || lk == 92948 // '{' 'modify' + || lk == 93215 // '$' 'module' + || lk == 93216 // '%' 'module' + || lk == 93460 // '{' 'module' + || lk == 94239 // '$' 'namespace' + || lk == 94240 // '%' 'namespace' + || lk == 94484 // '{' 'namespace' + || lk == 94751 // '$' 'namespace-node' + || lk == 94752 // '%' 'namespace-node' + || lk == 94996 // '{' 'namespace-node' + || lk == 95263 // '$' 'ne' + || lk == 95264 // '%' 'ne' + || lk == 95508 // '{' 'ne' + || lk == 97823 // '$' 'node' + || lk == 97824 // '%' 'node' + || lk == 98068 // '{' 'node' + || lk == 98335 // '$' 'nodes' + || lk == 98336 // '%' 'nodes' + || lk == 98580 // '{' 'nodes' + || lk == 99359 // '$' 'object' + || lk == 99360 // '%' 'object' + || lk == 99604 // '{' 'object' + || lk == 101407 // '$' 'only' + || lk == 101408 // '%' 'only' + || lk == 101652 // '{' 'only' + || lk == 101919 // '$' 'option' + || lk == 101920 // '%' 'option' + || lk == 102164 // '{' 'option' + || lk == 102431 // '$' 'or' + || lk == 102432 // '%' 'or' + || lk == 102676 // '{' 'or' + || lk == 102943 // '$' 'order' + || lk == 102944 // '%' 'order' + || lk == 103188 // '{' 'order' + || lk == 103455 // '$' 'ordered' + || lk == 103456 // '%' 'ordered' + || lk == 103700 // '{' 'ordered' + || lk == 103967 // '$' 'ordering' + || lk == 103968 // '%' 'ordering' + || lk == 104212 // '{' 'ordering' + || lk == 105503 // '$' 'parent' + || lk == 105504 // '%' 'parent' + || lk == 105748 // '{' 'parent' + || lk == 108575 // '$' 'preceding' + || lk == 108576 // '%' 'preceding' + || lk == 108820 // '{' 'preceding' + || lk == 109087 // '$' 'preceding-sibling' + || lk == 109088 // '%' 'preceding-sibling' + || lk == 109332 // '{' 'preceding-sibling' + || lk == 110623 // '$' 'processing-instruction' + || lk == 110624 // '%' 'processing-instruction' + || lk == 110868 // '{' 'processing-instruction' + || lk == 111647 // '$' 'rename' + || lk == 111648 // '%' 'rename' + || lk == 111892 // '{' 'rename' + || lk == 112159 // '$' 'replace' + || lk == 112160 // '%' 'replace' + || lk == 112404 // '{' 'replace' + || lk == 112671 // '$' 'return' + || lk == 112672 // '%' 'return' + || lk == 112916 // '{' 'return' + || lk == 113183 // '$' 'returning' + || lk == 113184 // '%' 'returning' + || lk == 113428 // '{' 'returning' + || lk == 113695 // '$' 'revalidation' + || lk == 113696 // '%' 'revalidation' + || lk == 113940 // '{' 'revalidation' + || lk == 114719 // '$' 'satisfies' + || lk == 114720 // '%' 'satisfies' + || lk == 114964 // '{' 'satisfies' + || lk == 115231 // '$' 'schema' + || lk == 115232 // '%' 'schema' + || lk == 115476 // '{' 'schema' + || lk == 115743 // '$' 'schema-attribute' + || lk == 115744 // '%' 'schema-attribute' + || lk == 115988 // '{' 'schema-attribute' + || lk == 116255 // '$' 'schema-element' + || lk == 116256 // '%' 'schema-element' + || lk == 116500 // '{' 'schema-element' + || lk == 116767 // '$' 'score' + || lk == 116768 // '%' 'score' + || lk == 117012 // '{' 'score' + || lk == 117279 // '$' 'self' + || lk == 117280 // '%' 'self' + || lk == 117524 // '{' 'self' + || lk == 119839 // '$' 'sliding' + || lk == 119840 // '%' 'sliding' + || lk == 120084 // '{' 'sliding' + || lk == 120351 // '$' 'some' + || lk == 120352 // '%' 'some' + || lk == 120596 // '{' 'some' + || lk == 120863 // '$' 'stable' + || lk == 120864 // '%' 'stable' + || lk == 121108 // '{' 'stable' + || lk == 121375 // '$' 'start' + || lk == 121376 // '%' 'start' + || lk == 121620 // '{' 'start' + || lk == 122911 // '$' 'strict' + || lk == 122912 // '%' 'strict' + || lk == 123156 // '{' 'strict' + || lk == 123935 // '$' 'structured-item' + || lk == 123936 // '%' 'structured-item' + || lk == 124180 // '{' 'structured-item' + || lk == 124447 // '$' 'switch' + || lk == 124448 // '%' 'switch' + || lk == 124692 // '{' 'switch' + || lk == 124959 // '$' 'text' + || lk == 124960 // '%' 'text' + || lk == 125204 // '{' 'text' + || lk == 127007 // '$' 'to' + || lk == 127008 // '%' 'to' + || lk == 127252 // '{' 'to' + || lk == 127519 // '$' 'treat' + || lk == 127520 // '%' 'treat' + || lk == 127764 // '{' 'treat' + || lk == 128031 // '$' 'try' + || lk == 128032 // '%' 'try' + || lk == 128276 // '{' 'try' + || lk == 128543 // '$' 'tumbling' + || lk == 128544 // '%' 'tumbling' + || lk == 128788 // '{' 'tumbling' + || lk == 129055 // '$' 'type' + || lk == 129056 // '%' 'type' + || lk == 129300 // '{' 'type' + || lk == 129567 // '$' 'typeswitch' + || lk == 129568 // '%' 'typeswitch' + || lk == 129812 // '{' 'typeswitch' + || lk == 130079 // '$' 'union' + || lk == 130080 // '%' 'union' + || lk == 130324 // '{' 'union' + || lk == 131103 // '$' 'unordered' + || lk == 131104 // '%' 'unordered' + || lk == 131348 // '{' 'unordered' + || lk == 131615 // '$' 'updating' + || lk == 131616 // '%' 'updating' + || lk == 131860 // '{' 'updating' + || lk == 133151 // '$' 'validate' + || lk == 133152 // '%' 'validate' + || lk == 133396 // '{' 'validate' + || lk == 133663 // '$' 'value' + || lk == 133664 // '%' 'value' + || lk == 133908 // '{' 'value' + || lk == 134175 // '$' 'variable' + || lk == 134176 // '%' 'variable' + || lk == 134420 // '{' 'variable' + || lk == 134687 // '$' 'version' + || lk == 134688 // '%' 'version' + || lk == 134932 // '{' 'version' + || lk == 136223 // '$' 'where' + || lk == 136224 // '%' 'where' + || lk == 136468 // '{' 'where' + || lk == 136735 // '$' 'while' + || lk == 136736 // '%' 'while' + || lk == 136980 // '{' 'while' + || lk == 138271 // '$' 'with' + || lk == 138272 // '%' 'with' + || lk == 138516 // '{' 'with' + || lk == 140319 // '$' 'xquery' + || lk == 140320 // '%' 'xquery' + || lk == 140564 // '{' 'xquery' + || lk == 141588 // '{' '{' + || lk == 142612 // '{' '{|' + || lk == 144660) // '{' '}' + { + lk = memoized(7, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_ApplyStatement(); + lk = -1; + } + catch (p1A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_AssignStatement(); + lk = -2; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_BlockStatement(); + lk = -3; + } + catch (p3A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_VarDeclStatement(); + lk = -12; + } + catch (p12A) + { + lk = -13; + } + } + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(7, e0, lk); + } + } + switch (lk) + { + case -2: + parse_AssignStatement(); + break; + case -3: + parse_BlockStatement(); + break; + case 90198: // 'break' 'loop' + parse_BreakStatement(); + break; + case 90214: // 'continue' 'loop' + parse_ContinueStatement(); + break; + case 113284: // 'exit' 'returning' + parse_ExitStatement(); + break; + case 16009: // 'for' '$' + case 16046: // 'let' '$' + case 116910: // 'let' 'score' + case 119945: // 'for' 'sliding' + case 128649: // 'for' 'tumbling' + parse_FLWORStatement(); + break; + case 17560: // 'if' '(' + parse_IfStatement(); + break; + case 17651: // 'switch' '(' + parse_SwitchStatement(); + break; + case 141562: // 'try' '{' + parse_TryCatchStatement(); + break; + case 17661: // 'typeswitch' '(' + parse_TypeswitchStatement(); + break; + case -12: + case 16134: // 'variable' '$' + parse_VarDeclStatement(); + break; + case -13: + parse_WhileStatement(); + break; + case 53: // ';' + parse_VoidStatement(); + break; + default: + parse_ApplyStatement(); + } + eventHandler.endNonterminal("Statement", e0); + } + + function try_Statement() + { + switch (l1) + { + case 132: // 'exit' + lookahead2W(188); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'returning' | 'to' | + // 'treat' | 'union' | '|' | '||' + break; + case 137: // 'for' + lookahead2W(195); // S^WS | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'sliding' | 'to' | + // 'treat' | 'tumbling' | 'union' | '|' | '||' + break; + case 174: // 'let' + lookahead2W(192); // S^WS | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'score' | 'to' | + // 'treat' | 'union' | '|' | '||' + break; + case 250: // 'try' + lookahead2W(189); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '{' | '|' | '||' + break; + case 262: // 'variable' + lookahead2W(186); // S^WS | '!' | '!=' | '#' | '$' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | + // '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' + break; + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + case 31: // '$' + case 32: // '%' + lookahead2W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + break; + case 86: // 'break' + case 102: // 'continue' + lookahead2W(187); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'loop' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | + // 'treat' | 'union' | '|' | '||' + break; + case 152: // 'if' + case 243: // 'switch' + case 253: // 'typeswitch' + case 267: // 'while' + lookahead2W(184); // S^WS | '!' | '!=' | '#' | '(' | '(:' | '*' | '+' | '-' | '/' | '//' | ';' | '<' | + // '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | 'and' | 'cast' | 'castable' | + // 'contains' | 'div' | 'eq' | 'except' | 'ge' | 'gt' | 'idiv' | 'instance' | + // 'intersect' | 'is' | 'le' | 'lt' | 'mod' | 'ne' | 'or' | 'to' | 'treat' | + // 'union' | '|' | '||' + break; + default: + lk = l1; + } + if (lk == 2836 // '{' Wildcard + || lk == 3103 // '$' EQName^Token + || lk == 3104 // '%' EQName^Token + || lk == 3348 // '{' EQName^Token + || lk == 4372 // '{' IntegerLiteral + || lk == 4884 // '{' DecimalLiteral + || lk == 5396 // '{' DoubleLiteral + || lk == 5908 // '{' StringLiteral + || lk == 16148 // '{' '$' + || lk == 16660 // '{' '%' + || lk == 17675 // 'while' '(' + || lk == 17684 // '{' '(' + || lk == 18196 // '{' '(#' + || lk == 20756 // '{' '+' + || lk == 21780 // '{' '-' + || lk == 22804 // '{' '.' + || lk == 23316 // '{' '..' + || lk == 23828 // '{' '/' + || lk == 24340 // '{' '//' + || lk == 27412 // '{' ';' + || lk == 27924 // '{' '<' + || lk == 28436 // '{' '<!--' + || lk == 30484 // '{' '<?' + || lk == 34068 // '{' '@' + || lk == 35092 // '{' '[' + || lk == 35871 // '$' 'after' + || lk == 35872 // '%' 'after' + || lk == 36116 // '{' 'after' + || lk == 36895 // '$' 'allowing' + || lk == 36896 // '%' 'allowing' + || lk == 37140 // '{' 'allowing' + || lk == 37407 // '$' 'ancestor' + || lk == 37408 // '%' 'ancestor' + || lk == 37652 // '{' 'ancestor' + || lk == 37919 // '$' 'ancestor-or-self' + || lk == 37920 // '%' 'ancestor-or-self' + || lk == 38164 // '{' 'ancestor-or-self' + || lk == 38431 // '$' 'and' + || lk == 38432 // '%' 'and' + || lk == 38676 // '{' 'and' + || lk == 39455 // '$' 'append' + || lk == 39456 // '%' 'append' + || lk == 39700 // '{' 'append' + || lk == 39967 // '$' 'array' + || lk == 39968 // '%' 'array' + || lk == 40212 // '{' 'array' + || lk == 40479 // '$' 'as' + || lk == 40480 // '%' 'as' + || lk == 40724 // '{' 'as' + || lk == 40991 // '$' 'ascending' + || lk == 40992 // '%' 'ascending' + || lk == 41236 // '{' 'ascending' + || lk == 41503 // '$' 'at' + || lk == 41504 // '%' 'at' + || lk == 41748 // '{' 'at' + || lk == 42015 // '$' 'attribute' + || lk == 42016 // '%' 'attribute' + || lk == 42260 // '{' 'attribute' + || lk == 42527 // '$' 'base-uri' + || lk == 42528 // '%' 'base-uri' + || lk == 42772 // '{' 'base-uri' + || lk == 43039 // '$' 'before' + || lk == 43040 // '%' 'before' + || lk == 43284 // '{' 'before' + || lk == 43551 // '$' 'boundary-space' + || lk == 43552 // '%' 'boundary-space' + || lk == 43796 // '{' 'boundary-space' + || lk == 44063 // '$' 'break' + || lk == 44064 // '%' 'break' + || lk == 44308 // '{' 'break' + || lk == 45087 // '$' 'case' + || lk == 45088 // '%' 'case' + || lk == 45332 // '{' 'case' + || lk == 45599 // '$' 'cast' + || lk == 45600 // '%' 'cast' + || lk == 45844 // '{' 'cast' + || lk == 46111 // '$' 'castable' + || lk == 46112 // '%' 'castable' + || lk == 46356 // '{' 'castable' + || lk == 46623 // '$' 'catch' + || lk == 46624 // '%' 'catch' + || lk == 46868 // '{' 'catch' + || lk == 47647 // '$' 'child' + || lk == 47648 // '%' 'child' + || lk == 47892 // '{' 'child' + || lk == 48159 // '$' 'collation' + || lk == 48160 // '%' 'collation' + || lk == 48404 // '{' 'collation' + || lk == 49183 // '$' 'comment' + || lk == 49184 // '%' 'comment' + || lk == 49428 // '{' 'comment' + || lk == 49695 // '$' 'constraint' + || lk == 49696 // '%' 'constraint' + || lk == 49940 // '{' 'constraint' + || lk == 50207 // '$' 'construction' + || lk == 50208 // '%' 'construction' + || lk == 50452 // '{' 'construction' + || lk == 51743 // '$' 'context' + || lk == 51744 // '%' 'context' + || lk == 51988 // '{' 'context' + || lk == 52255 // '$' 'continue' + || lk == 52256 // '%' 'continue' + || lk == 52500 // '{' 'continue' + || lk == 52767 // '$' 'copy' + || lk == 52768 // '%' 'copy' + || lk == 53012 // '{' 'copy' + || lk == 53279 // '$' 'copy-namespaces' + || lk == 53280 // '%' 'copy-namespaces' + || lk == 53524 // '{' 'copy-namespaces' + || lk == 53791 // '$' 'count' + || lk == 53792 // '%' 'count' + || lk == 54036 // '{' 'count' + || lk == 54303 // '$' 'decimal-format' + || lk == 54304 // '%' 'decimal-format' + || lk == 54548 // '{' 'decimal-format' + || lk == 55327 // '$' 'declare' + || lk == 55328 // '%' 'declare' + || lk == 55572 // '{' 'declare' + || lk == 55839 // '$' 'default' + || lk == 55840 // '%' 'default' + || lk == 56084 // '{' 'default' + || lk == 56351 // '$' 'delete' + || lk == 56352 // '%' 'delete' + || lk == 56596 // '{' 'delete' + || lk == 56863 // '$' 'descendant' + || lk == 56864 // '%' 'descendant' + || lk == 57108 // '{' 'descendant' + || lk == 57375 // '$' 'descendant-or-self' + || lk == 57376 // '%' 'descendant-or-self' + || lk == 57620 // '{' 'descendant-or-self' + || lk == 57887 // '$' 'descending' + || lk == 57888 // '%' 'descending' + || lk == 58132 // '{' 'descending' + || lk == 60447 // '$' 'div' + || lk == 60448 // '%' 'div' + || lk == 60692 // '{' 'div' + || lk == 60959 // '$' 'document' + || lk == 60960 // '%' 'document' + || lk == 61204 // '{' 'document' + || lk == 61471 // '$' 'document-node' + || lk == 61472 // '%' 'document-node' + || lk == 61716 // '{' 'document-node' + || lk == 61983 // '$' 'element' + || lk == 61984 // '%' 'element' + || lk == 62228 // '{' 'element' + || lk == 62495 // '$' 'else' + || lk == 62496 // '%' 'else' + || lk == 62740 // '{' 'else' + || lk == 63007 // '$' 'empty' + || lk == 63008 // '%' 'empty' + || lk == 63252 // '{' 'empty' + || lk == 63519 // '$' 'empty-sequence' + || lk == 63520 // '%' 'empty-sequence' + || lk == 63764 // '{' 'empty-sequence' + || lk == 64031 // '$' 'encoding' + || lk == 64032 // '%' 'encoding' + || lk == 64276 // '{' 'encoding' + || lk == 64543 // '$' 'end' + || lk == 64544 // '%' 'end' + || lk == 64788 // '{' 'end' + || lk == 65567 // '$' 'eq' + || lk == 65568 // '%' 'eq' + || lk == 65812 // '{' 'eq' + || lk == 66079 // '$' 'every' + || lk == 66080 // '%' 'every' + || lk == 66324 // '{' 'every' + || lk == 67103 // '$' 'except' + || lk == 67104 // '%' 'except' + || lk == 67348 // '{' 'except' + || lk == 67615 // '$' 'exit' + || lk == 67616 // '%' 'exit' + || lk == 67860 // '{' 'exit' + || lk == 68127 // '$' 'external' + || lk == 68128 // '%' 'external' + || lk == 68372 // '{' 'external' + || lk == 68639 // '$' 'first' + || lk == 68640 // '%' 'first' + || lk == 68884 // '{' 'first' + || lk == 69151 // '$' 'following' + || lk == 69152 // '%' 'following' + || lk == 69396 // '{' 'following' + || lk == 69663 // '$' 'following-sibling' + || lk == 69664 // '%' 'following-sibling' + || lk == 69908 // '{' 'following-sibling' + || lk == 70175 // '$' 'for' + || lk == 70176 // '%' 'for' + || lk == 70420 // '{' 'for' + || lk == 72223 // '$' 'ft-option' + || lk == 72224 // '%' 'ft-option' + || lk == 72468 // '{' 'ft-option' + || lk == 74271 // '$' 'function' + || lk == 74272 // '%' 'function' + || lk == 74516 // '{' 'function' + || lk == 74783 // '$' 'ge' + || lk == 74784 // '%' 'ge' + || lk == 75028 // '{' 'ge' + || lk == 75807 // '$' 'group' + || lk == 75808 // '%' 'group' + || lk == 76052 // '{' 'group' + || lk == 76831 // '$' 'gt' + || lk == 76832 // '%' 'gt' + || lk == 77076 // '{' 'gt' + || lk == 77343 // '$' 'idiv' + || lk == 77344 // '%' 'idiv' + || lk == 77588 // '{' 'idiv' + || lk == 77855 // '$' 'if' + || lk == 77856 // '%' 'if' + || lk == 78100 // '{' 'if' + || lk == 78367 // '$' 'import' + || lk == 78368 // '%' 'import' + || lk == 78612 // '{' 'import' + || lk == 78879 // '$' 'in' + || lk == 78880 // '%' 'in' + || lk == 79124 // '{' 'in' + || lk == 79391 // '$' 'index' + || lk == 79392 // '%' 'index' + || lk == 79636 // '{' 'index' + || lk == 81439 // '$' 'insert' + || lk == 81440 // '%' 'insert' + || lk == 81684 // '{' 'insert' + || lk == 81951 // '$' 'instance' + || lk == 81952 // '%' 'instance' + || lk == 82196 // '{' 'instance' + || lk == 82463 // '$' 'integrity' + || lk == 82464 // '%' 'integrity' + || lk == 82708 // '{' 'integrity' + || lk == 82975 // '$' 'intersect' + || lk == 82976 // '%' 'intersect' + || lk == 83220 // '{' 'intersect' + || lk == 83487 // '$' 'into' + || lk == 83488 // '%' 'into' + || lk == 83732 // '{' 'into' + || lk == 83999 // '$' 'is' + || lk == 84000 // '%' 'is' + || lk == 84244 // '{' 'is' + || lk == 84511 // '$' 'item' + || lk == 84512 // '%' 'item' + || lk == 84756 // '{' 'item' + || lk == 85023 // '$' 'json' + || lk == 85024 // '%' 'json' + || lk == 85268 // '{' 'json' + || lk == 85535 // '$' 'json-item' + || lk == 85536 // '%' 'json-item' + || lk == 85780 // '{' 'json-item' + || lk == 87071 // '$' 'last' + || lk == 87072 // '%' 'last' + || lk == 87316 // '{' 'last' + || lk == 87583 // '$' 'lax' + || lk == 87584 // '%' 'lax' + || lk == 87828 // '{' 'lax' + || lk == 88095 // '$' 'le' + || lk == 88096 // '%' 'le' + || lk == 88340 // '{' 'le' + || lk == 89119 // '$' 'let' + || lk == 89120 // '%' 'let' + || lk == 89364 // '{' 'let' + || lk == 90143 // '$' 'loop' + || lk == 90144 // '%' 'loop' + || lk == 90388 // '{' 'loop' + || lk == 91167 // '$' 'lt' + || lk == 91168 // '%' 'lt' + || lk == 91412 // '{' 'lt' + || lk == 92191 // '$' 'mod' + || lk == 92192 // '%' 'mod' + || lk == 92436 // '{' 'mod' + || lk == 92703 // '$' 'modify' + || lk == 92704 // '%' 'modify' + || lk == 92948 // '{' 'modify' + || lk == 93215 // '$' 'module' + || lk == 93216 // '%' 'module' + || lk == 93460 // '{' 'module' + || lk == 94239 // '$' 'namespace' + || lk == 94240 // '%' 'namespace' + || lk == 94484 // '{' 'namespace' + || lk == 94751 // '$' 'namespace-node' + || lk == 94752 // '%' 'namespace-node' + || lk == 94996 // '{' 'namespace-node' + || lk == 95263 // '$' 'ne' + || lk == 95264 // '%' 'ne' + || lk == 95508 // '{' 'ne' + || lk == 97823 // '$' 'node' + || lk == 97824 // '%' 'node' + || lk == 98068 // '{' 'node' + || lk == 98335 // '$' 'nodes' + || lk == 98336 // '%' 'nodes' + || lk == 98580 // '{' 'nodes' + || lk == 99359 // '$' 'object' + || lk == 99360 // '%' 'object' + || lk == 99604 // '{' 'object' + || lk == 101407 // '$' 'only' + || lk == 101408 // '%' 'only' + || lk == 101652 // '{' 'only' + || lk == 101919 // '$' 'option' + || lk == 101920 // '%' 'option' + || lk == 102164 // '{' 'option' + || lk == 102431 // '$' 'or' + || lk == 102432 // '%' 'or' + || lk == 102676 // '{' 'or' + || lk == 102943 // '$' 'order' + || lk == 102944 // '%' 'order' + || lk == 103188 // '{' 'order' + || lk == 103455 // '$' 'ordered' + || lk == 103456 // '%' 'ordered' + || lk == 103700 // '{' 'ordered' + || lk == 103967 // '$' 'ordering' + || lk == 103968 // '%' 'ordering' + || lk == 104212 // '{' 'ordering' + || lk == 105503 // '$' 'parent' + || lk == 105504 // '%' 'parent' + || lk == 105748 // '{' 'parent' + || lk == 108575 // '$' 'preceding' + || lk == 108576 // '%' 'preceding' + || lk == 108820 // '{' 'preceding' + || lk == 109087 // '$' 'preceding-sibling' + || lk == 109088 // '%' 'preceding-sibling' + || lk == 109332 // '{' 'preceding-sibling' + || lk == 110623 // '$' 'processing-instruction' + || lk == 110624 // '%' 'processing-instruction' + || lk == 110868 // '{' 'processing-instruction' + || lk == 111647 // '$' 'rename' + || lk == 111648 // '%' 'rename' + || lk == 111892 // '{' 'rename' + || lk == 112159 // '$' 'replace' + || lk == 112160 // '%' 'replace' + || lk == 112404 // '{' 'replace' + || lk == 112671 // '$' 'return' + || lk == 112672 // '%' 'return' + || lk == 112916 // '{' 'return' + || lk == 113183 // '$' 'returning' + || lk == 113184 // '%' 'returning' + || lk == 113428 // '{' 'returning' + || lk == 113695 // '$' 'revalidation' + || lk == 113696 // '%' 'revalidation' + || lk == 113940 // '{' 'revalidation' + || lk == 114719 // '$' 'satisfies' + || lk == 114720 // '%' 'satisfies' + || lk == 114964 // '{' 'satisfies' + || lk == 115231 // '$' 'schema' + || lk == 115232 // '%' 'schema' + || lk == 115476 // '{' 'schema' + || lk == 115743 // '$' 'schema-attribute' + || lk == 115744 // '%' 'schema-attribute' + || lk == 115988 // '{' 'schema-attribute' + || lk == 116255 // '$' 'schema-element' + || lk == 116256 // '%' 'schema-element' + || lk == 116500 // '{' 'schema-element' + || lk == 116767 // '$' 'score' + || lk == 116768 // '%' 'score' + || lk == 117012 // '{' 'score' + || lk == 117279 // '$' 'self' + || lk == 117280 // '%' 'self' + || lk == 117524 // '{' 'self' + || lk == 119839 // '$' 'sliding' + || lk == 119840 // '%' 'sliding' + || lk == 120084 // '{' 'sliding' + || lk == 120351 // '$' 'some' + || lk == 120352 // '%' 'some' + || lk == 120596 // '{' 'some' + || lk == 120863 // '$' 'stable' + || lk == 120864 // '%' 'stable' + || lk == 121108 // '{' 'stable' + || lk == 121375 // '$' 'start' + || lk == 121376 // '%' 'start' + || lk == 121620 // '{' 'start' + || lk == 122911 // '$' 'strict' + || lk == 122912 // '%' 'strict' + || lk == 123156 // '{' 'strict' + || lk == 123935 // '$' 'structured-item' + || lk == 123936 // '%' 'structured-item' + || lk == 124180 // '{' 'structured-item' + || lk == 124447 // '$' 'switch' + || lk == 124448 // '%' 'switch' + || lk == 124692 // '{' 'switch' + || lk == 124959 // '$' 'text' + || lk == 124960 // '%' 'text' + || lk == 125204 // '{' 'text' + || lk == 127007 // '$' 'to' + || lk == 127008 // '%' 'to' + || lk == 127252 // '{' 'to' + || lk == 127519 // '$' 'treat' + || lk == 127520 // '%' 'treat' + || lk == 127764 // '{' 'treat' + || lk == 128031 // '$' 'try' + || lk == 128032 // '%' 'try' + || lk == 128276 // '{' 'try' + || lk == 128543 // '$' 'tumbling' + || lk == 128544 // '%' 'tumbling' + || lk == 128788 // '{' 'tumbling' + || lk == 129055 // '$' 'type' + || lk == 129056 // '%' 'type' + || lk == 129300 // '{' 'type' + || lk == 129567 // '$' 'typeswitch' + || lk == 129568 // '%' 'typeswitch' + || lk == 129812 // '{' 'typeswitch' + || lk == 130079 // '$' 'union' + || lk == 130080 // '%' 'union' + || lk == 130324 // '{' 'union' + || lk == 131103 // '$' 'unordered' + || lk == 131104 // '%' 'unordered' + || lk == 131348 // '{' 'unordered' + || lk == 131615 // '$' 'updating' + || lk == 131616 // '%' 'updating' + || lk == 131860 // '{' 'updating' + || lk == 133151 // '$' 'validate' + || lk == 133152 // '%' 'validate' + || lk == 133396 // '{' 'validate' + || lk == 133663 // '$' 'value' + || lk == 133664 // '%' 'value' + || lk == 133908 // '{' 'value' + || lk == 134175 // '$' 'variable' + || lk == 134176 // '%' 'variable' + || lk == 134420 // '{' 'variable' + || lk == 134687 // '$' 'version' + || lk == 134688 // '%' 'version' + || lk == 134932 // '{' 'version' + || lk == 136223 // '$' 'where' + || lk == 136224 // '%' 'where' + || lk == 136468 // '{' 'where' + || lk == 136735 // '$' 'while' + || lk == 136736 // '%' 'while' + || lk == 136980 // '{' 'while' + || lk == 138271 // '$' 'with' + || lk == 138272 // '%' 'with' + || lk == 138516 // '{' 'with' + || lk == 140319 // '$' 'xquery' + || lk == 140320 // '%' 'xquery' + || lk == 140564 // '{' 'xquery' + || lk == 141588 // '{' '{' + || lk == 142612 // '{' '{|' + || lk == 144660) // '{' '}' + { + lk = memoized(7, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_ApplyStatement(); + memoize(7, e0A, -1); + lk = -15; + } + catch (p1A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_AssignStatement(); + memoize(7, e0A, -2); + lk = -15; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_BlockStatement(); + memoize(7, e0A, -3); + lk = -15; + } + catch (p3A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_VarDeclStatement(); + memoize(7, e0A, -12); + lk = -15; + } + catch (p12A) + { + lk = -13; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(7, e0A, -13); + } + } + } + } + } + } + switch (lk) + { + case -2: + try_AssignStatement(); + break; + case -3: + try_BlockStatement(); + break; + case 90198: // 'break' 'loop' + try_BreakStatement(); + break; + case 90214: // 'continue' 'loop' + try_ContinueStatement(); + break; + case 113284: // 'exit' 'returning' + try_ExitStatement(); + break; + case 16009: // 'for' '$' + case 16046: // 'let' '$' + case 116910: // 'let' 'score' + case 119945: // 'for' 'sliding' + case 128649: // 'for' 'tumbling' + try_FLWORStatement(); + break; + case 17560: // 'if' '(' + try_IfStatement(); + break; + case 17651: // 'switch' '(' + try_SwitchStatement(); + break; + case 141562: // 'try' '{' + try_TryCatchStatement(); + break; + case 17661: // 'typeswitch' '(' + try_TypeswitchStatement(); + break; + case -12: + case 16134: // 'variable' '$' + try_VarDeclStatement(); + break; + case -13: + try_WhileStatement(); + break; + case 53: // ';' + try_VoidStatement(); + break; + case -15: + break; + default: + try_ApplyStatement(); + } + } + + function parse_ApplyStatement() + { + eventHandler.startNonterminal("ApplyStatement", e0); + parse_ExprSimple(); + shift(53); // ';' + eventHandler.endNonterminal("ApplyStatement", e0); + } + + function try_ApplyStatement() + { + try_ExprSimple(); + shiftT(53); // ';' + } + + function parse_AssignStatement() + { + eventHandler.startNonterminal("AssignStatement", e0); + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(27); // S^WS | '(:' | ':=' + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(53); // ';' + eventHandler.endNonterminal("AssignStatement", e0); + } + + function try_AssignStatement() + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(27); // S^WS | '(:' | ':=' + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + shiftT(53); // ';' + } + + function parse_BlockStatement() + { + eventHandler.startNonterminal("BlockStatement", e0); + shift(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + whitespace(); + parse_Statements(); + shift(282); // '}' + eventHandler.endNonterminal("BlockStatement", e0); + } + + function try_BlockStatement() + { + shiftT(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + try_Statements(); + shiftT(282); // '}' + } + + function parse_BreakStatement() + { + eventHandler.startNonterminal("BreakStatement", e0); + shift(86); // 'break' + lookahead1W(59); // S^WS | '(:' | 'loop' + shift(176); // 'loop' + lookahead1W(28); // S^WS | '(:' | ';' + shift(53); // ';' + eventHandler.endNonterminal("BreakStatement", e0); + } + + function try_BreakStatement() + { + shiftT(86); // 'break' + lookahead1W(59); // S^WS | '(:' | 'loop' + shiftT(176); // 'loop' + lookahead1W(28); // S^WS | '(:' | ';' + shiftT(53); // ';' + } + + function parse_ContinueStatement() + { + eventHandler.startNonterminal("ContinueStatement", e0); + shift(102); // 'continue' + lookahead1W(59); // S^WS | '(:' | 'loop' + shift(176); // 'loop' + lookahead1W(28); // S^WS | '(:' | ';' + shift(53); // ';' + eventHandler.endNonterminal("ContinueStatement", e0); + } + + function try_ContinueStatement() + { + shiftT(102); // 'continue' + lookahead1W(59); // S^WS | '(:' | 'loop' + shiftT(176); // 'loop' + lookahead1W(28); // S^WS | '(:' | ';' + shiftT(53); // ';' + } + + function parse_ExitStatement() + { + eventHandler.startNonterminal("ExitStatement", e0); + shift(132); // 'exit' + lookahead1W(71); // S^WS | '(:' | 'returning' + shift(221); // 'returning' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(53); // ';' + eventHandler.endNonterminal("ExitStatement", e0); + } + + function try_ExitStatement() + { + shiftT(132); // 'exit' + lookahead1W(71); // S^WS | '(:' | 'returning' + shiftT(221); // 'returning' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + shiftT(53); // ';' + } + + function parse_FLWORStatement() + { + eventHandler.startNonterminal("FLWORStatement", e0); + parse_InitialClause(); + for (;;) + { + lookahead1W(173); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + // 'where' + if (l1 == 220) // 'return' + { + break; + } + whitespace(); + parse_IntermediateClause(); + } + whitespace(); + parse_ReturnStatement(); + eventHandler.endNonterminal("FLWORStatement", e0); + } + + function try_FLWORStatement() + { + try_InitialClause(); + for (;;) + { + lookahead1W(173); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + // 'where' + if (l1 == 220) // 'return' + { + break; + } + try_IntermediateClause(); + } + try_ReturnStatement(); + } + + function parse_ReturnStatement() + { + eventHandler.startNonterminal("ReturnStatement", e0); + shift(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("ReturnStatement", e0); + } + + function try_ReturnStatement() + { + shiftT(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Statement(); + } + + function parse_IfStatement() + { + eventHandler.startNonterminal("IfStatement", e0); + shift(152); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(37); // ')' + lookahead1W(77); // S^WS | '(:' | 'then' + shift(245); // 'then' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Statement(); + lookahead1W(48); // S^WS | '(:' | 'else' + shift(122); // 'else' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("IfStatement", e0); + } + + function try_IfStatement() + { + shiftT(152); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(37); // ')' + lookahead1W(77); // S^WS | '(:' | 'then' + shiftT(245); // 'then' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Statement(); + lookahead1W(48); // S^WS | '(:' | 'else' + shiftT(122); // 'else' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Statement(); + } + + function parse_SwitchStatement() + { + eventHandler.startNonterminal("SwitchStatement", e0); + shift(243); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(37); // ')' + for (;;) + { + lookahead1W(35); // S^WS | '(:' | 'case' + whitespace(); + parse_SwitchCaseStatement(); + lookahead1W(113); // S^WS | '(:' | 'case' | 'default' + if (l1 != 88) // 'case' + { + break; + } + } + shift(109); // 'default' + lookahead1W(70); // S^WS | '(:' | 'return' + shift(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("SwitchStatement", e0); + } + + function try_SwitchStatement() + { + shiftT(243); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(37); // ')' + for (;;) + { + lookahead1W(35); // S^WS | '(:' | 'case' + try_SwitchCaseStatement(); + lookahead1W(113); // S^WS | '(:' | 'case' | 'default' + if (l1 != 88) // 'case' + { + break; + } + } + shiftT(109); // 'default' + lookahead1W(70); // S^WS | '(:' | 'return' + shiftT(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Statement(); + } + + function parse_SwitchCaseStatement() + { + eventHandler.startNonterminal("SwitchCaseStatement", e0); + for (;;) + { + shift(88); // 'case' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_SwitchCaseOperand(); + if (l1 != 88) // 'case' + { + break; + } + } + shift(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("SwitchCaseStatement", e0); + } + + function try_SwitchCaseStatement() + { + for (;;) + { + shiftT(88); // 'case' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_SwitchCaseOperand(); + if (l1 != 88) // 'case' + { + break; + } + } + shiftT(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Statement(); + } + + function parse_TryCatchStatement() + { + eventHandler.startNonterminal("TryCatchStatement", e0); + shift(250); // 'try' + lookahead1W(87); // S^WS | '(:' | '{' + whitespace(); + parse_BlockStatement(); + for (;;) + { + lookahead1W(36); // S^WS | '(:' | 'catch' + shift(91); // 'catch' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_CatchErrorList(); + whitespace(); + parse_BlockStatement(); + lookahead1W(277); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | + // '..' | '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' | '}' + switch (l1) + { + case 91: // 'catch' + lookahead2W(278); // Wildcard | EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | + // '+' | ',' | '-' | '/' | '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + // 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | + // 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '|' | '||' | '}' + break; + default: + lk = l1; + } + if (lk == 38491 // 'catch' 'and' + || lk == 45659 // 'catch' 'cast' + || lk == 46171 // 'catch' 'castable' + || lk == 60507 // 'catch' 'div' + || lk == 65627 // 'catch' 'eq' + || lk == 67163 // 'catch' 'except' + || lk == 74843 // 'catch' 'ge' + || lk == 76891 // 'catch' 'gt' + || lk == 77403 // 'catch' 'idiv' + || lk == 82011 // 'catch' 'instance' + || lk == 83035 // 'catch' 'intersect' + || lk == 84059 // 'catch' 'is' + || lk == 88155 // 'catch' 'le' + || lk == 91227 // 'catch' 'lt' + || lk == 92251 // 'catch' 'mod' + || lk == 95323 // 'catch' 'ne' + || lk == 102491 // 'catch' 'or' + || lk == 127067 // 'catch' 'to' + || lk == 127579 // 'catch' 'treat' + || lk == 130139) // 'catch' 'union' + { + lk = memoized(8, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + lookahead1W(36); // S^WS | '(:' | 'catch' + shiftT(91); // 'catch' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_CatchErrorList(); + try_BlockStatement(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(8, e0, lk); + } + } + if (lk != -1 + && lk != 2651 // 'catch' Wildcard + && lk != 3163 // 'catch' EQName^Token + && lk != 35931 // 'catch' 'after' + && lk != 36955 // 'catch' 'allowing' + && lk != 37467 // 'catch' 'ancestor' + && lk != 37979 // 'catch' 'ancestor-or-self' + && lk != 39515 // 'catch' 'append' + && lk != 40027 // 'catch' 'array' + && lk != 40539 // 'catch' 'as' + && lk != 41051 // 'catch' 'ascending' + && lk != 41563 // 'catch' 'at' + && lk != 42075 // 'catch' 'attribute' + && lk != 42587 // 'catch' 'base-uri' + && lk != 43099 // 'catch' 'before' + && lk != 43611 // 'catch' 'boundary-space' + && lk != 44123 // 'catch' 'break' + && lk != 45147 // 'catch' 'case' + && lk != 46683 // 'catch' 'catch' + && lk != 47707 // 'catch' 'child' + && lk != 48219 // 'catch' 'collation' + && lk != 49243 // 'catch' 'comment' + && lk != 49755 // 'catch' 'constraint' + && lk != 50267 // 'catch' 'construction' + && lk != 51803 // 'catch' 'context' + && lk != 52315 // 'catch' 'continue' + && lk != 52827 // 'catch' 'copy' + && lk != 53339 // 'catch' 'copy-namespaces' + && lk != 53851 // 'catch' 'count' + && lk != 54363 // 'catch' 'decimal-format' + && lk != 55387 // 'catch' 'declare' + && lk != 55899 // 'catch' 'default' + && lk != 56411 // 'catch' 'delete' + && lk != 56923 // 'catch' 'descendant' + && lk != 57435 // 'catch' 'descendant-or-self' + && lk != 57947 // 'catch' 'descending' + && lk != 61019 // 'catch' 'document' + && lk != 61531 // 'catch' 'document-node' + && lk != 62043 // 'catch' 'element' + && lk != 62555 // 'catch' 'else' + && lk != 63067 // 'catch' 'empty' + && lk != 63579 // 'catch' 'empty-sequence' + && lk != 64091 // 'catch' 'encoding' + && lk != 64603 // 'catch' 'end' + && lk != 66139 // 'catch' 'every' + && lk != 67675 // 'catch' 'exit' + && lk != 68187 // 'catch' 'external' + && lk != 68699 // 'catch' 'first' + && lk != 69211 // 'catch' 'following' + && lk != 69723 // 'catch' 'following-sibling' + && lk != 70235 // 'catch' 'for' + && lk != 72283 // 'catch' 'ft-option' + && lk != 74331 // 'catch' 'function' + && lk != 75867 // 'catch' 'group' + && lk != 77915 // 'catch' 'if' + && lk != 78427 // 'catch' 'import' + && lk != 78939 // 'catch' 'in' + && lk != 79451 // 'catch' 'index' + && lk != 81499 // 'catch' 'insert' + && lk != 82523 // 'catch' 'integrity' + && lk != 83547 // 'catch' 'into' + && lk != 84571 // 'catch' 'item' + && lk != 85083 // 'catch' 'json' + && lk != 85595 // 'catch' 'json-item' + && lk != 87131 // 'catch' 'last' + && lk != 87643 // 'catch' 'lax' + && lk != 89179 // 'catch' 'let' + && lk != 90203 // 'catch' 'loop' + && lk != 92763 // 'catch' 'modify' + && lk != 93275 // 'catch' 'module' + && lk != 94299 // 'catch' 'namespace' + && lk != 94811 // 'catch' 'namespace-node' + && lk != 97883 // 'catch' 'node' + && lk != 98395 // 'catch' 'nodes' + && lk != 99419 // 'catch' 'object' + && lk != 101467 // 'catch' 'only' + && lk != 101979 // 'catch' 'option' + && lk != 103003 // 'catch' 'order' + && lk != 103515 // 'catch' 'ordered' + && lk != 104027 // 'catch' 'ordering' + && lk != 105563 // 'catch' 'parent' + && lk != 108635 // 'catch' 'preceding' + && lk != 109147 // 'catch' 'preceding-sibling' + && lk != 110683 // 'catch' 'processing-instruction' + && lk != 111707 // 'catch' 'rename' + && lk != 112219 // 'catch' 'replace' + && lk != 112731 // 'catch' 'return' + && lk != 113243 // 'catch' 'returning' + && lk != 113755 // 'catch' 'revalidation' + && lk != 114779 // 'catch' 'satisfies' + && lk != 115291 // 'catch' 'schema' + && lk != 115803 // 'catch' 'schema-attribute' + && lk != 116315 // 'catch' 'schema-element' + && lk != 116827 // 'catch' 'score' + && lk != 117339 // 'catch' 'self' + && lk != 119899 // 'catch' 'sliding' + && lk != 120411 // 'catch' 'some' + && lk != 120923 // 'catch' 'stable' + && lk != 121435 // 'catch' 'start' + && lk != 122971 // 'catch' 'strict' + && lk != 123995 // 'catch' 'structured-item' + && lk != 124507 // 'catch' 'switch' + && lk != 125019 // 'catch' 'text' + && lk != 128091 // 'catch' 'try' + && lk != 128603 // 'catch' 'tumbling' + && lk != 129115 // 'catch' 'type' + && lk != 129627 // 'catch' 'typeswitch' + && lk != 131163 // 'catch' 'unordered' + && lk != 131675 // 'catch' 'updating' + && lk != 133211 // 'catch' 'validate' + && lk != 133723 // 'catch' 'value' + && lk != 134235 // 'catch' 'variable' + && lk != 134747 // 'catch' 'version' + && lk != 136283 // 'catch' 'where' + && lk != 136795 // 'catch' 'while' + && lk != 138331 // 'catch' 'with' + && lk != 140379) // 'catch' 'xquery' + { + break; + } + } + eventHandler.endNonterminal("TryCatchStatement", e0); + } + + function try_TryCatchStatement() + { + shiftT(250); // 'try' + lookahead1W(87); // S^WS | '(:' | '{' + try_BlockStatement(); + lookahead1W(36); // S^WS | '(:' | 'catch' + shiftT(91); // 'catch' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_CatchErrorList(); + try_BlockStatement(); + for (;;) + { + lookahead1W(277); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | EOF | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | + // '..' | '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' | '}' + switch (l1) + { + case 91: // 'catch' + lookahead2W(278); // Wildcard | EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | '*' | + // '+' | ',' | '-' | '/' | '//' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | + // '>>' | '[' | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + // 'append' | 'array' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | + // 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | + // 'child' | 'collation' | 'comment' | 'constraint' | 'construction' | 'contains' | + // 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | + // 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | + // 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '|' | '||' | '}' + break; + default: + lk = l1; + } + if (lk == 38491 // 'catch' 'and' + || lk == 45659 // 'catch' 'cast' + || lk == 46171 // 'catch' 'castable' + || lk == 60507 // 'catch' 'div' + || lk == 65627 // 'catch' 'eq' + || lk == 67163 // 'catch' 'except' + || lk == 74843 // 'catch' 'ge' + || lk == 76891 // 'catch' 'gt' + || lk == 77403 // 'catch' 'idiv' + || lk == 82011 // 'catch' 'instance' + || lk == 83035 // 'catch' 'intersect' + || lk == 84059 // 'catch' 'is' + || lk == 88155 // 'catch' 'le' + || lk == 91227 // 'catch' 'lt' + || lk == 92251 // 'catch' 'mod' + || lk == 95323 // 'catch' 'ne' + || lk == 102491 // 'catch' 'or' + || lk == 127067 // 'catch' 'to' + || lk == 127579 // 'catch' 'treat' + || lk == 130139) // 'catch' 'union' + { + lk = memoized(8, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + lookahead1W(36); // S^WS | '(:' | 'catch' + shiftT(91); // 'catch' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_CatchErrorList(); + try_BlockStatement(); + memoize(8, e0A, -1); + continue; + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(8, e0A, -2); + break; + } + } + } + if (lk != -1 + && lk != 2651 // 'catch' Wildcard + && lk != 3163 // 'catch' EQName^Token + && lk != 35931 // 'catch' 'after' + && lk != 36955 // 'catch' 'allowing' + && lk != 37467 // 'catch' 'ancestor' + && lk != 37979 // 'catch' 'ancestor-or-self' + && lk != 39515 // 'catch' 'append' + && lk != 40027 // 'catch' 'array' + && lk != 40539 // 'catch' 'as' + && lk != 41051 // 'catch' 'ascending' + && lk != 41563 // 'catch' 'at' + && lk != 42075 // 'catch' 'attribute' + && lk != 42587 // 'catch' 'base-uri' + && lk != 43099 // 'catch' 'before' + && lk != 43611 // 'catch' 'boundary-space' + && lk != 44123 // 'catch' 'break' + && lk != 45147 // 'catch' 'case' + && lk != 46683 // 'catch' 'catch' + && lk != 47707 // 'catch' 'child' + && lk != 48219 // 'catch' 'collation' + && lk != 49243 // 'catch' 'comment' + && lk != 49755 // 'catch' 'constraint' + && lk != 50267 // 'catch' 'construction' + && lk != 51803 // 'catch' 'context' + && lk != 52315 // 'catch' 'continue' + && lk != 52827 // 'catch' 'copy' + && lk != 53339 // 'catch' 'copy-namespaces' + && lk != 53851 // 'catch' 'count' + && lk != 54363 // 'catch' 'decimal-format' + && lk != 55387 // 'catch' 'declare' + && lk != 55899 // 'catch' 'default' + && lk != 56411 // 'catch' 'delete' + && lk != 56923 // 'catch' 'descendant' + && lk != 57435 // 'catch' 'descendant-or-self' + && lk != 57947 // 'catch' 'descending' + && lk != 61019 // 'catch' 'document' + && lk != 61531 // 'catch' 'document-node' + && lk != 62043 // 'catch' 'element' + && lk != 62555 // 'catch' 'else' + && lk != 63067 // 'catch' 'empty' + && lk != 63579 // 'catch' 'empty-sequence' + && lk != 64091 // 'catch' 'encoding' + && lk != 64603 // 'catch' 'end' + && lk != 66139 // 'catch' 'every' + && lk != 67675 // 'catch' 'exit' + && lk != 68187 // 'catch' 'external' + && lk != 68699 // 'catch' 'first' + && lk != 69211 // 'catch' 'following' + && lk != 69723 // 'catch' 'following-sibling' + && lk != 70235 // 'catch' 'for' + && lk != 72283 // 'catch' 'ft-option' + && lk != 74331 // 'catch' 'function' + && lk != 75867 // 'catch' 'group' + && lk != 77915 // 'catch' 'if' + && lk != 78427 // 'catch' 'import' + && lk != 78939 // 'catch' 'in' + && lk != 79451 // 'catch' 'index' + && lk != 81499 // 'catch' 'insert' + && lk != 82523 // 'catch' 'integrity' + && lk != 83547 // 'catch' 'into' + && lk != 84571 // 'catch' 'item' + && lk != 85083 // 'catch' 'json' + && lk != 85595 // 'catch' 'json-item' + && lk != 87131 // 'catch' 'last' + && lk != 87643 // 'catch' 'lax' + && lk != 89179 // 'catch' 'let' + && lk != 90203 // 'catch' 'loop' + && lk != 92763 // 'catch' 'modify' + && lk != 93275 // 'catch' 'module' + && lk != 94299 // 'catch' 'namespace' + && lk != 94811 // 'catch' 'namespace-node' + && lk != 97883 // 'catch' 'node' + && lk != 98395 // 'catch' 'nodes' + && lk != 99419 // 'catch' 'object' + && lk != 101467 // 'catch' 'only' + && lk != 101979 // 'catch' 'option' + && lk != 103003 // 'catch' 'order' + && lk != 103515 // 'catch' 'ordered' + && lk != 104027 // 'catch' 'ordering' + && lk != 105563 // 'catch' 'parent' + && lk != 108635 // 'catch' 'preceding' + && lk != 109147 // 'catch' 'preceding-sibling' + && lk != 110683 // 'catch' 'processing-instruction' + && lk != 111707 // 'catch' 'rename' + && lk != 112219 // 'catch' 'replace' + && lk != 112731 // 'catch' 'return' + && lk != 113243 // 'catch' 'returning' + && lk != 113755 // 'catch' 'revalidation' + && lk != 114779 // 'catch' 'satisfies' + && lk != 115291 // 'catch' 'schema' + && lk != 115803 // 'catch' 'schema-attribute' + && lk != 116315 // 'catch' 'schema-element' + && lk != 116827 // 'catch' 'score' + && lk != 117339 // 'catch' 'self' + && lk != 119899 // 'catch' 'sliding' + && lk != 120411 // 'catch' 'some' + && lk != 120923 // 'catch' 'stable' + && lk != 121435 // 'catch' 'start' + && lk != 122971 // 'catch' 'strict' + && lk != 123995 // 'catch' 'structured-item' + && lk != 124507 // 'catch' 'switch' + && lk != 125019 // 'catch' 'text' + && lk != 128091 // 'catch' 'try' + && lk != 128603 // 'catch' 'tumbling' + && lk != 129115 // 'catch' 'type' + && lk != 129627 // 'catch' 'typeswitch' + && lk != 131163 // 'catch' 'unordered' + && lk != 131675 // 'catch' 'updating' + && lk != 133211 // 'catch' 'validate' + && lk != 133723 // 'catch' 'value' + && lk != 134235 // 'catch' 'variable' + && lk != 134747 // 'catch' 'version' + && lk != 136283 // 'catch' 'where' + && lk != 136795 // 'catch' 'while' + && lk != 138331 // 'catch' 'with' + && lk != 140379) // 'catch' 'xquery' + { + break; + } + lookahead1W(36); // S^WS | '(:' | 'catch' + shiftT(91); // 'catch' + lookahead1W(256); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_CatchErrorList(); + try_BlockStatement(); + } + } + + function parse_TypeswitchStatement() + { + eventHandler.startNonterminal("TypeswitchStatement", e0); + shift(253); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(37); // ')' + for (;;) + { + lookahead1W(35); // S^WS | '(:' | 'case' + whitespace(); + parse_CaseStatement(); + lookahead1W(113); // S^WS | '(:' | 'case' | 'default' + if (l1 != 88) // 'case' + { + break; + } + } + shift(109); // 'default' + lookahead1W(95); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + } + lookahead1W(70); // S^WS | '(:' | 'return' + shift(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("TypeswitchStatement", e0); + } + + function try_TypeswitchStatement() + { + shiftT(253); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(37); // ')' + for (;;) + { + lookahead1W(35); // S^WS | '(:' | 'case' + try_CaseStatement(); + lookahead1W(113); // S^WS | '(:' | 'case' | 'default' + if (l1 != 88) // 'case' + { + break; + } + } + shiftT(109); // 'default' + lookahead1W(95); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + } + lookahead1W(70); // S^WS | '(:' | 'return' + shiftT(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Statement(); + } + + function parse_CaseStatement() + { + eventHandler.startNonterminal("CaseStatement", e0); + shift(88); // 'case' + lookahead1W(261); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(30); // S^WS | '(:' | 'as' + shift(79); // 'as' + } + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + lookahead1W(70); // S^WS | '(:' | 'return' + shift(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("CaseStatement", e0); + } + + function try_CaseStatement() + { + shiftT(88); // 'case' + lookahead1W(261); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(30); // S^WS | '(:' | 'as' + shiftT(79); // 'as' + } + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_SequenceType(); + lookahead1W(70); // S^WS | '(:' | 'return' + shiftT(220); // 'return' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Statement(); + } + + function parse_VarDeclStatement() + { + eventHandler.startNonterminal("VarDeclStatement", e0); + for (;;) + { + lookahead1W(98); // S^WS | '%' | '(:' | 'variable' + if (l1 != 32) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + shift(262); // 'variable' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(157); // S^WS | '(:' | ',' | ':=' | ';' | 'as' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(145); // S^WS | '(:' | ',' | ':=' | ';' + if (l1 == 52) // ':=' + { + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_VarName(); + lookahead1W(157); // S^WS | '(:' | ',' | ':=' | ';' | 'as' + if (l1 == 79) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(145); // S^WS | '(:' | ',' | ':=' | ';' + if (l1 == 52) // ':=' + { + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + } + shift(53); // ';' + eventHandler.endNonterminal("VarDeclStatement", e0); + } + + function try_VarDeclStatement() + { + for (;;) + { + lookahead1W(98); // S^WS | '%' | '(:' | 'variable' + if (l1 != 32) // '%' + { + break; + } + try_Annotation(); + } + shiftT(262); // 'variable' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(157); // S^WS | '(:' | ',' | ':=' | ';' | 'as' + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(145); // S^WS | '(:' | ',' | ':=' | ';' + if (l1 == 52) // ':=' + { + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + try_VarName(); + lookahead1W(157); // S^WS | '(:' | ',' | ':=' | ';' | 'as' + if (l1 == 79) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(145); // S^WS | '(:' | ',' | ':=' | ';' + if (l1 == 52) // ':=' + { + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + } + shiftT(53); // ';' + } + + function parse_WhileStatement() + { + eventHandler.startNonterminal("WhileStatement", e0); + shift(267); // 'while' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(37); // ')' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Statement(); + eventHandler.endNonterminal("WhileStatement", e0); + } + + function try_WhileStatement() + { + shiftT(267); // 'while' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(37); // ')' + lookahead1W(269); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Statement(); + } + + function parse_VoidStatement() + { + eventHandler.startNonterminal("VoidStatement", e0); + shift(53); // ';' + eventHandler.endNonterminal("VoidStatement", e0); + } + + function try_VoidStatement() + { + shiftT(53); // ';' + } + + function parse_ExprSingle() + { + eventHandler.startNonterminal("ExprSingle", e0); + switch (l1) + { + case 137: // 'for' + lookahead2W(235); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'sliding' | 'stable' | 'start' | 'to' | 'treat' | 'tumbling' | 'union' | + // 'where' | 'with' | '|' | '||' | '|}' | '}' + break; + case 174: // 'let' + lookahead2W(232); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'score' | 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | + // '|' | '||' | '|}' | '}' + break; + case 250: // 'try' + lookahead2W(231); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | '{' | '|' | + // '||' | '|}' | '}' + break; + case 152: // 'if' + case 243: // 'switch' + case 253: // 'typeswitch' + lookahead2W(228); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | '|' | '||' | + // '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 16009: // 'for' '$' + case 16046: // 'let' '$' + case 116910: // 'let' 'score' + case 119945: // 'for' 'sliding' + case 128649: // 'for' 'tumbling' + parse_FLWORExpr(); + break; + case 17560: // 'if' '(' + parse_IfExpr(); + break; + case 17651: // 'switch' '(' + parse_SwitchExpr(); + break; + case 141562: // 'try' '{' + parse_TryCatchExpr(); + break; + case 17661: // 'typeswitch' '(' + parse_TypeswitchExpr(); + break; + default: + parse_ExprSimple(); + } + eventHandler.endNonterminal("ExprSingle", e0); + } + + function try_ExprSingle() + { + switch (l1) + { + case 137: // 'for' + lookahead2W(235); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'sliding' | 'stable' | 'start' | 'to' | 'treat' | 'tumbling' | 'union' | + // 'where' | 'with' | '|' | '||' | '|}' | '}' + break; + case 174: // 'let' + lookahead2W(232); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'score' | 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | + // '|' | '||' | '|}' | '}' + break; + case 250: // 'try' + lookahead2W(231); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | '{' | '|' | + // '||' | '|}' | '}' + break; + case 152: // 'if' + case 243: // 'switch' + case 253: // 'typeswitch' + lookahead2W(228); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | '|' | '||' | + // '|}' | '}' + break; + default: + lk = l1; + } + switch (lk) + { + case 16009: // 'for' '$' + case 16046: // 'let' '$' + case 116910: // 'let' 'score' + case 119945: // 'for' 'sliding' + case 128649: // 'for' 'tumbling' + try_FLWORExpr(); + break; + case 17560: // 'if' '(' + try_IfExpr(); + break; + case 17651: // 'switch' '(' + try_SwitchExpr(); + break; + case 141562: // 'try' '{' + try_TryCatchExpr(); + break; + case 17661: // 'typeswitch' '(' + try_TypeswitchExpr(); + break; + default: + try_ExprSimple(); + } + } + + function parse_ExprSimple() + { + eventHandler.startNonterminal("ExprSimple", e0); + switch (l1) + { + case 77: // 'append' + lookahead2W(230); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'json' | 'le' | + // 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | + // 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | + // '|' | '||' | '|}' | '}' + break; + case 218: // 'rename' + lookahead2W(233); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'json' | 'le' | + // 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'node' | 'only' | 'or' | 'order' | + // 'return' | 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | 'union' | + // 'where' | 'with' | '|' | '||' | '|}' | '}' + break; + case 219: // 'replace' + lookahead2W(234); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'node' | 'only' | 'or' | 'order' | 'return' | + // 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | 'union' | 'value' | 'where' | + // 'with' | '|' | '||' | '|}' | '}' + break; + case 110: // 'delete' + case 159: // 'insert' + lookahead2W(236); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'json' | 'le' | + // 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'node' | 'nodes' | 'only' | 'or' | + // 'order' | 'return' | 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | '|' | '||' | '|}' | '}' + break; + case 103: // 'copy' + case 129: // 'every' + case 235: // 'some' + lookahead2W(229); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | '|' | '||' | + // '|}' | '}' + break; + default: + lk = l1; + } + if (lk == 133851) // 'replace' 'value' + { + lk = memoized(9, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_ReplaceExpr(); + lk = -6; + } + catch (p6A) + { + lk = -11; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(9, e0, lk); + } + } + switch (lk) + { + case 16001: // 'every' '$' + case 16107: // 'some' '$' + parse_QuantifiedExpr(); + break; + case 97951: // 'insert' 'node' + case 98463: // 'insert' 'nodes' + parse_InsertExpr(); + break; + case 97902: // 'delete' 'node' + case 98414: // 'delete' 'nodes' + parse_DeleteExpr(); + break; + case 98010: // 'rename' 'node' + parse_RenameExpr(); + break; + case -6: + case 98011: // 'replace' 'node' + parse_ReplaceExpr(); + break; + case 15975: // 'copy' '$' + parse_TransformExpr(); + break; + case 85102: // 'delete' 'json' + parse_JSONDeleteExpr(); + break; + case 85151: // 'insert' 'json' + parse_JSONInsertExpr(); + break; + case 85210: // 'rename' 'json' + parse_JSONRenameExpr(); + break; + case -11: + parse_JSONReplaceExpr(); + break; + case 85069: // 'append' 'json' + parse_JSONAppendExpr(); + break; + default: + parse_OrExpr(); + } + eventHandler.endNonterminal("ExprSimple", e0); + } + + function try_ExprSimple() + { + switch (l1) + { + case 77: // 'append' + lookahead2W(230); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'json' | 'le' | + // 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | + // 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | + // '|' | '||' | '|}' | '}' + break; + case 218: // 'rename' + lookahead2W(233); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'json' | 'le' | + // 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'node' | 'only' | 'or' | 'order' | + // 'return' | 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | 'union' | + // 'where' | 'with' | '|' | '||' | '|}' | '}' + break; + case 219: // 'replace' + lookahead2W(234); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'node' | 'only' | 'or' | 'order' | 'return' | + // 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | 'union' | 'value' | 'where' | + // 'with' | '|' | '||' | '|}' | '}' + break; + case 110: // 'delete' + case 159: // 'insert' + lookahead2W(236); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + // '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | ']' | + // 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'json' | 'le' | + // 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'node' | 'nodes' | 'only' | 'or' | + // 'order' | 'return' | 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | + // 'union' | 'where' | 'with' | '|' | '||' | '|}' | '}' + break; + case 103: // 'copy' + case 129: // 'every' + case 235: // 'some' + lookahead2W(229); // S^WS | EOF | '!' | '!=' | '#' | '$' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | + // '/' | '//' | ':' | ';' | '<' | '<<' | '<=' | '=' | '>' | '>=' | '>>' | '[' | + // ']' | 'after' | 'and' | 'as' | 'ascending' | 'at' | 'before' | 'case' | 'cast' | + // 'castable' | 'collation' | 'contains' | 'count' | 'default' | 'descending' | + // 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | + // 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | + // 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | + // 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | '|' | '||' | + // '|}' | '}' + break; + default: + lk = l1; + } + if (lk == 133851) // 'replace' 'value' + { + lk = memoized(9, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_ReplaceExpr(); + memoize(9, e0A, -6); + lk = -13; + } + catch (p6A) + { + lk = -11; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(9, e0A, -11); + } + } + } + switch (lk) + { + case 16001: // 'every' '$' + case 16107: // 'some' '$' + try_QuantifiedExpr(); + break; + case 97951: // 'insert' 'node' + case 98463: // 'insert' 'nodes' + try_InsertExpr(); + break; + case 97902: // 'delete' 'node' + case 98414: // 'delete' 'nodes' + try_DeleteExpr(); + break; + case 98010: // 'rename' 'node' + try_RenameExpr(); + break; + case -6: + case 98011: // 'replace' 'node' + try_ReplaceExpr(); + break; + case 15975: // 'copy' '$' + try_TransformExpr(); + break; + case 85102: // 'delete' 'json' + try_JSONDeleteExpr(); + break; + case 85151: // 'insert' 'json' + try_JSONInsertExpr(); + break; + case 85210: // 'rename' 'json' + try_JSONRenameExpr(); + break; + case -11: + try_JSONReplaceExpr(); + break; + case 85069: // 'append' 'json' + try_JSONAppendExpr(); + break; + case -13: + break; + default: + try_OrExpr(); + } + } + + function parse_JSONDeleteExpr() + { + eventHandler.startNonterminal("JSONDeleteExpr", e0); + shift(110); // 'delete' + lookahead1W(56); // S^WS | '(:' | 'json' + shift(166); // 'json' + lookahead1W(263); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '%' | '(' | '(:' | '.' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + whitespace(); + parse_PostfixExpr(); + eventHandler.endNonterminal("JSONDeleteExpr", e0); + } + + function try_JSONDeleteExpr() + { + shiftT(110); // 'delete' + lookahead1W(56); // S^WS | '(:' | 'json' + shiftT(166); // 'json' + lookahead1W(263); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '%' | '(' | '(:' | '.' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + try_PostfixExpr(); + } + + function parse_JSONInsertExpr() + { + eventHandler.startNonterminal("JSONInsertExpr", e0); + switch (l1) + { + case 159: // 'insert' + lookahead2W(56); // S^WS | '(:' | 'json' + break; + default: + lk = l1; + } + lk = memoized(10, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(159); // 'insert' + lookahead1W(56); // S^WS | '(:' | 'json' + shiftT(166); // 'json' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + shiftT(163); // 'into' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + switch (l1) + { + case 81: // 'at' + lookahead2W(69); // S^WS | '(:' | 'position' + break; + default: + lk = l1; + } + if (lk == 108113) // 'at' 'position' + { + lk = memoized(11, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(81); // 'at' + lookahead1W(69); // S^WS | '(:' | 'position' + shiftT(211); // 'position' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + memoize(11, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(11, e0B, -2); + } + lk = -2; + } + } + if (lk == -1) + { + shiftT(81); // 'at' + lookahead1W(69); // S^WS | '(:' | 'position' + shiftT(211); // 'position' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(10, e0, lk); + } + switch (lk) + { + case -1: + shift(159); // 'insert' + lookahead1W(56); // S^WS | '(:' | 'json' + shift(166); // 'json' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(163); // 'into' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + switch (l1) + { + case 81: // 'at' + lookahead2W(69); // S^WS | '(:' | 'position' + break; + default: + lk = l1; + } + if (lk == 108113) // 'at' 'position' + { + lk = memoized(11, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(81); // 'at' + lookahead1W(69); // S^WS | '(:' | 'position' + shiftT(211); // 'position' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + lk = -1; + } + catch (p1B) + { + lk = -2; + } + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(11, e0, lk); + } + } + if (lk == -1) + { + shift(81); // 'at' + lookahead1W(69); // S^WS | '(:' | 'position' + shift(211); // 'position' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + break; + default: + shift(159); // 'insert' + lookahead1W(56); // S^WS | '(:' | 'json' + shift(166); // 'json' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_PairConstructorList(); + shift(163); // 'into' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + } + eventHandler.endNonterminal("JSONInsertExpr", e0); + } + + function try_JSONInsertExpr() + { + switch (l1) + { + case 159: // 'insert' + lookahead2W(56); // S^WS | '(:' | 'json' + break; + default: + lk = l1; + } + lk = memoized(10, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(159); // 'insert' + lookahead1W(56); // S^WS | '(:' | 'json' + shiftT(166); // 'json' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + shiftT(163); // 'into' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + switch (l1) + { + case 81: // 'at' + lookahead2W(69); // S^WS | '(:' | 'position' + break; + default: + lk = l1; + } + if (lk == 108113) // 'at' 'position' + { + lk = memoized(11, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(81); // 'at' + lookahead1W(69); // S^WS | '(:' | 'position' + shiftT(211); // 'position' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + memoize(11, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(11, e0B, -2); + } + lk = -2; + } + } + if (lk == -1) + { + shiftT(81); // 'at' + lookahead1W(69); // S^WS | '(:' | 'position' + shiftT(211); // 'position' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + memoize(10, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(10, e0A, -2); + } + } + switch (lk) + { + case -1: + shiftT(159); // 'insert' + lookahead1W(56); // S^WS | '(:' | 'json' + shiftT(166); // 'json' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + shiftT(163); // 'into' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + switch (l1) + { + case 81: // 'at' + lookahead2W(69); // S^WS | '(:' | 'position' + break; + default: + lk = l1; + } + if (lk == 108113) // 'at' 'position' + { + lk = memoized(11, e0); + if (lk == 0) + { + var b0B = b0; var e0B = e0; var l1B = l1; + var b1B = b1; var e1B = e1; var l2B = l2; + var b2B = b2; var e2B = e2; + try + { + shiftT(81); // 'at' + lookahead1W(69); // S^WS | '(:' | 'position' + shiftT(211); // 'position' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + memoize(11, e0B, -1); + } + catch (p1B) + { + b0 = b0B; e0 = e0B; l1 = l1B; if (l1 == 0) {end = e0B;} else { + b1 = b1B; e1 = e1B; l2 = l2B; if (l2 == 0) {end = e1B;} else { + b2 = b2B; e2 = e2B; end = e2B; }} + memoize(11, e0B, -2); + } + lk = -2; + } + } + if (lk == -1) + { + shiftT(81); // 'at' + lookahead1W(69); // S^WS | '(:' | 'position' + shiftT(211); // 'position' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + break; + case -3: + break; + default: + shiftT(159); // 'insert' + lookahead1W(56); // S^WS | '(:' | 'json' + shiftT(166); // 'json' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_PairConstructorList(); + shiftT(163); // 'into' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + } + + function parse_JSONRenameExpr() + { + eventHandler.startNonterminal("JSONRenameExpr", e0); + shift(218); // 'rename' + lookahead1W(56); // S^WS | '(:' | 'json' + shift(166); // 'json' + lookahead1W(263); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '%' | '(' | '(:' | '.' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + whitespace(); + parse_PostfixExpr(); + shift(79); // 'as' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("JSONRenameExpr", e0); + } + + function try_JSONRenameExpr() + { + shiftT(218); // 'rename' + lookahead1W(56); // S^WS | '(:' | 'json' + shiftT(166); // 'json' + lookahead1W(263); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '%' | '(' | '(:' | '.' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + try_PostfixExpr(); + shiftT(79); // 'as' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_JSONReplaceExpr() + { + eventHandler.startNonterminal("JSONReplaceExpr", e0); + shift(219); // 'replace' + lookahead1W(82); // S^WS | '(:' | 'value' + shift(261); // 'value' + lookahead1W(64); // S^WS | '(:' | 'of' + shift(196); // 'of' + lookahead1W(56); // S^WS | '(:' | 'json' + shift(166); // 'json' + lookahead1W(263); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '%' | '(' | '(:' | '.' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + whitespace(); + parse_PostfixExpr(); + shift(270); // 'with' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("JSONReplaceExpr", e0); + } + + function try_JSONReplaceExpr() + { + shiftT(219); // 'replace' + lookahead1W(82); // S^WS | '(:' | 'value' + shiftT(261); // 'value' + lookahead1W(64); // S^WS | '(:' | 'of' + shiftT(196); // 'of' + lookahead1W(56); // S^WS | '(:' | 'json' + shiftT(166); // 'json' + lookahead1W(263); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + // S^WS | '$' | '%' | '(' | '(:' | '.' | '<' | '<!--' | '<?' | '[' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | + // 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'json' | 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | + // 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | + // 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | 'ordered' | + // 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'structured-item' | 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | + // 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | 'validate' | + // 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' | + // '{|' + try_PostfixExpr(); + shiftT(270); // 'with' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_JSONAppendExpr() + { + eventHandler.startNonterminal("JSONAppendExpr", e0); + shift(77); // 'append' + lookahead1W(56); // S^WS | '(:' | 'json' + shift(166); // 'json' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + shift(163); // 'into' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("JSONAppendExpr", e0); + } + + function try_JSONAppendExpr() + { + shiftT(77); // 'append' + lookahead1W(56); // S^WS | '(:' | 'json' + shiftT(166); // 'json' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + shiftT(163); // 'into' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_CommonContent() + { + eventHandler.startNonterminal("CommonContent", e0); + switch (l1) + { + case 12: // PredefinedEntityRef + shift(12); // PredefinedEntityRef + break; + case 23: // CharRef + shift(23); // CharRef + break; + case 277: // '{{' + shift(277); // '{{' + break; + case 283: // '}}' + shift(283); // '}}' + break; + default: + parse_BlockExpr(); + } + eventHandler.endNonterminal("CommonContent", e0); + } + + function try_CommonContent() + { + switch (l1) + { + case 12: // PredefinedEntityRef + shiftT(12); // PredefinedEntityRef + break; + case 23: // CharRef + shiftT(23); // CharRef + break; + case 277: // '{{' + shiftT(277); // '{{' + break; + case 283: // '}}' + shiftT(283); // '}}' + break; + default: + try_BlockExpr(); + } + } + + function parse_ContentExpr() + { + eventHandler.startNonterminal("ContentExpr", e0); + parse_StatementsAndExpr(); + eventHandler.endNonterminal("ContentExpr", e0); + } + + function try_ContentExpr() + { + try_StatementsAndExpr(); + } + + function parse_CompDocConstructor() + { + eventHandler.startNonterminal("CompDocConstructor", e0); + shift(119); // 'document' + lookahead1W(87); // S^WS | '(:' | '{' + whitespace(); + parse_BlockExpr(); + eventHandler.endNonterminal("CompDocConstructor", e0); + } + + function try_CompDocConstructor() + { + shiftT(119); // 'document' + lookahead1W(87); // S^WS | '(:' | '{' + try_BlockExpr(); + } + + function parse_CompAttrConstructor() + { + eventHandler.startNonterminal("CompAttrConstructor", e0); + shift(82); // 'attribute' + lookahead1W(257); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' + switch (l1) + { + case 276: // '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + break; + default: + whitespace(); + parse_EQName(); + } + lookahead1W(87); // S^WS | '(:' | '{' + switch (l1) + { + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + default: + lk = l1; + } + if (lk == 144660) // '{' '}' + { + lk = memoized(12, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(276); // '{' + lookahead1W(88); // S^WS | '(:' | '}' + shiftT(282); // '}' + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(12, e0, lk); + } + } + switch (lk) + { + case -1: + shift(276); // '{' + lookahead1W(88); // S^WS | '(:' | '}' + shift(282); // '}' + break; + default: + whitespace(); + parse_BlockExpr(); + } + eventHandler.endNonterminal("CompAttrConstructor", e0); + } + + function try_CompAttrConstructor() + { + shiftT(82); // 'attribute' + lookahead1W(257); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' + switch (l1) + { + case 276: // '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + break; + default: + try_EQName(); + } + lookahead1W(87); // S^WS | '(:' | '{' + switch (l1) + { + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + default: + lk = l1; + } + if (lk == 144660) // '{' '}' + { + lk = memoized(12, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(276); // '{' + lookahead1W(88); // S^WS | '(:' | '}' + shiftT(282); // '}' + memoize(12, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(12, e0A, -2); + } + } + } + switch (lk) + { + case -1: + shiftT(276); // '{' + lookahead1W(88); // S^WS | '(:' | '}' + shiftT(282); // '}' + break; + case -3: + break; + default: + try_BlockExpr(); + } + } + + function parse_CompPIConstructor() + { + eventHandler.startNonterminal("CompPIConstructor", e0); + shift(216); // 'processing-instruction' + lookahead1W(250); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' + switch (l1) + { + case 276: // '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_Expr(); + shift(282); // '}' + break; + default: + whitespace(); + parse_NCName(); + } + lookahead1W(87); // S^WS | '(:' | '{' + switch (l1) + { + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + default: + lk = l1; + } + if (lk == 144660) // '{' '}' + { + lk = memoized(13, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(276); // '{' + lookahead1W(88); // S^WS | '(:' | '}' + shiftT(282); // '}' + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(13, e0, lk); + } + } + switch (lk) + { + case -1: + shift(276); // '{' + lookahead1W(88); // S^WS | '(:' | '}' + shift(282); // '}' + break; + default: + whitespace(); + parse_BlockExpr(); + } + eventHandler.endNonterminal("CompPIConstructor", e0); + } + + function try_CompPIConstructor() + { + shiftT(216); // 'processing-instruction' + lookahead1W(250); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' + switch (l1) + { + case 276: // '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_Expr(); + shiftT(282); // '}' + break; + default: + try_NCName(); + } + lookahead1W(87); // S^WS | '(:' | '{' + switch (l1) + { + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + default: + lk = l1; + } + if (lk == 144660) // '{' '}' + { + lk = memoized(13, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + shiftT(276); // '{' + lookahead1W(88); // S^WS | '(:' | '}' + shiftT(282); // '}' + memoize(13, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(13, e0A, -2); + } + } + } + switch (lk) + { + case -1: + shiftT(276); // '{' + lookahead1W(88); // S^WS | '(:' | '}' + shiftT(282); // '}' + break; + case -3: + break; + default: + try_BlockExpr(); + } + } + + function parse_CompCommentConstructor() + { + eventHandler.startNonterminal("CompCommentConstructor", e0); + shift(96); // 'comment' + lookahead1W(87); // S^WS | '(:' | '{' + whitespace(); + parse_BlockExpr(); + eventHandler.endNonterminal("CompCommentConstructor", e0); + } + + function try_CompCommentConstructor() + { + shiftT(96); // 'comment' + lookahead1W(87); // S^WS | '(:' | '{' + try_BlockExpr(); + } + + function parse_CompTextConstructor() + { + eventHandler.startNonterminal("CompTextConstructor", e0); + shift(244); // 'text' + lookahead1W(87); // S^WS | '(:' | '{' + whitespace(); + parse_BlockExpr(); + eventHandler.endNonterminal("CompTextConstructor", e0); + } + + function try_CompTextConstructor() + { + shiftT(244); // 'text' + lookahead1W(87); // S^WS | '(:' | '{' + try_BlockExpr(); + } + + function parse_PrimaryExpr() + { + eventHandler.startNonterminal("PrimaryExpr", e0); + switch (l1) + { + case 184: // 'namespace' + lookahead2W(255); // NCName^Token | S^WS | '#' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' + break; + case 216: // 'processing-instruction' + lookahead2W(253); // NCName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' + break; + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + case 82: // 'attribute' + case 121: // 'element' + lookahead2W(258); // EQName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' + break; + case 96: // 'comment' + case 244: // 'text' + lookahead2W(93); // S^WS | '#' | '(:' | '{' + break; + case 119: // 'document' + case 202: // 'ordered' + case 256: // 'unordered' + lookahead2W(139); // S^WS | '#' | '(' | '(:' | '{' + break; + case 6: // EQName^Token + case 70: // 'after' + case 72: // 'allowing' + case 73: // 'ancestor' + case 74: // 'ancestor-or-self' + case 75: // 'and' + case 77: // 'append' + case 79: // 'as' + case 80: // 'ascending' + case 81: // 'at' + case 83: // 'base-uri' + case 84: // 'before' + case 85: // 'boundary-space' + case 86: // 'break' + case 88: // 'case' + case 89: // 'cast' + case 90: // 'castable' + case 91: // 'catch' + case 93: // 'child' + case 94: // 'collation' + case 97: // 'constraint' + case 98: // 'construction' + case 101: // 'context' + case 102: // 'continue' + case 103: // 'copy' + case 104: // 'copy-namespaces' + case 105: // 'count' + case 106: // 'decimal-format' + case 108: // 'declare' + case 109: // 'default' + case 110: // 'delete' + case 111: // 'descendant' + case 112: // 'descendant-or-self' + case 113: // 'descending' + case 118: // 'div' + case 122: // 'else' + case 123: // 'empty' + case 125: // 'encoding' + case 126: // 'end' + case 128: // 'eq' + case 129: // 'every' + case 131: // 'except' + case 132: // 'exit' + case 133: // 'external' + case 134: // 'first' + case 135: // 'following' + case 136: // 'following-sibling' + case 137: // 'for' + case 141: // 'ft-option' + case 146: // 'ge' + case 148: // 'group' + case 150: // 'gt' + case 151: // 'idiv' + case 153: // 'import' + case 154: // 'in' + case 155: // 'index' + case 159: // 'insert' + case 160: // 'instance' + case 161: // 'integrity' + case 162: // 'intersect' + case 163: // 'into' + case 164: // 'is' + case 166: // 'json' + case 170: // 'last' + case 171: // 'lax' + case 172: // 'le' + case 174: // 'let' + case 176: // 'loop' + case 178: // 'lt' + case 180: // 'mod' + case 181: // 'modify' + case 182: // 'module' + case 186: // 'ne' + case 192: // 'nodes' + case 194: // 'object' + case 198: // 'only' + case 199: // 'option' + case 200: // 'or' + case 201: // 'order' + case 203: // 'ordering' + case 206: // 'parent' + case 212: // 'preceding' + case 213: // 'preceding-sibling' + case 218: // 'rename' + case 219: // 'replace' + case 220: // 'return' + case 221: // 'returning' + case 222: // 'revalidation' + case 224: // 'satisfies' + case 225: // 'schema' + case 228: // 'score' + case 229: // 'self' + case 234: // 'sliding' + case 235: // 'some' + case 236: // 'stable' + case 237: // 'start' + case 240: // 'strict' + case 248: // 'to' + case 249: // 'treat' + case 250: // 'try' + case 251: // 'tumbling' + case 252: // 'type' + case 254: // 'union' + case 257: // 'updating' + case 260: // 'validate' + case 261: // 'value' + case 262: // 'variable' + case 263: // 'version' + case 266: // 'where' + case 267: // 'while' + case 270: // 'with' + case 274: // 'xquery' + lookahead2W(92); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk == 2836 // '{' Wildcard + || lk == 3348 // '{' EQName^Token + || lk == 4372 // '{' IntegerLiteral + || lk == 4884 // '{' DecimalLiteral + || lk == 5396 // '{' DoubleLiteral + || lk == 5908 // '{' StringLiteral + || lk == 16148 // '{' '$' + || lk == 16660 // '{' '%' + || lk == 17684 // '{' '(' + || lk == 18196 // '{' '(#' + || lk == 20756 // '{' '+' + || lk == 21780 // '{' '-' + || lk == 22804 // '{' '.' + || lk == 23316 // '{' '..' + || lk == 23828 // '{' '/' + || lk == 24340 // '{' '//' + || lk == 27924 // '{' '<' + || lk == 28436 // '{' '<!--' + || lk == 30484 // '{' '<?' + || lk == 34068 // '{' '@' + || lk == 35092 // '{' '[' + || lk == 36116 // '{' 'after' + || lk == 37140 // '{' 'allowing' + || lk == 37652 // '{' 'ancestor' + || lk == 38164 // '{' 'ancestor-or-self' + || lk == 38676 // '{' 'and' + || lk == 39700 // '{' 'append' + || lk == 40212 // '{' 'array' + || lk == 40724 // '{' 'as' + || lk == 41236 // '{' 'ascending' + || lk == 41748 // '{' 'at' + || lk == 42260 // '{' 'attribute' + || lk == 42772 // '{' 'base-uri' + || lk == 43284 // '{' 'before' + || lk == 43796 // '{' 'boundary-space' + || lk == 44308 // '{' 'break' + || lk == 45332 // '{' 'case' + || lk == 45844 // '{' 'cast' + || lk == 46356 // '{' 'castable' + || lk == 46868 // '{' 'catch' + || lk == 47892 // '{' 'child' + || lk == 48404 // '{' 'collation' + || lk == 49428 // '{' 'comment' + || lk == 49940 // '{' 'constraint' + || lk == 50452 // '{' 'construction' + || lk == 51988 // '{' 'context' + || lk == 52500 // '{' 'continue' + || lk == 53012 // '{' 'copy' + || lk == 53524 // '{' 'copy-namespaces' + || lk == 54036 // '{' 'count' + || lk == 54548 // '{' 'decimal-format' + || lk == 55572 // '{' 'declare' + || lk == 56084 // '{' 'default' + || lk == 56596 // '{' 'delete' + || lk == 57108 // '{' 'descendant' + || lk == 57620 // '{' 'descendant-or-self' + || lk == 58132 // '{' 'descending' + || lk == 60692 // '{' 'div' + || lk == 61204 // '{' 'document' + || lk == 61716 // '{' 'document-node' + || lk == 62228 // '{' 'element' + || lk == 62740 // '{' 'else' + || lk == 63252 // '{' 'empty' + || lk == 63764 // '{' 'empty-sequence' + || lk == 64276 // '{' 'encoding' + || lk == 64788 // '{' 'end' + || lk == 65812 // '{' 'eq' + || lk == 66324 // '{' 'every' + || lk == 67348 // '{' 'except' + || lk == 67860 // '{' 'exit' + || lk == 68372 // '{' 'external' + || lk == 68884 // '{' 'first' + || lk == 69396 // '{' 'following' + || lk == 69908 // '{' 'following-sibling' + || lk == 70420 // '{' 'for' + || lk == 72468 // '{' 'ft-option' + || lk == 74516 // '{' 'function' + || lk == 75028 // '{' 'ge' + || lk == 76052 // '{' 'group' + || lk == 77076 // '{' 'gt' + || lk == 77588 // '{' 'idiv' + || lk == 78100 // '{' 'if' + || lk == 78612 // '{' 'import' + || lk == 79124 // '{' 'in' + || lk == 79636 // '{' 'index' + || lk == 81684 // '{' 'insert' + || lk == 82196 // '{' 'instance' + || lk == 82708 // '{' 'integrity' + || lk == 83220 // '{' 'intersect' + || lk == 83732 // '{' 'into' + || lk == 84244 // '{' 'is' + || lk == 84756 // '{' 'item' + || lk == 85268 // '{' 'json' + || lk == 85780 // '{' 'json-item' + || lk == 87316 // '{' 'last' + || lk == 87828 // '{' 'lax' + || lk == 88340 // '{' 'le' + || lk == 89364 // '{' 'let' + || lk == 90388 // '{' 'loop' + || lk == 91412 // '{' 'lt' + || lk == 92436 // '{' 'mod' + || lk == 92948 // '{' 'modify' + || lk == 93460 // '{' 'module' + || lk == 94484 // '{' 'namespace' + || lk == 94996 // '{' 'namespace-node' + || lk == 95508 // '{' 'ne' + || lk == 98068 // '{' 'node' + || lk == 98580 // '{' 'nodes' + || lk == 99604 // '{' 'object' + || lk == 101652 // '{' 'only' + || lk == 102164 // '{' 'option' + || lk == 102676 // '{' 'or' + || lk == 103188 // '{' 'order' + || lk == 103700 // '{' 'ordered' + || lk == 104212 // '{' 'ordering' + || lk == 105748 // '{' 'parent' + || lk == 108820 // '{' 'preceding' + || lk == 109332 // '{' 'preceding-sibling' + || lk == 110868 // '{' 'processing-instruction' + || lk == 111892 // '{' 'rename' + || lk == 112404 // '{' 'replace' + || lk == 112916 // '{' 'return' + || lk == 113428 // '{' 'returning' + || lk == 113940 // '{' 'revalidation' + || lk == 114964 // '{' 'satisfies' + || lk == 115476 // '{' 'schema' + || lk == 115988 // '{' 'schema-attribute' + || lk == 116500 // '{' 'schema-element' + || lk == 117012 // '{' 'score' + || lk == 117524 // '{' 'self' + || lk == 120084 // '{' 'sliding' + || lk == 120596 // '{' 'some' + || lk == 121108 // '{' 'stable' + || lk == 121620 // '{' 'start' + || lk == 123156 // '{' 'strict' + || lk == 124180 // '{' 'structured-item' + || lk == 124692 // '{' 'switch' + || lk == 125204 // '{' 'text' + || lk == 127252 // '{' 'to' + || lk == 127764 // '{' 'treat' + || lk == 128276 // '{' 'try' + || lk == 128788 // '{' 'tumbling' + || lk == 129300 // '{' 'type' + || lk == 129812 // '{' 'typeswitch' + || lk == 130324 // '{' 'union' + || lk == 131348 // '{' 'unordered' + || lk == 131860 // '{' 'updating' + || lk == 133396 // '{' 'validate' + || lk == 133908 // '{' 'value' + || lk == 134420 // '{' 'variable' + || lk == 134932 // '{' 'version' + || lk == 136468 // '{' 'where' + || lk == 136980 // '{' 'while' + || lk == 138516 // '{' 'with' + || lk == 140564 // '{' 'xquery' + || lk == 141588 // '{' '{' + || lk == 142612 // '{' '{|' + || lk == 144660) // '{' '}' + { + lk = memoized(14, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_BlockExpr(); + lk = -10; + } + catch (p10A) + { + lk = -11; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(14, e0, lk); + } + } + switch (lk) + { + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + parse_Literal(); + break; + case 31: // '$' + parse_VarRef(); + break; + case 34: // '(' + parse_ParenthesizedExpr(); + break; + case 44: // '.' + parse_ContextItemExpr(); + break; + case 17414: // EQName^Token '(' + case 17478: // 'after' '(' + case 17480: // 'allowing' '(' + case 17481: // 'ancestor' '(' + case 17482: // 'ancestor-or-self' '(' + case 17483: // 'and' '(' + case 17485: // 'append' '(' + case 17487: // 'as' '(' + case 17488: // 'ascending' '(' + case 17489: // 'at' '(' + case 17491: // 'base-uri' '(' + case 17492: // 'before' '(' + case 17493: // 'boundary-space' '(' + case 17494: // 'break' '(' + case 17496: // 'case' '(' + case 17497: // 'cast' '(' + case 17498: // 'castable' '(' + case 17499: // 'catch' '(' + case 17501: // 'child' '(' + case 17502: // 'collation' '(' + case 17505: // 'constraint' '(' + case 17506: // 'construction' '(' + case 17509: // 'context' '(' + case 17510: // 'continue' '(' + case 17511: // 'copy' '(' + case 17512: // 'copy-namespaces' '(' + case 17513: // 'count' '(' + case 17514: // 'decimal-format' '(' + case 17516: // 'declare' '(' + case 17517: // 'default' '(' + case 17518: // 'delete' '(' + case 17519: // 'descendant' '(' + case 17520: // 'descendant-or-self' '(' + case 17521: // 'descending' '(' + case 17526: // 'div' '(' + case 17527: // 'document' '(' + case 17530: // 'else' '(' + case 17531: // 'empty' '(' + case 17533: // 'encoding' '(' + case 17534: // 'end' '(' + case 17536: // 'eq' '(' + case 17537: // 'every' '(' + case 17539: // 'except' '(' + case 17540: // 'exit' '(' + case 17541: // 'external' '(' + case 17542: // 'first' '(' + case 17543: // 'following' '(' + case 17544: // 'following-sibling' '(' + case 17545: // 'for' '(' + case 17549: // 'ft-option' '(' + case 17554: // 'ge' '(' + case 17556: // 'group' '(' + case 17558: // 'gt' '(' + case 17559: // 'idiv' '(' + case 17561: // 'import' '(' + case 17562: // 'in' '(' + case 17563: // 'index' '(' + case 17567: // 'insert' '(' + case 17568: // 'instance' '(' + case 17569: // 'integrity' '(' + case 17570: // 'intersect' '(' + case 17571: // 'into' '(' + case 17572: // 'is' '(' + case 17574: // 'json' '(' + case 17578: // 'last' '(' + case 17579: // 'lax' '(' + case 17580: // 'le' '(' + case 17582: // 'let' '(' + case 17584: // 'loop' '(' + case 17586: // 'lt' '(' + case 17588: // 'mod' '(' + case 17589: // 'modify' '(' + case 17590: // 'module' '(' + case 17592: // 'namespace' '(' + case 17594: // 'ne' '(' + case 17600: // 'nodes' '(' + case 17602: // 'object' '(' + case 17606: // 'only' '(' + case 17607: // 'option' '(' + case 17608: // 'or' '(' + case 17609: // 'order' '(' + case 17610: // 'ordered' '(' + case 17611: // 'ordering' '(' + case 17614: // 'parent' '(' + case 17620: // 'preceding' '(' + case 17621: // 'preceding-sibling' '(' + case 17626: // 'rename' '(' + case 17627: // 'replace' '(' + case 17628: // 'return' '(' + case 17629: // 'returning' '(' + case 17630: // 'revalidation' '(' + case 17632: // 'satisfies' '(' + case 17633: // 'schema' '(' + case 17636: // 'score' '(' + case 17637: // 'self' '(' + case 17642: // 'sliding' '(' + case 17643: // 'some' '(' + case 17644: // 'stable' '(' + case 17645: // 'start' '(' + case 17648: // 'strict' '(' + case 17656: // 'to' '(' + case 17657: // 'treat' '(' + case 17658: // 'try' '(' + case 17659: // 'tumbling' '(' + case 17660: // 'type' '(' + case 17662: // 'union' '(' + case 17664: // 'unordered' '(' + case 17665: // 'updating' '(' + case 17668: // 'validate' '(' + case 17669: // 'value' '(' + case 17670: // 'variable' '(' + case 17671: // 'version' '(' + case 17674: // 'where' '(' + case 17675: // 'while' '(' + case 17678: // 'with' '(' + case 17682: // 'xquery' '(' + parse_FunctionCall(); + break; + case 141514: // 'ordered' '{' + parse_OrderedExpr(); + break; + case 141568: // 'unordered' '{' + parse_UnorderedExpr(); + break; + case 32: // '%' + case 78: // 'array' + case 120: // 'document-node' + case 124: // 'empty-sequence' + case 145: // 'function' + case 152: // 'if' + case 165: // 'item' + case 167: // 'json-item' + case 185: // 'namespace-node' + case 191: // 'node' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 242: // 'structured-item' + case 243: // 'switch' + case 253: // 'typeswitch' + case 14854: // EQName^Token '#' + case 14918: // 'after' '#' + case 14920: // 'allowing' '#' + case 14921: // 'ancestor' '#' + case 14922: // 'ancestor-or-self' '#' + case 14923: // 'and' '#' + case 14925: // 'append' '#' + case 14927: // 'as' '#' + case 14928: // 'ascending' '#' + case 14929: // 'at' '#' + case 14930: // 'attribute' '#' + case 14931: // 'base-uri' '#' + case 14932: // 'before' '#' + case 14933: // 'boundary-space' '#' + case 14934: // 'break' '#' + case 14936: // 'case' '#' + case 14937: // 'cast' '#' + case 14938: // 'castable' '#' + case 14939: // 'catch' '#' + case 14941: // 'child' '#' + case 14942: // 'collation' '#' + case 14944: // 'comment' '#' + case 14945: // 'constraint' '#' + case 14946: // 'construction' '#' + case 14949: // 'context' '#' + case 14950: // 'continue' '#' + case 14951: // 'copy' '#' + case 14952: // 'copy-namespaces' '#' + case 14953: // 'count' '#' + case 14954: // 'decimal-format' '#' + case 14956: // 'declare' '#' + case 14957: // 'default' '#' + case 14958: // 'delete' '#' + case 14959: // 'descendant' '#' + case 14960: // 'descendant-or-self' '#' + case 14961: // 'descending' '#' + case 14966: // 'div' '#' + case 14967: // 'document' '#' + case 14969: // 'element' '#' + case 14970: // 'else' '#' + case 14971: // 'empty' '#' + case 14973: // 'encoding' '#' + case 14974: // 'end' '#' + case 14976: // 'eq' '#' + case 14977: // 'every' '#' + case 14979: // 'except' '#' + case 14980: // 'exit' '#' + case 14981: // 'external' '#' + case 14982: // 'first' '#' + case 14983: // 'following' '#' + case 14984: // 'following-sibling' '#' + case 14985: // 'for' '#' + case 14989: // 'ft-option' '#' + case 14994: // 'ge' '#' + case 14996: // 'group' '#' + case 14998: // 'gt' '#' + case 14999: // 'idiv' '#' + case 15001: // 'import' '#' + case 15002: // 'in' '#' + case 15003: // 'index' '#' + case 15007: // 'insert' '#' + case 15008: // 'instance' '#' + case 15009: // 'integrity' '#' + case 15010: // 'intersect' '#' + case 15011: // 'into' '#' + case 15012: // 'is' '#' + case 15014: // 'json' '#' + case 15018: // 'last' '#' + case 15019: // 'lax' '#' + case 15020: // 'le' '#' + case 15022: // 'let' '#' + case 15024: // 'loop' '#' + case 15026: // 'lt' '#' + case 15028: // 'mod' '#' + case 15029: // 'modify' '#' + case 15030: // 'module' '#' + case 15032: // 'namespace' '#' + case 15034: // 'ne' '#' + case 15040: // 'nodes' '#' + case 15042: // 'object' '#' + case 15046: // 'only' '#' + case 15047: // 'option' '#' + case 15048: // 'or' '#' + case 15049: // 'order' '#' + case 15050: // 'ordered' '#' + case 15051: // 'ordering' '#' + case 15054: // 'parent' '#' + case 15060: // 'preceding' '#' + case 15061: // 'preceding-sibling' '#' + case 15064: // 'processing-instruction' '#' + case 15066: // 'rename' '#' + case 15067: // 'replace' '#' + case 15068: // 'return' '#' + case 15069: // 'returning' '#' + case 15070: // 'revalidation' '#' + case 15072: // 'satisfies' '#' + case 15073: // 'schema' '#' + case 15076: // 'score' '#' + case 15077: // 'self' '#' + case 15082: // 'sliding' '#' + case 15083: // 'some' '#' + case 15084: // 'stable' '#' + case 15085: // 'start' '#' + case 15088: // 'strict' '#' + case 15092: // 'text' '#' + case 15096: // 'to' '#' + case 15097: // 'treat' '#' + case 15098: // 'try' '#' + case 15099: // 'tumbling' '#' + case 15100: // 'type' '#' + case 15102: // 'union' '#' + case 15104: // 'unordered' '#' + case 15105: // 'updating' '#' + case 15108: // 'validate' '#' + case 15109: // 'value' '#' + case 15110: // 'variable' '#' + case 15111: // 'version' '#' + case 15114: // 'where' '#' + case 15115: // 'while' '#' + case 15118: // 'with' '#' + case 15122: // 'xquery' '#' + parse_FunctionItemExpr(); + break; + case -10: + case 27412: // '{' ';' + parse_BlockExpr(); + break; + case -11: + parse_ObjectConstructor(); + break; + case 68: // '[' + parse_ArrayConstructor(); + break; + case 278: // '{|' + parse_JSONSimpleObjectUnion(); + break; + default: + parse_Constructor(); + } + eventHandler.endNonterminal("PrimaryExpr", e0); + } + + function try_PrimaryExpr() + { + switch (l1) + { + case 184: // 'namespace' + lookahead2W(255); // NCName^Token | S^WS | '#' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' + break; + case 216: // 'processing-instruction' + lookahead2W(253); // NCName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'as' | 'ascending' | 'at' | 'attribute' | + // 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | 'cast' | + // 'castable' | 'catch' | 'child' | 'collation' | 'comment' | 'constraint' | + // 'construction' | 'context' | 'continue' | 'copy' | 'copy-namespaces' | 'count' | + // 'decimal-format' | 'declare' | 'default' | 'delete' | 'descendant' | + // 'descendant-or-self' | 'descending' | 'div' | 'document' | 'document-node' | + // 'element' | 'else' | 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | + // 'every' | 'except' | 'exit' | 'external' | 'first' | 'following' | + // 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | + // 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | 'instance' | 'integrity' | + // 'intersect' | 'into' | 'is' | 'item' | 'json' | 'last' | 'lax' | 'le' | 'let' | + // 'loop' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'namespace-node' | + // 'ne' | 'node' | 'nodes' | 'object' | 'only' | 'option' | 'or' | 'order' | + // 'ordered' | 'ordering' | 'parent' | 'preceding' | 'preceding-sibling' | + // 'processing-instruction' | 'rename' | 'replace' | 'return' | 'returning' | + // 'revalidation' | 'satisfies' | 'schema' | 'schema-attribute' | 'schema-element' | + // 'score' | 'self' | 'sliding' | 'some' | 'stable' | 'start' | 'strict' | + // 'switch' | 'text' | 'to' | 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | + // 'union' | 'unordered' | 'updating' | 'validate' | 'value' | 'variable' | + // 'version' | 'where' | 'while' | 'with' | 'xquery' | '{' + break; + case 276: // '{' + lookahead2W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + break; + case 82: // 'attribute' + case 121: // 'element' + lookahead2W(258); // EQName^Token | S^WS | '#' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' + break; + case 96: // 'comment' + case 244: // 'text' + lookahead2W(93); // S^WS | '#' | '(:' | '{' + break; + case 119: // 'document' + case 202: // 'ordered' + case 256: // 'unordered' + lookahead2W(139); // S^WS | '#' | '(' | '(:' | '{' + break; + case 6: // EQName^Token + case 70: // 'after' + case 72: // 'allowing' + case 73: // 'ancestor' + case 74: // 'ancestor-or-self' + case 75: // 'and' + case 77: // 'append' + case 79: // 'as' + case 80: // 'ascending' + case 81: // 'at' + case 83: // 'base-uri' + case 84: // 'before' + case 85: // 'boundary-space' + case 86: // 'break' + case 88: // 'case' + case 89: // 'cast' + case 90: // 'castable' + case 91: // 'catch' + case 93: // 'child' + case 94: // 'collation' + case 97: // 'constraint' + case 98: // 'construction' + case 101: // 'context' + case 102: // 'continue' + case 103: // 'copy' + case 104: // 'copy-namespaces' + case 105: // 'count' + case 106: // 'decimal-format' + case 108: // 'declare' + case 109: // 'default' + case 110: // 'delete' + case 111: // 'descendant' + case 112: // 'descendant-or-self' + case 113: // 'descending' + case 118: // 'div' + case 122: // 'else' + case 123: // 'empty' + case 125: // 'encoding' + case 126: // 'end' + case 128: // 'eq' + case 129: // 'every' + case 131: // 'except' + case 132: // 'exit' + case 133: // 'external' + case 134: // 'first' + case 135: // 'following' + case 136: // 'following-sibling' + case 137: // 'for' + case 141: // 'ft-option' + case 146: // 'ge' + case 148: // 'group' + case 150: // 'gt' + case 151: // 'idiv' + case 153: // 'import' + case 154: // 'in' + case 155: // 'index' + case 159: // 'insert' + case 160: // 'instance' + case 161: // 'integrity' + case 162: // 'intersect' + case 163: // 'into' + case 164: // 'is' + case 166: // 'json' + case 170: // 'last' + case 171: // 'lax' + case 172: // 'le' + case 174: // 'let' + case 176: // 'loop' + case 178: // 'lt' + case 180: // 'mod' + case 181: // 'modify' + case 182: // 'module' + case 186: // 'ne' + case 192: // 'nodes' + case 194: // 'object' + case 198: // 'only' + case 199: // 'option' + case 200: // 'or' + case 201: // 'order' + case 203: // 'ordering' + case 206: // 'parent' + case 212: // 'preceding' + case 213: // 'preceding-sibling' + case 218: // 'rename' + case 219: // 'replace' + case 220: // 'return' + case 221: // 'returning' + case 222: // 'revalidation' + case 224: // 'satisfies' + case 225: // 'schema' + case 228: // 'score' + case 229: // 'self' + case 234: // 'sliding' + case 235: // 'some' + case 236: // 'stable' + case 237: // 'start' + case 240: // 'strict' + case 248: // 'to' + case 249: // 'treat' + case 250: // 'try' + case 251: // 'tumbling' + case 252: // 'type' + case 254: // 'union' + case 257: // 'updating' + case 260: // 'validate' + case 261: // 'value' + case 262: // 'variable' + case 263: // 'version' + case 266: // 'where' + case 267: // 'while' + case 270: // 'with' + case 274: // 'xquery' + lookahead2W(92); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + if (lk == 2836 // '{' Wildcard + || lk == 3348 // '{' EQName^Token + || lk == 4372 // '{' IntegerLiteral + || lk == 4884 // '{' DecimalLiteral + || lk == 5396 // '{' DoubleLiteral + || lk == 5908 // '{' StringLiteral + || lk == 16148 // '{' '$' + || lk == 16660 // '{' '%' + || lk == 17684 // '{' '(' + || lk == 18196 // '{' '(#' + || lk == 20756 // '{' '+' + || lk == 21780 // '{' '-' + || lk == 22804 // '{' '.' + || lk == 23316 // '{' '..' + || lk == 23828 // '{' '/' + || lk == 24340 // '{' '//' + || lk == 27924 // '{' '<' + || lk == 28436 // '{' '<!--' + || lk == 30484 // '{' '<?' + || lk == 34068 // '{' '@' + || lk == 35092 // '{' '[' + || lk == 36116 // '{' 'after' + || lk == 37140 // '{' 'allowing' + || lk == 37652 // '{' 'ancestor' + || lk == 38164 // '{' 'ancestor-or-self' + || lk == 38676 // '{' 'and' + || lk == 39700 // '{' 'append' + || lk == 40212 // '{' 'array' + || lk == 40724 // '{' 'as' + || lk == 41236 // '{' 'ascending' + || lk == 41748 // '{' 'at' + || lk == 42260 // '{' 'attribute' + || lk == 42772 // '{' 'base-uri' + || lk == 43284 // '{' 'before' + || lk == 43796 // '{' 'boundary-space' + || lk == 44308 // '{' 'break' + || lk == 45332 // '{' 'case' + || lk == 45844 // '{' 'cast' + || lk == 46356 // '{' 'castable' + || lk == 46868 // '{' 'catch' + || lk == 47892 // '{' 'child' + || lk == 48404 // '{' 'collation' + || lk == 49428 // '{' 'comment' + || lk == 49940 // '{' 'constraint' + || lk == 50452 // '{' 'construction' + || lk == 51988 // '{' 'context' + || lk == 52500 // '{' 'continue' + || lk == 53012 // '{' 'copy' + || lk == 53524 // '{' 'copy-namespaces' + || lk == 54036 // '{' 'count' + || lk == 54548 // '{' 'decimal-format' + || lk == 55572 // '{' 'declare' + || lk == 56084 // '{' 'default' + || lk == 56596 // '{' 'delete' + || lk == 57108 // '{' 'descendant' + || lk == 57620 // '{' 'descendant-or-self' + || lk == 58132 // '{' 'descending' + || lk == 60692 // '{' 'div' + || lk == 61204 // '{' 'document' + || lk == 61716 // '{' 'document-node' + || lk == 62228 // '{' 'element' + || lk == 62740 // '{' 'else' + || lk == 63252 // '{' 'empty' + || lk == 63764 // '{' 'empty-sequence' + || lk == 64276 // '{' 'encoding' + || lk == 64788 // '{' 'end' + || lk == 65812 // '{' 'eq' + || lk == 66324 // '{' 'every' + || lk == 67348 // '{' 'except' + || lk == 67860 // '{' 'exit' + || lk == 68372 // '{' 'external' + || lk == 68884 // '{' 'first' + || lk == 69396 // '{' 'following' + || lk == 69908 // '{' 'following-sibling' + || lk == 70420 // '{' 'for' + || lk == 72468 // '{' 'ft-option' + || lk == 74516 // '{' 'function' + || lk == 75028 // '{' 'ge' + || lk == 76052 // '{' 'group' + || lk == 77076 // '{' 'gt' + || lk == 77588 // '{' 'idiv' + || lk == 78100 // '{' 'if' + || lk == 78612 // '{' 'import' + || lk == 79124 // '{' 'in' + || lk == 79636 // '{' 'index' + || lk == 81684 // '{' 'insert' + || lk == 82196 // '{' 'instance' + || lk == 82708 // '{' 'integrity' + || lk == 83220 // '{' 'intersect' + || lk == 83732 // '{' 'into' + || lk == 84244 // '{' 'is' + || lk == 84756 // '{' 'item' + || lk == 85268 // '{' 'json' + || lk == 85780 // '{' 'json-item' + || lk == 87316 // '{' 'last' + || lk == 87828 // '{' 'lax' + || lk == 88340 // '{' 'le' + || lk == 89364 // '{' 'let' + || lk == 90388 // '{' 'loop' + || lk == 91412 // '{' 'lt' + || lk == 92436 // '{' 'mod' + || lk == 92948 // '{' 'modify' + || lk == 93460 // '{' 'module' + || lk == 94484 // '{' 'namespace' + || lk == 94996 // '{' 'namespace-node' + || lk == 95508 // '{' 'ne' + || lk == 98068 // '{' 'node' + || lk == 98580 // '{' 'nodes' + || lk == 99604 // '{' 'object' + || lk == 101652 // '{' 'only' + || lk == 102164 // '{' 'option' + || lk == 102676 // '{' 'or' + || lk == 103188 // '{' 'order' + || lk == 103700 // '{' 'ordered' + || lk == 104212 // '{' 'ordering' + || lk == 105748 // '{' 'parent' + || lk == 108820 // '{' 'preceding' + || lk == 109332 // '{' 'preceding-sibling' + || lk == 110868 // '{' 'processing-instruction' + || lk == 111892 // '{' 'rename' + || lk == 112404 // '{' 'replace' + || lk == 112916 // '{' 'return' + || lk == 113428 // '{' 'returning' + || lk == 113940 // '{' 'revalidation' + || lk == 114964 // '{' 'satisfies' + || lk == 115476 // '{' 'schema' + || lk == 115988 // '{' 'schema-attribute' + || lk == 116500 // '{' 'schema-element' + || lk == 117012 // '{' 'score' + || lk == 117524 // '{' 'self' + || lk == 120084 // '{' 'sliding' + || lk == 120596 // '{' 'some' + || lk == 121108 // '{' 'stable' + || lk == 121620 // '{' 'start' + || lk == 123156 // '{' 'strict' + || lk == 124180 // '{' 'structured-item' + || lk == 124692 // '{' 'switch' + || lk == 125204 // '{' 'text' + || lk == 127252 // '{' 'to' + || lk == 127764 // '{' 'treat' + || lk == 128276 // '{' 'try' + || lk == 128788 // '{' 'tumbling' + || lk == 129300 // '{' 'type' + || lk == 129812 // '{' 'typeswitch' + || lk == 130324 // '{' 'union' + || lk == 131348 // '{' 'unordered' + || lk == 131860 // '{' 'updating' + || lk == 133396 // '{' 'validate' + || lk == 133908 // '{' 'value' + || lk == 134420 // '{' 'variable' + || lk == 134932 // '{' 'version' + || lk == 136468 // '{' 'where' + || lk == 136980 // '{' 'while' + || lk == 138516 // '{' 'with' + || lk == 140564 // '{' 'xquery' + || lk == 141588 // '{' '{' + || lk == 142612 // '{' '{|' + || lk == 144660) // '{' '}' + { + lk = memoized(14, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_BlockExpr(); + memoize(14, e0A, -10); + lk = -14; + } + catch (p10A) + { + lk = -11; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(14, e0A, -11); + } + } + } + switch (lk) + { + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + try_Literal(); + break; + case 31: // '$' + try_VarRef(); + break; + case 34: // '(' + try_ParenthesizedExpr(); + break; + case 44: // '.' + try_ContextItemExpr(); + break; + case 17414: // EQName^Token '(' + case 17478: // 'after' '(' + case 17480: // 'allowing' '(' + case 17481: // 'ancestor' '(' + case 17482: // 'ancestor-or-self' '(' + case 17483: // 'and' '(' + case 17485: // 'append' '(' + case 17487: // 'as' '(' + case 17488: // 'ascending' '(' + case 17489: // 'at' '(' + case 17491: // 'base-uri' '(' + case 17492: // 'before' '(' + case 17493: // 'boundary-space' '(' + case 17494: // 'break' '(' + case 17496: // 'case' '(' + case 17497: // 'cast' '(' + case 17498: // 'castable' '(' + case 17499: // 'catch' '(' + case 17501: // 'child' '(' + case 17502: // 'collation' '(' + case 17505: // 'constraint' '(' + case 17506: // 'construction' '(' + case 17509: // 'context' '(' + case 17510: // 'continue' '(' + case 17511: // 'copy' '(' + case 17512: // 'copy-namespaces' '(' + case 17513: // 'count' '(' + case 17514: // 'decimal-format' '(' + case 17516: // 'declare' '(' + case 17517: // 'default' '(' + case 17518: // 'delete' '(' + case 17519: // 'descendant' '(' + case 17520: // 'descendant-or-self' '(' + case 17521: // 'descending' '(' + case 17526: // 'div' '(' + case 17527: // 'document' '(' + case 17530: // 'else' '(' + case 17531: // 'empty' '(' + case 17533: // 'encoding' '(' + case 17534: // 'end' '(' + case 17536: // 'eq' '(' + case 17537: // 'every' '(' + case 17539: // 'except' '(' + case 17540: // 'exit' '(' + case 17541: // 'external' '(' + case 17542: // 'first' '(' + case 17543: // 'following' '(' + case 17544: // 'following-sibling' '(' + case 17545: // 'for' '(' + case 17549: // 'ft-option' '(' + case 17554: // 'ge' '(' + case 17556: // 'group' '(' + case 17558: // 'gt' '(' + case 17559: // 'idiv' '(' + case 17561: // 'import' '(' + case 17562: // 'in' '(' + case 17563: // 'index' '(' + case 17567: // 'insert' '(' + case 17568: // 'instance' '(' + case 17569: // 'integrity' '(' + case 17570: // 'intersect' '(' + case 17571: // 'into' '(' + case 17572: // 'is' '(' + case 17574: // 'json' '(' + case 17578: // 'last' '(' + case 17579: // 'lax' '(' + case 17580: // 'le' '(' + case 17582: // 'let' '(' + case 17584: // 'loop' '(' + case 17586: // 'lt' '(' + case 17588: // 'mod' '(' + case 17589: // 'modify' '(' + case 17590: // 'module' '(' + case 17592: // 'namespace' '(' + case 17594: // 'ne' '(' + case 17600: // 'nodes' '(' + case 17602: // 'object' '(' + case 17606: // 'only' '(' + case 17607: // 'option' '(' + case 17608: // 'or' '(' + case 17609: // 'order' '(' + case 17610: // 'ordered' '(' + case 17611: // 'ordering' '(' + case 17614: // 'parent' '(' + case 17620: // 'preceding' '(' + case 17621: // 'preceding-sibling' '(' + case 17626: // 'rename' '(' + case 17627: // 'replace' '(' + case 17628: // 'return' '(' + case 17629: // 'returning' '(' + case 17630: // 'revalidation' '(' + case 17632: // 'satisfies' '(' + case 17633: // 'schema' '(' + case 17636: // 'score' '(' + case 17637: // 'self' '(' + case 17642: // 'sliding' '(' + case 17643: // 'some' '(' + case 17644: // 'stable' '(' + case 17645: // 'start' '(' + case 17648: // 'strict' '(' + case 17656: // 'to' '(' + case 17657: // 'treat' '(' + case 17658: // 'try' '(' + case 17659: // 'tumbling' '(' + case 17660: // 'type' '(' + case 17662: // 'union' '(' + case 17664: // 'unordered' '(' + case 17665: // 'updating' '(' + case 17668: // 'validate' '(' + case 17669: // 'value' '(' + case 17670: // 'variable' '(' + case 17671: // 'version' '(' + case 17674: // 'where' '(' + case 17675: // 'while' '(' + case 17678: // 'with' '(' + case 17682: // 'xquery' '(' + try_FunctionCall(); + break; + case 141514: // 'ordered' '{' + try_OrderedExpr(); + break; + case 141568: // 'unordered' '{' + try_UnorderedExpr(); + break; + case 32: // '%' + case 78: // 'array' + case 120: // 'document-node' + case 124: // 'empty-sequence' + case 145: // 'function' + case 152: // 'if' + case 165: // 'item' + case 167: // 'json-item' + case 185: // 'namespace-node' + case 191: // 'node' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 242: // 'structured-item' + case 243: // 'switch' + case 253: // 'typeswitch' + case 14854: // EQName^Token '#' + case 14918: // 'after' '#' + case 14920: // 'allowing' '#' + case 14921: // 'ancestor' '#' + case 14922: // 'ancestor-or-self' '#' + case 14923: // 'and' '#' + case 14925: // 'append' '#' + case 14927: // 'as' '#' + case 14928: // 'ascending' '#' + case 14929: // 'at' '#' + case 14930: // 'attribute' '#' + case 14931: // 'base-uri' '#' + case 14932: // 'before' '#' + case 14933: // 'boundary-space' '#' + case 14934: // 'break' '#' + case 14936: // 'case' '#' + case 14937: // 'cast' '#' + case 14938: // 'castable' '#' + case 14939: // 'catch' '#' + case 14941: // 'child' '#' + case 14942: // 'collation' '#' + case 14944: // 'comment' '#' + case 14945: // 'constraint' '#' + case 14946: // 'construction' '#' + case 14949: // 'context' '#' + case 14950: // 'continue' '#' + case 14951: // 'copy' '#' + case 14952: // 'copy-namespaces' '#' + case 14953: // 'count' '#' + case 14954: // 'decimal-format' '#' + case 14956: // 'declare' '#' + case 14957: // 'default' '#' + case 14958: // 'delete' '#' + case 14959: // 'descendant' '#' + case 14960: // 'descendant-or-self' '#' + case 14961: // 'descending' '#' + case 14966: // 'div' '#' + case 14967: // 'document' '#' + case 14969: // 'element' '#' + case 14970: // 'else' '#' + case 14971: // 'empty' '#' + case 14973: // 'encoding' '#' + case 14974: // 'end' '#' + case 14976: // 'eq' '#' + case 14977: // 'every' '#' + case 14979: // 'except' '#' + case 14980: // 'exit' '#' + case 14981: // 'external' '#' + case 14982: // 'first' '#' + case 14983: // 'following' '#' + case 14984: // 'following-sibling' '#' + case 14985: // 'for' '#' + case 14989: // 'ft-option' '#' + case 14994: // 'ge' '#' + case 14996: // 'group' '#' + case 14998: // 'gt' '#' + case 14999: // 'idiv' '#' + case 15001: // 'import' '#' + case 15002: // 'in' '#' + case 15003: // 'index' '#' + case 15007: // 'insert' '#' + case 15008: // 'instance' '#' + case 15009: // 'integrity' '#' + case 15010: // 'intersect' '#' + case 15011: // 'into' '#' + case 15012: // 'is' '#' + case 15014: // 'json' '#' + case 15018: // 'last' '#' + case 15019: // 'lax' '#' + case 15020: // 'le' '#' + case 15022: // 'let' '#' + case 15024: // 'loop' '#' + case 15026: // 'lt' '#' + case 15028: // 'mod' '#' + case 15029: // 'modify' '#' + case 15030: // 'module' '#' + case 15032: // 'namespace' '#' + case 15034: // 'ne' '#' + case 15040: // 'nodes' '#' + case 15042: // 'object' '#' + case 15046: // 'only' '#' + case 15047: // 'option' '#' + case 15048: // 'or' '#' + case 15049: // 'order' '#' + case 15050: // 'ordered' '#' + case 15051: // 'ordering' '#' + case 15054: // 'parent' '#' + case 15060: // 'preceding' '#' + case 15061: // 'preceding-sibling' '#' + case 15064: // 'processing-instruction' '#' + case 15066: // 'rename' '#' + case 15067: // 'replace' '#' + case 15068: // 'return' '#' + case 15069: // 'returning' '#' + case 15070: // 'revalidation' '#' + case 15072: // 'satisfies' '#' + case 15073: // 'schema' '#' + case 15076: // 'score' '#' + case 15077: // 'self' '#' + case 15082: // 'sliding' '#' + case 15083: // 'some' '#' + case 15084: // 'stable' '#' + case 15085: // 'start' '#' + case 15088: // 'strict' '#' + case 15092: // 'text' '#' + case 15096: // 'to' '#' + case 15097: // 'treat' '#' + case 15098: // 'try' '#' + case 15099: // 'tumbling' '#' + case 15100: // 'type' '#' + case 15102: // 'union' '#' + case 15104: // 'unordered' '#' + case 15105: // 'updating' '#' + case 15108: // 'validate' '#' + case 15109: // 'value' '#' + case 15110: // 'variable' '#' + case 15111: // 'version' '#' + case 15114: // 'where' '#' + case 15115: // 'while' '#' + case 15118: // 'with' '#' + case 15122: // 'xquery' '#' + try_FunctionItemExpr(); + break; + case -10: + case 27412: // '{' ';' + try_BlockExpr(); + break; + case -11: + try_ObjectConstructor(); + break; + case 68: // '[' + try_ArrayConstructor(); + break; + case 278: // '{|' + try_JSONSimpleObjectUnion(); + break; + case -14: + break; + default: + try_Constructor(); + } + } + + function parse_JSONSimpleObjectUnion() + { + eventHandler.startNonterminal("JSONSimpleObjectUnion", e0); + shift(278); // '{|' + lookahead1W(272); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '|}' + if (l1 != 281) // '|}' + { + whitespace(); + parse_Expr(); + } + shift(281); // '|}' + eventHandler.endNonterminal("JSONSimpleObjectUnion", e0); + } + + function try_JSONSimpleObjectUnion() + { + shiftT(278); // '{|' + lookahead1W(272); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '|}' + if (l1 != 281) // '|}' + { + try_Expr(); + } + shiftT(281); // '|}' + } + + function parse_ObjectConstructor() + { + eventHandler.startNonterminal("ObjectConstructor", e0); + shift(276); // '{' + lookahead1W(273); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + if (l1 != 282) // '}' + { + whitespace(); + parse_PairConstructorList(); + } + shift(282); // '}' + eventHandler.endNonterminal("ObjectConstructor", e0); + } + + function try_ObjectConstructor() + { + shiftT(276); // '{' + lookahead1W(273); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + if (l1 != 282) // '}' + { + try_PairConstructorList(); + } + shiftT(282); // '}' + } + + function parse_PairConstructorList() + { + eventHandler.startNonterminal("PairConstructorList", e0); + parse_PairConstructor(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_PairConstructor(); + } + eventHandler.endNonterminal("PairConstructorList", e0); + } + + function try_PairConstructorList() + { + try_PairConstructor(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_PairConstructor(); + } + } + + function parse_PairConstructor() + { + eventHandler.startNonterminal("PairConstructor", e0); + parse_ExprSingle(); + shift(49); // ':' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("PairConstructor", e0); + } + + function try_PairConstructor() + { + try_ExprSingle(); + shiftT(49); // ':' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + try_ExprSingle(); + } + + function parse_ArrayConstructor() + { + eventHandler.startNonterminal("ArrayConstructor", e0); + shift(68); // '[' + lookahead1W(271); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | ']' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + if (l1 != 69) // ']' + { + whitespace(); + parse_Expr(); + } + shift(69); // ']' + eventHandler.endNonterminal("ArrayConstructor", e0); + } + + function try_ArrayConstructor() + { + shiftT(68); // '[' + lookahead1W(271); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | '<' | '<!--' | '<?' | '@' | '[' | ']' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' + if (l1 != 69) // ']' + { + try_Expr(); + } + shiftT(69); // ']' + } + + function parse_BlockExpr() + { + eventHandler.startNonterminal("BlockExpr", e0); + shift(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + whitespace(); + parse_StatementsAndOptionalExpr(); + shift(282); // '}' + eventHandler.endNonterminal("BlockExpr", e0); + } + + function try_BlockExpr() + { + shiftT(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + try_StatementsAndOptionalExpr(); + shiftT(282); // '}' + } + + function parse_FunctionDecl() + { + eventHandler.startNonterminal("FunctionDecl", e0); + shift(145); // 'function' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_EQName(); + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(94); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + whitespace(); + parse_ParamList(); + } + shift(37); // ')' + lookahead1W(148); // S^WS | '(:' | 'as' | 'external' | '{' + if (l1 == 79) // 'as' + { + whitespace(); + parse_ReturnType(); + } + lookahead1W(118); // S^WS | '(:' | 'external' | '{' + switch (l1) + { + case 276: // '{' + shift(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // StringLiteral | S^WS | '$' | '%' | '(' | '(#' | '(:' | '+' | '-' | '.' | '..' | + // '/' | '//' | ';' | '<' | '<!--' | '<?' | '@' | '[' | 'after' | 'allowing' | + // 'ancestor' | 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | + // 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | + // 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | + // 'comment' | 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' | '{' | '{|' | '}' + whitespace(); + parse_StatementsAndOptionalExpr(); + shift(282); // '}' + break; + default: + shift(133); // 'external' + } + eventHandler.endNonterminal("FunctionDecl", e0); + } + + function parse_ReturnType() + { + eventHandler.startNonterminal("ReturnType", e0); + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + // 'ancestor-or-self' | 'and' | 'append' | 'array' | 'as' | 'ascending' | 'at' | + // 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | 'case' | + // 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'json' | + // 'json-item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | + // 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'object' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'structured-item' | 'switch' | 'text' | 'to' | + // 'treat' | 'try' | 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | + // 'updating' | 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | + // 'with' | 'xquery' + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("ReturnType", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(XQueryParser.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = l2; if (l1 != 0) { + b1 = b2; e1 = e2; l2 = 0; } + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function shiftT(t) + { + if (l1 == t) + { + b0 = b1; e0 = e1; l1 = l2; if (l1 != 0) { + b1 = b2; e1 = e2; l2 = 0; } + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function skip(code) + { + var b0W = b0; var e0W = e0; var l1W = l1; + var b1W = b1; var e1W = e1; + + l1 = code; b1 = begin; e1 = end; + l2 = 0; + + try_Whitespace(); + + b0 = b0W; e0 = e0W; l1 = l1W; if (l1 != 0) { + b1 = b1W; e1 = e1W; } + } + + function whitespace() + { + if (e0 != b1) + { + eventHandler.whitespace(e0, b1); + e0 = b1; + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 22) // S^WS + { + if (code != 36) // '(:' + { + break; + } + skip(code); + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead2W(set) + { + if (l2 == 0) + { + l2 = matchW(set); + b2 = begin; + e2 = end; + } + lk = (l2 << 9) | l1; + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function lookahead2(set) + { + if (l2 == 0) + { + l2 = match(set); + b2 = begin; + e2 = end; + } + lk = (l2 << 9) | l1; + } + + function error(b, e, s, l, t) + { + if (e >= ex) + { + bx = b; + ex = e; + sx = s; + lx = l; + tx = t; + } + throw new self.ParseException(bx, ex, sx, lx, tx); + } + + var lk, b0, e0; + var l1, b1, e1; + var l2, b2, e2; + var bx, ex, sx, lx, tx; + var eventHandler; + var memo; + + function memoize(i, e, v) + { + memo[(e << 4) + i] = v; + } + + function memoized(i, e) + { + var v = memo[(e << 4) + i]; + return typeof v != "undefined" ? v : 0; + } + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = XQueryParser.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = XQueryParser.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = XQueryParser.MAP1[(c0 & 15) + XQueryParser.MAP1[(c1 & 31) + XQueryParser.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (XQueryParser.MAP2[m] > c0) hi = m - 1; + else if (XQueryParser.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = XQueryParser.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = XQueryParser.TRANSITION[(i0 & 15) + XQueryParser.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +XQueryParser.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : XQueryParser.INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 284; i += 32) + { + var j = i; + var i0 = (i >> 5) * 3612 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = XQueryParser.EXPECTED[(i0 & 3) + XQueryParser.EXPECTED[(i1 & 3) + XQueryParser.EXPECTED[(i2 & 15) + XQueryParser.EXPECTED[i2 >> 4]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(XQueryParser.TOKEN[j]); + } + } + } + return set; +}; + +XQueryParser.MAP0 = +[ + /* 0 */ 70, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, + /* 36 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, + /* 64 */ 24, 25, 26, 27, 28, 29, 26, 30, 30, 30, 30, 30, 31, 32, 33, 30, 30, 34, 30, 30, 35, 30, 30, 30, 36, 30, 30, + /* 91 */ 37, 38, 39, 38, 30, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + /* 118 */ 61, 62, 63, 64, 65, 66, 67, 68, 38, 38 +]; + +XQueryParser.MAP1 = +[ + /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, + /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 105 */ 214, 214, 214, 247, 261, 277, 293, 309, 355, 371, 387, 423, 423, 423, 415, 339, 331, 339, 331, 339, 339, + /* 126 */ 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 440, 440, 440, 440, 440, 440, 440, + /* 147 */ 324, 339, 339, 339, 339, 339, 339, 339, 339, 401, 423, 423, 424, 422, 423, 423, 339, 339, 339, 339, 339, + /* 168 */ 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 423, 423, 423, 423, 423, 423, 423, 423, + /* 189 */ 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + /* 210 */ 423, 423, 423, 338, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + /* 231 */ 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 423, 70, 0, 0, 0, 0, 0, 0, 0, 0, + /* 256 */ 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + /* 290 */ 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 26, 30, + /* 317 */ 30, 30, 30, 30, 31, 32, 33, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 38, 30, 30, 30, 30, 30, + /* 344 */ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 34, 30, 30, 35, 30, 30, 30, 36, 30, 30, 37, 38, 39, 38, 30, + /* 371 */ 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + /* 398 */ 66, 67, 68, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 30, 30, 38, 38, 38, 38, 38, 38, 38, 69, 38, 38, + /* 425 */ 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + /* 452 */ 69, 69, 69, 69 +]; + +XQueryParser.MAP2 = +[ + /* 0 */ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 38, 30, 38, 30, 30, + /* 17 */ 38 +]; + +XQueryParser.INITIAL = +[ + /* 0 */ 1, 12290, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + /* 28 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + /* 55 */ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + /* 82 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + /* 107 */ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + /* 128 */ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + /* 149 */ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + /* 170 */ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + /* 191 */ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + /* 212 */ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + /* 233 */ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + /* 254 */ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + /* 275 */ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286 +]; + +XQueryParser.TRANSITION = +[ + /* 0 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 30 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 45 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 60 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 75 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 90 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 105 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 120 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 135 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 150 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 165 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 180 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 195 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 210 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 225 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 240 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 255 */ 38672, 25307, 18176, 18180, 18180, 18180, 18210, 18180, 18180, 18180, 18180, 18222, 18180, 18180, 18180, + /* 270 */ 18180, 18198, 18180, 18182, 18238, 38672, 38672, 38672, 43215, 38672, 38672, 50505, 38672, 38672, 38672, + /* 285 */ 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 35990, 45351, 38672, 18269, 42564, 29641, + /* 300 */ 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, + /* 315 */ 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, + /* 330 */ 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, + /* 345 */ 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, + /* 360 */ 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, + /* 375 */ 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, + /* 390 */ 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, + /* 405 */ 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, + /* 420 */ 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, + /* 435 */ 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, + /* 450 */ 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, 20592, 20589, 50171, 20608, + /* 465 */ 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, + /* 480 */ 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 495 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 510 */ 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, 38672, 38672, 38672, 38672, 42922, 38623, 20771, + /* 525 */ 20784, 20796, 20808, 43870, 38625, 20832, 38672, 38672, 38672, 43215, 38672, 38672, 50505, 28718, 38672, + /* 540 */ 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19553, 19028, 45351, 38672, 18269, 42564, + /* 555 */ 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, 19406, 50434, + /* 570 */ 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, 38672, 38672, 37574, + /* 585 */ 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, 18792, 20360, 18810, 18830, + /* 600 */ 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, 18855, 18871, 18894, 40258, + /* 615 */ 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, 19154, 19185, 19222, + /* 630 */ 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, 28712, 19342, 25187, 19377, + /* 645 */ 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, 24931, 19898, 19624, 19039, + /* 660 */ 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 19921, 18446, 19976, 19994, + /* 675 */ 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, 20105, 20160, 20116, + /* 690 */ 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, 21368, 20386, 20408, + /* 705 */ 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, 20592, 20589, 50171, + /* 720 */ 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, 21969, 19448, 21939, + /* 735 */ 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 750 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 765 */ 38672, 38672, 38672, 22954, 20869, 38672, 38672, 38672, 37958, 38672, 38672, 36976, 20909, 20888, 38672, + /* 780 */ 38672, 38672, 38672, 39926, 20282, 20925, 20958, 38672, 38672, 38672, 43215, 38672, 38672, 25928, 38672, + /* 795 */ 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 35990, 20997, 38672, 18269, + /* 810 */ 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, 19406, + /* 825 */ 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, 38672, 38672, + /* 840 */ 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, 18792, 20360, 18810, + /* 855 */ 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, 18855, 18871, 18894, + /* 870 */ 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, 19154, 19185, + /* 885 */ 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, 28712, 19342, 25187, + /* 900 */ 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, 24931, 19898, 19624, + /* 915 */ 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 19921, 18446, 19976, + /* 930 */ 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, 20105, 20160, + /* 945 */ 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, 21368, 20386, + /* 960 */ 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, 20592, 20589, + /* 975 */ 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, 21969, 19448, + /* 990 */ 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 1005 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 1020 */ 38672, 38672, 38672, 38672, 21013, 21118, 38672, 38672, 38672, 24651, 38672, 38672, 44696, 38672, 42922, + /* 1035 */ 38824, 21095, 21058, 21048, 21080, 21111, 48022, 20832, 38672, 38672, 38672, 43215, 21139, 38672, 25530, + /* 1050 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 35990, 21157, 38672, + /* 1065 */ 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, + /* 1080 */ 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, 38672, + /* 1095 */ 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 18776, 18792, 20360, + /* 1110 */ 18810, 18830, 18835, 19257, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, 18855, 18871, + /* 1125 */ 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, 19154, + /* 1140 */ 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, 28712, 19342, + /* 1155 */ 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, 24931, 19898, + /* 1170 */ 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 19921, 18446, + /* 1185 */ 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, 20105, + /* 1200 */ 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, 21368, + /* 1215 */ 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, 20592, + /* 1230 */ 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, 21969, + /* 1245 */ 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 1260 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 1275 */ 38672, 38672, 38672, 38672, 38672, 20939, 38666, 38672, 38672, 38672, 21880, 38671, 38672, 36460, 38672, + /* 1290 */ 21173, 38661, 21224, 38672, 21231, 38672, 42738, 42750, 20832, 38672, 38672, 38672, 43215, 38672, 38672, + /* 1305 */ 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 35990, 45351, + /* 1320 */ 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, + /* 1335 */ 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, + /* 1350 */ 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, 18792, + /* 1365 */ 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, 18855, + /* 1380 */ 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, + /* 1395 */ 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, 28712, + /* 1410 */ 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, 24931, + /* 1425 */ 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 19921, + /* 1440 */ 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, + /* 1455 */ 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, + /* 1470 */ 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, + /* 1485 */ 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, + /* 1500 */ 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 1515 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 1530 */ 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, 21247, 38672, 38672, + /* 1545 */ 38672, 28875, 38672, 38672, 21266, 38672, 38672, 21288, 21300, 20832, 38672, 38672, 38672, 43215, 38672, + /* 1560 */ 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 35990, + /* 1575 */ 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, + /* 1590 */ 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, + /* 1605 */ 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, + /* 1620 */ 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, + /* 1635 */ 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, + /* 1650 */ 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, + /* 1665 */ 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, + /* 1680 */ 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, + /* 1695 */ 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, + /* 1710 */ 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, + /* 1725 */ 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, + /* 1740 */ 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, + /* 1755 */ 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 1770 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 1785 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, 38672, 38672, + /* 1800 */ 38672, 38672, 31059, 38672, 38672, 38672, 38672, 38672, 38672, 24860, 21316, 38672, 38672, 38672, 43215, + /* 1815 */ 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, + /* 1830 */ 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, + /* 1845 */ 18422, 18462, 20670, 18988, 50434, 18503, 18525, 21353, 19412, 50440, 18509, 36003, 19232, 20563, 38672, + /* 1860 */ 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, + /* 1875 */ 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, + /* 1890 */ 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, + /* 1905 */ 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, + /* 1920 */ 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, + /* 1935 */ 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, + /* 1950 */ 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, + /* 1965 */ 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, + /* 1980 */ 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, + /* 1995 */ 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, + /* 2010 */ 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 2025 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 2040 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 24749, 21390, 38672, 38672, 38672, 23220, 38672, + /* 2055 */ 38672, 49687, 45814, 21411, 38672, 38672, 38672, 38672, 41859, 18366, 21448, 21478, 38672, 38672, 38672, + /* 2070 */ 43215, 38672, 38672, 50505, 21515, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, + /* 2085 */ 19418, 35990, 46185, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, + /* 2100 */ 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, + /* 2115 */ 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, + /* 2130 */ 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, + /* 2145 */ 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, + /* 2160 */ 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, + /* 2175 */ 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, + /* 2190 */ 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, + /* 2205 */ 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, + /* 2220 */ 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, + /* 2235 */ 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, + /* 2250 */ 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, + /* 2265 */ 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, + /* 2280 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 2295 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 21462, 21573, 21537, 21537, 21537, 21580, + /* 2310 */ 21532, 21537, 21542, 21615, 21558, 21644, 21596, 21609, 21631, 21657, 21669, 21681, 20832, 38672, 38672, + /* 2325 */ 38672, 21337, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, + /* 2340 */ 35998, 19418, 35990, 45351, 38672, 18269, 42564, 21697, 38672, 40144, 38672, 23032, 18306, 18356, 18382, + /* 2355 */ 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, + /* 2370 */ 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, + /* 2385 */ 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, + /* 2400 */ 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, + /* 2415 */ 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, + /* 2430 */ 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, + /* 2445 */ 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, + /* 2460 */ 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, + /* 2475 */ 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, + /* 2490 */ 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, + /* 2505 */ 20500, 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, + /* 2520 */ 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, + /* 2535 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 2550 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 30462, 38672, 38672, 38672, + /* 2565 */ 22025, 23251, 38672, 22249, 23257, 42922, 30462, 38672, 21719, 21725, 21741, 21766, 21750, 21795, 38672, + /* 2580 */ 38672, 38672, 46035, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, + /* 2595 */ 18794, 35998, 19418, 35990, 45351, 38672, 18269, 42564, 30475, 38672, 40144, 38672, 23032, 18306, 18356, + /* 2610 */ 18382, 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, + /* 2625 */ 19232, 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, + /* 2640 */ 18745, 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, + /* 2655 */ 19540, 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, + /* 2670 */ 19169, 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, + /* 2685 */ 19000, 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, + /* 2700 */ 19905, 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, + /* 2715 */ 19808, 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, + /* 2730 */ 20010, 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, + /* 2745 */ 20259, 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, + /* 2760 */ 50424, 20500, 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, + /* 2775 */ 20660, 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, + /* 2790 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 2805 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 24785, 38672, 38672, + /* 2820 */ 38672, 30470, 38672, 38672, 38672, 37115, 50393, 21856, 21832, 21850, 21834, 21872, 21896, 21908, 20832, + /* 2835 */ 38672, 38672, 38672, 43215, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, + /* 2850 */ 18958, 18794, 35998, 19418, 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, + /* 2865 */ 18356, 18382, 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 21924, 19412, 50440, 18509, + /* 2880 */ 36003, 19232, 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, + /* 2895 */ 18753, 18745, 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, + /* 2910 */ 18839, 19540, 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, + /* 2925 */ 19062, 19169, 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, + /* 2940 */ 19273, 19000, 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, + /* 2955 */ 24938, 19905, 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, + /* 2970 */ 19771, 19808, 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, + /* 2985 */ 47383, 20010, 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, + /* 3000 */ 20223, 20259, 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, + /* 3015 */ 20497, 50424, 20500, 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, + /* 3030 */ 19945, 20660, 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, + /* 3045 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 3060 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, + /* 3075 */ 38672, 38672, 30470, 38672, 38672, 38672, 37301, 25812, 27394, 21985, 22003, 21985, 22017, 27392, 21987, + /* 3090 */ 20832, 38672, 38672, 38672, 43215, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 3105 */ 18953, 18958, 18794, 35998, 19418, 35990, 45351, 38672, 18269, 42564, 29641, 38672, 42072, 38672, 23032, + /* 3120 */ 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, + /* 3135 */ 18509, 36003, 19232, 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, + /* 3150 */ 18722, 18753, 18745, 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, + /* 3165 */ 18794, 18839, 19540, 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, + /* 3180 */ 19016, 19062, 19169, 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, + /* 3195 */ 19222, 19273, 19000, 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, + /* 3210 */ 19608, 24938, 19905, 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, + /* 3225 */ 19745, 19771, 19808, 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, + /* 3240 */ 18562, 47383, 20010, 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, + /* 3255 */ 20207, 20223, 20259, 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, + /* 3270 */ 20484, 20497, 50424, 20500, 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, + /* 3285 */ 20143, 19945, 20660, 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, + /* 3300 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 3315 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 20981, + /* 3330 */ 38672, 38672, 38672, 30470, 24643, 38672, 48413, 22054, 26165, 22041, 22070, 22074, 22074, 22090, 20979, + /* 3345 */ 48442, 20832, 38672, 38672, 38672, 43215, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, + /* 3360 */ 38672, 18953, 18958, 18794, 35998, 19418, 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, + /* 3375 */ 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, + /* 3390 */ 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, + /* 3405 */ 18685, 18722, 18753, 18745, 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, + /* 3420 */ 18814, 18794, 18839, 19540, 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, + /* 3435 */ 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, + /* 3450 */ 19185, 19222, 19273, 19000, 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, + /* 3465 */ 19569, 19608, 24938, 19905, 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, + /* 3480 */ 19792, 19745, 19771, 19808, 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, + /* 3495 */ 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, + /* 3510 */ 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, + /* 3525 */ 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, + /* 3540 */ 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, + /* 3555 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 3570 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22114, + /* 3585 */ 38672, 38672, 38672, 38672, 30470, 38672, 38672, 38672, 38672, 42922, 47221, 22137, 22155, 22137, 22169, + /* 3600 */ 47219, 22139, 22193, 38672, 38672, 38672, 43215, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, + /* 3615 */ 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 22230, 38672, 22247, 38672, 29641, 22265, 42072, + /* 3630 */ 33771, 38672, 38672, 38672, 38672, 26929, 22475, 35267, 22475, 22475, 36544, 42277, 22411, 22411, 33858, + /* 3645 */ 26727, 37227, 26727, 26727, 35540, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 18609, 24891, 38672, + /* 3660 */ 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, 26727, + /* 3675 */ 26727, 26727, 26727, 26727, 32919, 33803, 21432, 38031, 38672, 38672, 38672, 38672, 38672, 22291, 38672, + /* 3690 */ 26931, 22311, 22475, 22475, 22475, 22475, 33849, 22352, 22411, 35447, 22411, 22411, 33324, 22381, 26727, + /* 3705 */ 45449, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 30028, 38672, 38672, 22475, 36607, 22475, + /* 3720 */ 22475, 28015, 33854, 22411, 22410, 22411, 22411, 27851, 26727, 45441, 26727, 26727, 22521, 33795, 38672, + /* 3735 */ 38672, 22807, 38672, 38672, 28255, 22475, 22475, 38505, 29442, 22411, 22411, 34626, 26485, 26727, 26727, + /* 3750 */ 26860, 26998, 22647, 38672, 38672, 22428, 26931, 48359, 22475, 42142, 32794, 22411, 28347, 37402, 26727, + /* 3765 */ 22521, 32486, 38672, 18915, 38672, 22451, 22474, 36860, 37042, 22411, 22492, 22517, 22520, 26312, 34036, + /* 3780 */ 26929, 42625, 42144, 35207, 26975, 22537, 26310, 35759, 22589, 36765, 22624, 22640, 22663, 22685, 22706, + /* 3795 */ 39617, 42139, 28345, 26456, 39814, 47009, 22727, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, + /* 3810 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 3825 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 3840 */ 20939, 38672, 38672, 38672, 38672, 30470, 38672, 38672, 38672, 23092, 42922, 38672, 38672, 38672, 38672, + /* 3855 */ 38672, 31140, 31152, 22751, 38672, 38672, 38672, 43215, 38672, 38672, 26131, 38672, 38672, 38672, 38672, + /* 3870 */ 38672, 38672, 38672, 28256, 42141, 22411, 26453, 27937, 27268, 22230, 38672, 38672, 38672, 29641, 38672, + /* 3885 */ 40144, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 36544, 22411, 22411, 22411, + /* 3900 */ 33858, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 18609, 38672, + /* 3915 */ 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, + /* 3930 */ 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 3945 */ 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, + /* 3960 */ 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, + /* 3975 */ 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, 26727, 26727, 22521, 33795, + /* 3990 */ 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, 26485, 26727, + /* 4005 */ 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, + /* 4020 */ 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, + /* 4035 */ 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, + /* 4050 */ 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, + /* 4065 */ 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4080 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4095 */ 38672, 20939, 22803, 38672, 38672, 38672, 22886, 38672, 38672, 38672, 38672, 42922, 36439, 22823, 22844, + /* 4110 */ 22866, 22878, 36438, 22828, 20832, 38672, 38672, 38672, 43215, 38672, 38672, 50505, 41329, 38672, 22902, + /* 4125 */ 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 35990, 45351, 38672, 18269, 42564, 29641, + /* 4140 */ 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, + /* 4155 */ 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, + /* 4170 */ 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, + /* 4185 */ 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, + /* 4200 */ 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, + /* 4215 */ 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, + /* 4230 */ 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, + /* 4245 */ 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, + /* 4260 */ 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, + /* 4275 */ 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, + /* 4290 */ 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, 20592, 20589, 50171, 20608, + /* 4305 */ 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, + /* 4320 */ 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4335 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4350 */ 38672, 38672, 20939, 22923, 38672, 38672, 38672, 30470, 38672, 38672, 38672, 23115, 42922, 38672, 38672, + /* 4365 */ 38672, 38672, 38672, 26339, 22940, 22970, 38672, 38672, 38672, 43215, 38672, 38672, 23007, 38672, 38672, + /* 4380 */ 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 47631, 27268, 22230, 38672, 38672, 38672, + /* 4395 */ 29641, 38672, 48650, 23029, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 36544, 22411, + /* 4410 */ 22411, 22411, 33858, 26727, 26727, 26727, 26727, 30990, 42723, 23085, 38672, 38672, 38672, 38672, 38672, + /* 4425 */ 23048, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, + /* 4440 */ 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 23072, 23108, 38672, 38672, 38672, 38672, 38672, + /* 4455 */ 48411, 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 46833, 22411, 22411, 22411, 22411, 22411, + /* 4470 */ 47864, 26727, 26727, 26727, 26727, 26727, 32918, 41804, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4485 */ 22475, 22475, 22475, 22475, 43252, 33854, 22411, 22411, 22411, 22411, 48185, 26727, 26727, 26727, 26727, + /* 4500 */ 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 23131, 22411, 22411, 22411, + /* 4515 */ 36778, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, + /* 4530 */ 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, + /* 4545 */ 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, + /* 4560 */ 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, + /* 4575 */ 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4590 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4605 */ 38672, 38672, 38672, 20939, 18878, 38672, 38672, 38672, 35592, 32963, 38672, 38672, 23153, 42922, 37950, + /* 4620 */ 35335, 23190, 23196, 23212, 38672, 41919, 23236, 23274, 38672, 38672, 45078, 23291, 38672, 50505, 38672, + /* 4635 */ 38672, 38672, 38672, 38672, 38672, 38672, 18953, 25157, 23483, 23350, 24209, 23309, 45351, 38672, 18269, + /* 4650 */ 42564, 28228, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, 19821, + /* 4665 */ 23376, 23336, 23369, 23392, 24203, 23434, 23465, 24172, 23726, 19833, 38672, 46930, 18591, 38672, 38672, + /* 4680 */ 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 18729, 23481, 23642, 24581, + /* 4695 */ 23499, 23504, 24048, 23353, 23520, 23933, 23353, 24164, 23917, 24518, 37554, 48943, 18855, 18871, 18894, + /* 4710 */ 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 23536, 23854, 23815, 23561, 23577, + /* 4725 */ 23632, 24450, 24255, 23689, 23658, 23674, 23716, 23742, 24268, 30964, 19299, 19315, 28712, 19342, 25187, + /* 4740 */ 19377, 19393, 19434, 19464, 19495, 19569, 23773, 23804, 23842, 24040, 23870, 23886, 23449, 23700, 23902, + /* 4755 */ 23320, 23949, 23992, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 24027, 23545, 23592, + /* 4770 */ 24064, 24137, 24459, 24094, 24110, 23407, 20069, 47383, 20010, 46515, 35979, 20039, 20679, 24126, 24567, + /* 4785 */ 24482, 24153, 24188, 23616, 24225, 20191, 20207, 20223, 20259, 20298, 20337, 24284, 24078, 24374, 24300, + /* 4800 */ 24330, 24314, 23418, 20424, 20452, 20468, 24361, 23826, 23606, 24390, 24419, 20532, 24435, 24475, 24498, + /* 4815 */ 24628, 20608, 23750, 23928, 24403, 20644, 23757, 24508, 20660, 20054, 24345, 20695, 24537, 24597, 24613, + /* 4830 */ 24552, 23788, 24240, 23964, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4845 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 4860 */ 38672, 38672, 38672, 38672, 20939, 39906, 38672, 38672, 38672, 30470, 24672, 38672, 38672, 24667, 26611, + /* 4875 */ 24688, 24695, 24695, 24695, 24711, 26910, 24735, 20832, 38672, 38672, 38672, 43215, 38672, 38672, 50505, + /* 4890 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 35990, 45351, 38672, + /* 4905 */ 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, 20670, + /* 4920 */ 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, 38672, + /* 4935 */ 38672, 37574, 24765, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, 18792, 20360, + /* 4950 */ 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 20739, 24828, 48943, 18855, 18871, + /* 4965 */ 18894, 40258, 24858, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, 19154, + /* 4980 */ 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19087, 30964, 19299, 19315, 28712, 19342, + /* 4995 */ 25187, 19377, 19393, 19434, 19464, 19495, 24876, 24922, 24938, 19905, 19631, 19046, 24954, 24931, 19898, + /* 5010 */ 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 24970, 18446, + /* 5025 */ 19976, 19994, 19525, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, 20105, + /* 5040 */ 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, 21368, + /* 5055 */ 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, 20592, + /* 5070 */ 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, 21969, + /* 5085 */ 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 5100 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 5115 */ 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, 38672, 38672, 38672, 38672, + /* 5130 */ 21250, 35576, 24999, 24999, 24999, 35584, 31668, 31680, 20832, 38672, 38672, 38672, 43215, 38672, 38672, + /* 5145 */ 50505, 38672, 38672, 25271, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 19887, 45351, + /* 5160 */ 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, 18462, + /* 5175 */ 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, 18591, + /* 5190 */ 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, 18792, + /* 5205 */ 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, 18855, + /* 5220 */ 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, 19934, + /* 5235 */ 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, 28712, + /* 5250 */ 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, 24931, + /* 5265 */ 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, 19921, + /* 5280 */ 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, 20679, + /* 5295 */ 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, 20402, + /* 5310 */ 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, 20548, + /* 5325 */ 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, 20711, + /* 5340 */ 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 5355 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 5370 */ 38672, 38672, 38672, 38672, 38672, 38672, 50381, 27744, 38672, 38672, 38672, 30470, 38672, 38672, 38672, + /* 5385 */ 38672, 42922, 40452, 25015, 25015, 25015, 25023, 27746, 40454, 20832, 25047, 38672, 38672, 43215, 38672, + /* 5400 */ 38672, 50505, 38672, 38672, 25065, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, 20310, + /* 5415 */ 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, + /* 5430 */ 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, + /* 5445 */ 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, + /* 5460 */ 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, + /* 5475 */ 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, + /* 5490 */ 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, + /* 5505 */ 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, + /* 5520 */ 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, + /* 5535 */ 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, + /* 5550 */ 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, + /* 5565 */ 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, + /* 5580 */ 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, + /* 5595 */ 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 5610 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 5625 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 50286, 50295, 38672, 38672, 38672, 23056, 38672, 38672, + /* 5640 */ 38672, 38672, 42922, 44048, 25088, 25088, 25088, 25096, 46630, 44050, 25120, 38672, 38672, 38672, 43215, + /* 5655 */ 38672, 38672, 50505, 38672, 38672, 18699, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, + /* 5670 */ 35990, 25136, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, + /* 5685 */ 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, + /* 5700 */ 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, + /* 5715 */ 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, + /* 5730 */ 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, + /* 5745 */ 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, + /* 5760 */ 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, + /* 5775 */ 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, + /* 5790 */ 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, + /* 5805 */ 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, + /* 5820 */ 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, + /* 5835 */ 20532, 20548, 20592, 20589, 50171, 25152, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, + /* 5850 */ 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 5865 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 5880 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25173, 38672, 38672, 38672, 38672, 30470, 25218, + /* 5895 */ 38672, 38672, 21395, 32346, 38672, 38672, 38672, 25210, 25237, 21393, 25221, 25256, 38672, 38672, 38672, + /* 5910 */ 43215, 38672, 38672, 50505, 22214, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, + /* 5925 */ 19206, 20349, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, + /* 5940 */ 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, + /* 5955 */ 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, + /* 5970 */ 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, + /* 5985 */ 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, + /* 6000 */ 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, + /* 6015 */ 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, + /* 6030 */ 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, + /* 6045 */ 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, + /* 6060 */ 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, + /* 6075 */ 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, + /* 6090 */ 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, + /* 6105 */ 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, + /* 6120 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 6135 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, + /* 6150 */ 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 38672, 41563, 25293, 20832, 38672, 38672, + /* 6165 */ 38672, 43215, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, + /* 6180 */ 35998, 19418, 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, + /* 6195 */ 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, + /* 6210 */ 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, + /* 6225 */ 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, + /* 6240 */ 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, + /* 6255 */ 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, + /* 6270 */ 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, + /* 6285 */ 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, + /* 6300 */ 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, + /* 6315 */ 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, + /* 6330 */ 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, + /* 6345 */ 20500, 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, + /* 6360 */ 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, + /* 6375 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 6390 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, 38672, + /* 6405 */ 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 44448, 27298, 33333, 25344, 38672, + /* 6420 */ 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, + /* 6435 */ 22411, 26453, 44280, 27268, 25375, 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, + /* 6450 */ 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, 26727, + /* 6465 */ 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 48405, 38672, 38672, 38672, 38672, 28258, 22475, + /* 6480 */ 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, + /* 6495 */ 32919, 30349, 25414, 38672, 38672, 38672, 38672, 38672, 48411, 38672, 38672, 26931, 22475, 22475, 22475, + /* 6510 */ 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, 32918, + /* 6525 */ 41804, 38672, 38672, 38672, 38672, 34976, 38672, 38672, 22475, 22475, 22475, 22475, 33754, 33854, 22411, + /* 6540 */ 22411, 22411, 22411, 31454, 26727, 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, + /* 6555 */ 28255, 22475, 22475, 22475, 23131, 22411, 22411, 22411, 36778, 26727, 26727, 26727, 26998, 46887, 38672, + /* 6570 */ 38672, 25437, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, + /* 6585 */ 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, + /* 6600 */ 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, + /* 6615 */ 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, + /* 6630 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 6645 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, + /* 6660 */ 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 44448, 27298, 33333, 25344, + /* 6675 */ 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, + /* 6690 */ 42141, 22411, 26453, 44280, 27268, 25375, 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, + /* 6705 */ 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, + /* 6720 */ 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 48405, 38672, 38672, 38672, 38672, 28258, + /* 6735 */ 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, + /* 6750 */ 26727, 32919, 30349, 25414, 38672, 38672, 38672, 38672, 38672, 48411, 38672, 38672, 26931, 22475, 22475, + /* 6765 */ 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, + /* 6780 */ 32918, 41804, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, 22475, 22475, 33754, 33854, + /* 6795 */ 22411, 22411, 22411, 22411, 31454, 26727, 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, + /* 6810 */ 38672, 28255, 22475, 22475, 22475, 23131, 22411, 22411, 22411, 36778, 26727, 26727, 26727, 26998, 46887, + /* 6825 */ 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, + /* 6840 */ 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, + /* 6855 */ 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, + /* 6870 */ 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, + /* 6885 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 6900 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, + /* 6915 */ 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 44448, 27298, 33333, + /* 6930 */ 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 6945 */ 28256, 42141, 22411, 26453, 44280, 27268, 25375, 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, + /* 6960 */ 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, + /* 6975 */ 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 48405, 30057, 38672, 38672, 38672, + /* 6990 */ 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, 26727, 26727, 26727, + /* 7005 */ 26727, 26727, 32919, 30349, 25414, 38672, 38672, 38672, 38672, 38672, 48411, 38672, 38672, 26931, 22475, + /* 7020 */ 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, + /* 7035 */ 26727, 32918, 41804, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, 22475, 22475, 33754, + /* 7050 */ 33854, 22411, 22411, 22411, 22411, 31454, 26727, 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, + /* 7065 */ 38672, 38672, 28255, 22475, 22475, 22475, 23131, 22411, 22411, 22411, 36778, 26727, 26727, 26727, 26998, + /* 7080 */ 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, + /* 7095 */ 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, + /* 7110 */ 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, + /* 7125 */ 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, + /* 7140 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7155 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, + /* 7170 */ 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 44448, 27298, + /* 7185 */ 33333, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7200 */ 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, 38672, 38672, 38672, 29641, 38672, 38672, 38672, + /* 7215 */ 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, 22411, 22690, 26727, + /* 7230 */ 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 48405, 38672, 38672, 38672, + /* 7245 */ 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, 26727, 26727, + /* 7260 */ 26727, 26727, 26727, 32919, 30349, 25414, 38672, 38672, 38672, 38672, 38672, 25455, 38672, 38672, 26931, + /* 7275 */ 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, 26727, 26727, + /* 7290 */ 26727, 26727, 32918, 41804, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, 22475, 22475, + /* 7305 */ 33754, 33854, 22411, 22411, 22411, 22411, 31454, 26727, 26727, 26727, 26727, 22521, 33795, 38672, 38672, + /* 7320 */ 38672, 38672, 38672, 28255, 22475, 22475, 22475, 23131, 22411, 22411, 22411, 36778, 26727, 26727, 26727, + /* 7335 */ 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, + /* 7350 */ 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, + /* 7365 */ 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, + /* 7380 */ 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, + /* 7395 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7410 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, + /* 7425 */ 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 44448, + /* 7440 */ 27298, 33333, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 40102, 38672, 38672, 38672, 38672, 38672, + /* 7455 */ 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, 38672, 38672, 38672, 29641, 38672, 49130, + /* 7470 */ 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, 22411, 22690, + /* 7485 */ 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 48405, 38672, 38672, + /* 7500 */ 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, 26727, + /* 7515 */ 26727, 26727, 26727, 26727, 32919, 30349, 25414, 38672, 38672, 38672, 38672, 38672, 48411, 38672, 38672, + /* 7530 */ 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, 26727, + /* 7545 */ 26727, 26727, 26727, 32918, 41804, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, 22475, + /* 7560 */ 22475, 33754, 33854, 22411, 22411, 22411, 22411, 31454, 26727, 26727, 26727, 26727, 22521, 33795, 38672, + /* 7575 */ 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 23131, 22411, 22411, 22411, 36778, 26727, 26727, + /* 7590 */ 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, + /* 7605 */ 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, + /* 7620 */ 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, + /* 7635 */ 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, + /* 7650 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7665 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7680 */ 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, + /* 7695 */ 44448, 27298, 33333, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7710 */ 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, 38672, 38672, 38672, 29641, 38672, + /* 7725 */ 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, 22411, + /* 7740 */ 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7755 */ 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, + /* 7770 */ 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7785 */ 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, + /* 7800 */ 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, + /* 7815 */ 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, 26727, 26727, 22521, 33795, + /* 7830 */ 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, 26485, 26727, + /* 7845 */ 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, + /* 7860 */ 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, + /* 7875 */ 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, + /* 7890 */ 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, + /* 7905 */ 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7920 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7935 */ 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, + /* 7950 */ 38672, 44448, 27298, 33333, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, + /* 7965 */ 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25482, 38672, 38672, 38672, 29641, + /* 7980 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, + /* 7995 */ 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8010 */ 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, + /* 8025 */ 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8040 */ 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, + /* 8055 */ 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, + /* 8070 */ 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, 26727, 26727, 22521, + /* 8085 */ 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, 26485, + /* 8100 */ 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, + /* 8115 */ 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, + /* 8130 */ 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, + /* 8145 */ 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, + /* 8160 */ 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8175 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8190 */ 38672, 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, + /* 8205 */ 38672, 38672, 44448, 27298, 33333, 25500, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, + /* 8220 */ 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, 38672, 38672, 38672, + /* 8235 */ 29641, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, + /* 8250 */ 22411, 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8265 */ 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, + /* 8280 */ 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8295 */ 38672, 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, + /* 8310 */ 33324, 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8325 */ 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, 26727, 26727, + /* 8340 */ 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, + /* 8355 */ 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, + /* 8370 */ 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, + /* 8385 */ 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, + /* 8400 */ 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, + /* 8415 */ 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8430 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8445 */ 38672, 38672, 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38220, + /* 8460 */ 38672, 38672, 38672, 44448, 27298, 33333, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, + /* 8475 */ 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, 38672, 38672, + /* 8490 */ 38672, 29641, 38672, 38672, 38672, 25563, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, + /* 8505 */ 22411, 22411, 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, + /* 8520 */ 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, + /* 8535 */ 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, + /* 8550 */ 38672, 38672, 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, + /* 8565 */ 22411, 33324, 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8580 */ 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, 26727, + /* 8595 */ 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, + /* 8610 */ 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, + /* 8625 */ 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, + /* 8640 */ 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, + /* 8655 */ 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, + /* 8670 */ 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8685 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8700 */ 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, + /* 8715 */ 38672, 38672, 38672, 38672, 28464, 25582, 25594, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, + /* 8730 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, 38672, + /* 8745 */ 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, + /* 8760 */ 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, + /* 8775 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, + /* 8790 */ 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, + /* 8805 */ 38672, 38672, 38672, 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, + /* 8820 */ 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, + /* 8835 */ 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, + /* 8850 */ 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, + /* 8865 */ 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, + /* 8880 */ 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, + /* 8895 */ 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, + /* 8910 */ 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, + /* 8925 */ 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8940 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 8955 */ 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, + /* 8970 */ 42922, 38672, 38672, 38672, 38672, 44448, 27298, 33333, 25344, 38672, 38672, 38672, 43215, 38672, 38672, + /* 8985 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, + /* 9000 */ 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, + /* 9015 */ 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, + /* 9030 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, + /* 9045 */ 22411, 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, + /* 9060 */ 38672, 38672, 38672, 38672, 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, + /* 9075 */ 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, + /* 9090 */ 38672, 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, + /* 9105 */ 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 21426, 38672, 28255, 22475, 22475, 22475, 29442, + /* 9120 */ 22411, 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, + /* 9135 */ 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, + /* 9150 */ 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, + /* 9165 */ 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, + /* 9180 */ 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 9195 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 9210 */ 38672, 38672, 38672, 38672, 38672, 38672, 25610, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, + /* 9225 */ 38672, 42922, 38672, 38672, 38672, 38672, 44448, 27298, 33333, 25344, 38672, 38672, 38672, 43215, 38672, + /* 9240 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, + /* 9255 */ 25375, 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, + /* 9270 */ 22475, 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, + /* 9285 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, + /* 9300 */ 22411, 22411, 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, + /* 9315 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, + /* 9330 */ 22411, 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, + /* 9345 */ 38672, 38672, 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, + /* 9360 */ 26727, 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, + /* 9375 */ 29442, 22411, 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, + /* 9390 */ 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, + /* 9405 */ 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, + /* 9420 */ 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, + /* 9435 */ 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 9450 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 9465 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, 38672, 38672, + /* 9480 */ 38672, 38672, 42922, 44752, 25631, 25649, 25671, 25683, 44753, 25633, 20832, 38672, 38672, 38672, 43215, + /* 9495 */ 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, 19418, + /* 9510 */ 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 35735, 23032, 18306, 18356, 18382, 18387, 18403, + /* 9525 */ 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, + /* 9540 */ 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, + /* 9555 */ 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, + /* 9570 */ 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, + /* 9585 */ 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, + /* 9600 */ 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, + /* 9615 */ 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, + /* 9630 */ 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, + /* 9645 */ 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 25717, 20259, 20298, 20337, + /* 9660 */ 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, + /* 9675 */ 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, + /* 9690 */ 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 9705 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 9720 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, 38672, + /* 9735 */ 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 38672, 38672, 24860, 20832, 38672, 38672, 38672, + /* 9750 */ 43215, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, 35998, + /* 9765 */ 19418, 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, + /* 9780 */ 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, + /* 9795 */ 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, + /* 9810 */ 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, + /* 9825 */ 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, + /* 9840 */ 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, + /* 9855 */ 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, + /* 9870 */ 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, + /* 9885 */ 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, + /* 9900 */ 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, + /* 9915 */ 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, + /* 9930 */ 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, + /* 9945 */ 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, + /* 9960 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 9975 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, + /* 9990 */ 38672, 38672, 38672, 38672, 42922, 31997, 38672, 25754, 25760, 25776, 23293, 41839, 20832, 38672, 38672, + /* 10005 */ 38672, 43215, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, 18794, + /* 10020 */ 35998, 19418, 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, + /* 10035 */ 18387, 18403, 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, + /* 10050 */ 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, + /* 10065 */ 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, + /* 10080 */ 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, + /* 10095 */ 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, + /* 10110 */ 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, + /* 10125 */ 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, + /* 10140 */ 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, + /* 10155 */ 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, + /* 10170 */ 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 25800, 20452, 20468, 20484, 20497, 50424, + /* 10185 */ 20500, 20516, 25828, 20548, 20592, 20589, 50171, 25844, 19547, 18794, 18487, 20629, 20143, 19945, 20660, + /* 10200 */ 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, + /* 10215 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 10230 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 25049, 38672, 38672, 38672, + /* 10245 */ 22098, 25865, 25896, 25377, 25881, 25913, 30410, 30418, 25964, 25978, 25990, 26006, 26018, 25344, 45647, + /* 10260 */ 38672, 26034, 48091, 26052, 33210, 26086, 26116, 26153, 26223, 35321, 26181, 25701, 26211, 26248, 26264, + /* 10275 */ 43583, 44602, 26280, 26296, 26329, 38672, 38672, 38672, 30176, 26355, 38925, 41958, 22850, 24803, 38672, + /* 10290 */ 44654, 30480, 22475, 22475, 22475, 36601, 25393, 22411, 22411, 43601, 22690, 26727, 26727, 26727, 39641, + /* 10305 */ 30990, 39463, 38672, 43148, 28319, 38672, 29724, 26374, 19326, 38672, 38672, 32428, 40296, 38574, 45608, + /* 10320 */ 22475, 22475, 26394, 26439, 26475, 26509, 22411, 37859, 28780, 26529, 38451, 26727, 26727, 43300, 45056, + /* 10335 */ 22573, 30349, 25414, 26545, 38672, 26563, 38672, 40287, 48411, 38672, 26599, 35364, 28653, 26627, 31403, + /* 10350 */ 45616, 49789, 33849, 44356, 22411, 30609, 28411, 41138, 33324, 35718, 26727, 47625, 44193, 29223, 41749, + /* 10365 */ 42781, 38094, 28940, 38672, 21816, 21032, 26644, 38672, 47420, 26664, 22475, 41307, 22336, 31195, 39296, + /* 10380 */ 22411, 22411, 26685, 31454, 47988, 26726, 26727, 30787, 32911, 36940, 26744, 38697, 46064, 38672, 26779, + /* 10395 */ 26799, 26821, 22787, 22475, 23131, 26837, 37515, 22411, 36778, 26853, 26876, 26727, 33519, 46887, 26926, + /* 10410 */ 38672, 38672, 26931, 37355, 35081, 26947, 38899, 38878, 26969, 48550, 26727, 26994, 26313, 38672, 38672, + /* 10425 */ 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, + /* 10440 */ 26975, 26727, 26310, 35759, 22476, 22411, 26978, 38555, 27014, 22600, 47761, 48246, 27057, 27076, 27094, + /* 10455 */ 27113, 28343, 26456, 27133, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, + /* 10470 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 10485 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 27153, 38672, + /* 10500 */ 38672, 22098, 38672, 38672, 38672, 38672, 39378, 27172, 38672, 27196, 27202, 27218, 27234, 27246, 25344, + /* 10515 */ 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, + /* 10530 */ 27262, 42259, 26453, 27284, 27268, 25375, 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, + /* 10545 */ 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, + /* 10560 */ 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 46100, 48405, 27326, 25277, 38672, 38672, 28258, + /* 10575 */ 22475, 22475, 22475, 37137, 27346, 22411, 22411, 22411, 22411, 39760, 37334, 26727, 26727, 26727, 26727, + /* 10590 */ 27410, 32919, 30349, 25414, 38672, 38672, 38672, 38672, 38672, 48411, 38672, 38672, 26931, 22475, 22475, + /* 10605 */ 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, + /* 10620 */ 32918, 41804, 38672, 38672, 27435, 38672, 38672, 33108, 38672, 49441, 22475, 22475, 22475, 38002, 42895, + /* 10635 */ 22411, 22411, 22411, 22411, 27454, 27481, 26727, 26727, 26727, 43058, 33795, 38672, 38672, 38672, 38672, + /* 10650 */ 38672, 28255, 22475, 22475, 22475, 23131, 22411, 22411, 22411, 36778, 26727, 26727, 26727, 26998, 46887, + /* 10665 */ 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, + /* 10680 */ 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, + /* 10695 */ 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, 46997, 37168, + /* 10710 */ 35831, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, + /* 10725 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 10740 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 27504, + /* 10755 */ 38672, 38672, 22098, 38672, 27541, 38672, 27559, 23976, 27578, 27586, 27602, 27617, 27629, 27645, 27657, + /* 10770 */ 25344, 38672, 38672, 27676, 44992, 38672, 22924, 38672, 38672, 38672, 38672, 38672, 38672, 27673, 50511, + /* 10785 */ 27692, 47251, 26513, 26453, 41246, 27710, 25375, 29768, 38672, 38672, 32334, 38672, 27740, 38672, 27762, + /* 10800 */ 27784, 38672, 25948, 27789, 27805, 27821, 22475, 22475, 27840, 27878, 22411, 22411, 22690, 27915, 27931, + /* 10815 */ 26727, 26727, 30990, 39463, 44557, 38672, 38672, 44934, 38672, 38225, 48405, 33126, 27953, 38672, 38672, + /* 10830 */ 27694, 47073, 35424, 37245, 22475, 35786, 48497, 47338, 42686, 30280, 22411, 37334, 37394, 27977, 27995, + /* 10845 */ 43743, 26727, 32919, 30349, 25414, 38672, 38672, 24003, 38672, 30096, 48411, 38672, 38672, 26931, 22475, + /* 10860 */ 22475, 22475, 28013, 28031, 33849, 22411, 22411, 22411, 28053, 28070, 33324, 26727, 26727, 26727, 28092, + /* 10875 */ 28109, 32918, 41804, 28131, 38672, 38672, 49206, 38672, 28149, 38672, 22475, 22475, 22475, 22780, 33754, + /* 10890 */ 33854, 22411, 22411, 42031, 22411, 31454, 26727, 26727, 26727, 28171, 22521, 33795, 38672, 38672, 31346, + /* 10905 */ 38672, 46687, 21493, 22475, 28191, 22475, 23131, 22411, 30274, 22411, 36778, 26727, 35228, 26727, 31599, + /* 10920 */ 28213, 38672, 38672, 38672, 28250, 28274, 47411, 42142, 28296, 31494, 28347, 36728, 31954, 22521, 26313, + /* 10935 */ 38672, 38672, 28317, 27136, 22475, 28335, 22411, 36897, 26977, 26727, 22564, 26312, 34036, 26929, 22475, + /* 10950 */ 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, 28363, 28379, + /* 10965 */ 28427, 28480, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 28504, 28863, 38672, 38672, + /* 10980 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 10995 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, + /* 11010 */ 24521, 38672, 38672, 22098, 38672, 28530, 45484, 38672, 46575, 28549, 28557, 28573, 28587, 28595, 28611, + /* 11025 */ 28623, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 19750, 26547, 38672, 26546, + /* 11040 */ 19755, 28639, 42141, 48492, 27360, 44280, 27268, 25375, 29257, 27180, 28679, 29641, 21703, 38672, 25730, + /* 11055 */ 38672, 38083, 42329, 28697, 28734, 27137, 27824, 36531, 43498, 28750, 22608, 46434, 28774, 46408, 28796, + /* 11070 */ 28814, 28833, 26727, 28849, 39463, 38672, 38672, 38672, 25738, 38672, 29761, 48405, 38672, 38672, 38672, + /* 11085 */ 19698, 28258, 22475, 22475, 22475, 27023, 35786, 22411, 22411, 22411, 22411, 28891, 37334, 26727, 26727, + /* 11100 */ 26727, 26727, 28912, 43066, 28929, 28956, 38672, 38672, 33876, 38672, 28992, 48411, 38672, 38672, 29009, + /* 11115 */ 29030, 27032, 22475, 22475, 22669, 33849, 29109, 45393, 22411, 22411, 32729, 33324, 29133, 37067, 26727, + /* 11130 */ 26727, 34717, 32918, 41804, 38672, 38672, 38672, 38672, 38672, 29157, 38672, 29181, 22475, 22475, 29202, + /* 11145 */ 33754, 43112, 22411, 22411, 32083, 22411, 34472, 29222, 26727, 26727, 29239, 22521, 33795, 38672, 29256, + /* 11160 */ 29273, 38672, 29294, 28255, 32383, 27117, 29315, 23131, 44876, 34578, 42252, 36778, 44915, 26727, 29337, + /* 11175 */ 26998, 46887, 21810, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, + /* 11190 */ 26313, 38672, 29370, 38672, 27136, 22475, 29387, 22411, 41041, 26977, 26727, 43751, 26312, 34036, 26929, + /* 11205 */ 22475, 42144, 22411, 29411, 29240, 26310, 35759, 22476, 22411, 26978, 48196, 29430, 26953, 38544, 39617, + /* 11220 */ 34809, 33567, 37775, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, + /* 11235 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 11250 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, + /* 11265 */ 38672, 38673, 29464, 38672, 22098, 22435, 29483, 38672, 29506, 26195, 29530, 29540, 29556, 29570, 29582, + /* 11280 */ 29598, 29610, 25344, 38672, 29626, 25072, 29668, 50094, 29711, 40102, 40331, 29748, 21064, 29784, 29812, + /* 11295 */ 29843, 29873, 29903, 29919, 29957, 26423, 29973, 30010, 25375, 30044, 30091, 38782, 30112, 30134, 26137, + /* 11310 */ 30161, 38672, 38672, 26583, 38672, 26929, 39099, 30212, 36878, 44806, 30228, 43650, 28758, 46842, 30244, + /* 11325 */ 46765, 30296, 30317, 30336, 30384, 39463, 20089, 31354, 30434, 38799, 41183, 30450, 30496, 38672, 30542, + /* 11340 */ 30564, 29278, 30580, 39823, 30631, 28663, 42103, 30647, 30685, 30712, 30766, 30811, 30837, 34161, 30878, + /* 11355 */ 30901, 34681, 30930, 30980, 31006, 31022, 25414, 31049, 38672, 18321, 49090, 31075, 31094, 31128, 34195, + /* 11370 */ 32584, 46802, 31168, 22475, 33645, 42347, 31190, 47486, 31211, 22411, 47598, 49959, 31232, 32841, 31257, + /* 11385 */ 26727, 39569, 42011, 31278, 31335, 49499, 35851, 39273, 31370, 43966, 34186, 21188, 33468, 37601, 29186, + /* 11400 */ 31389, 31426, 42239, 40895, 22411, 31442, 31481, 31454, 31519, 31539, 30795, 31561, 31595, 33795, 38672, + /* 11415 */ 48757, 39401, 38672, 30196, 28255, 39519, 43549, 31615, 23131, 34822, 47675, 31635, 36778, 22546, 47769, + /* 11430 */ 31572, 26998, 46887, 39201, 31656, 18290, 31696, 31734, 31750, 31772, 31808, 31845, 31869, 31903, 37385, + /* 11445 */ 31919, 31970, 26378, 18593, 32021, 48908, 39526, 44237, 32042, 32063, 32099, 48723, 41712, 26312, 41270, + /* 11460 */ 26929, 22475, 32144, 22411, 32167, 44894, 26310, 32185, 46276, 40692, 44326, 31465, 20435, 32208, 32228, + /* 11475 */ 32248, 32274, 32295, 32319, 32362, 32399, 32415, 28257, 28345, 26459, 32457, 32473, 36357, 34905, 28863, + /* 11490 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 11505 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 11520 */ 25323, 38672, 38672, 32509, 38672, 22098, 32530, 32548, 43771, 30190, 32600, 32630, 38672, 32616, 32654, + /* 11535 */ 32662, 32678, 32690, 25344, 38672, 38672, 48277, 43215, 38672, 38672, 38672, 38672, 29732, 38672, 38672, + /* 11550 */ 32706, 29731, 26036, 33631, 42208, 32724, 38438, 44280, 27268, 25375, 21272, 38672, 38672, 31985, 38672, + /* 11565 */ 38672, 38672, 26576, 32745, 36837, 38672, 26929, 32766, 22475, 22475, 22475, 32810, 32857, 22411, 22411, + /* 11580 */ 22690, 27419, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 48405, 38672, + /* 11595 */ 38672, 40108, 38672, 28258, 22475, 22475, 22475, 42113, 35786, 22411, 22411, 22411, 22411, 32877, 37334, + /* 11610 */ 26727, 26727, 26727, 26728, 26727, 32919, 30349, 25414, 38672, 38672, 38672, 38672, 38672, 48411, 32026, + /* 11625 */ 38672, 26931, 22475, 22475, 46869, 22475, 22475, 33849, 22411, 22411, 39678, 22411, 22411, 33324, 26727, + /* 11640 */ 26727, 41099, 26727, 26727, 32918, 41804, 38672, 38672, 38672, 38672, 38672, 30118, 38672, 22475, 22475, + /* 11655 */ 22475, 42121, 33754, 33854, 22411, 22411, 48685, 22411, 31454, 26727, 26727, 26727, 46758, 22521, 33795, + /* 11670 */ 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 23131, 22411, 22411, 22411, 36778, 26727, + /* 11685 */ 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, + /* 11700 */ 26727, 22521, 36404, 38672, 38672, 38672, 44299, 22475, 42143, 31823, 22411, 32169, 26727, 22520, 26312, + /* 11715 */ 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, + /* 11730 */ 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 27097, 32897, 36362, 47020, 32935, + /* 11745 */ 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 11760 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 11775 */ 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 25031, 38672, 38672, 43445, 32979, 32987, 33003, + /* 11790 */ 33009, 33025, 33041, 33053, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 29467, 38672, 38672, 38672, + /* 11805 */ 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 33069, 38672, 38672, 38672, 29641, + /* 11820 */ 38672, 38672, 38672, 33103, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, + /* 11835 */ 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 11850 */ 38672, 33124, 38672, 18284, 28258, 22475, 22475, 22475, 22475, 40837, 22411, 22411, 22411, 22411, 22411, + /* 11865 */ 34394, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 33142, 38672, 33163, 42808, + /* 11880 */ 38672, 42803, 38566, 22475, 22475, 37994, 22475, 22475, 33849, 22411, 22411, 47479, 22411, 22411, 33324, + /* 11895 */ 26727, 26727, 31312, 26727, 26727, 41720, 33181, 38672, 38672, 34958, 38672, 38672, 38672, 38672, 22475, + /* 11910 */ 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, 26727, 26727, 22521, + /* 11925 */ 33795, 38672, 38672, 34949, 49071, 38672, 28255, 22475, 22475, 29048, 29442, 22411, 22411, 43834, 26485, + /* 11940 */ 26727, 26727, 49882, 26998, 33184, 33200, 40222, 33234, 22991, 22475, 33277, 33313, 50063, 43479, 33349, + /* 11955 */ 26727, 33377, 32128, 26313, 33405, 26648, 22985, 33423, 33443, 35387, 48797, 34523, 33492, 40922, 33514, + /* 11970 */ 26312, 34036, 46959, 32375, 33535, 33554, 33575, 35236, 26310, 35759, 22476, 22411, 26978, 48196, 20435, + /* 11985 */ 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 28488, 33591, + /* 12000 */ 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12015 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12030 */ 38672, 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, + /* 12045 */ 38672, 38672, 44448, 27298, 33333, 25344, 32005, 38672, 38672, 33617, 38672, 38672, 38672, 30064, 38672, + /* 12060 */ 30073, 38672, 30064, 33661, 30069, 38721, 42958, 22411, 33692, 33700, 33716, 25375, 38672, 38672, 25941, + /* 12075 */ 29641, 33732, 20082, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 33752, 25393, 22411, + /* 12090 */ 22411, 23137, 22690, 26727, 26727, 26727, 49362, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12105 */ 38672, 38672, 25615, 38672, 33770, 28258, 22475, 22475, 22475, 22475, 40491, 22411, 22411, 22411, 22411, + /* 12120 */ 22411, 40736, 26727, 26727, 26727, 26727, 26727, 33787, 33803, 33407, 38672, 38672, 38672, 38672, 38672, + /* 12135 */ 38672, 38672, 38672, 33819, 48351, 22475, 22475, 22475, 22475, 33849, 46363, 22411, 22411, 22411, 22411, + /* 12150 */ 33324, 48523, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 48282, 38672, 38672, 38672, 38672, + /* 12165 */ 22475, 22475, 22475, 22475, 33840, 33854, 22411, 22411, 22411, 28403, 27851, 26727, 26727, 26727, 43360, + /* 12180 */ 22521, 33795, 38672, 38672, 42813, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, + /* 12195 */ 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, + /* 12210 */ 28347, 26727, 26727, 22521, 26313, 38672, 33874, 21141, 27136, 22475, 42143, 22411, 22411, 26977, 26727, + /* 12225 */ 22520, 33892, 34036, 21208, 22475, 46215, 22411, 33914, 26727, 33935, 35759, 22476, 22411, 26978, 48196, + /* 12240 */ 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, + /* 12255 */ 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12270 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12285 */ 38672, 38672, 38672, 25323, 38672, 38672, 42795, 38672, 22098, 25439, 25194, 32493, 40646, 40656, 38304, + /* 12300 */ 38312, 33959, 33974, 33986, 34002, 34014, 25344, 38672, 38672, 38672, 49261, 33079, 38672, 38672, 23275, + /* 12315 */ 34030, 34052, 38672, 34078, 34127, 34177, 34211, 38408, 34239, 34258, 29354, 34285, 25375, 38672, 38672, + /* 12330 */ 36069, 29641, 38672, 34301, 38672, 38672, 38672, 34327, 24011, 26929, 47957, 34366, 22475, 34410, 34439, + /* 12345 */ 34460, 34488, 32881, 44853, 22711, 39788, 26727, 49664, 34508, 39463, 38672, 28969, 45656, 28681, 19706, + /* 12360 */ 18253, 38672, 26070, 26232, 47650, 46594, 28258, 42618, 22475, 45107, 34547, 44588, 22411, 34575, 22411, + /* 12375 */ 34594, 34618, 34642, 27997, 26727, 35481, 34668, 34697, 32919, 33803, 38672, 38672, 38672, 44387, 34733, + /* 12390 */ 34759, 38672, 38672, 38672, 26931, 34796, 22475, 22475, 22475, 34845, 34862, 31216, 22411, 22411, 37262, + /* 12405 */ 22411, 34878, 31262, 26727, 26727, 28913, 26727, 34894, 33802, 38672, 34931, 35005, 30145, 35033, 35049, + /* 12420 */ 30548, 35079, 26669, 35097, 35117, 35142, 44418, 22411, 35167, 35192, 43624, 31718, 26727, 43013, 39321, + /* 12435 */ 47169, 35252, 30750, 31033, 38672, 35289, 35307, 35357, 32192, 22475, 35380, 35403, 34559, 22411, 35440, + /* 12450 */ 35463, 30821, 35479, 35497, 35530, 35556, 35608, 38672, 38672, 24906, 47811, 35630, 37839, 28037, 35670, + /* 12465 */ 48379, 27078, 35705, 48704, 22521, 26313, 33898, 38672, 35734, 27136, 22475, 42143, 22411, 22411, 26977, + /* 12480 */ 26727, 22520, 28514, 35751, 26929, 35782, 35802, 36916, 32303, 49941, 26310, 49171, 22476, 22411, 26978, + /* 12495 */ 48196, 35867, 35883, 35899, 35915, 42139, 28345, 26456, 28257, 28343, 26456, 35951, 36348, 35941, 33538, + /* 12510 */ 36362, 36357, 34905, 35967, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12525 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12540 */ 38672, 38672, 38672, 38672, 25323, 38672, 38672, 33252, 38672, 22098, 38672, 38672, 38672, 38672, 42922, + /* 12555 */ 38672, 20573, 33260, 46302, 45557, 36019, 36031, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, + /* 12570 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, 38672, + /* 12585 */ 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 34780, 22475, + /* 12600 */ 25393, 22411, 22411, 36047, 22690, 26727, 26727, 36130, 26727, 30990, 39463, 38672, 38672, 38672, 38672, + /* 12615 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, + /* 12630 */ 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, + /* 12645 */ 38672, 38672, 38672, 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, + /* 12660 */ 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, + /* 12675 */ 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, + /* 12690 */ 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, + /* 12705 */ 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, + /* 12720 */ 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, + /* 12735 */ 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, + /* 12750 */ 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, + /* 12765 */ 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12780 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 12795 */ 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 20243, 38672, 22098, 38672, 38672, 38672, 38672, + /* 12810 */ 42922, 38672, 38672, 38672, 38672, 44448, 27298, 33333, 25344, 38672, 38672, 38672, 43215, 38672, 38672, + /* 12825 */ 36066, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, + /* 12840 */ 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, + /* 12855 */ 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, + /* 12870 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, + /* 12885 */ 22411, 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 45849, 38672, 38672, + /* 12900 */ 38672, 38672, 38672, 38672, 38672, 38672, 26931, 36085, 22475, 22475, 22475, 22475, 33849, 36106, 22411, + /* 12915 */ 22411, 22411, 22411, 33324, 36126, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, + /* 12930 */ 38672, 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, + /* 12945 */ 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, + /* 12960 */ 22411, 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, + /* 12975 */ 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, + /* 12990 */ 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, + /* 13005 */ 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, + /* 13020 */ 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 13035 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 13050 */ 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 19729, 38672, 22098, 38672, 39473, 38672, + /* 13065 */ 44217, 36146, 36184, 36196, 36212, 36218, 36234, 36250, 36262, 25344, 38672, 36278, 38672, 43215, 38672, + /* 13080 */ 25421, 18575, 38672, 27438, 38672, 38672, 46139, 36299, 48111, 34141, 26409, 36335, 39145, 44169, 36378, + /* 13095 */ 36420, 36455, 38672, 29371, 36476, 38672, 27543, 38672, 36498, 35844, 31373, 34743, 36516, 40527, 36565, + /* 13110 */ 29321, 36586, 36623, 36646, 22411, 36676, 29093, 36714, 29346, 28817, 43388, 36750, 36802, 37724, 36836, + /* 13125 */ 38672, 38672, 38672, 26061, 38672, 38672, 38672, 38672, 38672, 28258, 36853, 42951, 22475, 36876, 38513, + /* 13140 */ 34492, 36894, 36913, 40984, 22411, 43282, 35514, 28798, 26727, 43717, 26727, 36932, 33803, 38672, 38672, + /* 13155 */ 36956, 38672, 38672, 18909, 32575, 38672, 38672, 26931, 22475, 22475, 41976, 35273, 36992, 33849, 22411, + /* 13170 */ 22411, 45307, 44424, 37025, 33324, 26727, 26727, 40875, 39885, 37058, 32918, 33802, 34967, 38672, 38672, + /* 13185 */ 32750, 38672, 38672, 38672, 22475, 38401, 22475, 22475, 28015, 33854, 34444, 22411, 22411, 22411, 27851, + /* 13200 */ 26727, 37091, 26727, 26727, 22521, 33795, 37110, 34940, 38672, 46173, 45770, 29014, 37131, 22475, 22475, + /* 13215 */ 37153, 29988, 22411, 22411, 37195, 37219, 26727, 26727, 36392, 46887, 38346, 38672, 39265, 26931, 22475, + /* 13230 */ 37243, 42142, 22411, 37261, 28347, 26727, 37278, 22521, 26313, 38672, 37296, 38672, 27136, 22475, 37317, + /* 13245 */ 22411, 48861, 26977, 26727, 48595, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, + /* 13260 */ 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 35925, 29395, 39608, 37350, + /* 13275 */ 37371, 26459, 33538, 37783, 48331, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 13290 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 13305 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 41939, 38672, 22098, 38672, 25566, + /* 13320 */ 38672, 38672, 29887, 39046, 39054, 37418, 37432, 37440, 37456, 37468, 25500, 38672, 37493, 38672, 43215, + /* 13335 */ 38672, 28533, 38672, 38672, 27562, 38672, 38672, 37494, 37484, 23258, 20853, 42141, 37510, 47612, 44280, + /* 13350 */ 27268, 25375, 38672, 29490, 38672, 29641, 38672, 37531, 37550, 38672, 38672, 38672, 37570, 27517, 39732, + /* 13365 */ 22475, 40520, 37590, 25393, 37627, 22412, 37898, 37646, 31523, 26727, 48530, 31241, 31792, 37683, 37699, + /* 13380 */ 24812, 38672, 37723, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, 37740, 22475, 37799, 22475, + /* 13395 */ 35786, 45030, 31853, 36110, 22411, 22411, 37334, 31545, 34712, 40790, 26727, 26727, 32919, 33803, 38672, + /* 13410 */ 21024, 48965, 38672, 38672, 33943, 28155, 37816, 38672, 26931, 46335, 37834, 22475, 27041, 22475, 34377, + /* 13425 */ 49011, 37855, 22411, 33297, 22411, 27890, 39339, 37875, 26727, 27899, 26727, 32918, 33802, 38672, 38672, + /* 13440 */ 38672, 38672, 38672, 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, + /* 13455 */ 27851, 26727, 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, + /* 13470 */ 22475, 29442, 22411, 22411, 22411, 26485, 26727, 26727, 26727, 26998, 48203, 38672, 38672, 38672, 26931, + /* 13485 */ 29057, 22475, 42142, 32786, 22411, 28347, 22555, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, + /* 13500 */ 42143, 22411, 37895, 26977, 49110, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, + /* 13515 */ 37914, 31619, 41895, 26978, 37938, 37974, 41757, 45432, 39617, 42139, 28345, 26456, 28257, 28343, 26456, + /* 13530 */ 28257, 36549, 37075, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 13545 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 13560 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 25240, 38672, 24719, 38672, + /* 13575 */ 46651, 38018, 25104, 38054, 38118, 38157, 38142, 38161, 38126, 38177, 38189, 25344, 38672, 45759, 49561, + /* 13590 */ 49547, 38205, 49199, 38672, 38241, 38259, 34062, 38289, 38328, 38371, 38273, 38387, 38424, 38467, 39556, + /* 13605 */ 38529, 27268, 25375, 40213, 38672, 38672, 38590, 21779, 38672, 38614, 38641, 21123, 43234, 38689, 38713, + /* 13620 */ 41522, 39725, 26628, 22475, 25393, 38737, 22411, 29117, 22690, 32232, 31319, 26727, 38753, 34652, 38772, + /* 13635 */ 35341, 38672, 38798, 38815, 38672, 38672, 40618, 38672, 38672, 38672, 38840, 33601, 40485, 22475, 38858, + /* 13650 */ 22475, 35786, 47683, 38876, 40856, 22411, 22411, 37334, 32114, 26727, 42187, 26727, 26727, 32919, 33803, + /* 13665 */ 38672, 38672, 38672, 38672, 24776, 38672, 36500, 33087, 26755, 48300, 22475, 22475, 22475, 46796, 41600, + /* 13680 */ 49410, 22411, 22411, 22411, 38894, 29994, 47730, 26727, 26727, 26727, 46465, 44085, 32918, 33802, 38915, + /* 13695 */ 38949, 38972, 38992, 38672, 39015, 39031, 44824, 39070, 29039, 39086, 28015, 33854, 39115, 39131, 22365, + /* 13710 */ 39171, 27851, 40395, 48234, 48581, 49654, 22521, 39190, 33147, 39225, 26763, 39254, 38337, 41515, 31410, + /* 13725 */ 48668, 36570, 39289, 44624, 49920, 36050, 39312, 46490, 26727, 39337, 39355, 46887, 39394, 38672, 20942, + /* 13740 */ 22766, 22475, 39417, 21499, 22411, 39448, 25398, 26727, 39489, 22521, 47568, 38672, 38672, 46680, 45512, + /* 13755 */ 39505, 42143, 39542, 32076, 39585, 39633, 39657, 35567, 35614, 26929, 29075, 42144, 39674, 26975, 39694, + /* 13770 */ 26310, 35759, 35126, 47451, 29414, 27465, 39712, 39748, 39776, 39804, 46246, 41657, 47873, 28257, 28343, + /* 13785 */ 26456, 28257, 28345, 26459, 39839, 39865, 36357, 34905, 30398, 38672, 38672, 38672, 38672, 38672, 38672, + /* 13800 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 13815 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, 39901, 22098, + /* 13830 */ 38672, 30368, 39922, 38672, 45211, 39942, 39950, 39966, 39980, 39988, 40004, 40016, 25344, 35063, 40032, + /* 13845 */ 40048, 40074, 25784, 40124, 38672, 40160, 20023, 50351, 40199, 40238, 40274, 40312, 49237, 40347, 40363, + /* 13860 */ 36660, 40411, 40427, 25375, 38672, 40443, 18661, 36161, 37534, 38672, 18669, 43864, 38672, 38672, 44690, + /* 13875 */ 26929, 22475, 37009, 40470, 40507, 25393, 22411, 40543, 31503, 45950, 26727, 47993, 40578, 40601, 30990, + /* 13890 */ 39463, 38672, 44715, 38672, 38672, 40617, 29165, 40634, 41441, 21201, 19353, 22907, 40672, 45368, 47429, + /* 13905 */ 22475, 22475, 40708, 37034, 28896, 40724, 22411, 47891, 41633, 40762, 35506, 40782, 26727, 47175, 32919, + /* 13920 */ 22394, 40806, 38672, 38654, 32566, 38672, 38672, 38672, 38672, 48740, 26931, 22475, 38860, 22475, 40833, + /* 13935 */ 22475, 33849, 22411, 41060, 22411, 40853, 22411, 33324, 26727, 38756, 26727, 40872, 26727, 32918, 33802, + /* 13950 */ 38672, 38672, 20973, 45998, 38672, 38672, 38672, 22475, 22475, 22475, 22475, 22458, 40891, 22411, 22411, + /* 13965 */ 22411, 22411, 40911, 26727, 26727, 26727, 26727, 22501, 33795, 23174, 18332, 38672, 38672, 38672, 40938, + /* 13980 */ 22475, 40962, 22475, 40684, 22411, 40981, 22411, 31782, 26727, 49841, 26727, 26998, 28442, 38672, 38672, + /* 13995 */ 38672, 26931, 41000, 41019, 42142, 41039, 41057, 28347, 41076, 41095, 22521, 44039, 38672, 38672, 38672, + /* 14010 */ 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 34915, 34036, 27330, 41115, 29084, 41137, 35817, + /* 14025 */ 26727, 27724, 35759, 41154, 41218, 41701, 41262, 41286, 47258, 44155, 39617, 42139, 28345, 26456, 28257, + /* 14040 */ 28343, 26456, 28257, 28345, 28115, 33538, 27862, 36357, 34905, 46290, 38672, 38672, 38672, 38672, 38672, + /* 14055 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 14070 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, 26904, + /* 14085 */ 22098, 38672, 38672, 41323, 22275, 41345, 40139, 38672, 26358, 41381, 41394, 41410, 41422, 25344, 38672, + /* 14100 */ 38672, 45842, 43215, 38672, 38672, 38672, 41438, 50256, 38672, 22231, 41440, 45848, 38672, 34773, 41457, + /* 14115 */ 34829, 39879, 41487, 27268, 25375, 38102, 38672, 38672, 29641, 38672, 41538, 41554, 33261, 38672, 38672, + /* 14130 */ 36430, 26929, 41579, 35101, 34846, 45533, 41616, 41649, 40556, 45401, 41673, 41736, 41773, 26727, 41789, + /* 14145 */ 40746, 42656, 41831, 38672, 41855, 41875, 32532, 32708, 46542, 38672, 38672, 38672, 38672, 28258, 22475, + /* 14160 */ 22475, 41594, 22475, 35786, 22411, 22411, 22411, 41893, 22411, 37334, 26727, 26727, 37094, 26727, 26727, + /* 14175 */ 32919, 27373, 41911, 29299, 38672, 38672, 38672, 41935, 25466, 38672, 41955, 26931, 22475, 41121, 41974, + /* 14190 */ 22475, 22475, 34152, 22411, 46370, 41992, 22411, 22411, 30778, 26727, 31887, 42009, 26727, 26727, 32918, + /* 14205 */ 33802, 38243, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, 48461, 22475, 28015, 42027, 22411, + /* 14220 */ 22411, 42047, 22411, 37764, 26727, 26727, 48819, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, + /* 14235 */ 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, + /* 14250 */ 22208, 38672, 18340, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 28175, 42067, 38672, 38672, + /* 14265 */ 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, + /* 14280 */ 26975, 26727, 30944, 42088, 42137, 42160, 42180, 48196, 42203, 28340, 26976, 39617, 42139, 28345, 26456, + /* 14295 */ 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, + /* 14310 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 14325 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, + /* 14340 */ 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 44448, 27298, 33333, 25344, + /* 14355 */ 38672, 38672, 38672, 43215, 38672, 38672, 31078, 38672, 38672, 32435, 32438, 32441, 42224, 25897, 46967, + /* 14370 */ 28280, 42275, 42293, 31579, 27268, 42319, 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, + /* 14385 */ 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, + /* 14400 */ 26727, 30990, 39463, 38672, 38672, 38672, 46624, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, + /* 14415 */ 22475, 22475, 22475, 22475, 41023, 22411, 22411, 22411, 22411, 22411, 42864, 26727, 26727, 26727, 26727, + /* 14430 */ 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26931, 22475, 22475, + /* 14445 */ 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, + /* 14460 */ 32918, 33802, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, + /* 14475 */ 22411, 22411, 22411, 22411, 27851, 26727, 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, + /* 14490 */ 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, + /* 14505 */ 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, + /* 14520 */ 38672, 38672, 27136, 42345, 42143, 29941, 22411, 26977, 42363, 22520, 26312, 34036, 26929, 22475, 42144, + /* 14535 */ 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, + /* 14550 */ 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, + /* 14565 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 14580 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, + /* 14595 */ 38672, 44743, 22177, 38672, 38672, 27385, 38672, 45876, 42383, 22121, 42412, 42425, 42433, 42449, 42461, + /* 14610 */ 25344, 38672, 32955, 42527, 43215, 18706, 42477, 42499, 33244, 42519, 38672, 42543, 40174, 42559, 42580, + /* 14625 */ 42605, 42641, 42672, 40377, 42708, 42766, 25375, 38672, 38672, 38672, 42829, 42880, 42911, 43973, 27961, + /* 14640 */ 38672, 38672, 23013, 42938, 22475, 42974, 41003, 39432, 42995, 32861, 22411, 36698, 35176, 43029, 43292, + /* 14655 */ 26727, 43049, 43082, 43138, 38672, 38672, 38672, 25328, 43172, 43191, 38672, 43210, 28234, 38672, 43231, + /* 14670 */ 48341, 22475, 43250, 22475, 22325, 43268, 47118, 39174, 22411, 22411, 43316, 43332, 43358, 40585, 26727, + /* 14685 */ 37280, 43376, 43410, 33803, 38672, 38672, 41815, 45184, 39238, 30360, 38672, 43434, 50186, 43461, 43495, + /* 14700 */ 48777, 43514, 43538, 22475, 43573, 43599, 31640, 43617, 43640, 22411, 43666, 43692, 49367, 43710, 43733, + /* 14715 */ 26727, 47922, 33802, 43767, 38672, 38672, 43787, 43812, 38672, 43850, 50024, 43886, 43557, 22475, 28015, + /* 14730 */ 33854, 43908, 34242, 22411, 22411, 27851, 46470, 43935, 44079, 26727, 39658, 43953, 38672, 43989, 21331, + /* 14745 */ 38672, 38672, 33824, 22475, 22475, 49385, 34223, 22411, 22411, 22411, 44011, 26727, 26727, 26727, 44027, + /* 14760 */ 46887, 19958, 38672, 38672, 50007, 22475, 22475, 28197, 22411, 22411, 44066, 26727, 26727, 44101, 26313, + /* 14775 */ 20872, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, + /* 14790 */ 42144, 22411, 26975, 26727, 26890, 47793, 44124, 44140, 44185, 44209, 20435, 28340, 26976, 33389, 44233, + /* 14805 */ 44253, 44277, 44296, 28343, 26456, 28257, 28345, 26459, 44315, 44342, 38482, 34905, 28863, 38672, 38672, + /* 14820 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 14835 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, 38672, + /* 14850 */ 38672, 38672, 18636, 22098, 44386, 29857, 38069, 44372, 44403, 44440, 44464, 44480, 44494, 44510, 44526, + /* 14865 */ 44538, 25344, 44554, 46908, 38672, 40088, 38672, 38672, 41365, 38672, 43156, 26783, 26781, 47212, 47203, + /* 14880 */ 34311, 44573, 42979, 44618, 41232, 44280, 27268, 44640, 44676, 38672, 44712, 29827, 28456, 38672, 38672, + /* 14895 */ 38672, 44731, 44769, 38672, 40058, 44785, 40965, 44822, 22475, 44840, 44869, 48063, 22411, 22690, 39155, + /* 14910 */ 44892, 44910, 26727, 30990, 39463, 38672, 44931, 38672, 44950, 44971, 38672, 38672, 38672, 38672, 38672, + /* 14925 */ 44987, 28258, 45008, 41301, 22475, 22475, 37611, 28054, 22411, 45028, 22411, 22411, 45046, 30301, 30320, + /* 14940 */ 26727, 26727, 28093, 30742, 33803, 38672, 38672, 45072, 32638, 30075, 38672, 46548, 37818, 38672, 42396, + /* 14955 */ 22475, 22475, 47037, 45094, 33476, 49452, 22411, 22411, 49585, 32047, 36630, 35654, 26727, 26727, 39696, + /* 14970 */ 33919, 26493, 44108, 45157, 32514, 38672, 49604, 38672, 38672, 38672, 45200, 22475, 22475, 43892, 45227, + /* 14985 */ 28015, 33854, 22411, 41993, 40562, 22411, 27851, 26727, 26727, 32834, 45248, 22521, 33795, 38672, 22295, + /* 15000 */ 45267, 19361, 38672, 28255, 36090, 22475, 45286, 43473, 42051, 22411, 45304, 43005, 43694, 26727, 49877, + /* 15015 */ 26998, 46887, 38672, 50299, 46144, 45323, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 49054, + /* 15030 */ 26313, 45345, 36168, 40817, 45367, 22475, 45384, 22411, 30669, 26977, 26727, 45417, 45465, 36482, 45500, + /* 15045 */ 45528, 32279, 22411, 44261, 26727, 45549, 35759, 34423, 35689, 37179, 48196, 20435, 28340, 26976, 27310, + /* 15060 */ 33427, 47309, 26456, 32258, 46222, 29141, 45599, 45573, 45589, 33538, 36362, 36357, 34905, 28863, 38672, + /* 15075 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15090 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 25323, + /* 15105 */ 38672, 38672, 38672, 42503, 22098, 38672, 38672, 19843, 38672, 45632, 29682, 29695, 45672, 45688, 45703, + /* 15120 */ 45719, 45731, 25344, 25697, 36820, 25484, 43215, 48936, 33218, 45747, 38933, 25691, 45794, 45830, 45905, + /* 15135 */ 45865, 45892, 45921, 30595, 45937, 41471, 45980, 45966, 25375, 45996, 46014, 46030, 34093, 38672, 38672, + /* 15150 */ 46051, 24794, 46090, 46124, 46160, 46201, 46238, 46262, 46318, 46334, 46351, 46386, 26710, 46424, 30615, + /* 15165 */ 39597, 40389, 46450, 46486, 30259, 41502, 46506, 46564, 38672, 46591, 46610, 46646, 38672, 45270, 33165, + /* 15180 */ 46667, 46703, 46719, 46781, 46818, 46866, 45012, 35786, 47344, 42692, 28076, 22411, 34531, 37334, 42303, + /* 15195 */ 43342, 43676, 26727, 37661, 41688, 46885, 38672, 46904, 39209, 44660, 46924, 28976, 46946, 38672, 30957, + /* 15210 */ 20847, 49903, 46983, 47036, 22475, 47053, 33288, 31829, 47089, 22411, 22411, 47105, 35219, 43394, 47140, + /* 15225 */ 26727, 26727, 47156, 32918, 33802, 47191, 38672, 41877, 37707, 38672, 50210, 38598, 47237, 45288, 47274, + /* 15240 */ 47290, 28015, 43827, 47306, 47325, 28394, 29934, 30696, 36786, 37667, 47360, 43033, 22521, 43418, 47376, + /* 15255 */ 50112, 38672, 38355, 49147, 28255, 47399, 22475, 22475, 47445, 47467, 34602, 22411, 47502, 47526, 50046, + /* 15270 */ 26727, 47556, 46887, 36283, 49516, 38672, 48840, 29206, 44799, 47584, 47703, 30662, 30727, 45251, 31880, + /* 15285 */ 34269, 39367, 47647, 38672, 49567, 38494, 40946, 47666, 47699, 47719, 39849, 48630, 47746, 32945, 47785, + /* 15300 */ 47809, 47827, 47850, 47889, 47907, 48880, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, + /* 15315 */ 39617, 42139, 49752, 49772, 47949, 47973, 48009, 48038, 49034, 30862, 33538, 36362, 36357, 47933, 28863, + /* 15330 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15345 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15360 */ 25323, 38672, 38672, 38672, 38672, 48079, 38672, 38672, 48107, 38672, 19671, 30510, 30518, 48127, 30518, + /* 15375 */ 30526, 48143, 48155, 25344, 38672, 38672, 38672, 44955, 38672, 29647, 38672, 38672, 38672, 38672, 29652, + /* 15390 */ 46888, 38672, 38672, 45329, 35643, 48171, 30851, 45141, 48219, 48262, 38672, 38672, 38672, 29641, 38672, + /* 15405 */ 38672, 50200, 50208, 38672, 38672, 38672, 48298, 33458, 22475, 22475, 22475, 48316, 48375, 22411, 22411, + /* 15420 */ 28301, 37203, 26727, 26727, 26727, 30914, 41169, 48395, 38672, 34989, 34103, 38672, 38672, 38672, 48429, + /* 15435 */ 38672, 34985, 36969, 28258, 49732, 31174, 47066, 48458, 46734, 22411, 37326, 35682, 48477, 41625, 48513, + /* 15450 */ 26727, 48546, 48566, 33498, 48611, 32919, 33803, 38672, 32557, 38672, 48646, 38672, 38672, 38672, 19786, + /* 15465 */ 38672, 26931, 22475, 48666, 22475, 22475, 22475, 32777, 22411, 48684, 22411, 22411, 22411, 31945, 26727, + /* 15480 */ 48701, 26727, 26727, 26727, 32918, 33361, 38672, 45778, 38672, 38672, 38672, 38672, 41194, 35417, 22475, + /* 15495 */ 22475, 22475, 28015, 42844, 22411, 22411, 22411, 22411, 27851, 48720, 26727, 26727, 26727, 22521, 33795, + /* 15510 */ 48739, 38672, 38672, 48756, 38672, 35766, 48773, 22475, 22475, 45119, 48793, 22411, 42164, 43122, 48813, + /* 15525 */ 26727, 43937, 26998, 46887, 48835, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, + /* 15540 */ 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, + /* 15555 */ 34036, 26929, 43522, 42144, 48856, 26975, 48877, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, + /* 15570 */ 26976, 39617, 42139, 28345, 26456, 20436, 32151, 30885, 28257, 28345, 26459, 33538, 22735, 48896, 34905, + /* 15585 */ 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15600 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15615 */ 38672, 25323, 38672, 38672, 38672, 38672, 48924, 48962, 36314, 45181, 38672, 50538, 38672, 45169, 48959, + /* 15630 */ 38038, 34111, 48981, 48993, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15645 */ 38672, 38672, 38672, 38672, 27525, 42141, 49009, 31292, 44280, 27268, 25375, 38672, 36812, 40252, 29641, + /* 15660 */ 38672, 38672, 38672, 38672, 43194, 38672, 38672, 26929, 45232, 22475, 37800, 22475, 25393, 49027, 22411, + /* 15675 */ 46850, 22690, 27979, 26727, 26727, 49050, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, 49070, + /* 15690 */ 38672, 38672, 49087, 38672, 28258, 22475, 49810, 22475, 22475, 35786, 22411, 22411, 34386, 22411, 22411, + /* 15705 */ 37334, 26727, 26727, 49106, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15720 */ 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, + /* 15735 */ 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, + /* 15750 */ 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, 26727, 26727, 26727, 22521, + /* 15765 */ 33795, 38672, 38672, 49126, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, 26485, + /* 15780 */ 26727, 26727, 26727, 26998, 46887, 38672, 49146, 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, + /* 15795 */ 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, + /* 15810 */ 26312, 49163, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, + /* 15825 */ 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, + /* 15840 */ 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15855 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15870 */ 38672, 38672, 25323, 38672, 38672, 38672, 38672, 49187, 38672, 21516, 38672, 20816, 49222, 49253, 38672, + /* 15885 */ 49277, 49291, 49304, 49320, 49332, 25344, 38672, 38672, 38672, 43215, 38672, 38672, 38672, 38672, 38672, + /* 15900 */ 38672, 38672, 38672, 38672, 38672, 28256, 31934, 32212, 26453, 47540, 49348, 25375, 38672, 38672, 38672, + /* 15915 */ 29641, 38672, 38672, 38672, 43175, 38672, 38672, 38672, 26929, 22475, 22475, 22475, 22475, 25393, 22411, + /* 15930 */ 22411, 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, 38672, 38672, 38672, + /* 15945 */ 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, 22411, + /* 15960 */ 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, 35291, + /* 15975 */ 38672, 38672, 38672, 36319, 22475, 22475, 22475, 22475, 22475, 31707, 22411, 22411, 22411, 22411, 22411, + /* 15990 */ 45130, 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38842, 38672, 38672, 38672, 38672, 38672, + /* 16005 */ 22475, 22475, 49383, 22475, 49401, 33854, 22411, 42856, 22411, 47124, 27851, 26727, 41079, 26727, 26727, + /* 16020 */ 49426, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, 22411, + /* 16035 */ 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, 22411, + /* 16050 */ 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, 26727, + /* 16065 */ 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, 48196, + /* 16080 */ 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, 36362, + /* 16095 */ 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 16110 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 16125 */ 38672, 38672, 38672, 25610, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, 38672, + /* 16140 */ 38672, 38672, 38672, 41202, 49468, 49480, 25344, 38672, 38672, 38672, 43215, 49496, 38672, 49515, 38672, + /* 16155 */ 38672, 46071, 46074, 38672, 49532, 28993, 37922, 42141, 49583, 32824, 44280, 27268, 25375, 38672, 38672, + /* 16170 */ 46108, 29641, 46524, 46533, 49601, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 49620, 37001, 25393, + /* 16185 */ 22411, 29448, 22411, 49639, 26727, 26727, 48625, 36734, 30990, 43097, 49680, 38672, 38672, 38672, 38672, + /* 16200 */ 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, 22411, 22411, + /* 16215 */ 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, 38672, 38672, + /* 16230 */ 38672, 49703, 38672, 38672, 26931, 22475, 22475, 49727, 22475, 22475, 48053, 22411, 22411, 49748, 22411, + /* 16245 */ 22411, 46748, 26727, 26727, 49768, 26727, 26727, 32918, 33802, 20903, 38672, 38672, 38672, 38672, 38672, + /* 16260 */ 38672, 22475, 49788, 22475, 22475, 28015, 33854, 26700, 22411, 22411, 22411, 27851, 42367, 26727, 26727, + /* 16275 */ 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, 22411, + /* 16290 */ 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, 42142, 22411, + /* 16305 */ 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, 22411, 26977, + /* 16320 */ 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, 26978, + /* 16335 */ 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, 33538, + /* 16350 */ 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 16365 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 16380 */ 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, 42922, + /* 16395 */ 38672, 38672, 38672, 38672, 44448, 27298, 33333, 25344, 45477, 38672, 38672, 43215, 38672, 38672, 49711, + /* 16410 */ 38672, 38672, 38672, 49707, 38672, 38672, 27156, 49805, 37753, 37630, 26453, 49986, 49826, 25375, 38672, + /* 16425 */ 20236, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, 28133, 26929, 22475, 22475, 22475, 47834, + /* 16440 */ 25393, 22411, 22411, 22411, 49862, 26727, 26727, 26727, 37879, 30990, 39463, 38672, 45808, 38672, 38672, + /* 16455 */ 38672, 38672, 38672, 38672, 29514, 38672, 38672, 28258, 49898, 22475, 31756, 22475, 35786, 22411, 49919, + /* 16470 */ 22411, 36688, 22411, 37334, 40766, 26727, 26727, 49936, 26727, 32919, 33803, 38672, 25655, 38672, 38672, + /* 16485 */ 38672, 38672, 38672, 38672, 38672, 26931, 22475, 37984, 22475, 22475, 22475, 35151, 22411, 46398, 22411, + /* 16500 */ 22411, 22411, 43919, 26727, 31302, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, 38672, + /* 16515 */ 38999, 38672, 22475, 22475, 26805, 22475, 49623, 33854, 22411, 22411, 49957, 22411, 49975, 26727, 26727, + /* 16530 */ 47510, 26727, 49846, 33795, 38672, 38672, 18612, 38672, 38672, 28255, 22475, 22475, 22475, 29442, 22411, + /* 16545 */ 22411, 22411, 26485, 26727, 26727, 26727, 26998, 30025, 38672, 38672, 50002, 26931, 50023, 22475, 27060, + /* 16560 */ 22411, 22411, 28347, 50040, 26727, 22521, 26313, 38672, 40323, 38672, 27136, 29066, 42143, 22411, 50062, + /* 16575 */ 26977, 27488, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, 22411, + /* 16590 */ 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, 26459, + /* 16605 */ 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 16620 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 16635 */ 38672, 38672, 38672, 38672, 38672, 25323, 38672, 38672, 38672, 38672, 22098, 38672, 38672, 38672, 38672, + /* 16650 */ 42922, 41360, 38672, 38672, 38672, 44448, 27298, 33333, 25344, 38672, 38672, 38672, 43215, 38672, 38672, + /* 16665 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, 26453, 44280, 27268, 25375, + /* 16680 */ 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26929, 22475, 22475, 22475, + /* 16695 */ 22475, 25393, 22411, 22411, 22411, 22690, 26727, 26727, 26727, 26727, 30990, 39463, 38672, 38672, 38672, + /* 16710 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, 22475, 22475, 35786, 22411, + /* 16725 */ 22411, 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, 33803, 38672, 38672, 38672, + /* 16740 */ 38672, 38672, 38672, 38672, 38672, 38672, 26931, 22475, 22475, 22475, 22475, 22475, 33849, 22411, 22411, + /* 16755 */ 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, 32918, 33802, 38672, 38672, 38672, 38672, + /* 16770 */ 38672, 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, 22411, 22411, 27851, 26727, + /* 16785 */ 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, 22475, 22475, 22475, 29442, + /* 16800 */ 22411, 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, 38672, 26931, 22475, 22475, + /* 16815 */ 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, 27136, 22475, 42143, 22411, + /* 16830 */ 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, 26727, 26310, 35759, 22476, + /* 16845 */ 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, 28343, 26456, 28257, 28345, + /* 16860 */ 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 16875 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 16890 */ 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 34339, 19585, 19583, 40183, + /* 16905 */ 33676, 50079, 27766, 27768, 50110, 33673, 34350, 50128, 50140, 20832, 38672, 38672, 38672, 43215, 38672, + /* 16920 */ 38672, 25515, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 20613, 18794, 19200, 19418, 35990, + /* 16935 */ 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, 18422, + /* 16950 */ 18462, 20670, 18475, 50434, 18503, 18525, 50156, 19412, 50440, 18509, 36003, 19232, 20563, 38672, 46930, + /* 16965 */ 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, 25849, + /* 16980 */ 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, 48943, + /* 16995 */ 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, 20726, + /* 17010 */ 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, 19315, + /* 17025 */ 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, 19601, + /* 17040 */ 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, 19875, + /* 17055 */ 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, 20039, + /* 17070 */ 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, 20380, + /* 17085 */ 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, 20532, + /* 17100 */ 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, 20695, + /* 17115 */ 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17130 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17145 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, 38672, 38672, + /* 17160 */ 20273, 38672, 42922, 31104, 31112, 50226, 50240, 50248, 42483, 50272, 20832, 38672, 38672, 38672, 43215, + /* 17175 */ 38672, 38672, 50505, 38672, 38672, 38672, 25547, 38672, 38672, 25544, 18953, 18958, 18794, 35998, 18531, + /* 17190 */ 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, 18403, + /* 17205 */ 18422, 18462, 20670, 19406, 50434, 18503, 18525, 18547, 19412, 50440, 18509, 36003, 19232, 20563, 38672, + /* 17220 */ 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, 18406, + /* 17235 */ 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, 37554, + /* 17250 */ 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, 19129, + /* 17265 */ 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, 19299, + /* 17280 */ 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, 19046, + /* 17295 */ 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, 19859, + /* 17310 */ 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, 35979, + /* 17325 */ 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, 20337, + /* 17340 */ 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, 20516, + /* 17355 */ 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, 21954, + /* 17370 */ 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17385 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17400 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 42589, 38672, + /* 17415 */ 38672, 38672, 38672, 24842, 35017, 50315, 50319, 50335, 50343, 43995, 50367, 20832, 38672, 38672, 38672, + /* 17430 */ 43215, 38672, 38672, 25359, 38672, 38672, 23171, 38672, 38672, 38672, 23167, 18953, 18958, 18794, 35998, + /* 17445 */ 19418, 35990, 45351, 38672, 18269, 42564, 29641, 38672, 40144, 38672, 23032, 18306, 18356, 18382, 18387, + /* 17460 */ 18403, 18422, 18462, 20670, 19075, 50434, 18503, 18525, 50409, 19412, 50440, 18509, 36003, 19232, 20563, + /* 17475 */ 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, 18745, 18769, + /* 17490 */ 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, 19540, 19955, + /* 17505 */ 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, 19169, 19103, + /* 17520 */ 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, 19000, 30964, + /* 17535 */ 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, 19905, 19631, + /* 17550 */ 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, 19808, 19113, + /* 17565 */ 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, 20010, 46515, + /* 17580 */ 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, 20259, 20298, + /* 17595 */ 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 20424, 20452, 20468, 20484, 20497, 50424, 20500, + /* 17610 */ 20516, 20532, 20548, 20592, 20589, 50171, 20608, 19547, 18794, 18487, 20629, 20143, 19945, 20660, 18437, + /* 17625 */ 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17640 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17655 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 20939, 38672, 38672, 38672, 38672, 30470, + /* 17670 */ 38672, 38672, 38672, 38672, 42922, 38672, 38672, 38672, 38672, 38672, 38672, 24860, 25344, 38672, 38672, + /* 17685 */ 38672, 43215, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28256, 42141, 22411, + /* 17700 */ 26453, 44280, 27268, 22230, 38672, 38672, 38672, 29641, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17715 */ 26929, 22475, 22475, 22475, 22475, 36544, 22411, 22411, 22411, 33858, 26727, 26727, 26727, 26727, 30990, + /* 17730 */ 39463, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 28258, 22475, 22475, + /* 17745 */ 22475, 22475, 35786, 22411, 22411, 22411, 22411, 22411, 37334, 26727, 26727, 26727, 26727, 26727, 32919, + /* 17760 */ 33803, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 26931, 22475, 22475, 22475, 22475, + /* 17775 */ 22475, 33849, 22411, 22411, 22411, 22411, 22411, 33324, 26727, 26727, 26727, 26727, 26727, 32918, 33802, + /* 17790 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 22475, 22475, 22475, 22475, 28015, 33854, 22411, 22411, + /* 17805 */ 22411, 22411, 27851, 26727, 26727, 26727, 26727, 22521, 33795, 38672, 38672, 38672, 38672, 38672, 28255, + /* 17820 */ 22475, 22475, 22475, 29442, 22411, 22411, 22411, 26485, 26727, 26727, 26727, 26998, 46887, 38672, 38672, + /* 17835 */ 38672, 26931, 22475, 22475, 42142, 22411, 22411, 28347, 26727, 26727, 22521, 26313, 38672, 38672, 38672, + /* 17850 */ 27136, 22475, 42143, 22411, 22411, 26977, 26727, 22520, 26312, 34036, 26929, 22475, 42144, 22411, 26975, + /* 17865 */ 26727, 26310, 35759, 22476, 22411, 26978, 48196, 20435, 28340, 26976, 39617, 42139, 28345, 26456, 28257, + /* 17880 */ 28343, 26456, 28257, 28345, 26459, 33538, 36362, 36357, 34905, 28863, 38672, 38672, 38672, 38672, 38672, + /* 17895 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17910 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 17925 */ 38672, 38672, 38672, 38956, 38672, 38672, 29796, 50456, 50460, 50460, 50482, 38955, 50476, 50498, 38672, + /* 17940 */ 38672, 38672, 38672, 38672, 38672, 50505, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 18953, 18958, + /* 17955 */ 18794, 35998, 19418, 35990, 45351, 38672, 18269, 42564, 38672, 38672, 40144, 38672, 23032, 18306, 18356, + /* 17970 */ 18382, 18387, 18403, 18422, 18462, 20670, 18475, 50434, 18503, 18525, 50156, 19412, 50440, 18509, 36003, + /* 17985 */ 19232, 20563, 38672, 46930, 18591, 38672, 38672, 37574, 18609, 18628, 33736, 18652, 18685, 18722, 18753, + /* 18000 */ 18745, 18769, 18406, 25849, 18792, 20360, 18810, 18830, 18835, 19138, 18794, 20364, 18814, 18794, 18839, + /* 18015 */ 19540, 19955, 37554, 48943, 18855, 18871, 18894, 40258, 38672, 38976, 18931, 18947, 18974, 19016, 19062, + /* 18030 */ 19169, 19103, 19129, 20726, 19934, 19154, 19185, 19222, 19248, 20726, 19934, 19154, 19185, 19222, 19273, + /* 18045 */ 19000, 30964, 19299, 19315, 28712, 19342, 25187, 19377, 19393, 19434, 19464, 19495, 19569, 19608, 24938, + /* 18060 */ 19905, 19631, 19046, 19601, 24931, 19898, 19624, 19039, 19647, 19687, 43796, 19722, 19792, 19745, 19771, + /* 18075 */ 19808, 19113, 19859, 19875, 19921, 18446, 19976, 19994, 24983, 18444, 19974, 19992, 20321, 18562, 47383, + /* 18090 */ 20010, 46515, 35979, 20039, 20679, 20105, 20160, 20116, 20132, 20159, 20115, 20176, 19479, 20207, 20223, + /* 18105 */ 20259, 20298, 20337, 20380, 20402, 21368, 20386, 20408, 21374, 19283, 50527, 20452, 20468, 20484, 20497, + /* 18120 */ 50424, 20500, 20516, 26100, 20548, 20592, 20589, 50171, 18953, 19547, 18794, 18487, 20629, 20143, 19945, + /* 18135 */ 20660, 18437, 21954, 20695, 20711, 21969, 19448, 21939, 20755, 19510, 19659, 38672, 38672, 38672, 38672, + /* 18150 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, + /* 18165 */ 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672, 94505, 94505, 90408, 90408, + /* 18180 */ 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, + /* 18195 */ 94505, 1, 12290, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 0, 94505, 90408, 94505, + /* 18211 */ 94505, 94505, 94505, 94505, 94505, 94505, 94505, 94505, 364, 94505, 90408, 94505, 94505, 94505, 94505, + /* 18226 */ 94505, 94505, 94505, 69632, 73728, 94505, 94505, 94505, 94505, 94505, 65536, 94505, 3, 0, 0, 2183168, 0, + /* 18243 */ 0, 0, 90408, 94505, 298, 299, 0, 2134016, 302, 303, 0, 0, 0, 0, 0, 1636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1645, + /* 18269 */ 0, 0, 2732032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2904064, 2908160, 0, 0, 0, 0, 0, 1699, 0, 0, 0, 0, 0, 0, 0, + /* 18297 */ 0, 0, 0, 0, 2963, 0, 0, 0, 0, 0, 2424832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2625536, 0, 0, 0, 0, 0, + /* 18326 */ 2045, 0, 0, 0, 0, 2049, 0, 0, 0, 0, 0, 0, 0, 2711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2976, 0, 534, 534, 534, 534, + /* 18355 */ 534, 2699264, 2715648, 0, 0, 2772992, 2805760, 2830336, 0, 2863104, 2920448, 0, 0, 0, 0, 0, 0, 0, 303, + /* 18374 */ 303, 303, 303, 0, 303, 303, 303, 303, 0, 2805760, 2920448, 0, 0, 0, 0, 0, 2920448, 0, 0, 0, 0, 0, 0, 0, + /* 18398 */ 2732032, 0, 2179072, 2179072, 2179072, 2179072, 2424832, 2433024, 2179072, 2179072, 2179072, 2179072, + /* 18410 */ 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 18421 */ 3125248, 2625536, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2699264, 2179072, 2715648, + /* 18432 */ 2179072, 2723840, 2179072, 2732032, 2772992, 2179072, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 18443 */ 2592768, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 18454 */ 2551808, 2125824, 2125824, 2125824, 2125824, 2125824, 2637824, 2125824, 2179072, 2179072, 2805760, + /* 18465 */ 2179072, 2830336, 2179072, 2179072, 2863104, 2179072, 2179072, 2179072, 2179072, 2920448, 2179072, + /* 18476 */ 2179072, 2179072, 0, 0, 2125824, 2125824, 2125824, 2125824, 2125824, 2424832, 2433024, 2125824, 2125824, + /* 18489 */ 2125824, 2125824, 0, 2502656, 0, 0, 3010560, 0, 0, 0, 0, 2990080, 2179072, 2179072, 2699264, 2125824, + /* 18505 */ 2715648, 2125824, 2723840, 2125824, 2732032, 2772992, 2125824, 2125824, 2125824, 2805760, 2125824, + /* 18516 */ 2830336, 2125824, 2125824, 2863104, 2125824, 2125824, 2125824, 2125824, 2920448, 2863104, 2125824, + /* 18527 */ 2125824, 2125824, 2125824, 2920448, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 18538 */ 2125824, 2125824, 2125824, 0, 1142784, 0, 2179072, 2125824, 2125824, 2125824, 3117056, 2125824, 2125824, + /* 18551 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 0, 0, 975, 2125824, 0, 0, 0, 0, 0, + /* 18568 */ 0, 2510848, 2514944, 0, 0, 2547712, 2596864, 0, 0, 0, 0, 0, 0, 735, 0, 0, 0, 0, 735, 0, 741, 0, 0, 0, + /* 18592 */ 2789376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3137, 0, 0, 2142208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18622 */ 0, 0, 0, 0, 2733, 0, 2662400, 0, 2813952, 0, 0, 0, 0, 2375680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 351, 352, + /* 18648 */ 0, 0, 0, 0, 2584576, 0, 0, 0, 0, 2838528, 0, 0, 2838528, 0, 0, 0, 0, 0, 0, 0, 0, 1122, 0, 0, 0, 0, 0, 0, + /* 18676 */ 0, 0, 0, 0, 1186, 0, 0, 0, 0, 0, 0, 0, 2891776, 0, 0, 0, 0, 0, 2392064, 2412544, 0, 0, 2838528, 0, 0, 0, + /* 18702 */ 0, 0, 0, 262144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 706, 0, 0, 0, 0, 0, 0, 0, 0, 2179072, 2179072, 2179072, + /* 18728 */ 2408448, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 18739 */ 2179072, 2179072, 2125824, 0, 2126724, 2126724, 2617344, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 18751 */ 2179072, 2662400, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 18762 */ 2179072, 2584576, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2801664, + /* 18773 */ 2813952, 2179072, 2838528, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 18784 */ 2179072, 2179072, 2179072, 2179072, 2125824, 1798, 2125824, 2125824, 2125824, 2408448, 2125824, 2125824, + /* 18796 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 18807 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2662400, 2125824, 2125824, 2125824, 2125824, + /* 18818 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2801664, 2813952, 2125824, 2838528, + /* 18829 */ 2125824, 2813952, 2125824, 2838528, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 18840 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 3125248, 2125824, 2125824, 2125824, 2125824, + /* 18851 */ 2125824, 2125824, 2125824, 2125824, 0, 2822144, 0, 0, 2883584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3080192, + /* 18871 */ 3100672, 3104768, 0, 0, 0, 0, 3186688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, 306, 0, 0, 0, 0, 0, 0, 2797568, + /* 18897 */ 0, 0, 0, 0, 0, 0, 0, 2850816, 2867200, 0, 0, 2883584, 0, 0, 0, 0, 0, 2072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 18925 */ 0, 3134, 0, 0, 0, 0, 2465792, 0, 0, 2719744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3014656, 3207168, 0, 2691072, + /* 18949 */ 0, 0, 3215360, 0, 0, 0, 0, 0, 0, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 18966 */ 2179072, 2179072, 2179072, 2125824, 2125824, 2125824, 2125824, 2125824, 2179072, 2179072, 2179072, + /* 18977 */ 2179072, 2179072, 2461696, 2465792, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2523136, + /* 18988 */ 2179072, 2179072, 2179072, 0, 1342, 2125824, 2125824, 2125824, 2125824, 2125824, 2424832, 2433024, + /* 19000 */ 2125824, 2125824, 2125824, 2125824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2473984, 2478080, 2179072, 2179072, + /* 19018 */ 2179072, 2179072, 2179072, 2179072, 2600960, 2179072, 2179072, 2179072, 2179072, 2641920, 2179072, + /* 19029 */ 2179072, 2179072, 2179072, 2179072, 2125824, 2125824, 2125824, 2125824, 2125824, 1047, 2125824, 2125824, + /* 19041 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 3035136, 2125824, 2125824, 3072000, 2125824, + /* 19052 */ 2125824, 2125824, 3121152, 2125824, 2125824, 3141632, 2125824, 2125824, 2125824, 3170304, 2179072, + /* 19063 */ 2179072, 2719744, 2179072, 2179072, 2179072, 2179072, 2179072, 2768896, 2777088, 2781184, 2797568, + /* 19074 */ 2822144, 2179072, 2179072, 2179072, 0, 900, 2125824, 2125824, 2125824, 2125824, 2125824, 2424832, 2433024, + /* 19087 */ 2125824, 2125824, 2125824, 2125824, 298, 0, 299, 0, 302, 0, 303, 0, 0, 0, 2473984, 2478080, 2179072, + /* 19104 */ 3063808, 2179072, 2179072, 2179072, 2179072, 3100672, 2179072, 2179072, 3133440, 2179072, 2179072, + /* 19115 */ 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2551808, 2179072, 2179072, 2179072, 2179072, + /* 19126 */ 2179072, 2637824, 2179072, 2179072, 2179072, 2179072, 3207168, 2179072, 0, 0, 0, 0, 2125824, 2125824, + /* 19140 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 0, 0, 2125824, 2125824, 2125824, 2408448, 2125824, + /* 19153 */ 2125824, 2125824, 2719744, 2125824, 2125824, 2125824, 2125824, 2125824, 2768896, 2777088, 2781184, + /* 19164 */ 2797568, 2822144, 2125824, 2125824, 2125824, 2883584, 2179072, 2912256, 2179072, 2179072, 2179072, + /* 19175 */ 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 3039232, 2125824, + /* 19186 */ 2912256, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 19197 */ 2125824, 2125824, 3039232, 2125824, 2125824, 0, 2125824, 2126799, 2125824, 2125824, 2125824, 2125824, + /* 19209 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 245760, 0, 0, 2179072, 2125824, 2125824, + /* 19222 */ 3063808, 2125824, 2125824, 2125824, 2125824, 2125824, 3100672, 2125824, 2125824, 3133440, 2125824, + /* 19233 */ 2125824, 2125824, 2125824, 2125824, 2125824, 0, 2179072, 2125824, 2125824, 2457600, 2179072, 2179072, + /* 19245 */ 2179072, 2179072, 2457600, 2125824, 2125824, 2125824, 3207168, 2125824, 0, 0, 0, 0, 2125824, 2125824, + /* 19259 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 0, 1894, 2125824, 2125824, 2125824, 2408448, + /* 19271 */ 2125824, 2125824, 2125824, 2125824, 2125824, 3207168, 2125824, 2179072, 2125824, 2125824, 2179072, + /* 19282 */ 2179072, 2179072, 2179072, 2125824, 2125824, 2125824, 2125824, 0, 2486272, 0, 0, 0, 0, 0, 2678784, + /* 19297 */ 2854912, 3006464, 0, 2924544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3162112, 3170304, 0, 0, 3219456, 3035136, 0, 0, + /* 19318 */ 0, 0, 0, 3072000, 2650112, 0, 0, 2809856, 0, 0, 0, 0, 0, 0, 0, 1650, 0, 0, 0, 0, 0, 0, 1654, 0, 2686976, + /* 19343 */ 2736128, 0, 0, 2531328, 2707456, 0, 3190784, 0, 0, 2576384, 0, 0, 0, 0, 0, 0, 0, 1688, 0, 0, 0, 0, 0, 0, + /* 19367 */ 0, 0, 0, 2742, 0, 0, 0, 0, 0, 0, 0, 3121152, 3141632, 0, 0, 0, 2924544, 0, 2682880, 0, 0, 0, 0, 0, 0, + /* 19392 */ 3112960, 2387968, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2453504, + /* 19403 */ 2179072, 2473984, 2482176, 2179072, 2179072, 2179072, 0, 901, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 19416 */ 2424832, 2433024, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 19427 */ 2125824, 0, 0, 0, 2179072, 2125824, 2125824, 2179072, 2179072, 2179072, 2531328, 2179072, 2179072, + /* 19440 */ 2179072, 2179072, 2179072, 2179072, 2179072, 2605056, 2179072, 2629632, 2179072, 2179072, 2179072, + /* 19451 */ 2179072, 2179072, 2125824, 2527232, 2125824, 2125824, 2125824, 2125824, 2125824, 3092480, 2125824, + /* 19462 */ 2527232, 2125824, 2650112, 2179072, 2179072, 2179072, 2707456, 2179072, 2736128, 2179072, 2179072, + /* 19473 */ 2179072, 2179072, 2179072, 2179072, 2179072, 2887680, 2179072, 2125824, 2125824, 2125824, 2125824, + /* 19484 */ 2441216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2932736, 2179072, 2924544, 2179072, 2179072, 2179072, 2179072, + /* 19501 */ 2179072, 2179072, 2179072, 2179072, 2179072, 3035136, 2179072, 2179072, 3072000, 2179072, 2125824, + /* 19512 */ 2658304, 2973696, 2125824, 2125824, 2658304, 2973696, 2125824, 2711552, 2560000, 2179072, 2560000, + /* 19523 */ 2125824, 2560000, 2125824, 2125824, 2125824, 2125824, 2125824, 3223552, 975, 0, 2125824, 2125824, 2416640, + /* 19536 */ 2125824, 2125824, 2125824, 2445312, 2125824, 2125824, 2125824, 2125824, 2179072, 2125824, 2125824, + /* 19547 */ 2179072, 2179072, 2179072, 2179072, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 19558 */ 2125824, 2125824, 2125824, 2125824, 2125824, 1047, 0, 0, 2179072, 2125824, 2125824, 2179072, 3121152, + /* 19571 */ 2179072, 2179072, 3141632, 2179072, 2179072, 2179072, 3170304, 2179072, 2179072, 3190784, 3194880, + /* 19582 */ 2179072, 0, 0, 0, 0, 0, 0, 1134592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1134592, 2125824, 2125824, 3190784, + /* 19604 */ 3194880, 2125824, 0, 0, 0, 0, 0, 0, 2387968, 2125824, 2125824, 2125824, 2420736, 2125824, 2125824, + /* 19619 */ 2125824, 2125824, 2125824, 2453504, 2125824, 2707456, 2125824, 2736128, 2125824, 2125824, 2125824, + /* 19630 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2887680, 2125824, 2125824, 2924544, 2125824, 2125824, + /* 19641 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 3141632, 2125824, 2125824, + /* 19652 */ 2125824, 3170304, 2125824, 2125824, 3190784, 3194880, 2125824, 2179072, 2125824, 2125824, 2179072, + /* 19663 */ 2125824, 2125824, 2179072, 2125824, 2125824, 2985984, 2985984, 2985984, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, + /* 19680 */ 0, 419, 419, 0, 0, 65536, 419, 2179072, 3112960, 3219456, 2125824, 2125824, 3112960, 3219456, 2125824, + /* 19695 */ 2125824, 3112960, 3219456, 0, 0, 0, 0, 0, 0, 0, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1624, 0, 0, 0, 0, 0, 0, + /* 19722 */ 0, 3022848, 0, 0, 3145728, 0, 3203072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 335, 336, 0, 0, 0, 0, 0, 0, 0, 0, + /* 19749 */ 3067904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2445312, 0, 2842624, 0, + /* 19778 */ 0, 0, 2637824, 0, 0, 0, 0, 2621440, 0, 0, 0, 0, 0, 2100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2727936, 0, 0, + /* 19806 */ 0, 3084288, 3182592, 2899968, 0, 2961408, 0, 0, 2179072, 2179072, 2416640, 2179072, 2179072, 2179072, + /* 19820 */ 2445312, 2179072, 2179072, 2179072, 0, 901, 2126724, 2126724, 2126724, 2126724, 2126724, 2425732, 2433924, + /* 19833 */ 2126724, 2126724, 2126724, 2126724, 2458574, 2126798, 2126798, 2126798, 2126798, 2183168, 0, 0, 0, 0, 0, + /* 19848 */ 0, 0, 396, 0, 0, 0, 0, 0, 396, 0, 0, 2179072, 2179072, 2179072, 2727936, 2752512, 2179072, 2179072, + /* 19866 */ 2179072, 2842624, 2846720, 2179072, 2895872, 2916352, 2179072, 2179072, 2945024, 2179072, 2179072, + /* 19877 */ 2994176, 2179072, 3002368, 2179072, 2179072, 3022848, 2179072, 3067904, 3084288, 3096576, 2179072, + /* 19888 */ 2179072, 2179072, 2179072, 2179072, 2125824, 2125824, 2125824, 2125824, 2125824, 237568, 2125824, 2125824, + /* 19900 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2605056, 2125824, 2629632, 2125824, 2125824, 2650112, + /* 19911 */ 2125824, 2125824, 2125824, 2707456, 2125824, 2736128, 2125824, 2125824, 2125824, 2125824, 2179072, + /* 19922 */ 2179072, 2179072, 3223552, 0, 0, 2125824, 2125824, 2416640, 2125824, 2125824, 2125824, 2445312, 2125824, + /* 19935 */ 2125824, 2125824, 2125824, 2125824, 2600960, 2125824, 2125824, 2125824, 2125824, 2641920, 2125824, + /* 19946 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 3010560, 2125824, 2125824, + /* 19957 */ 2125824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2940, 0, 2637824, 2125824, 2125824, 2125824, 2125824, + /* 19979 */ 2727936, 2752512, 2125824, 2125824, 2125824, 2125824, 2842624, 2846720, 2125824, 2895872, 2916352, + /* 19990 */ 2125824, 2125824, 2125824, 2125824, 2945024, 2125824, 2125824, 2994176, 2125824, 3002368, 2125824, + /* 20001 */ 2125824, 3022848, 2125824, 3067904, 3084288, 2125824, 3096576, 2125824, 2125824, 0, 0, 0, 2928640, 0, 0, + /* 20016 */ 0, 3059712, 0, 2543616, 2666496, 0, 2633728, 0, 0, 0, 0, 0, 0, 766, 767, 0, 0, 0, 754, 0, 0, 774, 0, + /* 20039 */ 2179072, 2179072, 2179072, 2494464, 2179072, 2179072, 2514944, 2179072, 2179072, 2179072, 2543616, + /* 20050 */ 2547712, 2179072, 2179072, 2596864, 2179072, 2126724, 2126724, 2126724, 2126724, 2126724, 2593668, + /* 20061 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126798, 0, 0, 0, 0, 0, 0, + /* 20076 */ 2510848, 2514944, 0, 0, 2547712, 2596864, 0, 0, 0, 0, 0, 0, 1164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1564, 0, + /* 20101 */ 1566, 0, 0, 0, 2179072, 2179072, 3059712, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 3178496, + /* 20115 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2928640, + /* 20126 */ 2125824, 2125824, 2125824, 2998272, 2125824, 2125824, 2125824, 2125824, 3059712, 2125824, 2125824, + /* 20137 */ 2125824, 2125824, 2125824, 2125824, 2125824, 3178496, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 20148 */ 2125824, 2125824, 2125824, 2125824, 3010560, 2125824, 2125824, 2125824, 2125824, 2125824, 2502656, + /* 20159 */ 2125824, 2125824, 2125824, 2494464, 2125824, 2125824, 2514944, 2125824, 2125824, 2125824, 2543616, + /* 20170 */ 2547712, 2125824, 2125824, 2596864, 2125824, 2125824, 2125824, 2125824, 2125824, 3059712, 2125824, + /* 20181 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 3178496, 2179072, 2125824, 2125824, 2179072, + /* 20192 */ 2126724, 2126724, 2126798, 2126798, 2441216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2932736, 2965504, 0, 0, 3076096, + /* 20211 */ 0, 0, 2695168, 3174400, 2646016, 2613248, 2703360, 0, 0, 0, 0, 2977792, 0, 0, 3047424, 3129344, 0, + /* 20228 */ 2981888, 2396160, 0, 3153920, 0, 0, 0, 2740224, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, 0, + /* 20254 */ 0, 0, 0, 0, 0, 0, 0, 2793472, 0, 0, 0, 0, 0, 2469888, 2506752, 2756608, 0, 0, 2580480, 0, 0, 0, 0, 0, 0, + /* 20279 */ 1146880, 0, 1146880, 0, 0, 0, 0, 0, 0, 0, 302, 302, 302, 302, 0, 302, 302, 302, 302, 0, 2396160, 2400256, + /* 20301 */ 2179072, 2179072, 2441216, 2179072, 2469888, 2179072, 2179072, 2179072, 2519040, 2179072, 2179072, + /* 20312 */ 2179072, 2179072, 2179072, 2125824, 2125824, 2125824, 2125824, 2125824, 241664, 2125824, 2125824, 2125824, + /* 20324 */ 2125824, 2125824, 2125824, 2125824, 3223552, 2179072, 2125824, 2125824, 2179072, 2179072, 2125824, + /* 20335 */ 2125824, 2125824, 2588672, 2179072, 2613248, 2646016, 2179072, 2179072, 2695168, 2756608, 2179072, + /* 20346 */ 2179072, 2179072, 2932736, 2179072, 2179072, 2179072, 2179072, 2179072, 2125824, 2125824, 2125824, + /* 20357 */ 2125824, 2125824, 245760, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2584576, 2125824, 2125824, + /* 20369 */ 2125824, 2125824, 2125824, 2617344, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2662400, + /* 20380 */ 2179072, 2179072, 2179072, 3129344, 2179072, 2179072, 3153920, 3166208, 3174400, 2396160, 2400256, + /* 20391 */ 2125824, 2125824, 2441216, 2125824, 2469888, 2125824, 2125824, 2125824, 2519040, 2125824, 2125824, + /* 20402 */ 2125824, 2125824, 2125824, 2519040, 2125824, 2125824, 2125824, 2125824, 2588672, 2125824, 2613248, + /* 20413 */ 2646016, 2125824, 2125824, 2695168, 2756608, 2125824, 2125824, 2125824, 2125824, 2932736, 2125824, 0, + /* 20425 */ 3108864, 3198976, 0, 0, 3043328, 0, 3149824, 2936832, 0, 2760704, 3132, 0, 0, 0, 0, 534, 534, 534, 534, + /* 20444 */ 534, 534, 534, 534, 534, 534, 534, 3503, 2953216, 0, 0, 2826240, 3158016, 2428928, 0, 3018752, 2764800, + /* 20461 */ 2572288, 0, 0, 3051520, 2179072, 2428928, 2437120, 2179072, 2486272, 2179072, 2179072, 2179072, 2179072, + /* 20474 */ 2179072, 2179072, 2179072, 2179072, 2654208, 2678784, 2760704, 2764800, 2854912, 2969600, 2179072, + /* 20485 */ 3006464, 2179072, 3018752, 2179072, 2179072, 2179072, 3149824, 2125824, 2428928, 2437120, 2125824, + /* 20496 */ 2486272, 2125824, 2125824, 2125824, 2125824, 2125824, 2654208, 2678784, 2760704, 2764800, 2785280, + /* 20507 */ 2854912, 2969600, 2125824, 3006464, 2125824, 3018752, 2125824, 2125824, 2125824, 2125824, 3149824, + /* 20518 */ 2179072, 3051520, 2125824, 3051520, 2125824, 3051520, 0, 2490368, 2498560, 0, 0, 0, 0, 2875392, 0, 0, 0, + /* 20535 */ 3132, 0, 0, 2834432, 0, 3227648, 2568192, 2564096, 0, 2940928, 2179072, 2179072, 2498560, 2179072, + /* 20549 */ 2179072, 2179072, 2555904, 2564096, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 20560 */ 2179072, 2179072, 3137536, 2125824, 2125824, 2125824, 2125824, 2457600, 2125824, 2125824, 2125824, + /* 20571 */ 2125824, 2183168, 0, 0, 0, 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, 333, 0, 0, 2125824, 3137536, 2125824, 2125824, + /* 20593 */ 2498560, 2125824, 2125824, 2125824, 2555904, 2564096, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 20604 */ 2125824, 2125824, 2125824, 2125824, 3132, 0, 0, 0, 0, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 20618 */ 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2125824, 2126725, 2125824, 2125824, 2125824, + /* 20629 */ 2502656, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 3010560, + /* 20640 */ 2179072, 2179072, 2125824, 2125824, 2502656, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 20651 */ 2179072, 2179072, 2179072, 3010560, 2179072, 2179072, 2126724, 2126724, 2503556, 0, 0, 0, 0, 2179072, + /* 20665 */ 2179072, 2179072, 2179072, 2179072, 2592768, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 20676 */ 2179072, 2179072, 3117056, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 20687 */ 2179072, 2928640, 2179072, 2179072, 2179072, 2998272, 2179072, 2179072, 3031040, 0, 0, 0, 2179072, + /* 20700 */ 2449408, 2179072, 2535424, 2179072, 2609152, 2179072, 2859008, 2179072, 2179072, 2179072, 3031040, + /* 20711 */ 2125824, 2449408, 2125824, 2535424, 2125824, 2609152, 2125824, 2859008, 2125824, 2125824, 2125824, + /* 20722 */ 3031040, 2125824, 2125824, 2449408, 2125824, 2125824, 2125824, 2125824, 2461696, 2465792, 2125824, + /* 20733 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2523136, 2125824, 2125824, 2125824, 298, 0, 0, 0, 298, 0, + /* 20748 */ 299, 0, 0, 0, 299, 0, 302, 2125824, 2125824, 2125824, 3026944, 2404352, 2125824, 2125824, 2125824, + /* 20763 */ 2125824, 3026944, 2539520, 0, 2949120, 2179072, 2658304, 2973696, 111044, 111044, 111044, 111044, 111044, + /* 20776 */ 111044, 111044, 111044, 111044, 111044, 111044, 111044, 111044, 111044, 111044, 111044, 452, 452, 111044, + /* 20790 */ 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 111044, 111044, 111044, 111044, 111044, 111044, 111044, + /* 20807 */ 111044, 111044, 111044, 452, 111044, 111044, 111044, 111044, 111044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 360, 0, 0, + /* 20828 */ 0, 0, 0, 360, 3, 0, 0, 2183168, 0, 0, 0, 0, 0, 298, 299, 0, 2134016, 302, 303, 0, 0, 0, 0, 0, 2124, 0, 0, + /* 20855 */ 0, 0, 0, 534, 534, 534, 534, 534, 847, 534, 534, 861, 534, 534, 0, 302, 118784, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20881 */ 0, 0, 0, 0, 0, 3127, 0, 0, 0, 302, 0, 0, 0, 302, 119197, 73728, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 0, 2403, + /* 20909 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 302, 302, 0, 0, 0, 0, 302, 302, 302, 302, 302, 302, 0, 0, 0, 0, 0, 302, 0, + /* 20938 */ 302, 1, 12290, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2966, 0, 3, 0, 0, 2183168, 0, 0, 0, 0, 0, + /* 20967 */ 33396, 299, 0, 2134016, 49784, 303, 0, 0, 0, 0, 0, 2428, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172032, 0, 0, 0, + /* 20994 */ 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 302, 0, 0, 0, 2424832, 2433024, 0, 0, 2457600, 2105631, 12290, 3, 0, 0, + /* 21018 */ 293, 0, 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 0, 2024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2455, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21050 */ 0, 0, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 0, 0, 122880, 0, 0, 0, 0, 0, + /* 21069 */ 0, 0, 0, 0, 0, 0, 785, 0, 790, 0, 793, 0, 0, 0, 122880, 0, 122880, 122880, 122880, 0, 0, 0, 0, 0, 122880, + /* 21094 */ 0, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 122880, 122880, + /* 21108 */ 122880, 122880, 122880, 0, 0, 122880, 0, 0, 0, 0, 0, 0, 0, 0, 122880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21135 */ 1216, 0, 0, 0, 0, 147456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3148, 0, 0, 0, 0, 1067, 1071, 0, 0, + /* 21165 */ 1075, 1079, 0, 2424832, 2433024, 0, 0, 2457600, 0, 0, 0, 131072, 0, 0, 0, 69632, 73728, 0, 0, 0, 0, 0, + /* 21187 */ 65536, 0, 0, 0, 0, 0, 2479, 2437, 0, 0, 0, 0, 0, 2484, 0, 0, 0, 0, 0, 0, 1675, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21217 */ 0, 3260, 0, 0, 534, 534, 534, 131072, 0, 0, 131072, 131072, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 131072, 0, + /* 21241 */ 0, 131072, 0, 0, 0, 0, 0, 135168, 135168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225708, 0, 0, 0, + /* 21268 */ 135168, 0, 0, 135168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1096, 0, 0, 0, 0, 0, 0, 0, 135168, 0, 135168, + /* 21294 */ 135168, 135168, 135168, 135168, 135168, 0, 135168, 135168, 135168, 135168, 135168, 135168, 0, 0, 0, 0, 0, + /* 21311 */ 135168, 0, 135168, 1, 12290, 3, 0, 0, 2183168, 0, 0, 0, 0, 0, 629, 630, 0, 2134016, 633, 634, 0, 0, 0, 0, + /* 21335 */ 0, 2725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2200245, 2200245, 2200245, 0, 0, 2125824, 3117056, 2125824, + /* 21356 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 0, 0, 1434, 2125824, + /* 21369 */ 2125824, 2125824, 2125824, 2932736, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 21380 */ 2125824, 3129344, 2125824, 2125824, 3153920, 3166208, 3174400, 2506752, 2506752, 2506752, 0, 303, 139264, + /* 21393 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 266240, 0, 0, 0, 0, 0, 303, 0, 0, 0, 303, 69632, 139681, 0, 0, + /* 21422 */ 0, 0, 0, 65536, 0, 0, 0, 0, 0, 2738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2013, 0, 0, 0, 0, 303, 303, 303, + /* 21451 */ 303, 303, 303, 0, 0, 0, 0, 0, 303, 0, 303, 1, 12290, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, 3, 0, 0, + /* 21481 */ 2183168, 0, 0, 0, 0, 0, 298, 33399, 0, 2134016, 302, 49787, 0, 0, 0, 0, 0, 2763, 534, 534, 534, 534, 534, + /* 21504 */ 534, 534, 534, 534, 534, 556, 556, 3020, 556, 556, 556, 61440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21530 */ 0, 360, 300, 300, 300, 143660, 370, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + /* 21551 */ 300, 300, 143660, 300, 300, 143660, 300, 300, 300, 143730, 300, 300, 300, 143730, 69632, 73728, 300, 300, + /* 21569 */ 143660, 300, 300, 65536, 300, 300, 0, 0, 300, 300, 143660, 300, 300, 300, 300, 300, 300, 300, 300, 300, + /* 21589 */ 365, 300, 0, 143660, 300, 300, 300, 143660, 143660, 143660, 143660, 143660, 143660, 143660, 143660, + /* 21604 */ 143660, 143660, 143660, 143660, 143660, 143660, 143660, 143660, 300, 300, 143660, 300, 300, 300, 300, 300, + /* 21620 */ 300, 300, 300, 300, 300, 300, 143730, 300, 300, 300, 300, 300, 300, 300, 300, 143660, 143660, 143660, + /* 21638 */ 143660, 143660, 143660, 143660, 143660, 143660, 300, 300, 300, 300, 300, 300, 300, 300, 143660, 300, + /* 21654 */ 143660, 143660, 143660, 143660, 300, 143660, 143660, 143660, 143660, 143660, 143660, 300, 0, 300, 0, 300, + /* 21670 */ 300, 300, 143660, 300, 143660, 143660, 143660, 143660, 143660, 143730, 143660, 143730, 143730, 143730, + /* 21684 */ 143730, 143730, 143730, 143660, 143660, 143660, 143660, 143660, 143660, 143660, 143660, 1, 12290, 0, 0, 0, + /* 21700 */ 0, 2200245, 2200245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1153, 1154, 0, 0, 0, 0, 0, 0, 155648, 155648, 0, + /* 21725 */ 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, + /* 21738 */ 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 155648, 0, 0, 0, 0, + /* 21753 */ 155648, 0, 0, 0, 0, 0, 155648, 155648, 0, 155648, 155648, 0, 12290, 0, 0, 0, 0, 155648, 0, 155648, 0, 0, + /* 21775 */ 0, 0, 0, 155648, 0, 0, 0, 0, 0, 0, 1148, 0, 0, 0, 0, 0, 0, 0, 0, 1157, 3, 0, 0, 2183168, 126976, 0, 0, 0, + /* 21803 */ 0, 298, 299, 0, 2134016, 302, 303, 0, 0, 0, 0, 0, 2934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2446, 0, 0, 0, 0, + /* 21832 */ 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, + /* 21845 */ 159744, 159744, 159744, 163840, 159744, 159744, 159744, 159744, 0, 0, 159744, 0, 0, 0, 0, 0, 0, 0, 0, + /* 21864 */ 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, 159744, 163840, 159744, 159744, + /* 21877 */ 159744, 159744, 159744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 0, 131072, 131072, 25155, 0, 0, 0, + /* 21900 */ 159744, 0, 0, 0, 25155, 25155, 25155, 159744, 25155, 25155, 25155, 25155, 25155, 25155, 25155, 159744, + /* 21916 */ 159744, 159744, 159744, 25155, 159744, 25155, 1, 12290, 2125824, 3117056, 2125824, 2125824, 2125824, + /* 21929 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 0, 24576, 975, 2125824, 2125824, 2125824, + /* 21942 */ 2125824, 3092480, 0, 0, 0, 2404352, 2179072, 2179072, 2179072, 2179072, 3026944, 2404352, 2125824, + /* 21955 */ 2125824, 2125824, 2125824, 2592768, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 21966 */ 2125824, 2449408, 0, 2535424, 2125824, 2609152, 2125824, 2859008, 2125824, 2125824, 2125824, 3031040, + /* 21978 */ 2125824, 2527232, 0, 0, 0, 2179072, 2527232, 167936, 167936, 167936, 167936, 167936, 167936, 167936, + /* 21992 */ 167936, 167936, 167936, 167936, 167936, 167936, 167936, 167936, 167936, 1, 12290, 167936, 167936, 167936, + /* 22006 */ 0, 0, 167936, 0, 0, 0, 0, 0, 0, 0, 0, 167936, 167936, 167936, 167936, 167936, 167936, 167936, 167936, 0, + /* 22026 */ 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 0, 155648, 0, 172032, 172032, 0, 172032, 0, 0, 172032, 172032, 0, + /* 22050 */ 172032, 0, 0, 0, 0, 172032, 172032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172032, 0, 0, 0, 172032, 172032, 0, + /* 22074 */ 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, + /* 22087 */ 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 172032, 0, 0, 0, 0, 0, 0, + /* 22104 */ 0, 0, 0, 364, 0, 292, 0, 0, 0, 0, 1, 288, 3, 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, 0, 0, + /* 22136 */ 0, 176128, 176128, 176128, 176128, 176128, 176128, 176128, 176128, 176128, 176128, 176128, 176128, 176128, + /* 22150 */ 176128, 176128, 176128, 1, 0, 176128, 176128, 176128, 0, 0, 176128, 0, 0, 0, 0, 0, 0, 0, 0, 176128, + /* 22170 */ 176128, 176128, 176128, 176128, 176128, 176128, 176128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 292, 0, 0, 0, + /* 22192 */ 347, 3, 78114, 78114, 292, 0, 627, 0, 0, 0, 298, 299, 0, 2134016, 302, 303, 0, 0, 0, 0, 0, 2946, 0, 0, 0, + /* 22217 */ 0, 0, 0, 0, 0, 0, 0, 0, 245760, 0, 0, 0, 0, 78114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672, 0, + /* 22248 */ 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155648, 0, 0, 0, 0, 1146, 0, 0, 0, 0, 1151, 0, 0, 0, 0, + /* 22279 */ 0, 0, 0, 346, 0, 404, 0, 0, 0, 0, 0, 404, 0, 0, 0, 2098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2717, 0, + /* 22310 */ 0, 534, 2135, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2147, 534, 534, 534, 534, 534, 534, + /* 22331 */ 1775, 534, 534, 534, 1780, 534, 534, 534, 534, 534, 534, 534, 2545, 534, 534, 534, 534, 534, 534, 0, 2549, + /* 22352 */ 2220, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2232, 556, 556, 556, 556, 556, 556, 2590, + /* 22372 */ 556, 556, 556, 556, 556, 556, 2598, 556, 556, 2307, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 22393 */ 2319, 580, 580, 580, 0, 0, 0, 2006, 0, 1069, 0, 0, 0, 2008, 0, 1073, 0, 2573, 556, 556, 556, 556, 556, + /* 22416 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1396, 0, 0, 2955, 0, 0, 0, 2959, 0, 0, 0, 0, 0, 0, + /* 22441 */ 0, 0, 0, 0, 371, 0, 0, 372, 0, 0, 0, 534, 3150, 534, 534, 534, 3153, 534, 534, 534, 534, 534, 534, 534, + /* 22465 */ 534, 534, 534, 2547, 534, 534, 534, 0, 0, 3161, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 22486 */ 534, 534, 534, 534, 534, 556, 556, 556, 556, 580, 3206, 580, 580, 580, 3209, 580, 580, 580, 580, 580, 580, + /* 22507 */ 580, 580, 2679, 580, 580, 580, 534, 580, 556, 534, 580, 580, 3217, 580, 580, 580, 580, 580, 580, 580, 580, + /* 22528 */ 580, 580, 580, 580, 580, 534, 580, 556, 534, 580, 580, 3309, 580, 580, 580, 580, 3310, 3311, 580, 580, + /* 22548 */ 580, 580, 580, 580, 580, 580, 2875, 580, 580, 580, 580, 580, 580, 580, 580, 3071, 580, 580, 580, 580, 580, + /* 22569 */ 580, 580, 580, 3233, 580, 580, 580, 580, 534, 580, 556, 1993, 534, 534, 534, 1997, 556, 556, 556, 2001, + /* 22589 */ 534, 534, 534, 3339, 534, 534, 534, 534, 534, 534, 3345, 534, 534, 534, 534, 556, 3407, 556, 3409, 556, + /* 22609 */ 556, 556, 556, 556, 556, 556, 556, 1373, 556, 556, 556, 556, 556, 556, 556, 3364, 556, 580, 580, 580, 580, + /* 22630 */ 580, 580, 3370, 580, 580, 580, 580, 580, 580, 3376, 580, 580, 580, 3380, 580, 534, 556, 580, 0, 0, 0, 0, + /* 22652 */ 0, 0, 0, 0, 0, 2925, 0, 0, 0, 0, 0, 3132, 0, 0, 0, 0, 3391, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 22678 */ 534, 534, 2198, 534, 2200, 534, 534, 534, 534, 534, 534, 3406, 556, 556, 556, 556, 556, 556, 556, 556, + /* 22698 */ 556, 556, 556, 556, 26009, 1341, 975, 580, 556, 556, 556, 556, 3422, 580, 580, 580, 580, 580, 580, 580, + /* 22718 */ 580, 580, 580, 580, 1449, 580, 580, 580, 580, 580, 580, 580, 3522, 580, 580, 580, 580, 580, 580, 580, 580, + /* 22739 */ 580, 0, 0, 0, 534, 534, 534, 534, 3585, 534, 556, 556, 3, 78114, 78114, 292, 0, 0, 0, 0, 0, 298, 299, 0, + /* 22763 */ 2134016, 302, 303, 0, 0, 0, 0, 0, 2973, 0, 0, 2975, 0, 0, 534, 534, 2980, 534, 534, 534, 534, 534, 534, + /* 22786 */ 2532, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2793, 534, 534, 534, 534, 534, 0, 0, 0, 304, 0, 0, + /* 22809 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2732, 0, 0, 192965, 192965, 192965, 192965, 192965, 192965, 192965, + /* 22830 */ 192965, 192965, 192965, 192965, 192965, 192965, 192965, 192965, 192965, 0, 192965, 0, 1, 12290, 192965, + /* 22845 */ 192965, 192965, 0, 0, 192965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1201, 0, 0, 0, 0, 0, 0, 0, 0, 192965, + /* 22871 */ 192965, 192965, 192965, 192965, 192965, 192965, 192965, 192965, 192965, 0, 192965, 192965, 192965, 192965, + /* 22885 */ 192965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 304, 0, 0, 0, 0, 0, 0, 0, 0, 196608, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 22916 */ 0, 0, 0, 1582, 0, 0, 0, 301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 727, 406, 406, 406, 406, 406, + /* 22945 */ 406, 0, 0, 0, 0, 0, 406, 0, 406, 1, 12290, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118784, 298, 3, 78114, + /* 22972 */ 78114, 292, 0, 0, 0, 0, 0, 298, 299, 0, 301, 302, 303, 0, 0, 0, 0, 0, 3142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23001 */ 0, 2978, 534, 534, 534, 534, 0, 0, 0, 0, 733, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1240, 0, 0, 0, 1244, + /* 23029 */ 0, 0, 1175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2871296, 0, 0, 1171, 1171, 0, 0, 0, 1175, 1650, 0, + /* 23057 */ 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 253952, 0, 0, 0, 0, 580, 580, 580, 1540, 2005, 0, 0, 0, 0, 1546, 2007, 0, + /* 23084 */ 0, 0, 0, 1552, 0, 0, 0, 1558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 0, 0, 2009, 0, 0, 0, 0, 1558, + /* 23114 */ 2011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 406, 0, 0, 0, 0, 0, 534, 534, 534, 534, 2549, 0, 556, 556, 556, 556, + /* 23141 */ 556, 556, 556, 556, 556, 556, 1410, 556, 556, 556, 556, 556, 0, 306, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23166 */ 306, 0, 0, 0, 0, 0, 0, 1155072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2705, 0, 0, 0, 0, 0, 204800, + /* 23194 */ 204800, 0, 204800, 204800, 204800, 204800, 204800, 204800, 204800, 204800, 204800, 204800, 204800, 204800, + /* 23208 */ 204800, 204800, 205106, 204800, 204800, 205105, 205106, 204800, 205105, 205105, 204800, 204800, 0, 0, 0, + /* 23223 */ 0, 0, 0, 0, 0, 0, 364, 299, 0, 0, 0, 0, 0, 3, 0, 0, 2183794, 0, 0, 0, 0, 0, 298, 299, 151552, 2134016, + /* 23249 */ 302, 303, 0, 0, 0, 0, 0, 155648, 155648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 655, 212992, 0, 0, + /* 23277 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 757, 0, 151552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 23308 */ 286720, 2179072, 2179072, 2179072, 2179072, 2179072, 2126724, 2126724, 2126724, 2126724, 2126724, 0, + /* 23320 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 3036110, 2126798, 2126798, + /* 23331 */ 3072974, 2126798, 2126798, 2126798, 3122126, 2700164, 2126724, 2716548, 2126724, 2724740, 2126724, + /* 23342 */ 2732932, 2773892, 2126724, 2126724, 2126724, 2806660, 2126724, 2831236, 2126724, 2126724, 973, 2126798, + /* 23354 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, + /* 23365 */ 2126798, 2126798, 2126798, 2126798, 2864004, 2126724, 2126724, 2126724, 2126724, 2921348, 2126724, + /* 23376 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2626436, 2126724, + /* 23387 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 3117956, 2126724, 2126724, 2126724, 2126724, + /* 23398 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 0, 0, 975, 2126798, 2126798, 2126798, 2126798, + /* 23411 */ 2126798, 2126798, 2126798, 3224526, 2179072, 2126798, 2126724, 2179072, 2179072, 2126724, 2126724, + /* 23422 */ 2126798, 2126798, 0, 2486272, 0, 0, 0, 0, 0, 2678784, 2854912, 3006464, 2126798, 2126798, 2126798, + /* 23437 */ 2626510, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2700238, 2126798, 2716622, 2126798, + /* 23448 */ 2724814, 2126798, 2126798, 2126798, 2126798, 2126798, 2454478, 2126798, 2474958, 2483150, 2126798, + /* 23459 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2532302, 2733006, 2773966, 2126798, 2126798, 2126798, + /* 23470 */ 2806734, 2126798, 2831310, 2126798, 2126798, 2864078, 2126798, 2126798, 2126798, 2126798, 2921422, + /* 23481 */ 2126724, 2409348, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, + /* 23492 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2814852, 2126724, 2839428, 2126724, + /* 23503 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, + /* 23514 */ 2126724, 3126148, 2126724, 2126724, 2126724, 2126724, 2126798, 2126798, 2585550, 2126798, 2126798, + /* 23525 */ 2126798, 2126798, 2126798, 2618318, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2663374, + /* 23536 */ 2179072, 2179072, 2179072, 3207168, 2179072, 0, 0, 0, 0, 2126724, 2126724, 2126724, 2126724, 2126724, + /* 23550 */ 2126724, 2126724, 2126724, 2552708, 2126724, 2126724, 2126724, 2126724, 2126724, 2638724, 2126724, + /* 23561 */ 2126724, 2720644, 2126724, 2126724, 2126724, 2126724, 2126724, 2769796, 2777988, 2782084, 2798468, + /* 23572 */ 2823044, 2126724, 2126724, 2126724, 2884484, 2126724, 2913156, 2126724, 2126724, 2126724, 2126724, + /* 23583 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 3040132, 2126724, 2126724, + /* 23594 */ 2126724, 2728836, 2753412, 2126724, 2126724, 2126724, 2126724, 2843524, 2847620, 2126724, 2896772, + /* 23605 */ 2917252, 2126724, 2126724, 2126724, 2126724, 3150724, 2126798, 2429902, 2438094, 2126798, 2487246, + /* 23616 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2929614, + /* 23627 */ 2126798, 2126798, 2126798, 2999246, 2126798, 3064708, 2126724, 2126724, 2126724, 2126724, 2126724, + /* 23638 */ 3101572, 2126724, 2126724, 3134340, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2585476, + /* 23649 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2618244, 2126724, 2126724, 2126724, 2126798, 2720718, + /* 23660 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2769870, 2778062, 2782158, 2798542, 2823118, 2126798, + /* 23671 */ 2126798, 2126798, 2884558, 2126798, 2913230, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, + /* 23682 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 3040206, 2126798, 2126798, 2126798, 2126798, + /* 23693 */ 2126798, 2601934, 2126798, 2126798, 2126798, 2126798, 2642894, 2126798, 2126798, 2126798, 2126798, + /* 23704 */ 2126798, 2126798, 2126798, 2606030, 2126798, 2630606, 2126798, 2126798, 2651086, 2126798, 2126798, + /* 23715 */ 2126798, 3064782, 2126798, 2126798, 2126798, 2126798, 2126798, 3101646, 2126798, 2126798, 3134414, + /* 23726 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 0, 2179072, 2126798, 2126724, 2457600, 2179072, + /* 23738 */ 2179072, 2179072, 2179072, 2458500, 2126798, 2126798, 2126798, 3208142, 2126798, 2179072, 2126798, + /* 23749 */ 2126724, 2179072, 2179072, 2179072, 2179072, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, + /* 23760 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 3011460, 2126724, 2126724, 2126724, 2126798, + /* 23771 */ 2126798, 2503630, 0, 0, 0, 0, 2388868, 2126724, 2126724, 2126724, 2421636, 2126724, 2126724, 2126724, + /* 23785 */ 2126724, 2126724, 2454404, 2126724, 2126724, 2126724, 3027844, 2405326, 2126798, 2126798, 2126798, + /* 23796 */ 2126798, 3027918, 2539520, 0, 2949120, 2179072, 2658304, 2973696, 2474884, 2483076, 2126724, 2126724, + /* 23808 */ 2126724, 2126724, 2126724, 2126724, 2532228, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, + /* 23819 */ 2126724, 2601860, 2126724, 2126724, 2126724, 2126724, 2642820, 2126724, 2126724, 2126724, 2126724, + /* 23830 */ 2126724, 2655108, 2679684, 2761604, 2765700, 2786180, 2855812, 2970500, 2126724, 3007364, 2126724, + /* 23841 */ 3019652, 2605956, 2126724, 2630532, 2126724, 2126724, 2651012, 2126724, 2126724, 2126724, 2708356, + /* 23852 */ 2126724, 2737028, 2126724, 2126724, 2126724, 2126724, 2462596, 2466692, 2126724, 2126724, 2126724, + /* 23863 */ 2126724, 2126724, 2126724, 2524036, 2126724, 2126724, 2126724, 2126724, 3036036, 2126724, 2126724, + /* 23874 */ 3072900, 2126724, 2126724, 2126724, 3122052, 2126724, 2126724, 3142532, 2126724, 2126724, 2126724, + /* 23885 */ 3171204, 2126724, 2126724, 3191684, 3195780, 2126724, 0, 0, 0, 0, 0, 0, 2388942, 2126798, 2126798, + /* 23900 */ 2126798, 2421710, 2708430, 2126798, 2737102, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, + /* 23911 */ 2126798, 2126798, 2888654, 2126798, 2126798, 2925518, 2126798, 2126798, 2126798, 2126798, 2179072, + /* 23922 */ 2126798, 2126724, 2179072, 2179072, 2179072, 2179072, 2126724, 2126724, 2126724, 2126724, 2126798, + /* 23933 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, + /* 23944 */ 2802638, 2814926, 2126798, 2839502, 2126798, 2126798, 2126798, 3142606, 2126798, 2126798, 2126798, + /* 23955 */ 3171278, 2126798, 2126798, 3191758, 3195854, 2126798, 2179072, 2126798, 2126724, 2179072, 2126724, + /* 23966 */ 2126798, 2179072, 2126724, 2126798, 2179072, 2126724, 2126798, 2985984, 2986884, 2986958, 0, 0, 0, 0, 0, + /* 23981 */ 0, 0, 69632, 73728, 315, 316, 316, 421, 422, 65536, 429, 2179072, 3112960, 3219456, 2126724, 2126724, + /* 23997 */ 3113860, 3220356, 2126798, 2126798, 3113934, 3220430, 0, 0, 0, 0, 0, 0, 0, 2046, 0, 0, 0, 0, 0, 0, 0, 0, + /* 24019 */ 0, 1238, 0, 0, 0, 0, 0, 0, 2179072, 2179072, 2179072, 3223552, 0, 0, 2126724, 2126724, 2417540, 2126724, + /* 24037 */ 2126724, 2126724, 2446212, 2126724, 2126724, 2126724, 2126724, 2888580, 2126724, 2126724, 2925444, + /* 24048 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 0, 0, 2126798, 2126798, 2126798, + /* 24061 */ 2409422, 2126798, 2126798, 2945924, 2126724, 2126724, 2995076, 2126724, 3003268, 2126724, 2126724, + /* 24072 */ 3023748, 2126724, 3068804, 3085188, 2126724, 3097476, 2126724, 2126724, 2126724, 2519940, 2126724, + /* 24083 */ 2126724, 2126724, 2126724, 2589572, 2126724, 2614148, 2646916, 2126724, 2126724, 2696068, 2757508, + /* 24094 */ 2638798, 2126798, 2126798, 2126798, 2126798, 2728910, 2753486, 2126798, 2126798, 2126798, 2126798, + /* 24105 */ 2843598, 2847694, 2126798, 2896846, 2917326, 2126798, 2126798, 2945998, 2126798, 2126798, 2995150, + /* 24116 */ 2126798, 3003342, 2126798, 2126798, 3023822, 2126798, 3068878, 3085262, 2126798, 3097550, 2179072, + /* 24127 */ 2179072, 3059712, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 3178496, 2126724, 2126724, + /* 24138 */ 2126724, 2126724, 2126724, 2126724, 3224452, 0, 0, 2126798, 2126798, 2417614, 2126798, 2126798, 2126798, + /* 24151 */ 2446286, 2126798, 2126724, 2126724, 3060612, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, + /* 24162 */ 2126724, 3179396, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 3126222, 2126798, + /* 24173 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 3118030, + /* 24184 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2495438, 2126798, 2126798, 2515918, + /* 24195 */ 2126798, 2126798, 2126798, 2544590, 2548686, 2126798, 2126798, 2597838, 2126798, 2126798, 2126798, + /* 24206 */ 2126798, 2425806, 2433998, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, + /* 24217 */ 2126798, 2126798, 0, 0, 0, 2179072, 2126798, 2126724, 2126798, 2126798, 2126798, 3060686, 2126798, + /* 24230 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 3179470, 2179072, 2126798, 2126724, 2179072, + /* 24241 */ 2126724, 2659204, 2974596, 2126724, 2126798, 2659278, 2974670, 2126798, 2711552, 2560000, 2179072, + /* 24252 */ 2560900, 2126724, 2560974, 2126798, 2126798, 2126798, 2126798, 2462670, 2466766, 2126798, 2126798, + /* 24263 */ 2126798, 2126798, 2126798, 2126798, 2524110, 2126798, 2126798, 2126798, 2126798, 0, 0, 0, 0, 0, 0, 0, 0, + /* 24280 */ 0, 0, 2473984, 2478080, 2179072, 2179072, 2179072, 3129344, 2179072, 2179072, 3153920, 3166208, 3174400, + /* 24293 */ 2397060, 2401156, 2126724, 2126724, 2442116, 2126724, 2470788, 3154820, 3167108, 3175300, 2397134, + /* 24304 */ 2401230, 2126798, 2126798, 2442190, 2126798, 2470862, 2126798, 2126798, 2126798, 2520014, 2126798, + /* 24315 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 3130318, 2126798, 2126798, 3154894, 3167182, + /* 24326 */ 3175374, 2506752, 2507726, 2507652, 2126798, 2126798, 2589646, 2126798, 2614222, 2646990, 2126798, + /* 24337 */ 2126798, 2696142, 2757582, 2126798, 2126798, 2126798, 2126798, 2933710, 2126798, 2126798, 2126798, + /* 24348 */ 2126798, 2593742, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2449408, 0, + /* 24360 */ 2535424, 2179072, 3006464, 2179072, 3018752, 2179072, 2179072, 2179072, 3149824, 2126724, 2429828, + /* 24371 */ 2438020, 2126724, 2487172, 2126724, 2126724, 2126724, 2126724, 2933636, 2126724, 2126724, 2126724, + /* 24382 */ 2126724, 2126724, 2126724, 2126724, 2126724, 3130244, 2126724, 2126724, 2126798, 2126798, 2655182, + /* 24393 */ 2679758, 2761678, 2765774, 2786254, 2855886, 2970574, 2126798, 3007438, 2126798, 3019726, 2126798, + /* 24404 */ 2126798, 2126798, 2126798, 0, 2502656, 0, 0, 3010560, 0, 0, 0, 0, 2990080, 2179072, 2179072, 2126798, + /* 24420 */ 3150798, 2179072, 3051520, 2126724, 3052420, 2126798, 3052494, 0, 2490368, 2498560, 0, 0, 0, 0, 2875392, + /* 24435 */ 2179072, 2179072, 2179072, 2555904, 2564096, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 24446 */ 2179072, 2179072, 2179072, 3137536, 2126724, 2126724, 2126724, 3208068, 2126724, 0, 0, 0, 0, 2126798, + /* 24460 */ 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2552782, 2126798, + /* 24471 */ 2126798, 2126798, 2126798, 2126798, 2126724, 2499460, 2126724, 2126724, 2126724, 2556804, 2564996, + /* 24482 */ 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2929540, 2126724, + /* 24493 */ 2126724, 2126724, 2999172, 2126724, 2126724, 2126724, 3138436, 2126798, 2126798, 2499534, 2126798, + /* 24504 */ 2126798, 2126798, 2556878, 2565070, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, 2126798, + /* 24515 */ 2126798, 2126798, 3011534, 2126798, 2126798, 2126798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 323, 0, + /* 24537 */ 2126724, 2450308, 2126724, 2536324, 2126724, 2610052, 2126724, 2859908, 2126724, 2126724, 2126724, + /* 24548 */ 3031940, 2126724, 2126798, 2450382, 2126798, 2126798, 2126798, 2126798, 3093454, 0, 0, 0, 2404352, + /* 24561 */ 2179072, 2179072, 2179072, 2179072, 3026944, 2405252, 2126724, 2126724, 2495364, 2126724, 2126724, + /* 24572 */ 2515844, 2126724, 2126724, 2126724, 2544516, 2548612, 2126724, 2126724, 2597764, 2126724, 2126724, + /* 24583 */ 2126724, 2663300, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, 2126724, + /* 24594 */ 2126724, 2126724, 2802564, 2536398, 2126798, 2610126, 2126798, 2859982, 2126798, 2126798, 2126798, + /* 24605 */ 3032014, 2126798, 2527232, 0, 0, 0, 2179072, 2527232, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 24618 */ 2126724, 2528132, 2126724, 2126724, 2126724, 2126724, 2126724, 3093380, 2126798, 2528206, 2126798, + /* 24629 */ 2126798, 2126798, 2126798, 3138510, 2940928, 2941828, 2941902, 0, 0, 0, 0, 0, 2748416, 2879488, 0, 0, 0, + /* 24646 */ 0, 0, 172032, 0, 172032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 122880, 122880, 0, 0, 0, 221184, 221184, 0, + /* 24671 */ 0, 0, 0, 0, 0, 0, 0, 0, 221184, 221184, 0, 0, 221184, 221184, 221184, 0, 0, 0, 0, 0, 0, 221184, 0, 0, + /* 24695 */ 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, + /* 24708 */ 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 221184, 0, 0, 0, 0, 0, 0, + /* 24725 */ 0, 0, 0, 364, 338, 292, 0, 0, 0, 0, 0, 0, 221184, 0, 221184, 221184, 221184, 221184, 221184, 221184, + /* 24745 */ 221184, 221184, 221184, 221184, 1, 12290, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139264, 299, 0, 0, 2142208, + /* 24768 */ 0, 0, 0, 98304, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 0, 0, 2061, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 159744, 0, 0, 0, + /* 24797 */ 0, 0, 0, 0, 0, 1198, 0, 0, 0, 0, 0, 0, 0, 0, 1212, 0, 0, 0, 0, 0, 0, 0, 0, 1578, 0, 0, 0, 577536, 0, 0, + /* 24827 */ 1583, 0, 0, 0, 302, 0, 303, 0, 0, 0, 303, 0, 0, 0, 2461696, 0, 0, 0, 0, 0, 0, 1159168, 416, 416, 0, 0, 0, + /* 24854 */ 0, 0, 416, 0, 0, 98304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12290, 2179072, 3121152, 2179072, + /* 24879 */ 2179072, 3141632, 2179072, 2179072, 2179072, 3170304, 2179072, 2179072, 3190784, 3194880, 2179072, 901, 0, + /* 24892 */ 0, 0, 0, 0, 229376, 0, 0, 0, 0, 0, 0, 0, 0, 1666, 0, 0, 0, 0, 0, 2958, 0, 0, 0, 0, 2962, 0, 0, 0, 0, 2967, + /* 24922 */ 0, 0, 901, 0, 2387968, 2125824, 2125824, 2125824, 2420736, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 24936 */ 2453504, 2125824, 2473984, 2482176, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2531328, + /* 24947 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 3190784, 3194880, + /* 24958 */ 2125824, 975, 0, 0, 0, 975, 0, 2387968, 2125824, 2125824, 2125824, 2420736, 2179072, 2179072, 2179072, + /* 24973 */ 3223552, 901, 0, 2125824, 2125824, 2416640, 2125824, 2125824, 2125824, 2445312, 2125824, 2125824, 2125824, + /* 24986 */ 2125824, 2125824, 3223552, 0, 0, 2125824, 2125824, 2416640, 2125824, 2125824, 2125824, 2445312, 2125824, + /* 24999 */ 225734, 225734, 225734, 225734, 225734, 225734, 225734, 225734, 225734, 225734, 225734, 225734, 225734, + /* 25012 */ 225734, 225734, 225734, 249856, 249856, 249856, 249856, 249856, 249856, 249856, 249856, 249856, 249856, + /* 25025 */ 249856, 249856, 249856, 249856, 249856, 249856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 379, 0, 0, 0, 0, 0, 0, 0, + /* 25048 */ 217088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 308, 0, 0, 0, 114688, 0, 241664, 258048, 0, 0, 0, + /* 25075 */ 0, 0, 0, 0, 0, 0, 0, 676, 677, 678, 0, 0, 0, 254407, 254407, 254407, 254407, 254407, 254407, 254407, + /* 25095 */ 254407, 254407, 254407, 254407, 254407, 254407, 254407, 254407, 254407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 386, 0, + /* 25115 */ 0, 0, 0, 0, 386, 0, 0, 0, 2183168, 0, 0, 270336, 0, 0, 298, 299, 0, 2134016, 302, 303, 200704, 0, 0, + /* 25138 */ 180224, 0, 0, 0, 0, 0, 0, 0, 0, 2424832, 2433024, 0, 0, 2457600, 20480, 0, 0, 0, 0, 2179072, 2179072, + /* 25159 */ 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2126724, 2126724, + /* 25170 */ 2126724, 2126724, 2126724, 1, 12290, 2113825, 0, 0, 0, 0, 0, 0, 295, 0, 0, 0, 295, 0, 0, 0, 0, 0, 0, + /* 25193 */ 2387968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 381, 383, 0, 0, 0, 0, 0, 266240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25223 */ 0, 266240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12290, 0, 0, 266240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25253 */ 338, 339, 340, 2113825, 0, 0, 2183168, 0, 0, 0, 0, 0, 298, 299, 0, 2134016, 302, 303, 0, 0, 0, 0, 0, + /* 25276 */ 237568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1657, 0, 0, 0, 0, 274432, 274432, 274432, 274432, 274432, 274432, + /* 25299 */ 0, 0, 0, 0, 0, 274432, 0, 274432, 1, 12290, 3, 0, 0, 0, 0, 0, 0, 0, 90408, 90408, 90408, 90408, 0, 94505, + /* 25323 */ 1, 12290, 3, 78114, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 3, 78114, 78114, 292, 0, 0, 0, + /* 25351 */ 0, 0, 298, 299, 0, 0, 302, 303, 0, 0, 0, 0, 0, 2134016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163264, 78114, 1066, + /* 25377 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 308, 307, 534, 534, 534, 1341, 901, 556, 556, 556, 556, 556, + /* 25403 */ 556, 556, 556, 556, 556, 556, 580, 580, 3062, 580, 580, 2009, 0, 0, 0, 0, 0, 2011, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25429 */ 0, 0, 722, 0, 0, 0, 0, 0, 0, 2954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 1650, 0, 0, 0, 0, + /* 25461 */ 0, 0, 0, 0, 2089, 0, 0, 0, 0, 0, 0, 0, 2086, 0, 0, 0, 0, 0, 2092, 0, 0, 290, 1066, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25492 */ 0, 0, 0, 0, 0, 0, 680, 681, 3, 78114, 78449, 292, 0, 0, 0, 0, 0, 298, 299, 0, 0, 302, 303, 0, 0, 0, 0, 0, + /* 25520 */ 2134016, 0, 0, 0, 0, 0, 0, 0, 0, 1138688, 0, 0, 0, 0, 0, 2134016, 0, 0, 0, 0, 0, 0, 0, 739, 0, 0, 0, 0, 0, + /* 25549 */ 0, 1150976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, + /* 25580 */ 337, 0, 581, 557, 557, 557, 557, 557, 557, 557, 581, 581, 581, 534, 581, 581, 581, 581, 581, 581, 581, + /* 25601 */ 557, 557, 534, 557, 581, 557, 581, 1, 12290, 1, 12290, 3, 78115, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 25627 */ 1680, 0, 0, 0, 282624, 282624, 282624, 282624, 282624, 282624, 282624, 282624, 282624, 282624, 282624, + /* 25642 */ 282624, 282624, 282624, 282624, 282624, 1, 12290, 282624, 282624, 282624, 0, 0, 282624, 0, 0, 0, 0, 0, 0, + /* 25661 */ 0, 0, 0, 0, 0, 2027, 0, 0, 0, 0, 0, 0, 0, 0, 282624, 282624, 282624, 282624, 282624, 282624, 282624, + /* 25682 */ 282624, 282624, 282624, 0, 282624, 282624, 282624, 282624, 282624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + /* 25703 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, 0, 3047424, 3129344, 0, 2981888, 2396160, 0, 3153920, 3132, + /* 25727 */ 0, 0, 2740224, 0, 0, 0, 0, 0, 0, 1181, 1183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1608, 1609, 1610, 0, 0, 0, 0, 0, + /* 25755 */ 0, 0, 286720, 286720, 0, 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, + /* 25770 */ 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, 286720, + /* 25783 */ 286720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 705, 0, 0, 0, 709, 0, 0, 0, 3108864, 3198976, 0, 0, 3043328, 0, + /* 25807 */ 3149824, 2936832, 0, 2760704, 3252, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 167936, 0, 0, 0, 0, 65536, 0, 0, 0, + /* 25830 */ 0, 3329, 0, 0, 2834432, 0, 3227648, 2568192, 2564096, 0, 2940928, 2179072, 2179072, 2498560, 3329, 0, 0, + /* 25847 */ 0, 0, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, 2179072, + /* 25860 */ 2179072, 2125824, 0, 2125824, 2125824, 0, 0, 0, 308, 0, 0, 0, 0, 0, 307, 0, 307, 308, 0, 307, 307, 0, 0, + /* 25883 */ 0, 307, 307, 308, 308, 0, 0, 0, 0, 0, 0, 307, 407, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 783, + /* 25913 */ 0, 0, 0, 308, 412, 0, 0, 69632, 73728, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 0, 2134016, 0, 0, 0, 0, 0, 0, + /* 25940 */ 57344, 0, 0, 0, 0, 0, 0, 1120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1239, 0, 0, 0, 0, 0, 456, 456, 456, 482, 482, + /* 25969 */ 456, 482, 482, 482, 482, 482, 482, 482, 507, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, + /* 25990 */ 482, 482, 527, 482, 482, 482, 482, 482, 535, 558, 535, 558, 535, 535, 558, 535, 582, 558, 558, 558, 558, + /* 26011 */ 558, 558, 558, 582, 582, 582, 535, 582, 582, 582, 582, 582, 582, 582, 558, 558, 535, 558, 582, 558, 582, + /* 26032 */ 1, 12290, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 0, 697, 0, 0, 0, 0, 0, 0, 0, 704, 0, 0, + /* 26063 */ 0, 0, 0, 0, 0, 0, 1639, 0, 0, 0, 0, 0, 0, 0, 0, 1660, 1661, 0, 1663, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 0, 0, + /* 26094 */ 0, 0, 0, 0, 0, 740, 0, 0, 0, 0, 0, 0, 2834432, 0, 3227648, 2568192, 2564096, 0, 2940928, 2179072, 2179072, + /* 26115 */ 2498560, 0, 0, 0, 638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 0, 0, 0, 0, 2134749, 0, 0, 0, 0, 0, 0, 0, 0, + /* 26145 */ 0, 0, 0, 1169, 734, 0, 0, 0, 0, 0, 0, 761, 0, 0, 765, 0, 0, 0, 0, 772, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, + /* 26174 */ 172032, 0, 0, 0, 0, 65536, 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, 804, 0, 0, 0, 780, 0, 0, 0, 0, 0, 327, 0, + /* 26202 */ 69632, 73728, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 821, 776, 0, 0, 0, 0, 0, 825, 826, 776, 776, 0, 0, 0, 0, 0, + /* 26229 */ 0, 0, 780, 0, 0, 0, 0, 0, 0, 0, 0, 1677, 0, 1679, 0, 0, 0, 0, 0, 0, 776, 729, 776, 0, 534, 534, 836, 840, + /* 26257 */ 534, 534, 534, 534, 534, 534, 866, 534, 871, 534, 878, 534, 881, 534, 534, 895, 534, 534, 556, 556, 556, + /* 26278 */ 909, 913, 1018, 580, 1025, 580, 1028, 580, 580, 1042, 580, 580, 0, 0, 0, 840, 987, 913, 836, 1052, 881, + /* 26299 */ 534, 534, 909, 1057, 954, 556, 556, 0, 983, 1062, 1028, 580, 580, 534, 534, 556, 556, 580, 580, 0, 0, 0, + /* 26321 */ 0, 0, 0, 0, 0, 0, 0, 0, 78114, 1066, 0, 0, 1068, 1072, 0, 0, 1076, 1080, 0, 0, 0, 0, 0, 0, 0, 406, 406, + /* 26348 */ 406, 406, 0, 406, 406, 406, 406, 0, 0, 1144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 515, 515, 0, 0, + /* 26376 */ 0, 1634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3126, 0, 0, 1769, 534, 534, 1772, 534, 534, 534, 534, 534, + /* 26403 */ 534, 534, 534, 534, 534, 1784, 534, 534, 534, 534, 534, 884, 534, 534, 534, 534, 534, 556, 556, 903, 556, + /* 26424 */ 556, 0, 580, 580, 580, 984, 580, 990, 580, 580, 1003, 580, 580, 1014, 580, 534, 534, 534, 534, 1789, 534, + /* 26445 */ 534, 534, 534, 534, 534, 534, 1341, 1799, 556, 556, 0, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 26466 */ 580, 580, 580, 0, 0, 0, 0, 534, 534, 556, 556, 556, 1806, 556, 556, 556, 556, 556, 1812, 556, 556, 556, + /* 26488 */ 556, 556, 556, 0, 0, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2370, 580, 580, 580, 580, 580, 580, 556, + /* 26510 */ 556, 556, 1825, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 955, 556, 556, 556, 1885, 556, + /* 26531 */ 556, 556, 556, 556, 556, 556, 26009, 1895, 580, 580, 580, 580, 580, 1902, 2017, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 26555 */ 0, 0, 0, 0, 0, 0, 787, 0, 0, 0, 2042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2051, 0, 0, 0, 0, 0, 0, 1196, 0, 0, 0, 0, + /* 26587 */ 0, 0, 0, 0, 0, 0, 1223, 0, 0, 0, 0, 0, 2109, 2110, 0, 0, 2112, 0, 0, 0, 2110, 0, 0, 2117, 0, 0, 0, 0, 0, + /* 26616 */ 0, 0, 69632, 73728, 221184, 0, 0, 0, 0, 65536, 0, 2150, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 26638 */ 534, 534, 534, 534, 534, 1313, 0, 0, 0, 2464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3135, 0, 0, 534, 534, + /* 26666 */ 534, 534, 2502, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2510, 534, 534, 534, 2601, + /* 26686 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2611, 556, 556, 556, 556, 556, 2563, 556, + /* 26707 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 1388, 556, 556, 556, 556, 1393, 556, 556, 556, 556, 2632, + /* 26727 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1967, 0, 0, 0, 2698, 0, 0, + /* 26750 */ 0, 0, 0, 0, 2703, 0, 0, 0, 0, 0, 0, 0, 2115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2729, 0, 0, 0, 0, 0, 0, 2749, + /* 26780 */ 2750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 0, 0, 0, 0, 2762, 0, 534, 534, 534, 534, + /* 26809 */ 534, 534, 534, 534, 534, 534, 534, 2521, 534, 534, 534, 534, 534, 2773, 534, 534, 2777, 534, 534, 534, + /* 26829 */ 534, 534, 534, 534, 534, 534, 534, 2786, 556, 2820, 556, 556, 2824, 556, 556, 556, 556, 556, 556, 556, + /* 26849 */ 556, 556, 556, 2833, 580, 580, 580, 2869, 580, 580, 2873, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 26869 */ 580, 2899, 580, 580, 580, 580, 580, 580, 2882, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 26889 */ 2890, 580, 580, 534, 534, 556, 556, 580, 580, 0, 0, 0, 0, 0, 3324, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, + /* 26916 */ 0, 0, 0, 0, 0, 221184, 0, 221184, 0, 0, 0, 0, 2931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, + /* 26945 */ 534, 534, 534, 3010, 534, 534, 534, 534, 534, 534, 534, 534, 556, 556, 556, 556, 556, 556, 3412, 556, 556, + /* 26966 */ 556, 556, 556, 556, 3051, 556, 556, 556, 556, 556, 556, 556, 556, 556, 580, 580, 580, 580, 580, 580, 580, + /* 26987 */ 580, 580, 580, 580, 580, 580, 580, 3091, 580, 3093, 580, 580, 580, 580, 580, 580, 580, 580, 580, 534, 580, + /* 27008 */ 556, 534, 534, 556, 556, 580, 3132, 3387, 0, 3389, 0, 534, 3392, 534, 3394, 534, 534, 534, 534, 534, 534, + /* 27029 */ 534, 534, 1777, 534, 534, 534, 534, 534, 534, 534, 534, 2157, 534, 534, 534, 534, 534, 534, 534, 534, + /* 27049 */ 2182, 534, 534, 534, 534, 2187, 534, 534, 534, 534, 3448, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 27069 */ 534, 556, 556, 556, 556, 556, 3023, 556, 3461, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 580, + /* 27090 */ 580, 580, 580, 3064, 580, 3475, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 0, 0, 0, 0, 3561, + /* 27112 */ 534, 0, 3490, 0, 3492, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2794, 534, 534, 0, + /* 27134 */ 0, 3533, 0, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1281, 309, 310, + /* 27155 */ 311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, 420, 0, 0, 0, 0, 443, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27188 */ 0, 1109, 0, 1111, 1112, 0, 0, 0, 0, 0, 0, 443, 443, 420, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + /* 27212 */ 443, 443, 443, 526, 443, 526, 526, 526, 443, 526, 526, 526, 526, 443, 536, 559, 536, 559, 536, 536, 559, + /* 27233 */ 536, 583, 559, 559, 559, 559, 559, 559, 559, 583, 583, 583, 536, 583, 583, 583, 583, 583, 583, 583, 559, + /* 27254 */ 559, 609, 614, 583, 614, 620, 1, 12290, 534, 534, 874, 534, 534, 534, 534, 534, 534, 534, 534, 556, 556, + /* 27275 */ 556, 556, 556, 0, 580, 580, 580, 580, 580, 580, 1021, 580, 580, 580, 580, 580, 580, 580, 580, 0, 0, 0, + /* 27297 */ 534, 580, 556, 556, 556, 556, 556, 556, 556, 580, 580, 580, 534, 580, 580, 580, 580, 0, 0, 0, 0, 0, 0, 0, + /* 27321 */ 0, 0, 0, 3445, 534, 0, 0, 0, 1657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3262, 534, 534, 1785, 534, 534, + /* 27349 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 1341, 0, 556, 556, 0, 580, 580, 580, 580, 580, 580, 580, 580, + /* 27371 */ 580, 1006, 580, 580, 580, 0, 0, 1544, 0, 0, 0, 0, 0, 1550, 0, 0, 0, 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, + /* 27400 */ 0, 0, 167936, 167936, 167936, 167936, 167936, 167936, 167936, 167936, 580, 580, 1970, 580, 580, 580, 580, + /* 27417 */ 580, 1977, 580, 580, 580, 580, 580, 580, 580, 1444, 580, 580, 580, 580, 580, 1456, 580, 580, 0, 0, 2425, + /* 27438 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 654, 0, 0, 2612, 556, 556, 556, 556, 0, 2615, 0, 0, 0, 0, 580, 580, + /* 27467 */ 580, 580, 580, 534, 556, 580, 0, 3382, 0, 0, 3385, 0, 0, 0, 580, 2621, 580, 580, 580, 580, 2625, 580, 580, + /* 27490 */ 580, 580, 580, 580, 580, 580, 580, 580, 3221, 580, 580, 580, 580, 580, 0, 0, 0, 312, 313, 314, 315, 316, + /* 27512 */ 317, 318, 319, 320, 321, 0, 0, 0, 0, 0, 0, 1249, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 534, 850, 534, 534, + /* 27538 */ 534, 534, 534, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1172, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, + /* 27569 */ 0, 0, 0, 0, 0, 0, 655, 0, 0, 422, 430, 421, 430, 0, 312, 430, 444, 457, 457, 457, 457, 457, 457, 457, 457, + /* 27594 */ 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 478, 483, 483, 494, 483, 483, 483, 483, 483, 483, 483, + /* 27615 */ 483, 509, 509, 522, 522, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 509, 523, 523, 523, 523, + /* 27636 */ 523, 537, 560, 537, 560, 537, 537, 560, 537, 584, 560, 560, 560, 560, 560, 560, 560, 584, 584, 584, 606, + /* 27657 */ 584, 584, 584, 584, 584, 584, 607, 608, 608, 606, 608, 607, 608, 607, 1, 12290, 0, 0, 811, 0, 0, 0, 0, 0, + /* 27681 */ 0, 0, 0, 0, 0, 0, 0, 0, 679, 0, 0, 0, 695, 0, 0, 0, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 27708 */ 534, 1720, 534, 534, 882, 534, 534, 556, 556, 955, 556, 556, 0, 580, 580, 1029, 580, 580, 534, 534, 556, + /* 27729 */ 556, 580, 580, 0, 0, 0, 3322, 0, 0, 3325, 0, 0, 0, 0, 1161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249856, + /* 27758 */ 0, 0, 0, 0, 0, 0, 0, 1193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1134592, 0, 0, 0, 0, 0, 1206, 0, 0, 0, + /* 27789 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1218, 0, 0, 534, 534, 1254, 534, 1257, 534, 534, 534, 534, 534, 534, 534, + /* 27814 */ 534, 1271, 534, 1276, 534, 534, 1280, 534, 534, 1283, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 27834 */ 534, 534, 534, 1294, 534, 534, 534, 534, 534, 1341, 901, 556, 556, 1345, 556, 556, 1349, 556, 556, 556, + /* 27854 */ 556, 556, 0, 0, 0, 0, 0, 0, 580, 580, 580, 580, 580, 0, 3580, 0, 534, 534, 534, 534, 534, 534, 556, 556, + /* 27878 */ 556, 556, 556, 1363, 556, 1368, 556, 556, 1372, 556, 556, 1375, 556, 556, 556, 556, 556, 0, 2296, 0, 0, + /* 27899 */ 580, 580, 580, 580, 580, 580, 580, 2355, 580, 580, 580, 580, 2360, 580, 580, 580, 580, 1437, 580, 580, + /* 27919 */ 1441, 580, 580, 580, 580, 580, 580, 580, 580, 1455, 580, 1460, 580, 580, 1464, 580, 580, 1467, 580, 580, + /* 27939 */ 580, 580, 580, 580, 580, 580, 580, 580, 0, 0, 188416, 534, 580, 556, 1669, 0, 0, 0, 0, 0, 0, 1676, 0, 0, + /* 27963 */ 0, 0, 0, 0, 0, 0, 0, 1199, 1200, 0, 0, 0, 0, 0, 580, 1923, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 27988 */ 580, 580, 580, 580, 580, 1459, 580, 580, 1936, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 28009 */ 580, 580, 1919, 580, 534, 2176, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 0, + /* 28030 */ 0, 534, 534, 534, 534, 2192, 2193, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 556, 556, 556, 556, + /* 28051 */ 3022, 556, 2262, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1819, 556, + /* 28071 */ 556, 556, 2278, 2279, 2280, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1846, 556, 556, 556, 1851, + /* 28091 */ 556, 2349, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1985, 580, 580, 580, + /* 28112 */ 2365, 2366, 2367, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 0, 3558, 0, 3560, 534, 534, 0, 2399, + /* 28133 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1243, 0, 0, 0, 0, 0, 2465, 2466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 28165 */ 0, 2090, 0, 0, 0, 0, 580, 580, 580, 2663, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 534, + /* 28188 */ 580, 556, 3105, 534, 534, 534, 534, 534, 2790, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 556, + /* 28208 */ 3019, 556, 556, 556, 556, 2917, 0, 0, 0, 0, 0, 2923, 0, 0, 0, 0, 0, 0, 0, 2927, 0, 0, 0, 0, 0, 2200246, 0, + /* 28235 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 0, 0, 0, 0, 0, 0, 0, 2972, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, + /* 28265 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2987, 534, 534, 534, 534, 534, 534, + /* 28286 */ 534, 534, 534, 534, 899, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3027, 556, 556, 556, 556, 556, 556, + /* 28307 */ 556, 556, 556, 556, 556, 1432, 26009, 1341, 975, 580, 0, 3139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 28333 */ 1597, 0, 534, 534, 534, 534, 3175, 534, 534, 534, 534, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 28354 */ 556, 556, 556, 556, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3438, 0, 3439, 0, 0, 0, 0, 0, 0, 0, 534, + /* 28378 */ 3446, 534, 3447, 534, 534, 534, 3451, 534, 534, 534, 534, 534, 534, 534, 556, 3459, 556, 556, 556, 556, + /* 28398 */ 556, 2589, 556, 556, 2593, 556, 556, 556, 556, 556, 556, 556, 2606, 556, 556, 556, 556, 556, 556, 556, + /* 28418 */ 556, 2269, 556, 556, 556, 556, 556, 556, 556, 3460, 556, 556, 556, 3464, 556, 556, 556, 556, 556, 556, + /* 28438 */ 556, 556, 580, 3473, 580, 0, 0, 2920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2926, 0, 0, 0, 0, 0, 1147, 0, 1149, 0, 0, + /* 28466 */ 0, 0, 0, 0, 0, 0, 534, 557, 534, 557, 534, 534, 557, 534, 3474, 580, 580, 580, 3478, 580, 580, 580, 580, + /* 28489 */ 580, 580, 580, 580, 0, 0, 0, 534, 534, 3583, 3584, 534, 534, 556, 556, 3596, 556, 556, 556, 3598, 580, + /* 28510 */ 580, 580, 3600, 0, 534, 534, 556, 556, 580, 580, 0, 0, 0, 0, 3244, 0, 0, 0, 0, 0, 323, 323, 373, 0, 0, 0, + /* 28536 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 725, 0, 0, 0, 0, 373, 0, 432, 438, 0, 445, 458, 458, 458, 458, 458, 458, + /* 28563 */ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 484, 484, 495, 484, 484, 484, 484, 484, + /* 28584 */ 484, 484, 484, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 538, 561, + /* 28605 */ 538, 561, 538, 538, 561, 538, 585, 561, 561, 561, 561, 561, 561, 561, 585, 585, 585, 538, 585, 585, 585, + /* 28626 */ 585, 585, 585, 585, 561, 561, 538, 561, 585, 561, 585, 1, 12290, 787, 0, 0, 0, 0, 534, 534, 534, 534, 534, + /* 28649 */ 534, 534, 534, 859, 534, 534, 534, 534, 534, 534, 2139, 534, 534, 2142, 534, 534, 534, 534, 534, 534, 534, + /* 28670 */ 1760, 1761, 1762, 534, 534, 1765, 1766, 534, 534, 1114, 1115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 28695 */ 1613, 0, 1100, 0, 1231, 0, 0, 0, 0, 0, 1115, 0, 0, 0, 0, 0, 1214, 0, 0, 0, 0, 0, 3088384, 0, 0, 0, 0, 0, + /* 28723 */ 0, 0, 0, 0, 0, 0, 752, 0, 0, 0, 0, 0, 0, 1246, 1114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 1255, 534, 534, + /* 28752 */ 534, 1341, 901, 556, 556, 1346, 556, 556, 556, 556, 556, 556, 556, 556, 1389, 556, 556, 556, 556, 556, + /* 28772 */ 556, 556, 556, 1397, 556, 556, 556, 1401, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1880, 556, + /* 28792 */ 556, 556, 556, 556, 580, 1438, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1934, + /* 28813 */ 580, 580, 580, 1465, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1491, 580, 580, + /* 28833 */ 1478, 580, 580, 580, 580, 580, 580, 580, 1487, 580, 580, 1489, 580, 580, 580, 1493, 1517, 580, 580, 580, + /* 28853 */ 580, 580, 0, 534, 580, 556, 534, 534, 534, 534, 534, 556, 580, 534, 556, 580, 534, 556, 580, 534, 556, + /* 28874 */ 580, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 0, 135168, 135168, 0, 0, 65536, 135168, 556, 556, 556, 556, 1872, + /* 28896 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1832, 556, 556, 556, 556, 1968, 580, 580, 580, 580, + /* 28917 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2362, 580, 580, 2004, 0, 2005, 0, 0, 0, 0, 0, 2007, + /* 28940 */ 0, 0, 0, 0, 0, 0, 0, 2418, 0, 0, 0, 0, 0, 2422, 0, 0, 2009, 0, 0, 0, 0, 0, 2011, 0, 0, 0, 0, 0, 2014, 0, + /* 28970 */ 0, 0, 0, 0, 0, 1576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2077, 0, 0, 0, 0, 0, 2067, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 29002 */ 0, 0, 0, 0, 0, 0, 827, 2121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 534, 534, 534, 534, 2770, + /* 29029 */ 534, 534, 534, 534, 2137, 534, 534, 534, 534, 2141, 534, 534, 534, 534, 534, 534, 534, 534, 2518, 534, + /* 29049 */ 534, 534, 534, 534, 534, 534, 534, 2803, 534, 534, 534, 534, 534, 534, 534, 534, 2989, 534, 534, 534, 534, + /* 29070 */ 534, 534, 534, 534, 3165, 534, 534, 534, 534, 534, 534, 534, 534, 3270, 534, 534, 534, 534, 534, 534, 534, + /* 29091 */ 534, 3280, 556, 556, 556, 556, 556, 556, 556, 1426, 556, 556, 556, 556, 26009, 1341, 975, 580, 556, 556, + /* 29111 */ 2222, 556, 556, 556, 556, 2226, 556, 556, 556, 556, 556, 556, 556, 556, 1405, 556, 556, 556, 556, 556, + /* 29131 */ 556, 556, 580, 580, 2309, 580, 580, 580, 580, 2313, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3527, + /* 29151 */ 580, 580, 580, 0, 3531, 0, 0, 2462, 0, 0, 0, 0, 0, 2467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1640, 0, 0, 0, 0, 0, + /* 29180 */ 0, 534, 534, 534, 2489, 2490, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2522, 534, 534, + /* 29201 */ 534, 534, 534, 534, 2529, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2993, 534, 534, + /* 29222 */ 2620, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2376, 2660, 580, 580, + /* 29242 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3316, 2707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 29267 */ 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 2724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1686, 0, 0, 0, 0, 0, 0, 0, + /* 29298 */ 2752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2028, 0, 0, 0, 534, 534, 534, 534, 534, 2800, 534, 534, 534, + /* 29324 */ 534, 534, 534, 534, 534, 534, 534, 1307, 534, 534, 534, 534, 534, 2891, 580, 580, 580, 580, 580, 580, 580, + /* 29345 */ 2897, 580, 580, 580, 580, 580, 580, 580, 1471, 580, 580, 580, 580, 580, 580, 580, 580, 1045, 580, 0, 0, 0, + /* 29367 */ 534, 580, 556, 3128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1128, 534, 534, 534, 534, 534, 3176, + /* 29393 */ 534, 534, 534, 556, 556, 556, 556, 556, 556, 556, 3511, 556, 3513, 556, 556, 556, 556, 580, 556, 556, + /* 29413 */ 3297, 556, 556, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3374, 580, 580, 3132, 0, 0, 0, 0, + /* 29435 */ 534, 534, 534, 534, 534, 534, 3397, 534, 534, 534, 534, 0, 0, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 29457 */ 556, 1392, 556, 556, 556, 556, 556, 325, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, + /* 29485 */ 0, 324, 372, 327, 371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1110, 0, 0, 0, 0, 0, 324, 0, 0, 371, 371, 401, 0, + /* 29513 */ 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 446, 459, 459, 459, 459, + /* 29542 */ 459, 459, 459, 459, 472, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 485, 485, 459, 485, + /* 29563 */ 485, 500, 502, 485, 485, 500, 485, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + /* 29584 */ 528, 511, 511, 511, 511, 511, 539, 562, 539, 562, 539, 539, 562, 539, 586, 562, 562, 562, 562, 562, 562, + /* 29605 */ 562, 586, 586, 586, 539, 586, 586, 586, 586, 586, 586, 586, 562, 562, 539, 562, 586, 562, 586, 1, 12290, + /* 29626 */ 0, 651, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 663, 664, 0, 0, 0, 0, 364, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 29657 */ 0, 723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 364, 364, 0, 0, 0, 0, 0, 355, + /* 29688 */ 0, 0, 466, 466, 466, 466, 466, 466, 466, 466, 471, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + /* 29710 */ 471, 0, 713, 0, 0, 0, 0, 0, 0, 720, 0, 0, 0, 724, 0, 0, 0, 0, 0, 0, 1621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 29741 */ 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, 763, 0, 0, 0, 0, 0, 771, 0, 773, 0, 0, 0, 0, 0, 0, 1637, 0, 0, 0, 0, + /* 29772 */ 0, 0, 0, 0, 0, 0, 1095, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 793, 0, 0, 0, 793, 793, 790, 0, 0, 0, 0, 0, 0, 0, + /* 29803 */ 106496, 0, 106496, 0, 0, 0, 0, 106496, 106496, 0, 0, 0, 773, 0, 785, 0, 802, 0, 0, 0, 0, 793, 0, 700, 0, + /* 29828 */ 0, 0, 0, 364, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1141, 0, 810, 0, 0, 0, 0, 0, 810, 810, 813, 0, 0, 0, 773, 0, + /* 29858 */ 0, 0, 0, 0, 375, 0, 0, 0, 0, 367, 0, 384, 0, 350, 0, 0, 0, 0, 822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 771, 0, 0, + /* 29889 */ 0, 0, 0, 385, 0, 69632, 73728, 0, 0, 0, 0, 0, 65536, 0, 0, 822, 802, 822, 0, 534, 534, 837, 534, 843, 534, + /* 29914 */ 534, 856, 534, 534, 867, 534, 872, 534, 534, 880, 883, 888, 534, 896, 534, 534, 556, 556, 556, 910, 556, + /* 29935 */ 556, 556, 556, 556, 2604, 2605, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3189, 556, 556, 556, 556, + /* 29955 */ 556, 556, 916, 556, 556, 929, 556, 556, 940, 556, 945, 556, 556, 953, 956, 961, 556, 969, 1019, 580, 580, + /* 29976 */ 1027, 1030, 1035, 580, 1043, 580, 580, 0, 0, 0, 534, 580, 556, 556, 556, 556, 556, 2825, 556, 556, 556, + /* 29997 */ 556, 556, 556, 556, 556, 556, 556, 2284, 556, 556, 556, 556, 556, 837, 534, 1053, 888, 534, 910, 556, + /* 30017 */ 1058, 961, 556, 0, 984, 580, 1063, 1035, 580, 0, 2919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2458, 0, 0, + /* 30044 */ 0, 0, 1087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 1659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 751, 0, + /* 30076 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2032, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30108 */ 2078, 0, 0, 0, 1129, 0, 0, 0, 364, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2471, 0, 0, 0, 0, 0, 1143, 0, 0, + /* 30138 */ 0, 0, 0, 0, 0, 0, 1152, 0, 0, 0, 0, 0, 0, 0, 2442, 0, 0, 0, 0, 0, 0, 0, 2450, 1121, 0, 0, 0, 0, 0, 0, 0, + /* 30169 */ 0, 0, 0, 0, 0, 0, 1189, 0, 0, 0, 0, 364, 364, 0, 0, 0, 0, 0, 0, 0, 1139, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, + /* 30200 */ 0, 0, 0, 0, 0, 0, 0, 2757, 2758, 0, 0, 0, 534, 1282, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 30224 */ 534, 534, 534, 1297, 1337, 534, 534, 1341, 901, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1354, + /* 30244 */ 556, 556, 1419, 556, 556, 556, 556, 556, 556, 1429, 556, 556, 26009, 1341, 975, 580, 580, 580, 580, 1523, + /* 30264 */ 580, 0, 534, 580, 556, 534, 534, 534, 534, 534, 556, 556, 556, 556, 556, 2837, 556, 556, 556, 556, 556, + /* 30285 */ 556, 556, 556, 556, 556, 1862, 1863, 556, 556, 556, 556, 1461, 580, 580, 580, 1466, 580, 580, 580, 580, + /* 30305 */ 580, 580, 580, 580, 580, 580, 580, 1915, 580, 580, 580, 580, 580, 580, 1481, 580, 580, 580, 580, 580, 580, + /* 30326 */ 580, 580, 580, 580, 580, 580, 580, 1933, 580, 580, 580, 1495, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 30347 */ 580, 1511, 580, 580, 580, 0, 2005, 0, 0, 0, 0, 0, 2007, 0, 0, 0, 0, 0, 0, 0, 2074, 0, 0, 0, 0, 0, 0, 0, 0, + /* 30376 */ 342, 0, 0, 0, 0, 0, 0, 0, 580, 580, 580, 1521, 580, 580, 0, 534, 580, 556, 534, 534, 534, 534, 534, 556, + /* 30400 */ 580, 534, 556, 580, 3610, 3611, 3612, 534, 556, 580, 0, 0, 0, 0, 0, 0, 307, 442, 456, 456, 456, 456, 456, + /* 30423 */ 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 0, 0, 1585, 0, 0, 1588, 1589, 1590, 0, 1592, 1593, + /* 30445 */ 0, 0, 0, 0, 1598, 1631, 1632, 0, 0, 0, 0, 0, 0, 0, 0, 1641, 1642, 0, 0, 0, 0, 0, 0, 0, 155648, 0, 0, 0, 0, + /* 30474 */ 0, 0, 0, 0, 0, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1212, 534, 534, 534, 0, 0, 0, 0, 1648, 0, 0, 1650, + /* 30504 */ 0, 0, 0, 0, 1652, 1653, 0, 0, 0, 0, 0, 441, 0, 0, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, + /* 30529 */ 467, 467, 467, 467, 467, 552, 575, 552, 575, 552, 552, 575, 552, 0, 0, 1671, 1672, 1673, 1674, 0, 0, 0, 0, + /* 30552 */ 0, 0, 0, 0, 0, 0, 0, 2483, 0, 0, 0, 0, 0, 1683, 0, 0, 1686, 0, 0, 0, 0, 0, 1690, 0, 0, 0, 1694, 1695, + /* 30580 */ 1706, 1566, 1566, 1708, 534, 1710, 534, 1711, 1712, 534, 1714, 534, 534, 534, 1718, 534, 534, 534, 534, + /* 30599 */ 534, 886, 534, 534, 534, 534, 534, 556, 556, 908, 556, 556, 556, 556, 556, 2254, 556, 556, 556, 556, 556, + /* 30620 */ 556, 556, 556, 556, 556, 1431, 556, 26009, 1341, 975, 1435, 534, 534, 1739, 534, 1741, 534, 534, 534, 534, + /* 30640 */ 534, 534, 534, 534, 1749, 1750, 1752, 534, 1786, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1797, 1341, + /* 30660 */ 0, 1802, 556, 556, 556, 556, 556, 3041, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3200, 556, 556, + /* 30681 */ 556, 556, 556, 556, 1804, 556, 1805, 556, 1807, 556, 1809, 556, 556, 556, 1813, 556, 556, 556, 556, 556, + /* 30701 */ 0, 0, 0, 0, 0, 0, 580, 580, 2618, 580, 580, 556, 556, 556, 556, 1826, 556, 556, 556, 556, 1830, 556, 556, + /* 30724 */ 556, 556, 1834, 556, 556, 556, 556, 556, 3055, 556, 556, 556, 556, 556, 580, 580, 580, 3063, 580, 580, + /* 30744 */ 580, 580, 1724, 1915, 1819, 534, 534, 534, 534, 556, 556, 556, 556, 580, 580, 580, 580, 0, 0, 2692, 0, 0, + /* 30766 */ 1836, 556, 556, 556, 556, 556, 556, 556, 556, 1844, 1845, 1847, 556, 556, 556, 556, 556, 0, 2297, 0, 0, + /* 30787 */ 580, 580, 580, 580, 580, 580, 580, 2667, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2653, 580, 580, 580, + /* 30808 */ 580, 2657, 580, 556, 556, 556, 1855, 1856, 1857, 556, 556, 1860, 1861, 556, 556, 556, 556, 556, 556, 0, 0, + /* 30829 */ 580, 580, 580, 2862, 580, 580, 580, 580, 556, 1869, 556, 556, 556, 1873, 556, 556, 556, 556, 556, 556, + /* 30849 */ 556, 1882, 556, 556, 0, 580, 580, 580, 580, 580, 580, 580, 1002, 580, 580, 580, 580, 580, 580, 3555, 3556, + /* 30870 */ 580, 580, 0, 0, 3559, 0, 534, 534, 1903, 580, 1905, 580, 580, 580, 1909, 580, 580, 580, 580, 580, 580, + /* 30891 */ 580, 580, 580, 580, 3528, 580, 580, 0, 0, 0, 1922, 580, 580, 580, 580, 1926, 580, 580, 580, 580, 1930, + /* 30912 */ 580, 1932, 580, 580, 580, 580, 580, 1524, 0, 1270, 1454, 1362, 534, 534, 534, 534, 534, 556, 1952, 1953, + /* 30932 */ 580, 580, 1956, 1957, 580, 580, 580, 580, 580, 580, 580, 1965, 580, 580, 534, 534, 556, 556, 580, 580, + /* 30952 */ 3321, 0, 0, 0, 3323, 0, 0, 0, 0, 0, 0, 2114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2605056, 0, 0, 0, 0, 2887680, + /* 30980 */ 580, 1969, 580, 580, 580, 580, 580, 580, 580, 1978, 580, 580, 580, 580, 580, 580, 0, 534, 580, 556, 534, + /* 31001 */ 534, 534, 534, 534, 556, 580, 580, 580, 1989, 534, 580, 556, 1766, 534, 1995, 534, 1861, 556, 1999, 556, + /* 31021 */ 1957, 580, 2003, 580, 0, 2005, 0, 0, 0, 0, 0, 2007, 0, 0, 0, 0, 0, 0, 0, 2702, 0, 0, 0, 0, 0, 0, 0, 2706, + /* 31049 */ 0, 2018, 0, 0, 2021, 2022, 0, 0, 0, 2026, 0, 0, 0, 0, 0, 0, 0, 414, 414, 0, 0, 0, 0, 0, 414, 0, 0, 0, + /* 31077 */ 2069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, 0, 1650, 0, 0, 0, 0, 0, 0, 0, 2088, 0, 0, 0, 0, 0, + /* 31109 */ 0, 0, 451, 1147348, 1147348, 1147348, 1147348, 1147348, 1147348, 1147348, 1147348, 1147348, 1147348, + /* 31122 */ 1147348, 1147348, 1147348, 1147348, 1147348, 1147348, 2095, 0, 2097, 0, 0, 0, 0, 0, 0, 0, 0, 2106, 0, 0, + /* 31142 */ 0, 0, 0, 0, 0, 184725, 184925, 184925, 184925, 0, 184925, 184925, 184925, 184925, 184925, 184925, 0, 0, 0, + /* 31161 */ 0, 0, 184925, 0, 184925, 1, 12290, 534, 534, 534, 2153, 534, 2155, 534, 534, 534, 534, 534, 534, 534, 534, + /* 31182 */ 534, 534, 1746, 534, 534, 534, 534, 534, 534, 2204, 2205, 534, 534, 0, 0, 0, 0, 556, 556, 556, 556, 556, + /* 31204 */ 556, 556, 556, 556, 2558, 556, 556, 556, 556, 2238, 556, 2240, 556, 556, 556, 556, 556, 556, 556, 556, + /* 31224 */ 556, 556, 556, 2231, 556, 556, 556, 556, 556, 2291, 2292, 556, 556, 0, 0, 0, 0, 580, 580, 580, 580, 580, + /* 31246 */ 580, 580, 1506, 580, 580, 580, 580, 580, 1513, 580, 580, 580, 580, 2325, 580, 2327, 580, 580, 580, 580, + /* 31266 */ 580, 580, 580, 580, 580, 580, 580, 2318, 580, 580, 580, 580, 580, 2378, 2379, 580, 580, 2145, 2317, 2230, + /* 31286 */ 534, 2385, 534, 534, 556, 2389, 556, 556, 0, 580, 580, 580, 580, 580, 580, 997, 580, 580, 580, 580, 580, + /* 31307 */ 580, 2328, 580, 2330, 580, 580, 580, 580, 580, 580, 580, 2342, 580, 580, 580, 580, 580, 580, 580, 580, + /* 31327 */ 580, 1474, 580, 580, 580, 580, 580, 580, 580, 2393, 580, 580, 2005, 0, 2007, 0, 2009, 0, 2011, 0, 0, 0, 0, + /* 31350 */ 0, 0, 0, 2727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1579, 0, 0, 0, 0, 0, 0, 0, 2437, 2438, 0, 0, 0, 0, 0, 0, 0, 0, + /* 31381 */ 0, 0, 0, 0, 0, 1089, 0, 0, 534, 2526, 534, 534, 534, 2531, 534, 534, 534, 534, 534, 534, 534, 2538, 534, + /* 31404 */ 534, 534, 534, 534, 534, 2169, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2782, 534, 534, 2785, + /* 31424 */ 534, 534, 534, 534, 534, 534, 534, 2543, 534, 534, 534, 534, 534, 534, 534, 534, 0, 2549, 556, 556, 2587, + /* 31445 */ 556, 556, 556, 556, 2591, 556, 556, 556, 2596, 556, 556, 556, 556, 556, 0, 2615, 0, 0, 0, 0, 580, 580, + /* 31467 */ 580, 580, 580, 534, 556, 580, 0, 0, 0, 0, 0, 0, 0, 3386, 556, 556, 556, 2603, 556, 556, 556, 556, 556, + /* 31490 */ 556, 556, 556, 2609, 556, 556, 556, 556, 556, 556, 3042, 556, 3044, 556, 556, 556, 556, 556, 556, 556, + /* 31510 */ 1404, 556, 556, 1411, 556, 556, 556, 556, 556, 580, 580, 580, 2623, 580, 580, 580, 580, 580, 580, 580, + /* 31530 */ 580, 580, 580, 580, 580, 1451, 580, 580, 580, 580, 580, 580, 2635, 580, 2637, 580, 580, 580, 580, 580, + /* 31550 */ 580, 580, 580, 580, 580, 1914, 580, 580, 580, 580, 580, 580, 580, 2662, 580, 580, 580, 580, 580, 580, 580, + /* 31571 */ 2669, 580, 580, 580, 580, 580, 580, 2895, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1046, 0, 0, 0, 534, + /* 31593 */ 580, 556, 580, 580, 580, 2675, 580, 580, 580, 580, 580, 580, 580, 580, 534, 580, 556, 534, 2913, 556, + /* 31613 */ 2915, 580, 534, 534, 534, 2798, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 3348, + /* 31633 */ 534, 556, 556, 556, 556, 556, 2846, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2245, 556, 556, + /* 31654 */ 556, 556, 0, 2943, 2944, 0, 2945, 0, 2947, 0, 0, 0, 0, 2949, 0, 0, 0, 0, 0, 0, 0, 225883, 225883, 225883, + /* 31678 */ 225883, 225734, 225883, 225883, 225883, 225883, 225883, 225883, 225734, 225734, 225734, 225734, 225734, + /* 31691 */ 225899, 225734, 225899, 1, 12290, 2968, 2969, 0, 2971, 0, 0, 2974, 0, 0, 0, 2977, 534, 534, 534, 534, 534, + /* 31712 */ 0, 0, 0, 0, 556, 2214, 556, 556, 556, 556, 556, 0, 0, 0, 0, 0, 0, 580, 2617, 580, 580, 580, 534, 2984, + /* 31736 */ 534, 534, 534, 534, 534, 2988, 534, 534, 534, 534, 534, 534, 534, 2994, 534, 534, 534, 534, 534, 3000, + /* 31756 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1763, 534, 534, 534, 534, 534, 3009, 3011, 534, 534, + /* 31776 */ 534, 3014, 534, 3016, 3017, 534, 556, 556, 556, 556, 556, 556, 0, 0, 580, 2861, 580, 580, 580, 580, 580, + /* 31797 */ 580, 0, 1267, 1451, 1359, 534, 534, 534, 1530, 534, 556, 3024, 556, 556, 556, 556, 556, 3028, 556, 556, + /* 31817 */ 556, 556, 556, 556, 556, 3034, 556, 556, 556, 556, 556, 3185, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 31838 */ 556, 2229, 556, 556, 2233, 556, 556, 556, 556, 556, 556, 3040, 556, 556, 3043, 556, 556, 556, 556, 556, + /* 31858 */ 556, 556, 556, 1829, 556, 556, 556, 556, 556, 556, 556, 3050, 3052, 556, 556, 556, 556, 3056, 556, 3058, + /* 31878 */ 3059, 556, 580, 580, 580, 580, 580, 580, 3083, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2331, 580, + /* 31898 */ 580, 580, 580, 2335, 580, 580, 3066, 580, 580, 580, 580, 580, 3070, 580, 580, 580, 580, 580, 580, 580, + /* 31918 */ 3076, 580, 3092, 3094, 580, 580, 580, 580, 3098, 580, 3100, 3101, 580, 534, 580, 556, 534, 534, 534, 534, + /* 31938 */ 534, 887, 534, 534, 534, 534, 534, 556, 556, 556, 556, 556, 0, 0, 0, 2299, 580, 580, 580, 580, 580, 580, + /* 31960 */ 580, 3084, 580, 3086, 580, 580, 580, 580, 580, 580, 3106, 556, 3108, 580, 3110, 0, 0, 0, 0, 0, 0, 3116, 0, + /* 31983 */ 0, 3119, 0, 0, 0, 0, 364, 364, 0, 0, 0, 0, 0, 1096, 0, 0, 0, 0, 0, 0, 0, 286720, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32013 */ 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3140, 3141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2107, 0, 0, 0, 556, + /* 32043 */ 556, 556, 556, 3184, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2272, 556, 556, 556, 556, 556, + /* 32064 */ 556, 556, 3195, 556, 556, 556, 556, 556, 556, 556, 556, 3203, 556, 556, 556, 556, 556, 556, 3197, 556, + /* 32084 */ 556, 556, 556, 556, 556, 556, 556, 556, 2594, 556, 556, 556, 556, 556, 556, 556, 556, 556, 580, 580, 580, + /* 32105 */ 3208, 580, 580, 580, 580, 580, 580, 580, 3213, 580, 580, 580, 580, 1907, 580, 580, 580, 580, 580, 580, + /* 32125 */ 580, 580, 1918, 580, 580, 580, 580, 580, 3096, 580, 580, 3099, 580, 580, 580, 534, 580, 556, 534, 534, + /* 32145 */ 534, 534, 534, 534, 3278, 534, 534, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3515, 556, 556, + /* 32166 */ 580, 556, 3296, 556, 556, 556, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3214, 3326, + /* 32186 */ 3327, 0, 3132, 0, 3331, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 2766, 534, 534, 534, 534, 534, 2771, 534, 534, + /* 32210 */ 534, 3405, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 960, 556, 556, 556, 556, 556, 3420, + /* 32231 */ 556, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1452, 580, 580, 580, 580, 580, 3436, 580, + /* 32252 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 3502, 534, 534, 534, 534, + /* 32277 */ 534, 3450, 534, 534, 534, 534, 534, 534, 534, 534, 556, 556, 556, 3281, 556, 556, 556, 3284, 556, 556, + /* 32297 */ 556, 3463, 556, 556, 556, 556, 556, 556, 556, 556, 556, 580, 580, 580, 580, 580, 580, 3302, 580, 580, 580, + /* 32318 */ 580, 580, 580, 580, 3477, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3486, 3487, 0, 0, 0, 0, 364, 364, + /* 32340 */ 0, 0, 0, 0, 1137, 1095, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 266240, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 0, 3493, + /* 32367 */ 3494, 3495, 534, 534, 534, 3498, 534, 3500, 534, 534, 534, 534, 534, 534, 534, 3269, 534, 534, 534, 534, + /* 32387 */ 534, 534, 534, 534, 534, 2781, 534, 534, 534, 534, 534, 534, 534, 3505, 3506, 3507, 556, 556, 556, 3510, + /* 32407 */ 556, 3512, 556, 556, 556, 556, 3517, 3518, 3519, 3520, 580, 580, 580, 3523, 580, 3525, 580, 580, 580, 580, + /* 32427 */ 3530, 0, 0, 0, 0, 0, 0, 1687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3562, + /* 32458 */ 534, 534, 534, 3566, 556, 556, 3568, 556, 556, 556, 3572, 556, 580, 580, 3574, 580, 580, 580, 3578, 580, + /* 32478 */ 0, 0, 0, 534, 534, 534, 534, 534, 534, 556, 556, 580, 580, 0, 3111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 398, 0, + /* 32505 */ 0, 0, 0, 0, 0, 0, 0, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2409, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, + /* 32537 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1629, 0, 0, 0, 0, 368, 0, 0, 0, 376, 378, 0, 0, 0, 0, 0, 0, 0, 0, 2025, 0, 0, + /* 32568 */ 0, 0, 0, 0, 0, 0, 2047, 0, 0, 0, 0, 0, 0, 0, 0, 2087, 0, 0, 0, 0, 0, 0, 0, 0, 2127, 0, 0, 534, 534, 534, + /* 32598 */ 534, 534, 0, 0, 411, 0, 0, 0, 411, 69632, 73728, 0, 368, 368, 0, 423, 65536, 368, 0, 0, 368, 423, 492, + /* 32621 */ 496, 492, 492, 501, 492, 492, 492, 501, 492, 423, 423, 329, 423, 0, 0, 423, 423, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32646 */ 0, 2048, 0, 0, 0, 0, 0, 0, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + /* 32670 */ 540, 563, 540, 563, 540, 540, 563, 540, 587, 563, 563, 563, 563, 563, 563, 563, 587, 587, 587, 540, 587, + /* 32691 */ 587, 587, 587, 587, 587, 587, 563, 563, 540, 563, 587, 563, 587, 1, 12290, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, + /* 32716 */ 0, 0, 0, 0, 0, 0, 1644, 0, 556, 556, 556, 556, 933, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 32740 */ 2285, 556, 2287, 556, 556, 0, 0, 1207, 0, 1096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2447, 0, 0, 0, 534, + /* 32767 */ 534, 534, 534, 1260, 534, 534, 534, 534, 534, 1272, 534, 534, 534, 534, 534, 0, 0, 0, 2212, 556, 556, 556, + /* 32789 */ 556, 556, 556, 556, 3029, 556, 556, 556, 556, 556, 556, 556, 556, 3030, 556, 556, 556, 556, 556, 556, 556, + /* 32810 */ 534, 534, 534, 1341, 901, 556, 556, 556, 556, 556, 556, 556, 556, 1352, 556, 556, 0, 580, 580, 580, 580, + /* 32831 */ 580, 580, 998, 580, 580, 580, 580, 580, 580, 2650, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2315, 580, + /* 32852 */ 2317, 580, 580, 580, 580, 556, 556, 556, 1364, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 32873 */ 1378, 1380, 556, 556, 556, 556, 556, 1871, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 32893 */ 1413, 556, 556, 1417, 534, 534, 534, 534, 534, 3567, 556, 556, 556, 556, 556, 556, 556, 3573, 580, 580, + /* 32913 */ 580, 580, 580, 2677, 580, 580, 580, 580, 580, 580, 534, 580, 556, 534, 534, 534, 534, 556, 556, 556, 556, + /* 32934 */ 580, 534, 3597, 556, 556, 556, 3599, 580, 580, 580, 0, 534, 534, 556, 556, 580, 580, 0, 0, 0, 3243, 0, 0, + /* 32957 */ 0, 0, 0, 0, 0, 657, 0, 0, 0, 0, 0, 0, 0, 0, 306, 306, 306, 0, 0, 0, 0, 0, 424, 424, 0, 424, 433, 0, 424, + /* 32986 */ 424, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 486, + /* 33007 */ 486, 460, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + /* 33028 */ 486, 486, 486, 486, 486, 541, 564, 541, 564, 541, 541, 564, 541, 588, 564, 564, 564, 564, 564, 564, 564, + /* 33049 */ 588, 588, 588, 541, 588, 588, 588, 588, 588, 588, 588, 564, 564, 541, 564, 588, 564, 588, 1, 12290, 78114, + /* 33070 */ 1066, 0, 0, 1069, 1073, 0, 0, 1077, 1081, 0, 0, 0, 0, 0, 0, 0, 703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2104, 0, 0, + /* 33099 */ 0, 0, 0, 0, 0, 0, 0, 0, 1194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2472, 0, 0, 0, 0, 1670, 0, 0, 0, 0, 0, + /* 33131 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1667, 0, 0, 0, 0, 0, 2044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2704, 0, 0, 0, + /* 33163 */ 0, 2068, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1681, 1682, 2392, 580, 580, 580, 0, 0, 0, 0, 0, 0, 0, + /* 33192 */ 0, 0, 0, 0, 0, 0, 0, 2928, 0, 0, 0, 2932, 0, 0, 0, 0, 0, 2938, 0, 0, 0, 0, 0, 0, 0, 719, 0, 0, 0, 0, 0, 0, + /* 33224 */ 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 2953, 0, 0, 2956, 0, 0, 0, 0, 0, 2961, 0, 0, 0, 0, 0, 0, 0, 748, 0, 0, 0, + /* 33255 */ 0, 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1204, 2995, 534, 534, 534, 534, 534, 534, + /* 33284 */ 534, 534, 534, 3004, 534, 534, 534, 534, 534, 0, 0, 2211, 0, 556, 556, 556, 556, 556, 556, 556, 2268, 556, + /* 33306 */ 556, 556, 556, 2273, 556, 556, 556, 534, 534, 534, 3012, 534, 534, 3015, 534, 534, 534, 3018, 556, 556, + /* 33326 */ 556, 556, 556, 0, 0, 0, 0, 580, 580, 580, 580, 580, 580, 580, 556, 556, 534, 556, 580, 556, 580, 1, 12290, + /* 33349 */ 556, 556, 556, 556, 3054, 556, 556, 3057, 556, 556, 556, 3060, 580, 580, 580, 580, 0, 0, 0, 0, 0, 0, 0, 0, + /* 33373 */ 2396, 0, 0, 0, 3077, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3087, 580, 580, 580, 580, 0, 0, 0, + /* 33396 */ 0, 0, 0, 3442, 0, 3444, 0, 534, 534, 0, 3120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2015, 0, 0, 534, + /* 33425 */ 534, 3151, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 3458, 556, 556, 534, 534, 534, + /* 33446 */ 534, 3163, 534, 534, 534, 534, 534, 534, 534, 3168, 534, 3170, 534, 534, 534, 534, 534, 1261, 534, 534, + /* 33466 */ 534, 1270, 534, 534, 534, 534, 534, 534, 534, 2493, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2196, + /* 33486 */ 534, 534, 534, 534, 534, 534, 556, 556, 556, 580, 580, 3207, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 33507 */ 580, 1962, 580, 580, 580, 580, 580, 580, 3227, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 534, + /* 33528 */ 580, 556, 2912, 534, 2914, 556, 2916, 3275, 534, 534, 534, 534, 534, 534, 534, 556, 556, 556, 556, 556, + /* 33548 */ 556, 556, 556, 580, 580, 580, 556, 556, 3287, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3293, 556, 556, + /* 33569 */ 556, 556, 556, 556, 3466, 556, 556, 556, 556, 556, 556, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 33590 */ 3306, 3587, 3588, 556, 556, 580, 580, 3591, 3592, 580, 580, 0, 0, 0, 534, 534, 534, 534, 534, 534, 534, + /* 33611 */ 534, 534, 1716, 534, 534, 534, 0, 683, 684, 0, 0, 0, 0, 689, 0, 0, 0, 364, 364, 364, 0, 0, 0, 0, 0, 534, + /* 33637 */ 830, 534, 534, 534, 534, 534, 534, 860, 534, 534, 534, 534, 534, 534, 2180, 2181, 534, 534, 534, 534, 534, + /* 33658 */ 534, 2188, 534, 0, 751, 0, 0, 0, 0, 0, 751, 751, 0, 0, 816, 0, 0, 0, 0, 0, 0, 0, 1134592, 0, 0, 0, 0, 0, + /* 33686 */ 0, 1134592, 0, 0, 0, 0, 970, 556, 0, 580, 580, 580, 580, 988, 580, 580, 580, 580, 580, 580, 580, 580, + /* 33708 */ 1044, 580, 0, 0, 0, 841, 988, 914, 534, 534, 534, 534, 897, 556, 556, 556, 556, 970, 0, 580, 580, 580, + /* 33730 */ 580, 1044, 0, 0, 0, 1145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2408448, 0, 0, 534, 1318, 534, 534, 534, + /* 33757 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 0, 2549, 1696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 33783 */ 0, 0, 0, 1190, 580, 580, 1988, 580, 534, 580, 556, 534, 534, 534, 534, 556, 556, 556, 556, 580, 580, 580, + /* 33805 */ 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2122, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 534, + /* 33835 */ 2768, 534, 2769, 534, 534, 2540, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 0, 0, 0, + /* 33857 */ 0, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 0, 0, 975, 580, 0, 3129, 0, 0, 0, 0, 0, 0, + /* 33882 */ 0, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 3235, 534, 3237, 556, 3239, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3124, + /* 33910 */ 3125, 0, 0, 0, 556, 556, 556, 3298, 556, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2359, 580, + /* 33932 */ 580, 580, 580, 3317, 580, 534, 534, 556, 556, 580, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2076, 0, 0, 0, 0, 0, 0, + /* 33959 */ 461, 461, 479, 487, 487, 479, 487, 487, 487, 487, 487, 487, 487, 487, 512, 520, 520, 520, 520, 520, 520, + /* 33980 */ 520, 520, 520, 520, 520, 520, 520, 520, 529, 520, 520, 520, 520, 520, 542, 565, 542, 565, 542, 542, 565, + /* 34001 */ 542, 589, 565, 565, 565, 565, 565, 565, 565, 589, 589, 589, 542, 589, 589, 589, 589, 589, 589, 589, 565, + /* 34022 */ 565, 542, 565, 589, 565, 589, 1, 12290, 0, 0, 760, 0, 0, 764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3132, 0, 0, + /* 34050 */ 0, 0, 0, 778, 0, 0, 0, 0, 0, 0, 0, 782, 0, 0, 0, 0, 0, 0, 0, 779, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 800, + /* 34082 */ 0, 0, 0, 0, 0, 0, 805, 0, 0, 0, 782, 0, 0, 0, 0, 364, 364, 0, 0, 0, 1136, 0, 0, 0, 0, 0, 0, 0, 1606, 0, 0, + /* 34113 */ 0, 0, 0, 0, 0, 0, 553, 576, 553, 576, 553, 553, 576, 553, 0, 805, 0, 0, 0, 0, 0, 805, 805, 0, 0, 0, 0, + /* 34140 */ 782, 0, 0, 0, 0, 0, 534, 831, 534, 534, 534, 846, 534, 534, 534, 534, 534, 0, 2210, 0, 0, 556, 556, 556, + /* 34164 */ 556, 556, 556, 556, 1893, 26009, 0, 1898, 580, 1900, 580, 1901, 580, 0, 0, 0, 0, 823, 778, 0, 0, 823, 0, + /* 34187 */ 0, 0, 0, 0, 0, 0, 0, 2468, 0, 0, 0, 0, 0, 0, 0, 0, 2022, 0, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 823, 534, + /* 34217 */ 534, 534, 534, 844, 534, 852, 534, 534, 534, 534, 0, 0, 556, 556, 556, 556, 556, 2815, 556, 2816, 556, + /* 34238 */ 556, 917, 556, 925, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2583, 556, 971, + /* 34259 */ 556, 0, 580, 580, 580, 580, 580, 991, 580, 999, 580, 580, 580, 580, 580, 580, 3097, 580, 580, 580, 580, + /* 34280 */ 580, 534, 580, 556, 534, 534, 534, 534, 1054, 898, 556, 556, 556, 1059, 971, 0, 580, 580, 580, 1064, 1045, + /* 34301 */ 0, 1159, 0, 0, 0, 0, 0, 0, 0, 1167, 0, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 0, 0, 0, 770, 0, 0, 0, 1219, 0, 0, + /* 34332 */ 0, 0, 0, 0, 0, 0, 1224, 0, 0, 0, 0, 0, 0, 0, 1134592, 0, 364, 0, 0, 0, 1134592, 0, 0, 0, 1134592, 1134592, + /* 34358 */ 0, 0, 1134592, 0, 0, 1134592, 0, 1134592, 534, 534, 1284, 534, 534, 534, 534, 534, 534, 534, 1292, 534, + /* 34378 */ 534, 534, 534, 534, 0, 2209, 0, 0, 556, 556, 556, 556, 556, 556, 556, 1842, 556, 556, 556, 556, 556, 556, + /* 34400 */ 556, 556, 26009, 1896, 580, 580, 580, 580, 580, 580, 534, 534, 534, 1321, 534, 534, 1325, 534, 534, 534, + /* 34420 */ 534, 534, 1331, 534, 534, 534, 534, 534, 534, 534, 3342, 534, 3344, 534, 534, 534, 534, 534, 556, 1338, + /* 34440 */ 534, 534, 1341, 901, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2568, 556, 556, 556, 556, 556, + /* 34461 */ 1357, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1376, 556, 556, 556, 556, 556, 0, 2615, 0, 0, 0, 0, + /* 34483 */ 580, 580, 580, 2619, 580, 556, 556, 556, 1384, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 34504 */ 1816, 1817, 556, 556, 580, 580, 580, 1522, 580, 580, 0, 534, 580, 556, 534, 534, 534, 534, 534, 556, 556, + /* 34525 */ 556, 556, 556, 3196, 556, 3198, 556, 556, 556, 556, 556, 556, 556, 556, 1878, 1879, 556, 556, 556, 556, + /* 34545 */ 556, 556, 534, 534, 534, 534, 1773, 534, 534, 534, 534, 534, 534, 1781, 534, 534, 534, 534, 0, 0, 556, + /* 34566 */ 556, 556, 2813, 556, 556, 556, 556, 556, 2818, 556, 556, 1823, 556, 556, 556, 556, 556, 556, 556, 556, + /* 34586 */ 556, 556, 556, 556, 556, 556, 2842, 556, 556, 556, 1853, 556, 556, 556, 556, 1859, 556, 556, 556, 556, + /* 34606 */ 556, 556, 556, 556, 2840, 556, 556, 556, 556, 556, 556, 556, 1868, 556, 556, 556, 556, 556, 556, 1876, + /* 34626 */ 556, 556, 556, 556, 556, 556, 556, 556, 2850, 556, 556, 556, 556, 556, 556, 556, 556, 1886, 1888, 556, + /* 34646 */ 556, 556, 556, 556, 26009, 0, 580, 580, 580, 580, 580, 580, 0, 1525, 1526, 1527, 534, 534, 1529, 534, 534, + /* 34667 */ 556, 580, 580, 580, 1955, 580, 580, 580, 580, 580, 580, 580, 580, 1964, 580, 580, 580, 580, 580, 1940, + /* 34687 */ 1941, 1943, 580, 580, 580, 580, 580, 580, 580, 1951, 580, 580, 580, 1972, 580, 580, 580, 580, 580, 580, + /* 34707 */ 580, 580, 580, 1982, 1984, 580, 580, 580, 580, 1925, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 34727 */ 580, 2372, 580, 2374, 580, 580, 0, 0, 0, 2057, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 0, 0, + /* 34755 */ 1241, 1242, 0, 0, 0, 0, 0, 0, 2071, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 534, 833, 534, 534, 534, + /* 34783 */ 534, 534, 534, 534, 534, 534, 1306, 534, 534, 534, 534, 534, 534, 2134, 534, 534, 534, 534, 534, 534, 534, + /* 34804 */ 534, 534, 534, 534, 2146, 534, 534, 534, 534, 534, 534, 534, 3453, 534, 534, 534, 534, 534, 556, 556, 556, + /* 34825 */ 556, 556, 556, 2826, 556, 556, 556, 556, 556, 556, 556, 556, 556, 949, 556, 556, 556, 556, 967, 556, 2189, + /* 34846 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1314, 2203, 534, 534, 534, 534, + /* 34867 */ 0, 0, 0, 0, 556, 556, 556, 556, 556, 556, 2219, 2290, 556, 556, 556, 556, 0, 0, 0, 0, 580, 580, 580, 580, + /* 34891 */ 580, 580, 2306, 2377, 580, 580, 580, 580, 2146, 2318, 2231, 534, 534, 534, 534, 556, 556, 556, 556, 580, + /* 34911 */ 580, 580, 580, 0, 534, 534, 556, 556, 580, 580, 0, 0, 0, 0, 0, 0, 3246, 0, 0, 0, 0, 0, 2413, 2414, 0, 0, + /* 34937 */ 2417, 0, 2419, 0, 0, 0, 0, 0, 0, 0, 0, 2712, 0, 0, 0, 0, 0, 0, 0, 0, 2728, 0, 0, 0, 0, 0, 0, 0, 0, 2429, + /* 34967 */ 0, 0, 0, 0, 0, 0, 0, 0, 2406, 0, 0, 0, 0, 0, 0, 0, 0, 2454, 0, 0, 0, 0, 0, 0, 0, 0, 1587, 0, 0, 0, 0, 0, + /* 34999 */ 0, 0, 1595, 1596, 0, 0, 0, 2424, 0, 0, 2427, 0, 0, 0, 0, 0, 0, 2431, 0, 0, 0, 0, 0, 0, 0, 1159168, 0, + /* 35026 */ 1159168, 0, 0, 0, 0, 1159168, 1159168, 0, 0, 0, 2452, 0, 0, 0, 0, 0, 0, 0, 2456, 2457, 0, 0, 2460, 0, 0, + /* 35051 */ 2463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2473, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 644, 645, 646, 647, 648, 649, + /* 35079 */ 534, 2487, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 3008, 534, 534, 534, + /* 35100 */ 2515, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1293, 534, 534, 534, 534, 2527, 534, + /* 35120 */ 534, 534, 534, 534, 534, 2534, 534, 534, 534, 534, 534, 534, 534, 534, 3343, 534, 534, 534, 534, 534, 534, + /* 35141 */ 556, 534, 534, 2541, 534, 534, 534, 2544, 534, 534, 534, 534, 534, 534, 534, 0, 0, 0, 0, 556, 556, 556, + /* 35163 */ 556, 2217, 556, 556, 556, 2574, 556, 556, 556, 556, 556, 556, 2579, 556, 556, 556, 556, 556, 556, 556, + /* 35183 */ 1427, 1428, 556, 556, 556, 26009, 1341, 975, 580, 2585, 556, 556, 556, 556, 556, 556, 2592, 556, 556, 556, + /* 35203 */ 556, 556, 556, 2599, 556, 556, 556, 556, 556, 3290, 556, 556, 556, 556, 3291, 3292, 556, 556, 556, 556, + /* 35223 */ 556, 0, 0, 2298, 0, 580, 580, 580, 580, 580, 580, 580, 2886, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 35245 */ 3312, 580, 580, 580, 580, 580, 580, 2673, 580, 580, 580, 2676, 580, 580, 580, 580, 580, 580, 580, 2681, + /* 35265 */ 2682, 2683, 534, 534, 534, 534, 534, 1289, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2185, + /* 35285 */ 534, 534, 534, 534, 2720, 2721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2080, 0, 0, 0, 2736, 0, 0, 0, 0, + /* 35314 */ 0, 0, 0, 0, 0, 0, 2746, 0, 0, 0, 0, 0, 667, 0, 0, 0, 0, 0, 729, 0, 780, 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, + /* 35346 */ 0, 0, 0, 0, 0, 0, 1565, 0, 0, 0, 0, 0, 0, 2751, 0, 0, 0, 2753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2109, 534, + /* 35376 */ 534, 534, 534, 534, 2787, 2788, 534, 534, 534, 534, 2791, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 35396 */ 556, 556, 3178, 556, 556, 556, 556, 2796, 534, 534, 534, 2799, 534, 2801, 534, 534, 534, 534, 534, 534, + /* 35416 */ 2805, 534, 534, 534, 534, 534, 534, 2492, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1745, 534, 534, + /* 35436 */ 534, 534, 534, 534, 2834, 2835, 556, 556, 556, 556, 2838, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 35456 */ 2257, 556, 556, 556, 556, 556, 556, 556, 2844, 556, 556, 556, 2847, 556, 2849, 556, 556, 556, 556, 556, + /* 35476 */ 556, 556, 2854, 580, 2867, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1949, + /* 35496 */ 580, 580, 580, 2883, 2884, 580, 580, 580, 580, 2887, 580, 580, 580, 580, 580, 580, 580, 1928, 580, 580, + /* 35516 */ 580, 580, 580, 580, 580, 580, 1912, 1913, 580, 580, 580, 580, 1920, 580, 580, 580, 580, 2893, 580, 580, + /* 35536 */ 580, 2896, 580, 2898, 580, 580, 580, 580, 580, 580, 1190, 534, 580, 556, 534, 534, 534, 534, 534, 556, + /* 35556 */ 580, 2903, 580, 580, 580, 580, 580, 580, 534, 580, 556, 534, 534, 556, 556, 580, 580, 0, 0, 3242, 0, 0, 0, + /* 35579 */ 0, 0, 0, 0, 0, 225734, 225734, 225734, 225734, 225734, 225734, 225734, 225734, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 35601 */ 366, 0, 0, 0, 0, 0, 0, 580, 2918, 0, 0, 2921, 2922, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3132, 0, 0, 3255, 0, + /* 35630 */ 534, 534, 534, 534, 2986, 534, 534, 534, 534, 534, 534, 534, 2992, 534, 534, 534, 534, 534, 534, 891, 534, + /* 35651 */ 534, 534, 534, 556, 556, 556, 556, 556, 0, 0, 0, 0, 580, 580, 2302, 580, 580, 580, 580, 556, 556, 556, + /* 35673 */ 3026, 556, 556, 556, 556, 556, 556, 556, 3032, 556, 556, 556, 556, 556, 556, 1841, 556, 556, 556, 556, + /* 35693 */ 556, 556, 556, 556, 556, 3357, 556, 3359, 556, 556, 556, 556, 580, 580, 580, 580, 3068, 580, 580, 580, + /* 35713 */ 580, 580, 580, 580, 3074, 580, 580, 580, 580, 580, 2311, 580, 580, 2314, 580, 580, 580, 580, 580, 580, + /* 35733 */ 2322, 3138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1191, 3247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3132, + /* 35763 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 2767, 534, 534, 534, 534, 534, 534, 534, 534, 3265, 534, + /* 35787 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1341, 0, 556, 556, 534, 534, 3276, 534, 534, 534, + /* 35808 */ 534, 534, 556, 556, 556, 556, 556, 556, 3283, 556, 556, 556, 556, 556, 3299, 580, 580, 580, 580, 580, 580, + /* 35829 */ 580, 3304, 580, 580, 580, 580, 580, 3479, 580, 3481, 580, 580, 3483, 580, 580, 0, 0, 0, 0, 0, 0, 1210, 0, + /* 35852 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2421, 0, 0, 0, 0, 0, 3132, 0, 0, 0, 0, 534, 534, 534, 534, 534, 534, 534, 534, + /* 35880 */ 3399, 534, 3401, 3402, 534, 3404, 534, 556, 556, 556, 556, 556, 556, 556, 556, 3414, 556, 3416, 3417, 556, + /* 35900 */ 3419, 556, 3421, 580, 580, 580, 580, 580, 580, 580, 580, 3430, 580, 3432, 3433, 580, 3435, 580, 3437, 0, + /* 35920 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 534, 534, 534, 3499, 534, 3501, 534, 534, 580, 580, 580, + /* 35944 */ 3553, 580, 3554, 580, 580, 580, 580, 0, 0, 0, 0, 534, 534, 534, 534, 534, 534, 3538, 534, 3539, 534, 534, + /* 35966 */ 534, 3604, 3605, 3606, 534, 556, 580, 534, 556, 580, 534, 556, 580, 0, 0, 0, 0, 0, 0, 0, 3211264, 0, 0, 0, + /* 35990 */ 2179072, 2179072, 2179072, 2179072, 2179072, 2125824, 2125824, 2125824, 2125824, 2125824, 0, 2125824, + /* 36002 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 36013 */ 2125824, 3117056, 2125824, 2125824, 2125824, 2125824, 590, 566, 566, 566, 566, 566, 566, 566, 590, 590, + /* 36029 */ 590, 543, 590, 590, 590, 590, 590, 590, 590, 566, 566, 543, 566, 590, 566, 590, 1, 12290, 556, 556, 1398, + /* 36050 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2853, 556, 0, 0, 730, 0, 0, 0, 0, 0, + /* 36074 */ 0, 0, 0, 0, 0, 0, 0, 0, 1126, 1127, 0, 534, 534, 534, 534, 2138, 534, 534, 534, 534, 534, 534, 534, 534, + /* 36098 */ 534, 534, 534, 534, 2784, 534, 534, 534, 556, 556, 556, 2223, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 36119 */ 556, 556, 556, 1849, 556, 556, 556, 580, 580, 580, 2310, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 36140 */ 580, 580, 1490, 580, 580, 580, 402, 0, 0, 0, 0, 380, 0, 69632, 73728, 0, 0, 0, 0, 425, 65536, 0, 0, 0, 0, + /* 36165 */ 364, 364, 1133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3133, 0, 0, 0, 3136, 0, 425, 425, 0, 425, 0, 439, 425, 425, + /* 36192 */ 462, 462, 462, 469, 462, 462, 462, 462, 462, 462, 462, 462, 469, 462, 462, 462, 462, 462, 462, 462, 462, + /* 36213 */ 476, 462, 488, 488, 462, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + /* 36234 */ 488, 488, 488, 488, 488, 488, 488, 531, 544, 567, 544, 567, 544, 544, 567, 544, 591, 567, 567, 567, 567, + /* 36255 */ 567, 567, 567, 591, 591, 591, 544, 591, 591, 591, 591, 591, 591, 591, 567, 567, 544, 567, 591, 567, 591, + /* 36276 */ 1, 12290, 0, 0, 0, 653, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2939, 0, 0, 2941, 0, 0, 0, 654, 0, 654, + /* 36305 */ 0, 0, 0, 0, 814, 0, 0, 0, 654, 0, 0, 0, 0, 374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 2130, 534, 534, 534, + /* 36335 */ 556, 919, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 957, 556, 556, 556, 556, 556, 556, 3545, 556, + /* 36356 */ 3546, 556, 556, 556, 556, 580, 580, 580, 580, 580, 580, 0, 0, 0, 534, 534, 534, 534, 534, 534, 556, 556, + /* 36378 */ 534, 534, 884, 534, 534, 556, 556, 957, 556, 556, 0, 580, 580, 1031, 580, 580, 580, 580, 580, 2907, 580, + /* 36399 */ 580, 534, 580, 556, 534, 534, 556, 556, 580, 580, 0, 0, 0, 0, 0, 0, 0, 3117, 0, 0, 0, 290, 1066, 0, 0, + /* 36424 */ 1069, 1073, 0, 0, 1077, 1081, 0, 0, 0, 0, 0, 0, 0, 1094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192965, 192965, + /* 36449 */ 192965, 192965, 192965, 192965, 192965, 192965, 0, 0, 0, 1088, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 36472 */ 131072, 131072, 0, 0, 0, 1130, 0, 0, 364, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3132, 0, 3254, 0, 0, 1089, + /* 36499 */ 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2093, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, + /* 36530 */ 1253, 534, 534, 534, 534, 534, 1303, 534, 534, 1305, 534, 534, 534, 1309, 534, 534, 534, 0, 901, 556, 556, + /* 36551 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3549, 580, 580, 580, 534, 534, 534, 534, 1287, 534, 534, + /* 36572 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2804, 534, 534, 2807, 534, 534, 1320, 534, 534, 534, + /* 36592 */ 534, 534, 534, 534, 534, 534, 534, 534, 1334, 534, 534, 534, 534, 534, 1323, 534, 534, 534, 534, 534, 534, + /* 36613 */ 534, 534, 534, 534, 534, 2509, 534, 534, 534, 534, 534, 534, 534, 1341, 901, 556, 1344, 556, 556, 556, + /* 36633 */ 556, 556, 556, 556, 556, 556, 2283, 556, 556, 556, 556, 556, 556, 556, 556, 1358, 1365, 556, 556, 556, + /* 36653 */ 556, 556, 556, 556, 556, 556, 1379, 556, 556, 0, 580, 580, 580, 985, 989, 992, 580, 1000, 580, 580, 580, + /* 36674 */ 1015, 1017, 556, 556, 556, 1399, 556, 556, 556, 556, 556, 556, 556, 1412, 556, 556, 556, 556, 556, 556, + /* 36694 */ 1858, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1402, 556, 556, 556, 556, 556, 556, 556, 1416, 556, + /* 36714 */ 1436, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1450, 1457, 580, 580, 580, 580, 580, 3069, + /* 36734 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1510, 580, 580, 580, 580, 580, 580, 1518, 580, 580, 580, + /* 36755 */ 580, 0, 1266, 1450, 1358, 534, 534, 1320, 534, 534, 556, 556, 556, 556, 556, 3354, 556, 556, 556, 556, + /* 36775 */ 556, 556, 3360, 556, 556, 556, 556, 556, 556, 2615, 0, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2626, + /* 36796 */ 580, 580, 580, 580, 580, 580, 556, 1412, 556, 556, 580, 580, 1504, 580, 580, 1066, 0, 0, 0, 0, 0, 0, 0, + /* 36819 */ 1107, 0, 0, 0, 0, 0, 0, 0, 0, 658, 0, 0, 661, 0, 0, 0, 0, 1570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 36851 */ 0, 1228, 1721, 1722, 534, 534, 534, 534, 1729, 534, 534, 534, 534, 534, 534, 534, 534, 534, 556, 3177, + /* 36871 */ 556, 556, 556, 3180, 556, 534, 1770, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 36892 */ 1311, 534, 556, 556, 1824, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3204, + /* 36912 */ 556, 556, 556, 1838, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3294, 556, 580, + /* 36933 */ 1987, 580, 580, 534, 580, 556, 534, 534, 534, 534, 556, 556, 556, 556, 580, 580, 580, 580, 0, 0, 0, 0, + /* 36955 */ 2694, 2029, 0, 2030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 1700, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 36985 */ 298, 0, 0, 0, 0, 0, 0, 534, 534, 2190, 534, 534, 534, 534, 534, 2195, 534, 534, 534, 534, 534, 534, 534, + /* 37008 */ 1326, 534, 534, 534, 534, 534, 534, 534, 534, 1291, 534, 534, 534, 534, 534, 534, 534, 556, 2276, 556, + /* 37028 */ 556, 556, 556, 556, 556, 2282, 556, 556, 556, 556, 556, 556, 556, 1810, 556, 556, 556, 556, 556, 556, 556, + /* 37049 */ 556, 3188, 556, 556, 556, 556, 556, 556, 556, 580, 2363, 580, 580, 580, 580, 580, 580, 2369, 580, 580, + /* 37069 */ 580, 580, 580, 580, 580, 2329, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3557, 0, 0, 0, 0, 534, 534, + /* 37091 */ 580, 580, 2634, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1948, 580, 580, 0, 0, 0, + /* 37113 */ 0, 2699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163840, 0, 0, 0, 534, 534, 534, 534, 534, 2778, 534, 534, + /* 37139 */ 534, 534, 534, 534, 534, 534, 534, 534, 1779, 534, 534, 534, 534, 534, 534, 2809, 534, 534, 0, 0, 556, + /* 37160 */ 556, 556, 556, 556, 556, 556, 556, 2817, 556, 556, 556, 556, 556, 3465, 556, 3467, 556, 556, 3469, 556, + /* 37180 */ 556, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3373, 580, 3375, 580, 556, 556, 556, 2858, 556, + /* 37200 */ 556, 0, 0, 580, 580, 580, 580, 580, 580, 580, 580, 1445, 580, 580, 580, 1454, 580, 580, 580, 2866, 580, + /* 37221 */ 580, 580, 580, 580, 580, 2874, 580, 580, 580, 580, 580, 580, 580, 580, 1473, 580, 580, 580, 580, 580, 580, + /* 37242 */ 580, 534, 2996, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1767, 1768, 3036, + /* 37262 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2275, 580, 3078, 580, 580, 580, + /* 37283 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1966, 580, 0, 0, 0, 0, 3130, 0, 0, 0, 0, 0, 0, 0, + /* 37308 */ 0, 0, 0, 0, 0, 167936, 0, 0, 0, 534, 534, 3174, 534, 534, 534, 534, 534, 534, 556, 556, 556, 556, 556, + /* 37331 */ 556, 556, 1828, 556, 556, 556, 556, 556, 556, 556, 556, 26009, 0, 580, 580, 580, 580, 580, 580, 0, 0, 0, + /* 37353 */ 0, 3535, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2991, 534, 534, 534, 3542, 556, 556, + /* 37374 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3550, 580, 580, 580, 580, 580, 3082, 580, 580, 3085, + /* 37394 */ 580, 580, 580, 580, 580, 580, 580, 1911, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3072, 580, 580, 580, + /* 37415 */ 580, 580, 580, 463, 463, 463, 447, 447, 463, 447, 447, 447, 447, 447, 447, 447, 447, 513, 513, 513, 513, + /* 37436 */ 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 545, 568, 545, 568, 545, 545, 568, 545, 592, + /* 37457 */ 568, 568, 568, 568, 568, 568, 568, 592, 592, 592, 545, 592, 592, 592, 592, 592, 592, 592, 568, 568, 545, + /* 37478 */ 568, 592, 568, 592, 1, 12290, 0, 0, 0, 655, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, + /* 37507 */ 0, 0, 0, 556, 920, 556, 556, 934, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2841, 556, 556, + /* 37529 */ 556, 556, 0, 0, 1160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1155, 0, 0, 0, 0, 0, 1177, 0, 0, 0, 0, 0, 0, + /* 37560 */ 0, 0, 0, 0, 0, 0, 0, 2461696, 0, 0, 0, 0, 0, 1232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2801664, 0, 0, + /* 37590 */ 534, 534, 534, 534, 1322, 534, 534, 534, 534, 534, 1329, 534, 534, 534, 534, 534, 534, 534, 2505, 534, + /* 37610 */ 2507, 534, 534, 534, 534, 534, 534, 534, 1793, 534, 534, 534, 534, 1341, 0, 556, 556, 556, 556, 1359, 556, + /* 37631 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 965, 556, 556, 556, 556, 556, 1421, 556, 556, + /* 37652 */ 556, 556, 556, 556, 556, 556, 26009, 1341, 975, 580, 580, 580, 580, 1974, 1975, 580, 580, 580, 580, 580, + /* 37672 */ 580, 580, 580, 580, 580, 2641, 580, 580, 580, 2644, 580, 556, 556, 1534, 556, 580, 580, 580, 1538, 580, + /* 37692 */ 1066, 0, 1542, 0, 0, 0, 1548, 0, 0, 0, 1554, 0, 0, 0, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2444, 0, 0, 0, + /* 37720 */ 2448, 0, 0, 1599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1569, 534, 534, 1723, 534, 534, 534, 534, + /* 37747 */ 534, 534, 534, 534, 534, 1734, 534, 534, 534, 534, 534, 534, 892, 534, 534, 534, 534, 556, 556, 556, 556, + /* 37768 */ 556, 0, 0, 2298, 0, 0, 0, 580, 580, 580, 580, 580, 580, 3480, 580, 580, 580, 580, 580, 580, 0, 0, 0, 534, + /* 37792 */ 3582, 534, 534, 534, 534, 556, 3586, 1754, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 37812 */ 534, 534, 534, 1316, 0, 2096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2108, 0, 534, 534, 534, 534, 2154, + /* 37839 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 3006, 534, 534, 534, 556, 556, 556, 2239, 556, + /* 37860 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1864, 556, 556, 1867, 580, 580, 580, 2326, 580, + /* 37880 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1512, 580, 580, 580, 556, 556, 3194, 556, 556, 556, + /* 37901 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1414, 556, 556, 0, 0, 3328, 3132, 0, 0, 0, 0, 0, 0, 0, + /* 37925 */ 0, 0, 534, 534, 534, 534, 534, 851, 534, 534, 534, 534, 534, 580, 580, 3379, 580, 580, 534, 556, 580, 0, + /* 37947 */ 0, 0, 3384, 0, 0, 0, 0, 0, 0, 306, 204800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 298, 0, 0, 0, 0, 0, 3132, 0, 0, + /* 37977 */ 0, 0, 534, 534, 534, 534, 3395, 534, 534, 534, 534, 534, 534, 534, 2156, 534, 2158, 534, 534, 534, 534, + /* 37998 */ 534, 534, 534, 2170, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2546, 534, 534, 534, 534, 0, 2549, 387, + /* 38019 */ 389, 339, 0, 0, 0, 0, 0, 0, 338, 0, 0, 339, 0, 0, 0, 0, 0, 0, 2023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 359, 0, + /* 38050 */ 0, 0, 0, 0, 0, 0, 0, 386, 0, 0, 0, 69632, 73728, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 393, 394, 0, 395, 0, 0, + /* 38079 */ 0, 0, 0, 395, 0, 0, 0, 0, 0, 1209, 0, 0, 0, 0, 1214, 0, 0, 0, 0, 0, 0, 0, 2405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 38111 */ 1094, 0, 0, 0, 0, 1099, 0, 0, 0, 338, 0, 0, 440, 0, 0, 464, 464, 464, 464, 464, 464, 464, 464, 546, 569, + /* 38136 */ 546, 569, 546, 546, 569, 546, 475, 464, 464, 464, 493, 470, 493, 493, 493, 493, 493, 493, 493, 493, 464, + /* 38157 */ 464, 470, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 474, 474, 464, 475, 464, 464, 464, 593, + /* 38178 */ 569, 569, 569, 569, 569, 569, 569, 593, 593, 593, 546, 593, 593, 593, 593, 593, 593, 593, 569, 569, 546, + /* 38199 */ 569, 593, 569, 593, 1, 12290, 0, 0, 0, 699, 0, 0, 0, 0, 0, 0, 0, 0, 708, 0, 710, 0, 0, 0, 0, 431, 0, 0, 0, + /* 38228 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1643, 0, 0, 0, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2411, 0, 0, + /* 38260 */ 759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 656, 0, 775, 0, 0, 0, 0, 0, 824, 0, 0, 0, 0, 0, 0, 779, 656, 0, 0, + /* 38291 */ 796, 0, 0, 0, 0, 699, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 0, 434, 0, 0, 331, 461, 461, 461, 461, 461, 461, + /* 38318 */ 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 796, 779, 0, 0, 801, 0, 660, 0, 775, 0, 0, 0, 0, 0, 0, + /* 38343 */ 0, 0, 2755, 0, 0, 0, 0, 0, 0, 0, 0, 2937, 0, 0, 0, 0, 0, 0, 0, 0, 2741, 0, 0, 0, 2745, 0, 2747, 0, 0, 0, + /* 38373 */ 775, 801, 0, 801, 796, 0, 0, 0, 815, 0, 0, 0, 656, 818, 828, 0, 0, 0, 0, 534, 832, 534, 534, 534, 848, + /* 38398 */ 534, 534, 862, 534, 534, 534, 534, 534, 534, 2504, 534, 534, 534, 534, 534, 534, 534, 534, 534, 898, 534, + /* 38419 */ 556, 556, 556, 556, 556, 534, 534, 875, 534, 534, 534, 534, 893, 534, 534, 534, 556, 556, 904, 556, 556, + /* 38440 */ 0, 580, 580, 976, 580, 580, 580, 580, 580, 580, 1007, 580, 580, 580, 580, 580, 1908, 580, 580, 580, 580, + /* 38461 */ 580, 580, 580, 580, 580, 1921, 556, 921, 556, 556, 935, 556, 556, 556, 556, 948, 556, 556, 556, 556, 966, + /* 38482 */ 556, 556, 556, 556, 580, 580, 580, 580, 580, 580, 0, 3594, 0, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 38504 */ 3156, 534, 534, 534, 534, 534, 534, 534, 2802, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1795, 534, + /* 38524 */ 534, 1341, 1800, 556, 556, 580, 1022, 580, 580, 580, 580, 1040, 580, 580, 580, 0, 0, 0, 534, 580, 556, + /* 38545 */ 556, 556, 556, 580, 580, 580, 580, 580, 580, 3428, 580, 580, 580, 580, 580, 534, 556, 580, 3381, 0, 3383, + /* 38566 */ 0, 0, 0, 0, 0, 0, 0, 2126, 0, 0, 0, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1717, 534, 534, 0, + /* 38591 */ 0, 1131, 0, 364, 364, 0, 1134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2481, 0, 0, 0, 0, 0, 0, 0, 1174, 0, 0, 0, 0, 0, + /* 38621 */ 0, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 111044, 111044, 111044, 111044, 111044, 111044, 111044, 111044, 1, 12290, + /* 38641 */ 1093, 0, 0, 0, 0, 0, 0, 1197, 0, 0, 0, 0, 1202, 0, 0, 0, 0, 0, 0, 2033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 38671 */ 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 1131, 0, 0, 1237, 0, 0, 0, 0, 0, + /* 38702 */ 0, 0, 0, 0, 2713, 0, 0, 0, 0, 0, 0, 1216, 0, 0, 0, 0, 1248, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 841, 534, + /* 38731 */ 534, 534, 534, 534, 534, 534, 556, 556, 1360, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 38752 */ 1382, 580, 580, 1497, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2334, 580, 580, + /* 38772 */ 556, 1533, 556, 556, 580, 580, 1537, 580, 580, 1066, 0, 0, 0, 0, 0, 0, 0, 1121, 0, 0, 1124, 1125, 0, 0, 0, + /* 38797 */ 0, 1584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 1602, 0, 0, 1605, 0, 1607, 0, 0, 0, + /* 38827 */ 0, 0, 0, 0, 0, 122880, 0, 122880, 122880, 122880, 122880, 122880, 0, 0, 1697, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 38851 */ 0, 0, 0, 0, 0, 2423, 0, 534, 1755, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 38874 */ 2162, 534, 556, 1822, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3049, + /* 38894 */ 556, 556, 556, 556, 2265, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3031, 556, 556, 556, 556, + /* 38915 */ 0, 0, 0, 0, 2402, 0, 2404, 0, 0, 2407, 0, 0, 0, 0, 0, 0, 0, 1165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 750, 0, 0, 0, + /* 38946 */ 0, 0, 0, 2412, 0, 0, 0, 2415, 2416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106496, 0, 0, 0, 0, 0, 0, 0, 0, 2426, + /* 38976 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2912256, 0, 3207168, 0, 0, 0, 0, 2440, 0, 2441, 0, 0, 0, 0, 0, 0, + /* 39005 */ 0, 0, 0, 0, 2470, 0, 0, 0, 0, 0, 2461, 0, 0, 0, 0, 0, 0, 0, 0, 2469, 0, 0, 0, 0, 0, 2475, 0, 0, 0, 0, + /* 39035 */ 2478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2486, 0, 0, 0, 0, 435, 0, 0, 447, 463, 463, 463, 463, 463, 463, 463, 463, + /* 39062 */ 463, 473, 463, 463, 463, 463, 463, 463, 534, 2500, 2501, 534, 534, 534, 534, 534, 2506, 534, 2508, 534, + /* 39082 */ 534, 534, 534, 2512, 2525, 534, 534, 534, 534, 534, 534, 2533, 534, 534, 534, 534, 2537, 534, 534, 534, + /* 39102 */ 534, 534, 534, 1262, 534, 534, 534, 534, 534, 534, 1277, 534, 534, 556, 556, 556, 2561, 556, 556, 2564, + /* 39122 */ 2565, 556, 556, 556, 556, 556, 2570, 556, 2572, 556, 556, 556, 556, 2576, 556, 556, 556, 556, 556, 556, + /* 39142 */ 556, 556, 2582, 556, 556, 0, 580, 580, 977, 580, 580, 580, 993, 580, 580, 580, 580, 580, 580, 1443, 580, + /* 39163 */ 580, 580, 1447, 580, 580, 1458, 580, 580, 556, 556, 2602, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 39183 */ 556, 556, 556, 556, 1833, 556, 556, 2685, 534, 534, 556, 2687, 556, 556, 580, 2689, 580, 580, 0, 0, 0, 0, + /* 39205 */ 0, 0, 0, 2936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2036, 0, 0, 0, 0, 0, 0, 0, 0, 2708, 0, 0, 0, 0, 0, 0, 0, 2714, + /* 39236 */ 2715, 2716, 0, 0, 0, 0, 0, 0, 2060, 0, 0, 0, 0, 0, 2064, 0, 0, 2066, 0, 2735, 0, 2737, 0, 0, 0, 2740, 0, + /* 39263 */ 0, 2743, 0, 0, 0, 0, 0, 0, 0, 2960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2430, 0, 0, 0, 0, 0, 2435, 534, 534, 2810, + /* 39292 */ 534, 0, 0, 2811, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2566, 556, 556, 556, 556, 556, 556, 556, + /* 39313 */ 2856, 556, 556, 2859, 556, 0, 0, 2860, 580, 580, 580, 580, 580, 580, 580, 2651, 580, 580, 580, 580, 580, + /* 39334 */ 580, 2658, 580, 580, 2892, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2321, + /* 39354 */ 580, 2902, 580, 580, 2905, 580, 580, 2908, 580, 2909, 2910, 2911, 534, 534, 556, 556, 580, 580, 0, 0, 0, + /* 39375 */ 0, 0, 3115, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 0, 0, 0, 420, 0, 65536, 0, 2929, 2930, 0, 0, 0, 0, 2935, 0, + /* 39402 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2730, 0, 0, 0, 0, 0, 534, 534, 2997, 534, 2999, 534, 534, 534, 534, 534, 534, + /* 39428 */ 3005, 534, 534, 3007, 534, 534, 534, 534, 534, 1324, 534, 534, 534, 534, 534, 534, 534, 534, 1335, 1336, + /* 39448 */ 556, 3037, 556, 3039, 556, 556, 556, 556, 556, 556, 556, 3046, 556, 556, 3048, 556, 556, 556, 556, 580, + /* 39468 */ 580, 580, 580, 580, 1066, 0, 0, 0, 0, 0, 0, 0, 377, 0, 380, 0, 0, 0, 380, 0, 0, 580, 580, 3079, 580, 3081, + /* 39494 */ 580, 580, 580, 580, 580, 580, 580, 3088, 580, 580, 3090, 534, 534, 534, 534, 534, 3164, 534, 534, 534, + /* 39514 */ 534, 534, 534, 534, 3169, 534, 534, 534, 534, 534, 534, 2779, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 39535 */ 534, 3167, 534, 534, 534, 534, 534, 3181, 3182, 556, 556, 556, 556, 3186, 3187, 556, 556, 556, 556, 556, + /* 39555 */ 3191, 556, 556, 0, 580, 580, 978, 580, 580, 580, 995, 580, 580, 1009, 580, 580, 580, 580, 580, 2353, 2354, + /* 39576 */ 580, 580, 580, 580, 580, 580, 2361, 580, 580, 556, 556, 556, 580, 580, 580, 580, 580, 580, 580, 3210, + /* 39596 */ 3211, 580, 580, 580, 580, 580, 1442, 580, 580, 580, 580, 1448, 580, 580, 580, 580, 580, 580, 3524, 580, + /* 39616 */ 3526, 580, 580, 580, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 3215, 3216, 580, 580, 580, 580, 580, + /* 39640 */ 3220, 580, 580, 580, 580, 580, 580, 580, 580, 1507, 580, 580, 580, 580, 580, 580, 580, 3226, 580, 580, + /* 39660 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 534, 580, 556, 2684, 556, 556, 556, 3288, 556, 556, 556, + /* 39681 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 2258, 556, 556, 556, 3307, 580, 580, 580, 580, 580, 580, 580, + /* 39702 */ 580, 580, 580, 580, 580, 580, 580, 580, 2347, 2348, 3132, 0, 0, 0, 0, 534, 534, 3393, 534, 534, 534, 534, + /* 39724 */ 3398, 534, 534, 534, 534, 534, 534, 1290, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1267, 534, 534, + /* 39744 */ 534, 534, 534, 534, 534, 3403, 534, 534, 556, 556, 3408, 556, 556, 556, 556, 3413, 556, 556, 556, 556, + /* 39764 */ 556, 556, 1874, 556, 556, 556, 556, 556, 1881, 556, 556, 556, 3418, 556, 556, 556, 580, 580, 3424, 580, + /* 39784 */ 580, 580, 580, 3429, 580, 580, 580, 580, 580, 1468, 580, 580, 580, 580, 580, 580, 580, 1476, 580, 580, + /* 39804 */ 3434, 580, 580, 580, 0, 0, 0, 0, 0, 3441, 0, 0, 0, 0, 534, 534, 534, 534, 3497, 534, 534, 534, 534, 534, + /* 39828 */ 534, 534, 534, 1731, 534, 534, 534, 534, 1735, 534, 534, 534, 3563, 3564, 534, 534, 556, 556, 556, 3569, + /* 39848 */ 3570, 556, 556, 556, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3212, 580, 580, 580, 3575, 3576, 580, + /* 39868 */ 580, 580, 0, 0, 0, 534, 534, 534, 534, 534, 534, 556, 556, 0, 580, 580, 979, 580, 580, 580, 580, 580, 580, + /* 39891 */ 580, 580, 580, 580, 2358, 580, 580, 580, 580, 580, 341, 342, 343, 344, 345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 39916 */ 0, 0, 221184, 0, 0, 0, 0, 0, 0, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 302, 0, 0, 0, 344, 344, 345, 344, + /* 39946 */ 0, 343, 344, 448, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, + /* 39967 */ 465, 480, 489, 489, 497, 489, 499, 489, 489, 499, 499, 489, 499, 514, 514, 514, 514, 514, 514, 514, 514, + /* 39988 */ 514, 514, 514, 514, 514, 514, 514, 514, 547, 570, 547, 570, 547, 547, 570, 547, 594, 570, 570, 570, 570, + /* 40009 */ 570, 570, 570, 594, 594, 594, 547, 594, 594, 594, 594, 594, 594, 594, 570, 570, 547, 570, 594, 570, 594, + /* 40030 */ 1, 12290, 650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 665, 666, 0, 668, 669, 0, 0, 0, 0, 0, 675, 0, 0, + /* 40060 */ 0, 0, 0, 0, 0, 1220, 1250, 1251, 0, 1220, 0, 534, 534, 534, 0, 0, 0, 685, 0, 0, 0, 0, 0, 0, 692, 364, 364, + /* 40087 */ 364, 0, 0, 0, 0, 0, 687, 0, 0, 0, 0, 0, 364, 364, 364, 0, 0, 0, 0, 0, 734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 40118 */ 0, 1691, 0, 0, 0, 0, 712, 0, 714, 0, 716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 726, 0, 0, 0, 0, 436, 0, 0, 0, 0, 0, + /* 40149 */ 0, 0, 0, 0, 0, 0, 0, 2138112, 0, 0, 0, 0, 0, 0, 639, 745, 746, 747, 0, 0, 0, 0, 0, 753, 754, 0, 0, 0, 0, + /* 40178 */ 0, 748, 0, 0, 803, 0, 0, 0, 0, 0, 0, 0, 0, 1134592, 0, 0, 1134592, 0, 0, 0, 0, 0, 685, 0, 0, 665, 0, 685, + /* 40206 */ 0, 797, 668, 716, 0, 685, 798, 0, 0, 0, 0, 0, 1090, 1091, 1092, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 2948, 0, 0, + /* 40233 */ 0, 0, 0, 2951, 0, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 747, 807, 808, 0, 0, 0, 0, 0, 1119, 0, 0, 0, 0, 0, 0, + /* 40264 */ 0, 0, 0, 0, 0, 3055616, 0, 0, 0, 3133440, 0, 0, 0, 0, 747, 0, 0, 812, 692, 0, 0, 0, 817, 0, 0, 0, 0, 0, 0, + /* 40293 */ 2073, 0, 2075, 0, 0, 0, 0, 0, 0, 0, 0, 1702, 0, 0, 1703, 0, 0, 1704, 0, 819, 0, 0, 0, 685, 692, 0, 0, 685, + /* 40321 */ 817, 817, 0, 0, 0, 0, 0, 0, 0, 3131, 0, 0, 0, 0, 0, 0, 0, 0, 749, 0, 0, 0, 0, 0, 0, 756, 870, 873, 534, + /* 40350 */ 534, 534, 885, 889, 534, 534, 534, 534, 556, 556, 556, 911, 915, 918, 556, 926, 556, 556, 556, 941, 943, + /* 40371 */ 946, 556, 556, 556, 958, 962, 556, 556, 0, 580, 580, 980, 986, 580, 580, 580, 580, 1004, 580, 580, 580, + /* 40392 */ 580, 580, 1469, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2627, 580, 580, 2630, 2631, 580, 1020, + /* 40412 */ 580, 580, 580, 1032, 1036, 580, 580, 580, 580, 0, 0, 0, 1048, 1049, 1050, 838, 534, 885, 889, 1055, 911, + /* 40433 */ 556, 958, 962, 1060, 0, 985, 580, 1032, 1036, 1065, 1101, 0, 0, 0, 0, 1105, 0, 0, 1108, 0, 0, 0, 0, 0, 0, + /* 40458 */ 0, 0, 249856, 249856, 249856, 249856, 249856, 249856, 249856, 249856, 1, 12290, 1298, 534, 534, 1302, 534, + /* 40475 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 1312, 534, 534, 534, 534, 534, 1727, 534, 534, 534, 534, 534, + /* 40496 */ 534, 534, 534, 534, 534, 1796, 534, 1341, 0, 556, 556, 534, 1319, 534, 534, 534, 534, 534, 534, 534, 534, + /* 40517 */ 534, 534, 1332, 534, 534, 534, 534, 534, 534, 1304, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1266, + /* 40537 */ 1273, 534, 534, 534, 534, 534, 556, 1383, 556, 556, 556, 556, 556, 556, 556, 1390, 556, 556, 1394, 556, + /* 40557 */ 556, 556, 556, 556, 1385, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2595, 556, 556, 556, 556, 556, + /* 40578 */ 580, 580, 580, 1482, 580, 580, 1486, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1929, 580, 580, 580, + /* 40598 */ 580, 580, 580, 580, 1496, 580, 580, 1503, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1516, 1615, 0, + /* 40619 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1655, 0, 0, 0, 1647, 0, 1649, 0, 0, 0, 1651, 0, 741, 0, 0, 0, 0, + /* 40650 */ 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 69632, 73728, 0, 418, 418, 0, 0, 65536, 418, 0, 0, 0, 534, + /* 40676 */ 1709, 534, 534, 534, 534, 534, 534, 1715, 534, 534, 534, 534, 0, 0, 556, 2812, 556, 556, 556, 556, 556, + /* 40697 */ 556, 556, 556, 3356, 556, 556, 556, 556, 556, 556, 556, 534, 534, 1787, 534, 534, 534, 534, 534, 534, 534, + /* 40718 */ 534, 534, 1341, 0, 556, 1803, 556, 556, 556, 556, 1839, 556, 556, 556, 1843, 556, 556, 1848, 556, 556, + /* 40738 */ 556, 556, 556, 556, 1892, 556, 26009, 0, 580, 580, 580, 580, 580, 580, 0, 1269, 1453, 1361, 534, 534, 534, + /* 40759 */ 534, 534, 556, 580, 580, 580, 1906, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1917, 580, + /* 40780 */ 580, 580, 1935, 580, 580, 580, 1939, 580, 580, 1944, 580, 580, 580, 580, 580, 580, 580, 580, 1945, 580, + /* 40800 */ 580, 580, 580, 580, 580, 580, 0, 0, 2010, 0, 1077, 0, 0, 0, 2012, 0, 1081, 0, 0, 0, 0, 0, 0, 0, 3144, 0, + /* 40826 */ 0, 0, 0, 0, 0, 3147, 0, 534, 534, 534, 2177, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 40849 */ 1341, 1800, 556, 556, 556, 556, 2263, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 40869 */ 1850, 556, 556, 580, 580, 2350, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2346, + /* 40889 */ 580, 580, 0, 2550, 0, 1800, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2569, 556, 2571, + /* 40910 */ 556, 556, 2613, 556, 556, 556, 0, 0, 0, 2616, 0, 1896, 580, 580, 580, 580, 580, 580, 3219, 580, 580, 580, + /* 40932 */ 580, 580, 580, 580, 580, 3225, 0, 0, 2761, 0, 0, 0, 534, 2765, 534, 534, 534, 534, 534, 534, 534, 534, + /* 40954 */ 534, 3166, 534, 534, 534, 534, 534, 3171, 534, 534, 2789, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 40974 */ 534, 534, 534, 534, 1295, 534, 534, 556, 556, 2836, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 40995 */ 556, 556, 1865, 556, 556, 534, 534, 2985, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 41016 */ 1310, 534, 534, 534, 534, 534, 2998, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1341, + /* 41036 */ 1801, 556, 556, 556, 3025, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 41056 */ 3205, 556, 556, 3038, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2247, 556, 556, + /* 41076 */ 580, 580, 3067, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2643, 580, 580, 580, 580, + /* 41097 */ 580, 3080, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2345, 580, 580, 580, 534, 534, 534, + /* 41118 */ 534, 534, 3267, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2159, 534, 534, 534, 534, 2163, 3285, + /* 41138 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2289, 3336, 534, 534, 534, 534, + /* 41159 */ 3340, 534, 534, 534, 534, 534, 3346, 534, 534, 534, 556, 556, 556, 556, 580, 580, 580, 580, 580, 1066, 0, + /* 41180 */ 0, 0, 1545, 0, 0, 0, 0, 0, 1620, 0, 0, 1623, 0, 1625, 0, 0, 0, 0, 0, 0, 0, 2480, 0, 0, 0, 0, 0, 0, 0, 0, + /* 41210 */ 555, 578, 555, 578, 555, 555, 578, 555, 556, 556, 3351, 556, 556, 556, 556, 3355, 556, 556, 556, 556, 556, + /* 41231 */ 3361, 556, 556, 0, 580, 580, 981, 580, 580, 580, 580, 580, 580, 1010, 1012, 580, 580, 580, 580, 1029, 580, + /* 41252 */ 580, 580, 580, 580, 0, 0, 0, 534, 580, 556, 3377, 580, 580, 580, 580, 534, 556, 580, 0, 0, 0, 0, 0, 0, 0, + /* 41277 */ 0, 0, 3251, 0, 3132, 3253, 0, 0, 3256, 3132, 0, 0, 0, 0, 534, 534, 534, 534, 534, 3396, 534, 534, 534, + /* 41300 */ 3400, 534, 534, 534, 534, 534, 1742, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2536, 534, 534, + /* 41320 */ 534, 534, 534, 388, 0, 0, 0, 392, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233472, 0, 0, 0, 0, 0, 0, 0, 404, + /* 41349 */ 0, 346, 0, 69632, 73728, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 636, 0, + /* 41378 */ 0, 0, 0, 515, 515, 515, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 515, 515, 515, 515, 515, 515, 515, 515, 548, 571, + /* 41404 */ 548, 571, 548, 548, 571, 548, 595, 571, 571, 571, 571, 571, 571, 571, 595, 595, 595, 548, 595, 595, 595, + /* 41425 */ 595, 595, 595, 595, 571, 571, 610, 615, 595, 615, 621, 1, 12290, 0, 0, 744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 41451 */ 0, 0, 0, 0, 0, 1668, 534, 534, 876, 534, 534, 534, 534, 894, 534, 534, 534, 556, 556, 905, 556, 556, 0, + /* 41474 */ 580, 580, 982, 580, 580, 580, 580, 1001, 1005, 1011, 580, 1016, 580, 580, 1023, 580, 580, 580, 580, 1041, + /* 41494 */ 580, 580, 580, 0, 0, 0, 534, 580, 556, 556, 556, 556, 580, 580, 580, 580, 580, 1066, 0, 0, 1544, 0, 0, 0, + /* 41518 */ 0, 0, 0, 2764, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1268, 534, 534, 534, 534, 534, 534, 0, 0, 0, + /* 41541 */ 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1173, 0, 0, 0, 1178, 0, 0, 0, 0, 1094, 0, 0, 0, 0, 0, 0, 0, 0, + /* 41571 */ 274432, 274432, 274432, 0, 274432, 274432, 274432, 274432, 1256, 534, 534, 534, 534, 534, 534, 534, 534, + /* 41588 */ 1269, 534, 534, 534, 534, 1279, 534, 534, 534, 534, 534, 1757, 534, 534, 534, 534, 534, 534, 534, 534, + /* 41608 */ 534, 534, 2197, 534, 534, 534, 534, 534, 534, 534, 534, 1341, 901, 556, 556, 556, 1347, 556, 556, 556, + /* 41628 */ 556, 556, 556, 556, 1877, 556, 556, 556, 556, 556, 556, 556, 556, 26009, 0, 580, 1899, 580, 580, 580, 580, + /* 41649 */ 556, 556, 1361, 556, 556, 556, 556, 1371, 556, 556, 556, 556, 556, 556, 556, 556, 3468, 556, 556, 3470, + /* 41669 */ 556, 580, 580, 580, 556, 556, 556, 556, 1422, 556, 556, 556, 556, 556, 556, 556, 26009, 1341, 975, 580, + /* 41689 */ 580, 580, 580, 1990, 1991, 1992, 534, 1994, 534, 534, 556, 1998, 556, 556, 580, 580, 580, 3367, 580, 580, + /* 41709 */ 580, 580, 3371, 580, 580, 580, 580, 580, 580, 3232, 580, 580, 580, 580, 580, 580, 534, 580, 556, 2384, + /* 41729 */ 534, 534, 534, 2388, 556, 556, 556, 580, 580, 1439, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1453, + /* 41749 */ 580, 580, 580, 580, 580, 2381, 2382, 2383, 534, 534, 534, 534, 556, 556, 556, 556, 3410, 556, 556, 556, + /* 41769 */ 556, 556, 556, 556, 580, 1463, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1477, 580, + /* 41790 */ 580, 1498, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1514, 580, 580, 580, 580, 2005, 0, 2007, + /* 41811 */ 0, 2009, 0, 2011, 0, 0, 0, 0, 0, 0, 0, 2034, 2035, 0, 2037, 2038, 0, 0, 0, 0, 0, 0, 0, 1555, 0, 0, 0, + /* 41838 */ 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286720, 286720, 0, 286720, 286720, 1, 12290, 0, 0, 0, 1586, 0, 0, 0, 0, + /* 41863 */ 0, 0, 0, 0, 0, 0, 0, 0, 303, 0, 0, 0, 0, 1600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2434, 0, 556, + /* 41894 */ 1852, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3363, 0, 1556, 0, 0, 0, + /* 41916 */ 0, 0, 1562, 0, 0, 0, 0, 0, 0, 0, 0, 305, 204800, 204800, 0, 205105, 204800, 1, 12290, 0, 0, 0, 2070, 0, 0, + /* 41941 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, 0, 2111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1188, 0, 0, + /* 41974 */ 534, 2165, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2173, 534, 2250, 556, + /* 41994 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2584, 2337, 580, 580, 580, 580, 580, + /* 42015 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2375, 580, 2211, 0, 0, 0, 556, 556, 556, 556, 556, 556, + /* 42037 */ 556, 556, 556, 556, 556, 556, 2597, 556, 556, 556, 556, 556, 556, 2588, 556, 556, 556, 556, 556, 556, 556, + /* 42058 */ 556, 556, 556, 556, 556, 2831, 556, 556, 556, 534, 3107, 556, 3109, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 42083 */ 0, 2138112, 1170, 0, 0, 0, 0, 0, 3132, 3330, 0, 0, 3332, 0, 0, 0, 0, 0, 534, 3335, 534, 534, 534, 534, + /* 42107 */ 534, 1774, 534, 534, 534, 1778, 534, 534, 534, 534, 534, 534, 534, 1776, 534, 534, 534, 534, 534, 534, + /* 42127 */ 534, 534, 534, 2535, 534, 534, 534, 534, 534, 534, 534, 3337, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 42148 */ 534, 534, 534, 534, 556, 556, 556, 556, 556, 556, 556, 556, 3350, 556, 556, 3352, 556, 556, 556, 556, 556, + /* 42169 */ 556, 556, 556, 556, 556, 556, 556, 2852, 556, 556, 556, 556, 556, 580, 3366, 580, 580, 3368, 580, 580, + /* 42189 */ 580, 580, 580, 580, 580, 580, 580, 1946, 580, 580, 580, 580, 580, 580, 3132, 0, 3388, 0, 3390, 534, 534, + /* 42210 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 556, 556, 902, 556, 556, 0, 0, 0, 783, 0, 783, 0, 0, 0, 0, 0, + /* 42235 */ 0, 0, 0, 783, 0, 0, 0, 0, 556, 556, 556, 556, 556, 556, 556, 556, 2557, 556, 556, 556, 556, 556, 556, + /* 42258 */ 2848, 556, 556, 556, 556, 556, 556, 556, 556, 556, 947, 556, 556, 556, 556, 556, 556, 556, 922, 556, 556, + /* 42279 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1381, 556, 556, 972, 0, 580, 580, 580, 580, + /* 42300 */ 580, 580, 996, 580, 580, 580, 580, 580, 580, 1910, 580, 580, 580, 580, 1916, 580, 580, 580, 580, 78114, + /* 42320 */ 1066, 0, 0, 1070, 1074, 0, 0, 1078, 1082, 0, 0, 0, 0, 0, 0, 0, 1222, 0, 0, 0, 0, 1225, 0, 1181, 0, 534, + /* 42346 */ 3162, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2201, 534, 580, 580, 580, + /* 42366 */ 3218, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2629, 580, 580, 580, 347, 347, 349, 347, + /* 42387 */ 0, 0, 347, 347, 0, 0, 0, 0, 348, 0, 0, 0, 0, 0, 0, 2125, 0, 0, 2128, 0, 534, 534, 2131, 534, 534, 0, 0, 0, + /* 42415 */ 347, 347, 349, 347, 347, 347, 347, 347, 347, 506, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + /* 42436 */ 347, 347, 347, 347, 347, 549, 572, 549, 572, 549, 549, 572, 549, 596, 572, 572, 572, 572, 572, 572, 572, + /* 42457 */ 596, 596, 596, 549, 596, 596, 596, 596, 596, 596, 596, 572, 572, 549, 572, 596, 572, 596, 1, 12290, 0, 0, + /* 42479 */ 0, 715, 0, 717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1147348, 0, 0, 0, 0, 0, 0, 0, 732, 0, 0, 0, 0, 0, 0, 0, + /* 42510 */ 0, 0, 0, 0, 0, 353, 354, 355, 356, 758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 673, 674, 0, 0, 0, 0, 0, + /* 42541 */ 0, 0, 794, 795, 0, 0, 0, 0, 795, 0, 0, 0, 0, 0, 795, 0, 0, 794, 809, 0, 803, 0, 657, 0, 0, 0, 0, 0, 0, 0, + /* 42571 */ 0, 0, 0, 0, 0, 3117056, 0, 0, 0, 0, 820, 0, 0, 0, 0, 0, 0, 795, 0, 0, 0, 0, 0, 0, 0, 0, 1159168, 364, 0, + /* 42600 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 795, 534, 534, 839, 534, 534, 534, 534, 857, 534, 534, 534, 534, 534, 534, + /* 42624 */ 1728, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 3272, 534, 534, 534, 3273, 3274, 534, 534, 877, + /* 42644 */ 879, 534, 534, 890, 534, 534, 534, 534, 556, 556, 906, 912, 556, 556, 556, 556, 580, 580, 580, 580, 580, + /* 42665 */ 1066, 0, 1543, 0, 0, 0, 1549, 556, 556, 556, 930, 556, 556, 556, 556, 556, 950, 952, 556, 556, 963, 556, + /* 42687 */ 556, 556, 556, 556, 1840, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1831, 556, 556, 556, 556, + /* 42707 */ 1835, 580, 1024, 1026, 580, 580, 1037, 580, 580, 580, 580, 0, 0, 0, 534, 580, 556, 556, 556, 556, 580, + /* 42728 */ 580, 580, 580, 580, 1066, 1540, 0, 0, 0, 1546, 0, 0, 0, 0, 0, 131072, 0, 131072, 131072, 131072, 131072, + /* 42749 */ 0, 131072, 131072, 131072, 131072, 131072, 131072, 0, 0, 0, 0, 0, 131072, 0, 131072, 1, 12290, 839, 879, + /* 42768 */ 534, 890, 534, 912, 952, 556, 963, 556, 0, 986, 1026, 580, 1037, 580, 580, 580, 580, 2005, 0, 2007, 0, + /* 42789 */ 2009, 0, 2011, 0, 0, 2397, 0, 0, 0, 0, 0, 330, 331, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2083, 0, 0, 0, 0, 0, + /* 42818 */ 0, 0, 0, 0, 0, 0, 0, 2731, 0, 0, 0, 0, 0, 0, 1132, 364, 364, 0, 0, 1135, 0, 0, 0, 1138, 0, 1140, 0, 0, 0, + /* 42847 */ 0, 556, 556, 556, 556, 556, 556, 556, 2556, 556, 556, 556, 556, 556, 556, 2577, 556, 556, 556, 556, 556, + /* 42868 */ 556, 556, 556, 556, 26009, 1897, 580, 580, 580, 580, 580, 580, 1142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 42893 */ 0, 1156, 0, 0, 0, 0, 556, 556, 556, 556, 556, 556, 2555, 556, 556, 556, 556, 2559, 1158, 0, 0, 0, 0, 1163, + /* 42917 */ 0, 0, 0, 0, 1168, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 0, 1247, 0, 0, 0, + /* 42946 */ 0, 0, 0, 0, 1168, 534, 534, 534, 534, 534, 534, 1743, 534, 534, 534, 534, 534, 534, 534, 534, 534, 897, + /* 42968 */ 534, 556, 556, 556, 556, 914, 534, 534, 534, 1286, 1288, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 42989 */ 534, 556, 556, 907, 556, 556, 534, 534, 534, 1341, 901, 556, 556, 556, 556, 1348, 556, 556, 556, 556, 556, + /* 43010 */ 556, 0, 2298, 580, 580, 580, 580, 580, 580, 580, 580, 2640, 580, 580, 580, 580, 580, 580, 2645, 580, 580, + /* 43031 */ 580, 1440, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2670, 2671, 580, 580, 1494, 580, + /* 43051 */ 580, 580, 580, 580, 580, 580, 1508, 580, 580, 580, 580, 580, 580, 580, 2678, 580, 580, 580, 580, 534, 580, + /* 43072 */ 556, 534, 534, 534, 1996, 556, 556, 556, 2000, 580, 580, 1519, 1520, 580, 580, 580, 0, 534, 580, 556, 534, + /* 43093 */ 1528, 534, 534, 1531, 556, 556, 556, 556, 580, 580, 580, 580, 580, 1066, 1541, 0, 0, 0, 1547, 0, 0, 0, 0, + /* 43116 */ 556, 556, 556, 2553, 556, 2554, 556, 556, 556, 556, 556, 556, 0, 0, 580, 580, 580, 580, 2863, 580, 580, + /* 43137 */ 580, 1532, 556, 556, 1535, 580, 1536, 580, 580, 1539, 1066, 0, 0, 0, 0, 0, 0, 0, 1577, 0, 0, 0, 0, 0, 0, + /* 43162 */ 0, 0, 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1203, 0, 0, 0, 0, 1633, + /* 43194 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1217, 0, 0, 0, 0, 0, 0, 1658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, + /* 43227 */ 364, 364, 0, 0, 0, 0, 1698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1226, 0, 0, 534, 1738, 534, 534, 534, + /* 43255 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2207, 2549, 534, 534, 534, 1788, 534, 534, 534, + /* 43275 */ 534, 1794, 534, 534, 534, 1341, 0, 556, 556, 556, 556, 556, 1891, 556, 556, 26009, 1896, 580, 580, 580, + /* 43295 */ 580, 580, 580, 1470, 1472, 580, 580, 580, 580, 580, 580, 580, 580, 1960, 580, 580, 1963, 580, 580, 580, + /* 43315 */ 580, 556, 556, 1870, 556, 556, 556, 1875, 556, 556, 556, 556, 556, 556, 556, 556, 1884, 556, 556, 556, + /* 43335 */ 556, 1890, 556, 556, 556, 26009, 0, 580, 580, 580, 580, 580, 580, 1927, 580, 580, 580, 580, 1931, 580, + /* 43355 */ 580, 580, 580, 580, 1904, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2672, 580, + /* 43376 */ 580, 580, 1971, 580, 580, 580, 580, 580, 580, 580, 580, 1980, 580, 580, 580, 580, 580, 1504, 580, 580, + /* 43396 */ 580, 580, 580, 580, 580, 580, 580, 580, 2316, 580, 580, 2320, 580, 580, 1986, 580, 580, 580, 534, 580, + /* 43416 */ 556, 534, 534, 534, 534, 556, 556, 556, 556, 580, 580, 580, 580, 0, 0, 0, 2693, 0, 0, 0, 0, 0, 2099, 0, + /* 43440 */ 2101, 2102, 2103, 0, 2105, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 0, 0, 0, 0, 424, 65536, 0, 0, 0, 0, 2123, 0, + /* 43466 */ 0, 0, 0, 0, 0, 0, 2129, 534, 534, 534, 534, 0, 2211, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 43489 */ 3045, 556, 556, 556, 556, 556, 534, 534, 2136, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 43510 */ 534, 1333, 534, 534, 534, 534, 534, 2166, 534, 2168, 534, 2171, 534, 534, 534, 534, 534, 534, 534, 534, + /* 43530 */ 534, 3271, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2178, 534, 534, 534, 534, 534, 2184, 534, + /* 43550 */ 534, 534, 534, 534, 534, 534, 2792, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2519, 534, 534, 534, 534, + /* 43571 */ 534, 534, 534, 534, 534, 534, 2206, 0, 0, 0, 0, 2213, 556, 556, 556, 556, 556, 556, 939, 556, 944, 556, + /* 43593 */ 951, 556, 954, 556, 556, 968, 556, 2221, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 43614 */ 556, 1415, 556, 556, 556, 2251, 556, 2253, 556, 2256, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2607, + /* 43634 */ 556, 556, 556, 2610, 556, 556, 556, 556, 556, 2264, 556, 556, 556, 556, 556, 2270, 556, 556, 556, 556, + /* 43654 */ 556, 556, 1369, 556, 556, 556, 1374, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2293, 0, 0, 0, 0, 2300, + /* 43676 */ 580, 580, 580, 580, 580, 580, 1942, 580, 580, 580, 1947, 580, 580, 580, 580, 580, 580, 2308, 580, 580, + /* 43696 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2880, 580, 580, 580, 2338, 580, 2340, 580, + /* 43716 */ 2343, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1961, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 43736 */ 2351, 580, 580, 580, 580, 580, 2357, 580, 580, 580, 580, 580, 580, 1958, 1959, 580, 580, 580, 580, 580, + /* 43756 */ 580, 580, 580, 580, 3234, 580, 580, 580, 534, 580, 556, 0, 0, 2400, 2401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 43782 */ 0, 399, 0, 0, 0, 2436, 0, 0, 2439, 0, 0, 0, 0, 2443, 0, 0, 0, 0, 0, 0, 0, 0, 2818048, 2846720, 0, 2916352, + /* 43808 */ 0, 0, 3002368, 0, 0, 0, 2451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2459, 0, 0, 0, 0, 556, 556, 2552, 556, 556, + /* 43836 */ 556, 556, 556, 556, 556, 556, 556, 2851, 556, 556, 556, 556, 556, 556, 0, 0, 0, 2477, 0, 0, 0, 0, 0, 0, 0, + /* 43861 */ 0, 0, 2485, 0, 0, 0, 0, 0, 1195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111044, 0, 0, 0, 0, 534, 534, 534, 534, + /* 43890 */ 534, 2503, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2520, 534, 534, 534, 534, 534, 556, 556, 556, + /* 43911 */ 556, 2562, 556, 556, 556, 556, 556, 2567, 556, 556, 556, 556, 556, 0, 0, 0, 0, 580, 580, 580, 580, 2304, + /* 43933 */ 580, 580, 580, 2633, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2901, 580, 534, + /* 43954 */ 534, 534, 2686, 556, 556, 556, 2688, 580, 580, 580, 2690, 2691, 0, 0, 0, 0, 0, 0, 2453, 0, 0, 0, 0, 0, 0, + /* 43979 */ 0, 0, 0, 0, 1185, 0, 0, 0, 0, 0, 0, 0, 0, 2709, 0, 2710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1159168, 0, 0, + /* 44009 */ 0, 0, 2855, 556, 556, 556, 556, 556, 0, 0, 580, 580, 580, 580, 580, 2864, 580, 2865, 580, 580, 2904, 580, + /* 44031 */ 580, 580, 580, 580, 534, 580, 556, 534, 534, 556, 556, 580, 580, 0, 0, 0, 3113, 0, 0, 0, 0, 0, 0, 0, 0, + /* 44056 */ 254407, 254407, 254407, 254407, 254407, 254407, 254407, 254407, 1, 12290, 556, 556, 556, 3053, 556, 556, + /* 44072 */ 556, 556, 556, 556, 556, 580, 3061, 580, 580, 580, 580, 580, 2649, 580, 580, 580, 580, 580, 580, 580, 580, + /* 44093 */ 580, 580, 2371, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3095, 580, 580, 580, 580, 580, 580, 580, 534, + /* 44114 */ 580, 556, 534, 534, 2386, 2387, 556, 556, 2390, 2391, 534, 534, 3338, 534, 534, 534, 534, 534, 534, 534, + /* 44134 */ 534, 534, 3347, 534, 534, 3349, 556, 556, 556, 556, 3353, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 44154 */ 3362, 556, 556, 556, 556, 580, 580, 580, 580, 580, 3427, 580, 580, 580, 3431, 580, 580, 580, 580, 1031, + /* 44174 */ 580, 580, 580, 580, 580, 0, 0, 0, 534, 580, 556, 556, 556, 3365, 580, 580, 580, 580, 3369, 580, 580, 580, + /* 44196 */ 580, 580, 580, 580, 580, 2356, 580, 580, 580, 580, 580, 580, 580, 580, 3378, 580, 580, 580, 534, 556, 580, + /* 44217 */ 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 3449, 534, 534, 534, 534, 534, 534, 534, + /* 44244 */ 534, 534, 556, 556, 556, 3179, 556, 556, 556, 556, 556, 3462, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 44265 */ 556, 580, 580, 580, 3300, 580, 580, 580, 3303, 580, 580, 580, 580, 580, 3476, 580, 580, 580, 580, 580, + /* 44285 */ 580, 580, 580, 580, 580, 0, 0, 0, 534, 580, 556, 0, 0, 3491, 0, 534, 534, 534, 534, 534, 534, 534, 534, + /* 44308 */ 534, 534, 534, 534, 3158, 534, 534, 534, 534, 534, 3565, 534, 556, 556, 556, 556, 556, 3571, 556, 556, + /* 44328 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 3372, 580, 580, 580, 580, 580, 580, 3577, 580, 580, 3579, 0, + /* 44349 */ 3581, 534, 534, 534, 534, 534, 534, 556, 556, 556, 556, 556, 2224, 556, 556, 2227, 556, 556, 556, 556, + /* 44369 */ 556, 556, 2235, 400, 0, 0, 0, 0, 0, 367, 375, 403, 0, 0, 0, 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 44399 */ 0, 0, 0, 2054, 408, 410, 0, 0, 367, 375, 0, 69632, 73728, 0, 0, 0, 0, 426, 65536, 0, 0, 0, 0, 556, 2551, + /* 44424 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2271, 556, 556, 556, 556, 556, 426, 426, 0, 426, 0, 410, + /* 44446 */ 426, 449, 0, 0, 0, 0, 0, 0, 0, 0, 534, 556, 534, 556, 534, 534, 556, 534, 367, 0, 0, 395, 0, 0, 0, 0, 0, + /* 44473 */ 350, 0, 0, 367, 0, 0, 395, 0, 408, 0, 490, 490, 0, 490, 490, 490, 490, 490, 490, 490, 490, 516, 516, 516, + /* 44497 */ 516, 449, 449, 449, 449, 524, 449, 449, 525, 449, 516, 530, 516, 516, 516, 530, 516, 516, 516, 516, 532, + /* 44518 */ 550, 573, 550, 573, 550, 550, 573, 550, 597, 573, 573, 573, 573, 573, 573, 573, 597, 597, 597, 550, 597, + /* 44539 */ 597, 597, 597, 597, 597, 597, 573, 573, 611, 616, 597, 616, 622, 1, 12290, 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, + /* 44564 */ 0, 0, 0, 0, 0, 0, 1567, 1568, 0, 789, 0, 0, 0, 0, 534, 834, 534, 534, 534, 534, 534, 534, 863, 865, 534, + /* 44589 */ 534, 534, 534, 534, 1790, 1792, 534, 534, 534, 534, 534, 1341, 0, 556, 556, 0, 580, 580, 580, 983, 987, + /* 44610 */ 580, 580, 580, 580, 580, 580, 1013, 580, 556, 556, 556, 556, 936, 938, 556, 556, 556, 556, 556, 556, 556, + /* 44631 */ 556, 556, 556, 2829, 556, 556, 2832, 556, 556, 78114, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1083, 0, 0, + /* 44656 */ 0, 0, 0, 1234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 0, 0, 1085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 44688 */ 0, 1098, 0, 0, 0, 0, 0, 1235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122880, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, + /* 44719 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1581, 1582, 0, 0, 0, 0, 1085, 1208, 0, 0, 0, 0, 0, 0, 1215, 0, 0, 0, 0, 0, 0, + /* 44749 */ 347, 348, 349, 0, 0, 0, 0, 0, 0, 0, 0, 282624, 282624, 282624, 282624, 282624, 282624, 282624, 282624, + /* 44768 */ 282624, 0, 0, 0, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1220, 1229, 534, 534, 534, 1259, 534, 534, 534, 1263, + /* 44793 */ 534, 534, 1274, 534, 534, 1278, 534, 534, 534, 534, 534, 534, 3001, 534, 534, 534, 534, 534, 534, 534, + /* 44813 */ 534, 534, 1327, 534, 534, 534, 534, 534, 534, 534, 1299, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 44834 */ 534, 534, 534, 534, 2497, 534, 534, 534, 534, 1341, 901, 556, 556, 556, 556, 556, 556, 556, 1351, 556, + /* 44854 */ 556, 556, 556, 556, 1423, 556, 556, 556, 1430, 556, 556, 26009, 1341, 975, 580, 1355, 556, 556, 1366, 556, + /* 44874 */ 556, 1370, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2828, 556, 556, 556, 556, 556, 556, 1462, 580, + /* 44894 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3315, 580, 1479, 580, 580, 580, + /* 44914 */ 1483, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2877, 580, 580, 580, 580, 0, 1571, 1572, 0, + /* 44935 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 1603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, + /* 44967 */ 364, 364, 0, 696, 0, 1616, 0, 1618, 0, 0, 0, 1622, 0, 0, 0, 1626, 0, 0, 0, 1630, 0, 0, 0, 0, 1572, 0, 0, + /* 44994 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 364, 364, 695, 0, 534, 534, 534, 1724, 534, 534, 534, 534, 534, 534, 534, + /* 45019 */ 534, 534, 534, 534, 534, 1782, 1783, 534, 534, 556, 1837, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 45039 */ 556, 556, 556, 556, 556, 1818, 556, 556, 556, 556, 1889, 556, 556, 556, 556, 26009, 0, 580, 580, 580, 580, + /* 45060 */ 580, 580, 1976, 580, 580, 580, 580, 580, 1981, 580, 580, 580, 0, 0, 0, 2031, 0, 2032, 0, 0, 0, 0, 0, 0, 0, + /* 45085 */ 0, 0, 0, 0, 2200246, 151552, 2200246, 0, 0, 2175, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 45106 */ 2186, 534, 534, 534, 534, 534, 534, 1758, 534, 534, 534, 534, 1764, 534, 534, 534, 534, 0, 0, 556, 556, + /* 45127 */ 556, 556, 2814, 556, 556, 556, 556, 556, 0, 0, 0, 0, 580, 2301, 580, 580, 580, 580, 580, 1038, 580, 580, + /* 45149 */ 580, 580, 0, 0, 0, 534, 580, 556, 580, 580, 2394, 2395, 0, 1544, 0, 1550, 0, 1556, 0, 1562, 0, 0, 0, 0, 0, + /* 45174 */ 0, 374, 0, 0, 0, 0, 0, 0, 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2052, 0, 0, 2476, 0, 0, 0, 0, 0, + /* 45206 */ 0, 0, 0, 0, 2482, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 0, 0, 0, 345, 344, 65536, 343, 534, 534, 534, 534, + /* 45231 */ 2530, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1275, 534, 534, 534, 534, 580, 2661, 580, + /* 45251 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3075, 580, 580, 0, 0, 2722, 0, 0, 0, 0, + /* 45274 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1665, 0, 0, 534, 2797, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 45299 */ 534, 534, 534, 2511, 534, 556, 556, 2845, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 45320 */ 2259, 556, 556, 0, 0, 2970, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 534, 534, 855, 534, 534, 534, 534, + /* 45345 */ 0, 0, 0, 0, 3122, 3123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2424832, 2433024, 0, 0, 2457600, 3149, 534, 534, + /* 45370 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1737, 3172, 534, 534, 534, 534, 534, 534, + /* 45391 */ 534, 534, 556, 556, 556, 556, 556, 556, 556, 2242, 556, 556, 556, 556, 556, 556, 556, 556, 1406, 556, 556, + /* 45412 */ 556, 556, 556, 556, 556, 580, 580, 580, 3229, 580, 580, 580, 580, 580, 580, 580, 580, 580, 534, 580, 556, + /* 45433 */ 556, 556, 556, 580, 580, 580, 580, 3426, 580, 580, 580, 580, 580, 580, 580, 2639, 580, 580, 580, 580, 580, + /* 45454 */ 580, 580, 580, 580, 2344, 580, 580, 580, 580, 580, 580, 534, 3236, 556, 3238, 580, 3240, 3241, 0, 0, 0, 0, + /* 45476 */ 3245, 0, 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 323, 397, 0, 0, 0, 323, 0, 0, 0, 3258, 0, 0, 0, 0, + /* 45507 */ 0, 0, 0, 0, 3261, 0, 534, 534, 534, 534, 534, 534, 534, 3154, 3155, 534, 534, 534, 534, 3159, 3160, 3263, + /* 45529 */ 534, 534, 534, 3266, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1330, 534, 534, 534, 534, 580, + /* 45550 */ 580, 3318, 534, 3319, 556, 3320, 580, 0, 0, 0, 0, 0, 0, 0, 0, 543, 566, 543, 566, 543, 543, 566, 543, 556, + /* 45574 */ 556, 3543, 556, 3544, 556, 556, 556, 556, 556, 556, 556, 556, 580, 580, 3551, 580, 3552, 580, 580, 580, + /* 45594 */ 580, 580, 580, 580, 580, 0, 0, 0, 0, 534, 534, 3536, 534, 3537, 534, 534, 534, 534, 534, 534, 534, 1730, + /* 45616 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 2183, 534, 534, 534, 534, 534, 534, 409, 355, 0, 0, 0, 0, 0, + /* 45639 */ 69632, 73728, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 638, 0, 0, 641, 642, 0, 0, 0, 0, 0, 0, 0, 0, 1591, 0, 0, + /* 45667 */ 1594, 0, 0, 0, 0, 466, 477, 466, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 517, 517, 521, 521, 521, 521, 466, + /* 45693 */ 466, 466, 466, 466, 466, 466, 471, 466, 521, 517, 521, 521, 517, 521, 521, 521, 521, 533, 551, 574, 551, + /* 45714 */ 574, 551, 551, 574, 551, 598, 574, 574, 574, 574, 574, 574, 574, 598, 598, 598, 551, 598, 598, 598, 598, + /* 45735 */ 598, 598, 598, 574, 574, 612, 617, 598, 617, 623, 1, 12290, 0, 0, 731, 0, 0, 0, 637, 731, 0, 737, 738, + /* 45758 */ 637, 0, 0, 0, 0, 0, 0, 656, 0, 0, 659, 660, 0, 0, 0, 0, 0, 0, 0, 2754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2420, 0, + /* 45789 */ 0, 0, 0, 0, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 786, 0, 791, 0, 0, 0, 0, 0, 1575, 0, 0, 0, 0, 0, 0, 0, + /* 45821 */ 0, 0, 0, 303, 303, 0, 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, 0, 0, 0, 0, 791, 0, 0, 0, 0, 0, 0, 672, 0, 0, 0, 0, + /* 45853 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2016, 0, 0, 0, 0, 806, 0, 0, 0, 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, 69632, + /* 45884 */ 73728, 0, 0, 0, 349, 347, 65536, 0, 0, 0, 0, 777, 0, 0, 0, 0, 0, 0, 0, 777, 777, 0, 637, 0, 0, 0, 786, 0, + /* 45912 */ 791, 0, 777, 0, 806, 0, 0, 0, 658, 0, 777, 791, 829, 0, 534, 835, 534, 534, 534, 534, 854, 858, 864, 534, + /* 45936 */ 869, 556, 556, 927, 931, 937, 556, 942, 556, 556, 556, 556, 556, 959, 556, 556, 556, 556, 556, 1424, 556, + /* 45957 */ 556, 556, 556, 556, 556, 26009, 1341, 975, 580, 534, 534, 886, 534, 534, 556, 556, 959, 556, 556, 0, 580, + /* 45978 */ 580, 1033, 580, 580, 580, 580, 1033, 580, 580, 580, 580, 580, 0, 0, 0, 534, 580, 556, 0, 1086, 0, 0, 0, 0, + /* 46002 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2449, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1113, 0, 0, 0, + /* 46033 */ 1117, 1118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 364, 208896, 0, 0, 0, 0, 0, 0, 1179, 0, 1182, 0, 0, 0, + /* 46061 */ 0, 0, 1187, 0, 0, 0, 0, 0, 0, 2726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, 1205, 0, 0, + /* 46093 */ 1086, 0, 0, 0, 1211, 0, 1213, 0, 0, 0, 0, 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1123, 0, 0, 0, 0, 0, + /* 46123 */ 0, 0, 0, 0, 1221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1227, 0, 0, 0, 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46156 */ 2964, 2965, 0, 0, 1230, 1187, 0, 1211, 1233, 0, 1236, 0, 0, 0, 0, 0, 1117, 0, 0, 0, 0, 0, 0, 2739, 0, 0, + /* 46182 */ 0, 0, 2744, 0, 0, 0, 0, 0, 0, 299, 0, 0, 0, 303, 2424832, 2433024, 0, 0, 2457600, 0, 1245, 0, 0, 0, 0, 0, + /* 46208 */ 1245, 0, 0, 1136, 1245, 0, 1252, 534, 534, 534, 534, 534, 534, 3279, 534, 556, 556, 556, 556, 556, 556, + /* 46229 */ 556, 556, 556, 556, 3514, 556, 556, 556, 580, 534, 534, 1258, 534, 534, 534, 534, 1264, 534, 534, 534, + /* 46249 */ 534, 534, 534, 534, 534, 534, 3455, 534, 534, 3457, 556, 556, 556, 534, 534, 1285, 534, 534, 534, 534, + /* 46269 */ 534, 534, 534, 534, 534, 534, 1296, 534, 534, 534, 534, 534, 534, 3341, 534, 534, 534, 534, 534, 534, 534, + /* 46290 */ 534, 556, 580, 3607, 3608, 3609, 534, 556, 580, 534, 556, 580, 0, 0, 0, 0, 0, 0, 333, 0, 0, 333, 0, 0, + /* 46314 */ 333, 0, 0, 0, 534, 534, 1301, 534, 534, 534, 534, 534, 534, 534, 534, 1308, 534, 534, 534, 1315, 1317, + /* 46335 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2149, 534, 1339, 534, 1341, + /* 46355 */ 901, 1343, 556, 556, 556, 556, 556, 1350, 556, 556, 556, 556, 556, 556, 2225, 556, 556, 556, 556, 556, + /* 46375 */ 556, 556, 556, 556, 2244, 556, 556, 556, 556, 2248, 556, 1356, 556, 556, 556, 556, 556, 556, 556, 556, + /* 46395 */ 556, 556, 1377, 556, 556, 556, 556, 556, 556, 2241, 556, 2243, 556, 556, 556, 556, 556, 556, 556, 1425, + /* 46415 */ 556, 556, 556, 556, 556, 26009, 1341, 975, 580, 556, 556, 556, 556, 1400, 556, 556, 556, 1407, 1409, 556, + /* 46435 */ 556, 556, 556, 556, 556, 1386, 556, 556, 556, 556, 556, 556, 556, 1395, 556, 1480, 580, 580, 580, 580, + /* 46455 */ 1485, 580, 580, 580, 580, 580, 580, 580, 580, 1492, 580, 580, 580, 580, 2352, 580, 580, 580, 580, 580, + /* 46475 */ 580, 580, 580, 580, 580, 580, 2628, 580, 580, 580, 580, 580, 580, 1499, 1501, 580, 580, 580, 580, 580, + /* 46495 */ 580, 580, 580, 580, 580, 580, 580, 2878, 580, 580, 2881, 1550, 0, 0, 0, 1556, 0, 0, 0, 1562, 0, 0, 0, 0, + /* 46519 */ 0, 0, 0, 0, 2957312, 0, 0, 0, 0, 0, 0, 0, 0, 1150, 0, 0, 0, 0, 0, 0, 0, 0, 1166, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46550 */ 1179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2094, 0, 0, 0, 1573, 1574, 0, 0, 0, 0, 0, 1580, 0, 0, 0, 0, 0, + /* 46580 */ 0, 0, 69632, 73728, 0, 0, 0, 373, 0, 65536, 0, 0, 0, 1601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1677, 0, + /* 46609 */ 0, 0, 0, 0, 0, 1619, 0, 0, 0, 0, 0, 0, 0, 1627, 1628, 0, 0, 0, 0, 0, 1604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46640 */ 0, 254407, 0, 0, 0, 0, 0, 0, 0, 0, 1635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 386, 0, 0, 0, + /* 46670 */ 1685, 0, 0, 0, 0, 0, 1689, 0, 0, 1692, 0, 0, 0, 0, 0, 0, 3143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2756, 0, 0, + /* 46700 */ 2759, 0, 0, 0, 0, 0, 0, 1689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1705, 0, 1707, 1681, 534, 534, 534, 534, 534, + /* 46727 */ 534, 534, 534, 534, 534, 534, 1719, 534, 534, 534, 534, 534, 1791, 534, 534, 534, 534, 534, 534, 1341, 0, + /* 46748 */ 556, 556, 556, 556, 556, 2295, 0, 0, 0, 580, 580, 580, 580, 580, 580, 580, 2666, 580, 580, 580, 580, 580, + /* 46770 */ 580, 580, 580, 580, 1446, 580, 580, 580, 580, 580, 580, 534, 534, 534, 1725, 534, 534, 534, 534, 534, 534, + /* 46791 */ 534, 534, 534, 534, 1736, 534, 534, 534, 534, 534, 2179, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 46812 */ 2143, 534, 2145, 534, 534, 534, 534, 534, 534, 1740, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 46832 */ 1751, 534, 534, 534, 534, 534, 2207, 0, 0, 0, 556, 556, 556, 556, 556, 556, 556, 1403, 556, 556, 556, 556, + /* 46854 */ 556, 556, 556, 556, 1408, 556, 556, 556, 556, 556, 556, 556, 534, 534, 1756, 534, 534, 534, 534, 534, 534, + /* 46875 */ 534, 534, 534, 534, 534, 534, 534, 2172, 534, 534, 2002, 580, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 46901 */ 0, 0, 696, 0, 0, 2019, 2020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 662, 0, 0, 0, 2055, 2056, 0, 0, 2058, + /* 46929 */ 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2617344, 0, 0, 0, 0, 2081, 0, 0, 0, 0, 2084, 2085, 0, 0, 0, 0, 0, + /* 46958 */ 2091, 0, 0, 0, 0, 0, 0, 3259, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 534, 849, 534, 534, 534, 534, 534, + /* 46983 */ 534, 534, 2152, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2161, 534, 534, 534, 534, 534, 534, + /* 47003 */ 3452, 534, 3454, 534, 534, 3456, 534, 556, 556, 556, 556, 3509, 556, 556, 556, 556, 556, 556, 556, 556, + /* 47023 */ 556, 580, 580, 580, 580, 580, 580, 0, 0, 0, 3595, 534, 534, 2164, 534, 534, 534, 534, 534, 534, 534, 534, + /* 47045 */ 534, 534, 534, 534, 534, 534, 534, 2174, 534, 534, 534, 2191, 534, 534, 534, 2194, 534, 534, 534, 534, + /* 47065 */ 2199, 534, 534, 534, 534, 534, 534, 1759, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1732, 534, 534, + /* 47085 */ 534, 534, 534, 534, 556, 2237, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2246, 556, 556, 2249, + /* 47105 */ 556, 556, 2277, 556, 556, 556, 556, 2281, 556, 556, 556, 556, 2286, 556, 556, 556, 556, 556, 1808, 556, + /* 47125 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 2608, 556, 556, 556, 556, 556, 580, 2324, 580, 580, 580, 580, + /* 47146 */ 580, 580, 580, 580, 580, 580, 2333, 580, 580, 2336, 580, 580, 2364, 580, 580, 580, 580, 2368, 580, 580, + /* 47166 */ 580, 580, 2373, 580, 580, 580, 580, 580, 2665, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1979, + /* 47186 */ 580, 580, 580, 580, 580, 2398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2408, 0, 0, 0, 0, 0, 0, 687, 0, 0, 0, 770, 0, + /* 47215 */ 0, 0, 0, 789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176128, 176128, 176128, 176128, 176128, 176128, 176128, + /* 47236 */ 176128, 534, 534, 2488, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2496, 534, 534, 534, 534, 534, + /* 47256 */ 882, 534, 534, 534, 534, 534, 556, 556, 556, 556, 556, 3411, 556, 556, 556, 3415, 556, 556, 534, 534, + /* 47276 */ 2514, 534, 534, 2516, 534, 2517, 534, 534, 534, 534, 534, 534, 534, 2524, 534, 534, 2528, 534, 534, 534, + /* 47296 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 2539, 556, 556, 2560, 556, 556, 556, 556, 556, 556, 556, 556, + /* 47317 */ 556, 556, 556, 556, 556, 3472, 580, 580, 556, 556, 556, 2575, 556, 556, 556, 2578, 556, 556, 2580, 556, + /* 47337 */ 2581, 556, 556, 556, 556, 556, 1827, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1814, 556, 556, + /* 47357 */ 556, 556, 1820, 580, 2646, 580, 2647, 580, 580, 580, 580, 580, 580, 580, 580, 2655, 580, 580, 2659, 0, + /* 47377 */ 2696, 2697, 0, 0, 2700, 2701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3178496, 2670592, 0, 2744320, 0, 0, 2772, 534, + /* 47401 */ 2775, 534, 534, 534, 534, 2780, 534, 534, 534, 2783, 534, 534, 534, 534, 534, 534, 534, 3002, 3003, 534, + /* 47421 */ 534, 534, 534, 534, 534, 534, 534, 2494, 534, 534, 534, 534, 534, 534, 534, 534, 1744, 534, 534, 534, + /* 47441 */ 1748, 534, 534, 1753, 2808, 534, 534, 534, 0, 0, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3358, + /* 47462 */ 556, 556, 556, 556, 556, 2819, 556, 2822, 556, 556, 556, 556, 2827, 556, 556, 556, 2830, 556, 556, 556, + /* 47482 */ 556, 556, 556, 2255, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2228, 556, 2230, 556, 556, 556, 556, + /* 47502 */ 556, 556, 2857, 556, 556, 556, 0, 0, 580, 580, 580, 580, 580, 580, 580, 580, 2652, 580, 580, 580, 580, + /* 47523 */ 580, 580, 580, 580, 580, 2868, 580, 2871, 580, 580, 580, 580, 2876, 580, 580, 580, 2879, 580, 580, 580, + /* 47543 */ 580, 1034, 580, 580, 580, 580, 580, 0, 0, 0, 534, 580, 556, 580, 580, 580, 580, 2906, 580, 580, 580, 534, + /* 47565 */ 580, 556, 534, 534, 556, 556, 580, 580, 0, 0, 3112, 0, 3114, 0, 0, 0, 3118, 0, 0, 534, 534, 534, 534, + /* 47588 */ 3013, 534, 534, 534, 534, 534, 556, 556, 556, 3021, 556, 556, 556, 556, 556, 2266, 2267, 556, 556, 556, + /* 47608 */ 556, 556, 556, 2274, 556, 556, 0, 580, 580, 580, 580, 580, 580, 994, 580, 580, 1008, 580, 580, 580, 580, + /* 47629 */ 580, 2341, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 0, 0, 733, 534, 580, 556, 0, 0, 3121, 0, 0, + /* 47652 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1693, 0, 0, 534, 3173, 534, 534, 534, 534, 534, 534, 534, 556, 556, 556, + /* 47678 */ 556, 556, 556, 556, 2839, 556, 556, 556, 556, 556, 556, 556, 556, 1811, 556, 556, 556, 556, 556, 556, 556, + /* 47699 */ 556, 556, 3183, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3033, 556, 556, 556, 556, + /* 47720 */ 3193, 556, 556, 556, 556, 556, 556, 3199, 556, 3201, 556, 556, 556, 556, 556, 0, 0, 0, 0, 580, 580, 580, + /* 47742 */ 2303, 580, 2305, 580, 580, 580, 3228, 580, 3230, 580, 580, 580, 580, 580, 580, 580, 580, 534, 580, 556, + /* 47762 */ 556, 556, 556, 580, 3423, 580, 3425, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2888, 580, 580, 580, + /* 47782 */ 580, 580, 580, 0, 0, 0, 3248, 0, 0, 0, 0, 0, 0, 0, 3132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3334, 534, 534, 0, + /* 47810 */ 3257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 2982, 534, 534, 3264, 534, 534, 534, 3268, 534, + /* 47835 */ 534, 534, 534, 534, 534, 534, 534, 534, 1328, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 3277, 534, + /* 47856 */ 534, 534, 556, 556, 556, 556, 556, 3282, 556, 556, 556, 556, 556, 2294, 0, 0, 0, 580, 580, 580, 580, 580, + /* 47878 */ 580, 580, 580, 3482, 580, 580, 3484, 580, 0, 0, 0, 556, 3286, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 47900 */ 556, 556, 556, 556, 556, 1883, 556, 3295, 556, 556, 556, 556, 580, 580, 580, 580, 580, 3301, 580, 580, + /* 47920 */ 580, 3305, 580, 580, 580, 580, 2380, 534, 580, 556, 534, 534, 534, 534, 556, 556, 556, 556, 580, 580, 580, + /* 47941 */ 580, 0, 534, 3601, 556, 3602, 580, 3603, 3489, 0, 0, 0, 534, 534, 534, 3496, 534, 534, 534, 534, 534, 534, + /* 47963 */ 534, 534, 1265, 534, 534, 534, 534, 534, 534, 534, 3504, 556, 556, 556, 3508, 556, 556, 556, 556, 556, + /* 47983 */ 556, 556, 556, 3516, 556, 580, 580, 580, 580, 2624, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 48004 */ 1475, 580, 580, 580, 580, 580, 580, 3521, 580, 580, 580, 580, 580, 580, 580, 580, 3529, 580, 0, 0, 0, 0, + /* 48026 */ 0, 0, 122880, 122880, 122880, 122880, 122880, 0, 122880, 0, 2105631, 12290, 0, 3532, 0, 3534, 534, 534, + /* 48044 */ 534, 534, 534, 534, 534, 534, 534, 3540, 3541, 534, 534, 534, 534, 534, 2208, 0, 0, 0, 556, 556, 556, 556, + /* 48066 */ 556, 556, 556, 1387, 556, 556, 556, 1391, 556, 556, 556, 556, 556, 357, 358, 0, 0, 0, 0, 0, 0, 0, 364, 0, + /* 48090 */ 292, 0, 0, 0, 0, 0, 0, 688, 0, 0, 0, 0, 364, 364, 364, 0, 0, 0, 0, 0, 391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 48121 */ 0, 0, 722, 0, 735, 654, 467, 467, 481, 0, 0, 481, 358, 358, 358, 503, 358, 358, 358, 358, 467, 467, 599, + /* 48144 */ 575, 575, 575, 575, 575, 575, 575, 599, 599, 599, 552, 599, 599, 599, 599, 599, 599, 599, 575, 575, 552, + /* 48165 */ 575, 599, 575, 599, 1, 12290, 556, 556, 928, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 964, 556, + /* 48186 */ 556, 556, 556, 556, 2294, 2615, 0, 0, 0, 0, 580, 580, 580, 580, 580, 534, 556, 580, 0, 0, 0, 0, 0, 0, 0, + /* 48211 */ 0, 2924, 0, 0, 0, 0, 0, 0, 534, 534, 534, 891, 534, 556, 556, 556, 964, 556, 0, 580, 580, 580, 1038, 580, + /* 48235 */ 580, 580, 580, 2636, 580, 2638, 580, 580, 580, 580, 2642, 580, 580, 580, 580, 0, 0, 0, 3440, 0, 0, 0, + /* 48257 */ 3443, 0, 0, 534, 534, 78114, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1084, 0, 0, 0, 0, 670, 0, 0, 0, 0, + /* 48286 */ 0, 0, 0, 0, 0, 0, 0, 0, 2432, 0, 0, 0, 1184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 2132, + /* 48315 */ 2133, 534, 534, 1340, 1341, 901, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1353, 556, 556, 556, 556, + /* 48335 */ 580, 3590, 580, 580, 580, 580, 0, 0, 0, 534, 534, 534, 534, 534, 534, 1713, 534, 534, 534, 534, 534, 534, + /* 48357 */ 534, 2140, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2990, 534, 534, 534, 534, 534, 534, 556, 556, + /* 48377 */ 1362, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3047, 556, 556, 556, 0, 1551, 0, 0, + /* 48399 */ 0, 1557, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 0, 1650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172032, 0, + /* 48430 */ 1656, 0, 0, 0, 0, 0, 0, 0, 0, 1662, 0, 1664, 0, 0, 0, 0, 0, 0, 172032, 172032, 172032, 172032, 172032, + /* 48453 */ 172032, 172032, 172032, 1, 12290, 534, 534, 1771, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 48472 */ 534, 534, 2523, 534, 534, 556, 556, 1854, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1866, + /* 48492 */ 556, 556, 556, 556, 932, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 1815, 556, 556, 556, 556, + /* 48513 */ 556, 1887, 556, 556, 556, 556, 556, 556, 26009, 0, 580, 580, 580, 580, 580, 580, 2312, 580, 580, 580, 580, + /* 48534 */ 580, 580, 580, 580, 580, 1488, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1924, 580, 580, 580, 580, 580, + /* 48555 */ 580, 580, 580, 580, 580, 580, 580, 3073, 580, 580, 580, 580, 580, 1937, 580, 580, 580, 580, 580, 580, 580, + /* 48576 */ 580, 580, 580, 580, 1950, 580, 580, 580, 580, 2648, 580, 580, 580, 580, 580, 580, 580, 580, 2656, 580, + /* 48596 */ 580, 580, 580, 580, 3231, 580, 580, 580, 580, 580, 580, 580, 534, 580, 556, 580, 580, 580, 1973, 580, 580, + /* 48617 */ 580, 580, 580, 580, 580, 580, 580, 1983, 580, 580, 580, 580, 1484, 580, 580, 580, 580, 580, 580, 580, 580, + /* 48638 */ 580, 580, 580, 3222, 580, 580, 580, 580, 0, 0, 0, 2043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 733, 1171, 0, + /* 48665 */ 0, 534, 2151, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2795, 534, 2236, 556, + /* 48686 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2600, 2323, 580, 580, 580, 580, 580, + /* 48707 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3089, 580, 580, 580, 580, 2622, 580, 580, 580, 580, 580, + /* 48728 */ 580, 580, 580, 580, 580, 580, 580, 580, 3224, 580, 580, 2695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 48755 */ 2120, 2734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2719, 534, 2774, 534, 2776, 534, 534, 534, 534, + /* 48781 */ 534, 534, 534, 534, 534, 534, 534, 534, 2160, 534, 534, 534, 556, 2821, 556, 2823, 556, 556, 556, 556, + /* 48801 */ 556, 556, 556, 556, 556, 556, 556, 556, 3190, 556, 556, 556, 580, 580, 580, 2870, 580, 2872, 580, 580, + /* 48821 */ 580, 580, 580, 580, 580, 580, 580, 580, 2654, 580, 580, 580, 580, 580, 0, 0, 0, 0, 2933, 0, 0, 0, 0, 0, 0, + /* 48846 */ 0, 0, 0, 0, 0, 534, 534, 534, 2981, 534, 556, 556, 556, 556, 3289, 556, 556, 556, 556, 556, 556, 556, 556, + /* 48869 */ 556, 556, 556, 3202, 556, 556, 556, 556, 580, 3308, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 48890 */ 580, 580, 580, 3314, 580, 580, 556, 556, 3589, 556, 580, 580, 580, 580, 3593, 580, 0, 0, 0, 534, 534, 534, + /* 48912 */ 3152, 534, 534, 534, 534, 534, 534, 534, 3157, 534, 534, 534, 0, 0, 359, 0, 0, 0, 0, 0, 0, 364, 0, 292, 0, + /* 48937 */ 0, 0, 0, 0, 0, 702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600960, 0, 0, 2768896, 2777088, 2781184, 0, 0, 369, 0, + /* 48963 */ 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2040, 2041, 0, 600, 576, 576, 576, 576, 576, 576, 576, 600, + /* 48990 */ 600, 600, 553, 600, 600, 600, 600, 600, 600, 600, 576, 576, 553, 576, 600, 576, 600, 1, 12290, 556, 923, + /* 49011 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 2234, 556, 556, 556, 556, 556, 1367, + /* 49032 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3547, 3548, 556, 556, 580, 580, 580, 580, 580, + /* 49052 */ 1500, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3102, 3103, 3104, 534, 1646, 0, 0, + /* 49073 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2748, 0, 0, 1684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2065, 0, + /* 49105 */ 0, 580, 580, 580, 1938, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 3223, 580, 580, 580, + /* 49126 */ 0, 0, 0, 2723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 734, 0, 0, 0, 2942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 49159 */ 0, 0, 0, 2760, 0, 0, 0, 0, 3249, 0, 3250, 0, 0, 0, 0, 3132, 0, 0, 0, 0, 0, 0, 0, 3333, 0, 534, 534, 534, + /* 49187 */ 0, 0, 0, 360, 361, 362, 363, 0, 0, 364, 0, 292, 0, 0, 0, 0, 0, 0, 718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2445, + /* 49217 */ 0, 0, 0, 0, 0, 0, 361, 0, 360, 0, 0, 0, 69632, 73728, 0, 0, 0, 0, 427, 65536, 0, 0, 0, 0, 685, 534, 534, + /* 49244 */ 838, 842, 845, 534, 853, 534, 534, 534, 868, 427, 427, 0, 427, 0, 361, 427, 450, 0, 0, 0, 0, 0, 0, 0, 0, + /* 49269 */ 690, 691, 0, 364, 364, 364, 0, 0, 0, 0, 0, 491, 491, 0, 498, 498, 498, 498, 504, 505, 498, 498, 518, 518, + /* 49293 */ 518, 518, 450, 450, 450, 450, 450, 450, 450, 450, 450, 518, 518, 518, 518, 518, 518, 518, 518, 554, 577, + /* 49314 */ 554, 577, 554, 554, 577, 554, 601, 577, 577, 577, 577, 577, 577, 577, 601, 601, 601, 554, 601, 601, 601, + /* 49335 */ 601, 601, 601, 601, 577, 577, 613, 618, 601, 618, 624, 1, 12290, 534, 534, 887, 534, 534, 556, 556, 960, + /* 49356 */ 556, 556, 0, 580, 580, 1034, 580, 580, 580, 580, 1502, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 49377 */ 580, 2332, 580, 580, 580, 580, 534, 2513, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 49398 */ 534, 2806, 534, 534, 534, 534, 2542, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 0, 0, 0, 0, 556, + /* 49420 */ 556, 556, 2216, 556, 2218, 556, 580, 2674, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 534, 580, + /* 49440 */ 556, 534, 534, 534, 534, 534, 2491, 534, 534, 534, 534, 2495, 534, 534, 534, 534, 534, 0, 0, 0, 0, 556, + /* 49462 */ 556, 2215, 556, 556, 556, 556, 602, 578, 578, 578, 578, 578, 578, 578, 602, 602, 602, 555, 602, 602, 602, + /* 49483 */ 602, 602, 602, 602, 578, 578, 555, 578, 602, 578, 602, 1, 12290, 0, 0, 698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 49509 */ 0, 0, 0, 2410, 0, 0, 728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2952, 0, 0, 0, 728, 0, 784, 0, 0, + /* 49540 */ 0, 0, 0, 0, 0, 0, 784, 0, 0, 0, 0, 686, 0, 0, 0, 0, 0, 0, 364, 364, 364, 0, 0, 0, 0, 0, 671, 0, 0, 0, 0, + /* 49571 */ 0, 0, 0, 0, 0, 0, 0, 3145, 3146, 0, 0, 0, 556, 924, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 49596 */ 556, 556, 556, 2260, 2261, 0, 0, 1176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2433, 0, 0, 534, 1300, 534, + /* 49623 */ 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2548, 0, 0, 1418, 556, 556, 556, 556, + /* 49644 */ 556, 556, 556, 556, 556, 556, 556, 26009, 1341, 975, 580, 580, 580, 580, 2664, 580, 580, 580, 580, 2668, + /* 49664 */ 580, 580, 580, 580, 580, 580, 1505, 580, 580, 1509, 580, 580, 580, 580, 580, 1515, 0, 0, 1553, 0, 0, 0, + /* 49686 */ 1559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 49719 */ 736, 0, 0, 0, 0, 0, 0, 0, 534, 534, 534, 534, 2167, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + /* 49743 */ 1733, 534, 534, 534, 534, 556, 556, 556, 2252, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 49764 */ 3471, 580, 580, 580, 580, 580, 580, 2339, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 49784 */ 3485, 0, 0, 3488, 2499, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2202, + /* 49805 */ 0, 0, 0, 0, 736, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 1747, 534, 534, 534, 534, 1051, + /* 49827 */ 534, 534, 892, 534, 1056, 556, 556, 965, 556, 0, 1061, 580, 580, 1039, 580, 580, 580, 580, 2885, 580, 580, + /* 49848 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 2680, 534, 580, 556, 534, 556, 556, 1420, 556, 556, 556, 556, + /* 49869 */ 556, 556, 556, 556, 556, 26009, 1341, 975, 580, 580, 580, 580, 2894, 580, 580, 580, 580, 580, 580, 580, + /* 49889 */ 580, 580, 580, 580, 2900, 580, 580, 580, 580, 534, 534, 534, 534, 1726, 534, 534, 534, 534, 534, 534, 534, + /* 49910 */ 534, 534, 534, 534, 2144, 534, 534, 2148, 534, 1821, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 49930 */ 556, 556, 556, 556, 556, 2843, 580, 580, 1954, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + /* 49951 */ 580, 3313, 580, 580, 580, 580, 556, 2586, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + /* 49972 */ 556, 2288, 556, 556, 556, 556, 556, 2614, 0, 0, 0, 0, 0, 0, 580, 580, 580, 580, 580, 1039, 580, 580, 580, + /* 49995 */ 580, 0, 0, 0, 534, 580, 556, 0, 0, 0, 0, 2957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 2979, 534, 534, 534, + /* 50023 */ 2983, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 2498, 3065, 580, 580, + /* 50043 */ 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 2889, 580, 580, 580, 580, 580, 3192, 556, + /* 50064 */ 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 3035, 1134592, 0, 1134592, 0, 0, 0, + /* 50085 */ 1134592, 1135007, 1135007, 0, 0, 0, 0, 0, 1135007, 0, 0, 0, 0, 700, 701, 0, 0, 0, 0, 0, 707, 0, 0, 0, 711, + /* 50110 */ 0, 1134592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2718, 0, 0, 1134592, 1134592, 0, 0, 0, 0, 1135196, + /* 50136 */ 1135196, 1135196, 1135196, 1134592, 1135196, 1135196, 1135196, 1135196, 1135196, 1135196, 0, 1134592, + /* 50148 */ 1134592, 1134592, 1134592, 1135196, 1134592, 1135196, 1, 12290, 2125824, 3117056, 2125824, 2125824, + /* 50160 */ 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 0, 0, 0, 2125824, 2125824, + /* 50173 */ 2125824, 2125824, 3137536, 2940928, 2940928, 2940928, 0, 0, 0, 0, 0, 2748416, 2879488, 0, 0, 0, 0, 0, + /* 50191 */ 2113, 0, 0, 0, 2113, 0, 0, 2118, 2119, 0, 0, 0, 0, 0, 1180, 0, 0, 0, 1184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 50220 */ 0, 0, 0, 0, 2474, 0, 1147348, 1147348, 1147348, 451, 451, 1147348, 451, 451, 451, 451, 451, 451, 451, 451, + /* 50240 */ 1147399, 1147399, 1147399, 1147399, 1147399, 1147399, 1147399, 1147399, 1147399, 1147399, 1147399, + /* 50251 */ 1147399, 1147399, 1147399, 1147399, 1147399, 0, 0, 0, 0, 0, 0, 0, 0, 768, 0, 0, 0, 0, 0, 0, 0, 451, 0, 0, + /* 50275 */ 0, 0, 0, 1147348, 1147348, 1147348, 1147399, 1147399, 1147348, 1147399, 1147399, 1, 12290, 3, 0, 0, 0, 0, + /* 50293 */ 0, 253952, 0, 0, 0, 253952, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2950, 0, 0, 0, 0, 1159168, 0, 1159168, + /* 50320 */ 1159168, 0, 1159168, 1159168, 0, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, + /* 50333 */ 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, + /* 50344 */ 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 0, 0, 0, 0, 0, 0, 0, 0, 781, 0, 0, 0, 0, 0, + /* 50365 */ 792, 0, 0, 1159168, 0, 0, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, 1159168, + /* 50380 */ 1159168, 1, 12290, 3, 0, 0, 0, 0, 249856, 0, 0, 0, 249856, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 163840, 0, + /* 50404 */ 0, 0, 0, 65536, 0, 2125824, 3117056, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 50418 */ 2125824, 2125824, 2125824, 0, 0, 974, 2125824, 2125824, 2125824, 2125824, 3149824, 2125824, 2428928, + /* 50431 */ 2437120, 2125824, 2486272, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, + /* 50442 */ 2125824, 2625536, 2125824, 2125824, 2125824, 2125824, 2125824, 2125824, 2699264, 2125824, 2715648, + /* 50453 */ 2125824, 2723840, 2125824, 0, 106496, 106496, 0, 106496, 106496, 106496, 106496, 106496, 106496, 106496, + /* 50467 */ 106496, 106496, 106496, 106496, 106496, 106496, 106496, 106496, 106496, 0, 0, 106496, 0, 0, 106496, + /* 50482 */ 106496, 106496, 106496, 106496, 106496, 106496, 106496, 106496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2183168, + /* 50502 */ 0, 0, 0, 0, 0, 0, 0, 0, 2134016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 695, 0, 0, 0, 0, 0, 3108864, 3198976, 0, + /* 50531 */ 0, 3043328, 0, 3149824, 2936832, 0, 2760704, 0, 0, 0, 0, 0, 0, 0, 69632, 73728, 0, 369, 369, 0, 0, 65536, + /* 50553 */ 369 +]; + +XQueryParser.EXPECTED = +[ + /* 0 */ 127, 143, 342, 950, 172, 201, 188, 217, 769, 963, 247, 263, 279, 295, 311, 327, 1395, 373, 1083, 374, 374, + /* 21 */ 374, 374, 374, 374, 374, 374, 374, 419, 391, 407, 466, 435, 589, 1682, 909, 574, 156, 1220, 451, 495, 511, + /* 42 */ 527, 543, 559, 634, 1096, 678, 694, 755, 649, 785, 801, 817, 833, 849, 865, 881, 897, 937, 979, 995, 1023, + /* 63 */ 1039, 1055, 479, 1112, 1128, 1473, 1144, 1160, 1206, 1236, 357, 662, 1266, 709, 1282, 1292, 1308, 1324, + /* 81 */ 1339, 1355, 1411, 1427, 1443, 618, 1459, 724, 1489, 604, 1518, 1528, 231, 1070, 1544, 1560, 1576, 1592, + /* 99 */ 1622, 1250, 1638, 1654, 1606, 921, 1670, 739, 1698, 1714, 1820, 1190, 1730, 1746, 1502, 1758, 1774, 1790, + /* 117 */ 1806, 1175, 1850, 1860, 1836, 1009, 1370, 1876, 1385, 375, 1892, 1896, 1903, 1903, 1903, 1898, 1902, 1903, + /* 135 */ 1910, 1907, 1914, 1918, 1922, 1926, 1929, 1933, 1937, 1941, 1945, 4040, 4040, 4040, 4106, 4040, 4040, 2020, + /* 153 */ 2279, 4040, 1949, 4040, 4040, 4040, 2429, 2379, 4040, 4040, 4040, 4040, 2438, 4040, 4040, 3112, 2651, 3443, + /* 171 */ 2444, 1955, 1984, 1994, 1998, 4040, 4040, 4040, 4040, 4040, 2017, 2042, 4040, 4040, 4040, 2024, 2285, 2030, + /* 189 */ 2034, 4040, 4040, 4040, 4040, 4040, 2041, 4040, 4040, 3002, 2285, 2285, 2285, 2285, 2285, 2111, 1988, 1988, + /* 207 */ 1988, 1988, 1988, 1990, 1955, 1955, 1955, 1955, 1955, 2101, 3099, 1988, 1988, 1988, 1988, 1988, 2120, 1955, + /* 225 */ 1955, 1955, 1955, 1955, 2046, 2055, 4040, 4040, 2212, 2349, 4040, 4040, 4040, 4137, 3441, 4040, 4040, 4040, + /* 243 */ 4040, 3531, 4040, 2745, 1988, 1988, 1988, 2066, 1955, 1955, 1955, 1957, 2073, 4040, 4040, 2473, 3002, 2285, + /* 261 */ 2285, 2026, 1988, 1988, 3101, 1955, 1955, 1956, 2072, 4040, 2471, 4040, 2284, 2285, 3098, 1988, 1988, 2078, + /* 279 */ 1955, 2068, 2129, 2446, 3554, 2285, 2112, 1988, 2120, 1955, 2083, 2281, 2286, 1988, 2067, 2089, 2095, 2113, + /* 297 */ 2049, 2107, 3097, 2114, 2079, 3096, 3100, 2079, 3096, 2114, 2051, 2118, 2126, 2135, 2139, 2143, 2156, 2160, + /* 315 */ 2170, 2170, 2170, 2163, 2167, 2170, 2173, 2177, 2181, 2185, 2189, 2193, 2197, 2201, 2205, 2209, 2216, 4040, + /* 333 */ 4040, 4040, 2131, 4040, 4040, 4040, 2220, 4040, 2226, 4040, 2283, 2287, 1988, 1954, 2122, 2098, 1961, 4040, + /* 351 */ 4040, 4040, 1970, 4040, 2474, 1980, 4040, 2321, 3139, 4040, 2440, 3145, 4427, 2277, 3219, 2796, 3151, 3505, + /* 369 */ 3155, 4040, 3263, 3161, 2906, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, + /* 387 */ 4040, 4040, 4040, 4041, 2255, 2259, 2262, 2266, 2270, 2274, 3465, 2291, 4040, 4040, 4040, 4040, 3213, 2296, + /* 405 */ 2312, 2303, 2396, 2240, 2243, 2309, 2316, 2320, 2649, 4006, 4040, 2726, 2326, 3670, 4040, 4040, 4040, 4040, + /* 423 */ 2231, 3466, 4040, 4040, 4040, 3429, 2237, 4040, 2618, 3123, 2249, 2253, 3877, 2348, 4040, 4040, 4013, 2355, + /* 441 */ 4040, 2359, 4040, 4040, 4040, 4040, 3173, 2321, 2227, 2367, 3192, 4040, 4040, 2459, 4040, 4040, 3192, 4040, + /* 459 */ 4040, 4348, 2989, 2882, 2918, 3129, 2349, 4040, 3014, 2311, 2670, 2331, 3577, 4417, 2336, 2379, 4040, 4040, + /* 477 */ 2549, 2340, 4040, 4040, 4040, 2984, 4040, 4040, 4040, 4040, 3591, 2979, 4040, 4040, 4040, 3390, 4180, 4419, + /* 495 */ 3131, 4040, 3190, 3194, 4040, 2950, 2989, 2918, 3210, 4040, 2469, 2788, 3212, 4040, 4005, 3283, 3279, 4282, + /* 513 */ 4040, 3281, 4226, 4226, 2601, 4283, 3283, 3283, 1966, 3282, 3279, 1966, 4227, 3283, 4191, 2462, 2478, 4040, + /* 531 */ 4040, 4040, 4040, 2588, 2522, 4040, 4040, 4040, 2007, 2858, 2484, 3025, 2492, 2495, 2498, 2502, 2503, 2507, + /* 549 */ 2511, 2515, 4040, 2521, 4040, 4040, 2526, 4040, 3968, 2913, 2541, 2545, 3867, 2553, 2563, 2574, 2578, 4040, + /* 567 */ 3387, 3385, 4040, 2582, 4040, 3458, 2587, 4040, 3120, 4040, 4040, 4040, 3174, 2074, 2409, 2537, 2432, 4040, + /* 585 */ 4040, 4040, 2536, 2416, 4040, 2373, 2377, 4040, 4040, 4040, 4040, 4255, 2378, 4040, 4040, 4040, 4040, 4256, + /* 603 */ 2379, 4040, 2838, 3503, 4040, 4040, 4040, 4040, 2839, 3504, 3974, 3509, 4040, 4040, 3730, 3536, 4040, 3349, + /* 621 */ 2906, 4040, 3326, 2556, 3181, 3383, 3394, 3403, 4040, 4397, 4040, 3553, 3551, 3545, 4040, 2668, 2912, 3478, + /* 639 */ 3399, 2548, 2592, 3456, 3471, 2600, 4040, 4040, 4040, 4242, 4040, 3147, 4040, 3818, 4040, 4037, 3923, 3990, + /* 657 */ 3561, 4003, 4040, 2655, 4039, 4040, 4040, 4040, 3167, 4040, 4040, 4040, 3331, 3171, 4040, 4040, 4040, 4040, + /* 675 */ 3632, 3179, 4040, 2638, 2611, 2615, 4040, 2388, 2622, 4040, 4040, 4040, 4040, 2389, 2349, 4040, 4040, 4040, + /* 693 */ 2397, 2390, 4040, 4040, 4040, 3141, 4040, 4040, 3846, 4040, 4040, 2630, 2517, 4070, 2637, 2412, 2989, 4040, + /* 711 */ 4040, 4040, 4040, 2344, 4040, 4040, 4040, 4040, 4040, 3269, 2989, 2380, 3207, 4040, 3463, 4040, 4040, 4040, + /* 729 */ 3861, 3470, 4040, 4040, 4040, 3475, 4040, 3482, 4040, 4040, 2631, 3905, 4040, 4040, 4040, 4040, 2631, 3905, + /* 747 */ 2424, 3909, 4040, 2152, 2595, 3785, 3915, 2631, 4365, 2642, 4040, 4040, 4040, 4040, 4085, 2646, 4040, 4040, + /* 765 */ 4040, 4040, 4085, 2646, 4040, 4040, 2464, 4040, 4040, 2285, 2285, 2285, 2285, 2025, 1988, 1988, 1988, 1988, + /* 783 */ 1988, 2120, 3610, 3833, 4040, 4040, 4040, 4365, 2656, 4040, 4040, 4040, 2660, 2665, 3980, 2516, 3196, 2674, + /* 801 */ 2678, 3830, 2685, 4040, 4040, 3830, 2685, 4040, 4040, 2299, 2690, 4040, 3184, 3458, 2004, 3969, 3197, 3312, + /* 819 */ 3251, 2696, 4040, 2037, 2690, 4040, 3251, 2696, 4040, 2702, 2709, 3195, 4000, 2713, 2717, 4040, 2715, 4040, + /* 837 */ 2679, 2723, 4040, 2730, 2734, 2739, 3644, 4040, 2705, 2583, 3646, 2583, 2749, 2753, 2704, 3203, 2944, 2566, + /* 855 */ 2570, 2956, 2945, 3843, 2568, 2568, 2761, 3815, 3641, 2765, 3607, 2769, 2773, 2775, 2779, 2783, 2787, 4040, + /* 873 */ 4040, 4040, 3316, 4040, 4040, 3564, 2792, 3570, 2800, 2804, 2808, 2810, 2814, 2818, 2821, 2823, 2824, 4040, + /* 891 */ 4040, 3315, 4040, 3428, 2828, 3896, 3248, 2833, 2843, 2434, 2453, 3918, 2849, 2907, 2853, 4040, 2150, 2148, + /* 909 */ 4040, 4040, 4040, 4040, 2405, 2349, 4040, 4040, 4040, 4040, 2405, 2349, 4040, 4040, 4040, 4040, 2362, 3442, + /* 927 */ 4040, 4040, 4040, 4040, 2363, 3773, 3950, 4040, 4040, 4040, 2857, 4040, 2559, 2968, 3853, 2862, 2937, 4379, + /* 945 */ 2869, 3988, 3295, 4040, 2873, 4040, 4040, 4040, 3554, 2285, 2285, 2285, 2285, 1987, 1988, 1988, 1988, 1989, + /* 963 */ 1955, 1955, 1955, 1955, 1956, 2103, 4040, 4040, 4040, 2472, 4040, 2109, 2285, 2285, 2285, 2113, 3527, 2877, + /* 981 */ 4040, 4040, 4040, 2886, 2890, 4040, 4040, 4040, 4040, 2980, 4040, 3336, 2829, 3897, 2895, 2899, 4040, 2911, + /* 999 */ 2917, 4040, 4040, 2922, 4040, 4040, 4040, 4040, 2844, 2923, 4040, 4040, 2626, 4289, 4040, 3453, 3038, 4353, + /* 1017 */ 4386, 3183, 4040, 4040, 4041, 4370, 4040, 4040, 2845, 2924, 4040, 4040, 4040, 4040, 4040, 2990, 4040, 2558, + /* 1035 */ 2928, 4420, 2935, 4040, 2943, 2949, 4040, 2970, 2954, 4040, 4040, 4040, 4040, 3855, 2960, 4040, 4040, 4040, + /* 1053 */ 4040, 3855, 2960, 4040, 4040, 4040, 4040, 3389, 4040, 2966, 3897, 2974, 2327, 4275, 4040, 3590, 2978, 4040, + /* 1071 */ 3535, 3379, 3488, 3521, 3230, 4040, 4040, 3540, 4040, 4040, 4040, 3439, 4040, 4040, 4040, 4364, 4040, 4040, + /* 1089 */ 4040, 4040, 4040, 4040, 4040, 4040, 4378, 4040, 4040, 4040, 2605, 4040, 4040, 2245, 4040, 4040, 3459, 4040, + /* 1107 */ 4040, 4038, 3923, 4040, 2013, 3616, 2411, 4040, 3631, 2988, 4040, 4040, 3631, 2988, 4040, 4040, 4040, 2994, + /* 1125 */ 4040, 4040, 2350, 4262, 2381, 3617, 4040, 4040, 4346, 4040, 4040, 3000, 4040, 4040, 4346, 4040, 2350, 4208, + /* 1143 */ 3615, 2881, 4040, 2795, 3174, 3112, 3180, 3024, 3111, 3180, 3180, 3933, 3014, 3113, 3113, 3006, 3181, 3014, + /* 1161 */ 3013, 3014, 3175, 4047, 3018, 3029, 3053, 4040, 4040, 4040, 4040, 3634, 4040, 4221, 4040, 3650, 4040, 4040, + /* 1179 */ 4040, 4040, 2631, 3651, 4040, 4040, 4040, 4040, 3648, 4287, 4291, 4040, 4010, 4017, 4303, 4022, 2632, 3182, + /* 1197 */ 4040, 4032, 4040, 1950, 4012, 4040, 2865, 4045, 4051, 3043, 3047, 4064, 3061, 3065, 3069, 3073, 3077, 3081, + /* 1215 */ 3105, 3084, 4040, 4040, 3633, 4040, 4040, 3443, 2444, 4040, 4040, 4040, 2450, 4040, 4040, 4040, 4349, 4040, + /* 1233 */ 4040, 3014, 3276, 2487, 2961, 2691, 4276, 3109, 1976, 3117, 3127, 3289, 3135, 3305, 4040, 3324, 3322, 4040, + /* 1251 */ 4040, 3734, 3779, 3739, 3744, 3969, 4040, 3748, 3754, 3761, 3943, 3887, 3765, 4057, 4040, 2488, 2962, 2692, + /* 1269 */ 3163, 3224, 3188, 3412, 4040, 4040, 2085, 3201, 4040, 4040, 4040, 4040, 2343, 3217, 3223, 3228, 4040, 4040, + /* 1287 */ 4040, 3234, 4040, 4040, 4040, 4040, 4040, 3238, 4040, 4040, 4040, 4040, 3422, 4040, 2529, 2686, 4354, 3245, + /* 1305 */ 4040, 4040, 4040, 4342, 4040, 4040, 4040, 4040, 1972, 4040, 4040, 4040, 4040, 4040, 3255, 4040, 4040, 4040, + /* 1323 */ 3423, 3952, 2686, 4355, 3261, 4040, 4040, 3267, 4040, 4040, 4040, 1974, 4040, 4040, 4040, 3273, 4040, 4220, + /* 1341 */ 3981, 2680, 4356, 3895, 4040, 3287, 4040, 4040, 3293, 4040, 4040, 2062, 4040, 4220, 3953, 3299, 2146, 4040, + /* 1359 */ 3303, 4040, 2607, 4040, 4040, 2061, 4040, 4248, 3309, 3894, 3498, 4040, 4360, 4040, 4040, 4040, 4369, 4040, + /* 1377 */ 4374, 3056, 4383, 3622, 4040, 4040, 4390, 4040, 4040, 4424, 2742, 4040, 2633, 4040, 3056, 4040, 3039, 3157, + /* 1395 */ 4040, 4040, 4040, 4040, 4040, 4040, 4040, 2455, 4325, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 3320, 4040, + /* 1413 */ 3330, 3911, 3335, 3629, 3588, 4213, 3943, 3587, 4213, 4213, 4040, 3341, 3589, 3589, 3628, 4214, 3341, 3340, + /* 1431 */ 3341, 3630, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 3836, 2349, 3347, 4040, 3354, 3001, 4080, 4404, + /* 1449 */ 3358, 3362, 3366, 3369, 3373, 3373, 3377, 4040, 4040, 3835, 4091, 3410, 4040, 4040, 3416, 4040, 4040, 3420, + /* 1467 */ 3427, 4040, 3433, 4040, 4331, 3447, 4040, 4040, 3797, 4040, 3795, 4040, 4040, 4345, 4040, 2350, 1964, 4040, + /* 1485 */ 2879, 4040, 3397, 4040, 2904, 4040, 3350, 3488, 4040, 3486, 2535, 3492, 3496, 4040, 4040, 4040, 3502, 4040, + /* 1503 */ 4040, 4040, 4127, 4028, 2010, 4131, 4141, 4145, 4149, 4153, 4157, 4161, 4165, 4169, 4173, 4134, 4377, 4293, + /* 1521 */ 2534, 3516, 4040, 4040, 4040, 2839, 3504, 4040, 4040, 4040, 4040, 2931, 3442, 4040, 3450, 4040, 2902, 4040, + /* 1539 */ 3799, 4363, 3520, 4196, 3525, 3406, 2349, 2757, 2305, 2996, 4393, 4347, 3544, 4040, 3549, 4040, 4040, 3549, + /* 1557 */ 4040, 4040, 3558, 2756, 2305, 4077, 4395, 3960, 4040, 3568, 4040, 3823, 2349, 4040, 3997, 3750, 3574, 3884, + /* 1575 */ 3961, 4269, 4040, 4270, 4040, 3581, 3944, 3585, 3595, 3931, 3600, 2001, 3930, 3604, 3604, 4211, 3614, 3932, + /* 1593 */ 3621, 3626, 3662, 3638, 3655, 3656, 3660, 3667, 3674, 3678, 3682, 3685, 4040, 4040, 4040, 3840, 2596, 3740, + /* 1611 */ 3850, 2668, 2332, 3343, 4040, 3859, 4040, 4040, 4040, 2233, 3865, 2891, 3735, 2465, 2351, 3690, 3698, 3874, + /* 1629 */ 3702, 3705, 3709, 3713, 3717, 3721, 3725, 3729, 4040, 2423, 2421, 3241, 3772, 4040, 4040, 2939, 3777, 3783, + /* 1647 */ 3789, 3793, 4136, 2698, 3342, 2633, 2425, 3803, 4040, 4040, 3808, 2349, 4040, 4040, 4186, 3812, 4040, 4040, + /* 1665 */ 4040, 3009, 3822, 3827, 4040, 3871, 2532, 4318, 3881, 4040, 3891, 3773, 4040, 4040, 4040, 4040, 3901, 4040, + /* 1683 */ 4040, 4040, 4040, 4040, 2385, 4040, 4040, 4040, 4040, 3014, 4040, 2394, 4040, 2401, 2379, 4035, 3922, 4040, + /* 1701 */ 4040, 2292, 3927, 4040, 4040, 4040, 4040, 3937, 4040, 4040, 4040, 4040, 2091, 3941, 3948, 4040, 3957, 3757, + /* 1719 */ 3966, 2835, 3112, 4040, 4040, 2222, 3979, 4040, 4040, 2719, 3973, 2632, 3183, 3021, 4040, 4055, 4040, 4061, + /* 1737 */ 2419, 4040, 3023, 4068, 4074, 4084, 4112, 4089, 4095, 3596, 4100, 4308, 4099, 4104, 4110, 4099, 4113, 4119, + /* 1755 */ 3257, 4117, 4123, 4040, 4040, 4040, 4040, 4177, 4184, 2836, 3686, 4190, 3693, 4195, 4200, 4410, 4205, 4218, + /* 1773 */ 4040, 3090, 2735, 4225, 3093, 4231, 4040, 4040, 4040, 3631, 4235, 2661, 4040, 2681, 4429, 2369, 4040, 4239, + /* 1791 */ 4040, 4040, 4040, 4040, 3804, 4246, 4040, 4040, 4040, 4252, 4040, 4040, 4040, 2631, 4260, 4266, 4040, 4040, + /* 1809 */ 4040, 4025, 4185, 2837, 2686, 2480, 4274, 4040, 4280, 4040, 4040, 4040, 4040, 4201, 3978, 4018, 4303, 3768, + /* 1827 */ 4040, 3050, 4040, 4040, 3985, 4040, 4040, 3994, 4040, 4322, 4385, 4329, 4040, 4040, 4040, 4040, 4335, 4040, + /* 1845 */ 4040, 4040, 4040, 3663, 4339, 4040, 4040, 4297, 4040, 3057, 3087, 4301, 3962, 3032, 4040, 4040, 4040, 4040, + /* 1863 */ 2624, 4307, 4040, 4040, 4040, 4040, 2624, 4312, 4315, 4040, 2322, 3436, 2837, 2058, 4040, 4040, 3035, 4040, + /* 1881 */ 4401, 4408, 3694, 4040, 4040, 3512, 4040, 2631, 4414, 4040, 3511, 4558, 4433, 6024, 6027, 4439, 4466, 4468, + /* 1899 */ 4468, 4446, 4455, 4467, 4468, 4468, 4468, 4468, 4468, 4468, 4473, 4468, 4468, 4463, 4457, 4459, 4479, 4477, + /* 1917 */ 4483, 4468, 4469, 4493, 4496, 4506, 4510, 4524, 4519, 4511, 4500, 4502, 4502, 4518, 4519, 4498, 4515, 4523, + /* 1935 */ 4528, 4532, 4536, 4539, 4547, 4546, 4543, 4551, 4554, 4556, 4566, 5097, 4574, 6086, 5003, 5101, 5101, 5101, + /* 1953 */ 4593, 4599, 4602, 4602, 4602, 4602, 4608, 4640, 4568, 4622, 4628, 5101, 4434, 5101, 5099, 5101, 6713, 5101, + /* 1971 */ 6256, 5101, 5101, 4584, 5992, 5101, 5101, 4729, 5101, 5473, 6277, 5101, 5007, 4602, 5693, 4609, 5696, 5699, + /* 1989 */ 5699, 5699, 5699, 4601, 4602, 5699, 4602, 4619, 4621, 4623, 4627, 6087, 5101, 4434, 6165, 6164, 5101, 5101, + /* 2007 */ 6380, 6242, 5096, 5101, 4576, 5101, 6463, 5101, 5101, 5635, 4488, 5366, 6275, 5101, 4581, 5101, 4590, 5411, + /* 2025 */ 5123, 5123, 5123, 5697, 5699, 4603, 4621, 4621, 4622, 4627, 4627, 4628, 5101, 4583, 5448, 6513, 5474, 5101, + /* 2043 */ 5008, 5101, 5101, 4602, 4632, 5123, 5699, 4602, 4602, 4602, 5704, 5121, 4602, 4621, 4627, 5101, 4583, 6563, + /* 2061 */ 5101, 4584, 6017, 5101, 5101, 5699, 5701, 4602, 4602, 4602, 4632, 4640, 5705, 5101, 5101, 5101, 4734, 5700, + /* 2079 */ 4602, 4602, 4602, 5705, 4643, 5701, 5101, 5101, 4824, 5651, 4602, 4650, 5101, 5101, 4824, 6512, 5010, 5695, + /* 2097 */ 5123, 5123, 5698, 5690, 4602, 4608, 5696, 5700, 5703, 5101, 4602, 5101, 5101, 5121, 5123, 5123, 5123, 5699, + /* 2115 */ 5699, 5699, 5702, 5123, 5698, 5699, 5702, 4602, 4602, 5704, 4607, 4602, 5705, 5123, 5697, 5704, 5101, 5101, + /* 2133 */ 4816, 4822, 5699, 4602, 5704, 5695, 5698, 5702, 5694, 5701, 4651, 4652, 4650, 5101, 4592, 5101, 5101, 5815, + /* 2151 */ 5567, 5101, 5101, 5106, 6519, 6761, 6550, 6560, 4662, 4695, 4656, 4660, 4693, 4666, 4673, 4670, 4680, 4684, + /* 2169 */ 4691, 4693, 4693, 4693, 4693, 4694, 4676, 4699, 4693, 4703, 4708, 4714, 4704, 4726, 4740, 4744, 4687, 4751, + /* 2187 */ 4753, 4748, 4787, 4789, 4789, 4791, 4757, 4759, 4761, 4763, 4776, 4776, 4770, 4767, 4774, 4717, 4675, 4710, + /* 2205 */ 4780, 4784, 4795, 4797, 4801, 4805, 4809, 5101, 4592, 6198, 6202, 4990, 5007, 5230, 6461, 5101, 6373, 5101, + /* 2223 */ 5101, 4824, 6698, 4831, 5101, 5101, 5101, 4736, 5108, 5108, 5101, 5101, 4826, 6485, 5490, 5979, 4838, 5101, + /* 2241 */ 4720, 4985, 5101, 4720, 5101, 5101, 4853, 5311, 4857, 5333, 4876, 4902, 4906, 4906, 4906, 4906, 4908, 4915, + /* 2259 */ 4917, 4912, 4921, 4925, 4928, 4931, 4934, 4939, 4938, 4943, 4944, 4959, 4949, 4948, 4953, 4956, 4963, 5101, + /* 2277 */ 5107, 5101, 4892, 5101, 5007, 5101, 5101, 5695, 5123, 5123, 5123, 5123, 5696, 5699, 5988, 5101, 5101, 5101, + /* 2295 */ 4825, 5300, 5101, 5608, 5101, 4811, 5449, 6426, 4969, 5101, 5101, 4988, 6219, 5101, 5018, 4987, 5101, 5101, + /* 2313 */ 4860, 5101, 5101, 4995, 5015, 5101, 6412, 5034, 5101, 5101, 5101, 4893, 6751, 6138, 5101, 5101, 5101, 4894, + /* 2331 */ 6729, 5101, 5101, 5101, 4965, 5055, 5068, 5081, 5086, 5091, 5076, 5095, 5101, 4824, 5933, 5929, 5376, 5087, + /* 2349 */ 4434, 5101, 5101, 5101, 4979, 5008, 6409, 5996, 5101, 5999, 5151, 5987, 5376, 5101, 4826, 6502, 6738, 6204, + /* 2367 */ 5101, 6730, 5101, 5101, 4891, 5101, 4570, 5101, 5115, 5127, 5074, 4442, 5096, 5101, 5101, 5101, 4975, 5538, + /* 2385 */ 5411, 5986, 5281, 5101, 4840, 5628, 5355, 5382, 4434, 4736, 5101, 4973, 5101, 5101, 5101, 4840, 5687, 5132, + /* 2403 */ 5075, 5140, 5890, 5072, 5076, 5141, 6462, 4888, 5101, 5101, 4895, 5101, 5343, 5073, 6582, 4451, 5101, 4894, + /* 2421 */ 5101, 5101, 6416, 5101, 5101, 5101, 6191, 5101, 5415, 5892, 5074, 6583, 5096, 5101, 5101, 4898, 5999, 5411, + /* 2439 */ 5280, 5101, 5101, 4974, 4978, 5134, 5157, 5101, 5101, 5007, 5101, 5132, 5075, 5159, 5101, 4897, 5101, 5871, + /* 2457 */ 4980, 5101, 5949, 5135, 5159, 5101, 4976, 5101, 5101, 5010, 5101, 5101, 5169, 4434, 5101, 5101, 5009, 5101, + /* 2475 */ 5101, 5101, 4613, 4614, 4975, 5101, 4614, 5101, 5411, 4978, 6164, 6391, 5101, 4977, 6380, 5395, 5376, 5188, + /* 2493 */ 4872, 5243, 5197, 5197, 5194, 5197, 5199, 5203, 5205, 5207, 5209, 5209, 5209, 5213, 5213, 5213, 5213, 5214, + /* 2511 */ 5213, 5213, 5215, 5219, 5221, 5101, 5101, 5101, 5036, 5101, 5059, 5063, 5372, 5101, 5101, 5101, 6378, 6010, + /* 2529 */ 5101, 4978, 6569, 5101, 4980, 5101, 5417, 5101, 5101, 5101, 5891, 5074, 5240, 5101, 5351, 6463, 5247, 5101, + /* 2547 */ 5101, 5257, 5101, 5101, 5101, 5068, 5263, 6448, 5875, 5101, 4981, 5101, 5101, 5876, 6281, 5416, 5275, 4435, + /* 2565 */ 5874, 5101, 4990, 6089, 5406, 5410, 5101, 5265, 5407, 5285, 5101, 5101, 5297, 6402, 5101, 5101, 5304, 5309, + /* 2583 */ 5101, 5101, 5101, 5057, 5371, 5101, 5101, 5101, 5059, 5330, 4833, 5427, 5101, 5010, 4978, 5101, 5415, 5358, + /* 2601 */ 5101, 5101, 5101, 5100, 5883, 5359, 5101, 5101, 5102, 6015, 4893, 5258, 5101, 5342, 5432, 5101, 5348, 5101, + /* 2619 */ 5024, 6570, 5977, 5382, 4434, 5101, 5101, 5102, 6113, 5726, 5101, 6379, 5101, 5101, 5101, 5102, 5101, 5101, + /* 2637 */ 6462, 5101, 4561, 5876, 5101, 6422, 6426, 5381, 6381, 6423, 6427, 5382, 5101, 5031, 5101, 5101, 4866, 4885, + /* 2655 */ 4811, 5438, 6425, 5399, 6381, 5479, 5101, 5101, 5101, 5104, 5106, 5060, 5064, 5101, 5035, 5101, 5101, 5051, + /* 2673 */ 5101, 5350, 5101, 5879, 4896, 5431, 5101, 5101, 5101, 5106, 5101, 4975, 5471, 5101, 5101, 5101, 5107, 6430, + /* 2691 */ 5101, 5101, 5101, 5108, 4890, 6429, 6381, 5101, 5101, 5102, 6446, 5479, 5101, 5101, 5453, 5269, 5410, 5101, + /* 2709 */ 4614, 5101, 5101, 6380, 5153, 5101, 5101, 5732, 5268, 5470, 5101, 5101, 5102, 6697, 5459, 5468, 6381, 5101, + /* 2727 */ 5041, 5046, 5045, 5478, 5101, 5101, 5453, 4614, 5101, 5101, 5101, 5111, 6088, 5350, 5877, 5413, 5538, 5101, + /* 2745 */ 5101, 5047, 5047, 5047, 5461, 5101, 6088, 6119, 5106, 5267, 5271, 5101, 5047, 6213, 5101, 5101, 5404, 4990, + /* 2763 */ 5404, 5408, 5404, 4990, 5404, 5962, 5423, 5961, 5101, 6084, 5423, 5233, 6104, 5101, 4990, 5232, 5230, 5101, + /* 2781 */ 5232, 4989, 5232, 5232, 5232, 5231, 6488, 5101, 5101, 5101, 5168, 5876, 5722, 5483, 4434, 5099, 5101, 5101, + /* 2799 */ 6498, 6279, 5487, 5101, 4886, 6166, 5489, 5856, 5494, 5500, 5498, 5504, 5504, 5504, 5504, 5506, 5513, 5510, + /* 2817 */ 5517, 5519, 5519, 5519, 5521, 5519, 5525, 5525, 5525, 5525, 5527, 6280, 5415, 5319, 5672, 5101, 5005, 6438, + /* 2835 */ 5101, 5101, 5103, 5101, 5101, 5101, 6361, 6199, 5571, 5101, 5101, 5101, 5176, 5626, 6498, 5551, 5101, 6442, + /* 2853 */ 5561, 5101, 5814, 5566, 5575, 5101, 5101, 5101, 5181, 6167, 5004, 6438, 5101, 5102, 6092, 6381, 5580, 5101, + /* 2871 */ 5101, 5004, 6127, 5600, 5863, 5606, 5862, 5605, 5101, 5101, 5235, 5101, 5101, 5101, 5424, 5102, 6128, 5601, + /* 2889 */ 5864, 5607, 5101, 5101, 5101, 5224, 5101, 6167, 5101, 5006, 6440, 5101, 5569, 5101, 5102, 6180, 5148, 5101, + /* 2907 */ 5101, 5996, 5101, 6283, 5464, 5101, 5101, 5101, 5228, 5101, 5620, 5101, 5101, 5101, 5232, 5176, 5626, 6753, + /* 2925 */ 5665, 5101, 5101, 5632, 5321, 4434, 5101, 5102, 6362, 6200, 5027, 5562, 5101, 5570, 5101, 5101, 5223, 5746, + /* 2943 */ 5463, 5101, 5101, 5101, 5266, 4989, 5621, 5101, 5101, 5101, 5278, 6754, 5666, 5101, 5101, 5265, 5407, 6755, + /* 2961 */ 5376, 5101, 5101, 4990, 5101, 5612, 5415, 5320, 6393, 5101, 5101, 5176, 5639, 5646, 4577, 5568, 5410, 5640, + /* 2979 */ 5664, 5101, 5101, 5101, 5293, 5175, 5639, 5663, 5376, 5659, 5376, 5101, 5101, 5101, 4980, 5657, 5676, 5101, + /* 2997 */ 5101, 5288, 5037, 5658, 5101, 5101, 5101, 5411, 5123, 5098, 5101, 5423, 5101, 5102, 6471, 6477, 5098, 5101, + /* 3015 */ 5424, 5101, 5101, 5426, 5098, 5424, 5101, 5102, 6558, 5101, 5101, 5101, 6393, 5101, 5426, 5424, 5568, 5424, + /* 3033 */ 5233, 5101, 5101, 5102, 6562, 5101, 5104, 5101, 5101, 5101, 4974, 6215, 5710, 4879, 5101, 6496, 5376, 5101, + /* 3051 */ 5105, 5101, 5424, 5424, 5099, 5101, 5105, 5101, 5101, 5101, 5720, 4722, 5730, 5742, 5751, 5757, 5766, 5764, + /* 3069 */ 5767, 5755, 5761, 5771, 5774, 5776, 5778, 5790, 5782, 5785, 5789, 5790, 5791, 5796, 5795, 5801, 5797, 5806, + /* 3087 */ 5101, 5108, 4976, 5101, 5110, 6702, 5101, 5111, 6707, 5101, 5123, 5123, 5123, 5698, 5699, 5699, 5700, 4602, + /* 3105 */ 5801, 5802, 5801, 5801, 4998, 5101, 5098, 5101, 5101, 5425, 5101, 5101, 5812, 5819, 5557, 5101, 5145, 5281, + /* 3123 */ 5101, 4844, 5876, 4852, 5595, 5101, 4888, 5101, 5950, 5136, 4434, 5101, 4615, 5101, 5101, 5823, 5848, 5941, + /* 3141 */ 5101, 5101, 5363, 5101, 5472, 5373, 5101, 5101, 5386, 5101, 5860, 4888, 5868, 5887, 5011, 5011, 5101, 5101, + /* 3159 */ 5414, 5101, 6528, 5376, 5101, 5101, 5414, 6347, 5545, 5908, 6527, 4732, 5904, 6529, 5101, 5101, 5423, 5101, + /* 3177 */ 5101, 5100, 5942, 5101, 5101, 5101, 5426, 5101, 5101, 5101, 5479, 5912, 5924, 5101, 5101, 5423, 5163, 5158, + /* 3195 */ 5101, 5101, 5101, 4989, 5101, 5350, 5929, 5376, 5101, 5101, 5454, 5270, 6215, 5393, 5374, 5101, 5168, 5173, + /* 3213 */ 5101, 5101, 5101, 5021, 5109, 5101, 5411, 5101, 5853, 5101, 6347, 5101, 5100, 5101, 5102, 5947, 5925, 5101, + /* 3231 */ 5101, 5530, 4980, 4811, 5650, 5954, 5376, 4812, 5959, 5955, 5101, 5184, 5539, 6436, 5879, 5098, 5102, 5538, + /* 3249 */ 5101, 6166, 5101, 5102, 5447, 5442, 4585, 5993, 5101, 5101, 5538, 6089, 5099, 4592, 5101, 5101, 5546, 5903, + /* 3267 */ 4584, 5993, 5101, 5101, 5649, 5940, 5102, 4586, 5994, 5101, 5231, 4887, 5101, 4974, 5100, 5101, 5101, 6712, + /* 3285 */ 5101, 5101, 4584, 5995, 5101, 5101, 5706, 5898, 4585, 5995, 5101, 5101, 5808, 5101, 5106, 5101, 5413, 6346, + /* 3303 */ 5102, 6004, 5101, 5101, 5833, 5840, 6392, 5107, 5412, 5876, 4894, 5152, 5101, 5035, 5576, 5101, 5101, 5106, + /* 3321 */ 6016, 5101, 5101, 5837, 5841, 5101, 5101, 5338, 5101, 6015, 5101, 5101, 5101, 5547, 5412, 5101, 5101, 5101, + /* 3339 */ 5612, 5101, 6161, 5101, 5101, 5101, 5679, 5101, 5101, 6367, 5101, 5101, 5842, 6096, 5101, 6282, 5101, 4486, + /* 3357 */ 6021, 6046, 6045, 6046, 6046, 6043, 6046, 6050, 6054, 6058, 6062, 6071, 6066, 6070, 6071, 6071, 6075, 6075, + /* 3375 */ 6075, 6075, 6078, 6082, 5101, 5101, 5842, 6097, 5103, 5234, 5101, 5101, 5880, 5305, 5101, 5101, 5047, 5101, + /* 3393 */ 5101, 6102, 5109, 6108, 5101, 5236, 5101, 5101, 5325, 5101, 6117, 5101, 6123, 5101, 5249, 6209, 6202, 5101, + /* 3411 */ 6493, 5101, 5101, 5897, 5101, 5101, 6142, 6181, 5096, 5843, 6097, 5101, 5101, 5966, 5101, 5101, 5996, 5101, + /* 3429 */ 5101, 5101, 5876, 5103, 6174, 5101, 5101, 5416, 5421, 5101, 5101, 5251, 6200, 6204, 5101, 5101, 5101, 5949, + /* 3447 */ 6147, 6152, 6000, 4980, 4980, 4980, 5101, 5292, 4635, 5101, 5299, 5101, 5101, 5058, 5062, 5371, 6361, 5737, + /* 3465 */ 5101, 5101, 5975, 4848, 5988, 6137, 5101, 5101, 5101, 5882, 5102, 5734, 5738, 5101, 5317, 6462, 5349, 6382, + /* 3483 */ 5101, 6160, 6159, 5101, 6173, 5101, 5101, 5999, 5101, 5101, 6667, 5106, 4894, 6247, 4978, 5101, 5101, 6004, + /* 3501 */ 5101, 6361, 6199, 6203, 5101, 5101, 5101, 5896, 6382, 6382, 5101, 5101, 6111, 5418, 5101, 5101, 6668, 4893, + /* 3519 */ 6186, 5101, 6769, 5879, 5101, 5101, 5529, 6188, 5101, 5101, 6126, 5599, 5102, 6197, 6201, 6205, 5419, 6182, + /* 3537 */ 4434, 5101, 5101, 6089, 5252, 6201, 6205, 5585, 5101, 5101, 5101, 6007, 6455, 4450, 5101, 5101, 6133, 5101, + /* 3555 */ 5101, 5101, 5695, 6454, 4449, 4434, 5101, 5350, 5101, 5878, 5101, 6280, 4886, 4988, 6229, 5101, 5101, 6162, + /* 3573 */ 4614, 5101, 6378, 4434, 5101, 5375, 5101, 4562, 6229, 5101, 4978, 6214, 6161, 4980, 5101, 5101, 6162, 5101, + /* 3591 */ 5101, 5101, 5655, 5640, 6234, 5101, 5101, 5101, 6089, 5101, 6258, 4434, 6240, 5101, 6258, 4434, 5101, 5404, + /* 3609 */ 5962, 5101, 5102, 5437, 6424, 6235, 5101, 5101, 5568, 5410, 5101, 5101, 6236, 5101, 6165, 5101, 5101, 5101, + /* 3627 */ 6259, 5101, 5101, 6164, 5101, 5101, 5101, 5648, 5849, 5942, 5101, 6260, 5101, 6165, 5101, 5405, 5409, 5101, + /* 3645 */ 5057, 5268, 5409, 5101, 5101, 5102, 6742, 5253, 5101, 5101, 5101, 6260, 5101, 5101, 6259, 5101, 6167, 6258, + /* 3663 */ 5101, 5101, 5101, 6112, 6259, 5101, 6259, 6165, 4847, 5987, 5376, 5568, 6497, 6259, 5568, 6497, 6168, 6257, + /* 3681 */ 6257, 6261, 6251, 6254, 6254, 5101, 5101, 5101, 6169, 5118, 5101, 5916, 5101, 5414, 5538, 5101, 5101, 5918, + /* 3699 */ 4896, 5553, 4884, 5037, 6272, 6287, 6305, 6299, 6305, 6303, 6299, 6309, 6293, 6290, 6295, 6322, 6313, 6327, + /* 3717 */ 6316, 6319, 6323, 6332, 6331, 6339, 6339, 6340, 6339, 6339, 6339, 6336, 6344, 5101, 5101, 5101, 6178, 5224, + /* 3735 */ 5747, 5376, 5101, 5101, 5415, 5101, 5101, 6351, 4893, 4893, 4882, 5230, 5001, 5101, 6372, 5101, 5101, 6214, + /* 3753 */ 4980, 5101, 6357, 5969, 5101, 5417, 5419, 6353, 6366, 4434, 5101, 6371, 6390, 6397, 6401, 5101, 5418, 4636, + /* 3771 */ 5647, 6434, 5101, 5101, 5101, 6192, 5943, 5101, 5008, 5101, 4978, 5101, 4979, 5101, 5416, 5101, 6351, 4893, + /* 3789 */ 5419, 6352, 4894, 6268, 6367, 5002, 5101, 5101, 6279, 5641, 5101, 5101, 5290, 5101, 6452, 5101, 5101, 5101, + /* 3807 */ 6223, 5101, 6470, 6459, 6480, 6475, 6479, 6205, 5101, 5423, 5407, 5101, 5057, 5061, 5390, 6481, 5101, 5101, + /* 3825 */ 5101, 6228, 5589, 5588, 5587, 5101, 5436, 5442, 6428, 5402, 5101, 5101, 5102, 6143, 6182, 5106, 5745, 6520, + /* 3843 */ 5101, 5455, 5409, 5101, 5057, 5061, 5370, 6267, 5101, 5410, 5101, 5535, 5101, 5101, 5177, 5640, 5423, 5999, + /* 3861 */ 5101, 5101, 6360, 5736, 6738, 6204, 5101, 5101, 6378, 5101, 5224, 5077, 5101, 5008, 6265, 5555, 5101, 5415, + /* 3879 */ 5070, 5082, 5622, 5101, 5101, 6278, 6165, 5233, 5101, 5377, 6377, 6386, 5103, 5101, 5679, 5101, 5538, 5101, + /* 3897 */ 5101, 5101, 5534, 5538, 4826, 5935, 6737, 6204, 4827, 5936, 6535, 6204, 6191, 6191, 5101, 5101, 6378, 6393, + /* 3915 */ 5232, 5101, 5036, 5101, 5543, 5259, 5326, 6190, 5101, 5101, 5101, 6278, 5443, 6506, 4434, 5101, 5568, 6236, + /* 3933 */ 5101, 5101, 5568, 5101, 5102, 6511, 5134, 6507, 5164, 4451, 5101, 5101, 6392, 5101, 6165, 5101, 6192, 6192, + /* 3951 */ 6192, 5101, 5101, 6378, 6392, 5101, 5101, 6517, 5376, 5101, 5583, 5101, 5101, 5101, 6011, 6524, 5101, 6278, + /* 3969 */ 5101, 5101, 5101, 5037, 6155, 5101, 5101, 5101, 6382, 6533, 6549, 5101, 5101, 5101, 6379, 6393, 5101, 6544, + /* 3987 */ 6381, 5101, 5593, 5101, 5101, 5229, 5634, 5101, 6676, 6549, 5101, 5616, 6230, 5101, 5351, 5877, 4895, 5411, + /* 4005 */ 5432, 5101, 5101, 5101, 5031, 5101, 6675, 6548, 5101, 5101, 5101, 6391, 5101, 6539, 5426, 5101, 5101, 5417, + /* 4023 */ 5920, 4896, 5101, 5648, 6722, 5416, 6462, 5101, 5562, 5101, 6554, 6381, 5101, 5680, 5101, 5101, 6381, 5101, + /* 4041 */ 5101, 5101, 5101, 4583, 5101, 6540, 5425, 5101, 5426, 5101, 5101, 6709, 5417, 4895, 5102, 4595, 5101, 5101, + /* 4059 */ 6406, 5101, 4594, 5403, 6540, 5101, 5714, 5003, 4991, 6090, 6568, 5101, 5101, 6464, 4988, 5101, 6091, 6381, + /* 4077 */ 5101, 5842, 5037, 5998, 5996, 5996, 5413, 4893, 5101, 5101, 5101, 6419, 5101, 6091, 5101, 5101, 6492, 6491, + /* 4095 */ 5101, 6091, 5101, 4895, 4561, 4896, 5101, 5101, 6090, 6089, 4896, 5101, 5101, 6494, 6256, 4559, 5101, 5101, + /* 4113 */ 6090, 5101, 5101, 6090, 4561, 6089, 4561, 5101, 6089, 4560, 5537, 6089, 5101, 5537, 6574, 6752, 4888, 4577, + /* 4131 */ 5716, 5997, 6579, 5101, 5844, 5037, 5101, 5101, 5101, 6196, 5101, 6462, 6465, 6463, 4869, 5826, 5829, 6587, + /* 4149 */ 4489, 4646, 6598, 6591, 6597, 6593, 6605, 6602, 6607, 6611, 6613, 6617, 6619, 6628, 6625, 6632, 6621, 6635, + /* 4167 */ 6639, 6640, 6644, 6647, 6654, 6653, 6651, 6658, 6661, 6665, 5101, 6574, 6723, 5101, 5876, 6281, 5670, 5418, + /* 4185 */ 5421, 5101, 5101, 5101, 6469, 5107, 5101, 4975, 5101, 4976, 6672, 5101, 5101, 5101, 6682, 6494, 5101, 5101, + /* 4203 */ 5101, 6695, 6680, 5313, 6686, 5101, 5877, 5684, 4434, 6246, 5101, 5101, 6163, 5101, 5101, 5101, 6692, 5101, + /* 4221 */ 5101, 6495, 5101, 5101, 6703, 5101, 5101, 5101, 6713, 5101, 5101, 6718, 6717, 4834, 6722, 5101, 5418, 5422, + /* 4239 */ 5101, 6727, 6734, 5101, 5881, 5357, 5337, 6746, 5101, 5101, 5101, 6495, 6378, 5101, 6222, 6745, 5101, 5889, + /* 4257 */ 5128, 5074, 4442, 6224, 6747, 5101, 5877, 5615, 5671, 5876, 5101, 5879, 5101, 5899, 6230, 5101, 5101, 6089, + /* 4275 */ 5101, 5101, 4892, 5101, 5412, 5002, 6734, 5101, 5101, 6711, 5101, 5101, 5253, 5101, 5877, 5877, 5877, 5101, + /* 4293 */ 5101, 5101, 6771, 5101, 5101, 6575, 5642, 4635, 5411, 6089, 5101, 4889, 5258, 5101, 5252, 4561, 5101, 5101, + /* 4311 */ 6090, 5252, 4561, 5876, 5876, 5101, 5101, 5101, 5914, 6353, 6148, 5106, 4974, 5101, 5101, 5972, 5101, 4989, + /* 4329 */ 5101, 6165, 5425, 5101, 6688, 5107, 5101, 6111, 5724, 6759, 5725, 4561, 5101, 5101, 5983, 5994, 5101, 5190, + /* 4347 */ 5879, 5101, 5101, 5101, 5344, 5376, 5106, 5101, 5101, 5413, 6463, 5879, 5102, 6775, 6767, 5101, 5101, 5997, + /* 4365 */ 5101, 5101, 5101, 4811, 4583, 6765, 5101, 5101, 5101, 5101, 6098, 5420, 5101, 5998, 5101, 5101, 5101, 4818, + /* 4383 */ 5109, 5101, 5413, 5537, 5101, 5101, 6165, 5101, 6111, 6564, 5101, 5998, 5101, 6769, 5101, 5101, 6132, 6137, + /* 4401 */ 5101, 6098, 5101, 5101, 6033, 6031, 6039, 5105, 5101, 5109, 5101, 4863, 5101, 6776, 5101, 5101, 5101, 6035, + /* 4419 */ 4434, 5101, 6161, 5536, 5101, 5036, 5102, 5101, 5101, 6088, 5101, 5101, 5412, 6089, 1048576, 1073741824, 0, + /* 4436 */ 0, 0, -872415232, 4194560, 4196352, 270532608, 2097152, 4194304, 117440512, 134217728, 4194304, 16777216, + /* 4448 */ 4194432, 3145728, 16777216, 134217728, 536870912, 1073741824, 0, 541065216, 541065216, -2143289344, + /* 4458 */ -2143289344, 4194304, 4194304, 4196352, -2143289344, 4194304, 4194432, 37748736, 541065216, -2143289344, + /* 4468 */ 4194304, 4194304, 4194304, 4194304, 37748736, 4194304, 4194304, 4198144, 4196352, 8540160, 4194304, + /* 4479 */ 4194304, 4194304, 4196352, 276901888, 4194304, 4194304, 8425488, 4194304, 1, 0, 1024, 1024, 0, 1024, + /* 4493 */ 742391808, 239075328, -1405091840, 742391808, 742391808, 775946240, 239075328, 171966464, 775946240, + /* 4502 */ 171966464, 171966464, 171966464, 171966464, -1405091840, 775946240, 775946240, -1405091840, -1371537408, + /* 4511 */ 775946240, 775946240, 775946240, 171966464, 239075328, 239075328, 171966464, 775946240, -1371537408, + /* 4520 */ 775946240, 775946240, -1371537408, 239075328, 775946240, 775946240, 775946240, 775946240, 4718592, 64, + /* 4530 */ 4718592, 2097216, 4720640, 541589504, 4194368, 541589504, 4194400, 4194368, 541065280, 4194368, + /* 4540 */ -2143289280, 4194368, -2143285440, -2143285408, -2143285408, -2109730976, -2143285408, -2143285408, + /* 4548 */ -2143285408, -2143285408, 776470528, -2143285408, -2109730976, 775946336, 775946304, 776470528, 775946304, + /* 4557 */ -1908404384, 2, 4, 8, 262144, 0, 0, 0, 0x80000000, 8, 262144, 262144, 1048576, 0, 128, 4096, 0, 4194304, + /* 4575 */ 128, 128, 0, 1048576, 0, 0, 1536, 1792, 0, 0, 1, 2, 4, 128, 2097152, 8192, 8392704, 0, 0, 1, 4, 8, 262144, + /* 4598 */ 536870912, 64, 64, 32, 96, 96, 96, 96, 128, 1536, 524288, 96, 64, 524288, 524288, 1536, 1024, 0, 0, 0, 29, + /* 4619 */ 96, 1048576, 128, 128, 128, 128, 2048, 2048, 2048, 2048, 2048, 2048, 0, 96, 524288, 96, 64, 0, 0, 128, + /* 4639 */ 1024, 524288, 64, 64, 96, 96, 524288, 524288, 4100, 1024, 100680704, 96, 524288, 64, 96, 524288, 64, 80, + /* 4657 */ 528, 524304, 1048592, 2097168, 268435472, 16, 16, 2, 536936448, 16, 262160, 16, 536936448, 16, 17, 17, 20, + /* 4674 */ 16, 48, 16, 16, 20, 560, 24, 560, 48, 2097680, 3145744, 1048592, 1048592, 2097168, 16, 1049104, 2228784, + /* 4691 */ 2097168, 2097168, 16, 16, 16, 16, 20, 48, 48, 3146256, 2097680, 1048592, 16, 16, 16, 28, 0, 2097552, + /* 4709 */ 3146256, 16, 16, 16, 21, 16, 16, 28, 16, 0, 16, 0, -2046820352, 0, 0, 2, 2, 2, 2098064, 17, 21, 266240, + /* 4731 */ 1048576, 67108864, 0x80000000, 0, 0, 64, 65536, 1048576, 0, 16, 16, 163577856, 17, 528, 528, 16, 528, + /* 4748 */ -161430188, -161429676, -161429676, -161430188, -161429680, -161430188, -161430188, -161429680, -161429676, + /* 4757 */ -161349072, -161429675, -161349072, -161349072, -161349072, -161349072, -161347728, -161347728, -161347728, + /* 4766 */ -161347728, -161298572, -160774288, -160299084, -161298572, -161298576, -160299088, -161298576, -160774284, + /* 4775 */ -160774284, -161298572, -161298572, -161298572, -161298572, 112, 21, 53, 146804757, 146812949, 146862101, + /* 4786 */ 146863389, -161429676, -160905388, -161429676, -161429676, -161429676, -161429676, -161429675, -161349072, + /* 4795 */ 146863421, 148960541, 146863389, 146863389, 148960541, 146863421, 148960541, 148960541, -161429740, + /* 4804 */ -161429676, -160905388, -161298572, -161298572, -18860267, -160774284, -18729163, 0, 0, 1, 6, 8, 16, + /* 4817 */ 262144, 0, 0, 1, 8, 0, 24, 0, 0, 1, 14, 16, 32, 1024, 32768, 100663296, -1073741824, 0, 0, 0, 150528, + /* 4838 */ 131072, 16777216, 0, 0, 1, 102, 1, 32768, 131328, 131072, 524288, 2097152, 8388608, 16777216, 164096, 0, 0, + /* 4855 */ 0, 1007, 0, 1073741825, 0x80000000, 0x80000000, 1073741824, 8, 0, 0, 58368, 0, 0, 65536, 1048576, 4096, + /* 4871 */ 1048576, 512, 512, 9476, 134218240, 0, 1073741824, 2621440, 1073741824, 0x80000000, 0x80000000, 0, 0, + /* 4884 */ 66048, 0, 0, 0, 67108864, 0, 0, 0, 16384, 0, 0, 0, 8, 0, 0, 0, 9, 4456448, 8, 16777216, 1073774592, + /* 4905 */ 1226014816, 100665360, 100665360, 100665360, 100665360, -2046818288, 1091799136, 1091799136, 1091803360, + /* 4914 */ 1091799136, 1091799136, -2044196848, 1091799136, 1091799136, 1091799136, 1091799136, 1091799136, + /* 4922 */ 1158908000, 1158908001, 1192462432, 1192462448, 1192462448, 1192462448, 1192462448, 1200851056, 1091799393, + /* 4931 */ 1200851056, 1200851056, 1091799393, 1200851056, 1200851056, 1200851056, 1192462448, 1870638912, 1870638912, + /* 4940 */ 1870655296, 1870638912, 1870655296, 1870655296, 1870655296, 1870655296, 1870655296, 1870655312, 1870655316, + /* 4949 */ 1870655316, 1870655316, 1870655317, 1870655348, 1870655316, 1870655316, 1870655312, 1870655312, 1879027568, + /* 4958 */ 1879043952, 1870655316, 1870655316, 1870655316, 1870638928, 1879043952, 1879043956, 0, 0, 1, 12288, 0, + /* 4970 */ 229440, 1048576, 1224736768, 100663296, 0, 0, 0, 1024, 0, 0, 8192, 0, 0, 0, 576, 0, 231488, 1090519040, 0, + /* 4989 */ 0, 0, 2048, 0, 0, 134217728, 0, 1157627904, 1191182336, 0, 0, 131584, 268435456, 49152, 0, 0, 0, 134217728, + /* 5007 */ 0, 0, 0, 16, 0, 0, 0, 13, 0, 9437184, 231744, 0, 0, 235712, 0, 0, 131328, 0, 0, 131072, 32768, 0, 0, + /* 5030 */ 134217728, 0, 520000, 7864320, 1862270976, 0, 0, 0, 4096, 0, 0, 0, 1862270976, 1862270976, 1862270976, 0, + /* 5046 */ 16252928, 0, 0, 0, 8192, 64, 98304, 1048576, 150994944, 83886080, 117440512, 0, 0, 2, 4, 16, 32, 256, 1024, + /* 5065 */ 8192, 33554432, 0, 0, 64, 256, 3584, 8192, 16384, 65536, 262144, 524288, 1048576, 2097152, 4194304, + /* 5080 */ 0x80000000, 8192, 98304, 393216, 524288, 1048576, 1048576, 2097152, 4194304, 251658240, 536870912, 8192, + /* 5092 */ 16384, 98304, 393216, 251658240, 536870912, 1073741824, 0, 0, 2097152, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, + /* 5113 */ 3, 240, 0, 83886080, 117440512, 64, 0, 2, 0, 0, 524288, 524288, 524288, 524288, 256, 1536, 2048, 8192, + /* 5131 */ 16384, 256, 1536, 8192, 65536, 262144, 524288, 2097152, 67108864, 4194304, 16777216, 100663296, 134217728, + /* 5144 */ 536870912, 524288, 2097152, 134217728, 268435456, 536870912, 1073741824, 0, 0, 524288, 2097152, 0, 0, + /* 5157 */ 1048576, 2097152, 67108864, 1073741824, 0, 0, 1536, 65536, 262144, 524288, 33554432, 0, 1024, 65536, + /* 5171 */ 262144, 2097152, 2097152, 1073741824, 0, 0, 2, 8, 16, 32, 0, 8192, 4096, 0, 0, 605503, 1066401792, 9476, + /* 5189 */ 512, 0, 32, 384, 8192, 4194312, 4194312, 541065224, 4194312, 4194312, 4194312, 4194312, 4194344, + /* 5202 */ -869654016, -869654016, 4203820, -869654016, -869654016, -869654016, -869654016, 1279402504, 1279402504, + /* 5211 */ 1279402504, 1279402504, 2143549415, 2143549415, 2143549415, 2143549415, 2143549423, 2143549423, 2143549423, + /* 5220 */ 2143549423, 2143549423, 2143549423, 0, 0, 2, 16384, 32768, 260, 512, 0, 0, 0, 65536, 0, 0, 0, 384, 8192, 0, + /* 5240 */ 32, 512, 0, 1050624, 262144, 512, 1275208192, 139264, 1275068416, 0, 0, 4, 128, 1024, 2048, 16384, 262144, + /* 5257 */ 8, 4194304, 0, 0, 0, 82432, 0, 40, 0, 0, 4, 256, 1024, 98304, 131072, 16777216, 268435456, 0, 0, 300, + /* 5277 */ 4203520, 0, 0, 2097152, 1073741824, 0x80000000, 0, 0, 520, 4333568, 1275068416, 0, 0, 4194304, 1024, 0, + /* 5293 */ 4096, 8192, 0, 0, 0, 520, 520, 0, 0, 0, 164096, 999, 29619200, 2113929216, 0, 0, 0, 1007, 1007, 1007, 0, 0, + /* 5315 */ 8, 124160, 32, 512, 0, 2048, 524288, 0, 536870912, 0, 139264, 0, 0, 0, 139264, 0, 40, 0, 2621440, 0, 0, + /* 5336 */ 0x80000000, 1610612736, 0, 0, 0, 229376, 0, 40, 0, 524288, 2097152, 1073741824, 44, 0, 0, 0, 262144, 0, 0, + /* 5355 */ 16384, 229376, 4194304, 25165824, 100663296, 402653184, 1610612736, 0, 110, 110, 110, 0, 0, 8388608, + /* 5369 */ 8388608, 8192, 33554432, 67108864, 134217728, 1073741824, 0, 0x80000000, 0, 0, 0, 12545, 25165824, + /* 5382 */ 33554432, 67108864, 402653184, 536870912, 0, 104, 104, 104, 8192, 33554432, 134217728, 0, 0, 8388608, + /* 5396 */ 134217728, 1073741824, 0, 229376, 25165824, 33554432, 402653184, 536870912, 0, 0, 256, 1024, 65536, + /* 5409 */ 16777216, 268435456, 0, 0, 0, 524288, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 256, 0, 0, 0, 300, 524288, + /* 5432 */ 2097152, 0x80000000, 0, 0, 1, 6, 32, 64, 256, 512, 256, 1024, 4096, 8192, 65536, 2, 4, 32, 64, 256, 1024, + /* 5453 */ 0, 2, 4, 256, 1024, 65536, 4, 64, 256, 1024, 0, 0, 8, 8388608, 0, 98304, 131072, 25165824, 268435456, + /* 5472 */ 536870912, 0, 0, 8388608, 4096, 0, 0, 8, 8, 8, 0, 2048, 524288, 67108864, 536870912, 32, 4100, 67108864, 0, + /* 5491 */ 32768, 0, 32768, 0, 1049088, 0, 134348800, 270532608, 0, 1049088, 1049088, 8192, 1049088, 12845065, + /* 5505 */ 12845065, 12845065, 12845065, 147193865, 5505537, 5591557, 5587465, 5587457, 5587457, 147202057, 5587457, + /* 5516 */ 5587457, 5591557, 5587457, 13894153, 13894153, 13894153, 13894153, 81003049, 13894153, -1881791493, + /* 5526 */ -1881791493, -1881791493, -1881791493, 0, 0, 8, 33554432, 262144, 0, 33554432, 1024, 0, 4, 0, 0, 0, 867647, + /* 5543 */ 1, 5505024, 0, 0, 15, 16, 32, 192, 86528, 9, 0, 0, 16, 8192, 0, 0, 23, 0, 75497472, 0, 0, 0, 1048576, + /* 5566 */ 5505024, -1887436800, 0, 0, 0, 2097152, 268435456, 0, 0, 4096, 8192, 67108864, 0, 0, 262144, 4194304, + /* 5582 */ 8388608, 0, 0, 33554432, 8192, 0, 0, 288, 8388608, 0, 0, 0, 81920, 0, 0, 24, 282624, 64, 896, 8192, 131072, + /* 5603 */ 262144, 1048576, 16777216, 33554432, -1946157056, 0, 0, 0, 2621440, 0, 131072, 0, 32, 0, 0, 2048, 3145728, + /* 5620 */ 0, 16384, 65536, 0, 0, 268435456, 32, 64, 384, 512, 5120, 8192, 0, 64, 0, 2048, 1048576, 0, 0, 32, 64, 384, + /* 5642 */ 8192, 131072, 0, 0, 32768, 134217728, 0, 0, 8, 32, 64, 1024, 2048, 0, 2, 8, 32, 384, 8192, 131072, + /* 5662 */ 33554432, 131072, 1048576, 33554432, 134217728, 0x80000000, 0, 0, 2048, 524288, 536870912, 0, 1073741824, + /* 5675 */ 0, 131072, 33554432, 0x80000000, 0, 0, 33554432, 1073741824, 0, 32, 0, 524288, 0, 0, 67108864, 64, 64, 0, + /* 5693 */ 96, 96, 0, 524288, 524288, 524288, 64, 64, 64, 64, 96, 96, 96, 0, 0, 0, 28, 0, 8396800, 4194304, 134217728, + /* 5714 */ 2048, 134217728, 0, 0, 32, 1, 0, 8396800, 0, 0, 32, 64, 128, 1024, 2048, 262144, 0, 16384, 0, 2, 4, 64, + /* 5736 */ 128, 3840, 16384, 19922944, 2080374784, 0, 16384, 16384, 16777216, 16384, 32768, 1048576, 2097152, 4194304, + /* 5750 */ 16777216, 524288, 268567040, 16384, 2113544, 68489237, 72618005, 68423701, 68423701, 68423701, 68489237, + /* 5761 */ 68423701, -2079059883, -2079059947, 68423701, 85200917, 68423701, 68423701, 68423701, 68423701, 68423765, + /* 5771 */ -2079059883, 68425749, 68423703, 69488664, 85200919, 69488664, 69488664, 69488664, 69488664, 70537244, + /* 5781 */ 70537245, 70537245, 70537245, 70537309, 70537245, -2076946339, -2076946403, 70537245, -2076946339, + /* 5790 */ 70537245, 70537245, 70537245, 70537245, 70539293, -2022351745, -2022351745, -2022351617, -2022351745, + /* 5799 */ -2022351617, -2022351617, -2022351617, -2022351617, -2022351617, -2022351617, -2022351745, -2022351617, + /* 5807 */ -2022351617, 0, 0, 40, 67108864, 331776, 83886080, 0, 0, 59, 140224, 5505024, 5242880, -2080374784, + /* 5821 */ -2080374784, 268288, 29, 0, 284672, 0, 0, 68157440, 137363456, 0, 66, 66, 0, 63, 64, 351232, 63, 192, + /* 5839 */ 351232, 7340032, -2030043136, 0, 0, 0, 4194304, 1, 1024, 32, 64, 256, 32768, 65536, 512, 131072, 268435456, + /* 5856 */ 0, 0, 134348800, 134348800, 16, 4096, 262144, 1048576, 4194304, 8388608, 16777216, 33554432, 5242880, 0, 7, + /* 5871 */ 0, 0, 142606336, 0, -872415232, 0, 0, 0, 131072, 0, 0, 0, 999, 259072, 4194304, 25165824, 0, 20480, 0, 0, + /* 5891 */ 64, 256, 1536, 8192, 16384, 0, 12, 3145728, 0, 0, 0, 3145728, 64, 3072, 20480, 65536, 262144, 32, 192, + /* 5910 */ 3072, 20480, 4, 1048576, 0, 0, 128, 131072, 0, 134218752, 0, 0, 128, 134217728, 5242880, 0, 6, 0, 0, 16384, + /* 5930 */ 65536, 7340032, 50331648, 32, 192, 1024, 2048, 4096, 8192, 65536, 32768, 65536, 4194304, 16777216, + /* 5944 */ 0x80000000, 0, 0, 1, 4, 0, 0, 256, 1536, 65536, 65536, 2097152, 4194304, 50331648, 0x80000000, 32, 192, + /* 5961 */ 1024, 65536, 268435456, 0, 0, 32768, 4194304, 16777216, 0, 0, 184549376, 0, 0, 243269632, 0, 0, 32768, + /* 5978 */ 131072, 131072, 0, 32768, 32768, 1, 2, 4, 2097152, 16777216, 134217728, 268435456, 1073741824, 0x80000000, + /* 5992 */ 128, 2097152, 4194304, 50331648, 0, 0, 0, 8388608, 0, 0, 0, 768, 2, 4, 50331648, 0, 0, 536870912, 9216, 0, + /* 6012 */ 0, 0, 49152, 2, 4, 128, 50331648, 0, 0, 4096, 4194304, 268435456, 0, 0, 1075838976, 2097152, 2097152, + /* 6029 */ 268435456, 4194432, 268435968, 268435968, 1073743872, 268435968, 0, 128, 6144, 0, 229376, 128, 268435968, + /* 6042 */ 268436032, 256, 256, 536871168, 256, 256, 256, 256, 257, 256, 384, -1879046336, -1879046334, 1073744256, + /* 6056 */ -1879046334, -1879046326, -1879046334, -1879046334, -1879046326, -1879046326, -1845491902, -1878784182, + /* 6064 */ 268444480, 268444480, 268436288, 268436288, 268436288, 268436288, 268436289, 268444480, 268444480, + /* 6073 */ 268444480, 268444480, 2100318149, 2100318149, 2100318149, 2100318149, 2100326341, 2100326341, 2100318149, + /* 6082 */ 2100326341, 2100326341, 0, 0, 256, 2048, 2048, 0, 0, 0, 4, 8, 262144, 134217728, 1, 1024, 0, 4096, 0, 64, + /* 6102 */ 1856, 0x80000000, 0, 0, 256, 65536, 2432, 0, 1864, 0, 1, 2, 16, 32, 64, 0, 301989888, 0, 262144, 131072, 0, + /* 6123 */ 0, 832, 8192, 0, 1, 2, 56, 64, 896, 0, 1, 4036, 19939328, 2080374784, 2080374784, 0, 0, 0, 16252928, 1, 16, + /* 6144 */ 32, 128, 512, 2304, 0, 8, 0, 512, 301989888, 0, 0, 262144, 524288, 134217728, 536870912, 0, 24576, 0, 0, 0, + /* 6164 */ 33554432, 0, 0, 0, 32768, 0, 0, 2097152, 134217728, 0, 32768, 196608, 0, 0, 0, 1, 128, 512, 2048, 524288, + /* 6184 */ 268435456, 536870912, 0, 33554432, 262144, 8192, 0, 0, 256, 8388608, 0, 0, 1, 4, 128, 3584, 16384, 3145728, + /* 6202 */ 16777216, 67108864, 134217728, 805306368, 1073741824, 0, 0, 1024, 2048, 16384, 3145728, 0, 8192, 0, 8192, + /* 6217 */ 0, 536870912, 524288, 536870912, 1073741824, 0, 1, 2, 112, 128, 3072, 2048, 3145728, 16777216, 536870912, + /* 6232 */ 1073741824, 0, 0, 2097152, 16777216, 1073741824, 0, 0, 0, 8192, 8192, 8192, 9216, 33554432, 32768, + /* 6247 */ 33554432, 0, 0, 262144, 0, 16777216, 0, 16777216, 16777216, 16777216, 16777216, 0, 0, 2097152, 16777216, 0, + /* 6263 */ 0, 16777216, 268500992, 4243456, 0, 0, 512, 65536, 0, 4096, 4096, 0, 4096, 4096, 4096, 4096, 0, 0, 0, 32, + /* 6283 */ 0, 0, 0, 41, 0, 4243456, 4096, 12289, 1073754113, 12289, 12289, 1124073472, 12289, 12289, 1098920193, + /* 6298 */ 1098920193, 1124073488, 1124073472, 1124073472, 1258292224, 1124073472, 1124073474, 1124073472, 1124073472, + /* 6307 */ 1124073472, 1124073472, 1124073472, 1392574464, 1124073472, 12289, 1124085761, 1124085761, 1124085761, + /* 6316 */ 1124085761, 1132474625, 1098920209, 1132474625, 1132474625, 1098920209, 1132474625, 1132474625, 1132474625, + /* 6325 */ 1132474625, 1400975617, 1124085777, 1124085761, 1124085761, 1258304513, 2132360255, 2132360255, 2132622399, + /* 6334 */ 2132360255, 2132622399, 2132622399, 2140749119, 2141011263, 2132622399, 2132622399, 2132622399, 2132622399, + /* 6343 */ 2132360255, 2141011263, 2141011263, 0, 0, 512, 131072, 0, 128, 131072, 1024, 134217728, 0, 0, 0, 50331648, + /* 6359 */ 1073741824, 0, 1, 4, 64, 128, 3584, 318767104, 0, 0, 0, 268435456, 0, 12289, 0, 0, 0, 159383552, 25165824, + /* 6378 */ 0, 0, 0, 536870912, 0, 0, 0, 24576, 58720256, 0, 0, 12305, 13313, 0, 0, 0, 1073741824, 0, 0, 0, 12561, 0, + /* 6400 */ 78081, 327155712, 0, 0, 0, 1275068416, 0, 605247, 1058013184, 1073741824, 1073741824, 8388608, 0, 0, + /* 6414 */ 503616, 7864320, 867391, 1058013184, 1073741824, 0, 1, 6, 96, 384, 512, 1024, 4096, 8192, 16384, 229376, + /* 6430 */ 25165824, 33554432, 268435456, 536870912, 0, 867647, 1066401792, 0, 0, 0, 512, 1048576, 0, 0, 9, 8388608, + /* 6446 */ 12288, 0, 0, 0, 512, 2760704, 77824, 0, 0, 0, 1024, 2048, 3145728, 2048, 77824, 524288, 1048576, 0, 0, 0, + /* 6466 */ 512, 0, 1048576, 0, 1, 30, 32, 1024, 2048, 1024, 2048, 339968, 524288, 1048576, 16777216, 100663296, + /* 6482 */ 134217728, 805306368, 1073741824, 1024, 2048, 12288, 65536, 0, 65536, 0, 0, 19947520, 0, 0, 0, 16777216, 0, + /* 6499 */ 0, 0, 5, 1024, 2048, 12288, 327680, 524288, 33554432, 134217728, 536870912, 1073741824, 14, 16, 1024, 4096, + /* 6515 */ 8192, 229376, 0, 2, 16384, 4194304, 0x80000000, 0, 0, 0, 8, 0, 65536, 262144, 7340032, 50331648, 67108864, + /* 6532 */ 0x80000000, 4096, 65536, 262144, 524288, 1048576, 33554432, 256, 0, 256, 0, 256, 1, 12, 1024, 134217728, + /* 6548 */ 262144, 134217728, 536870912, 0, 0, 268435456, 1, 4, 8, 134217728, 4, 8, 536870912, 0, 2, 16, 64, 128, 0, + /* 6567 */ 0, 262144, 536870912, 0, 0, 1073741824, 32768, 0, 8, 32, 512, 4096, 9437184, 0, 0, 1048576, 2097152, + /* 6584 */ 4194304, 67108864, 134217728, 0, 1024, 137363456, 66, 25165824, 26214400, 92274688, 92274688, 25165952, + /* 6596 */ 92274688, 25165824, 25165824, 92274688, 25165824, 25165824, 92274688, 92274688, 92274720, 92274688, + /* 6606 */ 25165824, 92274688, 93323264, 25165890, 100721664, 100721664, 25165890, 100721928, 100721928, 100787464, + /* 6616 */ 100853000, 100721928, 100721928, 125977600, 125977600, 125977600, 125977600, 127026176, 125977600, + /* 6625 */ 125846528, 125846528, 125846560, 125846528, 125846528, 125846528, 126895104, 125846528, 125977600, + /* 6634 */ 127026176, 125977600, 125977600, 127026176, 127026176, 281843, 281843, 1330419, 281843, 1330419, 281843, + /* 6645 */ 1330419, 1330419, 281843, 281843, 281843, 5524723, 39079155, 72633587, 5524723, 5524723, 5524723, 5524723, + /* 6657 */ 93605107, 72633587, 72633587, 92556531, 93605107, 127290611, 127290611, 97799411, 127290611, 131484915, 0, + /* 6668 */ 0, 1536, 0x80000000, 0, 0, 17408, 33554432, 0, 1, 12, 1024, 262144, 0, 58624, 0, 0, 1536, 0, 189696, 0, 0, + /* 6689 */ 0, 1792, 0x80000000, 0, 148480, 50331648, 0, 1, 14, 1024, 4096, 65536, 524288, 240, 19456, 262144, 0, 0, + /* 6707 */ 19456, 262144, 0, 4194304, 0, 0, 1024, 2097152, 0, 0, 0, 150528, 0, 0, 0, 512, 4096, 8192, 131072, 0, + /* 6727 */ 57344, 0, 0, 0, 2048, 100663296, 0, 0, 256, 0, 65536, 524288, 1048576, 33554432, 67108864, 2, 48, 64, 128, + /* 6746 */ 3072, 16384, 262144, 0, 0, 32, 4096, 8192, 131072, 1048576, 8388608, 33554432, 134217728, 2048, 262144, 0, + /* 6762 */ 0, 2048, 268435456, 16, 64, 128, 262144, 0, 0, 32768, 65536, 131072, 0, 1, 2, 16, 64, 0 +]; + +XQueryParser.TOKEN = +[ + "(0)", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSection", + "Wildcard", + "EQName", + "URILiteral", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "StringLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "PITarget", + "NCName", + "QName", + "S", + "S", + "CharRef", + "CommentContents", + "EOF", + "'!'", + "'!='", + "'\"'", + "'#'", + "'#)'", + "'$'", + "'%'", + "''''", + "'('", + "'(#'", + "'(:'", + "')'", + "'*'", + "'*'", + "'+'", + "','", + "'-'", + "'-->'", + "'.'", + "'..'", + "'/'", + "'//'", + "'/>'", + "':'", + "':)'", + "'::'", + "':='", + "';'", + "'<'", + "'<!--'", + "'</'", + "'<<'", + "'<='", + "'<?'", + "'='", + "'>'", + "'>='", + "'>>'", + "'?'", + "'?>'", + "'@'", + "'NaN'", + "'['", + "']'", + "'after'", + "'all'", + "'allowing'", + "'ancestor'", + "'ancestor-or-self'", + "'and'", + "'any'", + "'append'", + "'array'", + "'as'", + "'ascending'", + "'at'", + "'attribute'", + "'base-uri'", + "'before'", + "'boundary-space'", + "'break'", + "'by'", + "'case'", + "'cast'", + "'castable'", + "'catch'", + "'check'", + "'child'", + "'collation'", + "'collection'", + "'comment'", + "'constraint'", + "'construction'", + "'contains'", + "'content'", + "'context'", + "'continue'", + "'copy'", + "'copy-namespaces'", + "'count'", + "'decimal-format'", + "'decimal-separator'", + "'declare'", + "'default'", + "'delete'", + "'descendant'", + "'descendant-or-self'", + "'descending'", + "'diacritics'", + "'different'", + "'digit'", + "'distance'", + "'div'", + "'document'", + "'document-node'", + "'element'", + "'else'", + "'empty'", + "'empty-sequence'", + "'encoding'", + "'end'", + "'entire'", + "'eq'", + "'every'", + "'exactly'", + "'except'", + "'exit'", + "'external'", + "'first'", + "'following'", + "'following-sibling'", + "'for'", + "'foreach'", + "'foreign'", + "'from'", + "'ft-option'", + "'ftand'", + "'ftnot'", + "'ftor'", + "'function'", + "'ge'", + "'greatest'", + "'group'", + "'grouping-separator'", + "'gt'", + "'idiv'", + "'if'", + "'import'", + "'in'", + "'index'", + "'infinity'", + "'inherit'", + "'insensitive'", + "'insert'", + "'instance'", + "'integrity'", + "'intersect'", + "'into'", + "'is'", + "'item'", + "'json'", + "'json-item'", + "'key'", + "'language'", + "'last'", + "'lax'", + "'le'", + "'least'", + "'let'", + "'levels'", + "'loop'", + "'lowercase'", + "'lt'", + "'minus-sign'", + "'mod'", + "'modify'", + "'module'", + "'most'", + "'namespace'", + "'namespace-node'", + "'ne'", + "'next'", + "'no'", + "'no-inherit'", + "'no-preserve'", + "'node'", + "'nodes'", + "'not'", + "'object'", + "'occurs'", + "'of'", + "'on'", + "'only'", + "'option'", + "'or'", + "'order'", + "'ordered'", + "'ordering'", + "'paragraph'", + "'paragraphs'", + "'parent'", + "'pattern-separator'", + "'per-mille'", + "'percent'", + "'phrase'", + "'position'", + "'preceding'", + "'preceding-sibling'", + "'preserve'", + "'previous'", + "'processing-instruction'", + "'relationship'", + "'rename'", + "'replace'", + "'return'", + "'returning'", + "'revalidation'", + "'same'", + "'satisfies'", + "'schema'", + "'schema-attribute'", + "'schema-element'", + "'score'", + "'self'", + "'sensitive'", + "'sentence'", + "'sentences'", + "'skip'", + "'sliding'", + "'some'", + "'stable'", + "'start'", + "'stemming'", + "'stop'", + "'strict'", + "'strip'", + "'structured-item'", + "'switch'", + "'text'", + "'then'", + "'thesaurus'", + "'times'", + "'to'", + "'treat'", + "'try'", + "'tumbling'", + "'type'", + "'typeswitch'", + "'union'", + "'unique'", + "'unordered'", + "'updating'", + "'uppercase'", + "'using'", + "'validate'", + "'value'", + "'variable'", + "'version'", + "'weight'", + "'when'", + "'where'", + "'while'", + "'wildcards'", + "'window'", + "'with'", + "'without'", + "'word'", + "'words'", + "'xquery'", + "'zero-digit'", + "'{'", + "'{{'", + "'{|'", + "'|'", + "'||'", + "'|}'", + "'}'", + "'}}'" +]; + +// End + +},{}],"/node_modules/xqlint/lib/tree_ops.js":[function(_dereq_,module,exports){ +'use strict'; + +exports.TreeOps = { + flatten: function(node){ + var that = this; + var value = ''; + if(!node) { + throw new Error('Invalid node found'); + } else if (node.value === undefined) { + node.children.forEach(function(child){ + value += that.flatten(child); + }); + } else { + value += node.value; + } + return value; + }, + + concat: function(obj1, obj2, copy){ + var result = copy ? {} : obj1; + if(copy){ + Object.keys(obj1).forEach(function(key){ + result[key] = obj1[key]; + }); + } + var keys = Object.keys(obj2); + keys.forEach(function(key){ + result[key] = obj2[key]; + }); + return result; + }, + + removeParentPtr: function(ast){ + if(ast.getParent !== undefined) { + delete ast.getParent; + } + for(var i in ast.children) { + var child = ast.children[i]; + this.removeParentPtr(child); + } + }, + + inRange: function(p, pos, exclusive){ + if(p && p.sl <= pos.line && pos.line <= p.el) { + if(p.sl < pos.line && pos.line < p.el) { + return true; + } else if(p.sl === pos.line && pos.line < p.el) { + return p.sc <= pos.col; + } else if(p.sl === pos.line && p.el === pos.line) { + return p.sc <= pos.col && pos.col <= p.ec + (exclusive ? 1 : 0); + } else if(p.sl < pos.line && p.el === pos.line) { + return pos.col <= p.ec + (exclusive ? 1 : 0); + } + } + }, + + findNode: function(ast, pos) { + if(!ast) { + return; + } + var p = ast.pos; + if(this.inRange(p, pos) === true) { + for(var i in ast.children) { + var child = ast.children[i]; + var n = this.findNode(child, pos); + if(n !== undefined) { + return n; + } + } + return ast; + } else { + return; + } + }, + + astAsXML: function(node, indent){ + var result = ''; + indent = indent ? indent : ''; + if(node.value) { + result += (indent + '<' + node.name + '>' + node.value + '</' + node.name + '>\n'); + } + result += indent + '<' + node.name + '>\n'; + var that = this; + node.children.forEach(function(child){ + result += that.astAsXML(child, indent + ' '); + }); + result += indent + '</' + node.name + '>\n'; + return result; + } +}; +},{}],"/node_modules/xqlint/lib/xqdoc/parse_comment.js":[function(_dereq_,module,exports){ +'use strict'; + +exports.parseComment = function(comment){ + comment = comment.trim(); + var isXQDoc = comment.substring(0, 3) === '(:~'; + if(isXQDoc){ + var lines = comment.split('\n'); + var ann = { + description: '' + }; + lines.forEach(function(line, index){ + if(index === 0) { + line = line.substring(3); + } + line = line.trim(); + if(line[0] === ':') { + line = line.substring(1); + } + line = line.trim(); + ann.description += ' ' + line; + }); + ann.description = ann.description.trim(); + ann.description = ann.description.substring(0, ann.description.length - 2).trim(); + return ann; + } +}; +},{}],"/node_modules/xqlint/lib/xqdoc/xqdoc.js":[function(_dereq_,module,exports){ +var _ = _dereq_('lodash'); +var parseComment = _dereq_('./parse_comment').parseComment; + +exports.XQDoc = function(ast){ + 'use strict'; + + var doc = {}; + + this.getDoc = function(){ + return doc; + }; + + this.WS = function(node){ + if(node.value.trim().substring(0, 3) === '(:~') { + node.getParent.comment = parseComment(node.value); + } + }; + + this.AnnotatedDecl = function(node){ + this.visitChildren(node); + node.comment = node.getParent.comment; + node.getParent.comment = undefined; + }; + + this.XQuery = function(node){ + this.visitChildren(node); + }; + + this.getXQDoc = function(sctx){ + var doc = { + moduleNamespace: sctx.moduleNamespace, + description: sctx.description, + variables: [], + functions: [] + }; + + _.forEach(sctx.variables, function(variable){ + var varDecl = _.cloneDeep(variable.qname); + varDecl.annotations = variable.annotations; + varDecl.description = variable.description; + varDecl.type = variable.type; + varDecl.occurrence = variable.occurrence; + doc.variables.push(varDecl); + }); + + _.forEach(sctx.functions, function(fn, key){ + if(key.substring(0, 'http://www.w3.org/2001/XMLSchema#'.length) === 'http://www.w3.org/2001/XMLSchema#') { + return; + } + + var tokens = key.split('#'); + doc.functions.push({ + name: tokens[0], + uri: tokens[1], + params: fn.params + }); + }); + + return doc; + }; + + this.visit = function (node) { + var name = node.name; + var skip = false; + + if (typeof this[name] === 'function') { + skip = this[name](node) === true; + } + + if (!skip) { + this.visitChildren(node); + } + }; + + this.visitChildren = function (node, handler) { + for (var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + if (handler !== undefined && typeof handler[child.name] === 'function') { + handler[child.name](child); + } else { + this.visit(child); + } + } + }; + + this.visit(ast); +}; + +},{"./parse_comment":"/node_modules/xqlint/lib/xqdoc/parse_comment.js","lodash":"/node_modules/xqlint/node_modules/lodash/index.js"}],"/node_modules/xqlint/lib/xqlint.js":[function(_dereq_,module,exports){ +'use strict'; + +var _ = _dereq_('lodash'); + +var JSONiqParser = _dereq_('./parsers/JSONiqParser').JSONiqParser; +var XQueryParser = _dereq_('./parsers/XQueryParser').XQueryParser; +var JSONParseTreeHandler = _dereq_('./parsers/JSONParseTreeHandler').JSONParseTreeHandler; +var Translator = _dereq_('./compiler/translator').Translator; +var StyleChecker = _dereq_('./formatter/style_checker').StyleChecker; +var XQDoc = _dereq_('./xqdoc/xqdoc').XQDoc; +var completer = _dereq_('../lib/completion/completer'); +var TreeOps = _dereq_('./tree_ops').TreeOps; + +var createStaticContext = exports.createStaticContext = function(){ + var StaticContext = _dereq_('./compiler/static_context').StaticContext; + return new StaticContext(); +}; + +var convertPosition = function (code, begin, end) { + var before = code.substring(0, begin); + var after = code.substring(0, end); + var startline = before.split('\n').length; + var startcolumn = begin - before.lastIndexOf('\n'); + var endline = after.split('\n').length; + var endcolumn = end - after.lastIndexOf('\n'); + var pos = { + sl: startline - 1, + sc: startcolumn - 1, + el: endline - 1, + ec: endcolumn - 1 + }; + return pos; +}; + +exports.JSONiqLexer = _dereq_('./lexers/jsoniq_lexer').JSONiqLexer; +exports.XQueryLexer = _dereq_('./lexers/xquery_lexer').XQueryLexer; +exports.XQLint = function (source, opts) { + + //ACE editor worker hack + if(_.defaults) { + opts = _.defaults(opts ? opts : {}, { styleCheck: false }); + } + + var ast, xqdoc; + var sctx = opts.staticContext ? opts.staticContext : createStaticContext(); + + this.getAST = function () { + return ast; + }; + + this.printAST = function () { + return TreeOps.astAsXML(ast, ' '); + }; + + this.getXQDoc = function () { + return xqdoc.getXQDoc(sctx); + }; + + var markers = []; + this.getMarkers = function () { + return markers; + }; + + this.getMarkers = function(type){ + var m = []; + markers.forEach(function(marker){ + if(marker.type === type || type === undefined){ + m.push(marker); + } + }); + return m; + }; + + this.getErrors = function(){ + return this.getMarkers('error'); + }; + + this.getWarnings = function(){ + return this.getMarkers('warning'); + }; + + this.getCompletions = function(pos){ + return completer.complete(source, ast, sctx, pos); + }; + + var syntaxError = false; + this.hasSyntaxError = function () { + return syntaxError; + }; + + var file = opts.fileName ? opts.fileName : ''; + var isJSONiq = ((file.substring(file.length - '.jq'.length).indexOf('.jq') !== -1) && source.indexOf('xquery version') !== 0) || source.indexOf('jsoniq version') === 0; + var h = new JSONParseTreeHandler(source); + var parser = isJSONiq ? new JSONiqParser(source, h) : new XQueryParser(source, h); + try { + parser.parse_XQuery(); + } catch (e) { + if (e instanceof parser.ParseException) { + syntaxError = true; + h.closeParseTree(); + var pos = convertPosition(source, e.getBegin(), e.getEnd()); + var message = parser.getErrorMessage(e); + if (pos.sc === pos.ec) { + pos.ec++; + } + markers.push({ + pos: pos, + type: 'error', + level: 'error', + message: message + }); + } else { + throw e; + } + } + ast = h.getParseTree(); + if(opts.styleCheck) { + markers = markers.concat(new StyleChecker(ast, source).getMarkers()); + } + xqdoc = new XQDoc(ast); + var translator = new Translator(sctx, ast); + markers = markers.concat(translator.getMarkers()); +}; + +},{"../lib/completion/completer":"/node_modules/xqlint/lib/completion/completer.js","./compiler/static_context":"/node_modules/xqlint/lib/compiler/static_context.js","./compiler/translator":"/node_modules/xqlint/lib/compiler/translator.js","./formatter/style_checker":"/node_modules/xqlint/lib/formatter/style_checker.js","./lexers/jsoniq_lexer":"/node_modules/xqlint/lib/lexers/jsoniq_lexer.js","./lexers/xquery_lexer":"/node_modules/xqlint/lib/lexers/xquery_lexer.js","./parsers/JSONParseTreeHandler":"/node_modules/xqlint/lib/parsers/JSONParseTreeHandler.js","./parsers/JSONiqParser":"/node_modules/xqlint/lib/parsers/JSONiqParser.js","./parsers/XQueryParser":"/node_modules/xqlint/lib/parsers/XQueryParser.js","./tree_ops":"/node_modules/xqlint/lib/tree_ops.js","./xqdoc/xqdoc":"/node_modules/xqlint/lib/xqdoc/xqdoc.js","lodash":"/node_modules/xqlint/node_modules/lodash/index.js"}],"/node_modules/xqlint/node_modules/lodash/index.js":[function(_dereq_,module,exports){ +(function (global){ +/** + * @license + * lodash 3.10.1 (Custom Build) <https://lodash.com/> + * Build: `lodash modern -d -o ./index.js` + * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license <https://lodash.com/license> + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '3.10.1'; + + /** Used to compose bitmasks for wrapper metadata. */ + var BIND_FLAG = 1, + BIND_KEY_FLAG = 2, + CURRY_BOUND_FLAG = 4, + CURRY_FLAG = 8, + CURRY_RIGHT_FLAG = 16, + PARTIAL_FLAG = 32, + PARTIAL_RIGHT_FLAG = 64, + ARY_FLAG = 128, + REARG_FLAG = 256; + + /** Used as default options for `_.trunc`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect when a function becomes hot. */ + var HOT_COUNT = 150, + HOT_SPAN = 16; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2; + + /** Used as the `TypeError` message for "Functions" methods. */ + var FUNC_ERROR_TEXT = 'Expected a function'; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + + var arrayBufferTag = '[object ArrayBuffer]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g, + reUnescapedHtml = /[&<>"'`]/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g; + + /** + * Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns) + * and those outlined by [`EscapeRegExpPattern`](http://ecma-international.org/ecma-262/6.0/#sec-escaperegexppattern). + */ + var reRegExpChars = /^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g, + reHasRegExpChars = RegExp(reRegExpChars.source); + + /** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */ + var reComboMark = /[\u0300-\u036f\ufe20-\ufe23]/g; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect hexadecimal string values. */ + var reHasHexPrefix = /^0[xX]/; + + /** Used to detect host constructors (Safari > 5). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^\d+$/; + + /** Used to match latin-1 supplementary letters (excluding mathematical operators). */ + var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to match words to create compound words. */ + var reWords = (function() { + var upper = '[A-Z\\xc0-\\xd6\\xd8-\\xde]', + lower = '[a-z\\xdf-\\xf6\\xf8-\\xff]+'; + + return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g'); + }()); + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number', + 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'isFinite', + 'parseFloat', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dateTag] = typedArrayTags[errorTag] = + typedArrayTags[funcTag] = typedArrayTags[mapTag] = + typedArrayTags[numberTag] = typedArrayTags[objectTag] = + typedArrayTags[regexpTag] = typedArrayTags[setTag] = + typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = + cloneableTags[dateTag] = cloneableTags[float32Tag] = + cloneableTags[float64Tag] = cloneableTags[int8Tag] = + cloneableTags[int16Tag] = cloneableTags[int32Tag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[stringTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[mapTag] = cloneableTags[setTag] = + cloneableTags[weakMapTag] = false; + + /** Used to map latin-1 supplementary letters to basic latin letters. */ + var deburredLetters = { + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcC': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xeC': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'", + '`': '`' + }; + + /** Used to determine if values are of the language type `Object`. */ + var objectTypes = { + 'function': true, + 'object': true + }; + + /** Used to escape characters for inclusion in compiled regexes. */ + var regexpEscapes = { + '0': 'x30', '1': 'x31', '2': 'x32', '3': 'x33', '4': 'x34', + '5': 'x35', '6': 'x36', '7': 'x37', '8': 'x38', '9': 'x39', + 'A': 'x41', 'B': 'x42', 'C': 'x43', 'D': 'x44', 'E': 'x45', 'F': 'x46', + 'a': 'x61', 'b': 'x62', 'c': 'x63', 'd': 'x64', 'e': 'x65', 'f': 'x66', + 'n': 'x6e', 'r': 'x72', 't': 'x74', 'u': 'x75', 'v': 'x76', 'x': 'x78' + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Detect free variable `exports`. */ + var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global; + + /** Detect free variable `self`. */ + var freeSelf = objectTypes[typeof self] && self && self.Object && self; + + /** Detect free variable `window`. */ + var freeWindow = objectTypes[typeof window] && window && window.Object && window; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; + + /** + * Used as a reference to the global object. + * + * The `this` value is used if it's the global object to avoid Greasemonkey's + * restricted `window` object, otherwise the `window` object is used. + */ + var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this; + + /*--------------------------------------------------------------------------*/ + + /** + * The base implementation of `compareAscending` which compares values and + * sorts them in ascending order without guaranteeing a stable sort. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function baseCompareAscending(value, other) { + if (value !== other) { + var valIsNull = value === null, + valIsUndef = value === undefined, + valIsReflexive = value === value; + + var othIsNull = other === null, + othIsUndef = other === undefined, + othIsReflexive = other === other; + + if ((value > other && !othIsNull) || !valIsReflexive || + (valIsNull && !othIsUndef && othIsReflexive) || + (valIsUndef && othIsReflexive)) { + return 1; + } + if ((value < other && !valIsNull) || !othIsReflexive || + (othIsNull && !valIsUndef && valIsReflexive) || + (othIsUndef && valIsReflexive)) { + return -1; + } + } + return 0; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to search. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without support for binary searches. + * + * @private + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return indexOfNaN(array, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isFunction` without support for environments + * with incorrect `typeof` results. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + */ + function baseIsFunction(value) { + // Avoid a Chakra JIT bug in compatibility modes of IE 11. + // See https://github.com/jashkenas/underscore/issues/1621 for more details. + return typeof value == 'function' || false; + } + + /** + * Converts `value` to a string if it's not one. An empty string is returned + * for `null` or `undefined` values. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + return value == null ? '' : (value + ''); + } + + /** + * Used by `_.trim` and `_.trimLeft` to get the index of the first character + * of `string` that is not found in `chars`. + * + * @private + * @param {string} string The string to inspect. + * @param {string} chars The characters to find. + * @returns {number} Returns the index of the first character not found in `chars`. + */ + function charsLeftIndex(string, chars) { + var index = -1, + length = string.length; + + while (++index < length && chars.indexOf(string.charAt(index)) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimRight` to get the index of the last character + * of `string` that is not found in `chars`. + * + * @private + * @param {string} string The string to inspect. + * @param {string} chars The characters to find. + * @returns {number} Returns the index of the last character not found in `chars`. + */ + function charsRightIndex(string, chars) { + var index = string.length; + + while (index-- && chars.indexOf(string.charAt(index)) > -1) {} + return index; + } + + /** + * Used by `_.sortBy` to compare transformed elements of a collection and stable + * sort them in ascending order. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareAscending(object, other) { + return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index); + } + + /** + * Used by `_.sortByOrder` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all valuess are sorted in ascending order. Otherwise, + * a value is sorted in ascending order if its corresponding order is "asc", and + * descending if "desc". + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = baseCompareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * ((order === 'asc' || order === true) ? 1 : -1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://code.google.com/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + function deburrLetter(letter) { + return deburredLetters[letter]; + } + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeHtmlChar(chr) { + return htmlEscapes[chr]; + } + + /** + * Used by `_.escapeRegExp` to escape characters for inclusion in compiled regexes. + * + * @private + * @param {string} chr The matched character to escape. + * @param {string} leadingChar The capture group for a leading character. + * @param {string} whitespaceChar The capture group for a whitespace character. + * @returns {string} Returns the escaped character. + */ + function escapeRegExpChar(chr, leadingChar, whitespaceChar) { + if (leadingChar) { + chr = regexpEscapes[chr]; + } else if (whitespaceChar) { + chr = stringEscapes[chr]; + } + return '\\' + chr; + } + + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the index at which the first occurrence of `NaN` is found in `array`. + * + * @private + * @param {Array} array The array to search. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched `NaN`, else `-1`. + */ + function indexOfNaN(array, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 0 : -1); + + while ((fromRight ? index-- : ++index < length)) { + var other = array[index]; + if (other !== other) { + return index; + } + } + return -1; + } + + /** + * Checks if `value` is object-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + */ + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + /** + * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a + * character code is whitespace. + * + * @private + * @param {number} charCode The character code to inspect. + * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`. + */ + function isSpace(charCode) { + return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 || + (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279))); + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + if (array[index] === placeholder) { + array[index] = PLACEHOLDER; + result[++resIndex] = index; + } + } + return result; + } + + /** + * An implementation of `_.uniq` optimized for sorted arrays without support + * for callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The function invoked per iteration. + * @returns {Array} Returns the new duplicate-value-free array. + */ + function sortedUniq(array, iteratee) { + var seen, + index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value, index, array) : value; + + if (!index || seen !== computed) { + seen = computed; + result[++resIndex] = value; + } + } + return result; + } + + /** + * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the first non-whitespace character. + */ + function trimmedLeftIndex(string) { + var index = -1, + length = string.length; + + while (++index < length && isSpace(string.charCodeAt(index))) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedRightIndex(string) { + var index = string.length; + + while (index-- && isSpace(string.charCodeAt(index))) {} + return index; + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + function unescapeHtmlChar(chr) { + return htmlUnescapes[chr]; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the given `context` object. + * + * @static + * @memberOf _ + * @category Utility + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // using `context` to mock `Date#getTime` use in `_.now` + * var mock = _.runInContext({ + * 'Date': function() { + * return { 'getTime': getTimeMock }; + * } + * }); + * + * // or creating a suped-up `defer` in Node.js + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + function runInContext(context) { + // Avoid issues with some ES3 environments that attempt to use values, named + // after built-in constructors like `Object`, for the creation of literals. + // ES5 clears this up by stating that literals must use built-in constructors. + // See https://es5.github.io/#x11.1.5 for more details. + context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; + + /** Native constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Number = context.Number, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for native method references. */ + var arrayProto = Array.prototype, + objectProto = Object.prototype, + stringProto = String.prototype; + + /** Used to resolve the decompiled source of functions. */ + var fnToString = Function.prototype.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ + var objToString = objectProto.toString; + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Native method references. */ + var ArrayBuffer = context.ArrayBuffer, + clearTimeout = context.clearTimeout, + parseFloat = context.parseFloat, + pow = Math.pow, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + Set = getNative(context, 'Set'), + setTimeout = context.setTimeout, + splice = arrayProto.splice, + Uint8Array = context.Uint8Array, + WeakMap = getNative(context, 'WeakMap'); + + /* Native method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeCreate = getNative(Object, 'create'), + nativeFloor = Math.floor, + nativeIsArray = getNative(Array, 'isArray'), + nativeIsFinite = context.isFinite, + nativeKeys = getNative(Object, 'keys'), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = getNative(Date, 'now'), + nativeParseInt = context.parseInt, + nativeRandom = Math.random; + + /** Used as references for `-Infinity` and `Infinity`. */ + var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY, + POSITIVE_INFINITY = Number.POSITIVE_INFINITY; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) + * of an array-like value. + */ + var MAX_SAFE_INTEGER = 9007199254740991; + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit chaining. + * Methods that operate on and return arrays, collections, and functions can + * be chained together. Methods that retrieve a single value or may return a + * primitive value will automatically end the chain returning the unwrapped + * value. Explicit chaining may be enabled using `_.chain`. The execution of + * chained methods is lazy, that is, execution is deferred until `_#value` + * is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. Shortcut + * fusion is an optimization strategy which merge iteratee calls; this can help + * to avoid the creation of intermediate data structures and greatly reduce the + * number of iteratee executions. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, + * `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, + * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, + * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, + * and `where` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, + * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, + * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`, + * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`, + * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, + * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, + * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, + * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, + * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`, + * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`, + * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, + * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`, + * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, + * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`, + * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, + * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`, + * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`, + * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, + * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, + * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, + * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, + * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`, + * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`, + * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`, + * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`, + * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`, + * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`, + * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, + * `unescape`, `uniqueId`, `value`, and `words` + * + * The wrapper method `sample` will return a wrapped value when `n` is provided, + * otherwise an unwrapped value is returned. + * + * @name _ + * @constructor + * @category Chain + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var wrapped = _([1, 2, 3]); + * + * // returns an unwrapped value + * wrapped.reduce(function(total, n) { + * return total + n; + * }); + * // => 6 + * + * // returns a wrapped value + * var squares = wrapped.map(function(n) { + * return n * n; + * }); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The function whose prototype all chaining wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable chaining for all wrapper methods. + * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value. + */ + function LodashWrapper(value, chainAll, actions) { + this.__wrapped__ = value; + this.__actions__ = actions || []; + this.__chain__ = !!chainAll; + } + + /** + * An object environment feature flags. + * + * @static + * @memberOf _ + * @type Object + */ + var support = lodash.support = {}; + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB). Change the following template settings to use + * alternative delimiters. + * + * @static + * @memberOf _ + * @type Object + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type string + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type Object + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type Function + */ + '_': lodash + } + }; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = POSITIVE_INFINITY; + this.__views__ = []; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = arrayCopy(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = arrayCopy(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = arrayCopy(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) { + return baseWrapperValue((isRight && isArr) ? array.reverse() : array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a cache object to store key/value pairs. + * + * @private + * @static + * @name Cache + * @memberOf _.memoize + */ + function MapCache() { + this.__data__ = {}; + } + + /** + * Removes `key` and its value from the cache. + * + * @private + * @name delete + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`. + */ + function mapDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + /** + * Gets the cached value for `key`. + * + * @private + * @name get + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to get. + * @returns {*} Returns the cached value. + */ + function mapGet(key) { + return key == '__proto__' ? undefined : this.__data__[key]; + } + + /** + * Checks if a cached value for `key` exists. + * + * @private + * @name has + * @memberOf _.memoize.Cache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapHas(key) { + return key != '__proto__' && hasOwnProperty.call(this.__data__, key); + } + + /** + * Sets `value` to `key` of the cache. + * + * @private + * @name set + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to cache. + * @param {*} value The value to cache. + * @returns {Object} Returns the cache object. + */ + function mapSet(key, value) { + if (key != '__proto__') { + this.__data__[key] = value; + } + return this; + } + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates a cache object to store unique values. + * + * @private + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var length = values ? values.length : 0; + + this.data = { 'hash': nativeCreate(null), 'set': new Set }; + while (length--) { + this.push(values[length]); + } + } + + /** + * Checks if `value` is in `cache` mimicking the return signature of + * `_.indexOf` by returning `0` if the value is found, else `-1`. + * + * @private + * @param {Object} cache The cache to search. + * @param {*} value The value to search for. + * @returns {number} Returns `0` if `value` is found, else `-1`. + */ + function cacheIndexOf(cache, value) { + var data = cache.data, + result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value]; + + return result ? 0 : -1; + } + + /** + * Adds `value` to the cache. + * + * @private + * @name push + * @memberOf SetCache + * @param {*} value The value to cache. + */ + function cachePush(value) { + var data = this.data; + if (typeof value == 'string' || isObject(value)) { + data.set.add(value); + } else { + data.hash[value] = true; + } + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a new array joining `array` with `other`. + * + * @private + * @param {Array} array The array to join. + * @param {Array} other The other array to join. + * @returns {Array} Returns the new concatenated array. + */ + function arrayConcat(array, other) { + var index = -1, + length = array.length, + othIndex = -1, + othLength = other.length, + result = Array(length + othLength); + + while (++index < length) { + result[index] = array[index]; + } + while (++othIndex < othLength) { + result[index++] = other[othIndex]; + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function arrayCopy(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * A specialized version of `_.forEach` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `baseExtremum` for arrays which invokes `iteratee` + * with one argument: (value). + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} comparator The function used to compare values. + * @param {*} exValue The initial extremum value. + * @returns {*} Returns the extremum value. + */ + function arrayExtremum(array, iteratee, comparator, exValue) { + var index = -1, + length = array.length, + computed = exValue, + result = computed; + + while (++index < length) { + var value = array[index], + current = +iteratee(value); + + if (comparator(current, computed)) { + computed = current; + result = value; + } + } + return result; + } + + /** + * A specialized version of `_.filter` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[++resIndex] = value; + } + } + return result; + } + + /** + * A specialized version of `_.map` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initFromArray] Specify using the first element of `array` + * as the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initFromArray) { + var index = -1, + length = array.length; + + if (initFromArray && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initFromArray] Specify using the last element of `array` + * as the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initFromArray) { + var length = array.length; + if (initFromArray && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.sum` for arrays without support for callback + * shorthands and `this` binding.. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function arraySum(array, iteratee) { + var length = array.length, + result = 0; + + while (length--) { + result += +iteratee(array[length]) || 0; + } + return result; + } + + /** + * Used by `_.defaults` to customize its `_.assign` use. + * + * @private + * @param {*} objectValue The destination object property value. + * @param {*} sourceValue The source object property value. + * @returns {*} Returns the value to assign to the destination object. + */ + function assignDefaults(objectValue, sourceValue) { + return objectValue === undefined ? sourceValue : objectValue; + } + + /** + * Used by `_.template` to customize its `_.assign` use. + * + * **Note:** This function is like `assignDefaults` except that it ignores + * inherited property values when checking if a property is `undefined`. + * + * @private + * @param {*} objectValue The destination object property value. + * @param {*} sourceValue The source object property value. + * @param {string} key The key associated with the object and source values. + * @param {Object} object The destination object. + * @returns {*} Returns the value to assign to the destination object. + */ + function assignOwnDefaults(objectValue, sourceValue, key, object) { + return (objectValue === undefined || !hasOwnProperty.call(object, key)) + ? sourceValue + : objectValue; + } + + /** + * A specialized version of `_.assign` for customizing assigned values without + * support for argument juggling, multiple sources, and `this` binding `customizer` + * functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + */ + function assignWith(object, source, customizer) { + var index = -1, + props = keys(source), + length = props.length; + + while (++index < length) { + var key = props[index], + value = object[key], + result = customizer(value, source[key], key, object, source); + + if ((result === result ? (result !== value) : (value === value)) || + (value === undefined && !(key in object))) { + object[key] = result; + } + } + return object; + } + + /** + * The base implementation of `_.assign` without support for argument juggling, + * multiple sources, and `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return source == null + ? object + : baseCopy(source, keys(source), object); + } + + /** + * The base implementation of `_.at` without support for string collections + * and individual key arguments. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {number[]|string[]} props The property names or indexes of elements to pick. + * @returns {Array} Returns the new array of picked elements. + */ + function baseAt(collection, props) { + var index = -1, + isNil = collection == null, + isArr = !isNil && isArrayLike(collection), + length = isArr ? collection.length : 0, + propsLength = props.length, + result = Array(propsLength); + + while(++index < propsLength) { + var key = props[index]; + if (isArr) { + result[index] = isIndex(key, length) ? collection[key] : undefined; + } else { + result[index] = isNil ? undefined : collection[key]; + } + } + return result; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property names to copy. + * @param {Object} [object={}] The object to copy properties to. + * @returns {Object} Returns `object`. + */ + function baseCopy(source, props, object) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + object[key] = source[key]; + } + return object; + } + + /** + * The base implementation of `_.callback` which supports specifying the + * number of arguments to provide to `func`. + * + * @private + * @param {*} [func=_.identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [argCount] The number of arguments to provide to `func`. + * @returns {Function} Returns the callback. + */ + function baseCallback(func, thisArg, argCount) { + var type = typeof func; + if (type == 'function') { + return thisArg === undefined + ? func + : bindCallback(func, thisArg, argCount); + } + if (func == null) { + return identity; + } + if (type == 'object') { + return baseMatches(func); + } + return thisArg === undefined + ? property(func) + : baseMatchesProperty(func, thisArg); + } + + /** + * The base implementation of `_.clone` without support for argument juggling + * and `this` binding `customizer` functions. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The object `value` belongs to. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates clones with source counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, isDeep, customizer, key, object, stackA, stackB) { + var result; + if (customizer) { + result = object ? customizer(value, key, object) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return arrayCopy(value, result); + } + } else { + var tag = objToString.call(value), + isFunc = tag == funcTag; + + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = initCloneObject(isFunc ? {} : value); + if (!isDeep) { + return baseAssign(result, value); + } + } else { + return cloneableTags[tag] + ? initCloneByTag(value, tag, isDeep) + : (object ? value : {}); + } + } + // Check for circular references and return its corresponding clone. + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == value) { + return stackB[length]; + } + } + // Add the source value to the stack of traversed objects and associate it with its clone. + stackA.push(value); + stackB.push(result); + + // Recursively populate clone (susceptible to call stack limits). + (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { + result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB); + }); + return result; + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(prototype) { + if (isObject(prototype)) { + object.prototype = prototype; + var result = new object; + object.prototype = undefined; + } + return result || {}; + }; + }()); + + /** + * The base implementation of `_.delay` and `_.defer` which accepts an index + * of where to slice the arguments to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Object} args The arguments provide to `func`. + * @returns {number} Returns the timer id. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of `_.difference` which accepts a single array + * of values to exclude. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values) { + var length = array ? array.length : 0, + result = []; + + if (!length) { + return result; + } + var index = -1, + indexOf = getIndexOf(), + isCommon = indexOf == baseIndexOf, + cache = (isCommon && values.length >= LARGE_ARRAY_SIZE) ? createCache(values) : null, + valuesLength = values.length; + + if (cache) { + indexOf = cacheIndexOf; + isCommon = false; + values = cache; + } + outer: + while (++index < length) { + var value = array[index]; + + if (isCommon && value === value) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === value) { + continue outer; + } + } + result.push(value); + } + else if (indexOf(values, value, 0) < 0) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object|string} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object|string} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * Gets the extremum value of `collection` invoking `iteratee` for each value + * in `collection` to generate the criterion by which the value is ranked. + * The `iteratee` is invoked with three arguments: (value, index|key, collection). + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} comparator The function used to compare values. + * @param {*} exValue The initial extremum value. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(collection, iteratee, comparator, exValue) { + var computed = exValue, + result = computed; + + baseEach(collection, function(value, index, collection) { + var current = +iteratee(value, index, collection); + if (comparator(current, computed) || (current === exValue && current === result)) { + computed = current; + result = value; + } + }); + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = start == null ? 0 : (+start || 0); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : (+end || 0); + if (end < 0) { + end += length; + } + length = start > end ? 0 : (end >>> 0); + start >>>= 0; + + while (start < length) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`, + * without support for callback shorthands and `this` binding, which iterates + * over `collection` using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to search. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @param {boolean} [retKey] Specify returning the key of the found element + * instead of the element itself. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFind(collection, predicate, eachFunc, retKey) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = retKey ? key : value; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with added support for restricting + * flattening and specifying the start index. + * + * @private + * @param {Array} array The array to flatten. + * @param {boolean} [isDeep] Specify a deep flatten. + * @param {boolean} [isStrict] Restrict flattening to arrays-like objects. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, isDeep, isStrict, result) { + result || (result = []); + + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index]; + if (isObjectLike(value) && isArrayLike(value) && + (isStrict || isArray(value) || isArguments(value))) { + if (isDeep) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, isDeep, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForIn` and `baseForOwn` which iterates + * over `object` properties returned by `keysFunc` invoking `iteratee` for + * each property. Iteratee functions may exit iteration early by explicitly + * returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forIn` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForIn(object, iteratee) { + return baseFor(object, iteratee, keysIn); + } + + /** + * The base implementation of `_.forOwn` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from those provided. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the new array of filtered property names. + */ + function baseFunctions(object, props) { + var index = -1, + length = props.length, + resIndex = -1, + result = []; + + while (++index < length) { + var key = props[index]; + if (isFunction(object[key])) { + result[++resIndex] = key; + } + } + return result; + } + + /** + * The base implementation of `get` without support for string paths + * and default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path of the property to get. + * @param {string} [pathKey] The key representation of path. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path, pathKey) { + if (object == null) { + return; + } + if (pathKey !== undefined && pathKey in toObject(object)) { + path = [pathKey]; + } + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[path[index++]]; + } + return (index && index == length) ? object : undefined; + } + + /** + * The base implementation of `_.isEqual` without support for `this` binding + * `customizer` functions. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparing values. + * @param {boolean} [isLoose] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing objects. + * @param {boolean} [isLoose] Specify performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `value` objects. + * @param {Array} [stackB=[]] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; + + if (!objIsArr) { + objTag = objToString.call(object); + if (objTag == argsTag) { + objTag = objectTag; + } else if (objTag != objectTag) { + objIsArr = isTypedArray(object); + } + } + if (!othIsArr) { + othTag = objToString.call(other); + if (othTag == argsTag) { + othTag = objectTag; + } else if (othTag != objectTag) { + othIsArr = isTypedArray(other); + } + } + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && !(objIsArr || objIsObj)) { + return equalByTag(object, other, objTag); + } + if (!isLoose) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB); + } + } + if (!isSameTag) { + return false; + } + // Assume cyclic values are equal. + // For more information on detecting circular references see https://es5.github.io/#JO. + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == object) { + return stackB[length] == other; + } + } + // Add `object` and `other` to the stack of traversed objects. + stackA.push(object); + stackB.push(other); + + var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB); + + stackA.pop(); + stackB.pop(); + + return result; + } + + /** + * The base implementation of `_.isMatch` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} matchData The propery names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparing objects. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = toObject(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var result = customizer ? customizer(objValue, srcValue, key) : undefined; + if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) { + return false; + } + } + } + return true; + } + + /** + * The base implementation of `_.map` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which does not clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + var key = matchData[0][0], + value = matchData[0][1]; + + return function(object) { + if (object == null) { + return false; + } + return object[key] === value && (value !== undefined || (key in toObject(object))); + }; + } + return function(object) { + return baseIsMatch(object, matchData); + }; + } + + /** + * The base implementation of `_.matchesProperty` which does not clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to compare. + * @returns {Function} Returns the new function. + */ + function baseMatchesProperty(path, srcValue) { + var isArr = isArray(path), + isCommon = isKey(path) && isStrictComparable(srcValue), + pathKey = (path + ''); + + path = toPath(path); + return function(object) { + if (object == null) { + return false; + } + var key = pathKey; + object = toObject(object); + if ((isArr || !isCommon) && !(key in object)) { + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + if (object == null) { + return false; + } + key = last(path); + object = toObject(object); + } + return object[key] === srcValue + ? (srcValue !== undefined || (key in object)) + : baseIsEqual(srcValue, object[key], undefined, true); + }; + } + + /** + * The base implementation of `_.merge` without support for argument juggling, + * multiple sources, and `this` binding `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {Function} [customizer] The function to customize merged values. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates values with source counterparts. + * @returns {Object} Returns `object`. + */ + function baseMerge(object, source, customizer, stackA, stackB) { + if (!isObject(object)) { + return object; + } + var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)), + props = isSrcArr ? undefined : keys(source); + + arrayEach(props || source, function(srcValue, key) { + if (props) { + key = srcValue; + srcValue = source[key]; + } + if (isObjectLike(srcValue)) { + stackA || (stackA = []); + stackB || (stackB = []); + baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB); + } + else { + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = result === undefined; + + if (isCommon) { + result = srcValue; + } + if ((result !== undefined || (isSrcArr && !(key in object))) && + (isCommon || (result === result ? (result !== value) : (value === value)))) { + object[key] = result; + } + } + }); + return object; + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize merged values. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates values with source counterparts. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) { + var length = stackA.length, + srcValue = source[key]; + + while (length--) { + if (stackA[length] == srcValue) { + object[key] = stackB[length]; + return; + } + } + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = result === undefined; + + if (isCommon) { + result = srcValue; + if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) { + result = isArray(value) + ? value + : (isArrayLike(value) ? arrayCopy(value) : []); + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + result = isArguments(value) + ? toPlainObject(value) + : (isPlainObject(value) ? value : {}); + } + else { + isCommon = false; + } + } + // Add the source value to the stack of traversed objects and associate + // it with its merged value. + stackA.push(srcValue); + stackB.push(result); + + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); + } else if (result === result ? (result !== value) : (value === value)) { + object[key] = result; + } + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new function. + */ + function basePropertyDeep(path) { + var pathKey = (path + ''); + path = toPath(path); + return function(object) { + return baseGet(object, path, pathKey); + }; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * index arguments and capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0; + while (length--) { + var index = indexes[length]; + if (index != previous && isIndex(index)) { + var previous = index; + splice.call(array, index, 1); + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for argument juggling + * and returning floating-point numbers. + * + * @private + * @param {number} min The minimum possible value. + * @param {number} max The maximum possible value. + * @returns {number} Returns the random number. + */ + function baseRandom(min, max) { + return min + nativeFloor(nativeRandom() * (max - min + 1)); + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight` without support + * for callback shorthands and `this` binding, which iterates over `collection` + * using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initFromCollection Specify using the first or last element + * of `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initFromCollection + ? (initFromCollection = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `setData` without support for hot loop detection. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + start = start == null ? 0 : (+start || 0); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : (+end || 0); + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define + * the sort order of `array` and replaces criteria objects with their + * corresponding values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sortByOrder` without param guards. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {boolean[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseSortByOrder(collection, iteratees, orders) { + var callback = getCallback(), + index = -1; + + iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); }); + + var result = baseMap(collection, function(value) { + var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.sum` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(collection, iteratee) { + var result = 0; + baseEach(collection, function(value, index, collection) { + result += +iteratee(value, index, collection) || 0; + }); + return result; + } + + /** + * The base implementation of `_.uniq` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The function invoked per iteration. + * @returns {Array} Returns the new duplicate-value-free array. + */ + function baseUniq(array, iteratee) { + var index = -1, + indexOf = getIndexOf(), + length = array.length, + isCommon = indexOf == baseIndexOf, + isLarge = isCommon && length >= LARGE_ARRAY_SIZE, + seen = isLarge ? createCache() : null, + result = []; + + if (seen) { + indexOf = cacheIndexOf; + isCommon = false; + } else { + isLarge = false; + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value, index, array) : value; + + if (isCommon && value === value) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (indexOf(seen, computed, 0) < 0) { + if (iteratee || isLarge) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + var index = -1, + length = props.length, + result = Array(length); + + while (++index < length) { + result[index] = object[props[index]]; + } + return result; + } + + /** + * The base implementation of `_.dropRightWhile`, `_.dropWhile`, `_.takeRightWhile`, + * and `_.takeWhile` without support for callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {} + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to peform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + var index = -1, + length = actions.length; + + while (++index < length) { + var action = actions[index]; + result = action.func.apply(action.thisArg, arrayPush([result], action.args)); + } + return result; + } + + /** + * Performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function binaryIndex(array, value, retHighest) { + var low = 0, + high = array ? array.length : low; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return binaryIndexBy(array, value, identity, retHighest); + } + + /** + * This function is like `binaryIndex` except that it invokes `iteratee` for + * `value` and each element of `array` to compute their sort ranking. The + * iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The function invoked per iteration. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function binaryIndexBy(array, value, iteratee, retHighest) { + value = iteratee(value); + + var low = 0, + high = array ? array.length : 0, + valIsNaN = value !== value, + valIsNull = value === null, + valIsUndef = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + isDef = computed !== undefined, + isReflexive = computed === computed; + + if (valIsNaN) { + var setLow = isReflexive || retHighest; + } else if (valIsNull) { + setLow = isReflexive && isDef && (retHighest || computed != null); + } else if (valIsUndef) { + setLow = isReflexive && (retHighest || isDef); + } else if (computed == null) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * A specialized version of `baseCallback` which only supports `this` binding + * and specifying the number of arguments to provide to `func`. + * + * @private + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {number} [argCount] The number of arguments to provide to `func`. + * @returns {Function} Returns the callback. + */ + function bindCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + if (thisArg === undefined) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + case 5: return function(value, other, key, object, source) { + return func.call(thisArg, value, other, key, object, source); + }; + } + return function() { + return func.apply(thisArg, arguments); + }; + } + + /** + * Creates a clone of the given array buffer. + * + * @private + * @param {ArrayBuffer} buffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function bufferClone(buffer) { + var result = new ArrayBuffer(buffer.byteLength), + view = new Uint8Array(result); + + view.set(new Uint8Array(buffer)); + return result; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array|Object} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders) { + var holdersLength = holders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - holdersLength, 0), + leftIndex = -1, + leftLength = partials.length, + result = Array(leftLength + argsLength); + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + while (argsLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array|Object} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders) { + var holdersIndex = -1, + holdersLength = holders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - holdersLength, 0), + rightIndex = -1, + rightLength = partials.length, + result = Array(argsLength + rightLength); + + while (++argsIndex < argsLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + return result; + } + + /** + * Creates a `_.countBy`, `_.groupBy`, `_.indexBy`, or `_.partition` function. + * + * @private + * @param {Function} setter The function to set keys and values of the accumulator object. + * @param {Function} [initializer] The function to initialize the accumulator object. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee, thisArg) { + var result = initializer ? initializer() : {}; + iteratee = getCallback(iteratee, thisArg, 3); + + if (isArray(collection)) { + var index = -1, + length = collection.length; + + while (++index < length) { + var value = collection[index]; + setter(result, value, iteratee(value, index, collection), collection); + } + } else { + baseEach(collection, function(value, key, collection) { + setter(result, value, iteratee(value, key, collection), collection); + }); + } + return result; + }; + } + + /** + * Creates a `_.assign`, `_.defaults`, or `_.merge` function. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return restParam(function(object, sources) { + var index = -1, + length = object == null ? 0 : sources.length, + customizer = length > 2 ? sources[length - 2] : undefined, + guard = length > 2 ? sources[2] : undefined, + thisArg = length > 1 ? sources[length - 1] : undefined; + + if (typeof customizer == 'function') { + customizer = bindCallback(customizer, thisArg, 5); + length -= 2; + } else { + customizer = typeof thisArg == 'function' ? thisArg : undefined; + length -= (customizer ? 1 : 0); + } + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + var length = collection ? getLength(collection) : 0; + if (!isLength(length)) { + return eachFunc(collection, iteratee); + } + var index = fromRight ? length : -1, + iterable = toObject(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for `_.forIn` or `_.forInRight`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var iterable = toObject(object), + props = keysFunc(object), + length = props.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length)) { + var key = props[index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` and invokes it with the `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to bind. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new bound function. + */ + function createBindWrapper(func, thisArg) { + var Ctor = createCtorWrapper(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(thisArg, arguments); + } + return wrapper; + } + + /** + * Creates a `Set` cache object to optimize linear searches of large arrays. + * + * @private + * @param {Array} [values] The values to cache. + * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`. + */ + function createCache(values) { + return (nativeCreate && Set) ? new SetCache(values) : null; + } + + /** + * Creates a function that produces compound words out of the words in a + * given string. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + var index = -1, + array = words(deburr(string)), + length = array.length, + result = ''; + + while (++index < length) { + result = callback(result, array[index], index); + } + return result; + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtorWrapper(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. + // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a `_.curry` or `_.curryRight` function. + * + * @private + * @param {boolean} flag The curry bit flag. + * @returns {Function} Returns the new curry function. + */ + function createCurry(flag) { + function curryFunc(func, arity, guard) { + if (guard && isIterateeCall(func, arity, guard)) { + arity = undefined; + } + var result = createWrapper(func, flag, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryFunc.placeholder; + return result; + } + return curryFunc; + } + + /** + * Creates a `_.defaults` or `_.defaultsDeep` function. + * + * @private + * @param {Function} assigner The function to assign values. + * @param {Function} customizer The function to customize assigned values. + * @returns {Function} Returns the new defaults function. + */ + function createDefaults(assigner, customizer) { + return restParam(function(args) { + var object = args[0]; + if (object == null) { + return object; + } + args.push(customizer); + return assigner.apply(undefined, args); + }); + } + + /** + * Creates a `_.max` or `_.min` function. + * + * @private + * @param {Function} comparator The function used to compare values. + * @param {*} exValue The initial extremum value. + * @returns {Function} Returns the new extremum function. + */ + function createExtremum(comparator, exValue) { + return function(collection, iteratee, thisArg) { + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = undefined; + } + iteratee = getCallback(iteratee, thisArg, 3); + if (iteratee.length == 1) { + collection = isArray(collection) ? collection : toIterable(collection); + var result = arrayExtremum(collection, iteratee, comparator, exValue); + if (!(collection.length && result === exValue)) { + return result; + } + } + return baseExtremum(collection, iteratee, comparator, exValue); + }; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new find function. + */ + function createFind(eachFunc, fromRight) { + return function(collection, predicate, thisArg) { + predicate = getCallback(predicate, thisArg, 3); + if (isArray(collection)) { + var index = baseFindIndex(collection, predicate, fromRight); + return index > -1 ? collection[index] : undefined; + } + return baseFind(collection, predicate, eachFunc); + }; + } + + /** + * Creates a `_.findIndex` or `_.findLastIndex` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new find function. + */ + function createFindIndex(fromRight) { + return function(array, predicate, thisArg) { + if (!(array && array.length)) { + return -1; + } + predicate = getCallback(predicate, thisArg, 3); + return baseFindIndex(array, predicate, fromRight); + }; + } + + /** + * Creates a `_.findKey` or `_.findLastKey` function. + * + * @private + * @param {Function} objectFunc The function to iterate over an object. + * @returns {Function} Returns the new find function. + */ + function createFindKey(objectFunc) { + return function(object, predicate, thisArg) { + predicate = getCallback(predicate, thisArg, 3); + return baseFind(object, predicate, objectFunc, true); + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return function() { + var wrapper, + length = arguments.length, + index = fromRight ? length : -1, + leftIndex = 0, + funcs = Array(length); + + while ((fromRight ? index-- : ++index < length)) { + var func = funcs[leftIndex++] = arguments[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (!wrapper && LodashWrapper.prototype.thru && getFuncName(func) == 'wrapper') { + wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? -1 : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && !data[4].length && data[9] == 1) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) ? wrapper[funcName]() : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value) && value.length >= LARGE_ARRAY_SIZE) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }; + } + + /** + * Creates a function for `_.forEach` or `_.forEachRight`. + * + * @private + * @param {Function} arrayFunc The function to iterate over an array. + * @param {Function} eachFunc The function to iterate over a collection. + * @returns {Function} Returns the new each function. + */ + function createForEach(arrayFunc, eachFunc) { + return function(collection, iteratee, thisArg) { + return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) + ? arrayFunc(collection, iteratee) + : eachFunc(collection, bindCallback(iteratee, thisArg, 3)); + }; + } + + /** + * Creates a function for `_.forIn` or `_.forInRight`. + * + * @private + * @param {Function} objectFunc The function to iterate over an object. + * @returns {Function} Returns the new each function. + */ + function createForIn(objectFunc) { + return function(object, iteratee, thisArg) { + if (typeof iteratee != 'function' || thisArg !== undefined) { + iteratee = bindCallback(iteratee, thisArg, 3); + } + return objectFunc(object, iteratee, keysIn); + }; + } + + /** + * Creates a function for `_.forOwn` or `_.forOwnRight`. + * + * @private + * @param {Function} objectFunc The function to iterate over an object. + * @returns {Function} Returns the new each function. + */ + function createForOwn(objectFunc) { + return function(object, iteratee, thisArg) { + if (typeof iteratee != 'function' || thisArg !== undefined) { + iteratee = bindCallback(iteratee, thisArg, 3); + } + return objectFunc(object, iteratee); + }; + } + + /** + * Creates a function for `_.mapKeys` or `_.mapValues`. + * + * @private + * @param {boolean} [isMapKeys] Specify mapping keys instead of values. + * @returns {Function} Returns the new map function. + */ + function createObjectMapper(isMapKeys) { + return function(object, iteratee, thisArg) { + var result = {}; + iteratee = getCallback(iteratee, thisArg, 3); + + baseForOwn(object, function(value, key, object) { + var mapped = iteratee(value, key, object); + key = isMapKeys ? mapped : key; + value = isMapKeys ? value : mapped; + result[key] = value; + }); + return result; + }; + } + + /** + * Creates a function for `_.padLeft` or `_.padRight`. + * + * @private + * @param {boolean} [fromRight] Specify padding from the right. + * @returns {Function} Returns the new pad function. + */ + function createPadDir(fromRight) { + return function(string, length, chars) { + string = baseToString(string); + return (fromRight ? string : '') + createPadding(string, length, chars) + (fromRight ? '' : string); + }; + } + + /** + * Creates a `_.partial` or `_.partialRight` function. + * + * @private + * @param {boolean} flag The partial bit flag. + * @returns {Function} Returns the new partial function. + */ + function createPartial(flag) { + var partialFunc = restParam(function(func, partials) { + var holders = replaceHolders(partials, partialFunc.placeholder); + return createWrapper(func, flag, undefined, partials, holders); + }); + return partialFunc; + } + + /** + * Creates a function for `_.reduce` or `_.reduceRight`. + * + * @private + * @param {Function} arrayFunc The function to iterate over an array. + * @param {Function} eachFunc The function to iterate over a collection. + * @returns {Function} Returns the new each function. + */ + function createReduce(arrayFunc, eachFunc) { + return function(collection, iteratee, accumulator, thisArg) { + var initFromArray = arguments.length < 3; + return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) + ? arrayFunc(collection, iteratee, accumulator, initFromArray) + : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc); + }; + } + + /** + * Creates a function that wraps `func` and invokes it with optional `this` + * binding of, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & ARY_FLAG, + isBind = bitmask & BIND_FLAG, + isBindKey = bitmask & BIND_KEY_FLAG, + isCurry = bitmask & CURRY_FLAG, + isCurryBound = bitmask & CURRY_BOUND_FLAG, + isCurryRight = bitmask & CURRY_RIGHT_FLAG, + Ctor = isBindKey ? undefined : createCtorWrapper(func); + + function wrapper() { + // Avoid `arguments` object use disqualifying optimizations by + // converting it to an array before providing it to other functions. + var length = arguments.length, + index = length, + args = Array(length); + + while (index--) { + args[index] = arguments[index]; + } + if (partials) { + args = composeArgs(args, partials, holders); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight); + } + if (isCurry || isCurryRight) { + var placeholder = wrapper.placeholder, + argsHolders = replaceHolders(args, placeholder); + + length -= argsHolders.length; + if (length < arity) { + var newArgPos = argPos ? arrayCopy(argPos) : undefined, + newArity = nativeMax(arity - length, 0), + newsHolders = isCurry ? argsHolders : undefined, + newHoldersRight = isCurry ? undefined : argsHolders, + newPartials = isCurry ? args : undefined, + newPartialsRight = isCurry ? undefined : args; + + bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); + + if (!isCurryBound) { + bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); + } + var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity], + result = createHybridWrapper.apply(undefined, newData); + + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return result; + } + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + if (argPos) { + args = reorder(args, argPos); + } + if (isAry && ary < args.length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtorWrapper(func); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates the padding required for `string` based on the given `length`. + * The `chars` string is truncated if the number of characters exceeds `length`. + * + * @private + * @param {string} string The string to create padding for. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the pad for `string`. + */ + function createPadding(string, length, chars) { + var strLength = string.length; + length = +length; + + if (strLength >= length || !nativeIsFinite(length)) { + return ''; + } + var padLength = length - strLength; + chars = chars == null ? ' ' : (chars + ''); + return repeat(chars, nativeCeil(padLength / chars.length)).slice(0, padLength); + } + + /** + * Creates a function that wraps `func` and invokes it with the optional `this` + * binding of `thisArg` and the `partials` prepended to those provided to + * the wrapper. + * + * @private + * @param {Function} func The function to partially apply arguments to. + * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to the new function. + * @returns {Function} Returns the new bound function. + */ + function createPartialWrapper(func, bitmask, thisArg, partials) { + var isBind = bitmask & BIND_FLAG, + Ctor = createCtorWrapper(func); + + function wrapper() { + // Avoid `arguments` object use disqualifying optimizations by + // converting it to an array before providing it `func`. + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength); + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.ceil`, `_.floor`, or `_.round` function. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + precision = precision === undefined ? 0 : (+precision || 0); + if (precision) { + precision = pow(10, precision); + return func(number * precision) / precision; + } + return func(number); + }; + } + + /** + * Creates a `_.sortedIndex` or `_.sortedLastIndex` function. + * + * @private + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {Function} Returns the new index function. + */ + function createSortedIndex(retHighest) { + return function(array, value, iteratee, thisArg) { + var callback = getCallback(iteratee); + return (iteratee == null && callback === baseCallback) + ? binaryIndex(array, value, retHighest) + : binaryIndexBy(array, value, callback(iteratee, thisArg, 1), retHighest); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of flags. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + length -= (holders ? holders.length : 0); + if (bitmask & PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func), + newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity]; + + if (data) { + mergeData(newData, data); + bitmask = newData[1]; + arity = newData[9]; + } + newData[9] = arity == null + ? (isBindKey ? 0 : func.length) + : (nativeMax(arity - length, 0) || 0); + + if (bitmask == BIND_FLAG) { + var result = createBindWrapper(newData[0], newData[2]); + } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) { + result = createPartialWrapper.apply(undefined, newData); + } else { + result = createHybridWrapper.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setter(result, newData); + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing arrays. + * @param {boolean} [isLoose] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) { + var index = -1, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isLoose && othLength > arrLength)) { + return false; + } + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index], + result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined; + + if (result !== undefined) { + if (result) { + continue; + } + return false; + } + // Recursively compare arrays (susceptible to call stack limits). + if (isLoose) { + if (!arraySome(other, function(othValue) { + return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB); + })) { + return false; + } + } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) { + return false; + } + } + return true; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag) { + switch (tag) { + case boolTag: + case dateTag: + // Coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal. + return +object == +other; + + case errorTag: + return object.name == other.name && object.message == other.message; + + case numberTag: + // Treat `NaN` vs. `NaN` as equal. + return (object != +object) + ? other != +other + : object == +other; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings primitives and string + // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. + return object == (other + ''); + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing values. + * @param {boolean} [isLoose] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) { + var objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isLoose) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + var skipCtor = isLoose; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key], + result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined; + + // Recursively compare objects (susceptible to call stack limits). + if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) { + return false; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (!skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + return false; + } + } + return true; + } + + /** + * Gets the appropriate "callback" function. If the `_.callback` method is + * customized this function returns the custom method, otherwise it returns + * the `baseCallback` function. If arguments are provided the chosen function + * is invoked with them and its result is returned. + * + * @private + * @returns {Function} Returns the chosen function or its result. + */ + function getCallback(func, thisArg, argCount) { + var result = lodash.callback || callback; + result = result === callback ? baseCallback : result; + return argCount ? result(func, thisArg, argCount) : result; + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = func.name, + array = realNames[result], + length = array ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + } + + /** + * Gets the appropriate "indexOf" function. If the `_.indexOf` method is + * customized this function returns the custom method, otherwise it returns + * the `baseIndexOf` function. If arguments are provided the chosen function + * is invoked with them and its result is returned. + * + * @private + * @returns {Function|number} Returns the chosen function or its result. + */ + function getIndexOf(collection, target, fromIndex) { + var result = lodash.indexOf || indexOf; + result = result === indexOf ? baseIndexOf : result; + return collection ? result(collection, target, fromIndex) : result; + } + + /** + * Gets the "length" property value of `object`. + * + * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) + * that affects Safari on at least iOS 8.1-8.3 ARM64. + * + * @private + * @param {Object} object The object to query. + * @returns {*} Returns the "length" value. + */ + var getLength = baseProperty('length'); + + /** + * Gets the propery names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = pairs(object), + length = result.length; + + while (length--) { + result[length][2] = isStrictComparable(result[length][1]); + } + return result; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = object == null ? undefined : object[key]; + return isNative(value) ? value : undefined; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add array properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + var Ctor = object.constructor; + if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { + Ctor = Object; + } + return new Ctor; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return bufferClone(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + var buffer = object.buffer; + return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + var result = new Ctor(object.source, reFlags.exec(object)); + result.lastIndex = object.lastIndex; + } + return result; + } + + /** + * Invokes the method at `path` on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function invokePath(object, path, args) { + if (object != null && !isKey(path, object)) { + path = toPath(path); + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + path = last(path); + } + var func = object == null ? object : object[path]; + return func == null ? undefined : func.apply(object, args); + } + + /** + * Checks if `value` is array-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + */ + function isArrayLike(value) { + return value != null && isLength(getLength(value)); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; + length = length == null ? MAX_SAFE_INTEGER : length; + return value > -1 && value % 1 == 0 && value < length; + } + + /** + * Checks if the provided arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object)) { + var other = object[index]; + return value === value ? (value === other) : (other !== other); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + var type = typeof value; + if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') { + return true; + } + if (isArray(value)) { + return false; + } + var result = !reIsDeepProp.test(value); + return result || (object != null && value in toObject(object)); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func); + if (!(funcName in LazyWrapper.prototype)) { + return false; + } + var other = lodash[funcName]; + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + */ + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers required to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg` + * augment function arguments, making the order in which they are executed important, + * preventing the merging of metadata. However, we make an exception for a safe + * common case where curried functions have `_.ary` and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < ARY_FLAG; + + var isCombo = + (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) || + (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) || + (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value); + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]); + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value); + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]); + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = arrayCopy(value); + } + // Use source `ary` if it's smaller. + if (srcBitmask & ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * Used by `_.defaultsDeep` to customize its `_.merge` use. + * + * @private + * @param {*} objectValue The destination object property value. + * @param {*} sourceValue The source object property value. + * @returns {*} Returns the value to assign to the destination object. + */ + function mergeDefaults(objectValue, sourceValue) { + return objectValue === undefined ? sourceValue : merge(objectValue, sourceValue, mergeDefaults); + } + + /** + * A specialized version of `_.pick` which picks `object` properties specified + * by `props`. + * + * @private + * @param {Object} object The source object. + * @param {string[]} props The property names to pick. + * @returns {Object} Returns the new object. + */ + function pickByArray(object, props) { + object = toObject(object); + + var index = -1, + length = props.length, + result = {}; + + while (++index < length) { + var key = props[index]; + if (key in object) { + result[key] = object[key]; + } + } + return result; + } + + /** + * A specialized version of `_.pick` which picks `object` properties `predicate` + * returns truthy for. + * + * @private + * @param {Object} object The source object. + * @param {Function} predicate The function invoked per iteration. + * @returns {Object} Returns the new object. + */ + function pickByCallback(object, predicate) { + var result = {}; + baseForIn(object, function(value, key, object) { + if (predicate(value, key, object)) { + result[key] = value; + } + }); + return result; + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = arrayCopy(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity function + * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = (function() { + var count = 0, + lastCalled = 0; + + return function(key, value) { + var stamp = now(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return key; + } + } else { + count = 0; + } + return baseSetData(key, value); + }; + }()); + + /** + * A fallback implementation of `Object.keys` which creates an array of the + * own enumerable property names of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function shimKeys(object) { + var props = keysIn(object), + propsLength = props.length, + length = propsLength && object.length; + + var allowIndexes = !!length && isLength(length) && + (isArray(object) || isArguments(object)); + + var index = -1, + result = []; + + while (++index < propsLength) { + var key = props[index]; + if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to an array-like object if it's not one. + * + * @private + * @param {*} value The value to process. + * @returns {Array|Object} Returns the array-like object. + */ + function toIterable(value) { + if (value == null) { + return []; + } + if (!isArrayLike(value)) { + return values(value); + } + return isObject(value) ? value : Object(value); + } + + /** + * Converts `value` to an object if it's not one. + * + * @private + * @param {*} value The value to process. + * @returns {Object} Returns the object. + */ + function toObject(value) { + return isObject(value) ? value : Object(value); + } + + /** + * Converts `value` to property path array if it's not one. + * + * @private + * @param {*} value The value to process. + * @returns {Array} Returns the property path array. + */ + function toPath(value) { + if (isArray(value)) { + return value; + } + var result = []; + baseToString(value).replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + return wrapper instanceof LazyWrapper + ? wrapper.clone() + : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `collection` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the new array containing chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if (guard ? isIterateeCall(array, size, guard) : size == null) { + size = 1; + } else { + size = nativeMax(nativeFloor(size) || 1, 1); + } + var index = 0, + length = array ? array.length : 0, + resIndex = -1, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[++resIndex] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array ? array.length : 0, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[++resIndex] = value; + } + } + return result; + } + + /** + * Creates an array of unique `array` values not included in the other + * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The arrays of values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.difference([1, 2, 3], [4, 2]); + * // => [1, 3] + */ + var difference = restParam(function(array, values) { + return (isObjectLike(array) && isArrayLike(array)) + ? baseDifference(array, baseFlatten(values, false, true)) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + return baseSlice(array, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + n = length - (+n || 0); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * bound to `thisArg` and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that match the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRightWhile([1, 2, 3], function(n) { + * return n > 1; + * }); + * // => [1] + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); + * // => ['barney', 'fred'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.dropRightWhile(users, 'active', false), 'user'); + * // => ['barney'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.dropRightWhile(users, 'active'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate, thisArg) { + return (array && array.length) + ? baseWhile(array, getCallback(predicate, thisArg, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * bound to `thisArg` and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropWhile([1, 2, 3], function(n) { + * return n < 3; + * }); + * // => [3] + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user'); + * // => ['fred', 'pebbles'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.dropWhile(users, 'active', false), 'user'); + * // => ['pebbles'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.dropWhile(users, 'active'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate, thisArg) { + return (array && array.length) + ? baseWhile(array, getCallback(predicate, thisArg, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8], '*', 1, 2); + * // => [4, '*', 8] + */ + function fill(array, value, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(chr) { + * return chr.user == 'barney'; + * }); + * // => 0 + * + * // using the `_.matches` callback shorthand + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // using the `_.matchesProperty` callback shorthand + * _.findIndex(users, 'active', false); + * // => 0 + * + * // using the `_.property` callback shorthand + * _.findIndex(users, 'active'); + * // => 2 + */ + var findIndex = createFindIndex(); + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(chr) { + * return chr.user == 'pebbles'; + * }); + * // => 2 + * + * // using the `_.matches` callback shorthand + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // using the `_.matchesProperty` callback shorthand + * _.findLastIndex(users, 'active', false); + * // => 2 + * + * // using the `_.property` callback shorthand + * _.findLastIndex(users, 'active'); + * // => 0 + */ + var findLastIndex = createFindIndex(true); + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @alias head + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.first([1, 2, 3]); + * // => 1 + * + * _.first([]); + * // => undefined + */ + function first(array) { + return array ? array[0] : undefined; + } + + /** + * Flattens a nested array. If `isDeep` is `true` the array is recursively + * flattened, otherwise it is only flattened a single level. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to flatten. + * @param {boolean} [isDeep] Specify a deep flatten. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, 3, [4]]]); + * // => [1, 2, 3, [4]] + * + * // using `isDeep` + * _.flatten([1, [2, 3, [4]]], true); + * // => [1, 2, 3, 4] + */ + function flatten(array, isDeep, guard) { + var length = array ? array.length : 0; + if (guard && isIterateeCall(array, isDeep, guard)) { + isDeep = false; + } + return length ? baseFlatten(array, isDeep) : []; + } + + /** + * Recursively flattens a nested array. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to recursively flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, 3, [4]]]); + * // => [1, 2, 3, 4] + */ + function flattenDeep(array) { + var length = array ? array.length : 0; + return length ? baseFlatten(array, true) : []; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it is used as the offset + * from the end of `array`. If `array` is sorted providing `true` for `fromIndex` + * performs a faster binary search. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {boolean|number} [fromIndex=0] The index to search from or `true` + * to perform a binary search on a sorted array. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // using `fromIndex` + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + * + * // performing a binary search + * _.indexOf([1, 1, 2, 2], 2, true); + * // => 2 + */ + function indexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + if (typeof fromIndex == 'number') { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; + } else if (fromIndex) { + var index = binaryIndex(array, value); + if (index < length && + (value === value ? (value === array[index]) : (array[index] !== array[index]))) { + return index; + } + return -1; + } + return baseIndexOf(array, value, fromIndex || 0); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + return dropRight(array, 1); + } + + /** + * Creates an array of unique values that are included in all of the provided + * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of shared values. + * @example + * _.intersection([1, 2], [4, 2], [2, 1]); + * // => [2] + */ + var intersection = restParam(function(arrays) { + var othLength = arrays.length, + othIndex = othLength, + caches = Array(length), + indexOf = getIndexOf(), + isCommon = indexOf == baseIndexOf, + result = []; + + while (othIndex--) { + var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : []; + caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null; + } + var array = arrays[0], + index = -1, + length = array ? array.length : 0, + seen = caches[0]; + + outer: + while (++index < length) { + value = array[index]; + if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) { + var othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) { + continue outer; + } + } + if (seen) { + seen.push(value); + } + result.push(value); + } + } + return result; + }); + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array ? array.length : 0; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {boolean|number} [fromIndex=array.length-1] The index to search from + * or `true` to perform a binary search on a sorted array. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // using `fromIndex` + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + * + * // performing a binary search + * _.lastIndexOf([1, 1, 2, 2], 2, true); + * // => 3 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + var index = length; + if (typeof fromIndex == 'number') { + index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1; + } else if (fromIndex) { + index = binaryIndex(array, value, true) - 1; + var other = array[index]; + if (value === value ? (value === other) : (other !== other)) { + return index; + } + return -1; + } + if (value !== value) { + return indexOfNaN(array, index, true); + } + while (index--) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * Removes all provided values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3, 1, 2, 3]; + * + * _.pull(array, 2, 3); + * console.log(array); + * // => [1, 1] + */ + function pull() { + var args = arguments, + array = args[0]; + + if (!(array && array.length)) { + return array; + } + var index = 0, + indexOf = getIndexOf(), + length = args.length; + + while (++index < length) { + var fromIndex = 0, + value = args[index]; + + while ((fromIndex = indexOf(array, value, fromIndex)) > -1) { + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * Removes elements from `array` corresponding to the given indexes and returns + * an array of the removed elements. Indexes may be specified as an array of + * indexes or as individual arguments. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove, + * specified as individual indexes or arrays of indexes. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [5, 10, 15, 20]; + * var evens = _.pullAt(array, 1, 3); + * + * console.log(array); + * // => [5, 15] + * + * console.log(evens); + * // => [10, 20] + */ + var pullAt = restParam(function(array, indexes) { + indexes = baseFlatten(indexes); + + var result = baseAt(array, indexes); + basePullAt(array, indexes.sort(baseCompareAscending)); + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is bound to + * `thisArg` and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * **Note:** Unlike `_.filter`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate, thisArg) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getCallback(predicate, thisArg, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @alias tail + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.rest([1, 2, 3]); + * // => [2, 3] + */ + function rest(array) { + return drop(array, 1); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of `Array#slice` to support node + * lists in IE < 9 and to ensure dense arrays are returned. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` should + * be inserted into `array` in order to maintain its sort order. If an iteratee + * function is provided it is invoked for `value` and each element of `array` + * to compute their sort ranking. The iteratee is bound to `thisArg` and + * invoked with one argument; (value). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + * + * _.sortedIndex([4, 4, 5, 5], 5); + * // => 2 + * + * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } }; + * + * // using an iteratee function + * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) { + * return this.data[word]; + * }, dict); + * // => 1 + * + * // using the `_.property` callback shorthand + * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); + * // => 1 + */ + var sortedIndex = createSortedIndex(); + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 4, 5, 5], 5); + * // => 4 + */ + var sortedLastIndex = createSortedIndex(true); + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + n = length - (+n || 0); + return baseSlice(array, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is bound to `thisArg` + * and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRightWhile([1, 2, 3], function(n) { + * return n > 1; + * }); + * // => [2, 3] + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); + * // => ['pebbles'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.takeRightWhile(users, 'active', false), 'user'); + * // => ['fred', 'pebbles'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.takeRightWhile(users, 'active'), 'user'); + * // => [] + */ + function takeRightWhile(array, predicate, thisArg) { + return (array && array.length) + ? baseWhile(array, getCallback(predicate, thisArg, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is bound to + * `thisArg` and invoked with three arguments: (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeWhile([1, 2, 3], function(n) { + * return n < 3; + * }); + * // => [1, 2] + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false}, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.takeWhile(users, 'active', false), 'user'); + * // => ['barney', 'fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.takeWhile(users, 'active'), 'user'); + * // => [] + */ + function takeWhile(array, predicate, thisArg) { + return (array && array.length) + ? baseWhile(array, getCallback(predicate, thisArg, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, from all of the provided arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([1, 2], [4, 2], [2, 1]); + * // => [1, 2, 4] + */ + var union = restParam(function(arrays) { + return baseUniq(baseFlatten(arrays, false, true)); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurence of each element + * is kept. Providing `true` for `isSorted` performs a faster search algorithm + * for sorted arrays. If an iteratee function is provided it is invoked for + * each element in the array to generate the criterion by which uniqueness + * is computed. The `iteratee` is bound to `thisArg` and invoked with three + * arguments: (value, index, array). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias unique + * @category Array + * @param {Array} array The array to inspect. + * @param {boolean} [isSorted] Specify the array is sorted. + * @param {Function|Object|string} [iteratee] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new duplicate-value-free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + * + * // using `isSorted` + * _.uniq([1, 1, 2], true); + * // => [1, 2] + * + * // using an iteratee function + * _.uniq([1, 2.5, 1.5, 2], function(n) { + * return this.floor(n); + * }, Math); + * // => [1, 2.5] + * + * // using the `_.property` callback shorthand + * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniq(array, isSorted, iteratee, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (isSorted != null && typeof isSorted != 'boolean') { + thisArg = iteratee; + iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted; + isSorted = false; + } + var callback = getCallback(); + if (!(iteratee == null && callback === baseCallback)) { + iteratee = callback(iteratee, thisArg, 3); + } + return (isSorted && getIndexOf() == baseIndexOf) + ? sortedUniq(array, iteratee) + : baseUniq(array, iteratee); + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]); + * // => [['fred', 30, true], ['barney', 40, false]] + * + * _.unzip(zipped); + * // => [['fred', 'barney'], [30, 40], [true, false]] + */ + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var index = -1, + length = 0; + + array = arrayFilter(array, function(group) { + if (isArrayLike(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + var result = Array(length); + while (++index < length) { + result[index] = arrayMap(array, baseProperty(index)); + } + return result; + } + + /** + * This method is like `_.unzip` except that it accepts an iteratee to specify + * how regrouped values should be combined. The `iteratee` is bound to `thisArg` + * and invoked with four arguments: (accumulator, value, index, group). + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee] The function to combine regrouped values. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + iteratee = bindCallback(iteratee, thisArg, 4); + return arrayMap(result, function(group) { + return arrayReduce(group, iteratee, undefined, true); + }); + } + + /** + * Creates an array excluding all provided values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to filter. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.without([1, 2, 1, 3], 1, 2); + * // => [3] + */ + var without = restParam(function(array, values) { + return isArrayLike(array) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the provided arrays. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of values. + * @example + * + * _.xor([1, 2], [4, 2]); + * // => [1, 4] + */ + function xor() { + var index = -1, + length = arguments.length; + + while (++index < length) { + var array = arguments[index]; + if (isArrayLike(array)) { + var result = result + ? arrayPush(baseDifference(result, array), baseDifference(array, result)) + : array; + } + } + return result ? baseUniq(result) : []; + } + + /** + * Creates an array of grouped elements, the first of which contains the first + * elements of the given arrays, the second of which contains the second elements + * of the given arrays, and so on. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['fred', 'barney'], [30, 40], [true, false]); + * // => [['fred', 30, true], ['barney', 40, false]] + */ + var zip = restParam(unzip); + + /** + * The inverse of `_.pairs`; this method returns an object composed from arrays + * of property names and values. Provide either a single two dimensional array, + * e.g. `[[key1, value1], [key2, value2]]` or two arrays, one of property names + * and one of corresponding values. + * + * @static + * @memberOf _ + * @alias object + * @category Array + * @param {Array} props The property names. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject([['fred', 30], ['barney', 40]]); + * // => { 'fred': 30, 'barney': 40 } + * + * _.zipObject(['fred', 'barney'], [30, 40]); + * // => { 'fred': 30, 'barney': 40 } + */ + function zipObject(props, values) { + var index = -1, + length = props ? props.length : 0, + result = {}; + + if (length && !values && !isArray(props[0])) { + values = []; + } + while (++index < length) { + var key = props[index]; + if (values) { + result[key] = values[index]; + } else if (key) { + result[key[0]] = key[1]; + } + } + return result; + } + + /** + * This method is like `_.zip` except that it accepts an iteratee to specify + * how grouped values should be combined. The `iteratee` is bound to `thisArg` + * and invoked with four arguments: (accumulator, value, index, group). + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee] The function to combine grouped values. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], _.add); + * // => [111, 222] + */ + var zipWith = restParam(function(arrays) { + var length = arrays.length, + iteratee = length > 2 ? arrays[length - 2] : undefined, + thisArg = length > 1 ? arrays[length - 1] : undefined; + + if (length > 2 && typeof iteratee == 'function') { + length -= 2; + } else { + iteratee = (length > 1 && typeof thisArg == 'function') ? (--length, thisArg) : undefined; + thisArg = undefined; + } + arrays.length = length; + return unzipWith(arrays, iteratee, thisArg); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object that wraps `value` with explicit method + * chaining enabled. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _.chain(users) + * .sortBy('age') + * .map(function(chr) { + * return chr.user + ' is ' + chr.age; + * }) + * .first() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor is + * bound to `thisArg` and invoked with one argument; (value). The purpose of + * this method is to "tap into" a method chain in order to perform operations + * on intermediate results within the chain. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @param {*} [thisArg] The `this` binding of `interceptor`. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor, thisArg) { + interceptor.call(thisArg, value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @param {*} [thisArg] The `this` binding of `interceptor`. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor, thisArg) { + return interceptor.call(thisArg, value); + } + + /** + * Enables explicit method chaining on the wrapper object. + * + * @name chain + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // without explicit chaining + * _(users).first(); + * // => { 'user': 'barney', 'age': 36 } + * + * // with explicit chaining + * _(users).chain() + * .first() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chained sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Creates a new array joining a wrapped array with any additional arrays + * and/or values. + * + * @name concat + * @memberOf _ + * @category Chain + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var wrapped = _(array).concat(2, [3], [[4]]); + * + * console.log(wrapped.value()); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + var wrapperConcat = restParam(function(values) { + values = baseFlatten(values); + return this.thru(function(array) { + return arrayConcat(isArray(array) ? array : [toObject(array)], values); + }); + }); + + /** + * Creates a clone of the chained sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).map(function(value) { + * return Math.pow(value, 2); + * }); + * + * var other = [3, 4]; + * var otherWrapped = wrapped.plant(other); + * + * otherWrapped.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * Reverses the wrapped array so the first element becomes the last, the + * second element becomes the second to last, and so on. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new reversed `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + + var interceptor = function(value) { + return (wrapped && wrapped.__dir__ < 0) ? value : value.reverse(); + }; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(interceptor); + } + + /** + * Produces the result of coercing the unwrapped value to a string. + * + * @name toString + * @memberOf _ + * @category Chain + * @returns {string} Returns the coerced string value. + * @example + * + * _([1, 2, 3]).toString(); + * // => '1,2,3' + */ + function wrapperToString() { + return (this.value() + ''); + } + + /** + * Executes the chained sequence to extract the unwrapped value. + * + * @name value + * @memberOf _ + * @alias run, toJSON, valueOf + * @category Chain + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements corresponding to the given keys, or indexes, + * of `collection`. Keys may be specified as individual arguments or as arrays + * of keys. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {...(number|number[]|string|string[])} [props] The property names + * or indexes of elements to pick, specified individually or in arrays. + * @returns {Array} Returns the new array of picked elements. + * @example + * + * _.at(['a', 'b', 'c'], [0, 2]); + * // => ['a', 'c'] + * + * _.at(['barney', 'fred', 'pebbles'], 0, 2); + * // => ['barney', 'pebbles'] + */ + var at = restParam(function(collection, props) { + return baseAt(collection, baseFlatten(props)); + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is the number of times the key was returned by `iteratee`. + * The `iteratee` is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([4.3, 6.1, 6.4], function(n) { + * return Math.floor(n); + * }); + * // => { '4': 1, '6': 2 } + * + * _.countBy([4.3, 6.1, 6.4], function(n) { + * return this.floor(n); + * }, Math); + * // => { '4': 1, '6': 2 } + * + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * The predicate is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // using the `_.matchesProperty` callback shorthand + * _.every(users, 'active', false); + * // => true + * + * // using the `_.property` callback shorthand + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (thisArg && isIterateeCall(collection, predicate, thisArg)) { + predicate = undefined; + } + if (typeof predicate != 'function' || thisArg !== undefined) { + predicate = getCallback(predicate, thisArg, 3); + } + return func(collection, predicate); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is bound to `thisArg` and + * invoked with three arguments: (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias select + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new filtered array. + * @example + * + * _.filter([4, 5, 6], function(n) { + * return n % 2 == 0; + * }); + * // => [4, 6] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.filter(users, 'active', false), 'user'); + * // => ['fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.filter(users, 'active'), 'user'); + * // => ['barney'] + */ + function filter(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = getCallback(predicate, thisArg, 3); + return func(collection, predicate); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is bound to `thisArg` and + * invoked with three arguments: (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias detect + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.result(_.find(users, function(chr) { + * return chr.age < 40; + * }), 'user'); + * // => 'barney' + * + * // using the `_.matches` callback shorthand + * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); + * // => 'pebbles' + * + * // using the `_.matchesProperty` callback shorthand + * _.result(_.find(users, 'active', false), 'user'); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.result(_.find(users, 'active'), 'user'); + * // => 'barney' + */ + var find = createFind(baseEach); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(baseEachRight, true); + + /** + * Performs a deep comparison between each element in `collection` and the + * source object, returning the first element that has equivalent property + * values. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Object} source The object of property values to match. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user'); + * // => 'barney' + * + * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user'); + * // => 'fred' + */ + function findWhere(collection, source) { + return find(collection, baseMatches(source)); + } + + /** + * Iterates over elements of `collection` invoking `iteratee` for each element. + * The `iteratee` is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). Iteratee functions may exit iteration early + * by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" property + * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` + * may be used for object iteration. + * + * @static + * @memberOf _ + * @alias each + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array|Object|string} Returns `collection`. + * @example + * + * _([1, 2]).forEach(function(n) { + * console.log(n); + * }).value(); + * // => logs each value from left to right and returns the array + * + * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { + * console.log(n, key); + * }); + * // => logs each value-key pair and returns the object (iteration order is not guaranteed) + */ + var forEach = createForEach(arrayEach, baseEach); + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @alias eachRight + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array|Object|string} Returns `collection`. + * @example + * + * _([1, 2]).forEachRight(function(n) { + * console.log(n); + * }).value(); + * // => logs each value from right to left and returns the array + */ + var forEachRight = createForEach(arrayEachRight, baseEachRight); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is an array of the elements responsible for generating the key. + * The `iteratee` is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([4.2, 6.1, 6.4], function(n) { + * return Math.floor(n); + * }); + * // => { '4': [4.2], '6': [6.1, 6.4] } + * + * _.groupBy([4.2, 6.1, 6.4], function(n) { + * return this.floor(n); + * }, Math); + * // => { '4': [4.2], '6': [6.1, 6.4] } + * + * // using the `_.property` callback shorthand + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + result[key] = [value]; + } + }); + + /** + * Checks if `value` is in `collection` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it is used as the offset + * from the end of `collection`. + * + * @static + * @memberOf _ + * @alias contains, include + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {*} target The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. + * @returns {boolean} Returns `true` if a matching element is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); + * // => true + * + * _.includes('pebbles', 'eb'); + * // => true + */ + function includes(collection, target, fromIndex, guard) { + var length = collection ? getLength(collection) : 0; + if (!isLength(length)) { + collection = values(collection); + length = collection.length; + } + if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) { + fromIndex = 0; + } else { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); + } + return (typeof collection == 'string' || !isArray(collection) && isString(collection)) + ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1) + : (!!length && getIndexOf(collection, target, fromIndex) > -1); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is the last element responsible for generating the key. The + * iteratee function is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var keyData = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.indexBy(keyData, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + * + * _.indexBy(keyData, function(object) { + * return String.fromCharCode(object.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.indexBy(keyData, function(object) { + * return this.fromCharCode(object.code); + * }, String); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + */ + var indexBy = createAggregator(function(result, value, key) { + result[key] = value; + }); + + /** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `methodName` is a function it is + * invoked for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invoke([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invoke = restParam(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + isProp = isKey(path), + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined); + result[++index] = func ? func.apply(value, args) : invokePath(value, path, args); + }); + return result; + }); + + /** + * Creates an array of values by running each element in `collection` through + * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three + * arguments: (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, + * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`, + * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`, + * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`, + * `sum`, `uniq`, and `words` + * + * @static + * @memberOf _ + * @alias collect + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new mapped array. + * @example + * + * function timesThree(n) { + * return n * 3; + * } + * + * _.map([1, 2], timesThree); + * // => [3, 6] + * + * _.map({ 'a': 1, 'b': 2 }, timesThree); + * // => [3, 6] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // using the `_.property` callback shorthand + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee, thisArg) { + var func = isArray(collection) ? arrayMap : baseMap; + iteratee = getCallback(iteratee, thisArg, 3); + return func(collection, iteratee); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, while the second of which + * contains elements `predicate` returns falsey for. The predicate is bound + * to `thisArg` and invoked with three arguments: (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * _.partition([1, 2, 3], function(n) { + * return n % 2; + * }); + * // => [[1, 3], [2]] + * + * _.partition([1.2, 2.3, 3.4], function(n) { + * return this.floor(n) % 2; + * }, Math); + * // => [[1.2, 3.4], [2.3]] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * var mapper = function(array) { + * return _.pluck(array, 'user'); + * }; + * + * // using the `_.matches` callback shorthand + * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper); + * // => [['pebbles'], ['barney', 'fred']] + * + * // using the `_.matchesProperty` callback shorthand + * _.map(_.partition(users, 'active', false), mapper); + * // => [['barney', 'pebbles'], ['fred']] + * + * // using the `_.property` callback shorthand + * _.map(_.partition(users, 'active'), mapper); + * // => [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Gets the property value of `path` from all elements in `collection`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Array|string} path The path of the property to pluck. + * @returns {Array} Returns the property values. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * _.pluck(users, 'user'); + * // => ['barney', 'fred'] + * + * var userIndex = _.indexBy(users, 'user'); + * _.pluck(userIndex, 'age'); + * // => [36, 40] (iteration order is not guaranteed) + */ + function pluck(collection, path) { + return map(collection, property(path)); + } + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` through `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not provided the first element of `collection` is used as the initial + * value. The `iteratee` is bound to `thisArg` and invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`, + * and `sortByOrder` + * + * @static + * @memberOf _ + * @alias foldl, inject + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * _.reduce([1, 2], function(total, n) { + * return total + n; + * }); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) { + * result[key] = n * 3; + * return result; + * }, {}); + * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed) + */ + var reduce = createReduce(arrayReduce, baseEach); + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @alias foldr + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + var reduceRight = createReduce(arrayReduceRight, baseEachRight); + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new filtered array. + * @example + * + * _.reject([1, 2, 3, 4], function(n) { + * return n % 2 == 0; + * }); + * // => [1, 3] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.reject(users, 'active', false), 'user'); + * // => ['fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.reject(users, 'active'), 'user'); + * // => ['barney'] + */ + function reject(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = getCallback(predicate, thisArg, 3); + return func(collection, function(value, index, collection) { + return !predicate(value, index, collection); + }); + } + + /** + * Gets a random element or `n` random elements from a collection. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to sample. + * @param {number} [n] The number of elements to sample. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {*} Returns the random sample(s). + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + * + * _.sample([1, 2, 3, 4], 2); + * // => [3, 1] + */ + function sample(collection, n, guard) { + if (guard ? isIterateeCall(collection, n, guard) : n == null) { + collection = toIterable(collection); + var length = collection.length; + return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; + } + var index = -1, + result = toArray(collection), + length = result.length, + lastIndex = length - 1; + + n = nativeMin(n < 0 ? 0 : (+n || 0), length); + while (++index < n) { + var rand = baseRandom(index, lastIndex), + value = result[rand]; + + result[rand] = result[index]; + result[index] = value; + } + result.length = n; + return result; + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + return sample(collection, POSITIVE_INFINITY); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable properties for objects. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the size of `collection`. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + var length = collection ? getLength(collection) : 0; + return isLength(length) ? length : keys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * The function returns as soon as it finds a passing value and does not iterate + * over the entire collection. The predicate is bound to `thisArg` and invoked + * with three arguments: (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias any + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // using the `_.matchesProperty` callback shorthand + * _.some(users, 'active', false); + * // => true + * + * // using the `_.property` callback shorthand + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, thisArg) { + var func = isArray(collection) ? arraySome : baseSome; + if (thisArg && isIterateeCall(collection, predicate, thisArg)) { + predicate = undefined; + } + if (typeof predicate != 'function' || thisArg !== undefined) { + predicate = getCallback(predicate, thisArg, 3); + } + return func(collection, predicate); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection through `iteratee`. This method performs + * a stable sort, that is, it preserves the original sort order of equal elements. + * The `iteratee` is bound to `thisArg` and invoked with three arguments: + * (value, index|key, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new sorted array. + * @example + * + * _.sortBy([1, 2, 3], function(n) { + * return Math.sin(n); + * }); + * // => [3, 1, 2] + * + * _.sortBy([1, 2, 3], function(n) { + * return this.sin(n); + * }, Math); + * // => [3, 1, 2] + * + * var users = [ + * { 'user': 'fred' }, + * { 'user': 'pebbles' }, + * { 'user': 'barney' } + * ]; + * + * // using the `_.property` callback shorthand + * _.pluck(_.sortBy(users, 'user'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function sortBy(collection, iteratee, thisArg) { + if (collection == null) { + return []; + } + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = undefined; + } + var index = -1; + iteratee = getCallback(iteratee, thisArg, 3); + + var result = baseMap(collection, function(value, key, collection) { + return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value }; + }); + return baseSortBy(result, compareAscending); + } + + /** + * This method is like `_.sortBy` except that it can sort by multiple iteratees + * or property names. + * + * If a property name is provided for an iteratee the created `_.property` + * style callback returns the property value of the given element. + * + * If an object is provided for an iteratee the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees + * The iteratees to sort by, specified as individual values or arrays of values. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 42 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.map(_.sortByAll(users, ['user', 'age']), _.values); + * // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]] + * + * _.map(_.sortByAll(users, 'user', function(chr) { + * return Math.floor(chr.age / 10); + * }), _.values); + * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] + */ + var sortByAll = restParam(function(collection, iteratees) { + if (collection == null) { + return []; + } + var guard = iteratees[2]; + if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) { + iteratees.length = 1; + } + return baseSortByOrder(collection, baseFlatten(iteratees), []); + }); + + /** + * This method is like `_.sortByAll` except that it allows specifying the + * sort orders of the iteratees to sort by. If `orders` is unspecified, all + * values are sorted in ascending order. Otherwise, a value is sorted in + * ascending order if its corresponding order is "asc", and descending if "desc". + * + * If a property name is provided for an iteratee the created `_.property` + * style callback returns the property value of the given element. + * + * If an object is provided for an iteratee the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {boolean[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 42 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // sort by `user` in ascending order and by `age` in descending order + * _.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values); + * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] + */ + function sortByOrder(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (guard && isIterateeCall(iteratees, orders, guard)) { + orders = undefined; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseSortByOrder(collection, iteratees, orders); + } + + /** + * Performs a deep comparison between each element in `collection` and the + * source object, returning an array of all elements that have equivalent + * property values. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Object} source The object of property values to match. + * @returns {Array} Returns the new filtered array. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] }, + * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] } + * ]; + * + * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user'); + * // => ['barney'] + * + * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user'); + * // => ['fred'] + */ + function where(collection, source) { + return filter(collection, baseMatches(source)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Gets the number of milliseconds that have elapsed since the Unix epoch + * (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @category Date + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => logs the number of milliseconds it took for the deferred function to be invoked + */ + var now = nativeNow || function() { + return new Date().getTime(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it is called `n` or more times. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => logs 'done saving!' after the two async saves have completed + */ + function after(n, func) { + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + n = nativeIsFinite(n = +n) ? n : 0; + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that accepts up to `n` arguments ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + if (guard && isIterateeCall(func, n, guard)) { + n = undefined; + } + n = (func && n == null) ? func.length : nativeMax(+n || 0, 0); + return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it is called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery('#add').on('click', _.before(5, addContactToList)); + * // => allows adding up to 4 contacts to the list + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and prepends any additional `_.bind` arguments to those provided to the + * bound function. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind` this method does not set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var greet = function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * }; + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // using placeholders + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = restParam(function(func, thisArg, partials) { + var bitmask = BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, bind.placeholder); + bitmask |= PARTIAL_FLAG; + } + return createWrapper(func, bitmask, thisArg, partials, holders); + }); + + /** + * Binds methods of an object to the object itself, overwriting the existing + * method. Method names may be specified as individual arguments or as arrays + * of method names. If no method names are provided all enumerable function + * properties, own and inherited, of `object` are bound. + * + * **Note:** This method does not set the "length" property of bound functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} [methodNames] The object method names to bind, + * specified as individual method names or arrays of method names. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'onClick': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view); + * jQuery('#docs').on('click', view.onClick); + * // => logs 'clicked docs' when the element is clicked + */ + var bindAll = restParam(function(object, methodNames) { + methodNames = methodNames.length ? baseFlatten(methodNames) : functions(object); + + var index = -1, + length = methodNames.length; + + while (++index < length) { + var key = methodNames[index]; + object[key] = createWrapper(object[key], BIND_FLAG, object); + } + return object; + }); + + /** + * Creates a function that invokes the method at `object[key]` and prepends + * any additional `_.bindKey` arguments to those provided to the bound function. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. + * See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @category Function + * @param {Object} object The object the method belongs to. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // using placeholders + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = restParam(function(object, key, partials) { + var bitmask = BIND_FLAG | BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, bindKey.placeholder); + bitmask |= PARTIAL_FLAG; + } + return createWrapper(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts one or more arguments of `func` that when + * called either invokes `func` returning its result, if all `func` arguments + * have been provided, or returns a function that accepts one or more of the + * remaining `func` arguments, and so on. The arity of `func` may be specified + * if `func.length` is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method does not set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // using placeholders + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + var curry = createCurry(CURRY_FLAG); + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method does not set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // using placeholders + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + var curryRight = createCurry(CURRY_RIGHT_FLAG); + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed invocations. Provide an options object to indicate that `func` + * should be invoked on the leading and/or trailing edge of the `wait` timeout. + * Subsequent calls to the debounced function return the result of the last + * `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the debounced function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=false] Specify invoking on the leading + * edge of the timeout. + * @param {number} [options.maxWait] The maximum time `func` is allowed to be + * delayed before it is invoked. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // avoid costly calculations while the window size is in flux + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // invoke `sendMail` when the click event is fired, debouncing subsequent calls + * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // ensure `batchLog` is invoked once after 1 second of debounced calls + * var source = new EventSource('/stream'); + * jQuery(source).on('message', _.debounce(batchLog, 250, { + * 'maxWait': 1000 + * })); + * + * // cancel a debounced call + * var todoChanges = _.debounce(batchLog, 1000); + * Object.observe(models.todo, todoChanges); + * + * Object.observe(models, function(changes) { + * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { + * todoChanges.cancel(); + * } + * }, ['delete']); + * + * // ...at some point `models.todo` is changed + * models.todo.completed = true; + * + * // ...before 1 second has passed `models.todo` is deleted + * // which cancels the debounced `todoChanges` call + * delete models.todo; + */ + function debounce(func, wait, options) { + var args, + maxTimeoutId, + result, + stamp, + thisArg, + timeoutId, + trailingCall, + lastCalled = 0, + maxWait = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = wait < 0 ? 0 : (+wait || 0); + if (options === true) { + var leading = true; + trailing = false; + } else if (isObject(options)) { + leading = !!options.leading; + maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function cancel() { + if (timeoutId) { + clearTimeout(timeoutId); + } + if (maxTimeoutId) { + clearTimeout(maxTimeoutId); + } + lastCalled = 0; + maxTimeoutId = timeoutId = trailingCall = undefined; + } + + function complete(isCalled, id) { + if (id) { + clearTimeout(id); + } + maxTimeoutId = timeoutId = trailingCall = undefined; + if (isCalled) { + lastCalled = now(); + result = func.apply(thisArg, args); + if (!timeoutId && !maxTimeoutId) { + args = thisArg = undefined; + } + } + } + + function delayed() { + var remaining = wait - (now() - stamp); + if (remaining <= 0 || remaining > wait) { + complete(trailingCall, maxTimeoutId); + } else { + timeoutId = setTimeout(delayed, remaining); + } + } + + function maxDelayed() { + complete(trailing, timeoutId); + } + + function debounced() { + args = arguments; + stamp = now(); + thisArg = this; + trailingCall = trailing && (timeoutId || !leading); + + if (maxWait === false) { + var leadingCall = leading && !timeoutId; + } else { + if (!maxTimeoutId && !leading) { + lastCalled = stamp; + } + var remaining = maxWait - (stamp - lastCalled), + isCalled = remaining <= 0 || remaining > maxWait; + + if (isCalled) { + if (maxTimeoutId) { + maxTimeoutId = clearTimeout(maxTimeoutId); + } + lastCalled = stamp; + result = func.apply(thisArg, args); + } + else if (!maxTimeoutId) { + maxTimeoutId = setTimeout(maxDelayed, remaining); + } + } + if (isCalled && timeoutId) { + timeoutId = clearTimeout(timeoutId); + } + else if (!timeoutId && wait !== maxWait) { + timeoutId = setTimeout(delayed, wait); + } + if (leadingCall) { + isCalled = true; + result = func.apply(thisArg, args); + } + if (isCalled && !timeoutId && !maxTimeoutId) { + args = thisArg = undefined; + } + return result; + } + debounced.cancel = cancel; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke the function with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // logs 'deferred' after one or more milliseconds + */ + var defer = restParam(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke the function with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => logs 'later' after one second + */ + var delay = restParam(function(func, wait, args) { + return baseDelay(func, wait, args); + }); + + /** + * Creates a function that returns the result of invoking the provided + * functions with the `this` binding of the created function, where each + * successive invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @category Function + * @param {...Function} [funcs] Functions to invoke. + * @returns {Function} Returns the new function. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow(_.add, square); + * addSquare(1, 2); + * // => 9 + */ + var flow = createFlow(); + + /** + * This method is like `_.flow` except that it creates a function that + * invokes the provided functions from right to left. + * + * @static + * @memberOf _ + * @alias backflow, compose + * @category Function + * @param {...Function} [funcs] Functions to invoke. + * @returns {Function} Returns the new function. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight(square, _.add); + * addSquare(1, 2); + * // => 9 + */ + var flowRight = createFlow(true); + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is coerced to a string and used as the + * cache key. The `func` is invoked with the `this` binding of the memoized + * function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object) + * method interface of `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoizing function. + * @example + * + * var upperCase = _.memoize(function(string) { + * return string.toUpperCase(); + * }); + * + * upperCase('fred'); + * // => 'FRED' + * + * // modifying the result cache + * upperCase.cache.set('fred', 'BARNEY'); + * upperCase('fred'); + * // => 'BARNEY' + * + * // replacing `_.memoize.Cache` + * var object = { 'user': 'fred' }; + * var other = { 'user': 'barney' }; + * var identity = _.memoize(_.identity); + * + * identity(object); + * // => { 'user': 'fred' } + * identity(other); + * // => { 'user': 'fred' } + * + * _.memoize.Cache = WeakMap; + * var identity = _.memoize(_.identity); + * + * identity(object); + * // => { 'user': 'fred' } + * identity(other); + * // => { 'user': 'barney' } + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new memoize.Cache; + return memoized; + } + + /** + * Creates a function that runs each argument through a corresponding + * transform function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms] The functions to transform + * arguments, specified as individual functions or arrays of functions. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var modded = _.modArgs(function(x, y) { + * return [x, y]; + * }, square, doubled); + * + * modded(1, 2); + * // => [1, 4] + * + * modded(5, 10); + * // => [25, 20] + */ + var modArgs = restParam(function(func, transforms) { + transforms = baseFlatten(transforms); + if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = transforms.length; + return restParam(function(args) { + var index = nativeMin(args.length, length); + while (index--) { + args[index] = transforms[index](args[index]); + } + return func.apply(this, args); + }); + }); + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + return !predicate.apply(this, arguments); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first call. The `func` is invoked + * with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // `initialize` invokes `createApplication` once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with `partial` arguments prepended + * to those provided to the new function. This method is like `_.bind` except + * it does **not** alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method does not set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * var greet = function(greeting, name) { + * return greeting + ' ' + name; + * }; + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // using placeholders + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = createPartial(PARTIAL_FLAG); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to those provided to the new function. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method does not set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * var greet = function(greeting, name) { + * return greeting + ' ' + name; + * }; + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // using placeholders + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = createPartial(PARTIAL_RIGHT_FLAG); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified indexes where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes, + * specified as individual indexes or arrays of indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, 2, 0, 1); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + * + * var map = _.rearg(_.map, [1, 0]); + * map(function(n) { + * return n * 3; + * }, [1, 2, 3]); + * // => [3, 6, 9] + */ + var rearg = restParam(function(func, indexes) { + return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes)); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as an array. + * + * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.restParam(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function restParam(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + rest = Array(length); + + while (++index < length) { + rest[index] = args[start + index]; + } + switch (start) { + case 0: return func.call(this, rest); + case 1: return func.call(this, args[0], rest); + case 2: return func.call(this, args[0], args[1], rest); + } + var otherArgs = Array(start + 1); + index = -1; + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = rest; + return func.apply(this, otherArgs); + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of the created + * function and an array of arguments much like [`Function#apply`](https://es5.github.io/#x15.3.4.3). + * + * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator). + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to spread arguments over. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * // with a Promise + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function(array) { + return func.apply(this, array); + }; + } + + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed invocations. Provide an options object to indicate + * that `func` should be invoked on the leading and/or trailing edge of the + * `wait` timeout. Subsequent calls to the throttled function return the + * result of the last `func` call. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the throttled function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=true] Specify invoking on the leading + * edge of the timeout. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // avoid excessively updating the position while scrolling + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes + * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { + * 'trailing': false + * })); + * + * // cancel a trailing throttled call + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (options === false) { + leading = false; + } else if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing }); + } + + /** + * Creates a function that provides `value` to the wrapper function as its + * first argument. Any additional arguments provided to the function are + * appended to those provided to the wrapper function. The wrapper is invoked + * with the `this` binding of the created function. + * + * @static + * @memberOf _ + * @category Function + * @param {*} value The value to wrap. + * @param {Function} wrapper The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '<p>' + func(text) + '</p>'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '<p>fred, barney, & pebbles</p>' + */ + function wrap(value, wrapper) { + wrapper = wrapper == null ? identity : wrapper; + return createWrapper(wrapper, PARTIAL_FLAG, undefined, [value], []); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned, + * otherwise they are assigned by reference. If `customizer` is provided it is + * invoked to produce the cloned values. If `customizer` returns `undefined` + * cloning is handled by the method instead. The `customizer` is bound to + * `thisArg` and invoked with two argument; (value [, index|key, object]). + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). + * The enumerable properties of `arguments` objects and objects created by + * constructors other than `Object` are cloned to plain `Object` objects. An + * empty object is returned for uncloneable values such as functions, DOM nodes, + * Maps, Sets, and WeakMaps. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {*} Returns the cloned value. + * @example + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * var shallow = _.clone(users); + * shallow[0] === users[0]; + * // => true + * + * var deep = _.clone(users, true); + * deep[0] === users[0]; + * // => false + * + * // using a customizer callback + * var el = _.clone(document.body, function(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * }); + * + * el === document.body + * // => false + * el.nodeName + * // => BODY + * el.childNodes.length; + * // => 0 + */ + function clone(value, isDeep, customizer, thisArg) { + if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) { + isDeep = false; + } + else if (typeof isDeep == 'function') { + thisArg = customizer; + customizer = isDeep; + isDeep = false; + } + return typeof customizer == 'function' + ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1)) + : baseClone(value, isDeep); + } + + /** + * Creates a deep clone of `value`. If `customizer` is provided it is invoked + * to produce the cloned values. If `customizer` returns `undefined` cloning + * is handled by the method instead. The `customizer` is bound to `thisArg` + * and invoked with two argument; (value [, index|key, object]). + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). + * The enumerable properties of `arguments` objects and objects created by + * constructors other than `Object` are cloned to plain `Object` objects. An + * empty object is returned for uncloneable values such as functions, DOM nodes, + * Maps, Sets, and WeakMaps. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {*} Returns the deep cloned value. + * @example + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * var deep = _.cloneDeep(users); + * deep[0] === users[0]; + * // => false + * + * // using a customizer callback + * var el = _.cloneDeep(document.body, function(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * }); + * + * el === document.body + * // => false + * el.nodeName + * // => BODY + * el.childNodes.length; + * // => 20 + */ + function cloneDeep(value, customizer, thisArg) { + return typeof customizer == 'function' + ? baseClone(value, true, bindCallback(customizer, thisArg, 1)) + : baseClone(value, true); + } + + /** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, else `false`. + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + function gt(value, other) { + return value > other; + } + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to `other`, else `false`. + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ + function gte(value, other) { + return value >= other; + } + + /** + * Checks if `value` is classified as an `arguments` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + function isArguments(value) { + return isObjectLike(value) && isArrayLike(value) && + hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); + } + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(function() { return arguments; }()); + * // => false + */ + var isArray = nativeIsArray || function(value) { + return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; + }; + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || (isObjectLike(value) && objToString.call(value) == boolTag); + } + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + function isDate(value) { + return isObjectLike(value) && objToString.call(value) == dateTag; + } + + /** + * Checks if `value` is a DOM element. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement('<body>'); + * // => false + */ + function isElement(value) { + return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value); + } + + /** + * Checks if `value` is empty. A value is considered empty unless it is an + * `arguments` object, array, string, or jQuery-like collection with a length + * greater than `0` or an object with own enumerable properties. + * + * @static + * @memberOf _ + * @category Lang + * @param {Array|Object|string} value The value to inspect. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) || + (isObjectLike(value) && isFunction(value.splice)))) { + return !value.length; + } + return !keys(value).length; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. If `customizer` is provided it is invoked to compare values. + * If `customizer` returns `undefined` comparisons are handled by the method + * instead. The `customizer` is bound to `thisArg` and invoked with three + * arguments: (value, other [, index|key]). + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. Functions and DOM nodes + * are **not** supported. Provide a customizer function to extend support + * for comparing other values. + * + * @static + * @memberOf _ + * @alias eq + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize value comparisons. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'user': 'fred' }; + * var other = { 'user': 'fred' }; + * + * object == other; + * // => false + * + * _.isEqual(object, other); + * // => true + * + * // using a customizer callback + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqual(array, other, function(value, other) { + * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) { + * return true; + * } + * }); + * // => true + */ + function isEqual(value, other, customizer, thisArg) { + customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + return isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag; + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on [`Number.isFinite`](http://ecma-international.org/ecma-262/6.0/#sec-number.isfinite). + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(10); + * // => true + * + * _.isFinite('10'); + * // => false + * + * _.isFinite(true); + * // => false + * + * _.isFinite(Object(10)); + * // => false + * + * _.isFinite(Infinity); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in older versions of Chrome and Safari which return 'function' for regexes + // and Safari 8 equivalents which return 'object' for typed array constructors. + return isObject(value) && objToString.call(value) == funcTag; + } + + /** + * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ + function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + /** + * Performs a deep comparison between `object` and `source` to determine if + * `object` contains equivalent property values. If `customizer` is provided + * it is invoked to compare values. If `customizer` returns `undefined` + * comparisons are handled by the method instead. The `customizer` is bound + * to `thisArg` and invoked with three arguments: (value, other, index|key). + * + * **Note:** This method supports comparing properties of arrays, booleans, + * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions + * and DOM nodes are **not** supported. Provide a customizer function to extend + * support for comparing other values. + * + * @static + * @memberOf _ + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize value comparisons. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.isMatch(object, { 'age': 40 }); + * // => true + * + * _.isMatch(object, { 'age': 36 }); + * // => false + * + * // using a customizer callback + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatch(object, source, function(value, other) { + * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined; + * }); + * // => true + */ + function isMatch(object, source, customizer, thisArg) { + customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined; + return baseIsMatch(object, getMatchData(source), customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is not the same as [`isNaN`](https://es5.github.io/#x15.1.2.4) + * which returns `true` for `undefined` and other non-numeric values. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some host objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a native function. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (value == null) { + return false; + } + if (isFunction(value)) { + return reIsNative.test(fnToString.call(value)); + } + return isObjectLike(value) && reIsHostCtor.test(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified + * as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isNumber(8.4); + * // => true + * + * _.isNumber(NaN); + * // => true + * + * _.isNumber('8.4'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * **Note:** This method assumes objects created by the `Object` constructor + * have no inherited enumerable properties. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + var Ctor; + + // Exit early for non `Object` objects. + if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isArguments(value)) || + (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { + return false; + } + // IE < 9 iterates inherited properties before own properties. If the first + // iterated property is an object's own property then there are no inherited + // enumerable properties. + var result; + // In most environments an object's own properties are iterated before + // its inherited properties. If the last iterated property is an object's + // own property then there are no inherited enumerable properties. + baseForIn(value, function(subValue, key) { + result = key; + }); + return result === undefined || hasOwnProperty.call(value, result); + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + function isRegExp(value) { + return isObject(value) && objToString.call(value) == regexpTag; + } + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + function isTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)]; + } + + /** + * Checks if `value` is `undefined`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, else `false`. + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ + function lt(value, other) { + return value < other; + } + + /** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to `other`, else `false`. + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ + function lte(value, other) { + return value <= other; + } + + /** + * Converts `value` to an array. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * (function() { + * return _.toArray(arguments).slice(1); + * }(1, 2, 3)); + * // => [2, 3] + */ + function toArray(value) { + var length = value ? getLength(value) : 0; + if (!isLength(length)) { + return values(value); + } + if (!length) { + return []; + } + return arrayCopy(value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable + * properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return baseCopy(value, keysIn(value)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Recursively merges own enumerable properties of the source object(s), that + * don't resolve to `undefined` into the destination object. Subsequent sources + * overwrite property assignments of previous sources. If `customizer` is + * provided it is invoked to produce the merged values of the destination and + * source properties. If `customizer` returns `undefined` merging is handled + * by the method instead. The `customizer` is bound to `thisArg` and invoked + * with five arguments: (objectValue, sourceValue, key, object, source). + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {Object} Returns `object`. + * @example + * + * var users = { + * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] + * }; + * + * var ages = { + * 'data': [{ 'age': 36 }, { 'age': 40 }] + * }; + * + * _.merge(users, ages); + * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } + * + * // using a customizer callback + * var object = { + * 'fruits': ['apple'], + * 'vegetables': ['beet'] + * }; + * + * var other = { + * 'fruits': ['banana'], + * 'vegetables': ['carrot'] + * }; + * + * _.merge(object, other, function(a, b) { + * if (_.isArray(a)) { + * return a.concat(b); + * } + * }); + * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] } + */ + var merge = createAssigner(baseMerge); + + /** + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources overwrite property assignments of previous sources. + * If `customizer` is provided it is invoked to produce the assigned values. + * The `customizer` is bound to `thisArg` and invoked with five arguments: + * (objectValue, sourceValue, key, object, source). + * + * **Note:** This method mutates `object` and is based on + * [`Object.assign`](http://ecma-international.org/ecma-262/6.0/#sec-object.assign). + * + * @static + * @memberOf _ + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {Object} Returns `object`. + * @example + * + * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' }); + * // => { 'user': 'fred', 'age': 40 } + * + * // using a customizer callback + * var defaults = _.partialRight(_.assign, function(value, other) { + * return _.isUndefined(value) ? other : value; + * }); + * + * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); + * // => { 'user': 'barney', 'age': 36 } + */ + var assign = createAssigner(function(object, source, customizer) { + return customizer + ? assignWith(object, source, customizer) + : baseAssign(object, source); + }); + + /** + * Creates an object that inherits from the given `prototype` object. If a + * `properties` object is provided its own enumerable properties are assigned + * to the created object. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties, guard) { + var result = baseCreate(prototype); + if (guard && isIterateeCall(prototype, properties, guard)) { + properties = undefined; + } + return properties ? baseAssign(result, properties) : result; + } + + /** + * Assigns own enumerable properties of source object(s) to the destination + * object for all destination properties that resolve to `undefined`. Once a + * property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); + * // => { 'user': 'barney', 'age': 36 } + */ + var defaults = createDefaults(assign, assignDefaults); + + /** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * _.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } }); + * // => { 'user': { 'name': 'barney', 'age': 36 } } + * + */ + var defaultsDeep = createDefaults(merge, mergeDefaults); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {string|undefined} Returns the key of the matched element, else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(chr) { + * return chr.age < 40; + * }); + * // => 'barney' (iteration order is not guaranteed) + * + * // using the `_.matches` callback shorthand + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // using the `_.matchesProperty` callback shorthand + * _.findKey(users, 'active', false); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.findKey(users, 'active'); + * // => 'barney' + */ + var findKey = createFindKey(baseForOwn); + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {string|undefined} Returns the key of the matched element, else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(chr) { + * return chr.age < 40; + * }); + * // => returns `pebbles` assuming `_.findKey` returns `barney` + * + * // using the `_.matches` callback shorthand + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // using the `_.matchesProperty` callback shorthand + * _.findLastKey(users, 'active', false); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + var findLastKey = createFindKey(baseForOwnRight); + + /** + * Iterates over own and inherited enumerable properties of an object invoking + * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed) + */ + var forIn = createForIn(baseFor); + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c' + */ + var forInRight = createForIn(baseForRight); + + /** + * Iterates over own enumerable properties of an object invoking `iteratee` + * for each property. The `iteratee` is bound to `thisArg` and invoked with + * three arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'a' and 'b' (iteration order is not guaranteed) + */ + var forOwn = createForOwn(baseForOwn); + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b' + */ + var forOwnRight = createForOwn(baseForOwnRight); + + /** + * Creates an array of function property names from all enumerable properties, + * own and inherited, of `object`. + * + * @static + * @memberOf _ + * @alias methods + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the new array of property names. + * @example + * + * _.functions(_); + * // => ['after', 'ary', 'assign', ...] + */ + function functions(object) { + return baseFunctions(object, keysIn(object)); + } + + /** + * Gets the property value at `path` of `object`. If the resolved value is + * `undefined` the `defaultValue` is used in its place. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned if the resolved value is `undefined`. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, toPath(path), path + ''); + return result === undefined ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` is a direct property, else `false`. + * @example + * + * var object = { 'a': { 'b': { 'c': 3 } } }; + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b.c'); + * // => true + * + * _.has(object, ['a', 'b', 'c']); + * // => true + */ + function has(object, path) { + if (object == null) { + return false; + } + var result = hasOwnProperty.call(object, path); + if (!result && !isKey(path)) { + path = toPath(path); + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + if (object == null) { + return false; + } + path = last(path); + result = hasOwnProperty.call(object, path); + } + return result || (isLength(object.length) && isIndex(path, object.length) && + (isArray(object) || isArguments(object))); + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite property + * assignments of previous values unless `multiValue` is `true`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to invert. + * @param {boolean} [multiValue] Allow multiple values per key. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + * + * // with `multiValue` + * _.invert(object, true); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function invert(object, multiValue, guard) { + if (guard && isIterateeCall(object, multiValue, guard)) { + multiValue = undefined; + } + var index = -1, + props = keys(object), + length = props.length, + result = {}; + + while (++index < length) { + var key = props[index], + value = object[key]; + + if (multiValue) { + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + } + else { + result[value] = key; + } + } + return result; + } + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) + * for more details. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + var keys = !nativeKeys ? shimKeys : function(object) { + var Ctor = object == null ? undefined : object.constructor; + if ((typeof Ctor == 'function' && Ctor.prototype === object) || + (typeof object != 'function' && isArrayLike(object))) { + return shimKeys(object); + } + return isObject(object) ? nativeKeys(object) : []; + }; + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + if (object == null) { + return []; + } + if (!isObject(object)) { + object = Object(object); + } + var length = object.length; + length = (length && isLength(length) && + (isArray(object) || isArguments(object)) && length) || 0; + + var Ctor = object.constructor, + index = -1, + isProto = typeof Ctor == 'function' && Ctor.prototype === object, + result = Array(length), + skipIndexes = length > 0; + + while (++index < length) { + result[index] = (index + ''); + } + for (var key in object) { + if (!(skipIndexes && isIndex(key, length)) && + !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * property of `object` through `iteratee`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the new mapped object. + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + var mapKeys = createObjectMapper(true); + + /** + * Creates an object with the same keys as `object` and values generated by + * running each own enumerable property of `object` through `iteratee`. The + * iteratee function is bound to `thisArg` and invoked with three arguments: + * (value, key, object). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the new mapped object. + * @example + * + * _.mapValues({ 'a': 1, 'b': 2 }, function(n) { + * return n * 3; + * }); + * // => { 'a': 3, 'b': 6 } + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * // using the `_.property` callback shorthand + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + var mapValues = createObjectMapper(); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable properties of `object` that are not omitted. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {Function|...(string|string[])} [predicate] The function invoked per + * iteration or property names to omit, specified as individual property + * names or arrays of property names. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.omit(object, 'age'); + * // => { 'user': 'fred' } + * + * _.omit(object, _.isNumber); + * // => { 'user': 'fred' } + */ + var omit = restParam(function(object, props) { + if (object == null) { + return {}; + } + if (typeof props[0] != 'function') { + var props = arrayMap(baseFlatten(props), String); + return pickByArray(object, baseDifference(keysIn(object), props)); + } + var predicate = bindCallback(props[0], props[1], 3); + return pickByCallback(object, function(value, key, object) { + return !predicate(value, key, object); + }); + }); + + /** + * Creates a two dimensional array of the key-value pairs for `object`, + * e.g. `[[key1, value1], [key2, value2]]`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the new array of key-value pairs. + * @example + * + * _.pairs({ 'barney': 36, 'fred': 40 }); + * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed) + */ + function pairs(object) { + object = toObject(object); + + var index = -1, + props = keys(object), + length = props.length, + result = Array(length); + + while (++index < length) { + var key = props[index]; + result[index] = [key, object[key]]; + } + return result; + } + + /** + * Creates an object composed of the picked `object` properties. Property + * names may be specified as individual arguments or as arrays of property + * names. If `predicate` is provided it is invoked for each property of `object` + * picking the properties `predicate` returns truthy for. The predicate is + * bound to `thisArg` and invoked with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {Function|...(string|string[])} [predicate] The function invoked per + * iteration or property names to pick, specified as individual property + * names or arrays of property names. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.pick(object, 'user'); + * // => { 'user': 'fred' } + * + * _.pick(object, _.isString); + * // => { 'user': 'fred' } + */ + var pick = restParam(function(object, props) { + if (object == null) { + return {}; + } + return typeof props[0] == 'function' + ? pickByCallback(object, bindCallback(props[0], props[1], 3)) + : pickByArray(object, baseFlatten(props)); + }); + + /** + * This method is like `_.get` except that if the resolved value is a function + * it is invoked with the `this` binding of its parent object and its result + * is returned. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned if the resolved value is `undefined`. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a.b.c', 'default'); + * // => 'default' + * + * _.result(object, 'a.b.c', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + var result = object == null ? undefined : object[path]; + if (result === undefined) { + if (object != null && !isKey(path, object)) { + path = toPath(path); + object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + result = object == null ? undefined : object[last(path)]; + } + result = result === undefined ? defaultValue : result; + } + return isFunction(result) ? result.call(object) : result; + } + + /** + * Sets the property value of `path` on `object`. If a portion of `path` + * does not exist it is created. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to augment. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, 'x[0].y.z', 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + if (object == null) { + return object; + } + var pathKey = (path + ''); + path = (object[pathKey] != null || isKey(path, object)) ? [pathKey] : toPath(path); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = path[index]; + if (isObject(nested)) { + if (index == lastIndex) { + nested[key] = value; + } else if (nested[key] == null) { + nested[key] = isIndex(path[index + 1]) ? [] : {}; + } + } + nested = nested[key]; + } + return object; + } + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own enumerable + * properties through `iteratee`, with each invocation potentially mutating + * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked + * with four arguments: (accumulator, value, key, object). Iteratee functions + * may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Array|Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) { + * result[key] = n * 3; + * }); + * // => { 'a': 3, 'b': 6 } + */ + function transform(object, iteratee, accumulator, thisArg) { + var isArr = isArray(object) || isTypedArray(object); + iteratee = getCallback(iteratee, thisArg, 4); + + if (accumulator == null) { + if (isArr || isObject(object)) { + var Ctor = object.constructor; + if (isArr) { + accumulator = isArray(object) ? new Ctor : []; + } else { + accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined); + } + } else { + accumulator = {}; + } + } + (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Creates an array of the own enumerable property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable property values + * of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Checks if `n` is between `start` and up to but not including, `end`. If + * `end` is not specified it is set to `start` with `start` then set to `0`. + * + * @static + * @memberOf _ + * @category Number + * @param {number} n The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `n` is in the range, else `false`. + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + */ + function inRange(value, start, end) { + start = +start || 0; + if (end === undefined) { + end = start; + start = 0; + } else { + end = +end || 0; + } + return value >= nativeMin(start, end) && value < nativeMax(start, end); + } + + /** + * Produces a random number between `min` and `max` (inclusive). If only one + * argument is provided a number between `0` and the given number is returned. + * If `floating` is `true`, or either `min` or `max` are floats, a floating-point + * number is returned instead of an integer. + * + * @static + * @memberOf _ + * @category Number + * @param {number} [min=0] The minimum possible value. + * @param {number} [max=1] The maximum possible value. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(min, max, floating) { + if (floating && isIterateeCall(min, max, floating)) { + max = floating = undefined; + } + var noMin = min == null, + noMax = max == null; + + if (floating == null) { + if (noMax && typeof min == 'boolean') { + floating = min; + min = 1; + } + else if (typeof max == 'boolean') { + floating = max; + noMax = true; + } + } + if (noMin && noMax) { + max = 1; + noMax = false; + } + min = +min || 0; + if (noMax) { + max = min; + min = 0; + } else { + max = +max || 0; + } + if (floating || min % 1 || max % 1) { + var rand = nativeRandom(); + return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max); + } + return baseRandom(min, max); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar'); + * // => 'fooBar' + * + * _.camelCase('__foo_bar__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word); + }); + + /** + * Capitalizes the first character of `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('fred'); + * // => 'Fred' + */ + function capitalize(string) { + string = baseToString(string); + return string && (string.charAt(0).toUpperCase() + string.slice(1)); + } + + /** + * Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * to basic latin letters and removing [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = baseToString(string); + return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to search. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search from. + * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = baseToString(string); + target = (target + ''); + + var length = string.length; + position = position === undefined + ? length + : nativeMin(position < 0 ? 0 : (+position || 0), length); + + position -= target.length; + return position >= 0 && string.indexOf(target, position) == position; + } + + /** + * Converts the characters "&", "<", ">", '"', "'", and "\`", in `string` to + * their corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional characters + * use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. + * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * Backticks are escaped because in Internet Explorer < 9, they can break out + * of attribute values or HTML comments. See [#59](https://html5sec.org/#59), + * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and + * [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/) + * for more details. + * + * When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping) + * to reduce XSS vectors. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + // Reset `lastIndex` because in IE < 9 `String#replace` does not. + string = baseToString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?", + * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https:\/\/lodash\.com\/\)' + */ + function escapeRegExp(string) { + string = baseToString(string); + return (string && reHasRegExpChars.test(string)) + ? string.replace(reRegExpChars, escapeRegExpChar) + : (string || '(?:)'); + } + + /** + * Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__foo_bar__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = baseToString(string); + length = +length; + + var strLength = string.length; + if (strLength >= length || !nativeIsFinite(length)) { + return string; + } + var mid = (length - strLength) / 2, + leftLength = nativeFloor(mid), + rightLength = nativeCeil(mid); + + chars = createPadding('', rightLength, chars); + return chars.slice(0, leftLength) + string + chars; + } + + /** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padLeft('abc', 6); + * // => ' abc' + * + * _.padLeft('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padLeft('abc', 3); + * // => 'abc' + */ + var padLeft = createPadDir(); + + /** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padRight('abc', 6); + * // => 'abc ' + * + * _.padRight('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padRight('abc', 3); + * // => 'abc' + */ + var padRight = createPadDir(true); + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal, + * in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the [ES5 implementation](https://es5.github.io/#E) + * of `parseInt`. + * + * @static + * @memberOf _ + * @category String + * @param {string} string The string to convert. + * @param {number} [radix] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`. + // Chrome fails to trim leading <BOM> whitespace characters. + // See https://code.google.com/p/v8/issues/detail?id=3109 for more details. + if (guard ? isIterateeCall(string, radix, guard) : radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + string = trim(string); + return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10)); + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=0] The number of times to repeat the string. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n) { + var result = ''; + string = baseToString(string); + n = +n; + if (n < 1 || !string || !nativeIsFinite(n)) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + string += string; + } while (n); + + return result; + } + + /** + * Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--foo-bar'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__foo_bar__'); + * // => 'Foo Bar' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1)); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to search. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = baseToString(string); + position = position == null + ? 0 + : nativeMin(position < 0 ? 0 : (+position || 0), string.length); + + return string.lastIndexOf(target, position) == position; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is provided it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options] The options object. + * @param {RegExp} [options.escape] The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate] The "evaluate" delimiter. + * @param {Object} [options.imports] An object to import into the template as free variables. + * @param {RegExp} [options.interpolate] The "interpolate" delimiter. + * @param {string} [options.sourceURL] The sourceURL of the template's compiled source. + * @param {string} [options.variable] The data object variable name. + * @param- {Object} [otherOptions] Enables the legacy `options` param signature. + * @returns {Function} Returns the compiled template function. + * @example + * + * // using the "interpolate" delimiter to create a compiled template + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // using the HTML "escape" delimiter to escape data property values + * var compiled = _.template('<b><%- value %></b>'); + * compiled({ 'value': '<script>' }); + * // => '<b><script></b>' + * + * // using the "evaluate" delimiter to execute JavaScript and generate HTML + * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // using the internal `print` function in "evaluate" delimiters + * var compiled = _.template('<% print("hello " + user); %>!'); + * compiled({ 'user': 'barney' }); + * // => 'hello barney!' + * + * // using the ES delimiter as an alternative to the default "interpolate" delimiter + * var compiled = _.template('hello ${ user }!'); + * compiled({ 'user': 'pebbles' }); + * // => 'hello pebbles!' + * + * // using custom template delimiters + * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; + * var compiled = _.template('hello {{ user }}!'); + * compiled({ 'user': 'mustache' }); + * // => 'hello mustache!' + * + * // using backslashes to treat delimiters as plain text + * var compiled = _.template('<%= "\\<%- value %\\>" %>'); + * compiled({ 'value': 'ignored' }); + * // => '<%- value %>' + * + * // using the `imports` option to import `jQuery` as `jq` + * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; + * var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // using the `sourceURL` option to specify a custom sourceURL for the template + * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); + * compiled(data); + * // => find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector + * + * // using the `variable` option to ensure a with-statement isn't used in the compiled template + * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); + * compiled.source; + * // => function(data) { + * // var __t, __p = ''; + * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; + * // return __p; + * // } + * + * // using the `source` property to inline compiled templates for meaningful + * // line numbers in error messages and a stack trace + * fs.writeFileSync(path.join(cwd, 'jst.js'), '\ + * var JST = {\ + * "main": ' + _.template(mainText).source + '\ + * };\ + * '); + */ + function template(string, options, otherOptions) { + // Based on John Resig's `tmpl` implementation (http://ejohn.org/blog/javascript-micro-templating/) + // and Laura Doktorova's doT.js (https://github.com/olado/doT). + var settings = lodash.templateSettings; + + if (otherOptions && isIterateeCall(string, options, otherOptions)) { + options = otherOptions = undefined; + } + string = baseToString(string); + options = assignWith(baseAssign({}, otherOptions || options), settings, assignOwnDefaults); + + var imports = assignWith(baseAssign({}, options.imports), settings.imports, assignOwnDefaults), + importsKeys = keys(imports), + importsValues = baseValues(imports, importsKeys); + + var isEscaping, + isEvaluating, + index = 0, + interpolate = options.interpolate || reNoMatch, + source = "__p += '"; + + // Compile the regexp to match each delimiter. + var reDelimiters = RegExp( + (options.escape || reNoMatch).source + '|' + + interpolate.source + '|' + + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + + (options.evaluate || reNoMatch).source + '|$' + , 'g'); + + // Use a sourceURL for easier debugging. + var sourceURL = '//# sourceURL=' + + ('sourceURL' in options + ? options.sourceURL + : ('lodash.templateSources[' + (++templateCounter) + ']') + ) + '\n'; + + string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { + interpolateValue || (interpolateValue = esTemplateValue); + + // Escape characters that can't be included in string literals. + source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); + + // Replace delimiters with snippets. + if (escapeValue) { + isEscaping = true; + source += "' +\n__e(" + escapeValue + ") +\n'"; + } + if (evaluateValue) { + isEvaluating = true; + source += "';\n" + evaluateValue + ";\n__p += '"; + } + if (interpolateValue) { + source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; + } + index = offset + match.length; + + // The JS engine embedded in Adobe products requires returning the `match` + // string in order to produce the correct `offset` value. + return match; + }); + + source += "';\n"; + + // If `variable` is not specified wrap a with-statement around the generated + // code to add the data object to the top of the scope chain. + var variable = options.variable; + if (!variable) { + source = 'with (obj) {\n' + source + '\n}\n'; + } + // Cleanup code by stripping empty strings. + source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) + .replace(reEmptyStringMiddle, '$1') + .replace(reEmptyStringTrailing, '$1;'); + + // Frame code as the function body. + source = 'function(' + (variable || 'obj') + ') {\n' + + (variable + ? '' + : 'obj || (obj = {});\n' + ) + + "var __t, __p = ''" + + (isEscaping + ? ', __e = _.escape' + : '' + ) + + (isEvaluating + ? ', __j = Array.prototype.join;\n' + + "function print() { __p += __j.call(arguments, '') }\n" + : ';\n' + ) + + source + + 'return __p\n}'; + + var result = attempt(function() { + return Function(importsKeys, sourceURL + 'return ' + source).apply(undefined, importsValues); + }); + + // Provide the compiled function's source by its `toString` method or + // the `source` property as a convenience for inlining compiled templates. + result.source = source; + if (isError(result)) { + throw result; + } + return result; + } + + /** + * Removes leading and trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trim(' abc '); + * // => 'abc' + * + * _.trim('-_-abc-_-', '_-'); + * // => 'abc' + * + * _.map([' foo ', ' bar '], _.trim); + * // => ['foo', 'bar'] + */ + function trim(string, chars, guard) { + var value = string; + string = baseToString(string); + if (!string) { + return string; + } + if (guard ? isIterateeCall(value, chars, guard) : chars == null) { + return string.slice(trimmedLeftIndex(string), trimmedRightIndex(string) + 1); + } + chars = (chars + ''); + return string.slice(charsLeftIndex(string, chars), charsRightIndex(string, chars) + 1); + } + + /** + * Removes leading whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimLeft(' abc '); + * // => 'abc ' + * + * _.trimLeft('-_-abc-_-', '_-'); + * // => 'abc-_-' + */ + function trimLeft(string, chars, guard) { + var value = string; + string = baseToString(string); + if (!string) { + return string; + } + if (guard ? isIterateeCall(value, chars, guard) : chars == null) { + return string.slice(trimmedLeftIndex(string)); + } + return string.slice(charsLeftIndex(string, (chars + ''))); + } + + /** + * Removes trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimRight(' abc '); + * // => ' abc' + * + * _.trimRight('-_-abc-_-', '_-'); + * // => '-_-abc' + */ + function trimRight(string, chars, guard) { + var value = string; + string = baseToString(string); + if (!string) { + return string; + } + if (guard ? isIterateeCall(value, chars, guard) : chars == null) { + return string.slice(0, trimmedRightIndex(string) + 1); + } + return string.slice(0, charsRightIndex(string, (chars + '')) + 1); + } + + /** + * Truncates `string` if it's longer than the given maximum string length. + * The last characters of the truncated string are replaced with the omission + * string which defaults to "...". + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to truncate. + * @param {Object|number} [options] The options object or maximum string length. + * @param {number} [options.length=30] The maximum string length. + * @param {string} [options.omission='...'] The string to indicate text is omitted. + * @param {RegExp|string} [options.separator] The separator pattern to truncate to. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {string} Returns the truncated string. + * @example + * + * _.trunc('hi-diddly-ho there, neighborino'); + * // => 'hi-diddly-ho there, neighbo...' + * + * _.trunc('hi-diddly-ho there, neighborino', 24); + * // => 'hi-diddly-ho there, n...' + * + * _.trunc('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': ' ' + * }); + * // => 'hi-diddly-ho there,...' + * + * _.trunc('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': /,? +/ + * }); + * // => 'hi-diddly-ho there...' + * + * _.trunc('hi-diddly-ho there, neighborino', { + * 'omission': ' [...]' + * }); + * // => 'hi-diddly-ho there, neig [...]' + */ + function trunc(string, options, guard) { + if (guard && isIterateeCall(string, options, guard)) { + options = undefined; + } + var length = DEFAULT_TRUNC_LENGTH, + omission = DEFAULT_TRUNC_OMISSION; + + if (options != null) { + if (isObject(options)) { + var separator = 'separator' in options ? options.separator : separator; + length = 'length' in options ? (+options.length || 0) : length; + omission = 'omission' in options ? baseToString(options.omission) : omission; + } else { + length = +options || 0; + } + } + string = baseToString(string); + if (length >= string.length) { + return string; + } + var end = length - omission.length; + if (end < 1) { + return omission; + } + var result = string.slice(0, end); + if (separator == null) { + return result + omission; + } + if (isRegExp(separator)) { + if (string.slice(end).search(separator)) { + var match, + newEnd, + substring = string.slice(0, end); + + if (!separator.global) { + separator = RegExp(separator.source, (reFlags.exec(separator) || '') + 'g'); + } + separator.lastIndex = 0; + while ((match = separator.exec(substring))) { + newEnd = match.index; + } + result = result.slice(0, newEnd == null ? end : newEnd); + } + } else if (string.indexOf(separator, end) != end) { + var index = result.lastIndexOf(separator); + if (index > -1) { + result = result.slice(0, index); + } + } + return result + omission; + } + + /** + * The inverse of `_.escape`; this method converts the HTML entities + * `&`, `<`, `>`, `"`, `'`, and ``` in `string` to their + * corresponding characters. + * + * **Note:** No other HTML entities are unescaped. To unescape additional HTML + * entities use a third-party library like [_he_](https://mths.be/he). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to unescape. + * @returns {string} Returns the unescaped string. + * @example + * + * _.unescape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function unescape(string) { + string = baseToString(string); + return (string && reHasEscapedHtml.test(string)) + ? string.replace(reEscapedHtml, unescapeHtmlChar) + : string; + } + + /** + * Splits `string` into an array of its words. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to inspect. + * @param {RegExp|string} [pattern] The pattern to match words. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the words of `string`. + * @example + * + * _.words('fred, barney, & pebbles'); + * // => ['fred', 'barney', 'pebbles'] + * + * _.words('fred, barney, & pebbles', /[^, ]+/g); + * // => ['fred', 'barney', '&', 'pebbles'] + */ + function words(string, pattern, guard) { + if (guard && isIterateeCall(string, pattern, guard)) { + pattern = undefined; + } + string = baseToString(string); + return string.match(pattern || reWords) || []; + } + + /*------------------------------------------------------------------------*/ + + /** + * Attempts to invoke `func`, returning either the result or the caught error + * object. Any additional arguments are provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Utility + * @param {Function} func The function to attempt. + * @returns {*} Returns the `func` result or error object. + * @example + * + * // avoid throwing errors for invalid selectors + * var elements = _.attempt(function(selector) { + * return document.querySelectorAll(selector); + * }, '>_>'); + * + * if (_.isError(elements)) { + * elements = []; + * } + */ + var attempt = restParam(function(func, args) { + try { + return func.apply(undefined, args); + } catch(e) { + return isError(e) ? e : new Error(e); + } + }); + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and arguments of the created function. If `func` is a property name the + * created callback returns the property value for a given element. If `func` + * is an object the created callback returns `true` for elements that contain + * the equivalent object properties, otherwise it returns `false`. + * + * @static + * @memberOf _ + * @alias iteratee + * @category Utility + * @param {*} [func=_.identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the callback. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // wrap to create custom callback shorthands + * _.callback = _.wrap(_.callback, function(callback, func, thisArg) { + * var match = /^(.+?)__([gl]t)(.+)$/.exec(func); + * if (!match) { + * return callback(func, thisArg); + * } + * return function(object) { + * return match[2] == 'gt' + * ? object[match[1]] > match[3] + * : object[match[1]] < match[3]; + * }; + * }); + * + * _.filter(users, 'age__gt36'); + * // => [{ 'user': 'fred', 'age': 40 }] + */ + function callback(func, thisArg, guard) { + if (guard && isIterateeCall(func, thisArg, guard)) { + thisArg = undefined; + } + return isObjectLike(func) + ? matches(func) + : baseCallback(func, thisArg); + } + + /** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @category Utility + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new function. + * @example + * + * var object = { 'user': 'fred' }; + * var getter = _.constant(object); + * + * getter() === object; + * // => true + */ + function constant(value) { + return function() { + return value; + }; + } + + /** + * This method returns the first argument provided to it. + * + * @static + * @memberOf _ + * @category Utility + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'user': 'fred' }; + * + * _.identity(object) === object; + * // => true + */ + function identity(value) { + return value; + } + + /** + * Creates a function that performs a deep comparison between a given object + * and `source`, returning `true` if the given object has equivalent property + * values, else `false`. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Utility + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new function. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, _.matches({ 'age': 40, 'active': false })); + * // => [{ 'user': 'fred', 'age': 40, 'active': false }] + */ + function matches(source) { + return baseMatches(baseClone(source, true)); + } + + /** + * Creates a function that compares the property value of `path` on a given + * object to `value`. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. + * + * @static + * @memberOf _ + * @category Utility + * @param {Array|string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new function. + * @example + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * _.find(users, _.matchesProperty('user', 'fred')); + * // => { 'user': 'fred' } + */ + function matchesProperty(path, srcValue) { + return baseMatchesProperty(path, baseClone(srcValue, true)); + } + + /** + * Creates a function that invokes the method at `path` on a given object. + * Any additional arguments are provided to the invoked method. + * + * @static + * @memberOf _ + * @category Utility + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new function. + * @example + * + * var objects = [ + * { 'a': { 'b': { 'c': _.constant(2) } } }, + * { 'a': { 'b': { 'c': _.constant(1) } } } + * ]; + * + * _.map(objects, _.method('a.b.c')); + * // => [2, 1] + * + * _.invoke(_.sortBy(objects, _.method(['a', 'b', 'c'])), 'a.b.c'); + * // => [1, 2] + */ + var method = restParam(function(path, args) { + return function(object) { + return invokePath(object, path, args); + }; + }); + + /** + * The opposite of `_.method`; this method creates a function that invokes + * the method at a given path on `object`. Any additional arguments are + * provided to the invoked method. + * + * @static + * @memberOf _ + * @category Utility + * @param {Object} object The object to query. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new function. + * @example + * + * var array = _.times(3, _.constant), + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.methodOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.methodOf(object)); + * // => [2, 0] + */ + var methodOf = restParam(function(object, args) { + return function(path) { + return invokePath(object, path, args); + }; + }); + + /** + * Adds all own enumerable function properties of a source object to the + * destination object. If `object` is a function then methods are added to + * its prototype as well. + * + * **Note:** Use `_.runInContext` to create a pristine `lodash` function to + * avoid conflicts caused by modifying the original. + * + * @static + * @memberOf _ + * @category Utility + * @param {Function|Object} [object=lodash] The destination object. + * @param {Object} source The object of functions to add. + * @param {Object} [options] The options object. + * @param {boolean} [options.chain=true] Specify whether the functions added + * are chainable. + * @returns {Function|Object} Returns `object`. + * @example + * + * function vowels(string) { + * return _.filter(string, function(v) { + * return /[aeiou]/i.test(v); + * }); + * } + * + * _.mixin({ 'vowels': vowels }); + * _.vowels('fred'); + * // => ['e'] + * + * _('fred').vowels().value(); + * // => ['e'] + * + * _.mixin({ 'vowels': vowels }, { 'chain': false }); + * _('fred').vowels(); + * // => ['e'] + */ + function mixin(object, source, options) { + if (options == null) { + var isObj = isObject(source), + props = isObj ? keys(source) : undefined, + methodNames = (props && props.length) ? baseFunctions(source, props) : undefined; + + if (!(methodNames ? methodNames.length : isObj)) { + methodNames = false; + options = source; + source = object; + object = this; + } + } + if (!methodNames) { + methodNames = baseFunctions(source, keys(source)); + } + var chain = true, + index = -1, + isFunc = isFunction(object), + length = methodNames.length; + + if (options === false) { + chain = false; + } else if (isObject(options) && 'chain' in options) { + chain = options.chain; + } + while (++index < length) { + var methodName = methodNames[index], + func = source[methodName]; + + object[methodName] = func; + if (isFunc) { + object.prototype[methodName] = (function(func) { + return function() { + var chainAll = this.__chain__; + if (chain || chainAll) { + var result = object(this.__wrapped__), + actions = result.__actions__ = arrayCopy(this.__actions__); + + actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); + result.__chain__ = chainAll; + return result; + } + return func.apply(object, arrayPush([this.value()], arguments)); + }; + }(func)); + } + } + return object; + } + + /** + * Reverts the `_` variable to its previous value and returns a reference to + * the `lodash` function. + * + * @static + * @memberOf _ + * @category Utility + * @returns {Function} Returns the `lodash` function. + * @example + * + * var lodash = _.noConflict(); + */ + function noConflict() { + root._ = oldDash; + return this; + } + + /** + * A no-operation function that returns `undefined` regardless of the + * arguments it receives. + * + * @static + * @memberOf _ + * @category Utility + * @example + * + * var object = { 'user': 'fred' }; + * + * _.noop(object) === undefined; + * // => true + */ + function noop() { + // No operation performed. + } + + /** + * Creates a function that returns the property value at `path` on a + * given object. + * + * @static + * @memberOf _ + * @category Utility + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new function. + * @example + * + * var objects = [ + * { 'a': { 'b': { 'c': 2 } } }, + * { 'a': { 'b': { 'c': 1 } } } + * ]; + * + * _.map(objects, _.property('a.b.c')); + * // => [2, 1] + * + * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c'); + * // => [1, 2] + */ + function property(path) { + return isKey(path) ? baseProperty(path) : basePropertyDeep(path); + } + + /** + * The opposite of `_.property`; this method creates a function that returns + * the property value at a given path on `object`. + * + * @static + * @memberOf _ + * @category Utility + * @param {Object} object The object to query. + * @returns {Function} Returns the new function. + * @example + * + * var array = [0, 1, 2], + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); + * // => [2, 0] + */ + function propertyOf(object) { + return function(path) { + return baseGet(object, toPath(path), path + ''); + }; + } + + /** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. If `end` is not specified it is + * set to `start` with `start` then set to `0`. If `end` is less than `start` + * a zero-length range is created unless a negative `step` is specified. + * + * @static + * @memberOf _ + * @category Utility + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the new array of numbers. + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ + function range(start, end, step) { + if (step && isIterateeCall(start, end, step)) { + end = step = undefined; + } + start = +start || 0; + step = step == null ? 1 : (+step || 0); + + if (end == null) { + end = start; + start = 0; + } else { + end = +end || 0; + } + // Use `Array(length)` so engines like Chakra and V8 avoid slower modes. + // See https://youtu.be/XAqIpGU8ZZk#t=17m25s for more details. + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (++index < length) { + result[index] = start; + start += step; + } + return result; + } + + /** + * Invokes the iteratee function `n` times, returning an array of the results + * of each invocation. The `iteratee` is bound to `thisArg` and invoked with + * one argument; (index). + * + * @static + * @memberOf _ + * @category Utility + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the array of results. + * @example + * + * var diceRolls = _.times(3, _.partial(_.random, 1, 6, false)); + * // => [3, 6, 4] + * + * _.times(3, function(n) { + * mage.castSpell(n); + * }); + * // => invokes `mage.castSpell(n)` three times with `n` of `0`, `1`, and `2` + * + * _.times(3, function(n) { + * this.cast(n); + * }, mage); + * // => also invokes `mage.castSpell(n)` three times + */ + function times(n, iteratee, thisArg) { + n = nativeFloor(n); + + // Exit early to avoid a JSC JIT bug in Safari 8 + // where `Array(0)` is treated as `Array(1)`. + if (n < 1 || !nativeIsFinite(n)) { + return []; + } + var index = -1, + result = Array(nativeMin(n, MAX_ARRAY_LENGTH)); + + iteratee = bindCallback(iteratee, thisArg, 1); + while (++index < n) { + if (index < MAX_ARRAY_LENGTH) { + result[index] = iteratee(index); + } else { + iteratee(index); + } + } + return result; + } + + /** + * Generates a unique ID. If `prefix` is provided the ID is appended to it. + * + * @static + * @memberOf _ + * @category Utility + * @param {string} [prefix] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ + function uniqueId(prefix) { + var id = ++idCounter; + return baseToString(prefix) + id; + } + + /*------------------------------------------------------------------------*/ + + /** + * Adds two numbers. + * + * @static + * @memberOf _ + * @category Math + * @param {number} augend The first number to add. + * @param {number} addend The second number to add. + * @returns {number} Returns the sum. + * @example + * + * _.add(6, 4); + * // => 10 + */ + function add(augend, addend) { + return (+augend || 0) + (+addend || 0); + } + + /** + * Calculates `n` rounded up to `precision`. + * + * @static + * @memberOf _ + * @category Math + * @param {number} n The number to round up. + * @param {number} [precision=0] The precision to round up to. + * @returns {number} Returns the rounded up number. + * @example + * + * _.ceil(4.006); + * // => 5 + * + * _.ceil(6.004, 2); + * // => 6.01 + * + * _.ceil(6040, -2); + * // => 6100 + */ + var ceil = createRound('ceil'); + + /** + * Calculates `n` rounded down to `precision`. + * + * @static + * @memberOf _ + * @category Math + * @param {number} n The number to round down. + * @param {number} [precision=0] The precision to round down to. + * @returns {number} Returns the rounded down number. + * @example + * + * _.floor(4.006); + * // => 4 + * + * _.floor(0.046, 2); + * // => 0.04 + * + * _.floor(4060, -2); + * // => 4000 + */ + var floor = createRound('floor'); + + /** + * Gets the maximum value of `collection`. If `collection` is empty or falsey + * `-Infinity` is returned. If an iteratee function is provided it is invoked + * for each value in `collection` to generate the criterion by which the value + * is ranked. The `iteratee` is bound to `thisArg` and invoked with three + * arguments: (value, index, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Math + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => -Infinity + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * _.max(users, function(chr) { + * return chr.age; + * }); + * // => { 'user': 'fred', 'age': 40 } + * + * // using the `_.property` callback shorthand + * _.max(users, 'age'); + * // => { 'user': 'fred', 'age': 40 } + */ + var max = createExtremum(gt, NEGATIVE_INFINITY); + + /** + * Gets the minimum value of `collection`. If `collection` is empty or falsey + * `Infinity` is returned. If an iteratee function is provided it is invoked + * for each value in `collection` to generate the criterion by which the value + * is ranked. The `iteratee` is bound to `thisArg` and invoked with three + * arguments: (value, index, collection). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Math + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => Infinity + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * _.min(users, function(chr) { + * return chr.age; + * }); + * // => { 'user': 'barney', 'age': 36 } + * + * // using the `_.property` callback shorthand + * _.min(users, 'age'); + * // => { 'user': 'barney', 'age': 36 } + */ + var min = createExtremum(lt, POSITIVE_INFINITY); + + /** + * Calculates `n` rounded to `precision`. + * + * @static + * @memberOf _ + * @category Math + * @param {number} n The number to round. + * @param {number} [precision=0] The precision to round to. + * @returns {number} Returns the rounded number. + * @example + * + * _.round(4.006); + * // => 4 + * + * _.round(4.006, 2); + * // => 4.01 + * + * _.round(4060, -2); + * // => 4100 + */ + var round = createRound('round'); + + /** + * Gets the sum of the values in `collection`. + * + * @static + * @memberOf _ + * @category Math + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the sum. + * @example + * + * _.sum([4, 6]); + * // => 10 + * + * _.sum({ 'a': 4, 'b': 6 }); + * // => 10 + * + * var objects = [ + * { 'n': 4 }, + * { 'n': 6 } + * ]; + * + * _.sum(objects, function(object) { + * return object.n; + * }); + * // => 10 + * + * // using the `_.property` callback shorthand + * _.sum(objects, 'n'); + * // => 10 + */ + function sum(collection, iteratee, thisArg) { + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = undefined; + } + iteratee = getCallback(iteratee, thisArg, 3); + return iteratee.length == 1 + ? arraySum(isArray(collection) ? collection : toIterable(collection), iteratee) + : baseSum(collection, iteratee); + } + + /*------------------------------------------------------------------------*/ + + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + // Add functions to the `Map` cache. + MapCache.prototype['delete'] = mapDelete; + MapCache.prototype.get = mapGet; + MapCache.prototype.has = mapHas; + MapCache.prototype.set = mapSet; + + // Add functions to the `Set` cache. + SetCache.prototype.push = cachePush; + + // Assign cache to `_.memoize`. + memoize.Cache = MapCache; + + // Add functions that return wrapped values when chaining. + lodash.after = after; + lodash.ary = ary; + lodash.assign = assign; + lodash.at = at; + lodash.before = before; + lodash.bind = bind; + lodash.bindAll = bindAll; + lodash.bindKey = bindKey; + lodash.callback = callback; + lodash.chain = chain; + lodash.chunk = chunk; + lodash.compact = compact; + lodash.constant = constant; + lodash.countBy = countBy; + lodash.create = create; + lodash.curry = curry; + lodash.curryRight = curryRight; + lodash.debounce = debounce; + lodash.defaults = defaults; + lodash.defaultsDeep = defaultsDeep; + lodash.defer = defer; + lodash.delay = delay; + lodash.difference = difference; + lodash.drop = drop; + lodash.dropRight = dropRight; + lodash.dropRightWhile = dropRightWhile; + lodash.dropWhile = dropWhile; + lodash.fill = fill; + lodash.filter = filter; + lodash.flatten = flatten; + lodash.flattenDeep = flattenDeep; + lodash.flow = flow; + lodash.flowRight = flowRight; + lodash.forEach = forEach; + lodash.forEachRight = forEachRight; + lodash.forIn = forIn; + lodash.forInRight = forInRight; + lodash.forOwn = forOwn; + lodash.forOwnRight = forOwnRight; + lodash.functions = functions; + lodash.groupBy = groupBy; + lodash.indexBy = indexBy; + lodash.initial = initial; + lodash.intersection = intersection; + lodash.invert = invert; + lodash.invoke = invoke; + lodash.keys = keys; + lodash.keysIn = keysIn; + lodash.map = map; + lodash.mapKeys = mapKeys; + lodash.mapValues = mapValues; + lodash.matches = matches; + lodash.matchesProperty = matchesProperty; + lodash.memoize = memoize; + lodash.merge = merge; + lodash.method = method; + lodash.methodOf = methodOf; + lodash.mixin = mixin; + lodash.modArgs = modArgs; + lodash.negate = negate; + lodash.omit = omit; + lodash.once = once; + lodash.pairs = pairs; + lodash.partial = partial; + lodash.partialRight = partialRight; + lodash.partition = partition; + lodash.pick = pick; + lodash.pluck = pluck; + lodash.property = property; + lodash.propertyOf = propertyOf; + lodash.pull = pull; + lodash.pullAt = pullAt; + lodash.range = range; + lodash.rearg = rearg; + lodash.reject = reject; + lodash.remove = remove; + lodash.rest = rest; + lodash.restParam = restParam; + lodash.set = set; + lodash.shuffle = shuffle; + lodash.slice = slice; + lodash.sortBy = sortBy; + lodash.sortByAll = sortByAll; + lodash.sortByOrder = sortByOrder; + lodash.spread = spread; + lodash.take = take; + lodash.takeRight = takeRight; + lodash.takeRightWhile = takeRightWhile; + lodash.takeWhile = takeWhile; + lodash.tap = tap; + lodash.throttle = throttle; + lodash.thru = thru; + lodash.times = times; + lodash.toArray = toArray; + lodash.toPlainObject = toPlainObject; + lodash.transform = transform; + lodash.union = union; + lodash.uniq = uniq; + lodash.unzip = unzip; + lodash.unzipWith = unzipWith; + lodash.values = values; + lodash.valuesIn = valuesIn; + lodash.where = where; + lodash.without = without; + lodash.wrap = wrap; + lodash.xor = xor; + lodash.zip = zip; + lodash.zipObject = zipObject; + lodash.zipWith = zipWith; + + // Add aliases. + lodash.backflow = flowRight; + lodash.collect = map; + lodash.compose = flowRight; + lodash.each = forEach; + lodash.eachRight = forEachRight; + lodash.extend = assign; + lodash.iteratee = callback; + lodash.methods = functions; + lodash.object = zipObject; + lodash.select = filter; + lodash.tail = rest; + lodash.unique = uniq; + + // Add functions to `lodash.prototype`. + mixin(lodash, lodash); + + /*------------------------------------------------------------------------*/ + + // Add functions that return unwrapped values when chaining. + lodash.add = add; + lodash.attempt = attempt; + lodash.camelCase = camelCase; + lodash.capitalize = capitalize; + lodash.ceil = ceil; + lodash.clone = clone; + lodash.cloneDeep = cloneDeep; + lodash.deburr = deburr; + lodash.endsWith = endsWith; + lodash.escape = escape; + lodash.escapeRegExp = escapeRegExp; + lodash.every = every; + lodash.find = find; + lodash.findIndex = findIndex; + lodash.findKey = findKey; + lodash.findLast = findLast; + lodash.findLastIndex = findLastIndex; + lodash.findLastKey = findLastKey; + lodash.findWhere = findWhere; + lodash.first = first; + lodash.floor = floor; + lodash.get = get; + lodash.gt = gt; + lodash.gte = gte; + lodash.has = has; + lodash.identity = identity; + lodash.includes = includes; + lodash.indexOf = indexOf; + lodash.inRange = inRange; + lodash.isArguments = isArguments; + lodash.isArray = isArray; + lodash.isBoolean = isBoolean; + lodash.isDate = isDate; + lodash.isElement = isElement; + lodash.isEmpty = isEmpty; + lodash.isEqual = isEqual; + lodash.isError = isError; + lodash.isFinite = isFinite; + lodash.isFunction = isFunction; + lodash.isMatch = isMatch; + lodash.isNaN = isNaN; + lodash.isNative = isNative; + lodash.isNull = isNull; + lodash.isNumber = isNumber; + lodash.isObject = isObject; + lodash.isPlainObject = isPlainObject; + lodash.isRegExp = isRegExp; + lodash.isString = isString; + lodash.isTypedArray = isTypedArray; + lodash.isUndefined = isUndefined; + lodash.kebabCase = kebabCase; + lodash.last = last; + lodash.lastIndexOf = lastIndexOf; + lodash.lt = lt; + lodash.lte = lte; + lodash.max = max; + lodash.min = min; + lodash.noConflict = noConflict; + lodash.noop = noop; + lodash.now = now; + lodash.pad = pad; + lodash.padLeft = padLeft; + lodash.padRight = padRight; + lodash.parseInt = parseInt; + lodash.random = random; + lodash.reduce = reduce; + lodash.reduceRight = reduceRight; + lodash.repeat = repeat; + lodash.result = result; + lodash.round = round; + lodash.runInContext = runInContext; + lodash.size = size; + lodash.snakeCase = snakeCase; + lodash.some = some; + lodash.sortedIndex = sortedIndex; + lodash.sortedLastIndex = sortedLastIndex; + lodash.startCase = startCase; + lodash.startsWith = startsWith; + lodash.sum = sum; + lodash.template = template; + lodash.trim = trim; + lodash.trimLeft = trimLeft; + lodash.trimRight = trimRight; + lodash.trunc = trunc; + lodash.unescape = unescape; + lodash.uniqueId = uniqueId; + lodash.words = words; + + // Add aliases. + lodash.all = every; + lodash.any = some; + lodash.contains = includes; + lodash.eq = isEqual; + lodash.detect = find; + lodash.foldl = reduce; + lodash.foldr = reduceRight; + lodash.head = first; + lodash.include = includes; + lodash.inject = reduce; + + mixin(lodash, (function() { + var source = {}; + baseForOwn(lodash, function(func, methodName) { + if (!lodash.prototype[methodName]) { + source[methodName] = func; + } + }); + return source; + }()), false); + + /*------------------------------------------------------------------------*/ + + // Add functions capable of returning wrapped and unwrapped values when chaining. + lodash.sample = sample; + + lodash.prototype.sample = function(n) { + if (!this.__chain__ && n == null) { + return sample(this.value()); + } + return this.thru(function(value) { + return sample(value, n); + }); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The semantic version number. + * + * @static + * @memberOf _ + * @type string + */ + lodash.VERSION = VERSION; + + // Assign default placeholders. + arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) { + lodash[methodName].placeholder = lodash; + }); + + // Add `LazyWrapper` methods for `_.drop` and `_.take` variants. + arrayEach(['drop', 'take'], function(methodName, index) { + LazyWrapper.prototype[methodName] = function(n) { + var filtered = this.__filtered__; + if (filtered && !index) { + return new LazyWrapper(this); + } + n = n == null ? 1 : nativeMax(nativeFloor(n) || 0, 0); + + var result = this.clone(); + if (filtered) { + result.__takeCount__ = nativeMin(result.__takeCount__, n); + } else { + result.__views__.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') }); + } + return result; + }; + + LazyWrapper.prototype[methodName + 'Right'] = function(n) { + return this.reverse()[methodName](n).reverse(); + }; + }); + + // Add `LazyWrapper` methods that accept an `iteratee` value. + arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) { + var type = index + 1, + isFilter = type != LAZY_MAP_FLAG; + + LazyWrapper.prototype[methodName] = function(iteratee, thisArg) { + var result = this.clone(); + result.__iteratees__.push({ 'iteratee': getCallback(iteratee, thisArg, 1), 'type': type }); + result.__filtered__ = result.__filtered__ || isFilter; + return result; + }; + }); + + // Add `LazyWrapper` methods for `_.first` and `_.last`. + arrayEach(['first', 'last'], function(methodName, index) { + var takeName = 'take' + (index ? 'Right' : ''); + + LazyWrapper.prototype[methodName] = function() { + return this[takeName](1).value()[0]; + }; + }); + + // Add `LazyWrapper` methods for `_.initial` and `_.rest`. + arrayEach(['initial', 'rest'], function(methodName, index) { + var dropName = 'drop' + (index ? '' : 'Right'); + + LazyWrapper.prototype[methodName] = function() { + return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); + }; + }); + + // Add `LazyWrapper` methods for `_.pluck` and `_.where`. + arrayEach(['pluck', 'where'], function(methodName, index) { + var operationName = index ? 'filter' : 'map', + createCallback = index ? baseMatches : property; + + LazyWrapper.prototype[methodName] = function(value) { + return this[operationName](createCallback(value)); + }; + }); + + LazyWrapper.prototype.compact = function() { + return this.filter(identity); + }; + + LazyWrapper.prototype.reject = function(predicate, thisArg) { + predicate = getCallback(predicate, thisArg, 1); + return this.filter(function(value) { + return !predicate(value); + }); + }; + + LazyWrapper.prototype.slice = function(start, end) { + start = start == null ? 0 : (+start || 0); + + var result = this; + if (result.__filtered__ && (start > 0 || end < 0)) { + return new LazyWrapper(result); + } + if (start < 0) { + result = result.takeRight(-start); + } else if (start) { + result = result.drop(start); + } + if (end !== undefined) { + end = (+end || 0); + result = end < 0 ? result.dropRight(-end) : result.take(end - start); + } + return result; + }; + + LazyWrapper.prototype.takeRightWhile = function(predicate, thisArg) { + return this.reverse().takeWhile(predicate, thisArg).reverse(); + }; + + LazyWrapper.prototype.toArray = function() { + return this.take(POSITIVE_INFINITY); + }; + + // Add `LazyWrapper` methods to `lodash.prototype`. + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var checkIteratee = /^(?:filter|map|reject)|While$/.test(methodName), + retUnwrapped = /^(?:first|last)$/.test(methodName), + lodashFunc = lodash[retUnwrapped ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName]; + + if (!lodashFunc) { + return; + } + lodash.prototype[methodName] = function() { + var args = retUnwrapped ? [1] : arguments, + chainAll = this.__chain__, + value = this.__wrapped__, + isHybrid = !!this.__actions__.length, + isLazy = value instanceof LazyWrapper, + iteratee = args[0], + useLazy = isLazy || isArray(value); + + if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) { + // Avoid lazy use if the iteratee has a "length" value other than `1`. + isLazy = useLazy = false; + } + var interceptor = function(value) { + return (retUnwrapped && chainAll) + ? lodashFunc(value, 1)[0] + : lodashFunc.apply(undefined, arrayPush([value], args)); + }; + + var action = { 'func': thru, 'args': [interceptor], 'thisArg': undefined }, + onlyLazy = isLazy && !isHybrid; + + if (retUnwrapped && !chainAll) { + if (onlyLazy) { + value = value.clone(); + value.__actions__.push(action); + return func.call(value); + } + return lodashFunc.call(undefined, this.value())[0]; + } + if (!retUnwrapped && useLazy) { + value = onlyLazy ? value : new LazyWrapper(this); + var result = func.apply(value, args); + result.__actions__.push(action); + return new LodashWrapper(result, chainAll); + } + return this.thru(interceptor); + }; + }); + + // Add `Array` and `String` methods to `lodash.prototype`. + arrayEach(['join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) { + var func = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName], + chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', + retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName); + + lodash.prototype[methodName] = function() { + var args = arguments; + if (retUnwrapped && !this.__chain__) { + return func.apply(this.value(), args); + } + return this[chainName](function(value) { + return func.apply(value, args); + }); + }; + }); + + // Map minified function names to their real names. + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var lodashFunc = lodash[methodName]; + if (lodashFunc) { + var key = lodashFunc.name, + names = realNames[key] || (realNames[key] = []); + + names.push({ 'name': methodName, 'func': lodashFunc }); + } + }); + + realNames[createHybridWrapper(undefined, BIND_KEY_FLAG).name] = [{ 'name': 'wrapper', 'func': undefined }]; + + // Add functions to the lazy wrapper. + LazyWrapper.prototype.clone = lazyClone; + LazyWrapper.prototype.reverse = lazyReverse; + LazyWrapper.prototype.value = lazyValue; + + // Add chaining functions to the `lodash` wrapper. + lodash.prototype.chain = wrapperChain; + lodash.prototype.commit = wrapperCommit; + lodash.prototype.concat = wrapperConcat; + lodash.prototype.plant = wrapperPlant; + lodash.prototype.reverse = wrapperReverse; + lodash.prototype.toString = wrapperToString; + lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; + + // Add function aliases to the `lodash` wrapper. + lodash.prototype.collect = lodash.prototype.map; + lodash.prototype.head = lodash.prototype.first; + lodash.prototype.select = lodash.prototype.filter; + lodash.prototype.tail = lodash.prototype.rest; + + return lodash; + } + + /*--------------------------------------------------------------------------*/ + + // Export lodash. + var _ = runInContext(); + + // Some AMD build optimizers like r.js check for condition patterns like the following: + if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) { + // Expose lodash to the global object when an AMD loader is present to avoid + // errors in cases where lodash is loaded by a script tag and not intended + // as an AMD module. See http://requirejs.org/docs/errors.html#mismatch for + // more details. + root._ = _; + + // Define as an anonymous module so, through path mapping, it can be + // referenced as the "underscore" module. + define(function() { + return _; + }); + } + // Check for `exports` after `define` in case a build optimizer adds an `exports` object. + else if (freeExports && freeModule) { + // Export for Node.js or RingoJS. + if (moduleExports) { + (freeModule.exports = _)._ = _; + } + // Export for Rhino with CommonJS support. + else { + freeExports._ = _; + } + } + else { + // Export for a browser or Rhino. + root._ = _; + } +}.call(this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}]},{},["/node_modules/xqlint/lib/xqlint.js"]); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/xquery/xquery_lexer.js b/plugins/node_modules/ace/lib/ace/mode/xquery/xquery_lexer.js new file mode 100644 index 00000000..14413843 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xquery/xquery_lexer.js @@ -0,0 +1,4438 @@ +define(function(require, exports, module) { +module.exports = (function outer (modules, cache, entry) { + var previousRequire = typeof require == "function" && require; + function newRequire(name, jumped){ + if(!cache[name]) { + if(!modules[name]) { + var currentRequire = typeof require == "function" && require; + if (!jumped && currentRequire) return currentRequire(name, true); + if (previousRequire) return previousRequire(name, true); + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + var m = cache[name] = {exports:{}}; + modules[name][0].call(m.exports, function(x){ + var id = modules[name][1][x]; + return newRequire(id ? id : x); + },m,m.exports,outer,modules,cache,entry); + } + return cache[name].exports; + } + for(var i=0;i<entry.length;i++) newRequire(entry[i]); + return newRequire(entry[0]); +}) +({"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js":[function(_dereq_,module,exports){ +// This file was generated on Thu Jul 24, 2014 15:01 (UTC+01) by REx v5.30 which is Copyright (c) 1979-2014 by Gunther Rademacher <grd@gmx.net> +// REx command line: XQueryTokenizer.ebnf -ll 2 -backtrack -tree -javascript -a xqlint + + // line 2 "XQueryTokenizer.ebnf" + var XQueryTokenizer = exports.XQueryTokenizer = function XQueryTokenizer(string, parsingEventHandler) + { + init(string, parsingEventHandler); + // line 9 "XQueryTokenizer.js" + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + end = e; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? XQueryTokenizer.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = XQueryTokenizer.getTokenSet(- e.getState()); + } + else + { + expected = [XQueryTokenizer.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_start = function() + { + eventHandler.startNonterminal("start", e0); + lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | + // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + // S^WS | EOF | '!' | '"' | "'" | '(' | '(#' | '(:' | '(:~' | ')' | ',' | '.' | + // '/' | ':' | ';' | '<!--' | '<![CDATA[' | '<?' | '[' | ']' | 'after' | + // 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | 'as' | 'ascending' | + // 'at' | 'attribute' | 'base-uri' | 'before' | 'boundary-space' | 'break' | + // 'case' | 'cast' | 'castable' | 'catch' | 'child' | 'collation' | 'comment' | + // 'constraint' | 'construction' | 'context' | 'continue' | 'copy' | + // 'copy-namespaces' | 'count' | 'decimal-format' | 'declare' | 'default' | + // 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | + // 'document' | 'document-node' | 'element' | 'else' | 'empty' | 'empty-sequence' | + // 'encoding' | 'end' | 'eq' | 'every' | 'except' | 'exit' | 'external' | 'first' | + // 'following' | 'following-sibling' | 'for' | 'ft-option' | 'function' | 'ge' | + // 'group' | 'gt' | 'idiv' | 'if' | 'import' | 'in' | 'index' | 'insert' | + // 'instance' | 'integrity' | 'intersect' | 'into' | 'is' | 'item' | 'last' | + // 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | 'modify' | 'module' | + // 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | 'only' | 'option' | + // 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | 'preceding' | + // 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | + // 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' | '{' | '|' | '}' + switch (l1) + { + case 55: // '<![CDATA[' + shift(55); // '<![CDATA[' + break; + case 54: // '<!--' + shift(54); // '<!--' + break; + case 56: // '<?' + shift(56); // '<?' + break; + case 40: // '(#' + shift(40); // '(#' + break; + case 42: // '(:~' + shift(42); // '(:~' + break; + case 41: // '(:' + shift(41); // '(:' + break; + case 35: // '"' + shift(35); // '"' + break; + case 38: // "'" + shift(38); // "'" + break; + case 274: // '}' + shift(274); // '}' + break; + case 271: // '{' + shift(271); // '{' + break; + case 39: // '(' + shift(39); // '(' + break; + case 43: // ')' + shift(43); // ')' + break; + case 49: // '/' + shift(49); // '/' + break; + case 62: // '[' + shift(62); // '[' + break; + case 63: // ']' + shift(63); // ']' + break; + case 46: // ',' + shift(46); // ',' + break; + case 48: // '.' + shift(48); // '.' + break; + case 53: // ';' + shift(53); // ';' + break; + case 51: // ':' + shift(51); // ':' + break; + case 34: // '!' + shift(34); // '!' + break; + case 273: // '|' + shift(273); // '|' + break; + case 2: // Annotation + shift(2); // Annotation + break; + case 1: // ModuleDecl + shift(1); // ModuleDecl + break; + case 3: // OptionDecl + shift(3); // OptionDecl + break; + case 12: // AttrTest + shift(12); // AttrTest + break; + case 13: // Wildcard + shift(13); // Wildcard + break; + case 15: // IntegerLiteral + shift(15); // IntegerLiteral + break; + case 16: // DecimalLiteral + shift(16); // DecimalLiteral + break; + case 17: // DoubleLiteral + shift(17); // DoubleLiteral + break; + case 5: // Variable + shift(5); // Variable + break; + case 6: // Tag + shift(6); // Tag + break; + case 4: // Operator + shift(4); // Operator + break; + case 33: // EOF + shift(33); // EOF + break; + default: + parse_EQName(); + } + eventHandler.endNonterminal("start", e0); + }; + + this.parse_StartTag = function() + { + eventHandler.startNonterminal("StartTag", e0); + lookahead1W(8); // QName | S^WS | EOF | '"' | "'" | '/>' | '=' | '>' + switch (l1) + { + case 58: // '>' + shift(58); // '>' + break; + case 50: // '/>' + shift(50); // '/>' + break; + case 27: // QName + shift(27); // QName + break; + case 57: // '=' + shift(57); // '=' + break; + case 35: // '"' + shift(35); // '"' + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("StartTag", e0); + }; + + this.parse_TagContent = function() + { + eventHandler.startNonterminal("TagContent", e0); + lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | + // '<!--' | '<![CDATA[' | '{' | '{{' | '}}' + switch (l1) + { + case 23: // ElementContentChar + shift(23); // ElementContentChar + break; + case 6: // Tag + shift(6); // Tag + break; + case 7: // EndTag + shift(7); // EndTag + break; + case 55: // '<![CDATA[' + shift(55); // '<![CDATA[' + break; + case 54: // '<!--' + shift(54); // '<!--' + break; + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 272: // '{{' + shift(272); // '{{' + break; + case 275: // '}}' + shift(275); // '}}' + break; + case 271: // '{' + shift(271); // '{' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("TagContent", e0); + }; + + this.parse_AposAttr = function() + { + eventHandler.startNonterminal("AposAttr", e0); + lookahead1(10); // PredefinedEntityRef | EscapeApos | AposAttrContentChar | CharRef | EOF | "'" | + // '{' | '{{' | '}}' + switch (l1) + { + case 20: // EscapeApos + shift(20); // EscapeApos + break; + case 25: // AposAttrContentChar + shift(25); // AposAttrContentChar + break; + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 272: // '{{' + shift(272); // '{{' + break; + case 275: // '}}' + shift(275); // '}}' + break; + case 271: // '{' + shift(271); // '{' + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("AposAttr", e0); + }; + + this.parse_QuotAttr = function() + { + eventHandler.startNonterminal("QuotAttr", e0); + lookahead1(9); // PredefinedEntityRef | EscapeQuot | QuotAttrContentChar | CharRef | EOF | '"' | + // '{' | '{{' | '}}' + switch (l1) + { + case 19: // EscapeQuot + shift(19); // EscapeQuot + break; + case 24: // QuotAttrContentChar + shift(24); // QuotAttrContentChar + break; + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 272: // '{{' + shift(272); // '{{' + break; + case 275: // '}}' + shift(275); // '}}' + break; + case 271: // '{' + shift(271); // '{' + break; + case 35: // '"' + shift(35); // '"' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("QuotAttr", e0); + }; + + this.parse_CData = function() + { + eventHandler.startNonterminal("CData", e0); + lookahead1(1); // CDataSectionContents | EOF | ']]>' + switch (l1) + { + case 11: // CDataSectionContents + shift(11); // CDataSectionContents + break; + case 64: // ']]>' + shift(64); // ']]>' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("CData", e0); + }; + + this.parse_XMLComment = function() + { + eventHandler.startNonterminal("XMLComment", e0); + lookahead1(0); // DirCommentContents | EOF | '-->' + switch (l1) + { + case 9: // DirCommentContents + shift(9); // DirCommentContents + break; + case 47: // '-->' + shift(47); // '-->' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("XMLComment", e0); + }; + + this.parse_PI = function() + { + eventHandler.startNonterminal("PI", e0); + lookahead1(3); // DirPIContents | EOF | '?' | '?>' + switch (l1) + { + case 10: // DirPIContents + shift(10); // DirPIContents + break; + case 59: // '?' + shift(59); // '?' + break; + case 60: // '?>' + shift(60); // '?>' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("PI", e0); + }; + + this.parse_Pragma = function() + { + eventHandler.startNonterminal("Pragma", e0); + lookahead1(2); // PragmaContents | EOF | '#' | '#)' + switch (l1) + { + case 8: // PragmaContents + shift(8); // PragmaContents + break; + case 36: // '#' + shift(36); // '#' + break; + case 37: // '#)' + shift(37); // '#)' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Pragma", e0); + }; + + this.parse_Comment = function() + { + eventHandler.startNonterminal("Comment", e0); + lookahead1(4); // CommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 52: // ':)' + shift(52); // ':)' + break; + case 41: // '(:' + shift(41); // '(:' + break; + case 30: // CommentContents + shift(30); // CommentContents + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Comment", e0); + }; + + this.parse_CommentDoc = function() + { + eventHandler.startNonterminal("CommentDoc", e0); + lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 31: // DocTag + shift(31); // DocTag + break; + case 32: // DocCommentContents + shift(32); // DocCommentContents + break; + case 52: // ':)' + shift(52); // ':)' + break; + case 41: // '(:' + shift(41); // '(:' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("CommentDoc", e0); + }; + + this.parse_QuotString = function() + { + eventHandler.startNonterminal("QuotString", e0); + lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 19: // EscapeQuot + shift(19); // EscapeQuot + break; + case 21: // QuotChar + shift(21); // QuotChar + break; + case 35: // '"' + shift(35); // '"' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("QuotString", e0); + }; + + this.parse_AposString = function() + { + eventHandler.startNonterminal("AposString", e0); + lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 20: // EscapeApos + shift(20); // EscapeApos + break; + case 22: // AposChar + shift(22); // AposChar + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("AposString", e0); + }; + + this.parse_Prefix = function() + { + eventHandler.startNonterminal("Prefix", e0); + lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + }; + + this.parse__EQName = function() + { + eventHandler.startNonterminal("_EQName", e0); + lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + // 'and' | 'as' | 'ascending' | 'at' | 'attribute' | 'base-uri' | 'before' | + // 'boundary-space' | 'break' | 'case' | 'cast' | 'castable' | 'catch' | 'child' | + // 'collation' | 'comment' | 'constraint' | 'construction' | 'context' | + // 'continue' | 'copy' | 'copy-namespaces' | 'count' | 'decimal-format' | + // 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | + // 'descending' | 'div' | 'document' | 'document-node' | 'element' | 'else' | + // 'empty' | 'empty-sequence' | 'encoding' | 'end' | 'eq' | 'every' | 'except' | + // 'exit' | 'external' | 'first' | 'following' | 'following-sibling' | 'for' | + // 'ft-option' | 'function' | 'ge' | 'group' | 'gt' | 'idiv' | 'if' | 'import' | + // 'in' | 'index' | 'insert' | 'instance' | 'integrity' | 'intersect' | 'into' | + // 'is' | 'item' | 'last' | 'lax' | 'le' | 'let' | 'loop' | 'lt' | 'mod' | + // 'modify' | 'module' | 'namespace' | 'namespace-node' | 'ne' | 'node' | 'nodes' | + // 'only' | 'option' | 'or' | 'order' | 'ordered' | 'ordering' | 'parent' | + // 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | + // 'replace' | 'return' | 'returning' | 'revalidation' | 'satisfies' | 'schema' | + // 'schema-attribute' | 'schema-element' | 'score' | 'self' | 'sliding' | 'some' | + // 'stable' | 'start' | 'strict' | 'switch' | 'text' | 'to' | 'treat' | 'try' | + // 'tumbling' | 'type' | 'typeswitch' | 'union' | 'unordered' | 'updating' | + // 'validate' | 'value' | 'variable' | 'version' | 'where' | 'while' | 'with' | + // 'xquery' + whitespace(); + parse_EQName(); + eventHandler.endNonterminal("_EQName", e0); + }; + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + switch (l1) + { + case 77: // 'attribute' + shift(77); // 'attribute' + break; + case 91: // 'comment' + shift(91); // 'comment' + break; + case 115: // 'document-node' + shift(115); // 'document-node' + break; + case 116: // 'element' + shift(116); // 'element' + break; + case 119: // 'empty-sequence' + shift(119); // 'empty-sequence' + break; + case 140: // 'function' + shift(140); // 'function' + break; + case 147: // 'if' + shift(147); // 'if' + break; + case 160: // 'item' + shift(160); // 'item' + break; + case 180: // 'namespace-node' + shift(180); // 'namespace-node' + break; + case 186: // 'node' + shift(186); // 'node' + break; + case 211: // 'processing-instruction' + shift(211); // 'processing-instruction' + break; + case 221: // 'schema-attribute' + shift(221); // 'schema-attribute' + break; + case 222: // 'schema-element' + shift(222); // 'schema-element' + break; + case 238: // 'switch' + shift(238); // 'switch' + break; + case 239: // 'text' + shift(239); // 'text' + break; + case 248: // 'typeswitch' + shift(248); // 'typeswitch' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 14: // EQName^Token + shift(14); // EQName^Token + break; + case 65: // 'after' + shift(65); // 'after' + break; + case 68: // 'ancestor' + shift(68); // 'ancestor' + break; + case 69: // 'ancestor-or-self' + shift(69); // 'ancestor-or-self' + break; + case 70: // 'and' + shift(70); // 'and' + break; + case 74: // 'as' + shift(74); // 'as' + break; + case 75: // 'ascending' + shift(75); // 'ascending' + break; + case 79: // 'before' + shift(79); // 'before' + break; + case 83: // 'case' + shift(83); // 'case' + break; + case 84: // 'cast' + shift(84); // 'cast' + break; + case 85: // 'castable' + shift(85); // 'castable' + break; + case 88: // 'child' + shift(88); // 'child' + break; + case 89: // 'collation' + shift(89); // 'collation' + break; + case 98: // 'copy' + shift(98); // 'copy' + break; + case 100: // 'count' + shift(100); // 'count' + break; + case 103: // 'declare' + shift(103); // 'declare' + break; + case 104: // 'default' + shift(104); // 'default' + break; + case 105: // 'delete' + shift(105); // 'delete' + break; + case 106: // 'descendant' + shift(106); // 'descendant' + break; + case 107: // 'descendant-or-self' + shift(107); // 'descendant-or-self' + break; + case 108: // 'descending' + shift(108); // 'descending' + break; + case 113: // 'div' + shift(113); // 'div' + break; + case 114: // 'document' + shift(114); // 'document' + break; + case 117: // 'else' + shift(117); // 'else' + break; + case 118: // 'empty' + shift(118); // 'empty' + break; + case 121: // 'end' + shift(121); // 'end' + break; + case 123: // 'eq' + shift(123); // 'eq' + break; + case 124: // 'every' + shift(124); // 'every' + break; + case 126: // 'except' + shift(126); // 'except' + break; + case 129: // 'first' + shift(129); // 'first' + break; + case 130: // 'following' + shift(130); // 'following' + break; + case 131: // 'following-sibling' + shift(131); // 'following-sibling' + break; + case 132: // 'for' + shift(132); // 'for' + break; + case 141: // 'ge' + shift(141); // 'ge' + break; + case 143: // 'group' + shift(143); // 'group' + break; + case 145: // 'gt' + shift(145); // 'gt' + break; + case 146: // 'idiv' + shift(146); // 'idiv' + break; + case 148: // 'import' + shift(148); // 'import' + break; + case 154: // 'insert' + shift(154); // 'insert' + break; + case 155: // 'instance' + shift(155); // 'instance' + break; + case 157: // 'intersect' + shift(157); // 'intersect' + break; + case 158: // 'into' + shift(158); // 'into' + break; + case 159: // 'is' + shift(159); // 'is' + break; + case 165: // 'last' + shift(165); // 'last' + break; + case 167: // 'le' + shift(167); // 'le' + break; + case 169: // 'let' + shift(169); // 'let' + break; + case 173: // 'lt' + shift(173); // 'lt' + break; + case 175: // 'mod' + shift(175); // 'mod' + break; + case 176: // 'modify' + shift(176); // 'modify' + break; + case 177: // 'module' + shift(177); // 'module' + break; + case 179: // 'namespace' + shift(179); // 'namespace' + break; + case 181: // 'ne' + shift(181); // 'ne' + break; + case 193: // 'only' + shift(193); // 'only' + break; + case 195: // 'or' + shift(195); // 'or' + break; + case 196: // 'order' + shift(196); // 'order' + break; + case 197: // 'ordered' + shift(197); // 'ordered' + break; + case 201: // 'parent' + shift(201); // 'parent' + break; + case 207: // 'preceding' + shift(207); // 'preceding' + break; + case 208: // 'preceding-sibling' + shift(208); // 'preceding-sibling' + break; + case 213: // 'rename' + shift(213); // 'rename' + break; + case 214: // 'replace' + shift(214); // 'replace' + break; + case 215: // 'return' + shift(215); // 'return' + break; + case 219: // 'satisfies' + shift(219); // 'satisfies' + break; + case 224: // 'self' + shift(224); // 'self' + break; + case 230: // 'some' + shift(230); // 'some' + break; + case 231: // 'stable' + shift(231); // 'stable' + break; + case 232: // 'start' + shift(232); // 'start' + break; + case 243: // 'to' + shift(243); // 'to' + break; + case 244: // 'treat' + shift(244); // 'treat' + break; + case 245: // 'try' + shift(245); // 'try' + break; + case 249: // 'union' + shift(249); // 'union' + break; + case 251: // 'unordered' + shift(251); // 'unordered' + break; + case 255: // 'validate' + shift(255); // 'validate' + break; + case 261: // 'where' + shift(261); // 'where' + break; + case 265: // 'with' + shift(265); // 'with' + break; + case 269: // 'xquery' + shift(269); // 'xquery' + break; + case 67: // 'allowing' + shift(67); // 'allowing' + break; + case 76: // 'at' + shift(76); // 'at' + break; + case 78: // 'base-uri' + shift(78); // 'base-uri' + break; + case 80: // 'boundary-space' + shift(80); // 'boundary-space' + break; + case 81: // 'break' + shift(81); // 'break' + break; + case 86: // 'catch' + shift(86); // 'catch' + break; + case 93: // 'construction' + shift(93); // 'construction' + break; + case 96: // 'context' + shift(96); // 'context' + break; + case 97: // 'continue' + shift(97); // 'continue' + break; + case 99: // 'copy-namespaces' + shift(99); // 'copy-namespaces' + break; + case 101: // 'decimal-format' + shift(101); // 'decimal-format' + break; + case 120: // 'encoding' + shift(120); // 'encoding' + break; + case 127: // 'exit' + shift(127); // 'exit' + break; + case 128: // 'external' + shift(128); // 'external' + break; + case 136: // 'ft-option' + shift(136); // 'ft-option' + break; + case 149: // 'in' + shift(149); // 'in' + break; + case 150: // 'index' + shift(150); // 'index' + break; + case 156: // 'integrity' + shift(156); // 'integrity' + break; + case 166: // 'lax' + shift(166); // 'lax' + break; + case 187: // 'nodes' + shift(187); // 'nodes' + break; + case 194: // 'option' + shift(194); // 'option' + break; + case 198: // 'ordering' + shift(198); // 'ordering' + break; + case 217: // 'revalidation' + shift(217); // 'revalidation' + break; + case 220: // 'schema' + shift(220); // 'schema' + break; + case 223: // 'score' + shift(223); // 'score' + break; + case 229: // 'sliding' + shift(229); // 'sliding' + break; + case 235: // 'strict' + shift(235); // 'strict' + break; + case 246: // 'tumbling' + shift(246); // 'tumbling' + break; + case 247: // 'type' + shift(247); // 'type' + break; + case 252: // 'updating' + shift(252); // 'updating' + break; + case 256: // 'value' + shift(256); // 'value' + break; + case 257: // 'variable' + shift(257); // 'variable' + break; + case 258: // 'version' + shift(258); // 'version' + break; + case 262: // 'while' + shift(262); // 'while' + break; + case 92: // 'constraint' + shift(92); // 'constraint' + break; + case 171: // 'loop' + shift(171); // 'loop' + break; + default: + shift(216); // 'returning' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 26: // NCName^Token + shift(26); // NCName^Token + break; + case 65: // 'after' + shift(65); // 'after' + break; + case 70: // 'and' + shift(70); // 'and' + break; + case 74: // 'as' + shift(74); // 'as' + break; + case 75: // 'ascending' + shift(75); // 'ascending' + break; + case 79: // 'before' + shift(79); // 'before' + break; + case 83: // 'case' + shift(83); // 'case' + break; + case 84: // 'cast' + shift(84); // 'cast' + break; + case 85: // 'castable' + shift(85); // 'castable' + break; + case 89: // 'collation' + shift(89); // 'collation' + break; + case 100: // 'count' + shift(100); // 'count' + break; + case 104: // 'default' + shift(104); // 'default' + break; + case 108: // 'descending' + shift(108); // 'descending' + break; + case 113: // 'div' + shift(113); // 'div' + break; + case 117: // 'else' + shift(117); // 'else' + break; + case 118: // 'empty' + shift(118); // 'empty' + break; + case 121: // 'end' + shift(121); // 'end' + break; + case 123: // 'eq' + shift(123); // 'eq' + break; + case 126: // 'except' + shift(126); // 'except' + break; + case 132: // 'for' + shift(132); // 'for' + break; + case 141: // 'ge' + shift(141); // 'ge' + break; + case 143: // 'group' + shift(143); // 'group' + break; + case 145: // 'gt' + shift(145); // 'gt' + break; + case 146: // 'idiv' + shift(146); // 'idiv' + break; + case 155: // 'instance' + shift(155); // 'instance' + break; + case 157: // 'intersect' + shift(157); // 'intersect' + break; + case 158: // 'into' + shift(158); // 'into' + break; + case 159: // 'is' + shift(159); // 'is' + break; + case 167: // 'le' + shift(167); // 'le' + break; + case 169: // 'let' + shift(169); // 'let' + break; + case 173: // 'lt' + shift(173); // 'lt' + break; + case 175: // 'mod' + shift(175); // 'mod' + break; + case 176: // 'modify' + shift(176); // 'modify' + break; + case 181: // 'ne' + shift(181); // 'ne' + break; + case 193: // 'only' + shift(193); // 'only' + break; + case 195: // 'or' + shift(195); // 'or' + break; + case 196: // 'order' + shift(196); // 'order' + break; + case 215: // 'return' + shift(215); // 'return' + break; + case 219: // 'satisfies' + shift(219); // 'satisfies' + break; + case 231: // 'stable' + shift(231); // 'stable' + break; + case 232: // 'start' + shift(232); // 'start' + break; + case 243: // 'to' + shift(243); // 'to' + break; + case 244: // 'treat' + shift(244); // 'treat' + break; + case 249: // 'union' + shift(249); // 'union' + break; + case 261: // 'where' + shift(261); // 'where' + break; + case 265: // 'with' + shift(265); // 'with' + break; + case 68: // 'ancestor' + shift(68); // 'ancestor' + break; + case 69: // 'ancestor-or-self' + shift(69); // 'ancestor-or-self' + break; + case 77: // 'attribute' + shift(77); // 'attribute' + break; + case 88: // 'child' + shift(88); // 'child' + break; + case 91: // 'comment' + shift(91); // 'comment' + break; + case 98: // 'copy' + shift(98); // 'copy' + break; + case 103: // 'declare' + shift(103); // 'declare' + break; + case 105: // 'delete' + shift(105); // 'delete' + break; + case 106: // 'descendant' + shift(106); // 'descendant' + break; + case 107: // 'descendant-or-self' + shift(107); // 'descendant-or-self' + break; + case 114: // 'document' + shift(114); // 'document' + break; + case 115: // 'document-node' + shift(115); // 'document-node' + break; + case 116: // 'element' + shift(116); // 'element' + break; + case 119: // 'empty-sequence' + shift(119); // 'empty-sequence' + break; + case 124: // 'every' + shift(124); // 'every' + break; + case 129: // 'first' + shift(129); // 'first' + break; + case 130: // 'following' + shift(130); // 'following' + break; + case 131: // 'following-sibling' + shift(131); // 'following-sibling' + break; + case 140: // 'function' + shift(140); // 'function' + break; + case 147: // 'if' + shift(147); // 'if' + break; + case 148: // 'import' + shift(148); // 'import' + break; + case 154: // 'insert' + shift(154); // 'insert' + break; + case 160: // 'item' + shift(160); // 'item' + break; + case 165: // 'last' + shift(165); // 'last' + break; + case 177: // 'module' + shift(177); // 'module' + break; + case 179: // 'namespace' + shift(179); // 'namespace' + break; + case 180: // 'namespace-node' + shift(180); // 'namespace-node' + break; + case 186: // 'node' + shift(186); // 'node' + break; + case 197: // 'ordered' + shift(197); // 'ordered' + break; + case 201: // 'parent' + shift(201); // 'parent' + break; + case 207: // 'preceding' + shift(207); // 'preceding' + break; + case 208: // 'preceding-sibling' + shift(208); // 'preceding-sibling' + break; + case 211: // 'processing-instruction' + shift(211); // 'processing-instruction' + break; + case 213: // 'rename' + shift(213); // 'rename' + break; + case 214: // 'replace' + shift(214); // 'replace' + break; + case 221: // 'schema-attribute' + shift(221); // 'schema-attribute' + break; + case 222: // 'schema-element' + shift(222); // 'schema-element' + break; + case 224: // 'self' + shift(224); // 'self' + break; + case 230: // 'some' + shift(230); // 'some' + break; + case 238: // 'switch' + shift(238); // 'switch' + break; + case 239: // 'text' + shift(239); // 'text' + break; + case 245: // 'try' + shift(245); // 'try' + break; + case 248: // 'typeswitch' + shift(248); // 'typeswitch' + break; + case 251: // 'unordered' + shift(251); // 'unordered' + break; + case 255: // 'validate' + shift(255); // 'validate' + break; + case 257: // 'variable' + shift(257); // 'variable' + break; + case 269: // 'xquery' + shift(269); // 'xquery' + break; + case 67: // 'allowing' + shift(67); // 'allowing' + break; + case 76: // 'at' + shift(76); // 'at' + break; + case 78: // 'base-uri' + shift(78); // 'base-uri' + break; + case 80: // 'boundary-space' + shift(80); // 'boundary-space' + break; + case 81: // 'break' + shift(81); // 'break' + break; + case 86: // 'catch' + shift(86); // 'catch' + break; + case 93: // 'construction' + shift(93); // 'construction' + break; + case 96: // 'context' + shift(96); // 'context' + break; + case 97: // 'continue' + shift(97); // 'continue' + break; + case 99: // 'copy-namespaces' + shift(99); // 'copy-namespaces' + break; + case 101: // 'decimal-format' + shift(101); // 'decimal-format' + break; + case 120: // 'encoding' + shift(120); // 'encoding' + break; + case 127: // 'exit' + shift(127); // 'exit' + break; + case 128: // 'external' + shift(128); // 'external' + break; + case 136: // 'ft-option' + shift(136); // 'ft-option' + break; + case 149: // 'in' + shift(149); // 'in' + break; + case 150: // 'index' + shift(150); // 'index' + break; + case 156: // 'integrity' + shift(156); // 'integrity' + break; + case 166: // 'lax' + shift(166); // 'lax' + break; + case 187: // 'nodes' + shift(187); // 'nodes' + break; + case 194: // 'option' + shift(194); // 'option' + break; + case 198: // 'ordering' + shift(198); // 'ordering' + break; + case 217: // 'revalidation' + shift(217); // 'revalidation' + break; + case 220: // 'schema' + shift(220); // 'schema' + break; + case 223: // 'score' + shift(223); // 'score' + break; + case 229: // 'sliding' + shift(229); // 'sliding' + break; + case 235: // 'strict' + shift(235); // 'strict' + break; + case 246: // 'tumbling' + shift(246); // 'tumbling' + break; + case 247: // 'type' + shift(247); // 'type' + break; + case 252: // 'updating' + shift(252); // 'updating' + break; + case 256: // 'value' + shift(256); // 'value' + break; + case 258: // 'version' + shift(258); // 'version' + break; + case 262: // 'while' + shift(262); // 'while' + break; + case 92: // 'constraint' + shift(92); // 'constraint' + break; + case 171: // 'loop' + shift(171); // 'loop' + break; + default: + shift(216); // 'returning' + } + eventHandler.endNonterminal("NCName", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(XQueryTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = 0; + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function whitespace() + { + if (e0 != b1) + { + b0 = e0; + e0 = b1; + eventHandler.whitespace(b0, e0); + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 28) // S^WS + { + break; + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function error(b, e, s, l, t) + { + throw new self.ParseException(b, e, s, l, t); + } + + var lk, b0, e0; + var l1, b1, e1; + var eventHandler; + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = XQueryTokenizer.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = XQueryTokenizer.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = XQueryTokenizer.MAP1[(c0 & 15) + XQueryTokenizer.MAP1[(c1 & 31) + XQueryTokenizer.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (XQueryTokenizer.MAP2[m] > c0) hi = m - 1; + else if (XQueryTokenizer.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = XQueryTokenizer.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = XQueryTokenizer.TRANSITION[(i0 & 15) + XQueryTokenizer.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +XQueryTokenizer.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 276; i += 32) + { + var j = i; + var i0 = (i >> 5) * 2062 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = XQueryTokenizer.EXPECTED[(i0 & 3) + XQueryTokenizer.EXPECTED[(i1 & 3) + XQueryTokenizer.EXPECTED[(i2 & 3) + XQueryTokenizer.EXPECTED[i2 >> 2]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(XQueryTokenizer.TOKEN[j]); + } + } + } + return set; +}; + +XQueryTokenizer.MAP0 = +[ + /* 0 */ 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, + /* 36 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, + /* 64 */ 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, + /* 91 */ 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + /* 118 */ 57, 58, 59, 60, 31, 61, 62, 63, 64, 35 +]; + +XQueryTokenizer.MAP1 = +[ + /* 0 */ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, + /* 21 */ 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 42 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 63 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 84 */ 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + /* 105 */ 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, + /* 126 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, + /* 147 */ 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, + /* 168 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, + /* 189 */ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + /* 210 */ 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + /* 231 */ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, + /* 256 */ 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 290 */ 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, + /* 317 */ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + /* 344 */ 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, + /* 371 */ 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, + /* 398 */ 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, + /* 425 */ 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 +]; + +XQueryTokenizer.MAP2 = +[ + /* 0 */ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, + /* 17 */ 35 +]; + +XQueryTokenizer.INITIAL = +[ + /* 0 */ 1, 2, 36867, 45060, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +XQueryTokenizer.TRANSITION = +[ + /* 0 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 30 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 45 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 60 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 75 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 90 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 105 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 120 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 135 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 150 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 165 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 180 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 195 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 210 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 225 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 240 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 255 */ 17590, 22908, 18836, 17152, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, + /* 270 */ 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, + /* 285 */ 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, + /* 300 */ 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, + /* 315 */ 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, + /* 330 */ 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, + /* 345 */ 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, + /* 360 */ 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, + /* 375 */ 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, + /* 390 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 405 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 420 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 435 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 450 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 465 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 480 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 495 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 510 */ 17590, 17590, 18579, 21711, 17152, 19008, 19233, 20367, 19008, 28684, 30763, 36437, 17330, 17349, 18921, + /* 525 */ 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, + /* 540 */ 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, + /* 555 */ 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, + /* 570 */ 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, + /* 585 */ 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, + /* 600 */ 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, + /* 615 */ 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, + /* 630 */ 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, + /* 645 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 660 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 675 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 690 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 705 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 720 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 735 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 750 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 765 */ 17590, 17590, 17590, 20116, 18836, 18637, 19008, 19233, 21267, 19008, 17173, 30763, 36437, 17330, 17349, + /* 780 */ 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, + /* 795 */ 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, + /* 810 */ 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, + /* 825 */ 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, + /* 840 */ 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, + /* 855 */ 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, + /* 870 */ 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, + /* 885 */ 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, + /* 900 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 915 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 930 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 945 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 960 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 975 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 990 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1005 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1020 */ 17590, 17590, 17590, 17590, 18763, 18778, 18794, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, + /* 1035 */ 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, + /* 1050 */ 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, + /* 1065 */ 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, + /* 1080 */ 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, + /* 1095 */ 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, + /* 1110 */ 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, + /* 1125 */ 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, + /* 1140 */ 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, + /* 1155 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1170 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1185 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1200 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1215 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1230 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1245 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1260 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1275 */ 17590, 17590, 17590, 17590, 17590, 18821, 22923, 18906, 19008, 19233, 17431, 19008, 17173, 30763, 36437, + /* 1290 */ 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18937, 21880, 18649, + /* 1305 */ 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19054, 17311, 18658, 18999, 19008, 17447, + /* 1320 */ 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 18953, 21887, 17504, 17527, + /* 1335 */ 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, + /* 1350 */ 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, + /* 1365 */ 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, + /* 1380 */ 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, + /* 1395 */ 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, + /* 1410 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1425 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1440 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1455 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1470 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1485 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1500 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1515 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1530 */ 17590, 17590, 17590, 17590, 17590, 17590, 21843, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, + /* 1545 */ 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, + /* 1560 */ 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, + /* 1575 */ 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, + /* 1590 */ 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, + /* 1605 */ 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, + /* 1620 */ 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, + /* 1635 */ 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, + /* 1650 */ 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, + /* 1665 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1680 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1695 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1710 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1725 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1740 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1755 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1770 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1785 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21696, 18836, 18987, 19008, 19233, 20367, 19008, 17173, + /* 1800 */ 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, + /* 1815 */ 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, + /* 1830 */ 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, + /* 1845 */ 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, + /* 1860 */ 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, + /* 1875 */ 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, + /* 1890 */ 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, + /* 1905 */ 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, + /* 1920 */ 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1935 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1950 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1965 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1980 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 1995 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2010 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2025 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2040 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22429, 20131, 18720, 19008, 19233, 20367, 19008, + /* 2055 */ 17173, 23559, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 18087, 17308, 17327, 17346, 18918, + /* 2070 */ 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 21242, 19111, 17311, 18658, + /* 2085 */ 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, + /* 2100 */ 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, + /* 2115 */ 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, + /* 2130 */ 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, + /* 2145 */ 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, + /* 2160 */ 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, + /* 2175 */ 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2190 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2205 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2220 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2235 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2250 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2265 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2280 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2295 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19024, 18836, 18609, 19008, 19233, 20367, + /* 2310 */ 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, + /* 2325 */ 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, + /* 2340 */ 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, + /* 2355 */ 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, + /* 2370 */ 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, + /* 2385 */ 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, + /* 2400 */ 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, + /* 2415 */ 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, + /* 2430 */ 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2445 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2460 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2475 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2490 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2505 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2520 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2535 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2550 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19081, 22444, 18987, 19008, 19233, + /* 2565 */ 20367, 19008, 19065, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, + /* 2580 */ 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, + /* 2595 */ 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, + /* 2610 */ 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, + /* 2625 */ 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, + /* 2640 */ 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, + /* 2655 */ 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, + /* 2670 */ 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, + /* 2685 */ 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2700 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2715 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2730 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2745 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2760 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2775 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2790 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2805 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21992, 22007, 18987, 19008, + /* 2820 */ 19233, 20367, 19008, 18690, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, + /* 2835 */ 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, + /* 2850 */ 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, + /* 2865 */ 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, + /* 2880 */ 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, + /* 2895 */ 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, + /* 2910 */ 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, + /* 2925 */ 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, + /* 2940 */ 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2955 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2970 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 2985 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3000 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3015 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3030 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3045 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3060 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22414, 18836, 18987, + /* 3075 */ 19008, 19233, 30651, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19138, + /* 3090 */ 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, + /* 3105 */ 18127, 19280, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, + /* 3120 */ 18326, 17543, 17559, 19172, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, + /* 3135 */ 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, + /* 3150 */ 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, + /* 3165 */ 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, + /* 3180 */ 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, + /* 3195 */ 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3210 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3225 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3240 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3255 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3270 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3285 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3300 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3315 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21783, 18836, + /* 3330 */ 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, + /* 3345 */ 19218, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, + /* 3360 */ 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, + /* 3375 */ 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, + /* 3390 */ 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, + /* 3405 */ 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, + /* 3420 */ 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, + /* 3435 */ 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, + /* 3450 */ 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3465 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3480 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3495 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3510 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3525 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3540 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3555 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3570 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21651, + /* 3585 */ 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, + /* 3600 */ 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, + /* 3615 */ 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, + /* 3630 */ 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, + /* 3645 */ 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, + /* 3660 */ 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, + /* 3675 */ 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, + /* 3690 */ 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, + /* 3705 */ 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3720 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3735 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3750 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3765 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3780 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3795 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3810 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3825 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3840 */ 19249, 19265, 19307, 18888, 27857, 30536, 24401, 31444, 23357, 18888, 19351, 18888, 18890, 27211, 19370, + /* 3855 */ 27211, 27211, 19392, 24401, 31911, 24401, 24401, 25467, 18888, 18888, 18888, 18888, 18888, 25783, 27211, + /* 3870 */ 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 17994, 24060, 18888, 18888, 18888, + /* 3885 */ 18890, 19468, 27211, 27211, 27211, 27211, 19484, 35367, 19520, 24401, 24401, 24401, 19628, 18888, 29855, + /* 3900 */ 18888, 18888, 23086, 27211, 19538, 27211, 27211, 30756, 24012, 24401, 19560, 24401, 24401, 26750, 18888, + /* 3915 */ 18888, 19327, 27855, 27211, 27211, 19580, 17590, 24017, 24401, 24401, 19600, 25665, 18888, 18888, 28518, + /* 3930 */ 27211, 27212, 24016, 19620, 19868, 28435, 25722, 18889, 19644, 27211, 32888, 35852, 19868, 31018, 19694, + /* 3945 */ 19376, 19717, 22215, 19735, 22098, 19751, 35203, 19776, 19797, 19817, 19840, 25783, 31738, 24135, 19701, + /* 3960 */ 19856, 31015, 23516, 31008, 28311, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3975 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 3990 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4005 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4020 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4035 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4050 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4065 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4080 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4095 */ 17590, 21768, 18836, 19307, 18888, 27857, 27904, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, + /* 4110 */ 27211, 27211, 27211, 19888, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, + /* 4125 */ 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, + /* 4140 */ 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, + /* 4155 */ 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, + /* 4170 */ 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, + /* 4185 */ 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, + /* 4200 */ 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, + /* 4215 */ 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, + /* 4230 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4245 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4260 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4275 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4290 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4305 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4320 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4335 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4350 */ 17590, 17590, 22399, 18836, 19918, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, + /* 4365 */ 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, + /* 4380 */ 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, + /* 4395 */ 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, + /* 4410 */ 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, + /* 4425 */ 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, + /* 4440 */ 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, + /* 4455 */ 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, + /* 4470 */ 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, + /* 4485 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4500 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4515 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4530 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4545 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4560 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4575 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4590 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4605 */ 17590, 17590, 17590, 21666, 18836, 19307, 18888, 27857, 27525, 24401, 29183, 21467, 18888, 18888, 18888, + /* 4620 */ 18890, 27211, 27211, 27211, 27211, 19946, 24401, 24401, 24401, 24401, 32382, 18888, 18888, 18888, 18888, + /* 4635 */ 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19998, 24401, 24401, 24401, 24401, 31500, 18467, 18888, + /* 4650 */ 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 20021, 24401, 24401, 24401, 24401, 24401, + /* 4665 */ 34271, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 32926, 29908, 24401, 24401, 24401, + /* 4680 */ 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 20050, 22968, 24401, 24401, 24401, 18887, + /* 4695 */ 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, + /* 4710 */ 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, + /* 4725 */ 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, + /* 4740 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4755 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4770 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4785 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4800 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4815 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4830 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4845 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 4860 */ 17590, 17590, 17590, 17590, 20101, 19039, 20191, 20412, 20903, 17569, 20309, 20872, 25633, 20623, 20505, + /* 4875 */ 20218, 20242, 17189, 17208, 17281, 20355, 20265, 20306, 20328, 20383, 22490, 20796, 20619, 21354, 20654, + /* 4890 */ 20410, 20956, 21232, 20765, 17421, 20535, 17192, 18127, 22459, 20312, 25531, 22470, 20309, 20428, 18964, + /* 4905 */ 20466, 20491, 21342, 21070, 20521, 20682, 17714, 18326, 17543, 17559, 17585, 22497, 20559, 19504, 20279, + /* 4920 */ 20575, 20290, 20475, 20604, 20639, 20226, 20670, 17661, 21190, 17703, 21176, 17730, 19494, 20698, 20711, + /* 4935 */ 22480, 21046, 21116, 18971, 21130, 20727, 20755, 17675, 17753, 17832, 17590, 25518, 20394, 20781, 20831, + /* 4950 */ 20202, 20847, 21401, 17292, 17934, 17979, 18549, 20863, 20588, 25542, 20888, 20919, 18072, 18117, 20935, + /* 4965 */ 20972, 21032, 21062, 21086, 18239, 21102, 18563, 21146, 21162, 21206, 18351, 20949, 20902, 18340, 21222, + /* 4980 */ 21258, 21283, 18360, 20249, 17405, 21295, 21311, 21327, 20739, 20343, 21370, 21386, 21417, 17590, 17590, + /* 4995 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5010 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5025 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5040 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5055 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5070 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5085 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5100 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5115 */ 17590, 17590, 17590, 17590, 17590, 21977, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, + /* 5130 */ 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 21452, 21880, 18649, + /* 5145 */ 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 21504, + /* 5160 */ 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, + /* 5175 */ 17258, 36418, 36501, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 28674, 21946, + /* 5190 */ 17617, 36473, 18223, 17237, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 21575, 21534, 17481, 19156, + /* 5205 */ 17864, 18731, 17918, 36551, 17292, 17934, 21560, 30628, 18681, 18405, 18621, 18039, 18056, 18072, 18117, + /* 5220 */ 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, + /* 5235 */ 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, + /* 5250 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5265 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5280 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5295 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5310 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5325 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5340 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5355 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5370 */ 17590, 17590, 17590, 17590, 17590, 17590, 21798, 18836, 21612, 19008, 19233, 20367, 19008, 17173, 30763, + /* 5385 */ 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, + /* 5400 */ 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, + /* 5415 */ 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, + /* 5430 */ 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, + /* 5445 */ 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, + /* 5460 */ 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, + /* 5475 */ 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, + /* 5490 */ 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, + /* 5505 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5520 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5535 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5550 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5565 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5580 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5595 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5610 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5625 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21636, 18836, 18987, 19008, 19233, 17902, 19008, 17173, + /* 5640 */ 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, + /* 5655 */ 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, + /* 5670 */ 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, + /* 5685 */ 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, + /* 5700 */ 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, + /* 5715 */ 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, + /* 5730 */ 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, + /* 5745 */ 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, + /* 5760 */ 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5775 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5790 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5805 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5820 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5835 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5850 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5865 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 5880 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21753, 19096, 21903, 19008, 19233, 20367, 19008, + /* 5895 */ 19291, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, + /* 5910 */ 17379, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, + /* 5925 */ 18999, 19008, 17447, 21931, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, + /* 5940 */ 21887, 17504, 17527, 17258, 36418, 18280, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, + /* 5955 */ 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, + /* 5970 */ 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, + /* 5985 */ 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, + /* 6000 */ 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, + /* 6015 */ 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6030 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6045 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6060 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6075 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6090 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6105 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6120 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6135 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21962, 18594, 18987, 19008, 19233, 22043, + /* 6150 */ 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, + /* 6165 */ 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, + /* 6180 */ 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, + /* 6195 */ 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, + /* 6210 */ 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, + /* 6225 */ 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, + /* 6240 */ 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, + /* 6255 */ 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, + /* 6270 */ 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6285 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6300 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6315 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6330 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6345 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6360 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6375 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6390 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21681, 21858, 18987, 19008, 19233, + /* 6405 */ 20367, 19008, 21544, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, + /* 6420 */ 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, + /* 6435 */ 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, + /* 6450 */ 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, + /* 6465 */ 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, + /* 6480 */ 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, + /* 6495 */ 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, + /* 6510 */ 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, + /* 6525 */ 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6540 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6555 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6570 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6585 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6600 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6615 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6630 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6645 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, + /* 6660 */ 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, + /* 6675 */ 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, + /* 6690 */ 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, + /* 6705 */ 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 32319, 18888, 18888, 18888, 18888, 23086, 27211, + /* 6720 */ 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, + /* 6735 */ 27211, 27211, 22187, 22968, 24401, 24401, 24401, 22231, 18888, 18888, 27211, 27211, 35779, 20080, 24402, + /* 6750 */ 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, + /* 6765 */ 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, + /* 6780 */ 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6795 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6810 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6825 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6840 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6855 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6870 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6885 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 6900 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, + /* 6915 */ 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, + /* 6930 */ 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, + /* 6945 */ 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, + /* 6960 */ 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, + /* 6975 */ 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, + /* 6990 */ 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, + /* 7005 */ 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, + /* 7020 */ 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, + /* 7035 */ 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7050 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7065 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7080 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7095 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7110 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7125 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7140 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7155 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, + /* 7170 */ 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, + /* 7185 */ 22121, 24401, 24401, 24401, 24401, 31678, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, + /* 7200 */ 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, + /* 7215 */ 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, + /* 7230 */ 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, + /* 7245 */ 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, + /* 7260 */ 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, + /* 7275 */ 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, + /* 7290 */ 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7305 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7320 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7335 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7350 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7365 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7380 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7395 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7410 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, + /* 7425 */ 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, + /* 7440 */ 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, + /* 7455 */ 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 33588, 31693, 18888, 18888, 18888, 18888, 18890, + /* 7470 */ 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, + /* 7485 */ 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, + /* 7500 */ 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, + /* 7515 */ 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, + /* 7530 */ 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, + /* 7545 */ 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7560 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7575 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7590 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7605 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7620 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7635 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7650 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7665 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7680 */ 22339, 18836, 22059, 18888, 27857, 35019, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, + /* 7695 */ 27211, 27211, 22248, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, + /* 7710 */ 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, + /* 7725 */ 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, + /* 7740 */ 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, + /* 7755 */ 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, + /* 7770 */ 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, + /* 7785 */ 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, + /* 7800 */ 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7815 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7830 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7845 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7860 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7875 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7890 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7905 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7920 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 7935 */ 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, + /* 7950 */ 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, + /* 7965 */ 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, + /* 7980 */ 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, + /* 7995 */ 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, + /* 8010 */ 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, + /* 8025 */ 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, + /* 8040 */ 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, + /* 8055 */ 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, + /* 8070 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8085 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8100 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8115 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8130 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8145 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8160 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8175 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8190 */ 17590, 17590, 22324, 18836, 22059, 18888, 27857, 30501, 24401, 29183, 22087, 18888, 18888, 18888, 18890, + /* 8205 */ 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, + /* 8220 */ 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, + /* 8235 */ 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, + /* 8250 */ 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, + /* 8265 */ 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, + /* 8280 */ 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, + /* 8295 */ 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, + /* 8310 */ 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, + /* 8325 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8340 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8355 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8370 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8385 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8400 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8415 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8430 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8445 */ 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, + /* 8460 */ 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, + /* 8475 */ 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, + /* 8490 */ 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, + /* 8505 */ 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, + /* 8520 */ 24401, 34365, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, + /* 8535 */ 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, + /* 8550 */ 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, + /* 8565 */ 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, + /* 8580 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8595 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8610 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8625 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8640 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8655 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8670 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8685 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8700 */ 17590, 17590, 17590, 17590, 22354, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 27086, 36437, 17330, + /* 8715 */ 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, + /* 8730 */ 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, + /* 8745 */ 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, + /* 8760 */ 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, + /* 8775 */ 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, + /* 8790 */ 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 19930, 18039, 18056, 18072, 18117, 18143, + /* 8805 */ 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, + /* 8820 */ 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, + /* 8835 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8850 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8865 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8880 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8895 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8910 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8925 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8940 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 8955 */ 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, + /* 8970 */ 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, + /* 8985 */ 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, + /* 9000 */ 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, + /* 9015 */ 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, + /* 9030 */ 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, + /* 9045 */ 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, + /* 9060 */ 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, + /* 9075 */ 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, + /* 9090 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9105 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9120 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9135 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9150 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9165 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9180 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9195 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9210 */ 17590, 17590, 17590, 17590, 17590, 17590, 22309, 22513, 18987, 19008, 19233, 20367, 19008, 19122, 30763, + /* 9225 */ 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 22544, 21880, + /* 9240 */ 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, + /* 9255 */ 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, + /* 9270 */ 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, + /* 9285 */ 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, + /* 9300 */ 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, + /* 9315 */ 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, + /* 9330 */ 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, + /* 9345 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9360 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9375 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9390 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9405 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9420 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9435 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9450 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9465 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22608, 18836, 22988, 23004, 27585, 23020, 23036, 23067, + /* 9480 */ 22087, 18888, 18888, 18888, 23083, 27211, 27211, 27211, 23102, 22121, 24401, 24401, 24401, 23122, 31386, + /* 9495 */ 26154, 19674, 18888, 28119, 28232, 19424, 23705, 27211, 27211, 23142, 23173, 23189, 23212, 24401, 24401, + /* 9510 */ 23246, 34427, 31693, 23262, 18888, 23290, 23308, 27783, 27620, 23327, 35263, 35107, 33383, 23346, 18193, + /* 9525 */ 23393, 32748, 23968, 24401, 23414, 35153, 23463, 18888, 33913, 23442, 23482, 27211, 27211, 23532, 23552, + /* 9540 */ 21431, 23575, 24401, 24401, 23604, 26095, 23635, 23657, 18888, 33482, 23685, 33251, 27211, 22187, 18851, + /* 9555 */ 23721, 35536, 24401, 18887, 23750, 32641, 27211, 23769, 23787, 20080, 33012, 24384, 25659, 18888, 18889, + /* 9570 */ 27211, 27211, 19719, 23889, 23803, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 28224, + /* 9585 */ 31826, 23823, 26917, 34978, 23850, 26493, 25782, 23878, 23914, 23516, 31008, 22105, 19419, 27963, 19659, + /* 9600 */ 29781, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9615 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9630 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9645 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9660 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9675 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9690 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9705 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9720 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22623, 18836, 22059, 18888, 27857, 34097, 24401, + /* 9735 */ 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, + /* 9750 */ 30613, 18888, 18888, 18888, 18888, 28909, 25783, 27211, 27211, 27211, 34048, 23933, 22164, 24401, 24401, + /* 9765 */ 24401, 28409, 23949, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, + /* 9780 */ 24401, 24401, 24401, 24401, 24401, 31181, 26583, 18888, 18888, 18888, 35585, 23984, 27211, 27211, 27211, + /* 9795 */ 24005, 22201, 24033, 24401, 24401, 24401, 24052, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, + /* 9810 */ 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, + /* 9825 */ 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, + /* 9840 */ 31017, 27856, 31741, 26496, 24076, 24126, 24151, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, + /* 9855 */ 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9870 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9885 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9900 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9915 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9930 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9945 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9960 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 9975 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22638, 18836, 22059, 19678, 27857, 24185, + /* 9990 */ 24401, 24201, 24217, 26592, 18888, 18888, 18890, 24252, 24268, 27211, 27211, 22121, 24287, 24303, 24401, + /* 10005 */ 24401, 30613, 19781, 35432, 36007, 32649, 18888, 25783, 24322, 28966, 23771, 27211, 35072, 22164, 24358, + /* 10020 */ 32106, 26829, 24400, 31500, 31693, 18888, 18888, 18888, 24801, 18890, 27211, 27211, 27211, 27211, 24418, + /* 10035 */ 19484, 24401, 24401, 24401, 24401, 20167, 31181, 18888, 18888, 18888, 27833, 23086, 27211, 27211, 33540, + /* 10050 */ 27211, 30756, 21431, 24401, 24401, 22972, 24401, 26095, 18888, 36131, 18888, 27855, 27211, 24440, 27211, + /* 10065 */ 22187, 22968, 24401, 24459, 24401, 31699, 28454, 18888, 34528, 34570, 35779, 24478, 24402, 24494, 25659, + /* 10080 */ 18888, 36228, 27211, 27211, 24515, 30981, 23734, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, + /* 10095 */ 24538, 31017, 27856, 31741, 30059, 23377, 24563, 19837, 25782, 19760, 31015, 23516, 25374, 22105, 19419, + /* 10110 */ 29793, 24579, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10125 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10140 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10155 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10170 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10185 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10200 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10215 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10230 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22653, 18836, 22059, 25756, 19982, + /* 10245 */ 34097, 23196, 29183, 24614, 24110, 23641, 24673, 26103, 24697, 24443, 24713, 28558, 22121, 24748, 24462, + /* 10260 */ 24764, 23398, 30613, 18888, 18888, 18888, 18888, 24798, 25783, 27211, 27211, 27211, 34232, 35072, 22164, + /* 10275 */ 24401, 24401, 24401, 33302, 31500, 22559, 24106, 24232, 18888, 18888, 34970, 24817, 30411, 27211, 27211, + /* 10290 */ 32484, 19484, 29750, 35127, 24401, 24401, 19872, 31181, 24852, 18888, 18888, 24871, 29221, 27211, 27211, + /* 10305 */ 32072, 27211, 30756, 34441, 24401, 24401, 31571, 24401, 26095, 33141, 27802, 27011, 27855, 25295, 25607, + /* 10320 */ 24888, 22187, 22968, 19195, 34593, 24906, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, + /* 10335 */ 25659, 18888, 33663, 27211, 27211, 24924, 24947, 23588, 31018, 18890, 27211, 31833, 22135, 19447, 23086, + /* 10350 */ 23330, 19828, 30904, 31042, 24972, 19840, 25000, 31738, 30898, 25782, 19760, 31015, 23516, 31008, 22105, + /* 10365 */ 19419, 25016, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10380 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10395 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10410 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10425 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10440 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10455 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10470 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10485 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22668, 18836, 25041, 25057, + /* 10500 */ 31320, 25073, 25089, 25105, 22087, 34796, 24236, 36138, 34870, 34125, 25121, 23106, 35497, 22248, 36613, + /* 10515 */ 25137, 30671, 27365, 30613, 25153, 26447, 25199, 25233, 22574, 23274, 25249, 25265, 25281, 25318, 25344, + /* 10530 */ 25360, 25400, 25428, 25452, 26731, 25504, 31693, 23669, 25558, 27407, 25575, 28599, 25934, 25599, 27211, + /* 10545 */ 28180, 27304, 25623, 25839, 25649, 24401, 34820, 25681, 25698, 22586, 27775, 30190, 25745, 25778, 25799, + /* 10560 */ 25817, 28995, 33569, 30756, 21518, 33443, 25837, 25855, 25893, 26095, 31254, 26677, 30136, 27855, 25930, + /* 10575 */ 25950, 27211, 22187, 22968, 25966, 25986, 24401, 23428, 27763, 36330, 26959, 26002, 26029, 26045, 26085, + /* 10590 */ 26119, 26170, 26203, 26222, 26239, 30527, 26372, 26274, 28404, 31018, 33757, 27211, 34262, 26316, 36729, + /* 10605 */ 26345, 26366, 35337, 31017, 26388, 26407, 30954, 26350, 33861, 26434, 26463, 26479, 26512, 23516, 33189, + /* 10620 */ 26531, 26547, 27963, 31293, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10635 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10650 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10665 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10680 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10695 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10710 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10725 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10740 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22683, 18836, 26568, + /* 10755 */ 26181, 26608, 34097, 26643, 29183, 22087, 26669, 18888, 18888, 18890, 26693, 27211, 27211, 27211, 22121, + /* 10770 */ 26720, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 26774, 25783, 27211, 27211, 27211, 26619, + /* 10785 */ 35072, 22164, 24401, 24401, 24401, 21596, 31500, 31693, 18888, 18888, 33978, 18888, 18890, 27211, 27211, + /* 10800 */ 25801, 27211, 27211, 19484, 24401, 24401, 24401, 26792, 24401, 31181, 18888, 18888, 18888, 35464, 23086, + /* 10815 */ 27211, 27211, 27211, 26809, 30756, 21431, 24401, 24401, 24401, 26828, 26095, 18888, 18888, 18888, 27855, + /* 10830 */ 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, + /* 10845 */ 24402, 19868, 25659, 31948, 18889, 35707, 27211, 19719, 26845, 19868, 31018, 18890, 27211, 31833, 19406, + /* 10860 */ 19447, 23086, 23330, 26905, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, + /* 10875 */ 24984, 31088, 19419, 26945, 27651, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10890 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10905 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10920 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10935 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10950 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10965 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10980 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 10995 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22698, 18836, + /* 11010 */ 26999, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, + /* 11025 */ 22121, 24401, 24401, 24401, 24401, 23051, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, + /* 11040 */ 27211, 35072, 27033, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 27056, 18888, 18890, 27211, + /* 11055 */ 27211, 30320, 27211, 27211, 27075, 24401, 24401, 29032, 24401, 24401, 19628, 18888, 18888, 18888, 18888, + /* 11070 */ 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 33986, + /* 11085 */ 27855, 27211, 27211, 27102, 17590, 24017, 24401, 24401, 27123, 27144, 36254, 27162, 27210, 27228, 28500, + /* 11100 */ 18187, 34842, 33426, 27244, 35980, 27277, 27302, 27320, 36048, 34013, 20999, 31882, 21478, 27895, 27356, + /* 11115 */ 30287, 27381, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, + /* 11130 */ 23516, 31008, 22105, 26329, 30087, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11145 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11160 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11175 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11190 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11205 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11220 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11235 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11250 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, + /* 11265 */ 18836, 22059, 27406, 27423, 27445, 35294, 27461, 22087, 18888, 18888, 30140, 18890, 27211, 27211, 27989, + /* 11280 */ 27211, 22121, 24401, 24401, 25682, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 34042, 27211, 27211, + /* 11295 */ 27211, 27211, 29700, 22164, 24401, 24401, 24401, 24401, 27128, 31693, 27477, 18888, 18888, 18888, 18890, + /* 11310 */ 27194, 27211, 27211, 27211, 27211, 19484, 35299, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, + /* 11325 */ 27059, 23086, 27211, 27211, 27211, 33366, 30756, 24012, 24401, 24401, 24401, 35044, 26750, 18888, 18888, + /* 11340 */ 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, + /* 11355 */ 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 20815, 27211, + /* 11370 */ 30818, 19960, 33969, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, + /* 11385 */ 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11400 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11415 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11430 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11445 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11460 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11475 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11490 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11505 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11520 */ 22713, 18836, 22059, 27496, 27516, 27541, 35231, 27557, 22087, 29662, 26292, 23292, 27573, 24836, 27601, + /* 11535 */ 27211, 27636, 22121, 35544, 27686, 24401, 27721, 18866, 18888, 27799, 18888, 27818, 22071, 27853, 32260, + /* 11550 */ 27211, 26013, 27873, 27920, 22164, 29419, 24401, 29946, 33413, 26742, 27751, 26881, 18888, 18888, 27261, + /* 11565 */ 36776, 27936, 27211, 27211, 27211, 27988, 28005, 28031, 28052, 24401, 24401, 28069, 28088, 28135, 25488, + /* 11580 */ 28152, 26069, 28167, 27211, 28340, 24657, 28196, 30756, 31523, 24401, 28212, 34176, 36174, 24956, 28248, + /* 11595 */ 28266, 28290, 21488, 33077, 28327, 28356, 17590, 20986, 23126, 28391, 28425, 28102, 28451, 28470, 28490, + /* 11610 */ 28516, 28534, 20034, 33728, 25868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 30241, 28274, + /* 11625 */ 28553, 28574, 19406, 28590, 23086, 23330, 19828, 19452, 28615, 28660, 26147, 25783, 31738, 19837, 25782, + /* 11640 */ 19760, 29613, 35958, 29276, 22105, 19419, 27963, 23157, 28700, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11655 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11670 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11685 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11700 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11715 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11730 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11745 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11760 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11775 */ 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, + /* 11790 */ 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, + /* 11805 */ 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 22528, 18888, 18888, 18888, + /* 11820 */ 18888, 18890, 27333, 27211, 27211, 27211, 27211, 19484, 30853, 24401, 24401, 24401, 24401, 19628, 18888, + /* 11835 */ 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, + /* 11850 */ 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, + /* 11865 */ 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, + /* 11880 */ 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, + /* 11895 */ 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, + /* 11910 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11925 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11940 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11955 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11970 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 11985 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12000 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12015 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12030 */ 17590, 17590, 22728, 18836, 28747, 28782, 28817, 28841, 28857, 28880, 28896, 24161, 28943, 32011, 36261, + /* 12045 */ 27340, 28961, 29492, 28982, 29011, 24522, 29027, 25436, 29048, 23051, 27500, 29090, 29110, 30713, 18888, + /* 12060 */ 23512, 29130, 25183, 27211, 29155, 28927, 27033, 29173, 23230, 24401, 29199, 35373, 31693, 18888, 18888, + /* 12075 */ 25583, 32629, 29218, 27211, 27211, 31461, 30692, 29237, 27075, 24401, 24401, 24401, 29262, 29302, 19628, + /* 12090 */ 18888, 34329, 18888, 18888, 23086, 27211, 29329, 27211, 27211, 30756, 24012, 35933, 24401, 24401, 24401, + /* 12105 */ 27705, 31612, 18888, 18888, 29346, 29374, 27211, 35650, 17590, 21436, 29393, 24401, 25970, 18887, 33895, + /* 12120 */ 18888, 27211, 32528, 27212, 24016, 32769, 19868, 25659, 18888, 26889, 27211, 27211, 29412, 23889, 24371, + /* 12135 */ 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31768, 19840, 25783, 31738, + /* 12150 */ 19837, 29435, 29508, 31102, 29550, 29606, 22105, 30300, 29462, 19659, 27951, 17590, 17590, 17590, 17590, + /* 12165 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12180 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12195 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12210 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12225 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12240 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12255 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12270 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12285 */ 17590, 17590, 17590, 22743, 18836, 22059, 29629, 29473, 34097, 33285, 29183, 29651, 27254, 18888, 29678, + /* 12300 */ 33329, 32535, 27211, 29694, 29716, 22121, 19202, 24401, 32742, 29741, 18866, 26776, 33921, 28474, 18888, + /* 12315 */ 18888, 25783, 29766, 27211, 29809, 27211, 35072, 22164, 35825, 24401, 29828, 24401, 24036, 36769, 25217, + /* 12330 */ 18888, 18888, 29848, 18890, 27211, 29871, 27211, 26258, 27211, 29894, 24401, 29929, 24401, 36587, 24401, + /* 12345 */ 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 29725, 29962, 24401, 24401, 24401, + /* 12360 */ 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18473, + /* 12375 */ 18888, 18888, 19584, 27211, 27212, 24016, 29982, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, + /* 12390 */ 19868, 31018, 18890, 27211, 31833, 19902, 19447, 32052, 19544, 19828, 29998, 30097, 30031, 19840, 25783, + /* 12405 */ 30047, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 30075, 17590, 17590, 17590, + /* 12420 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12435 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12450 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12465 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12480 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12495 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12510 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12525 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12540 */ 17590, 17590, 17590, 17590, 22758, 18836, 30121, 30156, 30206, 30257, 30273, 30336, 22087, 35624, 32837, + /* 12555 */ 25762, 18890, 29878, 34934, 26812, 27211, 22121, 24931, 23223, 29202, 24401, 18866, 34373, 30352, 18888, + /* 12570 */ 18888, 18888, 23447, 24828, 27211, 27211, 27211, 35072, 30370, 35052, 24401, 24401, 24401, 24036, 29523, + /* 12585 */ 18888, 18888, 27146, 18888, 31308, 30386, 27211, 27211, 30405, 30558, 19484, 30427, 24401, 24401, 29938, + /* 12600 */ 35686, 19628, 28766, 30447, 34506, 35614, 23086, 28731, 30482, 30517, 30552, 30756, 24012, 20156, 30574, + /* 12615 */ 30598, 30667, 26283, 33464, 28945, 27670, 30687, 32915, 33504, 25328, 17590, 23963, 20450, 33837, 21016, + /* 12630 */ 32397, 26300, 30708, 30729, 27885, 30748, 21588, 36373, 30779, 26653, 24628, 33220, 32514, 30806, 31835, + /* 12645 */ 25412, 25906, 26515, 18890, 28825, 31833, 26133, 19447, 28304, 31730, 23834, 26057, 30869, 30885, 32181, + /* 12660 */ 30920, 30942, 32797, 25782, 30970, 31015, 23516, 31008, 30997, 31034, 27963, 19659, 29450, 17590, 17590, + /* 12675 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12690 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12705 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12720 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12735 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12750 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12765 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12780 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12795 */ 17590, 17590, 17590, 17590, 17590, 22773, 18836, 31058, 31074, 32463, 31125, 31141, 31197, 22087, 18888, + /* 12810 */ 29534, 35471, 36738, 27211, 24342, 31213, 24424, 22121, 24401, 20175, 31229, 31917, 27736, 31245, 34334, + /* 12825 */ 27175, 18888, 29094, 27286, 27211, 31278, 31336, 27211, 31355, 31371, 24401, 31402, 31418, 24401, 31437, + /* 12840 */ 31693, 18888, 31619, 32841, 18888, 18890, 27211, 27211, 31460, 31477, 27211, 19484, 24401, 24401, 31497, + /* 12855 */ 36581, 24401, 33020, 18888, 18888, 18888, 18888, 30007, 27211, 27211, 27211, 27211, 31516, 32310, 24401, + /* 12870 */ 24401, 24401, 24401, 31539, 18888, 28762, 18888, 24651, 35740, 27211, 27211, 28644, 31565, 35796, 24401, + /* 12885 */ 24401, 19318, 32188, 18888, 24334, 28366, 27212, 29966, 29832, 19868, 25659, 18888, 18889, 27211, 27211, + /* 12900 */ 19719, 31587, 19868, 31635, 32435, 33693, 30105, 31663, 20005, 31715, 31757, 31784, 31812, 30015, 31851, + /* 12915 */ 31878, 25783, 31898, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 31933, 30221, 17590, + /* 12930 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12945 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12960 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12975 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 12990 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13005 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13020 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13035 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13050 */ 17590, 17590, 17590, 17590, 17590, 17590, 22788, 18836, 22059, 25729, 30466, 31968, 24306, 31984, 32000, + /* 13065 */ 32807, 35160, 27017, 29590, 34941, 19801, 29377, 33700, 22121, 27040, 30431, 29396, 28864, 29565, 18888, + /* 13080 */ 18888, 18888, 32027, 18888, 25783, 27211, 27211, 23698, 27211, 35072, 22164, 24401, 24401, 30845, 24401, + /* 13095 */ 24036, 32045, 18888, 26929, 18888, 18888, 18890, 27211, 31481, 32068, 27211, 27211, 32088, 24401, 33058, + /* 13110 */ 32122, 24401, 24401, 33736, 18888, 18888, 33162, 18888, 23086, 27211, 27211, 29484, 27211, 28375, 32144, + /* 13125 */ 24401, 24401, 33831, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 36704, 24017, 24401, + /* 13140 */ 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, + /* 13155 */ 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 33107, 22171, 33224, 24271, 32169, 31017, 27856, + /* 13170 */ 31741, 19840, 25783, 31738, 30234, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, + /* 13185 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13200 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13215 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13230 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13245 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13260 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13275 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13290 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13305 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 32204, 32232, 32252, 32677, 33295, 29074, + /* 13320 */ 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23619, + /* 13335 */ 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 32276, 24401, 24401, 24401, + /* 13350 */ 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 32299, 24401, + /* 13365 */ 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, + /* 13380 */ 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, + /* 13395 */ 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 33886, 18889, + /* 13410 */ 36065, 27211, 19719, 35326, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, + /* 13425 */ 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, + /* 13440 */ 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13455 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13470 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13485 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13500 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13515 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13530 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13545 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13560 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22803, 18836, 32335, 31647, 34666, 32351, 32367, + /* 13575 */ 32417, 22087, 18888, 32433, 19335, 32451, 27211, 32479, 27107, 32500, 22121, 24401, 32551, 20085, 32572, + /* 13590 */ 18866, 22287, 23753, 18888, 18888, 32602, 32665, 27211, 32693, 27211, 26972, 32713, 32729, 24401, 32764, + /* 13605 */ 24401, 25877, 32785, 34768, 18888, 27390, 32823, 24594, 24855, 32857, 24890, 32878, 32904, 27211, 32942, + /* 13620 */ 32977, 24401, 33000, 29313, 24401, 30790, 26206, 27666, 33904, 18888, 23086, 36353, 27211, 33036, 27211, + /* 13635 */ 30756, 24012, 32153, 24401, 33056, 24401, 35861, 18888, 18888, 30354, 27972, 27211, 27211, 33800, 17590, + /* 13650 */ 20145, 24401, 24401, 34638, 20811, 18888, 18888, 33074, 27211, 27212, 36167, 24402, 19868, 25659, 18888, + /* 13665 */ 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 34616, 24169, 33093, 33123, + /* 13680 */ 33157, 27856, 31741, 23862, 26552, 34302, 19837, 25782, 19760, 31015, 23516, 31008, 33178, 19973, 27963, + /* 13695 */ 23497, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13710 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13725 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13740 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13755 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13770 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13785 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13800 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13815 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22818, 18836, 33205, 28113, 33240, 34097, + /* 13830 */ 33275, 29183, 22087, 33318, 35438, 18888, 18890, 33345, 26391, 33382, 27211, 22121, 33399, 28072, 33442, + /* 13845 */ 24401, 18866, 22232, 18888, 33459, 18888, 18888, 33480, 33498, 25175, 27211, 27211, 26704, 22164, 24775, + /* 13860 */ 35239, 24401, 24401, 25914, 29580, 18888, 18888, 31109, 25211, 33520, 33539, 27211, 27211, 33556, 36284, + /* 13875 */ 19484, 33585, 24401, 24401, 33604, 32556, 19628, 18888, 18888, 31262, 33658, 23086, 27211, 27211, 33679, + /* 13890 */ 27211, 30756, 24012, 24401, 24401, 33716, 24401, 26854, 27480, 18888, 33752, 27855, 33259, 34701, 27211, + /* 13905 */ 17590, 32102, 24782, 23807, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 33773, 36105, 19868, 25659, + /* 13920 */ 18888, 23368, 27211, 29157, 19719, 23889, 34454, 29286, 18890, 33794, 25302, 33816, 19447, 34079, 33853, + /* 13935 */ 31862, 31017, 27856, 31741, 33877, 28920, 33937, 19837, 30461, 34002, 22276, 36041, 34029, 22105, 19419, + /* 13950 */ 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13965 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13980 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 13995 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14010 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14025 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14040 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14055 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14070 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22833, 18836, 34064, 32616, 34113, + /* 14085 */ 34141, 34157, 34192, 34208, 32216, 36013, 31549, 31952, 34224, 34248, 34287, 29330, 34350, 34389, 34413, + /* 14100 */ 34481, 26793, 18866, 26187, 29635, 22293, 18888, 36654, 25783, 34522, 34544, 34566, 25821, 35072, 22164, + /* 14115 */ 34586, 34609, 34632, 19604, 24036, 36644, 36674, 24681, 18888, 32401, 34654, 31339, 34682, 34698, 27211, + /* 14130 */ 34717, 34753, 28053, 34812, 34836, 24401, 33619, 19628, 34858, 32236, 34906, 24598, 33523, 27612, 34890, + /* 14145 */ 34922, 24732, 29246, 36717, 33634, 34465, 32984, 34168, 26750, 34957, 18888, 18888, 34994, 35010, 27211, + /* 14160 */ 33040, 17590, 29913, 35035, 24401, 36304, 25482, 30171, 35883, 35068, 35088, 26627, 20441, 31173, 35123, + /* 14175 */ 35143, 35176, 24640, 30492, 29358, 19719, 35192, 35219, 25384, 28801, 35255, 35279, 32586, 34496, 23086, + /* 14190 */ 23330, 29061, 31017, 27856, 31741, 19840, 25783, 31738, 24547, 25164, 35315, 31796, 35353, 34316, 22105, + /* 14205 */ 19419, 27963, 24091, 28630, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14220 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14235 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14250 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14265 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14280 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14295 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14310 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14325 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22848, 18836, 22059, 34782, + /* 14340 */ 34088, 35389, 21008, 35405, 35421, 35454, 18888, 18888, 23466, 35487, 27211, 27211, 27211, 35513, 31154, + /* 14355 */ 24401, 24401, 24401, 35560, 18888, 26863, 36664, 35601, 24872, 25783, 30389, 23536, 26250, 35647, 35666, + /* 14370 */ 22164, 19522, 19564, 30582, 35682, 27697, 35575, 29114, 18888, 18888, 18888, 18890, 27211, 35702, 27211, + /* 14385 */ 27211, 27211, 35723, 24401, 35527, 24401, 24401, 24401, 19628, 30184, 18888, 18888, 18888, 23086, 35739, + /* 14400 */ 27211, 27211, 27211, 29139, 22938, 24401, 24401, 24401, 24401, 23898, 35756, 18888, 18888, 25025, 35778, + /* 14415 */ 27211, 27211, 17590, 20064, 35795, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, + /* 14430 */ 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 23917, 18890, 34550, 31833, 22262, 19447, + /* 14445 */ 23086, 23330, 26418, 31017, 27856, 31741, 19840, 25783, 35812, 19837, 27187, 35841, 33135, 23516, 31008, + /* 14460 */ 22105, 22148, 28712, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14475 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14490 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14505 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14520 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14535 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14550 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14565 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14580 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22863, 18836, 22059, + /* 14595 */ 35877, 28723, 34097, 31164, 29183, 22087, 26758, 18888, 22592, 18890, 23989, 27211, 29812, 27211, 22121, + /* 14610 */ 33778, 24401, 31421, 24401, 18866, 18888, 18888, 26872, 18888, 18888, 25783, 27211, 30732, 27211, 27211, + /* 14625 */ 35072, 22164, 24401, 24908, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, + /* 14640 */ 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, + /* 14655 */ 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, + /* 14670 */ 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, + /* 14685 */ 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, + /* 14700 */ 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, + /* 14715 */ 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14730 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14745 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14760 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14775 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14790 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14805 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14820 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14835 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22878, 18836, + /* 14850 */ 22059, 27837, 27857, 35899, 24401, 35915, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, + /* 14865 */ 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, + /* 14880 */ 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31602, 18888, 18888, 18888, 18888, 26223, 27211, + /* 14895 */ 27211, 27211, 27211, 27211, 19484, 35931, 24401, 24401, 24401, 24401, 19628, 18888, 28136, 18888, 18888, + /* 14910 */ 35949, 27211, 32862, 27211, 32697, 30756, 24012, 24401, 32283, 24401, 32128, 26750, 18888, 18888, 18888, + /* 14925 */ 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, + /* 14940 */ 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, + /* 14955 */ 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, + /* 14970 */ 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 14985 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15000 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15015 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15030 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15045 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15060 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15075 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15090 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22893, + /* 15105 */ 18836, 22059, 35974, 34882, 34097, 33960, 29183, 35996, 18888, 23311, 18888, 36029, 27211, 27211, 36064, + /* 15120 */ 36081, 22121, 24401, 24401, 36104, 33950, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, + /* 15135 */ 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 36121, 18888, 25559, 18888, 18888, 18890, + /* 15150 */ 27211, 27211, 30313, 27211, 27211, 36154, 24401, 24401, 34397, 24401, 24401, 19628, 28250, 18888, 18888, + /* 15165 */ 18888, 23086, 30926, 27211, 27211, 27211, 26983, 24012, 33642, 24401, 24401, 24401, 26750, 18888, 18888, + /* 15180 */ 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, + /* 15195 */ 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, + /* 15210 */ 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, + /* 15225 */ 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15240 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15255 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15270 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15285 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15300 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15315 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15330 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15345 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15360 */ 22339, 18836, 22059, 19354, 27857, 36190, 24401, 36206, 22087, 18888, 18888, 18888, 18007, 27211, 27211, + /* 15375 */ 27211, 24724, 22121, 24401, 24401, 24401, 30827, 18866, 18888, 36222, 18888, 28795, 18888, 25783, 35100, + /* 15390 */ 27211, 27429, 27211, 35072, 22164, 30836, 24401, 24499, 24401, 24036, 31693, 18888, 36244, 18888, 18888, + /* 15405 */ 18890, 27211, 36088, 27211, 27211, 27211, 19484, 24401, 28036, 24401, 24401, 24401, 19628, 18888, 18888, + /* 15420 */ 35631, 18888, 35762, 27211, 27211, 36277, 27211, 34730, 24012, 24401, 24401, 36300, 24401, 36320, 18888, + /* 15435 */ 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 25712, 18888, 18888, 36346, + /* 15450 */ 27211, 27212, 19184, 24402, 19868, 25659, 32029, 18889, 27211, 33359, 19719, 23889, 36369, 31018, 18890, + /* 15465 */ 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, + /* 15480 */ 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15495 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15510 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15525 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15540 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15555 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15570 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15585 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15600 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15615 */ 17590, 22384, 18836, 36389, 19008, 19233, 20367, 36434, 17173, 17595, 36437, 17330, 17349, 18921, 17189, + /* 15630 */ 17208, 17281, 20355, 36453, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, + /* 15645 */ 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, + /* 15660 */ 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, + /* 15675 */ 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, + /* 15690 */ 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, + /* 15705 */ 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, + /* 15720 */ 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, + /* 15735 */ 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, + /* 15750 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15765 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15780 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15795 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15810 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15825 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15840 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15855 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 15870 */ 17590, 17590, 22369, 18836, 18987, 19008, 19233, 20367, 19008, 21737, 30763, 36437, 17330, 17349, 18921, + /* 15885 */ 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, + /* 15900 */ 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, + /* 15915 */ 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, + /* 15930 */ 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, + /* 15945 */ 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, + /* 15960 */ 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, + /* 15975 */ 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, + /* 15990 */ 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, + /* 16005 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16020 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16035 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16050 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16065 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16080 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16095 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16110 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16125 */ 17590, 17590, 17590, 21813, 18836, 36489, 19008, 19233, 20367, 19008, 17173, 17737, 36437, 17330, 17349, + /* 16140 */ 18921, 17189, 17208, 17281, 20355, 17768, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, + /* 16155 */ 17265, 22033, 20765, 17421, 20535, 17192, 20543, 22022, 17311, 18658, 18999, 19008, 17447, 32952, 17497, + /* 16170 */ 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, + /* 16185 */ 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, + /* 16200 */ 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, + /* 16215 */ 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, + /* 16230 */ 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, + /* 16245 */ 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, + /* 16260 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16275 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16290 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16305 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16320 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16335 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16350 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16365 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16380 */ 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, + /* 16395 */ 17349, 18921, 17189, 17208, 17281, 20355, 36517, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, + /* 16410 */ 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, + /* 16425 */ 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, + /* 16440 */ 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, + /* 16455 */ 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, + /* 16470 */ 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, + /* 16485 */ 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, + /* 16500 */ 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, + /* 16515 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16530 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16545 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16560 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16575 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16590 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16605 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16620 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16635 */ 17590, 17590, 17590, 17590, 17590, 21828, 18836, 19307, 18888, 27857, 30756, 24401, 29183, 28015, 18888, + /* 16650 */ 18888, 18888, 18890, 27211, 27211, 27211, 27211, 36567, 24401, 24401, 24401, 24401, 22953, 18888, 18888, + /* 16665 */ 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 36603, 24401, 24401, 24401, 24401, 24036, + /* 16680 */ 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, + /* 16695 */ 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, + /* 16710 */ 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, + /* 16725 */ 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, + /* 16740 */ 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, + /* 16755 */ 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, + /* 16770 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16785 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16800 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16815 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16830 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16845 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16860 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16875 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 16890 */ 17590, 17590, 17590, 17590, 17590, 17590, 36629, 36690, 18720, 19008, 19233, 20367, 19008, 17454, 17595, + /* 16905 */ 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17223, 17308, 17327, 17346, 18918, 36754, 21880, + /* 16920 */ 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, + /* 16935 */ 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, + /* 16950 */ 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, + /* 16965 */ 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, + /* 16980 */ 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, + /* 16995 */ 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, + /* 17010 */ 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, + /* 17025 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17040 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17055 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17070 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17085 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17100 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17115 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17130 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, + /* 17145 */ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 0, 94242, 0, 118820, 0, 2211840, 102439, 0, 0, 106538, + /* 17162 */ 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2482176, 2158592, + /* 17174 */ 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 2207744, 2404352, + /* 17191 */ 2412544, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17202 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3104768, 2605056, 2207744, 2207744, 2207744, 2207744, + /* 17213 */ 2207744, 2207744, 2678784, 2207744, 2695168, 2207744, 2703360, 2207744, 2711552, 2752512, 2207744, 0, 0, + /* 17226 */ 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 139, 0, 2158592, + /* 17246 */ 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, + /* 17257 */ 2801664, 2158592, 2158592, 2158592, 2863104, 2891776, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17268 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, + /* 17279 */ 2158592, 2158592, 2207744, 2785280, 2207744, 2809856, 2207744, 2207744, 2842624, 2207744, 2207744, + /* 17290 */ 2207744, 2899968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2473984, + /* 17301 */ 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2523136, 2158592, 2404352, 2412544, 2158592, + /* 17312 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17323 */ 2158592, 2564096, 2158592, 2158592, 2605056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17334 */ 2678784, 2158592, 2695168, 2158592, 2703360, 2158592, 2711552, 2752512, 2158592, 2158592, 2785280, + /* 17345 */ 2158592, 2158592, 2785280, 2158592, 2809856, 2158592, 2158592, 2842624, 2158592, 2158592, 2158592, + /* 17356 */ 2899968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 18, 0, 0, 0, 0, + /* 17371 */ 0, 0, 0, 2211840, 0, 0, 641, 0, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 32768, 0, 2158592, 0, + /* 17395 */ 2158592, 2158592, 2158592, 2383872, 2158592, 2158592, 2158592, 2158592, 3006464, 2383872, 2207744, + /* 17406 */ 2207744, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2572573, 2158877, + /* 17419 */ 2158877, 0, 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2641920, + /* 17431 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 167936, 0, 0, 2162688, 0, 0, + /* 17447 */ 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17458 */ 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2232320, 2232320, 2232320, 641, 0, 0, 0, 0, + /* 17475 */ 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2531328, 2158592, + /* 17488 */ 2158592, 2158592, 2158592, 2158592, 2617344, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, + /* 17499 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, + /* 17510 */ 2158592, 2158592, 2158592, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, + /* 17521 */ 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17532 */ 2158592, 2699264, 2158592, 2158592, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, + /* 17543 */ 2207744, 2863104, 2891776, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17554 */ 2207744, 2207744, 2207744, 2207744, 3018752, 2207744, 3043328, 2207744, 2207744, 2207744, 2207744, + /* 17565 */ 3080192, 2207744, 2207744, 3112960, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, + /* 17578 */ 0, 172310, 279, 0, 2162688, 0, 0, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 17599 */ 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2404352, 2412544, 2158592, 2510848, 2158592, 2158592, + /* 17615 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2584576, 2158592, 2609152, 2158592, 2158592, 2629632, + /* 17626 */ 2158592, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 3121152, 2158592, 2158592, + /* 17637 */ 2158592, 3149824, 2158592, 2158592, 3170304, 3174400, 2158592, 2367488, 2207744, 2207744, 2207744, + /* 17648 */ 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 0, 2207744, + /* 17662 */ 2207744, 2207744, 2433024, 2207744, 2453504, 2461696, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17673 */ 2207744, 2510848, 2207744, 2207744, 2207744, 2207744, 2207744, 2531328, 2207744, 2207744, 2207744, + /* 17684 */ 2207744, 2207744, 2617344, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, + /* 17697 */ 0, 2158592, 2572288, 2158592, 2158592, 1508, 2715648, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17709 */ 2207744, 2207744, 2867200, 2207744, 2904064, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17720 */ 2207744, 2207744, 2580480, 2207744, 2207744, 2207744, 2207744, 2621440, 2207744, 2207744, 2207744, + /* 17731 */ 3149824, 2207744, 2207744, 3170304, 3174400, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 2158592, 2158592, + /* 17750 */ 2158592, 2404352, 2412544, 2707456, 2732032, 2207744, 2207744, 2207744, 2822144, 2826240, 2207744, + /* 17761 */ 2895872, 2207744, 2207744, 2924544, 2207744, 2207744, 2973696, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, + /* 17778 */ 0, 0, 0, 285, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17792 */ 2158592, 2158592, 3186688, 2158592, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, + /* 17805 */ 0, 2158592, 2158592, 2158592, 2158592, 0, 0, 2535424, 2543616, 2158592, 2158592, 2158592, 0, 0, 0, + /* 17820 */ 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 17831 */ 2572288, 2981888, 2207744, 2207744, 3002368, 2207744, 3047424, 3063808, 3076096, 2207744, 2207744, + /* 17842 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3203072, 2708960, 2732032, 2158592, 2158592, 2158592, + /* 17853 */ 2822144, 2827748, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, + /* 17864 */ 2981888, 2158592, 2158592, 3002368, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, + /* 17875 */ 2158592, 2158592, 2158592, 2158592, 3203072, 2981888, 2158592, 2158592, 3003876, 2158592, 3047424, + /* 17886 */ 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2207744, + /* 17897 */ 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17908 */ 2207744, 20480, 0, 0, 0, 0, 0, 2162688, 20480, 0, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, + /* 17924 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2908160, 2527232, + /* 17935 */ 2207744, 2207744, 2576384, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 17946 */ 2207744, 2207744, 2908160, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 0, 0, + /* 17967 */ 2158592, 2158592, 2158592, 2158592, 2633728, 2658304, 0, 0, 2740224, 2744320, 0, 2834432, 2207744, + /* 17980 */ 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, + /* 17991 */ 2207744, 2207744, 3158016, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 933, 45, 45, 45, 45, 442, 45, 45, + /* 18014 */ 45, 45, 45, 45, 45, 45, 45, 67, 67, 2494464, 2158592, 2158592, 2158592, 2524757, 2527232, 2158592, + /* 18030 */ 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 1504, 2158592, 2498560, 2158592, + /* 18042 */ 2158592, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 2736128, + /* 18053 */ 2158592, 2158592, 0, 2158592, 2912256, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18065 */ 3108864, 2158592, 2158592, 3133440, 3145728, 3153920, 2375680, 2379776, 2207744, 2207744, 2420736, + /* 18076 */ 2207744, 2449408, 2207744, 2207744, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2568192, + /* 18087 */ 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 551, 2158592, 2158592, 2158592, 2158592, 2207744, + /* 18106 */ 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 2020, 2158592, 2592768, + /* 18118 */ 2625536, 2207744, 2207744, 2674688, 2736128, 2207744, 2207744, 2207744, 2912256, 2207744, 2207744, + /* 18129 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 542, 0, 544, + /* 18143 */ 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375680, 2379776, 2158592, 2158592, + /* 18154 */ 2420736, 2158592, 2449408, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 641, 0, 0, 0, + /* 18169 */ 0, 0, 0, 2367488, 2158592, 2498560, 2158592, 2158592, 1621, 2158592, 2158592, 2568192, 2158592, 2592768, + /* 18183 */ 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 1608, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1107, 97, + /* 18205 */ 97, 1110, 97, 97, 3133440, 3145728, 3153920, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, + /* 18218 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3014656, 2158592, 2158592, 3051520, + /* 18229 */ 2158592, 2158592, 3100672, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2416640, + /* 18240 */ 2207744, 2465792, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2633728, + /* 18251 */ 2658304, 2740224, 2744320, 2834432, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, + /* 18262 */ 2158592, 3129344, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, + /* 18273 */ 2207744, 3129344, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, + /* 18284 */ 2158592, 3186688, 2158592, 0, 32768, 0, 0, 0, 0, 0, 0, 2367488, 2949120, 2158592, 2985984, 2158592, + /* 18300 */ 2998272, 2158592, 2158592, 2158592, 3129344, 2158592, 2158592, 2478080, 2158592, 2158592, 2158592, + /* 18311 */ 2535424, 2543616, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18322 */ 3117056, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2699264, 2207744, 2207744, + /* 18333 */ 2207744, 2207744, 2207744, 2748416, 2756608, 2777088, 2801664, 2207744, 2207744, 2158877, 2158877, + /* 18344 */ 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 0, 0, 2535709, 2543901, 2158877, + /* 18359 */ 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2990365, 2158877, 2158877, 2158730, 2158730, + /* 18372 */ 2158730, 2158730, 2158730, 2572426, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, + /* 18383 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158592, 2158592, 2478080, 2207744, 2207744, + /* 18394 */ 2990080, 2207744, 2207744, 2158592, 2158592, 2482176, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, + /* 18407 */ 2158592, 0, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, + /* 18419 */ 3039232, 2158592, 2158592, 3010560, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, + /* 18430 */ 2838528, 2207744, 2207744, 2207744, 3010560, 2158592, 2428928, 2158592, 2514944, 0, 0, 2158592, 2588672, + /* 18443 */ 2158592, 0, 2838528, 2158592, 2158592, 2158592, 3010560, 2158592, 2506752, 2158592, 18, 0, 0, 0, 0, 0, 0, + /* 18460 */ 0, 2211840, 0, 0, 0, 0, 2158592, 0, 0, 29315, 922, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 18485 */ 45, 45, 1539, 45, 3006464, 2383872, 0, 2020, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, + /* 18499 */ 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158592, 2637824, 2953216, 2158592, + /* 18512 */ 2539520, 2158592, 2539520, 2207744, 0, 0, 2539520, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, + /* 18525 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 0, 2158592, 2207744, 0, 2158592, + /* 18538 */ 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2965504, 2965504, 2965504, 0, 0, 0, 0, 0, + /* 18554 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2474269, 2158877, 2158877, 0, 0, + /* 18567 */ 2158877, 2158877, 2158877, 2158877, 2634013, 2658589, 0, 0, 2740509, 2744605, 0, 2834717, 40976, 18, + /* 18581 */ 36884, 45078, 24, 28, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, + /* 18597 */ 36884, 0, 0, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 86016, 0, 0, 2211840, 102439, 0, 0, 0, 98347, 0, + /* 18621 */ 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 0, 2375680, 2379776, 2158592, 2158592, 2420736, + /* 18633 */ 2158592, 2449408, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 135, 2158592, + /* 18650 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 18661 */ 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2641920, 2158592, 2158592, 2158592, + /* 18672 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2494464, 2158592, + /* 18683 */ 2158592, 2158592, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, + /* 18694 */ 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 0, 27, 27, 0, 2158592, 2498560, 2158592, 2158592, 0, 2158592, + /* 18712 */ 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, + /* 18729 */ 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, + /* 18742 */ 2158592, 2494464, 2158592, 2158592, 2158592, 3006464, 2383872, 0, 0, 2158592, 2158592, 2158592, 2158592, + /* 18755 */ 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 40976, 18, 36884, 45078, 24, 27, + /* 18769 */ 147488, 94242, 147456, 147488, 106538, 98347, 0, 0, 147456, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, + /* 18788 */ 27, 27, 27, 27, 0, 81920, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 106538, 98347, 0, 2158592, 2158592, + /* 18808 */ 2158592, 2158592, 2158592, 2158592, 2428928, 2158592, 2514944, 2158592, 2588672, 2158592, 2838528, + /* 18819 */ 2158592, 2158592, 40976, 18, 151573, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, + /* 18836 */ 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1315, 0, 97, 97, 97, 97, 97, + /* 18860 */ 97, 97, 97, 97, 97, 1487, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 0, 29315, 0, 0, + /* 18886 */ 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 130, 94242, 0, 0, 0, + /* 18911 */ 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, + /* 18925 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, + /* 18936 */ 2207744, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 644, 2207744, 2207744, 2207744, + /* 18956 */ 3186688, 2207744, 0, 1080, 0, 1084, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, + /* 18975 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2531466, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 18986 */ 2617482, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, + /* 19003 */ 2158592, 2781184, 2793472, 2158592, 2818048, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19014 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, + /* 19026 */ 36884, 45078, 24, 27, 90143, 159779, 159744, 102439, 159779, 98347, 0, 0, 159744, 40976, 18, 18, 36884, 0, + /* 19044 */ 45078, 0, 2224253, 172032, 2224253, 2232448, 2232448, 172032, 2232448, 90143, 0, 0, 2170880, 0, 0, 550, + /* 19060 */ 829, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, + /* 19073 */ 0, 18, 18, 124, 124, 127, 127, 127, 40976, 18, 36884, 45078, 25, 29, 90143, 94242, 0, 102439, 106538, + /* 19092 */ 98347, 0, 0, 163931, 40976, 18, 18, 36884, 0, 45078, 249856, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, + /* 19113 */ 2170880, 0, 0, 827, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19127 */ 2158592, 0, 40976, 0, 4243810, 4243810, 24, 24, 27, 27, 27, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, + /* 19149 */ 0, 57344, 286, 2158592, 2158592, 2158592, 2158592, 2707456, 2732032, 2158592, 2158592, 2158592, 2822144, + /* 19162 */ 2826240, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2207744, + /* 19173 */ 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1613, 97, + /* 19196 */ 97, 97, 97, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 2207744, 0, 0, + /* 19221 */ 0, 0, 0, 0, 2166784, 546, 0, 0, 0, 0, 286, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, + /* 19239 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 17, 18, 36884, + /* 19252 */ 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 120, 121, 18, 18, 36884, 0, 45078, 0, + /* 19272 */ 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 53248, 550, 0, 2158592, 2158592, 2158592, 2387968, + /* 19291 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 196608, 18, 266240, 24, 24, 27, 27, 27, 0, + /* 19308 */ 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 0, 45, 45, 45, 45, 45, 45, 45, 1535, 45, 45, 45, 45, 45, + /* 19332 */ 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 45, 45, 45, 45, 45, 45, 405, 45, 45, 45, + /* 19357 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, + /* 19383 */ 67, 67, 67, 67, 1766, 67, 67, 67, 1767, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 546, 0, 53531, + /* 19403 */ 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, + /* 19430 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 743, 57889, 0, 2170880, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, + /* 19455 */ 97, 45, 45, 45, 45, 45, 45, 45, 45, 1856, 45, 1858, 1859, 67, 67, 67, 1009, 67, 67, 67, 67, 67, 67, 67, + /* 19479 */ 67, 67, 67, 67, 1021, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367773, + /* 19504 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2699549, 2158877, 2158877, 2158877, 2158877, + /* 19515 */ 2158877, 2748701, 2756893, 2777373, 2801949, 97, 1115, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 19535 */ 97, 857, 97, 67, 67, 67, 67, 67, 1258, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1826, 67, 97, 97, 97, + /* 19560 */ 97, 97, 97, 1338, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 67, 67, 67, 1463, 67, + /* 19585 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, + /* 19610 */ 97, 97, 97, 97, 97, 97, 97, 904, 905, 97, 97, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, + /* 19636 */ 921, 0, 0, 0, 0, 0, 0, 45, 1679, 67, 67, 67, 1682, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 0, 0, 97, + /* 19663 */ 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 19690 */ 189, 45, 45, 45, 1748, 45, 45, 45, 1749, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1959, 67, + /* 19714 */ 67, 67, 67, 1768, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1791, 97, 97, 97, + /* 19739 */ 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1802, 67, 1817, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, + /* 19764 */ 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1848, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 19791 */ 45, 659, 45, 45, 45, 45, 45, 45, 45, 1863, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, + /* 19816 */ 67, 67, 67, 1878, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, + /* 19844 */ 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1973, 97, 97, 97, + /* 19871 */ 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1165, 97, 1167, 67, 24850, 24850, 12564, 12564, 0, + /* 19894 */ 0, 2166784, 0, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1789, 97, 0, + /* 19919 */ 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 136, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 19935 */ 3158016, 229376, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 67, + /* 19947 */ 24850, 24850, 12564, 12564, 0, 0, 280, 547, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, + /* 19970 */ 0, 1788, 97, 97, 0, 97, 2024, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 235, 67, 67, 67, + /* 19996 */ 67, 67, 57889, 547, 547, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1799, 45, 45, 45, + /* 20021 */ 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1092, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1612, 97, 97, + /* 20046 */ 97, 97, 1616, 97, 1297, 1472, 0, 0, 0, 0, 1303, 1474, 0, 0, 0, 0, 1309, 1476, 0, 0, 0, 0, 97, 97, 97, + /* 20071 */ 1481, 97, 97, 97, 97, 97, 97, 1488, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 20096 */ 607, 97, 97, 97, 97, 40976, 18, 36884, 45078, 26, 30, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, + /* 20115 */ 213080, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 143448, 40976, 18, + /* 20133 */ 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 0, 0, 0, 97, 97, 97, 97, 1482, 97, 1483, 97, 97, + /* 20158 */ 97, 97, 97, 97, 1326, 97, 97, 1329, 1330, 97, 97, 97, 97, 97, 97, 1159, 1160, 97, 97, 97, 97, 97, 97, 97, + /* 20182 */ 97, 590, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211974, 102439, 0, 0, 106538, 98347, 0, 2158730, + /* 20204 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2474122, 2158730, 2158730, 2494602, + /* 20215 */ 2158730, 2158730, 2158730, 2809994, 2158730, 2158730, 2842762, 2158730, 2158730, 2158730, 2900106, + /* 20226 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3014794, 2158730, 2158730, + /* 20237 */ 3051658, 2158730, 2158730, 3100810, 2158730, 2158730, 2158730, 2158730, 3096714, 2158730, 2158730, + /* 20248 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, + /* 20259 */ 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 2207744, 541, 541, 543, 543, 0, 0, 2166784, 0, 548, + /* 20275 */ 549, 549, 0, 286, 2158877, 2158877, 2158877, 2863389, 2892061, 2158877, 2158877, 2158877, 2158877, + /* 20288 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3186973, 2158877, 0, 0, 0, 0, 0, 0, 0, 0, + /* 20305 */ 2367626, 2158877, 2404637, 2412829, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 20316 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2564381, 2158877, + /* 20327 */ 2158877, 2605341, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2679069, 2158877, 2695453, + /* 20338 */ 2158877, 2703645, 2158877, 2711837, 2752797, 2158877, 0, 2158877, 2158877, 2158877, 2384010, 2158730, + /* 20350 */ 2158730, 2158730, 2158730, 3006602, 2383872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20361 */ 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20372 */ 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 2158877, 2785565, 2158877, 2810141, 2158877, 2158877, + /* 20389 */ 2842909, 2158877, 2158877, 2158877, 2900253, 2158877, 2158877, 2158877, 2158877, 2158877, 2531613, + /* 20400 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2617629, 2158877, 2158877, 2158877, 2158877, 2158730, + /* 20411 */ 2818186, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20422 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3105053, 2158877, 2158877, 2158877, 2158877, + /* 20433 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 0, 0, 97, 97, 97, 1611, + /* 20450 */ 97, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 1499, 97, 97, 97, 97, 97, 2441354, 2445450, 2158730, 2158730, + /* 20470 */ 2158730, 2158730, 2158730, 2158730, 2502794, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20481 */ 2158730, 2433162, 2158730, 2453642, 2461834, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20492 */ 2580618, 2158730, 2158730, 2158730, 2158730, 2621578, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20503 */ 2158730, 2699402, 2158730, 2158730, 2158730, 2158730, 2678922, 2158730, 2695306, 2158730, 2703498, + /* 20514 */ 2158730, 2711690, 2752650, 2158730, 2158730, 2785418, 2158730, 2158730, 2158730, 3113098, 2158730, + /* 20525 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3186826, 2158730, 2207744, + /* 20536 */ 2207744, 2207744, 2207744, 2781184, 2793472, 2207744, 2818048, 2207744, 2207744, 2207744, 2207744, + /* 20547 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 541, 0, 543, 2158877, 2502941, + /* 20561 */ 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2580765, 2158877, 2158877, + /* 20572 */ 2158877, 2158877, 2621725, 2158877, 3019037, 2158877, 3043613, 2158877, 2158877, 2158877, 2158877, + /* 20583 */ 3080477, 2158877, 2158877, 3113245, 2158877, 2158877, 2158877, 2158877, 0, 2158877, 2908445, 2158877, + /* 20595 */ 2158877, 2158877, 2978077, 2158877, 2158877, 2158877, 2158877, 3039517, 2158877, 2158730, 2510986, + /* 20606 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2584714, 2158730, 2609290, 2158730, + /* 20617 */ 2158730, 2629770, 2158730, 2158730, 2158730, 2388106, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20628 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2605194, 2158730, 2158730, + /* 20639 */ 2158730, 2158730, 2687114, 2158730, 2715786, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20650 */ 2158730, 2867338, 2158730, 2904202, 2158730, 2158730, 2158730, 2642058, 2158730, 2158730, 2158730, + /* 20661 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2781322, 2793610, 2158730, 3121290, + /* 20672 */ 2158730, 2158730, 2158730, 3149962, 2158730, 2158730, 3170442, 3174538, 2158730, 2367488, 2207744, + /* 20683 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2441216, 2445312, 2207744, 2207744, 2207744, + /* 20694 */ 2207744, 2207744, 2207744, 2502656, 2158877, 2433309, 2158877, 2453789, 2461981, 2158877, 2158877, + /* 20705 */ 2158877, 2158877, 2158877, 2158877, 2511133, 2158877, 2158877, 2158877, 2158877, 2584861, 2158877, + /* 20716 */ 2609437, 2158877, 2158877, 2629917, 2158877, 2158877, 2158877, 2687261, 2158877, 2715933, 2158877, + /* 20727 */ 2158730, 2158730, 2973834, 2158730, 2982026, 2158730, 2158730, 3002506, 2158730, 3047562, 3063946, + /* 20738 */ 3076234, 2158730, 2158730, 2158730, 2158730, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, + /* 20749 */ 2207744, 2158877, 2507037, 0, 0, 2158877, 2158730, 2158730, 2158730, 3203210, 2207744, 2207744, 2207744, + /* 20762 */ 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20773 */ 2207744, 2207744, 2207744, 2207744, 2564096, 2207744, 2207744, 2207744, 2707741, 2732317, 2158877, + /* 20784 */ 2158877, 2158877, 2822429, 2826525, 2158877, 2896157, 2158877, 2158877, 2924829, 2158877, 2158877, + /* 20795 */ 2973981, 2158877, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 642, 0, 2158592, 0, 45, 1529, 45, 45, 45, 45, + /* 20818 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 67, 67, 2982173, 2158877, 2158877, 3002653, 2158877, + /* 20836 */ 3047709, 3064093, 3076381, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3203357, + /* 20847 */ 2523274, 2527370, 2158730, 2158730, 2576522, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20858 */ 2158730, 2158730, 2158730, 2158730, 2908298, 2494749, 2158877, 2158877, 2158877, 2523421, 2527517, + /* 20869 */ 2158877, 2158877, 2576669, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 40976, 0, 18, 18, + /* 20883 */ 4321280, 2224253, 2232448, 4329472, 2232448, 2158730, 2498698, 2158730, 2158730, 2158730, 2158730, + /* 20894 */ 2568330, 2158730, 2592906, 2625674, 2158730, 2158730, 2674826, 2736266, 2158730, 2158730, 2158730, + /* 20905 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 20916 */ 2207744, 2207744, 2207744, 2158730, 2912394, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20927 */ 2158730, 3109002, 2158730, 2158730, 3133578, 3145866, 3154058, 2375680, 2207744, 3108864, 2207744, + /* 20938 */ 2207744, 3133440, 3145728, 3153920, 2375965, 2380061, 2158877, 2158877, 2421021, 2158877, 2449693, + /* 20949 */ 2158877, 2158877, 2158877, 3117341, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20960 */ 2158730, 2158730, 2158730, 2158730, 2158730, 3104906, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 20971 */ 2158730, 2158877, 2498845, 2158877, 2158877, 0, 2158877, 2158877, 2568477, 2158877, 2593053, 2625821, + /* 20983 */ 2158877, 2158877, 2674973, 0, 0, 0, 0, 97, 97, 1480, 97, 97, 97, 97, 97, 1485, 97, 97, 97, 0, 97, 97, + /* 21005 */ 1729, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 311, 97, 97, 97, 97, 97, 97, 97, 97, 1520, 97, 97, 1523, 97, + /* 21029 */ 97, 1526, 97, 2736413, 2158877, 2158877, 0, 2158877, 2912541, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 21043 */ 2158877, 2158877, 3109149, 2158877, 2158877, 3014941, 2158877, 2158877, 3051805, 2158877, 2158877, + /* 21054 */ 3100957, 2158877, 2158877, 3121437, 2158877, 2158877, 2158877, 3150109, 3133725, 3146013, 3154205, + /* 21065 */ 2158730, 2408586, 2416778, 2158730, 2465930, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, + /* 21076 */ 2158730, 2158730, 3018890, 2158730, 3043466, 2158730, 2158730, 2158730, 2158730, 3080330, 2633866, + /* 21087 */ 2658442, 2740362, 2744458, 2834570, 2949258, 2158730, 2986122, 2158730, 2998410, 2158730, 2158730, + /* 21098 */ 2158730, 3129482, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, + /* 21109 */ 2207744, 3129344, 2158877, 2408733, 2416925, 2158877, 2466077, 2158877, 2158877, 3170589, 3174685, + /* 21120 */ 2158877, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2424970, 2158730, 2158730, 2158730, + /* 21133 */ 2158730, 2707594, 2732170, 2158730, 2158730, 2158730, 2822282, 2826378, 2158730, 2896010, 2158730, + /* 21144 */ 2158730, 2924682, 2949405, 2158877, 2986269, 2158877, 2998557, 2158877, 2158877, 2158877, 3129629, + /* 21155 */ 2158730, 2158730, 2478218, 2158730, 2158730, 2158730, 2535562, 2543754, 2158730, 2158730, 2158730, + /* 21166 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3117194, 2207744, 2207744, 2478080, 2207744, + /* 21177 */ 2207744, 2207744, 2207744, 3014656, 2207744, 2207744, 3051520, 2207744, 2207744, 3100672, 2207744, + /* 21188 */ 2207744, 3121152, 2207744, 2207744, 2207744, 2207744, 2207744, 2584576, 2207744, 2609152, 2207744, + /* 21199 */ 2207744, 2629632, 2207744, 2207744, 2207744, 2686976, 2207744, 2207744, 2535424, 2543616, 2207744, + /* 21210 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158877, 2158877, + /* 21221 */ 2478365, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2158730, 2482314, 2158730, + /* 21233 */ 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, + /* 21244 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 823, 0, 825, + /* 21258 */ 2158730, 2158730, 2158730, 2990218, 2158730, 2158730, 2207744, 2207744, 2482176, 2207744, 2207744, + /* 21269 */ 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 135, 0, 2207744, 2207744, 2990080, + /* 21286 */ 2207744, 2207744, 2158877, 2158877, 2482461, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, + /* 21299 */ 2158877, 2158877, 2158730, 2429066, 2158730, 2515082, 2158730, 2588810, 2158730, 2838666, 2158730, + /* 21310 */ 2158730, 2158730, 3010698, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, + /* 21321 */ 2207744, 2207744, 2207744, 3010560, 2158877, 2429213, 2158877, 2515229, 0, 0, 2158877, 2588957, 2158877, + /* 21334 */ 0, 2838813, 2158877, 2158877, 2158877, 3010845, 2158730, 2506890, 2158730, 2158730, 2158730, 2748554, + /* 21346 */ 2756746, 2777226, 2801802, 2158730, 2158730, 2158730, 2863242, 2891914, 2158730, 2158730, 2158730, + /* 21357 */ 2158730, 2158730, 2158730, 2564234, 2158730, 2158730, 2158730, 2158730, 2158730, 2597002, 2158730, + /* 21368 */ 2158730, 2158730, 3006464, 2384157, 0, 0, 2158877, 2158877, 2158877, 2158877, 3006749, 2158730, 2637962, + /* 21381 */ 2953354, 2158730, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158877, 2638109, 2953501, 2158877, 2539658, + /* 21394 */ 2158730, 2539520, 2207744, 0, 0, 2539805, 2158877, 2158730, 2158730, 2158730, 2977930, 2158730, 2158730, + /* 21407 */ 2158730, 2158730, 3039370, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3158154, 2207744, 0, + /* 21419 */ 2158877, 2158730, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2965642, 2965504, 2965789, 0, 0, 0, + /* 21434 */ 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1484, 97, 97, 97, 97, 2158592, 18, 0, 122880, 0, 0, 0, + /* 21459 */ 77824, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 356, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, + /* 21484 */ 1751, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1427, 67, 67, 67, 67, 67, 1432, 67, 67, 67, 3104768, 2158592, + /* 21506 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 122880, + /* 21518 */ 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 1322, 550, 0, 286, 0, 2158592, 2158592, 2158592, + /* 21541 */ 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, + /* 21556 */ 24, 4329472, 27, 27, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, + /* 21569 */ 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 542, 0, 0, 0, 542, 0, 544, 0, 0, 0, 544, 0, 550, 0, + /* 21589 */ 0, 0, 0, 0, 97, 97, 1610, 97, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, + /* 21616 */ 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, + /* 21632 */ 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 237568, 102439, 106538, + /* 21647 */ 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 192512, + /* 21666 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 94, 40976, 18, 36884, + /* 21684 */ 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 96, 40976, 18, 36884, 45078, 24, 27, 90143, + /* 21703 */ 94242, 0, 102439, 106538, 98347, 0, 0, 12378, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 126, 126, + /* 21723 */ 126, 126, 90143, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, + /* 21740 */ 2158592, 2158592, 2158592, 20480, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 40976, 18, 36884, 45078, 24, 27, + /* 21759 */ 90143, 94242, 241664, 102439, 106538, 98347, 0, 0, 20568, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, + /* 21776 */ 0, 102439, 106538, 98347, 0, 0, 200797, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, + /* 21794 */ 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 0, 0, 44, 0, 0, 20575, 40976, 18, + /* 21815 */ 36884, 45078, 24, 27, 90143, 94242, 0, 41, 41, 41, 0, 0, 1126400, 40976, 18, 36884, 45078, 24, 27, 90143, + /* 21835 */ 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, + /* 21853 */ 106538, 98347, 0, 0, 89, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 131201, 27, 27, 90143, 0, 0, + /* 21875 */ 2170880, 0, 0, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 21889 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, + /* 21900 */ 2158592, 2158592, 2158592, 0, 94242, 0, 0, 208896, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, + /* 21916 */ 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 32768, 0, 0, 0, 0, + /* 21936 */ 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2158592, + /* 21949 */ 2453504, 2461696, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2510848, 2158592, 2158592, + /* 21960 */ 2158592, 2158592, 40976, 18, 36884, 245783, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, + /* 21977 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 221184, 40976, 18, 36884, + /* 21995 */ 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 180224, 40976, 18, 18, 36884, 155648, 45078, + /* 22013 */ 0, 24, 24, 217088, 27, 27, 27, 217088, 90143, 0, 0, 2170880, 0, 0, 828, 0, 2158592, 2158592, 2158592, + /* 22032 */ 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2387968, + /* 22043 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 233472, 0, 0, + /* 22060 */ 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, + /* 22083 */ 45, 45, 45, 727, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 45, 1808, 45, 45, + /* 22107 */ 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 0, 0, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, + /* 22131 */ 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1787, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, + /* 22156 */ 45, 2029, 45, 67, 67, 67, 67, 2033, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 22180 */ 45, 1798, 45, 45, 1800, 45, 45, 0, 1472, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 1315, 0, 0, + /* 22208 */ 0, 0, 97, 97, 97, 97, 1320, 97, 97, 0, 0, 97, 97, 97, 97, 1786, 97, 0, 0, 97, 97, 0, 1790, 1527, 45, 45, + /* 22234 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 67, 24850, 24850, 12564, 12564, 0, 57889, 281, 0, + /* 22257 */ 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 1785, 97, 97, 0, 0, 97, 97, 0, 97, 97, 1979, 97, 97, + /* 22282 */ 45, 45, 1983, 45, 1984, 45, 45, 45, 45, 45, 652, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 690, 45, 45, 694, + /* 22307 */ 45, 45, 40976, 19, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 262144, 40976, 18, + /* 22326 */ 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 46, 67, 98, 40976, 18, 36884, 45078, 24, + /* 22344 */ 27, 90143, 94242, 38, 102439, 106538, 98347, 45, 67, 97, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, + /* 22363 */ 102439, 106538, 98347, 0, 0, 258048, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, + /* 22380 */ 98347, 0, 0, 1122423, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 1114152, 1114152, 1114152, 0, 0, + /* 22398 */ 1114112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 37, 102439, 106538, 98347, 0, 0, 204800, 40976, + /* 22415 */ 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 57436, 40976, 18, 36884, 45078, + /* 22433 */ 24, 27, 33, 33, 0, 33, 33, 33, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 124, 124, 124, 127, 127, 127, + /* 22457 */ 127, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158877, 2158877, 2158877, 2388253, 2158877, 2158877, 2158877, + /* 22473 */ 2158877, 2158877, 2781469, 2793757, 2158877, 2818333, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 22484 */ 2158877, 2158877, 2867485, 2158877, 2904349, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 22495 */ 2158877, 3096861, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 22506 */ 2441501, 2445597, 2158877, 2158877, 2158877, 2158877, 2158877, 40976, 122, 123, 36884, 0, 45078, 0, 24, + /* 22521 */ 24, 24, 27, 27, 27, 27, 90143, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 936, 2158592, + /* 22545 */ 4243810, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, + /* 22571 */ 45, 45, 935, 45, 45, 45, 715, 45, 45, 45, 45, 45, 45, 45, 723, 45, 45, 45, 45, 45, 1182, 45, 45, 45, 45, + /* 22596 */ 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 45, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, + /* 22617 */ 102439, 106538, 98347, 47, 68, 99, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, + /* 22634 */ 98347, 48, 69, 100, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 49, 70, 101, + /* 22653 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 50, 71, 102, 40976, 18, 36884, + /* 22671 */ 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 51, 72, 103, 40976, 18, 36884, 45078, 24, 27, + /* 22689 */ 90143, 94242, 38, 102439, 106538, 98347, 52, 73, 104, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, + /* 22707 */ 102439, 106538, 98347, 53, 74, 105, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, + /* 22724 */ 98347, 54, 75, 106, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 55, 76, 107, + /* 22743 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 56, 77, 108, 40976, 18, 36884, + /* 22761 */ 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 57, 78, 109, 40976, 18, 36884, 45078, 24, 27, + /* 22779 */ 90143, 94242, 38, 102439, 106538, 98347, 58, 79, 110, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, + /* 22797 */ 102439, 106538, 98347, 59, 80, 111, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, + /* 22814 */ 98347, 60, 81, 112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 61, 82, 113, + /* 22833 */ 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 62, 83, 114, 40976, 18, 36884, + /* 22851 */ 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 63, 84, 115, 40976, 18, 36884, 45078, 24, 27, + /* 22869 */ 90143, 94242, 38, 102439, 106538, 98347, 64, 85, 116, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, + /* 22887 */ 102439, 106538, 98347, 65, 86, 117, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, + /* 22904 */ 98347, 66, 87, 118, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 118820, 102439, 106538, 98347, 118820, + /* 22921 */ 118820, 118820, 40976, 18, 18, 0, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1314, 0, 0, 0, 0, + /* 22945 */ 0, 0, 97, 97, 97, 97, 97, 1321, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 0, 1315, 0, + /* 22972 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 131, 94242, 0, 0, 0, 38, 102439, 0, 0, + /* 22997 */ 106538, 98347, 28809, 45, 45, 45, 145, 149, 45, 45, 45, 45, 45, 174, 45, 179, 45, 185, 45, 188, 45, 45, + /* 23019 */ 202, 67, 255, 67, 67, 269, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 292, 296, 97, + /* 23042 */ 97, 97, 97, 97, 321, 97, 326, 97, 332, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 646, + /* 23067 */ 335, 97, 97, 349, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 437, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23092 */ 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 523, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23118 */ 511, 67, 67, 67, 97, 97, 97, 620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1501, 1502, 97, 793, + /* 23143 */ 67, 67, 796, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 808, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, + /* 23170 */ 97, 97, 2052, 67, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, + /* 23193 */ 54074, 550, 830, 97, 97, 97, 97, 97, 97, 97, 97, 97, 315, 97, 97, 97, 97, 97, 97, 841, 97, 97, 97, 97, 97, + /* 23218 */ 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 867, 97, 97, 97, 97, + /* 23244 */ 97, 97, 97, 891, 97, 97, 894, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 906, 45, 937, 45, 45, 940, 45, 45, + /* 23269 */ 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 734, 735, 67, 737, 67, 738, 67, 740, 67, 67, 67, 45, 967, 45, 45, + /* 23294 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 435, 45, 45, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 23320 */ 45, 45, 45, 45, 415, 45, 45, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, + /* 23346 */ 67, 67, 67, 67, 67, 25398, 1081, 13112, 1085, 54074, 1089, 0, 0, 0, 0, 0, 0, 363, 0, 28809, 0, 139, 45, + /* 23369 */ 45, 45, 45, 45, 45, 1674, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1913, 67, 1914, 67, 67, 67, 1918, 67, 67, + /* 23393 */ 97, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 630, 97, 97, 97, 97, 97, 1169, 97, 97, + /* 23418 */ 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1534, 45, 45, 45, 45, 45, 1538, 45, 45, + /* 23444 */ 45, 45, 1233, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 742, 67, 45, 45, 1191, 45, 45, 45, + /* 23469 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 454, 67, 67, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23495 */ 67, 1251, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2050, 0, 97, 97, 45, 45, 45, 732, 45, 45, 67, 67, 67, + /* 23521 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23547 */ 67, 772, 67, 67, 67, 1293, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 2158592, 2158592, + /* 23572 */ 2158592, 2404352, 2412544, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 0, 97, 97, + /* 23594 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1737, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, + /* 23619 */ 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 647, 45, 45, 1387, 45, 45, 1391, 45, 45, 45, + /* 23644 */ 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 1400, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1407, + /* 23669 */ 45, 45, 45, 45, 45, 941, 45, 943, 45, 45, 45, 45, 45, 45, 951, 45, 67, 1438, 67, 67, 67, 67, 67, 67, 67, + /* 23694 */ 67, 67, 67, 1447, 67, 67, 67, 67, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, + /* 23719 */ 67, 67, 97, 1491, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, + /* 23745 */ 97, 97, 97, 1736, 97, 45, 45, 1541, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 677, 45, 45, 67, + /* 23770 */ 1581, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 791, 792, 67, 67, 67, 67, 1598, 67, 1600, + /* 23794 */ 67, 67, 67, 67, 67, 67, 67, 67, 1472, 97, 97, 97, 1727, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 23819 */ 97, 1513, 97, 97, 67, 67, 97, 1879, 97, 1881, 97, 0, 1884, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, + /* 23845 */ 0, 0, 1842, 97, 97, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1928, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, + /* 23872 */ 45, 45, 1903, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 1971, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, + /* 23898 */ 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1381, 45, 45, 45, 45, 1976, 97, 97, 97, 97, 97, 45, 45, 45, 45, + /* 23924 */ 45, 45, 45, 45, 45, 45, 45, 45, 1747, 809, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, + /* 23948 */ 544, 97, 907, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1478, 97, 97, 97, 97, 97, 97, + /* 23974 */ 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 23999 */ 67, 477, 67, 67, 67, 67, 67, 67, 1294, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, + /* 24027 */ 97, 97, 97, 97, 97, 97, 97, 97, 1324, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1374, + /* 24053 */ 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 45, 45, 45, 45, 45, 45, 45, 1908, 45, + /* 24079 */ 45, 1910, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1919, 67, 0, 0, 97, 97, 97, 97, 45, 2048, 67, 2049, 0, 0, + /* 24104 */ 97, 2051, 45, 45, 45, 939, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 397, 45, 45, 45, 1921, 67, 67, + /* 24129 */ 1923, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1947, 45, 1935, 0, 0, 0, + /* 24155 */ 97, 1939, 97, 97, 1941, 97, 45, 45, 45, 45, 45, 45, 382, 389, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, + /* 24179 */ 45, 1812, 67, 67, 67, 67, 67, 256, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 336, 97, + /* 24203 */ 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, + /* 24228 */ 45, 45, 371, 373, 45, 45, 45, 955, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 45, 457, + /* 24253 */ 459, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 478, 67, 67, 482, 67, 67, 485, 67, 67, 67, 67, 67, 67, 67, + /* 24278 */ 67, 67, 67, 67, 67, 67, 97, 1828, 97, 554, 556, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 575, 97, 97, 579, + /* 24303 */ 97, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 330, 97, 97, 67, 746, 67, 67, 67, 67, 67, + /* 24329 */ 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, + /* 24354 */ 67, 67, 67, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 856, 97, 97, 97, 0, 97, 97, 97, 97, 97, + /* 24380 */ 97, 97, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1642, 97, 1644, 97, 97, 890, 97, 97, 97, 97, + /* 24405 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 67, 67, 67, 67, 1065, 1066, 67, 67, 67, 67, 67, 67, 67, + /* 24431 */ 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 24456 */ 496, 67, 67, 97, 97, 1505, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 0, 1474, 0, + /* 24481 */ 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1617, 97, 97, 1635, 0, 1637, 97, 97, 97, 97, 97, 97, 97, + /* 24506 */ 97, 97, 97, 97, 885, 97, 97, 97, 97, 67, 67, 1704, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 24531 */ 565, 572, 97, 97, 97, 97, 97, 97, 97, 97, 1832, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, + /* 24557 */ 45, 45, 45, 1946, 45, 45, 67, 67, 67, 67, 67, 97, 1926, 97, 1927, 97, 0, 0, 0, 97, 97, 1934, 2043, 0, 0, + /* 24582 */ 97, 97, 97, 2047, 45, 45, 67, 67, 0, 1832, 97, 97, 45, 45, 45, 981, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24607 */ 45, 45, 45, 1227, 45, 45, 45, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 372, 45, 45, 45, + /* 24631 */ 45, 1661, 1662, 45, 45, 45, 45, 45, 1666, 45, 45, 45, 45, 45, 1673, 45, 1675, 45, 45, 45, 45, 45, 45, 45, + /* 24655 */ 67, 1426, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 67, 67, 45, 418, 45, 45, 420, 45, 45, + /* 24680 */ 423, 45, 45, 45, 45, 45, 45, 45, 45, 959, 45, 45, 962, 45, 45, 45, 45, 458, 67, 67, 67, 67, 67, 67, 67, + /* 24705 */ 67, 67, 67, 67, 67, 67, 67, 483, 67, 67, 67, 67, 504, 67, 67, 506, 67, 67, 509, 67, 67, 67, 67, 67, 67, + /* 24730 */ 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 555, 97, 97, 97, 97, 97, 97, + /* 24755 */ 97, 97, 97, 97, 97, 97, 97, 97, 580, 97, 97, 97, 97, 601, 97, 97, 603, 97, 97, 606, 97, 97, 97, 97, 97, + /* 24780 */ 97, 848, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1498, 97, 97, 97, 97, 97, 97, 45, 45, 714, 45, 45, 45, 45, + /* 24805 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 989, 990, 45, 67, 67, 67, 67, 67, 1011, 67, 67, 67, 67, 1015, 67, 67, + /* 24830 */ 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 467, 67, 67, 67, 67, 67, 67, 67, 45, 45, 1179, + /* 24855 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 1004, 67, 1217, 45, 45, 45, 45, 45, 45, 45, 45, + /* 24880 */ 45, 45, 45, 45, 45, 45, 45, 728, 67, 1461, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, + /* 24905 */ 67, 97, 1516, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 67, 67, 67, 1705, 67, 67, + /* 24930 */ 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1715, 97, 97, 97, 97, + /* 24956 */ 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1380, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, + /* 24983 */ 1887, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 2006, 45, 45, 1907, 45, 45, 45, 45, 45, 67, 67, 67, + /* 25009 */ 67, 67, 67, 67, 67, 67, 1920, 67, 97, 0, 2035, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 1428, 67, + /* 25034 */ 67, 67, 67, 67, 67, 1435, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 146, + /* 25057 */ 45, 152, 45, 45, 165, 45, 175, 45, 180, 45, 45, 187, 190, 195, 45, 203, 254, 257, 262, 67, 270, 67, 67, 0, + /* 25081 */ 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 293, 97, 299, 97, 97, 312, 97, 322, 97, 327, 97, 97, + /* 25104 */ 334, 337, 342, 97, 350, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 484, 67, 67, 67, 67, 67, 67, + /* 25129 */ 67, 67, 67, 67, 67, 67, 67, 499, 97, 581, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 648, + /* 25154 */ 45, 650, 45, 651, 45, 653, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1954, 67, 67, 67, 1958, 67, 67, 67, + /* 25178 */ 67, 67, 67, 67, 768, 67, 67, 67, 67, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 680, 45, 45, 45, 45, + /* 25204 */ 45, 45, 45, 45, 688, 689, 691, 45, 45, 45, 45, 45, 983, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 947, 45, + /* 25229 */ 45, 45, 45, 952, 45, 45, 698, 699, 45, 45, 702, 703, 45, 45, 45, 45, 45, 45, 45, 711, 744, 67, 67, 67, 67, + /* 25254 */ 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 761, 67, 67, 67, 67, 765, 67, 767, 67, 67, 67, 67, 67, 67, 67, + /* 25279 */ 67, 775, 776, 778, 67, 67, 67, 67, 67, 67, 785, 786, 67, 67, 789, 790, 67, 67, 67, 67, 67, 67, 1442, 67, + /* 25303 */ 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1775, 97, 97, 97, 67, 67, 67, 67, 67, 798, 67, 67, 67, 802, + /* 25328 */ 67, 67, 67, 67, 67, 67, 67, 67, 1465, 67, 67, 1468, 67, 67, 1471, 67, 67, 810, 67, 67, 67, 67, 67, 67, 67, + /* 25353 */ 67, 67, 821, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 833, 97, 835, 97, 836, 97, 838, + /* 25374 */ 97, 97, 0, 0, 97, 97, 97, 2002, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1740, 45, 45, 45, 1744, 45, 45, + /* 25399 */ 45, 97, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 0, 1717, 1718, 97, 97, 97, 97, 97, + /* 25424 */ 1722, 97, 0, 0, 859, 97, 97, 97, 97, 863, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, + /* 25449 */ 97, 97, 97, 873, 874, 876, 97, 97, 97, 97, 97, 97, 883, 884, 97, 97, 887, 888, 97, 18, 131427, 0, 0, 0, 0, + /* 25474 */ 0, 0, 362, 225280, 0, 365, 0, 367, 0, 45, 45, 45, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1199, + /* 25499 */ 45, 45, 45, 45, 45, 97, 97, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 919, 638, 0, 0, 0, 0, 2158877, + /* 25523 */ 2158877, 2158877, 2158877, 2158877, 2425117, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, + /* 25534 */ 2597149, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2642205, 2158877, 2158877, 2158877, + /* 25545 */ 2158877, 2158877, 3158301, 0, 2375818, 2379914, 2158730, 2158730, 2420874, 2158730, 2449546, 2158730, + /* 25557 */ 2158730, 953, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 965, 978, 45, 45, 45, 45, 45, + /* 25581 */ 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1027, 67, + /* 25606 */ 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 1077, 1078, 67, 67, 25398, 0, + /* 25630 */ 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 139, 2158730, 2158730, 2158730, 2404490, 2412682, 1113, + /* 25650 */ 97, 97, 97, 97, 97, 97, 1121, 97, 1123, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 25676 */ 45, 45, 45, 45, 1540, 1155, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 1168, 97, 97, + /* 25701 */ 1171, 1172, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, + /* 25727 */ 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 45, 1219, 45, 45, 45, 45, + /* 25752 */ 45, 45, 45, 1226, 45, 45, 45, 45, 45, 168, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, + /* 25777 */ 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1242, 67, + /* 25802 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1046, 67, 67, 1254, 67, 1256, 67, 67, 67, 67, 67, 67, + /* 25827 */ 67, 67, 67, 67, 67, 67, 806, 807, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 25852 */ 97, 1111, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 1354, 97, 97, 97, 1359, 97, 97, 97, 0, 97, 97, 97, 97, + /* 25876 */ 1640, 97, 97, 97, 97, 97, 97, 97, 897, 97, 97, 97, 902, 97, 97, 97, 97, 97, 97, 97, 97, 1366, 97, 97, 97, + /* 25901 */ 97, 97, 97, 97, 1371, 97, 97, 97, 0, 97, 97, 97, 1730, 97, 97, 97, 97, 97, 97, 97, 97, 915, 97, 97, 97, + /* 25926 */ 97, 0, 360, 0, 67, 67, 67, 1440, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 1019, 67, 67, + /* 25951 */ 67, 67, 67, 1453, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 97, 97, 97, 1493, 97, 97, 97, 97, 97, 97, + /* 25976 */ 97, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 97, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 26001 */ 1514, 67, 67, 67, 67, 1584, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 67, 67, 783, 67, 67, 67, 788, + /* 26025 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 1601, 67, 67, 67, 1604, 67, 1606, 1607, 67, 1472, 0, 1474, 0, + /* 26048 */ 1476, 0, 97, 97, 97, 97, 97, 97, 1614, 97, 97, 97, 97, 45, 45, 1850, 45, 45, 45, 45, 1855, 45, 45, 45, 45, + /* 26073 */ 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1229, 97, 1618, 97, 97, 97, 97, 97, 97, 97, 1625, 97, 97, + /* 26097 */ 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 447, 45, 45, 45, 45, 45, 67, 67, 1633, 97, 97, 0, + /* 26123 */ 97, 97, 97, 97, 97, 97, 97, 97, 1643, 1645, 97, 97, 0, 0, 97, 97, 1784, 97, 97, 97, 0, 0, 97, 97, 0, 97, + /* 26149 */ 1894, 1895, 97, 1897, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 656, 45, 45, 45, 45, 45, 45, 97, 1648, 97, + /* 26173 */ 1650, 1651, 97, 0, 45, 45, 45, 1654, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 658, + /* 26198 */ 45, 45, 45, 45, 664, 45, 45, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 1669, + /* 26223 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1005, 67, 67, 1681, 67, 67, 67, 67, 67, 67, + /* 26248 */ 67, 1686, 67, 67, 67, 67, 67, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 1060, 67, + /* 26273 */ 67, 97, 97, 1713, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1378, 45, 45, 45, 45, 45, 45, 45, + /* 26299 */ 408, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 1549, 45, 45, 45, 45, 45, 97, 97, 1780, 0, 97, 97, 97, 97, + /* 26324 */ 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2027, 2028, 45, 45, 67, 67, 2031, 2032, 67, 45, 45, 1804, 45, + /* 26349 */ 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1917, 67, 67, 67, 67, 67, 67, 67, 1819, 67, 67, 67, + /* 26374 */ 67, 67, 67, 67, 67, 97, 97, 97, 1708, 97, 97, 97, 97, 97, 45, 45, 1862, 67, 67, 67, 67, 67, 67, 67, 67, + /* 26399 */ 67, 67, 67, 67, 67, 497, 67, 67, 67, 1877, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, + /* 26426 */ 97, 97, 1839, 0, 0, 97, 97, 97, 97, 1936, 0, 0, 97, 97, 97, 97, 97, 97, 1943, 1944, 1945, 45, 45, 45, 45, + /* 26451 */ 670, 45, 45, 45, 45, 674, 45, 45, 45, 45, 678, 45, 1948, 45, 1950, 45, 45, 45, 45, 1955, 1956, 1957, 67, + /* 26474 */ 67, 67, 1960, 67, 1962, 67, 67, 67, 67, 1967, 1968, 1969, 97, 0, 0, 0, 97, 97, 1974, 97, 0, 1936, 0, 97, + /* 26498 */ 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1906, 0, 1977, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, + /* 26524 */ 45, 45, 45, 45, 45, 1746, 45, 45, 45, 45, 2011, 67, 67, 2013, 67, 67, 67, 2017, 97, 97, 0, 0, 2021, 97, + /* 26548 */ 8192, 97, 97, 2025, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1916, 67, 67, 67, 67, 0, 94242, 0, 0, 0, + /* 26573 */ 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 140, 45, 45, 45, 1180, 45, 45, 45, 45, 1184, 45, 45, 45, + /* 26595 */ 45, 45, 45, 45, 387, 45, 392, 45, 45, 396, 45, 45, 399, 45, 45, 67, 207, 67, 67, 67, 67, 67, 67, 236, 67, + /* 26620 */ 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 67, 67, 67, 67, 67, 0, 97, 97, 287, + /* 26646 */ 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1656, 1657, 45, 376, + /* 26671 */ 45, 45, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1406, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, + /* 26697 */ 462, 67, 67, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 817, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, + /* 26721 */ 97, 97, 97, 559, 97, 97, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 896, 97, 97, 97, 900, 97, 97, 97, 97, + /* 26746 */ 97, 97, 912, 914, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 391, 45, 45, 45, 45, 45, + /* 26772 */ 45, 45, 45, 713, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 1140, 97, 97, 97, 97, + /* 26797 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 636, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 26823 */ 67, 67, 513, 67, 67, 1363, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 889, 97, 97, 97, + /* 26848 */ 1714, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 926, 45, 45, 45, 45, 45, 45, 45, 45, 672, 45, 45, 45, + /* 26874 */ 45, 45, 45, 45, 45, 686, 45, 45, 45, 45, 45, 45, 45, 45, 944, 45, 45, 45, 45, 45, 45, 45, 45, 1676, 45, + /* 26899 */ 45, 45, 45, 45, 45, 67, 97, 97, 97, 1833, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, + /* 26926 */ 45, 45, 1902, 45, 45, 45, 45, 45, 957, 45, 45, 45, 45, 961, 45, 963, 45, 45, 45, 67, 97, 2034, 0, 97, 97, + /* 26951 */ 97, 97, 97, 2040, 45, 45, 45, 2042, 67, 67, 67, 67, 67, 67, 1574, 67, 67, 67, 67, 67, 1578, 67, 67, 67, + /* 26975 */ 67, 67, 67, 799, 67, 67, 67, 804, 67, 67, 67, 67, 67, 67, 67, 1298, 0, 0, 0, 1304, 0, 0, 0, 1310, 132, + /* 27000 */ 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 1414, 45, 45, 45, 45, 45, 45, + /* 27023 */ 45, 45, 45, 45, 428, 45, 45, 45, 45, 45, 57889, 0, 0, 54074, 54074, 550, 831, 97, 97, 97, 97, 97, 97, 97, + /* 27047 */ 97, 97, 568, 97, 97, 97, 97, 578, 97, 45, 45, 968, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 27072 */ 1228, 45, 45, 67, 67, 67, 67, 67, 25398, 1082, 13112, 1086, 54074, 1090, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, + /* 27096 */ 139, 2158592, 2158592, 2158592, 2404352, 2412544, 67, 67, 67, 67, 1464, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27115 */ 67, 67, 67, 510, 67, 67, 67, 67, 97, 97, 97, 97, 1519, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, + /* 27140 */ 97, 0, 0, 0, 0, 1528, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 45, 1554, 45, 45, 45, + /* 27166 */ 45, 45, 45, 45, 45, 1562, 45, 45, 1565, 45, 45, 45, 45, 683, 45, 45, 45, 687, 45, 45, 692, 45, 45, 45, 45, + /* 27191 */ 45, 1953, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 1568, 67, 67, 67, 67, 67, + /* 27216 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27242 */ 67, 1594, 97, 97, 1649, 97, 97, 97, 0, 45, 45, 1653, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, + /* 27267 */ 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 45, 45, 1670, 45, 1672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 27292 */ 67, 736, 67, 67, 67, 67, 67, 741, 67, 67, 67, 1680, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27317 */ 67, 1074, 67, 67, 67, 1692, 67, 67, 67, 67, 67, 67, 67, 1697, 67, 1699, 67, 67, 67, 67, 67, 67, 1012, 67, + /* 27341 */ 67, 67, 67, 67, 67, 67, 67, 67, 468, 475, 67, 67, 67, 67, 67, 67, 1769, 67, 67, 67, 67, 67, 67, 67, 97, + /* 27366 */ 97, 97, 97, 97, 97, 97, 624, 97, 97, 97, 97, 97, 97, 634, 97, 97, 1792, 97, 97, 97, 97, 97, 97, 97, 45, + /* 27391 */ 45, 45, 45, 45, 45, 45, 958, 45, 45, 45, 45, 45, 45, 964, 45, 150, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 27417 */ 45, 45, 45, 45, 45, 977, 204, 45, 67, 67, 67, 217, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, + /* 27442 */ 67, 67, 67, 67, 67, 67, 67, 67, 271, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 351, + /* 27466 */ 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 27492 */ 45, 1398, 45, 45, 45, 153, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 660, 661, 45, 45, 205, + /* 27517 */ 45, 67, 67, 67, 67, 220, 67, 228, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 280, 94, 0, 0, 67, 67, 67, + /* 27544 */ 67, 67, 272, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 352, 97, 0, 40976, 0, 18, 18, + /* 27568 */ 24, 24, 27, 27, 27, 45, 439, 45, 45, 45, 45, 45, 445, 45, 45, 45, 452, 45, 45, 67, 67, 212, 216, 67, 67, + /* 27593 */ 67, 67, 67, 241, 67, 246, 67, 252, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, + /* 27618 */ 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 1013, 67, 67, 1016, 67, 67, 67, 67, 67, 521, 67, 67, 525, 67, + /* 27642 */ 67, 67, 67, 67, 531, 67, 67, 67, 538, 67, 0, 0, 2046, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, + /* 27668 */ 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 1421, 97, 97, 583, 97, 97, 97, 97, + /* 27693 */ 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, + /* 27720 */ 1384, 97, 618, 97, 97, 622, 97, 97, 97, 97, 97, 628, 97, 97, 97, 635, 97, 18, 131427, 0, 0, 0, 639, 0, + /* 27744 */ 132, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 932, 45, 45, 45, 45, 45, 1544, + /* 27769 */ 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1194, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 45, + /* 27794 */ 45, 45, 45, 67, 67, 45, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, + /* 27819 */ 696, 45, 45, 45, 701, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, + /* 27844 */ 45, 45, 45, 45, 45, 194, 45, 45, 45, 729, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27870 */ 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 805, 67, 67, 67, 67, 67, 67, 67, 1587, 67, 1589, + /* 27895 */ 67, 67, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162968, 0, 0, 67, 67, + /* 27922 */ 67, 67, 67, 814, 816, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1008, 67, 67, 67, 67, 67, 67, + /* 27945 */ 67, 67, 67, 67, 67, 1020, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, + /* 27972 */ 45, 45, 45, 45, 67, 67, 67, 67, 1429, 67, 1430, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 67, 67, 67, + /* 27997 */ 67, 67, 67, 67, 67, 67, 67, 518, 1076, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, + /* 28023 */ 28809, 0, 139, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1102, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1124, + /* 28048 */ 97, 1126, 97, 97, 1114, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 97, 1156, + /* 28072 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 97, 97, 1170, 97, 97, 97, 97, 0, 921, 0, + /* 28098 */ 0, 0, 0, 0, 0, 45, 45, 45, 45, 1532, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 45, 172, 45, 45, 45, 45, 45, + /* 28124 */ 45, 45, 45, 45, 45, 706, 45, 45, 709, 45, 45, 1177, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28149 */ 45, 45, 1202, 45, 1204, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 45, 45, 1232, 45, 45, + /* 28173 */ 45, 45, 45, 45, 45, 67, 1237, 67, 67, 67, 67, 67, 67, 1053, 1054, 67, 67, 67, 67, 67, 67, 1061, 67, 67, + /* 28197 */ 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1289, 67, 67, 67, 1292, 97, 97, 97, 97, 1339, 97, 97, 97, 97, + /* 28221 */ 97, 97, 1344, 97, 97, 97, 97, 45, 1849, 45, 1851, 45, 45, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, + /* 28246 */ 726, 45, 1385, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1188, 45, 45, 1401, 1402, 45, + /* 28270 */ 45, 45, 45, 1405, 45, 45, 45, 45, 45, 45, 45, 45, 1752, 45, 45, 45, 45, 45, 67, 67, 1410, 45, 45, 45, + /* 28294 */ 1413, 45, 1415, 45, 45, 45, 45, 45, 45, 1419, 45, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 67, 67, 67, + /* 28318 */ 67, 67, 67, 67, 97, 97, 2019, 0, 97, 67, 67, 67, 1452, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, + /* 28343 */ 67, 67, 67, 1259, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 1460, 67, 1462, 67, 67, 67, 67, 67, 67, 1466, 67, + /* 28367 */ 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 67, 67, 0, 1300, 0, 0, 0, 1306, 0, 0, 0, 97, 97, 97, + /* 28394 */ 1506, 97, 97, 97, 97, 97, 97, 97, 97, 1512, 97, 97, 97, 0, 1728, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 28419 */ 97, 901, 97, 97, 97, 97, 1515, 97, 1517, 97, 97, 97, 97, 97, 97, 1521, 97, 97, 97, 97, 97, 97, 0, 45, + /* 28443 */ 1652, 45, 45, 45, 1655, 45, 45, 45, 45, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28467 */ 1552, 1553, 45, 45, 45, 1556, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 45, 67, 67, + /* 28492 */ 67, 67, 1572, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 67, 1605, 67, 67, 67, 0, 67, + /* 28517 */ 1582, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1580, 67, 67, 1596, 67, 67, 67, 67, 67, 67, + /* 28542 */ 67, 67, 67, 67, 67, 67, 67, 0, 542, 0, 544, 67, 67, 67, 67, 1759, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 28568 */ 67, 533, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 1777, 97, 97, 97, + /* 28593 */ 1793, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 998, 45, 45, 1001, 1002, 45, 45, 67, 67, 45, 1861, + /* 28617 */ 45, 67, 67, 67, 67, 67, 67, 67, 67, 1871, 67, 1873, 1874, 67, 0, 97, 45, 67, 0, 97, 45, 67, 16384, 97, 45, + /* 28642 */ 67, 97, 0, 0, 0, 1473, 0, 1082, 0, 0, 0, 1475, 0, 1086, 0, 0, 0, 1477, 1876, 67, 97, 97, 97, 97, 97, 1883, + /* 28668 */ 0, 1885, 97, 97, 97, 1889, 0, 0, 0, 286, 0, 0, 0, 286, 0, 2367488, 2158592, 2158592, 2158592, 2158592, + /* 28688 */ 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 126, 126, 126, 2053, 0, 2055, 45, 67, 0, 97, 45, 67, 0, 97, + /* 28711 */ 45, 67, 97, 0, 0, 97, 97, 97, 2039, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, + /* 28737 */ 67, 67, 1246, 67, 67, 1249, 1250, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, + /* 28759 */ 45, 45, 141, 45, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 1189, 45, 45, + /* 28784 */ 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 191, 45, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28810 */ 45, 1753, 45, 45, 45, 67, 67, 45, 45, 67, 208, 67, 67, 67, 222, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1764, + /* 28835 */ 67, 67, 67, 67, 67, 67, 67, 258, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, + /* 28859 */ 288, 97, 97, 97, 302, 97, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 338, 97, 97, 97, + /* 28884 */ 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, + /* 28908 */ 370, 45, 45, 45, 45, 716, 45, 45, 45, 45, 45, 722, 45, 45, 45, 45, 45, 45, 1912, 67, 67, 67, 67, 67, 67, + /* 28933 */ 67, 67, 67, 819, 67, 67, 25398, 542, 13112, 544, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 28957 */ 45, 45, 1409, 45, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, + /* 28982 */ 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 1274, 67, + /* 29007 */ 67, 67, 1279, 67, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 553, 97, + /* 29028 */ 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1138, 97, 97, 97, 97, 617, 97, 97, 97, 97, + /* 29053 */ 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 0, 1834, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, + /* 29079 */ 353, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 29105 */ 45, 724, 45, 45, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 67, + /* 29131 */ 67, 747, 748, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1302, 0, 0, 0, 1308, 0, 67, 794, + /* 29157 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 97, 97, 97, 845, 846, 97, 97, 97, 97, + /* 29182 */ 853, 97, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 97, 892, 97, 97, 97, 97, 97, 97, + /* 29208 */ 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 45, 992, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, + /* 29234 */ 67, 1239, 67, 67, 67, 1063, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1301, 0, 0, 0, + /* 29259 */ 1307, 0, 0, 97, 1141, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1152, 97, 97, 0, 0, 97, 97, 2001, 0, 97, + /* 29285 */ 2003, 97, 97, 97, 45, 45, 45, 1739, 45, 45, 45, 1742, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1157, 97, 97, + /* 29309 */ 97, 97, 97, 1162, 97, 97, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 1151, 97, 97, 97, 1253, 67, 67, 67, + /* 29333 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 539, 45, 1423, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1431, + /* 29358 */ 67, 67, 67, 67, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 1700, 67, 1702, 67, 67, 1439, 67, 67, 67, 67, 67, + /* 29382 */ 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 97, 97, 1492, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 29408 */ 97, 611, 97, 97, 1703, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 852, 97, 97, 97, 97, + /* 29433 */ 97, 97, 45, 1949, 45, 1951, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1961, 67, 0, 97, 45, 67, 0, 97, 2060, + /* 29458 */ 2061, 0, 2062, 45, 67, 97, 0, 0, 2036, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 223, 67, 67, + /* 29483 */ 237, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, + /* 29508 */ 1963, 67, 67, 67, 97, 97, 97, 97, 0, 1972, 0, 97, 97, 97, 1975, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, + /* 29533 */ 931, 45, 45, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 45, 1989, 67, 67, 67, 67, 67, + /* 29558 */ 67, 67, 67, 67, 67, 67, 1996, 97, 18, 131427, 0, 0, 360, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, + /* 29582 */ 29315, 0, 0, 0, 0, 45, 45, 930, 45, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, + /* 29608 */ 1998, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1985, 45, 1986, 45, 45, 45, 156, 45, + /* 29633 */ 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 679, 131427, 0, 358, 0, 0, 362, 0, + /* 29658 */ 365, 28809, 367, 139, 45, 45, 45, 45, 45, 381, 45, 45, 45, 45, 45, 45, 45, 45, 45, 400, 45, 45, 419, 45, + /* 29682 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 436, 67, 67, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, + /* 29708 */ 67, 67, 820, 67, 25398, 542, 13112, 544, 67, 67, 522, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 67, + /* 29732 */ 0, 1299, 0, 0, 0, 1305, 0, 0, 0, 97, 97, 619, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 97, 1105, + /* 29758 */ 97, 97, 97, 97, 1109, 97, 97, 97, 67, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 0, 97, + /* 29784 */ 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2041, 67, 67, 67, 67, + /* 29810 */ 67, 780, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 97, 97, 97, 878, 97, 97, 97, 97, + /* 29836 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 0, 45, 979, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, + /* 29862 */ 45, 45, 1198, 45, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 29887 */ 470, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1094, 0, 0, 0, 1092, + /* 29912 */ 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1486, 97, 1489, 97, 97, 97, 1117, 97, 97, 97, 97, + /* 29937 */ 1122, 97, 97, 97, 97, 97, 97, 97, 1146, 97, 97, 97, 97, 97, 97, 97, 97, 881, 97, 97, 97, 886, 97, 97, 97, + /* 29962 */ 1311, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1615, 97, 97, 97, 97, 97, 1619, 97, 97, 97, 97, + /* 29989 */ 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 97, 1847, 97, 45, 45, 45, 45, 1852, 45, 45, 45, 45, 45, 45, 45, + /* 30014 */ 1235, 45, 45, 45, 67, 67, 67, 67, 67, 1868, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1882, 0, + /* 30039 */ 0, 0, 97, 97, 97, 97, 0, 1891, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1929, 0, 0, 97, 97, 97, 97, 97, 97, + /* 30066 */ 45, 1900, 45, 1901, 45, 45, 45, 1905, 45, 67, 2054, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, + /* 30091 */ 97, 2037, 2038, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1774, + /* 30115 */ 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 142, 45, 45, + /* 30138 */ 45, 1412, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 157, 45, 45, 171, 45, + /* 30163 */ 45, 45, 182, 45, 45, 45, 45, 200, 45, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 45, 45, 45, + /* 30188 */ 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 1214, 45, 45, 45, 67, 209, 67, 67, 67, + /* 30213 */ 224, 67, 67, 238, 67, 67, 67, 249, 67, 0, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 97, 0, 0, 1937, + /* 30238 */ 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1741, 45, 45, 45, 45, 45, 45, 67, 67, 67, 267, 67, 67, 67, + /* 30264 */ 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 289, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 329, 97, + /* 30288 */ 97, 0, 0, 97, 1783, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2026, 45, 45, 45, 45, 67, 2030, 67, + /* 30314 */ 67, 67, 67, 67, 67, 1041, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1044, 67, 67, 67, 67, 67, 67, 97, 97, 347, + /* 30339 */ 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 30365 */ 45, 45, 45, 1420, 45, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 840, 67, 1007, + /* 30388 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 67, 67, 67, 1052, 67, 67, 67, + /* 30414 */ 67, 67, 67, 67, 67, 67, 67, 1031, 67, 67, 67, 67, 67, 97, 97, 97, 1101, 97, 97, 97, 97, 97, 97, 97, 97, + /* 30439 */ 97, 97, 97, 97, 592, 97, 97, 97, 1190, 45, 45, 45, 45, 45, 1195, 45, 1197, 45, 45, 45, 45, 1201, 45, 45, + /* 30463 */ 45, 45, 1952, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 250, 67, 67, 67, 1255, 67, 1257, 67, + /* 30488 */ 67, 67, 67, 1261, 67, 67, 67, 67, 67, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 0, 24851, 12565, 0, 0, + /* 30513 */ 0, 0, 28809, 53532, 67, 67, 1267, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1696, 67, + /* 30537 */ 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 1281, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 67, + /* 30563 */ 67, 67, 67, 67, 67, 1070, 67, 67, 67, 67, 67, 1335, 97, 1337, 97, 97, 97, 97, 1341, 97, 97, 97, 97, 97, + /* 30587 */ 97, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 1347, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, + /* 30612 */ 1361, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 544, 0, 550, 0, 2158592, 2158592, + /* 30635 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2158592, 2990080, + /* 30646 */ 2158592, 2158592, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, + /* 30657 */ 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 53530, 97, 97, 97, 1365, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 30681 */ 97, 97, 608, 97, 97, 97, 45, 45, 1424, 45, 1425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1058, 67, 67, + /* 30706 */ 67, 67, 45, 1555, 45, 45, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 45, 45, 45, 45, 67, 67, + /* 30731 */ 1570, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 1595, 67, 67, 1597, 67, 67, 67, 67, + /* 30756 */ 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, + /* 30778 */ 2412544, 97, 97, 97, 1636, 97, 97, 97, 1639, 97, 97, 1641, 97, 97, 97, 97, 97, 97, 1173, 0, 921, 0, 0, 0, + /* 30802 */ 0, 0, 0, 45, 67, 67, 67, 1693, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 67, 67, 1773, 67, 97, + /* 30828 */ 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 880, 97, + /* 30854 */ 97, 97, 97, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 1860, 45, 45, 67, 67, 1865, 67, 67, 67, 67, + /* 30879 */ 1870, 67, 67, 67, 67, 1875, 67, 67, 97, 97, 1880, 97, 97, 0, 0, 0, 97, 97, 1888, 97, 0, 0, 0, 1938, 97, + /* 30904 */ 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1854, 45, 45, 45, 45, 45, 45, 45, 1909, 45, 45, 1911, 67, 67, 67, + /* 30929 */ 67, 67, 67, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 1924, 97, 97, 97, 97, 97, 0, 0, 0, + /* 30955 */ 97, 97, 97, 97, 97, 1898, 45, 45, 45, 45, 45, 45, 1904, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, + /* 30980 */ 16384, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1724, 2008, 2009, 45, 45, 67, 67, 67, + /* 31004 */ 2014, 2015, 67, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 31030 */ 45, 45, 45, 45, 2022, 0, 2023, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1869, 67, 67, 67, + /* 31055 */ 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 147, 151, 154, 45, 162, + /* 31078 */ 45, 45, 176, 178, 181, 45, 45, 45, 192, 196, 45, 45, 45, 45, 2012, 67, 67, 67, 67, 67, 67, 2018, 97, 0, 0, + /* 31103 */ 97, 1978, 97, 97, 97, 1982, 45, 45, 45, 45, 45, 45, 45, 45, 45, 972, 973, 45, 45, 45, 45, 45, 67, 259, + /* 31127 */ 263, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 294, 298, 301, 97, 309, 97, + /* 31150 */ 97, 323, 325, 328, 97, 97, 97, 97, 97, 560, 97, 97, 97, 569, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, + /* 31175 */ 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 339, 343, 97, 97, + /* 31201 */ 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, + /* 31227 */ 67, 519, 97, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 616, 45, 649, 45, 45, 45, 45, 45, + /* 31252 */ 654, 45, 45, 45, 45, 45, 45, 45, 45, 1393, 45, 45, 45, 45, 45, 45, 45, 45, 1209, 45, 45, 45, 45, 45, 45, + /* 31277 */ 45, 67, 763, 67, 67, 67, 67, 67, 67, 67, 67, 770, 67, 67, 67, 774, 67, 0, 2045, 97, 97, 97, 97, 45, 45, + /* 31302 */ 67, 67, 0, 0, 97, 97, 45, 45, 45, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 213, 67, 219, 67, + /* 31328 */ 67, 232, 67, 242, 67, 247, 67, 67, 67, 779, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, + /* 31353 */ 67, 67, 67, 67, 811, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, + /* 31375 */ 54074, 550, 0, 97, 834, 97, 97, 97, 97, 97, 839, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, + /* 31399 */ 29315, 367, 645, 97, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 868, 97, 97, 97, 872, 97, 97, 877, 97, 97, + /* 31423 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 97, 97, 97, 97, 909, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31449 */ 97, 0, 0, 0, 18, 18, 24, 24, 27, 27, 27, 1036, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 31476 */ 1047, 67, 67, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1033, 67, 67, 67, 97, 97, 1130, + /* 31500 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 67, 67, 67, 1295, 67, 67, 67, 0, 0, 0, 0, + /* 31527 */ 0, 0, 0, 0, 0, 97, 1317, 97, 97, 97, 97, 97, 97, 1375, 97, 97, 97, 0, 0, 0, 45, 1379, 45, 45, 45, 45, 45, + /* 31554 */ 45, 422, 45, 45, 45, 429, 431, 45, 45, 45, 45, 0, 1090, 0, 0, 97, 1479, 97, 97, 97, 97, 97, 97, 97, 97, + /* 31579 */ 97, 97, 1357, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1716, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1723, 0, 921, + /* 31604 */ 29315, 0, 0, 0, 0, 45, 929, 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45, 960, 45, + /* 31630 */ 45, 45, 45, 45, 45, 97, 97, 97, 1738, 45, 45, 45, 45, 45, 45, 45, 1743, 45, 45, 45, 45, 166, 45, 45, 45, + /* 31655 */ 45, 184, 186, 45, 45, 197, 45, 45, 97, 1779, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 18, + /* 31680 */ 131427, 0, 638, 0, 0, 0, 0, 362, 0, 640, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, + /* 31705 */ 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1803, 45, 45, 45, 45, 45, 1809, 45, 45, 45, 67, 67, 67, + /* 31729 */ 1814, 67, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, + /* 31755 */ 0, 0, 67, 67, 67, 1818, 67, 67, 67, 67, 67, 1824, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, + /* 31782 */ 1890, 0, 1829, 97, 97, 0, 0, 97, 97, 1836, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1981, 45, 45, 45, 45, 45, 45, + /* 31808 */ 45, 45, 45, 1987, 1845, 97, 97, 97, 45, 45, 45, 45, 45, 1853, 45, 45, 45, 1857, 45, 45, 45, 67, 1864, 67, + /* 31832 */ 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 1710, 1711, 67, 67, 97, 97, 97, 97, + /* 31857 */ 97, 0, 0, 0, 1886, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1838, 0, 0, 0, 97, 1843, 97, 0, 1893, 97, 97, 97, 97, + /* 31884 */ 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, + /* 31910 */ 1931, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 67, 2044, + /* 31935 */ 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1660, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 31962 */ 45, 45, 453, 45, 455, 67, 67, 67, 67, 268, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, + /* 31986 */ 348, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 359, 0, 0, 362, 0, 365, 28809, 367, + /* 32010 */ 139, 45, 45, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 695, 45, 45, 45, 45, 45, 45, 45, + /* 32035 */ 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 0, 921, 29315, 0, 925, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 32061 */ 1811, 45, 67, 67, 67, 67, 67, 67, 1037, 67, 1039, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1277, + /* 32085 */ 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1095, 0, 0, 0, 1096, 97, 97, 97, 97, + /* 32110 */ 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 97, 1131, 97, 1133, 97, 97, 97, 97, 97, 97, 97, + /* 32135 */ 97, 97, 97, 1370, 97, 97, 97, 97, 97, 1312, 0, 0, 0, 0, 1096, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1327, + /* 32161 */ 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1830, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1896, 97, + /* 32187 */ 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 45, 133, 94242, 0, 0, 0, 38, 102439, 0, + /* 32212 */ 0, 106538, 98347, 28809, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 401, 45, 45, 158, + /* 32235 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1200, 45, 45, 45, 45, 206, 67, 67, 67, 67, 67, 225, + /* 32260 */ 67, 67, 67, 67, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 832, 97, + /* 32284 */ 97, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1083, 13112, + /* 32307 */ 1087, 54074, 1091, 0, 0, 0, 0, 0, 0, 1316, 0, 831, 97, 97, 97, 97, 97, 97, 97, 1174, 921, 0, 1175, 0, 0, + /* 32332 */ 0, 0, 45, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 148, 67, 67, 264, 67, 67, + /* 32356 */ 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 295, 97, 97, 97, 97, 313, 97, 97, 97, 97, + /* 32380 */ 331, 333, 97, 18, 131427, 356, 638, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 45, 45, 1530, 45, 45, 45, 45, + /* 32405 */ 45, 45, 45, 45, 45, 45, 45, 45, 988, 45, 45, 45, 97, 344, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, + /* 32431 */ 27, 27, 402, 404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 67, 438, 45, 45, 45, 45, + /* 32456 */ 45, 45, 45, 45, 449, 450, 45, 45, 45, 67, 67, 214, 218, 221, 67, 229, 67, 67, 243, 245, 248, 67, 67, 67, + /* 32480 */ 67, 67, 488, 490, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1071, 67, 1073, 67, 67, 67, 67, 67, 524, 67, + /* 32505 */ 67, 67, 67, 67, 67, 67, 67, 535, 536, 67, 67, 67, 67, 67, 67, 1683, 1684, 67, 67, 67, 67, 1688, 1689, 67, + /* 32529 */ 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 97, 97, 97, + /* 32554 */ 585, 587, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 97, 97, 97, 97, 97, 97, 97, 621, 97, 97, 97, + /* 32579 */ 97, 97, 97, 97, 97, 632, 633, 97, 97, 0, 0, 1782, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 712, 45, 45, + /* 32605 */ 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 725, 45, 45, 45, 163, 167, 173, 177, 45, 45, 45, 45, 45, 193, 45, + /* 32630 */ 45, 45, 45, 982, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 1558, 45, 1560, 45, 45, 45, 45, 45, 45, + /* 32655 */ 45, 45, 704, 705, 45, 45, 45, 45, 45, 45, 45, 45, 731, 45, 45, 45, 67, 67, 67, 67, 67, 739, 67, 67, 67, + /* 32680 */ 67, 67, 67, 273, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 67, 67, 67, 764, 67, 67, 67, 67, 67, 67, 67, + /* 32704 */ 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 812, 67, 67, 67, 67, 818, 67, 67, 67, 25398, 542, 13112, + /* 32728 */ 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 837, 97, 97, 97, 97, 97, 602, 97, 97, 97, 97, + /* 32752 */ 97, 97, 97, 97, 97, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 97, 97, 862, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 32778 */ 97, 97, 1627, 97, 97, 97, 0, 97, 97, 97, 97, 910, 97, 97, 97, 97, 916, 97, 97, 97, 0, 0, 0, 97, 97, 1940, + /* 32804 */ 97, 97, 1942, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 395, 45, 45, 45, 45, 966, 45, 969, 45, 45, 45, + /* 32829 */ 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, + /* 32855 */ 45, 45, 67, 67, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, + /* 32880 */ 67, 67, 67, 1040, 67, 1042, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 97, 1706, 97, 97, 97, 1709, 97, 97, 97, + /* 32904 */ 67, 67, 67, 67, 1051, 67, 67, 67, 67, 67, 1057, 67, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 1446, 67, 67, + /* 32928 */ 67, 67, 67, 67, 67, 1297, 0, 0, 0, 1303, 0, 0, 0, 1309, 67, 67, 67, 67, 1079, 25398, 0, 13112, 0, 54074, + /* 32952 */ 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 32968 */ 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 1098, 97, 97, 97, 97, 97, + /* 32983 */ 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 97, 97, + /* 33007 */ 1134, 97, 1136, 97, 1139, 97, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, + /* 33032 */ 1176, 0, 646, 45, 67, 67, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 67, 97, + /* 33057 */ 1348, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1127, 97, 67, 1569, 67, 67, 67, 67, 67, 67, + /* 33082 */ 67, 67, 67, 67, 67, 67, 67, 67, 1448, 1449, 67, 1816, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, + /* 33106 */ 1827, 97, 97, 0, 1781, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 1831, 0, 0, 97, 97, 97, 97, + /* 33132 */ 97, 0, 0, 0, 97, 97, 97, 1980, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45, 97, + /* 33158 */ 1846, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 45, 45, 2010, 45, 67, + /* 33183 */ 67, 67, 67, 67, 2016, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 2007, 0, 94242, 0, 0, + /* 33209 */ 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 143, 45, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, + /* 33232 */ 45, 45, 45, 67, 1813, 67, 67, 1815, 45, 45, 67, 210, 67, 67, 67, 67, 67, 67, 239, 67, 67, 67, 67, 67, 67, + /* 33257 */ 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1445, 67, 67, 67, 67, 67, 67, 97, 97, 290, 97, 97, 97, 97, + /* 33282 */ 97, 97, 319, 97, 97, 97, 97, 97, 97, 303, 97, 97, 317, 97, 97, 97, 97, 97, 97, 305, 97, 97, 97, 97, 97, + /* 33307 */ 97, 97, 97, 97, 899, 97, 97, 97, 97, 97, 97, 375, 45, 45, 45, 379, 45, 45, 390, 45, 45, 394, 45, 45, 45, + /* 33332 */ 45, 45, 443, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 461, 67, 67, 67, 465, 67, 67, 476, 67, + /* 33357 */ 67, 480, 67, 67, 67, 67, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, + /* 33382 */ 500, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 97, 97, 97, 558, 97, 97, 97, 562, + /* 33407 */ 97, 97, 573, 97, 97, 577, 97, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, + /* 33432 */ 1638, 97, 97, 97, 97, 97, 97, 97, 97, 1646, 597, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 33457 */ 97, 1334, 45, 681, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 1399, 45, 45, + /* 33481 */ 730, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1434, 67, 67, 67, 67, 67, 67, 750, 67, 67, + /* 33506 */ 67, 67, 67, 67, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 45, 45, 993, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 33532 */ 45, 45, 67, 67, 1238, 67, 67, 1006, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, + /* 33556 */ 1048, 1049, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, + /* 33580 */ 67, 67, 67, 1291, 67, 97, 97, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 920, 97, + /* 33605 */ 97, 1142, 1143, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 97, 97, 97, 1158, 97, 97, 97, 1161, + /* 33629 */ 97, 97, 97, 97, 1166, 97, 97, 97, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1328, 97, 97, 97, + /* 33654 */ 97, 97, 97, 97, 45, 1218, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 67, + /* 33679 */ 67, 67, 67, 67, 1269, 67, 67, 67, 67, 67, 67, 67, 67, 1278, 67, 67, 67, 67, 67, 67, 1761, 67, 67, 67, 67, + /* 33704 */ 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 97, 97, 1349, 97, 97, 97, 97, 97, 97, 97, 97, 1358, 97, + /* 33729 */ 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 926, 0, 0, 0, 45, 45, 1411, 45, + /* 33755 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1754, 45, 45, 67, 67, 1301, 0, 1307, 0, 1313, 97, 97, + /* 33780 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 21054, 97, 97, 97, 97, 67, 1757, 67, 67, 67, 1760, 67, 67, 67, 67, 67, + /* 33805 */ 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 1778, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, + /* 33832 */ 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 67, 67, 67, 67, + /* 33857 */ 67, 1820, 67, 1822, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1933, 97, 1892, 97, 97, 97, 97, + /* 33882 */ 97, 97, 1899, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, + /* 33907 */ 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 673, 45, 45, + /* 33932 */ 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1925, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 623, 97, 97, + /* 33958 */ 97, 97, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1796, 97, 45, 45, 45, 45, 45, 45, + /* 33984 */ 45, 970, 45, 45, 45, 45, 45, 45, 45, 45, 1417, 45, 45, 45, 45, 45, 45, 45, 67, 1964, 67, 67, 97, 97, 97, + /* 34009 */ 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1721, 97, 97, 0, 0, 1997, 97, 0, 0, 2000, 97, 97, + /* 34036 */ 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 733, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, + /* 34062 */ 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 144, 45, 45, 45, 1805, 45, + /* 34084 */ 1807, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 231, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, + /* 34109 */ 0, 0, 28809, 53531, 45, 45, 67, 211, 67, 67, 67, 67, 230, 234, 240, 244, 67, 67, 67, 67, 67, 67, 464, 67, + /* 34133 */ 67, 67, 67, 67, 67, 479, 67, 67, 67, 260, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, + /* 34157 */ 97, 97, 291, 97, 97, 97, 97, 310, 314, 320, 324, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, + /* 34182 */ 97, 97, 1355, 97, 97, 97, 97, 97, 97, 1362, 340, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, + /* 34207 */ 27, 131427, 0, 0, 360, 0, 362, 0, 365, 28809, 367, 139, 369, 45, 45, 45, 374, 67, 67, 460, 67, 67, 67, 67, + /* 34231 */ 466, 67, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 67, 67, 67, 67, 67, 67, 487, 67, 67, 67, 67, 67, 67, + /* 34257 */ 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 67, 1772, 67, 67, 97, 97, 97, 97, 97, 97, 97, 0, 921, 922, 1175, + /* 34282 */ 0, 0, 0, 0, 45, 67, 502, 67, 67, 67, 67, 67, 67, 67, 508, 67, 67, 67, 515, 517, 67, 67, 67, 67, 67, 97, + /* 34308 */ 97, 97, 97, 97, 0, 0, 0, 1932, 97, 97, 0, 1999, 97, 97, 97, 0, 97, 97, 2004, 2005, 97, 45, 45, 45, 45, + /* 34333 */ 1193, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 67, 24850, 24850, 12564, 12564, 0, + /* 34356 */ 57889, 0, 0, 0, 53531, 53531, 367, 286, 552, 97, 97, 97, 97, 97, 1377, 0, 0, 45, 45, 45, 45, 45, 45, 45, + /* 34380 */ 45, 655, 45, 45, 45, 45, 45, 45, 45, 97, 97, 557, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 97, 97, + /* 34405 */ 1135, 97, 97, 97, 97, 97, 97, 97, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, + /* 34430 */ 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 1319, 97, 97, 97, + /* 34457 */ 0, 97, 97, 97, 97, 97, 97, 1733, 97, 97, 97, 97, 97, 97, 1340, 97, 97, 97, 1343, 97, 97, 1345, 97, 1346, + /* 34481 */ 97, 599, 97, 97, 97, 97, 97, 97, 97, 605, 97, 97, 97, 612, 614, 97, 97, 97, 97, 97, 1794, 97, 97, 97, 45, + /* 34506 */ 45, 45, 45, 45, 45, 45, 1207, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 745, 67, 67, 67, 67, 751, 67, 67, 67, + /* 34531 */ 67, 67, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 762, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, + /* 34556 */ 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 777, 67, 67, 781, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 34581 */ 67, 1592, 1593, 67, 67, 97, 843, 97, 97, 97, 97, 849, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1510, 97, 97, + /* 34605 */ 97, 97, 97, 97, 97, 860, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1797, 45, 45, 45, 45, + /* 34630 */ 1801, 45, 97, 875, 97, 97, 879, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 991, + /* 34655 */ 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 215, 67, 67, 67, 67, 233, 67, 67, 67, 67, + /* 34680 */ 251, 253, 1022, 67, 67, 67, 1026, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 1038, 67, 67, 67, + /* 34704 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 67, 1064, 67, 67, 67, 1067, 67, 67, 67, 67, + /* 34729 */ 1072, 67, 67, 67, 67, 67, 67, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2158592, 2158592, + /* 34750 */ 2158592, 2158592, 2158592, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 1096, 0, 921, 29315, + /* 34771 */ 0, 0, 0, 0, 928, 45, 45, 45, 45, 45, 934, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 198, 45, + /* 34797 */ 45, 45, 378, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 398, 45, 97, 97, 1116, 97, 97, 97, 1120, 97, 97, 97, + /* 34822 */ 97, 97, 97, 97, 97, 97, 1147, 1148, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 97, 1132, 97, 97, 97, 97, 97, + /* 34846 */ 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 0, 45, 1178, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1185, 45, + /* 34871 */ 45, 45, 45, 441, 45, 45, 45, 45, 45, 45, 451, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, + /* 34897 */ 67, 1260, 67, 67, 67, 1263, 67, 67, 1265, 1203, 45, 45, 1205, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, + /* 34920 */ 45, 1216, 67, 1266, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 492, 67, 67, 67, 67, + /* 34945 */ 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 481, 67, 45, 1386, 45, 1389, 45, 45, 45, 45, 1394, 45, 45, 45, + /* 34969 */ 1397, 45, 45, 45, 45, 995, 45, 997, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1915, 67, 67, 67, 67, 67, + /* 34994 */ 1422, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1433, 67, 1436, 67, 67, 67, 67, 1441, 67, 67, 67, + /* 35018 */ 1444, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 97, 1494, 97, + /* 35041 */ 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, + /* 35066 */ 97, 97, 67, 67, 67, 1571, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, + /* 35090 */ 1583, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, + /* 35115 */ 67, 1056, 67, 67, 67, 67, 67, 67, 97, 1634, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1125, + /* 35140 */ 97, 97, 97, 1647, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, + /* 35166 */ 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 1658, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 35191 */ 1668, 1712, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 1835, 97, 97, 97, 97, 0, 0, 0, 97, + /* 35217 */ 97, 1844, 97, 97, 1726, 0, 97, 97, 97, 97, 97, 1732, 97, 1734, 97, 97, 97, 97, 97, 300, 97, 308, 97, 97, + /* 35241 */ 97, 97, 97, 97, 97, 97, 866, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1758, 67, 67, 67, 1762, 67, 67, 67, + /* 35266 */ 67, 67, 67, 67, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1771, 67, 67, 67, 97, 97, 97, + /* 35291 */ 97, 97, 1776, 97, 97, 97, 97, 297, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 67, + /* 35316 */ 67, 67, 1966, 97, 97, 97, 1970, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 0, 0, + /* 35342 */ 97, 97, 97, 1837, 97, 0, 1840, 1841, 97, 97, 97, 1988, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1994, 1995, + /* 35366 */ 67, 97, 97, 97, 97, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 917, 97, 97, 0, 0, 0, 67, 67, 265, + /* 35392 */ 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 345, 97, 97, 97, 97, 0, 40976, 0, 18, 18, + /* 35416 */ 24, 24, 27, 27, 27, 131427, 0, 0, 0, 361, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 671, 45, 45, + /* 35440 */ 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 414, 45, 45, 45, 45, 377, 45, 45, 45, 386, 45, 45, 45, 45, + /* 35465 */ 45, 45, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 433, 45, 45, 45, 67, 67, 67, + /* 35490 */ 67, 67, 463, 67, 67, 67, 472, 67, 67, 67, 67, 67, 67, 67, 527, 67, 67, 67, 67, 67, 67, 537, 67, 540, + /* 35514 */ 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 97, 97, 97, 1119, 97, 97, + /* 35535 */ 97, 97, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 564, 97, 97, 97, 97, 97, 97, 97, + /* 35560 */ 637, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 927, 45, 45, 45, + /* 35585 */ 45, 45, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 67, 67, 67, 67, 1240, 45, 697, 45, 45, 45, 45, 45, 45, 45, + /* 35610 */ 45, 45, 45, 708, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 45, 45, 384, 45, 45, 45, 45, + /* 35635 */ 45, 45, 45, 45, 45, 1210, 45, 45, 45, 45, 45, 45, 67, 67, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 35661 */ 67, 67, 1470, 67, 67, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, + /* 35685 */ 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1164, 97, 97, 97, 67, 67, 67, 1025, 67, 67, 67, 67, + /* 35710 */ 67, 67, 67, 67, 67, 67, 67, 67, 1687, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, + /* 35735 */ 0, 0, 0, 1097, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1450, 45, 45, 1388, 45, + /* 35760 */ 1390, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1236, 67, 67, 67, 67, 67, 1437, 67, 67, 67, 67, 67, 67, + /* 35785 */ 67, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 1490, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + /* 35810 */ 97, 1503, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1930, 0, 97, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, + /* 35836 */ 97, 97, 97, 97, 858, 67, 67, 1965, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 1719, 97, 97, + /* 35862 */ 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 1382, 45, 1383, 45, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, + /* 35888 */ 45, 45, 45, 45, 45, 1563, 45, 45, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, + /* 35913 */ 28809, 53531, 341, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 1099, 97, 97, 97, 97, + /* 35937 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1333, 97, 1230, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, + /* 35962 */ 67, 67, 67, 67, 1992, 67, 1993, 67, 67, 67, 97, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 35987 */ 45, 45, 45, 1665, 45, 45, 45, 45, 45, 131427, 357, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, + /* 36011 */ 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 416, 45, 45, 45, 440, 45, 45, 45, 45, + /* 36036 */ 45, 45, 45, 45, 45, 45, 45, 67, 67, 1990, 67, 1991, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1707, 97, 97, 97, + /* 36061 */ 97, 97, 97, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 67, 67, 67, + /* 36086 */ 526, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1030, 67, 1032, 67, 67, 67, 67, 598, 97, 97, 97, 97, 97, 97, + /* 36111 */ 97, 97, 97, 97, 97, 97, 97, 97, 97, 1632, 0, 921, 29315, 923, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 36137 */ 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 425, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, + /* 36161 */ 13112, 0, 54074, 0, 0, 1093, 0, 0, 0, 0, 0, 97, 1609, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1369, 97, 97, + /* 36186 */ 97, 1372, 97, 97, 67, 67, 266, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 346, 97, 97, + /* 36210 */ 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + /* 36236 */ 45, 45, 1677, 45, 45, 45, 45, 67, 45, 45, 954, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1545, + /* 36261 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 67, 456, 67, 67, 67, 67, 67, 1270, 67, 67, 67, + /* 36286 */ 67, 67, 67, 67, 67, 67, 67, 1069, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1350, 97, 97, 97, 97, 97, 97, 97, + /* 36311 */ 97, 97, 97, 97, 97, 1524, 97, 97, 97, 97, 97, 97, 97, 1376, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1559, + /* 36337 */ 1561, 45, 45, 45, 1564, 45, 1566, 1567, 45, 67, 67, 67, 67, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, + /* 36361 */ 67, 1247, 67, 67, 67, 67, 67, 1252, 97, 1725, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, + /* 36386 */ 97, 1630, 0, 0, 94242, 0, 0, 0, 2211840, 0, 1118208, 0, 0, 0, 0, 2158592, 2158731, 2158592, 2158592, + /* 36405 */ 2158592, 3117056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 36416 */ 2158592, 2158592, 2158592, 3018752, 2158592, 3043328, 2158592, 2158592, 2158592, 2158592, 3080192, + /* 36427 */ 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158878, 2158592, 2158592, + /* 36438 */ 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 36449 */ 2158592, 2605056, 2158592, 2158592, 2207744, 0, 542, 0, 544, 0, 0, 2166784, 0, 0, 0, 550, 0, 0, 2158592, + /* 36468 */ 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, + /* 36479 */ 2867200, 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, + /* 36493 */ 0, 2211840, 0, 0, 1130496, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, + /* 36510 */ 139, 0, 0, 0, 139, 0, 2367488, 2207744, 0, 0, 0, 0, 176128, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, + /* 36532 */ 2158592, 3170304, 3174400, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, + /* 36545 */ 2158592, 2158592, 2158592, 1508, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, + /* 36557 */ 2158592, 2158592, 3039232, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 67, 24850, + /* 36569 */ 24850, 12564, 12564, 0, 0, 0, 0, 0, 53531, 53531, 0, 286, 97, 97, 97, 97, 97, 1144, 97, 97, 97, 97, 97, + /* 36592 */ 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 1154, 57889, 0, 0, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, + /* 36618 */ 97, 561, 97, 97, 97, 97, 97, 97, 576, 97, 97, 139264, 139264, 139264, 139264, 139264, 139264, 139264, + /* 36636 */ 139264, 139264, 139264, 139264, 139264, 0, 0, 139264, 0, 921, 29315, 0, 0, 926, 0, 45, 45, 45, 45, 45, 45, + /* 36657 */ 45, 45, 45, 719, 720, 45, 45, 45, 45, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 942, 45, + /* 36682 */ 45, 946, 45, 45, 45, 950, 45, 45, 0, 2146304, 2146304, 0, 0, 0, 0, 2224128, 2224128, 2224128, 2232320, + /* 36701 */ 2232320, 2232320, 2232320, 0, 0, 1301, 0, 0, 0, 0, 0, 1307, 0, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 97, + /* 36727 */ 97, 1318, 97, 97, 97, 97, 97, 97, 1795, 97, 97, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, + /* 36752 */ 67, 67, 2158592, 2146304, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 924, 0, 0, + /* 36776 */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 67, 67 +]; + +XQueryTokenizer.EXPECTED = +[ + /* 0 */ 290, 300, 304, 353, 296, 309, 305, 319, 315, 324, 328, 352, 354, 334, 338, 330, 320, 345, 349, 293, 358, + /* 21 */ 362, 341, 366, 312, 370, 374, 378, 382, 386, 390, 394, 398, 737, 402, 634, 439, 604, 634, 634, 634, 634, + /* 42 */ 408, 634, 634, 634, 404, 634, 634, 634, 457, 634, 634, 963, 634, 634, 413, 634, 634, 634, 634, 634, 634, + /* 63 */ 634, 663, 418, 422, 903, 902, 426, 431, 548, 634, 437, 521, 919, 443, 615, 409, 449, 455, 624, 731, 751, + /* 84 */ 634, 461, 465, 672, 470, 469, 474, 481, 485, 477, 489, 493, 629, 542, 497, 505, 603, 602, 991, 648, 510, + /* 105 */ 804, 634, 515, 958, 526, 525, 530, 768, 634, 546, 552, 711, 710, 593, 558, 562, 618, 566, 570, 574, 578, + /* 126 */ 582, 586, 590, 608, 612, 660, 822, 821, 634, 622, 596, 444, 628, 533, 724, 633, 640, 653, 647, 652, 536, + /* 147 */ 1008, 451, 450, 445, 657, 670, 676, 685, 689, 693, 697, 701, 704, 707, 715, 719, 798, 815, 634, 723, 762, + /* 168 */ 996, 634, 728, 969, 730, 735, 908, 634, 741, 679, 889, 511, 747, 634, 750, 755, 499, 666, 499, 501, 759, + /* 189 */ 772, 776, 780, 634, 787, 784, 797, 802, 809, 808, 427, 814, 1006, 517, 634, 519, 853, 634, 813, 850, 793, + /* 210 */ 634, 819, 826, 833, 832, 837, 843, 847, 857, 861, 863, 867, 871, 875, 879, 883, 643, 887, 539, 980, 979, + /* 231 */ 634, 893, 944, 634, 900, 896, 634, 907, 933, 506, 912, 917, 828, 433, 636, 635, 554, 961, 923, 930, 927, + /* 252 */ 937, 941, 634, 634, 634, 974, 948, 952, 985, 913, 968, 967, 743, 634, 973, 839, 634, 978, 599, 634, 984, + /* 273 */ 989, 765, 444, 995, 1000, 634, 1003, 790, 955, 1012, 681, 634, 634, 634, 634, 634, 414, 1016, 1020, 1024, + /* 293 */ 1085, 1027, 1090, 1090, 1046, 1080, 1137, 1108, 1215, 1049, 1032, 1039, 1085, 1085, 1085, 1085, 1058, 1062, + /* 311 */ 1068, 1085, 1086, 1090, 1090, 1091, 1072, 1064, 1107, 1090, 1090, 1090, 1118, 1123, 1138, 1078, 1074, 1084, + /* 329 */ 1085, 1085, 1085, 1087, 1090, 1062, 1052, 1060, 1114, 1062, 1104, 1085, 1085, 1090, 1090, 1028, 1122, 1063, + /* 347 */ 1128, 1139, 1127, 1158, 1085, 1085, 1151, 1090, 1090, 1090, 1095, 1090, 1132, 1073, 1136, 1143, 1061, 1150, + /* 365 */ 1085, 1155, 1098, 1101, 1146, 1162, 1169, 1101, 1185, 1151, 1090, 1110, 1173, 1054, 1087, 1109, 1177, 1165, + /* 383 */ 1089, 1204, 1184, 1107, 1189, 1193, 1088, 1197, 1180, 1201, 1208, 1042, 1212, 1219, 1223, 1227, 1231, 1235, + /* 401 */ 1245, 1777, 1527, 1686, 1686, 1238, 1686, 1254, 1686, 1686, 1686, 1294, 1669, 1686, 1686, 1686, 1322, 1625, + /* 419 */ 1534, 1268, 1624, 1275, 1281, 1443, 1292, 1300, 1686, 1686, 1686, 1350, 1826, 1306, 1686, 1686, 1240, 2032, + /* 437 */ 1317, 1321, 1686, 1686, 1253, 1686, 1326, 1686, 1686, 1686, 1418, 1709, 1446, 1686, 1686, 1686, 1492, 1686, + /* 455 */ 1295, 1447, 1686, 1686, 1258, 1686, 1736, 1686, 1686, 1520, 1355, 1686, 1288, 1348, 1361, 1686, 1359, 1686, + /* 473 */ 1364, 1498, 1368, 1302, 1362, 1381, 1389, 1395, 1486, 1686, 1371, 1377, 1370, 1686, 1375, 1382, 1384, 1402, + /* 491 */ 1408, 1385, 1383, 1619, 1413, 1423, 1428, 1433, 1686, 1686, 1270, 1686, 1338, 1686, 1440, 1686, 1686, 1686, + /* 509 */ 1499, 1465, 1686, 1686, 1686, 1639, 1473, 1884, 1686, 1686, 1293, 1864, 1686, 1686, 1296, 1321, 1483, 1686, + /* 527 */ 1686, 1686, 1646, 1686, 1748, 1496, 1686, 1418, 1675, 1686, 1418, 1702, 1686, 1418, 1981, 1686, 1429, 1409, + /* 545 */ 1427, 1504, 1692, 1686, 1686, 1313, 1448, 1651, 1508, 1686, 1686, 1340, 1686, 1903, 1686, 1686, 1435, 1513, + /* 563 */ 1686, 1283, 1287, 1519, 1686, 1524, 1363, 1568, 1938, 1539, 1566, 1579, 1479, 1533, 1538, 1553, 1544, 1552, + /* 581 */ 1557, 1563, 1574, 1557, 1583, 1589, 1590, 1759, 1594, 1603, 1607, 1611, 1686, 1436, 1514, 1686, 1434, 1656, + /* 599 */ 1686, 1434, 1680, 1686, 1453, 1686, 1686, 1686, 1559, 1617, 1686, 1770, 1418, 1623, 1769, 1629, 1686, 1515, + /* 617 */ 1335, 1686, 1285, 1686, 1671, 1921, 1650, 1686, 1686, 1344, 1308, 1666, 1686, 1686, 1686, 1659, 1685, 1686, + /* 635 */ 1686, 1686, 1686, 1241, 1686, 1686, 1844, 1691, 1686, 1630, 1977, 1970, 1362, 1686, 1686, 1686, 1693, 1698, + /* 653 */ 1686, 1686, 1686, 1697, 1686, 1764, 1715, 1686, 1634, 1638, 1686, 1599, 1585, 1686, 1271, 1686, 1269, 1686, + /* 671 */ 1721, 1686, 1686, 1354, 1686, 1801, 1686, 1799, 1686, 1640, 1686, 1686, 1461, 1686, 1686, 1732, 1686, 1944, + /* 689 */ 1686, 1740, 1686, 1746, 1415, 1396, 1686, 1598, 1547, 1417, 1597, 1416, 1577, 1546, 1397, 1577, 1547, 1548, + /* 707 */ 1570, 1398, 1753, 1686, 1652, 1509, 1686, 1686, 1686, 1757, 1686, 1419, 1686, 1763, 1418, 1768, 1781, 1686, + /* 725 */ 1686, 1686, 1705, 1686, 2048, 1792, 1686, 1686, 1686, 1735, 1686, 1797, 1686, 1686, 1404, 1686, 1639, 1815, + /* 743 */ 1686, 1686, 1418, 2017, 1820, 1686, 1686, 1803, 1686, 1686, 1686, 1736, 1489, 1686, 1686, 1825, 1338, 1260, + /* 761 */ 1263, 1686, 1686, 1785, 1686, 1686, 1728, 1686, 1686, 1749, 1497, 1830, 1830, 1262, 1248, 1261, 1329, 1260, + /* 779 */ 1264, 1329, 1248, 1249, 1259, 1540, 1849, 1842, 1686, 1686, 1835, 1686, 1686, 1816, 1686, 1686, 1831, 1882, + /* 797 */ 1848, 1686, 1686, 1686, 1774, 2071, 1854, 1686, 1686, 1469, 1884, 1686, 1821, 1859, 1686, 1686, 1350, 1883, + /* 815 */ 1686, 1686, 1686, 1781, 1391, 1875, 1686, 1686, 1613, 1644, 1686, 1686, 1889, 1686, 1686, 1662, 1884, 1686, + /* 833 */ 1885, 1890, 1686, 1686, 1686, 1894, 1686, 1686, 1678, 1686, 1907, 1686, 1686, 1529, 1914, 1686, 1838, 1686, + /* 851 */ 1686, 1881, 1686, 1686, 1872, 1876, 1836, 1919, 1686, 1837, 1692, 1910, 1686, 1925, 1928, 1742, 1686, 1811, + /* 869 */ 1811, 1930, 1810, 1929, 1935, 1928, 1900, 1942, 1867, 1868, 1931, 1035, 1788, 1948, 1952, 1956, 1960, 1964, + /* 887 */ 1686, 1976, 1686, 1686, 1686, 2065, 1686, 1992, 2037, 1686, 1686, 1998, 2009, 1972, 2002, 1686, 1686, 1686, + /* 905 */ 2077, 1300, 2023, 1686, 1686, 1686, 1807, 2031, 1686, 1686, 1686, 1860, 1500, 2032, 1686, 1686, 1686, 2083, + /* 923 */ 1686, 2036, 1686, 1277, 1276, 2042, 1877, 1686, 1686, 2041, 1686, 1686, 2027, 2037, 2012, 1686, 2012, 1855, + /* 941 */ 1850, 1686, 2046, 1686, 1686, 2054, 1996, 1686, 1897, 1309, 2059, 2052, 1686, 2058, 1686, 1686, 2081, 1686, + /* 959 */ 1717, 1477, 1686, 1331, 1686, 1686, 1687, 1686, 1860, 1681, 1686, 1686, 1686, 1966, 1724, 1686, 1686, 1686, + /* 977 */ 1984, 2015, 1686, 1686, 1686, 1988, 1686, 2063, 1686, 1686, 1686, 2005, 1686, 1727, 1686, 1686, 1711, 1457, + /* 995 */ 2069, 1686, 1686, 1686, 2019, 2075, 1686, 1686, 1915, 1686, 1686, 1793, 1874, 1686, 1686, 1491, 1362, 1449, + /* 1013 */ 1686, 1686, 1460, 2098, 2087, 2091, 2095, 2184, 2102, 2113, 2780, 2117, 2134, 2142, 2281, 2146, 2146, 2146, + /* 1031 */ 2304, 2296, 2181, 2639, 2591, 2872, 2592, 2873, 2313, 2195, 2200, 2281, 2146, 2273, 2226, 2204, 2152, 2219, + /* 1049 */ 2276, 2167, 2177, 2276, 2235, 2276, 2276, 2230, 2281, 2276, 2296, 2276, 2293, 2276, 2276, 2276, 2276, 2234, + /* 1067 */ 2276, 2311, 2314, 2210, 2199, 2217, 2222, 2276, 2276, 2276, 2240, 2276, 2294, 2276, 2276, 2173, 2276, 2198, + /* 1085 */ 2281, 2281, 2281, 2281, 2282, 2146, 2146, 2146, 2146, 2205, 2146, 2204, 2248, 2276, 2235, 2276, 2297, 2276, + /* 1103 */ 2276, 2276, 2277, 2256, 2281, 2283, 2146, 2146, 2146, 2275, 2276, 2295, 2276, 2276, 2293, 2146, 2304, 2264, + /* 1121 */ 2269, 2221, 2276, 2276, 2276, 2293, 2295, 2276, 2276, 2276, 2295, 2263, 2205, 2268, 2220, 2172, 2276, 2276, + /* 1139 */ 2276, 2296, 2276, 2276, 2296, 2294, 2276, 2276, 2278, 2281, 2281, 2280, 2281, 2281, 2281, 2283, 2206, 2223, + /* 1157 */ 2276, 2276, 2279, 2281, 2281, 2146, 2273, 2276, 2276, 2281, 2281, 2281, 2276, 2292, 2276, 2298, 2225, 2276, + /* 1175 */ 2298, 2169, 2224, 2292, 2298, 2171, 2229, 2281, 2281, 2171, 2236, 2281, 2281, 2281, 2146, 2275, 2225, 2292, + /* 1193 */ 2299, 2276, 2229, 2281, 2146, 2276, 2290, 2297, 2283, 2146, 2146, 2274, 2224, 2227, 2298, 2225, 2297, 2276, + /* 1211 */ 2230, 2170, 2230, 2282, 2146, 2147, 2151, 2156, 2288, 2276, 2230, 2303, 2308, 2236, 2284, 2228, 2318, 2318, + /* 1229 */ 2318, 2326, 2335, 2339, 2343, 2349, 2416, 2693, 2357, 2592, 2109, 2592, 2592, 2162, 2943, 2823, 2646, 2592, + /* 1247 */ 2361, 2592, 2122, 2592, 2592, 2122, 2470, 2592, 2592, 2592, 2109, 2107, 2592, 2592, 2592, 2123, 2592, 2592, + /* 1265 */ 2592, 2125, 2592, 2413, 2592, 2592, 2592, 2127, 2592, 2592, 2414, 2592, 2592, 2592, 2130, 2952, 2592, 2594, + /* 1283 */ 2592, 2592, 2212, 2609, 2252, 2592, 2592, 2592, 2446, 2434, 2592, 2592, 2592, 2212, 2446, 2450, 2456, 2431, + /* 1301 */ 2435, 2592, 2592, 2243, 2478, 2448, 2439, 2946, 2592, 2592, 2592, 2368, 2809, 2813, 2450, 2441, 2212, 2812, + /* 1319 */ 2449, 2440, 2947, 2592, 2592, 2592, 2345, 2451, 2457, 2948, 2592, 2124, 2592, 2592, 2650, 2823, 2449, 2455, + /* 1337 */ 2946, 2592, 2128, 2592, 2592, 2649, 2952, 2592, 2810, 2448, 2461, 2991, 2467, 2592, 2592, 2329, 2817, 2474, + /* 1355 */ 2990, 2466, 2592, 2592, 2373, 2447, 2992, 2469, 2592, 2592, 2592, 2373, 2447, 2477, 2468, 2592, 2592, 2353, + /* 1373 */ 2469, 2592, 2495, 2592, 2592, 2415, 2483, 2592, 2415, 2496, 2592, 2592, 2352, 2592, 2592, 2352, 2352, 2469, + /* 1391 */ 2592, 2592, 2363, 2331, 2494, 2592, 2592, 2592, 2375, 2592, 2375, 2415, 2504, 2592, 2592, 2367, 2372, 2503, + /* 1409 */ 2592, 2592, 2592, 2389, 2418, 2415, 2592, 2592, 2373, 2592, 2592, 2592, 2593, 2732, 2417, 2415, 2592, 2417, + /* 1427 */ 2520, 2592, 2592, 2592, 2390, 2521, 2521, 2592, 2592, 2592, 2401, 2599, 2585, 2526, 2531, 2120, 2592, 2212, + /* 1445 */ 2426, 2450, 2463, 2948, 2592, 2592, 2592, 2213, 2389, 2527, 2532, 2121, 2542, 2551, 2105, 2592, 2213, 2592, + /* 1463 */ 2592, 2592, 2558, 2538, 2544, 2553, 2557, 2537, 2543, 2552, 2421, 2572, 2576, 2546, 2543, 2547, 2592, 2592, + /* 1481 */ 2373, 2615, 2575, 2545, 2105, 2592, 2244, 2479, 2592, 2129, 2592, 2592, 2628, 2690, 2469, 2562, 2566, 2592, + /* 1499 */ 2592, 2592, 2415, 2928, 2934, 2401, 2570, 2574, 2564, 2572, 2585, 2590, 2592, 2592, 2585, 2965, 2592, 2592, + /* 1517 */ 2592, 2445, 2251, 2592, 2592, 2592, 2474, 2592, 2609, 2892, 2592, 2362, 2592, 2592, 2138, 2851, 2159, 2592, + /* 1535 */ 2592, 2592, 2509, 2888, 2892, 2592, 2592, 2592, 2490, 2418, 2891, 2592, 2592, 2376, 2592, 2592, 2374, 2592, + /* 1553 */ 2889, 2388, 2592, 2373, 2373, 2890, 2592, 2592, 2387, 2592, 2887, 2505, 2892, 2592, 2373, 2610, 2388, 2592, + /* 1571 */ 2592, 2376, 2373, 2592, 2887, 2891, 2592, 2374, 2592, 2592, 2608, 2159, 2614, 2620, 2592, 2592, 2394, 2594, + /* 1589 */ 2887, 2399, 2592, 2887, 2397, 2508, 2374, 2507, 2592, 2375, 2592, 2592, 2592, 2595, 2508, 2506, 2592, 2506, + /* 1607 */ 2505, 2505, 2592, 2507, 2637, 2505, 2592, 2592, 2401, 2661, 2592, 2643, 2592, 2592, 2417, 2592, 2655, 2592, + /* 1625 */ 2592, 2592, 2510, 2414, 2656, 2592, 2592, 2592, 2516, 2592, 2593, 2660, 2665, 2880, 2592, 2592, 2592, 2522, + /* 1643 */ 2767, 2666, 2881, 2592, 2592, 2420, 2571, 2696, 2592, 2592, 2592, 2580, 2572, 2686, 2632, 2698, 2592, 2383, + /* 1661 */ 2514, 2592, 2163, 2932, 2465, 2685, 2631, 2697, 2592, 2388, 2592, 2592, 2212, 2604, 2671, 2632, 2678, 2592, + /* 1679 */ 2401, 2405, 2409, 2592, 2592, 2592, 2679, 2592, 2592, 2592, 2592, 2108, 2677, 2591, 2592, 2592, 2592, 2419, + /* 1697 */ 2592, 2683, 2187, 2191, 2469, 2671, 2189, 2467, 2592, 2401, 2629, 2633, 2702, 2468, 2592, 2592, 2421, 2536, + /* 1715 */ 2703, 2469, 2592, 2592, 2422, 2573, 2593, 2672, 2467, 2592, 2402, 2406, 2592, 2402, 2979, 2592, 2592, 2626, + /* 1733 */ 2673, 2467, 2592, 2446, 2259, 2947, 2592, 2377, 2709, 2592, 2592, 2522, 2862, 2713, 2468, 2592, 2592, 2581, + /* 1751 */ 2572, 2562, 2374, 2374, 2592, 2376, 2721, 2724, 2592, 2592, 2624, 2373, 2731, 2592, 2592, 2592, 2626, 2732, + /* 1769 */ 2592, 2592, 2592, 2755, 2656, 2726, 2736, 2741, 2592, 2486, 2593, 2381, 2592, 2727, 2737, 2742, 2715, 2747, + /* 1787 */ 2753, 2592, 2498, 2469, 2873, 2743, 2592, 2592, 2592, 2791, 2759, 2763, 2592, 2592, 2627, 2704, 2592, 2592, + /* 1805 */ 2522, 2789, 2593, 2761, 2753, 2592, 2498, 2863, 2592, 2592, 2767, 2592, 2592, 2592, 2792, 2789, 2592, 2592, + /* 1823 */ 2592, 2803, 2126, 2592, 2592, 2592, 2811, 2122, 2592, 2592, 2592, 2834, 2777, 2592, 2592, 2592, 2848, 2936, + /* 1841 */ 2591, 2489, 2797, 2592, 2592, 2670, 2631, 2490, 2798, 2592, 2592, 2592, 2963, 2807, 2592, 2592, 2592, 2965, + /* 1859 */ 2838, 2592, 2592, 2592, 2975, 2330, 2818, 2829, 2592, 2498, 2939, 2592, 2498, 2592, 2791, 2331, 2819, 2830, + /* 1877 */ 2592, 2592, 2592, 2982, 2834, 2817, 2828, 2106, 2592, 2592, 2592, 2405, 2405, 2817, 2828, 2592, 2592, 2415, + /* 1895 */ 2849, 2842, 2592, 2522, 2773, 2592, 2522, 2868, 2592, 2580, 2600, 2586, 2137, 2850, 2843, 2592, 2592, 2855, + /* 1913 */ 2937, 2844, 2592, 2592, 2592, 2987, 2936, 2591, 2592, 2592, 2684, 2630, 2592, 2856, 2938, 2592, 2592, 2860, + /* 1931 */ 2939, 2592, 2592, 2872, 2592, 2861, 2591, 2592, 2592, 2887, 2616, 2592, 2867, 2592, 2592, 2708, 2592, 2498, + /* 1949 */ 2469, 2498, 2497, 2785, 2773, 2499, 2783, 2770, 2877, 2877, 2877, 2772, 2592, 2592, 2345, 2885, 2592, 2592, + /* 1967 */ 2592, 2715, 2762, 2515, 2896, 2592, 2592, 2715, 2917, 2516, 2897, 2592, 2592, 2592, 2901, 2906, 2911, 2592, + /* 1985 */ 2592, 2956, 2960, 2715, 2902, 2907, 2912, 2593, 2916, 2920, 2820, 2922, 2822, 2592, 2592, 2715, 2927, 2921, + /* 2003 */ 2821, 2106, 2592, 2592, 2974, 2408, 2321, 2821, 2106, 2592, 2592, 2983, 2592, 2593, 2404, 2408, 2592, 2592, + /* 2021 */ 2717, 2749, 2716, 2928, 2322, 2822, 2593, 2926, 2919, 2820, 2934, 2823, 2592, 2592, 2592, 2651, 2824, 2592, + /* 2039 */ 2592, 2592, 2130, 2952, 2592, 2592, 2592, 2592, 2964, 2592, 2592, 2716, 2748, 2592, 2969, 2592, 2592, 2716, + /* 2057 */ 2918, 2368, 2970, 2592, 2592, 2592, 2403, 2407, 2592, 2592, 2787, 2211, 2404, 2409, 2592, 2592, 2802, 2837, + /* 2075 */ 2987, 2592, 2592, 2592, 2809, 2427, 2592, 2793, 2592, 2592, 2809, 2447, 1073741824, 0x80000000, 539754496, + /* 2090 */ 542375936, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 512, 2048, 256, + /* 2101 */ 1024, 0, 1024, 0, 1073741824, 0x80000000, 0, 0, 0, 8388608, 0, 0, 1073741824, 1073741824, 0, 0x80000000, + /* 2117 */ 537133056, 4194304, 1048576, 268435456, -1073741824, 0, 0, 0, 1048576, 0, 0, 0, 1572864, 0, 0, 0, 4194304, + /* 2134 */ 0, 134217728, 16777216, 0, 0, 32, 64, 98304, 0, 33554432, 8388608, 192, 67108864, 67108864, 67108864, + /* 2149 */ 67108864, 16, 32, 4, 0, 8192, 196608, 196608, 229376, 80, 4096, 524288, 8388608, 0, 0, 32, 128, 256, 24576, + /* 2168 */ 24600, 24576, 24576, 2, 24576, 24576, 24576, 24584, 24592, 24576, 24578, 24576, 24578, 24576, 24576, 16, + /* 2184 */ 512, 2048, 2048, 256, 4096, 32768, 1048576, 4194304, 67108864, 134217728, 268435456, 262144, 134217728, 0, + /* 2198 */ 128, 128, 64, 16384, 16384, 16384, 67108864, 32, 32, 4, 4, 4096, 262144, 134217728, 0, 0, 0, 2, 0, 8192, + /* 2218 */ 131072, 131072, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, + /* 2234 */ 24576, 24584, 24576, 24576, 24576, 16384, 24576, 536870912, 262144, 0, 0, 32, 2048, 8192, 4, 4096, 4096, + /* 2251 */ 4096, 786432, 8388608, 16777216, 0, 128, 16384, 16384, 16384, 32768, 65536, 2097152, 32, 32, 32, 32, 4, 4, + /* 2269 */ 4, 4, 4, 4096, 67108864, 67108864, 67108864, 24576, 24576, 24576, 24576, 0, 16384, 16384, 16384, 16384, + /* 2285 */ 67108864, 67108864, 8, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 24578, 24576, 24576, 24576, 2, 2, 2, + /* 2303 */ 16384, 67108864, 67108864, 67108864, 32, 67108864, 8, 8, 24576, 2048, 0x80000000, 536870912, 262144, + /* 2316 */ 262144, 262144, 67108864, 8, 24576, 16384, 32768, 1048576, 4194304, 25165824, 67108864, 24576, 32770, 2, 4, + /* 2331 */ 112, 512, 98304, 524288, 50, 402653186, 1049090, 1049091, 10, 66, 100925514, 10, 66, 12582914, 0, 0, + /* 2347 */ -1678194207, -1678194207, -1041543218, 0, 32768, 0, 0, 32, 65536, 268435456, 1, 1, 513, 1048577, 0, + /* 2362 */ 12582912, 0, 0, 0, 4, 1792, 0, 0, 0, 7, 29360128, 0, 0, 0, 8, 0, 0, 0, 12, 1, 1, 0, 0, -604102721, + /* 2386 */ -604102721, 4194304, 8388608, 0, 0, 0, 31, 925600, 997981306, 997981306, 997981306, 0, 0, 2048, 8388608, 0, + /* 2402 */ 0, 1, 2, 4, 32, 64, 512, 8192, 0, 0, 0, 245760, 997720064, 0, 0, 0, 32, 0, 0, 0, 3, 12, 16, 32, 8, 112, + /* 2428 */ 3072, 12288, 16384, 32768, 65536, 131072, 7864320, 16777216, 973078528, 0, 0, 65536, 131072, 3670016, + /* 2442 */ 4194304, 16777216, 33554432, 2, 8, 48, 2048, 8192, 16384, 32768, 65536, 131072, 524288, 131072, 524288, + /* 2457 */ 3145728, 4194304, 16777216, 33554432, 65536, 131072, 2097152, 4194304, 16777216, 33554432, 134217728, + /* 2468 */ 268435456, 536870912, 0, 0, 0, 1024, 0, 8, 48, 2048, 8192, 65536, 33554432, 268435456, 536870912, 65536, + /* 2484 */ 268435456, 536870912, 0, 0, 32768, 0, 0, 126, 623104, 65011712, 0, 32, 65536, 536870912, 0, 0, 65536, + /* 2501 */ 524288, 0, 32, 65536, 0, 0, 0, 2048, 0, 0, 0, 15482, 245760, -604102721, 0, 0, 0, 18913, 33062912, 925600, + /* 2521 */ -605028352, 0, 0, 0, 65536, 31, 8096, 131072, 786432, 3145728, 3145728, 12582912, 50331648, 134217728, + /* 2535 */ 268435456, 160, 256, 512, 7168, 131072, 786432, 131072, 786432, 1048576, 2097152, 12582912, 16777216, + /* 2548 */ 268435456, 1073741824, 0x80000000, 12582912, 16777216, 33554432, 268435456, 1073741824, 0x80000000, 3, 12, + /* 2559 */ 16, 160, 256, 7168, 786432, 1048576, 12582912, 16777216, 268435456, 1073741824, 0, 8, 16, 32, 128, 256, + /* 2575 */ 512, 7168, 786432, 1048576, 2097152, 0, 1, 2, 8, 16, 7168, 786432, 1048576, 8388608, 16777216, 16777216, + /* 2591 */ 1073741824, 0, 0, 0, 0, 1, 0, 0, 8, 32, 128, 256, 7168, 8, 32, 0, 3072, 0, 8, 32, 3072, 4096, 524288, 8, + /* 2615 */ 32, 0, 0, 3072, 4096, 0, 2048, 524288, 8388608, 8, 2048, 0, 0, 1, 12, 256, 4096, 32768, 262144, 1048576, + /* 2635 */ 4194304, 67108864, 0, 2048, 0, 2048, 2048, 1073741824, -58805985, -58805985, -58805985, 0, 0, 262144, 0, 0, + /* 2651 */ 32, 4194304, 16777216, 134217728, 4382, 172032, -58982400, 0, 0, 2, 28, 256, 4096, 8192, 8192, 32768, + /* 2667 */ 131072, 262144, 524288, 1, 2, 12, 256, 4096, 0, 0, 4194304, 67108864, 134217728, 805306368, 1073741824, 0, + /* 2683 */ 0, 1, 2, 12, 16, 256, 4096, 1048576, 67108864, 134217728, 268435456, 0, 512, 1048576, 4194304, 201326592, + /* 2699 */ 1879048192, 0, 0, 12, 256, 4096, 134217728, 268435456, 536870912, 12, 256, 268435456, 536870912, 0, 12, + /* 2714 */ 256, 0, 0, 1, 32, 64, 512, 0, 0, 205236961, 205236961, 0, 0, 0, 1, 96, 640, 1, 10976, 229376, 204996608, 0, + /* 2736 */ 640, 2048, 8192, 229376, 1572864, 1572864, 2097152, 201326592, 0, 0, 0, 64, 512, 2048, 229376, 1572864, + /* 2752 */ 201326592, 1572864, 201326592, 0, 0, 1, 4382, 0, 1, 32, 2048, 65536, 131072, 1572864, 201326592, 131072, + /* 2768 */ 1572864, 134217728, 0, 0, 524288, 524288, 0, 0, 0, -68582786, -68582786, -68582786, 0, 0, 2097152, 524288, + /* 2784 */ 0, 524288, 0, 0, 65536, 131072, 1572864, 0, 0, 2, 4, 0, 0, 65011712, -134217728, 0, 0, 0, 0, 2, 4, 120, + /* 2806 */ 512, -268435456, 0, 0, 0, 2, 8, 48, 64, 2048, 8192, 98304, 524288, 2097152, 4194304, 25165824, 33554432, + /* 2823 */ 134217728, 268435456, 0x80000000, 0, 0, 25165824, 33554432, 134217728, 1879048192, 0x80000000, 0, 0, 4, + /* 2836 */ 112, 512, 622592, 65011712, 134217728, -268435456, 16777216, 33554432, 134217728, 1610612736, 0, 0, 0, 64, + /* 2850 */ 98304, 524288, 4194304, 16777216, 33554432, 0, 98304, 524288, 16777216, 33554432, 0, 65536, 524288, + /* 2863 */ 33554432, 536870912, 1073741824, 0, 65536, 524288, 536870912, 1073741824, 0, 0, 65536, 524288, 536870912, + /* 2876 */ 0, 524288, 0, 524288, 524288, 1048576, 2086666240, 0x80000000, 0, -1678194207, 0, 0, 0, 8, 32, 2048, + /* 2892 */ 524288, 8388608, 0, 0, 33062912, 436207616, 0x80000000, 0, 0, 32, 64, 2432, 16384, 32768, 32768, 524288, + /* 2908 */ 3145728, 4194304, 25165824, 25165824, 167772160, 268435456, 0x80000000, 0, 32, 64, 384, 2048, 16384, 32768, + /* 2922 */ 1048576, 2097152, 4194304, 25165824, 32, 64, 128, 256, 2048, 16384, 2048, 16384, 1048576, 4194304, + /* 2936 */ 16777216, 33554432, 134217728, 536870912, 1073741824, 0, 0, 2048, 16384, 4194304, 16777216, 33554432, + /* 2948 */ 134217728, 805306368, 0, 0, 16777216, 134217728, 268435456, 0x80000000, 0, 622592, 622592, 622592, 8807, + /* 2961 */ 8807, 434791, 0, 0, 16777216, 0, 0, 0, 7, 608, 8192, 0, 0, 0, 3, 4, 96, 512, 32, 64, 8192, 0, 0, 16777216, + /* 2985 */ 134217728, 0, 0, 2, 4, 8192, 16384, 65536, 2097152, 33554432, 268435456 +]; + +XQueryTokenizer.TOKEN = +[ + "(0)", + "ModuleDecl", + "Annotation", + "OptionDecl", + "Operator", + "Variable", + "Tag", + "EndTag", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSectionContents", + "AttrTest", + "Wildcard", + "EQName", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "QuotChar", + "AposChar", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "NCName", + "QName", + "S", + "CharRef", + "CommentContents", + "DocTag", + "DocCommentContents", + "EOF", + "'!'", + "'\"'", + "'#'", + "'#)'", + "''''", + "'('", + "'(#'", + "'(:'", + "'(:~'", + "')'", + "'*'", + "'*'", + "','", + "'-->'", + "'.'", + "'/'", + "'/>'", + "':'", + "':)'", + "';'", + "'<!--'", + "'<![CDATA['", + "'<?'", + "'='", + "'>'", + "'?'", + "'?>'", + "'NaN'", + "'['", + "']'", + "']]>'", + "'after'", + "'all'", + "'allowing'", + "'ancestor'", + "'ancestor-or-self'", + "'and'", + "'any'", + "'append'", + "'array'", + "'as'", + "'ascending'", + "'at'", + "'attribute'", + "'base-uri'", + "'before'", + "'boundary-space'", + "'break'", + "'by'", + "'case'", + "'cast'", + "'castable'", + "'catch'", + "'check'", + "'child'", + "'collation'", + "'collection'", + "'comment'", + "'constraint'", + "'construction'", + "'contains'", + "'content'", + "'context'", + "'continue'", + "'copy'", + "'copy-namespaces'", + "'count'", + "'decimal-format'", + "'decimal-separator'", + "'declare'", + "'default'", + "'delete'", + "'descendant'", + "'descendant-or-self'", + "'descending'", + "'diacritics'", + "'different'", + "'digit'", + "'distance'", + "'div'", + "'document'", + "'document-node'", + "'element'", + "'else'", + "'empty'", + "'empty-sequence'", + "'encoding'", + "'end'", + "'entire'", + "'eq'", + "'every'", + "'exactly'", + "'except'", + "'exit'", + "'external'", + "'first'", + "'following'", + "'following-sibling'", + "'for'", + "'foreach'", + "'foreign'", + "'from'", + "'ft-option'", + "'ftand'", + "'ftnot'", + "'ftor'", + "'function'", + "'ge'", + "'greatest'", + "'group'", + "'grouping-separator'", + "'gt'", + "'idiv'", + "'if'", + "'import'", + "'in'", + "'index'", + "'infinity'", + "'inherit'", + "'insensitive'", + "'insert'", + "'instance'", + "'integrity'", + "'intersect'", + "'into'", + "'is'", + "'item'", + "'json'", + "'json-item'", + "'key'", + "'language'", + "'last'", + "'lax'", + "'le'", + "'least'", + "'let'", + "'levels'", + "'loop'", + "'lowercase'", + "'lt'", + "'minus-sign'", + "'mod'", + "'modify'", + "'module'", + "'most'", + "'namespace'", + "'namespace-node'", + "'ne'", + "'next'", + "'no'", + "'no-inherit'", + "'no-preserve'", + "'node'", + "'nodes'", + "'not'", + "'object'", + "'occurs'", + "'of'", + "'on'", + "'only'", + "'option'", + "'or'", + "'order'", + "'ordered'", + "'ordering'", + "'paragraph'", + "'paragraphs'", + "'parent'", + "'pattern-separator'", + "'per-mille'", + "'percent'", + "'phrase'", + "'position'", + "'preceding'", + "'preceding-sibling'", + "'preserve'", + "'previous'", + "'processing-instruction'", + "'relationship'", + "'rename'", + "'replace'", + "'return'", + "'returning'", + "'revalidation'", + "'same'", + "'satisfies'", + "'schema'", + "'schema-attribute'", + "'schema-element'", + "'score'", + "'self'", + "'sensitive'", + "'sentence'", + "'sentences'", + "'skip'", + "'sliding'", + "'some'", + "'stable'", + "'start'", + "'stemming'", + "'stop'", + "'strict'", + "'strip'", + "'structured-item'", + "'switch'", + "'text'", + "'then'", + "'thesaurus'", + "'times'", + "'to'", + "'treat'", + "'try'", + "'tumbling'", + "'type'", + "'typeswitch'", + "'union'", + "'unique'", + "'unordered'", + "'updating'", + "'uppercase'", + "'using'", + "'validate'", + "'value'", + "'variable'", + "'version'", + "'weight'", + "'when'", + "'where'", + "'while'", + "'wildcards'", + "'window'", + "'with'", + "'without'", + "'word'", + "'words'", + "'xquery'", + "'zero-digit'", + "'{'", + "'{{'", + "'|'", + "'}'", + "'}}'" +]; + +// End + +},{}],"/node_modules/xqlint/lib/lexers/lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var TokenHandler = function(code) { + var input = code; + this.tokens = []; + + this.reset = function() { + input = input; + this.tokens = []; + }; + + this.startNonterminal = function() {}; + this.endNonterminal = function() {}; + + this.terminal = function(name, begin, end) { + this.tokens.push({ + name: name, + value: input.substring(begin, end) + }); + }; + + this.whitespace = function(begin, end) { + this.tokens.push({ + name: 'WS', + value: input.substring(begin, end) + }); + }; +}; + +exports.Lexer = function(Tokenizer, Rules) { + + this.tokens = []; + + this.getLineTokens = function(line, state) { + state = (state === 'start' || !state) ? '["start"]' : state; + var stack = JSON.parse(state); + var h = new TokenHandler(line); + var tokenizer = new Tokenizer(line, h); + var tokens = []; + + while(true) { + var currentState = stack[stack.length - 1]; + try { + h.tokens = []; + tokenizer['parse_' + currentState](); + var info = null; + + if(h.tokens.length > 1 && h.tokens[0].name === 'WS') { + tokens.push({ + type: 'text', + value: h.tokens[0].value + }); + h.tokens.splice(0, 1); + } + + var token = h.tokens[0]; + var rules = Rules[currentState]; + for(var k = 0; k < rules.length; k++) { + var rule = Rules[currentState][k]; + if((typeof(rule.name) === 'function' && rule.name(token)) || rule.name === token.name) { + info = rule; + break; + } + } + + if(token.name === 'EOF') { break; } + if(token.value === '') { throw 'Encountered empty string lexical rule.'; } + + tokens.push({ + type: info === null ? 'text' : (typeof(info.token) === 'function' ? info.token(token.value) : info.token), + value: token.value + }); + + if(info && info.next) { + info.next(stack); + } + + } catch(e) { + if(e instanceof tokenizer.ParseException) { + var index = 0; + for(var i=0; i < tokens.length; i++) { + index += tokens[i].value.length; + } + tokens.push({ type: 'text', value: line.substring(index) }); + return { + tokens: tokens, + state: JSON.stringify(['start']) + }; + } else { + throw e; + } + } + } + + return { + tokens: tokens, + state: JSON.stringify(stack) + }; + }; +}; +},{}],"/node_modules/xqlint/lib/lexers/xquery_lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var XQueryTokenizer = _dereq_('./XQueryTokenizer').XQueryTokenizer; +var Lexer = _dereq_('./lexer').Lexer; + +var keys = 'after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position|strict'.split('|'); + +var keywords = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'keyword' }; }); +var ncnames = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'text', next: function(stack){ stack.pop(); } }; }); + +var cdata = 'constant.language'; +var number = 'constant'; +var xmlcomment = 'comment'; +var pi = 'xml-pe'; +var pragma = 'constant.buildin'; +var n = function(name){ + return '\'' + name + '\''; +}; +var Rules = { + start: [ + { name: n('(#'), token: pragma, next: function(stack){ stack.push('Pragma'); } }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n('(:~'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n('<!--'), token: xmlcomment, next: function(stack){ stack.push('XMLComment'); } }, + { name: n('<?'), token: pi, next: function(stack) { stack.push('PI'); } }, + { name: n('\'\''), token: 'string', next: function(stack){ stack.push('AposString'); } }, + { name: n('"'), token: 'string', next: function(stack){ stack.push('QuotString'); } }, + { name: 'Annotation', token: 'support.function' }, + { name: 'ModuleDecl', token: 'keyword', next: function(stack){ stack.push('Prefix'); } }, + { name: 'OptionDecl', token: 'keyword', next: function(stack){ stack.push('_EQName'); } }, + { name: 'AttrTest', token: 'support.type' }, + { name: 'Variable', token: 'variable' }, + { name: n('<![CDATA['), token: cdata, next: function(stack){ stack.push('CData'); } }, + { name: 'IntegerLiteral', token: number }, + { name: 'DecimalLiteral', token: number }, + { name: 'DoubleLiteral', token: number }, + { name: 'Operator', token: 'keyword.operator' }, + { name: 'EQName', token: function(val) { return keys.indexOf(val) !== -1 ? 'keyword' : 'support.function'; } }, + { name: n('('), token: 'lparen' }, + { name: n(')'), token: 'rparen' }, + { name: 'Tag', token: 'meta.tag', next: function(stack){ stack.push('StartTag'); } }, + { name: n('}'), token: 'text', next: function(stack){ if(stack.length > 1) { stack.pop(); } } }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } //, next: function(stack){ if(stack.length > 1) { stack.pop(); } } } + ].concat(keywords), + _EQName: [ + { name: 'EQName', token: 'text', next: function(stack) { stack.pop(); } } + ].concat(ncnames), + Prefix: [ + { name: 'NCName', token: 'text', next: function(stack) { stack.pop(); } } + ].concat(ncnames), + StartTag: [ + { name: n('>'), token: 'meta.tag', next: function(stack){ stack.push('TagContent'); } }, + { name: 'QName', token: 'entity.other.attribute-name' }, + { name: n('='), token: 'text' }, + { name: n('\'\''), token: 'string', next: function(stack){ stack.push('AposAttr'); } }, + { name: n('"'), token: 'string', next: function(stack){ stack.push('QuotAttr'); } }, + { name: n('/>'), token: 'meta.tag.r', next: function(stack){ stack.pop(); } } + ], + TagContent: [ + { name: 'ElementContentChar', token: 'text' }, + { name: n('<![CDATA['), token: cdata, next: function(stack){ stack.push('CData'); } }, + { name: n('<!--'), token: xmlcomment, next: function(stack){ stack.push('XMLComment'); } }, + { name: 'Tag', token: 'meta.tag', next: function(stack){ stack.push('StartTag'); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'text' }, + { name: n('}}'), token: 'text' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } }, + { name: 'EndTag', token: 'meta.tag', next: function(stack){ stack.pop(); stack.pop(); } } + ], + AposAttr: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposAttrContentChar', token: 'string' }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'string' }, + { name: n('}}'), token: 'string' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } + ], + QuotAttr: [ + { name: n('\"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'EscapeQuot', token: 'constant.language.escape' }, + { name: 'QuotAttrContentChar', token: 'string' }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: n('{{'), token: 'string' }, + { name: n('}}'), token: 'string' }, + { name: n('{'), token: 'text', next: function(stack){ stack.push('start'); } } + ], + Pragma: [ + { name: 'PragmaContents', token: pragma }, + { name: n('#'), token: pragma }, + { name: n('#)'), token: pragma, next: function(stack){ stack.pop(); } } + ], + Comment: [ + { name: 'CommentContents', token: 'comment' }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n(':)'), token: 'comment', next: function(stack){ stack.pop(); } } + ], + CommentDoc: [ + { name: 'DocCommentContents', token: 'comment.doc' }, + { name: 'DocTag', token: 'comment.doc.tag' }, + { name: n('(:'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n(':)'), token: 'comment.doc', next: function(stack){ stack.pop(); } } + ], + XMLComment: [ + { name: 'DirCommentContents', token: xmlcomment }, + { name: n('-->'), token: xmlcomment, next: function(stack){ stack.pop(); } } + ], + CData: [ + { name: 'CDataSectionContents', token: cdata }, + { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } + ], + PI: [ + { name: 'DirPIContents', token: pi }, + { name: n('?'), token: pi }, + { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } + ], + AposString: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposChar', token: 'string' } + ], + QuotString: [ + { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeQuot', token: 'constant.language.escape' }, + { name: 'QuotChar', token: 'string' } + ] +}; + +exports.XQueryLexer = function(){ return new Lexer(XQueryTokenizer, Rules); }; +},{"./XQueryTokenizer":"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}]},{},["/node_modules/xqlint/lib/lexers/xquery_lexer.js"]); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mode/xquery_worker.js b/plugins/node_modules/ace/lib/ace/mode/xquery_worker.js new file mode 100644 index 00000000..b77096be --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/xquery_worker.js @@ -0,0 +1,116 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var XQLintLib = require("./xquery/xqlint"); +var XQLint = XQLintLib.XQLint; + +var getModuleResolverFromModules = function(modules){ + return function(uri){ + var index = modules; + var mod = index[uri]; + var variables = {}; + var functions = {}; + mod.functions.forEach(function(fn){ + functions[uri + '#' + fn.name + '#' + fn.arity] = { + params: [] + }; + fn.parameters.forEach(function(param){ + functions[uri + '#' + fn.name + '#' + fn.arity].params.push('$' + param.name); + }); + }); + mod.variables.forEach(function(variable){ + var name = variable.name.substring(variable.name.indexOf(':') + 1); + variables[uri + '#' + name] = { type: 'VarDecl', annotations: [] }; + }); + return { + variables: variables, + functions: functions + }; + }; +}; + +var XQueryWorker = exports.XQueryWorker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(200); + //this.availableModuleNamespaces = Object.keys(Modules); + //this.moduleResolver; = getModuleResolverFromModules(Modules); + var that = this; + + this.sender.on("complete", function(e){ + if(that.xqlint) { + var pos = { line: e.data.pos.row, col: e.data.pos.column }; + var proposals = that.xqlint.getCompletions(pos); + that.sender.emit("complete", proposals); + } + }); + + this.sender.on("setAvailableModuleNamespaces", function(e){ + that.availableModuleNamespaces = e.data; + }); + + this.sender.on("setFileName", function(e){ + that.fileName = e.data; + }); + + this.sender.on("setModuleResolver", function(e){ + that.moduleResolver = getModuleResolverFromModules(e.data); + }); +}; + +oop.inherits(XQueryWorker, Mirror); + +(function() { + + this.onUpdate = function() { + this.sender.emit("start"); + var value = this.doc.getValue(); + var sctx = XQLintLib.createStaticContext(); + if(this.moduleResolver) { + sctx.setModuleResolver(this.moduleResolver); + } + if(this.availableModuleNamespaces) { + sctx.availableModuleNamespaces = this.availableModuleNamespaces; + } + var opts = { + styleCheck: this.styleCheck, + staticContext: sctx, + fileName: this.fileName + }; + this.xqlint = new XQLint(value, opts); + this.sender.emit("markers", this.xqlint.getMarkers()); + }; +}).call(XQueryWorker.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/yaml.js b/plugins/node_modules/ace/lib/ace/mode/yaml.js new file mode 100644 index 00000000..04bcad33 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/yaml.js @@ -0,0 +1,79 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var YamlHighlightRules = require("./yaml_highlight_rules").YamlHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var FoldMode = require("./folding/coffee").FoldMode; + +var Mode = function() { + this.HighlightRules = YamlHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = ["#", "//"]; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + + this.$id = "ace/mode/yaml"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mode/yaml_highlight_rules.js b/plugins/node_modules/ace/lib/ace/mode/yaml_highlight_rules.js new file mode 100644 index 00000000..35425e63 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mode/yaml_highlight_rules.js @@ -0,0 +1,148 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var YamlHighlightRules = function() { + + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + this.$rules = { + "start" : [ + { + token : "comment", + regex : "#.*$" + }, { + token : "list.markup", + regex : /^(?:-{3}|\.{3})\s*(?=#|$)/ + }, { + token : "list.markup", + regex : /^\s*[\-?](?:$|\s)/ + }, { + token: "constant", + regex: "!![\\w//]+" + }, { + token: "constant.language", + regex: "[&\\*][a-zA-Z0-9-_]+" + }, { + token: ["meta.tag", "keyword"], + regex: /^(\s*\w.*?)(:(?=\s|$))/ + },{ + token: ["meta.tag", "keyword"], + regex: /(\w+?)(\s*:(?=\s|$))/ + }, { + token : "keyword.operator", + regex : "<<\\w*:\\w*" + }, { + token : "keyword.operator", + regex : "-\\s*(?=[{])" + }, { + token : "string", // single line + regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token : "string", // multi line string start + regex : /[|>][-+\d\s]*$/, + onMatch: function(val, state, stack, line) { + var indent = /^\s*/.exec(line)[0]; + if (stack.length < 1) { + stack.push(this.next); + } else { + stack[0] = "mlString"; + } + + if (stack.length < 2) { + stack.push(indent.length); + } + else { + stack[1] = indent.length; + } + return this.token; + }, + next : "mlString" + }, { + token : "string", // single quoted string + regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token : "constant.numeric", // float + regex : /(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)/ + }, { + token : "constant.numeric", // other number + regex : /[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/ + }, { + token : "constant.language.boolean", + regex : "\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" + }, { + token : "paren.lparen", + regex : "[[({]" + }, { + token : "paren.rparen", + regex : "[\\])}]" + }, { + token : "text", + regex : /[^\s,:\[\]\{\}]+/ + } + ], + "mlString" : [ + { + token : "indent", + regex : /^\s*$/ + }, { + token : "indent", + regex : /^\s*/, + onMatch: function(val, state, stack) { + var curIndent = stack[1]; + + if (curIndent >= val.length) { + this.next = "start"; + stack.splice(0); + } + else { + this.next = "mlString"; + } + return this.token; + }, + next : "mlString" + }, { + token : "string", + regex : '.+' + } + ]}; + this.normalizeRules(); + +}; + +oop.inherits(YamlHighlightRules, TextHighlightRules); + +exports.YamlHighlightRules = YamlHighlightRules; +}); diff --git a/plugins/node_modules/ace/lib/ace/model/editor.js b/plugins/node_modules/ace/lib/ace/model/editor.js new file mode 100644 index 00000000..75939231 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/model/editor.js @@ -0,0 +1,62 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("ace/lib/oop"); +var EventEmitter = require("ace/lib/event_emitter").EventEmitter; + +var Editor = exports.Editor = function() { + this._buffers = []; + this._windows = []; +}; + +(function() { + + oop.implement(this, EventEmitter); + + this.addBuffer = function(buffer) { + this._buffers.push(buffer); + return this._buffers.length-1; + }; + + this.addWindow = function(win) { + this._windows.push(win); + return this._windows.length-1; + }; + + this.openInWindow = function(bufferId, winId) { + this._windows[winId || 0].setBuffer(this._buffers[bufferId]); + }; + +}).call(Editor.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mouse/default_gutter_handler.js b/plugins/node_modules/ace/lib/ace/mouse/default_gutter_handler.js new file mode 100644 index 00000000..db35a508 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mouse/default_gutter_handler.js @@ -0,0 +1,183 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var event = require("../lib/event"); +var Tooltip = require("../tooltip").Tooltip; + +function GutterHandler(mouseHandler) { + var editor = mouseHandler.editor; + var gutter = editor.renderer.$gutterLayer; + var tooltip = new GutterTooltip(editor.container); + + mouseHandler.editor.setDefaultHandler("guttermousedown", function(e) { + if (!editor.isFocused() || e.getButton() != 0) + return; + var gutterRegion = gutter.getRegion(e); + + if (gutterRegion == "foldWidgets") + return; + + var row = e.getDocumentPosition().row; + var selection = editor.session.selection; + + if (e.getShiftKey()) + selection.selectTo(row, 0); + else { + if (e.domEvent.detail == 2) { + editor.selectAll(); + return e.preventDefault(); + } + mouseHandler.$clickSelection = editor.selection.getLineRange(row); + } + mouseHandler.setState("selectByLines"); + mouseHandler.captureMouse(e); + return e.preventDefault(); + }); + + + var tooltipTimeout, mouseEvent, tooltipAnnotation; + + function showTooltip() { + var row = mouseEvent.getDocumentPosition().row; + var annotation = gutter.$annotations[row]; + if (!annotation) + return hideTooltip(); + + var maxRow = editor.session.getLength(); + if (row == maxRow) { + var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row; + var pos = mouseEvent.$pos; + if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column)) + return hideTooltip(); + } + + if (tooltipAnnotation == annotation) + return; + tooltipAnnotation = annotation.text.join("<br/>"); + + tooltip.setHtml(tooltipAnnotation); + tooltip.show(); + editor._signal("showGutterTooltip", tooltip); + editor.on("mousewheel", hideTooltip); + + if (mouseHandler.$tooltipFollowsMouse) { + moveTooltip(mouseEvent); + } else { + var gutterElement = mouseEvent.domEvent.target; + var rect = gutterElement.getBoundingClientRect(); + var style = tooltip.getElement().style; + style.left = rect.right + "px"; + style.top = rect.bottom + "px"; + } + } + + function hideTooltip() { + if (tooltipTimeout) + tooltipTimeout = clearTimeout(tooltipTimeout); + if (tooltipAnnotation) { + tooltip.hide(); + tooltipAnnotation = null; + editor._signal("hideGutterTooltip", tooltip); + editor.removeEventListener("mousewheel", hideTooltip); + } + } + + function moveTooltip(e) { + tooltip.setPosition(e.x, e.y); + } + + mouseHandler.editor.setDefaultHandler("guttermousemove", function(e) { + var target = e.domEvent.target || e.domEvent.srcElement; + if (dom.hasCssClass(target, "ace_fold-widget")) + return hideTooltip(); + + if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse) + moveTooltip(e); + + mouseEvent = e; + if (tooltipTimeout) + return; + tooltipTimeout = setTimeout(function() { + tooltipTimeout = null; + if (mouseEvent && !mouseHandler.isMousePressed) + showTooltip(); + else + hideTooltip(); + }, 50); + }); + + event.addListener(editor.renderer.$gutter, "mouseout", function(e) { + mouseEvent = null; + if (!tooltipAnnotation || tooltipTimeout) + return; + + tooltipTimeout = setTimeout(function() { + tooltipTimeout = null; + hideTooltip(); + }, 50); + }); + + editor.on("changeSession", hideTooltip); +} + +function GutterTooltip(parentNode) { + Tooltip.call(this, parentNode); +} + +oop.inherits(GutterTooltip, Tooltip); + +(function(){ + this.setPosition = function(x, y) { + var windowWidth = window.innerWidth || document.documentElement.clientWidth; + var windowHeight = window.innerHeight || document.documentElement.clientHeight; + var width = this.getWidth(); + var height = this.getHeight(); + x += 15; + y += 15; + if (x + width > windowWidth) { + x -= (x + width) - windowWidth; + } + if (y + height > windowHeight) { + y -= 20 + height; + } + Tooltip.prototype.setPosition.call(this, x, y); + }; + +}).call(GutterTooltip.prototype); + + + +exports.GutterHandler = GutterHandler; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mouse/default_handlers.js b/plugins/node_modules/ace/lib/ace/mouse/default_handlers.js new file mode 100644 index 00000000..9f1f8254 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mouse/default_handlers.js @@ -0,0 +1,321 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("../lib/dom"); +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); + +var DRAG_OFFSET = 0; // pixels +var SCROLL_COOLDOWN_T = 250; // milliseconds + +function DefaultHandlers(mouseHandler) { + mouseHandler.$clickSelection = null; + + var editor = mouseHandler.editor; + editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); + editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); + editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); + editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); + editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); + editor.setDefaultHandler("touchmove", this.onTouchMove.bind(mouseHandler)); + + var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", + "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"]; + + exports.forEach(function(x) { + mouseHandler[x] = this[x]; + }, this); + + mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange"); + mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange"); +} + +(function() { + + this.onMouseDown = function(ev) { + var inSelection = ev.inSelection(); + var pos = ev.getDocumentPosition(); + this.mousedownEvent = ev; + var editor = this.editor; + + var button = ev.getButton(); + if (button !== 0) { + var selectionRange = editor.getSelectionRange(); + var selectionEmpty = selectionRange.isEmpty(); + if (selectionEmpty || button == 1) + editor.selection.moveToPosition(pos); + // 2: contextmenu, 1: linux paste + if (button == 2) { + editor.textInput.onContextMenu(ev.domEvent); + if (!useragent.isMozilla) + ev.preventDefault(); + } + // stopping event here breaks contextmenu on ff mac + // not stoping breaks it on chrome mac + return; + } + + this.mousedownEvent.time = Date.now(); + // if this click caused the editor to be focused should not clear the + // selection + if (inSelection && !editor.isFocused()) { + editor.focus(); + if (this.$focusTimout && !this.$clickSelection && !editor.inMultiSelectMode) { + this.setState("focusWait"); + this.captureMouse(ev); + return; + } + } + + this.captureMouse(ev); + this.startSelect(pos, ev.domEvent._clicks > 1); + return ev.preventDefault(); + }; + + this.startSelect = function(pos, waitForClickSelection) { + pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y); + var editor = this.editor; + // allow double/triple click handlers to change selection + if (this.mousedownEvent.getShiftKey()) + editor.selection.selectToPosition(pos); + else if (!waitForClickSelection) + editor.selection.moveToPosition(pos); + if (!waitForClickSelection) + this.select(); + if (editor.renderer.scroller.setCapture) { + editor.renderer.scroller.setCapture(); + } + editor.setStyle("ace_selecting"); + this.setState("select"); + }; + + this.select = function() { + var anchor, editor = this.editor; + var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); + if (this.$clickSelection) { + var cmp = this.$clickSelection.comparePoint(cursor); + + if (cmp == -1) { + anchor = this.$clickSelection.end; + } else if (cmp == 1) { + anchor = this.$clickSelection.start; + } else { + var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); + cursor = orientedRange.cursor; + anchor = orientedRange.anchor; + } + editor.selection.setSelectionAnchor(anchor.row, anchor.column); + } + editor.selection.selectToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + }; + + this.extendSelectionBy = function(unitName) { + var anchor, editor = this.editor; + var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); + var range = editor.selection[unitName](cursor.row, cursor.column); + if (this.$clickSelection) { + var cmpStart = this.$clickSelection.comparePoint(range.start); + var cmpEnd = this.$clickSelection.comparePoint(range.end); + + if (cmpStart == -1 && cmpEnd <= 0) { + anchor = this.$clickSelection.end; + if (range.end.row != cursor.row || range.end.column != cursor.column) + cursor = range.start; + } else if (cmpEnd == 1 && cmpStart >= 0) { + anchor = this.$clickSelection.start; + if (range.start.row != cursor.row || range.start.column != cursor.column) + cursor = range.end; + } else if (cmpStart == -1 && cmpEnd == 1) { + cursor = range.end; + anchor = range.start; + } else { + var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); + cursor = orientedRange.cursor; + anchor = orientedRange.anchor; + } + editor.selection.setSelectionAnchor(anchor.row, anchor.column); + } + editor.selection.selectToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + }; + + this.selectEnd = + this.selectAllEnd = + this.selectByWordsEnd = + this.selectByLinesEnd = function() { + this.$clickSelection = null; + this.editor.unsetStyle("ace_selecting"); + if (this.editor.renderer.scroller.releaseCapture) { + this.editor.renderer.scroller.releaseCapture(); + } + }; + + this.focusWait = function() { + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + var time = Date.now(); + + if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout) + this.startSelect(this.mousedownEvent.getDocumentPosition()); + }; + + this.onDoubleClick = function(ev) { + var pos = ev.getDocumentPosition(); + var editor = this.editor; + var session = editor.session; + + var range = session.getBracketRange(pos); + if (range) { + if (range.isEmpty()) { + range.start.column--; + range.end.column++; + } + this.setState("select"); + } else { + range = editor.selection.getWordRange(pos.row, pos.column); + this.setState("selectByWords"); + } + this.$clickSelection = range; + this.select(); + }; + + this.onTripleClick = function(ev) { + var pos = ev.getDocumentPosition(); + var editor = this.editor; + + this.setState("selectByLines"); + var range = editor.getSelectionRange(); + if (range.isMultiLine() && range.contains(pos.row, pos.column)) { + this.$clickSelection = editor.selection.getLineRange(range.start.row); + this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end; + } else { + this.$clickSelection = editor.selection.getLineRange(pos.row); + } + this.select(); + }; + + this.onQuadClick = function(ev) { + var editor = this.editor; + + editor.selectAll(); + this.$clickSelection = editor.getSelectionRange(); + this.setState("selectAll"); + }; + + this.onMouseWheel = function(ev) { + if (ev.getAccelKey()) + return; + + // shift wheel to horizontal scroll + if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) { + ev.wheelX = ev.wheelY; + ev.wheelY = 0; + } + + var editor = this.editor; + + if (!this.$lastScroll) + this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 }; + + var prevScroll = this.$lastScroll; + var t = ev.domEvent.timeStamp; + var dt = t - prevScroll.t; + var vx = dt ? ev.wheelX / dt : prevScroll.vx; + var vy = dt ? ev.wheelY / dt : prevScroll.vy; + + // touchbar keeps sending scroll events after touchend, if we do not stop these events, + // users can't scrol editor without scrolling the parent node + if (dt < SCROLL_COOLDOWN_T) { + vx = (vx + prevScroll.vx) / 2; + vy = (vy + prevScroll.vy) / 2; + } + + var direction = Math.abs(vx / vy); + + var canScroll = false; + if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0)) + canScroll = true; + if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed)) + canScroll = true; + + if (canScroll) { + prevScroll.allowed = t; + } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) { + var isSlower = Math.abs(vx) <= 1.1 * Math.abs(prevScroll.vx) + && Math.abs(vy) <= 1.1 * Math.abs(prevScroll.vy); + if (isSlower) { + canScroll = true; + prevScroll.allowed = t; + } + else { + prevScroll.allowed = 0; + } + } + + prevScroll.t = t; + prevScroll.vx = vx; + prevScroll.vy = vy; + + if (canScroll) { + editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); + return ev.stop(); + } + }; + + this.onTouchMove = function(ev) { + this.editor._emit("mousewheel", ev); + }; + +}).call(DefaultHandlers.prototype); + +exports.DefaultHandlers = DefaultHandlers; + +function calcDistance(ax, ay, bx, by) { + return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); +} + +function calcRangeOrientation(range, cursor) { + if (range.start.row == range.end.row) + var cmp = 2 * cursor.column - range.start.column - range.end.column; + else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column) + var cmp = cursor.column - 4; + else + var cmp = 2 * cursor.row - range.start.row - range.end.row; + + if (cmp < 0) + return {cursor: range.start, anchor: range.end}; + else + return {cursor: range.end, anchor: range.start}; +} + +}); diff --git a/plugins/node_modules/ace/lib/ace/mouse/dragdrop_handler.js b/plugins/node_modules/ace/lib/ace/mouse/dragdrop_handler.js new file mode 100644 index 00000000..cd52df78 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mouse/dragdrop_handler.js @@ -0,0 +1,424 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("../lib/dom"); +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); + +var AUTOSCROLL_DELAY = 200; +var SCROLL_CURSOR_DELAY = 200; +var SCROLL_CURSOR_HYSTERESIS = 5; + +function DragdropHandler(mouseHandler) { + + var editor = mouseHandler.editor; + + var blankImage = dom.createElement("img"); + // Safari crashes without image data + blankImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; + if (useragent.isOpera) + blankImage.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"; + + var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"]; + + exports.forEach(function(x) { + mouseHandler[x] = this[x]; + }, this); + editor.addEventListener("mousedown", this.onMouseDown.bind(mouseHandler)); + + + var mouseTarget = editor.container; + var dragSelectionMarker, x, y; + var timerId, range; + var dragCursor, counter = 0; + var dragOperation; + var isInternal; + var autoScrollStartTime; + var cursorMovedTime; + var cursorPointOnCaretMoved; + + this.onDragStart = function(e) { + // webkit workaround, see this.onMouseDown + if (this.cancelDrag || !mouseTarget.draggable) { + var self = this; + setTimeout(function(){ + self.startSelect(); + self.captureMouse(e); + }, 0); + return e.preventDefault(); + } + range = editor.getSelectionRange(); + + var dataTransfer = e.dataTransfer; + dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove"; + if (useragent.isOpera) { + editor.container.appendChild(blankImage); + // force layout + blankImage.scrollTop = 0; + } + dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0); + if (useragent.isOpera) { + editor.container.removeChild(blankImage); + } + // clear Opera garbage + dataTransfer.clearData(); + dataTransfer.setData("Text", editor.session.getTextRange()); + + isInternal = true; + this.setState("drag"); + }; + + this.onDragEnd = function(e) { + mouseTarget.draggable = false; + isInternal = false; + this.setState(null); + if (!editor.getReadOnly()) { + var dropEffect = e.dataTransfer.dropEffect; + if (!dragOperation && dropEffect == "move") + // text was dragged outside the editor + editor.session.remove(editor.getSelectionRange()); + editor.renderer.$cursorLayer.setBlinking(true); + } + this.editor.unsetStyle("ace_dragging"); + this.editor.renderer.setCursorStyle(""); + }; + + this.onDragEnter = function(e) { + if (editor.getReadOnly() || !canAccept(e.dataTransfer)) + return; + x = e.clientX; + y = e.clientY; + if (!dragSelectionMarker) + addDragMarker(); + counter++; + // dataTransfer object does not save dropEffect across events on IE, so we store it in dragOperation + e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); + return event.preventDefault(e); + }; + + this.onDragOver = function(e) { + if (editor.getReadOnly() || !canAccept(e.dataTransfer)) + return; + x = e.clientX; + y = e.clientY; + // Opera doesn't trigger dragenter event on drag start + if (!dragSelectionMarker) { + addDragMarker(); + counter++; + } + if (onMouseMoveTimer !== null) + onMouseMoveTimer = null; + + e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); + return event.preventDefault(e); + }; + + this.onDragLeave = function(e) { + counter--; + if (counter <= 0 && dragSelectionMarker) { + clearDragMarker(); + dragOperation = null; + return event.preventDefault(e); + } + }; + + this.onDrop = function(e) { + if (!dragCursor) + return; + var dataTransfer = e.dataTransfer; + if (isInternal) { + switch (dragOperation) { + case "move": + if (range.contains(dragCursor.row, dragCursor.column)) { + // clear selection + range = { + start: dragCursor, + end: dragCursor + }; + } else { + // move text + range = editor.moveText(range, dragCursor); + } + break; + case "copy": + // copy text + range = editor.moveText(range, dragCursor, true); + break; + } + } else { + var dropData = dataTransfer.getData('Text'); + range = { + start: dragCursor, + end: editor.session.insert(dragCursor, dropData) + }; + editor.focus(); + dragOperation = null; + } + clearDragMarker(); + return event.preventDefault(e); + }; + + event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler)); + event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler)); + event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler)); + event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler)); + event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler)); + event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler)); + + function scrollCursorIntoView(cursor, prevCursor) { + var now = Date.now(); + var vMovement = !prevCursor || cursor.row != prevCursor.row; + var hMovement = !prevCursor || cursor.column != prevCursor.column; + if (!cursorMovedTime || vMovement || hMovement) { + editor.moveCursorToPosition(cursor); + cursorMovedTime = now; + cursorPointOnCaretMoved = {x: x, y: y}; + } else { + var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y); + if (distance > SCROLL_CURSOR_HYSTERESIS) { + cursorMovedTime = null; + } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { + editor.renderer.scrollCursorIntoView(); + cursorMovedTime = null; + } + } + } + + function autoScroll(cursor, prevCursor) { + var now = Date.now(); + var lineHeight = editor.renderer.layerConfig.lineHeight; + var characterWidth = editor.renderer.layerConfig.characterWidth; + var editorRect = editor.renderer.scroller.getBoundingClientRect(); + var offsets = { + x: { + left: x - editorRect.left, + right: editorRect.right - x + }, + y: { + top: y - editorRect.top, + bottom: editorRect.bottom - y + } + }; + var nearestXOffset = Math.min(offsets.x.left, offsets.x.right); + var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom); + var scrollCursor = {row: cursor.row, column: cursor.column}; + if (nearestXOffset / characterWidth <= 2) { + scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2); + } + if (nearestYOffset / lineHeight <= 1) { + scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1); + } + var vScroll = cursor.row != scrollCursor.row; + var hScroll = cursor.column != scrollCursor.column; + var vMovement = !prevCursor || cursor.row != prevCursor.row; + if (vScroll || (hScroll && !vMovement)) { + if (!autoScrollStartTime) + autoScrollStartTime = now; + else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY) + editor.renderer.scrollCursorIntoView(scrollCursor); + } else { + autoScrollStartTime = null; + } + } + + function onDragInterval() { + var prevCursor = dragCursor; + dragCursor = editor.renderer.screenToTextCoordinates(x, y); + scrollCursorIntoView(dragCursor, prevCursor); + autoScroll(dragCursor, prevCursor); + } + + function addDragMarker() { + range = editor.selection.toOrientedRange(); + dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle()); + editor.clearSelection(); + if (editor.isFocused()) + editor.renderer.$cursorLayer.setBlinking(false); + clearInterval(timerId); + onDragInterval(); + timerId = setInterval(onDragInterval, 20); + counter = 0; + event.addListener(document, "mousemove", onMouseMove); + } + + function clearDragMarker() { + clearInterval(timerId); + editor.session.removeMarker(dragSelectionMarker); + dragSelectionMarker = null; + editor.selection.fromOrientedRange(range); + if (editor.isFocused() && !isInternal) + editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly()); + range = null; + dragCursor = null; + counter = 0; + autoScrollStartTime = null; + cursorMovedTime = null; + event.removeListener(document, "mousemove", onMouseMove); + } + + // sometimes other code on the page can stop dragleave event leaving editor stuck in the drag state + var onMouseMoveTimer = null; + function onMouseMove() { + if (onMouseMoveTimer == null) { + onMouseMoveTimer = setTimeout(function() { + if (onMouseMoveTimer != null && dragSelectionMarker) + clearDragMarker(); + }, 20); + } + } + + function canAccept(dataTransfer) { + var types = dataTransfer.types; + return !types || Array.prototype.some.call(types, function(type) { + return type == 'text/plain' || type == 'Text'; + }); + } + + function getDropEffect(e) { + var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized']; + var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized']; + + var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey; + + // IE throws error while dragging from another app + var effectAllowed = "uninitialized"; + try { + effectAllowed = e.dataTransfer.effectAllowed.toLowerCase(); + } catch (e) {} + var dropEffect = "none"; + + if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "copy"; + else if (moveAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "move"; + else if (copyAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "copy"; + + return dropEffect; + } +} + +(function() { + + this.dragWait = function() { + var interval = Date.now() - this.mousedownEvent.time; + if (interval > this.editor.getDragDelay()) + this.startDrag(); + }; + + this.dragWaitEnd = function() { + var target = this.editor.container; + target.draggable = false; + this.startSelect(this.mousedownEvent.getDocumentPosition()); + this.selectEnd(); + }; + + this.dragReadyEnd = function(e) { + this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()); + this.editor.unsetStyle("ace_dragging"); + this.editor.renderer.setCursorStyle(""); + this.dragWaitEnd(); + }; + + this.startDrag = function(){ + this.cancelDrag = false; + var editor = this.editor; + var target = editor.container; + target.draggable = true; + editor.renderer.$cursorLayer.setBlinking(false); + editor.setStyle("ace_dragging"); + var cursorStyle = useragent.isWin ? "default" : "move"; + editor.renderer.setCursorStyle(cursorStyle); + this.setState("dragReady"); + }; + + this.onMouseDrag = function(e) { + var target = this.editor.container; + if (useragent.isIE && this.state == "dragReady") { + // IE does not handle [draggable] attribute set after mousedown + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + if (distance > 3) + target.dragDrop(); + } + if (this.state === "dragWait") { + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + if (distance > 0) { + target.draggable = false; + this.startSelect(this.mousedownEvent.getDocumentPosition()); + } + } + }; + + this.onMouseDown = function(e) { + if (!this.$dragEnabled) + return; + this.mousedownEvent = e; + var editor = this.editor; + + var inSelection = e.inSelection(); + var button = e.getButton(); + var clickCount = e.domEvent.detail || 1; + if (clickCount === 1 && button === 0 && inSelection) { + if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey())) + return; + this.mousedownEvent.time = Date.now(); + var eventTarget = e.domEvent.target || e.domEvent.srcElement; + if ("unselectable" in eventTarget) + eventTarget.unselectable = "on"; + if (editor.getDragDelay()) { + // https://code.google.com/p/chromium/issues/detail?id=286700 + if (useragent.isWebKit) { + this.cancelDrag = true; + var mouseTarget = editor.container; + mouseTarget.draggable = true; + } + this.setState("dragWait"); + } else { + this.startDrag(); + } + this.captureMouse(e, this.onMouseDrag.bind(this)); + // TODO: a better way to prevent default handler without preventing browser default action + e.defaultPrevented = true; + } + }; + +}).call(DragdropHandler.prototype); + + +function calcDistance(ax, ay, bx, by) { + return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); +} + +exports.DragdropHandler = DragdropHandler; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/mouse/fold_handler.js b/plugins/node_modules/ace/lib/ace/mouse/fold_handler.js new file mode 100644 index 00000000..d96b8be4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mouse/fold_handler.js @@ -0,0 +1,102 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var dom = require("../lib/dom"); + +function FoldHandler(editor) { + + editor.on("click", function(e) { + var position = e.getDocumentPosition(); + var session = editor.session; + + // If the user clicked on a fold, then expand it. + var fold = session.getFoldAt(position.row, position.column, 1); + if (fold) { + if (e.getAccelKey()) + session.removeFold(fold); + else + session.expandFold(fold); + + e.stop(); + } + + var target = e.domEvent && e.domEvent.target; + if (target && dom.hasCssClass(target, "ace_inline_button")) { + if (dom.hasCssClass(target, "ace_toggle_wrap")) { + session.setOption("wrap", true); + editor.renderer.scrollCursorIntoView(); + } + } + }); + + editor.on("gutterclick", function(e) { + var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); + + if (gutterRegion == "foldWidgets") { + var row = e.getDocumentPosition().row; + var session = editor.session; + if (session.foldWidgets && session.foldWidgets[row]) + editor.session.onFoldWidgetClick(row, e); + if (!editor.isFocused()) + editor.focus(); + e.stop(); + } + }); + + editor.on("gutterdblclick", function(e) { + var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); + + if (gutterRegion == "foldWidgets") { + var row = e.getDocumentPosition().row; + var session = editor.session; + var data = session.getParentFoldRangeData(row, true); + var range = data.range || data.firstRange; + + if (range) { + row = range.start.row; + var fold = session.getFoldAt(row, session.getLine(row).length, 1); + + if (fold) { + session.removeFold(fold); + } else { + session.addFold("...", range); + editor.renderer.scrollCursorIntoView({row: range.start.row, column: 0}); + } + } + e.stop(); + } + }); +} + +exports.FoldHandler = FoldHandler; + +}); diff --git a/plugins/node_modules/ace/lib/ace/mouse/mouse_event.js b/plugins/node_modules/ace/lib/ace/mouse/mouse_event.js new file mode 100644 index 00000000..aec90ddb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mouse/mouse_event.js @@ -0,0 +1,129 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); + +/* + * Custom Ace mouse event + */ +var MouseEvent = exports.MouseEvent = function(domEvent, editor) { + this.domEvent = domEvent; + this.editor = editor; + + this.x = this.clientX = domEvent.clientX; + this.y = this.clientY = domEvent.clientY; + + this.$pos = null; + this.$inSelection = null; + + this.propagationStopped = false; + this.defaultPrevented = false; +}; + +(function() { + + this.stopPropagation = function() { + event.stopPropagation(this.domEvent); + this.propagationStopped = true; + }; + + this.preventDefault = function() { + event.preventDefault(this.domEvent); + this.defaultPrevented = true; + }; + + this.stop = function() { + this.stopPropagation(); + this.preventDefault(); + }; + + /* + * Get the document position below the mouse cursor + * + * @return {Object} 'row' and 'column' of the document position + */ + this.getDocumentPosition = function() { + if (this.$pos) + return this.$pos; + + this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); + return this.$pos; + }; + + /* + * Check if the mouse cursor is inside of the text selection + * + * @return {Boolean} whether the mouse cursor is inside of the selection + */ + this.inSelection = function() { + if (this.$inSelection !== null) + return this.$inSelection; + + var editor = this.editor; + + + var selectionRange = editor.getSelectionRange(); + if (selectionRange.isEmpty()) + this.$inSelection = false; + else { + var pos = this.getDocumentPosition(); + this.$inSelection = selectionRange.contains(pos.row, pos.column); + } + + return this.$inSelection; + }; + + /* + * Get the clicked mouse button + * + * @return {Number} 0 for left button, 1 for middle button, 2 for right button + */ + this.getButton = function() { + return event.getButton(this.domEvent); + }; + + /* + * @return {Boolean} whether the shift key was pressed when the event was emitted + */ + this.getShiftKey = function() { + return this.domEvent.shiftKey; + }; + + this.getAccelKey = useragent.isMac + ? function() { return this.domEvent.metaKey; } + : function() { return this.domEvent.ctrlKey; }; + +}).call(MouseEvent.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/mouse/mouse_handler.js b/plugins/node_modules/ace/lib/ace/mouse/mouse_handler.js new file mode 100644 index 00000000..bca2ea93 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mouse/mouse_handler.js @@ -0,0 +1,227 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var DefaultHandlers = require("./default_handlers").DefaultHandlers; +var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler; +var MouseEvent = require("./mouse_event").MouseEvent; +var DragdropHandler = require("./dragdrop_handler").DragdropHandler; +var config = require("../config"); + +var MouseHandler = function(editor) { + var _self = this; + this.editor = editor; + + new DefaultHandlers(this); + new DefaultGutterHandler(this); + new DragdropHandler(this); + + var focusEditor = function(e) { + // because we have to call event.preventDefault() any window on ie and iframes + // on other browsers do not get focus, so we have to call window.focus() here + var windowBlurred = !document.hasFocus || !document.hasFocus() + || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement()); + if (windowBlurred) + window.focus(); + editor.focus(); + }; + + var mouseTarget = editor.renderer.getMouseEventTarget(); + event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click")); + event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove")); + event.addMultiMouseDownListener([ + mouseTarget, + editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner, + editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner, + editor.textInput && editor.textInput.getElement() + ].filter(Boolean), [400, 300, 250], this, "onMouseEvent"); + event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel")); + event.addTouchMoveListener(editor.container, this.onTouchMove.bind(this, "touchmove")); + + var gutterEl = editor.renderer.$gutter; + event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown")); + event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick")); + event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick")); + event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove")); + + event.addListener(mouseTarget, "mousedown", focusEditor); + event.addListener(gutterEl, "mousedown", focusEditor); + if (useragent.isIE && editor.renderer.scrollBarV) { + event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor); + event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor); + } + + editor.on("mousemove", function(e){ + if (_self.state || _self.$dragDelay || !_self.$dragEnabled) + return; + + var character = editor.renderer.screenToTextCoordinates(e.x, e.y); + var range = editor.session.selection.getRange(); + var renderer = editor.renderer; + + if (!range.isEmpty() && range.insideStart(character.row, character.column)) { + renderer.setCursorStyle("default"); + } else { + renderer.setCursorStyle(""); + } + }); +}; + +(function() { + this.onMouseEvent = function(name, e) { + this.editor._emit(name, new MouseEvent(e, this.editor)); + }; + + this.onMouseMove = function(name, e) { + // optimization, because mousemove doesn't have a default handler. + var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove; + if (!listeners || !listeners.length) + return; + + this.editor._emit(name, new MouseEvent(e, this.editor)); + }; + + this.onMouseWheel = function(name, e) { + var mouseEvent = new MouseEvent(e, this.editor); + mouseEvent.speed = this.$scrollSpeed * 2; + mouseEvent.wheelX = e.wheelX; + mouseEvent.wheelY = e.wheelY; + + this.editor._emit(name, mouseEvent); + }; + + this.onTouchMove = function (name, e) { + var mouseEvent = new MouseEvent(e, this.editor); + mouseEvent.speed = 1;//this.$scrollSpeed * 2; + mouseEvent.wheelX = e.wheelX; + mouseEvent.wheelY = e.wheelY; + this.editor._emit(name, mouseEvent); + }; + + this.setState = function(state) { + this.state = state; + }; + + this.captureMouse = function(ev, mouseMoveHandler) { + this.x = ev.x; + this.y = ev.y; + + this.isMousePressed = true; + + // do not move textarea during selection + var editor = this.editor; + var renderer = this.editor.renderer; + if (renderer.$keepTextAreaAtCursor) + renderer.$keepTextAreaAtCursor = null; + + var self = this; + var onMouseMove = function(e) { + if (!e) return; + // if editor is loaded inside iframe, and mouseup event is outside + // we won't recieve it, so we cancel on first mousemove without button + if (useragent.isWebKit && !e.which && self.releaseMouse) + return self.releaseMouse(); + + self.x = e.clientX; + self.y = e.clientY; + mouseMoveHandler && mouseMoveHandler(e); + self.mouseEvent = new MouseEvent(e, self.editor); + self.$mouseMoved = true; + }; + + var onCaptureEnd = function(e) { + editor.off("beforeEndOperation", onOperationEnd); + clearInterval(timerId); + onCaptureInterval(); + self[self.state + "End"] && self[self.state + "End"](e); + self.state = ""; + if (renderer.$keepTextAreaAtCursor == null) { + renderer.$keepTextAreaAtCursor = true; + renderer.$moveTextAreaToCursor(); + } + self.isMousePressed = false; + self.$onCaptureMouseMove = self.releaseMouse = null; + e && self.onMouseEvent("mouseup", e); + }; + + var onCaptureInterval = function() { + self[self.state] && self[self.state](); + self.$mouseMoved = false; + }; + + if (useragent.isOldIE && ev.domEvent.type == "dblclick") { + return setTimeout(function() {onCaptureEnd(ev);}); + } + + var onOperationEnd = function(e) { + // some touchpads fire mouseup event after a slight delay, + // which can cause problems if user presses a keyboard shortcut quickly + if (editor.curOp.command.name && editor.curOp.selectionChanged) { + self[self.state + "End"] && self[self.state + "End"](); + self.state = ""; + self.releaseMouse(); + } + }; + + editor.on("beforeEndOperation", onOperationEnd); + + self.$onCaptureMouseMove = onMouseMove; + self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd); + var timerId = setInterval(onCaptureInterval, 20); + }; + this.releaseMouse = null; + this.cancelContextMenu = function() { + var stop = function(e) { + if (e && e.domEvent && e.domEvent.type != "contextmenu") + return; + this.editor.off("nativecontextmenu", stop); + if (e && e.domEvent) + event.stopEvent(e.domEvent); + }.bind(this); + setTimeout(stop, 10); + this.editor.on("nativecontextmenu", stop); + }; +}).call(MouseHandler.prototype); + +config.defineOptions(MouseHandler.prototype, "mouseHandler", { + scrollSpeed: {initialValue: 2}, + dragDelay: {initialValue: 150}, + dragEnabled: {initialValue: true}, + focusTimout: {initialValue: 0}, + tooltipFollowsMouse: {initialValue: true} +}); + + +exports.MouseHandler = MouseHandler; +}); diff --git a/plugins/node_modules/ace/lib/ace/mouse/mouse_handler_test.js b/plugins/node_modules/ace/lib/ace/mouse/mouse_handler_test.js new file mode 100644 index 00000000..c35b09d5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mouse/mouse_handler_test.js @@ -0,0 +1,77 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("../test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var Editor = require("../editor").Editor; +var MockRenderer = require("../test/mockrenderer").MockRenderer; +var assert = require("../test/assertions"); +var MouseEvent = function(type, opts){ + var e = document.createEvent("MouseEvents"); + e.initMouseEvent("mouse" + type, + true, true, window, + opts.detail, + opts.x, opts.y, opts.x, opts.y, + opts.ctrl, opts.alt, opts.shift, opts.meta, + opts.button || 0, opts.relatedTarget); + return e; +}; + +module.exports = { + + setUp : function(next) { + this.editor = new Editor(new MockRenderer()); + this.editor.setValue("Juhu kinners!"); + next(); + }, + + "test: double tap. issue #956" : function() { + // mouse up fired immediately after mouse down + var target = this.editor.renderer.getMouseEventTarget(); + target.dispatchEvent(MouseEvent("down", {x: 1, y: 1})); + target.dispatchEvent(MouseEvent("up", {x: 1, y: 1})); + target.dispatchEvent(MouseEvent("down", {x: 1, y: 1, detail: 2})); + target.dispatchEvent(MouseEvent("up", {x: 1, y: 1, detail: 2})); + + assert.equal(this.editor.getSelectedText(), "Juhu"); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/mouse/multi_select_handler.js b/plugins/node_modules/ace/lib/ace/mouse/multi_select_handler.js new file mode 100644 index 00000000..5ec027ec --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/mouse/multi_select_handler.js @@ -0,0 +1,202 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); + +// mouse +function isSamePoint(p1, p2) { + return p1.row == p2.row && p1.column == p2.column; +} + +function onMouseDown(e) { + var ev = e.domEvent; + var alt = ev.altKey; + var shift = ev.shiftKey; + var ctrl = ev.ctrlKey; + var accel = e.getAccelKey(); + var button = e.getButton(); + + if (ctrl && useragent.isMac) + button = ev.button; + + if (e.editor.inMultiSelectMode && button == 2) { + e.editor.textInput.onContextMenu(e.domEvent); + return; + } + + if (!ctrl && !alt && !accel) { + if (button === 0 && e.editor.inMultiSelectMode) + e.editor.exitMultiSelectMode(); + return; + } + + if (button !== 0) + return; + + var editor = e.editor; + var selection = editor.selection; + var isMultiSelect = editor.inMultiSelectMode; + var pos = e.getDocumentPosition(); + var cursor = selection.getCursor(); + var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor)); + + var mouseX = e.x, mouseY = e.y; + var onMouseSelection = function(e) { + mouseX = e.clientX; + mouseY = e.clientY; + }; + + var session = editor.session; + var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); + var screenCursor = screenAnchor; + + var selectionMode; + if (editor.$mouseHandler.$enableJumpToDef) { + if (ctrl && alt || accel && alt) + selectionMode = shift ? "block" : "add"; + else if (alt && editor.$blockSelectEnabled) + selectionMode = "block"; + } else { + if (accel && !alt) { + selectionMode = "add"; + if (!isMultiSelect && shift) + return; + } else if (alt && editor.$blockSelectEnabled) { + selectionMode = "block"; + } + } + + if (selectionMode && useragent.isMac && ev.ctrlKey) { + editor.$mouseHandler.cancelContextMenu(); + } + + if (selectionMode == "add") { + if (!isMultiSelect && inSelection) + return; // dragging + + if (!isMultiSelect) { + var range = selection.toOrientedRange(); + editor.addSelectionMarker(range); + } + + var oldRange = selection.rangeList.rangeAtPoint(pos); + + editor.inVirtualSelectionMode = true; + + if (shift) { + oldRange = null; + range = selection.ranges[0] || range; + editor.removeSelectionMarker(range); + } + editor.once("mouseup", function() { + var tmpSel = selection.toOrientedRange(); + + if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) + selection.substractPoint(tmpSel.cursor); + else { + if (shift) { + selection.substractPoint(range.cursor); + } else if (range) { + editor.removeSelectionMarker(range); + selection.addRange(range); + } + selection.addRange(tmpSel); + } + editor.inVirtualSelectionMode = false; + }); + + } else if (selectionMode == "block") { + e.stop(); + editor.inVirtualSelectionMode = true; + var initialRange; + var rectSel = []; + var blockSelect = function() { + var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); + var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX); + + if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead)) + return; + screenCursor = newCursor; + + editor.selection.moveToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + + editor.removeSelectionMarkers(rectSel); + rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor); + if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty()) + rectSel[0] = editor.$mouseHandler.$clickSelection.clone(); + rectSel.forEach(editor.addSelectionMarker, editor); + editor.updateSelectionMarkers(); + }; + if (isMultiSelect && !accel) { + selection.toSingleRange(); + } else if (!isMultiSelect && accel) { + initialRange = selection.toOrientedRange(); + editor.addSelectionMarker(initialRange); + } + + if (shift) + screenAnchor = session.documentToScreenPosition(selection.lead); + else + selection.moveToPosition(pos); + + screenCursor = {row: -1, column: -1}; + + var onMouseSelectionEnd = function(e) { + clearInterval(timerId); + editor.removeSelectionMarkers(rectSel); + if (!rectSel.length) + rectSel = [selection.toOrientedRange()]; + if (initialRange) { + editor.removeSelectionMarker(initialRange); + selection.toSingleRange(initialRange); + } + for (var i = 0; i < rectSel.length; i++) + selection.addRange(rectSel[i]); + editor.inVirtualSelectionMode = false; + editor.$mouseHandler.$clickSelection = null; + }; + + var onSelectionInterval = blockSelect; + + event.capture(editor.container, onMouseSelection, onMouseSelectionEnd); + var timerId = setInterval(function() {onSelectionInterval();}, 20); + + return e.preventDefault(); + } +} + + +exports.onMouseDown = onMouseDown; + +}); diff --git a/plugins/node_modules/ace/lib/ace/multi_select.js b/plugins/node_modules/ace/lib/ace/multi_select.js new file mode 100644 index 00000000..a98a0d0a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/multi_select.js @@ -0,0 +1,977 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +var RangeList = require("./range_list").RangeList; +var Range = require("./range").Range; +var Selection = require("./selection").Selection; +var onMouseDown = require("./mouse/multi_select_handler").onMouseDown; +var event = require("./lib/event"); +var lang = require("./lib/lang"); +var commands = require("./commands/multi_select_commands"); +exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands); + +// Todo: session.find or editor.findVolatile that returns range +var Search = require("./search").Search; +var search = new Search(); + +function find(session, needle, dir) { + search.$options.wrap = true; + search.$options.needle = needle; + search.$options.backwards = dir == -1; + return search.find(session); +} + +// extend EditSession +var EditSession = require("./edit_session").EditSession; +(function() { + this.getSelectionMarkers = function() { + return this.$selectionMarkers; + }; +}).call(EditSession.prototype); + +// extend Selection +(function() { + // list of ranges in reverse addition order + this.ranges = null; + + // automatically sorted list of ranges + this.rangeList = null; + + /** + * Adds a range to a selection by entering multiselect mode, if necessary. + * @param {Range} range The new range to add + * @param {Boolean} $blockChangeEvents Whether or not to block changing events + * @method Selection.addRange + **/ + this.addRange = function(range, $blockChangeEvents) { + if (!range) + return; + + if (!this.inMultiSelectMode && this.rangeCount === 0) { + var oldRange = this.toOrientedRange(); + this.rangeList.add(oldRange); + this.rangeList.add(range); + if (this.rangeList.ranges.length != 2) { + this.rangeList.removeAll(); + return $blockChangeEvents || this.fromOrientedRange(range); + } + this.rangeList.removeAll(); + this.rangeList.add(oldRange); + this.$onAddRange(oldRange); + } + + if (!range.cursor) + range.cursor = range.end; + + var removed = this.rangeList.add(range); + + this.$onAddRange(range); + + if (removed.length) + this.$onRemoveRange(removed); + + if (this.rangeCount > 1 && !this.inMultiSelectMode) { + this._signal("multiSelect"); + this.inMultiSelectMode = true; + this.session.$undoSelect = false; + this.rangeList.attach(this.session); + } + + return $blockChangeEvents || this.fromOrientedRange(range); + }; + + /** + * @method Selection.toSingleRange + **/ + + this.toSingleRange = function(range) { + range = range || this.ranges[0]; + var removed = this.rangeList.removeAll(); + if (removed.length) + this.$onRemoveRange(removed); + + range && this.fromOrientedRange(range); + }; + + /** + * Removes a Range containing pos (if it exists). + * @param {Range} pos The position to remove, as a `{row, column}` object + * @method Selection.substractPoint + **/ + this.substractPoint = function(pos) { + var removed = this.rangeList.substractPoint(pos); + if (removed) { + this.$onRemoveRange(removed); + return removed[0]; + } + }; + + /** + * Merges overlapping ranges ensuring consistency after changes + * @method Selection.mergeOverlappingRanges + **/ + this.mergeOverlappingRanges = function() { + var removed = this.rangeList.merge(); + if (removed.length) + this.$onRemoveRange(removed); + else if(this.ranges[0]) + this.fromOrientedRange(this.ranges[0]); + }; + + this.$onAddRange = function(range) { + this.rangeCount = this.rangeList.ranges.length; + this.ranges.unshift(range); + this._signal("addRange", {range: range}); + }; + + this.$onRemoveRange = function(removed) { + this.rangeCount = this.rangeList.ranges.length; + if (this.rangeCount == 1 && this.inMultiSelectMode) { + var lastRange = this.rangeList.ranges.pop(); + removed.push(lastRange); + this.rangeCount = 0; + } + + for (var i = removed.length; i--; ) { + var index = this.ranges.indexOf(removed[i]); + this.ranges.splice(index, 1); + } + + this._signal("removeRange", {ranges: removed}); + + if (this.rangeCount === 0 && this.inMultiSelectMode) { + this.inMultiSelectMode = false; + this._signal("singleSelect"); + this.session.$undoSelect = true; + this.rangeList.detach(this.session); + } + + lastRange = lastRange || this.ranges[0]; + if (lastRange && !lastRange.isEqual(this.getRange())) + this.fromOrientedRange(lastRange); + }; + + // adds multicursor support to selection + this.$initRangeList = function() { + if (this.rangeList) + return; + + this.rangeList = new RangeList(); + this.ranges = []; + this.rangeCount = 0; + }; + + /** + * Returns a concatenation of all the ranges. + * @returns {Array} + * @method Selection.getAllRanges + **/ + this.getAllRanges = function() { + return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]; + }; + + /** + * Splits all the ranges into lines. + * @method Selection.splitIntoLines + **/ + + this.splitIntoLines = function () { + if (this.rangeCount > 1) { + var ranges = this.rangeList.ranges; + var lastRange = ranges[ranges.length - 1]; + var range = Range.fromPoints(ranges[0].start, lastRange.end); + + this.toSingleRange(); + this.setSelectionRange(range, lastRange.cursor == lastRange.start); + } else { + var range = this.getRange(); + var isBackwards = this.isBackwards(); + var startRow = range.start.row; + var endRow = range.end.row; + if (startRow == endRow) { + if (isBackwards) + var start = range.end, end = range.start; + else + var start = range.start, end = range.end; + + this.addRange(Range.fromPoints(end, end)); + this.addRange(Range.fromPoints(start, start)); + return; + } + + var rectSel = []; + var r = this.getLineRange(startRow, true); + r.start.column = range.start.column; + rectSel.push(r); + + for (var i = startRow + 1; i < endRow; i++) + rectSel.push(this.getLineRange(i, true)); + + r = this.getLineRange(endRow, true); + r.end.column = range.end.column; + rectSel.push(r); + + rectSel.forEach(this.addRange, this); + } + }; + + /** + * @method Selection.toggleBlockSelection + **/ + this.toggleBlockSelection = function () { + if (this.rangeCount > 1) { + var ranges = this.rangeList.ranges; + var lastRange = ranges[ranges.length - 1]; + var range = Range.fromPoints(ranges[0].start, lastRange.end); + + this.toSingleRange(); + this.setSelectionRange(range, lastRange.cursor == lastRange.start); + } else { + var cursor = this.session.documentToScreenPosition(this.cursor); + var anchor = this.session.documentToScreenPosition(this.anchor); + + var rectSel = this.rectangularRangeBlock(cursor, anchor); + rectSel.forEach(this.addRange, this); + } + }; + + /** + * + * Gets list of ranges composing rectangular block on the screen + * + * @param {Cursor} screenCursor The cursor to use + * @param {Anchor} screenAnchor The anchor to use + * @param {Boolean} includeEmptyLines If true, this includes ranges inside the block which are empty due to clipping + * @returns {Range} + * @method Selection.rectangularRangeBlock + **/ + this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) { + var rectSel = []; + + var xBackwards = screenCursor.column < screenAnchor.column; + if (xBackwards) { + var startColumn = screenCursor.column; + var endColumn = screenAnchor.column; + var startOffsetX = screenCursor.offsetX; + var endOffsetX = screenAnchor.offsetX; + } else { + var startColumn = screenAnchor.column; + var endColumn = screenCursor.column; + var startOffsetX = screenAnchor.offsetX; + var endOffsetX = screenCursor.offsetX; + } + + var yBackwards = screenCursor.row < screenAnchor.row; + if (yBackwards) { + var startRow = screenCursor.row; + var endRow = screenAnchor.row; + } else { + var startRow = screenAnchor.row; + var endRow = screenCursor.row; + } + + if (startColumn < 0) + startColumn = 0; + if (startRow < 0) + startRow = 0; + + if (startRow == endRow) + includeEmptyLines = true; + + var docEnd; + for (var row = startRow; row <= endRow; row++) { + var range = Range.fromPoints( + this.session.screenToDocumentPosition(row, startColumn, startOffsetX), + this.session.screenToDocumentPosition(row, endColumn, endOffsetX) + ); + if (range.isEmpty()) { + if (docEnd && isSamePoint(range.end, docEnd)) + break; + docEnd = range.end; + } + range.cursor = xBackwards ? range.start : range.end; + rectSel.push(range); + } + + if (yBackwards) + rectSel.reverse(); + + if (!includeEmptyLines) { + var end = rectSel.length - 1; + while (rectSel[end].isEmpty() && end > 0) + end--; + if (end > 0) { + var start = 0; + while (rectSel[start].isEmpty()) + start++; + } + for (var i = end; i >= start; i--) { + if (rectSel[i].isEmpty()) + rectSel.splice(i, 1); + } + } + + return rectSel; + }; +}).call(Selection.prototype); + +// extend Editor +var Editor = require("./editor").Editor; +(function() { + + /** + * + * Updates the cursor and marker layers. + * @method Editor.updateSelectionMarkers + * + **/ + this.updateSelectionMarkers = function() { + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + + /** + * Adds the selection and cursor. + * @param {Range} orientedRange A range containing a cursor + * @returns {Range} + * @method Editor.addSelectionMarker + **/ + this.addSelectionMarker = function(orientedRange) { + if (!orientedRange.cursor) + orientedRange.cursor = orientedRange.end; + + var style = this.getSelectionStyle(); + orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style); + + this.session.$selectionMarkers.push(orientedRange); + this.session.selectionMarkerCount = this.session.$selectionMarkers.length; + return orientedRange; + }; + + /** + * Removes the selection marker. + * @param {Range} range The selection range added with [[Editor.addSelectionMarker `addSelectionMarker()`]]. + * @method Editor.removeSelectionMarker + **/ + this.removeSelectionMarker = function(range) { + if (!range.marker) + return; + this.session.removeMarker(range.marker); + var index = this.session.$selectionMarkers.indexOf(range); + if (index != -1) + this.session.$selectionMarkers.splice(index, 1); + this.session.selectionMarkerCount = this.session.$selectionMarkers.length; + }; + + this.removeSelectionMarkers = function(ranges) { + var markerList = this.session.$selectionMarkers; + for (var i = ranges.length; i--; ) { + var range = ranges[i]; + if (!range.marker) + continue; + this.session.removeMarker(range.marker); + var index = markerList.indexOf(range); + if (index != -1) + markerList.splice(index, 1); + } + this.session.selectionMarkerCount = markerList.length; + }; + + this.$onAddRange = function(e) { + this.addSelectionMarker(e.range); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + + this.$onRemoveRange = function(e) { + this.removeSelectionMarkers(e.ranges); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + + this.$onMultiSelect = function(e) { + if (this.inMultiSelectMode) + return; + this.inMultiSelectMode = true; + + this.setStyle("ace_multiselect"); + this.keyBinding.addKeyboardHandler(commands.keyboardHandler); + this.commands.setDefaultHandler("exec", this.$onMultiSelectExec); + + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + + this.$onSingleSelect = function(e) { + if (this.session.multiSelect.inVirtualMode) + return; + this.inMultiSelectMode = false; + + this.unsetStyle("ace_multiselect"); + this.keyBinding.removeKeyboardHandler(commands.keyboardHandler); + + this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + this._emit("changeSelection"); + }; + + this.$onMultiSelectExec = function(e) { + var command = e.command; + var editor = e.editor; + if (!editor.multiSelect) + return; + if (!command.multiSelectAction) { + var result = command.exec(editor, e.args || {}); + editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()); + editor.multiSelect.mergeOverlappingRanges(); + } else if (command.multiSelectAction == "forEach") { + result = editor.forEachSelection(command, e.args); + } else if (command.multiSelectAction == "forEachLine") { + result = editor.forEachSelection(command, e.args, true); + } else if (command.multiSelectAction == "single") { + editor.exitMultiSelectMode(); + result = command.exec(editor, e.args || {}); + } else { + result = command.multiSelectAction(editor, e.args || {}); + } + return result; + }; + + /** + * Executes a command for each selection range. + * @param {Object} cmd The command to execute + * @param {String} args Any arguments for the command + * @method Editor.forEachSelection + **/ + this.forEachSelection = function(cmd, args, options) { + if (this.inVirtualSelectionMode) + return; + var keepOrder = options && options.keepOrder; + var $byLines = options == true || options && options.$byLines; + var session = this.session; + var selection = this.selection; + var rangeList = selection.rangeList; + var ranges = (keepOrder ? selection : rangeList).ranges; + var result; + + if (!ranges.length) + return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); + + var reg = selection._eventRegistry; + selection._eventRegistry = {}; + + var tmpSel = new Selection(session); + this.inVirtualSelectionMode = true; + for (var i = ranges.length; i--;) { + if ($byLines) { + while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row) + i--; + } + tmpSel.fromOrientedRange(ranges[i]); + tmpSel.index = i; + this.selection = session.selection = tmpSel; + var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); + if (!result && cmdResult !== undefined) + result = cmdResult; + tmpSel.toOrientedRange(ranges[i]); + } + tmpSel.detach(); + + this.selection = session.selection = selection; + this.inVirtualSelectionMode = false; + selection._eventRegistry = reg; + selection.mergeOverlappingRanges(); + + var anim = this.renderer.$scrollAnimation; + this.onCursorChange(); + this.onSelectionChange(); + if (anim && anim.from == anim.to) + this.renderer.animateScrolling(anim.from); + + return result; + }; + + /** + * Removes all the selections except the last added one. + * @method Editor.exitMultiSelectMode + **/ + this.exitMultiSelectMode = function() { + if (!this.inMultiSelectMode || this.inVirtualSelectionMode) + return; + this.multiSelect.toSingleRange(); + }; + + this.getSelectedText = function() { + var text = ""; + if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { + var ranges = this.multiSelect.rangeList.ranges; + var buf = []; + for (var i = 0; i < ranges.length; i++) { + buf.push(this.session.getTextRange(ranges[i])); + } + var nl = this.session.getDocument().getNewLineCharacter(); + text = buf.join(nl); + if (text.length == (buf.length - 1) * nl.length) + text = ""; + } else if (!this.selection.isEmpty()) { + text = this.session.getTextRange(this.getSelectionRange()); + } + return text; + }; + + this.$checkMultiselectChange = function(e, anchor) { + if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { + var range = this.multiSelect.ranges[0]; + if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor) + return; + var pos = anchor == this.multiSelect.anchor + ? range.cursor == range.start ? range.end : range.start + : range.cursor; + if (pos.row != anchor.row + || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column) + this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()); + } + }; + + /** + * Finds and selects all the occurrences of `needle`. + * @param {String} The text to find + * @param {Object} The search options + * @param {Boolean} keeps + * + * @returns {Number} The cumulative count of all found matches + * @method Editor.findAll + **/ + this.findAll = function(needle, options, additive) { + options = options || {}; + options.needle = needle || options.needle; + if (options.needle == undefined) { + var range = this.selection.isEmpty() + ? this.selection.getWordRange() + : this.selection.getRange(); + options.needle = this.session.getTextRange(range); + } + this.$search.set(options); + + var ranges = this.$search.findAll(this.session); + if (!ranges.length) + return 0; + + var selection = this.multiSelect; + + if (!additive) + selection.toSingleRange(ranges[0]); + + for (var i = ranges.length; i--; ) + selection.addRange(ranges[i], true); + + // keep old selection as primary if possible + if (range && selection.rangeList.rangeAtPoint(range.start)) + selection.addRange(range, true); + + return ranges.length; + }; + + /** + * Adds a cursor above or below the active cursor. + * + * @param {Number} dir The direction of lines to select: -1 for up, 1 for down + * @param {Boolean} skip If `true`, removes the active selection range + * + * @method Editor.selectMoreLines + */ + this.selectMoreLines = function(dir, skip) { + var range = this.selection.toOrientedRange(); + var isBackwards = range.cursor == range.end; + + var screenLead = this.session.documentToScreenPosition(range.cursor); + if (this.selection.$desiredColumn) + screenLead.column = this.selection.$desiredColumn; + + var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column); + + if (!range.isEmpty()) { + var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start); + var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column); + } else { + var anchor = lead; + } + + if (isBackwards) { + var newRange = Range.fromPoints(lead, anchor); + newRange.cursor = newRange.start; + } else { + var newRange = Range.fromPoints(anchor, lead); + newRange.cursor = newRange.end; + } + + newRange.desiredColumn = screenLead.column; + if (!this.selection.inMultiSelectMode) { + this.selection.addRange(range); + } else { + if (skip) + var toRemove = range.cursor; + } + + this.selection.addRange(newRange); + if (toRemove) + this.selection.substractPoint(toRemove); + }; + + /** + * Transposes the selected ranges. + * @param {Number} dir The direction to rotate selections + * @method Editor.transposeSelections + **/ + this.transposeSelections = function(dir) { + var session = this.session; + var sel = session.multiSelect; + var all = sel.ranges; + + for (var i = all.length; i--; ) { + var range = all[i]; + if (range.isEmpty()) { + var tmp = session.getWordRange(range.start.row, range.start.column); + range.start.row = tmp.start.row; + range.start.column = tmp.start.column; + range.end.row = tmp.end.row; + range.end.column = tmp.end.column; + } + } + sel.mergeOverlappingRanges(); + + var words = []; + for (var i = all.length; i--; ) { + var range = all[i]; + words.unshift(session.getTextRange(range)); + } + + if (dir < 0) + words.unshift(words.pop()); + else + words.push(words.shift()); + + for (var i = all.length; i--; ) { + var range = all[i]; + var tmp = range.clone(); + session.replace(range, words[i]); + range.start.row = tmp.start.row; + range.start.column = tmp.start.column; + } + }; + + /** + * Finds the next occurrence of text in an active selection and adds it to the selections. + * @param {Number} dir The direction of lines to select: -1 for up, 1 for down + * @param {Boolean} skip If `true`, removes the active selection range + * @method Editor.selectMore + **/ + this.selectMore = function(dir, skip, stopAtFirst) { + var session = this.session; + var sel = session.multiSelect; + + var range = sel.toOrientedRange(); + if (range.isEmpty()) { + range = session.getWordRange(range.start.row, range.start.column); + range.cursor = dir == -1 ? range.start : range.end; + this.multiSelect.addRange(range); + if (stopAtFirst) + return; + } + var needle = session.getTextRange(range); + + var newRange = find(session, needle, dir); + if (newRange) { + newRange.cursor = dir == -1 ? newRange.start : newRange.end; + this.session.unfold(newRange); + this.multiSelect.addRange(newRange); + this.renderer.scrollCursorIntoView(null, 0.5); + } + if (skip) + this.multiSelect.substractPoint(range.cursor); + }; + + /** + * Aligns the cursors or selected text. + * @method Editor.alignCursors + **/ + this.alignCursors = function() { + var session = this.session; + var sel = session.multiSelect; + var ranges = sel.ranges; + // filter out ranges on same row + var row = -1; + var sameRowRanges = ranges.filter(function(r) { + if (r.cursor.row == row) + return true; + row = r.cursor.row; + }); + + if (!ranges.length || sameRowRanges.length == ranges.length - 1) { + var range = this.selection.getRange(); + var fr = range.start.row, lr = range.end.row; + var guessRange = fr == lr; + if (guessRange) { + var max = this.session.getLength(); + var line; + do { + line = this.session.getLine(lr); + } while (/[=:]/.test(line) && ++lr < max); + do { + line = this.session.getLine(fr); + } while (/[=:]/.test(line) && --fr > 0); + + if (fr < 0) fr = 0; + if (lr >= max) lr = max - 1; + } + var lines = this.session.removeFullLines(fr, lr); + lines = this.$reAlignText(lines, guessRange); + this.session.insert({row: fr, column: 0}, lines.join("\n") + "\n"); + if (!guessRange) { + range.start.column = 0; + range.end.column = lines[lines.length - 1].length; + } + this.selection.setRange(range); + } else { + sameRowRanges.forEach(function(r) { + sel.substractPoint(r.cursor); + }); + + var maxCol = 0; + var minSpace = Infinity; + var spaceOffsets = ranges.map(function(r) { + var p = r.cursor; + var line = session.getLine(p.row); + var spaceOffset = line.substr(p.column).search(/\S/g); + if (spaceOffset == -1) + spaceOffset = 0; + + if (p.column > maxCol) + maxCol = p.column; + if (spaceOffset < minSpace) + minSpace = spaceOffset; + return spaceOffset; + }); + ranges.forEach(function(r, i) { + var p = r.cursor; + var l = maxCol - p.column; + var d = spaceOffsets[i] - minSpace; + if (l > d) + session.insert(p, lang.stringRepeat(" ", l - d)); + else + session.remove(new Range(p.row, p.column, p.row, p.column - l + d)); + + r.start.column = r.end.column = maxCol; + r.start.row = r.end.row = p.row; + r.cursor = r.end; + }); + sel.fromOrientedRange(ranges[0]); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + } + }; + + this.$reAlignText = function(lines, forceLeft) { + var isLeftAligned = true, isRightAligned = true; + var startW, textW, endW; + + return lines.map(function(line) { + var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/); + if (!m) + return [line]; + + if (startW == null) { + startW = m[1].length; + textW = m[2].length; + endW = m[3].length; + return m; + } + + if (startW + textW + endW != m[1].length + m[2].length + m[3].length) + isRightAligned = false; + if (startW != m[1].length) + isLeftAligned = false; + + if (startW > m[1].length) + startW = m[1].length; + if (textW < m[2].length) + textW = m[2].length; + if (endW > m[3].length) + endW = m[3].length; + + return m; + }).map(forceLeft ? alignLeft : + isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign); + + function spaces(n) { + return lang.stringRepeat(" ", n); + } + + function alignLeft(m) { + return !m[2] ? m[0] : spaces(startW) + m[2] + + spaces(textW - m[2].length + endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + function alignRight(m) { + return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2] + + spaces(endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + function unAlign(m) { + return !m[2] ? m[0] : spaces(startW) + m[2] + + spaces(endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + }; +}).call(Editor.prototype); + + +function isSamePoint(p1, p2) { + return p1.row == p2.row && p1.column == p2.column; +} + +// patch +// adds multicursor support to a session +exports.onSessionChange = function(e) { + var session = e.session; + if (session && !session.multiSelect) { + session.$selectionMarkers = []; + session.selection.$initRangeList(); + session.multiSelect = session.selection; + } + this.multiSelect = session && session.multiSelect; + + var oldSession = e.oldSession; + if (oldSession) { + oldSession.multiSelect.off("addRange", this.$onAddRange); + oldSession.multiSelect.off("removeRange", this.$onRemoveRange); + oldSession.multiSelect.off("multiSelect", this.$onMultiSelect); + oldSession.multiSelect.off("singleSelect", this.$onSingleSelect); + oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); + oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); + } + + if (session) { + session.multiSelect.on("addRange", this.$onAddRange); + session.multiSelect.on("removeRange", this.$onRemoveRange); + session.multiSelect.on("multiSelect", this.$onMultiSelect); + session.multiSelect.on("singleSelect", this.$onSingleSelect); + session.multiSelect.lead.on("change", this.$checkMultiselectChange); + session.multiSelect.anchor.on("change", this.$checkMultiselectChange); + } + + if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) { + if (session.selection.inMultiSelectMode) + this.$onMultiSelect(); + else + this.$onSingleSelect(); + } +}; + +// MultiSelect(editor) +// adds multiple selection support to the editor +// (note: should be called only once for each editor instance) +function MultiSelect(editor) { + if (editor.$multiselectOnSessionChange) + return; + editor.$onAddRange = editor.$onAddRange.bind(editor); + editor.$onRemoveRange = editor.$onRemoveRange.bind(editor); + editor.$onMultiSelect = editor.$onMultiSelect.bind(editor); + editor.$onSingleSelect = editor.$onSingleSelect.bind(editor); + editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor); + editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor); + + editor.$multiselectOnSessionChange(editor); + editor.on("changeSession", editor.$multiselectOnSessionChange); + + editor.on("mousedown", onMouseDown); + editor.commands.addCommands(commands.defaultCommands); + + addAltCursorListeners(editor); +} + +function addAltCursorListeners(editor){ + var el = editor.textInput.getElement(); + var altCursor = false; + event.addListener(el, "keydown", function(e) { + var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey); + if (editor.$blockSelectEnabled && altDown) { + if (!altCursor) { + editor.renderer.setMouseCursor("crosshair"); + altCursor = true; + } + } else if (altCursor) { + reset(); + } + }); + + event.addListener(el, "keyup", reset); + event.addListener(el, "blur", reset); + function reset(e) { + if (altCursor) { + editor.renderer.setMouseCursor(""); + altCursor = false; + // TODO disable menu popping up + // e && e.preventDefault() + } + } +} + +exports.MultiSelect = MultiSelect; + + +require("./config").defineOptions(Editor.prototype, "editor", { + enableMultiselect: { + set: function(val) { + MultiSelect(this); + if (val) { + this.on("changeSession", this.$multiselectOnSessionChange); + this.on("mousedown", onMouseDown); + } else { + this.off("changeSession", this.$multiselectOnSessionChange); + this.off("mousedown", onMouseDown); + } + }, + value: true + }, + enableBlockSelect: { + set: function(val) { + this.$blockSelectEnabled = val; + }, + value: true + } +}); + + + +}); diff --git a/plugins/node_modules/ace/lib/ace/multi_select_test.js b/plugins/node_modules/ace/lib/ace/multi_select_test.js new file mode 100644 index 00000000..b08e160c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/multi_select_test.js @@ -0,0 +1,285 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +require("./multi_select"); +var assert = require("./test/assertions"); +var Range = require("./range").Range; +var Editor = require("./editor").Editor; +var EditSession = require("./edit_session").EditSession; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var UndoManager = require("./undomanager").UndoManager; + +var editor; +var exec = function(name, times, args) { + do { + editor.commands.exec(name, editor, args); + } while(times --> 1); +}; +var testRanges = function(str) { + assert.equal(editor.selection.getAllRanges() + "", str + ""); +}; +function getSelection(editor) { + var data = editor.multiSelect.toJSON(); + if (!data.length) data = [data]; + data = data.map(function(x) { + var a, c; + if (x.isBackwards) { + a = x.end; + c = x.start; + } else { + c = x.end; + a = x.start; + } + return Range.comparePoints(a, c) + ? [a.row, a.column, c.row, c.column] + : [a.row, a.column]; + }); + return data.length > 1 ? data : data[0]; +} +function testSelection(editor, data) { + assert.equal(getSelection(editor) + "", data + ""); +} +function setSelection(editor, data) { + if (typeof data[0] == "number") + data = [data]; + editor.selection.fromJSON(data.map(function(x) { + var start = {row: x[0], column: x[1]}; + var end = x.length == 2 ? start : {row: x[2], column: x[3]}; + var isBackwards = Range.comparePoints(start, end) > 0; + return isBackwards ? { + start: end, + end: start, + isBackwards: isBackwards + } : { + start: start, + end: end, + isBackwards: isBackwards + }; + })); +} + +module.exports = { + + name: "ACE multi_select.js", + + "test: multiselect editing": function() { + var doc = new EditSession([ + "w1.w2", + " wtt.w", + " wtt.w" + ]); + editor = new Editor(new MockRenderer(), doc); + + editor.navigateFileEnd(); + exec("selectMoreBefore", 3); + assert.ok(editor.inMultiSelectMode); + assert.equal(editor.selection.getAllRanges().length, 4); + + var newLine = editor.session.getDocument().getNewLineCharacter(); + var copyText = "wwww".split("").join(newLine); + assert.equal(editor.getCopyText(), copyText); + exec("insertstring", 1, "a"); + exec("backspace", 2); + assert.equal(editor.session.getValue(), "w1.w2\ntt\ntt"); + assert.equal(editor.selection.getAllRanges().length, 4); + + exec("selectall"); + assert.ok(!editor.inMultiSelectMode); + //assert.equal(editor.selection.getAllRanges().length, 1); + }, + + "test: multiselect navigation": function() { + var doc = new EditSession([ + "w1.w2", + " wtt.w", + " wtt.we" + ]); + editor = new Editor(new MockRenderer(), doc); + + editor.selectMoreLines(1); + testRanges("Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]"); + assert.ok(editor.inMultiSelectMode); + + exec("golinedown"); + exec("gotolineend"); + testRanges("Range: [1/9] -> [1/9],Range: [2/10] -> [2/10]"); + exec("selectwordleft"); + + testRanges("Range: [1/8] -> [1/9],Range: [2/8] -> [2/10]"); + exec("golinedown", 2); + assert.ok(!editor.inMultiSelectMode); + }, + + "test: multiselect session change": function() { + var doc = new EditSession([ + "w1.w2", + " wtt.w", + " wtt.w" + ]); + editor = new Editor(new MockRenderer(), doc); + + editor.selectMoreLines(1); + testRanges("Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]"); + assert.ok(editor.inMultiSelectMode); + + var doc2 = new EditSession(["w1"]); + editor.setSession(doc2); + assert.ok(!editor.inMultiSelectMode); + + editor.setSession(doc); + assert.ok(editor.inMultiSelectMode); + }, + + "test: multiselect addRange": function() { + var doc = new EditSession([ + "w1.w2", + " wtt.w", + " wtt.w" + ]); + editor = new Editor(new MockRenderer(), doc); + var selection = editor.selection; + + var range1 = new Range(0, 2, 0, 4); + editor.selection.fromOrientedRange(range1); + + var range2 = new Range(0, 3, 0, 4); + selection.addRange(range2); + assert.ok(!editor.inMultiSelectMode); + assert.ok(range2.isEqual(editor.selection.getRange())); + + var range3 = new Range(0, 1, 0, 1); + selection.addRange(range3); + assert.ok(editor.inMultiSelectMode); + testRanges([range3, range2]); + + var range4 = new Range(0, 0, 4, 0); + selection.addRange(range4); + assert.ok(!editor.inMultiSelectMode); + }, + + "test: onPaste in command with multiselect": function() { + var doc = new EditSession(["l1", "l2"]); + editor = new Editor(new MockRenderer(), doc); + editor.commands.addCommand({ + name: 'insertfoo', + exec: function(ed) { ed.onPaste('foo'); }, + multiSelectAction: "forEach" + }); + var selection = editor.selection; + var range1 = new Range(0,2,0,2); + var range2 = new Range(1,2,1,2); + selection.fromOrientedRange(range1); + selection.addRange(range2); + editor.execCommand('insertfoo'); + assert.equal('l1foo\nl2foo', editor.getValue()); + }, + + "test multiselect move lines": function() { + editor = new Editor(new MockRenderer()); + + editor.setValue("l1\nl2\nl3\nl4", -1); + setSelection(editor, [[0,2],[1,2],[2,2],[3,2]]); + + exec("copylinesdown"); + assert.equal(editor.getValue(),"l1\nl1\nl2\nl2\nl3\nl3\nl4\nl4"); + testSelection(editor, [[1,2],[3,2],[5,2],[7,2]]); + exec("copylinesup"); + assert.equal(editor.getValue(),"l1\nl1\nl1\nl2\nl2\nl2\nl3\nl3\nl3\nl4\nl4\nl4"); + testSelection(editor, [[1,2],[4,2],[7,2],[10,2]]); + exec("removeline"); + assert.equal(editor.getValue(),"l1\nl1\nl2\nl2\nl3\nl3\nl4\nl4"); + testSelection(editor, [[1,0],[3,0],[5,0],[7,0]]); + + setSelection(editor, [[1,2],[1,1,1,0],[3,0,3,1],[5,0,5,1],[7,0,7,1]]); + exec("copylinesdown"); + exec("copylinesup"); + assert.equal(editor.getValue(),"l1\nl1\nl1\nl1\nl2\nl2\nl2\nl2\nl3\nl3\nl3\nl3\nl4\nl4\nl4\nl4"); + testSelection(editor, [[2,2],[2,1,2,0],[6,0,6,1],[10,0,10,1],[14,0,14,1]]); + + exec("movelinesdown", 12); + assert.equal(editor.getValue(),"l1\nl1\nl1\nl2\nl2\nl2\nl3\nl3\nl3\nl4\nl4\nl4\nl1\nl2\nl3\nl4"); + testSelection(editor, [[12,2],[12,1,12,0],[13,0,13,1],[14,0,14,1],[15,0,15,1]]); + + exec("movelinesup", 12); + assert.equal(editor.getValue(),"l1\nl2\nl3\nl4\nl1\nl1\nl1\nl2\nl2\nl2\nl3\nl3\nl3\nl4\nl4\nl4"); + testSelection(editor, [[0,2],[0,1,0,0],[1,0,1,1],[2,0,2,1],[3,0,3,1]]); + }, + + "test multiselect fromJSON/toJSON": function() { + var doc = new EditSession(["l1", "l2"]); + editor = new Editor(new MockRenderer(), doc); + var selection = editor.selection; + + var before = selection.toJSON(); + + var range1 = new Range(0,2,0,2); + var range2 = new Range(1,2,1,2); + selection.fromOrientedRange(range1); + selection.addRange(range2); + + var after = selection.toJSON(); + + selection.fromJSON(before); + assert.ok(!selection.isEqual(after)); + assert.ok(selection.isEqual(before)); + + selection.fromJSON(after); + assert.ok(!selection.isEqual(before)); + assert.ok(selection.isEqual(after)); + }, + + "test multiselect align": function() { + var doc = new EditSession(["l1", "l2", "l3"]); + doc.setUndoManager(new UndoManager()); + editor = new Editor(new MockRenderer(), doc); + var selection = editor.selection; + selection.addRange(new Range(1,0,1,0)); + selection.addRange(new Range(2,2,2,2)); + editor.execCommand("alignCursors"); + assert.equal(' l1\n l2\nl3', editor.getValue()); + doc.markUndoGroup(); + editor.execCommand("undo"); + assert.equal('l1\nl2\nl3', editor.getValue()); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/occur.js b/plugins/node_modules/ace/lib/ace/occur.js new file mode 100644 index 00000000..32c5f0ab --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/occur.js @@ -0,0 +1,191 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var Range = require("./range").Range; +var Search = require("./search").Search; +var EditSession = require("./edit_session").EditSession; +var SearchHighlight = require("./search_highlight").SearchHighlight; + +/** + * @class Occur + * + * Finds all lines matching a search term in the current [[Document + * `Document`]] and displays them instead of the original `Document`. Keeps + * track of the mapping between the occur doc and the original doc. + * + **/ + + +/** + * Creates a new `Occur` object. + * + * @constructor + **/ +function Occur() {} + +oop.inherits(Occur, Search); + +(function() { + + /** + * Enables occur mode. expects that `options.needle` is a search term. + * This search term is used to filter out all the lines that include it + * and these are then used as the content of a new [[Document + * `Document`]]. The current cursor position of editor will be translated + * so that the cursor is on the matching row/column as it was before. + * @param {Editor} editor + * @param {Object} options options.needle should be a String + * @return {Boolean} Whether occur activation was successful + * + **/ + this.enter = function(editor, options) { + if (!options.needle) return false; + var pos = editor.getCursorPosition(); + this.displayOccurContent(editor, options); + var translatedPos = this.originalToOccurPosition(editor.session, pos); + editor.moveCursorToPosition(translatedPos); + return true; + }; + + /** + * Disables occur mode. Resets the [[Sessions `EditSession`]] [[Document + * `Document`]] back to the original doc. If options.translatePosition is + * truthy also maps the [[Editors `Editor`]] cursor position accordingly. + * @param {Editor} editor + * @param {Object} options options.translatePosition + * @return {Boolean} Whether occur deactivation was successful + * + **/ + this.exit = function(editor, options) { + var pos = options.translatePosition && editor.getCursorPosition(); + var translatedPos = pos && this.occurToOriginalPosition(editor.session, pos); + this.displayOriginalContent(editor); + if (translatedPos) + editor.moveCursorToPosition(translatedPos); + return true; + }; + + this.highlight = function(sess, regexp) { + var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker( + new SearchHighlight(null, "ace_occur-highlight", "text")); + hl.setRegexp(regexp); + sess._emit("changeBackMarker"); // force highlight layer redraw + }; + + this.displayOccurContent = function(editor, options) { + // this.setSession(session || new EditSession("")) + this.$originalSession = editor.session; + var found = this.matchingLines(editor.session, options); + var lines = found.map(function(foundLine) { return foundLine.content; }); + var occurSession = new EditSession(lines.join('\n')); + occurSession.$occur = this; + occurSession.$occurMatchingLines = found; + editor.setSession(occurSession); + this.$useEmacsStyleLineStart = this.$originalSession.$useEmacsStyleLineStart; + occurSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; + this.highlight(occurSession, options.re); + occurSession._emit('changeBackMarker'); + }; + + this.displayOriginalContent = function(editor) { + editor.setSession(this.$originalSession); + this.$originalSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; + }; + + /** + * Translates the position from the original document to the occur lines in + * the document or the beginning if the doc {row: 0, column: 0} if not + * found. + * @param {EditSession} session The occur session + * @param {Object} pos The position in the original document + * @return {Object} position in occur doc + **/ + this.originalToOccurPosition = function(session, pos) { + var lines = session.$occurMatchingLines; + var nullPos = {row: 0, column: 0}; + if (!lines) return nullPos; + for (var i = 0; i < lines.length; i++) { + if (lines[i].row === pos.row) + return {row: i, column: pos.column}; + } + return nullPos; + }; + + /** + * Translates the position from the occur document to the original document + * or `pos` if not found. + * @param {EditSession} session The occur session + * @param {Object} pos The position in the occur session document + * @return {Object} position + **/ + this.occurToOriginalPosition = function(session, pos) { + var lines = session.$occurMatchingLines; + if (!lines || !lines[pos.row]) + return pos; + return {row: lines[pos.row].row, column: pos.column}; + }; + + this.matchingLines = function(session, options) { + options = oop.mixin({}, options); + if (!session || !options.needle) return []; + var search = new Search(); + search.set(options); + return search.findAll(session).reduce(function(lines, range) { + var row = range.start.row; + var last = lines[lines.length-1]; + return last && last.row === row ? + lines : + lines.concat({row: row, content: session.getLine(row)}); + }, []); + }; + +}).call(Occur.prototype); + +var dom = require('./lib/dom'); +dom.importCssString(".ace_occur-highlight {\n\ + border-radius: 4px;\n\ + background-color: rgba(87, 255, 8, 0.25);\n\ + position: absolute;\n\ + z-index: 4;\n\ + box-sizing: border-box;\n\ + box-shadow: 0 0 4px rgb(91, 255, 50);\n\ +}\n\ +.ace_dark .ace_occur-highlight {\n\ + background-color: rgb(80, 140, 85);\n\ + box-shadow: 0 0 4px rgb(60, 120, 70);\n\ +}\n", "incremental-occur-highlighting"); + +exports.Occur = Occur; + +}); diff --git a/plugins/node_modules/ace/lib/ace/occur_test.js b/plugins/node_modules/ace/lib/ace/occur_test.js new file mode 100644 index 00000000..8532b099 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/occur_test.js @@ -0,0 +1,154 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var Range = require("./range").Range; +var assert = require("./test/assertions"); +var Occur = require("./occur").Occur; +var occurStartCommand = require("./commands/occur_commands").occurStartCommand; +var editor, occur; + +module.exports = { + + name: "ACE occur.js", + + setUp: function() { + var session = new EditSession(''); + editor = new Editor(new MockRenderer(), session); + occur = new Occur(); + }, + + "test: find lines matching" : function() { + editor.session.insert({row: 0, column: 0}, 'abc\ndef\nxyz\nbcxbc'); + var result = occur.matchingLines(editor.session, {needle: 'bc'}), + expected = [{row: 0, content: 'abc'}, {row: 3, content: 'bcxbc'}]; + assert.deepEqual(result, expected); + }, + + "test: display occurrences" : function() { + var text = 'abc\ndef\nxyz\nbcx\n'; + editor.session.insert({row: 0, column: 0}, text); + occur.displayOccurContent(editor, {needle: 'bc'}); + assert.equal(editor.getValue(), 'abc\nbcx'); + occur.displayOriginalContent(editor); + assert.equal(editor.getValue(), text); + }, + + "test: original position from occur doc" : function() { + var text = 'abc\ndef\nxyz\nbcx\n'; + editor.session.insert({row: 0, column: 0}, text); + occur.displayOccurContent(editor, {needle: 'bc'}); + assert.equal(editor.getValue(), 'abc\nbcx'); + var pos = occur.occurToOriginalPosition(editor.session, {row: 1, column: 2}); + assert.position(pos, 3, 2); + }, + + "test: occur command" : function() { + // setup + var text = 'hel\nlo\n\nwo\nrld\n'; + editor.session.insert({row: 0, column: 0}, text); + editor.commands.addCommand(occurStartCommand); + + // run occur for lines including 'o' + editor.execCommand('occur', {needle: 'o'}); + assert.equal(editor.getValue(), 'lo\nwo'); + // command install OK? + // assert.ok(editor.getReadOnly(), 'occur doc not marked as read only'); + assert.ok(editor.getKeyboardHandler().isOccurHandler, 'no occur handler installed'); + assert.ok(editor.commands.byName.occurexit, 'no exitoccur command installed'); + + // exit occur + editor.execCommand('occurexit'); + assert.equal(editor.getValue(), text); + + // editor state cleaned up? + // assert.ok(!editor.getReadOnly(), 'original doc is marked as read only'); + assert.ok(!editor.getKeyboardHandler().isOccurHandler, 'occur handler installed after detach'); + assert.ok(!editor.commands.byName.occurexit, 'exitoccur installed after exiting occur'); + }, + + "test: occur navigation" : function() { + // setup + var text = 'hel\nlo\n\nwo\nrld\n'; + editor.session.insert({row: 0, column: 0}, text); + editor.commands.addCommand(occurStartCommand); + editor.moveCursorToPosition({row: 1, column: 1}); + + // run occur for lines including 'o' + editor.execCommand('occur', {needle: 'o'}); + assert.equal(editor.getValue(), 'lo\nwo'); + assert.position(editor.getCursorPosition(), 0, 1, 'original -> occur pos'); + + // move to second line and accept + editor.moveCursorToPosition({row: 1, column: 1}); + editor.execCommand('occuraccept'); + + assert.position(editor.getCursorPosition(), 3, 1, 'occur -> original pos'); + }, + + "test: recursive occur" : function() { + // setup + var text = 'x\nabc1\nx\nabc2\n'; + editor.session.insert({row: 0, column: 0}, text); + editor.commands.addCommand(occurStartCommand); + + // orig -> occur1 + editor.execCommand('occur', {needle: 'abc'}); + assert.equal(editor.getValue(), 'abc1\nabc2', "orig -> occur1"); + + // occur1 -> occur2 + editor.execCommand('occur', {needle: '2'}); + assert.equal(editor.getValue(), 'abc2', "occur1 -> occur2"); + + // occur2 -> occur1 + editor.execCommand('occurexit'); + assert.equal(editor.getValue(), 'abc1\nabc2', "occur2 -> occur1"); + + // occur1 -> orig + editor.execCommand('occurexit'); + assert.equal(editor.getValue(), text, "occur1 -> orig"); + } + +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/placeholder.js b/plugins/node_modules/ace/lib/ace/placeholder.js new file mode 100644 index 00000000..88b96dd5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/placeholder.js @@ -0,0 +1,262 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +define(function(require, exports, module) { +"use strict"; + +var Range = require("./range").Range; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var oop = require("./lib/oop"); + +/** + * @class PlaceHolder + * + **/ + +/** + * - session (Document): The document to associate with the anchor + * - length (Number): The starting row position + * - pos (Number): The starting column position + * - others (String): + * - mainClass (String): + * - othersClass (String): + * + * @constructor + **/ + +var PlaceHolder = function(session, length, pos, others, mainClass, othersClass) { + var _self = this; + this.length = length; + this.session = session; + this.doc = session.getDocument(); + this.mainClass = mainClass; + this.othersClass = othersClass; + this.$onUpdate = this.onUpdate.bind(this); + this.doc.on("change", this.$onUpdate); + this.$others = others; + + this.$onCursorChange = function() { + setTimeout(function() { + _self.onCursorChange(); + }); + }; + + this.$pos = pos; + // Used for reset + var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1}; + this.$undoStackDepth = undoStack.length; + this.setup(); + + session.selection.on("changeCursor", this.$onCursorChange); +}; + +(function() { + + oop.implement(this, EventEmitter); + + /** + * PlaceHolder.setup() + * + * TODO + * + **/ + this.setup = function() { + var _self = this; + var doc = this.doc; + var session = this.session; + + this.selectionBefore = session.selection.toJSON(); + if (session.selection.inMultiSelectMode) + session.selection.toSingleRange(); + + this.pos = doc.createAnchor(this.$pos.row, this.$pos.column); + var pos = this.pos; + pos.$insertRight = true; + pos.detach(); + pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false); + this.others = []; + this.$others.forEach(function(other) { + var anchor = doc.createAnchor(other.row, other.column); + anchor.$insertRight = true; + anchor.detach(); + _self.others.push(anchor); + }); + session.setUndoSelect(false); + }; + + /** + * PlaceHolder.showOtherMarkers() + * + * TODO + * + **/ + this.showOtherMarkers = function() { + if (this.othersActive) return; + var session = this.session; + var _self = this; + this.othersActive = true; + this.others.forEach(function(anchor) { + anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false); + }); + }; + + /** + * PlaceHolder.hideOtherMarkers() + * + * Hides all over markers in the [[EditSession `EditSession`]] that are not the currently selected one. + * + **/ + this.hideOtherMarkers = function() { + if (!this.othersActive) return; + this.othersActive = false; + for (var i = 0; i < this.others.length; i++) { + this.session.removeMarker(this.others[i].markerId); + } + }; + + /** + * PlaceHolder@onUpdate(e) + * + * Emitted when the place holder updates. + * + **/ + this.onUpdate = function(delta) { + if (this.$updating) + return this.updateAnchors(delta); + + var range = delta; + if (range.start.row !== range.end.row) return; + if (range.start.row !== this.pos.row) return; + this.$updating = true; + var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column; + var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1; + var distanceFromStart = range.start.column - this.pos.column; + + this.updateAnchors(delta); + + if (inMainRange) + this.length += lengthDiff; + + if (inMainRange && !this.session.$fromUndo) { + if (delta.action === 'insert') { + for (var i = this.others.length - 1; i >= 0; i--) { + var otherPos = this.others[i]; + var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart}; + this.doc.insertMergedLines(newPos, delta.lines); + } + } else if (delta.action === 'remove') { + for (var i = this.others.length - 1; i >= 0; i--) { + var otherPos = this.others[i]; + var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart}; + this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff)); + } + } + } + + this.$updating = false; + this.updateMarkers(); + }; + + this.updateAnchors = function(delta) { + this.pos.onChange(delta); + for (var i = this.others.length; i--;) + this.others[i].onChange(delta); + this.updateMarkers(); + }; + + this.updateMarkers = function() { + if (this.$updating) + return; + var _self = this; + var session = this.session; + var updateMarker = function(pos, className) { + session.removeMarker(pos.markerId); + pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false); + }; + updateMarker(this.pos, this.mainClass); + for (var i = this.others.length; i--;) + updateMarker(this.others[i], this.othersClass); + }; + + /** + * PlaceHolder@onCursorChange(e) + * + * Emitted when the cursor changes. + * + **/ + + this.onCursorChange = function(event) { + if (this.$updating || !this.session) return; + var pos = this.session.selection.getCursor(); + if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) { + this.showOtherMarkers(); + this._emit("cursorEnter", event); + } else { + this.hideOtherMarkers(); + this._emit("cursorLeave", event); + } + }; + + /** + * PlaceHolder.detach() + * + * TODO + * + **/ + this.detach = function() { + this.session.removeMarker(this.pos && this.pos.markerId); + this.hideOtherMarkers(); + this.doc.removeEventListener("change", this.$onUpdate); + this.session.selection.removeEventListener("changeCursor", this.$onCursorChange); + this.session.setUndoSelect(true); + this.session = null; + }; + + /** + * PlaceHolder.cancel() + * + * TODO + * + **/ + this.cancel = function() { + if (this.$undoStackDepth === -1) + return; + var undoManager = this.session.getUndoManager(); + var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth; + for (var i = 0; i < undosRequired; i++) { + undoManager.undo(this.session, true); + } + if (this.selectionBefore) + this.session.selection.fromJSON(this.selectionBefore); + }; +}).call(PlaceHolder.prototype); + + +exports.PlaceHolder = PlaceHolder; +}); diff --git a/plugins/node_modules/ace/lib/ace/placeholder_test.js b/plugins/node_modules/ace/lib/ace/placeholder_test.js new file mode 100644 index 00000000..7e8250b0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/placeholder_test.js @@ -0,0 +1,157 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var assert = require("./test/assertions"); +var JavaScriptMode = require("./mode/javascript").Mode; +var PlaceHolder = require("./placeholder").PlaceHolder; +var UndoManager = require("./undomanager").UndoManager; +require("./multi_select"); + +module.exports = { + + "test: simple at the end appending of text" : function() { + var session = new EditSession("var a = 10;\nconsole.log(a, a);", new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + new PlaceHolder(session, 1, {row: 0, column: 4}, [{row: 1, column: 12}, {row: 1, column: 15}]); + + editor.moveCursorTo(0, 5); + editor.insert('b'); + assert.equal(session.doc.getValue(), "var ab = 10;\nconsole.log(ab, ab);"); + editor.insert('cd'); + assert.equal(session.doc.getValue(), "var abcd = 10;\nconsole.log(abcd, abcd);"); + editor.remove('left'); + editor.remove('left'); + editor.remove('left'); + assert.equal(session.doc.getValue(), "var a = 10;\nconsole.log(a, a);"); + }, + + "test: inserting text outside placeholder" : function() { + var session = new EditSession("var a = 10;\nconsole.log(a, a);\n", new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + new PlaceHolder(session, 1, {row: 0, column: 4}, [{row: 1, column: 12}, {row: 1, column: 15}]); + + editor.moveCursorTo(2, 0); + editor.insert('b'); + assert.equal(session.doc.getValue(), "var a = 10;\nconsole.log(a, a);\nb"); + }, + + "test: insertion at the beginning" : function(next) { + var session = new EditSession("var a = 10;\nconsole.log(a, a);", new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + var p = new PlaceHolder(session, 1, {row: 0, column: 4}, [{row: 1, column: 12}, {row: 1, column: 15}]); + + editor.moveCursorTo(0, 4); + editor.insert('$'); + assert.equal(session.doc.getValue(), "var $a = 10;\nconsole.log($a, $a);"); + editor.moveCursorTo(0, 4); + // Have to put this in a setTimeout because the anchor is only fixed later. + setTimeout(function() { + editor.insert('v'); + assert.equal(session.doc.getValue(), "var v$a = 10;\nconsole.log(v$a, v$a);"); + next(); + }, 20); + }, + + "test: detaching placeholder" : function() { + var session = new EditSession("var a = 10;\nconsole.log(a, a);", new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + var p = new PlaceHolder(session, 1, {row: 0, column: 4}, [{row: 1, column: 12}, {row: 1, column: 15}]); + + editor.moveCursorTo(0, 5); + editor.insert('b'); + assert.equal(session.doc.getValue(), "var ab = 10;\nconsole.log(ab, ab);"); + p.detach(); + editor.insert('cd'); + assert.equal(session.doc.getValue(), "var abcd = 10;\nconsole.log(ab, ab);"); + }, + + "test: events" : function() { + var session = new EditSession("var a = 10;\nconsole.log(a, a);", new JavaScriptMode()); + var editor = new Editor(new MockRenderer(), session); + + var p = new PlaceHolder(session, 1, {row: 0, column: 4}, [{row: 1, column: 12}, {row: 1, column: 15}]); + var entered = false; + var left = false; + p.on("cursorEnter", function() { + entered = true; + }); + p.on("cursorLeave", function() { + left = true; + }); + + editor.moveCursorTo(0, 0); + editor.moveCursorTo(0, 4); + p.onCursorChange(); // Have to do this by hand because moveCursorTo doesn't trigger the event + assert.ok(entered); + editor.moveCursorTo(1, 0); + p.onCursorChange(); // Have to do this by hand because moveCursorTo doesn't trigger the event + assert.ok(left); + }, + + "test: cancel": function(next) { + var session = new EditSession("var a = 10;\nconsole.log(a, a);", new JavaScriptMode()); + session.setUndoManager(new UndoManager()); + var editor = new Editor(new MockRenderer(), session); + var p = new PlaceHolder(session, 1, {row: 0, column: 4}, [{row: 1, column: 12}, {row: 1, column: 15}]); + + editor.moveCursorTo(0, 5); + editor.insert('b'); + editor.insert('cd'); + editor.remove('left'); + assert.equal(session.doc.getValue(), "var abc = 10;\nconsole.log(abc, abc);"); + // Wait a little for the changes to enter the undo stack + setTimeout(function() { + p.cancel(); + assert.equal(session.doc.getValue(), "var a = 10;\nconsole.log(a, a);"); + next(); + }, 80); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/range.js b/plugins/node_modules/ace/lib/ace/range.js new file mode 100644 index 00000000..c3d0d0d6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/range.js @@ -0,0 +1,549 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var comparePoints = function(p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +/** + * This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogous to a range, as ranges contain a starting row and starting column, and an ending row, and ending column. + * @class Range + **/ + +/** + * Creates a new `Range` object with the given starting and ending row and column points. + * @param {Number} startRow The starting row + * @param {Number} startColumn The starting column + * @param {Number} endRow The ending row + * @param {Number} endColumn The ending column + * + * @constructor + **/ +var Range = function(startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + + this.end = { + row: endRow, + column: endColumn + }; +}; + +(function() { + /** + * Returns `true` if and only if the starting row and column, and ending row and column, are equivalent to those given by `range`. + * @param {Range} range A range to check against + * + * @return {Boolean} + **/ + this.isEqual = function(range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + + /** + * + * Returns a string containing the range's row and column information, given like this: + * ``` + * [start.row/start.column] -> [end.row/end.column] + * ``` + * @return {String} + **/ + this.toString = function() { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + + /** + * + * Returns `true` if the `row` and `column` provided are within the given range. This can better be expressed as returning `true` if: + * ```javascript + * this.start.row <= row <= this.end.row && + * this.start.column <= column <= this.end.column + * ``` + * @param {Number} row A row to check for + * @param {Number} column A column to check for + * @returns {Boolean} + * @related Range.compare + **/ + + this.contains = function(row, column) { + return this.compare(row, column) == 0; + }; + + /** + * Compares `this` range (A) with another range (B). + * @param {Range} range A range to compare with + * + * @related Range.compare + * @returns {Number} This method returns one of the following numbers:<br/> + * <br/> + * * `-2`: (B) is in front of (A), and doesn't intersect with (A)<br/> + * * `-1`: (B) begins before (A) but ends inside of (A)<br/> + * * `0`: (B) is completely inside of (A) OR (A) is completely inside of (B)<br/> + * * `+1`: (B) begins inside of (A) but ends outside of (A)<br/> + * * `+2`: (B) is after (A) and doesn't intersect with (A)<br/> + * * `42`: FTW state: (B) ends in (A) but starts outside of (A) + **/ + this.compareRange = function(range) { + var cmp, + end = range.end, + start = range.start; + + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } else if (cmp == 0) { + return 1; + } else { + return 0; + } + } else if (cmp == -1) { + return -2; + } else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } else if (cmp == 1) { + return 42; + } else { + return 0; + } + } + }; + + /** + * Checks the row and column points of `p` with the row and column points of the calling range. + * + * @param {Range} p A point to compare with + * + * @related Range.compare + * @returns {Number} This method returns one of the following numbers:<br/> + * * `0` if the two points are exactly equal<br/> + * * `-1` if `p.row` is less then the calling range<br/> + * * `1` if `p.row` is greater than the calling range<br/> + * <br/> + * If the starting row of the calling range is equal to `p.row`, and:<br/> + * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/> + * * Otherwise, it returns -1<br/> + *<br/> + * If the ending row of the calling range is equal to `p.row`, and:<br/> + * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/> + * * Otherwise, it returns 1<br/> + **/ + this.comparePoint = function(p) { + return this.compare(p.row, p.column); + }; + + /** + * Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range. + * @param {Range} range A range to compare with + * + * @returns {Boolean} + * @related Range.comparePoint + **/ + this.containsRange = function(range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + + /** + * Returns `true` if passed in `range` intersects with the one calling this method. + * @param {Range} range A range to compare with + * + * @returns {Boolean} + **/ + this.intersects = function(range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + + /** + * Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * @returns {Boolean} + **/ + this.isEnd = function(row, column) { + return this.end.row == row && this.end.column == column; + }; + + /** + * Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * @returns {Boolean} + **/ + this.isStart = function(row, column) { + return this.start.row == row && this.start.column == column; + }; + + /** + * Sets the starting row and column for the range. + * @param {Number} row A row point to set + * @param {Number} column A column point to set + * + **/ + this.setStart = function(row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } else { + this.start.row = row; + this.start.column = column; + } + }; + + /** + * Sets the starting row and column for the range. + * @param {Number} row A row point to set + * @param {Number} column A column point to set + * + **/ + this.setEnd = function(row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } else { + this.end.row = row; + this.end.column = column; + } + }; + + /** + * Returns `true` if the `row` and `column` are within the given range. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * + * @returns {Boolean} + * @related Range.compare + **/ + this.inside = function(row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } else { + return true; + } + } + return false; + }; + + /** + * Returns `true` if the `row` and `column` are within the given range's starting points. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * @returns {Boolean} + * @related Range.compare + **/ + this.insideStart = function(row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } else { + return true; + } + } + return false; + }; + + /** + * Returns `true` if the `row` and `column` are within the given range's ending points. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * @returns {Boolean} + * @related Range.compare + * + **/ + this.insideEnd = function(row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } else { + return true; + } + } + return false; + }; + + /** + * Checks the row and column points with the row and column points of the calling range. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * + * @returns {Number} This method returns one of the following numbers:<br/> + * `0` if the two points are exactly equal <br/> + * `-1` if `p.row` is less then the calling range <br/> + * `1` if `p.row` is greater than the calling range <br/> + * <br/> + * If the starting row of the calling range is equal to `p.row`, and: <br/> + * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/> + * Otherwise, it returns -1<br/> + * <br/> + * If the ending row of the calling range is equal to `p.row`, and: <br/> + * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/> + * Otherwise, it returns 1 + **/ + this.compare = function(row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + + if (row < this.start.row) + return -1; + + if (row > this.end.row) + return 1; + + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + + return 0; + }; + + /** + * Checks the row and column points with the row and column points of the calling range. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * @returns {Number} This method returns one of the following numbers:<br/> + * <br/> + * `0` if the two points are exactly equal<br/> + * `-1` if `p.row` is less then the calling range<br/> + * `1` if `p.row` is greater than the calling range, or if `isStart` is `true`.<br/> + * <br/> + * If the starting row of the calling range is equal to `p.row`, and:<br/> + * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/> + * Otherwise, it returns -1<br/> + * <br/> + * If the ending row of the calling range is equal to `p.row`, and:<br/> + * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/> + * Otherwise, it returns 1 + * + **/ + this.compareStart = function(row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } else { + return this.compare(row, column); + } + }; + + /** + * Checks the row and column points with the row and column points of the calling range. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * + * @returns {Number} This method returns one of the following numbers:<br/> + * `0` if the two points are exactly equal<br/> + * `-1` if `p.row` is less then the calling range<br/> + * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/> + * <br/> + * If the starting row of the calling range is equal to `p.row`, and:<br/> + * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/> + * Otherwise, it returns -1<br/> + *<br/> + * If the ending row of the calling range is equal to `p.row`, and:<br/> + * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/> + * Otherwise, it returns 1 + */ + this.compareEnd = function(row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } else { + return this.compare(row, column); + } + }; + + /** + * Checks the row and column points with the row and column points of the calling range. + * @param {Number} row A row point to compare with + * @param {Number} column A column point to compare with + * + * + * @returns {Number} This method returns one of the following numbers:<br/> + * * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/> + * * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/> + * <br/> + * Otherwise, it returns the value after calling [[Range.compare `compare()`]]. + * + **/ + this.compareInside = function(row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } else if (this.start.row == row && this.start.column == column) { + return -1; + } else { + return this.compare(row, column); + } + }; + + /** + * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object. + * @param {Number} firstRow The starting row + * @param {Number} lastRow The ending row + * + * + * @returns {Range} + **/ + this.clipRows = function(firstRow, lastRow) { + if (this.end.row > lastRow) + var end = {row: lastRow + 1, column: 0}; + else if (this.end.row < firstRow) + var end = {row: firstRow, column: 0}; + + if (this.start.row > lastRow) + var start = {row: lastRow + 1, column: 0}; + else if (this.start.row < firstRow) + var start = {row: firstRow, column: 0}; + + return Range.fromPoints(start || this.start, end || this.end); + }; + + /** + * Changes the row and column points for the calling range for both the starting and ending points. + * @param {Number} row A new row to extend to + * @param {Number} column A new column to extend to + * + * + * @returns {Range} The original range with the new row + **/ + this.extend = function(row, column) { + var cmp = this.compare(row, column); + + if (cmp == 0) + return this; + else if (cmp == -1) + var start = {row: row, column: column}; + else + var end = {row: row, column: column}; + + return Range.fromPoints(start || this.start, end || this.end); + }; + + this.isEmpty = function() { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + + /** + * + * Returns `true` if the range spans across multiple lines. + * @returns {Boolean} + **/ + this.isMultiLine = function() { + return (this.start.row !== this.end.row); + }; + + /** + * + * Returns a duplicate of the calling range. + * @returns {Range} + **/ + this.clone = function() { + return Range.fromPoints(this.start, this.end); + }; + + /** + * + * Returns a range containing the starting and ending rows of the original range, but with a column value of `0`. + * @returns {Range} + **/ + this.collapseRows = function() { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + + /** + * Given the current `Range`, this function converts those starting and ending points into screen positions, and then returns a new `Range` object. + * @param {EditSession} session The `EditSession` to retrieve coordinates from + * + * + * @returns {Range} + **/ + this.toScreenRange = function(session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + + return new Range( + screenPosStart.row, screenPosStart.column, + screenPosEnd.row, screenPosEnd.column + ); + }; + + + /* experimental */ + this.moveBy = function(row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; + +}).call(Range.prototype); + +/** + * Creates and returns a new `Range` based on the row and column of the given parameters. + * @param {Range} start A starting point to use + * @param {Range} end An ending point to use + * + * @returns {Range} +**/ +Range.fromPoints = function(start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; + +Range.comparePoints = function(p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; + + +exports.Range = Range; +}); diff --git a/plugins/node_modules/ace/lib/ace/range_list.js b/plugins/node_modules/ace/lib/ace/range_list.js new file mode 100644 index 00000000..149d6372 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/range_list.js @@ -0,0 +1,239 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var Range = require("./range").Range; +var comparePoints = Range.comparePoints; + +var RangeList = function() { + this.ranges = []; +}; + +(function() { + this.comparePoints = comparePoints; + + this.pointIndex = function(pos, excludeEdges, startIndex) { + var list = this.ranges; + + for (var i = startIndex || 0; i < list.length; i++) { + var range = list[i]; + var cmpEnd = comparePoints(pos, range.end); + if (cmpEnd > 0) + continue; + var cmpStart = comparePoints(pos, range.start); + if (cmpEnd === 0) + return excludeEdges && cmpStart !== 0 ? -i-2 : i; + if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges)) + return i; + + return -i-1; + } + return -i - 1; + }; + + this.add = function(range) { + var excludeEdges = !range.isEmpty(); + var startIndex = this.pointIndex(range.start, excludeEdges); + if (startIndex < 0) + startIndex = -startIndex - 1; + + var endIndex = this.pointIndex(range.end, excludeEdges, startIndex); + + if (endIndex < 0) + endIndex = -endIndex - 1; + else + endIndex++; + return this.ranges.splice(startIndex, endIndex - startIndex, range); + }; + + this.addList = function(list) { + var removed = []; + for (var i = list.length; i--; ) { + removed.push.apply(removed, this.add(list[i])); + } + return removed; + }; + + this.substractPoint = function(pos) { + var i = this.pointIndex(pos); + + if (i >= 0) + return this.ranges.splice(i, 1); + }; + + // merge overlapping ranges + this.merge = function() { + var removed = []; + var list = this.ranges; + + list = list.sort(function(a, b) { + return comparePoints(a.start, b.start); + }); + + var next = list[0], range; + for (var i = 1; i < list.length; i++) { + range = next; + next = list[i]; + var cmp = comparePoints(range.end, next.start); + if (cmp < 0) + continue; + + if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) + continue; + + if (comparePoints(range.end, next.end) < 0) { + range.end.row = next.end.row; + range.end.column = next.end.column; + } + + list.splice(i, 1); + removed.push(next); + next = range; + i--; + } + + this.ranges = list; + + return removed; + }; + + this.contains = function(row, column) { + return this.pointIndex({row: row, column: column}) >= 0; + }; + + this.containsPoint = function(pos) { + return this.pointIndex(pos) >= 0; + }; + + this.rangeAtPoint = function(pos) { + var i = this.pointIndex(pos); + if (i >= 0) + return this.ranges[i]; + }; + + + this.clipRows = function(startRow, endRow) { + var list = this.ranges; + if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow) + return []; + + var startIndex = this.pointIndex({row: startRow, column: 0}); + if (startIndex < 0) + startIndex = -startIndex - 1; + var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex); + if (endIndex < 0) + endIndex = -endIndex - 1; + + var clipped = []; + for (var i = startIndex; i < endIndex; i++) { + clipped.push(list[i]); + } + return clipped; + }; + + this.removeAll = function() { + return this.ranges.splice(0, this.ranges.length); + }; + + this.attach = function(session) { + if (this.session) + this.detach(); + + this.session = session; + this.onChange = this.$onChange.bind(this); + + this.session.on('change', this.onChange); + }; + + this.detach = function() { + if (!this.session) + return; + this.session.removeListener('change', this.onChange); + this.session = null; + }; + + this.$onChange = function(delta) { + if (delta.action == "insert"){ + var start = delta.start; + var end = delta.end; + } else { + var end = delta.start; + var start = delta.end; + } + var startRow = start.row; + var endRow = end.row; + var lineDif = endRow - startRow; + + var colDiff = -start.column + end.column; + var ranges = this.ranges; + + for (var i = 0, n = ranges.length; i < n; i++) { + var r = ranges[i]; + if (r.end.row < startRow) + continue; + if (r.start.row > startRow) + break; + + if (r.start.row == startRow && r.start.column >= start.column ) { + if (r.start.column == start.column && this.$insertRight) { + // do nothing + } else { + r.start.column += colDiff; + r.start.row += lineDif; + } + } + if (r.end.row == startRow && r.end.column >= start.column) { + if (r.end.column == start.column && this.$insertRight) { + continue; + } + // special handling for the case when two ranges share an edge + if (r.end.column == start.column && colDiff > 0 && i < n - 1) { + if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column) + r.end.column -= colDiff; + } + r.end.column += colDiff; + r.end.row += lineDif; + } + } + + if (lineDif != 0 && i < n) { + for (; i < n; i++) { + var r = ranges[i]; + r.start.row += lineDif; + r.end.row += lineDif; + } + } + }; + +}).call(RangeList.prototype); + +exports.RangeList = RangeList; +}); diff --git a/plugins/node_modules/ace/lib/ace/range_list_test.js b/plugins/node_modules/ace/lib/ace/range_list_test.js new file mode 100644 index 00000000..242bbe04 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/range_list_test.js @@ -0,0 +1,182 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var Range = require("./range").Range; +var RangeList = require("./range_list").RangeList; +var EditSession = require("./edit_session").EditSession; +var assert = require("./test/assertions"); + +function flatten(rangeList) { + var points = []; + rangeList.ranges.forEach(function(r) { + points.push(r.start.row, r.start.column, r.end.row, r.end.column); + }); + return points; +} +function testRangeList(rangeList, points) { + assert.equal("" + flatten(rangeList), "" + points); +} + +module.exports = { + + name: "ACE range_list.js", + + "test: rangeList pointIndex": function() { + var rangeList = new RangeList(); + rangeList.ranges = [ + new Range(1,2,3,4), + new Range(4,2,5,4), + new Range(8,8,9,9) + ]; + + assert.equal(rangeList.pointIndex({row: 0, column: 1}), -1); + assert.equal(rangeList.pointIndex({row: 1, column: 2}), 0); + assert.equal(rangeList.pointIndex({row: 1, column: 3}), 0); + assert.equal(rangeList.pointIndex({row: 3, column: 4}), 0); + assert.equal(rangeList.pointIndex({row: 4, column: 1}), -2); + assert.equal(rangeList.pointIndex({row: 5, column: 1}), 1); + assert.equal(rangeList.pointIndex({row: 8, column: 9}), 2); + assert.equal(rangeList.pointIndex({row: 18, column: 9}), -4); + }, + + "test: rangeList pointIndex excludeEdges": function() { + var rangeList = new RangeList(); + rangeList.ranges = [ + new Range(1,2,3,4), + new Range(4,2,5,4), + new Range(8,8,9,9), + new Range(10,10,10,10) + ]; + + assert.equal(rangeList.pointIndex({row: 0, column: 1}, true), -1); + assert.equal(rangeList.pointIndex({row: 1, column: 2}, true), -1); + assert.equal(rangeList.pointIndex({row: 1, column: 3}, true), 0); + assert.equal(rangeList.pointIndex({row: 3, column: 4}, true), -2); + assert.equal(rangeList.pointIndex({row: 4, column: 1}, true), -2); + assert.equal(rangeList.pointIndex({row: 5, column: 1}, true), 1); + assert.equal(rangeList.pointIndex({row: 8, column: 9}, true), 2); + assert.equal(rangeList.pointIndex({row: 10, column: 10}, true), 3); + assert.equal(rangeList.pointIndex({row: 18, column: 9}, true), -5); + }, + + "test: rangeList add": function() { + var rangeList = new RangeList(); + rangeList.addList([ + new Range(9,0,9,1), + new Range(1,2,3,4), + new Range(8,8,9,9), + new Range(4,2,5,4), + new Range(3,20,3,24), + new Range(6,6,7,7) + ]); + assert.equal(rangeList.ranges.length, 5); + + rangeList.add(new Range(1,2,3,5)); + assert.range(rangeList.ranges[0], 1,2,3,5); + assert.equal(rangeList.ranges.length, 5); + + rangeList.add(new Range(7,7,7,7)); + assert.range(rangeList.ranges[3], 7,7,7,7); + rangeList.add(new Range(7,8,7,8)); + assert.range(rangeList.ranges[4], 7,8,7,8); + }, + + "test: rangeList add empty": function() { + var rangeList = new RangeList(); + rangeList.addList([ + new Range(7,10,7,10), + new Range(9,10,9,10), + new Range(8,10,8,10) + ]); + assert.equal(rangeList.ranges.length, 3); + + rangeList.add(new Range(9,10,9,10)); + testRangeList(rangeList, [7,10,7,10,8,10,8,10,9,10,9,10]); + }, + + "test: rangeList merge": function() { + var rangeList = new RangeList(); + rangeList.addList([ + new Range(1,2,3,4), + new Range(4,2,5,4), + new Range(6,6,7,7), + new Range(8,8,9,9) + ]); + var removed = []; + + assert.equal(rangeList.ranges.length, 4); + + rangeList.ranges[1].end.row = 7; + removed = rangeList.merge(); + assert.equal(removed.length, 1); + assert.range(rangeList.ranges[1], 4,2,7,7); + assert.equal(rangeList.ranges.length, 3); + + rangeList.ranges[0].end.row = 10; + removed = rangeList.merge(); + assert.range(rangeList.ranges[0], 1,2,10,4); + assert.equal(removed.length, 2); + assert.equal(rangeList.ranges.length, 1); + + rangeList.ranges.push(new Range(10,10,10,10)); + rangeList.ranges.push(new Range(10,10,10,10)); + removed = rangeList.merge(); + assert.equal(rangeList.ranges.length, 2); + }, + + "test: rangeList remove": function() { + var rangeList = new RangeList(); + var list = [ + new Range(1,2,3,4), + new Range(4,2,5,4), + new Range(6,6,7,7), + new Range(8,8,9,9) + ]; + rangeList.addList(list); + assert.equal(rangeList.ranges.length, 4); + rangeList.substractPoint({row: 1, column: 2}); + assert.equal(rangeList.ranges.length, 3); + rangeList.substractPoint({row: 6, column: 7}); + assert.equal(rangeList.ranges.length, 2); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/range_test.js b/plugins/node_modules/ace/lib/ace/range_test.js new file mode 100644 index 00000000..9bda4172 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/range_test.js @@ -0,0 +1,191 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var Range = require("./range").Range; +var EditSession = require("./edit_session").EditSession; +var assert = require("./test/assertions"); + +module.exports = { + + name: "ACE range.js", + + "test: create range": function() { + var range = new Range(1,2,3,4); + + assert.equal(range.start.row, 1); + assert.equal(range.start.column, 2); + assert.equal(range.end.row, 3); + assert.equal(range.end.column, 4); + }, + + "test: create from points": function() { + var range = Range.fromPoints({row: 1, column: 2}, {row:3, column:4}); + + assert.equal(range.start.row, 1); + assert.equal(range.start.column, 2); + assert.equal(range.end.row, 3); + assert.equal(range.end.column, 4); + }, + + "test: clip to rows": function() { + assert.range(new Range(0, 20, 100, 30).clipRows(10, 30), 10, 0, 31, 0); + assert.range(new Range(0, 20, 30, 10).clipRows(10, 30), 10, 0, 30, 10); + + var range = new Range(0, 20, 3, 10); + var range = range.clipRows(10, 30); + + assert.ok(range.isEmpty()); + assert.range(range, 10, 0, 10, 0); + }, + + "test: isEmpty": function() { + var range = new Range(1, 2, 1, 2); + assert.ok(range.isEmpty()); + + var range = new Range(1, 2, 1, 6); + assert.notOk(range.isEmpty()); + }, + + "test: is multi line": function() { + var range = new Range(1, 2, 1, 6); + assert.notOk(range.isMultiLine()); + + var range = new Range(1, 2, 2, 6); + assert.ok(range.isMultiLine()); + }, + + "test: clone": function() { + var range = new Range(1, 2, 3, 4); + var clone = range.clone(); + + assert.position(clone.start, 1, 2); + assert.position(clone.end, 3, 4); + + clone.start.column = 20; + assert.position(range.start, 1, 2); + + clone.end.column = 20; + assert.position(range.end, 3, 4); + }, + + "test: contains for multi line ranges": function() { + var range = new Range(1, 10, 5, 20); + + assert.ok(range.contains(1, 10)); + assert.ok(range.contains(2, 0)); + assert.ok(range.contains(3, 100)); + assert.ok(range.contains(5, 19)); + assert.ok(range.contains(5, 20)); + + assert.notOk(range.contains(1, 9)); + assert.notOk(range.contains(0, 0)); + assert.notOk(range.contains(5, 21)); + }, + + "test: contains for single line ranges": function() { + var range = new Range(1, 10, 1, 20); + + assert.ok(range.contains(1, 10)); + assert.ok(range.contains(1, 15)); + assert.ok(range.contains(1, 20)); + + assert.notOk(range.contains(0, 9)); + assert.notOk(range.contains(2, 9)); + assert.notOk(range.contains(1, 9)); + assert.notOk(range.contains(1, 21)); + }, + + "test: extend range": function() { + var range = new Range(2, 10, 2, 30); + + var range = range.extend(2, 5); + assert.range(range, 2, 5, 2, 30); + + var range = range.extend(2, 35); + assert.range(range, 2, 5, 2, 35); + + var range = range.extend(2, 15); + assert.range(range, 2, 5, 2, 35); + + var range = range.extend(1, 4); + assert.range(range, 1, 4, 2, 35); + + var range = range.extend(6, 10); + assert.range(range, 1, 4, 6, 10); + }, + + "test: collapse rows" : function() { + var range = new Range(0, 2, 1, 2); + assert.range(range.collapseRows(), 0, 0, 1, 0); + + var range = new Range(2, 2, 3, 1); + assert.range(range.collapseRows(), 2, 0, 3, 0); + + var range = new Range(2, 2, 3, 0); + assert.range(range.collapseRows(), 2, 0, 2, 0); + + var range = new Range(2, 0, 2, 0); + assert.range(range.collapseRows(), 2, 0, 2, 0); + }, + + "test: to screen range" : function() { + var session = new EditSession([ + "juhu", + "12\t\t34", + "ããa", + "\t\t34" + ]); + + var range = new Range(0, 0, 0, 3); + assert.range(range.toScreenRange(session), 0, 0, 0, 3); + + var range = new Range(1, 1, 1, 3); + assert.range(range.toScreenRange(session), 1, 1, 1, 4); + + var range = new Range(2, 1, 2, 2); + assert.range(range.toScreenRange(session), 2, 2, 2, 4); + + var range = new Range(3, 0, 3, 4); + assert.range(range.toScreenRange(session), 3, 0, 3, 10); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/renderloop.js b/plugins/node_modules/ace/lib/ace/renderloop.js new file mode 100644 index 00000000..6d31bd13 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/renderloop.js @@ -0,0 +1,75 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("./lib/event"); + +/** + * + * + * Batches changes (that force something to be redrawn) in the background. + * @class RenderLoop + **/ + + +var RenderLoop = function(onRender, win) { + this.onRender = onRender; + this.pending = false; + this.changes = 0; + this.window = win || window; +}; + +(function() { + + + this.schedule = function(change) { + //this.onRender(change); + //return; + this.changes = this.changes | change; + if (!this.pending && this.changes) { + this.pending = true; + var _self = this; + event.nextFrame(function() { + _self.pending = false; + var changes; + while (changes = _self.changes) { + _self.changes = 0; + _self.onRender(changes); + } + }, this.window); + } + }; + +}).call(RenderLoop.prototype); + +exports.RenderLoop = RenderLoop; +}); diff --git a/plugins/node_modules/ace/lib/ace/requirejs/text.js b/plugins/node_modules/ace/lib/ace/requirejs/text.js new file mode 100644 index 00000000..8283c82f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/requirejs/text.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * Extremely simplified version of the requireJS text plugin + */ + +(function() { + +var globalRequire = typeof require != "undefined" && require; +if (typeof define !== "function") // running in webpack + return module.exports = function(source) { return source; }; + +define(function (require, exports, module) { + "use strict"; + if (globalRequire && globalRequire.nodeRequire) { + module.exports = globalRequire.nodeRequire(require.toUrl("./text_build")); + } else { + exports.load = function(name, req, onLoad, config) { + require("../lib/net").get(req.toUrl(name), onLoad); + }; + } +}); + +})(); diff --git a/plugins/node_modules/ace/lib/ace/requirejs/text_build.js b/plugins/node_modules/ace/lib/ace/requirejs/text_build.js new file mode 100644 index 00000000..eb60ead0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/requirejs/text_build.js @@ -0,0 +1,60 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * used by r.js during build + */ + +"use strict"; +exports.buildMap = Object.create(null); +exports.load = function(name, req, onLoad, config) { + var buildMap = exports.buildMap; + buildMap[name] = require('fs').readFileSync(req.toUrl(name), 'utf8'); + onLoad(buildMap[name]); +}; +exports.write = function(pluginName, moduleName, write, config) { + if (exports.buildMap[moduleName]) { + var content = exports.jsEscape(exports.buildMap[moduleName]); + write.asModule(pluginName + "!" + moduleName, + "define(function () { return '" + + content + + "';});\n"); + } +}; +exports.jsEscape = function(content) { + return content.replace(/(['\\])/g, '\\$1') + .replace(/[\f]/g, "\\f") + .replace(/[\b]/g, "\\b") + .replace(/[\n]/g, "\\n") + .replace(/[\t]/g, "\\t") + .replace(/[\r]/g, "\\r") + .replace(/[\u2028]/g, "\\u2028") + .replace(/[\u2029]/g, "\\u2029"); +}; diff --git a/plugins/node_modules/ace/lib/ace/scrollbar.js b/plugins/node_modules/ace/lib/ace/scrollbar.js new file mode 100644 index 00000000..85a040ec --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/scrollbar.js @@ -0,0 +1,286 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var event = require("./lib/event"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +// on ie maximal element height is smaller than what we get from 4-5K line document +// so scrollbar doesn't work, as a workaround we do not set height higher than MAX_SCROLL_H +// and rescale scrolltop +var MAX_SCROLL_H = 0x8000; + +/** + * An abstract class representing a native scrollbar control. + * @class ScrollBar + **/ + +/** + * Creates a new `ScrollBar`. `parent` is the owner of the scroll bar. + * @param {DOMElement} parent A DOM element + * + * @constructor + **/ +var ScrollBar = function(parent) { + this.element = dom.createElement("div"); + this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix; + + this.inner = dom.createElement("div"); + this.inner.className = "ace_scrollbar-inner"; + this.element.appendChild(this.inner); + + parent.appendChild(this.element); + + this.setVisible(false); + this.skipEvent = false; + + event.addListener(this.element, "scroll", this.onScroll.bind(this)); + event.addListener(this.element, "mousedown", event.preventDefault); +}; + +(function() { + oop.implement(this, EventEmitter); + + this.setVisible = function(isVisible) { + this.element.style.display = isVisible ? "" : "none"; + this.isVisible = isVisible; + this.coeff = 1; + }; +}).call(ScrollBar.prototype); + +/** + * Represents a vertical scroll bar. + * @class VScrollBar + **/ + +/** + * Creates a new `VScrollBar`. `parent` is the owner of the scroll bar. + * @param {DOMElement} parent A DOM element + * @param {Object} renderer An editor renderer + * + * @constructor + **/ +var VScrollBar = function(parent, renderer) { + ScrollBar.call(this, parent); + this.scrollTop = 0; + this.scrollHeight = 0; + + // in OSX lion the scrollbars appear to have no width. In this case resize the + // element to show the scrollbar but still pretend that the scrollbar has a width + // of 0px + // in Firefox 6+ scrollbar is hidden if element has the same width as scrollbar + // make element a little bit wider to retain scrollbar when page is zoomed + renderer.$scrollbarWidth = + this.width = dom.scrollbarWidth(parent.ownerDocument); + this.inner.style.width = + this.element.style.width = (this.width || 15) + 5 + "px"; + this.$minWidth = 0; +}; + +oop.inherits(VScrollBar, ScrollBar); + +(function() { + + this.classSuffix = '-v'; + + /** + * Emitted when the scroll bar, well, scrolls. + * @event scroll + * @param {Object} e Contains one property, `"data"`, which indicates the current scroll top position + **/ + this.onScroll = function() { + if (!this.skipEvent) { + this.scrollTop = this.element.scrollTop; + if (this.coeff != 1) { + var h = this.element.clientHeight / this.scrollHeight; + this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h); + } + this._emit("scroll", {data: this.scrollTop}); + } + this.skipEvent = false; + }; + + /** + * Returns the width of the scroll bar. + * @returns {Number} + **/ + this.getWidth = function() { + return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); + }; + + /** + * Sets the height of the scroll bar, in pixels. + * @param {Number} height The new height + **/ + this.setHeight = function(height) { + this.element.style.height = height + "px"; + }; + + /** + * Sets the inner height of the scroll bar, in pixels. + * @param {Number} height The new inner height + * @deprecated Use setScrollHeight instead + **/ + this.setInnerHeight = + /** + * Sets the scroll height of the scroll bar, in pixels. + * @param {Number} height The new scroll height + **/ + this.setScrollHeight = function(height) { + this.scrollHeight = height; + if (height > MAX_SCROLL_H) { + this.coeff = MAX_SCROLL_H / height; + height = MAX_SCROLL_H; + } else if (this.coeff != 1) { + this.coeff = 1; + } + this.inner.style.height = height + "px"; + }; + + /** + * Sets the scroll top of the scroll bar. + * @param {Number} scrollTop The new scroll top + **/ + this.setScrollTop = function(scrollTop) { + // on chrome 17+ for small zoom levels after calling this function + // this.element.scrollTop != scrollTop which makes page to scroll up. + if (this.scrollTop != scrollTop) { + this.skipEvent = true; + this.scrollTop = scrollTop; + this.element.scrollTop = scrollTop * this.coeff; + } + }; + +}).call(VScrollBar.prototype); + +/** + * Represents a horisontal scroll bar. + * @class HScrollBar + **/ + +/** + * Creates a new `HScrollBar`. `parent` is the owner of the scroll bar. + * @param {DOMElement} parent A DOM element + * @param {Object} renderer An editor renderer + * + * @constructor + **/ +var HScrollBar = function(parent, renderer) { + ScrollBar.call(this, parent); + this.scrollLeft = 0; + + // in OSX lion the scrollbars appear to have no width. In this case resize the + // element to show the scrollbar but still pretend that the scrollbar has a width + // of 0px + // in Firefox 6+ scrollbar is hidden if element has the same width as scrollbar + // make element a little bit wider to retain scrollbar when page is zoomed + this.height = renderer.$scrollbarWidth; + this.inner.style.height = + this.element.style.height = (this.height || 15) + 5 + "px"; +}; + +oop.inherits(HScrollBar, ScrollBar); + +(function() { + + this.classSuffix = '-h'; + + /** + * Emitted when the scroll bar, well, scrolls. + * @event scroll + * @param {Object} e Contains one property, `"data"`, which indicates the current scroll left position + **/ + this.onScroll = function() { + if (!this.skipEvent) { + this.scrollLeft = this.element.scrollLeft; + this._emit("scroll", {data: this.scrollLeft}); + } + this.skipEvent = false; + }; + + /** + * Returns the height of the scroll bar. + * @returns {Number} + **/ + this.getHeight = function() { + return this.isVisible ? this.height : 0; + }; + + /** + * Sets the width of the scroll bar, in pixels. + * @param {Number} width The new width + **/ + this.setWidth = function(width) { + this.element.style.width = width + "px"; + }; + + /** + * Sets the inner width of the scroll bar, in pixels. + * @param {Number} width The new inner width + * @deprecated Use setScrollWidth instead + **/ + this.setInnerWidth = function(width) { + this.inner.style.width = width + "px"; + }; + + /** + * Sets the scroll width of the scroll bar, in pixels. + * @param {Number} width The new scroll width + **/ + this.setScrollWidth = function(width) { + this.inner.style.width = width + "px"; + }; + + /** + * Sets the scroll left of the scroll bar. + * @param {Number} scrollTop The new scroll left + **/ + this.setScrollLeft = function(scrollLeft) { + // on chrome 17+ for small zoom levels after calling this function + // this.element.scrollTop != scrollTop which makes page to scroll up. + if (this.scrollLeft != scrollLeft) { + this.skipEvent = true; + this.scrollLeft = this.element.scrollLeft = scrollLeft; + } + }; + +}).call(HScrollBar.prototype); + + +exports.ScrollBar = VScrollBar; // backward compatibility +exports.ScrollBarV = VScrollBar; // backward compatibility +exports.ScrollBarH = HScrollBar; // backward compatibility + +exports.VScrollBar = VScrollBar; +exports.HScrollBar = HScrollBar; +}); diff --git a/plugins/node_modules/ace/lib/ace/search.js b/plugins/node_modules/ace/lib/ace/search.js new file mode 100644 index 00000000..346b5e3c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/search.js @@ -0,0 +1,407 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var lang = require("./lib/lang"); +var oop = require("./lib/oop"); +var Range = require("./range").Range; + +/** + * @class Search + * + * A class designed to handle all sorts of text searches within a [[Document `Document`]]. + * + **/ + +/** + * + * + * Creates a new `Search` object. The following search options are available: + * + * - `needle`: The string or regular expression you're looking for + * - `backwards`: Whether to search backwards from where cursor currently is. Defaults to `false`. + * - `wrap`: Whether to wrap the search back to the beginning when it hits the end. Defaults to `false`. + * - `caseSensitive`: Whether the search ought to be case-sensitive. Defaults to `false`. + * - `wholeWord`: Whether the search matches only on whole words. Defaults to `false`. + * - `range`: The [[Range]] to search within. Set this to `null` for the whole document + * - `regExp`: Whether the search is a regular expression or not. Defaults to `false`. + * - `start`: The starting [[Range]] or cursor position to begin the search + * - `skipCurrent`: Whether or not to include the current line in the search. Default to `false`. + * + * @constructor + **/ + +var Search = function() { + this.$options = {}; +}; + +(function() { + /** + * Sets the search options via the `options` parameter. + * @param {Object} options An object containing all the new search properties + * + * + * @returns {Search} + * @chainable + **/ + this.set = function(options) { + oop.mixin(this.$options, options); + return this; + }; + + /** + * [Returns an object containing all the search options.]{: #Search.getOptions} + * @returns {Object} + **/ + this.getOptions = function() { + return lang.copyObject(this.$options); + }; + + /** + * Sets the search options via the `options` parameter. + * @param {Object} An object containing all the search propertie + * @related Search.set + **/ + this.setOptions = function(options) { + this.$options = options; + }; + /** + * Searches for `options.needle`. If found, this method returns the [[Range `Range`]] where the text first occurs. If `options.backwards` is `true`, the search goes backwards in the session. + * @param {EditSession} session The session to search with + * + * + * @returns {Range} + **/ + this.find = function(session) { + var options = this.$options; + var iterator = this.$matchIterator(session, options); + if (!iterator) + return false; + + var firstRange = null; + iterator.forEach(function(sr, sc, er, ec) { + firstRange = new Range(sr, sc, er, ec); + if (sc == ec && options.start && options.start.start + && options.skipCurrent != false && firstRange.isEqual(options.start) + ) { + firstRange = null; + return false; + } + + return true; + }); + + return firstRange; + }; + + /** + * Searches for all occurrances `options.needle`. If found, this method returns an array of [[Range `Range`s]] where the text first occurs. If `options.backwards` is `true`, the search goes backwards in the session. + * @param {EditSession} session The session to search with + * + * + * @returns {[Range]} + **/ + this.findAll = function(session) { + var options = this.$options; + if (!options.needle) + return []; + this.$assembleRegExp(options); + + var range = options.range; + var lines = range + ? session.getLines(range.start.row, range.end.row) + : session.doc.getAllLines(); + + var ranges = []; + var re = options.re; + if (options.$isMultiLine) { + var len = re.length; + var maxRow = lines.length - len; + var prevRange; + outer: for (var row = re.offset || 0; row <= maxRow; row++) { + for (var j = 0; j < len; j++) + if (lines[row + j].search(re[j]) == -1) + continue outer; + + var startLine = lines[row]; + var line = lines[row + len - 1]; + var startIndex = startLine.length - startLine.match(re[0])[0].length; + var endIndex = line.match(re[len - 1])[0].length; + + if (prevRange && prevRange.end.row === row && + prevRange.end.column > startIndex + ) { + continue; + } + ranges.push(prevRange = new Range( + row, startIndex, row + len - 1, endIndex + )); + if (len > 2) + row = row + len - 2; + } + } else { + for (var i = 0; i < lines.length; i++) { + var matches = lang.getMatchOffsets(lines[i], re); + for (var j = 0; j < matches.length; j++) { + var match = matches[j]; + ranges.push(new Range(i, match.offset, i, match.offset + match.length)); + } + } + } + + if (range) { + var startColumn = range.start.column; + var endColumn = range.start.column; + var i = 0, j = ranges.length - 1; + while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row) + i++; + + while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row) + j--; + + ranges = ranges.slice(i, j + 1); + for (i = 0, j = ranges.length; i < j; i++) { + ranges[i].start.row += range.start.row; + ranges[i].end.row += range.start.row; + } + } + + return ranges; + }; + + /** + * Searches for `options.needle` in `input`, and, if found, replaces it with `replacement`. + * @param {String} input The text to search in + * @param {String} replacement The replacing text + * + (String): If `options.regExp` is `true`, this function returns `input` with the replacement already made. Otherwise, this function just returns `replacement`.<br/> + * If `options.needle` was not found, this function returns `null`. + * + * + * @returns {String} + **/ + this.replace = function(input, replacement) { + var options = this.$options; + + var re = this.$assembleRegExp(options); + if (options.$isMultiLine) + return replacement; + + if (!re) + return; + + var match = re.exec(input); + if (!match || match[0].length != input.length) + return null; + + replacement = input.replace(re, replacement); + if (options.preserveCase) { + replacement = replacement.split(""); + for (var i = Math.min(input.length, input.length); i--; ) { + var ch = input[i]; + if (ch && ch.toLowerCase() != ch) + replacement[i] = replacement[i].toUpperCase(); + else + replacement[i] = replacement[i].toLowerCase(); + } + replacement = replacement.join(""); + } + + return replacement; + }; + + this.$assembleRegExp = function(options, $disableFakeMultiline) { + if (options.needle instanceof RegExp) + return options.re = options.needle; + + var needle = options.needle; + + if (!options.needle) + return options.re = false; + + if (!options.regExp) + needle = lang.escapeRegExp(needle); + + if (options.wholeWord) + needle = addWordBoundary(needle, options); + + var modifier = options.caseSensitive ? "gm" : "gmi"; + + options.$isMultiLine = !$disableFakeMultiline && /[\n\r]/.test(needle); + if (options.$isMultiLine) + return options.re = this.$assembleMultilineRegExp(needle, modifier); + + try { + var re = new RegExp(needle, modifier); + } catch(e) { + re = false; + } + return options.re = re; + }; + + this.$assembleMultilineRegExp = function(needle, modifier) { + var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n"); + var re = []; + for (var i = 0; i < parts.length; i++) try { + re.push(new RegExp(parts[i], modifier)); + } catch(e) { + return false; + } + return re; + }; + + this.$matchIterator = function(session, options) { + var re = this.$assembleRegExp(options); + if (!re) + return false; + var backwards = options.backwards == true; + var skipCurrent = options.skipCurrent != false; + + var range = options.range; + var start = options.start; + if (!start) + start = range ? range[backwards ? "end" : "start"] : session.selection.getRange(); + + if (start.start) + start = start[skipCurrent != backwards ? "end" : "start"]; + + var firstRow = range ? range.start.row : 0; + var lastRow = range ? range.end.row : session.getLength() - 1; + + if (backwards) { + var forEach = function(callback) { + var row = start.row; + if (forEachInLine(row, start.column, callback)) + return; + for (row--; row >= firstRow; row--) + if (forEachInLine(row, Number.MAX_VALUE, callback)) + return; + if (options.wrap == false) + return; + for (row = lastRow, firstRow = start.row; row >= firstRow; row--) + if (forEachInLine(row, Number.MAX_VALUE, callback)) + return; + }; + } + else { + var forEach = function(callback) { + var row = start.row; + if (forEachInLine(row, start.column, callback)) + return; + for (row = row + 1; row <= lastRow; row++) + if (forEachInLine(row, 0, callback)) + return; + if (options.wrap == false) + return; + for (row = firstRow, lastRow = start.row; row <= lastRow; row++) + if (forEachInLine(row, 0, callback)) + return; + }; + } + + if (options.$isMultiLine) { + var len = re.length; + var forEachInLine = function(row, offset, callback) { + var startRow = backwards ? row - len + 1 : row; + if (startRow < 0) return; + var line = session.getLine(startRow); + var startIndex = line.search(re[0]); + if (!backwards && startIndex < offset || startIndex === -1) return; + for (var i = 1; i < len; i++) { + line = session.getLine(startRow + i); + if (line.search(re[i]) == -1) + return; + } + var endIndex = line.match(re[len - 1])[0].length; + if (backwards && endIndex > offset) return; + if (callback(startRow, startIndex, startRow + len - 1, endIndex)) + return true; + }; + } + else if (backwards) { + var forEachInLine = function(row, endIndex, callback) { + var line = session.getLine(row); + var matches = []; + var m, last = 0; + re.lastIndex = 0; + while((m = re.exec(line))) { + var length = m[0].length; + last = m.index; + if (!length) { + if (last >= line.length) break; + re.lastIndex = last += 1; + } + if (m.index + length > endIndex) + break; + matches.push(m.index, length); + } + for (var i = matches.length - 1; i >= 0; i -= 2) { + var column = matches[i - 1]; + var length = matches[i]; + if (callback(row, column, row, column + length)) + return true; + } + }; + } + else { + var forEachInLine = function(row, startIndex, callback) { + var line = session.getLine(row); + var last; + var m; + re.lastIndex = startIndex; + while((m = re.exec(line))) { + var length = m[0].length; + last = m.index; + if (callback(row, last, row,last + length)) + return true; + if (!length) { + re.lastIndex = last += 1; + if (last >= line.length) return false; + } + } + }; + } + return {forEach: forEach}; + }; + +}).call(Search.prototype); + +function addWordBoundary(needle, options) { + function wordBoundary(c) { + if (/\w/.test(c) || options.regExp) return "\\b"; + return ""; + } + return wordBoundary(needle[0]) + needle + + wordBoundary(needle[needle.length - 1]); +} + +exports.Search = Search; +}); diff --git a/plugins/node_modules/ace/lib/ace/search_highlight.js b/plugins/node_modules/ace/lib/ace/search_highlight.js new file mode 100644 index 00000000..11defd9c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/search_highlight.js @@ -0,0 +1,82 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var lang = require("./lib/lang"); +var oop = require("./lib/oop"); +var Range = require("./range").Range; + +var SearchHighlight = function(regExp, clazz, type) { + this.setRegexp(regExp); + this.clazz = clazz; + this.type = type || "text"; +}; + +(function() { + // needed to prevent long lines from freezing the browser + this.MAX_RANGES = 500; + + this.setRegexp = function(regExp) { + if (this.regExp+"" == regExp+"") + return; + this.regExp = regExp; + this.cache = []; + }; + + this.update = function(html, markerLayer, session, config) { + if (!this.regExp) + return; + var start = config.firstRow, end = config.lastRow; + + for (var i = start; i <= end; i++) { + var ranges = this.cache[i]; + if (ranges == null) { + ranges = lang.getMatchOffsets(session.getLine(i), this.regExp); + if (ranges.length > this.MAX_RANGES) + ranges = ranges.slice(0, this.MAX_RANGES); + ranges = ranges.map(function(match) { + return new Range(i, match.offset, i, match.offset + match.length); + }); + this.cache[i] = ranges.length ? ranges : ""; + } + + for (var j = ranges.length; j --; ) { + markerLayer.drawSingleLineMarker( + html, ranges[j].toScreenRange(session), this.clazz, config); + } + } + }; + +}).call(SearchHighlight.prototype); + +exports.SearchHighlight = SearchHighlight; +}); diff --git a/plugins/node_modules/ace/lib/ace/search_test.js b/plugins/node_modules/ace/lib/ace/search_test.js new file mode 100644 index 00000000..24de08fd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/search_test.js @@ -0,0 +1,525 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var Editor = require("./editor").Editor; +var Search = require("./search").Search; +var assert = require("./test/assertions"); + +module.exports = { + "test: configure the search object" : function() { + var search = new Search(); + search.set({ + needle: "juhu" + }); + }, + + "test: find simple text in document" : function() { + var session = new EditSession(["juhu kinners 123", "456"]); + var search = new Search().set({ + needle: "kinners" + }); + + var range = search.find(session); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 12); + }, + + "test: find simple text in next line" : function() { + var session = new EditSession(["abc", "juhu kinners 123", "456"]); + var search = new Search().set({ + needle: "kinners" + }); + + var range = search.find(session); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); + }, + + "test: find text starting at cursor position" : function() { + var session = new EditSession(["juhu kinners", "juhu kinners 123"]); + session.getSelection().moveCursorTo(0, 6); + var search = new Search().set({ + needle: "kinners" + }); + + var range = search.find(session); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); + }, + + "test: wrap search is on by default" : function() { + var session = new EditSession(["abc", "juhu kinners 123", "456"]); + session.getSelection().moveCursorTo(2, 1); + + var search = new Search().set({ + needle: "kinners" + }); + + assert.notEqual(search.find(session), null); + }, + + "test: wrap search should wrap at file end" : function() { + var session = new EditSession(["abc", "juhu kinners 123", "456"]); + session.getSelection().moveCursorTo(2, 1); + + var search = new Search().set({ + needle: "kinners", + wrap: true + }); + + var range = search.find(session); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); + }, + + "test: wrap search should find needle even if it starts inside it" : function() { + var session = new EditSession(["abc", "juhu kinners 123", "456"]); + session.getSelection().moveCursorTo(6, 1); + + var search = new Search().set({ + needle: "kinners", + wrap: true + }); + + var range = search.find(session); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); + }, + + "test: wrap search with no match should return 'null'": function() { + var session = new EditSession(["abc", "juhu kinners 123", "456"]); + session.getSelection().moveCursorTo(2, 1); + + var search = new Search().set({ + needle: "xyz", + wrap: true + }); + + assert.equal(search.find(session), null); + }, + + "test: case sensitive is by default off": function() { + var session = new EditSession(["abc", "juhu kinners 123", "456"]); + + var search = new Search().set({ + needle: "JUHU" + }); + + assert.range(search.find(session), 1, 0, 1, 4); + }, + + "test: case sensitive search": function() { + var session = new EditSession(["abc", "juhu kinners 123", "456"]); + + var search = new Search().set({ + needle: "KINNERS", + caseSensitive: true + }); + + var range = search.find(session); + assert.equal(range, null); + }, + + "test: whole word search should not match inside of words": function() { + var session = new EditSession(["juhukinners", "juhu kinners 123", "456"]); + + var search = new Search().set({ + needle: "kinners", + wholeWord: true + }); + + var range = search.find(session); + assert.position(range.start, 1, 5); + assert.position(range.end, 1, 12); + }, + + "test: find backwards": function() { + var session = new EditSession(["juhu juhu juhu juhu"]); + session.getSelection().moveCursorTo(0, 10); + var search = new Search().set({ + needle: "juhu", + backwards: true + }); + + var range = search.find(session); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 9); + }, + + "test: find in selection": function() { + var session = new EditSession(["juhu", "juhu", "juhu", "juhu"]); + session.getSelection().setSelectionAnchor(1, 0); + session.getSelection().selectTo(3, 5); + + var search = new Search().set({ + needle: "juhu", + wrap: true, + range: session.getSelection().getRange() + }); + + var range = search.find(session); + assert.position(range.start, 1, 0); + assert.position(range.end, 1, 4); + + search = new Search().set({ + needle: "juhu", + wrap: true, + range: session.getSelection().getRange() + }); + + session.getSelection().setSelectionAnchor(0, 2); + session.getSelection().selectTo(3, 2); + + var range = search.find(session); + assert.position(range.start, 1, 0); + assert.position(range.end, 1, 4); + }, + + "test: find backwards in selection": function() { + var session = new EditSession(["juhu", "juhu", "juhu", "juhu"]); + + session.getSelection().setSelectionAnchor(0, 2); + session.getSelection().selectTo(3, 2); + + var search = new Search().set({ + needle: "juhu", + wrap: true, + backwards: true, + range: session.getSelection().getRange() + }); + + var range = search.find(session); + assert.position(range.start, 2, 0); + assert.position(range.end, 2, 4); + + search = new Search().set({ + needle: "juhu", + wrap: true, + range: session.getSelection().getRange() + }); + + session.getSelection().setSelectionAnchor(0, 2); + session.getSelection().selectTo(1, 2); + + var range = search.find(session); + assert.position(range.start, 1, 0); + assert.position(range.end, 1, 4); + }, + + "test: edge case - match directly before the cursor" : function() { + var session = new EditSession(["123", "123", "juhu"]); + + var search = new Search().set({ + needle: "juhu", + wrap: true + }); + + session.getSelection().moveCursorTo(2, 5); + + var range = search.find(session); + assert.position(range.start, 2, 0); + assert.position(range.end, 2, 4); + }, + + "test: edge case - match backwards directly after the cursor" : function() { + var session = new EditSession(["123", "123", "juhu"]); + + var search = new Search().set({ + needle: "juhu", + wrap: true, + backwards: true + }); + + session.getSelection().moveCursorTo(2, 0); + + var range = search.find(session); + assert.position(range.start, 2, 0); + assert.position(range.end, 2, 4); + }, + + "test: find using a regular expression" : function() { + var session = new EditSession(["abc123 123 cd", "abc"]); + + var search = new Search().set({ + needle: "\\d+", + regExp: true + }); + + var range = search.find(session); + assert.position(range.start, 0, 3); + assert.position(range.end, 0, 6); + }, + + "test: find using a regular expression and whole word" : function() { + var session = new EditSession(["abc123 123 cd", "abc"]); + + var search = new Search().set({ + needle: "\\d+\\b", + regExp: true, + wholeWord: true + }); + + var range = search.find(session); + assert.position(range.start, 0, 7); + assert.position(range.end, 0, 10); + }, + + "test: use regular expressions with capture groups": function() { + var session = new EditSession([" ab: 12px", " <h1 abc"]); + + var search = new Search().set({ + needle: "(\\d+)", + regExp: true + }); + + var range = search.find(session); + assert.position(range.start, 0, 6); + assert.position(range.end, 0, 8); + }, + + "test: find all matches in selection" : function() { + var session = new EditSession(["juhu", "juhu", "juhu", "juhu"]); + + session.getSelection().setSelectionAnchor(0, 2); + session.getSelection().selectTo(3, 2); + + var search = new Search().set({ + needle: "uh", + wrap: true, + range: session.getSelection().getRange() + }); + + var ranges = search.findAll(session); + + assert.equal(ranges.length, 2); + assert.position(ranges[0].start, 1, 1); + assert.position(ranges[0].end, 1, 3); + assert.position(ranges[1].start, 2, 1); + assert.position(ranges[1].end, 2, 3); + }, + + + "test: find all multiline matches" : function() { + var session = new EditSession(["juhu", "juhu", "juhu", "juhu"]); + + var search = new Search().set({ + needle: "hu\nju", + wrap: true + }); + + var ranges = search.findAll(session); + + assert.equal(ranges.length, 3); + assert.position(ranges[0].start, 0, 2); + assert.position(ranges[0].end, 1, 2); + assert.position(ranges[1].start, 1, 2); + assert.position(ranges[1].end, 2, 2); + }, + + "test: replace() should return the replacement if the input matches the needle" : function() { + var search = new Search().set({ + needle: "juhu" + }); + + assert.equal(search.replace("juhu", "kinners"), "kinners"); + assert.equal(search.replace("", "kinners"), null); + assert.equal(search.replace(" juhu", "kinners"), null); + + // case sensitivity + assert.equal(search.replace("Juhu", "kinners"), "kinners"); + search.set({caseSensitive: true}); + assert.equal(search.replace("Juhu", "kinners"), null); + + // regexp replacement + }, + + "test: replace with a RegExp search" : function() { + var search = new Search().set({ + needle: "\\d+", + regExp: true + }); + + assert.equal(search.replace("123", "kinners"), "kinners"); + assert.equal(search.replace("01234", "kinners"), "kinners"); + assert.equal(search.replace("", "kinners"), null); + assert.equal(search.replace("a12", "kinners"), null); + assert.equal(search.replace("12a", "kinners"), null); + }, + + "test: replace with RegExp match and capture groups" : function() { + var search = new Search().set({ + needle: "ab(\\d\\d)", + regExp: true + }); + + assert.equal(search.replace("ab12", "cd$1"), "cd12"); + assert.equal(search.replace("ab12", "-$&-"), "-ab12-"); + assert.equal(search.replace("ab12", "$$"), "$"); + }, + + "test: find all using regular expresion containing $" : function() { + var session = new EditSession(["a", " b", "c ", "d"]); + + var search = new Search().set({ + needle: "[ ]+$", + regExp: true, + wrap: true + }); + + session.getSelection().moveCursorTo(1, 2); + var ranges = search.findAll(session); + + assert.equal(ranges.length, 1); + assert.position(ranges[0].start, 2, 1); + assert.position(ranges[0].end, 2, 2); + }, + + "test: find all matches in a line" : function() { + var session = new EditSession("foo bar foo baz foobar foo"); + + var search = new Search().set({ + needle: "foo", + wrap: true, + wholeWord: true + }); + + session.getSelection().moveCursorTo(0, 4); + + var ranges = search.findAll(session); + + assert.equal(ranges.length, 3); + assert.position(ranges[0].start, 0, 0); + assert.position(ranges[0].end, 0, 3); + assert.position(ranges[1].start, 0, 8); + assert.position(ranges[1].end, 0, 11); + assert.position(ranges[2].start, 0, 23); + assert.position(ranges[2].end, 0, 26); + }, + + "test: find all matches in a line backwards" : function() { + var session = new EditSession("foo bar foo baz foobar foo"); + + var search = new Search().set({ + needle: "foo", + wrap: true, + wholeWord: true, + backwards: true + }); + + session.getSelection().moveCursorTo(0, 13); + + var ranges = search.findAll(session); + + assert.equal(ranges.length, 3); + assert.position(ranges[2].start, 0, 23); + assert.position(ranges[2].end, 0, 26); + assert.position(ranges[1].start, 0, 8); + assert.position(ranges[1].end, 0, 11); + assert.position(ranges[0].start, 0, 0); + assert.position(ranges[0].end, 0, 3); + }, + + "test: find next empty range" : function() { + var session = new EditSession("foo foobar foo"); + var editor = new Editor(new MockRenderer(), session); + + var options = { + needle: "o*", + wrap: true, + regExp: true, + backwards: false + }; + var positions = [4, 5.2, 7, 8, 9, 10, 11, 12.2, 14, 0, 1.2, 3]; + + session.selection.moveCursorTo(0, 3); + for (var i = 0; i < 12; i++) { + editor.find(options); + var range = editor.selection.getRange(); + var start = range.start.column; + var len = range.end.column - start; + assert.equal(start + 0.1 * len, positions[i]); + } + options.backwards = true; + positions = [1.2, 1, 0, 14, 12.2, 12, 11, 10, 9, 8, 7, 5.2, 5, 4, 3]; + for (var i = 0; i < 16; i++) { + editor.find(options); + var range = editor.selection.getRange(); + var start = range.start.column; + var len = range.end.column - start; + console.log(start + 0.1 * len); + } + }, + "test: repeating text": function() { + var session = new EditSession("tttttt\ntttttt\ntttttt\ntttttt\ntttttt\ntttttt"); + var editor = new Editor(new MockRenderer(), session); + + var options = { + needle: "^", + wrap: true, + regExp: true, + backwards: false + }; + function check(sl, sc, el, ec) { + editor.find(options); + var range = editor.selection.getRange(); + console.log(range+""); + assert.range(range, sl, sc, el, ec); + } + + session.selection.moveCursorTo(1, 3); + check(2, 0, 2, 0); + + options.needle = "tttt\ntttt"; + check(2, 2, 3, 4); + check(4, 2, 5, 4); + check(0, 2, 1, 4); + + options.backwards = true; + check(4, 2, 5, 4); + check(2, 2, 3, 4); + check(0, 2, 1, 4); + check(4, 2, 5, 4); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/selection.js b/plugins/node_modules/ace/lib/ace/selection.js new file mode 100644 index 00000000..a5824f10 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/selection.js @@ -0,0 +1,940 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var lang = require("./lib/lang"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; + +/** + * Contains the cursor position and the text selection of an edit session. + * + * The row/columns used in the selection are in document coordinates representing the coordinates as they appear in the document before applying soft wrap and folding. + * @class Selection + **/ + + +/** + * Emitted when the cursor position changes. + * @event changeCursor + * + **/ +/** + * Emitted when the cursor selection changes. + * + * @event changeSelection + **/ +/** + * Creates a new `Selection` object. + * @param {EditSession} session The session to use + * + * @constructor + **/ +var Selection = function(session) { + this.session = session; + this.doc = session.getDocument(); + + this.clearSelection(); + this.cursor = this.lead = this.doc.createAnchor(0, 0); + this.anchor = this.doc.createAnchor(0, 0); + + var self = this; + this.cursor.on("change", function(e) { + self._emit("changeCursor"); + if (!self.$isEmpty) + self._emit("changeSelection"); + if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) + self.$desiredColumn = null; + }); + + this.anchor.on("change", function() { + if (!self.$isEmpty) + self._emit("changeSelection"); + }); +}; + +(function() { + + oop.implement(this, EventEmitter); + + /** + * Returns `true` if the selection is empty. + * @returns {Boolean} + **/ + this.isEmpty = function() { + return this.$isEmpty || ( + this.anchor.row == this.lead.row && + this.anchor.column == this.lead.column + ); + }; + + /** + * Returns `true` if the selection is a multi-line. + * @returns {Boolean} + **/ + this.isMultiLine = function() { + return !this.$isEmpty && this.anchor.row != this.cursor.row; + }; + + /** + * Returns an object containing the `row` and `column` current position of the cursor. + * @returns {Object} + **/ + this.getCursor = function() { + return this.lead.getPosition(); + }; + + /** + * Sets the row and column position of the anchor. This function also emits the `'changeSelection'` event. + * @param {Number} row The new row + * @param {Number} column The new column + * + **/ + this.setSelectionAnchor = function(row, column) { + this.$isEmpty = false; + this.anchor.setPosition(row, column); + }; + + /** + * Returns an object containing the `row` and `column` of the calling selection anchor. + * + * @returns {Object} + * @related Anchor.getPosition + **/ + this.getSelectionAnchor = function() { + if (this.$isEmpty) + return this.getSelectionLead(); + + return this.anchor.getPosition(); + }; + + /** + * Returns an object containing the `row` and `column` of the calling selection lead. + * @returns {Object} + **/ + this.getSelectionLead = function() { + return this.lead.getPosition(); + }; + + /** + * Shifts the selection up (or down, if [[Selection.isBackwards `isBackwards()`]] is true) the given number of columns. + * @param {Number} columns The number of columns to shift by + **/ + this.shiftSelection = function(columns) { + if (this.$isEmpty) { + this.moveCursorTo(this.lead.row, this.lead.column + columns); + return; + } + + var anchor = this.getSelectionAnchor(); + var lead = this.getSelectionLead(); + + var isBackwards = this.isBackwards(); + + if (!isBackwards || anchor.column !== 0) + this.setSelectionAnchor(anchor.row, anchor.column + columns); + + if (isBackwards || lead.column !== 0) { + this.$moveSelection(function() { + this.moveCursorTo(lead.row, lead.column + columns); + }); + } + }; + + /** + * Returns `true` if the selection is going backwards in the document. + * @returns {Boolean} + **/ + this.isBackwards = function() { + var anchor = this.anchor; + var lead = this.lead; + return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column)); + }; + + /** + * [Returns the [[Range]] for the selected text.]{: #Selection.getRange} + * @returns {Range} + **/ + this.getRange = function() { + var anchor = this.anchor; + var lead = this.lead; + + if (this.$isEmpty) + return Range.fromPoints(lead, lead); + + return this.isBackwards() + ? Range.fromPoints(lead, anchor) + : Range.fromPoints(anchor, lead); + }; + + /** + * [Empties the selection (by de-selecting it). This function also emits the `'changeSelection'` event.]{: #Selection.clearSelection} + **/ + this.clearSelection = function() { + if (!this.$isEmpty) { + this.$isEmpty = true; + this._emit("changeSelection"); + } + }; + + /** + * Selects all the text in the document. + **/ + this.selectAll = function() { + this.setSelectionAnchor(0, 0); + this.cursor.setPosition(Number.MAX_VALUE, Number.MAX_VALUE); + }; + + /** + * Sets the selection to the provided range. + * @param {Range} range The range of text to select + * @param {Boolean} reverse Indicates if the range should go backwards (`true`) or not + * + * @method setSelectionRange + * @alias setRange + **/ + this.setRange = + this.setSelectionRange = function(range, reverse) { + var start = reverse ? range.end : range.start; + var end = reverse ? range.start : range.end; + this.$isEmpty = !Range.comparePoints(start, end); + this.anchor.setPosition(start.row, start.column); + this.cursor.setPosition(end.row, end.column); + this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor); + }; + + this.$moveSelection = function(mover) { + var lead = this.lead; + if (this.$isEmpty) + this.setSelectionAnchor(lead.row, lead.column); + + mover.call(this); + }; + + /** + * Moves the selection cursor to the indicated row and column. + * @param {Number} row The row to select to + * @param {Number} column The column to select to + **/ + this.selectTo = function(row, column) { + this.$moveSelection(function() { + this.moveCursorTo(row, column); + }); + }; + + /** + * Moves the selection cursor to the row and column indicated by `pos`. + * @param {Object} pos An object containing the row and column + **/ + this.selectToPosition = function(pos) { + this.$moveSelection(function() { + this.moveCursorToPosition(pos); + }); + }; + + /** + * Moves the selection cursor to the indicated row and column. + * @param {Number} row The row to select to + * @param {Number} column The column to select to + * + **/ + this.moveTo = function(row, column) { + this.clearSelection(); + this.moveCursorTo(row, column); + }; + + /** + * Moves the selection cursor to the row and column indicated by `pos`. + * @param {Object} pos An object containing the row and column + **/ + this.moveToPosition = function(pos) { + this.clearSelection(); + this.moveCursorToPosition(pos); + }; + + + /** + * Moves the selection up one row. + **/ + this.selectUp = function() { + this.$moveSelection(this.moveCursorUp); + }; + + /** + * Moves the selection down one row. + **/ + this.selectDown = function() { + this.$moveSelection(this.moveCursorDown); + }; + + /** + * Moves the selection right one column. + **/ + this.selectRight = function() { + this.$moveSelection(this.moveCursorRight); + }; + + /** + * Moves the selection left one column. + **/ + this.selectLeft = function() { + this.$moveSelection(this.moveCursorLeft); + }; + + /** + * Moves the selection to the beginning of the current line. + **/ + this.selectLineStart = function() { + this.$moveSelection(this.moveCursorLineStart); + }; + + /** + * Moves the selection to the end of the current line. + **/ + this.selectLineEnd = function() { + this.$moveSelection(this.moveCursorLineEnd); + }; + + /** + * Moves the selection to the end of the file. + **/ + this.selectFileEnd = function() { + this.$moveSelection(this.moveCursorFileEnd); + }; + + /** + * Moves the selection to the start of the file. + **/ + this.selectFileStart = function() { + this.$moveSelection(this.moveCursorFileStart); + }; + + /** + * Moves the selection to the first word on the right. + **/ + this.selectWordRight = function() { + this.$moveSelection(this.moveCursorWordRight); + }; + + /** + * Moves the selection to the first word on the left. + **/ + this.selectWordLeft = function() { + this.$moveSelection(this.moveCursorWordLeft); + }; + + /** + * Moves the selection to highlight the entire word. + * @related EditSession.getWordRange + **/ + this.getWordRange = function(row, column) { + if (typeof column == "undefined") { + var cursor = row || this.lead; + row = cursor.row; + column = cursor.column; + } + return this.session.getWordRange(row, column); + }; + + /** + * Selects an entire word boundary. + **/ + this.selectWord = function() { + this.setSelectionRange(this.getWordRange()); + }; + + /** + * Selects a word, including its right whitespace. + * @related EditSession.getAWordRange + **/ + this.selectAWord = function() { + var cursor = this.getCursor(); + var range = this.session.getAWordRange(cursor.row, cursor.column); + this.setSelectionRange(range); + }; + + this.getLineRange = function(row, excludeLastChar) { + var rowStart = typeof row == "number" ? row : this.lead.row; + var rowEnd; + + var foldLine = this.session.getFoldLine(rowStart); + if (foldLine) { + rowStart = foldLine.start.row; + rowEnd = foldLine.end.row; + } else { + rowEnd = rowStart; + } + if (excludeLastChar === true) + return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length); + else + return new Range(rowStart, 0, rowEnd + 1, 0); + }; + + /** + * Selects the entire line. + **/ + this.selectLine = function() { + this.setSelectionRange(this.getLineRange()); + }; + + /** + * Moves the cursor up one row. + **/ + this.moveCursorUp = function() { + this.moveCursorBy(-1, 0); + }; + + /** + * Moves the cursor down one row. + **/ + this.moveCursorDown = function() { + this.moveCursorBy(1, 0); + }; + + /** + * + * Returns `true` if moving the character next to the cursor in the specified direction is a soft tab. + * @param {Object} cursor the current cursor position + * @param {Number} tabSize the tab size + * @param {Number} direction 1 for right, -1 for left + */ + this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) { + var start = cursor.column; + var end = cursor.column + tabSize; + + if (direction < 0) { + start = cursor.column - tabSize; + end = cursor.column; + } + return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length-1 == tabSize; + }; + + /** + * Moves the cursor left one column. + **/ + this.moveCursorLeft = function() { + var cursor = this.lead.getPosition(), + fold; + + if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) { + this.moveCursorTo(fold.start.row, fold.start.column); + } else if (cursor.column === 0) { + // cursor is a line (start + if (cursor.row > 0) { + this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length); + } + } + else { + var tabSize = this.session.getTabSize(); + if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) { + this.moveCursorBy(0, -tabSize); + } else { + this.moveCursorBy(0, -1); + } + } + }; + + /** + * Moves the cursor right one column. + **/ + this.moveCursorRight = function() { + var cursor = this.lead.getPosition(), + fold; + if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) { + this.moveCursorTo(fold.end.row, fold.end.column); + } + else if (this.lead.column == this.doc.getLine(this.lead.row).length) { + if (this.lead.row < this.doc.getLength() - 1) { + this.moveCursorTo(this.lead.row + 1, 0); + } + } + else { + var tabSize = this.session.getTabSize(); + var cursor = this.lead; + if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) { + this.moveCursorBy(0, tabSize); + } else { + this.moveCursorBy(0, 1); + } + } + }; + + /** + * Moves the cursor to the start of the line. + **/ + this.moveCursorLineStart = function() { + var row = this.lead.row; + var column = this.lead.column; + var screenRow = this.session.documentToScreenRow(row, column); + + // Determ the doc-position of the first character at the screen line. + var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0); + + // Determ the line + var beforeCursor = this.session.getDisplayLine( + row, null, firstColumnPosition.row, + firstColumnPosition.column + ); + + var leadingSpace = beforeCursor.match(/^\s*/); + // TODO find better way for emacs mode to override selection behaviors + if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart) + firstColumnPosition.column += leadingSpace[0].length; + this.moveCursorToPosition(firstColumnPosition); + }; + + /** + * Moves the cursor to the end of the line. + **/ + this.moveCursorLineEnd = function() { + var lead = this.lead; + var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column); + if (this.lead.column == lineEnd.column) { + var line = this.session.getLine(lineEnd.row); + if (lineEnd.column == line.length) { + var textEnd = line.search(/\s+$/); + if (textEnd > 0) + lineEnd.column = textEnd; + } + } + + this.moveCursorTo(lineEnd.row, lineEnd.column); + }; + + /** + * Moves the cursor to the end of the file. + **/ + this.moveCursorFileEnd = function() { + var row = this.doc.getLength() - 1; + var column = this.doc.getLine(row).length; + this.moveCursorTo(row, column); + }; + + /** + * Moves the cursor to the start of the file. + **/ + this.moveCursorFileStart = function() { + this.moveCursorTo(0, 0); + }; + + /** + * Moves the cursor to the word on the right. + **/ + this.moveCursorLongWordRight = function() { + var row = this.lead.row; + var column = this.lead.column; + var line = this.doc.getLine(row); + var rightOfCursor = line.substring(column); + + this.session.nonTokenRe.lastIndex = 0; + this.session.tokenRe.lastIndex = 0; + + // skip folds + var fold = this.session.getFoldAt(row, column, 1); + if (fold) { + this.moveCursorTo(fold.end.row, fold.end.column); + return; + } + + // first skip space + if (this.session.nonTokenRe.exec(rightOfCursor)) { + column += this.session.nonTokenRe.lastIndex; + this.session.nonTokenRe.lastIndex = 0; + rightOfCursor = line.substring(column); + } + + // if at line end proceed with next line + if (column >= line.length) { + this.moveCursorTo(row, line.length); + this.moveCursorRight(); + if (row < this.doc.getLength() - 1) + this.moveCursorWordRight(); + return; + } + + // advance to the end of the next token + if (this.session.tokenRe.exec(rightOfCursor)) { + column += this.session.tokenRe.lastIndex; + this.session.tokenRe.lastIndex = 0; + } + + this.moveCursorTo(row, column); + }; + + /** + * + * Moves the cursor to the word on the left. + **/ + this.moveCursorLongWordLeft = function() { + var row = this.lead.row; + var column = this.lead.column; + + // skip folds + var fold; + if (fold = this.session.getFoldAt(row, column, -1)) { + this.moveCursorTo(fold.start.row, fold.start.column); + return; + } + + var str = this.session.getFoldStringAt(row, column, -1); + if (str == null) { + str = this.doc.getLine(row).substring(0, column); + } + + var leftOfCursor = lang.stringReverse(str); + this.session.nonTokenRe.lastIndex = 0; + this.session.tokenRe.lastIndex = 0; + + // skip whitespace + if (this.session.nonTokenRe.exec(leftOfCursor)) { + column -= this.session.nonTokenRe.lastIndex; + leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex); + this.session.nonTokenRe.lastIndex = 0; + } + + // if at begin of the line proceed in line above + if (column <= 0) { + this.moveCursorTo(row, 0); + this.moveCursorLeft(); + if (row > 0) + this.moveCursorWordLeft(); + return; + } + + // move to the begin of the word + if (this.session.tokenRe.exec(leftOfCursor)) { + column -= this.session.tokenRe.lastIndex; + this.session.tokenRe.lastIndex = 0; + } + + this.moveCursorTo(row, column); + }; + + this.$shortWordEndIndex = function(rightOfCursor) { + var index = 0, ch; + var whitespaceRe = /\s/; + var tokenRe = this.session.tokenRe; + + tokenRe.lastIndex = 0; + if (this.session.tokenRe.exec(rightOfCursor)) { + index = this.session.tokenRe.lastIndex; + } else { + while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) + index ++; + + if (index < 1) { + tokenRe.lastIndex = 0; + while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { + tokenRe.lastIndex = 0; + index ++; + if (whitespaceRe.test(ch)) { + if (index > 2) { + index--; + break; + } else { + while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) + index ++; + if (index > 2) + break; + } + } + } + } + } + tokenRe.lastIndex = 0; + + return index; + }; + + this.moveCursorShortWordRight = function() { + var row = this.lead.row; + var column = this.lead.column; + var line = this.doc.getLine(row); + var rightOfCursor = line.substring(column); + + var fold = this.session.getFoldAt(row, column, 1); + if (fold) + return this.moveCursorTo(fold.end.row, fold.end.column); + + if (column == line.length) { + var l = this.doc.getLength(); + do { + row++; + rightOfCursor = this.doc.getLine(row); + } while (row < l && /^\s*$/.test(rightOfCursor)); + + if (!/^\s+/.test(rightOfCursor)) + rightOfCursor = ""; + column = 0; + } + + var index = this.$shortWordEndIndex(rightOfCursor); + + this.moveCursorTo(row, column + index); + }; + + this.moveCursorShortWordLeft = function() { + var row = this.lead.row; + var column = this.lead.column; + + var fold; + if (fold = this.session.getFoldAt(row, column, -1)) + return this.moveCursorTo(fold.start.row, fold.start.column); + + var line = this.session.getLine(row).substring(0, column); + if (column === 0) { + do { + row--; + line = this.doc.getLine(row); + } while (row > 0 && /^\s*$/.test(line)); + + column = line.length; + if (!/\s+$/.test(line)) + line = ""; + } + + var leftOfCursor = lang.stringReverse(line); + var index = this.$shortWordEndIndex(leftOfCursor); + + return this.moveCursorTo(row, column - index); + }; + + this.moveCursorWordRight = function() { + if (this.session.$selectLongWords) + this.moveCursorLongWordRight(); + else + this.moveCursorShortWordRight(); + }; + + this.moveCursorWordLeft = function() { + if (this.session.$selectLongWords) + this.moveCursorLongWordLeft(); + else + this.moveCursorShortWordLeft(); + }; + + /** + * Moves the cursor to position indicated by the parameters. Negative numbers move the cursor backwards in the document. + * @param {Number} rows The number of rows to move by + * @param {Number} chars The number of characters to move by + * + * @related EditSession.documentToScreenPosition + **/ + this.moveCursorBy = function(rows, chars) { + var screenPos = this.session.documentToScreenPosition( + this.lead.row, + this.lead.column + ); + + var offsetX; + + if (chars === 0) { + if (rows !== 0) { + if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) { + offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column); + screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]); + } else { + offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0]; + } + } + + if (this.$desiredColumn) + screenPos.column = this.$desiredColumn; + else + this.$desiredColumn = screenPos.column; + } + + var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX); + + if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) { + if (this.session.lineWidgets && this.session.lineWidgets[docPos.row]) { + if (docPos.row > 0 || rows > 0) + docPos.row++; + } + } + + // move the cursor and update the desired column + this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); + }; + + /** + * Moves the selection to the position indicated by its `row` and `column`. + * @param {Object} position The position to move to + **/ + this.moveCursorToPosition = function(position) { + this.moveCursorTo(position.row, position.column); + }; + + /** + * Moves the cursor to the row and column provided. [If `preventUpdateDesiredColumn` is `true`, then the cursor stays in the same column position as its original point.]{: #preventUpdateBoolDesc} + * @param {Number} row The row to move to + * @param {Number} column The column to move to + * @param {Boolean} keepDesiredColumn [If `true`, the cursor move does not respect the previous column]{: #preventUpdateBool} + * + **/ + this.moveCursorTo = function(row, column, keepDesiredColumn) { + // Ensure the row/column is not inside of a fold. + var fold = this.session.getFoldAt(row, column, 1); + if (fold) { + row = fold.start.row; + column = fold.start.column; + } + + this.$keepDesiredColumnOnChange = true; + var line = this.session.getLine(row); + // do not allow putting cursor in the middle of surrogate pairs + if (/[\uDC00-\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) { + if (this.lead.row == row && this.lead.column == column + 1) + column = column - 1; + else + column = column + 1; + } + this.lead.setPosition(row, column); + this.$keepDesiredColumnOnChange = false; + + if (!keepDesiredColumn) + this.$desiredColumn = null; + }; + + /** + * Moves the cursor to the screen position indicated by row and column. {:preventUpdateBoolDesc} + * @param {Number} row The row to move to + * @param {Number} column The column to move to + * @param {Boolean} keepDesiredColumn {:preventUpdateBool} + * + **/ + this.moveCursorToScreen = function(row, column, keepDesiredColumn) { + var pos = this.session.screenToDocumentPosition(row, column); + this.moveCursorTo(pos.row, pos.column, keepDesiredColumn); + }; + + // remove listeners from document + this.detach = function() { + this.lead.detach(); + this.anchor.detach(); + this.session = this.doc = null; + }; + + this.fromOrientedRange = function(range) { + this.setSelectionRange(range, range.cursor == range.start); + this.$desiredColumn = range.desiredColumn || this.$desiredColumn; + }; + + this.toOrientedRange = function(range) { + var r = this.getRange(); + if (range) { + range.start.column = r.start.column; + range.start.row = r.start.row; + range.end.column = r.end.column; + range.end.row = r.end.row; + } else { + range = r; + } + + range.cursor = this.isBackwards() ? range.start : range.end; + range.desiredColumn = this.$desiredColumn; + return range; + }; + + /** + * Saves the current cursor position and calls `func` that can change the cursor + * postion. The result is the range of the starting and eventual cursor position. + * Will reset the cursor position. + * @param {Function} The callback that should change the cursor position + * @returns {Range} + * + **/ + this.getRangeOfMovements = function(func) { + var start = this.getCursor(); + try { + func(this); + var end = this.getCursor(); + return Range.fromPoints(start, end); + } catch(e) { + return Range.fromPoints(start, start); + } finally { + this.moveCursorToPosition(start); + } + }; + + this.toJSON = function() { + if (this.rangeCount) { + var data = this.ranges.map(function(r) { + var r1 = r.clone(); + r1.isBackwards = r.cursor == r.start; + return r1; + }); + } else { + var data = this.getRange(); + data.isBackwards = this.isBackwards(); + } + return data; + }; + + this.fromJSON = function(data) { + if (data.start == undefined) { + if (this.rangeList) { + this.toSingleRange(data[0]); + for (var i = data.length; i--; ) { + var r = Range.fromPoints(data[i].start, data[i].end); + if (data[i].isBackwards) + r.cursor = r.start; + this.addRange(r, true); + } + return; + } else { + data = data[0]; + } + } + if (this.rangeList) + this.toSingleRange(data); + this.setSelectionRange(data, data.isBackwards); + }; + + this.isEqual = function(data) { + if ((data.length || this.rangeCount) && data.length != this.rangeCount) + return false; + if (!data.length || !this.ranges) + return this.getRange().isEqual(data); + + for (var i = this.ranges.length; i--; ) { + if (!this.ranges[i].isEqual(data[i])) + return false; + } + return true; + }; + +}).call(Selection.prototype); + +exports.Selection = Selection; +}); diff --git a/plugins/node_modules/ace/lib/ace/selection_test.js b/plugins/node_modules/ace/lib/ace/selection_test.js new file mode 100644 index 00000000..7760760b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/selection_test.js @@ -0,0 +1,491 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var assert = require("./test/assertions"); +var Range = require("./range").Range; + +module.exports = { + createSession : function(rows, cols) { + var line = new Array(cols + 1).join("a"); + var text = new Array(rows).join(line + "\n") + line; + return new EditSession(text); + }, + + "test: move cursor to end of file should place the cursor on last row and column" : function() { + var session = this.createSession(200, 10); + var selection = session.getSelection(); + + selection.moveCursorFileEnd(); + assert.position(selection.getCursor(), 199, 10); + }, + + "test: moveCursor to start of file should place the cursor on the first row and column" : function() { + var session = this.createSession(200, 10); + var selection = session.getSelection(); + + selection.moveCursorFileStart(); + assert.position(selection.getCursor(), 0, 0); + }, + + "test: move selection lead to end of file" : function() { + var session = this.createSession(200, 10); + var selection = session.getSelection(); + + selection.moveCursorTo(100, 5); + selection.selectFileEnd(); + + var range = selection.getRange(); + + assert.position(range.start, 100, 5); + assert.position(range.end, 199, 10); + }, + + "test: move selection lead to start of file" : function() { + var session = this.createSession(200, 10); + var selection = session.getSelection(); + + selection.moveCursorTo(100, 5); + selection.selectFileStart(); + + var range = selection.getRange(); + + assert.position(range.start, 0, 0); + assert.position(range.end, 100, 5); + }, + + "test: move cursor word right" : function() { + var session = new EditSession([ + "ab", + " Juhu Kinners (abc, 12)", + " cde" + ].join("\n")); + + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorDown(); + assert.position(selection.getCursor(), 1, 0); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 1, 5); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 1, 13); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 1, 18); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 1, 22); + + // wrap line + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 2, 4); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 2, 4); + }, + + "test: select word right if cursor in word" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 2); + selection.moveCursorWordRight(); + + assert.position(selection.getCursor(), 0, 4); + }, + + "test: moveCursor word left" : function() { + var session = new EditSession([ + "ab", + " Juhu Kinners (abc, 12)", + " cde" + ].join("\n")); + + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorDown(); + selection.moveCursorLineEnd(); + assert.position(selection.getCursor(), 1, 23); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 1, 20); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 1, 15); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 1, 6); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 1, 1); + + // wrap line + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 0); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 0); + }, + + "test: moveCursor word left with umlauts" : function() { + var session = new EditSession(" Fuß Füße"); + session.$selectLongWords = true; + + var selection = session.getSelection(); + selection.moveCursorTo(0, 9); + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 5); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 1); + }, + + "test: select word left if cursor in word" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 8); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 5); + }, + + "test: select word right and select" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 0); + selection.selectWordRight(); + + var range = selection.getRange(); + + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 4); + }, + + "test: select word left and select" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 3); + selection.selectWordLeft(); + + var range = selection.getRange(); + + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 3); + }, + + "test: select word with cursor in word should select the word" : function() { + var session = new EditSession("Juhu Kinners 123"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 8); + selection.selectWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 12); + }, + + "test: select word with cursor in word including right whitespace should select the word" : function() { + var session = new EditSession("Juhu Kinners 123"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 8); + selection.selectAWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 18); + }, + + "test: select word with cursor betwen white space and word should select the word" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 4); + selection.selectWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 4); + + selection.moveCursorTo(0, 5); + selection.selectWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 12); + }, + + "test: select word with cursor in white space should select white space" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 5); + selection.selectWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 4); + assert.position(range.end, 0, 6); + }, + + "test: moving cursor should fire a 'changeCursor' event" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 5); + + var called = false; + selection.addEventListener("changeCursor", function() { + called = true; + }); + + selection.moveCursorTo(0, 6); + assert.ok(called); + }, + + "test: calling setCursor with the same position should not fire an event": function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 5); + + var called = false; + selection.addEventListener("changeCursor", function() { + called = true; + }); + + selection.moveCursorTo(0, 5); + assert.notOk(called); + }, + + "test: moveWordright should move past || and [": function() { + var session = new EditSession("||foo["); + var selection = session.getSelection(); + session.$selectLongWords = true; + + // Move behind ||foo + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 0, 5); + + // Move behind [ + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 0, 6); + }, + + "test: moveWordLeft should move past || and [": function() { + var session = new EditSession("||foo["); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 6); + + // Move behind [foo + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 2); + + // Move behind || + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 0); + }, + + "test: move cursor to line start should move cursor to end of the indentation first": function() { + var session = new EditSession("12\n Juhu\n12"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 6); + selection.moveCursorLineStart(); + + assert.position(selection.getCursor(), 1, 4); + }, + + "test: move cursor to line start when the cursor is at the end of the indentation should move cursor to column 0": function() { + var session = new EditSession("12\n Juhu\n12"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 4); + selection.moveCursorLineStart(); + + assert.position(selection.getCursor(), 1, 0); + }, + + "test: move cursor to line start when the cursor is at column 0 should move cursor to the end of the indentation": function() { + var session = new EditSession("12\n Juhu\n12"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 0); + selection.moveCursorLineStart(); + + assert.position(selection.getCursor(), 1, 4); + }, + + // Eclipse style + "test: move cursor to line start when the cursor is before the initial indentation should move cursor to the end of the indentation": function() { + var session = new EditSession("12\n Juhu\n12"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 2); + selection.moveCursorLineStart(); + + assert.position(selection.getCursor(), 1, 4); + }, + + "test go line up when in the middle of the first line should go to document start": function() { + var session = new EditSession("juhu kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 4); + selection.moveCursorUp(); + + assert.position(selection.getCursor(), 0, 0); + }, + + "test: (wrap) go line up when in the middle of the first line should go to document start": function() { + var session = new EditSession("juhu kinners"); + session.setWrapLimitRange(5, 5); + session.adjustWrapLimit(80); + + var selection = session.getSelection(); + + selection.moveCursorTo(0, 4); + selection.moveCursorUp(); + + assert.position(selection.getCursor(), 0, 0); + }, + + + "test go line down when in the middle of the last line should go to document end": function() { + var session = new EditSession("juhu kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 4); + selection.moveCursorDown(); + + assert.position(selection.getCursor(), 0, 12); + }, + + "test (wrap) go line down when in the middle of the last line should go to document end": function() { + var session = new EditSession("juhu kinners"); + session.setWrapLimitRange(8, 8); + session.adjustWrapLimit(80); + + var selection = session.getSelection(); + + selection.moveCursorTo(0, 10); + selection.moveCursorDown(); + + assert.position(selection.getCursor(), 0, 12); + }, + + "test go line up twice and then once down when in the second should go back to the previous column": function() { + var session = new EditSession("juhu\nkinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 4); + selection.moveCursorUp(); + selection.moveCursorUp(); + selection.moveCursorDown(); + + assert.position(selection.getCursor(), 1, 4); + }, + + "test (keyboard navigation) when curLine is not EOL and targetLine is all whitespace new column should be current column": function() { + var session = new EditSession("function (a) {\n \n}"); + var selection = session.getSelection(); + + selection.moveCursorTo(2, 0); + selection.moveCursorUp(); + + assert.position(selection.getCursor(), 1, 0); + }, + + "test (keyboard navigation) when curLine is EOL and targetLine is shorter than current column, new column should be targetLine's EOL": function() { + var session = new EditSession("function (a) {\n \n}"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 14); + selection.moveCursorDown(); + + assert.position(selection.getCursor(), 1, 4); + }, + + "test fromJSON/toJSON": function() { + var session = new EditSession("function (a) {\n \n}"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 14); + selection.moveCursorDown(); + assert.position(selection.getCursor(), 1, 4); + var data = selection.toJSON(); + data = JSON.parse(JSON.stringify(data)); + selection.moveCursorDown(); + assert.position(selection.getCursor(), 2, 1); + + assert.ok(!selection.isEqual(data)); + + selection.fromJSON(data); + assert.position(selection.getCursor(), 1, 4); + assert.ok(selection.isEqual(data)); + }, + + "test setRange inside fold": function() { + var session = new EditSession("-\n-fold-\n-"); + var selection = session.getSelection(); + + session.addFold(".", new Range(0, 1, 2, 0)); + selection.setRange(new Range(1, 1, 1, 5)); + + assert.equal(session.getTextRange(), "fold"); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/snippets.js b/plugins/node_modules/ace/lib/ace/snippets.js new file mode 100644 index 00000000..01412456 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets.js @@ -0,0 +1,954 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var lang = require("./lib/lang"); +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var HashHandler = require("./keyboard/hash_handler").HashHandler; +var Tokenizer = require("./tokenizer").Tokenizer; +var comparePoints = Range.comparePoints; + +var SnippetManager = function() { + this.snippetMap = {}; + this.snippetNameMap = {}; +}; + +(function() { + oop.implement(this, EventEmitter); + + this.getTokenizer = function() { + function TabstopToken(str, _, stack) { + str = str.substr(1); + if (/^\d+$/.test(str) && !stack.inFormatString) + return [{tabstopId: parseInt(str, 10)}]; + return [{text: str}]; + } + function escape(ch) { + return "(?:[^\\\\" + ch + "]|\\\\.)"; + } + SnippetManager.$tokenizer = new Tokenizer({ + start: [ + {regex: /:/, onMatch: function(val, state, stack) { + if (stack.length && stack[0].expectIf) { + stack[0].expectIf = false; + stack[0].elseBranch = stack[0]; + return [stack[0]]; + } + return ":"; + }}, + {regex: /\\./, onMatch: function(val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) { + val = ch; + }else if ("`$\\".indexOf(ch) != -1) { + val = ch; + } else if (stack.inFormatString) { + if (ch == "n") + val = "\n"; + else if (ch == "t") + val = "\n"; + else if ("ulULE".indexOf(ch) != -1) { + val = {changeCase: ch, local: ch > "a"}; + } + } + + return [val]; + }}, + {regex: /}/, onMatch: function(val, state, stack) { + return [stack.length ? stack.shift() : val]; + }}, + {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, + {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { + var t = TabstopToken(str.substr(1), state, stack); + stack.unshift(t[0]); + return t; + }, next: "snippetVar"}, + {regex: /\n/, token: "newline", merge: false} + ], + snippetVar: [ + {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { + stack[0].choices = val.slice(1, -1).split(","); + }, next: "start"}, + {regex: "/(" + escape("/") + "+)/(?:(" + escape("/") + "*)/)(\\w*):?", + onMatch: function(val, state, stack) { + var ts = stack[0]; + ts.fmtString = val; + + val = this.splitRegex.exec(val); + ts.guard = val[1]; + ts.fmt = val[2]; + ts.flag = val[3]; + return ""; + }, next: "start"}, + {regex: "`" + escape("`") + "*`", onMatch: function(val, state, stack) { + stack[0].code = val.splice(1, -1); + return ""; + }, next: "start"}, + {regex: "\\?", onMatch: function(val, state, stack) { + if (stack[0]) + stack[0].expectIf = true; + }, next: "start"}, + {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} + ], + formatString: [ + {regex: "/(" + escape("/") + "+)/", token: "regex"}, + {regex: "", onMatch: function(val, state, stack) { + stack.inFormatString = true; + }, next: "start"} + ] + }); + SnippetManager.prototype.getTokenizer = function() { + return SnippetManager.$tokenizer; + }; + return SnippetManager.$tokenizer; + }; + + this.tokenizeTmSnippet = function(str, startState) { + return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { + return x.value || x; + }); + }; + + this.$getDefaultValue = function(editor, name) { + if (/^[A-Z]\d+$/.test(name)) { + var i = name.substr(1); + return (this.variables[name[0] + "__"] || {})[i]; + } + if (/^\d+$/.test(name)) { + return (this.variables.__ || {})[name]; + } + name = name.replace(/^TM_/, ""); + + if (!editor) + return; + var s = editor.session; + switch(name) { + case "CURRENT_WORD": + var r = s.getWordRange(); + /* falls through */ + case "SELECTION": + case "SELECTED_TEXT": + return s.getTextRange(r); + case "CURRENT_LINE": + return s.getLine(editor.getCursorPosition().row); + case "PREV_LINE": // not possible in textmate + return s.getLine(editor.getCursorPosition().row - 1); + case "LINE_INDEX": + return editor.getCursorPosition().column; + case "LINE_NUMBER": + return editor.getCursorPosition().row + 1; + case "SOFT_TABS": + return s.getUseSoftTabs() ? "YES" : "NO"; + case "TAB_SIZE": + return s.getTabSize(); + // default but can't fill :( + case "FILENAME": + case "FILEPATH": + return ""; + case "FULLNAME": + return "Ace"; + } + }; + this.variables = {}; + this.getVariableValue = function(editor, varName) { + if (this.variables.hasOwnProperty(varName)) + return this.variables[varName](editor, varName) || ""; + return this.$getDefaultValue(editor, varName) || ""; + }; + + // returns string formatted according to http://manual.macromates.com/en/regular_expressions#replacement_string_syntax_format_strings + this.tmStrFormat = function(str, ch, editor) { + var flag = ch.flag || ""; + var re = ch.guard; + re = new RegExp(re, flag.replace(/[^gi]/, "")); + var fmtTokens = this.tokenizeTmSnippet(ch.fmt, "formatString"); + var _self = this; + var formatted = str.replace(re, function() { + _self.variables.__ = arguments; + var fmtParts = _self.resolveVariables(fmtTokens, editor); + var gChangeCase = "E"; + for (var i = 0; i < fmtParts.length; i++) { + var ch = fmtParts[i]; + if (typeof ch == "object") { + fmtParts[i] = ""; + if (ch.changeCase && ch.local) { + var next = fmtParts[i + 1]; + if (next && typeof next == "string") { + if (ch.changeCase == "u") + fmtParts[i] = next[0].toUpperCase(); + else + fmtParts[i] = next[0].toLowerCase(); + fmtParts[i + 1] = next.substr(1); + } + } else if (ch.changeCase) { + gChangeCase = ch.changeCase; + } + } else if (gChangeCase == "U") { + fmtParts[i] = ch.toUpperCase(); + } else if (gChangeCase == "L") { + fmtParts[i] = ch.toLowerCase(); + } + } + return fmtParts.join(""); + }); + this.variables.__ = null; + return formatted; + }; + + this.resolveVariables = function(snippet, editor) { + var result = []; + for (var i = 0; i < snippet.length; i++) { + var ch = snippet[i]; + if (typeof ch == "string") { + result.push(ch); + } else if (typeof ch != "object") { + continue; + } else if (ch.skip) { + gotoNext(ch); + } else if (ch.processed < i) { + continue; + } else if (ch.text) { + var value = this.getVariableValue(editor, ch.text); + if (value && ch.fmtString) + value = this.tmStrFormat(value, ch); + ch.processed = i; + if (ch.expectIf == null) { + if (value) { + result.push(value); + gotoNext(ch); + } + } else { + if (value) { + ch.skip = ch.elseBranch; + } else + gotoNext(ch); + } + } else if (ch.tabstopId != null) { + result.push(ch); + } else if (ch.changeCase != null) { + result.push(ch); + } + } + function gotoNext(ch) { + var i1 = snippet.indexOf(ch, i + 1); + if (i1 != -1) + i = i1; + } + return result; + }; + + this.insertSnippetForSelection = function(editor, snippetText) { + var cursor = editor.getCursorPosition(); + var line = editor.session.getLine(cursor.row); + var tabString = editor.session.getTabString(); + var indentString = line.match(/^\s*/)[0]; + + if (cursor.column < indentString.length) + indentString = indentString.slice(0, cursor.column); + + snippetText = snippetText.replace(/\r/g, ""); + var tokens = this.tokenizeTmSnippet(snippetText); + tokens = this.resolveVariables(tokens, editor); + // indent + tokens = tokens.map(function(x) { + if (x == "\n") + return x + indentString; + if (typeof x == "string") + return x.replace(/\t/g, tabString); + return x; + }); + // tabstop values + var tabstops = []; + tokens.forEach(function(p, i) { + if (typeof p != "object") + return; + var id = p.tabstopId; + var ts = tabstops[id]; + if (!ts) { + ts = tabstops[id] = []; + ts.index = id; + ts.value = ""; + } + if (ts.indexOf(p) !== -1) + return; + ts.push(p); + var i1 = tokens.indexOf(p, i + 1); + if (i1 === -1) + return; + + var value = tokens.slice(i + 1, i1); + var isNested = value.some(function(t) {return typeof t === "object";}); + if (isNested && !ts.value) { + ts.value = value; + } else if (value.length && (!ts.value || typeof ts.value !== "string")) { + ts.value = value.join(""); + } + }); + + // expand tabstop values + tabstops.forEach(function(ts) {ts.length = 0;}); + var expanding = {}; + function copyValue(val) { + var copy = []; + for (var i = 0; i < val.length; i++) { + var p = val[i]; + if (typeof p == "object") { + if (expanding[p.tabstopId]) + continue; + var j = val.lastIndexOf(p, i - 1); + p = copy[j] || {tabstopId: p.tabstopId}; + } + copy[i] = p; + } + return copy; + } + for (var i = 0; i < tokens.length; i++) { + var p = tokens[i]; + if (typeof p != "object") + continue; + var id = p.tabstopId; + var i1 = tokens.indexOf(p, i + 1); + if (expanding[id]) { + // if reached closing bracket clear expanding state + if (expanding[id] === p) + expanding[id] = null; + // otherwise just ignore recursive tabstop + continue; + } + + var ts = tabstops[id]; + var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value); + arg.unshift(i + 1, Math.max(0, i1 - i)); + arg.push(p); + expanding[id] = p; + tokens.splice.apply(tokens, arg); + + if (ts.indexOf(p) === -1) + ts.push(p); + } + + // convert to plain text + var row = 0, column = 0; + var text = ""; + tokens.forEach(function(t) { + if (typeof t === "string") { + var lines = t.split("\n"); + if (lines.length > 1){ + column = lines[lines.length - 1].length; + row += lines.length - 1; + } else + column += t.length; + text += t; + } else { + if (!t.start) + t.start = {row: row, column: column}; + else + t.end = {row: row, column: column}; + } + }); + var range = editor.getSelectionRange(); + var end = editor.session.replace(range, text); + + var tabstopManager = new TabstopManager(editor); + var selectionId = editor.inVirtualSelectionMode && editor.selection.index; + tabstopManager.addTabstops(tabstops, range.start, end, selectionId); + }; + + this.insertSnippet = function(editor, snippetText) { + var self = this; + if (editor.inVirtualSelectionMode) + return self.insertSnippetForSelection(editor, snippetText); + + editor.forEachSelection(function() { + self.insertSnippetForSelection(editor, snippetText); + }, null, {keepOrder: true}); + + if (editor.tabstopManager) + editor.tabstopManager.tabNext(); + }; + + this.$getScope = function(editor) { + var scope = editor.session.$mode.$id || ""; + scope = scope.split("/").pop(); + if (scope === "html" || scope === "php") { + // PHP is actually HTML + if (scope === "php" && !editor.session.$mode.inlinePhp) + scope = "html"; + var c = editor.getCursorPosition(); + var state = editor.session.getState(c.row); + if (typeof state === "object") { + state = state[0]; + } + if (state.substring) { + if (state.substring(0, 3) == "js-") + scope = "javascript"; + else if (state.substring(0, 4) == "css-") + scope = "css"; + else if (state.substring(0, 4) == "php-") + scope = "php"; + } + } + + return scope; + }; + + this.getActiveScopes = function(editor) { + var scope = this.$getScope(editor); + var scopes = [scope]; + var snippetMap = this.snippetMap; + if (snippetMap[scope] && snippetMap[scope].includeScopes) { + scopes.push.apply(scopes, snippetMap[scope].includeScopes); + } + scopes.push("_"); + return scopes; + }; + + this.expandWithTab = function(editor, options) { + var self = this; + var result = editor.forEachSelection(function() { + return self.expandSnippetForSelection(editor, options); + }, null, {keepOrder: true}); + if (result && editor.tabstopManager) + editor.tabstopManager.tabNext(); + return result; + }; + + this.expandSnippetForSelection = function(editor, options) { + var cursor = editor.getCursorPosition(); + var line = editor.session.getLine(cursor.row); + var before = line.substring(0, cursor.column); + var after = line.substr(cursor.column); + + var snippetMap = this.snippetMap; + var snippet; + this.getActiveScopes(editor).some(function(scope) { + var snippets = snippetMap[scope]; + if (snippets) + snippet = this.findMatchingSnippet(snippets, before, after); + return !!snippet; + }, this); + if (!snippet) + return false; + if (options && options.dryRun) + return true; + editor.session.doc.removeInLine(cursor.row, + cursor.column - snippet.replaceBefore.length, + cursor.column + snippet.replaceAfter.length + ); + + this.variables.M__ = snippet.matchBefore; + this.variables.T__ = snippet.matchAfter; + this.insertSnippetForSelection(editor, snippet.content); + + this.variables.M__ = this.variables.T__ = null; + return true; + }; + + this.findMatchingSnippet = function(snippetList, before, after) { + for (var i = snippetList.length; i--;) { + var s = snippetList[i]; + if (s.startRe && !s.startRe.test(before)) + continue; + if (s.endRe && !s.endRe.test(after)) + continue; + if (!s.startRe && !s.endRe) + continue; + + s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; + s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; + s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; + s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; + return s; + } + }; + + this.snippetMap = {}; + this.snippetNameMap = {}; + this.register = function(snippets, scope) { + var snippetMap = this.snippetMap; + var snippetNameMap = this.snippetNameMap; + var self = this; + + if (!snippets) + snippets = []; + + function wrapRegexp(src) { + if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) + src = "(?:" + src + ")"; + + return src || ""; + } + function guardedRegexp(re, guard, opening) { + re = wrapRegexp(re); + guard = wrapRegexp(guard); + if (opening) { + re = guard + re; + if (re && re[re.length - 1] != "$") + re = re + "$"; + } else { + re = re + guard; + if (re && re[0] != "^") + re = "^" + re; + } + return new RegExp(re); + } + + function addSnippet(s) { + if (!s.scope) + s.scope = scope || "_"; + scope = s.scope; + if (!snippetMap[scope]) { + snippetMap[scope] = []; + snippetNameMap[scope] = {}; + } + + var map = snippetNameMap[scope]; + if (s.name) { + var old = map[s.name]; + if (old) + self.unregister(old); + map[s.name] = s; + } + snippetMap[scope].push(s); + + if (s.tabTrigger && !s.trigger) { + if (!s.guard && /^\w/.test(s.tabTrigger)) + s.guard = "\\b"; + s.trigger = lang.escapeRegExp(s.tabTrigger); + } + + if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) + return; + + s.startRe = guardedRegexp(s.trigger, s.guard, true); + s.triggerRe = new RegExp(s.trigger); + + s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); + s.endTriggerRe = new RegExp(s.endTrigger); + } + + if (snippets && snippets.content) + addSnippet(snippets); + else if (Array.isArray(snippets)) + snippets.forEach(addSnippet); + + this._signal("registerSnippets", {scope: scope}); + }; + this.unregister = function(snippets, scope) { + var snippetMap = this.snippetMap; + var snippetNameMap = this.snippetNameMap; + + function removeSnippet(s) { + var nameMap = snippetNameMap[s.scope||scope]; + if (nameMap && nameMap[s.name]) { + delete nameMap[s.name]; + var map = snippetMap[s.scope||scope]; + var i = map && map.indexOf(s); + if (i >= 0) + map.splice(i, 1); + } + } + if (snippets.content) + removeSnippet(snippets); + else if (Array.isArray(snippets)) + snippets.forEach(removeSnippet); + }; + this.parseSnippetFile = function(str) { + str = str.replace(/\r/g, ""); + var list = [], snippet = {}; + var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; + var m; + while (m = re.exec(str)) { + if (m[1]) { + try { + snippet = JSON.parse(m[1]); + list.push(snippet); + } catch (e) {} + } if (m[4]) { + snippet.content = m[4].replace(/^\t/gm, ""); + list.push(snippet); + snippet = {}; + } else { + var key = m[2], val = m[3]; + if (key == "regex") { + var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; + snippet.guard = guardRe.exec(val)[1]; + snippet.trigger = guardRe.exec(val)[1]; + snippet.endTrigger = guardRe.exec(val)[1]; + snippet.endGuard = guardRe.exec(val)[1]; + } else if (key == "snippet") { + snippet.tabTrigger = val.match(/^\S*/)[0]; + if (!snippet.name) + snippet.name = val; + } else { + snippet[key] = val; + } + } + } + return list; + }; + this.getSnippetByName = function(name, editor) { + var snippetMap = this.snippetNameMap; + var snippet; + this.getActiveScopes(editor).some(function(scope) { + var snippets = snippetMap[scope]; + if (snippets) + snippet = snippets[name]; + return !!snippet; + }, this); + return snippet; + }; + +}).call(SnippetManager.prototype); + + +var TabstopManager = function(editor) { + if (editor.tabstopManager) + return editor.tabstopManager; + editor.tabstopManager = this; + this.$onChange = this.onChange.bind(this); + this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; + this.$onChangeSession = this.onChangeSession.bind(this); + this.$onAfterExec = this.onAfterExec.bind(this); + this.attach(editor); +}; +(function() { + this.attach = function(editor) { + this.index = 0; + this.ranges = []; + this.tabstops = []; + this.$openTabstops = null; + this.selectedTabstop = null; + + this.editor = editor; + this.editor.on("change", this.$onChange); + this.editor.on("changeSelection", this.$onChangeSelection); + this.editor.on("changeSession", this.$onChangeSession); + this.editor.commands.on("afterExec", this.$onAfterExec); + this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + }; + this.detach = function() { + this.tabstops.forEach(this.removeTabstopMarkers, this); + this.ranges = null; + this.tabstops = null; + this.selectedTabstop = null; + this.editor.removeListener("change", this.$onChange); + this.editor.removeListener("changeSelection", this.$onChangeSelection); + this.editor.removeListener("changeSession", this.$onChangeSession); + this.editor.commands.removeListener("afterExec", this.$onAfterExec); + this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); + this.editor.tabstopManager = null; + this.editor = null; + }; + + this.onChange = function(delta) { + var changeRange = delta; + var isRemove = delta.action[0] == "r"; + var start = delta.start; + var end = delta.end; + var startRow = start.row; + var endRow = end.row; + var lineDif = endRow - startRow; + var colDiff = end.column - start.column; + + if (isRemove) { + lineDif = -lineDif; + colDiff = -colDiff; + } + if (!this.$inChange && isRemove) { + var ts = this.selectedTabstop; + var changedOutside = ts && !ts.some(function(r) { + return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0; + }); + if (changedOutside) + return this.detach(); + } + var ranges = this.ranges; + for (var i = 0; i < ranges.length; i++) { + var r = ranges[i]; + if (r.end.row < start.row) + continue; + + if (isRemove && comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) { + this.removeRange(r); + i--; + continue; + } + + if (r.start.row == startRow && r.start.column > start.column) + r.start.column += colDiff; + if (r.end.row == startRow && r.end.column >= start.column) + r.end.column += colDiff; + if (r.start.row >= startRow) + r.start.row += lineDif; + if (r.end.row >= startRow) + r.end.row += lineDif; + + if (comparePoints(r.start, r.end) > 0) + this.removeRange(r); + } + if (!ranges.length) + this.detach(); + }; + this.updateLinkedFields = function() { + var ts = this.selectedTabstop; + if (!ts || !ts.hasLinkedRanges) + return; + this.$inChange = true; + var session = this.editor.session; + var text = session.getTextRange(ts.firstNonLinked); + for (var i = ts.length; i--;) { + var range = ts[i]; + if (!range.linked) + continue; + var fmt = exports.snippetManager.tmStrFormat(text, range.original); + session.replace(range, fmt); + } + this.$inChange = false; + }; + this.onAfterExec = function(e) { + if (e.command && !e.command.readOnly) + this.updateLinkedFields(); + }; + this.onChangeSelection = function() { + if (!this.editor) + return; + var lead = this.editor.selection.lead; + var anchor = this.editor.selection.anchor; + var isEmpty = this.editor.selection.isEmpty(); + for (var i = this.ranges.length; i--;) { + if (this.ranges[i].linked) + continue; + var containsLead = this.ranges[i].contains(lead.row, lead.column); + var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); + if (containsLead && containsAnchor) + return; + } + this.detach(); + }; + this.onChangeSession = function() { + this.detach(); + }; + this.tabNext = function(dir) { + var max = this.tabstops.length; + var index = this.index + (dir || 1); + index = Math.min(Math.max(index, 1), max); + if (index == max) + index = 0; + this.selectTabstop(index); + if (index === 0) + this.detach(); + }; + this.selectTabstop = function(index) { + this.$openTabstops = null; + var ts = this.tabstops[this.index]; + if (ts) + this.addTabstopMarkers(ts); + this.index = index; + ts = this.tabstops[this.index]; + if (!ts || !ts.length) + return; + + this.selectedTabstop = ts; + if (!this.editor.inVirtualSelectionMode) { + var sel = this.editor.multiSelect; + sel.toSingleRange(ts.firstNonLinked.clone()); + for (var i = ts.length; i--;) { + if (ts.hasLinkedRanges && ts[i].linked) + continue; + sel.addRange(ts[i].clone(), true); + } + // todo investigate why is this needed + if (sel.ranges[0]) + sel.addRange(sel.ranges[0].clone()); + } else { + this.editor.selection.setRange(ts.firstNonLinked); + } + + this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + }; + this.addTabstops = function(tabstops, start, end) { + if (!this.$openTabstops) + this.$openTabstops = []; + // add final tabstop if missing + if (!tabstops[0]) { + var p = Range.fromPoints(end, end); + moveRelative(p.start, start); + moveRelative(p.end, start); + tabstops[0] = [p]; + tabstops[0].index = 0; + } + + var i = this.index; + var arg = [i + 1, 0]; + var ranges = this.ranges; + tabstops.forEach(function(ts, index) { + var dest = this.$openTabstops[index] || ts; + + for (var i = ts.length; i--;) { + var p = ts[i]; + var range = Range.fromPoints(p.start, p.end || p.start); + movePoint(range.start, start); + movePoint(range.end, start); + range.original = p; + range.tabstop = dest; + ranges.push(range); + if (dest != ts) + dest.unshift(range); + else + dest[i] = range; + if (p.fmtString) { + range.linked = true; + dest.hasLinkedRanges = true; + } else if (!dest.firstNonLinked) + dest.firstNonLinked = range; + } + if (!dest.firstNonLinked) + dest.hasLinkedRanges = false; + if (dest === ts) { + arg.push(dest); + this.$openTabstops[index] = dest; + } + this.addTabstopMarkers(dest); + }, this); + + if (arg.length > 2) { + // when adding new snippet inside existing one, make sure 0 tabstop is at the end + if (this.tabstops.length) + arg.push(arg.splice(2, 1)[0]); + this.tabstops.splice.apply(this.tabstops, arg); + } + }; + + this.addTabstopMarkers = function(ts) { + var session = this.editor.session; + ts.forEach(function(range) { + if (!range.markerId) + range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); + }); + }; + this.removeTabstopMarkers = function(ts) { + var session = this.editor.session; + ts.forEach(function(range) { + session.removeMarker(range.markerId); + range.markerId = null; + }); + }; + this.removeRange = function(range) { + var i = range.tabstop.indexOf(range); + range.tabstop.splice(i, 1); + i = this.ranges.indexOf(range); + this.ranges.splice(i, 1); + this.editor.session.removeMarker(range.markerId); + if (!range.tabstop.length) { + i = this.tabstops.indexOf(range.tabstop); + if (i != -1) + this.tabstops.splice(i, 1); + if (!this.tabstops.length) + this.detach(); + } + }; + + this.keyboardHandler = new HashHandler(); + this.keyboardHandler.bindKeys({ + "Tab": function(ed) { + if (exports.snippetManager && exports.snippetManager.expandWithTab(ed)) { + return; + } + + ed.tabstopManager.tabNext(1); + }, + "Shift-Tab": function(ed) { + ed.tabstopManager.tabNext(-1); + }, + "Esc": function(ed) { + ed.tabstopManager.detach(); + }, + "Return": function(ed) { + //ed.tabstopManager.tabNext(1); + return false; + } + }); +}).call(TabstopManager.prototype); + + + +var changeTracker = {}; +changeTracker.onChange = Anchor.prototype.onChange; +changeTracker.setPosition = function(row, column) { + this.pos.row = row; + this.pos.column = column; +}; +changeTracker.update = function(pos, delta, $insertRight) { + this.$insertRight = $insertRight; + this.pos = pos; + this.onChange(delta); +}; + +var movePoint = function(point, diff) { + if (point.row == 0) + point.column += diff.column; + point.row += diff.row; +}; + +var moveRelative = function(point, start) { + if (point.row == start.row) + point.column -= start.column; + point.row -= start.row; +}; + + +require("./lib/dom").importCssString("\ +.ace_snippet-marker {\ + -moz-box-sizing: border-box;\ + box-sizing: border-box;\ + background: rgba(194, 193, 208, 0.09);\ + border: 1px dotted rgba(211, 208, 235, 0.62);\ + position: absolute;\ +}"); + +exports.snippetManager = new SnippetManager(); + + +var Editor = require("./editor").Editor; +(function() { + this.insertSnippet = function(content, options) { + return exports.snippetManager.insertSnippet(this, content, options); + }; + this.expandSnippet = function(options) { + return exports.snippetManager.expandWithTab(this, options); + }; +}).call(Editor.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/_.snippets b/plugins/node_modules/ace/lib/ace/snippets/_.snippets new file mode 100644 index 00000000..d553449d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/_.snippets @@ -0,0 +1,240 @@ +# Global snippets + +# (c) holds no legal value ;) +snippet c) + Copyright `&enc[:2] == "utf" ? "©" : "(c)"` `strftime("%Y")` ${1:`g:snips_author`}. All Rights Reserved.${2} +snippet date + `strftime("%Y-%m-%d")` +snippet ddate + `strftime("%B %d, %Y")` +snippet time + `strftime("%H:%M")` +snippet lorem + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +snippet GPL2 + ${1:One line to give the program's name and a brief description.} + Copyright (C) `strftime("%Y")` ${2:copyright holder} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ${3} +snippet LGPL2 + ${1:One line to give the program's name and a brief description.} + Copyright (C) `strftime("%Y")` ${2:copyright holder} + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ${3} +snippet GPL3 + ${1:one line to give the program's name and a brief description.} + Copyright (C) `strftime("%Y")` ${2:copyright holder} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + ${3} +snippet LGPL3 + ${1:One line to give the program's name and a brief description.} + Copyright (C) `strftime("%Y")` ${2:copyright holder} + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ${3} +snippet BSD2 + ${1:one line to give the program's name and a brief description} + Copyright (C) `strftime("%Y")` ${2:copyright holder} + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY $2 ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL $2 BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + The views and conclusions contained in the software and documentation + are those of the authors and should not be interpreted as representing + official policies, either expressedor implied, of $2. + + ${4} +snippet BSD3 + ${1:one line to give the program's name and a brief description} + Copyright (C) `strftime("%Y")` ${2:copyright holder} + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the ${3:organization} nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY $2 ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL $2 BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ${4} +snippet BSD4 + ${1:one line to give the program's name and a brief description} + Copyright (C) `strftime("%Y")` ${2:copyright holder} + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the ${3:organization}. + 4. Neither the name of the $3 nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY $2 ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL $2 BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ${4} +snippet MIT + ${1:one line to give the program's name and a brief description} + Copyright (C) `strftime("%Y")` ${2:copyright holder} + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE + OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ${3} +snippet APACHE + ${1:one line to give the program's name and a brief description} + Copyright `strftime("%Y")` ${2:copyright holder} + + 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. + + ${3} +snippet BEERWARE + ${2:one line to give the program's name and a brief description} + Copyright `strftime("%Y")` ${3:copyright holder} + + Licensed under the "THE BEER-WARE LICENSE" (Revision 42): + ${1:`g:snips_author`} wrote this file. As long as you retain this notice you + can do whatever you want with this stuff. If we meet some day, and you think + this stuff is worth it, you can buy me a beer or coffee in return + + ${4} + +snippet WTFPL + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright `strftime("%Y")` ${1:copyright holder} + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION diff --git a/plugins/node_modules/ace/lib/ace/snippets/_all_modes.js b/plugins/node_modules/ace/lib/ace/snippets/_all_modes.js new file mode 100644 index 00000000..17086d08 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/_all_modes.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./_all_modes.snippets"); +exports.scope = "_all_modes"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/_all_modes.snippets b/plugins/node_modules/ace/lib/ace/snippets/_all_modes.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/abap.js b/plugins/node_modules/ace/lib/ace/snippets/abap.js new file mode 100644 index 00000000..902cb1bb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/abap.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./abap.snippets"); +exports.scope = "abap"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/abap.snippets b/plugins/node_modules/ace/lib/ace/snippets/abap.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/abc.js b/plugins/node_modules/ace/lib/ace/snippets/abc.js new file mode 100644 index 00000000..da0448ef --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/abc.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./abc.snippets"); +exports.scope = "abc"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/abc.snippets b/plugins/node_modules/ace/lib/ace/snippets/abc.snippets new file mode 100644 index 00000000..5c3cd677 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/abc.snippets @@ -0,0 +1,31 @@ + +snippet zupfnoter.print + %%%%hn.print {"startpos": ${1:pos_y}, "t":"${2:title}", "v":[${3:voices}], "s":[[${4:syncvoices}1,2]], "f":[${5:flowlines}], "sf":[${6:subflowlines}], "j":[${7:jumplines}]} + +snippet zupfnoter.note + %%%%hn.note {"pos": [${1:pos_x},${2:pos_y}], "text": "${3:text}", "style": "${4:style}"} + +snippet zupfnoter.annotation + %%%%hn.annotation {"id": "${1:id}", "pos": [${2:pos}], "text": "${3:text}"} + +snippet zupfnoter.lyrics + %%%%hn.lyrics {"pos": [${1:x_pos},${2:y_pos}]} + +snippet zupfnoter.legend + %%%%hn.legend {"pos": [${1:x_pos},${2:y_pos}]} + + + +snippet zupfnoter.target + "^:${1:target}" + +snippet zupfnoter.goto + "^@${1:target}@${2:distance}" + +snippet zupfnoter.annotationref + "^#${1:target}" + +snippet zupfnoter.annotation + "^!${1:text}@${2:x_offset},${3:y_offset}" + + diff --git a/plugins/node_modules/ace/lib/ace/snippets/actionscript.js b/plugins/node_modules/ace/lib/ace/snippets/actionscript.js new file mode 100644 index 00000000..5d4e2168 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/actionscript.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./actionscript.snippets"); +exports.scope = "actionscript"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/actionscript.snippets b/plugins/node_modules/ace/lib/ace/snippets/actionscript.snippets new file mode 100644 index 00000000..af9611c3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/actionscript.snippets @@ -0,0 +1,157 @@ +snippet main + package { + import flash.display.*; + import flash.Events.*; + + public class Main extends Sprite { + public function Main ( ) { + trace("start"); + stage.scaleMode = StageScaleMode.NO_SCALE; + stage.addEventListener(Event.RESIZE, resizeListener); + } + + private function resizeListener (e:Event):void { + trace("The application window changed size!"); + trace("New width: " + stage.stageWidth); + trace("New height: " + stage.stageHeight); + } + + } + + } +snippet class + ${1:public|internal} class ${2:name} ${3:extends } { + public function $2 ( ) { + ("start"); + } + } +snippet all + package name { + + ${1:public|internal|final} class ${2:name} ${3:extends } { + private|public| static const FOO = "abc"; + private|public| static var BAR = "abc"; + + // class initializer - no JIT !! one time setup + if Cababilities.os == "Linux|MacOS" { + FOO = "other"; + } + + // constructor: + public function $2 ( ){ + super2(); + trace("start"); + } + public function name (a, b...){ + super.name(..); + lable:break + } + } + } + + function A(){ + // A can only be accessed within this file + } +snippet switch + switch(${1}){ + case ${2}: + ${3} + break; + default: + } +snippet case + case ${1}: + ${2} + break; +snippet package + package ${1:package}{ + ${2} + } +snippet wh + while ${1:cond}{ + ${2} + } +snippet do + do { + ${2} + } while (${1:cond}) +snippet while + while ${1:cond}{ + ${2} + } +snippet for enumerate names + for (${1:var} in ${2:object}){ + ${3} + } +snippet for enumerate values + for each (${1:var} in ${2:object}){ + ${3} + } +snippet get_set + function get ${1:name} { + return ${2} + } + function set $1 (newValue) { + ${3} + } +snippet interface + interface name { + function method(${1}):${2:returntype}; + } +snippet try + try { + ${1} + } catch (error:ErrorType) { + ${2} + } finally { + ${3} + } +# For Loop (same as c.snippet) +snippet for for (..) {..} + for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) { + ${4:/* code */} + } +# Custom For Loop +snippet forr + for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) { + ${5:/* code */} + } +# If Condition +snippet if + if (${1:/* condition */}) { + ${2:/* code */} + } +snippet el + else { + ${1} + } +# Ternary conditional +snippet t + ${1:/* condition */} ? ${2:a} : ${3:b} +snippet fun + function ${1:function_name}(${2})${3} + { + ${4:/* code */} + } +# FlxSprite (usefull when using the flixel library) +snippet FlxSprite + package + { + import org.flixel.* + + public class ${1:ClassName} extends ${2:FlxSprite} + { + public function $1(${3: X:Number, Y:Number}):void + { + super(X,Y); + ${4: //code...} + } + + override public function update():void + { + super.update(); + ${5: //code...} + } + } + } + diff --git a/plugins/node_modules/ace/lib/ace/snippets/ada.js b/plugins/node_modules/ace/lib/ace/snippets/ada.js new file mode 100644 index 00000000..5b3ea215 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/ada.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./ada.snippets"); +exports.scope = "ada"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/ada.snippets b/plugins/node_modules/ace/lib/ace/snippets/ada.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/all_modes.js b/plugins/node_modules/ace/lib/ace/snippets/all_modes.js new file mode 100644 index 00000000..d0e46233 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/all_modes.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./all_modes.snippets"); +exports.scope = "all_modes"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/all_modes.snippets b/plugins/node_modules/ace/lib/ace/snippets/all_modes.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/apache.snippets b/plugins/node_modules/ace/lib/ace/snippets/apache.snippets new file mode 100644 index 00000000..a9e53e19 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/apache.snippets @@ -0,0 +1,35 @@ +# Snippets for code blocks used oftenly in Apache files. +# <Directory> +snippet dir + <Directory ${1:/}> + DirectoryIndex ${2:index.html} + Order Deny,Allow + Deny from All + </Directory> +# <FilesMatch> +snippet filesmatch + <FilesMatch "${1:regex}"> + ${2} + </FilesMatch> +# <IfModule> +snippet ifmodule + <IfModule ${1:mod_example.c}> + ${2} + </IfModule> +# <LimitExcept> +snippet limitexcept + <LimitExcept ${1:POST GET}> + ${2} + </LimitExcept> +# <Proxy> +snippet proxy + <Proxy ${1:*}> + ${2} + </Proxy> +# <VirtualHost> +snippet virtualhost + <VirtualHost ${1:*}:${2:80}> + ServerAdmin ${3:webmaster@example.com} + DocumentRoot ${4:/www/example.com} + ServerName ${5:www.example.com} + </VirtualHost> diff --git a/plugins/node_modules/ace/lib/ace/snippets/apache_conf.js b/plugins/node_modules/ace/lib/ace/snippets/apache_conf.js new file mode 100644 index 00000000..86aa69b4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/apache_conf.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./apache_conf.snippets"); +exports.scope = "apache_conf"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/apache_conf.snippets b/plugins/node_modules/ace/lib/ace/snippets/apache_conf.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/applescript.js b/plugins/node_modules/ace/lib/ace/snippets/applescript.js new file mode 100644 index 00000000..5536397c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/applescript.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./applescript.snippets"); +exports.scope = "applescript"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/applescript.snippets b/plugins/node_modules/ace/lib/ace/snippets/applescript.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/asciidoc.js b/plugins/node_modules/ace/lib/ace/snippets/asciidoc.js new file mode 100644 index 00000000..7857020c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/asciidoc.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./asciidoc.snippets"); +exports.scope = "asciidoc"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/asciidoc.snippets b/plugins/node_modules/ace/lib/ace/snippets/asciidoc.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/assembly_x86.js b/plugins/node_modules/ace/lib/ace/snippets/assembly_x86.js new file mode 100644 index 00000000..747335be --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/assembly_x86.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./assembly_x86.snippets"); +exports.scope = "assembly_x86"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/assembly_x86.snippets b/plugins/node_modules/ace/lib/ace/snippets/assembly_x86.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/autohotkey.js b/plugins/node_modules/ace/lib/ace/snippets/autohotkey.js new file mode 100644 index 00000000..064647e3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/autohotkey.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./autohotkey.snippets"); +exports.scope = "autohotkey"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/autohotkey.snippets b/plugins/node_modules/ace/lib/ace/snippets/autohotkey.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/autoit.snippets b/plugins/node_modules/ace/lib/ace/snippets/autoit.snippets new file mode 100644 index 00000000..690018ce --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/autoit.snippets @@ -0,0 +1,66 @@ +snippet if + If ${1:condition} Then + ${2:; True code} + EndIf +snippet el + Else + ${1} +snippet elif + ElseIf ${1:condition} Then + ${2:; True code} +# If/Else block +snippet ifel + If ${1:condition} Then + ${2:; True code} + Else + ${3:; Else code} + EndIf +# If/ElseIf/Else block +snippet ifelif + If ${1:condition 1} Then + ${2:; True code} + ElseIf ${3:condition 2} Then + ${4:; True code} + Else + ${5:; Else code} + EndIf +# Switch block +snippet switch + Switch (${1:condition}) + Case {$2:case1}: + {$3:; Case 1 code} + Case Else: + {$4:; Else code} + EndSwitch +# Select block +snippet select + Select (${1:condition}) + Case {$2:case1}: + {$3:; Case 1 code} + Case Else: + {$4:; Else code} + EndSelect +# While loop +snippet while + While (${1:condition}) + ${2:; code...} + WEnd +# For loop +snippet for + For ${1:n} = ${3:1} to ${2:count} + ${4:; code...} + Next +# New Function +snippet func + Func ${1:fname}(${2:`indent('.') ? 'self' : ''`}): + ${4:Return} + EndFunc +# Message box +snippet msg + MsgBox(${3:MsgType}, ${1:"Title"}, ${2:"Message Text"}) +# Debug Message +snippet debug + MsgBox(0, "Debug", ${1:"Debug Message"}) +# Show Variable Debug Message +snippet showvar + MsgBox(0, "${1:VarName}", $1) diff --git a/plugins/node_modules/ace/lib/ace/snippets/batchfile.js b/plugins/node_modules/ace/lib/ace/snippets/batchfile.js new file mode 100644 index 00000000..ec949d96 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/batchfile.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./batchfile.snippets"); +exports.scope = "batchfile"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/batchfile.snippets b/plugins/node_modules/ace/lib/ace/snippets/batchfile.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/bro.js b/plugins/node_modules/ace/lib/ace/snippets/bro.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/bro.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/bro.snippets b/plugins/node_modules/ace/lib/ace/snippets/bro.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/c.snippets b/plugins/node_modules/ace/lib/ace/snippets/c.snippets new file mode 100644 index 00000000..c476de4a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/c.snippets @@ -0,0 +1,235 @@ +## Main +# main +snippet main + int main(int argc, const char *argv[]) + { + ${1} + return 0; + } +# main(void) +snippet mainn + int main(void) + { + ${1} + return 0; + } +## +## Preprocessor +# #include <...> +snippet inc + #include <${1:stdio}.h>${2} +# #include "..." +snippet Inc + #include "${1:`Filename("$1.h")`}"${2} +# ifndef...define...endif +snippet ndef + #ifndef $1 + #define ${1:SYMBOL} ${2:value} + #endif${3} +# define +snippet def + #define +# ifdef...endif +snippet ifdef + #ifdef ${1:FOO} + ${2:#define } + #endif${3} +# if +snippet #if + #if ${1:FOO} + ${2} + #endif +# header include guard +snippet once + #ifndef ${1:`toupper(Filename('$1_H', 'UNTITLED_H'))`} + + #define $1 + + ${2} + + #endif /* end of include guard: $1 */ +## +## Control Statements +# if +snippet if + if (${1:/* condition */}) { + ${2:/* code */} + }${3} +# else +snippet el + else { + ${1} + }${3} +# else if +snippet elif + else if (${1:/* condition */}) { + ${2:/* code */} + }${3} +# ternary +snippet t + ${1:/* condition */} ? ${2:a} : ${3:b} +# switch +snippet switch + switch (${1:/* variable */}) { + case ${2:/* variable case */}: + ${3} + ${4:break;}${5} + default: + ${6} + }${7} +# switch without default +snippet switchndef + switch (${1:/* variable */}) { + case ${2:/* variable case */}: + ${3} + ${4:break;}${5} + }${6} +# case +snippet case + case ${1:/* variable case */}: + ${2} + ${3:break;}${4} +## +## Loops +# for +snippet for + for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) { + ${4:/* code */} + }${5} +# for (custom) +snippet forr + for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) { + ${5:/* code */} + }${6} +# while +snippet wh + while (${1:/* condition */}) { + ${2:/* code */} + }${3} +# do... while +snippet do + do { + ${2:/* code */} + } while (${1:/* condition */});${3} +## +## Functions +# function definition +snippet fun + ${1:void} ${2:function_name}(${3}) + { + ${4:/* code */} + }${5} +# function declaration +snippet fund + ${1:void} ${2:function_name}(${3});${4} +## +## Types +# typedef +snippet td + typedef ${1:int} ${2:MyCustomType};${3} +# struct +snippet st + struct ${1:`Filename('$1_t', 'name')`} { + ${2:/* data */} + }${3: /* optional variable list */};${4} +# typedef struct +snippet tds + typedef struct ${2:_$1 }{ + ${3:/* data */} + } ${1:`Filename('$1_t', 'name')`};${4} +# typedef enum +snippet tde + typedef enum { + ${1:/* data */} + } ${2:foo};${3} +## +## Input/Output +# printf +snippet pr + printf("${1:%s}\n"${2});${3} +# fprintf (again, this isn't as nice as TextMate's version, but it works) +snippet fpr + fprintf(${1:stderr}, "${2:%s}\n"${3});${4} +# getopt +snippet getopt + int choice; + while (1) + { + static struct option long_options[] = + { + /* Use flags like so: + {"verbose", no_argument, &verbose_flag, 'V'}*/ + /* Argument styles: no_argument, required_argument, optional_argument */ + {"version", no_argument, 0, 'v'}, + {"help", no_argument, 0, 'h'}, + ${1} + {0,0,0,0} + }; + + int option_index = 0; + + /* Argument parameters: + no_argument: " " + required_argument: ":" + optional_argument: "::" */ + + choice = getopt_long( argc, argv, "vh", + long_options, &option_index); + + if (choice == -1) + break; + + switch( choice ) + { + case 'v': + ${2} + break; + + case 'h': + ${3} + break; + + case '?': + /* getopt_long will have already printed an error */ + break; + + default: + /* Not sure how to get here... */ + return EXIT_FAILURE; + } + } + + /* Deal with non-option arguments here */ + if ( optind < argc ) + { + while ( optind < argc ) + { + ${4} + } + } +## +## Miscellaneous +# This is kind of convenient +snippet . + [${1}]${2} +# GPL +snippet gpl + /* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Copyright (C) ${1:Author}, `strftime("%Y")` + */ + + ${2} diff --git a/plugins/node_modules/ace/lib/ace/snippets/c9search.js b/plugins/node_modules/ace/lib/ace/snippets/c9search.js new file mode 100644 index 00000000..62bc4403 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/c9search.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./c9search.snippets"); +exports.scope = "c9search"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/c9search.snippets b/plugins/node_modules/ace/lib/ace/snippets/c9search.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/c_cpp.js b/plugins/node_modules/ace/lib/ace/snippets/c_cpp.js new file mode 100644 index 00000000..cf37a62a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/c_cpp.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./c_cpp.snippets"); +exports.scope = "c_cpp"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/c_cpp.snippets b/plugins/node_modules/ace/lib/ace/snippets/c_cpp.snippets new file mode 100644 index 00000000..c3e19fe9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/c_cpp.snippets @@ -0,0 +1,131 @@ +## STL Collections +# std::array +snippet array + std::array<${1:T}, ${2:N}> ${3};${4} +# std::vector +snippet vector + std::vector<${1:T}> ${2};${3} +# std::deque +snippet deque + std::deque<${1:T}> ${2};${3} +# std::forward_list +snippet flist + std::forward_list<${1:T}> ${2};${3} +# std::list +snippet list + std::list<${1:T}> ${2};${3} +# std::set +snippet set + std::set<${1:T}> ${2};${3} +# std::map +snippet map + std::map<${1:Key}, ${2:T}> ${3};${4} +# std::multiset +snippet mset + std::multiset<${1:T}> ${2};${3} +# std::multimap +snippet mmap + std::multimap<${1:Key}, ${2:T}> ${3};${4} +# std::unordered_set +snippet uset + std::unordered_set<${1:T}> ${2};${3} +# std::unordered_map +snippet umap + std::unordered_map<${1:Key}, ${2:T}> ${3};${4} +# std::unordered_multiset +snippet umset + std::unordered_multiset<${1:T}> ${2};${3} +# std::unordered_multimap +snippet ummap + std::unordered_multimap<${1:Key}, ${2:T}> ${3};${4} +# std::stack +snippet stack + std::stack<${1:T}> ${2};${3} +# std::queue +snippet queue + std::queue<${1:T}> ${2};${3} +# std::priority_queue +snippet pqueue + std::priority_queue<${1:T}> ${2};${3} +## +## Access Modifiers +# private +snippet pri + private +# protected +snippet pro + protected +# public +snippet pub + public +# friend +snippet fr + friend +# mutable +snippet mu + mutable +## +## Class +# class +snippet cl + class ${1:`Filename('$1', 'name')`} + { + public: + $1(${2}); + ~$1(); + + private: + ${3:/* data */} + }; +# member function implementation +snippet mfun + ${4:void} ${1:`Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) { + ${5:/* code */} + } +# namespace +snippet ns + namespace ${1:`Filename('', 'my')`} { + ${2} + } /* namespace $1 */ +## +## Input/Output +# std::cout +snippet cout + std::cout << ${1} << std::endl;${2} +# std::cin +snippet cin + std::cin >> ${1};${2} +## +## Iteration +# for i +snippet fori + for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) { + ${4:/* code */} + }${5} + +# foreach +snippet fore + for (${1:auto} ${2:i} : ${3:container}) { + ${4:/* code */} + }${5} +# iterator +snippet iter + for (${1:std::vector}<${2:type}>::${3:const_iterator} ${4:i} = ${5:container}.begin(); $4 != $5.end(); ++$4) { + ${6} + }${7} + +# auto iterator +snippet itera + for (auto ${1:i} = $1.begin(); $1 != $1.end(); ++$1) { + ${2:std::cout << *$1 << std::endl;} + }${3} +## +## Lambdas +# lamda (one line) +snippet ld + [${1}](${2}){${3:/* code */}}${4} +# lambda (multi-line) +snippet lld + [${1}](${2}){ + ${3:/* code */} + }${4} diff --git a/plugins/node_modules/ace/lib/ace/snippets/chef.snippets b/plugins/node_modules/ace/lib/ace/snippets/chef.snippets new file mode 100644 index 00000000..51036135 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/chef.snippets @@ -0,0 +1,204 @@ +# Opscode Chef Cookbook Recipe Resources +# Snippet by: Mike Smullin <mike@smullindesign.com> +# Based on: http://wiki.opscode.com/display/chef/Resources + +# @TODO: Include Meta attributes and actions in all snippets +# @TODO: Finish writing snippets for remaining Resources + +snippet cookbook_file + # Cookbook File resource + cookbook_file ${1:"/path/to/file"} do # The remote path where the file will reside + ${2:#}backup ${3} # How many backups of this file to keep. Set to false if you want no backups + ${4:#}group ${5} # The group owner of the file (string or id) + ${6:#}mode ${7} # The octal mode of the file - e.g. 0755 + ${8:#}owner ${9} # The owner for the file + ${10:#}source ${11} # The basename of the source file + ${12:#}cookbook ${13} # The cookbook this file is stored in + + ${14:#}${15: action :create} # Create this file (Default) + ${16:#}${17: action :create_if_missing} # Create only if it doesn't exist yet + ${18:#}${19: action :delete} # Delete this file + end + +snippet execute + # Execute resource + execute ${1:"command to execute"} do # The command to execute + ${2:#}creates ${3:nil} # A file this command creates - if the file exists, the command will not be run. + ${4:#}cwd ${5:nil} # Current working directory to run the command from. + ${6:#}environment ${7:nil} # A hash of environment variables to set before running this command. + ${8:#}group ${9:nil} # A group name or group ID that we should change to before running this command. + ${10:#}path ${11:nil} # An array of paths to use when searching for the command. Nil uses system path. + ${12:#}returns ${13:0} # The return value of the command - this resource raises an exception if the return value does not match. + ${14:#}timeout ${15:nil} # How many seconds to let the command run before timing it out. + ${16:#}user ${17:nil} # A user name or user ID that we should change to before running this command. + ${18:#}umask ${19:nil} # Umask for files created by the command + + ${20:#}${21:action :run} # Run this command (Default) + ${22:#}${23:action :nothing} # Do not run this command + end + +snippet link + # Link resource + link ${1:"/target/file"} do # The file name of the link + ${2:#}to ${3} # The real file you want to link to + ${4:#}link_type ${5:symbolic} # Either :symbolic or :hard + ${6:#}owner ${7} # The owner of the symlink + ${8:#}group ${9} # The group of the symlink + + ${10:#}${11:action :create} # Create a link (Default) + ${12:#}${13:action :delete} # Delete a link + end + +snippet package + # Package resource + package ${1:"package_name"} do # Name of the package to install + ${2:#}version ${3:nil} # The version of the package to install/upgrade + ${4:#}response_file ${5:nil} # An optional response file - used to pre-seed packages (note: the file is fetched by Remote File) + ${6:#}source ${7} # Used to provide an optional package source for providers that use a local file (rubygems, dpkg and rpm) + ${8:#}options ${9:nil} # Add additional options to the underlying package command + ${10:#}gem_binary ${11:gem} # A gem_package attribut to specify a gem binary. Useful for installing ruby 1.9 gems while running chef in ruby 1.8 + + ${12:#}${13:action :install} # Install a package - if version is provided, install that specific version (Default) + ${14:#}${15:action :upgrade} # Upgrade a package - if version is provided, upgrade to that specific version + ${16:#}${17:action :remove} # Remove a package + ${18:#}${19:action :purge} # Purge a package (this usually entails removing configuration files as well as the package itself) + end + +snippet service + # Service resource + service ${1:"service_name"} do # Name of the service + ${2:#}enabled ${3:nil} # Whether the service is enabled at boot time + ${4:#}running ${5:nil} # Make sure the service is running. Start if stopped + ${6:#}pattern ${7} # Pattern to look for in the process table + ${8:#}start_command ${9:nil} # Command used to start this service + ${10:#}stop_command ${11:nil} # Command used to stop this service + ${12:#}status_command ${13:nil} # Command used to check the service run status + ${14:#}restart_command ${15:nil} # Command used to restart this service + ${16:#}reload_command ${17:nil} # Command used to tell this service to reload its configuration + ${18:#}supports ${19:false} # Features this service supports, ie :restart, :reload, :status + + ${20:#}${21:action :enable} # Enable this service + ${22:#}${23:action :disable} # Disable this service + ${24:#}${25:action :nothing} # Don't do anything with this service (Default) + ${26:#}${27:action :start} # Start this service + ${28:#}${29:action :stop} # Stop this service + ${30:#}${31:action :restart} # Restart this service + ${32:#}${33:action :reload} # Reload the configuration for this service + end + +snippet file + # File resource + file ${1:"/path/to/file"} do # Path to the file + ${2:#}backup ${3:5} # How many backups of this file to keep. Set to false if you want no backups. + ${4:#}owner ${5} # The owner for the file + ${6:#}group ${7} # The group owner of the file (string or id) + ${8:#}mode ${9} # The octal mode of the file (4-digit format) + ${10:#}content ${11:nil} # A string to write to the file. This will replace any previous content if set + + ${12:#}${13:action :create} # Create this file (Default) + ${14:#}${15:action :delete} # Delete this file + ${16:#}${17:action :touch} # Touch this file (update the mtime/atime) + end + +snippet directory + # Directory resource + directory ${1:"/path/to/dir"} do # The path to the directory + ${2:#}group ${3} # The group owner of the directory (string or id) + ${4:#}mode ${5} # The octal mode of the directory, eg 0755 + ${6:#}owner ${7} # The owner for the directory + ${10:#}recursive ${11:false} # When deleting the directory, delete it recursively. When creating the directory, create recursively (ie, mkdir -p) + + ${12:#}${13:action :create} # Create this directory (Default) + ${14:#}${15:action :delete} # Delete this directory + end + +snippet template + # Template resource + template ${1:"/path/to/file"} do # Path to the file + ${2:#}cookbook ${3:nil} # Specify the cookbook where the template is located, default is current cookbook + ${4:#}source ${5:nil} # Template source file. Found in templates/default for the cookbook + ${6:#}variables ${7} # Variables to use in the template + ${8:#}local ${9:false} # Is the template already present on the node? + ${10:#}backup ${11:5} # How many backups of this file to keep. Set to false if you want no backups. + ${12:#}owner ${13} # The owner for the file + ${14:#}group ${15} # The group owner of the file (string or id) + ${16:#}mode ${17} # The octal mode of the file (4-digit format) + ${18:#}content ${19:nil} # A string to write to the file. This will replace any previous content if set + + ${20:#}${21:action :create} # Create the file (Default) + ${22:#}${23:action :delete} # Delete this file + ${24:#}${25:action :touch} # Touch this file (update the mtime/atime) + end + +snippet svn + # SCM Resource, Chef::Provider::Subversion + svn ${1:"/destination/path"} do # Path to clone/checkout/export the source to + ${2:#}repository ${3} # URI of the repository + ${4:#}revision ${5:"HEAD"} # revision to checkout. can be symbolic, like "HEAD" or an SCM specific revision id + ${6:#}reference ${7} # (Git only) alias for revision + ${8:#}user ${9:nil} # System user to own the checked out code + ${10:#}group ${11:nil} # System group to own the checked out code + ${12:#}svn_username ${13} # (Subversion only) Username for Subversion operations + ${14:#}svn_password ${15} # (Subversion only) Password for Subversion operations + ${16:#}svn_arguments ${17} # (Subversion only) Extra arguments passed to the subversion command + + ${18:#}${19:action :sync} # Update the source to the specified revision, or get a new checkout (Default) + ${20:#}${21:action :checkout} # Checkout the source. Does nothing if a checkout is available + ${22:#}${23:action :export} # Export the source, excluding or removing any version control artifacts + end + +snippet git + # SCM Resource, Chef::Provider::Git + git ${1:"/destination/path"} do # Path to clone/checkout/export the source to + ${2:#}repository ${3} # URI of the repository + ${4:#}revision ${5:"HEAD"} # revision to checkout. can be symbolic, like "HEAD" or an SCM specific revision id + ${6:#}reference ${7} # (Git only) alias for revision + ${8:#}user ${9:nil} # System user to own the checked out code + ${10:#}group ${11:nil} # System group to own the checked out code + ${12:#}depth ${13:nil} # (Git only) Number of past revisions to include in Git shallow clone + ${14:#}enable_submodules ${15:"false"} # (Git only) performs a submodule init and submodule update + ${16:#}remote ${17:"origin"} # (Git only) remote repository to use for syncing an existing clone + ${18:#}ssh_wrapper ${19} # (Git only) path to a wrapper script for running SSH with git. GIT_SSH environment variable is set to this. + + ${20:#}${21:action :sync} # Update the source to the specified revision, or get a new clone (Default) + ${22:#}${23:action :checkout} # Clone the source. Does nothing if a checkout is available + ${24:#}${25:action :export} # Export the source, excluding or removing any version control artifacts + end + +snippet deploy + # Deploy resource + deploy ${1:"/deploy/dir/"} do # Path to deploy to + ${2:#}deploy_to ${3} # The "meta root" for your application. + ${4:#}repository ${5} # URI of the repository + ${6:#}repo ${7} # alias for repository + ${8:#}revision ${9:"HEAD"} # revision to checkout. can be symbolic, like "HEAD" or an SCM specific revision id + ${10:#}branch ${11} # alias for revision + ${12:#}user ${13:nil} # System user to run the deploy as + ${14:#}group ${15:nil} # System group to run the deploy as + ${16:#}svn_username ${17} # (Subversion only) Username for Subversion operations} + ${18:#}svn_password ${19} # (Subversion only) Password for Subversion operations} + ${20:#}svn_arguments ${21} # (Subversion only) Extra arguments passed to the subversion command} + ${22:#}shallow_clone ${23:nil} # (Git only) boolean, true sets clone depth to 5 + ${24:#}enable_submodules ${25:false} # (Git only) performs a submodule init and submodule update + ${26:#}remote ${27:"origin"} # (Git only) remote repository to use for syncing an existing clone + ${28:#}ssh_wrapper ${29} # (Git only) path to a wrapper script for running SSH with git. GIT_SSH environment variable is set to this. + ${30:#}git_ssh_wrapper ${31} # alias for ssh_wrapper + ${32:#}scm_provider ${33:Chef::Provider::Git} # SCM Provider to use. + ${34:#}repository_cache ${35: "cached-copy"} # Name of the subdirectory where the pristine copy of your app's source is kept + ${36:#}environment ${37} # A hash of the form {"ENV_VARIABLE"=>"VALUE"}} + ${38:#}purge_before_symlink ${39:%w(log tmp/pids public/system)} # An array of paths, relative to app root, to be removed from a checkout before symlinking + ${40:#}create_dirs_before_symlink ${41:%w(tmp public config)} # Directories to create before symlinking. Runs after purge_before_symlink + ${42:#}symlinks ${43:"system" => "public/system", "pids" => "tmp/pids", "log" => "log"} # A hash that maps files in the shared directory to their paths in the current release + ${44:#}symlink_before_migrate ${45:"config/database.yml" => "config/database.yml"} # A hash that maps files in the shared directory into the current release. Runs before migration + ${46:#}migrate ${47:false} # Should the migration command be executed? (true or false) + ${48:#}migration_command ${49} # A string containing a shell command to execute to run the migration + ${50:#}restart_command ${51:nil} # A code block to evaluate or a string containing a shell command + ${52:#}before_migrate ${53:"deploy/before_migrate.rb"} # A block or path to a file containing chef code to run before migrating + ${54:#}before_symlink ${55:"deploy/before_symlink.rb"} # A block or path to a file containing chef code to run before symlinking + ${56:#}before_restart ${57:"deploy/before_restart.rb"} # A block or path to a file containing chef code to run before restarting + ${58:#}after_restart ${59:"deploy/after_restart.rb"} # A block or path to a file containing chef code to run after restarting + + ${60:#}${61::deploy} # Deploy the application (Default) + ${62:#}${63::force_deploy} # For the revision deploy strategy, this removes any existing release of the same code version and re-deploys in its place + ${64:#}${65::rollback} # Rollback the application to the previous release + end diff --git a/plugins/node_modules/ace/lib/ace/snippets/cirru.js b/plugins/node_modules/ace/lib/ace/snippets/cirru.js new file mode 100644 index 00000000..c0d3416d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/cirru.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./cirru.snippets"); +exports.scope = "cirru"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/cirru.snippets b/plugins/node_modules/ace/lib/ace/snippets/cirru.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/clojure.js b/plugins/node_modules/ace/lib/ace/snippets/clojure.js new file mode 100644 index 00000000..8f07e5fe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/clojure.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./clojure.snippets"); +exports.scope = "clojure"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/clojure.snippets b/plugins/node_modules/ace/lib/ace/snippets/clojure.snippets new file mode 100644 index 00000000..e247debf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/clojure.snippets @@ -0,0 +1,90 @@ +snippet comm + (comment + ${1} + ) +snippet condp + (condp ${1:pred} ${2:expr} + ${3}) +snippet def + (def ${1}) +snippet defm + (defmethod ${1:multifn} "${2:doc-string}" ${3:dispatch-val} [${4:args}] + ${5}) +snippet defmm + (defmulti ${1:name} "${2:doc-string}" ${3:dispatch-fn}) +snippet defma + (defmacro ${1:name} "${2:doc-string}" ${3:dispatch-fn}) +snippet defn + (defn ${1:name} "${2:doc-string}" [${3:arg-list}] + ${4}) +snippet defp + (defprotocol ${1:name} + ${2}) +snippet defr + (defrecord ${1:name} [${2:fields}] + ${3:protocol} + ${4}) +snippet deft + (deftest ${1:name} + (is (= ${2:assertion}))) + ${3}) +snippet is + (is (= ${1} ${2})) +snippet defty + (deftype ${1:Name} [${2:fields}] + ${3:Protocol} + ${4}) +snippet doseq + (doseq [${1:elem} ${2:coll}] + ${3}) +snippet fn + (fn [${1:arg-list}] ${2}) +snippet if + (if ${1:test-expr} + ${2:then-expr} + ${3:else-expr}) +snippet if-let + (if-let [${1:result} ${2:test-expr}] + (${3:then-expr} $1) + (${4:else-expr})) +snippet imp + (:import [${1:package}]) + & {:keys [${1:keys}] :or {${2:defaults}}} +snippet let + (let [${1:name} ${2:expr}] + ${3}) +snippet letfn + (letfn [(${1:name) [${2:args}] + ${3})]) +snippet map + (map ${1:func} ${2:coll}) +snippet mapl + (map #(${1:lambda}) ${2:coll}) +snippet met + (${1:name} [${2:this} ${3:args}] + ${4}) +snippet ns + (ns ${1:name} + ${2}) +snippet dotimes + (dotimes [_ 10] + (time + (dotimes [_ ${1:times}] + ${2}))) +snippet pmethod + (${1:name} [${2:this} ${3:args}]) +snippet refer + (:refer-clojure :exclude [${1}]) +snippet require + (:require [${1:namespace} :as [${2}]]) +snippet use + (:use [${1:namespace} :only [${2}]]) +snippet print + (println ${1}) +snippet reduce + (reduce ${1:(fn [p n] ${3})} ${2}) +snippet when + (when ${1:test} ${2:body}) +snippet when-let + (when-let [${1:result} ${2:test}] + ${3:body}) diff --git a/plugins/node_modules/ace/lib/ace/snippets/cmake.snippets b/plugins/node_modules/ace/lib/ace/snippets/cmake.snippets new file mode 100644 index 00000000..26aa9ac9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/cmake.snippets @@ -0,0 +1,58 @@ +snippet cmake + CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + PROJECT(${1:ProjectName}) + + FIND_PACKAGE(${2:LIBRARY}) + + INCLUDE_DIRECTORIES( + ${$2_INCLUDE_DIR} + ) + + ADD_SUBDIRECTORY(${3:src}) + + ADD_EXECUTABLE($1) + + TARGET_LINK_LIBRARIES($1 + ${$2_LIBRARIES} + ) + +snippet include + INCLUDE_DIRECTORIES( + ${${1:INCLUDE_DIR}} + ) + +snippet find + FIND_PACKAGE(${1:LIBRARY}) + +snippet glob + FILE(GLOB ${1:SRCS} *.${2:cpp}) + +snippet subdir + ADD_SUBDIRECTORY(${1:src}) + +snippet lib + ADD_LIBRARY(${1:lib} ${2:STATIC} + ${${3:SRCS}} + ) + +snippet link + TARGET_LINK_LIBRARIES(${1:bin} + ${2:somelib} + ) + +snippet bin + ADD_EXECUTABLE(${1:bin}) + +snippet set + SET(${1:var} ${2:val}) + +snippet dep + ADD_DEPENDENCIES(${1:target} + ${2:dep} + ) + +snippet props + SET_TARGET_PROPERTIES(${1:target} + ${2:PROPERTIES} ${3:COMPILE_FLAGS} + ${4:"-O3 -Wall -pedantic"} + ) diff --git a/plugins/node_modules/ace/lib/ace/snippets/cobol.js b/plugins/node_modules/ace/lib/ace/snippets/cobol.js new file mode 100644 index 00000000..885f1c46 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/cobol.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./cobol.snippets"); +exports.scope = "cobol"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/cobol.snippets b/plugins/node_modules/ace/lib/ace/snippets/cobol.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/coffee.js b/plugins/node_modules/ace/lib/ace/snippets/coffee.js new file mode 100644 index 00000000..5511ed11 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/coffee.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./coffee.snippets"); +exports.scope = "coffee"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/coffee.snippets b/plugins/node_modules/ace/lib/ace/snippets/coffee.snippets new file mode 100644 index 00000000..83b77eba --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/coffee.snippets @@ -0,0 +1,95 @@ +# Closure loop +snippet forindo + for ${1:name} in ${2:array} + do ($1) -> + ${3:// body} +# Array comprehension +snippet fora + for ${1:name} in ${2:array} + ${3:// body...} +# Object comprehension +snippet foro + for ${1:key}, ${2:value} of ${3:object} + ${4:// body...} +# Range comprehension (inclusive) +snippet forr + for ${1:name} in [${2:start}..${3:finish}] + ${4:// body...} +snippet forrb + for ${1:name} in [${2:start}..${3:finish}] by ${4:step} + ${5:// body...} +# Range comprehension (exclusive) +snippet forrex + for ${1:name} in [${2:start}...${3:finish}] + ${4:// body...} +snippet forrexb + for ${1:name} in [${2:start}...${3:finish}] by ${4:step} + ${5:// body...} +# Function +snippet fun + (${1:args}) -> + ${2:// body...} +# Function (bound) +snippet bfun + (${1:args}) => + ${2:// body...} +# Class +snippet cla class .. + class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} + ${2} +snippet cla class .. constructor: .. + class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} + constructor: (${2:args}) -> + ${3} + + ${4} +snippet cla class .. extends .. + class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} extends ${2:ParentClass} + ${3} +snippet cla class .. extends .. constructor: .. + class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} extends ${2:ParentClass} + constructor: (${3:args}) -> + ${4} + + ${5} +# If +snippet if + if ${1:condition} + ${2:// body...} +# If __ Else +snippet ife + if ${1:condition} + ${2:// body...} + else + ${3:// body...} +# Else if +snippet elif + else if ${1:condition} + ${2:// body...} +# Ternary If +snippet ifte + if ${1:condition} then ${2:value} else ${3:other} +# Unless +snippet unl + ${1:action} unless ${2:condition} +# Switch +snippet swi + switch ${1:object} + when ${2:value} + ${3:// body...} + +# Log +snippet log + console.log ${1} +# Try __ Catch +snippet try + try + ${1} + catch ${2:error} + ${3} +# Require +snippet req + ${2:$1} = require '${1:sys}'${3} +# Export +snippet exp + ${1:root} = exports ? this diff --git a/plugins/node_modules/ace/lib/ace/snippets/coldfusion.js b/plugins/node_modules/ace/lib/ace/snippets/coldfusion.js new file mode 100644 index 00000000..6f44f9f7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/coldfusion.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./coldfusion.snippets"); +exports.scope = "coldfusion"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/coldfusion.snippets b/plugins/node_modules/ace/lib/ace/snippets/coldfusion.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/cs.snippets b/plugins/node_modules/ace/lib/ace/snippets/cs.snippets new file mode 100644 index 00000000..725f8b7d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/cs.snippets @@ -0,0 +1,374 @@ +# cs.snippets +# =========== +# +# Standard C-Sharp snippets for snipmate. +# +# Largely ported over from Visual Studio 2010 snippets plus +# a few snippets from Resharper plus a few widely known snippets. +# +# Most snippets on elements (i.e. classes, properties) +# follow suffix conventions. The order of suffixes to a snippet +# is fixed. +# +# Snippet Suffix Order +# -------------------- +# 1. Access Modifiers +# 2. Class Modifiers +# +# Access Modifier Suffix Table +# ---------------------------- +# + = public +# & = internal +# | = protected +# - = private +# +# Example: `cls&` expands to `internal class $1`. +# Access modifiers might be doubled to indicate +# different modifiers for get/set on properties. +# Example: `pb+-` expands to `public bool $1 { get; private set; }` +# +# Class Modifier Table +# -------------------- +# ^ = static +# % = abstract +# +# Example: `cls|%` expands to `protected abstract class $1` +# +# On method and property snippets, you can directly set +# one of the common types int, string and bool, if desired, +# just by appending the type modifier. +# +# Type Modifier Table +# ------------------- +# i = integer +# s = string +# b = bool +# +# Example: `pi+&` expands to `public int $1 { get; internal set; }` +# +# I'll most propably add more stuff in here like +# * List/Array constructio +# * Mostly used generics +# * Linq +# * Funcs, Actions, Predicates +# * Lambda +# * Events +# +# Feedback is welcome! +# +# entry point +snippet sim + public static int Main(string[] args) { + ${1} + return 0; + } +snippet simc + public class Application { + public static int Main(string[] args) { + ${1} + return 0; + } + } +# if condition +snippet if + if (${1}) { + ${2} + } +snippet el + else { + ${1} + } +snippet ifs + if (${1}) + ${2} +# ternary conditional +snippet t + ${1} ? ${2} : ${3} +snippet ? + ${1} ? ${2} : ${3} +# do while loop +snippet do + do { + ${2} + } while (${1}); +# while loop +snippet wh + while (${1}) { + ${2} + } +# for loop +snippet for + for (int ${1:i} = 0; $1 < ${2:count}; $1${3:++}) { + ${4} + } +# foreach +snippet fore + foreach (var ${1:entry} in ${2}) { + ${3} + } +snippet foreach + foreach (var ${1:entry} in ${2}) { + ${3} + } +snippet each + foreach (var ${1:entry} in ${2}) { + ${3} + } +# interfaces +snippet interface + public interface ${1:`Filename()`} { + ${2} + } +snippet if+ + public interface ${1:`Filename()`} { + ${2} + } +# class bodies +snippet class + public class ${1:`Filename()`} { + ${2} + } +snippet cls + ${2:public} class ${1:`Filename()`} { + ${3} + } +snippet cls+ + public class ${1:`Filename()`} { + ${2} + } +snippet cls+^ + public static class ${1:`Filename()`} { + ${2} + } +snippet cls& + internal class ${1:`Filename()`} { + ${2} + } +snippet cls&^ + internal static class ${1:`Filename()`} { + ${2} + } +snippet cls| + protected class ${1:`Filename()`} { + ${2} + } +snippet cls|% + protected abstract class ${1:`Filename()`} { + ${2} + } +# constructor +snippet ctor + public ${1:`Filename()`}() { + ${2} + } +# properties - auto properties by default. +# default type is int with layout get / set. +snippet prop + ${1:public} ${2:int} ${3:} { get; set; }${4} +snippet p + ${1:public} ${2:int} ${3:} { get; set; }${4} +snippet p+ + public ${1:int} ${2:} { get; set; }${3} +snippet p+& + public ${1:int} ${2:} { get; internal set; }${3} +snippet p+| + public ${1:int} ${2:} { get; protected set; }${3} +snippet p+- + public ${1:int} ${2:} { get; private set; }${3} +snippet p& + internal ${1:int} ${2:} { get; set; }${3} +snippet p&| + internal ${1:int} ${2:} { get; protected set; }${3} +snippet p&- + internal ${1:int} ${2:} { get; private set; }${3} +snippet p| + protected ${1:int} ${2:} { get; set; }${3} +snippet p|- + protected ${1:int} ${2:} { get; private set; }${3} +snippet p- + private ${1:int} ${2:} { get; set; }${3} +# property - bool +snippet pi + ${1:public} int ${2:} { get; set; }${3} +snippet pi+ + public int ${1} { get; set; }${2} +snippet pi+& + public int ${1} { get; internal set; }${2} +snippet pi+| + public int ${1} { get; protected set; }${2} +snippet pi+- + public int ${1} { get; private set; }${2} +snippet pi& + internal int ${1} { get; set; }${2} +snippet pi&| + internal int ${1} { get; protected set; }${2} +snippet pi&- + internal int ${1} { get; private set; }${2} +snippet pi| + protected int ${1} { get; set; }${2} +snippet pi|- + protected int ${1} { get; private set; }${2} +snippet pi- + private int ${1} { get; set; }${2} +# property - bool +snippet pb + ${1:public} bool ${2:} { get; set; }${3} +snippet pb+ + public bool ${1} { get; set; }${2} +snippet pb+& + public bool ${1} { get; internal set; }${2} +snippet pb+| + public bool ${1} { get; protected set; }${2} +snippet pb+- + public bool ${1} { get; private set; }${2} +snippet pb& + internal bool ${1} { get; set; }${2} +snippet pb&| + internal bool ${1} { get; protected set; }${2} +snippet pb&- + internal bool ${1} { get; private set; }${2} +snippet pb| + protected bool ${1} { get; set; }${2} +snippet pb|- + protected bool ${1} { get; private set; }${2} +snippet pb- + private bool ${1} { get; set; }${2} +# property - string +snippet ps + ${1:public} string ${2:} { get; set; }${3} +snippet ps+ + public string ${1} { get; set; }${2} +snippet ps+& + public string ${1} { get; internal set; }${2} +snippet ps+| + public string ${1} { get; protected set; }${2} +snippet ps+- + public string ${1} { get; private set; }${2} +snippet ps& + internal string ${1} { get; set; }${2} +snippet ps&| + internal string ${1} { get; protected set; }${2} +snippet ps&- + internal string ${1} { get; private set; }${2} +snippet ps| + protected string ${1} { get; set; }${2} +snippet ps|- + protected string ${1} { get; private set; }${2} +snippet ps- + private string ${1} { get; set; }${2} +# members - void +snippet m + ${1:public} ${2:void} ${3:}(${4:}) { + ${5:} + } +snippet m+ + public ${1:void} ${2:}(${3:}) { + ${4:} + } +snippet m& + internal ${1:void} ${2:}(${3:}) { + ${4:} + } +snippet m| + protected ${1:void} ${2:}(${3:}) { + ${4:} + } +snippet m- + private ${1:void} ${2:}(${3:}) { + ${4:} + } +# members - int +snippet mi + ${1:public} int ${2:}(${3:}) { + ${4:return 0;} + } +snippet mi+ + public int ${1:}(${2:}) { + ${3:return 0;} + } +snippet mi& + internal int ${1:}(${2:}) { + ${3:return 0;} + } +snippet mi| + protected int ${1:}(${2:}) { + ${3:return 0;} + } +snippet mi- + private int ${1:}(${2:}) { + ${3:return 0;} + } +# members - bool +snippet mb + ${1:public} bool ${2:}(${3:}) { + ${4:return false;} + } +snippet mb+ + public bool ${1:}(${2:}) { + ${3:return false;} + } +snippet mb& + internal bool ${1:}(${2:}) { + ${3:return false;} + } +snippet mb| + protected bool ${1:}(${2:}) { + ${3:return false;} + } +snippet mb- + private bool ${1:}(${2:}) { + ${3:return false;} + } +# members - string +snippet ms + ${1:public} string ${2:}(${3:}) { + ${4:return "";} + } +snippet ms+ + public string ${1:}(${2:}) { + ${3:return "";} + } +snippet ms& + internal string ${1:}(${2:}) { + ${3:return "";} + } +snippet ms| + protected string ${1:}(${2:}) { + ${3:return "";} + } +snippet ms- + private string ${1:}(${2:}) { + ${3:return "";} + } +# structure +snippet struct + public struct ${1:`Filename()`} { + ${2} + } +# enumeration +snippet enum + public enum ${1} { + ${2} + } +# preprocessor directives +snippet #if + #if + ${1} + #endif +# inline xml documentation +snippet /// + /// <summary> + /// ${1} + /// </summary> +snippet <p + <param name="${1}">${2:$1}</param>${3} +snippet <ex + <exception cref="${1:System.Exception}">${2}</exception>${3} +snippet <r + <returns>${1}</returns>{${2} +snippet <s + <see cref="${1}"/>${2} +snippet <rem + <remarks>${1}</remarks>${2} +snippet <c + <code>${1}</code>${2} diff --git a/plugins/node_modules/ace/lib/ace/snippets/csharp.js b/plugins/node_modules/ace/lib/ace/snippets/csharp.js new file mode 100644 index 00000000..3aafdf85 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/csharp.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./csharp.snippets"); +exports.scope = "csharp"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/csharp.snippets b/plugins/node_modules/ace/lib/ace/snippets/csharp.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/csound_document.js b/plugins/node_modules/ace/lib/ace/snippets/csound_document.js new file mode 100644 index 00000000..00280fb4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/csound_document.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./csound_document.snippets"); +exports.scope = "csound_document"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/csound_document.snippets b/plugins/node_modules/ace/lib/ace/snippets/csound_document.snippets new file mode 100644 index 00000000..5f6ef467 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/csound_document.snippets @@ -0,0 +1,10 @@ +# <CsoundSynthesizer> +snippet synth + <CsoundSynthesizer> + <CsInstruments> + ${1} + </CsInstruments> + <CsScore> + e + </CsScore> + </CsoundSynthesizer> diff --git a/plugins/node_modules/ace/lib/ace/snippets/csound_orchestra.js b/plugins/node_modules/ace/lib/ace/snippets/csound_orchestra.js new file mode 100644 index 00000000..91ada0f6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/csound_orchestra.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./csound_orchestra.snippets"); +exports.scope = "csound_orchestra"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/csound_orchestra.snippets b/plugins/node_modules/ace/lib/ace/snippets/csound_orchestra.snippets new file mode 100644 index 00000000..a73bcc1b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/csound_orchestra.snippets @@ -0,0 +1,47 @@ +# else +snippet else + else + ${1:/* statements */} +# elseif +snippet elseif + elseif ${1:/* condition */} then + ${2:/* statements */} +# if +snippet if + if ${1:/* condition */} then + ${2:/* statements */} + endif +# instrument block +snippet instr + instr ${1:name} + ${2:/* statements */} + endin +# i-time while loop +snippet iwhile + i${1:Index} = ${2:0} + while i${1:Index} < ${3:/* count */} do + ${4:/* statements */} + i${1:Index} += 1 + od +# k-rate while loop +snippet kwhile + k${1:Index} = ${2:0} + while k${1:Index} < ${3:/* count */} do + ${4:/* statements */} + k${1:Index} += 1 + od +# opcode +snippet opcode + opcode ${1:name}, ${2:/* output types */ 0}, ${3:/* input types */ 0} + ${4:/* statements */} + endop +# until loop +snippet until + until ${1:/* condition */} do + ${2:/* statements */} + od +# while loop +snippet while + while ${1:/* condition */} do + ${2:/* statements */} + od diff --git a/plugins/node_modules/ace/lib/ace/snippets/csound_score.js b/plugins/node_modules/ace/lib/ace/snippets/csound_score.js new file mode 100644 index 00000000..1b787d81 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/csound_score.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./csound_score.snippets"); +exports.scope = "csound_score"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/csound_score.snippets b/plugins/node_modules/ace/lib/ace/snippets/csound_score.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/css.js b/plugins/node_modules/ace/lib/ace/snippets/css.js new file mode 100644 index 00000000..5d7e66ed --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/css.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./css.snippets"); +exports.scope = "css"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/css.snippets b/plugins/node_modules/ace/lib/ace/snippets/css.snippets new file mode 100644 index 00000000..5c276220 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/css.snippets @@ -0,0 +1,6 @@ +snippet . + ${1} { + ${2} + } +snippet ! + !important \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/snippets/curly.js b/plugins/node_modules/ace/lib/ace/snippets/curly.js new file mode 100644 index 00000000..aa59f286 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/curly.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./curly.snippets"); +exports.scope = "curly"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/curly.snippets b/plugins/node_modules/ace/lib/ace/snippets/curly.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/d.js b/plugins/node_modules/ace/lib/ace/snippets/d.js new file mode 100644 index 00000000..79446fdc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/d.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./d.snippets"); +exports.scope = "d"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/d.snippets b/plugins/node_modules/ace/lib/ace/snippets/d.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/dart.js b/plugins/node_modules/ace/lib/ace/snippets/dart.js new file mode 100644 index 00000000..949fcaa3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/dart.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./dart.snippets"); +exports.scope = "dart"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/dart.snippets b/plugins/node_modules/ace/lib/ace/snippets/dart.snippets new file mode 100644 index 00000000..14a1c3e5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/dart.snippets @@ -0,0 +1,83 @@ +snippet lib + library ${1}; + ${2} +snippet im + import '${1}'; + ${2} +snippet pa + part '${1}'; + ${2} +snippet pao + part of ${1}; + ${2} +snippet main + void main() { + ${1:/* code */} + } +snippet st + static ${1} +snippet fi + final ${1} +snippet re + return ${1} +snippet br + break; +snippet th + throw ${1} +snippet cl + class ${1:`Filename("", "untitled")`} ${2} +snippet imp + implements ${1} +snippet ext + extends ${1} +snippet if + if (${1:true}) { + ${2} + } +snippet ife + if (${1:true}) { + ${2} + } else { + ${3} + } +snippet el + else +snippet sw + switch (${1}) { + ${2} + } +snippet cs + case ${1}: + ${2} +snippet de + default: + ${1} +snippet for + for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) { + ${4:$1[$2]} + } +snippet fore + for (final ${2:item} in ${1:itemList}) { + ${3:/* code */} + } +snippet wh + while (${1:/* condition */}) { + ${2:/* code */} + } +snippet dowh + do { + ${2:/* code */} + } while (${1:/* condition */}); +snippet as + assert(${1:/* condition */}); +snippet try + try { + ${2} + } catch (${1:Exception e}) { + } +snippet tryf + try { + ${2} + } catch (${1:Exception e}) { + } finally { + } diff --git a/plugins/node_modules/ace/lib/ace/snippets/diff.js b/plugins/node_modules/ace/lib/ace/snippets/diff.js new file mode 100644 index 00000000..eb48cbc1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/diff.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./diff.snippets"); +exports.scope = "diff"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/diff.snippets b/plugins/node_modules/ace/lib/ace/snippets/diff.snippets new file mode 100644 index 00000000..7ba288de --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/diff.snippets @@ -0,0 +1,11 @@ +# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header +snippet header DEP-3 style header + Description: ${1} + Origin: ${2:vendor|upstream|other}, ${3:url of the original patch} + Bug: ${4:url in upstream bugtracker} + Forwarded: ${5:no|not-needed|url} + Author: ${6:`g:snips_author`} + Reviewed-by: ${7:name and email} + Last-Update: ${8:`strftime("%Y-%m-%d")`} + Applied-Upstream: ${9:upstream version|url|commit} + diff --git a/plugins/node_modules/ace/lib/ace/snippets/django.js b/plugins/node_modules/ace/lib/ace/snippets/django.js new file mode 100644 index 00000000..b5af7a73 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/django.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./django.snippets"); +exports.scope = "django"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/django.snippets b/plugins/node_modules/ace/lib/ace/snippets/django.snippets new file mode 100644 index 00000000..8296cce2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/django.snippets @@ -0,0 +1,108 @@ +# Model Fields + +# Note: Optional arguments are using defaults that match what Django will use +# as a default, e.g. with max_length fields. Doing this as a form of self +# documentation and to make it easy to know whether you should override the +# default or not. + +# Note: Optional arguments that are booleans will use the opposite since you +# can either not specify them, or override them, e.g. auto_now_add=False. + +snippet auto + ${1:FIELDNAME} = models.AutoField(${2}) +snippet bool + ${1:FIELDNAME} = models.BooleanField(${2:default=True}) +snippet char + ${1:FIELDNAME} = models.CharField(max_length=${2}${3:, blank=True}) +snippet comma + ${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=${2}${3:, blank=True}) +snippet date + ${1:FIELDNAME} = models.DateField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True}) +snippet datetime + ${1:FIELDNAME} = models.DateTimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True}) +snippet decimal + ${1:FIELDNAME} = models.DecimalField(max_digits=${2}, decimal_places=${3}) +snippet email + ${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True}) +snippet file + ${1:FIELDNAME} = models.FileField(upload_to=${2:path/for/upload}${3:, max_length=100}) +snippet filepath + ${1:FIELDNAME} = models.FilePathField(path=${2:"/abs/path/to/dir"}${3:, max_length=100}${4:, match="*.ext"}${5:, recursive=True}${6:, blank=True, }) +snippet float + ${1:FIELDNAME} = models.FloatField(${2}) +snippet image + ${1:FIELDNAME} = models.ImageField(upload_to=${2:path/for/upload}${3:, height_field=height, width_field=width}${4:, max_length=100}) +snippet int + ${1:FIELDNAME} = models.IntegerField(${2}) +snippet ip + ${1:FIELDNAME} = models.IPAddressField(${2}) +snippet nullbool + ${1:FIELDNAME} = models.NullBooleanField(${2}) +snippet posint + ${1:FIELDNAME} = models.PositiveIntegerField(${2}) +snippet possmallint + ${1:FIELDNAME} = models.PositiveSmallIntegerField(${2}) +snippet slug + ${1:FIELDNAME} = models.SlugField(max_length=${2:50}${3:, blank=True}) +snippet smallint + ${1:FIELDNAME} = models.SmallIntegerField(${2}) +snippet text + ${1:FIELDNAME} = models.TextField(${2:blank=True}) +snippet time + ${1:FIELDNAME} = models.TimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True}) +snippet url + ${1:FIELDNAME} = models.URLField(${2:verify_exists=False}${3:, max_length=200}${4:, blank=True}) +snippet xml + ${1:FIELDNAME} = models.XMLField(schema_path=${2:None}${3:, blank=True}) +# Relational Fields +snippet fk + ${1:FIELDNAME} = models.ForeignKey(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, to_field=''}) +snippet m2m + ${1:FIELDNAME} = models.ManyToManyField(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, symmetrical=False}${6:, through=''}${7:, db_table=''}) +snippet o2o + ${1:FIELDNAME} = models.OneToOneField(${2:OtherModel}${3:, parent_link=True}${4:, related_name=''}${5:, limit_choices_to=}${6:, to_field=''}) + +# Code Skeletons + +snippet form + class ${1:FormName}(forms.Form): + """${2:docstring}""" + ${3} + +snippet model + class ${1:ModelName}(models.Model): + """${2:docstring}""" + ${3} + + class Meta: + ${4} + + def __unicode__(self): + ${5} + + def save(self, force_insert=False, force_update=False): + ${6} + + @models.permalink + def get_absolute_url(self): + return ('${7:view_or_url_name}' ${8}) + +snippet modeladmin + class ${1:ModelName}Admin(admin.ModelAdmin): + ${2} + + admin.site.register($1, $1Admin) + +snippet tabularinline + class ${1:ModelName}Inline(admin.TabularInline): + model = $1 + +snippet stackedinline + class ${1:ModelName}Inline(admin.StackedInline): + model = $1 + +snippet r2r + return render_to_response('${1:template.html}', { + ${2} + }${3:, context_instance=RequestContext(request)} + ) diff --git a/plugins/node_modules/ace/lib/ace/snippets/dockerfile.js b/plugins/node_modules/ace/lib/ace/snippets/dockerfile.js new file mode 100644 index 00000000..057347fb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/dockerfile.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./dockerfile.snippets"); +exports.scope = "dockerfile"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/dockerfile.snippets b/plugins/node_modules/ace/lib/ace/snippets/dockerfile.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/dot.js b/plugins/node_modules/ace/lib/ace/snippets/dot.js new file mode 100644 index 00000000..420f4f01 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/dot.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./dot.snippets"); +exports.scope = "dot"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/dot.snippets b/plugins/node_modules/ace/lib/ace/snippets/dot.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/drools.js b/plugins/node_modules/ace/lib/ace/snippets/drools.js new file mode 100644 index 00000000..c578eae4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/drools.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./drools.snippets"); +exports.scope = "drools"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/drools.snippets b/plugins/node_modules/ace/lib/ace/snippets/drools.snippets new file mode 100644 index 00000000..3687bec1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/drools.snippets @@ -0,0 +1,19 @@ + +snippet rule + rule "${1?:rule_name}" + when + ${2:// when...} + then + ${3:// then...} + end + +snippet query + query ${1?:query_name} + ${2:// find} + end + +snippet declare + declare ${1?:type_name} + ${2:// attributes} + end + diff --git a/plugins/node_modules/ace/lib/ace/snippets/dummy.js b/plugins/node_modules/ace/lib/ace/snippets/dummy.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/dummy.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/dummy_syntax.js b/plugins/node_modules/ace/lib/ace/snippets/dummy_syntax.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/dummy_syntax.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/eiffel.js b/plugins/node_modules/ace/lib/ace/snippets/eiffel.js new file mode 100644 index 00000000..04f4c5a9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/eiffel.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./eiffel.snippets"); +exports.scope = "eiffel"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/eiffel.snippets b/plugins/node_modules/ace/lib/ace/snippets/eiffel.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/ejs.js b/plugins/node_modules/ace/lib/ace/snippets/ejs.js new file mode 100644 index 00000000..be477738 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/ejs.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./ejs.snippets"); +exports.scope = "ejs"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/ejs.snippets b/plugins/node_modules/ace/lib/ace/snippets/ejs.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/elixir.js b/plugins/node_modules/ace/lib/ace/snippets/elixir.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/elixir.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/elixir.snippets b/plugins/node_modules/ace/lib/ace/snippets/elixir.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/elm.js b/plugins/node_modules/ace/lib/ace/snippets/elm.js new file mode 100644 index 00000000..44f18c11 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/elm.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./elm.snippets"); +exports.scope = "elm"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/elm.snippets b/plugins/node_modules/ace/lib/ace/snippets/elm.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/erlang.js b/plugins/node_modules/ace/lib/ace/snippets/erlang.js new file mode 100644 index 00000000..212e3640 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/erlang.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./erlang.snippets"); +exports.scope = "erlang"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/erlang.snippets b/plugins/node_modules/ace/lib/ace/snippets/erlang.snippets new file mode 100644 index 00000000..acc6fd19 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/erlang.snippets @@ -0,0 +1,160 @@ +# module and export all +snippet mod + -module(${1:`Filename('', 'my')`}). + + -compile([export_all]). + + start() -> + ${2} + + stop() -> + ok. +# define directive +snippet def + -define(${1:macro}, ${2:body}).${3} +# export directive +snippet exp + -export([${1:function}/${2:arity}]). +# include directive +snippet inc + -include("${1:file}").${2} +# behavior directive +snippet beh + -behaviour(${1:behaviour}).${2} +# if expression +snippet if + if + ${1:guard} -> + ${2:body} + end +# case expression +snippet case + case ${1:expression} of + ${2:pattern} -> + ${3:body}; + end +# anonymous function +snippet fun + fun (${1:Parameters}) -> ${2:body} end${3} +# try...catch +snippet try + try + ${1} + catch + ${2:_:_} -> ${3:got_some_exception} + end +# record directive +snippet rec + -record(${1:record}, { + ${2:field}=${3:value}}).${4} +# todo comment +snippet todo + %% TODO: ${1} +## Snippets below (starting with '%') are in EDoc format. +## See http://www.erlang.org/doc/apps/edoc/chapter.html#id56887 for more details +# doc comment +snippet %d + %% @doc ${1} +# end of doc comment +snippet %e + %% @end +# specification comment +snippet %s + %% @spec ${1} +# private function marker +snippet %p + %% @private +# OTP application +snippet application + -module(${1:`Filename('', 'my')`}). + + -behaviour(application). + + -export([start/2, stop/1]). + + start(_Type, _StartArgs) -> + case ${2:root_supervisor}:start_link() of + {ok, Pid} -> + {ok, Pid}; + Other -> + {error, Other} + end. + + stop(_State) -> + ok. +# OTP supervisor +snippet supervisor + -module(${1:`Filename('', 'my')`}). + + -behaviour(supervisor). + + %% API + -export([start_link/0]). + + %% Supervisor callbacks + -export([init/1]). + + -define(SERVER, ?MODULE). + + start_link() -> + supervisor:start_link({local, ?SERVER}, ?MODULE, []). + + init([]) -> + Server = {${2:my_server}, {$2, start_link, []}, + permanent, 2000, worker, [$2]}, + Children = [Server], + RestartStrategy = {one_for_one, 0, 1}, + {ok, {RestartStrategy, Children}}. +# OTP gen_server +snippet gen_server + -module(${1:`Filename('', 'my')`}). + + -behaviour(gen_server). + + %% API + -export([ + start_link/0 + ]). + + %% gen_server callbacks + -export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). + + -define(SERVER, ?MODULE). + + -record(state, {}). + + %%%=================================================================== + %%% API + %%%=================================================================== + + start_link() -> + gen_server:start_link({local, ?SERVER}, ?MODULE, [], []). + + %%%=================================================================== + %%% gen_server callbacks + %%%=================================================================== + + init([]) -> + {ok, #state{}}. + + handle_call(_Request, _From, State) -> + Reply = ok, + {reply, Reply, State}. + + handle_cast(_Msg, State) -> + {noreply, State}. + + handle_info(_Info, State) -> + {noreply, State}. + + terminate(_Reason, _State) -> + ok. + + code_change(_OldVsn, State, _Extra) -> + {ok, State}. + + %%%=================================================================== + %%% Internal functions + %%%=================================================================== + diff --git a/plugins/node_modules/ace/lib/ace/snippets/eruby.snippets b/plugins/node_modules/ace/lib/ace/snippets/eruby.snippets new file mode 100644 index 00000000..f96ca846 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/eruby.snippets @@ -0,0 +1,113 @@ +# .erb and .rhmtl files + +# Includes html.snippets + +# Rails ***************************** +snippet rc + <% ${1} %> +snippet rce + <%= ${1} %>${2} +snippet % + <% ${1} %> +snippet = + <%= ${1} %>${2} +snippet end + <% end %>${1} +snippet ead + <% ${1}.each do |${2}| %> + ${3} + <% end %> +snippet for + <% for ${2:item} in ${1} %> + ${3} + <% end %> +snippet rp + <%= render :partial => '${1:item}' %> +snippet rpl + <%= render :partial => '${1:item}', :locals => { :${2:name} => '${3:value}'$4 } %> +snippet rps + <%= render :partial => '${1:item}', :status => ${2:500} %> +snippet rpc + <%= render :partial => '${1:item}', :collection => ${2:items} %> +snippet lia + <%= link_to '${1:link text...}', :action => '${2:index}' %> +snippet liai + <%= link_to '${1:link text...}', :action => '${2:edit}', :id => ${3:@item} %> +snippet lic + <%= link_to '${1:link text...}', :controller => '${2:items}' %> +snippet lica + <%= link_to '${1:link text...}', :controller => '${2:items}', :action => '${3:index}' %> +snippet licai + <%= link_to '${1:link text...}', :controller => '${2:items}', :action => '${3:edit}', :id => ${4:@item} %> +snippet yield + <%= yield ${1::content_symbol} %>${2} +snippet conf + <% content_for :${1:head} do %> + ${2} + <% end %> +snippet cs + <%= collection_select <+object+>, <+method+>, <+collection+>, <+value_method+>, <+text_method+><+, <+[options]+>, <+[html_options]+>+> %> +snippet ct + <%= content_tag '${1:DIV}', ${2:content}${3:,options} %> +snippet ff + <% form_for @${1:model} do |f| %> + ${2} + <% end %> +snippet ffcb + <%= ${1:f}.check_box :${2:attribute} %> +snippet ffe + <% error_messages_for :${1:model} %> + + <% form_for @${2:model} do |f| %> + ${3} + <% end %> +snippet ffff + <%= ${1:f}.file_field :${2:attribute} %> +snippet ffhf + <%= ${1:f}.hidden_field :${2:attribute} %> +snippet ffl + <%= ${1:f}.label :${2:attribute}, '${3:$2}' %> +snippet ffpf + <%= ${1:f}.password_field :${2:attribute} %> +snippet ffrb + <%= ${1:f}.radio_button :${2:attribute}, :${3:tag_value} %> +snippet ffs + <%= ${1:f}.submit "${2:submit}" %> +snippet ffta + <%= ${1:f}.text_area :${2:attribute} %> +snippet fftf + <%= ${1:f}.text_field :${2:attribute} %> +snippet fields + <% fields_for :${1:model}, @$1 do |${2:f}| %> + ${3} + <% end %> +snippet i18 + I18n.t('${1:type.key}')${2} +snippet it + <%= image_tag "${1}"${2} %> +snippet jit + <%= javascript_include_tag ${1::all} %> +snippet jsit + <%= javascript_include_tag "${1}" %> +snippet lim + <%= link_to ${1:model}.${2:name}, ${3:$1}_path(${4:$1}) %> +snippet linp + <%= link_to "${1:Link text...}", ${2:parent}_${3:child}_path(${4:@$2}, ${5:@$3}) %> +snippet linpp + <%= link_to "${1:Link text...}", ${2:parent}_${3:child}_path(${4:@$2}) %> +snippet lip + <%= link_to "${1:Link text...}", ${2:model}_path(${3:@$2}) %> +snippet lipp + <%= link_to "${1:Link text...}", ${2:model}s_path %> +snippet lt + <%= link_to "${1:name}", ${2:dest} %> +snippet ofcfs + <%= options_from_collection_for_select ${1:collection}, ${2:value_method}, ${3:text_method}, ${4:selected_value} %> +snippet rf + <%= render :file => "${1:file}"${2} %> +snippet rt + <%= render :template => "${1:file}"${2} %> +snippet slt + <%= stylesheet_link_tag ${1::all}, :cache => ${2:true} %> +snippet sslt + <%= stylesheet_link_tag "${1}" %> diff --git a/plugins/node_modules/ace/lib/ace/snippets/falcon.snippets b/plugins/node_modules/ace/lib/ace/snippets/falcon.snippets new file mode 100644 index 00000000..85fb918d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/falcon.snippets @@ -0,0 +1,71 @@ +snippet #! + #!/usr/bin/env falcon + +# Import +snippet imp + import ${1:module} + +# Function +snippet fun + function ${2:function_name}(${3}) + ${4:/* code */} + end + +# Class +snippet class + class ${1:class_name}(${2:class_params}) + ${3:/* members/methods */} + end + +# If +snippet if + if ${1:condition} + ${2:/* code */} + end + +# If else +snippet ife + if ${1:condition} + ${2:/* code */} + else + ${1} + end + +# If else if +snippet elif + elif ${1:condition} + ${2:/* code */} + +# Switch case +snippet switch + switch ${1:expression} + case ${2:item} + case ${3:item} + default + end + +# Select +snippet select + select ${1:variable} + case ${2:TypeSpec} + case ${3:TypeSpec} + default + end + +# For/in Loop +snippet forin + for ${1:element} in ${2:container} + ${3:/* code */} + end + +# For/to Loop +snippet forto + for ${1:lowerbound} to ${2:upperbound} + ${3:/* code */} + end + +# While Loop +snippet while + while ${1:conidition} + ${2:/* code */} + end diff --git a/plugins/node_modules/ace/lib/ace/snippets/forth.js b/plugins/node_modules/ace/lib/ace/snippets/forth.js new file mode 100644 index 00000000..c2bf9107 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/forth.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./forth.snippets"); +exports.scope = "forth"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/forth.snippets b/plugins/node_modules/ace/lib/ace/snippets/forth.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/fortran.js b/plugins/node_modules/ace/lib/ace/snippets/fortran.js new file mode 100644 index 00000000..65d8a0d9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/fortran.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./fortran.snippets"); +exports.scope = "fortran"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/fortran.snippets b/plugins/node_modules/ace/lib/ace/snippets/fortran.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/ftl.js b/plugins/node_modules/ace/lib/ace/snippets/ftl.js new file mode 100644 index 00000000..1cbcc0be --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/ftl.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./ftl.snippets"); +exports.scope = "ftl"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/ftl.snippets b/plugins/node_modules/ace/lib/ace/snippets/ftl.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/gcode.js b/plugins/node_modules/ace/lib/ace/snippets/gcode.js new file mode 100644 index 00000000..bf5e5bc9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/gcode.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./gcode.snippets"); +exports.scope = "gcode"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/gcode.snippets b/plugins/node_modules/ace/lib/ace/snippets/gcode.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/gherkin.js b/plugins/node_modules/ace/lib/ace/snippets/gherkin.js new file mode 100644 index 00000000..da0b684d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/gherkin.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./gherkin.snippets"); +exports.scope = "gherkin"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/gherkin.snippets b/plugins/node_modules/ace/lib/ace/snippets/gherkin.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/gitignore.js b/plugins/node_modules/ace/lib/ace/snippets/gitignore.js new file mode 100644 index 00000000..0a632c99 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/gitignore.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./gitignore.snippets"); +exports.scope = "gitignore"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/gitignore.snippets b/plugins/node_modules/ace/lib/ace/snippets/gitignore.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/glsl.js b/plugins/node_modules/ace/lib/ace/snippets/glsl.js new file mode 100644 index 00000000..d9c5fc25 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/glsl.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./glsl.snippets"); +exports.scope = "glsl"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/glsl.snippets b/plugins/node_modules/ace/lib/ace/snippets/glsl.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/go.snippets b/plugins/node_modules/ace/lib/ace/snippets/go.snippets new file mode 100644 index 00000000..0e4fe61d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/go.snippets @@ -0,0 +1,201 @@ +# append +snippet ap + append(${1:slice}, ${2:value}) +# bool +snippet bl + bool +# byte +snippet bt + byte +# break +snippet br + break +# channel +snippet ch + chan ${1:int} +# case +snippet cs + case ${1:value}: + ${2:/* code */} +# const +snippet c + const ${1:NAME} = ${2:0} +# constants with iota +snippet co + const ( + ${1:NAME1} = iota + ${2:NAME2} + ) +# continue +snippet cn + continue +# defer +snippet df + defer ${1:func}() +# defer recover +snippet dfr + defer func() { + if err := recover(); err != nil { + ${1:/* code */} + } + }() +# gpl +snippet gpl + /* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Copyright (C) ${1:Author}, `strftime("%Y")` + */ + + ${2} +# int +snippet i + int +# import +snippet im + import ( + "${1:package}" + ) +# interface +snippet in + interface{} +# full interface snippet +snippet inf + interface ${1:name} { + ${2:/* methods */} + }${3} +# if condition +snippet if + if ${1:/* condition */} { + ${2:/* code */} + } +# else snippet +snippet el + else { + ${1} + } +# error snippet +snippet ir + if err != nil { + return err + } + ${1} +# false +snippet f + false +# fallthrough +snippet ft + fallthrough +# float +snippet fl + float32 +# float32 +snippet f3 + float32 +# float64 +snippet f6 + float64 +# if else +snippet ie + if ${1:/* condition */} { + ${2:/* code */} + } else { + ${3} + } +# for loop +snippet fo + for ${2:i} = 0; $2 < ${1:count}; $2${3:++} { + ${4:/* code */} + } +# for range loop +snippet fr + for ${1:k}, ${2:v} := range ${3} { + ${4:/* code */} + } +# function simple +snippet fun + func ${1:funcName}(${2}) ${3:os.Error} { + ${4:/* code */} + } +# function on receiver +snippet fum + func (self ${1:type}) ${2:funcName}(${3}) ${4:os.Error} { + ${5:/* code */} + } +# make +snippet mk + make(${1:[]string}, ${2:0}) +# map +snippet mp + map[${1:string}]${2:int} +# main() +snippet main + func main() { + ${1:/* code */} + } +# new +snippet nw + new(${1:type}) +# panic +snippet pn + panic("${1:msg}") +# print +snippet pr + fmt.Printf("${1:%s}\n", ${2:var})${3} +# range +snippet rn + range ${1} +# return +snippet rt + return ${1} +# result +snippet rs + result +# select +snippet sl + select { + case ${1:v1} := <-${2:chan1} + ${3:/* code */} + case ${4:v2} := <-${5:chan2} + ${6:/* code */} + default: + ${7:/* code */} + } +# string +snippet sr + string +# struct +snippet st + struct ${1:name} { + ${2:/* data */} + }${4} +# switch +snippet sw + switch ${1:var} { + case ${2:value1}: + ${3:/* code */} + case ${4:value2}: + ${5:/* code */} + default: + ${6:/* code */} + } +snippet sp + fmt.Sprintf("${1:%s}", ${2:var})${3} +# true +snippet t + true +# variable declaration +snippet v + var ${1:t} ${2:string} diff --git a/plugins/node_modules/ace/lib/ace/snippets/gobstones.js b/plugins/node_modules/ace/lib/ace/snippets/gobstones.js new file mode 100644 index 00000000..bf808de0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/gobstones.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./gobstones.snippets"); +exports.scope = "gobstones"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/gobstones.snippets b/plugins/node_modules/ace/lib/ace/snippets/gobstones.snippets new file mode 100644 index 00000000..c837449b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/gobstones.snippets @@ -0,0 +1,34 @@ +# Procedure +snippet proc + procedure ${1?:name}(${2:argument}) { + ${3:// body...} + } + +# Function +snippet fun + function ${1?:name}(${2:argument}) { + return ${3:// body...} + } + +# Repeat +snippet rep + repeat ${1?:times} { + ${2:// body...} + } + +# For +snippet for + foreach ${1?:e} in ${2?:list} { + ${3:// body...} + } + +# If +snippet if + if (${1?:condition}) { + ${3:// body...} + } + +# While + while (${1?:condition}) { + ${2:// body...} + } diff --git a/plugins/node_modules/ace/lib/ace/snippets/golang.js b/plugins/node_modules/ace/lib/ace/snippets/golang.js new file mode 100644 index 00000000..f7b0eecc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/golang.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./golang.snippets"); +exports.scope = "golang"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/golang.snippets b/plugins/node_modules/ace/lib/ace/snippets/golang.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/graphqlschema.js b/plugins/node_modules/ace/lib/ace/snippets/graphqlschema.js new file mode 100644 index 00000000..ad8b3f5e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/graphqlschema.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./graphqlschema.snippets"); +exports.scope = "graphqlschema"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/graphqlschema.snippets b/plugins/node_modules/ace/lib/ace/snippets/graphqlschema.snippets new file mode 100644 index 00000000..32c6286c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/graphqlschema.snippets @@ -0,0 +1,32 @@ +# Type Snippet +trigger type +snippet type + type ${1:type_name} { + ${2:type_siblings} + } + +# Input Snippet +trigger input +snippet input + input ${1:input_name} { + ${2:input_siblings} + } + +# Interface Snippet +trigger interface +snippet interface + interface ${1:interface_name} { + ${2:interface_siblings} + } + +# Interface Snippet +trigger union +snippet union + union ${1:union_name} = ${2:type} | ${3: type} + +# Enum Snippet +trigger enum +snippet enum + enum ${1:enum_name} { + ${2:enum_siblings} + } diff --git a/plugins/node_modules/ace/lib/ace/snippets/groovy.js b/plugins/node_modules/ace/lib/ace/snippets/groovy.js new file mode 100644 index 00000000..2fe4e111 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/groovy.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./groovy.snippets"); +exports.scope = "groovy"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/groovy.snippets b/plugins/node_modules/ace/lib/ace/snippets/groovy.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/haml.js b/plugins/node_modules/ace/lib/ace/snippets/haml.js new file mode 100644 index 00000000..efa8eb9c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/haml.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./haml.snippets"); +exports.scope = "haml"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/haml.snippets b/plugins/node_modules/ace/lib/ace/snippets/haml.snippets new file mode 100644 index 00000000..61e9cf28 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/haml.snippets @@ -0,0 +1,20 @@ +snippet t + %table + %tr + %th + ${1:headers} + %tr + %td + ${2:headers} +snippet ul + %ul + %li + ${1:item} + %li +snippet =rp + = render :partial => '${1:partial}' +snippet =rpl + = render :partial => '${1:partial}', :locals => {} +snippet =rpc + = render :partial => '${1:partial}', :collection => @$1 + diff --git a/plugins/node_modules/ace/lib/ace/snippets/handlebars.js b/plugins/node_modules/ace/lib/ace/snippets/handlebars.js new file mode 100644 index 00000000..64ba39b3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/handlebars.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./handlebars.snippets"); +exports.scope = "handlebars"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/handlebars.snippets b/plugins/node_modules/ace/lib/ace/snippets/handlebars.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/haskell.js b/plugins/node_modules/ace/lib/ace/snippets/haskell.js new file mode 100644 index 00000000..8c583f1c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/haskell.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./haskell.snippets"); +exports.scope = "haskell"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/haskell.snippets b/plugins/node_modules/ace/lib/ace/snippets/haskell.snippets new file mode 100644 index 00000000..bcda8a5b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/haskell.snippets @@ -0,0 +1,82 @@ +snippet lang + {-# LANGUAGE ${1:OverloadedStrings} #-} +snippet info + -- | + -- Module : ${1:Module.Namespace} + -- Copyright : ${2:Author} ${3:2011-2012} + -- License : ${4:BSD3} + -- + -- Maintainer : ${5:email@something.com} + -- Stability : ${6:experimental} + -- Portability : ${7:unknown} + -- + -- ${8:Description} + -- +snippet import + import ${1:Data.Text} +snippet import2 + import ${1:Data.Text} (${2:head}) +snippet importq + import qualified ${1:Data.Text} as ${2:T} +snippet inst + instance ${1:Monoid} ${2:Type} where + ${3} +snippet type + type ${1:Type} = ${2:Type} +snippet data + data ${1:Type} = ${2:$1} ${3:Int} +snippet newtype + newtype ${1:Type} = ${2:$1} ${3:Int} +snippet class + class ${1:Class} a where + ${2} +snippet module + module `substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')` ( + ) where + `expand('%') =~ 'Main' ? "\n\nmain = do\n print \"hello world\"" : ""` + +snippet const + ${1:name} :: ${2:a} + $1 = ${3:undefined} +snippet fn + ${1:fn} :: ${2:a} -> ${3:a} + $1 ${4} = ${5:undefined} +snippet fn2 + ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a} + $1 ${5} = ${6:undefined} +snippet ap + ${1:map} ${2:fn} ${3:list} +snippet do + do + +snippet λ + \${1:x} -> ${2} +snippet \ + \${1:x} -> ${2} +snippet <- + ${1:a} <- ${2:m a} +snippet ↠+ ${1:a} <- ${2:m a} +snippet -> + ${1:m a} -> ${2:a} +snippet → + ${1:m a} -> ${2:a} +snippet tup + (${1:a}, ${2:b}) +snippet tup2 + (${1:a}, ${2:b}, ${3:c}) +snippet tup3 + (${1:a}, ${2:b}, ${3:c}, ${4:d}) +snippet rec + ${1:Record} { ${2:recFieldA} = ${3:undefined} + , ${4:recFieldB} = ${5:undefined} + } +snippet case + case ${1:something} of + ${2} -> ${3} +snippet let + let ${1} = ${2} + in ${3} +snippet where + where + ${1:fn} = ${2:undefined} diff --git a/plugins/node_modules/ace/lib/ace/snippets/haskell_cabal.js b/plugins/node_modules/ace/lib/ace/snippets/haskell_cabal.js new file mode 100644 index 00000000..0dfda712 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/haskell_cabal.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./haskell_cabal.snippets"); +exports.scope = "haskell_cabal"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/haskell_cabal.snippets b/plugins/node_modules/ace/lib/ace/snippets/haskell_cabal.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/haxe.js b/plugins/node_modules/ace/lib/ace/snippets/haxe.js new file mode 100644 index 00000000..b67f91eb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/haxe.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./haxe.snippets"); +exports.scope = "haxe"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/haxe.snippets b/plugins/node_modules/ace/lib/ace/snippets/haxe.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/hjson.js b/plugins/node_modules/ace/lib/ace/snippets/hjson.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/hjson.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/hjson.snippets b/plugins/node_modules/ace/lib/ace/snippets/hjson.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/html.js b/plugins/node_modules/ace/lib/ace/snippets/html.js new file mode 100644 index 00000000..bac3bea3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/html.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./html.snippets"); +exports.scope = "html"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/html.snippets b/plugins/node_modules/ace/lib/ace/snippets/html.snippets new file mode 100644 index 00000000..13b4b889 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/html.snippets @@ -0,0 +1,49 @@ +# Some useful Unicode entities +# Non-Breaking Space +snippet nbs +   +# ↠+snippet left + ← +# → +snippet right + → +# ↑ +snippet up + ↑ +# ↓ +snippet down + ↓ +# ↩ +snippet return + ↩ +# ⇤ +snippet backtab + ⇤ +# ⇥ +snippet tab + ⇥ +# ⇧ +snippet shift + ⇧ +# ⌃ +snippet ctrl + ⌃ +# ⌅ +snippet enter + ⌅ +# ⌘ +snippet cmd + ⌘ +# ⌥ +snippet option + ⌥ +# ⌦ +snippet delete + ⌦ +# ⌫ +snippet backspace + ⌫ +# ⎋ +snippet esc + ⎋ diff --git a/plugins/node_modules/ace/lib/ace/snippets/html_elixir.js b/plugins/node_modules/ace/lib/ace/snippets/html_elixir.js new file mode 100644 index 00000000..9902adbe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/html_elixir.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./html_elixir.snippets"); +exports.scope = "html_elixir"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/html_elixir.snippets b/plugins/node_modules/ace/lib/ace/snippets/html_elixir.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/html_ruby.js b/plugins/node_modules/ace/lib/ace/snippets/html_ruby.js new file mode 100644 index 00000000..d985d568 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/html_ruby.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./html_ruby.snippets"); +exports.scope = "html_ruby"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/html_ruby.snippets b/plugins/node_modules/ace/lib/ace/snippets/html_ruby.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/htmldjango.snippets b/plugins/node_modules/ace/lib/ace/snippets/htmldjango.snippets new file mode 100644 index 00000000..38f836bf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/htmldjango.snippets @@ -0,0 +1,136 @@ +# Generic tags + +snippet % + {% ${1} %}${2} +snippet %% + {% ${1:tag_name} %} + ${2} + {% end$1 %} +snippet { + {{ ${1} }}${2} +# Template Tags + +snippet autoescape + {% autoescape ${1:off} %} + ${2} + {% endautoescape %} +snippet block + {% block ${1} %} + ${2} + {% endblock %} +snippet # + {# ${1:comment} #} +snippet comment + {% comment %} + ${1} + {% endcomment %} +snippet cycle + {% cycle ${1:val1} ${2:val2} ${3:as ${4}} %} +snippet debug + {% debug %} +snippet extends + {% extends "${1:base.html}" %} +snippet filter + {% filter ${1} %} + ${2} + {% endfilter %} +snippet firstof + {% firstof ${1} %} +snippet for + {% for ${1} in ${2} %} + ${3} + {% endfor %} +snippet empty + {% empty %} + ${1} +snippet if + {% if ${1} %} + ${2} + {% endif %} +snippet else + {% else %} + ${1} +snippet ifchanged + {% ifchanged %}${1}{% endifchanged %} +snippet ifequal + {% ifequal ${1} ${2} %} + ${3} + {% endifequal %} +snippet ifnotequal + {% ifnotequal ${1} ${2} %} + ${3} + {% endifnotequal %} +snippet include + {% include "${1}" %} +snippet load + {% load ${1} %} +snippet now + {% now "${1:jS F Y H:i}" %} +snippet regroup + {% regroup ${1} by ${2} as ${3} %} +snippet spaceless + {% spaceless %}${1}{% endspaceless %} +snippet ssi + {% ssi ${1} %} +snippet trans + {% trans "${1:string}" %} +snippet url + {% url ${1} as ${2} %} +snippet widthratio + {% widthratio ${1:this_value} ${2:max_value} ${3:100} %} +snippet with + {% with ${1} as ${2} %} + +# Template Filters + +# Note: Since SnipMate can't determine which template filter you are +# expanding without the "|" character, these do not add the "|" +# character. These save a few keystrokes still. + +# Note: Template tags that take no arguments are not implemented. + +snippet add + add:"${1}" +snippet center + center:"${1}" +snippet cut + cut:"${1}" +snippet date + date:"${1}" +snippet default + default:"${1}" +snippet defaultifnone + default_if_none:"${1}" +snippet dictsort + dictsort:"${1}" +snippet dictsortrev + dictsortreversed:"${1}" +snippet divisibleby + divisibleby:"${1}" +snippet floatformat + floatformat:"${1}" +snippet getdigit + get_digit:"${1}" +snippet join + join:"${1}" +snippet lengthis + length_is:"${1}" +snippet pluralize + pluralize:"${1}" +snippet removetags + removetags:"${1}" +snippet slice + slice:"${1}" +snippet stringformat + stringformat:"${1}" +snippet time + time:"${1}" +snippet truncatewords + truncatewords:${1} +snippet truncatewordshtml + truncatewords_html:${1} +snippet urlizetrunc + urlizetrunc:${1} +snippet wordwrap + wordwrap:${1} + diff --git a/plugins/node_modules/ace/lib/ace/snippets/htmltornado.snippets b/plugins/node_modules/ace/lib/ace/snippets/htmltornado.snippets new file mode 100644 index 00000000..de991536 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/htmltornado.snippets @@ -0,0 +1,55 @@ +# Generic tags + +snippet { + {{ ${1} }} + +# Template tags + +snippet extends + {% extends "${1:base.html}" %} +snippet autoescape + {% autoescape ${1:xhtml_escape | None} %} +snippet apply + {% apply ${1:function} %} + ${2} + {% end %} +snippet block + {% block ${1} %} + ${2} + {% end %} +snippet for + {% for ${1:item} in ${2} %} + ${3} + {% end %} +snippet from + {% from ${1:x} import ${2:y} %} +snippet if + {% if ${1:condition} %} + ${2} + {% end %} +snippet elif + {% elif ${1:condition} %} +snippet else + {% else %} +snippet import + {% import ${1:module} %} +snippet include + {% include "${1:filename}" %} +snippet module + {% module ${1:expression} %} +snippet raw + {% raw ${1:expression} %} +snippet set + {% set ${1:x} = ${2:y} %} +snippet try + {% try %} + ${1} + {% except %} + ${2} + {% finallly %} + ${3} + {% end %} +snippet while + {% while ${1:condition} %} + ${2} + {% end %} diff --git a/plugins/node_modules/ace/lib/ace/snippets/ini.js b/plugins/node_modules/ace/lib/ace/snippets/ini.js new file mode 100644 index 00000000..df09d575 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/ini.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./ini.snippets"); +exports.scope = "ini"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/ini.snippets b/plugins/node_modules/ace/lib/ace/snippets/ini.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/io.js b/plugins/node_modules/ace/lib/ace/snippets/io.js new file mode 100644 index 00000000..14bbfcb6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/io.js @@ -0,0 +1,69 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippets = [ + { + "content": "assertEquals(${1:expected}, ${2:expr})", + "name": "assertEquals", + "scope": "io", + "tabTrigger": "ae" + }, + { + "content": "${1:${2:newValue} := ${3:Object} }clone do(\n\t$0\n)", + "name": "clone do", + "scope": "io", + "tabTrigger": "cdo" + }, + { + "content": "docSlot(\"${1:slotName}\", \"${2:documentation}\")", + "name": "docSlot", + "scope": "io", + "tabTrigger": "ds" + }, + { + "content": "(${1:header,}\n\t${2:body}\n)$0", + "keyEquivalent": "@(", + "name": "Indented Bracketed Line", + "scope": "io", + "tabTrigger": "(" + }, + { + "content": "\n\t$0\n", + "keyEquivalent": "\r", + "name": "Special: Return Inside Empty Parenthesis", + "scope": "io meta.empty-parenthesis.io, io meta.comma-parenthesis.io" + }, + { + "content": "${1:methodName} := method(${2:args,}\n\t$0\n)", + "name": "method", + "scope": "io", + "tabTrigger": "m" + }, + { + "content": "newSlot(\"${1:slotName}\", ${2:defaultValue}, \"${3:docString}\")$0", + "name": "newSlot", + "scope": "io", + "tabTrigger": "ns" + }, + { + "content": "${1:name} := Object clone do(\n\t$0\n)", + "name": "Object clone do", + "scope": "io", + "tabTrigger": "ocdo" + }, + { + "content": "test${1:SomeFeature} := method(\n\t$0\n)", + "name": "testMethod", + "scope": "io", + "tabTrigger": "ts" + }, + { + "content": "${1:Something}Test := ${2:UnitTest} clone do(\n\t$0\n)", + "name": "UnitTest", + "scope": "io", + "tabTrigger": "ut" + } +]; +exports.scope = "io"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/io.snippets b/plugins/node_modules/ace/lib/ace/snippets/io.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/jack.js b/plugins/node_modules/ace/lib/ace/snippets/jack.js new file mode 100644 index 00000000..29b8f9d2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/jack.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./jack.snippets"); +exports.scope = "jack"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/jack.snippets b/plugins/node_modules/ace/lib/ace/snippets/jack.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/jade.js b/plugins/node_modules/ace/lib/ace/snippets/jade.js new file mode 100644 index 00000000..ca83d483 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/jade.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./jade.snippets"); +exports.scope = "jade"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/jade.snippets b/plugins/node_modules/ace/lib/ace/snippets/jade.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/java.js b/plugins/node_modules/ace/lib/ace/snippets/java.js new file mode 100644 index 00000000..7d05e84a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/java.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./java.snippets"); +exports.scope = "java"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/java.snippets b/plugins/node_modules/ace/lib/ace/snippets/java.snippets new file mode 100644 index 00000000..854f14ac --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/java.snippets @@ -0,0 +1,240 @@ +## Access Modifiers +snippet po + protected +snippet pu + public +snippet pr + private +## +## Annotations +snippet before + @Before + static void ${1:intercept}(${2:args}) { ${3} } +snippet mm + @ManyToMany + ${1} +snippet mo + @ManyToOne + ${1} +snippet om + @OneToMany${1:(cascade=CascadeType.ALL)} + ${2} +snippet oo + @OneToOne + ${1} +## +## Basic Java packages and import +snippet im + import +snippet j.b + java.beans. +snippet j.i + java.io. +snippet j.m + java.math. +snippet j.n + java.net. +snippet j.u + java.util. +## +## Class +snippet cl + class ${1:`Filename("", "untitled")`} ${2} +snippet in + interface ${1:`Filename("", "untitled")`} ${2:extends Parent}${3} +snippet tc + public class ${1:`Filename()`} extends ${2:TestCase} +## +## Class Enhancements +snippet ext + extends +snippet imp + implements +## +## Comments +snippet /* + /* + * ${1} + */ +## +## Constants +snippet co + static public final ${1:String} ${2:var} = ${3};${4} +snippet cos + static public final String ${1:var} = "${2}";${3} +## +## Control Statements +snippet case + case ${1}: + ${2} +snippet def + default: + ${2} +snippet el + else +snippet elif + else if (${1}) ${2} +snippet if + if (${1}) ${2} +snippet sw + switch (${1}) { + ${2} + } +## +## Create a Method +snippet m + ${1:void} ${2:method}(${3}) ${4:throws }${5} +## +## Create a Variable +snippet v + ${1:String} ${2:var}${3: = null}${4};${5} +## +## Enhancements to Methods, variables, classes, etc. +snippet ab + abstract +snippet fi + final +snippet st + static +snippet sy + synchronized +## +## Error Methods +snippet err + System.err.print("${1:Message}"); +snippet errf + System.err.printf("${1:Message}", ${2:exception}); +snippet errln + System.err.println("${1:Message}"); +## +## Exception Handling +snippet as + assert ${1:test} : "${2:Failure message}";${3} +snippet ca + catch(${1:Exception} ${2:e}) ${3} +snippet thr + throw +snippet ths + throws +snippet try + try { + ${3} + } catch(${1:Exception} ${2:e}) { + } +snippet tryf + try { + ${3} + } catch(${1:Exception} ${2:e}) { + } finally { + } +## +## Find Methods +snippet findall + List<${1:listName}> ${2:items} = ${1}.findAll();${3} +snippet findbyid + ${1:var} ${2:item} = ${1}.findById(${3});${4} +## +## Javadocs +snippet /** + /** + * ${1} + */ +snippet @au + @author `system("grep \`id -un\` /etc/passwd | cut -d \":\" -f5 | cut -d \",\" -f1")` +snippet @br + @brief ${1:Description} +snippet @fi + @file ${1:`Filename()`}.java +snippet @pa + @param ${1:param} +snippet @re + @return ${1:param} +## +## Logger Methods +snippet debug + Logger.debug(${1:param});${2} +snippet error + Logger.error(${1:param});${2} +snippet info + Logger.info(${1:param});${2} +snippet warn + Logger.warn(${1:param});${2} +## +## Loops +snippet enfor + for (${1} : ${2}) ${3} +snippet for + for (${1}; ${2}; ${3}) ${4} +snippet wh + while (${1}) ${2} +## +## Main method +snippet main + public static void main (String[] args) { + ${1:/* code */} + } +## +## Print Methods +snippet print + System.out.print("${1:Message}"); +snippet printf + System.out.printf("${1:Message}", ${2:args}); +snippet println + System.out.println(${1}); +## +## Render Methods +snippet ren + render(${1:param});${2} +snippet rena + renderArgs.put("${1}", ${2});${3} +snippet renb + renderBinary(${1:param});${2} +snippet renj + renderJSON(${1:param});${2} +snippet renx + renderXml(${1:param});${2} +## +## Setter and Getter Methods +snippet set + ${1:public} void set${3:}(${2:String} ${4:}){ + this.$4 = $4; + } +snippet get + ${1:public} ${2:String} get${3:}(){ + return this.${4:}; + } +## +## Terminate Methods or Loops +snippet re + return +snippet br + break; +## +## Test Methods +snippet t + public void test${1:Name}() throws Exception { + ${2} + } +snippet test + @Test + public void test${1:Name}() throws Exception { + ${2} + } +## +## Utils +snippet Sc + Scanner +## +## Miscellaneous +snippet action + public static void ${1:index}(${2:args}) { ${3} } +snippet rnf + notFound(${1:param});${2} +snippet rnfin + notFoundIfNull(${1:param});${2} +snippet rr + redirect(${1:param});${2} +snippet ru + unauthorized(${1:param});${2} +snippet unless + (unless=${1:param});${2} diff --git a/plugins/node_modules/ace/lib/ace/snippets/javascript-jquery.snippets b/plugins/node_modules/ace/lib/ace/snippets/javascript-jquery.snippets new file mode 100644 index 00000000..ce247a00 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/javascript-jquery.snippets @@ -0,0 +1,589 @@ +snippet add + ${1:obj}.add('${2:selector expression}')${3} +snippet addClass + ${1:obj}.addClass('${2:class name}')${3} +snippet after + ${1:obj}.after('${2:Some text <b>and bold!</b>}')${3} +snippet ajax + $.ajax({ + url: '${1:mydomain.com/url}', + type: '${2:POST}', + dataType: '${3:xml/html/script/json}', + data: $.param( $('${4:Element or Expression}') ), + complete: function (jqXHR, textStatus) { + ${5:// callback} + }, + success: function (data, textStatus, jqXHR) { + ${6:// success callback} + }, + error: function (jqXHR, textStatus, errorThrown) { + ${7:// error callback} + } + }); +snippet ajaxcomplete + ${1:obj}.ajaxComplete(function (${1:e}, xhr, settings) { + ${2:// callback} + }); +snippet ajaxerror + ${1:obj}.ajaxError(function (${1:e}, xhr, settings, thrownError) { + ${2:// error callback} + }); + ${3} +snippet ajaxget + $.get('${1:mydomain.com/url}', + ${2:{ param1: value1 },} + function (data, textStatus, jqXHR) { + ${3:// success callback} + } + ); +snippet ajaxpost + $.post('${1:mydomain.com/url}', + ${2:{ param1: value1 },} + function (data, textStatus, jqXHR) { + ${3:// success callback} + } + ); +snippet ajaxprefilter + $.ajaxPrefilter(function (${1:options}, ${2:originalOptions}, jqXHR) { + ${3: // Modify options, control originalOptions, store jqXHR, etc} + }); +snippet ajaxsend + ${1:obj}.ajaxSend(function (${1:request, settings}) { + ${2:// error callback} + }); + ${3} +snippet ajaxsetup + $.ajaxSetup({ + url: "${1:mydomain.com/url}", + type: "${2:POST}", + dataType: "${3:xml/html/script/json}", + data: $.param( $("${4:Element or Expression}") ), + complete: function (jqXHR, textStatus) { + ${5:// callback} + }, + success: function (data, textStatus, jqXHR) { + ${6:// success callback} + }, + error: function (jqXHR, textStatus, errorThrown) { + ${7:// error callback} + } + }); +snippet ajaxstart + $.ajaxStart(function () { + ${1:// handler for when an AJAX call is started and no other AJAX calls are in progress}; + }); + ${2} +snippet ajaxstop + $.ajaxStop(function () { + ${1:// handler for when all AJAX calls have been completed}; + }); + ${2} +snippet ajaxsuccess + $.ajaxSuccess(function (${1:e}, xhr, settings) { + ${2:// handler for when any AJAX call is successfully completed}; + }); + ${2} +snippet andself + ${1:obj}.andSelf()${2} +snippet animate + ${1:obj}.animate({${2:param1: value1, param2: value2}}, ${3:speed})${4} +snippet append + ${1:obj}.append('${2:Some text <b>and bold!</b>}')${3} +snippet appendTo + ${1:obj}.appendTo('${2:selector expression}')${3} +snippet attr + ${1:obj}.attr('${2:attribute}', '${3:value}')${4} +snippet attrm + ${1:obj}.attr({'${2:attr1}': '${3:value1}', '${4:attr2}': '${5:value2}'})${6} +snippet before + ${1:obj}.before('${2:Some text <b>and bold!</b>}')${3} +snippet bind + ${1:obj}.bind('${2:event name}', function (${3:e}) { + ${4:// event handler} + }); +snippet blur + ${1:obj}.blur(function (${2:e}) { + ${3:// event handler} + }); +snippet C + $.Callbacks()${1} +snippet Cadd + ${1:callbacks}.add(${2:callbacks})${3} +snippet Cdis + ${1:callbacks}.disable()${2} +snippet Cempty + ${1:callbacks}.empty()${2} +snippet Cfire + ${1:callbacks}.fire(${2:args})${3} +snippet Cfired + ${1:callbacks}.fired()${2} +snippet Cfirew + ${1:callbacks}.fireWith(${2:this}, ${3:args})${4} +snippet Chas + ${1:callbacks}.has(${2:callback})${3} +snippet Clock + ${1:callbacks}.lock()${2} +snippet Clocked + ${1:callbacks}.locked()${2} +snippet Crem + ${1:callbacks}.remove(${2:callbacks})${3} +snippet change + ${1:obj}.change(function (${2:e}) { + ${3:// event handler} + }); +snippet children + ${1:obj}.children('${2:selector expression}')${3} +snippet clearq + ${1:obj}.clearQueue(${2:'queue name'})${3} +snippet click + ${1:obj}.click(function (${2:e}) { + ${3:// event handler} + }); +snippet clone + ${1:obj}.clone()${2} +snippet contains + $.contains(${1:container}, ${2:contents}); +snippet css + ${1:obj}.css('${2:attribute}', '${3:value}')${4} +snippet csshooks + $.cssHooks['${1:CSS prop}'] = { + get: function (elem, computed, extra) { + ${2: // handle getting the CSS property} + }, + set: function (elem, value) { + ${3: // handle setting the CSS value} + } + }; +snippet cssm + ${1:obj}.css({${2:attribute1}: '${3:value1}', ${4:attribute2}: '${5:value2}'})${6} +snippet D + $.Deferred()${1} +snippet Dalways + ${1:deferred}.always(${2:callbacks})${3} +snippet Ddone + ${1:deferred}.done(${2:callbacks})${3} +snippet Dfail + ${1:deferred}.fail(${2:callbacks})${3} +snippet Disrej + ${1:deferred}.isRejected()${2} +snippet Disres + ${1:deferred}.isResolved()${2} +snippet Dnotify + ${1:deferred}.notify(${2:args})${3} +snippet Dnotifyw + ${1:deferred}.notifyWith(${2:this}, ${3:args})${4} +snippet Dpipe + ${1:deferred}.then(${2:doneFilter}, ${3:failFilter}, ${4:progressFilter})${5} +snippet Dprog + ${1:deferred}.progress(${2:callbacks})${3} +snippet Dprom + ${1:deferred}.promise(${2:target})${3} +snippet Drej + ${1:deferred}.reject(${2:args})${3} +snippet Drejw + ${1:deferred}.rejectWith(${2:this}, ${3:args})${4} +snippet Dres + ${1:deferred}.resolve(${2:args})${3} +snippet Dresw + ${1:deferred}.resolveWith(${2:this}, ${3:args})${4} +snippet Dstate + ${1:deferred}.state()${2} +snippet Dthen + ${1:deferred}.then(${2:doneCallbacks}, ${3:failCallbacks}, ${4:progressCallbacks})${5} +snippet Dwhen + $.when(${1:deferreds})${2} +snippet data + ${1:obj}.data(${2:obj})${3} +snippet dataa + $.data('${1:selector expression}', '${2:key}'${3:, 'value'})${4} +snippet dblclick + ${1:obj}.dblclick(function (${2:e}) { + ${3:// event handler} + }); +snippet delay + ${1:obj}.delay('${2:slow/400/fast}'${3:, 'queue name'})${4} +snippet dele + ${1:obj}.delegate('${2:selector expression}', '${3:event name}', function (${4:e}) { + ${5:// event handler} + }); +snippet deq + ${1:obj}.dequeue(${2:'queue name'})${3} +snippet deqq + $.dequeue('${1:selector expression}'${2:, 'queue name'})${3} +snippet detach + ${1:obj}.detach('${2:selector expression}')${3} +snippet die + ${1:obj}.die(${2:event}, ${3:handler})${4} +snippet each + ${1:obj}.each(function (index) { + ${2:this.innerHTML = this + " is the element, " + index + " is the position";} + }); +snippet el + $('<${1}/>'${2:, {}})${3} +snippet eltrim + $.trim('${1:string}')${2} +snippet empty + ${1:obj}.empty()${2} +snippet end + ${1:obj}.end()${2} +snippet eq + ${1:obj}.eq(${2:element index})${3} +snippet error + ${1:obj}.error(function (${2:e}) { + ${3:// event handler} + }); +snippet eventsmap + { + :f${1} + } +snippet extend + $.extend(${1:true, }${2:target}, ${3:obj})${4} +snippet fadein + ${1:obj}.fadeIn('${2:slow/400/fast}')${3} +snippet fadeinc + ${1:obj}.fadeIn('slow/400/fast', function () { + ${2:// callback}; + }); +snippet fadeout + ${1:obj}.fadeOut('${2:slow/400/fast}')${3} +snippet fadeoutc + ${1:obj}.fadeOut('slow/400/fast', function () { + ${2:// callback}; + }); +snippet fadeto + ${1:obj}.fadeTo('${2:slow/400/fast}', ${3:0.5})${4} +snippet fadetoc + ${1:obj}.fadeTo('slow/400/fast', ${2:0.5}, function () { + ${3:// callback}; + }); +snippet filter + ${1:obj}.filter('${2:selector expression}')${3} +snippet filtert + ${1:obj}.filter(function (${2:index}) { + ${3:// test code} + })${4} +snippet find + ${1:obj}.find('${2:selector expression}')${3} +snippet focus + ${1:obj}.focus(function (${2:e}) { + ${3:// event handler} + }); +snippet focusin + ${1:obj}.focusIn(function (${2:e}) { + ${3:// event handler} + }); +snippet focusout + ${1:obj}.focusOut(function (${2:e}) { + ${3:// event handler} + }); +snippet get + ${1:obj}.get(${2:element index})${3} +snippet getjson + $.getJSON('${1:mydomain.com/url}', + ${2:{ param1: value1 },} + function (data, textStatus, jqXHR) { + ${3:// success callback} + } + ); +snippet getscript + $.getScript('${1:mydomain.com/url}', function (script, textStatus, jqXHR) { + ${2:// callback} + }); +snippet grep + $.grep(${1:array}, function (item, index) { + ${2:// test code} + }${3:, true}); +snippet hasc + ${1:obj}.hasClass('${2:className}')${3} +snippet hasd + $.hasData('${1:selector expression}'); +snippet height + ${1:obj}.height(${2:integer})${3} +snippet hide + ${1:obj}.hide('${2:slow/400/fast}')${3} +snippet hidec + ${1:obj}.hide('${2:slow/400/fast}', function () { + ${3:// callback} + }); +snippet hover + ${1:obj}.hover(function (${2:e}) { + ${3:// event handler} + }, function ($2) { + ${4:// event handler} + });${5} +snippet html + ${1:obj}.html('${2:Some text <b>and bold!</b>}')${3} +snippet inarr + $.inArray(${1:value}, ${2:array}); +snippet insa + ${1:obj}.insertAfter('${2:selector expression}')${3} +snippet insb + ${1:obj}.insertBefore('${2:selector expression}')${3} +snippet is + ${1:obj}.is('${2:selector expression}')${3} +snippet isarr + $.isArray(${1:obj})${2} +snippet isempty + $.isEmptyObject(${1:obj})${2} +snippet isfunc + $.isFunction(${1:obj})${2} +snippet isnum + $.isNumeric(${1:value})${2} +snippet isobj + $.isPlainObject(${1:obj})${2} +snippet iswin + $.isWindow(${1:obj})${2} +snippet isxml + $.isXMLDoc(${1:node})${2} +snippet jj + $('${1:selector}')${2} +snippet kdown + ${1:obj}.keydown(function (${2:e}) { + ${3:// event handler} + }); +snippet kpress + ${1:obj}.keypress(function (${2:e}) { + ${3:// event handler} + }); +snippet kup + ${1:obj}.keyup(function (${2:e}) { + ${3:// event handler} + }); +snippet last + ${1:obj}.last('${1:selector expression}')${3} +snippet live + ${1:obj}.live('${2:events}', function (${3:e}) { + ${4:// event handler} + }); +snippet load + ${1:obj}.load(function (${2:e}) { + ${3:// event handler} + }); +snippet loadf + ${1:obj}.load('${2:mydomain.com/url}', + ${2:{ param1: value1 },} + function (responseText, textStatus, xhr) { + ${3:// success callback} + } + }); +snippet makearray + $.makeArray(${1:obj}); +snippet map + ${1:obj}.map(function (${2:index}, ${3:element}) { + ${4:// callback} + }); +snippet mapp + $.map(${1:arrayOrObject}, function (${2:value}, ${3:indexOrKey}) { + ${4:// callback} + }); +snippet merge + $.merge(${1:target}, ${2:original}); +snippet mdown + ${1:obj}.mousedown(function (${2:e}) { + ${3:// event handler} + }); +snippet menter + ${1:obj}.mouseenter(function (${2:e}) { + ${3:// event handler} + }); +snippet mleave + ${1:obj}.mouseleave(function (${2:e}) { + ${3:// event handler} + }); +snippet mmove + ${1:obj}.mousemove(function (${2:e}) { + ${3:// event handler} + }); +snippet mout + ${1:obj}.mouseout(function (${2:e}) { + ${3:// event handler} + }); +snippet mover + ${1:obj}.mouseover(function (${2:e}) { + ${3:// event handler} + }); +snippet mup + ${1:obj}.mouseup(function (${2:e}) { + ${3:// event handler} + }); +snippet next + ${1:obj}.next('${2:selector expression}')${3} +snippet nexta + ${1:obj}.nextAll('${2:selector expression}')${3} +snippet nextu + ${1:obj}.nextUntil('${2:selector expression}'${3:, 'filter expression'})${4} +snippet not + ${1:obj}.not('${2:selector expression}')${3} +snippet off + ${1:obj}.off('${2:events}', '${3:selector expression}'${4:, handler})${5} +snippet offset + ${1:obj}.offset()${2} +snippet offsetp + ${1:obj}.offsetParent()${2} +snippet on + ${1:obj}.on('${2:events}', '${3:selector expression}', function (${4:e}) { + ${5:// event handler} + }); +snippet one + ${1:obj}.one('${2:event name}', function (${3:e}) { + ${4:// event handler} + }); +snippet outerh + ${1:obj}.outerHeight()${2} +snippet outerw + ${1:obj}.outerWidth()${2} +snippet param + $.param(${1:obj})${2} +snippet parent + ${1:obj}.parent('${2:selector expression}')${3} +snippet parents + ${1:obj}.parents('${2:selector expression}')${3} +snippet parentsu + ${1:obj}.parentsUntil('${2:selector expression}'${3:, 'filter expression'})${4} +snippet parsejson + $.parseJSON(${1:data})${2} +snippet parsexml + $.parseXML(${1:data})${2} +snippet pos + ${1:obj}.position()${2} +snippet prepend + ${1:obj}.prepend('${2:Some text <b>and bold!</b>}')${3} +snippet prependto + ${1:obj}.prependTo('${2:selector expression}')${3} +snippet prev + ${1:obj}.prev('${2:selector expression}')${3} +snippet preva + ${1:obj}.prevAll('${2:selector expression}')${3} +snippet prevu + ${1:obj}.prevUntil('${2:selector expression}'${3:, 'filter expression'})${4} +snippet promise + ${1:obj}.promise(${2:'fx'}, ${3:target})${4} +snippet prop + ${1:obj}.prop('${2:property name}')${3} +snippet proxy + $.proxy(${1:function}, ${2:this})${3} +snippet pushstack + ${1:obj}.pushStack(${2:elements})${3} +snippet queue + ${1:obj}.queue(${2:name}${3:, newQueue})${4} +snippet queuee + $.queue(${1:element}${2:, name}${3:, newQueue})${4} +snippet ready + $(function () { + ${1} + }); +snippet rem + ${1:obj}.remove()${2} +snippet rema + ${1:obj}.removeAttr('${2:attribute name}')${3} +snippet remc + ${1:obj}.removeClass('${2:class name}')${3} +snippet remd + ${1:obj}.removeData('${2:key name}')${3} +snippet remdd + $.removeData(${1:element}${2:, 'key name}')${3} +snippet remp + ${1:obj}.removeProp('${2:property name}')${3} +snippet repa + ${1:obj}.replaceAll(${2:target})${3} +snippet repw + ${1:obj}.replaceWith(${2:content})${3} +snippet reset + ${1:obj}.reset(function (${2:e}) { + ${3:// event handler} + }); +snippet resize + ${1:obj}.resize(function (${2:e}) { + ${3:// event handler} + }); +snippet scroll + ${1:obj}.scroll(function (${2:e}) { + ${3:// event handler} + }); +snippet scrolll + ${1:obj}.scrollLeft(${2:value})${3} +snippet scrollt + ${1:obj}.scrollTop(${2:value})${3} +snippet sdown + ${1:obj}.slideDown('${2:slow/400/fast}')${3} +snippet sdownc + ${1:obj}.slideDown('${2:slow/400/fast}', function () { + ${3:// callback}; + }); +snippet select + ${1:obj}.select(function (${2:e}) { + ${3:// event handler} + }); +snippet serialize + ${1:obj}.serialize()${2} +snippet serializea + ${1:obj}.serializeArray()${2} +snippet show + ${1:obj}.show('${2:slow/400/fast}')${3} +snippet showc + ${1:obj}.show('${2:slow/400/fast}', function () { + ${3:// callback} + }); +snippet sib + ${1:obj}.siblings('${2:selector expression}')${3} +snippet size + ${1:obj}.size()${2} +snippet slice + ${1:obj}.slice(${2:start}${3:, end})${4} +snippet stoggle + ${1:obj}.slideToggle('${2:slow/400/fast}')${3} +snippet stop + ${1:obj}.stop('${2:queue}', ${3:false}, ${4:false})${5} +snippet submit + ${1:obj}.submit(function (${2:e}) { + ${3:// event handler} + }); +snippet sup + ${1:obj}.slideUp('${2:slow/400/fast}')${3} +snippet supc + ${1:obj}.slideUp('${2:slow/400/fast}', function () { + ${3:// callback}; + }); +snippet text + ${1:obj}.text(${2:'some text'})${3} +snippet this + $(this)${1} +snippet toarr + ${1:obj}.toArray() +snippet tog + ${1:obj}.toggle(function (${2:e}) { + ${3:// event handler} + }, function ($2) { + ${4:// event handler} + }); + ${4} +snippet togclass + ${1:obj}.toggleClass('${2:class name}')${3} +snippet togsh + ${1:obj}.toggle('${2:slow/400/fast}')${3} +snippet trig + ${1:obj}.trigger('${2:event name}')${3} +snippet trigh + ${1:obj}.triggerHandler('${2:event name}')${3} +snippet $trim + $.trim(${1:str})${2} +snippet $type + $.type(${1:obj})${2} +snippet unbind + ${1:obj}.unbind('${2:event name}')${3} +snippet undele + ${1:obj}.undelegate(${2:selector expression}, ${3:event}, ${4:handler})${5} +snippet uniq + $.unique(${1:array})${2} +snippet unload + ${1:obj}.unload(function (${2:e}) { + ${3:// event handler} + }); +snippet unwrap + ${1:obj}.unwrap()${2} +snippet val + ${1:obj}.val('${2:text}')${3} +snippet width + ${1:obj}.width(${2:integer})${3} +snippet wrap + ${1:obj}.wrap('${2:<div class="extra-wrapper"></div>}')${3} diff --git a/plugins/node_modules/ace/lib/ace/snippets/javascript.js b/plugins/node_modules/ace/lib/ace/snippets/javascript.js new file mode 100644 index 00000000..bf59ba85 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/javascript.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./javascript.snippets"); +exports.scope = "javascript"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/javascript.snippets b/plugins/node_modules/ace/lib/ace/snippets/javascript.snippets new file mode 100644 index 00000000..83b15aab --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/javascript.snippets @@ -0,0 +1,195 @@ +# Prototype +snippet proto + ${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) { + ${4:// body...} + }; +# Function +snippet fun + function ${1?:function_name}(${2:argument}) { + ${3:// body...} + } +# Anonymous Function +regex /((=)\s*|(:)\s*|(\()|\b)/f/(\))?/ +snippet f + function${M1?: ${1:functionName}}($2) { + ${0:$TM_SELECTED_TEXT} + }${M2?;}${M3?,}${M4?)} +# Immediate function +trigger \(?f\( +endTrigger \)? +snippet f( + (function(${1}) { + ${0:${TM_SELECTED_TEXT:/* code */}} + }(${1})); +# if +snippet if + if (${1:true}) { + ${0} + } +# if ... else +snippet ife + if (${1:true}) { + ${2} + } else { + ${0} + } +# tertiary conditional +snippet ter + ${1:/* condition */} ? ${2:a} : ${3:b} +# switch +snippet switch + switch (${1:expression}) { + case '${3:case}': + ${4:// code} + break; + ${5} + default: + ${2:// code} + } +# case +snippet case + case '${1:case}': + ${2:// code} + break; + ${3} + +# while (...) {...} +snippet wh + while (${1:/* condition */}) { + ${0:/* code */} + } +# try +snippet try + try { + ${0:/* code */} + } catch (e) {} +# do...while +snippet do + do { + ${2:/* code */} + } while (${1:/* condition */}); +# Object Method +snippet :f +regex /([,{[])|^\s*/:f/ + ${1:method_name}: function(${2:attribute}) { + ${0} + }${3:,} +# setTimeout function +snippet setTimeout +regex /\b/st|timeout|setTimeo?u?t?/ + setTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10}); +# Get Elements +snippet gett + getElementsBy${1:TagName}('${2}')${3} +# Get Element +snippet get + getElementBy${1:Id}('${2}')${3} +# console.log (Firebug) +snippet cl + console.log(${1}); +# return +snippet ret + return ${1:result} +# for (property in object ) { ... } +snippet fori + for (var ${1:prop} in ${2:Things}) { + ${0:$2[$1]} + } +# hasOwnProperty +snippet has + hasOwnProperty(${1}) +# docstring +snippet /** + /** + * ${1:description} + * + */ +snippet @par +regex /^\s*\*\s*/@(para?m?)?/ + @param {${1:type}} ${2:name} ${3:description} +snippet @ret + @return {${1:type}} ${2:description} +# JSON.parse +snippet jsonp + JSON.parse(${1:jstr}); +# JSON.stringify +snippet jsons + JSON.stringify(${1:object}); +# self-defining function +snippet sdf + var ${1:function_name} = function(${2:argument}) { + ${3:// initial code ...} + + $1 = function($2) { + ${4:// main code} + }; + } +# singleton +snippet sing + function ${1:Singleton} (${2:argument}) { + // the cached instance + var instance; + + // rewrite the constructor + $1 = function $1($2) { + return instance; + }; + + // carry over the prototype properties + $1.prototype = this; + + // the instance + instance = new $1(); + + // reset the constructor pointer + instance.constructor = $1; + + ${3:// code ...} + + return instance; + } +# class +snippet class +regex /^\s*/clas{0,2}/ + var ${1:class} = function(${20}) { + $40$0 + }; + + (function() { + ${60:this.prop = ""} + }).call(${1:class}.prototype); + + exports.${1:class} = ${1:class}; +# +snippet for- + for (var ${1:i} = ${2:Things}.length; ${1:i}--; ) { + ${0:${2:Things}[${1:i}];} + } +# for (...) {...} +snippet for + for (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) { + ${3:$2[$1]}$0 + } +# for (...) {...} (Improved Native For-Loop) +snippet forr + for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) { + ${3:$2[$1]}$0 + } + + +#modules +snippet def + define(function(require, exports, module) { + "use strict"; + var ${1/.*\///} = require("${1}"); + + $TM_SELECTED_TEXT + }); +snippet req +guard ^\s* + var ${1/.*\///} = require("${1}"); + $0 +snippet requ +guard ^\s* + var ${1/.*\/(.)/\u$1/} = require("${1}").${1/.*\/(.)/\u$1/}; + $0 diff --git a/plugins/node_modules/ace/lib/ace/snippets/json.js b/plugins/node_modules/ace/lib/ace/snippets/json.js new file mode 100644 index 00000000..d57fe6c5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/json.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./json.snippets"); +exports.scope = "json"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/json.snippets b/plugins/node_modules/ace/lib/ace/snippets/json.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/jsoniq.js b/plugins/node_modules/ace/lib/ace/snippets/jsoniq.js new file mode 100644 index 00000000..9bde24cf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/jsoniq.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./jsoniq.snippets"); +exports.scope = "jsoniq"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/jsoniq.snippets b/plugins/node_modules/ace/lib/ace/snippets/jsoniq.snippets new file mode 100644 index 00000000..965034b7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/jsoniq.snippets @@ -0,0 +1,61 @@ +snippet for + for $${1:item} in ${2:expr} +snippet return + return ${1:expr} +snippet import + import module namespace ${1:ns} = "${2:http://www.example.com/}"; +snippet some + some $${1:varname} in ${2:expr} satisfies ${3:expr} +snippet every + every $${1:varname} in ${2:expr} satisfies ${3:expr} +snippet if + if(${1:true}) then ${2:expr} else ${3:true} +snippet switch + switch(${1:"foo"}) + case ${2:"foo"} + return ${3:true} + default return ${4:false} +snippet try + try { ${1:expr} } catch ${2:*} { ${3:expr} } +snippet tumbling + for tumbling window $${1:varname} in ${2:expr} + start at $${3:start} when ${4:expr} + end at $${5:end} when ${6:expr} + return ${7:expr} +snippet sliding + for sliding window $${1:varname} in ${2:expr} + start at $${3:start} when ${4:expr} + end at $${5:end} when ${6:expr} + return ${7:expr} +snippet let + let $${1:varname} := ${2:expr} +snippet group + group by $${1:varname} := ${2:expr} +snippet order + order by ${1:expr} ${2:descending} +snippet stable + stable order by ${1:expr} +snippet count + count $${1:varname} +snippet ordered + ordered { ${1:expr} } +snippet unordered + unordered { ${1:expr} } +snippet treat + treat as ${1:expr} +snippet castable + castable as ${1:atomicType} +snippet cast + cast as ${1:atomicType} +snippet typeswitch + typeswitch(${1:expr}) + case ${2:type} return ${3:expr} + default return ${4:expr} +snippet var + declare variable $${1:varname} := ${2:expr}; +snippet fn + declare function ${1:ns}:${2:name}(){ + ${3:expr} + }; +snippet module + module namespace ${1:ns} = "${2:http://www.example.com}"; diff --git a/plugins/node_modules/ace/lib/ace/snippets/jsp.js b/plugins/node_modules/ace/lib/ace/snippets/jsp.js new file mode 100644 index 00000000..2324c541 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/jsp.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./jsp.snippets"); +exports.scope = "jsp"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/jsp.snippets b/plugins/node_modules/ace/lib/ace/snippets/jsp.snippets new file mode 100644 index 00000000..a5239f5e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/jsp.snippets @@ -0,0 +1,99 @@ +snippet @page + <%@page contentType="text/html" pageEncoding="UTF-8"%> +snippet jstl + <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +snippet jstl:c + <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +snippet jstl:fn + <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +snippet cpath + ${pageContext.request.contextPath} +snippet cout + <c:out value="${1}" default="${2}" /> +snippet cset + <c:set var="${1}" value="${2}" /> +snippet cremove + <c:remove var="${1}" scope="${2:page}" /> +snippet ccatch + <c:catch var="${1}" /> +snippet cif + <c:if test="${${1}}"> + ${2} + </c:if> +snippet cchoose + <c:choose> + ${1} + </c:choose> +snippet cwhen + <c:when test="${${1}}"> + ${2} + </c:when> +snippet cother + <c:otherwise> + ${1} + </c:otherwise> +snippet cfore + <c:forEach items="${${1}}" var="${2}" varStatus="${3}"> + ${4:<c:out value="$2" />} + </c:forEach> +snippet cfort + <c:set var="${1}">${2:item1,item2,item3}</c:set> + <c:forTokens var="${3}" items="${$1}" delims="${4:,}"> + ${5:<c:out value="$3" />} + </c:forTokens> +snippet cparam + <c:param name="${1}" value="${2}" /> +snippet cparam+ + <c:param name="${1}" value="${2}" /> + cparam+${3} +snippet cimport + <c:import url="${1}" /> +snippet cimport+ + <c:import url="${1}"> + <c:param name="${2}" value="${3}" /> + cparam+${4} + </c:import> +snippet curl + <c:url value="${1}" var="${2}" /> + <a href="${$2}">${3}</a> +snippet curl+ + <c:url value="${1}" var="${2}"> + <c:param name="${4}" value="${5}" /> + cparam+${6} + </c:url> + <a href="${$2}">${3}</a> +snippet credirect + <c:redirect url="${1}" /> +snippet contains + ${fn:contains(${1:string}, ${2:substr})} +snippet contains:i + ${fn:containsIgnoreCase(${1:string}, ${2:substr})} +snippet endswith + ${fn:endsWith(${1:string}, ${2:suffix})} +snippet escape + ${fn:escapeXml(${1:string})} +snippet indexof + ${fn:indexOf(${1:string}, ${2:substr})} +snippet join + ${fn:join(${1:collection}, ${2:delims})} +snippet length + ${fn:length(${1:collection_or_string})} +snippet replace + ${fn:replace(${1:string}, ${2:substr}, ${3:replace})} +snippet split + ${fn:split(${1:string}, ${2:delims})} +snippet startswith + ${fn:startsWith(${1:string}, ${2:prefix})} +snippet substr + ${fn:substring(${1:string}, ${2:begin}, ${3:end})} +snippet substr:a + ${fn:substringAfter(${1:string}, ${2:substr})} +snippet substr:b + ${fn:substringBefore(${1:string}, ${2:substr})} +snippet lc + ${fn:toLowerCase(${1:string})} +snippet uc + ${fn:toUpperCase(${1:string})} +snippet trim + ${fn:trim(${1:string})} diff --git a/plugins/node_modules/ace/lib/ace/snippets/jssm.js b/plugins/node_modules/ace/lib/ace/snippets/jssm.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/jssm.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/jssm.snippets b/plugins/node_modules/ace/lib/ace/snippets/jssm.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/jsx.js b/plugins/node_modules/ace/lib/ace/snippets/jsx.js new file mode 100644 index 00000000..9792a7a0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/jsx.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./jsx.snippets"); +exports.scope = "jsx"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/jsx.snippets b/plugins/node_modules/ace/lib/ace/snippets/jsx.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/julia.js b/plugins/node_modules/ace/lib/ace/snippets/julia.js new file mode 100644 index 00000000..f83777ef --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/julia.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./julia.snippets"); +exports.scope = "julia"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/julia.snippets b/plugins/node_modules/ace/lib/ace/snippets/julia.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/kotlin.js b/plugins/node_modules/ace/lib/ace/snippets/kotlin.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/kotlin.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/kotlin.snippets b/plugins/node_modules/ace/lib/ace/snippets/kotlin.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/latex.js b/plugins/node_modules/ace/lib/ace/snippets/latex.js new file mode 100644 index 00000000..44bef369 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/latex.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./latex.snippets"); +exports.scope = "latex"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/latex.snippets b/plugins/node_modules/ace/lib/ace/snippets/latex.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/ledger.snippets b/plugins/node_modules/ace/lib/ace/snippets/ledger.snippets new file mode 100644 index 00000000..293d4b65 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/ledger.snippets @@ -0,0 +1,5 @@ +# Ledger <http://ledger-cli.org/> +snippet ent + `strftime("%Y/%m/%d")` ${1:transaction} + ${2:account} ${3:value} + ${4:account} diff --git a/plugins/node_modules/ace/lib/ace/snippets/less.js b/plugins/node_modules/ace/lib/ace/snippets/less.js new file mode 100644 index 00000000..7acf02f2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/less.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./less.snippets"); +exports.scope = "less"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/less.snippets b/plugins/node_modules/ace/lib/ace/snippets/less.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/liquid.js b/plugins/node_modules/ace/lib/ace/snippets/liquid.js new file mode 100644 index 00000000..2e320755 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/liquid.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./liquid.snippets"); +exports.scope = "liquid"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/liquid.snippets b/plugins/node_modules/ace/lib/ace/snippets/liquid.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/lisp.js b/plugins/node_modules/ace/lib/ace/snippets/lisp.js new file mode 100644 index 00000000..2b6870bc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/lisp.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./lisp.snippets"); +exports.scope = "lisp"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/lisp.snippets b/plugins/node_modules/ace/lib/ace/snippets/lisp.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/livescript.js b/plugins/node_modules/ace/lib/ace/snippets/livescript.js new file mode 100644 index 00000000..ba20e7e4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/livescript.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./livescript.snippets"); +exports.scope = "livescript"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/livescript.snippets b/plugins/node_modules/ace/lib/ace/snippets/livescript.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/logiql.js b/plugins/node_modules/ace/lib/ace/snippets/logiql.js new file mode 100644 index 00000000..7d0167da --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/logiql.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./logiql.snippets"); +exports.scope = "logiql"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/logiql.snippets b/plugins/node_modules/ace/lib/ace/snippets/logiql.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/lsl.js b/plugins/node_modules/ace/lib/ace/snippets/lsl.js new file mode 100644 index 00000000..678ba41f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/lsl.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./lsl.snippets"); +exports.scope = "lsl"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/lsl.snippets b/plugins/node_modules/ace/lib/ace/snippets/lsl.snippets new file mode 100644 index 00000000..352d26e7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/lsl.snippets @@ -0,0 +1,1232 @@ +snippet @ + @${1:label}; +snippet CAMERA_ACTIVE + CAMERA_ACTIVE, ${1:integer isActive}, $0 +snippet CAMERA_BEHINDNESS_ANGLE + CAMERA_BEHINDNESS_ANGLE, ${1:float degrees}, $0 +snippet CAMERA_BEHINDNESS_LAG + CAMERA_BEHINDNESS_LAG, ${1:float seconds}, $0 +snippet CAMERA_DISTANCE + CAMERA_DISTANCE, ${1:float meters}, $0 +snippet CAMERA_FOCUS + CAMERA_FOCUS, ${1:vector position}, $0 +snippet CAMERA_FOCUS_LAG + CAMERA_FOCUS_LAG, ${1:float seconds}, $0 +snippet CAMERA_FOCUS_LOCKED + CAMERA_FOCUS_LOCKED, ${1:integer isLocked}, $0 +snippet CAMERA_FOCUS_OFFSET + CAMERA_FOCUS_OFFSET, ${1:vector meters}, $0 +snippet CAMERA_FOCUS_THRESHOLD + CAMERA_FOCUS_THRESHOLD, ${1:float meters}, $0 +snippet CAMERA_PITCH + CAMERA_PITCH, ${1:float degrees}, $0 +snippet CAMERA_POSITION + CAMERA_POSITION, ${1:vector position}, $0 +snippet CAMERA_POSITION_LAG + CAMERA_POSITION_LAG, ${1:float seconds}, $0 +snippet CAMERA_POSITION_LOCKED + CAMERA_POSITION_LOCKED, ${1:integer isLocked}, $0 +snippet CAMERA_POSITION_THRESHOLD + CAMERA_POSITION_THRESHOLD, ${1:float meters}, $0 +snippet CHARACTER_AVOIDANCE_MODE + CHARACTER_AVOIDANCE_MODE, ${1:integer flags}, $0 +snippet CHARACTER_DESIRED_SPEED + CHARACTER_DESIRED_SPEED, ${1:float speed}, $0 +snippet CHARACTER_DESIRED_TURN_SPEED + CHARACTER_DESIRED_TURN_SPEED, ${1:float speed}, $0 +snippet CHARACTER_LENGTH + CHARACTER_LENGTH, ${1:float length}, $0 +snippet CHARACTER_MAX_TURN_RADIUS + CHARACTER_MAX_TURN_RADIUS, ${1:float radius}, $0 +snippet CHARACTER_ORIENTATION + CHARACTER_ORIENTATION, ${1:integer orientation}, $0 +snippet CHARACTER_RADIUS + CHARACTER_RADIUS, ${1:float radius}, $0 +snippet CHARACTER_STAY_WITHIN_PARCEL + CHARACTER_STAY_WITHIN_PARCEL, ${1:boolean stay}, $0 +snippet CHARACTER_TYPE + CHARACTER_TYPE, ${1:integer type}, $0 +snippet HTTP_BODY_MAXLENGTH + HTTP_BODY_MAXLENGTH, ${1:integer length}, $0 +snippet HTTP_CUSTOM_HEADER + HTTP_CUSTOM_HEADER, ${1:string name}, ${2:string value}, $0 +snippet HTTP_METHOD + HTTP_METHOD, ${1:string method}, $0 +snippet HTTP_MIMETYPE + HTTP_MIMETYPE, ${1:string mimeType}, $0 +snippet HTTP_PRAGMA_NO_CACHE + HTTP_PRAGMA_NO_CACHE, ${1:integer send_header}, $0 +snippet HTTP_VERBOSE_THROTTLE + HTTP_VERBOSE_THROTTLE, ${1:integer noisy}, $0 +snippet HTTP_VERIFY_CERT + HTTP_VERIFY_CERT, ${1:integer verify}, $0 +snippet RC_DATA_FLAGS + RC_DATA_FLAGS, ${1:integer flags}, $0 +snippet RC_DETECT_PHANTOM + RC_DETECT_PHANTOM, ${1:integer dectedPhantom}, $0 +snippet RC_MAX_HITS + RC_MAX_HITS, ${1:integer maxHits}, $0 +snippet RC_REJECT_TYPES + RC_REJECT_TYPES, ${1:integer filterMask}, $0 +snippet at_rot_target + at_rot_target(${1:integer handle}, ${2:rotation targetrot}, ${3:rotation ourrot}) + { + $0 + } +snippet at_target + at_target(${1:integer tnum}, ${2:vector targetpos}, ${3:vector ourpos}) + { + $0 + } +snippet attach + attach(${1:key id}) + { + $0 + } +snippet changed + changed(${1:integer change}) + { + $0 + } +snippet collision + collision(${1:integer index}) + { + $0 + } +snippet collision_end + collision_end(${1:integer index}) + { + $0 + } +snippet collision_start + collision_start(${1:integer index}) + { + $0 + } +snippet control + control(${1:key id}, ${2:integer level}, ${3:integer edge}) + { + $0 + } +snippet dataserver + dataserver(${1:key query_id}, ${2:string data}) + { + $0 + } +snippet do + do + { + $0 + } + while (${1:condition}); +snippet else + else + { + $0 + } +snippet email + email(${1:string time}, ${2:string address}, ${3:string subject}, ${4:string message}, ${5:integer num_left}) + { + $0 + } +snippet experience_permissions + experience_permissions(${1:key agent_id}) + { + $0 + } +snippet experience_permissions_denied + experience_permissions_denied(${1:key agent_id}, ${2:integer reason}) + { + $0 + } +snippet for + for (${1:start}; ${3:condition}; ${3:step}) + { + $0 + } +snippet http_request + http_request(${1:key request_id}, ${2:string method}, ${3:string body}) + { + $0 + } +snippet http_response + http_response(${1:key request_id}, ${2:integer status}, ${3:list metadata}, ${4:string body}) + { + $0 + } +snippet if + if (${1:condition}) + { + $0 + } +snippet jump + jump ${1:label}; +snippet land_collision + land_collision(${1:vector pos}) + { + $0 + } +snippet land_collision_end + land_collision_end(${1:vector pos}) + { + $0 + } +snippet land_collision_start + land_collision_start(${1:vector pos}) + { + $0 + } +snippet link_message + link_message(${1:integer sender_num}, ${2:integer num}, ${3:string str}, ${4:key id}) + { + $0 + } +snippet listen + listen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string message}) + { + $0 + } +snippet llAbs + llAbs(${1:integer val}) +snippet llAcos + llAcos(${1:float val}) +snippet llAddToLandBanList + llAddToLandBanList(${1:key agent}, ${2:float hours}); + $0 +snippet llAddToLandPassList + llAddToLandPassList(${1:key agent}, ${2:float hours}); + $0 +snippet llAdjustSoundVolume + llAdjustSoundVolume(${1:float volume}); + $0 +snippet llAgentInExperience + llAgentInExperience(${1:key agent}) +snippet llAllowInventoryDrop + llAllowInventoryDrop(${1:integer add}); + $0 +snippet llAngleBetween + llAngleBetween(${1:rotation a}, ${2:rotation b}) +snippet llApplyImpulse + llApplyImpulse(${1:vector force}, ${2:integer local}); + $0 +snippet llApplyRotationalImpulse + llApplyRotationalImpulse(${1:vector force}, ${2:integer local}); + $0 +snippet llAsin + llAsin(${1:float val}) +snippet llAtan2 + llAtan2(${1:float y}, ${2:float x}) +snippet llAttachToAvatar + llAttachToAvatar(${1:integer attach_point}); + $0 +snippet llAttachToAvatarTemp + llAttachToAvatarTemp(${1:integer attach_point}); + $0 +snippet llAvatarOnLinkSitTarget + llAvatarOnLinkSitTarget(${1:integer link}) +snippet llAvatarOnSitTarget + llAvatarOnSitTarget() +snippet llAxes2Rot + llAxes2Rot(${1:vector fwd}, ${2:vector left}, ${3:vector up}) +snippet llAxisAngle2Rot + llAxisAngle2Rot(${1:vector axis}, ${2:float angle}) +snippet llBase64ToInteger + llBase64ToInteger(${1:string str}) +snippet llBase64ToString + llBase64ToString(${1:string str}) +snippet llBreakAllLinks + llBreakAllLinks(); + $0 +snippet llBreakLink + llBreakLink(${1:integer link}); + $0 +snippet llCastRay + llCastRay(${1:vector start}, ${2:vector end}, ${3:list options}); + $0 +snippet llCeil + llCeil(${1:float val}) +snippet llClearCameraParams + llClearCameraParams(); + $0 +snippet llClearLinkMedia + llClearLinkMedia(${1:integer link}, ${2:integer face}); + $0 +snippet llClearPrimMedia + llClearPrimMedia(${1:integer face}); + $0 +snippet llCloseRemoteDataChannel + llCloseRemoteDataChannel(${1:key channel}); + $0 +snippet llCollisionFilter + llCollisionFilter(${1:string name}, ${2:key id}, ${3:integer accept}); + $0 +snippet llCollisionSound + llCollisionSound(${1:string impact_sound}, ${2:float impact_volume}); + $0 +snippet llCos + llCos(${1:float theta}) +snippet llCreateCharacter + llCreateCharacter(${1:list options}); + $0 +snippet llCreateKeyValue + llCreateKeyValue(${1:string k}) +snippet llCreateLink + llCreateLink(${1:key target}, ${2:integer parent}); + $0 +snippet llCSV2List + llCSV2List(${1:string src}) +snippet llDataSizeKeyValue + llDataSizeKeyValue() +snippet llDeleteCharacter + llDeleteCharacter(); + $0 +snippet llDeleteKeyValue + llDeleteKeyValue(${1:string k}) +snippet llDeleteSubList + llDeleteSubList(${1:list src}, ${2:integer start}, ${3:integer end}) +snippet llDeleteSubString + llDeleteSubString(${1:string src}, ${2:integer start}, ${3:integer end}) +snippet llDetachFromAvatar + llDetachFromAvatar(); + $0 +snippet llDetectedGrab + llDetectedGrab(${1:integer number}) +snippet llDetectedGroup + llDetectedGroup(${1:integer number}) +snippet llDetectedKey + llDetectedKey(${1:integer number}) +snippet llDetectedLinkNumber + llDetectedLinkNumber(${1:integer number}) +snippet llDetectedName + llDetectedName(${1:integer number}) +snippet llDetectedOwner + llDetectedOwner(${1:integer number}) +snippet llDetectedPos + llDetectedPosl(${1:integer number}) +snippet llDetectedRot + llDetectedRot(${1:integer number}) +snippet llDetectedTouchBinormal + llDetectedTouchBinormal(${1:integer number}) +snippet llDetectedTouchFace + llDetectedTouchFace(${1:integer number}) +snippet llDetectedTouchNormal + llDetectedTouchNormal(${1:integer number}) +snippet llDetectedTouchPos + llDetectedTouchPos(${1:integer number}) +snippet llDetectedTouchST + llDetectedTouchST(${1:integer number}) +snippet llDetectedTouchUV + llDetectedTouchUV(${1:integer number}) +snippet llDetectedType + llDetectedType(${1:integer number}) +snippet llDetectedVel + llDetectedVel(${1:integer number}) +snippet llDialog + llDialog(${1:key agent}, ${2:string message}, ${3:list buttons}, ${4:integer channel}); + $0 +snippet llDie + llDie(); + $0 +snippet llDumpList2String + llDumpList2String(${1:list src}, ${2:string separator}) +snippet llEdgeOfWorld + llEdgeOfWorld(${1:vector pos}, ${2:vector dir}) +snippet llEjectFromLand + llEjectFromLand(${1:key agent}); + $0 +snippet llEmail + llEmail(${1:string address}, ${2:string subject}, ${3:string message}); + $0 +snippet llEscapeURL + llEscapeURL(${1:string url}) +snippet llEuler2Rot + llEuler2Rot(${1:vector v}) +snippet llExecCharacterCmd + llExecCharacterCmd(${1:integer command}, ${2:list options}); + $0 +snippet llEvade + llEvade(${1:key target}, ${2:list options}); + $0 +snippet llFabs + llFabs(${1:float val}) +snippet llFleeFrom + llFleeFrom(${1:vector position}, ${2:float distance}, ${3:list options}); + $0 +snippet llFloor + llFloor(${1:float val}) +snippet llForceMouselook + llForceMouselook(${1:integer mouselook}); + $0 +snippet llFrand + llFrand(${1:float mag}) +snippet llGenerateKey + llGenerateKey() +snippet llGetAccel + llGetAccel() +snippet llGetAgentInfo + llGetAgentInfo(${1:key id}) +snippet llGetAgentLanguage + llGetAgentLanguage(${1:key agent}) +snippet llGetAgentList + llGetAgentList(${1:integer scope}, ${2:list options}) +snippet llGetAgentSize + llGetAgentSize(${1:key agent}) +snippet llGetAlpha + llGetAlpha(${1:integer face}) +snippet llGetAndResetTime + llGetAndResetTime() +snippet llGetAnimation + llGetAnimation(${1:key id}) +snippet llGetAnimationList + llGetAnimationList(${1:key agent}) +snippet llGetAnimationOverride + llGetAnimationOverride(${1:string anim_state}) +snippet llGetAttached + llGetAttached() +snippet llGetAttachedList + llGetAttachedList(${1:key id}) +snippet llGetBoundingBox + llGetBoundingBox(${1:key object}) +snippet llGetCameraPos + llGetCameraPos() +snippet llGetCameraRot + llGetCameraRot() +snippet llGetCenterOfMass + llGetCenterOfMass() +snippet llGetClosestNavPoint + llGetClosestNavPoint(${1:vector point}, ${2:list options}) +snippet llGetColor + llGetColor(${1:integer face}) +snippet llGetCreator + llGetCreator() +snippet llGetDate + llGetDate() +snippet llGetDisplayName + llGetDisplayName(${1:key id}) +snippet llGetEnergy + llGetEnergy() +snippet llGetEnv + llGetEnv(${1:string name}) +snippet llGetExperienceDetails + llGetExperienceDetails(${1:key experience_id}) +snippet llGetExperienceErrorMessage + llGetExperienceErrorMessage(${1:integer error}) +snippet llGetForce + llGetForce() +snippet llGetFreeMemory + llGetFreeMemory() +snippet llGetFreeURLs + llGetFreeURLs() +snippet llGetGeometricCenter + llGetGeometricCenter() +snippet llGetGMTclock + llGetGMTclock() +snippet llGetHTTPHeader + llGetHTTPHeader(${1:key request_id}, ${2:string header}) +snippet llGetInventoryCreator + llGetInventoryCreator(${1:string item}) +snippet llGetInventoryKey + llGetInventoryKey(${1:string name}) +snippet llGetInventoryName + llGetInventoryName(${1:integer type}, ${2:integer number}) +snippet llGetInventoryNumber + llGetInventoryNumber(${1:integer type}) +snippet llGetInventoryPermMask + llGetInventoryPermMask(${1:string item}, ${2:integer mask}) +snippet llGetInventoryType + llGetInventoryType(${1:string name}) +snippet llGetKey + llGetKey() +snippet llGetLandOwnerAt + llGetLandOwnerAt(${1:vector pos}) +snippet llGetLinkKey + llGetLinkKey(${1:integer link}) +snippet llGetLinkMedia + llGetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params}) +snippet llGetLinkName + llGetLinkName(${1:integer link}) +snippet llGetLinkNumber + llGetLinkNumber() +snippet llGetLinkNumberOfSides + llGetLinkNumberOfSides(${1:integer link}) +snippet llGetLinkPrimitiveParams + llGetLinkPrimitiveParams(${1:integer link}, ${2:list params}) +snippet llGetListEntryType + llGetListEntryType(${1:list src}, ${2:integer index}) +snippet llGetListLength + llGetListLength(${1:list src}) +snippet llGetLocalPos + llGetLocalPos() +snippet llGetLocalRot + llGetLocalRot() +snippet llGetMass + llGetMass() +snippet llGetMassMKS + llGetMassMKS() +snippet llGetMaxScaleFactor + llGetMaxScaleFactor() +snippet llGetMemoryLimit + llGetMemoryLimit() +snippet llGetMinScaleFactor + llGetMinScaleFactor() +snippet llGetNextEmail + llGetNextEmail(${1:string address}, ${2:string subject}); + $0 +snippet llGetNotecardLine + llGetNotecardLine(${1:string name}, ${2:integer line}) +snippet llGetNumberOfNotecardLines + llGetNumberOfNotecardLines(${1:string name}) +snippet llGetNumberOfPrims + llGetNumberOfPrims() +snippet llGetNumberOfSides + llGetNumberOfSides() +snippet llGetObjectDesc + llGetObjectDesc() +snippet llGetObjectDetails + llGetObjectDetails(${1:key id}, ${2:list params}) +snippet llGetObjectMass + llGetObjectMass(${1:key id}) +snippet llGetObjectName + llGetObjectName() +snippet llGetObjectPermMask + llGetObjectPermMask(${1:integer mask}) +snippet llGetObjectPrimCount + llGetObjectPrimCount(${1:key prim}) +snippet llGetOmega + llGetOmega() +snippet llGetOwner + llGetOwner() +snippet llGetOwnerKey + llGetOwnerKey(${1:key id}) +snippet llGetParcelDetails + llGetParcelDetails(${1:vector pos}, ${2:list params}) +snippet llGetParcelFlags + llGetParcelFlags(${1:vector pos}) +snippet llGetParcelMaxPrims + llGetParcelMaxPrims(${1:vector pos}, ${2:integer sim_wide}) +snippet llGetParcelMusicURL + llGetParcelMusicURL() +snippet llGetParcelPrimCount + llGetParcelPrimCount(${1:vector pos}, ${2:integer category}, ${3:integer sim_wide}) +snippet llGetParcelPrimOwners + llGetParcelPrimOwners(${1:vector pos}) +snippet llGetPermissions + llGetPermissions() +snippet llGetPermissionsKey + llGetPermissionsKey() +snippet llGetPhysicsMaterial + llGetPhysicsMaterial() +snippet llGetPos + llGetPos() +snippet llGetPrimitiveParams + llGetPrimitiveParams(${1:list params}) +snippet llGetPrimMediaParams + llGetPrimMediaParams(${1:integer face}, ${2:list params}) +snippet llGetRegionAgentCount + llGetRegionAgentCount() +snippet llGetRegionCorner + llGetRegionCorner() +snippet llGetRegionFlags + llGetRegionFlags() +snippet llGetRegionFPS + llGetRegionFPS() +snippet llGetRegionName + llGetRegionName() +snippet llGetRegionTimeDilation + llGetRegionTimeDilation() +snippet llGetRootPosition + llGetRootPosition() +snippet llGetRootRotation + llGetRootRotation() +snippet llGetRot + llGetRot() +snippet llGetScale + llGetScale() +snippet llGetScriptName + llGetScriptName() +snippet llGetScriptState + llGetScriptState(${1:string script}) +snippet llGetSimStats + llGetSimStats(${1:integer stat_type}) +snippet llGetSimulatorHostname + llGetSimulatorHostname() +snippet llGetSPMaxMemory + llGetSPMaxMemory() +snippet llGetStartParameter + llGetStartParameter() +snippet llGetStaticPath + llGetStaticPath(${1:vector start}, ${2:vector end}, ${3:float radius}, ${4:list params}) +snippet llGetStatus + llGetStatus(${1:integer status}) +snippet llGetSubString + llGetSubString(${1:string src}, ${2:integer start}, ${3:integer end}) +snippet llGetSunDirection + llGetSunDirection() +snippet llGetTexture + llGetTexture(${1:integer face}) +snippet llGetTextureOffset + llGetTextureOffset(${1:integer face}) +snippet llGetTextureRot + llGetTextureRot(${1:integer face}) +snippet llGetTextureScale + llGetTextureScale(${1:integer face}) +snippet llGetTime + llGetTime() +snippet llGetTimeOfDay + llGetTimeOfDay() +snippet llGetTimestamp + llGetTimestamp() +snippet llGetTorque + llGetTorque() +snippet llGetUnixTime + llGetUnixTime() +snippet llGetUsedMemory + llGetUsedMemory() +snippet llGetUsername + llGetUsername(${1:key id}) +snippet llGetVel + llGetVel() +snippet llGetWallclock + llGetWallclock() +snippet llGiveInventory + llGiveInventory(${1:key destination}, ${2:string inventory}); + $0 +snippet llGiveInventoryList + llGiveInventoryList(${1:key target}, ${2:string folder}, ${3:list inventory}); + $0 +snippet llGiveMoney + llGiveMoney(${1:key destination}, ${2:integer amount}) +snippet llGround + llGround(${1:vector offset}) +snippet llGroundContour + llGroundContour(${1:vector offset}) +snippet llGroundNormal + llGroundNormal(${1:vector offset}) +snippet llGroundRepel + llGroundRepel(${1:float height}, ${2:integer water}, ${3:float tau}); + $0 +snippet llGroundSlope + llGroundSlope(${1:vector offset}) +snippet llHTTPRequest + llHTTPRequest(${1:string url}, ${2:list parameters}, ${3:string body}) +snippet llHTTPResponse + llHTTPResponse(${1:key request_id}, ${2:integer status}, ${3:string body}); + $0 +snippet llInsertString + llInsertString(${1:string dst}, ${2:integer pos}, ${3:string src}) +snippet llInstantMessage + llInstantMessage(${1:key user}, ${2:string message}); + $0 +snippet llIntegerToBase64 + llIntegerToBase64(${1:integer number}) +snippet llJson2List + llJson2List(${1:string json}) +snippet llJsonGetValue + llJsonGetValue(${1:string json}, ${2:list specifiers}) +snippet llJsonSetValue + llJsonSetValue(${1:string json}, ${2:list specifiers}, ${3:string newValue}) +snippet llJsonValueType + llJsonValueType(${1:string json}, ${2:list specifiers}) +snippet llKey2Name + llKey2Name(${1:key id}) +snippet llKeyCountKeyValue + llKeyCountKeyValue() +snippet llKeysKeyValue + llKeysKeyValue(${1:integer first}, ${2:integer count}) +snippet llLinkParticleSystem + llLinkParticleSystem(${1:integer link}, ${2:list rules}); + $0 +snippet llLinkSitTarget + llLinkSitTarget(${1:integer link}, ${2:vector offset}, ${3:rotation rot}); + $0 +snippet llList2CSV + llList2CSV(${1:list src}) +snippet llList2Float + llList2Float(${1:list src}, ${2:integer index}) +snippet llList2Integer + llList2Integer(${1:list src}, ${2:integer index}) +snippet llList2Json + llList2Json(${1:string type}, ${2:list values}) +snippet llList2Key + llList2Key(${1:list src}, ${2:integer index}) +snippet llList2List + llList2List(${1:list src}, ${2:integer start}, ${3:integer end}) +snippet llList2ListStrided + llList2ListStrided(${1:list src}, ${2:integer start}, ${3:integer end}, ${4:integer stride}) +snippet llList2Rot + llList2Rot(${1:list src}, ${2:integer index}) +snippet llList2String + llList2String(${1:list src}, ${2:integer index}) +snippet llList2Vector + llList2Vector(${1:list src}, ${2:integer index}) +snippet llListen + llListen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string msg}) +snippet llListenControl + llListenControl(${1:integer handle}, ${2:integer active}); + $0 +snippet llListenRemove + llListenRemove(${1:integer handle}); + $0 +snippet llListFindList + llListFindList(${1:list src}, ${2:list test}) +snippet llListInsertList + llListInsertList(${1:list dest}, ${2:list src}, ${3:integer start}) +snippet llListRandomize + llListRandomize(${1:list src}, ${2:integer stride}) +snippet llListReplaceList + llListReplaceList(${1:list dest}, ${2:list src}, ${3:integer start}, ${4:integer end}) +snippet llListSort + llListSort(${1:list src}, ${2:integer stride}, ${3:integer ascending}) +snippet llListStatistics + llListStatistics(${1:integer operation}, ${2:list src}) +snippet llLoadURL + llLoadURL(${1:key agent}, ${2:string message}, ${3:string url}); + $0 +snippet llLog + llLog(${1:float val}) +snippet llLog10 + llLog10(${1:float val}) +snippet llLookAt + llLookAt(${1:vector target}, ${2:float strength}, ${3:float damping}); + $0 +snippet llLoopSound + llLoopSound(${1:string sound}, ${2:float volume}); + $0 +snippet llLoopSoundMaster + llLoopSoundMaster(${1:string sound}, ${2:float volume}); + $0 +snippet llLoopSoundSlave + llLoopSoundSlave(${1:string sound}, ${2:float volume}); + $0 +snippet llManageEstateAccess + llManageEstateAccess(${1:integer action}, ${2:key agent}) +snippet llMapDestination + llMapDestination(${1:string simname}, ${2:vector pos}, ${3:vector look_at}); + $0 +snippet llMD5String + llMD5String(${1:string src}, ${2:integer nonce}) +snippet llMessageLinked + llMessageLinked(${1:integer link}, ${2:integer num}, ${3:string str}, ${4:key id}); + $0 +snippet llMinEventDelay + llMinEventDelay(${1:float delay}); + $0 +snippet llModifyLand + llModifyLand(${1:integer action}, ${2:integer brush}); + $0 +snippet llModPow + llModPow(${1:integer a}, ${2:integer b}, ${3:integer c}) +snippet llMoveToTarget + llMoveToTarget(${1:vector target}, ${2:float tau}); + $0 +snippet llNavigateTo + llNavigateTo(${1:vector pos}, ${2:list options}); + $0 +snippet llOffsetTexture + llOffsetTexture(${1:float u}, ${2:float v}, ${3:integer face}); + $0 +snippet llOpenRemoteDataChannel + llOpenRemoteDataChannel(); + $0 +snippet llOverMyLand + llOverMyLand(${1:key id}) +snippet llOwnerSay + llOwnerSay(${1:string msg}); + $0 +snippet llParcelMediaCommandList + llParcelMediaCommandList(${1:list commandList}); + $0 +snippet llParcelMediaQuery + llParcelMediaQuery(${1:list query}) +snippet llParseString2List + llParseString2List(${1:string src}, ${2:list separators}, ${3:list spacers}) +snippet llParseStringKeepNulls + llParseStringKeepNulls(${1:string src}, ${2:list separators}, ${3:list spacers}) +snippet llParticleSystem + llParticleSystem(${1:list rules}); + $0 +snippet llPassCollisions + llPassCollisions(${1:integer pass}); + $0 +snippet llPassTouches + llPassTouches(${1:integer pass}); + $0 +snippet llPatrolPoints + llPatrolPoints(${1:list patrolPoints}, ${2:list options}); + $0 +snippet llPlaySound + llPlaySound(${1:string sound}, ${2:float volume}); + $0 +snippet llPlaySoundSlave + llPlaySoundSlave(${1:string sound}, ${2:float volume}); + $0 +snippet llPow + llPow(${1:float base}, ${2:float exponent}) +snippet llPreloadSound + llPreloadSound(${1:string sound}); + $0 +snippet llPursue + llPursue(${1:key target}, ${2:list options}); + $0 +snippet llPushObject + llPushObject(${1:key target}, ${2:vector impulse}, ${3:vector ang_impulse}, ${4:integer local}); + $0 +snippet llReadKeyValue + llReadKeyValue(${1:string k}) +snippet llRegionSay + llRegionSay(${1:integer channel}, ${2:string msg}); + $0 +snippet llRegionSayTo + llRegionSayTo(${1:key target}, ${2:integer channel}, ${3:string msg}); + $0 +snippet llReleaseControls + llReleaseControls(); + $0 +snippet llReleaseURL + llReleaseURL(${1:string url}); + $0 +snippet llRemoteDataReply + llRemoteDataReply(${1:key channel}, ${2:key message_id}, ${3:string sdata}, ${4:integer idata}); + $0 +snippet llRemoteLoadScriptPin + llRemoteLoadScriptPin(${1:key target}, ${2:string name}, ${3:integer pin}, ${4:integer running}, ${5:integer start_param}); + $0 +snippet llRemoveFromLandBanList + llRemoveFromLandBanList(${1:key agent}); + $0 +snippet llRemoveFromLandPassList + llRemoveFromLandPassList(${1:key agent}); + $0 +snippet llRemoveInventory + llRemoveInventory(${1:string item}); + $0 +snippet llRemoveVehicleFlags + llRemoveVehicleFlags(${1:integer flags}); + $0 +snippet llRequestAgentData + llRequestAgentData(${1:key id}, ${2:integer data}) +snippet llRequestDisplayName + llRequestDisplayName(${1:key id}) +snippet llRequestExperiencePermissions + llRequestExperiencePermissions(${1:key agent}, ${2:string name}) +snippet llRequestInventoryData + llRequestInventoryData(${1:string name}) +snippet llRequestPermissions + llRequestPermissions(${1:key agent}, ${2:integer permissions}) +snippet llRequestSecureURL + llRequestSecureURL() +snippet llRequestSimulatorData + llRequestSimulatorData(${1:string region}, ${2:integer data}) +snippet llRequestURL + llRequestURL() +snippet llRequestUsername + llRequestUsername(${1:key id}) +snippet llResetAnimationOverride + llResetAnimationOverride(${1:string anim_state}); + $0 +snippet llResetLandBanList + llResetLandBanList(); + $0 +snippet llResetLandPassList + llResetLandPassList(); + $0 +snippet llResetOtherScript + llResetOtherScript(${1:string name}); + $0 +snippet llResetScript + llResetScript(); + $0 +snippet llResetTime + llResetTime(); + $0 +snippet llReturnObjectsByID + llReturnObjectsByID(${1:list objects}) +snippet llReturnObjectsByOwner + llReturnObjectsByOwner(${1:key owner}, ${2:integer scope}) +snippet llRezAtRoot + llRezAtRoot(${1:string inventory}, ${2:vector position}, ${3:vector velocity}, ${4:rotation rot}, ${5:integer param}); + $0 +snippet llRezObject + llRezObject(${1:string inventory}, ${2:vector pos}, ${3:vector vel}, ${4:rotation rot}, ${5:integer param}); + $0 +snippet llRot2Angle + llRot2Angle(${1:rotation rot}) +snippet llRot2Axis + llRot2Axis(${1:rotation rot}) +snippet llRot2Euler + llRot2Euler(${1:rotation quat}) +snippet llRot2Fwd + llRot2Fwd(${1:rotation q}) +snippet llRot2Left + llRot2Left(${1:rotation q}) +snippet llRot2Up + llRot2Up(${1:rotation q}) +snippet llRotateTexture + llRotateTexture(${1:float angle}, ${2:integer face}); + $0 +snippet llRotBetween + llRotBetween(${1:vector start}, ${2:vector end}) +snippet llRotLookAt + llRotLookAt(${1:rotation target_direction}, ${2:float strength}, ${3:float damping}); + $0 +snippet llRotTarget + llRotTarget(${1:rotation rot}, ${2:float error}) +snippet llRotTargetRemove + llRotTargetRemove(${1:integer handle}); + $0 +snippet llRound + llRound(${1:float val}) +snippet llSameGroup + llSameGroup(${1:key group}) +snippet llSay + llSay(${1:integer channel}, ${2:string msg}); + $0 +snippet llScaleByFactor + llScaleByFactor(${1:float scaling_factor}) +snippet llScaleTexture + llScaleTexture(${1:float u}, ${2:float v}, ${3:integer face}); + $0 +snippet llScriptDanger + llScriptDanger(${1:vector pos}) +snippet llScriptProfiler + llScriptProfiler(${1:integer flags}); + $0 +snippet llSendRemoteData + llSendRemoteData(${1:key channel}, ${2:string dest}, ${3:integer idata}, ${4:string sdata}) +snippet llSensor + llSensor(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc}); + $0 +snippet llSensorRepeat + llSensorRepeat(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc}, ${6:float rate}); + $0 +snippet llSetAlpha + llSetAlpha(${1:float alpha}, ${2:integer face}); + $0 +snippet llSetAngularVelocity + llSetAngularVelocity(${1:vector force}, ${2:integer local}); + $0 +snippet llSetAnimationOverride + llSetAnimationOverride(${1:string anim_state}, ${2:string anim}) +snippet llSetBuoyancy + llSetBuoyancy(${1:float buoyancy}); + $0 +snippet llSetCameraAtOffset + llSetCameraAtOffset(${1:vector offset}); + $0 +snippet llSetCameraEyeOffset + llSetCameraEyeOffset(${1:vector offset}); + $0 +snippet llSetCameraParams + llSetCameraParams(${1:list rules}); + $0 +snippet llSetClickAction + llSetClickAction(${1:integer action}); + $0 +snippet llSetColor + llSetColor(${1:vector color}, ${2:integer face}); + $0 +snippet llSetContentType + llSetContentType(${1:key request_id}, ${2:integer content_type}); + $0 +snippet llSetDamage + llSetDamage(${1:float damage}); + $0 +snippet llSetForce + llSetForce(${1:vector force}, ${2:integer local}); + $0 +snippet llSetForceAndTorque + llSetForceAndTorque(${1:vector force}, ${2:vector torque}, ${3:integer local}); + $0 +snippet llSetHoverHeight + llSetHoverHeight(${1:float height}, ${2:integer water}, ${3:float tau}); + $0 +snippet llSetKeyframedMotion + llSetKeyframedMotion(${1:list keyframes}, ${2:list options}); + $0 +snippet llSetLinkAlpha + llSetLinkAlpha(${1:integer link}, ${2:float alpha}, ${3:integer face}); + $0 +snippet llSetLinkCamera + llSetLinkCamera(${1:integer link}, ${2:vector eye}, ${3:vector at}); + $0 +snippet llSetLinkColor + llSetLinkColor(${1:integer link}, ${2:vector color}, ${3:integer face}); + $0 +snippet llSetLinkMedia + llSetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params}); + $0 +snippet llSetLinkPrimitiveParams + llSetLinkPrimitiveParams(${1:integer link}, ${2:list rules}); + $0 +snippet llSetLinkPrimitiveParamsFast + llSetLinkPrimitiveParamsFast(${1:integer link}, ${2:list rules}); + $0 +snippet llSetLinkTexture + llSetLinkTexture(${1:integer link}, ${2:string texture}, ${3:integer face}); + $0 +snippet llSetLinkTextureAnim + llSetLinkTextureAnim(${1:integer link}, ${2:integer mode}, ${3:integer face}, ${4:integer sizex}, ${5:integer sizey}, ${6:float start}, ${7:float length}, ${8:float rate}); + $0 +snippet llSetLocalRot + llSetLocalRot(${1:rotation rot}); + $0 +snippet llSetMemoryLimit + llSetMemoryLimit(${1:integer limit}) +snippet llSetObjectDesc + llSetObjectDesc(${1:string description}); + $0 +snippet llSetObjectName + llSetObjectName(${1:string name}); + $0 +snippet llSetParcelMusicURL + llSetParcelMusicURL(${1:string url}); + $0 +snippet llSetPayPrice + llSetPayPrice(${1:integer price}, [${2:integer price_button_a}, ${3:integer price_button_b}, ${4:integer price_button_c}, ${5:integer price_button_d}]); + $0 +snippet llSetPhysicsMaterial + llSetPhysicsMaterial(${1:integer mask}, ${2:float gravity_multiplier}, ${3:float restitution}, ${4:float friction}, ${5:float density}); + $0 +snippet llSetPos + llSetPos(${1:vector pos}); + $0 +snippet llSetPrimitiveParams + llSetPrimitiveParams(${1:list rules}); + $0 +snippet llSetPrimMediaParams + llSetPrimMediaParams(${1:integer face}, ${2:list params}); + $0 +snippet llSetRegionPos + llSetRegionPos(${1:vector position}) +snippet llSetRemoteScriptAccessPin + llSetRemoteScriptAccessPin(${1:integer pin}); + $0 +snippet llSetRot + llSetRot(${1:rotation rot}); + $0 +snippet llSetScale + llSetScale(${1:vector size}); + $0 +snippet llSetScriptState + llSetScriptState(${1:string name}, ${2:integer run}); + $0 +snippet llSetSitText + llSetSitText(${1:string text}); + $0 +snippet llSetSoundQueueing + llSetSoundQueueing(${1:integer queue}); + $0 +snippet llSetSoundRadius + llSetSoundRadius(${1:float radius}); + $0 +snippet llSetStatus + llSetStatus(${1:integer status}, ${2:integer value}); + $0 +snippet llSetText + llSetText(${1:string text}, ${2:vector color}, ${3:float alpha}); + $0 +snippet llSetTexture + llSetTexture(${1:string texture}, ${2:integer face}); + $0 +snippet llSetTextureAnim + llSetTextureAnim(${1:integer mode}, ${2:integer face}, ${3:integer sizex}, ${4:integer sizey}, ${5:float start}, ${6:float length}, ${7:float rate}); + $0 +snippet llSetTimerEvent + llSetTimerEvent(${1:float sec}); + $0 +snippet llSetTorque + llSetTorque(${1:vector torque}, ${2:integer local}); + $0 +snippet llSetTouchText + llSetTouchText(${1:string text}); + $0 +snippet llSetVehicleFlags + llSetVehicleFlags(${1:integer flags}); + $0 +snippet llSetVehicleFloatParam + llSetVehicleFloatParam(${1:integer param}, ${2:float value}); + $0 +snippet llSetVehicleRotationParam + llSetVehicleRotationParam(${1:integer param}, ${2:rotation rot}); + $0 +snippet llSetVehicleType + llSetVehicleType(${1:integer type}); + $0 +snippet llSetVehicleVectorParam + llSetVehicleVectorParam(${1:integer param}, ${2:vector vec}); + $0 +snippet llSetVelocity + llSetVelocity(${1:vector force}, ${2:integer local}); + $0 +snippet llSHA1String + llSHA1String(${1:string src}) +snippet llShout + llShout(${1:integer channel}, ${2:string msg}); + $0 +snippet llSin + llSin(${1:float theta}) +snippet llSitTarget + llSitTarget(${1:vector offset}, ${2:rotation rot}); + $0 +snippet llSleep + llSleep(${1:float sec}); + $0 +snippet llSqrt + llSqrt(${1:float val}) +snippet llStartAnimation + llStartAnimation(${1:string anim}); + $0 +snippet llStopAnimation + llStopAnimation(${1:string anim}); + $0 +snippet llStopHover + llStopHover(); + $0 +snippet llStopLookAt + llStopLookAt(); + $0 +snippet llStopMoveToTarget + llStopMoveToTarget(); + $0 +snippet llStopSound + llStopSound(); + $0 +snippet llStringLength + llStringLength(${1:string str}) +snippet llStringToBase64 + llStringToBase64(${1:string str}) +snippet llStringTrim + llStringTrim(${1:string src}, ${2:integer type}) +snippet llSubStringIndex + llSubStringIndex(${1:string source}, ${2:string pattern}) +snippet llTakeControls + llTakeControls(${1:integer controls}, ${2:integer accept}, ${3:integer pass_on}); + $0 +snippet llTan + llTan(${1:float theta}) +snippet llTarget + llTarget(${1:vector position}, ${2:float range}) +snippet llTargetOmega + llTargetOmega(${1:vector axis}, ${2:float spinrate}, ${3:float gain}); + $0 +snippet llTargetRemove + llTargetRemove(${1:integer handle}); + $0 +snippet llTeleportAgent + llTeleportAgent(${1:key agent}, ${2:string landmark}, ${3:vector position}, ${4:vector look_at}); + $0 +snippet llTeleportAgentGlobalCoords + llTeleportAgentGlobalCoords(${1:key agent}, ${2:vector global_coordinates}, ${3:vector region_coordinates}, ${4:vector look_at}); + $0 +snippet llTeleportAgentHome + llTeleportAgentHome(${1:key agent}); + $0 +snippet llTextBox + llTextBox(${1:key agent}, ${2:string message}, ${3:integer channel}); + $0 +snippet llToLower + llToLower(${1:string src}) +snippet llToUpper + llToUpper(${1:string src}) +snippet llTransferLindenDollars + llTransferLindenDollars(${1:key destination}, ${2:integer amount}) +snippet llTriggerSound + llTriggerSound(${1:string sound}, ${2:float volume}); + $0 +snippet llTriggerSoundLimited + llTriggerSoundLimited(${1:string sound}, ${2:float volume}, ${3:vector top_north_east}, ${4:vector bottom_south_west}); + $0 +snippet llUnescapeURL + llUnescapeURL(${1:string url}) +snippet llUnSit + llUnSit(${1:key id}); + $0 +snippet llUpdateCharacter + llUpdateCharacter(${1:list options}) +snippet llUpdateKeyValue + llUpdateKeyValue(${1:string k}, ${2:string v}, ${3:integer checked}, ${4:string ov}) +snippet llVecDist + llVecDist(${1:vector vec_a}, ${2:vector vec_b}) +snippet llVecMag + llVecMag(${1:vector vec}) +snippet llVecNorm + llVecNorm(${1:vector vec}) +snippet llVolumeDetect + llVolumeDetect(${1:integer detect}); + $0 +snippet llWanderWithin + llWanderWithin(${1:vector origin}, ${2:vector dist}, ${3:list options}); + $0 +snippet llWater + llWater(${1:vector offset}); + $0 +snippet llWhisper + llWhisper(${1:integer channel}, ${2:string msg}); + $0 +snippet llWind + llWind(${1:vector offset}); + $0 +snippet llXorBase64 + llXorBase64(${1:string str1}, ${2:string str2}) +snippet money + money(${1:key id}, ${2:integer amount}) + { + $0 + } +snippet object_rez + object_rez(${1:key id}) + { + $0 + } +snippet on_rez + on_rez(${1:integer start_param}) + { + $0 + } +snippet path_update + path_update(${1:integer type}, ${2:list reserved}) + { + $0 + } +snippet remote_data + remote_data(${1:integer event_type}, ${2:key channel}, ${3:key message_id}, ${4:string sender}, ${5:integer idata}, ${6:string sdata}) + { + $0 + } +snippet run_time_permissions + run_time_permissions(${1:integer perm}) + { + $0 + } +snippet sensor + sensor(${1:integer index}) + { + $0 + } +snippet state + state ${1:name} +snippet touch + touch(${1:integer index}) + { + $0 + } +snippet touch_end + touch_end(${1:integer index}) + { + $0 + } +snippet touch_start + touch_start(${1:integer index}) + { + $0 + } +snippet transaction_result + transaction_result(${1:key id}, ${2:integer success}, ${3:string data}) + { + $0 + } +snippet while + while (${1:condition}) + { + $0 + } diff --git a/plugins/node_modules/ace/lib/ace/snippets/lua.js b/plugins/node_modules/ace/lib/ace/snippets/lua.js new file mode 100644 index 00000000..0ab6fdcd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/lua.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./lua.snippets"); +exports.scope = "lua"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/lua.snippets b/plugins/node_modules/ace/lib/ace/snippets/lua.snippets new file mode 100644 index 00000000..34ae25eb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/lua.snippets @@ -0,0 +1,21 @@ +snippet #! + #!/usr/bin/env lua + $1 +snippet local + local ${1:x} = ${2:1} +snippet fun + function ${1:fname}(${2:...}) + ${3:-- body} + end +snippet for + for ${1:i}=${2:1},${3:10} do + ${4:print(i)} + end +snippet forp + for ${1:i},${2:v} in pairs(${3:table_name}) do + ${4:-- body} + end +snippet fori + for ${1:i},${2:v} in ipairs(${3:table_name}) do + ${4:-- body} + end diff --git a/plugins/node_modules/ace/lib/ace/snippets/luapage.js b/plugins/node_modules/ace/lib/ace/snippets/luapage.js new file mode 100644 index 00000000..86b22842 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/luapage.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./luapage.snippets"); +exports.scope = "luapage"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/luapage.snippets b/plugins/node_modules/ace/lib/ace/snippets/luapage.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/lucene.js b/plugins/node_modules/ace/lib/ace/snippets/lucene.js new file mode 100644 index 00000000..01edb07d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/lucene.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./lucene.snippets"); +exports.scope = "lucene"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/lucene.snippets b/plugins/node_modules/ace/lib/ace/snippets/lucene.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/makefile.js b/plugins/node_modules/ace/lib/ace/snippets/makefile.js new file mode 100644 index 00000000..0ec05ac0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/makefile.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./makefile.snippets"); +exports.scope = "makefile"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/makefile.snippets b/plugins/node_modules/ace/lib/ace/snippets/makefile.snippets new file mode 100644 index 00000000..43648136 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/makefile.snippets @@ -0,0 +1,4 @@ +snippet ifeq + ifeq (${1:cond0},${2:cond1}) + ${3:code} + endif diff --git a/plugins/node_modules/ace/lib/ace/snippets/mako.snippets b/plugins/node_modules/ace/lib/ace/snippets/mako.snippets new file mode 100644 index 00000000..2a0aef9c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/mako.snippets @@ -0,0 +1,54 @@ +snippet def + <%def name="${1:name}"> + ${2:} + </%def> +snippet call + <%call expr="${1:name}"> + ${2:} + </%call> +snippet doc + <%doc> + ${1:} + </%doc> +snippet text + <%text> + ${1:} + </%text> +snippet for + % for ${1:i} in ${2:iter}: + ${3:} + % endfor +snippet if if + % if ${1:condition}: + ${2:} + % endif +snippet if if/else + % if ${1:condition}: + ${2:} + % else: + ${3:} + % endif +snippet try + % try: + ${1:} + % except${2:}: + ${3:pass} + % endtry +snippet wh + % while ${1:}: + ${2:} + % endwhile +snippet $ + ${ ${1:} } +snippet <% + <% ${1:} %> +snippet <!% + <!% ${1:} %> +snippet inherit + <%inherit file="${1:filename}" /> +snippet include + <%include file="${1:filename}" /> +snippet namespace + <%namespace file="${1:name}" /> +snippet page + <%page args="${1:}" /> diff --git a/plugins/node_modules/ace/lib/ace/snippets/markdown.js b/plugins/node_modules/ace/lib/ace/snippets/markdown.js new file mode 100644 index 00000000..3940bc90 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/markdown.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./markdown.snippets"); +exports.scope = "markdown"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/markdown.snippets b/plugins/node_modules/ace/lib/ace/snippets/markdown.snippets new file mode 100644 index 00000000..a5110fc9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/markdown.snippets @@ -0,0 +1,88 @@ +# Markdown + +# Includes octopress (http://octopress.org/) snippets + +snippet [ + [${1:text}](http://${2:address} "${3:title}") +snippet [* + [${1:link}](${2:`@*`} "${3:title}")${4} + +snippet [: + [${1:id}]: http://${2:url} "${3:title}" +snippet [:* + [${1:id}]: ${2:`@*`} "${3:title}" + +snippet ![ + ![${1:alttext}](${2:/images/image.jpg} "${3:title}") +snippet ![* + ![${1:alt}](${2:`@*`} "${3:title}")${4} + +snippet ![: + ![${1:id}]: ${2:url} "${3:title}" +snippet ![:* + ![${1:id}]: ${2:`@*`} "${3:title}" + +snippet === +regex /^/=+/=*// + ${PREV_LINE/./=/g} + + ${0} +snippet --- +regex /^/-+/-*// + ${PREV_LINE/./-/g} + + ${0} +snippet blockquote + {% blockquote %} + ${1:quote} + {% endblockquote %} + +snippet blockquote-author + {% blockquote ${1:author}, ${2:title} %} + ${3:quote} + {% endblockquote %} + +snippet blockquote-link + {% blockquote ${1:author} ${2:URL} ${3:link_text} %} + ${4:quote} + {% endblockquote %} + +snippet bt-codeblock-short + ``` + ${1:code_snippet} + ``` + +snippet bt-codeblock-full + ``` ${1:language} ${2:title} ${3:URL} ${4:link_text} + ${5:code_snippet} + ``` + +snippet codeblock-short + {% codeblock %} + ${1:code_snippet} + {% endcodeblock %} + +snippet codeblock-full + {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %} + ${5:code_snippet} + {% endcodeblock %} + +snippet gist-full + {% gist ${1:gist_id} ${2:filename} %} + +snippet gist-short + {% gist ${1:gist_id} %} + +snippet img + {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %} + +snippet youtube + {% youtube ${1:video_id} %} + +# The quote should appear only once in the text. It is inherently part of it. +# See http://octopress.org/docs/plugins/pullquote/ for more info. + +snippet pullquote + {% pullquote %} + ${1:text} {" ${2:quote} "} ${3:text} + {% endpullquote %} diff --git a/plugins/node_modules/ace/lib/ace/snippets/mask.js b/plugins/node_modules/ace/lib/ace/snippets/mask.js new file mode 100644 index 00000000..7fbca678 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/mask.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./mask.snippets"); +exports.scope = "mask"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/mask.snippets b/plugins/node_modules/ace/lib/ace/snippets/mask.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/matlab.js b/plugins/node_modules/ace/lib/ace/snippets/matlab.js new file mode 100644 index 00000000..698366ba --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/matlab.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./matlab.snippets"); +exports.scope = "matlab"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/matlab.snippets b/plugins/node_modules/ace/lib/ace/snippets/matlab.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/maze.js b/plugins/node_modules/ace/lib/ace/snippets/maze.js new file mode 100644 index 00000000..c2b2c5fd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/maze.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./maze.snippets"); +exports.scope = "maze"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/maze.snippets b/plugins/node_modules/ace/lib/ace/snippets/maze.snippets new file mode 100644 index 00000000..76e52884 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/maze.snippets @@ -0,0 +1,9 @@ +snippet > +description assignment +scope maze + -> ${1}= ${2} + +snippet > +description if +scope maze + -> IF ${2:**} THEN %${3:L} ELSE %${4:R} diff --git a/plugins/node_modules/ace/lib/ace/snippets/mel.js b/plugins/node_modules/ace/lib/ace/snippets/mel.js new file mode 100644 index 00000000..090d79b3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/mel.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./mel.snippets"); +exports.scope = "mel"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/mel.snippets b/plugins/node_modules/ace/lib/ace/snippets/mel.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/mushcode.js b/plugins/node_modules/ace/lib/ace/snippets/mushcode.js new file mode 100644 index 00000000..8b0d2dcb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/mushcode.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./mushcode.snippets"); +exports.scope = "mushcode"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/mushcode.snippets b/plugins/node_modules/ace/lib/ace/snippets/mushcode.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/mushcode_high_rules.js b/plugins/node_modules/ace/lib/ace/snippets/mushcode_high_rules.js new file mode 100644 index 00000000..25d42827 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/mushcode_high_rules.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./mushcode_high_rules.snippets"); +exports.scope = "mushcode_high_rules"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/mushcode_high_rules.snippets b/plugins/node_modules/ace/lib/ace/snippets/mushcode_high_rules.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/mysql.js b/plugins/node_modules/ace/lib/ace/snippets/mysql.js new file mode 100644 index 00000000..e5462390 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/mysql.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./mysql.snippets"); +exports.scope = "mysql"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/mysql.snippets b/plugins/node_modules/ace/lib/ace/snippets/mysql.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/nix.js b/plugins/node_modules/ace/lib/ace/snippets/nix.js new file mode 100644 index 00000000..583abf85 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/nix.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./nix.snippets"); +exports.scope = "nix"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/nix.snippets b/plugins/node_modules/ace/lib/ace/snippets/nix.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/nsis.js b/plugins/node_modules/ace/lib/ace/snippets/nsis.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/nsis.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/nsis.snippets b/plugins/node_modules/ace/lib/ace/snippets/nsis.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/objc.snippets b/plugins/node_modules/ace/lib/ace/snippets/objc.snippets new file mode 100644 index 00000000..5517b062 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/objc.snippets @@ -0,0 +1,247 @@ +# #import <...> +snippet Imp + #import <${1:Cocoa/Cocoa.h}>${2} +# #import "..." +snippet imp + #import "${1:`Filename()`.h}"${2} +# @selector(...) +snippet sel + @selector(${1:method}:)${3} +# @"..." string +snippet s + @"${1}"${2} +# Object +snippet o + ${1:NSObject} *${2:foo} = [${3:$1 alloc}]${4};${5} +# NSLog(...) +snippet log + NSLog(@"${1:%@}"${2});${3} +# Class +snippet objc + @interface ${1:`Filename('', 'someClass')`} : ${2:NSObject} + { + } + @end + + @implementation $1 + ${3} + @end +# Class Interface +snippet int + @interface ${1:`Filename('', 'someClass')`} : ${2:NSObject} + {${3} + } + ${4} + @end +snippet @interface + @interface ${1:`Filename('', 'someClass')`} : ${2:NSObject} + {${3} + } + ${4} + @end +# Class Implementation +snippet impl + @implementation ${1:`Filename('', 'someClass')`} + ${2} + @end +snippet @implementation + @implementation ${1:`Filename('', 'someClass')`} + ${2} + @end +# Protocol +snippet pro + @protocol ${1:`Filename('$1Delegate', 'MyProtocol')`} ${2:<NSObject>} + ${3} + @end +snippet @protocol + @protocol ${1:`Filename('$1Delegate', 'MyProtocol')`} ${2:<NSObject>} + ${3} + @end +# init Definition +snippet init + - (id)init + { + if (self = [super init]) { + ${1} + } + return self; + } +# dealloc Definition +snippet dealloc + - (void) dealloc + { + ${1:deallocations} + [super dealloc]; + } +snippet su + [super ${1:init}]${2} +snippet ibo + IBOutlet ${1:NSSomeClass} *${2:$1};${3} +# Category +snippet cat + @interface ${1:NSObject} (${2:MyCategory}) + @end + + @implementation $1 ($2) + ${3} + @end +# Category Interface +snippet cath + @interface ${1:`Filename('$1', 'NSObject')`} (${2:MyCategory}) + ${3} + @end +# Method +snippet m + - (${1:id})${2:method} + { + ${3} + } +# Method declaration +snippet md + - (${1:id})${2:method};${3} +# IBAction declaration +snippet ibad + - (IBAction)${1:method}:(${2:id})sender;${3} +# IBAction method +snippet iba + - (IBAction)${1:method}:(${2:id})sender + { + ${3} + } +# awakeFromNib method +snippet wake + - (void)awakeFromNib + { + ${1} + } +# Class Method +snippet M + + (${1:id})${2:method} + { + ${3:return nil;} + } +# Sub-method (Call super) +snippet sm + - (${1:id})${2:method} + { + [super $2];${3} + return self; + } +# Accessor Methods For: +# Object +snippet objacc + - (${1:id})${2:thing} + { + return $2; + } + + - (void)set$2:($1)${3:new$2} + { + [$3 retain]; + [$2 release]; + $2 = $3; + }${4} +# for (object in array) +snippet forin + for (${1:Class} *${2:some$1} in ${3:array}) { + ${4} + } +snippet fore + for (${1:object} in ${2:array}) { + ${3:statements} + } +snippet forarray + unsigned int ${1:object}Count = [${2:array} count]; + + for (unsigned int index = 0; index < $1Count; index++) { + ${3:id} $1 = [$2 $1AtIndex:index]; + ${4} + } +snippet fora + unsigned int ${1:object}Count = [${2:array} count]; + + for (unsigned int index = 0; index < $1Count; index++) { + ${3:id} $1 = [$2 $1AtIndex:index]; + ${4} + } +# Try / Catch Block +snippet @try + @try { + ${1:statements} + } + @catch (NSException * e) { + ${2:handler} + } + @finally { + ${3:statements} + } +snippet @catch + @catch (${1:exception}) { + ${2:handler} + } +snippet @finally + @finally { + ${1:statements} + } +# IBOutlet +# @property (Objective-C 2.0) +snippet prop + @property (${1:retain}) ${2:NSSomeClass} ${3:*$2};${4} +# @synthesize (Objective-C 2.0) +snippet syn + @synthesize ${1:property};${2} +# [[ alloc] init] +snippet alloc + [[${1:foo} alloc] init${2}];${3} +snippet a + [[${1:foo} alloc] init${2}];${3} +# retain +snippet ret + [${1:foo} retain];${2} +# release +snippet rel + [${1:foo} release]; +# autorelease +snippet arel + [${1:foo} autorelease]; +# autorelease pool +snippet pool + NSAutoreleasePool *${1:pool} = [[NSAutoreleasePool alloc] init]; + ${2:/* code */} + [$1 drain]; +# Throw an exception +snippet except + NSException *${1:badness}; + $1 = [NSException exceptionWithName:@"${2:$1Name}" + reason:@"${3}" + userInfo:nil]; + [$1 raise]; +snippet prag + #pragma mark ${1:-} +snippet cl + @class ${1:Foo};${2} +snippet color + [[NSColor ${1:blackColor}] set]; +# NSArray +snippet array + NSMutableArray *${1:array} = [NSMutable array];${2} +snippet nsa + NSArray ${1} +snippet nsma + NSMutableArray ${1} +snippet aa + NSArray * array;${1} +snippet ma + NSMutableArray * array;${1} +# NSDictionary +snippet dict + NSMutableDictionary *${1:dict} = [NSMutableDictionary dictionary];${2} +snippet nsd + NSDictionary ${1} +snippet nsmd + NSMutableDictionary ${1} +# NSString +snippet nss + NSString ${1} +snippet nsms + NSMutableString ${1} diff --git a/plugins/node_modules/ace/lib/ace/snippets/objectivec.js b/plugins/node_modules/ace/lib/ace/snippets/objectivec.js new file mode 100644 index 00000000..ed5d5fa8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/objectivec.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./objectivec.snippets"); +exports.scope = "objectivec"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/objectivec.snippets b/plugins/node_modules/ace/lib/ace/snippets/objectivec.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/ocaml.js b/plugins/node_modules/ace/lib/ace/snippets/ocaml.js new file mode 100644 index 00000000..a6e6842e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/ocaml.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./ocaml.snippets"); +exports.scope = "ocaml"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/ocaml.snippets b/plugins/node_modules/ace/lib/ace/snippets/ocaml.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/pascal.js b/plugins/node_modules/ace/lib/ace/snippets/pascal.js new file mode 100644 index 00000000..cd8f19fe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/pascal.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./pascal.snippets"); +exports.scope = "pascal"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/pascal.snippets b/plugins/node_modules/ace/lib/ace/snippets/pascal.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/perl.js b/plugins/node_modules/ace/lib/ace/snippets/perl.js new file mode 100644 index 00000000..9b1fbe8d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/perl.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./perl.snippets"); +exports.scope = "perl"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/perl.snippets b/plugins/node_modules/ace/lib/ace/snippets/perl.snippets new file mode 100644 index 00000000..9cebedea --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/perl.snippets @@ -0,0 +1,347 @@ +# #!/usr/bin/perl +snippet #! + #!/usr/bin/env perl + +# Hash Pointer +snippet . + => +# Function +snippet sub + sub ${1:function_name} { + ${2:#body ...} + } +# Conditional +snippet if + if (${1}) { + ${2:# body...} + } +# Conditional if..else +snippet ife + if (${1}) { + ${2:# body...} + } + else { + ${3:# else...} + } +# Conditional if..elsif..else +snippet ifee + if (${1}) { + ${2:# body...} + } + elsif (${3}) { + ${4:# elsif...} + } + else { + ${5:# else...} + } +# Conditional One-line +snippet xif + ${1:expression} if ${2:condition};${3} +# Unless conditional +snippet unless + unless (${1}) { + ${2:# body...} + } +# Unless conditional One-line +snippet xunless + ${1:expression} unless ${2:condition};${3} +# Try/Except +snippet eval + local $@; + eval { + ${1:# do something risky...} + }; + if (my $e = $@) { + ${2:# handle failure...} + } +# While Loop +snippet wh + while (${1}) { + ${2:# body...} + } +# While Loop One-line +snippet xwh + ${1:expression} while ${2:condition};${3} +# C-style For Loop +snippet cfor + for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) { + ${4:# body...} + } +# For loop one-line +snippet xfor + ${1:expression} for @${2:array};${3} +# Foreach Loop +snippet for + foreach my $${1:x} (@${2:array}) { + ${3:# body...} + } +# Foreach Loop One-line +snippet fore + ${1:expression} foreach @${2:array};${3} +# Package +snippet package + package ${1:`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`}; + + ${2} + + 1; + + __END__ +# Package syntax perl >= 5.14 +snippet packagev514 + package ${1:`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`} ${2:0.99}; + + ${3} + + 1; + + __END__ +#moose +snippet moose + use Moose; + use namespace::autoclean; + ${1:#}BEGIN {extends '${2:ParentClass}'}; + + ${3} +# parent +snippet parent + use parent qw(${1:Parent Class}); +# Read File +snippet slurp + my $${1:var} = do { local $/; open my $file, '<', "${2:file}"; <$file> }; + ${3} +# strict warnings +snippet strwar + use strict; + use warnings; +# older versioning with perlcritic bypass +snippet vers + ## no critic + our $VERSION = '${1:version}'; + eval $VERSION; + ## use critic +# new 'switch' like feature +snippet switch + use feature 'switch'; + +# Anonymous subroutine +snippet asub + sub { + ${1:# body } + } + + + +# Begin block +snippet begin + BEGIN { + ${1:# begin body} + } + +# call package function with some parameter +snippet pkgmv + __PACKAGE__->${1:package_method}(${2:var}) + +# call package function without a parameter +snippet pkgm + __PACKAGE__->${1:package_method}() + +# call package "get_" function without a parameter +snippet pkget + __PACKAGE__->get_${1:package_method}() + +# call package function with a parameter +snippet pkgetv + __PACKAGE__->get_${1:package_method}(${2:var}) + +# complex regex +snippet qrx + qr/ + ${1:regex} + /xms + +#simpler regex +snippet qr/ + qr/${1:regex}/x + +#given +snippet given + given ($${1:var}) { + ${2:# cases} + ${3:# default} + } + +# switch-like case +snippet when + when (${1:case}) { + ${2:# body} + } + +# hash slice +snippet hslice + @{ ${1:hash} }{ ${2:array} } + + +# map +snippet map + map { ${2: body } } ${1: @array } ; + + + +# Pod stub +snippet ppod + =head1 NAME + + ${1:ClassName} - ${2:ShortDesc} + + =head1 SYNOPSIS + + use $1; + + ${3:# synopsis...} + + =head1 DESCRIPTION + + ${4:# longer description...} + + + =head1 INTERFACE + + + =head1 DEPENDENCIES + + + =head1 SEE ALSO + + +# Heading for a subroutine stub +snippet psub + =head2 ${1:MethodName} + + ${2:Summary....} + +# Heading for inline subroutine pod +snippet psubi + =head2 ${1:MethodName} + + ${2:Summary...} + + + =cut +# inline documented subroutine +snippet subpod + =head2 $1 + + Summary of $1 + + =cut + + sub ${1:subroutine_name} { + ${2:# body...} + } +# Subroutine signature +snippet parg + =over 2 + + =item + Arguments + + + =over 3 + + =item + C<${1:DataStructure}> + + ${2:Sample} + + + =back + + + =item + Return + + =over 3 + + + =item + C<${3:...return data}> + + + =back + + + =back + + + +# Moose has +snippet has + has ${1:attribute} => ( + is => '${2:ro|rw}', + isa => '${3:Str|Int|HashRef|ArrayRef|etc}', + default => sub { + ${4:defaultvalue} + }, + ${5:# other attributes} + ); + + +# override +snippet override + override ${1:attribute} => sub { + ${2:# my $self = shift;}; + ${3:# my ($self, $args) = @_;}; + }; + + +# use test classes +snippet tuse + use Test::More; + use Test::Deep; # (); # uncomment to stop prototype errors + use Test::Exception; + +# local test lib +snippet tlib + use lib qw{ ./t/lib }; + +#test methods +snippet tmeths + $ENV{TEST_METHOD} = '${1:regex}'; + +# runtestclass +snippet trunner + use ${1:test_class}; + $1->runtests(); + +# Test::Class-style test +snippet tsub + sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) { + my $self = shift; + ${4:# body} + + } + +# Test::Routine-style test +snippet trsub + test ${1:test_name} => { description => '${2:Description of test.}'} => sub { + my ($self) = @_; + ${3:# test code} + }; + +#prep test method +snippet tprep + sub prep${1:number}_${2:test_case} :Test(startup) { + my $self = shift; + ${4:# body} + } + +# cause failures to print stack trace +snippet debug_trace + use Carp; # 'verbose'; + # cloak "die" + # warn "warning" + $SIG{'__DIE__'} = sub { + require Carp; Carp::confess + }; + diff --git a/plugins/node_modules/ace/lib/ace/snippets/pgsql.js b/plugins/node_modules/ace/lib/ace/snippets/pgsql.js new file mode 100644 index 00000000..9bbd9012 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/pgsql.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./pgsql.snippets"); +exports.scope = "pgsql"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/pgsql.snippets b/plugins/node_modules/ace/lib/ace/snippets/pgsql.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/php.js b/plugins/node_modules/ace/lib/ace/snippets/php.js new file mode 100644 index 00000000..b8f8ce0e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/php.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./php.snippets"); +exports.scope = "php"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/php.snippets b/plugins/node_modules/ace/lib/ace/snippets/php.snippets new file mode 100644 index 00000000..8d11a281 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/php.snippets @@ -0,0 +1,377 @@ +snippet <? + <?php + + ${1} +snippet ec + echo ${1}; +snippet <?e + <?php echo ${1} ?> +# this one is for php5.4 +snippet <?= + <?=${1}?> +snippet ns + namespace ${1:Foo\Bar\Baz}; + ${2} +snippet use + use ${1:Foo\Bar\Baz}; + ${2} +snippet c + ${1:abstract }class ${2:$FILENAME} + { + ${3} + } +snippet i + interface ${1:$FILENAME} + { + ${2} + } +snippet t. + $this->${1} +snippet f + function ${1:foo}(${2:array }${3:$bar}) + { + ${4} + } +# method +snippet m + ${1:abstract }${2:protected}${3: static} function ${4:foo}(${5:array }${6:$bar}) + { + ${7} + } +# setter method +snippet sm + /** + * Sets the value of ${1:foo} + * + * @param ${2:$1} $$1 ${3:description} + * + * @return ${4:$FILENAME} + */ + ${5:public} function set${6:$2}(${7:$2 }$$1) + { + $this->${8:$1} = $$1; + return $this; + }${9} +# getter method +snippet gm + /** + * Gets the value of ${1:foo} + * + * @return ${2:$1} + */ + ${3:public} function get${4:$2}() + { + return $this->${5:$1}; + }${6} +#setter +snippet $s + ${1:$foo}->set${2:Bar}(${3}); +#getter +snippet $g + ${1:$foo}->get${2:Bar}(); + +# Tertiary conditional +snippet =?: + $${1:foo} = ${2:true} ? ${3:a} : ${4}; +snippet ?: + ${1:true} ? ${2:a} : ${3} + +snippet C + $_COOKIE['${1:variable}']${2} +snippet E + $_ENV['${1:variable}']${2} +snippet F + $_FILES['${1:variable}']${2} +snippet G + $_GET['${1:variable}']${2} +snippet P + $_POST['${1:variable}']${2} +snippet R + $_REQUEST['${1:variable}']${2} +snippet S + $_SERVER['${1:variable}']${2} +snippet SS + $_SESSION['${1:variable}']${2} + +# the following are old ones +snippet inc + include '${1:file}';${2} +snippet inc1 + include_once '${1:file}';${2} +snippet req + require '${1:file}';${2} +snippet req1 + require_once '${1:file}';${2} +# Start Docblock +snippet /* + /** + * ${1} + */ +# Class - post doc +snippet doc_cp + /** + * ${1:undocumented class} + * + * @package ${2:default} + * @subpackage ${3:default} + * @author ${4:`g:snips_author`} + */${5} +# Class Variable - post doc +snippet doc_vp + /** + * ${1:undocumented class variable} + * + * @var ${2:string} + */${3} +# Class Variable +snippet doc_v + /** + * ${3:undocumented class variable} + * + * @var ${4:string} + */ + ${1:var} $${2};${5} +# Class +snippet doc_c + /** + * ${3:undocumented class} + * + * @package ${4:default} + * @subpackage ${5:default} + * @author ${6:`g:snips_author`} + */ + ${1:}class ${2:} + { + ${7} + } // END $1class $2 +# Constant Definition - post doc +snippet doc_dp + /** + * ${1:undocumented constant} + */${2} +# Constant Definition +snippet doc_d + /** + * ${3:undocumented constant} + */ + define(${1}, ${2});${4} +# Function - post doc +snippet doc_fp + /** + * ${1:undocumented function} + * + * @return ${2:void} + * @author ${3:`g:snips_author`} + */${4} +# Function signature +snippet doc_s + /** + * ${4:undocumented function} + * + * @return ${5:void} + * @author ${6:`g:snips_author`} + */ + ${1}function ${2}(${3});${7} +# Function +snippet doc_f + /** + * ${4:undocumented function} + * + * @return ${5:void} + * @author ${6:`g:snips_author`} + */ + ${1}function ${2}(${3}) + {${7} + } +# Header +snippet doc_h + /** + * ${1} + * + * @author ${2:`g:snips_author`} + * @version ${3:$Id$} + * @copyright ${4:$2}, `strftime('%d %B, %Y')` + * @package ${5:default} + */ + +# Interface +snippet interface + /** + * ${2:undocumented class} + * + * @package ${3:default} + * @author ${4:`g:snips_author`} + */ + interface ${1:$FILENAME} + { + ${5} + } +# class ... +snippet class + /** + * ${1} + */ + class ${2:$FILENAME} + { + ${3} + /** + * ${4} + */ + ${5:public} function ${6:__construct}(${7:argument}) + { + ${8:// code...} + } + } +# define(...) +snippet def + define('${1}'${2});${3} +# defined(...) +snippet def? + ${1}defined('${2}')${3} +snippet wh + while (${1:/* condition */}) { + ${2:// code...} + } +# do ... while +snippet do + do { + ${2:// code... } + } while (${1:/* condition */}); +snippet if + if (${1:/* condition */}) { + ${2:// code...} + } +snippet ifil + <?php if (${1:/* condition */}): ?> + ${2:<!-- code... -->} + <?php endif; ?> +snippet ife + if (${1:/* condition */}) { + ${2:// code...} + } else { + ${3:// code...} + } + ${4} +snippet ifeil + <?php if (${1:/* condition */}): ?> + ${2:<!-- html... -->} + <?php else: ?> + ${3:<!-- html... -->} + <?php endif; ?> + ${4} +snippet else + else { + ${1:// code...} + } +snippet elseif + elseif (${1:/* condition */}) { + ${2:// code...} + } +snippet switch + switch ($${1:variable}) { + case '${2:value}': + ${3:// code...} + break; + ${5} + default: + ${4:// code...} + break; + } +snippet case + case '${1:value}': + ${2:// code...} + break;${3} +snippet for + for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) { + ${4: // code...} + } +snippet foreach + foreach ($${1:variable} as $${2:value}) { + ${3:// code...} + } +snippet foreachil + <?php foreach ($${1:variable} as $${2:value}): ?> + ${3:<!-- html... -->} + <?php endforeach; ?> +snippet foreachk + foreach ($${1:variable} as $${2:key} => $${3:value}) { + ${4:// code...} + } +snippet foreachkil + <?php foreach ($${1:variable} as $${2:key} => $${3:value}): ?> + ${4:<!-- html... -->} + <?php endforeach; ?> +# $... = array (...) +snippet array + $${1:arrayName} = array('${2}' => ${3});${4} +snippet try + try { + ${2} + } catch (${1:Exception} $e) { + } +# lambda with closure +snippet lambda + ${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) { + ${4} + }; +# pre_dump(); +snippet pd + echo '<pre>'; var_dump(${1}); echo '</pre>'; +# pre_dump(); die(); +snippet pdd + echo '<pre>'; var_dump(${1}); echo '</pre>'; die(${2:}); +snippet vd + var_dump(${1}); +snippet vdd + var_dump(${1}); die(${2:}); +snippet http_redirect + header ("HTTP/1.1 301 Moved Permanently"); + header ("Location: ".URL); + exit(); +# Getters & Setters +snippet gs + /** + * Gets the value of ${1:foo} + * + * @return ${2:$1} + */ + public function get${3:$2}() + { + return $this->${4:$1}; + } + + /** + * Sets the value of $1 + * + * @param $2 $$1 ${5:description} + * + * @return ${6:$FILENAME} + */ + public function set$3(${7:$2 }$$1) + { + $this->$4 = $$1; + return $this; + }${8} +# anotation, get, and set, useful for doctrine +snippet ags + /** + * ${1:description} + * + * @${7} + */ + ${2:protected} $${3:foo}; + + public function get${4:$3}() + { + return $this->$3; + } + + public function set$4(${5:$4 }$${6:$3}) + { + $this->$3 = $$6; + return $this; + } +snippet rett + return true; +snippet retf + return false; diff --git a/plugins/node_modules/ace/lib/ace/snippets/pig.js b/plugins/node_modules/ace/lib/ace/snippets/pig.js new file mode 100644 index 00000000..07d0d777 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/pig.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./pig.snippets"); +exports.scope = "pig"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/pig.snippets b/plugins/node_modules/ace/lib/ace/snippets/pig.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/plain_text.js b/plugins/node_modules/ace/lib/ace/snippets/plain_text.js new file mode 100644 index 00000000..4b4dad55 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/plain_text.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./plain_text.snippets"); +exports.scope = "plain_text"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/plain_text.snippets b/plugins/node_modules/ace/lib/ace/snippets/plain_text.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/powershell.js b/plugins/node_modules/ace/lib/ace/snippets/powershell.js new file mode 100644 index 00000000..4639a304 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/powershell.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./powershell.snippets"); +exports.scope = "powershell"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/powershell.snippets b/plugins/node_modules/ace/lib/ace/snippets/powershell.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/praat.js b/plugins/node_modules/ace/lib/ace/snippets/praat.js new file mode 100644 index 00000000..18afa87f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/praat.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./praat.snippets"); +exports.scope = "praat"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/praat.snippets b/plugins/node_modules/ace/lib/ace/snippets/praat.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/prolog.js b/plugins/node_modules/ace/lib/ace/snippets/prolog.js new file mode 100644 index 00000000..7c9d0fbc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/prolog.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./prolog.snippets"); +exports.scope = "prolog"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/prolog.snippets b/plugins/node_modules/ace/lib/ace/snippets/prolog.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/properties.js b/plugins/node_modules/ace/lib/ace/snippets/properties.js new file mode 100644 index 00000000..18bd3883 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/properties.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./properties.snippets"); +exports.scope = "properties"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/properties.snippets b/plugins/node_modules/ace/lib/ace/snippets/properties.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/protobuf.js b/plugins/node_modules/ace/lib/ace/snippets/protobuf.js new file mode 100644 index 00000000..24855545 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/protobuf.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = ""; +exports.scope = "protobuf"; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/snippets/protobuf.snippets b/plugins/node_modules/ace/lib/ace/snippets/protobuf.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/python.js b/plugins/node_modules/ace/lib/ace/snippets/python.js new file mode 100644 index 00000000..48ddba28 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/python.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./python.snippets"); +exports.scope = "python"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/python.snippets b/plugins/node_modules/ace/lib/ace/snippets/python.snippets new file mode 100644 index 00000000..347bbdeb --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/python.snippets @@ -0,0 +1,158 @@ +snippet #! + #!/usr/bin/env python +snippet imp + import ${1:module} +snippet from + from ${1:package} import ${2:module} +# Module Docstring +snippet docs + ''' + File: ${1:FILENAME:file_name} + Author: ${2:author} + Description: ${3} + ''' +snippet wh + while ${1:condition}: + ${2:# TODO: write code...} +# dowh - does the same as do...while in other languages +snippet dowh + while True: + ${1:# TODO: write code...} + if ${2:condition}: + break +snippet with + with ${1:expr} as ${2:var}: + ${3:# TODO: write code...} +# New Class +snippet cl + class ${1:ClassName}(${2:object}): + """${3:docstring for $1}""" + def __init__(self, ${4:arg}): + ${5:super($1, self).__init__()} + self.$4 = $4 + ${6} +# New Function +snippet def + def ${1:fname}(${2:`indent('.') ? 'self' : ''`}): + """${3:docstring for $1}""" + ${4:# TODO: write code...} +snippet deff + def ${1:fname}(${2:`indent('.') ? 'self' : ''`}): + ${3:# TODO: write code...} +# New Method +snippet defs + def ${1:mname}(self, ${2:arg}): + ${3:# TODO: write code...} +# New Property +snippet property + def ${1:foo}(): + doc = "${2:The $1 property.}" + def fget(self): + ${3:return self._$1} + def fset(self, value): + ${4:self._$1 = value} +# Ifs +snippet if + if ${1:condition}: + ${2:# TODO: write code...} +snippet el + else: + ${1:# TODO: write code...} +snippet ei + elif ${1:condition}: + ${2:# TODO: write code...} +# For +snippet for + for ${1:item} in ${2:items}: + ${3:# TODO: write code...} +# Encodes +snippet cutf8 + # -*- coding: utf-8 -*- +snippet clatin1 + # -*- coding: latin-1 -*- +snippet cascii + # -*- coding: ascii -*- +# Lambda +snippet ld + ${1:var} = lambda ${2:vars} : ${3:action} +snippet . + self. +snippet try Try/Except + try: + ${1:# TODO: write code...} + except ${2:Exception}, ${3:e}: + ${4:raise $3} +snippet try Try/Except/Else + try: + ${1:# TODO: write code...} + except ${2:Exception}, ${3:e}: + ${4:raise $3} + else: + ${5:# TODO: write code...} +snippet try Try/Except/Finally + try: + ${1:# TODO: write code...} + except ${2:Exception}, ${3:e}: + ${4:raise $3} + finally: + ${5:# TODO: write code...} +snippet try Try/Except/Else/Finally + try: + ${1:# TODO: write code...} + except ${2:Exception}, ${3:e}: + ${4:raise $3} + else: + ${5:# TODO: write code...} + finally: + ${6:# TODO: write code...} +# if __name__ == '__main__': +snippet ifmain + if __name__ == '__main__': + ${1:main()} +# __magic__ +snippet _ + __${1:init}__${2} +# python debugger (pdb) +snippet pdb + import pdb; pdb.set_trace() +# ipython debugger (ipdb) +snippet ipdb + import ipdb; ipdb.set_trace() +# ipython debugger (pdbbb) +snippet pdbbb + import pdbpp; pdbpp.set_trace() +snippet pprint + import pprint; pprint.pprint(${1})${2} +snippet " + """ + ${1:doc} + """ +# test function/method +snippet test + def test_${1:description}(${2:self}): + ${3:# TODO: write code...} +# test case +snippet testcase + class ${1:ExampleCase}(unittest.TestCase): + + def test_${2:description}(self): + ${3:# TODO: write code...} +snippet fut + from __future__ import ${1} +#getopt +snippet getopt + try: + # Short option syntax: "hv:" + # Long option syntax: "help" or "verbose=" + opts, args = getopt.getopt(sys.argv[1:], "${1:short_options}", [${2:long_options}]) + + except getopt.GetoptError, err: + # Print debug info + print str(err) + ${3:error_action} + + for option, argument in opts: + if option in ("-h", "--help"): + ${4} + elif option in ("-v", "--verbose"): + verbose = argument diff --git a/plugins/node_modules/ace/lib/ace/snippets/r.js b/plugins/node_modules/ace/lib/ace/snippets/r.js new file mode 100644 index 00000000..6b319194 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/r.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./r.snippets"); +exports.scope = "r"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/r.snippets b/plugins/node_modules/ace/lib/ace/snippets/r.snippets new file mode 100644 index 00000000..948542f5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/r.snippets @@ -0,0 +1,121 @@ +snippet #! + #!/usr/bin/env Rscript + +# includes +snippet lib + library(${1:package}) +snippet req + require(${1:package}) +snippet source + source('${1:file}') + +# conditionals +snippet if + if (${1:condition}) { + ${2:code} + } +snippet el + else { + ${1:code} + } +snippet ei + else if (${1:condition}) { + ${2:code} + } + +# functions +snippet fun + ${1:name} = function (${2:variables}) { + ${3:code} + } +snippet ret + return(${1:code}) + +# dataframes, lists, etc +snippet df + ${1:name}[${2:rows}, ${3:cols}] +snippet c + c(${1:items}) +snippet li + list(${1:items}) +snippet mat + matrix(${1:data}, nrow=${2:rows}, ncol=${3:cols}) + +# apply functions +snippet apply + apply(${1:array}, ${2:margin}, ${3:function}) +snippet lapply + lapply(${1:list}, ${2:function}) +snippet sapply + sapply(${1:list}, ${2:function}) +snippet vapply + vapply(${1:list}, ${2:function}, ${3:type}) +snippet mapply + mapply(${1:function}, ${2:...}) +snippet tapply + tapply(${1:vector}, ${2:index}, ${3:function}) +snippet rapply + rapply(${1:list}, ${2:function}) + +# plyr functions +snippet dd + ddply(${1:frame}, ${2:variables}, ${3:function}) +snippet dl + dlply(${1:frame}, ${2:variables}, ${3:function}) +snippet da + daply(${1:frame}, ${2:variables}, ${3:function}) +snippet d_ + d_ply(${1:frame}, ${2:variables}, ${3:function}) + +snippet ad + adply(${1:array}, ${2:margin}, ${3:function}) +snippet al + alply(${1:array}, ${2:margin}, ${3:function}) +snippet aa + aaply(${1:array}, ${2:margin}, ${3:function}) +snippet a_ + a_ply(${1:array}, ${2:margin}, ${3:function}) + +snippet ld + ldply(${1:list}, ${2:function}) +snippet ll + llply(${1:list}, ${2:function}) +snippet la + laply(${1:list}, ${2:function}) +snippet l_ + l_ply(${1:list}, ${2:function}) + +snippet md + mdply(${1:matrix}, ${2:function}) +snippet ml + mlply(${1:matrix}, ${2:function}) +snippet ma + maply(${1:matrix}, ${2:function}) +snippet m_ + m_ply(${1:matrix}, ${2:function}) + +# plot functions +snippet pl + plot(${1:x}, ${2:y}) +snippet ggp + ggplot(${1:data}, aes(${2:aesthetics})) +snippet img + ${1:(jpeg,bmp,png,tiff)}(filename="${2:filename}", width=${3}, height=${4}, unit="${5}") + ${6:plot} + dev.off() + +# statistical test functions +snippet fis + fisher.test(${1:x}, ${2:y}) +snippet chi + chisq.test(${1:x}, ${2:y}) +snippet tt + t.test(${1:x}, ${2:y}) +snippet wil + wilcox.test(${1:x}, ${2:y}) +snippet cor + cor.test(${1:x}, ${2:y}) +snippet fte + var.test(${1:x}, ${2:y}) +snippet kvt + kv.test(${1:x}, ${2:y}) diff --git a/plugins/node_modules/ace/lib/ace/snippets/razor.js b/plugins/node_modules/ace/lib/ace/snippets/razor.js new file mode 100644 index 00000000..bfee3230 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/razor.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./razor.snippets"); +exports.scope = "razor"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/razor.snippets b/plugins/node_modules/ace/lib/ace/snippets/razor.snippets new file mode 100644 index 00000000..f851b054 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/razor.snippets @@ -0,0 +1,4 @@ +snippet if +(${1} == ${2}) { + ${3} +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/snippets/rdoc.js b/plugins/node_modules/ace/lib/ace/snippets/rdoc.js new file mode 100644 index 00000000..0d9e6c95 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/rdoc.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./rdoc.snippets"); +exports.scope = "rdoc"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/rdoc.snippets b/plugins/node_modules/ace/lib/ace/snippets/rdoc.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/red.js b/plugins/node_modules/ace/lib/ace/snippets/red.js new file mode 100644 index 00000000..bc0c39c8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/red.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./red.snippets"); +exports.scope = "red"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/red.snippets b/plugins/node_modules/ace/lib/ace/snippets/red.snippets new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/red.snippets @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/snippets/rhtml.js b/plugins/node_modules/ace/lib/ace/snippets/rhtml.js new file mode 100644 index 00000000..96707f21 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/rhtml.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./rhtml.snippets"); +exports.scope = "rhtml"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/rhtml.snippets b/plugins/node_modules/ace/lib/ace/snippets/rhtml.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/rst.js b/plugins/node_modules/ace/lib/ace/snippets/rst.js new file mode 100644 index 00000000..3e4a67ea --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/rst.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./rst.snippets"); +exports.scope = "rst"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/rst.snippets b/plugins/node_modules/ace/lib/ace/snippets/rst.snippets new file mode 100644 index 00000000..97845de3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/rst.snippets @@ -0,0 +1,22 @@ +# rst + +snippet : + :${1:field name}: ${2:field body} +snippet * + *${1:Emphasis}* +snippet ** + **${1:Strong emphasis}** +snippet _ + \`${1:hyperlink-name}\`_ + .. _\`$1\`: ${2:link-block} +snippet = + ${1:Title} + =====${2:=} + ${3} +snippet - + ${1:Title} + -----${2:-} + ${3} +snippet cont: + .. contents:: + diff --git a/plugins/node_modules/ace/lib/ace/snippets/ruby.js b/plugins/node_modules/ace/lib/ace/snippets/ruby.js new file mode 100644 index 00000000..f7050449 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/ruby.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./ruby.snippets"); +exports.scope = "ruby"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/ruby.snippets b/plugins/node_modules/ace/lib/ace/snippets/ruby.snippets new file mode 100644 index 00000000..0500aaa1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/ruby.snippets @@ -0,0 +1,928 @@ +######################################## +# Ruby snippets - for Rails, see below # +######################################## + +# encoding for Ruby 1.9 +snippet enc + # encoding: utf-8 + +# #!/usr/bin/env ruby +snippet #! + #!/usr/bin/env ruby + # encoding: utf-8 + +# New Block +snippet =b + =begin rdoc + ${1} + =end +snippet y + :yields: ${1:arguments} +snippet rb + #!/usr/bin/env ruby -wKU +snippet beg + begin + ${3} + rescue ${1:Exception} => ${2:e} + end + +snippet req require + require "${1}"${2} +snippet # + # => +snippet end + __END__ +snippet case + case ${1:object} + when ${2:condition} + ${3} + end +snippet when + when ${1:condition} + ${2} +snippet def + def ${1:method_name} + ${2} + end +snippet deft + def test_${1:case_name} + ${2} + end +snippet if + if ${1:condition} + ${2} + end +snippet ife + if ${1:condition} + ${2} + else + ${3} + end +snippet elsif + elsif ${1:condition} + ${2} +snippet unless + unless ${1:condition} + ${2} + end +snippet while + while ${1:condition} + ${2} + end +snippet for + for ${1:e} in ${2:c} + ${3} + end +snippet until + until ${1:condition} + ${2} + end +snippet cla class .. end + class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} + ${2} + end +snippet cla class .. initialize .. end + class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} + def initialize(${2:args}) + ${3} + end + end +snippet cla class .. < ParentClass .. initialize .. end + class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} < ${2:ParentClass} + def initialize(${3:args}) + ${4} + end + end +snippet cla ClassName = Struct .. do .. end + ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} = Struct.new(:${2:attr_names}) do + def ${3:method_name} + ${4} + end + end +snippet cla class BlankSlate .. initialize .. end + class ${1:BlankSlate} + instance_methods.each { |meth| undef_method(meth) unless meth =~ /\A__/ } + end +snippet cla class << self .. end + class << ${1:self} + ${2} + end +# class .. < DelegateClass .. initialize .. end +snippet cla- + class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} < DelegateClass(${2:ParentClass}) + def initialize(${3:args}) + super(${4:del_obj}) + + ${5} + end + end +snippet mod module .. end + module ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} + ${2} + end +snippet mod module .. module_function .. end + module ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} + module_function + + ${2} + end +snippet mod module .. ClassMethods .. end + module ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} + module ClassMethods + ${2} + end + + module InstanceMethods + + end + + def self.included(receiver) + receiver.extend ClassMethods + receiver.send :include, InstanceMethods + end + end +# attr_reader +snippet r + attr_reader :${1:attr_names} +# attr_writer +snippet w + attr_writer :${1:attr_names} +# attr_accessor +snippet rw + attr_accessor :${1:attr_names} +snippet atp + attr_protected :${1:attr_names} +snippet ata + attr_accessible :${1:attr_names} +# include Enumerable +snippet Enum + include Enumerable + + def each(&block) + ${1} + end +# include Comparable +snippet Comp + include Comparable + + def <=>(other) + ${1} + end +# extend Forwardable +snippet Forw- + extend Forwardable +# def self +snippet defs + def self.${1:class_method_name} + ${2} + end +# def method_missing +snippet defmm + def method_missing(meth, *args, &blk) + ${1} + end +snippet defd + def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name} +snippet defds + def_delegators :${1:@del_obj}, :${2:del_methods} +snippet am + alias_method :${1:new_name}, :${2:old_name} +snippet app + if __FILE__ == $PROGRAM_NAME + ${1} + end +# usage_if() +snippet usai + if ARGV.${1} + abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3} + end +# usage_unless() +snippet usau + unless ARGV.${1} + abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3} + end +snippet array + Array.new(${1:10}) { |${2:i}| ${3} } +snippet hash + Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} } +snippet file File.foreach() { |line| .. } + File.foreach(${1:"path/to/file"}) { |${2:line}| ${3} } +snippet file File.read() + File.read(${1:"path/to/file"})${2} +snippet Dir Dir.global() { |file| .. } + Dir.glob(${1:"dir/glob/*"}) { |${2:file}| ${3} } +snippet Dir Dir[".."] + Dir[${1:"glob/**/*.rb"}]${2} +snippet dir + Filename.dirname(__FILE__) +snippet deli + delete_if { |${1:e}| ${2} } +snippet fil + fill(${1:range}) { |${2:i}| ${3} } +# flatten_once() +snippet flao + inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3} +snippet zip + zip(${1:enums}) { |${2:row}| ${3} } +# downto(0) { |n| .. } +snippet dow + downto(${1:0}) { |${2:n}| ${3} } +snippet ste + step(${1:2}) { |${2:n}| ${3} } +snippet tim + times { |${1:n}| ${2} } +snippet upt + upto(${1:1.0/0.0}) { |${2:n}| ${3} } +snippet loo + loop { ${1} } +snippet ea + each { |${1:e}| ${2} } +snippet ead + each do |${1:e}| + ${2} + end +snippet eab + each_byte { |${1:byte}| ${2} } +snippet eac- each_char { |chr| .. } + each_char { |${1:chr}| ${2} } +snippet eac- each_cons(..) { |group| .. } + each_cons(${1:2}) { |${2:group}| ${3} } +snippet eai + each_index { |${1:i}| ${2} } +snippet eaid + each_index do |${1:i}| + ${2} + end +snippet eak + each_key { |${1:key}| ${2} } +snippet eakd + each_key do |${1:key}| + ${2} + end +snippet eal + each_line { |${1:line}| ${2} } +snippet eald + each_line do |${1:line}| + ${2} + end +snippet eap + each_pair { |${1:name}, ${2:val}| ${3} } +snippet eapd + each_pair do |${1:name}, ${2:val}| + ${3} + end +snippet eas- + each_slice(${1:2}) { |${2:group}| ${3} } +snippet easd- + each_slice(${1:2}) do |${2:group}| + ${3} + end +snippet eav + each_value { |${1:val}| ${2} } +snippet eavd + each_value do |${1:val}| + ${2} + end +snippet eawi + each_with_index { |${1:e}, ${2:i}| ${3} } +snippet eawid + each_with_index do |${1:e},${2:i}| + ${3} + end +snippet reve + reverse_each { |${1:e}| ${2} } +snippet reved + reverse_each do |${1:e}| + ${2} + end +snippet inj + inject(${1:init}) { |${2:mem}, ${3:var}| ${4} } +snippet injd + inject(${1:init}) do |${2:mem}, ${3:var}| + ${4} + end +snippet map + map { |${1:e}| ${2} } +snippet mapd + map do |${1:e}| + ${2} + end +snippet mapwi- + enum_with_index.map { |${1:e}, ${2:i}| ${3} } +snippet sor + sort { |a, b| ${1} } +snippet sorb + sort_by { |${1:e}| ${2} } +snippet ran + sort_by { rand } +snippet all + all? { |${1:e}| ${2} } +snippet any + any? { |${1:e}| ${2} } +snippet cl + classify { |${1:e}| ${2} } +snippet col + collect { |${1:e}| ${2} } +snippet cold + collect do |${1:e}| + ${2} + end +snippet det + detect { |${1:e}| ${2} } +snippet detd + detect do |${1:e}| + ${2} + end +snippet fet + fetch(${1:name}) { |${2:key}| ${3} } +snippet fin + find { |${1:e}| ${2} } +snippet find + find do |${1:e}| + ${2} + end +snippet fina + find_all { |${1:e}| ${2} } +snippet finad + find_all do |${1:e}| + ${2} + end +snippet gre + grep(${1:/pattern/}) { |${2:match}| ${3} } +snippet sub + ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} } +snippet sca + scan(${1:/pattern/}) { |${2:match}| ${3} } +snippet scad + scan(${1:/pattern/}) do |${2:match}| + ${3} + end +snippet max + max { |a, b| ${1} } +snippet min + min { |a, b| ${1} } +snippet par + partition { |${1:e}| ${2} } +snippet pard + partition do |${1:e}| + ${2} + end +snippet rej + reject { |${1:e}| ${2} } +snippet rejd + reject do |${1:e}| + ${2} + end +snippet sel + select { |${1:e}| ${2} } +snippet seld + select do |${1:e}| + ${2} + end +snippet lam + lambda { |${1:args}| ${2} } +snippet doo + do + ${1} + end +snippet dov + do |${1:variable}| + ${2} + end +snippet : + :${1:key} => ${2:"value"}${3} +snippet ope + open(${1:"path/or/url/or/pipe"}, "${2:w}") { |${3:io}| ${4} } +# path_from_here() +snippet fpath + File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2} +# unix_filter {} +snippet unif + ARGF.each_line${1} do |${2:line}| + ${3} + end +# option_parse {} +snippet optp + require "optparse" + + options = {${1:default => "args"}} + + ARGV.options do |opts| + opts.banner = "Usage: #{File.basename($PROGRAM_NAME)} +snippet opt + opts.on( "-${1:o}", "--${2:long-option-name}", ${3:String}, + "${4:Option description.}") do |${5:opt}| + ${6} + end +snippet tc + require "test/unit" + + require "${1:library_file_name}" + + class Test${2:$1} < Test::Unit::TestCase + def test_${3:case_name} + ${4} + end + end +snippet ts + require "test/unit" + + require "tc_${1:test_case_file}" + require "tc_${2:test_case_file}"${3} +snippet as + assert ${1:test}, "${2:Failure message.}"${3} +snippet ase + assert_equal ${1:expected}, ${2:actual}${3} +snippet asne + assert_not_equal ${1:unexpected}, ${2:actual}${3} +snippet asid + assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4} +snippet asio + assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3} +snippet asko + assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3} +snippet asn + assert_nil ${1:instance}${2} +snippet asnn + assert_not_nil ${1:instance}${2} +snippet asm + assert_match /${1:expected_pattern}/, ${2:actual_string}${3} +snippet asnm + assert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3} +snippet aso + assert_operator ${1:left}, :${2:operator}, ${3:right}${4} +snippet asr + assert_raise ${1:Exception} { ${2} } +snippet asrd + assert_raise ${1:Exception} do + ${2} + end +snippet asnr + assert_nothing_raised ${1:Exception} { ${2} } +snippet asnrd + assert_nothing_raised ${1:Exception} do + ${2} + end +snippet asrt + assert_respond_to ${1:object}, :${2:method}${3} +snippet ass assert_same(..) + assert_same ${1:expected}, ${2:actual}${3} +snippet ass assert_send(..) + assert_send [${1:object}, :${2:message}, ${3:args}]${4} +snippet asns + assert_not_same ${1:unexpected}, ${2:actual}${3} +snippet ast + assert_throws :${1:expected} { ${2} } +snippet astd + assert_throws :${1:expected} do + ${2} + end +snippet asnt + assert_nothing_thrown { ${1} } +snippet asntd + assert_nothing_thrown do + ${1} + end +snippet fl + flunk "${1:Failure message.}"${2} +# Benchmark.bmbm do .. end +snippet bm- + TESTS = ${1:10_000} + Benchmark.bmbm do |results| + ${2} + end +snippet rep + results.report("${1:name}:") { TESTS.times { ${2} }} +# Marshal.dump(.., file) +snippet Md + File.open(${1:"path/to/file.dump"}, "wb") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4} +# Mashal.load(obj) +snippet Ml + File.open(${1:"path/to/file.dump"}, "rb") { |${2:file}| Marshal.load($2) }${3} +# deep_copy(..) +snippet deec + Marshal.load(Marshal.dump(${1:obj_to_copy}))${2} +snippet Pn- + PStore.new(${1:"file_name.pstore"})${2} +snippet tra + transaction(${1:true}) { ${2} } +# xmlread(..) +snippet xml- + REXML::Document.new(File.read(${1:"path/to/file"}))${2} +# xpath(..) { .. } +snippet xpa + elements.each(${1:"//Xpath"}) do |${2:node}| + ${3} + end +# class_from_name() +snippet clafn + split("::").inject(Object) { |par, const| par.const_get(const) } +# singleton_class() +snippet sinc + class << self; self end +snippet nam + namespace :${1:`Filename()`} do + ${2} + end +snippet tas + desc "${1:Task description}" + task :${2:task_name => [:dependent, :tasks]} do + ${3} + end +# block +snippet b + { |${1:var}| ${2} } +snippet begin + begin + raise 'A test exception.' + rescue Exception => e + puts e.message + puts e.backtrace.inspect + else + # other exception + ensure + # always executed + end + +#debugging +snippet debug + require 'ruby-debug'; debugger; true; +snippet pry + require 'pry'; binding.pry + +############################################# +# Rails snippets - for pure Ruby, see above # +############################################# +snippet art + assert_redirected_to ${1::action => "${2:index}"} +snippet artnp + assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2}) +snippet artnpp + assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}) +snippet artp + assert_redirected_to ${1:model}_path(${2:@$1}) +snippet artpp + assert_redirected_to ${1:model}s_path +snippet asd + assert_difference "${1:Model}.${2:count}", $1 do + ${3} + end +snippet asnd + assert_no_difference "${1:Model}.${2:count}" do + ${3} + end +snippet asre + assert_response :${1:success}, @response.body${2} +snippet asrj + assert_rjs :${1:replace}, "${2:dom id}" +snippet ass assert_select(..) + assert_select '${1:path}', :${2:text} => '${3:inner_html' ${4:do} +snippet bf + before_filter :${1:method} +snippet bt + belongs_to :${1:association} +snippet crw + cattr_accessor :${1:attr_names} +snippet defcreate + def create + @${1:model_class_name} = ${2:ModelClassName}.new(params[:$1]) + + respond_to do |wants| + if @$1.save + flash[:notice] = '$2 was successfully created.' + wants.html { redirect_to(@$1) } + wants.xml { render :xml => @$1, :status => :created, :location => @$1 } + else + wants.html { render :action => "new" } + wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity } + end + end + end${3} +snippet defdestroy + def destroy + @${1:model_class_name} = ${2:ModelClassName}.find(params[:id]) + @$1.destroy + + respond_to do |wants| + wants.html { redirect_to($1s_url) } + wants.xml { head :ok } + end + end${3} +snippet defedit + def edit + @${1:model_class_name} = ${2:ModelClassName}.find(params[:id]) + end +snippet defindex + def index + @${1:model_class_name} = ${2:ModelClassName}.all + + respond_to do |wants| + wants.html # index.html.erb + wants.xml { render :xml => @$1s } + end + end${3} +snippet defnew + def new + @${1:model_class_name} = ${2:ModelClassName}.new + + respond_to do |wants| + wants.html # new.html.erb + wants.xml { render :xml => @$1 } + end + end${3} +snippet defshow + def show + @${1:model_class_name} = ${2:ModelClassName}.find(params[:id]) + + respond_to do |wants| + wants.html # show.html.erb + wants.xml { render :xml => @$1 } + end + end${3} +snippet defupdate + def update + @${1:model_class_name} = ${2:ModelClassName}.find(params[:id]) + + respond_to do |wants| + if @$1.update_attributes(params[:$1]) + flash[:notice] = '$2 was successfully updated.' + wants.html { redirect_to(@$1) } + wants.xml { head :ok } + else + wants.html { render :action => "edit" } + wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity } + end + end + end${3} +snippet flash + flash[:${1:notice}] = "${2}" +snippet habtm + has_and_belongs_to_many :${1:object}, :join_table => "${2:table_name}", :foreign_key => "${3}_id"${4} +snippet hm + has_many :${1:object} +snippet hmd + has_many :${1:other}s, :class_name => "${2:$1}", :foreign_key => "${3:$1}_id", :dependent => :destroy${4} +snippet hmt + has_many :${1:object}, :through => :${2:object} +snippet ho + has_one :${1:object} +snippet i18 + I18n.t('${1:type.key}')${2} +snippet ist + <%= image_submit_tag("${1:agree.png}", :id => "${2:id}"${3} %> +snippet log + Rails.logger.${1:debug} ${2} +snippet log2 + RAILS_DEFAULT_LOGGER.${1:debug} ${2} +snippet logd + logger.debug { "${1:message}" }${2} +snippet loge + logger.error { "${1:message}" }${2} +snippet logf + logger.fatal { "${1:message}" }${2} +snippet logi + logger.info { "${1:message}" }${2} +snippet logw + logger.warn { "${1:message}" }${2} +snippet mapc + ${1:map}.${2:connect} '${3:controller/:action/:id}' +snippet mapca + ${1:map}.catch_all "*${2:anything}", :controller => "${3:default}", :action => "${4:error}"${5} +snippet mapr + ${1:map}.resource :${2:resource} +snippet maprs + ${1:map}.resources :${2:resource} +snippet mapwo + ${1:map}.with_options :${2:controller} => '${3:thing}' do |$3| + ${4} + end +snippet mbs + before_save :${1:method} +snippet mcht + change_table :${1:table_name} do |t| + ${2} + end +snippet mp + map(&:${1:id}) +snippet mrw + mattr_accessor :${1:attr_names} +snippet oa + order("${1:field}") +snippet od + order("${1:field} DESC") +snippet pa + params[:${1:id}]${2} +snippet ra + render :action => "${1:action}" +snippet ral + render :action => "${1:action}", :layout => "${2:layoutname}" +snippet rest + respond_to do |wants| + wants.${1:html} { ${2} } + end +snippet rf + render :file => "${1:filepath}" +snippet rfu + render :file => "${1:filepath}", :use_full_path => ${2:false} +snippet ri + render :inline => "${1:<%= 'hello' %>}" +snippet ril + render :inline => "${1:<%= 'hello' %>}", :locals => { ${2::name} => "${3:value}"${4} } +snippet rit + render :inline => "${1:<%= 'hello' %>}", :type => ${2::rxml} +snippet rjson + render :json => ${1:text to render} +snippet rl + render :layout => "${1:layoutname}" +snippet rn + render :nothing => ${1:true} +snippet rns + render :nothing => ${1:true}, :status => ${2:401} +snippet rp + render :partial => "${1:item}" +snippet rpc + render :partial => "${1:item}", :collection => ${2:@$1s} +snippet rpl + render :partial => "${1:item}", :locals => { :${2:$1} => ${3:@$1} +snippet rpo + render :partial => "${1:item}", :object => ${2:@$1} +snippet rps + render :partial => "${1:item}", :status => ${2:500} +snippet rt + render :text => "${1:text to render}" +snippet rtl + render :text => "${1:text to render}", :layout => "${2:layoutname}" +snippet rtlt + render :text => "${1:text to render}", :layout => ${2:true} +snippet rts + render :text => "${1:text to render}", :status => ${2:401} +snippet ru + render :update do |${1:page}| + $1.${2} + end +snippet rxml + render :xml => ${1:text to render} +snippet sc + scope :${1:name}, :where(:@${2:field} => ${3:value}) +snippet sl + scope :${1:name}, lambda do |${2:value}| + where("${3:field = ?}", ${4:bind var}) + end +snippet sha1 + Digest::SHA1.hexdigest(${1:string}) +snippet sweeper + class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper + observe $1 + + def after_save(${2:model_class_name}) + expire_cache($2) + end + + def after_destroy($2) + expire_cache($2) + end + + def expire_cache($2) + expire_page + end + end +snippet tcb + t.boolean :${1:title} + ${2} +snippet tcbi + t.binary :${1:title}, :limit => ${2:2}.megabytes + ${3} +snippet tcd + t.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2} + ${4} +snippet tcda + t.date :${1:title} + ${2} +snippet tcdt + t.datetime :${1:title} + ${2} +snippet tcf + t.float :${1:title} + ${2} +snippet tch + t.change :${1:name}, :${2:string}, :${3:limit} => ${4:80} + ${5} +snippet tci + t.integer :${1:title} + ${2} +snippet tcl + t.integer :lock_version, :null => false, :default => 0 + ${1} +snippet tcr + t.references :${1:taggable}, :polymorphic => { :default => '${2:Photo}' } + ${3} +snippet tcs + t.string :${1:title} + ${2} +snippet tct + t.text :${1:title} + ${2} +snippet tcti + t.time :${1:title} + ${2} +snippet tcts + t.timestamp :${1:title} + ${2} +snippet tctss + t.timestamps + ${1} +snippet va + validates_associated :${1:attribute} +snippet vao + validates_acceptance_of :${1:terms} +snippet vc + validates_confirmation_of :${1:attribute} +snippet ve + validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )} +snippet vf + validates_format_of :${1:attribute}, :with => /${2:regex}/ +snippet vi + validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi }) +snippet vl + validates_length_of :${1:attribute}, :within => ${2:3}..${3:20} +snippet vn + validates_numericality_of :${1:attribute} +snippet vpo + validates_presence_of :${1:attribute} +snippet vu + validates_uniqueness_of :${1:attribute} +snippet wants + wants.${1:js|xml|html} { ${2} } +snippet wc + where(${1:"conditions"}${2:, bind_var}) +snippet wh + where(${1:field} => ${2:value}) +snippet xdelete + xhr :delete, :${1:destroy}, :id => ${2:1}${3} +snippet xget + xhr :get, :${1:show}, :id => ${2:1}${3} +snippet xpost + xhr :post, :${1:create}, :${2:object} => { ${3} } +snippet xput + xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5} +snippet test + test "should ${1:do something}" do + ${2} + end +#migrations +snippet mac + add_column :${1:table_name}, :${2:column_name}, :${3:data_type} +snippet mrc + remove_column :${1:table_name}, :${2:column_name} +snippet mrnc + rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name} +snippet mcc + change_column :${1:table}, :${2:column}, :${3:type} +snippet mccc + t.column :${1:title}, :${2:string} +snippet mct + create_table :${1:table_name} do |t| + t.column :${2:name}, :${3:type} + end +snippet migration + class ${1:class_name} < ActiveRecord::Migration + def self.up + ${2} + end + + def self.down + end + end + +snippet trc + t.remove :${1:column} +snippet tre + t.rename :${1:old_column_name}, :${2:new_column_name} + ${3} +snippet tref + t.references :${1:model} + +#rspec +snippet it + it "${1:spec_name}" do + ${2} + end +snippet itp + it "${1:spec_name}" + ${2} +snippet desc + describe ${1:class_name} do + ${2} + end +snippet cont + context "${1:message}" do + ${2} + end +snippet bef + before :${1:each} do + ${2} + end +snippet aft + after :${1:each} do + ${2} + end diff --git a/plugins/node_modules/ace/lib/ace/snippets/rust.js b/plugins/node_modules/ace/lib/ace/snippets/rust.js new file mode 100644 index 00000000..556d9a6b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/rust.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./rust.snippets"); +exports.scope = "rust"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/rust.snippets b/plugins/node_modules/ace/lib/ace/snippets/rust.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/sass.js b/plugins/node_modules/ace/lib/ace/snippets/sass.js new file mode 100644 index 00000000..ba728ac2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sass.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./sass.snippets"); +exports.scope = "sass"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/sass.snippets b/plugins/node_modules/ace/lib/ace/snippets/sass.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/scad.js b/plugins/node_modules/ace/lib/ace/snippets/scad.js new file mode 100644 index 00000000..28db2155 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/scad.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./scad.snippets"); +exports.scope = "scad"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/scad.snippets b/plugins/node_modules/ace/lib/ace/snippets/scad.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/scala.js b/plugins/node_modules/ace/lib/ace/snippets/scala.js new file mode 100644 index 00000000..2e5a8c57 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/scala.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./scala.snippets"); +exports.scope = "scala"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/scala.snippets b/plugins/node_modules/ace/lib/ace/snippets/scala.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/scheme.js b/plugins/node_modules/ace/lib/ace/snippets/scheme.js new file mode 100644 index 00000000..7d3c6f65 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/scheme.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./scheme.snippets"); +exports.scope = "scheme"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/scheme.snippets b/plugins/node_modules/ace/lib/ace/snippets/scheme.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/scss.js b/plugins/node_modules/ace/lib/ace/snippets/scss.js new file mode 100644 index 00000000..a940eabd --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/scss.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./scss.snippets"); +exports.scope = "scss"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/scss.snippets b/plugins/node_modules/ace/lib/ace/snippets/scss.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/sh.js b/plugins/node_modules/ace/lib/ace/snippets/sh.js new file mode 100644 index 00000000..c48dc17f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sh.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./sh.snippets"); +exports.scope = "sh"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/sh.snippets b/plugins/node_modules/ace/lib/ace/snippets/sh.snippets new file mode 100644 index 00000000..305fb661 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sh.snippets @@ -0,0 +1,83 @@ +# Shebang. Executing bash via /usr/bin/env makes scripts more portable. +snippet #! + #!/usr/bin/env bash + +snippet if + if [[ ${1:condition} ]]; then + ${2:#statements} + fi +snippet elif + elif [[ ${1:condition} ]]; then + ${2:#statements} +snippet for + for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do + ${3:#statements} + done +snippet fori + for ${1:needle} in ${2:haystack} ; do + ${3:#statements} + done +snippet wh + while [[ ${1:condition} ]]; do + ${2:#statements} + done +snippet until + until [[ ${1:condition} ]]; do + ${2:#statements} + done +snippet case + case ${1:word} in + ${2:pattern}) + ${3};; + esac +snippet go + while getopts '${1:o}' ${2:opts} + do + case $$2 in + ${3:o0}) + ${4:#staments};; + esac + done +# Set SCRIPT_DIR variable to directory script is located. +snippet sdir + SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +# getopt +snippet getopt + __ScriptVersion="${1:version}" + + #=== FUNCTION ================================================================ + # NAME: usage + # DESCRIPTION: Display usage information. + #=============================================================================== + function usage () + { + cat <<- EOT + + Usage : $${0:0} [options] [--] + + Options: + -h|help Display this message + -v|version Display script version + + EOT + } # ---------- end of function usage ---------- + + #----------------------------------------------------------------------- + # Handle command line arguments + #----------------------------------------------------------------------- + + while getopts ":hv" opt + do + case $opt in + + h|help ) usage; exit 0 ;; + + v|version ) echo "$${0:0} -- Version $__ScriptVersion"; exit 0 ;; + + \? ) echo -e "\n Option does not exist : $OPTARG\n" + usage; exit 1 ;; + + esac # --- end of case --- + done + shift $(($OPTIND-1)) + diff --git a/plugins/node_modules/ace/lib/ace/snippets/sjs.js b/plugins/node_modules/ace/lib/ace/snippets/sjs.js new file mode 100644 index 00000000..a88cfc90 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sjs.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./sjs.snippets"); +exports.scope = "sjs"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/sjs.snippets b/plugins/node_modules/ace/lib/ace/snippets/sjs.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/smarty.js b/plugins/node_modules/ace/lib/ace/snippets/smarty.js new file mode 100644 index 00000000..121d0b7c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/smarty.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./smarty.snippets"); +exports.scope = "smarty"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/smarty.snippets b/plugins/node_modules/ace/lib/ace/snippets/smarty.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/snippets.js b/plugins/node_modules/ace/lib/ace/snippets/snippets.js new file mode 100644 index 00000000..0927805b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/snippets.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./snippets.snippets"); +exports.scope = "snippets"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/snippets.snippets b/plugins/node_modules/ace/lib/ace/snippets/snippets.snippets new file mode 100644 index 00000000..4223fa39 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/snippets.snippets @@ -0,0 +1,9 @@ +# snippets for making snippets :) +snippet snip + snippet ${1:trigger} + ${2} +snippet msnip + snippet ${1:trigger} ${2:description} + ${3} +snippet v + {VISUAL} diff --git a/plugins/node_modules/ace/lib/ace/snippets/soy_template.js b/plugins/node_modules/ace/lib/ace/snippets/soy_template.js new file mode 100644 index 00000000..194da757 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/soy_template.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./soy_template.snippets"); +exports.scope = "soy_template"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/soy_template.snippets b/plugins/node_modules/ace/lib/ace/snippets/soy_template.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/space.js b/plugins/node_modules/ace/lib/ace/snippets/space.js new file mode 100644 index 00000000..766d493e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/space.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./space.snippets"); +exports.scope = "space"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/space.snippets b/plugins/node_modules/ace/lib/ace/snippets/space.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/sparql.js b/plugins/node_modules/ace/lib/ace/snippets/sparql.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sparql.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/sparql.snippets b/plugins/node_modules/ace/lib/ace/snippets/sparql.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/sql.js b/plugins/node_modules/ace/lib/ace/snippets/sql.js new file mode 100644 index 00000000..c96f6cb2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sql.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./sql.snippets"); +exports.scope = "sql"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/sql.snippets b/plugins/node_modules/ace/lib/ace/snippets/sql.snippets new file mode 100644 index 00000000..eb4b37ca --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sql.snippets @@ -0,0 +1,26 @@ +snippet tbl + create table ${1:table} ( + ${2:columns} + ); +snippet col + ${1:name} ${2:type} ${3:default ''} ${4:not null} +snippet ccol + ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null} +snippet ncol + ${1:name} number ${3:default 0} ${4:not null} +snippet dcol + ${1:name} date ${3:default sysdate} ${4:not null} +snippet ind + create index ${3:$1_$2} on ${1:table}(${2:column}); +snippet uind + create unique index ${1:name} on ${2:table}(${3:column}); +snippet tblcom + comment on table ${1:table} is '${2:comment}'; +snippet colcom + comment on column ${1:table}.${2:column} is '${3:comment}'; +snippet addcol + alter table ${1:table} add (${2:column} ${3:type}); +snippet seq + create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1}; +snippet s* + select * from ${1:table} diff --git a/plugins/node_modules/ace/lib/ace/snippets/sqlserver.js b/plugins/node_modules/ace/lib/ace/snippets/sqlserver.js new file mode 100644 index 00000000..f84694dc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sqlserver.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./sqlserver.snippets"); +exports.scope = "sqlserver"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/sqlserver.snippets b/plugins/node_modules/ace/lib/ace/snippets/sqlserver.snippets new file mode 100644 index 00000000..403bd6bc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/sqlserver.snippets @@ -0,0 +1,70 @@ +# ISNULL +snippet isnull + ISNULL(${1:check_expression}, ${2:replacement_value}) +# FORMAT +snippet format + FORMAT(${1:value}, ${2:format}) +# CAST +snippet cast + CAST(${1:expression} AS ${2:data_type}) +# CONVERT +snippet convert + CONVERT(${1:data_type}, ${2:expression}) +# DATEPART +snippet datepart + DATEPART(${1:datepart}, ${2:date}) +# DATEDIFF +snippet datediff + DATEDIFF(${1:datepart}, ${2:startdate}, ${3:enddate}) +# DATEADD +snippet dateadd + DATEADD(${1:datepart}, ${2:number}, ${3:date}) +# DATEFROMPARTS +snippet datefromparts + DATEFROMPARTS(${1:year}, ${2:month}, ${3:day}) +# OBJECT_DEFINITION +snippet objectdef + SELECT OBJECT_DEFINITION(OBJECT_ID('${1:sys.server_permissions /*object name*/}')) +# STUFF XML +snippet stuffxml + STUFF((SELECT ', ' + ${1:ColumnName} + FROM ${2:TableName} + WHERE ${3:WhereClause} + FOR XML PATH('')), 1, 1, '') AS ${4:Alias} + ${5:/*https://msdn.microsoft.com/en-us/library/ms188043.aspx*/} +# Create Procedure +snippet createproc + -- ============================================= + -- Author: ${1:Author} + -- Create date: ${2:Date} + -- Description: ${3:Description} + -- ============================================= + CREATE PROCEDURE ${4:Procedure_Name} + ${5:/*Add the parameters for the stored procedure here*/} + AS + BEGIN + -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements. + SET NOCOUNT ON; + + ${6:/*Add the T-SQL statements to compute the return value here*/} + + END + GO +# Create Scalar Function +snippet createfn + -- ============================================= + -- Author: ${1:Author} + -- Create date: ${2:Date} + -- Description: ${3:Description} + -- ============================================= + CREATE FUNCTION ${4:Scalar_Function_Name} + -- Add the parameters for the function here + RETURNS ${5:Function_Data_Type} + AS + BEGIN + DECLARE @Result ${5:Function_Data_Type} + + ${6:/*Add the T-SQL statements to compute the return value here*/} + + END + GO \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/snippets/stylus.js b/plugins/node_modules/ace/lib/ace/snippets/stylus.js new file mode 100644 index 00000000..86a79f7a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/stylus.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./stylus.snippets"); +exports.scope = "stylus"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/stylus.snippets b/plugins/node_modules/ace/lib/ace/snippets/stylus.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/svg.js b/plugins/node_modules/ace/lib/ace/snippets/svg.js new file mode 100644 index 00000000..aeb62456 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/svg.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./svg.snippets"); +exports.scope = "svg"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/svg.snippets b/plugins/node_modules/ace/lib/ace/snippets/svg.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/swift.js b/plugins/node_modules/ace/lib/ace/snippets/swift.js new file mode 100644 index 00000000..46e5e110 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/swift.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./swift.snippets"); +exports.scope = "swift"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/swift.snippets b/plugins/node_modules/ace/lib/ace/snippets/swift.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/tcl.js b/plugins/node_modules/ace/lib/ace/snippets/tcl.js new file mode 100644 index 00000000..53482fc7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/tcl.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./tcl.snippets"); +exports.scope = "tcl"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/tcl.snippets b/plugins/node_modules/ace/lib/ace/snippets/tcl.snippets new file mode 100644 index 00000000..1fe1cb96 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/tcl.snippets @@ -0,0 +1,92 @@ +# #!/usr/bin/env tclsh +snippet #! + #!/usr/bin/env tclsh + +# Process +snippet pro + proc ${1:function_name} {${2:args}} { + ${3:#body ...} + } +#xif +snippet xif + ${1:expr}? ${2:true} : ${3:false} +# Conditional +snippet if + if {${1}} { + ${2:# body...} + } +# Conditional if..else +snippet ife + if {${1}} { + ${2:# body...} + } else { + ${3:# else...} + } +# Conditional if..elsif..else +snippet ifee + if {${1}} { + ${2:# body...} + } elseif {${3}} { + ${4:# elsif...} + } else { + ${5:# else...} + } +# If catch then +snippet ifc + if { [catch {${1:#do something...}} ${2:err}] } { + ${3:# handle failure...} + } +# Catch +snippet catch + catch {${1}} ${2:err} ${3:options} +# While Loop +snippet wh + while {${1}} { + ${2:# body...} + } +# For Loop +snippet for + for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} { + ${4:# body...} + } +# Foreach Loop +snippet fore + foreach ${1:x} {${2:#list}} { + ${3:# body...} + } +# after ms script... +snippet af + after ${1:ms} ${2:#do something} +# after cancel id +snippet afc + after cancel ${1:id or script} +# after idle +snippet afi + after idle ${1:script} +# after info id +snippet afin + after info ${1:id} +# Expr +snippet exp + expr {${1:#expression here}} +# Switch +snippet sw + switch ${1:var} { + ${3:pattern 1} { + ${4:#do something} + } + default { + ${2:#do something} + } + } +# Case +snippet ca + ${1:pattern} { + ${2:#do something} + }${3} +# Namespace eval +snippet ns + namespace eval ${1:path} {${2:#script...}} +# Namespace current +snippet nsc + namespace current diff --git a/plugins/node_modules/ace/lib/ace/snippets/tex.js b/plugins/node_modules/ace/lib/ace/snippets/tex.js new file mode 100644 index 00000000..267b6b69 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/tex.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./tex.snippets"); +exports.scope = "tex"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/tex.snippets b/plugins/node_modules/ace/lib/ace/snippets/tex.snippets new file mode 100644 index 00000000..10fa82ef --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/tex.snippets @@ -0,0 +1,191 @@ +#PREAMBLE +#newcommand +snippet nc + \newcommand{\${1:cmd}}[${2:opt}]{${3:realcmd}}${4} +#usepackage +snippet up + \usepackage[${1:[options}]{${2:package}} +#newunicodechar +snippet nuc + \newunicodechar{${1}}{${2:\ensuremath}${3:tex-substitute}}} +#DeclareMathOperator +snippet dmo + \DeclareMathOperator{${1}}{${2}} + +#DOCUMENT +# \begin{}...\end{} +snippet begin + \begin{${1:env}} + ${2} + \end{$1} +# Tabular +snippet tab + \begin{${1:tabular}}{${2:c}} + ${3} + \end{$1} +snippet thm + \begin[${1:author}]{${2:thm}} + ${3} + \end{$1} +snippet center + \begin{center} + ${1} + \end{center} +# Align(ed) +snippet ali + \begin{align${1:ed}} + ${2} + \end{align$1} +# Gather(ed) +snippet gat + \begin{gather${1:ed}} + ${2} + \end{gather$1} +# Equation +snippet eq + \begin{equation} + ${1} + \end{equation} +# Equation +snippet eq* + \begin{equation*} + ${1} + \end{equation*} +# Unnumbered Equation +snippet \ + \[ + ${1} + \] +# Enumerate +snippet enum + \begin{enumerate} + \item ${1} + \end{enumerate} +# Itemize +snippet itemize + \begin{itemize} + \item ${1} + \end{itemize} +# Description +snippet desc + \begin{description} + \item[${1}] ${2} + \end{description} +# Matrix +snippet mat + \begin{${1:p/b/v/V/B/small}matrix} + ${2} + \end{$1matrix} +# Cases +snippet cas + \begin{cases} + ${1:equation}, &\text{ if }${2:case}\\ + ${3} + \end{cases} +# Split +snippet spl + \begin{split} + ${1} + \end{split} +# Part +snippet part + \part{${1:part name}} % (fold) + \label{prt:${2:$1}} + ${3} + % part $2 (end) +# Chapter +snippet cha + \chapter{${1:chapter name}} + \label{cha:${2:$1}} + ${3} +# Section +snippet sec + \section{${1:section name}} + \label{sec:${2:$1}} + ${3} +# Sub Section +snippet sub + \subsection{${1:subsection name}} + \label{sub:${2:$1}} + ${3} +# Sub Sub Section +snippet subs + \subsubsection{${1:subsubsection name}} + \label{ssub:${2:$1}} + ${3} +# Paragraph +snippet par + \paragraph{${1:paragraph name}} + \label{par:${2:$1}} + ${3} +# Sub Paragraph +snippet subp + \subparagraph{${1:subparagraph name}} + \label{subp:${2:$1}} + ${3} +#References +snippet itd + \item[${1:description}] ${2:item} +snippet figure + ${1:Figure}~\ref{${2:fig:}}${3} +snippet table + ${1:Table}~\ref{${2:tab:}}${3} +snippet listing + ${1:Listing}~\ref{${2:list}}${3} +snippet section + ${1:Section}~\ref{${2:sec:}}${3} +snippet page + ${1:page}~\pageref{${2}}${3} +snippet index + \index{${1:index}}${2} +#Citations +snippet cite + \cite[${1}]{${2}}${3} +snippet fcite + \footcite[${1}]{${2}}${3} +#Formating text: italic, bold, underline, small capital, emphase .. +snippet it + \textit{${1:text}} +snippet bf + \textbf{${1:text}} +snippet under + \underline{${1:text}} +snippet emp + \emph{${1:text}} +snippet sc + \textsc{${1:text}} +#Choosing font +snippet sf + \textsf{${1:text}} +snippet rm + \textrm{${1:text}} +snippet tt + \texttt{${1:text}} +#misc +snippet ft + \footnote{${1:text}} +snippet fig + \begin{figure} + \begin{center} + \includegraphics[scale=${1}]{Figures/${2}} + \end{center} + \caption{${3}} + \label{fig:${4}} + \end{figure} +snippet tikz + \begin{figure} + \begin{center} + \begin{tikzpicture}[scale=${1:1}] + ${2} + \end{tikzpicture} + \end{center} + \caption{${3}} + \label{fig:${4}} + \end{figure} +#math +snippet stackrel + \stackrel{${1:above}}{${2:below}} ${3} +snippet frac + \frac{${1:num}}{${2:denom}} +snippet sum + \sum^{${1:n}}_{${2:i=1}}{${3}} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/snippets/text.js b/plugins/node_modules/ace/lib/ace/snippets/text.js new file mode 100644 index 00000000..434d75be --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/text.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./text.snippets"); +exports.scope = "text"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/text.snippets b/plugins/node_modules/ace/lib/ace/snippets/text.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/textile.js b/plugins/node_modules/ace/lib/ace/snippets/textile.js new file mode 100644 index 00000000..f2622e05 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/textile.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./textile.snippets"); +exports.scope = "textile"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/textile.snippets b/plugins/node_modules/ace/lib/ace/snippets/textile.snippets new file mode 100644 index 00000000..c78d6ec8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/textile.snippets @@ -0,0 +1,30 @@ +# Jekyll post header +snippet header + --- + title: ${1:title} + layout: post + date: ${2:date} ${3:hour:minute:second} -05:00 + --- + +# Image +snippet img + !${1:url}(${2:title}):${3:link}! + +# Table +snippet | + |${1}|${2} + +# Link +snippet link + "${1:link text}":${2:url} + +# Acronym +snippet ( + (${1:Expand acronym})${2} + +# Footnote +snippet fn + [${1:ref number}] ${3} + + fn$1. ${2:footnote} + diff --git a/plugins/node_modules/ace/lib/ace/snippets/tmsnippet.snippets b/plugins/node_modules/ace/lib/ace/snippets/tmsnippet.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/toml.js b/plugins/node_modules/ace/lib/ace/snippets/toml.js new file mode 100644 index 00000000..419b06d8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/toml.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./toml.snippets"); +exports.scope = "toml"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/toml.snippets b/plugins/node_modules/ace/lib/ace/snippets/toml.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/tsx.js b/plugins/node_modules/ace/lib/ace/snippets/tsx.js new file mode 100644 index 00000000..457e33b2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/tsx.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./tsx.snippets"); +exports.scope = "tsx"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/tsx.snippets b/plugins/node_modules/ace/lib/ace/snippets/tsx.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/turtle.js b/plugins/node_modules/ace/lib/ace/snippets/turtle.js new file mode 100644 index 00000000..359d9103 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/turtle.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./.snippets"); +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/turtle.snippets b/plugins/node_modules/ace/lib/ace/snippets/turtle.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/twig.js b/plugins/node_modules/ace/lib/ace/snippets/twig.js new file mode 100644 index 00000000..b08b884c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/twig.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./twig.snippets"); +exports.scope = "twig"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/twig.snippets b/plugins/node_modules/ace/lib/ace/snippets/twig.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/typescript.js b/plugins/node_modules/ace/lib/ace/snippets/typescript.js new file mode 100644 index 00000000..495da3f3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/typescript.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./typescript.snippets"); +exports.scope = "typescript"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/typescript.snippets b/plugins/node_modules/ace/lib/ace/snippets/typescript.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/vala.js b/plugins/node_modules/ace/lib/ace/snippets/vala.js new file mode 100644 index 00000000..6092d3c1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/vala.js @@ -0,0 +1,195 @@ +define(function(require, exports, module) { +"use strict"; + +// exports.snippetText = require("../requirejs/text!./.snippets"); +exports.snippets = [ + { + "content": "case ${1:condition}:\n\t$0\n\tbreak;\n", + "name": "case", + "scope": "vala", + "tabTrigger": "case" + }, + { + "content": "/**\n * ${6}\n */\n${1:public} class ${2:MethodName}${3: : GLib.Object} {\n\n\t/**\n\t * ${7}\n\t */\n\tpublic ${2}(${4}) {\n\t\t${5}\n\t}\n\n\t$0\n}", + "name": "class", + "scope": "vala", + "tabTrigger": "class" + }, + { + "content": "(${1}) => {\n\t${0}\n}\n", + "name": "closure", + "scope": "vala", + "tabTrigger": "=>" + }, + { + "content": "/*\n * $0\n */", + "name": "Comment (multiline)", + "scope": "vala", + "tabTrigger": "/*" + }, + { + "content": "Console.WriteLine($1);\n$0", + "name": "Console.WriteLine (writeline)", + "scope": "vala", + "tabTrigger": "writeline" + }, + { + "content": "[DBus(name = \"$0\")]", + "name": "DBus annotation", + "scope": "vala", + "tabTrigger": "[DBus" + }, + { + "content": "delegate ${1:void} ${2:DelegateName}($0);", + "name": "delegate", + "scope": "vala", + "tabTrigger": "delegate" + }, + { + "content": "do {\n\t$0\n} while ($1);\n", + "name": "do while", + "scope": "vala", + "tabTrigger": "dowhile" + }, + { + "content": "/**\n * $0\n */", + "name": "DocBlock", + "scope": "vala", + "tabTrigger": "/**" + }, + { + "content": "else if ($1) {\n\t$0\n}\n", + "name": "else if (elseif)", + "scope": "vala", + "tabTrigger": "elseif" + }, + { + "content": "else {\n\t$0\n}", + "name": "else", + "scope": "vala", + "tabTrigger": "else" + }, + { + "content": "enum {$1:EnumName} {\n\t$0\n}", + "name": "enum", + "scope": "vala", + "tabTrigger": "enum" + }, + { + "content": "public errordomain ${1:Error} {\n\t$0\n}", + "name": "error domain", + "scope": "vala", + "tabTrigger": "errordomain" + }, + { + "content": "for ($1;$2;$3) {\n\t$0\n}", + "name": "for", + "scope": "vala", + "tabTrigger": "for" + }, + { + "content": "foreach ($1 in $2) {\n\t$0\n}", + "name": "foreach", + "scope": "vala", + "tabTrigger": "foreach" + }, + { + "content": "Gee.ArrayList<${1:G}>($0);", + "name": "Gee.ArrayList", + "scope": "vala", + "tabTrigger": "ArrayList" + }, + { + "content": "Gee.HashMap<${1:K},${2:V}>($0);", + "name": "Gee.HashMap", + "scope": "vala", + "tabTrigger": "HashMap" + }, + { + "content": "Gee.HashSet<${1:G}>($0);", + "name": "Gee.HashSet", + "scope": "vala", + "tabTrigger": "HashSet" + }, + { + "content": "if ($1) {\n\t$0\n}", + "name": "if", + "scope": "vala", + "tabTrigger": "if" + }, + { + "content": "interface ${1:InterfaceName}{$2: : SuperInterface} {\n\t$0\n}", + "name": "interface", + "scope": "vala", + "tabTrigger": "interface" + }, + { + "content": "public static int main(string [] argv) {\n\t${0}\n\treturn 0;\n}", + "name": "Main function", + "scope": "vala", + "tabTrigger": "main" + }, + { + "content": "namespace $1 {\n\t$0\n}\n", + "name": "namespace (ns)", + "scope": "vala", + "tabTrigger": "ns" + }, + { + "content": "stdout.printf($0);", + "name": "printf", + "scope": "vala", + "tabTrigger": "printf" + }, + { + "content": "${1:public} ${2:Type} ${3:Name} {\n\tset {\n\t\t$0\n\t}\n\tget {\n\n\t}\n}", + "name": "property (prop)", + "scope": "vala", + "tabTrigger": "prop" + }, + { + "content": "${1:public} ${2:Type} ${3:Name} {\n\tget {\n\t\t$0\n\t}\n}", + "name": "read-only property (roprop)", + "scope": "vala", + "tabTrigger": "roprop" + }, + { + "content": "@\"${1:\\$var}\"", + "name": "String template (@)", + "scope": "vala", + "tabTrigger": "@" + }, + { + "content": "struct ${1:StructName} {\n\t$0\n}", + "name": "struct", + "scope": "vala", + "tabTrigger": "struct" + }, + { + "content": "switch ($1) {\n\t$0\n}", + "name": "switch", + "scope": "vala", + "tabTrigger": "switch" + }, + { + "content": "try {\n\t$2\n} catch (${1:Error} e) {\n\t$0\n}", + "name": "try/catch", + "scope": "vala", + "tabTrigger": "try" + }, + { + "content": "\"\"\"$0\"\"\";", + "name": "Verbatim string (\"\"\")", + "scope": "vala", + "tabTrigger": "verbatim" + }, + { + "content": "while ($1) {\n\t$0\n}", + "name": "while", + "scope": "vala", + "tabTrigger": "while" + } +]; +exports.scope = ""; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/vala.snippets b/plugins/node_modules/ace/lib/ace/snippets/vala.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/vbscript.js b/plugins/node_modules/ace/lib/ace/snippets/vbscript.js new file mode 100644 index 00000000..5ab8e650 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/vbscript.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./vbscript.snippets"); +exports.scope = "vbscript"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/vbscript.snippets b/plugins/node_modules/ace/lib/ace/snippets/vbscript.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/velocity.js b/plugins/node_modules/ace/lib/ace/snippets/velocity.js new file mode 100644 index 00000000..ba522dd2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/velocity.js @@ -0,0 +1,8 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./velocity.snippets"); +exports.scope = "velocity"; +exports.includeScopes = ["html", "javascript", "css"]; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/velocity.snippets b/plugins/node_modules/ace/lib/ace/snippets/velocity.snippets new file mode 100644 index 00000000..dedca589 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/velocity.snippets @@ -0,0 +1,28 @@ +# macro +snippet #macro + #macro ( ${1:macroName} ${2:\$var1, [\$var2, ...]} ) + ${3:## macro code} + #end +# foreach +snippet #foreach + #foreach ( ${1:\$item} in ${2:\$collection} ) + ${3:## foreach code} + #end +# if +snippet #if + #if ( ${1:true} ) + ${0} + #end +# if ... else +snippet #ife + #if ( ${1:true} ) + ${2} + #else + ${0} + #end +#import +snippet #import + #import ( "${1:path/to/velocity/format}" ) +# set +snippet #set + #set ( $${1:var} = ${0} ) diff --git a/plugins/node_modules/ace/lib/ace/snippets/verilog.js b/plugins/node_modules/ace/lib/ace/snippets/verilog.js new file mode 100644 index 00000000..7360341e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/verilog.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./verilog.snippets"); +exports.scope = "verilog"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/verilog.snippets b/plugins/node_modules/ace/lib/ace/snippets/verilog.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/vhdl.js b/plugins/node_modules/ace/lib/ace/snippets/vhdl.js new file mode 100644 index 00000000..fe5e708f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/vhdl.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./vhdl.snippets"); +exports.scope = "vhdl"; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/snippets/vhdl.snippets b/plugins/node_modules/ace/lib/ace/snippets/vhdl.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/wollok.js b/plugins/node_modules/ace/lib/ace/snippets/wollok.js new file mode 100644 index 00000000..4a52bf2d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/wollok.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./wollok.snippets"); +exports.scope = "wollok"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/wollok.snippets b/plugins/node_modules/ace/lib/ace/snippets/wollok.snippets new file mode 100644 index 00000000..f98f8587 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/wollok.snippets @@ -0,0 +1,85 @@ +## +## Basic Java packages and import +snippet im + import +snippet w.l + wollok.lang +snippet w.i + wollok.lib + +## Class and object +snippet cl + class ${1:`Filename("", "untitled")`} ${2} +snippet obj + object ${1:`Filename("", "untitled")`} ${2:inherits Parent}${3} +snippet te + test ${1:`Filename("", "untitled")`} + +## +## Enhancements +snippet inh + inherits + +## +## Comments +snippet /* + /* + * ${1} + */ + +## +## Control Statements +snippet el + else +snippet if + if (${1}) ${2} + +## +## Create a Method +snippet m + method ${1:method}(${2}) ${5} + +## +## Tests +snippet as + assert.equals(${1:expected}, ${2:actual}) + +## +## Exceptions +snippet ca + catch ${1:e} : (${2:Exception} ) ${3} +snippet thr + throw +snippet try + try { + ${3} + } catch ${1:e} : ${2:Exception} { + } + +## +## Javadocs +snippet /** + /** + * ${1} + */ + +## +## Print Methods +snippet print + console.println("${1:Message}") + +## +## Setter and Getter Methods +snippet set + method set${1:}(${2:}) { + $1 = $2 + } +snippet get + method get${1:}() { + return ${1:}; + } + +## +## Terminate Methods or Loops +snippet re + return \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/snippets/xml.js b/plugins/node_modules/ace/lib/ace/snippets/xml.js new file mode 100644 index 00000000..83b1870c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/xml.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./xml.snippets"); +exports.scope = "xml"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/xml.snippets b/plugins/node_modules/ace/lib/ace/snippets/xml.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets/xquery.js b/plugins/node_modules/ace/lib/ace/snippets/xquery.js new file mode 100644 index 00000000..d96a0619 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/xquery.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./xquery.snippets"); +exports.scope = "xquery"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/xquery.snippets b/plugins/node_modules/ace/lib/ace/snippets/xquery.snippets new file mode 100644 index 00000000..965034b7 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/xquery.snippets @@ -0,0 +1,61 @@ +snippet for + for $${1:item} in ${2:expr} +snippet return + return ${1:expr} +snippet import + import module namespace ${1:ns} = "${2:http://www.example.com/}"; +snippet some + some $${1:varname} in ${2:expr} satisfies ${3:expr} +snippet every + every $${1:varname} in ${2:expr} satisfies ${3:expr} +snippet if + if(${1:true}) then ${2:expr} else ${3:true} +snippet switch + switch(${1:"foo"}) + case ${2:"foo"} + return ${3:true} + default return ${4:false} +snippet try + try { ${1:expr} } catch ${2:*} { ${3:expr} } +snippet tumbling + for tumbling window $${1:varname} in ${2:expr} + start at $${3:start} when ${4:expr} + end at $${5:end} when ${6:expr} + return ${7:expr} +snippet sliding + for sliding window $${1:varname} in ${2:expr} + start at $${3:start} when ${4:expr} + end at $${5:end} when ${6:expr} + return ${7:expr} +snippet let + let $${1:varname} := ${2:expr} +snippet group + group by $${1:varname} := ${2:expr} +snippet order + order by ${1:expr} ${2:descending} +snippet stable + stable order by ${1:expr} +snippet count + count $${1:varname} +snippet ordered + ordered { ${1:expr} } +snippet unordered + unordered { ${1:expr} } +snippet treat + treat as ${1:expr} +snippet castable + castable as ${1:atomicType} +snippet cast + cast as ${1:atomicType} +snippet typeswitch + typeswitch(${1:expr}) + case ${2:type} return ${3:expr} + default return ${4:expr} +snippet var + declare variable $${1:varname} := ${2:expr}; +snippet fn + declare function ${1:ns}:${2:name}(){ + ${3:expr} + }; +snippet module + module namespace ${1:ns} = "${2:http://www.example.com}"; diff --git a/plugins/node_modules/ace/lib/ace/snippets/xslt.snippets b/plugins/node_modules/ace/lib/ace/snippets/xslt.snippets new file mode 100644 index 00000000..e7abdf3f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/xslt.snippets @@ -0,0 +1,97 @@ +snippet apply-templates with-param + <xsl:apply-templates select="${1:*}"> + <xsl:with-param name="${2:param}">${3}</xsl:with-param>${4} + </xsl:apply-templates>${5} + +snippet apply-templates sort-by + <xsl:apply-templates select="${1:*}"> + <xsl:sort select="${2:node}" order="${3:ascending}" data-type="${4:text}">${5} + </xsl:apply-templates>${6} + +snippet apply-templates plain + <xsl:apply-templates select="${1:*}" />${2} + +snippet attribute blank + <xsl:attribute name="${1:name}">${2}</xsl:attribute>${3} + +snippet attribute value-of + <xsl:attribute name="${1:name}"> + <xsl:value-of select="${2:*}" /> + </xsl:attribute>${3} + +snippet call-template + <xsl:call-template name="${1:template}" /> + +snippet call-template with-param + <xsl:call-template name="${1:template}"> + <xsl:with-param name="${2:param}">${3}</xsl:with-param>${4} + </xsl:call-template>${5} + +snippet choose + <xsl:choose> + <xsl:when test="${1:value}"> + ${2} + </xsl:when>${3} + </xsl:choose> + +snippet copy-of + <xsl:copy-of select="${1:*}" />${2} + +snippet for-each + <xsl:for-each select="${1:*}">${2} + </xsl:for-each>${3} + +snippet if + <xsl:if test="${1:test}">${2} + </xsl:if>${3} + +snippet import + <xsl:import href="${1:stylesheet}" />${2} + +snippet include + <xsl:include href="${1:stylesheet}" />${2} + +snippet otherwise + <xsl:otherwise>${1} + </xsl:otherwise> + +snippet param + <xsl:param name="${1:name}">${2} + </xsl:param>${3} + +snippet stylesheet + <xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform">${1} + </xsl:stylesheet> + +snippet template + <xsl:template match="${1:*}">${3} + </xsl:template> + +snippet template named + <xsl:template name="${1:name}">${2} + </xsl:template> + +snippet text + <xsl:text>${1}</xsl:text> + +snippet value-of + <xsl:value-of select="${1:*}" />${2} + +snippet variable blank + <xsl:variable name="${1:name}">${2} + </xsl:variable> + +snippet variable select + <xsl:variable select="${1:*}" />${2} + +snippet when + <xsl:when test="${1:test}">${2} + </xsl:when> + +snippet with-param + <xsl:with-param name="${1:name}">${2}</xsl:with-param> + +snippet with-param select + <xsl:with-param name="${1:name}" select="${2:*}" /> + diff --git a/plugins/node_modules/ace/lib/ace/snippets/yaml.js b/plugins/node_modules/ace/lib/ace/snippets/yaml.js new file mode 100644 index 00000000..17e70a3c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets/yaml.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./yaml.snippets"); +exports.scope = "yaml"; + +}); diff --git a/plugins/node_modules/ace/lib/ace/snippets/yaml.snippets b/plugins/node_modules/ace/lib/ace/snippets/yaml.snippets new file mode 100644 index 00000000..e69de29b diff --git a/plugins/node_modules/ace/lib/ace/snippets_test.js b/plugins/node_modules/ace/lib/ace/snippets_test.js new file mode 100644 index 00000000..3b14a7f4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/snippets_test.js @@ -0,0 +1,137 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; +var EditSession = require("./edit_session").EditSession; +var Editor = require("./editor").Editor; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var MultiSelect = require("./multi_select").MultiSelect; + +var snippetManager = require("./snippets").snippetManager; +var assert = require("./test/assertions"); + +module.exports = { + setUp : function(next) { + this.editor = new Editor(new MockRenderer()); + next(); + }, + + "test: textmate style format strings" : function() { + var fmt = snippetManager.tmStrFormat; + snippetManager.tmStrFormat("hello", { + guard: "(..)(.)(.)", + flag:"g", + fmt: "a\\UO\\l$1\\E$2" + }) == "aOHElo"; + }, + "test: parse snipmate file" : function() { + var expected = [{ + name: "a", + guard: "(?:(=)|(:))?\\s*)", + trigger: "\\(?f", + endTrigger: "\\)", + endGuard: "", + content: "{$0}\n" + }, { + tabTrigger: "f", + name: "f function", + content: "function" + }]; + + var parsed = snippetManager.parseSnippetFile( + "name a\nregex /(?:(=)|(:))?\\s*)/\\(?f/\\)/\n\t{$0}" + + "\n\t\n\n#function\nsnippet f function\n\tfunction" + ); + + assert.equal(JSON.stringify(expected, null, 4), JSON.stringify(parsed, null, 4)); + }, + "test: parse snippet": function() { + var content = "-\\$$2a${1:x${$2:y$3\\}\\n\\}$TM_SELECTION}"; + var tokens = snippetManager.tokenizeTmSnippet(content); + assert.equal(tokens.length, 15); + assert.equal(tokens[4], tokens[14]); + assert.equal(tokens[2].tabstopId, 2); + + var content = "\\}${var/as\\/d/\\ul\\//g:s}"; + var tokens = snippetManager.tokenizeTmSnippet(content); + assert.equal(tokens.length, 4); + assert.equal(tokens[1], tokens[3]); + assert.equal(tokens[2], "s"); + assert.equal(tokens[1].text, "var"); + assert.equal(tokens[1].fmt, "\\ul\\/"); + assert.equal(tokens[1].guard, "as\\/d"); + assert.equal(tokens[1].flag, "g"); + }, + "test: expand snippet with nested tabstops": function() { + var content = "-${1}-${1:t\n1}--${2:2 ${3} 2}-${3:3 $1 3}-${4:4 $2 4}"; + this.editor.setValue(""); + snippetManager.insertSnippet(this.editor, content); + assert.equal(this.editor.getValue(), [ + "-t", + "1-t", + "1--2 3 t", + "1 3 2-3 t", + "1 3-4 2 3 t", + "1 3 2 4" + ].join("\n")); + + assert.equal(this.editor.getSelectedText(), "t\n1\nt\n1\nt\n1\nt\n1\nt\n1"); + this.editor.tabstopManager.tabNext(); + assert.equal(this.editor.getSelectedText(), "2 3 t\n1 3 2\n2 3 t\n1 3 2"); + this.editor.tabstopManager.tabNext(); + assert.equal(this.editor.getSelectedText(), "3 t\n1 3\n3 t\n1 3\n3 t\n1 3"); + this.editor.tabstopManager.tabNext(); + assert.equal(this.editor.getSelectedText(), "4 2 3 t\n1 3 2 4"); + this.editor.tabstopManager.tabNext(); + assert.equal(this.editor.getSelectedText(), ""); + + this.editor.setValue(""); + snippetManager.insertSnippet(this.editor, "-${1:a$2}-${2:b$1}"); + assert.equal(this.editor.getValue(), "-ab-ba"); + + assert.equal(this.editor.getSelectedText(), "ab\na"); + this.editor.tabstopManager.tabNext(); + assert.equal(this.editor.getSelectedText(), "b\nba"); + this.editor.tabstopManager.tabNext(); + assert.equal(this.editor.getSelectedText(), ""); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/split.js b/plugins/node_modules/ace/lib/ace/split.js new file mode 100644 index 00000000..e960c128 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/split.js @@ -0,0 +1,326 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var lang = require("./lib/lang"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; + +var Editor = require("./editor").Editor; +var Renderer = require("./virtual_renderer").VirtualRenderer; +var EditSession = require("./edit_session").EditSession; + +/** + * @class Split + * + **/ + + +var Split = function(container, theme, splits) { + this.BELOW = 1; + this.BESIDE = 0; + + this.$container = container; + this.$theme = theme; + this.$splits = 0; + this.$editorCSS = ""; + this.$editors = []; + this.$orientation = this.BESIDE; + + this.setSplits(splits || 1); + this.$cEditor = this.$editors[0]; + + + this.on("focus", function(editor) { + this.$cEditor = editor; + }.bind(this)); +}; + +(function(){ + + oop.implement(this, EventEmitter); + + this.$createEditor = function() { + var el = document.createElement("div"); + el.className = this.$editorCSS; + el.style.cssText = "position: absolute; top:0px; bottom:0px"; + this.$container.appendChild(el); + var editor = new Editor(new Renderer(el, this.$theme)); + + editor.on("focus", function() { + this._emit("focus", editor); + }.bind(this)); + + this.$editors.push(editor); + editor.setFontSize(this.$fontSize); + return editor; + }; + + this.setSplits = function(splits) { + var editor; + if (splits < 1) { + throw "The number of splits have to be > 0!"; + } + + if (splits == this.$splits) { + return; + } else if (splits > this.$splits) { + while (this.$splits < this.$editors.length && this.$splits < splits) { + editor = this.$editors[this.$splits]; + this.$container.appendChild(editor.container); + editor.setFontSize(this.$fontSize); + this.$splits ++; + } + while (this.$splits < splits) { + this.$createEditor(); + this.$splits ++; + } + } else { + while (this.$splits > splits) { + editor = this.$editors[this.$splits - 1]; + this.$container.removeChild(editor.container); + this.$splits --; + } + } + this.resize(); + }; + + /** + * + * Returns the number of splits. + * @returns {Number} + **/ + this.getSplits = function() { + return this.$splits; + }; + + /** + * @param {Number} idx The index of the editor you want + * + * Returns the editor identified by the index `idx`. + * + **/ + this.getEditor = function(idx) { + return this.$editors[idx]; + }; + + /** + * + * Returns the current editor. + * @returns {Editor} + **/ + this.getCurrentEditor = function() { + return this.$cEditor; + }; + + /** + * Focuses the current editor. + * @related Editor.focus + **/ + this.focus = function() { + this.$cEditor.focus(); + }; + + /** + * Blurs the current editor. + * @related Editor.blur + **/ + this.blur = function() { + this.$cEditor.blur(); + }; + + /** + * + * @param {String} theme The name of the theme to set + * + * Sets a theme for each of the available editors. + * @related Editor.setTheme + **/ + this.setTheme = function(theme) { + this.$editors.forEach(function(editor) { + editor.setTheme(theme); + }); + }; + + /** + * + * @param {String} keybinding + * + * Sets the keyboard handler for the editor. + * @related editor.setKeyboardHandler + **/ + this.setKeyboardHandler = function(keybinding) { + this.$editors.forEach(function(editor) { + editor.setKeyboardHandler(keybinding); + }); + }; + + /** + * + * @param {Function} callback A callback function to execute + * @param {String} scope The default scope for the callback + * + * Executes `callback` on all of the available editors. + * + **/ + this.forEach = function(callback, scope) { + this.$editors.forEach(callback, scope); + }; + + + this.$fontSize = ""; + /** + * @param {Number} size The new font size + * + * Sets the font size, in pixels, for all the available editors. + * + **/ + this.setFontSize = function(size) { + this.$fontSize = size; + this.forEach(function(editor) { + editor.setFontSize(size); + }); + }; + + this.$cloneSession = function(session) { + var s = new EditSession(session.getDocument(), session.getMode()); + + var undoManager = session.getUndoManager(); + s.setUndoManager(undoManager); + + // Copy over 'settings' from the session. + s.setTabSize(session.getTabSize()); + s.setUseSoftTabs(session.getUseSoftTabs()); + s.setOverwrite(session.getOverwrite()); + s.setBreakpoints(session.getBreakpoints()); + s.setUseWrapMode(session.getUseWrapMode()); + s.setUseWorker(session.getUseWorker()); + s.setWrapLimitRange(session.$wrapLimitRange.min, + session.$wrapLimitRange.max); + s.$foldData = session.$cloneFoldData(); + + return s; + }; + + /** + * + * @param {EditSession} session The new edit session + * @param {Number} idx The editor's index you're interested in + * + * Sets a new [[EditSession `EditSession`]] for the indicated editor. + * @related Editor.setSession + **/ + this.setSession = function(session, idx) { + var editor; + if (idx == null) { + editor = this.$cEditor; + } else { + editor = this.$editors[idx]; + } + + // Check if the session is used already by any of the editors in the + // split. If it is, we have to clone the session as two editors using + // the same session can cause terrible side effects (e.g. UndoQueue goes + // wrong). This also gives the user of Split the possibility to treat + // each session on each split editor different. + var isUsed = this.$editors.some(function(editor) { + return editor.session === session; + }); + + if (isUsed) { + session = this.$cloneSession(session); + } + editor.setSession(session); + + // Return the session set on the editor. This might be a cloned one. + return session; + }; + + /** + * + * Returns the orientation. + * @returns {Number} + **/ + this.getOrientation = function() { + return this.$orientation; + }; + + /** + * + * Sets the orientation. + * @param {Number} orientation The new orientation value + * + * + **/ + this.setOrientation = function(orientation) { + if (this.$orientation == orientation) { + return; + } + this.$orientation = orientation; + this.resize(); + }; + + /** + * Resizes the editor. + **/ + this.resize = function() { + var width = this.$container.clientWidth; + var height = this.$container.clientHeight; + var editor; + + if (this.$orientation == this.BESIDE) { + var editorWidth = width / this.$splits; + for (var i = 0; i < this.$splits; i++) { + editor = this.$editors[i]; + editor.container.style.width = editorWidth + "px"; + editor.container.style.top = "0px"; + editor.container.style.left = i * editorWidth + "px"; + editor.container.style.height = height + "px"; + editor.resize(); + } + } else { + var editorHeight = height / this.$splits; + for (var i = 0; i < this.$splits; i++) { + editor = this.$editors[i]; + editor.container.style.width = width + "px"; + editor.container.style.top = i * editorHeight + "px"; + editor.container.style.left = "0px"; + editor.container.style.height = editorHeight + "px"; + editor.resize(); + } + } + }; + +}).call(Split.prototype); + +exports.Split = Split; +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/ambiance.css b/plugins/node_modules/ace/lib/ace/theme/ambiance.css new file mode 100644 index 00000000..6e5a4ae5 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/ambiance.css @@ -0,0 +1,216 @@ +.ace-ambiance .ace_gutter { + background-color: #3d3d3d; + background-image: linear-gradient(left, #3D3D3D, #333); + background-repeat: repeat-x; + border-right: 1px solid #4d4d4d; + text-shadow: 0px 1px 1px #4d4d4d; + color: #222; +} + +.ace-ambiance .ace_gutter-layer { + background: repeat left top; +} + +.ace-ambiance .ace_gutter-active-line { + background-color: #3F3F3F; +} + +.ace-ambiance .ace_fold-widget { + text-align: center; +} + +.ace-ambiance .ace_fold-widget:hover { + color: #777; +} + +.ace-ambiance .ace_fold-widget.ace_start, +.ace-ambiance .ace_fold-widget.ace_end, +.ace-ambiance .ace_fold-widget.ace_closed{ + background: none; + border: none; + box-shadow: none; +} + +.ace-ambiance .ace_fold-widget.ace_start:after { + content: 'â–¾' +} + +.ace-ambiance .ace_fold-widget.ace_end:after { + content: 'â–´' +} + +.ace-ambiance .ace_fold-widget.ace_closed:after { + content: '‣' +} + +.ace-ambiance .ace_print-margin { + border-left: 1px dotted #2D2D2D; + right: 0; + background: #262626; +} + +.ace-ambiance .ace_scroller { + -webkit-box-shadow: inset 0 0 10px black; + -moz-box-shadow: inset 0 0 10px black; + -o-box-shadow: inset 0 0 10px black; + box-shadow: inset 0 0 10px black; +} + +.ace-ambiance { + color: #E6E1DC; + background-color: #202020; +} + +.ace-ambiance .ace_cursor { + border-left: 1px solid #7991E8; +} + +.ace-ambiance .ace_overwrite-cursors .ace_cursor { + border: 1px solid #FFE300; + background: #766B13; +} + +.ace-ambiance.normal-mode .ace_cursor-layer { + z-index: 0; +} + +.ace-ambiance .ace_marker-layer .ace_selection { + background: rgba(221, 240, 255, 0.20); +} + +.ace-ambiance .ace_marker-layer .ace_selected-word { + border-radius: 4px; + border: 8px solid #3f475d; + box-shadow: 0 0 4px black; +} + +.ace-ambiance .ace_marker-layer .ace_step { + background: rgb(198, 219, 174); +} + +.ace-ambiance .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(255, 255, 255, 0.25); +} + +.ace-ambiance .ace_marker-layer .ace_active-line { + background: rgba(255, 255, 255, 0.031); +} + +.ace-ambiance .ace_invisible { + color: #333; +} + +.ace-ambiance .ace_paren { + color: #24C2C7; +} + +.ace-ambiance .ace_keyword { + color: #cda869; +} + +.ace-ambiance .ace_keyword.ace_operator { + color: #fa8d6a; +} + +.ace-ambiance .ace_punctuation.ace_operator { + color: #fa8d6a; +} + +.ace-ambiance .ace_identifier { +} + +.ace-ambiance .ace-statement { + color: #cda869; +} + +.ace-ambiance .ace_constant { + color: #CF7EA9; +} + +.ace-ambiance .ace_constant.ace_language { + color: #CF7EA9; +} + +.ace-ambiance .ace_constant.ace_library { + +} + +.ace-ambiance .ace_constant.ace_numeric { + color: #78CF8A; +} + +.ace-ambiance .ace_invalid { + text-decoration: underline; +} + +.ace-ambiance .ace_invalid.ace_illegal { + color:#F8F8F8; + background-color: rgba(86, 45, 86, 0.75); +} + +.ace-ambiance .ace_invalid, +.ace-ambiance .ace_deprecated { + text-decoration: underline; + font-style: italic; + color: #D2A8A1; +} + +.ace-ambiance .ace_support { + color: #9B859D; +} + +.ace-ambiance .ace_support.ace_function { + color: #DAD085; +} + +.ace-ambiance .ace_function.ace_buildin { + color: #9b859d; +} + +.ace-ambiance .ace_string { + color: #8f9d6a; +} + +.ace-ambiance .ace_string.ace_regexp { + color: #DAD085; +} + +.ace-ambiance .ace_comment { + font-style: italic; + color: #555; +} + +.ace-ambiance .ace_comment.ace_doc { +} + +.ace-ambiance .ace_comment.ace_doc.ace_tag { + color: #666; + font-style: normal; +} + +.ace-ambiance .ace_definition, +.ace-ambiance .ace_type { + color: #aac6e3; +} + +.ace-ambiance .ace_variable { + color: #9999cc; +} + +.ace-ambiance .ace_variable.ace_language { + color: #9b859d; +} + +.ace-ambiance .ace_xml-pe { + color: #494949; +} + +.ace-ambiance .ace_gutter-layer, +.ace-ambiance .ace_text-layer { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC"); +} + +.ace-ambiance .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC") right repeat-y; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/ambiance.js b/plugins/node_modules/ace/lib/ace/theme/ambiance.js new file mode 100644 index 00000000..475c2e87 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/ambiance.js @@ -0,0 +1,33 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright 2011 Irakli Gozalishvili. All rights reserved. + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-ambiance"; +exports.cssText = require("../requirejs/text!./ambiance.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/chaos.css b/plugins/node_modules/ace/lib/ace/theme/chaos.css new file mode 100644 index 00000000..f57e59b3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/chaos.css @@ -0,0 +1,154 @@ +.ace-chaos .ace_gutter { + background: #141414; + color: #595959; + border-right: 1px solid #282828; +} +.ace-chaos .ace_gutter-cell.ace_warning { + background-image: none; + background: #FC0; + border-left: none; + padding-left: 0; + color: #000; +} +.ace-chaos .ace_gutter-cell.ace_error { + background-position: -6px center; + background-image: none; + background: #F10; + border-left: none; + padding-left: 0; + color: #000; +} +.ace-chaos .ace_print-margin { + border-left: 1px solid #555; + right: 0; + background: #1D1D1D; +} +.ace-chaos { + background-color: #161616; + color: #E6E1DC; +} + +.ace-chaos .ace_cursor { + border-left: 2px solid #FFFFFF; +} +.ace-chaos .ace_cursor.ace_overwrite { + border-left: 0px; + border-bottom: 1px solid #FFFFFF; +} +.ace-chaos .ace_marker-layer .ace_selection { + background: #494836; +} +.ace-chaos .ace_marker-layer .ace_step { + background: rgb(198, 219, 174); +} +.ace-chaos .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #FCE94F; +} +.ace-chaos .ace_marker-layer .ace_active-line { + background: #333; +} +.ace-chaos .ace_gutter-active-line { + background-color: #222; +} +.ace-chaos .ace_invisible { + color: #404040; +} +.ace-chaos .ace_keyword { + color:#00698F; +} +.ace-chaos .ace_keyword.ace_operator { + color:#FF308F; +} +.ace-chaos .ace_constant { + color:#1EDAFB; +} +.ace-chaos .ace_constant.ace_language { + color:#FDC251; +} +.ace-chaos .ace_constant.ace_library { + color:#8DFF0A; +} +.ace-chaos .ace_constant.ace_numeric { + color:#58C554; +} +.ace-chaos .ace_invalid { + color:#FFFFFF; + background-color:#990000; +} +.ace-chaos .ace_invalid.ace_deprecated { + color:#FFFFFF; + background-color:#990000; +} +.ace-chaos .ace_support { + color: #999; +} +.ace-chaos .ace_support.ace_function { + color:#00AEEF; +} +.ace-chaos .ace_function { + color:#00AEEF; +} +.ace-chaos .ace_string { + color:#58C554; +} +.ace-chaos .ace_comment { + color:#555; + font-style:italic; + padding-bottom: 0px; +} +.ace-chaos .ace_variable { + color:#997744; +} +.ace-chaos .ace_meta.ace_tag { + color:#BE53E6; +} +.ace-chaos .ace_entity.ace_other.ace_attribute-name { + color:#FFFF89; +} +.ace-chaos .ace_markup.ace_underline { + text-decoration: underline; +} +.ace-chaos .ace_fold-widget { + text-align: center; +} + +.ace-chaos .ace_fold-widget:hover { + color: #777; +} + +.ace-chaos .ace_fold-widget.ace_start, +.ace-chaos .ace_fold-widget.ace_end, +.ace-chaos .ace_fold-widget.ace_closed{ + background: none; + border: none; + box-shadow: none; +} + +.ace-chaos .ace_fold-widget.ace_start:after { + content: 'â–¾' +} + +.ace-chaos .ace_fold-widget.ace_end:after { + content: 'â–´' +} + +.ace-chaos .ace_fold-widget.ace_closed:after { + content: '‣' +} + +.ace-chaos .ace_indent-guide { + border-right:1px dotted #333; + margin-right:-1px; +} + +.ace-chaos .ace_fold { + background: #222; + border-radius: 3px; + color: #7AF; + border: none; +} +.ace-chaos .ace_fold:hover { + background: #CCC; + color: #000; +} diff --git a/plugins/node_modules/ace/lib/ace/theme/chaos.js b/plugins/node_modules/ace/lib/ace/theme/chaos.js new file mode 100644 index 00000000..9ee83720 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/chaos.js @@ -0,0 +1,33 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright 2011 Irakli Gozalishvili. All rights reserved. + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-chaos"; +exports.cssText = require("../requirejs/text!./chaos.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/chrome.css b/plugins/node_modules/ace/lib/ace/theme/chrome.css new file mode 100644 index 00000000..c91e802a --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/chrome.css @@ -0,0 +1,154 @@ +.ace-chrome .ace_gutter { + background: #ebebeb; + color: #333; + overflow : hidden; +} + +.ace-chrome .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-chrome { + background-color: #FFFFFF; + color: black; +} + +.ace-chrome .ace_cursor { + color: black; +} + +.ace-chrome .ace_invisible { + color: rgb(191, 191, 191); +} + +.ace-chrome .ace_constant.ace_buildin { + color: rgb(88, 72, 246); +} + +.ace-chrome .ace_constant.ace_language { + color: rgb(88, 92, 246); +} + +.ace-chrome .ace_constant.ace_library { + color: rgb(6, 150, 14); +} + +.ace-chrome .ace_invalid { + background-color: rgb(153, 0, 0); + color: white; +} + +.ace-chrome .ace_fold { +} + +.ace-chrome .ace_support.ace_function { + color: rgb(60, 76, 114); +} + +.ace-chrome .ace_support.ace_constant { + color: rgb(6, 150, 14); +} + +.ace-chrome .ace_support.ace_type, +.ace-chrome .ace_support.ace_class +.ace-chrome .ace_support.ace_other { + color: rgb(109, 121, 222); +} + +.ace-chrome .ace_variable.ace_parameter { + font-style:italic; + color:#FD971F; +} +.ace-chrome .ace_keyword.ace_operator { + color: rgb(104, 118, 135); +} + +.ace-chrome .ace_comment { + color: #236e24; +} + +.ace-chrome .ace_comment.ace_doc { + color: #236e24; +} + +.ace-chrome .ace_comment.ace_doc.ace_tag { + color: #236e24; +} + +.ace-chrome .ace_constant.ace_numeric { + color: rgb(0, 0, 205); +} + +.ace-chrome .ace_variable { + color: rgb(49, 132, 149); +} + +.ace-chrome .ace_xml-pe { + color: rgb(104, 104, 91); +} + +.ace-chrome .ace_entity.ace_name.ace_function { + color: #0000A2; +} + + +.ace-chrome .ace_heading { + color: rgb(12, 7, 255); +} + +.ace-chrome .ace_list { + color:rgb(185, 6, 144); +} + +.ace-chrome .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} + +.ace-chrome .ace_marker-layer .ace_step { + background: rgb(252, 255, 0); +} + +.ace-chrome .ace_marker-layer .ace_stack { + background: rgb(164, 229, 101); +} + +.ace-chrome .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-chrome .ace_marker-layer .ace_active-line { + background: rgba(0, 0, 0, 0.07); +} + +.ace-chrome .ace_gutter-active-line { + background-color : #dcdcdc; +} + +.ace-chrome .ace_marker-layer .ace_selected-word { + background: rgb(250, 250, 255); + border: 1px solid rgb(200, 200, 250); +} + +.ace-chrome .ace_storage, +.ace-chrome .ace_keyword, +.ace-chrome .ace_meta.ace_tag { + color: rgb(147, 15, 128); +} + +.ace-chrome .ace_string.ace_regex { + color: rgb(255, 0, 0) +} + +.ace-chrome .ace_string { + color: #1A1AA6; +} + +.ace-chrome .ace_entity.ace_other.ace_attribute-name { + color: #994409; +} + +.ace-chrome .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} diff --git a/plugins/node_modules/ace/lib/ace/theme/chrome.js b/plugins/node_modules/ace/lib/ace/theme/chrome.js new file mode 100644 index 00000000..dafa99c2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/chrome.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-chrome"; +exports.cssText = require("../requirejs/text!./chrome.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/cloud9_day.css b/plugins/node_modules/ace/lib/ace/theme/cloud9_day.css new file mode 100644 index 00000000..ec1b56b1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/cloud9_day.css @@ -0,0 +1,154 @@ +.ace-cloud9-day .ace_gutter { + background: #ECECEC; + color: #333; +} + +.ace-cloud9-day .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-cloud9-day .ace_fold { + background-color: #6B72E6; +} + +.ace-cloud9-day { + background-color: #FBFBFB; + color: black; +} + +.ace-cloud9-day .ace_cursor { + color: black; +} + +.ace-cloud9-day .ace_invisible { + color: rgb(191, 191, 191); +} + +.ace-cloud9-day .ace_storage, +.ace-cloud9-day .ace_keyword { + color: rgb(24, 122, 234); +} + +.ace-cloud9-day .ace_constant { + color: rgb(197, 6, 11); +} + +.ace-cloud9-day .ace_constant.ace_buildin { + color: rgb(88, 72, 246); +} + +.ace-cloud9-day .ace_constant.ace_language { + color: rgb(88, 92, 246); +} + +.ace-cloud9-day .ace_constant.ace_library { + color: rgb(6, 150, 14); +} + +.ace-cloud9-day .ace_invalid { + background-color: rgba(255, 0, 0, 0.1); + color: red; +} + +.ace-cloud9-day .ace_support.ace_function { + color: rgb(60, 76, 114); +} + +.ace-cloud9-day .ace_support.ace_constant { + color: rgb(6, 150, 14); +} + +.ace-cloud9-day .ace_support.ace_type, +.ace-cloud9-day .ace_support.ace_class { + color: rgb(109, 121, 222); +} + +.ace-cloud9-day .ace_keyword.ace_operator { + color: rgb(104, 118, 135); +} + +.ace-cloud9-day .ace_string { + color: rgb(3, 106, 7); +} + +.ace-cloud9-day .ace_comment { + color: rgb(76, 136, 107); +} + +.ace-cloud9-day .ace_comment.ace_doc { + color: rgb(0, 102, 255); +} + +.ace-cloud9-day .ace_comment.ace_doc.ace_tag { + color: rgb(128, 159, 191); +} + +.ace-cloud9-day .ace_constant.ace_numeric { + color: rgb(0, 0, 205); +} + +.ace-cloud9-day .ace_variable { + color: rgb(49, 132, 149); +} + +.ace-cloud9-day .ace_xml-pe { + color: rgb(104, 104, 91); +} + +.ace-cloud9-day .ace_entity.ace_name.ace_function { + color: #0000A2; +} + + +.ace-cloud9-day .ace_heading { + color: rgb(12, 7, 255); +} + +.ace-cloud9-day .ace_list { + color:rgb(185, 6, 144); +} + +.ace-cloud9-day .ace_meta.ace_tag { + color:rgb(0, 22, 142); +} + +.ace-cloud9-day .ace_string.ace_regex { + color: rgb(255, 0, 0) +} + +.ace-cloud9-day .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} +.ace-cloud9-day.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px white; +} +.ace-cloud9-day .ace_marker-layer .ace_step { + background: rgb(247, 237, 137); +} + +.ace-cloud9-day .ace_marker-layer .ace_stack { + background: #BAE0A0; +} + +.ace-cloud9-day .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-cloud9-day .ace_marker-layer .ace_active-line { + background: rgba(0, 0, 0, 0.07); +} + +.ace-cloud9-day .ace_gutter-active-line { + background-color : #E5E5E5; +} + +.ace-cloud9-day .ace_marker-layer .ace_selected-word { + background: rgb(250, 250, 255); + border: 1px solid rgb(200, 200, 250); +} + +.ace-cloud9-day .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} diff --git a/plugins/node_modules/ace/lib/ace/theme/cloud9_day.js b/plugins/node_modules/ace/lib/ace/theme/cloud9_day.js new file mode 100644 index 00000000..d6c2f1d0 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/cloud9_day.js @@ -0,0 +1,40 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +exports.isDark = false; +exports.cssClass = "ace-cloud9-day"; +exports.cssText = require("../requirejs/text!./cloud9_day.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/cloud9_night.css b/plugins/node_modules/ace/lib/ace/theme/cloud9_night.css new file mode 100644 index 00000000..e30842b3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/cloud9_night.css @@ -0,0 +1,140 @@ +.ace-cloud9-night .ace_gutter { + background: #303130; + color: #eee +} + +.ace-cloud9-night .ace_print-margin { + width: 1px; + background: #222 +} + +.ace-cloud9-night { + background-color: #181818; + color: #EBEBEB +} + +.ace-cloud9-night .ace_cursor { + color: #9F9F9F +} + +.ace-cloud9-night .ace_marker-layer .ace_selection { + background: #424242 +} + +.ace-cloud9-night.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #000000; + border-radius: 2px +} + +.ace-cloud9-night .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-cloud9-night .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #888888 +} +.ace-cloud9-night .ace_marker-layer .ace_highlight { + border: 1px solid rgb(110, 119, 0); + border-bottom: 0; + box-shadow: inset 0 -1px rgb(110, 119, 0); + margin: -1px 0 0 -1px; + background: rgba(255, 235, 0, 0.1); +} + +.ace-cloud9-night .ace_marker-layer .ace_active-line { + background: #292929 +} + +.ace-cloud9-night .ace_gutter-active-line { + background-color: #3D3D3D +} + +.ace-cloud9-night .ace_stack { + background-color: rgb(66, 90, 44) +} + +.ace-cloud9-night .ace_marker-layer .ace_selected-word { + border: 1px solid #888888 +} + +.ace-cloud9-night .ace_invisible { + color: #343434 +} + +.ace-cloud9-night .ace_keyword, +.ace-cloud9-night .ace_meta, +.ace-cloud9-night .ace_storage, +.ace-cloud9-night .ace_storage.ace_type, +.ace-cloud9-night .ace_support.ace_type { + color: #C397D8 +} + +.ace-cloud9-night .ace_keyword.ace_operator { + color: #70C0B1 +} + +.ace-cloud9-night .ace_constant.ace_character, +.ace-cloud9-night .ace_constant.ace_language, +.ace-cloud9-night .ace_constant.ace_numeric, +.ace-cloud9-night .ace_keyword.ace_other.ace_unit, +.ace-cloud9-night .ace_support.ace_constant, +.ace-cloud9-night .ace_variable.ace_parameter { + color: #E78C45 +} + +.ace-cloud9-night .ace_constant.ace_other { + color: #EEEEEE +} + +.ace-cloud9-night .ace_invalid { + color: #CED2CF; + background-color: #DF5F5F +} + +.ace-cloud9-night .ace_invalid.ace_deprecated { + color: #CED2CF; + background-color: #B798BF +} + +.ace-cloud9-night .ace_fold { + background-color: #7AA6DA; + border-color: #DEDEDE +} + +.ace-cloud9-night .ace_entity.ace_name.ace_function, +.ace-cloud9-night .ace_support.ace_function, +.ace-cloud9-night .ace_variable { + color: #7AA6DA +} + +.ace-cloud9-night .ace_support.ace_class, +.ace-cloud9-night .ace_support.ace_type { + color: #E7C547 +} + +.ace-cloud9-night .ace_heading, +.ace-cloud9-night .ace_markup.ace_heading, +.ace-cloud9-night .ace_string { + color: #B9CA4A +} + +.ace-cloud9-night .ace_entity.ace_name.ace_tag, +.ace-cloud9-night .ace_entity.ace_other.ace_attribute-name, +.ace-cloud9-night .ace_meta.ace_tag, +.ace-cloud9-night .ace_string.ace_regexp, +.ace-cloud9-night .ace_variable { + color: #D54E53 +} + +.ace-cloud9-night .ace_comment { + color: #969896 +} + +.ace-cloud9-night .ace_c9searchresults.ace_keyword { + color: #C2C280; +} + +.ace-cloud9-night .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/cloud9_night.js b/plugins/node_modules/ace/lib/ace/theme/cloud9_night.js new file mode 100644 index 00000000..0c5ee8b1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/cloud9_night.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-cloud9-night"; +exports.cssText = require("../requirejs/text!./cloud9_night.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/cloud9_night_low_color.css b/plugins/node_modules/ace/lib/ace/theme/cloud9_night_low_color.css new file mode 100644 index 00000000..99d1344e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/cloud9_night_low_color.css @@ -0,0 +1,129 @@ +.ace-cloud9-night-low-color .ace_gutter { + background: #303130; + color: #eee +} + +.ace-cloud9-night-low-color .ace_print-margin { + width: 1px; + background: #222 +} + +.ace-cloud9-night-low-color { + background-color: #181818; + color: #EBEBEB +} + +.ace-cloud9-night-low-color .ace_cursor { + color: #9F9F9F +} + +.ace-cloud9-night-low-color .ace_marker-layer .ace_selection { + background: #424242 +} + +.ace-cloud9-night-low-color.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #000000; + border-radius: 2px +} + +.ace-cloud9-night-low-color .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-cloud9-night-low-color .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #888888 +} +.ace-cloud9-night-low-color .ace_marker-layer .ace_highlight { + border: 1px solid rgb(110, 119, 0); + border-bottom: 0; + box-shadow: inset 0 -1px rgb(110, 119, 0); + margin: -1px 0 0 -1px; + background: rgba(255, 235, 0, 0.1); +} + +.ace-cloud9-night-low-color .ace_marker-layer .ace_active-line { + background: #292929 +} + +.ace-cloud9-night-low-color .ace_gutter-active-line { + background-color: #3D3D3D +} + +.ace-cloud9-night-low-color .ace_stack { + background-color: rgb(66, 90, 44) +} + +.ace-cloud9-night-low-color .ace_marker-layer .ace_selected-word { + border: 1px solid #888888 +} + +.ace-cloud9-night-low-color .ace_invisible { + color: #343434 +} + +.ace-cloud9-night-low-color .ace_keyword, +.ace-cloud9-night-low-color .ace_meta, +.ace-cloud9-night-low-color .ace_storage { + color: #C397D8 +} + +.ace-cloud9-night-low-color .ace_keyword.ace_operator { + color: #70C0B1 +} + +.ace-cloud9-night-low-color .ace_constant.ace_character, +.ace-cloud9-night-low-color .ace_constant.ace_language, +.ace-cloud9-night-low-color .ace_constant.ace_numeric, +.ace-cloud9-night-low-color .ace_keyword.ace_other.ace_unit { + color: #DAA637 +} + +.ace-cloud9-night-low-color .ace_constant.ace_other { + color: #EEEEEE +} + +.ace-cloud9-night-low-color .ace_invalid { + color: #CED2CF; + background-color: #DF5F5F +} + +.ace-cloud9-night-low-color .ace_invalid.ace_deprecated { + color: #CED2CF; + background-color: #B798BF +} + +.ace-cloud9-night-low-color .ace_fold { + background-color: #7AA6DA; + border-color: #DEDEDE +} + +.ace-cloud9-night-low-color .ace_entity.ace_name.ace_function, +.ace-cloud9-night-low-color .ace_support.ace_function, +.ace-cloud9-night-low-color .ace_variable:not(.ace_parameter), +.ace-cloud9-night-low-color .ace_constant:not(.ace_numeric) { + color: #7AA6DA +} + +.ace-cloud9-night-low-color .ace_support.ace_class, +.ace-cloud9-night-low-color .ace_support.ace_type { + color: #E7C547 +} + +.ace-cloud9-night-low-color .ace_heading, +.ace-cloud9-night-low-color .ace_markup.ace_heading, +.ace-cloud9-night-low-color .ace_string { + color: #B9CA4A +} + +.ace-cloud9-night-low-color .ace_comment { + color: #969896 +} + +.ace-cloud9-night-low-color .ace_c9searchresults.ace_keyword { + color: #C2C280; +} + +.ace-cloud9-night-low-color .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/cloud9_night_low_color.js b/plugins/node_modules/ace/lib/ace/theme/cloud9_night_low_color.js new file mode 100644 index 00000000..bfef803b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/cloud9_night_low_color.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-cloud9-night-low-color"; +exports.cssText = require("../requirejs/text!./cloud9_night_low_color.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/clouds.css b/plugins/node_modules/ace/lib/ace/theme/clouds.css new file mode 100644 index 00000000..c11308d4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/clouds.css @@ -0,0 +1,111 @@ +.ace-clouds .ace_gutter { + background: #ebebeb; + color: #333 +} + +.ace-clouds .ace_print-margin { + width: 1px; + background: #e8e8e8 +} + +.ace-clouds { + background-color: #FFFFFF; + color: #000000 +} + +.ace-clouds .ace_cursor { + color: #000000 +} + +.ace-clouds .ace_marker-layer .ace_selection { + background: #BDD5FC +} + +.ace-clouds.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #FFFFFF; +} + +.ace-clouds .ace_marker-layer .ace_step { + background: rgb(255, 255, 0) +} + +.ace-clouds .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #BFBFBF +} + +.ace-clouds .ace_marker-layer .ace_active-line { + background: #FFFBD1 +} + +.ace-clouds .ace_gutter-active-line { + background-color : #dcdcdc +} + +.ace-clouds .ace_marker-layer .ace_selected-word { + border: 1px solid #BDD5FC +} + +.ace-clouds .ace_invisible { + color: #BFBFBF +} + +.ace-clouds .ace_keyword, +.ace-clouds .ace_meta, +.ace-clouds .ace_support.ace_constant.ace_property-value { + color: #AF956F +} + +.ace-clouds .ace_keyword.ace_operator { + color: #484848 +} + +.ace-clouds .ace_keyword.ace_other.ace_unit { + color: #96DC5F +} + +.ace-clouds .ace_constant.ace_language { + color: #39946A +} + +.ace-clouds .ace_constant.ace_numeric { + color: #46A609 +} + +.ace-clouds .ace_constant.ace_character.ace_entity { + color: #BF78CC +} + +.ace-clouds .ace_invalid { + background-color: #FF002A +} + +.ace-clouds .ace_fold { + background-color: #AF956F; + border-color: #000000 +} + +.ace-clouds .ace_storage, +.ace-clouds .ace_support.ace_class, +.ace-clouds .ace_support.ace_function, +.ace-clouds .ace_support.ace_other, +.ace-clouds .ace_support.ace_type { + color: #C52727 +} + +.ace-clouds .ace_string { + color: #5D90CD +} + +.ace-clouds .ace_comment { + color: #BCC8BA +} + +.ace-clouds .ace_entity.ace_name.ace_tag, +.ace-clouds .ace_entity.ace_other.ace_attribute-name { + color: #606060 +} + +.ace-clouds .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/clouds.js b/plugins/node_modules/ace/lib/ace/theme/clouds.js new file mode 100644 index 00000000..aa36edcf --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/clouds.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-clouds"; +exports.cssText = require("../requirejs/text!./clouds.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/clouds_midnight.css b/plugins/node_modules/ace/lib/ace/theme/clouds_midnight.css new file mode 100644 index 00000000..08ee089d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/clouds_midnight.css @@ -0,0 +1,112 @@ +.ace-clouds-midnight .ace_gutter { + background: #232323; + color: #929292 +} + +.ace-clouds-midnight .ace_print-margin { + width: 1px; + background: #232323 +} + +.ace-clouds-midnight { + background-color: #191919; + color: #929292 +} + +.ace-clouds-midnight .ace_cursor { + color: #7DA5DC +} + +.ace-clouds-midnight .ace_marker-layer .ace_selection { + background: #000000 +} + +.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #191919; +} + +.ace-clouds-midnight .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-clouds-midnight .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #BFBFBF +} + +.ace-clouds-midnight .ace_marker-layer .ace_active-line { + background: rgba(215, 215, 215, 0.031) +} + +.ace-clouds-midnight .ace_gutter-active-line { + background-color: rgba(215, 215, 215, 0.031) +} + +.ace-clouds-midnight .ace_marker-layer .ace_selected-word { + border: 1px solid #000000 +} + +.ace-clouds-midnight .ace_invisible { + color: #666 +} + +.ace-clouds-midnight .ace_keyword, +.ace-clouds-midnight .ace_meta, +.ace-clouds-midnight .ace_support.ace_constant.ace_property-value { + color: #927C5D +} + +.ace-clouds-midnight .ace_keyword.ace_operator { + color: #4B4B4B +} + +.ace-clouds-midnight .ace_keyword.ace_other.ace_unit { + color: #366F1A +} + +.ace-clouds-midnight .ace_constant.ace_language { + color: #39946A +} + +.ace-clouds-midnight .ace_constant.ace_numeric { + color: #46A609 +} + +.ace-clouds-midnight .ace_constant.ace_character.ace_entity { + color: #A165AC +} + +.ace-clouds-midnight .ace_invalid { + color: #FFFFFF; + background-color: #E92E2E +} + +.ace-clouds-midnight .ace_fold { + background-color: #927C5D; + border-color: #929292 +} + +.ace-clouds-midnight .ace_storage, +.ace-clouds-midnight .ace_support.ace_class, +.ace-clouds-midnight .ace_support.ace_function, +.ace-clouds-midnight .ace_support.ace_other, +.ace-clouds-midnight .ace_support.ace_type { + color: #E92E2E +} + +.ace-clouds-midnight .ace_string { + color: #5D90CD +} + +.ace-clouds-midnight .ace_comment { + color: #3C403B +} + +.ace-clouds-midnight .ace_entity.ace_name.ace_tag, +.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name { + color: #606060 +} + +.ace-clouds-midnight .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/clouds_midnight.js b/plugins/node_modules/ace/lib/ace/theme/clouds_midnight.js new file mode 100644 index 00000000..e704d57c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/clouds_midnight.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-clouds-midnight"; +exports.cssText = require("../requirejs/text!./clouds_midnight.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/cobalt.css b/plugins/node_modules/ace/lib/ace/theme/cobalt.css new file mode 100644 index 00000000..b883ba97 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/cobalt.css @@ -0,0 +1,133 @@ +.ace-cobalt .ace_gutter { + background: #011e3a; + color: rgb(128,145,160) +} + +.ace-cobalt .ace_print-margin { + width: 1px; + background: #555555 +} + +.ace-cobalt { + background-color: #002240; + color: #FFFFFF +} + +.ace-cobalt .ace_cursor { + color: #FFFFFF +} + +.ace-cobalt .ace_marker-layer .ace_selection { + background: rgba(179, 101, 57, 0.75) +} + +.ace-cobalt.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #002240; +} + +.ace-cobalt .ace_marker-layer .ace_step { + background: rgb(127, 111, 19) +} + +.ace-cobalt .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(255, 255, 255, 0.15) +} + +.ace-cobalt .ace_marker-layer .ace_active-line { + background: rgba(0, 0, 0, 0.35) +} + +.ace-cobalt .ace_gutter-active-line { + background-color: rgba(0, 0, 0, 0.35) +} + +.ace-cobalt .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(179, 101, 57, 0.75) +} + +.ace-cobalt .ace_invisible { + color: rgba(255, 255, 255, 0.15) +} + +.ace-cobalt .ace_keyword, +.ace-cobalt .ace_meta { + color: #FF9D00 +} + +.ace-cobalt .ace_constant, +.ace-cobalt .ace_constant.ace_character, +.ace-cobalt .ace_constant.ace_character.ace_escape, +.ace-cobalt .ace_constant.ace_other { + color: #FF628C +} + +.ace-cobalt .ace_invalid { + color: #F8F8F8; + background-color: #800F00 +} + +.ace-cobalt .ace_support { + color: #80FFBB +} + +.ace-cobalt .ace_support.ace_constant { + color: #EB939A +} + +.ace-cobalt .ace_fold { + background-color: #FF9D00; + border-color: #FFFFFF +} + +.ace-cobalt .ace_support.ace_function { + color: #FFB054 +} + +.ace-cobalt .ace_storage { + color: #FFEE80 +} + +.ace-cobalt .ace_entity { + color: #FFDD00 +} + +.ace-cobalt .ace_string { + color: #3AD900 +} + +.ace-cobalt .ace_string.ace_regexp { + color: #80FFC2 +} + +.ace-cobalt .ace_comment { + font-style: italic; + color: #0088FF +} + +.ace-cobalt .ace_heading, +.ace-cobalt .ace_markup.ace_heading { + color: #C8E4FD; + background-color: #001221 +} + +.ace-cobalt .ace_list, +.ace-cobalt .ace_markup.ace_list { + background-color: #130D26 +} + +.ace-cobalt .ace_variable { + color: #CCCCCC +} + +.ace-cobalt .ace_variable.ace_language { + color: #FF80E1 +} + +.ace-cobalt .ace_meta.ace_tag { + color: #9EFFFF +} + +.ace-cobalt .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y +} diff --git a/plugins/node_modules/ace/lib/ace/theme/cobalt.js b/plugins/node_modules/ace/lib/ace/theme/cobalt.js new file mode 100644 index 00000000..a466dd6c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/cobalt.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-cobalt"; +exports.cssText = require("../requirejs/text!./cobalt.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/crimson_editor.css b/plugins/node_modules/ace/lib/ace/theme/crimson_editor.css new file mode 100644 index 00000000..e84292b4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/crimson_editor.css @@ -0,0 +1,143 @@ +.ace-crimson-editor .ace_gutter { + background: #ebebeb; + color: #333; + overflow : hidden; +} + +.ace-crimson-editor .ace_gutter-layer { + width: 100%; + text-align: right; +} + +.ace-crimson-editor .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-crimson-editor { + background-color: #FFFFFF; + color: rgb(64, 64, 64); +} + +.ace-crimson-editor .ace_cursor { + color: black; +} + +.ace-crimson-editor .ace_invisible { + color: rgb(191, 191, 191); +} + +.ace-crimson-editor .ace_identifier { + color: black; +} + +.ace-crimson-editor .ace_keyword { + color: blue; +} + +.ace-crimson-editor .ace_constant.ace_buildin { + color: rgb(88, 72, 246); +} + +.ace-crimson-editor .ace_constant.ace_language { + color: rgb(255, 156, 0); +} + +.ace-crimson-editor .ace_constant.ace_library { + color: rgb(6, 150, 14); +} + +.ace-crimson-editor .ace_invalid { + text-decoration: line-through; + color: rgb(224, 0, 0); +} + +.ace-crimson-editor .ace_fold { +} + +.ace-crimson-editor .ace_support.ace_function { + color: rgb(192, 0, 0); +} + +.ace-crimson-editor .ace_support.ace_constant { + color: rgb(6, 150, 14); +} + +.ace-crimson-editor .ace_support.ace_type, +.ace-crimson-editor .ace_support.ace_class { + color: rgb(109, 121, 222); +} + +.ace-crimson-editor .ace_keyword.ace_operator { + color: rgb(49, 132, 149); +} + +.ace-crimson-editor .ace_string { + color: rgb(128, 0, 128); +} + +.ace-crimson-editor .ace_comment { + color: rgb(76, 136, 107); +} + +.ace-crimson-editor .ace_comment.ace_doc { + color: rgb(0, 102, 255); +} + +.ace-crimson-editor .ace_comment.ace_doc.ace_tag { + color: rgb(128, 159, 191); +} + +.ace-crimson-editor .ace_constant.ace_numeric { + color: rgb(0, 0, 64); +} + +.ace-crimson-editor .ace_variable { + color: rgb(0, 64, 128); +} + +.ace-crimson-editor .ace_xml-pe { + color: rgb(104, 104, 91); +} + +.ace-crimson-editor .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} + +.ace-crimson-editor .ace_marker-layer .ace_step { + background: rgb(252, 255, 0); +} + +.ace-crimson-editor .ace_marker-layer .ace_stack { + background: rgb(164, 229, 101); +} + +.ace-crimson-editor .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-crimson-editor .ace_marker-layer .ace_active-line { + background: rgb(232, 242, 254); +} + +.ace-crimson-editor .ace_gutter-active-line { + background-color : #dcdcdc; +} + +.ace-crimson-editor .ace_meta.ace_tag { + color:rgb(28, 2, 255); +} + +.ace-crimson-editor .ace_marker-layer .ace_selected-word { + background: rgb(250, 250, 255); + border: 1px solid rgb(200, 200, 250); +} + +.ace-crimson-editor .ace_string.ace_regex { + color: rgb(192, 0, 192); +} + +.ace-crimson-editor .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/crimson_editor.js b/plugins/node_modules/ace/lib/ace/theme/crimson_editor.js new file mode 100644 index 00000000..a5971075 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/crimson_editor.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +exports.isDark = false; +exports.cssText = require("../requirejs/text!./crimson_editor.css"); + +exports.cssClass = "ace-crimson-editor"; + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/dawn.css b/plugins/node_modules/ace/lib/ace/theme/dawn.css new file mode 100644 index 00000000..3c2884e1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/dawn.css @@ -0,0 +1,126 @@ +.ace-dawn .ace_gutter { + background: #ebebeb; + color: #333 +} + +.ace-dawn .ace_print-margin { + width: 1px; + background: #e8e8e8 +} + +.ace-dawn { + background-color: #F9F9F9; + color: #080808 +} + +.ace-dawn .ace_cursor { + color: #000000 +} + +.ace-dawn .ace_marker-layer .ace_selection { + background: rgba(39, 95, 255, 0.30) +} + +.ace-dawn.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #F9F9F9; +} + +.ace-dawn .ace_marker-layer .ace_step { + background: rgb(255, 255, 0) +} + +.ace-dawn .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(75, 75, 126, 0.50) +} + +.ace-dawn .ace_marker-layer .ace_active-line { + background: rgba(36, 99, 180, 0.12) +} + +.ace-dawn .ace_gutter-active-line { + background-color : #dcdcdc +} + +.ace-dawn .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(39, 95, 255, 0.30) +} + +.ace-dawn .ace_invisible { + color: rgba(75, 75, 126, 0.50) +} + +.ace-dawn .ace_keyword, +.ace-dawn .ace_meta { + color: #794938 +} + +.ace-dawn .ace_constant, +.ace-dawn .ace_constant.ace_character, +.ace-dawn .ace_constant.ace_character.ace_escape, +.ace-dawn .ace_constant.ace_other { + color: #811F24 +} + +.ace-dawn .ace_invalid.ace_illegal { + text-decoration: underline; + font-style: italic; + color: #F8F8F8; + background-color: #B52A1D +} + +.ace-dawn .ace_invalid.ace_deprecated { + text-decoration: underline; + font-style: italic; + color: #B52A1D +} + +.ace-dawn .ace_support { + color: #691C97 +} + +.ace-dawn .ace_support.ace_constant { + color: #B4371F +} + +.ace-dawn .ace_fold { + background-color: #794938; + border-color: #080808 +} + +.ace-dawn .ace_list, +.ace-dawn .ace_markup.ace_list, +.ace-dawn .ace_support.ace_function { + color: #693A17 +} + +.ace-dawn .ace_storage { + font-style: italic; + color: #A71D5D +} + +.ace-dawn .ace_string { + color: #0B6125 +} + +.ace-dawn .ace_string.ace_regexp { + color: #CF5628 +} + +.ace-dawn .ace_comment { + font-style: italic; + color: #5A525F +} + +.ace-dawn .ace_heading, +.ace-dawn .ace_markup.ace_heading { + color: #19356D +} + +.ace-dawn .ace_variable { + color: #234A97 +} + +.ace-dawn .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/dawn.js b/plugins/node_modules/ace/lib/ace/theme/dawn.js new file mode 100644 index 00000000..2498aa3b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/dawn.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-dawn"; +exports.cssText = require("../requirejs/text!./dawn.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/dracula.css b/plugins/node_modules/ace/lib/ace/theme/dracula.css new file mode 100644 index 00000000..17d7df82 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/dracula.css @@ -0,0 +1,153 @@ +/* + * Copyright © 2017 Zeno Rocha <hi@zenorocha.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Softwareâ€), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +ace-dracula .ace_gutter { + background: #282a36; + color: rgb(144,145,148) +} + +.ace-dracula .ace_print-margin { + width: 1px; + background: #e8e8e8 +} + +.ace-dracula { + background-color: #282a36; + color: #f8f8f2 +} + +.ace-dracula .ace_cursor { + color: #f8f8f0 +} + +.ace-dracula .ace_marker-layer .ace_selection { + background: #44475a +} + +.ace-dracula.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #282a36; + border-radius: 2px +} + +.ace-dracula .ace_marker-layer .ace_step { + background: rgb(198, 219, 174) +} + +.ace-dracula .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #3B3A32 +} + +.ace-dracula .ace_marker-layer .ace_active-line { + background: #44475a +} + +.ace-dracula .ace_gutter-active-line { + background-color: #44475a +} + +.ace-dracula .ace_marker-layer .ace_selected-word { + border: 1px solid #44475a +} + +.ace-dracula .ace_fold { + background-color: #50fa7b; + border-color: #f8f8f2 +} + +.ace-dracula .ace_keyword { + color: #ff79c6 +} + +.ace-dracula .ace_constant.ace_language { + color: #bd93f9 +} + +.ace-dracula .ace_constant.ace_numeric { + color: #bd93f9 +} + +.ace-dracula .ace_constant.ace_character { + color: #bd93f9 +} + +.ace-dracula .ace_constant.ace_character.ace_escape { + color: #ff79c6 +} + +.ace-dracula .ace_constant.ace_other { + color: #bd93f9 +} + +.ace-dracula .ace_support.ace_function { + color: #8be9fd +} + +.ace-dracula .ace_support.ace_constant { + color: #6be5fd +} + +.ace-dracula .ace_support.ace_class { + font-style: italic; + color: #66d9ef +} + +.ace-dracula .ace_support.ace_type { + font-style: italic; + color: #66d9ef +} + +.ace-dracula .ace_storage { + color: #ff79c6 +} + +.ace-dracula .ace_storage.ace_type { + font-style: italic; + color: #8be9fd +} + +.ace-dracula .ace_invalid { + color: #F8F8F0; + background-color: #ff79c6 +} + +.ace-dracula .ace_invalid.ace_deprecated { + color: #F8F8F0; + background-color: #bd93f9 +} + +.ace-dracula .ace_string { + color: #f1fa8c +} + +.ace-dracula .ace_comment { + color: #6272a4 +} + +.ace-dracula .ace_variable { + color: #50fa7b +} + +.ace-dracula .ace_variable.ace_parameter { + font-style: italic; + color: #ffb86c +} + +.ace-dracula .ace_entity.ace_other.ace_attribute-name { + color: #50fa7b +} + +.ace-dracula .ace_entity.ace_name.ace_function { + color: #50fa7b +} + +.ace-dracula .ace_entity.ace_name.ace_tag { + color: #ff79c6 +} diff --git a/plugins/node_modules/ace/lib/ace/theme/dracula.js b/plugins/node_modules/ace/lib/ace/theme/dracula.js new file mode 100644 index 00000000..24b0e5dc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/dracula.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-dracula"; +exports.cssText = require("../requirejs/text!./dracula.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/dreamweaver.css b/plugins/node_modules/ace/lib/ace/theme/dreamweaver.css new file mode 100644 index 00000000..84865a1c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/dreamweaver.css @@ -0,0 +1,176 @@ +.ace-dreamweaver .ace_gutter { + background: #e8e8e8; + color: #333; +} + +.ace-dreamweaver .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-dreamweaver { + background-color: #FFFFFF; + color: black; +} + +.ace-dreamweaver .ace_fold { + background-color: #757AD8; +} + +.ace-dreamweaver .ace_cursor { + color: black; +} + +.ace-dreamweaver .ace_invisible { + color: rgb(191, 191, 191); +} + +.ace-dreamweaver .ace_storage, +.ace-dreamweaver .ace_keyword { + color: blue; +} + +.ace-dreamweaver .ace_constant.ace_buildin { + color: rgb(88, 72, 246); +} + +.ace-dreamweaver .ace_constant.ace_language { + color: rgb(88, 92, 246); +} + +.ace-dreamweaver .ace_constant.ace_library { + color: rgb(6, 150, 14); +} + +.ace-dreamweaver .ace_invalid { + background-color: rgb(153, 0, 0); + color: white; +} + +.ace-dreamweaver .ace_support.ace_function { + color: rgb(60, 76, 114); +} + +.ace-dreamweaver .ace_support.ace_constant { + color: rgb(6, 150, 14); +} + +.ace-dreamweaver .ace_support.ace_type, +.ace-dreamweaver .ace_support.ace_class { + color: #009; +} + +.ace-dreamweaver .ace_support.ace_php_tag { + color: #f00; +} + +.ace-dreamweaver .ace_keyword.ace_operator { + color: rgb(104, 118, 135); +} + +.ace-dreamweaver .ace_string { + color: #00F; +} + +.ace-dreamweaver .ace_comment { + color: rgb(76, 136, 107); +} + +.ace-dreamweaver .ace_comment.ace_doc { + color: rgb(0, 102, 255); +} + +.ace-dreamweaver .ace_comment.ace_doc.ace_tag { + color: rgb(128, 159, 191); +} + +.ace-dreamweaver .ace_constant.ace_numeric { + color: rgb(0, 0, 205); +} + +.ace-dreamweaver .ace_variable { + color: #06F +} + +.ace-dreamweaver .ace_xml-pe { + color: rgb(104, 104, 91); +} + +.ace-dreamweaver .ace_entity.ace_name.ace_function { + color: #00F; +} + + +.ace-dreamweaver .ace_heading { + color: rgb(12, 7, 255); +} + +.ace-dreamweaver .ace_list { + color:rgb(185, 6, 144); +} + +.ace-dreamweaver .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} + +.ace-dreamweaver .ace_marker-layer .ace_step { + background: rgb(252, 255, 0); +} + +.ace-dreamweaver .ace_marker-layer .ace_stack { + background: rgb(164, 229, 101); +} + +.ace-dreamweaver .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-dreamweaver .ace_marker-layer .ace_active-line { + background: rgba(0, 0, 0, 0.07); +} + +.ace-dreamweaver .ace_gutter-active-line { + background-color : #DCDCDC; +} + +.ace-dreamweaver .ace_marker-layer .ace_selected-word { + background: rgb(250, 250, 255); + border: 1px solid rgb(200, 200, 250); +} + +.ace-dreamweaver .ace_meta.ace_tag { + color:#009; +} + +.ace-dreamweaver .ace_meta.ace_tag.ace_anchor { + color:#060; +} + +.ace-dreamweaver .ace_meta.ace_tag.ace_form { + color:#F90; +} + +.ace-dreamweaver .ace_meta.ace_tag.ace_image { + color:#909; +} + +.ace-dreamweaver .ace_meta.ace_tag.ace_script { + color:#900; +} + +.ace-dreamweaver .ace_meta.ace_tag.ace_style { + color:#909; +} + +.ace-dreamweaver .ace_meta.ace_tag.ace_table { + color:#099; +} + +.ace-dreamweaver .ace_string.ace_regex { + color: rgb(255, 0, 0) +} + +.ace-dreamweaver .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/dreamweaver.js b/plugins/node_modules/ace/lib/ace/theme/dreamweaver.js new file mode 100644 index 00000000..943dc692 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/dreamweaver.js @@ -0,0 +1,38 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +exports.isDark = false; +exports.cssClass = "ace-dreamweaver"; +exports.cssText = require("../requirejs/text!./dreamweaver.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/eclipse.css b/plugins/node_modules/ace/lib/ace/theme/eclipse.css new file mode 100644 index 00000000..c83d07a3 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/eclipse.css @@ -0,0 +1,113 @@ +.ace-eclipse .ace_gutter { + background: #ebebeb; + border-right: 1px solid rgb(159, 159, 159); + color: rgb(136, 136, 136); +} + +.ace-eclipse .ace_print-margin { + width: 1px; + background: #ebebeb; +} + +.ace-eclipse { + background-color: #FFFFFF; + color: black; +} + +.ace-eclipse .ace_fold { + background-color: rgb(60, 76, 114); +} + +.ace-eclipse .ace_cursor { + color: black; +} + +.ace-eclipse .ace_storage, +.ace-eclipse .ace_keyword, +.ace-eclipse .ace_variable { + color: rgb(127, 0, 85); +} + +.ace-eclipse .ace_constant.ace_buildin { + color: rgb(88, 72, 246); +} + +.ace-eclipse .ace_constant.ace_library { + color: rgb(6, 150, 14); +} + +.ace-eclipse .ace_function { + color: rgb(60, 76, 114); +} + +.ace-eclipse .ace_string { + color: rgb(42, 0, 255); +} + +.ace-eclipse .ace_comment { + color: rgb(113, 150, 130); +} + +.ace-eclipse .ace_comment.ace_doc { + color: rgb(63, 95, 191); +} + +.ace-eclipse .ace_comment.ace_doc.ace_tag { + color: rgb(127, 159, 191); +} + +.ace-eclipse .ace_constant.ace_numeric { + color: darkblue; +} + +.ace-eclipse .ace_tag { + color: rgb(25, 118, 116); +} + +.ace-eclipse .ace_type { + color: rgb(127, 0, 127); +} + +.ace-eclipse .ace_xml-pe { + color: rgb(104, 104, 91); +} + +.ace-eclipse .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} + +.ace-eclipse .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-eclipse .ace_meta.ace_tag { + color:rgb(25, 118, 116); +} + +.ace-eclipse .ace_invisible { + color: #ddd; +} + +.ace-eclipse .ace_entity.ace_other.ace_attribute-name { + color:rgb(127, 0, 127); +} +.ace-eclipse .ace_marker-layer .ace_step { + background: rgb(255, 255, 0); +} + +.ace-eclipse .ace_active-line { + background: rgb(232, 242, 254); +} + +.ace-eclipse .ace_gutter-active-line { + background-color : #DADADA; +} + +.ace-eclipse .ace_marker-layer .ace_selected-word { + border: 1px solid rgb(181, 213, 255); +} + +.ace-eclipse .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/eclipse.js b/plugins/node_modules/ace/lib/ace/theme/eclipse.js new file mode 100644 index 00000000..329b8b79 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/eclipse.js @@ -0,0 +1,41 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +exports.isDark = false; +exports.cssText = require("../requirejs/text!./eclipse.css"); + +exports.cssClass = "ace-eclipse"; + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/github.css b/plugins/node_modules/ace/lib/ace/theme/github.css new file mode 100644 index 00000000..14799227 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/github.css @@ -0,0 +1,124 @@ +/* CSS style content from github's default pygments highlighter template. + Cursor and selection styles from textmate.css. */ +.ace-github .ace_gutter { + background: #e8e8e8; + color: #AAA; +} + +.ace-github { + background: #fff; + color: #000; +} + +.ace-github .ace_keyword { + font-weight: bold; +} + +.ace-github .ace_string { + color: #D14; +} + +.ace-github .ace_variable.ace_class { + color: teal; +} + +.ace-github .ace_constant.ace_numeric { + color: #099; +} + +.ace-github .ace_constant.ace_buildin { + color: #0086B3; +} + +.ace-github .ace_support.ace_function { + color: #0086B3; +} + +.ace-github .ace_comment { + color: #998; + font-style: italic; +} + +.ace-github .ace_variable.ace_language { + color: #0086B3; +} + +.ace-github .ace_paren { + font-weight: bold; +} + +.ace-github .ace_boolean { + font-weight: bold; +} + +.ace-github .ace_string.ace_regexp { + color: #009926; + font-weight: normal; +} + +.ace-github .ace_variable.ace_instance { + color: teal; +} + +.ace-github .ace_constant.ace_language { + font-weight: bold; +} + +.ace-github .ace_cursor { + color: black; +} + +.ace-github.ace_focus .ace_marker-layer .ace_active-line { + background: rgb(255, 255, 204); +} +.ace-github .ace_marker-layer .ace_active-line { + background: rgb(245, 245, 245); +} + +.ace-github .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} + +.ace-github.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px white; +} +/* bold keywords cause cursor issues for some fonts */ +/* this disables bold style for editor and keeps for static highlighter */ +.ace-github.ace_nobold .ace_line > span { + font-weight: normal !important; +} + +.ace-github .ace_marker-layer .ace_step { + background: rgb(252, 255, 0); +} + +.ace-github .ace_marker-layer .ace_stack { + background: rgb(164, 229, 101); +} + +.ace-github .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-github .ace_gutter-active-line { + background-color : rgba(0, 0, 0, 0.07); +} + +.ace-github .ace_marker-layer .ace_selected-word { + background: rgb(250, 250, 255); + border: 1px solid rgb(200, 200, 250); +} + +.ace-github .ace_invisible { + color: #BFBFBF +} + +.ace-github .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-github .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/github.js b/plugins/node_modules/ace/lib/ace/theme/github.js new file mode 100644 index 00000000..de013c8c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/github.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-github"; +exports.cssText = require("../requirejs/text!./github.css"); + + var dom = require("../lib/dom"); + dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/gob.css b/plugins/node_modules/ace/lib/ace/theme/gob.css new file mode 100644 index 00000000..b31f9145 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/gob.css @@ -0,0 +1,130 @@ +.ace-gob .ace_gutter { + background: #0B1818; + color: #03EE03 +} + +.ace-gob .ace_print-margin { + width: 1px; + background: #131313 +} + +.ace-gob { + background-color: #0B0B0B; + color: #00FF00 +} + +.ace-gob .ace_cursor { + border-color: rgba(16, 248, 255, 0.90); + background-color: rgba(16, 240, 248, 0.70); + opacity: 0.4; +} + +.ace-gob .ace_marker-layer .ace_selection { + background: rgba(221, 240, 255, 0.20) +} + +.ace-gob.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #141414; +} + +.ace-gob .ace_marker-layer .ace_step { + background: rgb(16, 128, 0) +} + +.ace-gob .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(64, 255, 255, 0.25) +} + +.ace-gob .ace_marker-layer .ace_active-line { + background: rgba(255, 255, 255, 0.04) +} + +.ace-gob .ace_gutter-active-line { + background-color: rgba(255, 255, 255, 0.04) +} + +.ace-gob .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(192, 240, 255, 0.20) +} + +.ace-gob .ace_invisible { + color: rgba(255, 255, 255, 0.25) +} + +.ace-gob .ace_keyword, +.ace-gob .ace_meta { + color: #10D8E8 +} + +.ace-gob .ace_constant, +.ace-gob .ace_constant.ace_character, +.ace-gob .ace_constant.ace_character.ace_escape, +.ace-gob .ace_constant.ace_other, +.ace-gob .ace_heading, +.ace-gob .ace_markup.ace_heading, +.ace-gob .ace_support.ace_constant { + color: #10F0A0 +} + +.ace-gob .ace_invalid.ace_illegal { + color: #F8F8F8; + background-color: rgba(86, 45, 86, 0.75) +} + +.ace-gob .ace_invalid.ace_deprecated { + text-decoration: underline; + font-style: italic; + color: #20F8C0 +} + +.ace-gob .ace_support { + color: #20E8B0 +} + +.ace-gob .ace_fold { + background-color: #50B8B8; + border-color: #70F8F8 +} + +.ace-gob .ace_support.ace_function { + color: #00F800 +} + +.ace-gob .ace_list, +.ace-gob .ace_markup.ace_list, +.ace-gob .ace_storage { + color: #10FF98 +} + +.ace-gob .ace_entity.ace_name.ace_function, +.ace-gob .ace_meta.ace_tag, +.ace-gob .ace_variable { + color: #00F868 +} + +.ace-gob .ace_string { + color: #10F060 +} + +.ace-gob .ace_string.ace_regexp { + color: #20F090; +} + +.ace-gob .ace_comment { + font-style: italic; + color: #00E060; +} + +.ace-gob .ace_variable { + color: #00F888; +} + +.ace-gob .ace_xml-pe { + color: #488858; +} + +.ace-gob .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y +} + diff --git a/plugins/node_modules/ace/lib/ace/theme/gob.js b/plugins/node_modules/ace/lib/ace/theme/gob.js new file mode 100644 index 00000000..4b8e487d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/gob.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-gob"; +exports.cssText = require("../requirejs/text!./gob.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/gruvbox.css b/plugins/node_modules/ace/lib/ace/theme/gruvbox.css new file mode 100644 index 00000000..48a4161e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/gruvbox.css @@ -0,0 +1,95 @@ +.ace-gruvbox .ace_gutter-active-line { + background-color: #3C3836; +} + +.ace-gruvbox { + color: #EBDAB4; + background-color: #1D2021; +} + +.ace-gruvbox .ace_invisible { + color: #504945; +} + +.ace-gruvbox .ace_marker-layer .ace_selection { + background: rgba(179, 101, 57, 0.75) +} + +.ace-gruvbox.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #002240; +} + +.ace-gruvbox .ace_keyword { + color: #8ec07c; +} + +.ace-gruvbox .ace_comment { + font-style: italic; + color: #928375; +} + +.ace-gruvbox .ace-statement { + color: red; +} + +.ace-gruvbox .ace_variable { + color: #84A598; +} + +.ace-gruvbox .ace_variable.ace_language { + color: #D2879B; +} + +.ace-gruvbox .ace_constant { + color: #C2859A; +} + +.ace-gruvbox .ace_constant.ace_language { + color: #C2859A; +} + +.ace-gruvbox .ace_constant.ace_numeric { + color: #C2859A; +} + +.ace-gruvbox .ace_string { + color: #B8BA37; +} + +.ace-gruvbox .ace_support { + color: #F9BC41; +} + +.ace-gruvbox .ace_support.ace_function { + color: #F84B3C; +} + +.ace-gruvbox .ace_storage { + color: #8FBF7F; +} + +.ace-gruvbox .ace_keyword.ace_operator { + color: #EBDAB4; +} + +.ace-gruvbox .ace_punctuation.ace_operator { + color: yellow; +} + +.ace-gruvbox .ace_marker-layer .ace_active-line { + background: #3C3836; +} + +.ace-gruvbox .ace_marker-layer .ace_selected-word { + border-radius: 4px; + border: 8px solid #3f475d; +} + +.ace-gruvbox .ace_print-margin { + width: 5px; + background: #3C3836; +} + +.ace-gruvbox .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC") right repeat-y; +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/gruvbox.js b/plugins/node_modules/ace/lib/ace/theme/gruvbox.js new file mode 100644 index 00000000..67d90430 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/gruvbox.js @@ -0,0 +1,33 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright 2011 Irakli Gozalishvili. All rights reserved. + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-gruvbox"; +exports.cssText = require("../requirejs/text!./gruvbox.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/idle_fingers.css b/plugins/node_modules/ace/lib/ace/theme/idle_fingers.css new file mode 100644 index 00000000..b5e1bff2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/idle_fingers.css @@ -0,0 +1,112 @@ +.ace-idle-fingers .ace_gutter { + background: #3b3b3b; + color: rgb(153,153,153) +} + +.ace-idle-fingers .ace_print-margin { + width: 1px; + background: #3b3b3b +} + +.ace-idle-fingers { + background-color: #323232; + color: #FFFFFF +} + +.ace-idle-fingers .ace_cursor { + color: #91FF00 +} + +.ace-idle-fingers .ace_marker-layer .ace_selection { + background: rgba(90, 100, 126, 0.88) +} + +.ace-idle-fingers.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #323232; +} + +.ace-idle-fingers .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-idle-fingers .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #404040 +} + +.ace-idle-fingers .ace_marker-layer .ace_active-line { + background: #353637 +} + +.ace-idle-fingers .ace_gutter-active-line { + background-color: #353637 +} + +.ace-idle-fingers .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(90, 100, 126, 0.88) +} + +.ace-idle-fingers .ace_invisible { + color: #404040 +} + +.ace-idle-fingers .ace_keyword, +.ace-idle-fingers .ace_meta { + color: #CC7833 +} + +.ace-idle-fingers .ace_constant, +.ace-idle-fingers .ace_constant.ace_character, +.ace-idle-fingers .ace_constant.ace_character.ace_escape, +.ace-idle-fingers .ace_constant.ace_other, +.ace-idle-fingers .ace_support.ace_constant { + color: #6C99BB +} + +.ace-idle-fingers .ace_invalid { + color: #FFFFFF; + background-color: #FF0000 +} + +.ace-idle-fingers .ace_fold { + background-color: #CC7833; + border-color: #FFFFFF +} + +.ace-idle-fingers .ace_support.ace_function { + color: #B83426 +} + +.ace-idle-fingers .ace_variable.ace_parameter { + font-style: italic +} + +.ace-idle-fingers .ace_string { + color: #A5C261 +} + +.ace-idle-fingers .ace_string.ace_regexp { + color: #CCCC33 +} + +.ace-idle-fingers .ace_comment { + font-style: italic; + color: #BC9458 +} + +.ace-idle-fingers .ace_meta.ace_tag { + color: #FFE5BB +} + +.ace-idle-fingers .ace_entity.ace_name { + color: #FFC66D +} + +.ace-idle-fingers .ace_collab.ace_user1 { + color: #323232; + background-color: #FFF980 +} + +.ace-idle-fingers .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/idle_fingers.js b/plugins/node_modules/ace/lib/ace/theme/idle_fingers.js new file mode 100644 index 00000000..096a2314 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/idle_fingers.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-idle-fingers"; +exports.cssText = require("../requirejs/text!./idle_fingers.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/iplastic.css b/plugins/node_modules/ace/lib/ace/theme/iplastic.css new file mode 100644 index 00000000..b07dc8f9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/iplastic.css @@ -0,0 +1,140 @@ +.ace-iplastic .ace_gutter { + background: #dddddd; + color: #666666 +} + +.ace-iplastic .ace_print-margin { + width: 1px; + background: #bbbbbb +} + +.ace-iplastic { + background-color: #eeeeee; + color: #333333 +} + +.ace-iplastic .ace_cursor { + color: #333 +} + +.ace-iplastic .ace_marker-layer .ace_selection { + background: #BAD6FD; +} + +.ace-iplastic.ace_multiselect .ace_selection.ace_start { + border-radius: 4px +} + +.ace-iplastic .ace_marker-layer .ace_step { + background: #444444 +} + +.ace-iplastic .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #49483E; + background: #FFF799 +} + +.ace-iplastic .ace_marker-layer .ace_active-line { + background: #e5e5e5 +} + +.ace-iplastic .ace_gutter-active-line { + background-color: #eeeeee +} + +.ace-iplastic .ace_marker-layer .ace_selected-word { + border: 1px solid #555555; + border-radius:4px +} + +.ace-iplastic .ace_invisible { + color: #999999 +} + +.ace-iplastic .ace_entity.ace_name.ace_tag, +.ace-iplastic .ace_keyword, +.ace-iplastic .ace_meta.ace_tag, +.ace-iplastic .ace_storage { + color: #0000FF +} + +.ace-iplastic .ace_punctuation, +.ace-iplastic .ace_punctuation.ace_tag { + color: #000 +} + +.ace-iplastic .ace_constant { + color: #333333; + font-weight: 700 +} + +.ace-iplastic .ace_constant.ace_character, +.ace-iplastic .ace_constant.ace_language, +.ace-iplastic .ace_constant.ace_numeric, +.ace-iplastic .ace_constant.ace_other { + color: #0066FF; + font-weight: 700 +} + +.ace-iplastic .ace_constant.ace_numeric{ + font-weight: 100 +} + +.ace-iplastic .ace_invalid { + color: #F8F8F0; + background-color: #F92672 +} + +.ace-iplastic .ace_invalid.ace_deprecated { + color: #F8F8F0; + background-color: #AE81FF +} + +.ace-iplastic .ace_support.ace_constant, +.ace-iplastic .ace_support.ace_function { + color: #333333; + font-weight: 700 +} + +.ace-iplastic .ace_fold { + background-color: #464646; + border-color: #F8F8F2 +} + +.ace-iplastic .ace_storage.ace_type, +.ace-iplastic .ace_support.ace_class, +.ace-iplastic .ace_support.ace_type { + color: #3333fc; + font-weight: 700 +} + +.ace-iplastic .ace_entity.ace_name.ace_function, +.ace-iplastic .ace_entity.ace_other, +.ace-iplastic .ace_entity.ace_other.ace_attribute-name, +.ace-iplastic .ace_variable { + color: #3366cc; + font-style: italic +} + +.ace-iplastic .ace_variable.ace_parameter { + font-style: italic; + color: #2469E0 +} + +.ace-iplastic .ace_string { + color: #a55f03 +} + +.ace-iplastic .ace_comment { + color: #777777; + font-style: italic +} + +.ace-iplastic .ace_fold-widget { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==); +} + +.ace-iplastic .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABlJREFUeNpi+P//PwMzMzPzfwAAAAD//wMAGRsECSML/RIAAAAASUVORK5CYII=) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/iplastic.js b/plugins/node_modules/ace/lib/ace/theme/iplastic.js new file mode 100644 index 00000000..ff784196 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/iplastic.js @@ -0,0 +1,40 @@ + +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-iplastic"; +exports.cssText = require("../requirejs/text!./iplastic.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/katzenmilch.css b/plugins/node_modules/ace/lib/ace/theme/katzenmilch.css new file mode 100644 index 00000000..659f7fa6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/katzenmilch.css @@ -0,0 +1,143 @@ +.ace-katzenmilch .ace_gutter, +/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: ) */ + +.ace-katzenmilch .ace_gutter { + background: #e8e8e8; + color: #333 +} + +.ace-katzenmilch .ace_print-margin { + width: 1px; + background: #e8e8e8 +} + +.ace-katzenmilch { + background-color: #f3f2f3; + color: rgba(15, 0, 9, 1.0) +} + +.ace-katzenmilch .ace_cursor { + border-left: 2px solid #100011 +} + +.ace-katzenmilch .ace_overwrite-cursors .ace_cursor { + border-left: 0px; + border-bottom: 1px solid #100011 +} + +.ace-katzenmilch .ace_marker-layer .ace_selection { + background: rgba(100, 5, 208, 0.27) +} + +.ace-katzenmilch.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #f3f2f3; +} + +.ace-katzenmilch .ace_marker-layer .ace_step { + background: rgb(198, 219, 174) +} + +.ace-katzenmilch .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(0, 0, 0, 0.33); +} + +.ace-katzenmilch .ace_marker-layer .ace_active-line { + background: rgb(232, 242, 254) +} + +.ace-katzenmilch .ace_gutter-active-line { + background-color: rgb(232, 242, 254) +} + +.ace-katzenmilch .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(100, 5, 208, 0.27) +} + +.ace-katzenmilch .ace_invisible { + color: #BFBFBF +} + +.ace-katzenmilch .ace_fold { + background-color: rgba(2, 95, 73, 0.97); + border-color: rgba(15, 0, 9, 1.0) +} + +.ace-katzenmilch .ace_keyword { + color: #674Aa8; + rbackground-color: rgba(163, 170, 216, 0.055) +} + +.ace-katzenmilch .ace_constant.ace_language { + color: #7D7e52; + rbackground-color: rgba(189, 190, 130, 0.059) +} + +.ace-katzenmilch .ace_constant.ace_numeric { + color: rgba(79, 130, 123, 0.93); + rbackground-color: rgba(119, 194, 187, 0.059) +} + +.ace-katzenmilch .ace_constant.ace_character, +.ace-katzenmilch .ace_constant.ace_other { + color: rgba(2, 95, 105, 1.0); + rbackground-color: rgba(127, 34, 153, 0.063) +} + +.ace-katzenmilch .ace_support.ace_function { + color: #9D7e62; + rbackground-color: rgba(189, 190, 130, 0.039) +} + +.ace-katzenmilch .ace_support.ace_class { + color: rgba(239, 106, 167, 1.0); + rbackground-color: rgba(239, 106, 167, 0.063) +} + +.ace-katzenmilch .ace_storage { + color: rgba(123, 92, 191, 1.0); + rbackground-color: rgba(139, 93, 223, 0.051) +} + +.ace-katzenmilch .ace_invalid { + color: #DFDFD5; + rbackground-color: #CC1B27 +} + +.ace-katzenmilch .ace_string { + color: #5a5f9b; + rbackground-color: rgba(170, 175, 219, 0.035) +} + +.ace-katzenmilch .ace_comment { + font-style: italic; + color: rgba(64, 79, 80, 0.67); + rbackground-color: rgba(95, 15, 255, 0.0078) +} + +.ace-katzenmilch .ace_entity.ace_name.ace_function, +.ace-katzenmilch .ace_variable { + color: rgba(2, 95, 73, 0.97); + rbackground-color: rgba(34, 255, 73, 0.12) +} + +.ace-katzenmilch .ace_variable.ace_language { + color: #316fcf; + rbackground-color: rgba(58, 175, 255, 0.039) +} + +.ace-katzenmilch .ace_variable.ace_parameter { + font-style: italic; + color: rgba(51, 150, 159, 0.87); + rbackground-color: rgba(5, 214, 249, 0.043) +} + +.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name { + color: rgba(73, 70, 194, 0.93); + rbackground-color: rgba(73, 134, 194, 0.035) +} + +.ace-katzenmilch .ace_entity.ace_name.ace_tag { + color: #3976a2; + rbackground-color: rgba(73, 166, 210, 0.039) +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/katzenmilch.js b/plugins/node_modules/ace/lib/ace/theme/katzenmilch.js new file mode 100644 index 00000000..4787483d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/katzenmilch.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-katzenmilch"; +exports.cssText = require("../requirejs/text!./katzenmilch.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/kr_theme.css b/plugins/node_modules/ace/lib/ace/theme/kr_theme.css new file mode 100644 index 00000000..e232de47 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/kr_theme.css @@ -0,0 +1,123 @@ +.ace-kr-theme .ace_gutter { + background: #1c1917; + color: #FCFFE0 +} + +.ace-kr-theme .ace_print-margin { + width: 1px; + background: #1c1917 +} + +.ace-kr-theme { + background-color: #0B0A09; + color: #FCFFE0 +} + +.ace-kr-theme .ace_cursor { + color: #FF9900 +} + +.ace-kr-theme .ace_marker-layer .ace_selection { + background: rgba(170, 0, 255, 0.45) +} + +.ace-kr-theme.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #0B0A09; +} + +.ace-kr-theme .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-kr-theme .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(255, 177, 111, 0.32) +} + +.ace-kr-theme .ace_marker-layer .ace_active-line { + background: #38403D +} + +.ace-kr-theme .ace_gutter-active-line { + background-color : #38403D +} + +.ace-kr-theme .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(170, 0, 255, 0.45) +} + +.ace-kr-theme .ace_invisible { + color: rgba(255, 177, 111, 0.32) +} + +.ace-kr-theme .ace_keyword, +.ace-kr-theme .ace_meta { + color: #949C8B +} + +.ace-kr-theme .ace_constant, +.ace-kr-theme .ace_constant.ace_character, +.ace-kr-theme .ace_constant.ace_character.ace_escape, +.ace-kr-theme .ace_constant.ace_other { + color: rgba(210, 117, 24, 0.76) +} + +.ace-kr-theme .ace_invalid { + color: #F8F8F8; + background-color: #A41300 +} + +.ace-kr-theme .ace_support { + color: #9FC28A +} + +.ace-kr-theme .ace_support.ace_constant { + color: #C27E66 +} + +.ace-kr-theme .ace_fold { + background-color: #949C8B; + border-color: #FCFFE0 +} + +.ace-kr-theme .ace_support.ace_function { + color: #85873A +} + +.ace-kr-theme .ace_storage { + color: #FFEE80 +} + +.ace-kr-theme .ace_string { + color: rgba(164, 161, 181, 0.8) +} + +.ace-kr-theme .ace_string.ace_regexp { + color: rgba(125, 255, 192, 0.65) +} + +.ace-kr-theme .ace_comment { + font-style: italic; + color: #706D5B +} + +.ace-kr-theme .ace_variable { + color: #D1A796 +} + +.ace-kr-theme .ace_list, +.ace-kr-theme .ace_markup.ace_list { + background-color: #0F0040 +} + +.ace-kr-theme .ace_variable.ace_language { + color: #FF80E1 +} + +.ace-kr-theme .ace_meta.ace_tag { + color: #BABD9C +} + +.ace-kr-theme .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/kr_theme.js b/plugins/node_modules/ace/lib/ace/theme/kr_theme.js new file mode 100644 index 00000000..fb6a5abe --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/kr_theme.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-kr-theme"; +exports.cssText = require("../requirejs/text!./kr_theme.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/kuroir.css b/plugins/node_modules/ace/lib/ace/theme/kuroir.css new file mode 100644 index 00000000..0ccc1dab --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/kuroir.css @@ -0,0 +1,70 @@ +/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: 467560D0-6ACE-4409-82FD-4791420837AC) */ + +.ace-kuroir .ace_gutter { + background: #e8e8e8; + color: #333; +} + +.ace-kuroir .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-kuroir { + background-color: #E8E9E8; + color: #363636; +} + +.ace-kuroir .ace_cursor { + color: #202020; +} + +.ace-kuroir .ace_marker-layer .ace_selection { + background: rgba(245, 170, 0, 0.57); +} + +.ace-kuroir.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #E8E9E8; +} + +.ace-kuroir .ace_marker-layer .ace_step { + background: rgb(198, 219, 174); +} + +.ace-kuroir .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(0, 0, 0, 0.29); +} + +.ace-kuroir .ace_marker-layer .ace_active-line { + background: rgba(203, 220, 47, 0.22); +} + +.ace-kuroir .ace_gutter-active-line { + background-color: rgba(203, 220, 47, 0.22); +} + +.ace-kuroir .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(245, 170, 0, 0.57); +} + +.ace-kuroir .ace_invisible { + color: #BFBFBF +} + +.ace-kuroir .ace_fold { + border-color: #363636; +} + + + + + +.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224; +background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline; +font-style:italic; +color:#FD1732; +background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00; +background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91); +background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D; +background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;} diff --git a/plugins/node_modules/ace/lib/ace/theme/kuroir.js b/plugins/node_modules/ace/lib/ace/theme/kuroir.js new file mode 100644 index 00000000..cef6a50b --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/kuroir.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-kuroir"; +exports.cssText = require("../requirejs/text!./kuroir.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/merbivore.css b/plugins/node_modules/ace/lib/ace/theme/merbivore.css new file mode 100644 index 00000000..9be25c66 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/merbivore.css @@ -0,0 +1,109 @@ +.ace-merbivore .ace_gutter { + background: #202020; + color: #E6E1DC +} + +.ace-merbivore .ace_print-margin { + width: 1px; + background: #555651 +} + +.ace-merbivore { + background-color: #161616; + color: #E6E1DC +} + +.ace-merbivore .ace_cursor { + color: #FFFFFF +} + +.ace-merbivore .ace_marker-layer .ace_selection { + background: #454545 +} + +.ace-merbivore.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #161616; +} + +.ace-merbivore .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-merbivore .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #404040 +} + +.ace-merbivore .ace_marker-layer .ace_active-line { + background: #333435 +} + +.ace-merbivore .ace_gutter-active-line { + background-color: #333435 +} + +.ace-merbivore .ace_marker-layer .ace_selected-word { + border: 1px solid #454545 +} + +.ace-merbivore .ace_invisible { + color: #404040 +} + +.ace-merbivore .ace_entity.ace_name.ace_tag, +.ace-merbivore .ace_keyword, +.ace-merbivore .ace_meta, +.ace-merbivore .ace_meta.ace_tag, +.ace-merbivore .ace_storage, +.ace-merbivore .ace_support.ace_function { + color: #FC6F09 +} + +.ace-merbivore .ace_constant, +.ace-merbivore .ace_constant.ace_character, +.ace-merbivore .ace_constant.ace_character.ace_escape, +.ace-merbivore .ace_constant.ace_other, +.ace-merbivore .ace_support.ace_type { + color: #1EDAFB +} + +.ace-merbivore .ace_constant.ace_character.ace_escape { + color: #519F50 +} + +.ace-merbivore .ace_constant.ace_language { + color: #FDC251 +} + +.ace-merbivore .ace_constant.ace_library, +.ace-merbivore .ace_string, +.ace-merbivore .ace_support.ace_constant { + color: #8DFF0A +} + +.ace-merbivore .ace_constant.ace_numeric { + color: #58C554 +} + +.ace-merbivore .ace_invalid { + color: #FFFFFF; + background-color: #990000 +} + +.ace-merbivore .ace_fold { + background-color: #FC6F09; + border-color: #E6E1DC +} + +.ace-merbivore .ace_comment { + font-style: italic; + color: #AD2EA4 +} + +.ace-merbivore .ace_entity.ace_other.ace_attribute-name { + color: #FFFF89 +} + +.ace-merbivore .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/merbivore.js b/plugins/node_modules/ace/lib/ace/theme/merbivore.js new file mode 100644 index 00000000..9b29db1c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/merbivore.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-merbivore"; +exports.cssText = require("../requirejs/text!./merbivore.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/merbivore_soft.css b/plugins/node_modules/ace/lib/ace/theme/merbivore_soft.css new file mode 100644 index 00000000..0d615376 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/merbivore_soft.css @@ -0,0 +1,110 @@ +.ace-merbivore-soft .ace_gutter { + background: #262424; + color: #E6E1DC +} + +.ace-merbivore-soft .ace_print-margin { + width: 1px; + background: #262424 +} + +.ace-merbivore-soft { + background-color: #1C1C1C; + color: #E6E1DC +} + +.ace-merbivore-soft .ace_cursor { + color: #FFFFFF +} + +.ace-merbivore-soft .ace_marker-layer .ace_selection { + background: #494949 +} + +.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #1C1C1C; +} + +.ace-merbivore-soft .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-merbivore-soft .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #404040 +} + +.ace-merbivore-soft .ace_marker-layer .ace_active-line { + background: #333435 +} + +.ace-merbivore-soft .ace_gutter-active-line { + background-color: #333435 +} + +.ace-merbivore-soft .ace_marker-layer .ace_selected-word { + border: 1px solid #494949 +} + +.ace-merbivore-soft .ace_invisible { + color: #404040 +} + +.ace-merbivore-soft .ace_entity.ace_name.ace_tag, +.ace-merbivore-soft .ace_keyword, +.ace-merbivore-soft .ace_meta, +.ace-merbivore-soft .ace_meta.ace_tag, +.ace-merbivore-soft .ace_storage { + color: #FC803A +} + +.ace-merbivore-soft .ace_constant, +.ace-merbivore-soft .ace_constant.ace_character, +.ace-merbivore-soft .ace_constant.ace_character.ace_escape, +.ace-merbivore-soft .ace_constant.ace_other, +.ace-merbivore-soft .ace_support.ace_type { + color: #68C1D8 +} + +.ace-merbivore-soft .ace_constant.ace_character.ace_escape { + color: #B3E5B4 +} + +.ace-merbivore-soft .ace_constant.ace_language { + color: #E1C582 +} + +.ace-merbivore-soft .ace_constant.ace_library, +.ace-merbivore-soft .ace_string, +.ace-merbivore-soft .ace_support.ace_constant { + color: #8EC65F +} + +.ace-merbivore-soft .ace_constant.ace_numeric { + color: #7FC578 +} + +.ace-merbivore-soft .ace_invalid, +.ace-merbivore-soft .ace_invalid.ace_deprecated { + color: #FFFFFF; + background-color: #FE3838 +} + +.ace-merbivore-soft .ace_fold { + background-color: #FC803A; + border-color: #E6E1DC +} + +.ace-merbivore-soft .ace_comment, +.ace-merbivore-soft .ace_meta { + font-style: italic; + color: #AC4BB8 +} + +.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name { + color: #EAF1A3 +} + +.ace-merbivore-soft .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/merbivore_soft.js b/plugins/node_modules/ace/lib/ace/theme/merbivore_soft.js new file mode 100644 index 00000000..c0ffd910 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/merbivore_soft.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-merbivore-soft"; +exports.cssText = require("../requirejs/text!./merbivore_soft.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/mono_industrial.css b/plugins/node_modules/ace/lib/ace/theme/mono_industrial.css new file mode 100644 index 00000000..6630e4a2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/mono_industrial.css @@ -0,0 +1,125 @@ +.ace-mono-industrial .ace_gutter { + background: #1d2521; + color: #C5C9C9 +} + +.ace-mono-industrial .ace_print-margin { + width: 1px; + background: #555651 +} + +.ace-mono-industrial { + background-color: #222C28; + color: #FFFFFF +} + +.ace-mono-industrial .ace_cursor { + color: #FFFFFF +} + +.ace-mono-industrial .ace_marker-layer .ace_selection { + background: rgba(145, 153, 148, 0.40) +} + +.ace-mono-industrial.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #222C28; +} + +.ace-mono-industrial .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-mono-industrial .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(102, 108, 104, 0.50) +} + +.ace-mono-industrial .ace_marker-layer .ace_active-line { + background: rgba(12, 13, 12, 0.25) +} + +.ace-mono-industrial .ace_gutter-active-line { + background-color: rgba(12, 13, 12, 0.25) +} + +.ace-mono-industrial .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(145, 153, 148, 0.40) +} + +.ace-mono-industrial .ace_invisible { + color: rgba(102, 108, 104, 0.50) +} + +.ace-mono-industrial .ace_string { + background-color: #151C19; + color: #FFFFFF +} + +.ace-mono-industrial .ace_keyword, +.ace-mono-industrial .ace_meta { + color: #A39E64 +} + +.ace-mono-industrial .ace_constant, +.ace-mono-industrial .ace_constant.ace_character, +.ace-mono-industrial .ace_constant.ace_character.ace_escape, +.ace-mono-industrial .ace_constant.ace_numeric, +.ace-mono-industrial .ace_constant.ace_other { + color: #E98800 +} + +.ace-mono-industrial .ace_entity.ace_name.ace_function, +.ace-mono-industrial .ace_keyword.ace_operator, +.ace-mono-industrial .ace_variable { + color: #A8B3AB +} + +.ace-mono-industrial .ace_invalid { + color: #FFFFFF; + background-color: rgba(153, 0, 0, 0.68) +} + +.ace-mono-industrial .ace_support.ace_constant { + color: #C87500 +} + +.ace-mono-industrial .ace_fold { + background-color: #A8B3AB; + border-color: #FFFFFF +} + +.ace-mono-industrial .ace_support.ace_function { + color: #588E60 +} + +.ace-mono-industrial .ace_entity.ace_name, +.ace-mono-industrial .ace_support.ace_class, +.ace-mono-industrial .ace_support.ace_type { + color: #5778B6 +} + +.ace-mono-industrial .ace_storage { + color: #C23B00 +} + +.ace-mono-industrial .ace_variable.ace_language, +.ace-mono-industrial .ace_variable.ace_parameter { + color: #648BD2 +} + +.ace-mono-industrial .ace_comment { + color: #666C68; + background-color: #151C19 +} + +.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name { + color: #909993 +} + +.ace-mono-industrial .ace_entity.ace_name.ace_tag { + color: #A65EFF +} + +.ace-mono-industrial .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/mono_industrial.js b/plugins/node_modules/ace/lib/ace/theme/mono_industrial.js new file mode 100644 index 00000000..cf0d0e48 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/mono_industrial.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-mono-industrial"; +exports.cssText = require("../requirejs/text!./mono_industrial.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/monokai.css b/plugins/node_modules/ace/lib/ace/theme/monokai.css new file mode 100644 index 00000000..bcc26ef4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/monokai.css @@ -0,0 +1,121 @@ +.ace-monokai .ace_gutter { + background: #2F3129; + color: #8F908A +} + +.ace-monokai .ace_print-margin { + width: 1px; + background: #555651 +} + +.ace-monokai { + background-color: #272822; + color: #F8F8F2 +} + +.ace-monokai .ace_cursor { + color: #F8F8F0 +} + +.ace-monokai .ace_marker-layer .ace_selection { + background: #49483E +} + +.ace-monokai.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #272822; +} + +.ace-monokai .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-monokai .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #49483E +} + +.ace-monokai .ace_marker-layer .ace_active-line { + background: #202020 +} + +.ace-monokai .ace_gutter-active-line { + background-color: #272727 +} + +.ace-monokai .ace_marker-layer .ace_selected-word { + border: 1px solid #49483E +} + +.ace-monokai .ace_invisible { + color: #52524d +} + +.ace-monokai .ace_entity.ace_name.ace_tag, +.ace-monokai .ace_keyword, +.ace-monokai .ace_meta.ace_tag, +.ace-monokai .ace_storage { + color: #F92672 +} + +.ace-monokai .ace_punctuation, +.ace-monokai .ace_punctuation.ace_tag { + color: #fff +} + +.ace-monokai .ace_constant.ace_character, +.ace-monokai .ace_constant.ace_language, +.ace-monokai .ace_constant.ace_numeric, +.ace-monokai .ace_constant.ace_other { + color: #AE81FF +} + +.ace-monokai .ace_invalid { + color: #F8F8F0; + background-color: #F92672 +} + +.ace-monokai .ace_invalid.ace_deprecated { + color: #F8F8F0; + background-color: #AE81FF +} + +.ace-monokai .ace_support.ace_constant, +.ace-monokai .ace_support.ace_function { + color: #66D9EF +} + +.ace-monokai .ace_fold { + background-color: #A6E22E; + border-color: #F8F8F2 +} + +.ace-monokai .ace_storage.ace_type, +.ace-monokai .ace_support.ace_class, +.ace-monokai .ace_support.ace_type { + font-style: italic; + color: #66D9EF +} + +.ace-monokai .ace_entity.ace_name.ace_function, +.ace-monokai .ace_entity.ace_other, +.ace-monokai .ace_entity.ace_other.ace_attribute-name, +.ace-monokai .ace_variable { + color: #A6E22E +} + +.ace-monokai .ace_variable.ace_parameter { + font-style: italic; + color: #FD971F +} + +.ace-monokai .ace_string { + color: #E6DB74 +} + +.ace-monokai .ace_comment { + color: #75715E +} + +.ace-monokai .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/monokai.js b/plugins/node_modules/ace/lib/ace/theme/monokai.js new file mode 100644 index 00000000..87d07786 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/monokai.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-monokai"; +exports.cssText = require("../requirejs/text!./monokai.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/pastel_on_dark.css b/plugins/node_modules/ace/lib/ace/theme/pastel_on_dark.css new file mode 100644 index 00000000..0b637174 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/pastel_on_dark.css @@ -0,0 +1,128 @@ +.ace-pastel-on-dark .ace_gutter { + background: #353030; + color: #8F938F +} + +.ace-pastel-on-dark .ace_print-margin { + width: 1px; + background: #353030 +} + +.ace-pastel-on-dark { + background-color: #2C2828; + color: #8F938F +} + +.ace-pastel-on-dark .ace_cursor { + color: #A7A7A7 +} + +.ace-pastel-on-dark .ace_marker-layer .ace_selection { + background: rgba(221, 240, 255, 0.20) +} + +.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #2C2828; +} + +.ace-pastel-on-dark .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-pastel-on-dark .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(255, 255, 255, 0.25) +} + +.ace-pastel-on-dark .ace_marker-layer .ace_active-line { + background: rgba(255, 255, 255, 0.031) +} + +.ace-pastel-on-dark .ace_gutter-active-line { + background-color: rgba(255, 255, 255, 0.031) +} + +.ace-pastel-on-dark .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(221, 240, 255, 0.20) +} + +.ace-pastel-on-dark .ace_invisible { + color: rgba(255, 255, 255, 0.25) +} + +.ace-pastel-on-dark .ace_keyword, +.ace-pastel-on-dark .ace_meta { + color: #757aD8 +} + +.ace-pastel-on-dark .ace_constant, +.ace-pastel-on-dark .ace_constant.ace_character, +.ace-pastel-on-dark .ace_constant.ace_character.ace_escape, +.ace-pastel-on-dark .ace_constant.ace_other { + color: #4FB7C5 +} + +.ace-pastel-on-dark .ace_keyword.ace_operator { + color: #797878 +} + +.ace-pastel-on-dark .ace_constant.ace_character { + color: #AFA472 +} + +.ace-pastel-on-dark .ace_constant.ace_language { + color: #DE8E30 +} + +.ace-pastel-on-dark .ace_constant.ace_numeric { + color: #CCCCCC +} + +.ace-pastel-on-dark .ace_invalid, +.ace-pastel-on-dark .ace_invalid.ace_illegal { + color: #F8F8F8; + background-color: rgba(86, 45, 86, 0.75) +} + +.ace-pastel-on-dark .ace_invalid.ace_deprecated { + text-decoration: underline; + font-style: italic; + color: #D2A8A1 +} + +.ace-pastel-on-dark .ace_fold { + background-color: #757aD8; + border-color: #8F938F +} + +.ace-pastel-on-dark .ace_support.ace_function { + color: #AEB2F8 +} + +.ace-pastel-on-dark .ace_string { + color: #66A968 +} + +.ace-pastel-on-dark .ace_string.ace_regexp { + color: #E9C062 +} + +.ace-pastel-on-dark .ace_comment { + color: #A6C6FF +} + +.ace-pastel-on-dark .ace_variable { + color: #BEBF55 +} + +.ace-pastel-on-dark .ace_variable.ace_language { + color: #C1C144 +} + +.ace-pastel-on-dark .ace_xml-pe { + color: #494949 +} + +.ace-pastel-on-dark .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/pastel_on_dark.js b/plugins/node_modules/ace/lib/ace/theme/pastel_on_dark.js new file mode 100644 index 00000000..6eea03a4 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/pastel_on_dark.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-pastel-on-dark"; +exports.cssText = require("../requirejs/text!./pastel_on_dark.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/solarized_dark.css b/plugins/node_modules/ace/lib/ace/theme/solarized_dark.css new file mode 100644 index 00000000..09740e69 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/solarized_dark.css @@ -0,0 +1,100 @@ +.ace-solarized-dark .ace_gutter { + background: #01313f; + color: #d0edf7 +} + +.ace-solarized-dark .ace_print-margin { + width: 1px; + background: #33555E +} + +.ace-solarized-dark { + background-color: #002B36; + color: #93A1A1 +} + +.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name, +.ace-solarized-dark .ace_storage { + color: #93A1A1 +} + +.ace-solarized-dark .ace_cursor, +.ace-solarized-dark .ace_string.ace_regexp { + color: #D30102 +} + +.ace-solarized-dark .ace_marker-layer .ace_active-line, +.ace-solarized-dark .ace_marker-layer .ace_selection { + background: rgba(255, 255, 255, 0.1) +} + +.ace-solarized-dark.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #002B36; +} + +.ace-solarized-dark .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-solarized-dark .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(147, 161, 161, 0.50) +} + +.ace-solarized-dark .ace_gutter-active-line { + background-color: #0d3440 +} + +.ace-solarized-dark .ace_marker-layer .ace_selected-word { + border: 1px solid #073642 +} + +.ace-solarized-dark .ace_invisible { + color: rgba(147, 161, 161, 0.50) +} + +.ace-solarized-dark .ace_keyword, +.ace-solarized-dark .ace_meta, +.ace-solarized-dark .ace_support.ace_class, +.ace-solarized-dark .ace_support.ace_type { + color: #859900 +} + +.ace-solarized-dark .ace_constant.ace_character, +.ace-solarized-dark .ace_constant.ace_other { + color: #CB4B16 +} + +.ace-solarized-dark .ace_constant.ace_language { + color: #B58900 +} + +.ace-solarized-dark .ace_constant.ace_numeric { + color: #D33682 +} + +.ace-solarized-dark .ace_fold { + background-color: #268BD2; + border-color: #93A1A1 +} + +.ace-solarized-dark .ace_entity.ace_name.ace_function, +.ace-solarized-dark .ace_entity.ace_name.ace_tag, +.ace-solarized-dark .ace_support.ace_function, +.ace-solarized-dark .ace_variable, +.ace-solarized-dark .ace_variable.ace_language { + color: #268BD2 +} + +.ace-solarized-dark .ace_string { + color: #2AA198 +} + +.ace-solarized-dark .ace_comment { + font-style: italic; + color: #657B83 +} + +.ace-solarized-dark .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/solarized_dark.js b/plugins/node_modules/ace/lib/ace/theme/solarized_dark.js new file mode 100644 index 00000000..71812c28 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/solarized_dark.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-solarized-dark"; +exports.cssText = require("../requirejs/text!./solarized_dark.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/solarized_light.css b/plugins/node_modules/ace/lib/ace/theme/solarized_light.css new file mode 100644 index 00000000..65399fda --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/solarized_light.css @@ -0,0 +1,105 @@ +.ace-solarized-light .ace_gutter { + background: #fbf1d3; + color: #333 +} + +.ace-solarized-light .ace_print-margin { + width: 1px; + background: #e8e8e8 +} + +.ace-solarized-light { + background-color: #FDF6E3; + color: #586E75 +} + +.ace-solarized-light .ace_cursor { + color: #000000 +} + +.ace-solarized-light .ace_marker-layer .ace_selection { + background: rgba(7, 54, 67, 0.09) +} + +.ace-solarized-light.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #FDF6E3; +} + +.ace-solarized-light .ace_marker-layer .ace_step { + background: rgb(255, 255, 0) +} + +.ace-solarized-light .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(147, 161, 161, 0.50) +} + +.ace-solarized-light .ace_marker-layer .ace_active-line { + background: #EEE8D5 +} + +.ace-solarized-light .ace_gutter-active-line { + background-color : #EDE5C1 +} + +.ace-solarized-light .ace_marker-layer .ace_selected-word { + border: 1px solid #073642 +} + +.ace-solarized-light .ace_invisible { + color: rgba(147, 161, 161, 0.50) +} + +.ace-solarized-light .ace_keyword, +.ace-solarized-light .ace_meta, +.ace-solarized-light .ace_support.ace_class, +.ace-solarized-light .ace_support.ace_type { + color: #859900 +} + +.ace-solarized-light .ace_constant.ace_character, +.ace-solarized-light .ace_constant.ace_other { + color: #CB4B16 +} + +.ace-solarized-light .ace_constant.ace_language { + color: #B58900 +} + +.ace-solarized-light .ace_constant.ace_numeric { + color: #D33682 +} + +.ace-solarized-light .ace_fold { + background-color: #268BD2; + border-color: #586E75 +} + +.ace-solarized-light .ace_entity.ace_name.ace_function, +.ace-solarized-light .ace_entity.ace_name.ace_tag, +.ace-solarized-light .ace_support.ace_function, +.ace-solarized-light .ace_variable, +.ace-solarized-light .ace_variable.ace_language { + color: #268BD2 +} + +.ace-solarized-light .ace_storage { + color: #073642 +} + +.ace-solarized-light .ace_string { + color: #2AA198 +} + +.ace-solarized-light .ace_string.ace_regexp { + color: #D30102 +} + +.ace-solarized-light .ace_comment, +.ace-solarized-light .ace_entity.ace_other.ace_attribute-name { + color: #93A1A1 +} + +.ace-solarized-light .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/solarized_light.js b/plugins/node_modules/ace/lib/ace/theme/solarized_light.js new file mode 100644 index 00000000..35ec219e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/solarized_light.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-solarized-light"; +exports.cssText = require("../requirejs/text!./solarized_light.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/sqlserver.css b/plugins/node_modules/ace/lib/ace/theme/sqlserver.css new file mode 100644 index 00000000..f7193c7c --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/sqlserver.css @@ -0,0 +1,167 @@ +.ace-sqlserver .ace_gutter { + background: #ebebeb; + color: #333; + overflow: hidden; +} + +.ace-sqlserver .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-sqlserver { + background-color: #FFFFFF; + color: black; +} + +.ace-sqlserver .ace_identifier { + color: black; +} + +.ace-sqlserver .ace_keyword { + color: #0000FF; +} + +.ace-sqlserver .ace_numeric { + color: black; +} + +.ace-sqlserver .ace_storage { + color: #11B7BE; +} + +.ace-sqlserver .ace_keyword.ace_operator, +.ace-sqlserver .ace_lparen, +.ace-sqlserver .ace_rparen, +.ace-sqlserver .ace_punctuation { + color: #808080; +} + +.ace-sqlserver .ace_set.ace_statement { + color: #0000FF; + text-decoration: underline; +} + +.ace-sqlserver .ace_cursor { + color: black; +} + +.ace-sqlserver .ace_invisible { + color: rgb(191, 191, 191); +} + +.ace-sqlserver .ace_constant.ace_buildin { + color: rgb(88, 72, 246); +} + +.ace-sqlserver .ace_constant.ace_language { + color: #979797; +} + +.ace-sqlserver .ace_constant.ace_library { + color: rgb(6, 150, 14); +} + +.ace-sqlserver .ace_invalid { + background-color: rgb(153, 0, 0); + color: white; +} + +.ace-sqlserver .ace_support.ace_function { + color: #FF00FF; +} + +.ace-sqlserver .ace_support.ace_constant { + color: rgb(6, 150, 14); +} + +.ace-sqlserver .ace_class { + color: #008080; +} + +.ace-sqlserver .ace_support.ace_other { + color: #6D79DE; +} + +.ace-sqlserver .ace_variable.ace_parameter { + font-style: italic; + color: #FD971F; +} + +.ace-sqlserver .ace_comment { + color: #008000; +} + +.ace-sqlserver .ace_constant.ace_numeric { + color: black; +} + +.ace-sqlserver .ace_variable { + color: rgb(49, 132, 149); +} + +.ace-sqlserver .ace_xml-pe { + color: rgb(104, 104, 91); +} + +.ace-sqlserver .ace_support.ace_storedprocedure { + color: #800000; +} + +.ace-sqlserver .ace_heading { + color: rgb(12, 7, 255); +} + +.ace-sqlserver .ace_list { + color: rgb(185, 6, 144); +} + +.ace-sqlserver .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} + +.ace-sqlserver .ace_marker-layer .ace_step { + background: rgb(252, 255, 0); +} + +.ace-sqlserver .ace_marker-layer .ace_stack { + background: rgb(164, 229, 101); +} + +.ace-sqlserver .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-sqlserver .ace_marker-layer .ace_active-line { + background: rgba(0, 0, 0, 0.07); +} + +.ace-sqlserver .ace_gutter-active-line { + background-color: #dcdcdc; +} + +.ace-sqlserver .ace_marker-layer .ace_selected-word { + background: rgb(250, 250, 255); + border: 1px solid rgb(200, 200, 250); +} + +.ace-sqlserver .ace_meta.ace_tag { + color: #0000FF; +} + +.ace-sqlserver .ace_string.ace_regex { + color: #FF0000; +} + +.ace-sqlserver .ace_string { + color: #FF0000; +} + +.ace-sqlserver .ace_entity.ace_other.ace_attribute-name { + color: #994409; +} + +.ace-sqlserver .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} diff --git a/plugins/node_modules/ace/lib/ace/theme/sqlserver.js b/plugins/node_modules/ace/lib/ace/theme/sqlserver.js new file mode 100644 index 00000000..ab657483 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/sqlserver.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-sqlserver"; +exports.cssText = require("../requirejs/text!./sqlserver.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/terminal.css b/plugins/node_modules/ace/lib/ace/theme/terminal.css new file mode 100644 index 00000000..f23a9ad6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/terminal.css @@ -0,0 +1,131 @@ +.ace-terminal-theme .ace_gutter { + background: #1a0005; + color: steelblue +} + +.ace-terminal-theme .ace_print-margin { + width: 1px; + background: #1a1a1a +} + +.ace-terminal-theme { + background-color: black; + color: #DEDEDE +} + +.ace-terminal-theme .ace_cursor { + color: #9F9F9F +} + +.ace-terminal-theme .ace_marker-layer .ace_selection { + background: #424242 +} + +.ace-terminal-theme.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px black; +} + +.ace-terminal-theme .ace_marker-layer .ace_step { + background: rgb(0, 0, 0) +} + +.ace-terminal-theme .ace_marker-layer .ace_bracket { + background: #090; +} + +.ace-terminal-theme .ace_marker-layer .ace_bracket-start { + background: #090; +} + +.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched { + margin: -1px 0 0 -1px; + border: 1px solid #900 +} + +.ace-terminal-theme .ace_marker-layer .ace_active-line { + background: #2A2A2A +} + +.ace-terminal-theme .ace_gutter-active-line { + background-color: #2A112A +} + +.ace-terminal-theme .ace_marker-layer .ace_selected-word { + border: 1px solid #424242 +} + +.ace-terminal-theme .ace_invisible { + color: #343434 +} + +.ace-terminal-theme .ace_keyword, +.ace-terminal-theme .ace_meta, +.ace-terminal-theme .ace_storage, +.ace-terminal-theme .ace_storage.ace_type, +.ace-terminal-theme .ace_support.ace_type { + color: tomato +} + +.ace-terminal-theme .ace_keyword.ace_operator { + color: deeppink +} + +.ace-terminal-theme .ace_constant.ace_character, +.ace-terminal-theme .ace_constant.ace_language, +.ace-terminal-theme .ace_constant.ace_numeric, +.ace-terminal-theme .ace_keyword.ace_other.ace_unit, +.ace-terminal-theme .ace_support.ace_constant, +.ace-terminal-theme .ace_variable.ace_parameter { + color: #E78C45 +} + +.ace-terminal-theme .ace_constant.ace_other { + color: gold +} + +.ace-terminal-theme .ace_invalid { + color: yellow; + background-color: red +} + +.ace-terminal-theme .ace_invalid.ace_deprecated { + color: #CED2CF; + background-color: #B798BF +} + +.ace-terminal-theme .ace_fold { + background-color: #7AA6DA; + border-color: #DEDEDE +} + +.ace-terminal-theme .ace_entity.ace_name.ace_function, +.ace-terminal-theme .ace_support.ace_function, +.ace-terminal-theme .ace_variable { + color: #7AA6DA +} + +.ace-terminal-theme .ace_support.ace_class, +.ace-terminal-theme .ace_support.ace_type { + color: #E7C547 +} + +.ace-terminal-theme .ace_heading, +.ace-terminal-theme .ace_string { + color: #B9CA4A +} + +.ace-terminal-theme .ace_entity.ace_name.ace_tag, +.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name, +.ace-terminal-theme .ace_meta.ace_tag, +.ace-terminal-theme .ace_string.ace_regexp, +.ace-terminal-theme .ace_variable { + color: #D54E53 +} + +.ace-terminal-theme .ace_comment { + color: orangered +} + +.ace-terminal-theme .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y; +} diff --git a/plugins/node_modules/ace/lib/ace/theme/terminal.js b/plugins/node_modules/ace/lib/ace/theme/terminal.js new file mode 100644 index 00000000..d7ff36ae --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/terminal.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-terminal-theme"; +exports.cssText = require("../requirejs/text!./terminal.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/textmate.css b/plugins/node_modules/ace/lib/ace/theme/textmate.css new file mode 100644 index 00000000..18e2b4ee --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/textmate.css @@ -0,0 +1,154 @@ +.ace-tm .ace_gutter { + background: #f0f0f0; + color: #333; +} + +.ace-tm .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-tm .ace_fold { + background-color: #6B72E6; +} + +.ace-tm { + background-color: #FFFFFF; + color: black; +} + +.ace-tm .ace_cursor { + color: black; +} + +.ace-tm .ace_invisible { + color: rgb(191, 191, 191); +} + +.ace-tm .ace_storage, +.ace-tm .ace_keyword { + color: blue; +} + +.ace-tm .ace_constant { + color: rgb(197, 6, 11); +} + +.ace-tm .ace_constant.ace_buildin { + color: rgb(88, 72, 246); +} + +.ace-tm .ace_constant.ace_language { + color: rgb(88, 92, 246); +} + +.ace-tm .ace_constant.ace_library { + color: rgb(6, 150, 14); +} + +.ace-tm .ace_invalid { + background-color: rgba(255, 0, 0, 0.1); + color: red; +} + +.ace-tm .ace_support.ace_function { + color: rgb(60, 76, 114); +} + +.ace-tm .ace_support.ace_constant { + color: rgb(6, 150, 14); +} + +.ace-tm .ace_support.ace_type, +.ace-tm .ace_support.ace_class { + color: rgb(109, 121, 222); +} + +.ace-tm .ace_keyword.ace_operator { + color: rgb(104, 118, 135); +} + +.ace-tm .ace_string { + color: rgb(3, 106, 7); +} + +.ace-tm .ace_comment { + color: rgb(76, 136, 107); +} + +.ace-tm .ace_comment.ace_doc { + color: rgb(0, 102, 255); +} + +.ace-tm .ace_comment.ace_doc.ace_tag { + color: rgb(128, 159, 191); +} + +.ace-tm .ace_constant.ace_numeric { + color: rgb(0, 0, 205); +} + +.ace-tm .ace_variable { + color: rgb(49, 132, 149); +} + +.ace-tm .ace_xml-pe { + color: rgb(104, 104, 91); +} + +.ace-tm .ace_entity.ace_name.ace_function { + color: #0000A2; +} + + +.ace-tm .ace_heading { + color: rgb(12, 7, 255); +} + +.ace-tm .ace_list { + color:rgb(185, 6, 144); +} + +.ace-tm .ace_meta.ace_tag { + color:rgb(0, 22, 142); +} + +.ace-tm .ace_string.ace_regex { + color: rgb(255, 0, 0) +} + +.ace-tm .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} +.ace-tm.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px white; +} +.ace-tm .ace_marker-layer .ace_step { + background: rgb(252, 255, 0); +} + +.ace-tm .ace_marker-layer .ace_stack { + background: rgb(164, 229, 101); +} + +.ace-tm .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-tm .ace_marker-layer .ace_active-line { + background: rgba(0, 0, 0, 0.07); +} + +.ace-tm .ace_gutter-active-line { + background-color : #dcdcdc; +} + +.ace-tm .ace_marker-layer .ace_selected-word { + background: rgb(250, 250, 255); + border: 1px solid rgb(200, 200, 250); +} + +.ace-tm .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} diff --git a/plugins/node_modules/ace/lib/ace/theme/textmate.js b/plugins/node_modules/ace/lib/ace/theme/textmate.js new file mode 100644 index 00000000..75e19745 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/textmate.js @@ -0,0 +1,40 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +exports.isDark = false; +exports.cssClass = "ace-tm"; +exports.cssText = require("../requirejs/text!./textmate.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow.css b/plugins/node_modules/ace/lib/ace/theme/tomorrow.css new file mode 100644 index 00000000..77407e66 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow.css @@ -0,0 +1,124 @@ +.ace-tomorrow .ace_gutter { + background: #f6f6f6; + color: #4D4D4C +} + +.ace-tomorrow .ace_print-margin { + width: 1px; + background: #f6f6f6 +} + +.ace-tomorrow { + background-color: #FFFFFF; + color: #4D4D4C +} + +.ace-tomorrow .ace_cursor { + color: #AEAFAD +} + +.ace-tomorrow .ace_marker-layer .ace_selection { + background: #D6D6D6 +} + +.ace-tomorrow.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #FFFFFF; +} + +.ace-tomorrow .ace_marker-layer .ace_step { + background: rgb(255, 255, 0) +} + +.ace-tomorrow .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #D1D1D1 +} + +.ace-tomorrow .ace_marker-layer .ace_active-line { + background: #EFEFEF +} + +.ace-tomorrow .ace_gutter-active-line { + background-color : #dcdcdc +} + +.ace-tomorrow .ace_marker-layer .ace_selected-word { + border: 1px solid #D6D6D6 +} + +.ace-tomorrow .ace_invisible { + color: #D1D1D1 +} + +.ace-tomorrow .ace_keyword, +.ace-tomorrow .ace_meta, +.ace-tomorrow .ace_storage, +.ace-tomorrow .ace_storage.ace_type, +.ace-tomorrow .ace_support.ace_type { + color: #8959A8 +} + +.ace-tomorrow .ace_keyword.ace_operator { + color: #3E999F +} + +.ace-tomorrow .ace_constant.ace_character, +.ace-tomorrow .ace_constant.ace_language, +.ace-tomorrow .ace_constant.ace_numeric, +.ace-tomorrow .ace_keyword.ace_other.ace_unit, +.ace-tomorrow .ace_support.ace_constant, +.ace-tomorrow .ace_variable.ace_parameter { + color: #F5871F +} + +.ace-tomorrow .ace_constant.ace_other { + color: #666969 +} + +.ace-tomorrow .ace_invalid { + color: #FFFFFF; + background-color: #C82829 +} + +.ace-tomorrow .ace_invalid.ace_deprecated { + color: #FFFFFF; + background-color: #8959A8 +} + +.ace-tomorrow .ace_fold { + background-color: #4271AE; + border-color: #4D4D4C +} + +.ace-tomorrow .ace_entity.ace_name.ace_function, +.ace-tomorrow .ace_support.ace_function, +.ace-tomorrow .ace_variable { + color: #4271AE +} + +.ace-tomorrow .ace_support.ace_class, +.ace-tomorrow .ace_support.ace_type { + color: #C99E00 +} + +.ace-tomorrow .ace_heading, +.ace-tomorrow .ace_markup.ace_heading, +.ace-tomorrow .ace_string { + color: #718C00 +} + +.ace-tomorrow .ace_entity.ace_name.ace_tag, +.ace-tomorrow .ace_entity.ace_other.ace_attribute-name, +.ace-tomorrow .ace_meta.ace_tag, +.ace-tomorrow .ace_string.ace_regexp, +.ace-tomorrow .ace_variable { + color: #C82829 +} + +.ace-tomorrow .ace_comment { + color: #8E908C +} + +.ace-tomorrow .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow.js b/plugins/node_modules/ace/lib/ace/theme/tomorrow.js new file mode 100644 index 00000000..1f02d7d9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-tomorrow"; +exports.cssText = require("../requirejs/text!./tomorrow.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow_night.css b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night.css new file mode 100644 index 00000000..e98a6580 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night.css @@ -0,0 +1,124 @@ +.ace-tomorrow-night .ace_gutter { + background: #25282c; + color: #C5C8C6 +} + +.ace-tomorrow-night .ace_print-margin { + width: 1px; + background: #25282c +} + +.ace-tomorrow-night { + background-color: #1D1F21; + color: #C5C8C6 +} + +.ace-tomorrow-night .ace_cursor { + color: #AEAFAD +} + +.ace-tomorrow-night .ace_marker-layer .ace_selection { + background: #373B41 +} + +.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #1D1F21; +} + +.ace-tomorrow-night .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-tomorrow-night .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #4B4E55 +} + +.ace-tomorrow-night .ace_marker-layer .ace_active-line { + background: #282A2E +} + +.ace-tomorrow-night .ace_gutter-active-line { + background-color: #282A2E +} + +.ace-tomorrow-night .ace_marker-layer .ace_selected-word { + border: 1px solid #373B41 +} + +.ace-tomorrow-night .ace_invisible { + color: #4B4E55 +} + +.ace-tomorrow-night .ace_keyword, +.ace-tomorrow-night .ace_meta, +.ace-tomorrow-night .ace_storage, +.ace-tomorrow-night .ace_storage.ace_type, +.ace-tomorrow-night .ace_support.ace_type { + color: #B294BB +} + +.ace-tomorrow-night .ace_keyword.ace_operator { + color: #8ABEB7 +} + +.ace-tomorrow-night .ace_constant.ace_character, +.ace-tomorrow-night .ace_constant.ace_language, +.ace-tomorrow-night .ace_constant.ace_numeric, +.ace-tomorrow-night .ace_keyword.ace_other.ace_unit, +.ace-tomorrow-night .ace_support.ace_constant, +.ace-tomorrow-night .ace_variable.ace_parameter { + color: #DE935F +} + +.ace-tomorrow-night .ace_constant.ace_other { + color: #CED1CF +} + +.ace-tomorrow-night .ace_invalid { + color: #CED2CF; + background-color: #DF5F5F +} + +.ace-tomorrow-night .ace_invalid.ace_deprecated { + color: #CED2CF; + background-color: #B798BF +} + +.ace-tomorrow-night .ace_fold { + background-color: #81A2BE; + border-color: #C5C8C6 +} + +.ace-tomorrow-night .ace_entity.ace_name.ace_function, +.ace-tomorrow-night .ace_support.ace_function, +.ace-tomorrow-night .ace_variable { + color: #81A2BE +} + +.ace-tomorrow-night .ace_support.ace_class, +.ace-tomorrow-night .ace_support.ace_type { + color: #F0C674 +} + +.ace-tomorrow-night .ace_heading, +.ace-tomorrow-night .ace_markup.ace_heading, +.ace-tomorrow-night .ace_string { + color: #B5BD68 +} + +.ace-tomorrow-night .ace_entity.ace_name.ace_tag, +.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name, +.ace-tomorrow-night .ace_meta.ace_tag, +.ace-tomorrow-night .ace_string.ace_regexp, +.ace-tomorrow-night .ace_variable { + color: #CC6666 +} + +.ace-tomorrow-night .ace_comment { + color: #969896 +} + +.ace-tomorrow-night .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow_night.js b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night.js new file mode 100644 index 00000000..e7137ffc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-tomorrow-night"; +exports.cssText = require("../requirejs/text!./tomorrow_night.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_blue.css b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_blue.css new file mode 100644 index 00000000..907eef35 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_blue.css @@ -0,0 +1,121 @@ +.ace-tomorrow-night-blue .ace_gutter { + background: #00204b; + color: #7388b5 +} + +.ace-tomorrow-night-blue .ace_print-margin { + width: 1px; + background: #00204b +} + +.ace-tomorrow-night-blue { + background-color: #002451; + color: #FFFFFF +} + +.ace-tomorrow-night-blue .ace_constant.ace_other, +.ace-tomorrow-night-blue .ace_cursor { + color: #FFFFFF +} + +.ace-tomorrow-night-blue .ace_marker-layer .ace_selection { + background: #003F8E +} + +.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #002451; +} + +.ace-tomorrow-night-blue .ace_marker-layer .ace_step { + background: rgb(127, 111, 19) +} + +.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #404F7D +} + +.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line { + background: #00346E +} + +.ace-tomorrow-night-blue .ace_gutter-active-line { + background-color: #022040 +} + +.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word { + border: 1px solid #003F8E +} + +.ace-tomorrow-night-blue .ace_invisible { + color: #404F7D +} + +.ace-tomorrow-night-blue .ace_keyword, +.ace-tomorrow-night-blue .ace_meta, +.ace-tomorrow-night-blue .ace_storage, +.ace-tomorrow-night-blue .ace_storage.ace_type, +.ace-tomorrow-night-blue .ace_support.ace_type { + color: #EBBBFF +} + +.ace-tomorrow-night-blue .ace_keyword.ace_operator { + color: #99FFFF +} + +.ace-tomorrow-night-blue .ace_constant.ace_character, +.ace-tomorrow-night-blue .ace_constant.ace_language, +.ace-tomorrow-night-blue .ace_constant.ace_numeric, +.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit, +.ace-tomorrow-night-blue .ace_support.ace_constant, +.ace-tomorrow-night-blue .ace_variable.ace_parameter { + color: #FFC58F +} + +.ace-tomorrow-night-blue .ace_invalid { + color: #FFFFFF; + background-color: #F99DA5 +} + +.ace-tomorrow-night-blue .ace_invalid.ace_deprecated { + color: #FFFFFF; + background-color: #EBBBFF +} + +.ace-tomorrow-night-blue .ace_fold { + background-color: #BBDAFF; + border-color: #FFFFFF +} + +.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function, +.ace-tomorrow-night-blue .ace_support.ace_function, +.ace-tomorrow-night-blue .ace_variable { + color: #BBDAFF +} + +.ace-tomorrow-night-blue .ace_support.ace_class, +.ace-tomorrow-night-blue .ace_support.ace_type { + color: #FFEEAD +} + +.ace-tomorrow-night-blue .ace_heading, +.ace-tomorrow-night-blue .ace_markup.ace_heading, +.ace-tomorrow-night-blue .ace_string { + color: #D1F1A9 +} + +.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag, +.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name, +.ace-tomorrow-night-blue .ace_meta.ace_tag, +.ace-tomorrow-night-blue .ace_string.ace_regexp, +.ace-tomorrow-night-blue .ace_variable { + color: #FF9DA4 +} + +.ace-tomorrow-night-blue .ace_comment { + color: #7285B7 +} + +.ace-tomorrow-night-blue .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_blue.js b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_blue.js new file mode 100644 index 00000000..dcdf4adc --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_blue.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-tomorrow-night-blue"; +exports.cssText = require("../requirejs/text!./tomorrow_night_blue.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_bright.css b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_bright.css new file mode 100644 index 00000000..c0c33739 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_bright.css @@ -0,0 +1,140 @@ +.ace-tomorrow-night-bright .ace_gutter { + background: #1a1a1a; + color: #DEDEDE +} + +.ace-tomorrow-night-bright .ace_print-margin { + width: 1px; + background: #1a1a1a +} + +.ace-tomorrow-night-bright { + background-color: #000000; + color: #DEDEDE +} + +.ace-tomorrow-night-bright .ace_cursor { + color: #9F9F9F +} + +.ace-tomorrow-night-bright .ace_marker-layer .ace_selection { + background: #424242 +} + +.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #000000; +} + +.ace-tomorrow-night-bright .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #888888 +} + +.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight { + border: 1px solid rgb(110, 119, 0); + border-bottom: 0; + box-shadow: inset 0 -1px rgb(110, 119, 0); + margin: -1px 0 0 -1px; + background: rgba(255, 235, 0, 0.1) +} + +.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line { + background: #2A2A2A +} + +.ace-tomorrow-night-bright .ace_gutter-active-line { + background-color: #2A2A2A +} + +.ace-tomorrow-night-bright .ace_stack { + background-color: rgb(66, 90, 44) +} + +.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word { + border: 1px solid #888888 +} + +.ace-tomorrow-night-bright .ace_invisible { + color: #343434 +} + +.ace-tomorrow-night-bright .ace_keyword, +.ace-tomorrow-night-bright .ace_meta, +.ace-tomorrow-night-bright .ace_storage, +.ace-tomorrow-night-bright .ace_storage.ace_type, +.ace-tomorrow-night-bright .ace_support.ace_type { + color: #C397D8 +} + +.ace-tomorrow-night-bright .ace_keyword.ace_operator { + color: #70C0B1 +} + +.ace-tomorrow-night-bright .ace_constant.ace_character, +.ace-tomorrow-night-bright .ace_constant.ace_language, +.ace-tomorrow-night-bright .ace_constant.ace_numeric, +.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit, +.ace-tomorrow-night-bright .ace_support.ace_constant, +.ace-tomorrow-night-bright .ace_variable.ace_parameter { + color: #E78C45 +} + +.ace-tomorrow-night-bright .ace_constant.ace_other { + color: #EEEEEE +} + +.ace-tomorrow-night-bright .ace_invalid { + color: #CED2CF; + background-color: #DF5F5F +} + +.ace-tomorrow-night-bright .ace_invalid.ace_deprecated { + color: #CED2CF; + background-color: #B798BF +} + +.ace-tomorrow-night-bright .ace_fold { + background-color: #7AA6DA; + border-color: #DEDEDE +} + +.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function, +.ace-tomorrow-night-bright .ace_support.ace_function, +.ace-tomorrow-night-bright .ace_variable { + color: #7AA6DA +} + +.ace-tomorrow-night-bright .ace_support.ace_class, +.ace-tomorrow-night-bright .ace_support.ace_type { + color: #E7C547 +} + +.ace-tomorrow-night-bright .ace_heading, +.ace-tomorrow-night-bright .ace_markup.ace_heading, +.ace-tomorrow-night-bright .ace_string { + color: #B9CA4A +} + +.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag, +.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name, +.ace-tomorrow-night-bright .ace_meta.ace_tag, +.ace-tomorrow-night-bright .ace_string.ace_regexp, +.ace-tomorrow-night-bright .ace_variable { + color: #D54E53 +} + +.ace-tomorrow-night-bright .ace_comment { + color: #969896 +} + +.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword { + color: #C2C280 +} + +.ace-tomorrow-night-bright .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_bright.js b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_bright.js new file mode 100644 index 00000000..4b285668 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_bright.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-tomorrow-night-bright"; +exports.cssText = require("../requirejs/text!./tomorrow_night_bright.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_eighties.css b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_eighties.css new file mode 100644 index 00000000..69277fb1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_eighties.css @@ -0,0 +1,124 @@ +.ace-tomorrow-night-eighties .ace_gutter { + background: #272727; + color: #CCC +} + +.ace-tomorrow-night-eighties .ace_print-margin { + width: 1px; + background: #272727 +} + +.ace-tomorrow-night-eighties { + background-color: #2D2D2D; + color: #CCCCCC +} + +.ace-tomorrow-night-eighties .ace_constant.ace_other, +.ace-tomorrow-night-eighties .ace_cursor { + color: #CCCCCC +} + +.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection { + background: #515151 +} + +.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #2D2D2D; +} + +.ace-tomorrow-night-eighties .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #6A6A6A +} + +.ace-tomorrow-night-bright .ace_stack { + background: rgb(66, 90, 44) +} + +.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line { + background: #393939 +} + +.ace-tomorrow-night-eighties .ace_gutter-active-line { + background-color: #393939 +} + +.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word { + border: 1px solid #515151 +} + +.ace-tomorrow-night-eighties .ace_invisible { + color: #6A6A6A +} + +.ace-tomorrow-night-eighties .ace_keyword, +.ace-tomorrow-night-eighties .ace_meta, +.ace-tomorrow-night-eighties .ace_storage, +.ace-tomorrow-night-eighties .ace_storage.ace_type, +.ace-tomorrow-night-eighties .ace_support.ace_type { + color: #CC99CC +} + +.ace-tomorrow-night-eighties .ace_keyword.ace_operator { + color: #66CCCC +} + +.ace-tomorrow-night-eighties .ace_constant.ace_character, +.ace-tomorrow-night-eighties .ace_constant.ace_language, +.ace-tomorrow-night-eighties .ace_constant.ace_numeric, +.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit, +.ace-tomorrow-night-eighties .ace_support.ace_constant, +.ace-tomorrow-night-eighties .ace_variable.ace_parameter { + color: #F99157 +} + +.ace-tomorrow-night-eighties .ace_invalid { + color: #CDCDCD; + background-color: #F2777A +} + +.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated { + color: #CDCDCD; + background-color: #CC99CC +} + +.ace-tomorrow-night-eighties .ace_fold { + background-color: #6699CC; + border-color: #CCCCCC +} + +.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function, +.ace-tomorrow-night-eighties .ace_support.ace_function, +.ace-tomorrow-night-eighties .ace_variable { + color: #6699CC +} + +.ace-tomorrow-night-eighties .ace_support.ace_class, +.ace-tomorrow-night-eighties .ace_support.ace_type { + color: #FFCC66 +} + +.ace-tomorrow-night-eighties .ace_heading, +.ace-tomorrow-night-eighties .ace_markup.ace_heading, +.ace-tomorrow-night-eighties .ace_string { + color: #99CC99 +} + +.ace-tomorrow-night-eighties .ace_comment { + color: #999999 +} + +.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag, +.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name, +.ace-tomorrow-night-eighties .ace_meta.ace_tag, +.ace-tomorrow-night-eighties .ace_variable { + color: #F2777A +} + +.ace-tomorrow-night-eighties .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_eighties.js b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_eighties.js new file mode 100644 index 00000000..9ac7be67 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/tomorrow_night_eighties.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-tomorrow-night-eighties"; +exports.cssText = require("../requirejs/text!./tomorrow_night_eighties.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/twilight.css b/plugins/node_modules/ace/lib/ace/theme/twilight.css new file mode 100644 index 00000000..ae353dae --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/twilight.css @@ -0,0 +1,127 @@ +.ace-twilight .ace_gutter { + background: #232323; + color: #E2E2E2 +} + +.ace-twilight .ace_print-margin { + width: 1px; + background: #232323 +} + +.ace-twilight { + background-color: #141414; + color: #F8F8F8 +} + +.ace-twilight .ace_cursor { + color: #A7A7A7 +} + +.ace-twilight .ace_marker-layer .ace_selection { + background: rgba(221, 240, 255, 0.20) +} + +.ace-twilight.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #141414; +} + +.ace-twilight .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-twilight .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgba(255, 255, 255, 0.25) +} + +.ace-twilight .ace_marker-layer .ace_active-line { + background: rgba(255, 255, 255, 0.031) +} + +.ace-twilight .ace_gutter-active-line { + background-color: rgba(255, 255, 255, 0.031) +} + +.ace-twilight .ace_marker-layer .ace_selected-word { + border: 1px solid rgba(221, 240, 255, 0.20) +} + +.ace-twilight .ace_invisible { + color: rgba(255, 255, 255, 0.25) +} + +.ace-twilight .ace_keyword, +.ace-twilight .ace_meta { + color: #CDA869 +} + +.ace-twilight .ace_constant, +.ace-twilight .ace_constant.ace_character, +.ace-twilight .ace_constant.ace_character.ace_escape, +.ace-twilight .ace_constant.ace_other, +.ace-twilight .ace_heading, +.ace-twilight .ace_markup.ace_heading, +.ace-twilight .ace_support.ace_constant { + color: #CF6A4C +} + +.ace-twilight .ace_invalid.ace_illegal { + color: #F8F8F8; + background-color: rgba(86, 45, 86, 0.75) +} + +.ace-twilight .ace_invalid.ace_deprecated { + text-decoration: underline; + font-style: italic; + color: #D2A8A1 +} + +.ace-twilight .ace_support { + color: #9B859D +} + +.ace-twilight .ace_fold { + background-color: #AC885B; + border-color: #F8F8F8 +} + +.ace-twilight .ace_support.ace_function { + color: #DAD085 +} + +.ace-twilight .ace_list, +.ace-twilight .ace_markup.ace_list, +.ace-twilight .ace_storage { + color: #F9EE98 +} + +.ace-twilight .ace_entity.ace_name.ace_function, +.ace-twilight .ace_meta.ace_tag, +.ace-twilight .ace_variable { + color: #AC885B +} + +.ace-twilight .ace_string { + color: #8F9D6A +} + +.ace-twilight .ace_string.ace_regexp { + color: #E9C062 +} + +.ace-twilight .ace_comment { + font-style: italic; + color: #5F5A60 +} + +.ace-twilight .ace_variable { + color: #7587A6 +} + +.ace-twilight .ace_xml-pe { + color: #494949 +} + +.ace-twilight .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/twilight.js b/plugins/node_modules/ace/lib/ace/theme/twilight.js new file mode 100644 index 00000000..904f7ef6 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/twilight.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-twilight"; +exports.cssText = require("../requirejs/text!./twilight.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/vibrant_ink.css b/plugins/node_modules/ace/lib/ace/theme/vibrant_ink.css new file mode 100644 index 00000000..a3a89402 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/vibrant_ink.css @@ -0,0 +1,109 @@ +.ace-vibrant-ink .ace_gutter { + background: #1a1a1a; + color: #BEBEBE +} + +.ace-vibrant-ink .ace_print-margin { + width: 1px; + background: #1a1a1a +} + +.ace-vibrant-ink { + background-color: #0F0F0F; + color: #FFFFFF +} + +.ace-vibrant-ink .ace_cursor { + color: #FFFFFF +} + +.ace-vibrant-ink .ace_marker-layer .ace_selection { + background: #6699CC +} + +.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #0F0F0F; +} + +.ace-vibrant-ink .ace_marker-layer .ace_step { + background: rgb(102, 82, 0) +} + +.ace-vibrant-ink .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #404040 +} + +.ace-vibrant-ink .ace_marker-layer .ace_active-line { + background: #333333 +} + +.ace-vibrant-ink .ace_gutter-active-line { + background-color: #333333 +} + +.ace-vibrant-ink .ace_marker-layer .ace_selected-word { + border: 1px solid #6699CC +} + +.ace-vibrant-ink .ace_invisible { + color: #404040 +} + +.ace-vibrant-ink .ace_keyword, +.ace-vibrant-ink .ace_meta { + color: #FF6600 +} + +.ace-vibrant-ink .ace_constant, +.ace-vibrant-ink .ace_constant.ace_character, +.ace-vibrant-ink .ace_constant.ace_character.ace_escape, +.ace-vibrant-ink .ace_constant.ace_other { + color: #339999 +} + +.ace-vibrant-ink .ace_constant.ace_numeric { + color: #99CC99 +} + +.ace-vibrant-ink .ace_invalid, +.ace-vibrant-ink .ace_invalid.ace_deprecated { + color: #CCFF33; + background-color: #000000 +} + +.ace-vibrant-ink .ace_fold { + background-color: #FFCC00; + border-color: #FFFFFF +} + +.ace-vibrant-ink .ace_entity.ace_name.ace_function, +.ace-vibrant-ink .ace_support.ace_function, +.ace-vibrant-ink .ace_variable { + color: #FFCC00 +} + +.ace-vibrant-ink .ace_variable.ace_parameter { + font-style: italic +} + +.ace-vibrant-ink .ace_string { + color: #66FF00 +} + +.ace-vibrant-ink .ace_string.ace_regexp { + color: #44B4CC +} + +.ace-vibrant-ink .ace_comment { + color: #9933CC +} + +.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name { + font-style: italic; + color: #99CC99 +} + +.ace-vibrant-ink .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/vibrant_ink.js b/plugins/node_modules/ace/lib/ace/theme/vibrant_ink.js new file mode 100644 index 00000000..7156e5de --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/vibrant_ink.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = true; +exports.cssClass = "ace-vibrant-ink"; +exports.cssText = require("../requirejs/text!./vibrant_ink.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/theme/xcode.css b/plugins/node_modules/ace/lib/ace/theme/xcode.css new file mode 100644 index 00000000..a22bd169 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/xcode.css @@ -0,0 +1,102 @@ +/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */ + +.ace-xcode .ace_gutter { + background: #e8e8e8; + color: #333 +} + +.ace-xcode .ace_print-margin { + width: 1px; + background: #e8e8e8 +} + +.ace-xcode { + background-color: #FFFFFF; + color: #000000 +} + +.ace-xcode .ace_cursor { + color: #000000 +} + +.ace-xcode .ace_marker-layer .ace_selection { + background: #B5D5FF +} + +.ace-xcode.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px #FFFFFF; +} + +.ace-xcode .ace_marker-layer .ace_step { + background: rgb(198, 219, 174) +} + +.ace-xcode .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid #BFBFBF +} + +.ace-xcode .ace_marker-layer .ace_active-line { + background: rgba(0, 0, 0, 0.071) +} + +.ace-xcode .ace_gutter-active-line { + background-color: rgba(0, 0, 0, 0.071) +} + +.ace-xcode .ace_marker-layer .ace_selected-word { + border: 1px solid #B5D5FF +} + +.ace-xcode .ace_constant.ace_language, +.ace-xcode .ace_keyword, +.ace-xcode .ace_meta, +.ace-xcode .ace_variable.ace_language { + color: #C800A4 +} + +.ace-xcode .ace_invisible { + color: #BFBFBF +} + +.ace-xcode .ace_constant.ace_character, +.ace-xcode .ace_constant.ace_other { + color: #275A5E +} + +.ace-xcode .ace_constant.ace_numeric { + color: #3A00DC +} + +.ace-xcode .ace_entity.ace_other.ace_attribute-name, +.ace-xcode .ace_support.ace_constant, +.ace-xcode .ace_support.ace_function { + color: #450084 +} + +.ace-xcode .ace_fold { + background-color: #C800A4; + border-color: #000000 +} + +.ace-xcode .ace_entity.ace_name.ace_tag, +.ace-xcode .ace_support.ace_class, +.ace-xcode .ace_support.ace_type { + color: #790EAD +} + +.ace-xcode .ace_storage { + color: #C900A4 +} + +.ace-xcode .ace_string { + color: #DF0002 +} + +.ace-xcode .ace_comment { + color: #008E00 +} + +.ace-xcode .ace_indent-guide { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y +} \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/theme/xcode.js b/plugins/node_modules/ace/lib/ace/theme/xcode.js new file mode 100644 index 00000000..e17d708d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/theme/xcode.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace-xcode"; +exports.cssText = require("../requirejs/text!./xcode.css"); + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/lib/ace/token_iterator.js b/plugins/node_modules/ace/lib/ace/token_iterator.js new file mode 100644 index 00000000..2a4d20ee --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/token_iterator.js @@ -0,0 +1,168 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("./range").Range; + +/** + * + * + * This class provides an essay way to treat the document as a stream of tokens, and provides methods to iterate over these tokens. + * @class TokenIterator + **/ + +/** + * Creates a new token iterator object. The inital token index is set to the provided row and column coordinates. + * @param {EditSession} session The session to associate with + * @param {Number} initialRow The row to start the tokenizing at + * @param {Number} initialColumn The column to start the tokenizing at + * + * @constructor + **/ +var TokenIterator = function(session, initialRow, initialColumn) { + this.$session = session; + this.$row = initialRow; + this.$rowTokens = session.getTokens(initialRow); + + var token = session.getTokenAt(initialRow, initialColumn); + this.$tokenIndex = token ? token.index : -1; +}; + +(function() { + + /** + * Tokenizes all the items from the current point to the row prior in the document. + * @returns {[String]} If the current point is not at the top of the file, this function returns `null`. Otherwise, it returns an array of the tokenized strings. + **/ + this.stepBackward = function() { + this.$tokenIndex -= 1; + + while (this.$tokenIndex < 0) { + this.$row -= 1; + if (this.$row < 0) { + this.$row = 0; + return null; + } + + this.$rowTokens = this.$session.getTokens(this.$row); + this.$tokenIndex = this.$rowTokens.length - 1; + } + + return this.$rowTokens[this.$tokenIndex]; + }; + + /** + * Tokenizes all the items from the current point until the next row in the document. If the current point is at the end of the file, this function returns `null`. Otherwise, it returns the tokenized string. + * @returns {String} + **/ + this.stepForward = function() { + this.$tokenIndex += 1; + var rowCount; + while (this.$tokenIndex >= this.$rowTokens.length) { + this.$row += 1; + if (!rowCount) + rowCount = this.$session.getLength(); + if (this.$row >= rowCount) { + this.$row = rowCount - 1; + return null; + } + + this.$rowTokens = this.$session.getTokens(this.$row); + this.$tokenIndex = 0; + } + + return this.$rowTokens[this.$tokenIndex]; + }; + + /** + * + * Returns the current tokenized string. + * @returns {String} + **/ + this.getCurrentToken = function () { + return this.$rowTokens[this.$tokenIndex]; + }; + + /** + * + * Returns the current row. + * @returns {Number} + **/ + this.getCurrentTokenRow = function () { + return this.$row; + }; + + /** + * + * Returns the current column. + * @returns {Number} + **/ + this.getCurrentTokenColumn = function() { + var rowTokens = this.$rowTokens; + var tokenIndex = this.$tokenIndex; + + // If a column was cached by EditSession.getTokenAt, then use it + var column = rowTokens[tokenIndex].start; + if (column !== undefined) + return column; + + column = 0; + while (tokenIndex > 0) { + tokenIndex -= 1; + column += rowTokens[tokenIndex].value.length; + } + + return column; + }; + + /** + * Return the current token position. + * @returns {Position} + */ + this.getCurrentTokenPosition = function() { + return {row: this.$row, column: this.getCurrentTokenColumn()}; + }; + + /** + * Return the current token range. + * @returns {Range} + */ + this.getCurrentTokenRange = function() { + var token = this.$rowTokens[this.$tokenIndex]; + var column = this.getCurrentTokenColumn(); + return new Range(this.$row, column, this.$row, column + token.value.length); + }; + +}).call(TokenIterator.prototype); + +exports.TokenIterator = TokenIterator; +}); diff --git a/plugins/node_modules/ace/lib/ace/token_iterator_test.js b/plugins/node_modules/ace/lib/ace/token_iterator_test.js new file mode 100644 index 00000000..b1f67f90 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/token_iterator_test.js @@ -0,0 +1,212 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + if (typeof process !== "undefined") { + require("amd-loader"); + } + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var JavaScriptMode = require("./mode/javascript").Mode; +var TokenIterator = require("./token_iterator").TokenIterator; +var assert = require("./test/assertions"); + +module.exports = { + "test: token iterator initialization in JavaScript document" : function() { + var lines = [ + "function foo(items) {", + " for (var i=0; i<items.length; i++) {", + " alert(items[i] + \"juhu\");", + " } // Real Tab.", + "}" + ]; + var session = new EditSession(lines.join("\n"), new JavaScriptMode()); + + var iterator = new TokenIterator(session, 0, 0); + assert.equal(iterator.getCurrentToken().value, "function"); + assert.equal(iterator.getCurrentTokenRow(), 0); + assert.equal(iterator.getCurrentTokenColumn(), 0); + + iterator.stepForward(); + assert.equal(iterator.getCurrentToken().value, " "); + assert.equal(iterator.getCurrentTokenRow(), 0); + assert.equal(iterator.getCurrentTokenColumn(), 8); + + var iterator = new TokenIterator(session, 0, 4); + assert.equal(iterator.getCurrentToken().value, "function"); + assert.equal(iterator.getCurrentTokenRow(), 0); + assert.equal(iterator.getCurrentTokenColumn(), 0); + + iterator.stepForward(); + assert.equal(iterator.getCurrentToken().value, " "); + assert.equal(iterator.getCurrentTokenRow(), 0); + assert.equal(iterator.getCurrentTokenColumn(), 8); + + var iterator = new TokenIterator(session, 2, 18); + assert.equal(iterator.getCurrentToken().value, "items"); + assert.equal(iterator.getCurrentTokenRow(), 2); + assert.equal(iterator.getCurrentTokenColumn(), 14); + + iterator.stepForward(); + assert.equal(iterator.getCurrentToken().value, "["); + assert.equal(iterator.getCurrentTokenRow(), 2); + assert.equal(iterator.getCurrentTokenColumn(), 19); + + var iterator = new TokenIterator(session, 4, 0); + assert.equal(iterator.getCurrentToken().value, "}"); + assert.equal(iterator.getCurrentTokenRow(), 4); + assert.equal(iterator.getCurrentTokenColumn(), 0); + + iterator.stepBackward(); + assert.equal(iterator.getCurrentToken().value, "// Real Tab."); + assert.equal(iterator.getCurrentTokenRow(), 3); + assert.equal(iterator.getCurrentTokenColumn(), 6); + + var iterator = new TokenIterator(session, 5, 0); + assert.equal(iterator.getCurrentToken(), null); + }, + + "test: token iterator initialization in text document" : function() { + var lines = [ + "Lorem ipsum dolor sit amet, consectetur adipisicing elit,", + "sed do eiusmod tempor incididunt ut labore et dolore magna", + "aliqua. Ut enim ad minim veniam, quis nostrud exercitation", + "ullamco laboris nisi ut aliquip ex ea commodo consequat." + ]; + var session = new EditSession(lines.join("\n")); + + var iterator = new TokenIterator(session, 0, 0); + assert.equal(iterator.getCurrentToken().value, lines[0]); + assert.equal(iterator.getCurrentTokenRow(), 0); + assert.equal(iterator.getCurrentTokenColumn(), 0); + + var iterator = new TokenIterator(session, 0, 4); + assert.equal(iterator.getCurrentToken().value, lines[0]); + assert.equal(iterator.getCurrentTokenRow(), 0); + assert.equal(iterator.getCurrentTokenColumn(), 0); + + var iterator = new TokenIterator(session, 2, 18); + assert.equal(iterator.getCurrentToken().value, lines[2]); + assert.equal(iterator.getCurrentTokenRow(), 2); + assert.equal(iterator.getCurrentTokenColumn(), 0); + + var iterator = new TokenIterator(session, 3, lines[3].length-1); + assert.equal(iterator.getCurrentToken().value, lines[3]); + assert.equal(iterator.getCurrentTokenRow(), 3); + assert.equal(iterator.getCurrentTokenColumn(), 0); + + var iterator = new TokenIterator(session, 4, 0); + assert.equal(iterator.getCurrentToken(), null); + }, + + "test: token iterator step forward in JavaScript document" : function() { + var lines = [ + "function foo(items) {", + " for (var i=0; i<items.length; i++) {", + " alert(items[i] + \"juhu\");", + " } // Real Tab.", + "}" + ]; + var session = new EditSession(lines.join("\n"), new JavaScriptMode()); + + var tokens = []; + var len = session.getLength(); + for (var i = 0; i < len; i++) + tokens = tokens.concat(session.getTokens(i)); + + var iterator = new TokenIterator(session, 0, 0); + for (var i = 1; i < tokens.length; i++) + assert.equal(iterator.stepForward(), tokens[i]); + assert.equal(iterator.stepForward(), null); + assert.equal(iterator.getCurrentToken(), null); + }, + + "test: token iterator step backward in JavaScript document" : function() { + var lines = [ + "function foo(items) {", + " for (var i=0; i<items.length; i++) {", + " alert(items[i] + \"juhu\");", + " } // Real Tab.", + "}" + ]; + var session = new EditSession(lines.join("\n"), new JavaScriptMode()); + + var tokens = []; + var len = session.getLength(); + for (var i = 0; i < len; i++) + tokens = tokens.concat(session.getTokens(i)); + + var iterator = new TokenIterator(session, 4, 0); + for (var i = tokens.length-2; i >= 0; i--) + assert.equal(iterator.stepBackward(), tokens[i]); + assert.equal(iterator.stepBackward(), null); + assert.equal(iterator.getCurrentToken(), null); + }, + + "test: token iterator reports correct row and column" : function() { + var lines = [ + "function foo(items) {", + " for (var i=0; i<items.length; i++) {", + " alert(items[i] + \"juhu\");", + " } // Real Tab.", + "}" + ]; + var session = new EditSession(lines.join("\n"), new JavaScriptMode()); + + var iterator = new TokenIterator(session, 0, 0); + + iterator.stepForward(); + iterator.stepForward(); + + assert.equal(iterator.getCurrentToken().value, "foo"); + assert.equal(iterator.getCurrentTokenRow(), 0); + assert.equal(iterator.getCurrentTokenColumn(), 9); + + iterator.stepForward(); + iterator.stepForward(); + iterator.stepForward(); + iterator.stepForward(); + iterator.stepForward(); + iterator.stepForward(); + iterator.stepForward(); + + assert.equal(iterator.getCurrentToken().value, "for"); + assert.equal(iterator.getCurrentTokenRow(), 1); + assert.equal(iterator.getCurrentTokenColumn(), 4); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/tokenizer.js b/plugins/node_modules/ace/lib/ace/tokenizer.js new file mode 100644 index 00000000..707ce44d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/tokenizer.js @@ -0,0 +1,369 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var config = require("./config"); +// tokenizing lines longer than this makes editor very slow +var MAX_TOKEN_COUNT = 2000; +/** + * This class takes a set of highlighting rules, and creates a tokenizer out of them. For more information, see [the wiki on extending highlighters](https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode#wiki-extendingTheHighlighter). + * @class Tokenizer + **/ + +/** + * Constructs a new tokenizer based on the given rules and flags. + * @param {Object} rules The highlighting rules + * + * @constructor + **/ +var Tokenizer = function(rules) { + this.states = rules; + + this.regExps = {}; + this.matchMappings = {}; + for (var key in this.states) { + var state = this.states[key]; + var ruleRegExps = []; + var matchTotal = 0; + var mapping = this.matchMappings[key] = {defaultToken: "text"}; + var flag = "g"; + + var splitterRurles = []; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + if (rule.defaultToken) + mapping.defaultToken = rule.defaultToken; + if (rule.caseInsensitive) + flag = "gi"; + if (rule.regex == null) + continue; + + if (rule.regex instanceof RegExp) + rule.regex = rule.regex.toString().slice(1, -1); + + // Count number of matching groups. 2 extra groups from the full match + // And the catch-all on the end (used to force a match); + var adjustedregex = rule.regex; + var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; + if (Array.isArray(rule.token)) { + if (rule.token.length == 1 || matchcount == 1) { + rule.token = rule.token[0]; + } else if (matchcount - 1 != rule.token.length) { + this.reportError("number of classes and regexp groups doesn't match", { + rule: rule, + groupCount: matchcount - 1 + }); + rule.token = rule.token[0]; + } else { + rule.tokenArray = rule.token; + rule.token = null; + rule.onMatch = this.$arrayTokens; + } + } else if (typeof rule.token == "function" && !rule.onMatch) { + if (matchcount > 1) + rule.onMatch = this.$applyToken; + else + rule.onMatch = rule.token; + } + + if (matchcount > 1) { + if (/\\\d/.test(rule.regex)) { + // Replace any backreferences and offset appropriately. + adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function(match, digit) { + return "\\" + (parseInt(digit, 10) + matchTotal + 1); + }); + } else { + matchcount = 1; + adjustedregex = this.removeCapturingGroups(rule.regex); + } + if (!rule.splitRegex && typeof rule.token != "string") + splitterRurles.push(rule); // flag will be known only at the very end + } + + mapping[matchTotal] = i; + matchTotal += matchcount; + + ruleRegExps.push(adjustedregex); + + // makes property access faster + if (!rule.onMatch) + rule.onMatch = null; + } + + if (!ruleRegExps.length) { + mapping[0] = 0; + ruleRegExps.push("$"); + } + + splitterRurles.forEach(function(rule) { + rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); + }, this); + + this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); + } +}; + +(function() { + this.$setMaxTokenCount = function(m) { + MAX_TOKEN_COUNT = m | 0; + }; + + this.$applyToken = function(str) { + var values = this.splitRegex.exec(str).slice(1); + var types = this.token.apply(this, values); + + // required for compatibility with old modes + if (typeof types === "string") + return [{type: types, value: str}]; + + var tokens = []; + for (var i = 0, l = types.length; i < l; i++) { + if (values[i]) + tokens[tokens.length] = { + type: types[i], + value: values[i] + }; + } + return tokens; + }; + + this.$arrayTokens = function(str) { + if (!str) + return []; + var values = this.splitRegex.exec(str); + if (!values) + return "text"; + var tokens = []; + var types = this.tokenArray; + for (var i = 0, l = types.length; i < l; i++) { + if (values[i + 1]) + tokens[tokens.length] = { + type: types[i], + value: values[i + 1] + }; + } + return tokens; + }; + + this.removeCapturingGroups = function(src) { + var r = src.replace( + /\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g, + function(x, y) {return y ? "(?:" : x;} + ); + return r; + }; + + this.createSplitterRegexp = function(src, flag) { + if (src.indexOf("(?=") != -1) { + var stack = 0; + var inChClass = false; + var lastCapture = {}; + src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function( + m, esc, parenOpen, parenClose, square, index + ) { + if (inChClass) { + inChClass = square != "]"; + } else if (square) { + inChClass = true; + } else if (parenClose) { + if (stack == lastCapture.stack) { + lastCapture.end = index+1; + lastCapture.stack = -1; + } + stack--; + } else if (parenOpen) { + stack++; + if (parenOpen.length != 1) { + lastCapture.stack = stack; + lastCapture.start = index; + } + } + return m; + }); + + if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end))) + src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end); + } + + // this is needed for regexps that can match in multiple ways + if (src.charAt(0) != "^") src = "^" + src; + if (src.charAt(src.length - 1) != "$") src += "$"; + + return new RegExp(src, (flag||"").replace("g", "")); + }; + + /** + * Returns an object containing two properties: `tokens`, which contains all the tokens; and `state`, the current state. + * @returns {Object} + **/ + this.getLineTokens = function(line, startState) { + if (startState && typeof startState != "string") { + var stack = startState.slice(0); + startState = stack[0]; + if (startState === "#tmp") { + stack.shift(); + startState = stack.shift(); + } + } else + var stack = []; + + var currentState = startState || "start"; + var state = this.states[currentState]; + if (!state) { + currentState = "start"; + state = this.states[currentState]; + } + var mapping = this.matchMappings[currentState]; + var re = this.regExps[currentState]; + re.lastIndex = 0; + + var match, tokens = []; + var lastIndex = 0; + var matchAttempts = 0; + + var token = {type: null, value: ""}; + + while (match = re.exec(line)) { + var type = mapping.defaultToken; + var rule = null; + var value = match[0]; + var index = re.lastIndex; + + if (index - value.length > lastIndex) { + var skipped = line.substring(lastIndex, index - value.length); + if (token.type == type) { + token.value += skipped; + } else { + if (token.type) + tokens.push(token); + token = {type: type, value: skipped}; + } + } + + for (var i = 0; i < match.length-2; i++) { + if (match[i + 1] === undefined) + continue; + + rule = state[mapping[i]]; + + if (rule.onMatch) + type = rule.onMatch(value, currentState, stack, line); + else + type = rule.token; + + if (rule.next) { + if (typeof rule.next == "string") { + currentState = rule.next; + } else { + currentState = rule.next(currentState, stack); + } + + state = this.states[currentState]; + if (!state) { + this.reportError("state doesn't exist", currentState); + currentState = "start"; + state = this.states[currentState]; + } + mapping = this.matchMappings[currentState]; + lastIndex = index; + re = this.regExps[currentState]; + re.lastIndex = index; + } + if (rule.consumeLineEnd) + lastIndex = index; + break; + } + + if (value) { + if (typeof type === "string") { + if ((!rule || rule.merge !== false) && token.type === type) { + token.value += value; + } else { + if (token.type) + tokens.push(token); + token = {type: type, value: value}; + } + } else if (type) { + if (token.type) + tokens.push(token); + token = {type: null, value: ""}; + for (var i = 0; i < type.length; i++) + tokens.push(type[i]); + } + } + + if (lastIndex == line.length) + break; + + lastIndex = index; + + if (matchAttempts++ > MAX_TOKEN_COUNT) { + if (matchAttempts > 2 * line.length) { + this.reportError("infinite loop with in ace tokenizer", { + startState: startState, + line: line + }); + } + // chrome doens't show contents of text nodes with very long text + while (lastIndex < line.length) { + if (token.type) + tokens.push(token); + token = { + value: line.substring(lastIndex, lastIndex += 2000), + type: "overflow" + }; + } + currentState = "start"; + stack = []; + break; + } + } + + if (token.type) + tokens.push(token); + + if (stack.length > 1) { + if (stack[0] !== currentState) + stack.unshift("#tmp", currentState); + } + return { + tokens : tokens, + state : stack.length ? stack : currentState + }; + }; + + this.reportError = config.reportError; + +}).call(Tokenizer.prototype); + +exports.Tokenizer = Tokenizer; +}); diff --git a/plugins/node_modules/ace/lib/ace/tokenizer_dev.js b/plugins/node_modules/ace/lib/ace/tokenizer_dev.js new file mode 100644 index 00000000..4e0df23f --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/tokenizer_dev.js @@ -0,0 +1,185 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +var BaseTokenizer = require("./tokenizer").Tokenizer; + +// tokenizing lines longer than this makes editor very slow +var MAX_TOKEN_COUNT = 2000; +/* + * version of Tokenizer with additional logging + * and infinite loop checks + * can be used for developing/testing new modes + **/ + +var Tokenizer = function(rules) { + BaseTokenizer.call(this, rules); + + /** + * Returns an object containing two properties: `tokens`, which contains all the tokens; and `state`, the current state. + * @returns {Object} + **/ + this.getLineTokens = function(line, startState) { + if (startState && typeof startState != "string") { + var stack = startState.slice(0); + startState = stack[0]; + } else + var stack = []; + + var currentState = startState || "start"; + var state = this.states[currentState]; + var mapping = this.matchMappings[currentState]; + var re = this.regExps[currentState]; + re.lastIndex = 0; + + var match, tokens = []; + + var lastIndex = 0; + + var stateTransitions = []; + function onStateChange() { + stateTransitions.push(startState+"@"+lastIndex); + } + function initState() { + onStateChange(); + stateTransitions = []; + onStateChange(); + } + + var token = { + type: null, + value: "", + state: currentState + }; + initState(); + + var maxRecur = 20000; + + while (match = re.exec(line)) { + var type = mapping.defaultToken; + var rule = null; + var value = match[0]; + var index = re.lastIndex; + + if (index - value.length > lastIndex) { + var skipped = line.substring(lastIndex, index - value.length); + if (token.type == type) { + token.value += skipped; + } else { + if (token.type) + tokens.push(token); + token = {type: type, value: skipped}; + } + } + + for (var i = 0; i < match.length-2; i++) { + if (match[i + 1] === undefined) + continue; + + if (!maxRecur--) { + throw "infinite" + state[mapping[i]] + currentState; + } + + rule = state[mapping[i]]; + + if (rule.onMatch) + type = rule.onMatch(value, currentState, stack, line); + else + type = rule.token; + + if (rule.next) { + if (typeof rule.next == "string") + currentState = rule.next; + else + currentState = rule.next(currentState, stack); + + state = this.states[currentState]; + if (!state) { + window.console && console.error && console.error(currentState, "doesn't exist"); + currentState = "start"; + state = this.states[currentState]; + } + mapping = this.matchMappings[currentState]; + lastIndex = index; + re = this.regExps[currentState]; + re.lastIndex = index; + + onStateChange(); + } + if (rule.consumeLineEnd) + lastIndex = index; + break; + } + + if (value) { + if (typeof type == "string") { + if ((!rule || rule.merge !== false) && token.type === type) { + token.value += value; + } else { + if (token.type) + tokens.push(token); + token = {type: type, value: value}; + } + } else { + if (token.type) + tokens.push(token); + token = {type: null, value: ""}; + for (var i = 0; i < type.length; i++) + tokens.push(type[i]); + } + } + + if (lastIndex == line.length) + break; + + lastIndex = index; + + if (tokens.length > MAX_TOKEN_COUNT) { + token.value += line.substr(lastIndex); + currentState = "start"; + break; + } + } + + if (token.type) + tokens.push(token); + + return { + tokens : tokens, + state : stack.length ? stack : currentState + }; + }; + +}; + +Tokenizer.prototype = BaseTokenizer.prototype; + +exports.Tokenizer = Tokenizer; +}); diff --git a/plugins/node_modules/ace/lib/ace/tokenizer_test.js b/plugins/node_modules/ace/lib/ace/tokenizer_test.js new file mode 100644 index 00000000..be37fbd9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/tokenizer_test.js @@ -0,0 +1,97 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + if (typeof process !== "undefined") { + require("amd-loader"); + } + +define(function(require, exports, module) { +"use strict"; + +var Tokenizer = require("./tokenizer").Tokenizer; +var assert = require("./test/assertions"); + +module.exports = { + "test: createSplitterRegexp" : function() { + var t = new Tokenizer({}); + var re = t.createSplitterRegexp("(a)(b)(?=[x)(])"); + assert.equal(re.source, "^(a)(b)$"); + var re = t.createSplitterRegexp("xc(?=([x)(]))"); + assert.equal(re.source, "^xc$"); + var re = t.createSplitterRegexp("(xc(?=([x)(])))"); + assert.equal(re.source, "^(xc)$"); + var re = t.createSplitterRegexp("(?=r)[(?=)](?=([x)(]))"); + assert.equal(re.source, "^(?=r)[(?=)]$"); + var re = t.createSplitterRegexp("(?=r)[(?=)](\\?=t)"); + assert.equal(re.source, "^(?=r)[(?=)](\\?=t)$"); + var re = t.createSplitterRegexp("[(?=)](\\?=t)"); + assert.equal(re.source, "^[(?=)](\\?=t)$"); + }, + + "test: removeCapturingGroups" : function() { + var t = new Tokenizer({}); + var re = t.removeCapturingGroups("(ax(by))[()]"); + assert.equal(re, "(?:ax(?:by))[()]"); + }, + + "test: broken highlight rules": function() { + var t = new Tokenizer({ + start: [{ + token: 's', + regex: '&&&|^^^' + }, { + defaultToken: "def" + }], + state1: [{ + token: 'x', + regex: /\b([\w]*)(\s*)((?::)?)/ + }] + }); + var errorReports = 0; + t.reportError = function() { errorReports++; }; + var tokens = t.getLineTokens("x|", "start"); + assert.deepEqual(tokens, { + tokens: [{value: 'x|', type: 'overflow'}], + state: 'start' + }); + var tokens = t.getLineTokens("x|", "state1"); + assert.deepEqual(tokens, { + tokens: [{value: 'x', type: 'x'}, {value: '|', type: 'overflow'}], + state: 'start' + }); + assert.equal(errorReports, 2); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/tooltip.js b/plugins/node_modules/ace/lib/ace/tooltip.js new file mode 100644 index 00000000..d3ee2c3d --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/tooltip.js @@ -0,0 +1,145 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); + +/** + * @class Tooltip + **/ + +/** + * @param {Element} parentNode + * + * @constructor + **/ +function Tooltip (parentNode) { + this.isOpen = false; + this.$element = null; + this.$parentNode = parentNode; +} + +(function() { + this.$init = function() { + this.$element = dom.createElement("div"); + this.$element.className = "ace_tooltip"; + this.$element.style.display = "none"; + this.$parentNode.appendChild(this.$element); + return this.$element; + }; + + /** + * @returns {Element} + **/ + this.getElement = function() { + return this.$element || this.$init(); + }; + + /** + * @param {String} text + **/ + this.setText = function(text) { + dom.setInnerText(this.getElement(), text); + }; + + /** + * @param {String} html + **/ + this.setHtml = function(html) { + this.getElement().innerHTML = html; + }; + + /** + * @param {Number} x + * @param {Number} y + **/ + this.setPosition = function(x, y) { + this.getElement().style.left = x + "px"; + this.getElement().style.top = y + "px"; + }; + + /** + * @param {String} className + **/ + this.setClassName = function(className) { + dom.addCssClass(this.getElement(), className); + }; + + /** + * @param {String} text + * @param {Number} x + * @param {Number} y + **/ + this.show = function(text, x, y) { + if (text != null) + this.setText(text); + if (x != null && y != null) + this.setPosition(x, y); + if (!this.isOpen) { + this.getElement().style.display = "block"; + this.isOpen = true; + } + }; + + this.hide = function() { + if (this.isOpen) { + this.getElement().style.display = "none"; + this.isOpen = false; + } + }; + + /** + * @returns {Number} + **/ + this.getHeight = function() { + return this.getElement().offsetHeight; + }; + + /** + * @returns {Number} + **/ + this.getWidth = function() { + return this.getElement().offsetWidth; + }; + + this.destroy = function() { + this.isOpen = false; + if (this.$element && this.$element.parentNode) { + this.$element.parentNode.removeChild(this.$element); + } + }; + +}).call(Tooltip.prototype); + +exports.Tooltip = Tooltip; +}); diff --git a/plugins/node_modules/ace/lib/ace/undomanager.js b/plugins/node_modules/ace/lib/ace/undomanager.js new file mode 100644 index 00000000..4e94ccb8 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/undomanager.js @@ -0,0 +1,589 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +/** + * This object maintains the undo stack for an [[EditSession `EditSession`]]. + * @class UndoManager + **/ + +/** + * Resets the current undo state and creates a new `UndoManager`. + * + * @constructor + **/ +var UndoManager = function() { + this.$maxRev = 0; + this.$fromUndo = false; + this.reset(); +}; + +(function() { + + this.addSession = function(session) { + this.$session = session; + }; + /** + * Provides a means for implementing your own undo manager. `options` has one property, `args`, an [[Array `Array`]], with two elements: + * + * - `args[0]` is an array of deltas + * - `args[1]` is the document to associate with + * + * @param {Object} options Contains additional properties + * + **/ + this.add = function(delta, allowMerge, session) { + if (this.$fromUndo) return; + if (delta == this.$lastDelta) return; + if (allowMerge === false || !this.lastDeltas) { + this.lastDeltas = []; + this.$undoStack.push(this.lastDeltas); + delta.id = this.$rev = ++this.$maxRev; + } + if (delta.action == "remove" || delta.action == "insert") + this.$lastDelta = delta; + this.lastDeltas.push(delta); + }; + + this.addSelection = function(selection, rev) { + this.selections.push({ + value: selection, + rev: rev || this.$rev + }); + }; + + this.startNewGroup = function() { + this.lastDeltas = null; + return this.$rev; + }; + + this.markIgnored = function(from, to) { + if (to == null) to = this.$rev + 1; + var stack = this.$undoStack; + for (var i = stack.length; i--;) { + var delta = stack[i][0]; + if (delta.id <= from) + break; + if (delta.id < to) + delta.ignore = true; + } + this.lastDeltas = null; + }; + + this.getSelection = function(rev, after) { + var stack = this.selections; + for (var i = stack.length; i--;) { + var selection = stack[i]; + if (selection.rev < rev) { + if (after) + selection = stack[i + 1]; + return selection; + } + } + }; + + this.getRevision = function() { + return this.$rev; + }; + + this.getDeltas = function(from, to) { + if (to == null) to = this.$rev + 1; + var stack = this.$undoStack; + var end = null, start = 0; + for (var i = stack.length; i--;) { + var delta = stack[i][0]; + if (delta.id < to && !end) + end = i+1; + if (delta.id <= from) { + start = i + 1; + break; + } + } + return stack.slice(start, end); + }; + + this.getChangedRanges = function(from, to) { + if (to == null) to = this.$rev + 1; + + }; + + this.getChangedLines = function(from, to) { + if (to == null) to = this.$rev + 1; + + }; + + /** + * [Perform an undo operation on the document, reverting the last change.]{: #UndoManager.undo} + * @param {Boolean} dontSelect {:dontSelect} + * + * @returns {Range} The range of the undo. + **/ + this.undo = function(session, dontSelect) { + this.lastDeltas = null; + var stack = this.$undoStack; + + if (!rearrangeUndoStack(stack, stack.length)) + return; + + if (!session) + session = this.$session; + + if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length) + this.$redoStack = []; + + this.$fromUndo = true; + + var deltaSet = stack.pop(); + var undoSelectionRange = null; + if (deltaSet && deltaSet.length) { + undoSelectionRange = session.undoChanges(deltaSet, dontSelect); + this.$redoStack.push(deltaSet); + this.$syncRev(); + } + + this.$fromUndo = false; + + return undoSelectionRange; + }; + + /** + * [Perform a redo operation on the document, reimplementing the last change.]{: #UndoManager.redo} + * @param {Boolean} dontSelect {:dontSelect} + * + **/ + this.redo = function(session, dontSelect) { + this.lastDeltas = null; + + if (!session) + session = this.$session; + + this.$fromUndo = true; + if (this.$redoStackBaseRev != this.$rev) { + var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1); + rebaseRedoStack(this.$redoStack, diff); + this.$redoStackBaseRev = this.$rev; + this.$redoStack.forEach(function(x) { + x[0].id = ++this.$maxRev; + }, this); + } + var deltaSet = this.$redoStack.pop(); + var redoSelectionRange = null; + + if (deltaSet) { + redoSelectionRange = session.redoChanges(deltaSet, dontSelect); + this.$undoStack.push(deltaSet); + this.$syncRev(); + } + this.$fromUndo = false; + + return redoSelectionRange; + }; + + this.$syncRev = function() { + var stack = this.$undoStack; + var nextDelta = stack[stack.length - 1]; + var id = nextDelta && nextDelta[0].id || 0; + this.$redoStackBaseRev = id; + this.$rev = id; + }; + + /** + * Destroys the stack of undo and redo redo operations. + **/ + this.reset = function() { + this.lastDeltas = null; + this.$lastDelta = null; + this.$undoStack = []; + this.$redoStack = []; + this.$rev = 0; + this.mark = 0; + this.$redoStackBaseRev = this.$rev; + this.selections = []; + }; + + + /** + * Returns `true` if there are undo operations left to perform. + * @returns {Boolean} + **/ + this.canUndo = function() { + return this.$undoStack.length > 0; + }; + + /** + * Returns `true` if there are redo operations left to perform. + * @returns {Boolean} + **/ + this.canRedo = function() { + return this.$redoStack.length > 0; + }; + + /** + * Marks the current status clean + **/ + this.bookmark = function(rev) { + if (rev == undefined) + rev = this.$rev; + this.mark = rev; + }; + + /** + * Returns if the current status is clean + * @returns {Boolean} + **/ + this.isAtBookmark = function() { + return this.$rev === this.mark; + }; + + this.toJSON = function() { + + }; + + this.fromJSON = function() { + + }; + + this.hasUndo = this.canUndo; + this.hasRedo = this.canRedo; + this.isClean = this.isAtBookmark; + this.markClean = this.bookmark; + +}).call(UndoManager.prototype); + +function rearrangeUndoStack(stack, pos) { + for (var i = pos; i--; ) { + var deltaSet = stack[i]; + if (deltaSet && !deltaSet[0].ignore) { + while(i < pos - 1) { + var swapped = swapGroups(stack[i], stack[i + 1]); + stack[i] = swapped[0]; + stack[i + 1] = swapped[1]; + i++; + } + return true; + } + } +} + +var Range = require("./range").Range; +var cmp = Range.comparePoints; +var comparePoints = Range.comparePoints; + +function $updateMarkers(delta) { + var isInsert = delta.action == "insert"; + var start = delta.start; + var end = delta.end; + var rowShift = (end.row - start.row) * (isInsert ? 1 : -1); + var colShift = (end.column - start.column) * (isInsert ? 1 : -1); + if (isInsert) end = start; + + for (var i in this.marks) { + var point = this.marks[i]; + var cmp = comparePoints(point, start); + if (cmp < 0) { + continue; // delta starts after the range + } + if (cmp === 0) { + if (isInsert) { + if (point.bias == 1) { + cmp = 1; + } + else { + point.bias == -1; + continue; + } + } + } + var cmp2 = isInsert ? cmp : comparePoints(point, end); + if (cmp2 > 0) { + point.row += rowShift; + point.column += point.row == end.row ? colShift : 0; + continue; + } + if (!isInsert && cmp2 <= 0) { + point.row = start.row; + point.column = start.column; + if (cmp2 === 0) + point.bias = 1; + } + } +} + + + +function clonePos(pos) { + return {row: pos.row,column: pos.column}; +} +function cloneDelta(d) { + return { + start: clonePos(d.start), + end: clonePos(d.end), + action: d.action, + lines: d.lines.slice() + }; +} +function stringifyDelta(d) { + d = d || this; + if (Array.isArray(d)) { + return d.map(stringifyDelta).join("\n"); + } + var type = ""; + if (d.action) { + type = d.action == "insert" ? "+" : "-"; + type += "[" + d.lines + "]"; + } else if (d.value) { + if (Array.isArray(d.value)) { + type = d.value.map(stringifyRange).join("\n"); + } else { + type = stringifyRange(d.value); + } + } + if (d.start) { + type += stringifyRange(d); + } + if (d.id || d.rev) { + type += "\t(" + (d.id || d.rev) + ")"; + } + return type; +} +function stringifyRange(r) { + return r.start.row + ":" + r.start.column + + "=>" + r.end.row + ":" + r.end.column; +} +/* + * i i d1 d2 + * |/ |/ d2.s >= d1.e shift(d2, d1, -1) + * d2.s <= d1.s shift(d1, d2, +1) + * d1.s < d2.s < d1.e // can split + * + * i r d1 d2 + * |/ |\ d2.s >= d1.e shift(d2, d1, -1) + * d2.e <= d1.s shift(d1, d2, -1) + * else // can't swap + * + * r i d1 d2 + * |\ |/ d2.s >= d1.s shift(d2, d1, +1) + * d2.s <= d1.s shift(d1, d2, +1) + * // no else + * + * r r d1 d2 + * |\ |\ d2.s >= d1.s shift(d2, d1, +1) + * d2.e <= d1.s shift(d1, d2, -1) + * d2.s < d1.s < d2.e // can split + */ + +function swap(d1, d2) { + var i1 = d1.action == "insert"; + var i2 = d2.action == "insert"; + + if (i1 && i2) { + if (cmp(d2.start, d1.end) >= 0) { + shift(d2, d1, -1); + } else if (cmp(d2.start, d1.start) <= 0) { + shift(d1, d2, +1); + } else { + return null; + } + } else if (i1 && !i2) { + if (cmp(d2.start, d1.end) >= 0) { + shift(d2, d1, -1); + } else if (cmp(d2.end, d1.start) <= 0) { + shift(d1, d2, -1); + } else { + return null; + } + } else if (!i1 && i2) { + if (cmp(d2.start, d1.start) >= 0) { + shift(d2, d1, +1); + } else if (cmp(d2.start, d1.start) <= 0) { + shift(d1, d2, +1); + } else { + return null; + } + } else if (!i1 && !i2) { + if (cmp(d2.start, d1.start) >= 0) { + shift(d2, d1, +1); + } else if (cmp(d2.end, d1.start) <= 0) { + shift(d1, d2, -1); + } else { + return null; + } + } + return [d2, d1]; +} +function swapGroups(ds1, ds2) { + for (var i = ds1.length; i--; ) { + for (var j = 0; j < ds2.length; j++) { + if (!swap(ds1[i], ds2[j])) { + // rollback, we have to undo ds2 first + while (i < ds1.length) { + while (j--) { + swap(ds2[j], ds1[i]); + } + j = ds2.length; + i++; + } + return [ds1, ds2]; + } + } + } + ds1.selectionBefore = ds2.selectionBefore = + ds1.selectionAfter = ds2.selectionAfter = null; + return [ds2, ds1]; +} + +/* + d2 xform(d1, c1) = [d2, c2] + o<---o xform(c1, d1) = [c2, d2] + c2 | | d1 + o<---o + c1 +*/ +function xform(d1, c1) { + var i1 = d1.action == "insert"; + var i2 = c1.action == "insert"; + + if (i1 && i2) { + if (cmp(d1.start, c1.start) < 0) { + shift(c1, d1, 1); + } else { + shift(d1, c1, 1); + } + } else if (i1 && !i2) { + if (cmp(d1.start, c1.end) >= 0) { + shift(d1, c1, -1); + } else if (cmp(d1.start, c1.start) <= 0) { + shift(c1, d1, +1); + } else { + shift(d1, Range.fromPoints(c1.start, d1.start), -1); + shift(c1, d1, +1); + } + } else if (!i1 && i2) { + if (cmp(c1.start, d1.end) >= 0) { + shift(c1, d1, -1); + } else if (cmp(c1.start, d1.start) <= 0) { + shift(d1, c1, +1); + } else { + shift(c1, Range.fromPoints(d1.start, c1.start), -1); + shift(d1, c1, +1); + } + } else if (!i1 && !i2) { + if (cmp(c1.start, d1.end) >= 0) { + shift(c1, d1, -1); + } else if (cmp(c1.end, d1.start) <= 0) { + shift(d1, c1, -1); + } else { + var before, after; + if (cmp(d1.start, c1.start) < 0) { + before = d1; + d1 = splitDelta(d1, c1.start); + } + if (cmp(d1.end, c1.end) > 0) { + after = splitDelta(d1, c1.end); + } + + shiftPos(c1.end, d1.start, d1.end, -1); + if (after && !before) { + d1.lines = after.lines; + d1.start = after.start; + d1.end = after.end; + after = d1; + } + + return [c1, before, after].filter(Boolean); + } + } + return [c1, d1]; +} + +function shift(d1, d2, dir) { + shiftPos(d1.start, d2.start, d2.end, dir); + shiftPos(d1.end, d2.start, d2.end, dir); +} +function shiftPos(pos, start, end, dir) { + if (pos.row == (dir == 1 ? start : end).row) { + pos.column += dir * (end.column - start.column); + } + pos.row += dir * (end.row - start.row); +} +function splitDelta(c, pos) { + var lines = c.lines; + var end = c.end; + c.end = clonePos(pos); + var rowsBefore = c.end.row - c.start.row; + var otherLines = lines.splice(rowsBefore, lines.length); + + var col = rowsBefore ? pos.column : pos.column - c.start.column; + lines.push(otherLines[0].substring(0, col)); + otherLines[0] = otherLines[0].substr(col) ; + var rest = { + start: clonePos(pos), + end: end, + lines: otherLines, + action: c.action + }; + return rest; +} + +function moveDeltasByOne(redoStack, d) { + d = cloneDelta(d); + for (var j = redoStack.length; j--;) { + var deltaSet = redoStack[j]; + for (var i = deltaSet.length; i--> 0;) { + var x = deltaSet[i]; + var xformed = xform(x, d); + d = xformed[0]; + if (xformed.length != 2) { + if (xformed[2]) { + redoStack.splice(i + 1, 1, xformed[1], xformed[2]); + i++; + } else if (!xformed[1]) { + redoStack.splice(i, 1); + i--; + } + } + } + } + return redoStack; +} +function rebaseRedoStack(redoStack, deltaSets) { + for (var i = 0; i < deltaSets.length; i++) { + var deltas = deltaSets[i]; + for (var j = 0; j < deltas.length; j++) { + moveDeltasByOne(redoStack, deltas[j]); + } + } +} + +exports.UndoManager = UndoManager; + +}); diff --git a/plugins/node_modules/ace/lib/ace/undomanager_test.js b/plugins/node_modules/ace/lib/ace/undomanager_test.js new file mode 100644 index 00000000..4a9c1028 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/undomanager_test.js @@ -0,0 +1,111 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +require("./multi_select"); +var assert = require("./test/assertions"); +var Range = require("./range").Range; +var Editor = require("./editor").Editor; +var EditSession = require("./edit_session").EditSession; +var MockRenderer = require("./test/mockrenderer").MockRenderer; +var UndoManager = require("./undomanager").UndoManager; + +var editor; + + +module.exports = { + + name: "ACE undoManager.js", + + "test: reabsing": function() { + var session = new EditSession(""); + var editor = new Editor(new MockRenderer(), session); + var undoManager = new UndoManager(); + session.setUndoManager(undoManager); + + session.setValue("012345-012345-012345"); + session.insert({row: 0, column: 0}, "xx"); + session.markUndoGroup(); + session.remove(new Range(0, 10, 0, 15)); + session.markUndoGroup(); + session.insert({row: 0, column: 5}, "yy"); + session.markUndoGroup(); + editor.undo(); + editor.undo(); + var rev = session.getUndoManager().startNewGroup(); + session.insert({row: 0, column: 5}, "z\nz"); + session.getUndoManager().markIgnored(rev); + // editor.undo() + editor.redo(); + editor.redo(); + var val1 = editor.getValue(); + editor.undo(); + editor.undo(); + editor.undo(); + + editor.redo(); + editor.redo(); + editor.redo(); + var val2 = editor.getValue(); + assert.equal(val1, val2); + }, + "test: conflicting deletes": function() { + var session = new EditSession(""); + var editor = new Editor(new MockRenderer(), session); + var undoManager = new UndoManager(); + session.setUndoManager(undoManager); + + session.setValue("012345\nabcdefg\nxyz"); + session.remove(new Range(0, 2, 0, 4)); + assert.equal(session.getLine(0), "0145"); + session.markUndoGroup(); + editor.undo(); + session.remove(new Range(0, 1, 0, 5)); + assert.equal(session.getLine(0), "05"); + session.markUndoGroup(); + editor.redo(); + assert.equal(session.getLine(0), "05"); + editor.undo(); + assert.equal(session.getLine(0), "012345"); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/unicode.js b/plugins/node_modules/ace/lib/ace/unicode.js new file mode 100644 index 00000000..2af6c86e --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/unicode.js @@ -0,0 +1,17 @@ +define(function(require, exports, module) { +"use strict"; + +// generated by tool/unicode.js +var wordChars = [48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2]; + +var code = 0; +var str = []; +for (var i = 0; i < wordChars.length; i += 2) { + str.push(code += wordChars[i]); + if (wordChars[i + 1]) + str.push(45, code += wordChars[i + 1]); +} + +exports.wordChars = String.fromCharCode.apply(null, str); + +}); diff --git a/plugins/node_modules/ace/lib/ace/virtual_renderer.js b/plugins/node_modules/ace/lib/ace/virtual_renderer.js new file mode 100644 index 00000000..ef5f68c2 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/virtual_renderer.js @@ -0,0 +1,1775 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var config = require("./config"); +var useragent = require("./lib/useragent"); +var GutterLayer = require("./layer/gutter").Gutter; +var MarkerLayer = require("./layer/marker").Marker; +var TextLayer = require("./layer/text").Text; +var CursorLayer = require("./layer/cursor").Cursor; +var HScrollBar = require("./scrollbar").HScrollBar; +var VScrollBar = require("./scrollbar").VScrollBar; +var RenderLoop = require("./renderloop").RenderLoop; +var FontMetrics = require("./layer/font_metrics").FontMetrics; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var editorCss = require("./requirejs/text!./css/editor.css"); + +dom.importCssString(editorCss, "ace_editor.css"); + +/** + * The class that is responsible for drawing everything you see on the screen! + * @related editor.renderer + * @class VirtualRenderer + **/ + +/** + * Constructs a new `VirtualRenderer` within the `container` specified, applying the given `theme`. + * @param {DOMElement} container The root element of the editor + * @param {String} theme The starting theme + * + * @constructor + **/ + +var VirtualRenderer = function(container, theme) { + var _self = this; + + this.container = container || dom.createElement("div"); + + // TODO: this breaks rendering in Cloud9 with multiple ace instances + // // Imports CSS once per DOM document ('ace_editor' serves as an identifier). + // dom.importCssString(editorCss, "ace_editor", container.ownerDocument); + + // in IE <= 9 the native cursor always shines through + this.$keepTextAreaAtCursor = !useragent.isOldIE; + + dom.addCssClass(this.container, "ace_editor"); + + this.setTheme(theme); + + this.$gutter = dom.createElement("div"); + this.$gutter.className = "ace_gutter"; + this.container.appendChild(this.$gutter); + this.$gutter.setAttribute("aria-hidden", true); + + this.scroller = dom.createElement("div"); + this.scroller.className = "ace_scroller"; + this.container.appendChild(this.scroller); + + this.content = dom.createElement("div"); + this.content.className = "ace_content"; + this.scroller.appendChild(this.content); + + this.$gutterLayer = new GutterLayer(this.$gutter); + this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); + + this.$markerBack = new MarkerLayer(this.content); + + var textLayer = this.$textLayer = new TextLayer(this.content); + this.canvas = textLayer.element; + + this.$markerFront = new MarkerLayer(this.content); + + this.$cursorLayer = new CursorLayer(this.content); + + // Indicates whether the horizontal scrollbar is visible + this.$horizScroll = false; + this.$vScroll = false; + + this.scrollBar = + this.scrollBarV = new VScrollBar(this.container, this); + this.scrollBarH = new HScrollBar(this.container, this); + this.scrollBarV.addEventListener("scroll", function(e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.addEventListener("scroll", function(e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + + this.scrollTop = 0; + this.scrollLeft = 0; + + this.cursorPos = { + row : 0, + column : 0 + }; + + this.$fontMetrics = new FontMetrics(this.container); + this.$textLayer.$setFontMetrics(this.$fontMetrics); + this.$textLayer.addEventListener("changeCharacterSize", function(e) { + _self.updateCharacterSize(); + _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); + _self._signal("changeCharacterSize", e); + }); + + this.$size = { + width: 0, + height: 0, + scrollerHeight: 0, + scrollerWidth: 0, + $dirty: true + }; + + this.layerConfig = { + width : 1, + padding : 0, + firstRow : 0, + firstRowScreen: 0, + lastRow : 0, + lineHeight : 0, + characterWidth : 0, + minHeight : 1, + maxHeight : 1, + offset : 0, + height : 1, + gutterOffset: 1 + }; + + this.scrollMargin = { + left: 0, + right: 0, + top: 0, + bottom: 0, + v: 0, + h: 0 + }; + + this.$loop = new RenderLoop( + this.$renderChanges.bind(this), + this.container.ownerDocument.defaultView + ); + this.$loop.schedule(this.CHANGE_FULL); + + this.updateCharacterSize(); + this.setPadding(4); + config.resetOptions(this); + config._emit("renderer", this); +}; + +(function() { + + this.CHANGE_CURSOR = 1; + this.CHANGE_MARKER = 2; + this.CHANGE_GUTTER = 4; + this.CHANGE_SCROLL = 8; + this.CHANGE_LINES = 16; + this.CHANGE_TEXT = 32; + this.CHANGE_SIZE = 64; + this.CHANGE_MARKER_BACK = 128; + this.CHANGE_MARKER_FRONT = 256; + this.CHANGE_FULL = 512; + this.CHANGE_H_SCROLL = 1024; + + // this.$logChanges = function(changes) { + // var a = "" + // if (changes & this.CHANGE_CURSOR) a += " cursor"; + // if (changes & this.CHANGE_MARKER) a += " marker"; + // if (changes & this.CHANGE_GUTTER) a += " gutter"; + // if (changes & this.CHANGE_SCROLL) a += " scroll"; + // if (changes & this.CHANGE_LINES) a += " lines"; + // if (changes & this.CHANGE_TEXT) a += " text"; + // if (changes & this.CHANGE_SIZE) a += " size"; + // if (changes & this.CHANGE_MARKER_BACK) a += " marker_back"; + // if (changes & this.CHANGE_MARKER_FRONT) a += " marker_front"; + // if (changes & this.CHANGE_FULL) a += " full"; + // if (changes & this.CHANGE_H_SCROLL) a += " h_scroll"; + // console.log(a.trim()) + // }; + + oop.implement(this, EventEmitter); + + this.updateCharacterSize = function() { + if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) { + this.$allowBoldFonts = this.$textLayer.allowBoldFonts; + this.setStyle("ace_nobold", !this.$allowBoldFonts); + } + + this.layerConfig.characterWidth = + this.characterWidth = this.$textLayer.getCharacterWidth(); + this.layerConfig.lineHeight = + this.lineHeight = this.$textLayer.getLineHeight(); + this.$updatePrintMargin(); + }; + + /** + * + * Associates the renderer with an [[EditSession `EditSession`]]. + **/ + this.setSession = function(session) { + if (this.session) + this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode); + + this.session = session; + if (session && this.scrollMargin.top && session.getScrollTop() <= 0) + session.setScrollTop(-this.scrollMargin.top); + + this.$cursorLayer.setSession(session); + this.$markerBack.setSession(session); + this.$markerFront.setSession(session); + this.$gutterLayer.setSession(session); + this.$textLayer.setSession(session); + if (!session) + return; + + this.$loop.schedule(this.CHANGE_FULL); + // this.session.$setFontMetrics(this.$fontMetrics); + this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; + + this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); + this.onChangeNewLineMode(); + this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode); + }; + + /** + * Triggers a partial update of the text, from the range given by the two parameters. + * @param {Number} firstRow The first row to update + * @param {Number} lastRow The last row to update + * + **/ + this.updateLines = function(firstRow, lastRow, force) { + if (lastRow === undefined) + lastRow = Infinity; + + if (!this.$changedLines) { + this.$changedLines = { + firstRow: firstRow, + lastRow: lastRow + }; + } + else { + if (this.$changedLines.firstRow > firstRow) + this.$changedLines.firstRow = firstRow; + + if (this.$changedLines.lastRow < lastRow) + this.$changedLines.lastRow = lastRow; + } + + // If the change happened offscreen above us then it's possible + // that a new line wrap will affect the position of the lines on our + // screen so they need redrawn. + // TODO: better solution is to not change scroll position when text is changed outside of visible area + if (this.$changedLines.lastRow < this.layerConfig.firstRow) { + if (force) + this.$changedLines.lastRow = this.layerConfig.lastRow; + else + return; + } + if (this.$changedLines.firstRow > this.layerConfig.lastRow) + return; + this.$loop.schedule(this.CHANGE_LINES); + }; + + this.onChangeNewLineMode = function() { + this.$loop.schedule(this.CHANGE_TEXT); + this.$textLayer.$updateEolChar(); + this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR); + }; + + this.onChangeTabSize = function() { + this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER); + this.$textLayer.onChangeTabSize(); + }; + + /** + * Triggers a full update of the text, for all the rows. + **/ + this.updateText = function() { + this.$loop.schedule(this.CHANGE_TEXT); + }; + + /** + * Triggers a full update of all the layers, for all the rows. + * @param {Boolean} force If `true`, forces the changes through + * + **/ + this.updateFull = function(force) { + if (force) + this.$renderChanges(this.CHANGE_FULL, true); + else + this.$loop.schedule(this.CHANGE_FULL); + }; + + /** + * Updates the font size. + **/ + this.updateFontSize = function() { + this.$textLayer.checkForSizeChanges(); + }; + + this.$changes = 0; + this.$updateSizeAsync = function() { + if (this.$loop.pending) + this.$size.$dirty = true; + else + this.onResize(); + }; + /** + * [Triggers a resize of the editor.]{: #VirtualRenderer.onResize} + * @param {Boolean} force If `true`, recomputes the size, even if the height and width haven't changed + * @param {Number} gutterWidth The width of the gutter in pixels + * @param {Number} width The width of the editor in pixels + * @param {Number} height The hiehgt of the editor, in pixels + * + **/ + this.onResize = function(force, gutterWidth, width, height) { + if (this.resizing > 2) + return; + else if (this.resizing > 0) + this.resizing++; + else + this.resizing = force ? 1 : 0; + // `|| el.scrollHeight` is required for outosizing editors on ie + // where elements with clientHeight = 0 alsoe have clientWidth = 0 + var el = this.container; + if (!height) + height = el.clientHeight || el.scrollHeight; + if (!width) + width = el.clientWidth || el.scrollWidth; + var changes = this.$updateCachedSize(force, gutterWidth, width, height); + + + if (!this.$size.scrollerHeight || (!width && !height)) + return this.resizing = 0; + + if (force) + this.$gutterLayer.$padding = null; + + if (force) + this.$renderChanges(changes | this.$changes, true); + else + this.$loop.schedule(changes | this.$changes); + + if (this.resizing) + this.resizing = 0; + // reset cached values on scrollbars, needs to be removed when switching to non-native scrollbars + // see https://github.com/ajaxorg/ace/issues/2195 + this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null; + }; + + this.$updateCachedSize = function(force, gutterWidth, width, height) { + height -= (this.$extraHeight || 0); + var changes = 0; + var size = this.$size; + var oldSize = { + width: size.width, + height: size.height, + scrollerHeight: size.scrollerHeight, + scrollerWidth: size.scrollerWidth + }; + if (height && (force || size.height != height)) { + size.height = height; + changes |= this.CHANGE_SIZE; + + size.scrollerHeight = size.height; + if (this.$horizScroll) + size.scrollerHeight -= this.scrollBarH.getHeight(); + + // this.scrollBarV.setHeight(size.scrollerHeight); + this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; + + changes = changes | this.CHANGE_SCROLL; + } + + if (width && (force || size.width != width)) { + changes |= this.CHANGE_SIZE; + size.width = width; + + if (gutterWidth == null) + gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; + + this.gutterWidth = gutterWidth; + + this.scrollBarH.element.style.left = + this.scroller.style.left = gutterWidth + "px"; + size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth()); + + this.scrollBarH.element.style.right = + this.scroller.style.right = this.scrollBarV.getWidth() + "px"; + this.scroller.style.bottom = this.scrollBarH.getHeight() + "px"; + + // this.scrollBarH.element.style.setWidth(size.scrollerWidth); + + if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) + changes |= this.CHANGE_FULL; + } + + size.$dirty = !width || !height; + + if (changes) + this._signal("resize", oldSize); + + return changes; + }; + + this.onGutterResize = function() { + var gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; + if (gutterWidth != this.gutterWidth) + this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height); + + if (this.session.getUseWrapMode() && this.adjustWrapLimit()) { + this.$loop.schedule(this.CHANGE_FULL); + } else if (this.$size.$dirty) { + this.$loop.schedule(this.CHANGE_FULL); + } else { + this.$computeLayerConfig(); + this.$loop.schedule(this.CHANGE_MARKER); + } + }; + + /** + * Adjusts the wrap limit, which is the number of characters that can fit within the width of the edit area on screen. + **/ + this.adjustWrapLimit = function() { + var availableWidth = this.$size.scrollerWidth - this.$padding * 2; + var limit = Math.floor(availableWidth / this.characterWidth); + return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn); + }; + + /** + * Identifies whether you want to have an animated scroll or not. + * @param {Boolean} shouldAnimate Set to `true` to show animated scrolls + * + **/ + this.setAnimatedScroll = function(shouldAnimate){ + this.setOption("animatedScroll", shouldAnimate); + }; + + /** + * Returns whether an animated scroll happens or not. + * @returns {Boolean} + **/ + this.getAnimatedScroll = function() { + return this.$animatedScroll; + }; + + /** + * Identifies whether you want to show invisible characters or not. + * @param {Boolean} showInvisibles Set to `true` to show invisibles + * + **/ + this.setShowInvisibles = function(showInvisibles) { + this.setOption("showInvisibles", showInvisibles); + this.session.$bidiHandler.setShowInvisibles(showInvisibles); + }; + + /** + * Returns whether invisible characters are being shown or not. + * @returns {Boolean} + **/ + this.getShowInvisibles = function() { + return this.getOption("showInvisibles"); + }; + this.getDisplayIndentGuides = function() { + return this.getOption("displayIndentGuides"); + }; + + this.setDisplayIndentGuides = function(display) { + this.setOption("displayIndentGuides", display); + }; + + /** + * Identifies whether you want to show the print margin or not. + * @param {Boolean} showPrintMargin Set to `true` to show the print margin + * + **/ + this.setShowPrintMargin = function(showPrintMargin) { + this.setOption("showPrintMargin", showPrintMargin); + }; + + /** + * Returns whether the print margin is being shown or not. + * @returns {Boolean} + **/ + this.getShowPrintMargin = function() { + return this.getOption("showPrintMargin"); + }; + /** + * Identifies whether you want to show the print margin column or not. + * @param {Boolean} showPrintMargin Set to `true` to show the print margin column + * + **/ + this.setPrintMarginColumn = function(showPrintMargin) { + this.setOption("printMarginColumn", showPrintMargin); + }; + + /** + * Returns whether the print margin column is being shown or not. + * @returns {Boolean} + **/ + this.getPrintMarginColumn = function() { + return this.getOption("printMarginColumn"); + }; + + /** + * Returns `true` if the gutter is being shown. + * @returns {Boolean} + **/ + this.getShowGutter = function(){ + return this.getOption("showGutter"); + }; + + /** + * Identifies whether you want to show the gutter or not. + * @param {Boolean} show Set to `true` to show the gutter + * + **/ + this.setShowGutter = function(show){ + return this.setOption("showGutter", show); + }; + + this.getFadeFoldWidgets = function(){ + return this.getOption("fadeFoldWidgets"); + }; + + this.setFadeFoldWidgets = function(show) { + this.setOption("fadeFoldWidgets", show); + }; + + this.setHighlightGutterLine = function(shouldHighlight) { + this.setOption("highlightGutterLine", shouldHighlight); + }; + + this.getHighlightGutterLine = function() { + return this.getOption("highlightGutterLine"); + }; + + this.$updateGutterLineHighlight = function() { + var pos = this.$cursorLayer.$pixelPos; + var height = this.layerConfig.lineHeight; + if (this.session.getUseWrapMode()) { + var cursor = this.session.selection.getCursor(); + cursor.column = 0; + pos = this.$cursorLayer.getPixelPosition(cursor, true); + height *= this.session.getRowLength(cursor.row); + } + this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + "px"; + this.$gutterLineHighlight.style.height = height + "px"; + }; + + this.$updatePrintMargin = function() { + if (!this.$showPrintMargin && !this.$printMarginEl) + return; + + if (!this.$printMarginEl) { + var containerEl = dom.createElement("div"); + containerEl.className = "ace_layer ace_print-margin-layer"; + this.$printMarginEl = dom.createElement("div"); + this.$printMarginEl.className = "ace_print-margin"; + containerEl.appendChild(this.$printMarginEl); + this.content.insertBefore(containerEl, this.content.firstChild); + } + + var style = this.$printMarginEl.style; + style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px"; + style.visibility = this.$showPrintMargin ? "visible" : "hidden"; + + if (this.session && this.session.$wrap == -1) + this.adjustWrapLimit(); + }; + + /** + * + * Returns the root element containing this renderer. + * @returns {DOMElement} + **/ + this.getContainerElement = function() { + return this.container; + }; + + /** + * + * Returns the element that the mouse events are attached to + * @returns {DOMElement} + **/ + this.getMouseEventTarget = function() { + return this.scroller; + }; + + /** + * + * Returns the element to which the hidden text area is added. + * @returns {DOMElement} + **/ + this.getTextAreaContainer = function() { + return this.container; + }; + + // move text input over the cursor + // this is required for iOS and IME + this.$moveTextAreaToCursor = function() { + if (!this.$keepTextAreaAtCursor) + return; + var config = this.layerConfig; + var posTop = this.$cursorLayer.$pixelPos.top; + var posLeft = this.$cursorLayer.$pixelPos.left; + posTop -= config.offset; + + var style = this.textarea.style; + var h = this.lineHeight; + if (posTop < 0 || posTop > config.height - h) { + style.top = style.left = "0"; + return; + } + + var w = this.characterWidth; + if (this.$composition) { + var val = this.textarea.value.replace(/^\x01+/, ""); + w *= (this.session.$getStringScreenWidth(val)[0]+2); + h += 2; + } + posLeft -= this.scrollLeft; + if (posLeft > this.$size.scrollerWidth - w) + posLeft = this.$size.scrollerWidth - w; + + posLeft += this.gutterWidth; + style.height = h + "px"; + style.width = w + "px"; + style.left = Math.min(posLeft, this.$size.scrollerWidth - w) + "px"; + style.top = Math.min(posTop, this.$size.height - h) + "px"; + }; + + /** + * [Returns the index of the first visible row.]{: #VirtualRenderer.getFirstVisibleRow} + * @returns {Number} + **/ + this.getFirstVisibleRow = function() { + return this.layerConfig.firstRow; + }; + + /** + * + * Returns the index of the first fully visible row. "Fully" here means that the characters in the row are not truncated; that the top and the bottom of the row are on the screen. + * @returns {Number} + **/ + this.getFirstFullyVisibleRow = function() { + return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); + }; + + /** + * + * Returns the index of the last fully visible row. "Fully" here means that the characters in the row are not truncated; that the top and the bottom of the row are on the screen. + * @returns {Number} + **/ + this.getLastFullyVisibleRow = function() { + var config = this.layerConfig; + var lastRow = config.lastRow; + var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight; + if (top - this.session.getScrollTop() > config.height - config.lineHeight) + return lastRow - 1; + return lastRow; + }; + + /** + * + * [Returns the index of the last visible row.]{: #VirtualRenderer.getLastVisibleRow} + * @returns {Number} + **/ + this.getLastVisibleRow = function() { + return this.layerConfig.lastRow; + }; + + this.$padding = null; + + /** + * Sets the padding for all the layers. + * @param {Number} padding A new padding value (in pixels) + * + **/ + this.setPadding = function(padding) { + this.$padding = padding; + this.$textLayer.setPadding(padding); + this.$cursorLayer.setPadding(padding); + this.$markerFront.setPadding(padding); + this.$markerBack.setPadding(padding); + this.$loop.schedule(this.CHANGE_FULL); + this.$updatePrintMargin(); + }; + + this.setScrollMargin = function(top, bottom, left, right) { + var sm = this.scrollMargin; + sm.top = top|0; + sm.bottom = bottom|0; + sm.right = right|0; + sm.left = left|0; + sm.v = sm.top + sm.bottom; + sm.h = sm.left + sm.right; + if (sm.top && this.scrollTop <= 0 && this.session) + this.session.setScrollTop(-sm.top); + this.updateFull(); + }; + + /** + * Returns whether the horizontal scrollbar is set to be always visible. + * @returns {Boolean} + **/ + this.getHScrollBarAlwaysVisible = function() { + return this.$hScrollBarAlwaysVisible; + }; + + /** + * Identifies whether you want to show the horizontal scrollbar or not. + * @param {Boolean} alwaysVisible Set to `true` to make the horizontal scroll bar visible + **/ + this.setHScrollBarAlwaysVisible = function(alwaysVisible) { + this.setOption("hScrollBarAlwaysVisible", alwaysVisible); + }; + /** + * Returns whether the horizontal scrollbar is set to be always visible. + * @returns {Boolean} + **/ + this.getVScrollBarAlwaysVisible = function() { + return this.$vScrollBarAlwaysVisible; + }; + + /** + * Identifies whether you want to show the horizontal scrollbar or not. + * @param {Boolean} alwaysVisible Set to `true` to make the horizontal scroll bar visible + **/ + this.setVScrollBarAlwaysVisible = function(alwaysVisible) { + this.setOption("vScrollBarAlwaysVisible", alwaysVisible); + }; + + this.$updateScrollBarV = function() { + var scrollHeight = this.layerConfig.maxHeight; + var scrollerHeight = this.$size.scrollerHeight; + if (!this.$maxLines && this.$scrollPastEnd) { + scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd; + if (this.scrollTop > scrollHeight - scrollerHeight) { + scrollHeight = this.scrollTop + scrollerHeight; + this.scrollBarV.scrollTop = null; + } + } + this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v); + this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); + }; + this.$updateScrollBarH = function() { + this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h); + this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); + }; + + this.$frozen = false; + this.freeze = function() { + this.$frozen = true; + }; + + this.unfreeze = function() { + this.$frozen = false; + }; + + this.$renderChanges = function(changes, force) { + if (this.$changes) { + changes |= this.$changes; + this.$changes = 0; + } + if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { + this.$changes |= changes; + return; + } + if (this.$size.$dirty) { + this.$changes |= changes; + return this.onResize(true); + } + if (!this.lineHeight) { + this.$textLayer.checkForSizeChanges(); + } + // this.$logChanges(changes); + + this._signal("beforeRender"); + + if (this.session && this.session.$bidiHandler) + this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics); + + var config = this.layerConfig; + // text, scrolling and resize changes can cause the view port size to change + if (changes & this.CHANGE_FULL || + changes & this.CHANGE_SIZE || + changes & this.CHANGE_TEXT || + changes & this.CHANGE_LINES || + changes & this.CHANGE_SCROLL || + changes & this.CHANGE_H_SCROLL + ) { + changes |= this.$computeLayerConfig(); + // If a change is made offscreen and wrapMode is on, then the onscreen + // lines may have been pushed down. If so, the first screen row will not + // have changed, but the first actual row will. In that case, adjust + // scrollTop so that the cursor and onscreen content stays in the same place. + // TODO: find a better way to handle this, that works non wrapped case and doesn't compute layerConfig twice + if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) { + var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight; + if (st > 0) { + // this check is needed as a workaround for the documentToScreenRow returning -1 if document.length == 0 + this.scrollTop = st; + changes = changes | this.CHANGE_SCROLL; + changes |= this.$computeLayerConfig(); + } + } + config = this.layerConfig; + // update scrollbar first to not lose scroll position when gutter calls resize + this.$updateScrollBarV(); + if (changes & this.CHANGE_H_SCROLL) + this.$updateScrollBarH(); + this.$gutterLayer.element.style.marginTop = (-config.offset) + "px"; + this.content.style.marginTop = (-config.offset) + "px"; + this.content.style.width = config.width + 2 * this.$padding + "px"; + this.content.style.height = config.minHeight + "px"; + } + + // horizontal scrolling + if (changes & this.CHANGE_H_SCROLL) { + this.content.style.marginLeft = -this.scrollLeft + "px"; + this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller" : "ace_scroller ace_scroll-left"; + } + + // full + if (changes & this.CHANGE_FULL) { + this.$textLayer.update(config); + if (this.$showGutter) + this.$gutterLayer.update(config); + this.$markerBack.update(config); + this.$markerFront.update(config); + this.$cursorLayer.update(config); + this.$moveTextAreaToCursor(); + this.$highlightGutterLine && this.$updateGutterLineHighlight(); + this._signal("afterRender"); + return; + } + + // scrolling + if (changes & this.CHANGE_SCROLL) { + if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) + this.$textLayer.update(config); + else + this.$textLayer.scrollLines(config); + + if (this.$showGutter) + this.$gutterLayer.update(config); + this.$markerBack.update(config); + this.$markerFront.update(config); + this.$cursorLayer.update(config); + this.$highlightGutterLine && this.$updateGutterLineHighlight(); + this.$moveTextAreaToCursor(); + this._signal("afterRender"); + return; + } + + if (changes & this.CHANGE_TEXT) { + this.$textLayer.update(config); + if (this.$showGutter) + this.$gutterLayer.update(config); + } + else if (changes & this.CHANGE_LINES) { + if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter) + this.$gutterLayer.update(config); + } + else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { + if (this.$showGutter) + this.$gutterLayer.update(config); + } + + if (changes & this.CHANGE_CURSOR) { + this.$cursorLayer.update(config); + this.$moveTextAreaToCursor(); + this.$highlightGutterLine && this.$updateGutterLineHighlight(); + } + + if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) { + this.$markerFront.update(config); + } + + if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) { + this.$markerBack.update(config); + } + + this._signal("afterRender"); + }; + + + this.$autosize = function() { + var height = this.session.getScreenLength() * this.lineHeight; + var maxHeight = this.$maxLines * this.lineHeight; + var desiredHeight = Math.min(maxHeight, + Math.max((this.$minLines || 1) * this.lineHeight, height) + ) + this.scrollMargin.v + (this.$extraHeight || 0); + if (this.$horizScroll) + desiredHeight += this.scrollBarH.getHeight(); + if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight) + desiredHeight = this.$maxPixelHeight; + var vScroll = height > maxHeight; + + if (desiredHeight != this.desiredHeight || + this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { + if (vScroll != this.$vScroll) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } + + var w = this.container.clientWidth; + this.container.style.height = desiredHeight + "px"; + this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight); + // this.$loop.changes = 0; + this.desiredHeight = desiredHeight; + + this._signal("autosize"); + } + }; + + this.$computeLayerConfig = function() { + var session = this.session; + var size = this.$size; + + var hideScrollbars = size.height <= 2 * this.lineHeight; + var screenLines = this.session.getScreenLength(); + var maxHeight = screenLines * this.lineHeight; + + var longestLine = this.$getLongestLine(); + + var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || + size.scrollerWidth - longestLine - 2 * this.$padding < 0); + + var hScrollChanged = this.$horizScroll !== horizScroll; + if (hScrollChanged) { + this.$horizScroll = horizScroll; + this.scrollBarH.setVisible(horizScroll); + } + var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine + // autoresize only after updating hscroll to include scrollbar height in desired height + if (this.$maxLines && this.lineHeight > 1) + this.$autosize(); + + var offset = this.scrollTop % this.lineHeight; + var minHeight = size.scrollerHeight + this.lineHeight; + + var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd + ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd + : 0; + maxHeight += scrollPastEnd; + + var sm = this.scrollMargin; + this.session.setScrollTop(Math.max(-sm.top, + Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom))); + + this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, + longestLine + 2 * this.$padding - size.scrollerWidth + sm.right))); + + var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || + size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top); + var vScrollChanged = vScrollBefore !== vScroll; + if (vScrollChanged) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } + + var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; + var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); + var lastRow = firstRow + lineCount; + + // Map lines on the screen to lines in the document. + var firstRowScreen, firstRowHeight; + var lineHeight = this.lineHeight; + firstRow = session.screenToDocumentRow(firstRow, 0); + + // Check if firstRow is inside of a foldLine. If true, then use the first + // row of the foldLine. + var foldLine = session.getFoldLine(firstRow); + if (foldLine) { + firstRow = foldLine.start.row; + } + + firstRowScreen = session.documentToScreenRow(firstRow, 0); + firstRowHeight = session.getRowLength(firstRow) * lineHeight; + + lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1); + minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight + + firstRowHeight; + + offset = this.scrollTop - firstRowScreen * lineHeight; + + var changes = 0; + if (this.layerConfig.width != longestLine || hScrollChanged) + changes = this.CHANGE_H_SCROLL; + // Horizontal scrollbar visibility may have changed, which changes + // the client height of the scroller + if (hScrollChanged || vScrollChanged) { + changes = this.$updateCachedSize(true, this.gutterWidth, size.width, size.height); + this._signal("scrollbarVisibilityChanged"); + if (vScrollChanged) + longestLine = this.$getLongestLine(); + } + + this.layerConfig = { + width : longestLine, + padding : this.$padding, + firstRow : firstRow, + firstRowScreen: firstRowScreen, + lastRow : lastRow, + lineHeight : lineHeight, + characterWidth : this.characterWidth, + minHeight : minHeight, + maxHeight : maxHeight, + offset : offset, + gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, + height : this.$size.scrollerHeight + }; + + // For debugging. + // console.log(JSON.stringify(this.layerConfig)); + + return changes; + }; + + this.$updateLines = function() { + if (!this.$changedLines) return; + var firstRow = this.$changedLines.firstRow; + var lastRow = this.$changedLines.lastRow; + this.$changedLines = null; + + var layerConfig = this.layerConfig; + + if (firstRow > layerConfig.lastRow + 1) { return; } + if (lastRow < layerConfig.firstRow) { return; } + + // if the last row is unknown -> redraw everything + if (lastRow === Infinity) { + if (this.$showGutter) + this.$gutterLayer.update(layerConfig); + this.$textLayer.update(layerConfig); + return; + } + + // else update only the changed rows + this.$textLayer.updateLines(layerConfig, firstRow, lastRow); + return true; + }; + + this.$getLongestLine = function() { + var charCount = this.session.getScreenWidth(); + if (this.showInvisibles && !this.session.$useWrapMode) + charCount += 1; + + if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH) + charCount = this.$textLayer.MAX_LINE_LENGTH + 30; + + return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth)); + }; + + /** + * Schedules an update to all the front markers in the document. + **/ + this.updateFrontMarkers = function() { + this.$markerFront.setMarkers(this.session.getMarkers(true)); + this.$loop.schedule(this.CHANGE_MARKER_FRONT); + }; + + /** + * + * Schedules an update to all the back markers in the document. + **/ + this.updateBackMarkers = function() { + this.$markerBack.setMarkers(this.session.getMarkers()); + this.$loop.schedule(this.CHANGE_MARKER_BACK); + }; + + /** + * + * Deprecated; (moved to [[EditSession]]) + * @deprecated + **/ + this.addGutterDecoration = function(row, className){ + this.$gutterLayer.addGutterDecoration(row, className); + }; + + /** + * Deprecated; (moved to [[EditSession]]) + * @deprecated + **/ + this.removeGutterDecoration = function(row, className){ + this.$gutterLayer.removeGutterDecoration(row, className); + }; + + /** + * + * Redraw breakpoints. + **/ + this.updateBreakpoints = function(rows) { + this.$loop.schedule(this.CHANGE_GUTTER); + }; + + /** + * Sets annotations for the gutter. + * @param {Array} annotations An array containing annotations + * + **/ + this.setAnnotations = function(annotations) { + this.$gutterLayer.setAnnotations(annotations); + this.$loop.schedule(this.CHANGE_GUTTER); + }; + + /** + * + * Updates the cursor icon. + **/ + this.updateCursor = function() { + this.$loop.schedule(this.CHANGE_CURSOR); + }; + + /** + * + * Hides the cursor icon. + **/ + this.hideCursor = function() { + this.$cursorLayer.hideCursor(); + }; + + /** + * + * Shows the cursor icon. + **/ + this.showCursor = function() { + this.$cursorLayer.showCursor(); + }; + + this.scrollSelectionIntoView = function(anchor, lead, offset) { + // first scroll anchor into view then scroll lead into view + this.scrollCursorIntoView(anchor, offset); + this.scrollCursorIntoView(lead, offset); + }; + + /** + * + * Scrolls the cursor into the first visibile area of the editor + **/ + this.scrollCursorIntoView = function(cursor, offset, $viewMargin) { + // the editor is not visible + if (this.$size.scrollerHeight === 0) + return; + + var pos = this.$cursorLayer.getPixelPosition(cursor); + + var left = pos.left; + var top = pos.top; + + var topMargin = $viewMargin && $viewMargin.top || 0; + var bottomMargin = $viewMargin && $viewMargin.bottom || 0; + + var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; + + if (scrollTop + topMargin > top) { + if (offset && scrollTop + topMargin > top + this.lineHeight) + top -= offset * this.$size.scrollerHeight; + if (top === 0) + top = -this.scrollMargin.top; + this.session.setScrollTop(top); + } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) { + if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight) + top += offset * this.$size.scrollerHeight; + this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight); + } + + var scrollLeft = this.scrollLeft; + + if (scrollLeft > left) { + if (left < this.$padding + 2 * this.layerConfig.characterWidth) + left = -this.scrollMargin.left; + this.session.setScrollLeft(left); + } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) { + this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth)); + } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) { + this.session.setScrollLeft(0); + } + }; + + /** + * {:EditSession.getScrollTop} + * @related EditSession.getScrollTop + * @returns {Number} + **/ + this.getScrollTop = function() { + return this.session.getScrollTop(); + }; + + /** + * {:EditSession.getScrollLeft} + * @related EditSession.getScrollLeft + * @returns {Number} + **/ + this.getScrollLeft = function() { + return this.session.getScrollLeft(); + }; + + /** + * Returns the first visible row, regardless of whether it's fully visible or not. + * @returns {Number} + **/ + this.getScrollTopRow = function() { + return this.scrollTop / this.lineHeight; + }; + + /** + * Returns the last visible row, regardless of whether it's fully visible or not. + * @returns {Number} + **/ + this.getScrollBottomRow = function() { + return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); + }; + + /** + * Gracefully scrolls from the top of the editor to the row indicated. + * @param {Number} row A row id + * + * @related EditSession.setScrollTop + **/ + this.scrollToRow = function(row) { + this.session.setScrollTop(row * this.lineHeight); + }; + + this.alignCursor = function(cursor, alignment) { + if (typeof cursor == "number") + cursor = {row: cursor, column: 0}; + + var pos = this.$cursorLayer.getPixelPosition(cursor); + var h = this.$size.scrollerHeight - this.lineHeight; + var offset = pos.top - h * (alignment || 0); + + this.session.setScrollTop(offset); + return offset; + }; + + this.STEPS = 8; + this.$calcSteps = function(fromValue, toValue){ + var i = 0; + var l = this.STEPS; + var steps = []; + + var func = function(t, x_min, dx) { + return dx * (Math.pow(t - 1, 3) + 1) + x_min; + }; + + for (i = 0; i < l; ++i) + steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); + + return steps; + }; + + /** + * Gracefully scrolls the editor to the row indicated. + * @param {Number} line A line number + * @param {Boolean} center If `true`, centers the editor the to indicated line + * @param {Boolean} animate If `true` animates scrolling + * @param {Function} callback Function to be called after the animation has finished + * + **/ + this.scrollToLine = function(line, center, animate, callback) { + var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0}); + var offset = pos.top; + if (center) + offset -= this.$size.scrollerHeight / 2; + + var initialScroll = this.scrollTop; + this.session.setScrollTop(offset); + if (animate !== false) + this.animateScrolling(initialScroll, callback); + }; + + this.animateScrolling = function(fromValue, callback) { + var toValue = this.scrollTop; + if (!this.$animatedScroll) + return; + var _self = this; + + if (fromValue == toValue) + return; + + if (this.$scrollAnimation) { + var oldSteps = this.$scrollAnimation.steps; + if (oldSteps.length) { + fromValue = oldSteps[0]; + if (fromValue == toValue) + return; + } + } + + var steps = _self.$calcSteps(fromValue, toValue); + this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps}; + + clearInterval(this.$timer); + + _self.session.setScrollTop(steps.shift()); + // trick session to think it's already scrolled to not loose toValue + _self.session.$scrollTop = toValue; + this.$timer = setInterval(function() { + if (steps.length) { + _self.session.setScrollTop(steps.shift()); + _self.session.$scrollTop = toValue; + } else if (toValue != null) { + _self.session.$scrollTop = -1; + _self.session.setScrollTop(toValue); + toValue = null; + } else { + // do this on separate step to not get spurious scroll event from scrollbar + _self.$timer = clearInterval(_self.$timer); + _self.$scrollAnimation = null; + callback && callback(); + } + }, 10); + }; + + /** + * Scrolls the editor to the y pixel indicated. + * @param {Number} scrollTop The position to scroll to + * + * @returns {Number} + **/ + this.scrollToY = function(scrollTop) { + // after calling scrollBar.setScrollTop + // scrollbar sends us event with same scrollTop. ignore it + if (this.scrollTop !== scrollTop) { + this.$loop.schedule(this.CHANGE_SCROLL); + this.scrollTop = scrollTop; + } + }; + + /** + * Scrolls the editor across the x-axis to the pixel indicated. + * @param {Number} scrollLeft The position to scroll to + * + * @returns {Number} + **/ + this.scrollToX = function(scrollLeft) { + if (this.scrollLeft !== scrollLeft) + this.scrollLeft = scrollLeft; + this.$loop.schedule(this.CHANGE_H_SCROLL); + }; + + /** + * Scrolls the editor across both x- and y-axes. + * @param {Number} x The x value to scroll to + * @param {Number} y The y value to scroll to + **/ + this.scrollTo = function(x, y) { + this.session.setScrollTop(y); + this.session.setScrollLeft(y); + }; + + /** + * Scrolls the editor across both x- and y-axes. + * @param {Number} deltaX The x value to scroll by + * @param {Number} deltaY The y value to scroll by + **/ + this.scrollBy = function(deltaX, deltaY) { + deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY); + deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX); + }; + + /** + * Returns `true` if you can still scroll by either parameter; in other words, you haven't reached the end of the file or line. + * @param {Number} deltaX The x value to scroll by + * @param {Number} deltaY The y value to scroll by + * + * @returns {Boolean} + **/ + this.isScrollableBy = function(deltaX, deltaY) { + if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top) + return true; + if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight + - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom) + return true; + if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left) + return true; + if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth + - this.layerConfig.width < -1 + this.scrollMargin.right) + return true; + }; + + this.pixelToScreenCoordinates = function(x, y) { + var canvasPos = this.scroller.getBoundingClientRect(); + + var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; + var offset = offsetX / this.characterWidth; + var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); + var col = Math.round(offset); + + return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX}; + }; + + this.screenToTextCoordinates = function(x, y) { + var canvasPos = this.scroller.getBoundingClientRect(); + var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; + + var col = Math.round(offsetX / this.characterWidth); + + var row = (y + this.scrollTop - canvasPos.top) / this.lineHeight; + + return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX); + }; + + /** + * Returns an object containing the `pageX` and `pageY` coordinates of the document position. + * @param {Number} row The document row position + * @param {Number} column The document column position + * + * @returns {Object} + **/ + this.textToScreenCoordinates = function(row, column) { + var canvasPos = this.scroller.getBoundingClientRect(); + var pos = this.session.documentToScreenPosition(row, column); + + var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row) + ? this.session.$bidiHandler.getPosLeft(pos.column) + : Math.round(pos.column * this.characterWidth)); + + var y = pos.row * this.lineHeight; + + return { + pageX: canvasPos.left + x - this.scrollLeft, + pageY: canvasPos.top + y - this.scrollTop + }; + }; + + /** + * + * Focuses the current container. + **/ + this.visualizeFocus = function() { + dom.addCssClass(this.container, "ace_focus"); + }; + + /** + * + * Blurs the current container. + **/ + this.visualizeBlur = function() { + dom.removeCssClass(this.container, "ace_focus"); + }; + + /** + * @param {Number} position + * + * @private + **/ + this.showComposition = function(position) { + if (!this.$composition) + this.$composition = { + keepTextAreaAtCursor: this.$keepTextAreaAtCursor, + cssText: this.textarea.style.cssText + }; + + this.$keepTextAreaAtCursor = true; + dom.addCssClass(this.textarea, "ace_composition"); + this.textarea.style.cssText = ""; + this.$moveTextAreaToCursor(); + }; + + /** + * @param {String} text A string of text to use + * + * Sets the inner text of the current composition to `text`. + **/ + this.setCompositionText = function(text) { + this.$moveTextAreaToCursor(); + }; + + /** + * + * Hides the current composition. + **/ + this.hideComposition = function() { + if (!this.$composition) + return; + + dom.removeCssClass(this.textarea, "ace_composition"); + this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor; + this.textarea.style.cssText = this.$composition.cssText; + this.$composition = null; + }; + + /** + * [Sets a new theme for the editor. `theme` should exist, and be a directory path, like `ace/theme/textmate`.]{: #VirtualRenderer.setTheme} + * @param {String} theme The path to a theme + * @param {Function} cb optional callback + * + **/ + this.setTheme = function(theme, cb) { + var _self = this; + this.$themeId = theme; + _self._dispatchEvent('themeChange',{theme:theme}); + + if (!theme || typeof theme == "string") { + var moduleName = theme || this.$options.theme.initialValue; + config.loadModule(["theme", moduleName], afterLoad); + } else { + afterLoad(theme); + } + + function afterLoad(module) { + if (_self.$themeId != theme) + return cb && cb(); + if (!module || !module.cssClass) + throw new Error("couldn't load module " + theme + " or it didn't call define"); + dom.importCssString( + module.cssText, + module.cssClass, + _self.container.ownerDocument + ); + + if (_self.theme) + dom.removeCssClass(_self.container, _self.theme.cssClass); + + var padding = "padding" in module ? module.padding + : "padding" in (_self.theme || {}) ? 4 : _self.$padding; + if (_self.$padding && padding != _self.$padding) + _self.setPadding(padding); + + // this is kept only for backwards compatibility + _self.$theme = module.cssClass; + + _self.theme = module; + dom.addCssClass(_self.container, module.cssClass); + dom.setCssClass(_self.container, "ace_dark", module.isDark); + + // force re-measure of the gutter width + if (_self.$size) { + _self.$size.width = 0; + _self.$updateSizeAsync(); + } + + _self._dispatchEvent('themeLoaded', {theme:module}); + cb && cb(); + } + }; + + /** + * [Returns the path of the current theme.]{: #VirtualRenderer.getTheme} + * @returns {String} + **/ + this.getTheme = function() { + return this.$themeId; + }; + + // Methods allows to add / remove CSS classnames to the editor element. + // This feature can be used by plug-ins to provide a visual indication of + // a certain mode that editor is in. + + /** + * [Adds a new class, `style`, to the editor.]{: #VirtualRenderer.setStyle} + * @param {String} style A class name + * + **/ + this.setStyle = function(style, include) { + dom.setCssClass(this.container, style, include !== false); + }; + + /** + * [Removes the class `style` from the editor.]{: #VirtualRenderer.unsetStyle} + * @param {String} style A class name + * + **/ + this.unsetStyle = function(style) { + dom.removeCssClass(this.container, style); + }; + + this.setCursorStyle = function(style) { + if (this.scroller.style.cursor != style) + this.scroller.style.cursor = style; + }; + + /** + * @param {String} cursorStyle A css cursor style + * + **/ + this.setMouseCursor = function(cursorStyle) { + this.scroller.style.cursor = cursorStyle; + }; + + /** + * Destroys the text and cursor layers for this renderer. + **/ + this.destroy = function() { + this.$textLayer.destroy(); + this.$cursorLayer.destroy(); + }; + +}).call(VirtualRenderer.prototype); + + +config.defineOptions(VirtualRenderer.prototype, "renderer", { + animatedScroll: {initialValue: false}, + showInvisibles: { + set: function(value) { + if (this.$textLayer.setShowInvisibles(value)) + this.$loop.schedule(this.CHANGE_TEXT); + }, + initialValue: false + }, + showPrintMargin: { + set: function() { this.$updatePrintMargin(); }, + initialValue: true + }, + printMarginColumn: { + set: function() { this.$updatePrintMargin(); }, + initialValue: 80 + }, + printMargin: { + set: function(val) { + if (typeof val == "number") + this.$printMarginColumn = val; + this.$showPrintMargin = !!val; + this.$updatePrintMargin(); + }, + get: function() { + return this.$showPrintMargin && this.$printMarginColumn; + } + }, + showGutter: { + set: function(show){ + this.$gutter.style.display = show ? "block" : "none"; + this.$loop.schedule(this.CHANGE_FULL); + this.onGutterResize(); + }, + initialValue: true + }, + fadeFoldWidgets: { + set: function(show) { + dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show); + }, + initialValue: false + }, + showFoldWidgets: { + set: function(show) {this.$gutterLayer.setShowFoldWidgets(show);}, + initialValue: true + }, + showLineNumbers: { + set: function(show) { + this.$gutterLayer.setShowLineNumbers(show); + this.$loop.schedule(this.CHANGE_GUTTER); + }, + initialValue: true + }, + displayIndentGuides: { + set: function(show) { + if (this.$textLayer.setDisplayIndentGuides(show)) + this.$loop.schedule(this.CHANGE_TEXT); + }, + initialValue: true + }, + highlightGutterLine: { + set: function(shouldHighlight) { + if (!this.$gutterLineHighlight) { + this.$gutterLineHighlight = dom.createElement("div"); + this.$gutterLineHighlight.className = "ace_gutter-active-line"; + this.$gutter.appendChild(this.$gutterLineHighlight); + return; + } + + this.$gutterLineHighlight.style.display = shouldHighlight ? "" : "none"; + // if cursorlayer have never been updated there's nothing on screen to update + if (this.$cursorLayer.$pixelPos) + this.$updateGutterLineHighlight(); + }, + initialValue: false, + value: true + }, + hScrollBarAlwaysVisible: { + set: function(val) { + if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: false + }, + vScrollBarAlwaysVisible: { + set: function(val) { + if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: false + }, + fontSize: { + set: function(size) { + if (typeof size == "number") + size = size + "px"; + this.container.style.fontSize = size; + this.updateFontSize(); + }, + initialValue: 12 + }, + fontFamily: { + set: function(name) { + this.container.style.fontFamily = name; + this.updateFontSize(); + } + }, + maxLines: { + set: function(val) { + this.updateFull(); + } + }, + minLines: { + set: function(val) { + this.updateFull(); + } + }, + maxPixelHeight: { + set: function(val) { + this.updateFull(); + }, + initialValue: 0 + }, + scrollPastEnd: { + set: function(val) { + val = +val || 0; + if (this.$scrollPastEnd == val) + return; + this.$scrollPastEnd = val; + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: 0, + handlesSet: true + }, + fixedWidthGutter: { + set: function(val) { + this.$gutterLayer.$fixedWidth = !!val; + this.$loop.schedule(this.CHANGE_GUTTER); + } + }, + theme: { + set: function(val) { this.setTheme(val); }, + get: function() { return this.$themeId || this.theme; }, + initialValue: "./theme/textmate", + handlesSet: true + } +}); + +exports.VirtualRenderer = VirtualRenderer; +}); diff --git a/plugins/node_modules/ace/lib/ace/virtual_renderer_test.js b/plugins/node_modules/ace/lib/ace/virtual_renderer_test.js new file mode 100644 index 00000000..a694e9c9 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/virtual_renderer_test.js @@ -0,0 +1,113 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var Editor = require("./edit_session").Editor; +var EditSession = require("./edit_session").EditSession; +var VirtualRenderer = require("./virtual_renderer").VirtualRenderer; +var assert = require("./test/assertions"); + +var editor = null; +module.exports = { + setUp: function() { + if (editor) + editor.destroy(); + var el = document.createElement("div"); + + el.style.left = "20px"; + el.style.top = "30px"; + el.style.width = "300px"; + el.style.height = "100px"; + document.body.appendChild(el); + var renderer = new VirtualRenderer(el); + editor = new Editor(renderer); + editor.on("destroy", function() { + document.body.removeChild(el); + }); + }, + tearDown: function() { + editor && editor.destroy(); + editor = null; + }, + "test: screen2text the column should be rounded to the next character edge" : function(done) { + if (!editor) return done(); + var renderer = editor.renderer; + + renderer.setPadding(0); + renderer.setSession(new EditSession("1234")); + + var r = renderer.scroller.getBoundingClientRect(); + function testPixelToText(x, y, row, column) { + assert.position(renderer.screenToTextCoordinates(x+r.left, y+r.top), row, column); + } + + renderer.characterWidth = 10; + renderer.lineHeight = 15; + + testPixelToText(4, 0, 0, 0); + testPixelToText(5, 0, 0, 1); + testPixelToText(9, 0, 0, 1); + testPixelToText(10, 0, 0, 1); + testPixelToText(14, 0, 0, 1); + testPixelToText(15, 0, 0, 2); + done(); + }, + + "test scrollmargin + autosize": function(done) { + if (!editor) return done(); + editor.setOptions({ + maxLines: 100, + useWrapMode: true + }); + editor.renderer.setScrollMargin(10, 10); + editor.setValue("\n\n"); + editor.setValue("\n\n\n\n"); + editor.renderer.once("afterRender", function() { + setTimeout(function() { + done(); + }, 0); + }); + } + + // change tab size after setDocument (for text layer) +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace/lib/ace/worker/mirror.js b/plugins/node_modules/ace/lib/ace/worker/mirror.js new file mode 100644 index 00000000..091ff6c1 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/worker/mirror.js @@ -0,0 +1,75 @@ +define(function(require, exports, module) { +"use strict"; + +var Range = require("../range").Range; +var Document = require("../document").Document; +var lang = require("../lib/lang"); + +var Mirror = exports.Mirror = function(sender) { + this.sender = sender; + var doc = this.doc = new Document(""); + + var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this)); + + var _self = this; + sender.on("change", function(e) { + var data = e.data; + if (data[0].start) { + doc.applyDeltas(data); + } else { + for (var i = 0; i < data.length; i += 2) { + var d, err; + if (Array.isArray(data[i+1])) { + d = {action: "insert", start: data[i], lines: data[i+1]}; + } else { + d = {action: "remove", start: data[i], end: data[i+1]}; + } + + if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + // abstract method + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); diff --git a/plugins/node_modules/ace/lib/ace/worker/worker.js b/plugins/node_modules/ace/lib/ace/worker/worker.js new file mode 100644 index 00000000..daa3d097 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/worker/worker.js @@ -0,0 +1,218 @@ +"no use strict"; +!(function(window) { +if (typeof window.window != "undefined" && window.document) + return; +if (window.require && window.define) + return; + +if (!window.console) { + window.console = function() { + var msgs = Array.prototype.slice.call(arguments, 0); + postMessage({type: "log", data: msgs}); + }; + window.console.error = + window.console.warn = + window.console.log = + window.console.trace = window.console; +} +window.window = window; +window.ace = window; + +window.onerror = function(message, file, line, col, err) { + postMessage({type: "error", data: { + message: message, + data: err.data, + file: file, + line: line, + col: col, + stack: err.stack + }}); +}; + +window.normalizeModule = function(parentId, moduleName) { + // normalize plugin requires + if (moduleName.indexOf("!") !== -1) { + var chunks = moduleName.split("!"); + return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); + } + // normalize relative requires + if (moduleName.charAt(0) == ".") { + var base = parentId.split("/").slice(0, -1).join("/"); + moduleName = (base ? base + "/" : "") + moduleName; + + while (moduleName.indexOf(".") !== -1 && previous != moduleName) { + var previous = moduleName; + moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); + } + } + + return moduleName; +}; + +window.require = function require(parentId, id) { + if (!id) { + id = parentId; + parentId = null; + } + if (!id.charAt) + throw new Error("worker.js require() accepts only (parentId, id) as arguments"); + + id = window.normalizeModule(parentId, id); + + var module = window.require.modules[id]; + if (module) { + if (!module.initialized) { + module.initialized = true; + module.exports = module.factory().exports; + } + return module.exports; + } + + if (!window.require.tlns) + return console.log("unable to load " + id); + + var path = resolveModuleId(id, window.require.tlns); + if (path.slice(-3) != ".js") path += ".js"; + + window.require.id = id; + window.require.modules[id] = {}; // prevent infinite loop on broken modules + importScripts(path); + return window.require(parentId, id); +}; +function resolveModuleId(id, paths) { + var testPath = id, tail = ""; + while (testPath) { + var alias = paths[testPath]; + if (typeof alias == "string") { + return alias + tail; + } else if (alias) { + return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name); + } else if (alias === false) { + return ""; + } + var i = testPath.lastIndexOf("/"); + if (i === -1) break; + tail = testPath.substr(i) + tail; + testPath = testPath.slice(0, i); + } + return id; +} +window.require.modules = {}; +window.require.tlns = {}; + +window.define = function(id, deps, factory) { + if (arguments.length == 2) { + factory = deps; + if (typeof id != "string") { + deps = id; + id = window.require.id; + } + } else if (arguments.length == 1) { + factory = id; + deps = []; + id = window.require.id; + } + + if (typeof factory != "function") { + window.require.modules[id] = { + exports: factory, + initialized: true + }; + return; + } + + if (!deps.length) + // If there is no dependencies, we inject "require", "exports" and + // "module" as dependencies, to provide CommonJS compatibility. + deps = ["require", "exports", "module"]; + + var req = function(childId) { + return window.require(id, childId); + }; + + window.require.modules[id] = { + exports: {}, + factory: function() { + var module = this; + var returnExports = factory.apply(this, deps.map(function(dep) { + switch (dep) { + // Because "require", "exports" and "module" aren't actual + // dependencies, we must handle them seperately. + case "require": return req; + case "exports": return module.exports; + case "module": return module; + // But for all other dependencies, we can just go ahead and + // require them. + default: return req(dep); + } + })); + if (returnExports) + module.exports = returnExports; + return module; + } + }; +}; +window.define.amd = {}; +require.tlns = {}; +window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { + for (var i in topLevelNamespaces) + require.tlns[i] = topLevelNamespaces[i]; +}; + +window.initSender = function initSender() { + + var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; + var oop = window.require("ace/lib/oop"); + + var Sender = function() {}; + + (function() { + + oop.implement(this, EventEmitter); + + this.callback = function(data, callbackId) { + postMessage({ + type: "call", + id: callbackId, + data: data + }); + }; + + this.emit = function(name, data) { + postMessage({ + type: "event", + name: name, + data: data + }); + }; + + }).call(Sender.prototype); + + return new Sender(); +}; + +var main = window.main = null; +var sender = window.sender = null; + +window.onmessage = function(e) { + var msg = e.data; + if (msg.event && sender) { + sender._signal(msg.event, msg.data); + } + else if (msg.command) { + if (main && main[msg.command]) + main[msg.command].apply(main, msg.args); + else if (window[msg.command]) + window[msg.command].apply(window, msg.args); + else + throw new Error("Unknown command:" + msg.command); + } + else if (msg.init) { + window.initBaseUrls(msg.tlns); + require("ace/lib/es6-shim"); + sender = window.sender = window.initSender(); + var clazz = require(msg.module)[msg.classname]; + main = window.main = new clazz(sender); + } +}; +})(this); \ No newline at end of file diff --git a/plugins/node_modules/ace/lib/ace/worker/worker_client.js b/plugins/node_modules/ace/lib/ace/worker/worker_client.js new file mode 100644 index 00000000..390edb81 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/worker/worker_client.js @@ -0,0 +1,257 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var net = require("../lib/net"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var config = require("../config"); + +function $workerBlob(workerUrl) { + // workerUrl can be protocol relative + // importScripts only takes fully qualified urls + var script = "importScripts('" + net.qualifyURL(workerUrl) + "');"; + try { + return new Blob([script], {"type": "application/javascript"}); + } catch (e) { // Backwards-compatibility + var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; + var blobBuilder = new BlobBuilder(); + blobBuilder.append(script); + return blobBuilder.getBlob("application/javascript"); + } +} + +function createWorker(workerUrl) { + var blob = $workerBlob(workerUrl); + var URL = window.URL || window.webkitURL; + var blobURL = URL.createObjectURL(blob); + // calling URL.revokeObjectURL before worker is terminated breaks it on IE Edge + return new Worker(blobURL); +} + +var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { + this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); + this.changeListener = this.changeListener.bind(this); + this.onMessage = this.onMessage.bind(this); + + // nameToUrl is renamed to toUrl in requirejs 2 + if (require.nameToUrl && !require.toUrl) + require.toUrl = require.nameToUrl; + + if (config.get("packaged") || !require.toUrl) { + workerUrl = workerUrl || config.moduleUrl(mod, "worker"); + } else { + var normalizePath = this.$normalizePath; + workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); + + var tlns = {}; + topLevelNamespaces.forEach(function(ns) { + tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); + }); + } + + this.$worker = createWorker(workerUrl); + if (importScripts) { + this.send("importScripts", importScripts); + } + this.$worker.postMessage({ + init : true, + tlns : tlns, + module : mod, + classname : classname + }); + + this.callbackId = 1; + this.callbacks = {}; + + this.$worker.onmessage = this.onMessage; +}; + +(function(){ + + oop.implement(this, EventEmitter); + + this.onMessage = function(e) { + var msg = e.data; + switch (msg.type) { + case "event": + this._signal(msg.name, {data: msg.data}); + break; + case "call": + var callback = this.callbacks[msg.id]; + if (callback) { + callback(msg.data); + delete this.callbacks[msg.id]; + } + break; + case "error": + this.reportError(msg.data); + break; + case "log": + window.console && console.log && console.log.apply(console, msg.data); + break; + } + }; + + this.reportError = function(err) { + window.console && console.error && console.error(err); + }; + + this.$normalizePath = function(path) { + return net.qualifyURL(path); + }; + + this.terminate = function() { + this._signal("terminate", {}); + this.deltaQueue = null; + this.$worker.terminate(); + this.$worker = null; + if (this.$doc) + this.$doc.off("change", this.changeListener); + this.$doc = null; + }; + + this.send = function(cmd, args) { + this.$worker.postMessage({command: cmd, args: args}); + }; + + this.call = function(cmd, args, callback) { + if (callback) { + var id = this.callbackId++; + this.callbacks[id] = callback; + args.push(id); + } + this.send(cmd, args); + }; + + this.emit = function(event, data) { + try { + // firefox refuses to clone objects which have function properties + // TODO: cleanup event + this.$worker.postMessage({event: event, data: {data: data.data}}); + } + catch(ex) { + console.error(ex.stack); + } + }; + + this.attachToDocument = function(doc) { + if (this.$doc) + this.terminate(); + + this.$doc = doc; + this.call("setValue", [doc.getValue()]); + doc.on("change", this.changeListener); + }; + + this.changeListener = function(delta) { + if (!this.deltaQueue) { + this.deltaQueue = []; + setTimeout(this.$sendDeltaQueue, 0); + } + if (delta.action == "insert") + this.deltaQueue.push(delta.start, delta.lines); + else + this.deltaQueue.push(delta.start, delta.end); + }; + + this.$sendDeltaQueue = function() { + var q = this.deltaQueue; + if (!q) return; + this.deltaQueue = null; + if (q.length > 50 && q.length > this.$doc.getLength() >> 1) { + this.call("setValue", [this.$doc.getValue()]); + } else + this.emit("change", {data: q}); + }; + +}).call(WorkerClient.prototype); + + +var UIWorkerClient = function(topLevelNamespaces, mod, classname) { + this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); + this.changeListener = this.changeListener.bind(this); + this.callbackId = 1; + this.callbacks = {}; + this.messageBuffer = []; + + var main = null; + var emitSync = false; + var sender = Object.create(EventEmitter); + var _self = this; + + this.$worker = {}; + this.$worker.terminate = function() {}; + this.$worker.postMessage = function(e) { + _self.messageBuffer.push(e); + if (main) { + if (emitSync) + setTimeout(processNext); + else + processNext(); + } + }; + this.setEmitSync = function(val) { emitSync = val; }; + + var processNext = function() { + var msg = _self.messageBuffer.shift(); + if (msg.command) + main[msg.command].apply(main, msg.args); + else if (msg.event) + sender._signal(msg.event, msg.data); + }; + + sender.postMessage = function(msg) { + _self.onMessage({data: msg}); + }; + sender.callback = function(data, callbackId) { + this.postMessage({type: "call", id: callbackId, data: data}); + }; + sender.emit = function(name, data) { + this.postMessage({type: "event", name: name, data: data}); + }; + + config.loadModule(["worker", mod], function(Main) { + main = new Main[classname](sender); + while (_self.messageBuffer.length) + processNext(); + }); +}; + +UIWorkerClient.prototype = WorkerClient.prototype; + +exports.UIWorkerClient = UIWorkerClient; +exports.WorkerClient = WorkerClient; +exports.createWorker = createWorker; + + +}); diff --git a/plugins/node_modules/ace/lib/ace/worker/worker_test.js b/plugins/node_modules/ace/lib/ace/worker/worker_test.js new file mode 100644 index 00000000..a0f97465 --- /dev/null +++ b/plugins/node_modules/ace/lib/ace/worker/worker_test.js @@ -0,0 +1,125 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +// The loading of ace/worker/worker is complicated, because when we need to load +// it via RequireJS, it needs a shim to make it into a AMD-module. +// When using the AMD-loader it's just works, so we just it load the file now + +require("amd-loader"); + +define(function(require, exports, module) { +"use strict"; + +var assert = require("../test/assertions"); +var worker = require("./worker"); + +module.exports = { + setUp : function() { + // And define a few mock dependency modules + worker.define("depA", [], function(require, exports, module) { + module.exports = 'dependency A'; + }); + worker.define("depB", [], function(require, exports, module) { + module.exports = 'dependency B'; + }); + }, + + "test: define() with no dependencies, and CommonJS-compatability require()-calls" : function() { + // We want to be able to call define without an id or deps, but + // since we aren't loading an external file, we must explicitly give + // it some kind of id, in this case 'test1'. + worker.require.id = 'test1'; + // Now define out module + worker.define(function(require, exports, module) { + var depA = require("depA"); + var depB = require("depB"); + assert.equal("dependency A", depA); + assert.equal("dependency B", depB); + module.exports = 'test 1'; + }); + // And then try and require it + var res = worker.require("test1"); + assert.equal("test 1", res); + }, + "test: define() with dependencies" : function() { + // We want to be able to call define without an id, but since we aren't + // loading an external file, we must explicitly give it some kind of + // id, in this case 'test2'. + worker.require.id = 'test2'; + // Now define our module + worker.define(['depA', 'depB'], function(depA, depB) { + assert.equal("dependency A", depA); + assert.equal("dependency B", depB); + return 'test 2'; + }); + // And then try and require it + var res = worker.require("test2"); + assert.equal("test 2", res); + }, + "test: define() used require, exports and module as a dependency": function() { + // We want to be able to call define without an id, but since we aren't + // loading an external file, we must explicitly give it some kind of + // id, in this case 'test3'. + worker.require.id = 'test3'; + // Now define our module + worker.define(['require', 'exports', 'module', 'depA', 'depB'], function(require, exports, module) { + var depA = require("depA"); + var depB = require("depB"); + assert.equal("dependency A", depA); + assert.equal("dependency B", depB); + module.exports = 'test 3'; + }); + // And then try and require it + var res = worker.require("test3"); + assert.equal("test 3", res); + }, + "test: define() with a mix of require and actual dependecies": function() { + // We want to be able to call define without an id, but since we aren't + // loading an external file, we must explicitly give it some kind of + // id, in this case 'test4'. + worker.require.id = 'test4'; + // Now define our module + worker.define(['depA', 'require'], function(depA, require) { + var depB = require("depB"); + assert.equal("dependency A", depA); + assert.equal("dependency B", depB); + return 'test 4'; + }); + // And then try and require it + var res = worker.require("test4"); + assert.equal("test 4", res); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} \ No newline at end of file diff --git a/plugins/node_modules/ace/package.json b/plugins/node_modules/ace/package.json new file mode 100644 index 00000000..3ea9f295 --- /dev/null +++ b/plugins/node_modules/ace/package.json @@ -0,0 +1,37 @@ +{ + "name": "ace", + "description": "Ajax.org Code Editor is a full featured source code highlighting editor that powers the Cloud9 IDE", + "version": "1.1.9", + "homepage": "http://github.com/ajaxorg/ace", + "engines": {"node": ">= 0.6.0"}, + "author": "Fabian Jakobs <fabian@c9.io>", + "main": "lib/ace", + "repository": { + "type": "git", + "url": "http://github.com/ajaxorg/ace.git" + }, + "dependencies": { + "mime": "1.2.x" + }, + "devDependencies": { + "asyncjs": "0.0.x", + "node-jsdom": "3.1.5", + "amd-loader": "~0.0.4", + "dryice": "0.4.11", + "architect-build": "https://github.com/c9/architect-build/tarball/17268dce65" + }, + "mappings": { + "ace": "." + }, + "licenses": [{ + "type": "BSD New", + "url": "http://opensource.org/licenses/BSD-3-Clause" + }], + "directories": { + "lib": "lib/ace" + }, + "scripts": { + "start": "node static.js", + "test": "node lib/ace/test/all.js" + } +} diff --git a/plugins/node_modules/ace/static.js b/plugins/node_modules/ace/static.js new file mode 100644 index 00000000..f3235649 --- /dev/null +++ b/plugins/node_modules/ace/static.js @@ -0,0 +1,113 @@ +#!/usr/bin/env node + +var http = require("http") + , path = require("path") + , mime = require("mime") + , url = require("url") + , fs = require("fs") + , port = process.env.PORT || 8888 + , ip = process.env.IP || "0.0.0.0"; + +// compatibility with node 0.6 +if (!fs.exists) + fs.exists = path.exists; + +var allowSave = process.argv.indexOf("--allow-save") != -1; + +http.createServer(function(req, res) { + var uri = unescape(url.parse(req.url).pathname) + , filename = path.join(process.cwd(), uri); + + if (req.method == "PUT") { + if (!allowSave) + return error(res, 404, "Saving not allowed pass --allow-save to enable"); + return save(req, res, filename); + } + + fs.exists(filename, function(exists) { + if (!exists) + return error(res, 404, "404 Not Found\n" + filename); + + if (fs.statSync(filename).isDirectory()) { + var files = fs.readdirSync(filename); + res.writeHead(200, {"Content-Type": "text/html"}); + + files.push(".", ".."); + var html = files.map(function(name) { + var href = uri + "/" + name; + href = href.replace(/[\/\\]+/g, "/").replace(/\/$/g, ""); + try { + var stat = fs.statSync(filename + "/" + name); + if (stat.isDirectory()) + href += "/"; + return "<a href='" + href + "'>" + name + "</a><br>"; + } catch(e) {} + }).filter(Boolean); + + res._hasBody && res.write(html.join("")); + res.end(); + return; + } + + fs.readFile(filename, "binary", function(err, file) { + if (err) { + res.writeHead(500, { "Content-Type": "text/plain" }); + res.write(err + "\n"); + res.end(); + return; + } + + var contentType = mime.lookup(filename) || "text/plain"; + res.writeHead(200, { "Content-Type": contentType }); + res.write(file, "binary"); + res.end(); + }); + }); +}).listen(port, ip); + +function error(res, status, message, error) { + console.error(error || message); + res.writeHead(status, { "Content-Type": "text/plain" }); + res.write(message); + res.end(); +} + +function save(req, res, filePath) { + var data = ""; + req.on("data", function(chunk) { + data += chunk; + }); + req.on("error", function() { + error(res, 404, "Could't save file"); + }); + req.on("end", function() { + try { + fs.writeFileSync(filePath, data); + } + catch (e) { + return error(res, 404, "Could't save file", e); + } + res.statusCode = 200; + res.end("OK"); + console.log("saved ", filePath); + }); +} + +function getLocalIps() { + var os = require("os"); + + var interfaces = os.networkInterfaces ? os.networkInterfaces() : {}; + var addresses = []; + for (var k in interfaces) { + for (var k2 in interfaces[k]) { + var address = interfaces[k][k2]; + if (address.family === "IPv4" && !address.internal) { + addresses.push(address.address); + } + } + } + return addresses; +} + +console.log("http://" + (ip == "0.0.0.0" ? getLocalIps()[0] : ip) + ":" + port); + diff --git a/plugins/node_modules/ace/static.py b/plugins/node_modules/ace/static.py new file mode 100644 index 00000000..7a2faf91 --- /dev/null +++ b/plugins/node_modules/ace/static.py @@ -0,0 +1,298 @@ +#!/usr/bin/env python +"""static - A stupidly simple WSGI way to serve static (or mixed) content. + +(See the docstrings of the various functions and classes.) + +Copyright (C) 2006-2009 Luke Arno - http://lukearno.com/ + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to: + +The Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. + +Luke Arno can be found at http://lukearno.com/ + +""" + +import mimetypes +import rfc822 +import time +import string +import sys +from os import path, stat, getcwd +from fnmatch import fnmatch +from wsgiref import util +from wsgiref.validate import validator +from wsgiref.headers import Headers +from wsgiref.simple_server import make_server +from optparse import OptionParser + +try: from pkg_resources import resource_filename, Requirement +except: pass + +try: import kid +except: pass + + +class MagicError(Exception): pass + + +class StatusApp: + """Used by WSGI apps to return some HTTP status.""" + + def __init__(self, status, message=None): + self.status = status + if message is None: + self.message = status + else: + self.message = message + + def __call__(self, environ, start_response, headers=[]): + if self.message: + Headers(headers).add_header('Content-type', 'text/plain') + start_response(self.status, headers) + if environ['REQUEST_METHOD'] == 'HEAD': + return [""] + else: + return [self.message] + + +class Cling(object): + """A stupidly simple way to serve static content via WSGI. + + Serve the file of the same path as PATH_INFO in self.datadir. + + Look up the Content-type in self.content_types by extension + or use 'text/plain' if the extension is not found. + + Serve up the contents of the file or delegate to self.not_found. + """ + + block_size = 16 * 4096 + index_file = 'index.html' + not_found = StatusApp('404 Not Found') + not_modified = StatusApp('304 Not Modified', "") + moved_permanently = StatusApp('301 Moved Permanently') + method_not_allowed = StatusApp('405 Method Not Allowed') + success_no_content = StatusApp('204 No Content', "") + server_error = StatusApp('500 Internal Server Error') + + def __init__(self, root, **kw): + """Just set the root and any other attribs passes via **kw.""" + self.root = root + for k, v in kw.iteritems(): + setattr(self, k, v) + + def __call__(self, environ, start_response): + """Respond to a request when called in the usual WSGI way.""" + path_info = environ.get('PATH_INFO', '') + full_path = self._full_path(path_info) + if not self._is_under_root(full_path): + return self.not_found(environ, start_response) + if path.isdir(full_path): + if full_path[-1] <> '/' or full_path == self.root: + location = util.request_uri(environ, include_query=False) + '/' + if environ.get('QUERY_STRING'): + location += '?' + environ.get('QUERY_STRING') + headers = [('Location', location)] + return self.moved_permanently(environ, start_response, headers) + else: + full_path = self._full_path(path_info + self.index_file) + try: + sz = int(environ['CONTENT_LENGTH']) + except: + sz = 0 + if environ['REQUEST_METHOD'] == 'PUT' and sz > 0: + for putglob in self.puttable: + if fnmatch(path_info, putglob): + data = environ['wsgi.input'].read(sz) + try: + with open(full_path, "wb") as f: f.write(data) + return self.success_no_content(environ, start_response) + except: + print sys.exc_info()[1] + return self.server_error(environ, start_response) + if environ['REQUEST_METHOD'] not in ('GET', 'HEAD'): + headers = [('Allow', 'GET, HEAD')] + return self.method_not_allowed(environ, start_response, headers) + content_type = self._guess_type(full_path) + try: + etag, last_modified = self._conditions(full_path, environ) + headers = [('Date', rfc822.formatdate(time.time())), + ('Last-Modified', last_modified), + ('ETag', etag)] + if_modified = environ.get('HTTP_IF_MODIFIED_SINCE') + if if_modified and (rfc822.parsedate(if_modified) + >= rfc822.parsedate(last_modified)): + return self.not_modified(environ, start_response, headers) + if_none = environ.get('HTTP_IF_NONE_MATCH') + if if_none and (if_none == '*' or etag in if_none): + return self.not_modified(environ, start_response, headers) + file_like = self._file_like(full_path) + headers.append(('Content-Type', content_type)) + start_response("200 OK", headers) + if environ['REQUEST_METHOD'] == 'GET': + return self._body(full_path, environ, file_like) + else: + return [''] + except (IOError, OSError), e: + print e + return self.not_found(environ, start_response) + + def _full_path(self, path_info): + """Return the full path from which to read.""" + return self.root + path_info + + def _is_under_root(self, full_path): + """Guard against arbitrary file retrieval.""" + if (path.abspath(full_path) + path.sep)\ + .startswith(path.abspath(self.root) + path.sep): + return True + else: + return False + + def _guess_type(self, full_path): + """Guess the mime type using the mimetypes module.""" + return mimetypes.guess_type(full_path)[0] or 'text/plain' + + def _conditions(self, full_path, environ): + """Return a tuple of etag, last_modified by mtime from stat.""" + mtime = stat(full_path).st_mtime + return str(mtime), rfc822.formatdate(mtime) + + def _file_like(self, full_path): + """Return the appropriate file object.""" + return open(full_path, 'rb') + + def _body(self, full_path, environ, file_like): + """Return an iterator over the body of the response.""" + way_to_send = environ.get('wsgi.file_wrapper', iter_and_close) + return way_to_send(file_like, self.block_size) + + +def iter_and_close(file_like, block_size): + """Yield file contents by block then close the file.""" + while 1: + try: + block = file_like.read(block_size) + if block: yield block + else: raise StopIteration + except StopIteration, si: + file_like.close() + return + + +def cling_wrap(package_name, dir_name, **kw): + """Return a Cling that serves from the given package and dir_name. + + This uses pkg_resources.resource_filename which is not the + recommended way, since it extracts the files. + + I think this works fine unless you have some _very_ serious + requirements for static content, in which case you probably + shouldn't be serving it through a WSGI app, IMHO. YMMV. + """ + resource = Requirement.parse(package_name) + return Cling(resource_filename(resource, dir_name), **kw) + + +def command(): + usage = "%prog [--help] [-d DIR] [-l [HOST][:PORT]] [-p GLOB[,GLOB...]]" + parser = OptionParser(usage=usage, version="static 0.3.6") + parser.add_option("-d", "--dir", dest="rootdir", default=".", + help="Root directory to serve. Defaults to '.' .", metavar="DIR") + parser.add_option("-l", "--listen", dest="listen", default="127.0.0.1:8888", + help="Listen on this interface (given by its hostname or IP) and port."+ + " HOST defaults to 127.0.0.1. PORT defaults to 8888. "+ + "Leave HOST empty to listen on all interfaces (INSECURE!).", + metavar="[HOST][:PORT]") + parser.add_option("-p", "--puttable", dest="puttable", default="", + help="Comma or space-separated list of request paths for which to"+ + " permit PUT requests. Each path is a glob pattern that may "+ + "contain wildcard characters '*' and/or '?'. "+ + "'*' matches any sequence of characters, including the empty"+ + " string. '?' matches exactly 1 arbitrary character. "+ + "NOTE: Both '*' and '?' match slashes and dots. "+ + "I.e. --puttable=* makes every file under DIR writable!", + metavar="GLOB[,GLOB...]") + parser.add_option("--validate", dest="validate", action="store_true", + default=False, + help="Enable HTTP validation. You don't need this unless "+ + "you're developing static.py itself.") + + options, args = parser.parse_args() + if len(args) > 0: + parser.print_help(sys.stderr) + sys.exit(1) + + parts = options.listen.split(":") + if len(parts) == 1: + try: # if the the listen argument consists only of a port number + port = int(parts[0]) + host = None + except: # could not parse as port number => must be a host IP or name + host = parts[0] + port = None + elif len(parts) == 2: + host, port = parts + else: + sys.exit("Invalid host:port specification.") + + if not host: + host = '0.0.0.0' + if not port: + port = 8888 + try: + port = int(port) + if port <= 0 or port > 65535: raise ValueError + except: + sys.exit("Invalid host:port specification.") + + puttable = set(path.abspath(p) for p in + options.puttable.replace(","," ").split()) + if puttable and host not in ('127.0.0.1', 'localhost'): + print("Permitting PUT access for non-localhost connections may be unwise.") + + options.rootdir = path.abspath(options.rootdir) + + for p in puttable: + if not p.startswith(options.rootdir): + sys.exit("puttable path '%s' not under root '%s'" % (p, options.rootdir)) + + # cut off root prefix from puttable paths + puttable = set(p[len(options.rootdir):] for p in puttable) + + app = Cling(options.rootdir, puttable=puttable) + + if options.validate: + app = validator(app) + + try: + print "Serving %s to http://%s:%d" % (options.rootdir, host, port) + if puttable: + print("The following paths (relative to server root) may be "+ + "OVERWRITTEN via HTTP PUT.") + for p in puttable: + print p + make_server(host, port, app).serve_forever() + except KeyboardInterrupt, ki: + print "Ciao, baby!" + except: + sys.exit("Problem initializing server: %s" % sys.exc_info()[1]) + + +if __name__ == '__main__': + command() + diff --git a/plugins/node_modules/ace/tool/add_mode.js b/plugins/node_modules/ace/tool/add_mode.js new file mode 100644 index 00000000..7ebb1c7c --- /dev/null +++ b/plugins/node_modules/ace/tool/add_mode.js @@ -0,0 +1,115 @@ +var fs = require('fs'); +var lib = require('./lib'); +var path = require('path'); + +function main(displayName, extRe) { + var name = lib.snakeCase(displayName).replace(/[^\w]/g, ""); + + /** demo **/ + var demoFileExt = extRe.split("|")[0] || name; + var demoFileName = demoFileExt[0] == "^" ? demoFileExt.substr(1) : name + "." + demoFileExt; + var demoFilePath = lib.AceRoot + "demo/kitchen-sink/docs/" + demoFileName; + fs.writeFileSync(demoFilePath, "TODO add a nice demo!\nTry to keep it short!", "utf8"); + console.log("Created demo file at: " + path.normalize(demoFilePath)); + + /** mode **/ + var template = fs.readFileSync(__dirname + "/templates/mode.js", "utf8"); + var modePath = lib.AceLib + "ace/mode/" + name + ".js"; + var text = lib.fillTemplate(template, { + languageHighlightFilename: name, + languagename: name, + lineCommentStart: "TODO", + blockCommentStart: "TODO", + blockCommentEnd: "TODO" + }); + fs.writeFileSync(modePath, text); + console.log("Created mode file at: " + path.normalize(modePath)); + + /** highlight rules **/ + template = fs.readFileSync(__dirname + "/templates/highlight_rules.js", "utf8"); + var hlPath = lib.AceLib + "ace/mode/" + name + "_highlight_rules.js"; + template = template.replace(/\/\* THIS[\s\S]*?\*{3}\/\s*/, ""); + text = lib.fillTemplate(template, { + language: name, + languageTokens: '{\n\ + start: [{\n\ + token: "string.start",\n\ + regex: \'"\',\n\ + next: "qstring"\n\ + }],\n\ + qstring: [{\n\ + token: "escape",\n\ + regex: /\\\\./,\n\ + }, {\n\ + token: "string.end",\n\ + regex: \'"\',\n\ + next: "start"\n\ + }],\n\ + }' + }); + fs.writeFileSync(hlPath, text); + console.log("Created mode file at: " + path.normalize(hlPath)); + + /** snippets **/ + template = fs.readFileSync(__dirname + "/templates/snippets.js", "utf8"); + var snipetsPath = lib.AceLib + "ace/snippets/" + name + ".js"; + text = lib.fillTemplate(template, { + languagename: name, + snippets: "" + }); + fs.writeFileSync(snipetsPath, text); + console.log("Created snippets file at: " + path.normalize(snipetsPath)); + + /** modelist **/ + var modelistPath = lib.AceLib + "ace/ext/modelist.js"; + var modelist = fs.readFileSync(modelistPath, "utf8").replace(/\r\n?/g, "\n"); + modelist = modelist.replace(/(supportedModes = {\n)([\s\S]*?)(\n^};)/m, function(_, m1, m2, m3) { + var langs = m2.split(/,\n/); + var unsorted = []; + for (var i = langs.length; i--;) { + if (/\s*\/\//.test(langs[i])) { + unsorted = langs.splice(i, langs.length); + break; + } + } + console.log(unsorted) + var offset = langs[0].trim().indexOf("["); + var padding = Array(Math.max(offset - displayName.length - 1, 0) + 1).join(" "); + var newLang = " " + displayName + ":" + padding + "[\"" + extRe + "\"]"; + langs = langs.concat(newLang).map(function(x) { + return { + value: x, + id: x.match(/[^"':\s]+/)[0].toLowerCase() + }; + }); + langs[langs.length - 1].isNew = true; + + langs = langs.filter(function(x) { + console.log(x.id, displayName) + return x.id != displayName.toLowerCase() || x.isNew; + }); + langs = langs.sort(function(a, b) { + return a.id.localeCompare(b.id); + }).map(function(x) { + return x.value; + }); + + return m1 + langs.concat(unsorted).join(",\n") + m3; + }); + fs.writeFileSync(modelistPath, modelist, "utf8"); + console.log("Updated modelist at: " + path.normalize(modelistPath)); +} + +if (!module.parent) { + var args = process.argv.slice(2); + var displayName = args[0]; + var extRe = args[1]; + if (!displayName || ! extRe) { + console.log("Usage: ModeName ext1|ext2"); + process.exit(1); + } + main(displayName, extRe); +} else { + module.exports = main; +} + diff --git a/plugins/node_modules/ace/tool/lib.js b/plugins/node_modules/ace/tool/lib.js new file mode 100644 index 00000000..3d57b6e0 --- /dev/null +++ b/plugins/node_modules/ace/tool/lib.js @@ -0,0 +1,182 @@ +var plist = require("plist"); +var util = require("util"); +var url = require("url"); +var cson = require("cson"); + +var https = require("https"); +var http = require("http"); + +exports.parsePlist = function(xmlOrJSON, callback) { + var json; + if (xmlOrJSON[0] == "<") { + plist.parseString(xmlOrJSON, function(_, result) { + json = result[0]; + }); + } else { + try { + xmlOrJSON = xmlOrJSON.replace( + /("(?:\\.|[^"])*")|(?:,\s*)+([\]\}])|(\w+)\s*:|([\]\}]\s*[\[\{])|(\/\/.*|\/\*(?:[^\*]|\*(?=[^\/]))*?\*\/)/g, + function(_, str, extraComma, noQuote, missingComma, comment) { + if (comment) + return ""; + if (missingComma) + return missingComma[0] + "," + missingComma.slice(1); + return str || extraComma || '"' + noQuote + '":'; + }); + json = JSON.parse(xmlOrJSON); + } catch(e) { + json = cson.parse(xmlOrJSON); + } + } + callback && callback(json); + return json; +}; + + +exports.formatJSON = function(object, initialIndent) { + return JSON.stringify(object, null, 4).replace(/^/gm, initialIndent||""); +}; + +exports.formatJS = function(object, initialIndent) { + return formatJS(object, 4, initialIndent); +}; + +function formatJS(object, indent, initialIndent) { + if (typeof indent == "number") + indent = Array(indent + 1).join(" "); + + function $format(buffer, totalIndent, state, o) { + if (typeof o != "object" || !o) { + if (typeof o == "string") + buffer.push(JSON.stringify(o)); + else + buffer.push("" + o); + } + else if (Array.isArray(o)) { + buffer.push("[") + + var len = totalIndent.length + var oneLine = true; + for (var i = 0; i < o.length; i++) { + if (typeof o[i] == "string") { + len += o[i].length + 2 + } else if (!o[i]) { + len += (o[i] + "").length + } else { + oneLine = false; + break; + } + len += 2; + if (len > 60) { + oneLine = false; + break; + } + } + + for (var i = 0; i < o.length; i++) { + if (o[i] && typeof o[i] == "object") { + $format(buffer, totalIndent, state, o[i]); + if (i < o.length - 1) + buffer.push(", "); + } else { + if (oneLine) + i && buffer.push(" "); + else + buffer.push("\n", totalIndent + indent) + $format(buffer, totalIndent + indent, state, o[i]); + if (i < o.length - 1) + buffer.push(","); + } + + } + if (!oneLine && buffer[buffer.length - 1] != "}") + buffer.push("\n" + totalIndent) + buffer.push("]") + } + else { + var keys = Object.keys(o); + buffer.push("{", "\n"); + for (var i = 0; i < keys.length; i++) { + buffer.push(totalIndent + indent); + if (/^\w+$/.test(keys[i])) + buffer.push(keys[i]); + else + buffer.push(JSON.stringify(keys[i])); + buffer.push(": ") + + if (keys[i] == "regex" && typeof o[keys[i]] == "string") { + try { + var re = new RegExp(o[keys[i]]); + buffer.push("/" + re.source.replace(/\\.|\//g, function(f) { + return f.length == 1 ? "\\" + f : f; + }) + "/"); + } catch(e) { + $format(buffer, totalIndent + indent, state, o[keys[i]]); + } + } else { + $format(buffer, totalIndent + indent, state, o[keys[i]]); + } + + if (i < keys.length - 1) + buffer.push(",", "\n"); + } + buffer.push("\n", totalIndent, "}"); + } + } + var buffer = []; + $format(buffer, initialIndent || "", {}, object); + return buffer.join(""); +} + +exports.fillTemplate = function(template, replacements) { + return template.replace(/%(.+?)%/g, function(str, m) { + return replacements[m] || ""; + }); +}; + +exports.hyphenate = function(str) { + return str.replace(/([A-Z])/g, "-$1").replace(/[_\s\-]+/g, "-").toLowerCase(); +}; + +exports.camelCase = function(str) { + return str.replace(/[\-_\s]+(.?)/g, function(x, y) {return y.toUpperCase()}); +}; + +exports.snakeCase = function(str) { + return str.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\s\-]+/g, "_").toLowerCase(); +}; + +exports.quoteString = function(str) { + return '"' + str.replace(/\\/, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\\n") + '"'; +}; + + +exports.restoreJSONComments = function(objStr) { + return objStr.replace(/^(\s*)comment: '(.*)'/gm, function(_, i, c) { + return i + "//" + c.replace(/\\n(\\t)*/g, "\n" + i + "//") + "\n" + i; + }).replace(/ \/\/ ERROR/g, '", // ERROR'); +}; + + +exports.download = function(href, callback) { + var options = url.parse(href); + var protocol = options.protocol === "https:" ? https : http; + console.log("connecting to " + options.host + " " + options.path); + var request = protocol.get(options, function(res) { + var data = ""; + res.setEncoding("utf-8"); + + res.on("data", function(chunk) { + data += chunk; + }); + + res.on("end", function(){ + callback(data); + }); + }); +}; + + +exports.AceRoot = __dirname + "/../"; +exports.AceLib = __dirname + "/../lib/"; + diff --git a/plugins/node_modules/ace/tool/mode_creator.html b/plugins/node_modules/ace/tool/mode_creator.html new file mode 100644 index 00000000..259ba64e --- /dev/null +++ b/plugins/node_modules/ace/tool/mode_creator.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> + +<html lang="en"> +<head> + <base href="../"> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <title>Ace Mode Creator + + + + + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/plugins/node_modules/ace/tool/mode_creator.js b/plugins/node_modules/ace/tool/mode_creator.js new file mode 100644 index 00000000..a3945e52 --- /dev/null +++ b/plugins/node_modules/ace/tool/mode_creator.js @@ -0,0 +1,260 @@ +define(function(require, exports, module) { + +/** creates globals intentionally to make things easily accessible from console **/ + +require("ace/ext/language_tools"); +require("ace/config").setDefaultValues("editor", { + enableBasicAutocompletion: true, + enableSnippets: true +}); +var net = require("ace/lib/net"); +var Range = require("ace/range").Range; +var util = require("demo/kitchen-sink/util"); +var layout = require("demo/kitchen-sink/layout"); +var modelist = require("ace/ext/modelist"); +var doclist = require("demo/kitchen-sink/doclist"); +var TokenTooltip = require("demo/kitchen-sink/token_tooltip").TokenTooltip; + +var EditSession = require("ace/edit_session").EditSession; +var UndoManager = require("ace/undomanager").UndoManager; + +var DebugTokenizer = require("ace/tokenizer_dev").Tokenizer; +var Tokenizer = require("ace/tokenizer").Tokenizer; + +// createEditor +var splitEditor = window.splitEditor = util.createSplitEditor("editor"); + +var editor1 = window.editor1 = splitEditor.editor0; +var editor2 = window.editor2 = splitEditor.editor1; +new TokenTooltip(editor2); + +var timeout = null; +var schedule = function() { + if (timeout != null) { + clearTimeout(timeout); + } + timeout = setTimeout(run, 800); +}; + + +var setAutorunEnabled = function(val) { + if (val) + editor1.on('change', schedule); + else + editor1.removeEventListener('change', schedule); +}; + +util.bindCheckbox("autorunEl", setAutorunEnabled); + + +var docEl = document.getElementById("doc"); +util.fillDropdown(docEl, doclist.docs); +util.bindDropdown("doc", function(value) { + doclist.loadDoc(value, function(session) { + if (session) { + editor2.setSession(session); + updateSaveButtonState(null, editor2); + } + }); +}); + +var modeEl = document.getElementById("modeEl"); +util.fillDropdown(modeEl, modelist.modes); +var modeSessions = {}; + +util.bindDropdown(modeEl, function(value) { + if (modeSessions[value]) { + editor1.setSession(modeSessions[value]); + schedule(); + return; + } + var hp = "./lib/ace/mode/" + value + "_highlight_rules.js"; + net.get(hp, function(text) { + var session = new EditSession(text); + session.setUndoManager(new UndoManager()); + + modeSessions[value] = session; + session.setMode("ace/mode/javascript", function() { + if (session.getLine(0).match(/^\s*\//)) + session.toggleFoldWidget(0); // fold licence comment + }); + + editor1.setSession(modeSessions[value]); + updateSaveButtonState(null, editor1); + schedule(); + }); +}); + +document.getElementById("syncToMode").onclick = function() { + docEl.value = modelist.modesByName[modeEl.value].desc; + docEl.onchange(); + run(); +}; + +editor1.saveButton = document.getElementById("saveButton1"); +editor2.saveButton = document.getElementById("saveButton2"); +editor1.saveButton.editor = editor1; +editor2.saveButton.editor = editor2; + +editor1.saveButton.onclick = function() { + doclist.saveDoc({ + path: "./lib/ace/mode/" + modeEl.value + "_highlight_rules.js", + session: editor1.session + }, function(err) { + handleSaveResult(err, editor1); + }); +}; +editor1.commands.bindKey({ + win: "Ctrl-S", mac: "Cmd-s" +}, editor1.saveButton.onclick); +editor2.saveButton.onclick = function() { + doclist.saveDoc(docEl.value, function(err) { + handleSaveResult(err, editor2); + }); +}; +editor2.commands.bindKey({ + win: "Ctrl-S", mac: "Cmd-s" +}, editor2.saveButton.onclick); +function updateSaveButtonState(e, editor){ + editor.saveButton.disabled = editor.session.getUndoManager().isClean(); +} +editor1.on("input", updateSaveButtonState); +editor2.on("input", updateSaveButtonState); + +function handleSaveResult(err, editor) { + if (err) { + return log( + "Write access to this file is disabled.\n"+ + "To enable saving your changes to disk, clone the Ace repository\n"+ + "and run the included web server with the --allow-save option\n"+ + "`node static.js --allow-save` or `static.py --puttable=*`" + ); + } + editor.session.getUndoManager().markClean(); + updateSaveButtonState(null, editor); +} + +document.getElementById("perfTest").onclick = function() { + var lines = editor2.session.doc.getAllLines(); + if (!lines.length) + return; + while (lines.length < 1000) { + lines = lines.concat(lines); + } + + var tk = new Tokenizer(currentRules); + var testPerf = function(lines, tk) { + var state = "start"; + for (var i=0, l = lines.length; i + + + + + + Ace Profile util + + + + +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + +
    + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +
    +
    + +
    +
    +
    +
    + + + + + + + + + diff --git a/plugins/node_modules/ace/tool/regexp_tokenizer.js b/plugins/node_modules/ace/tool/regexp_tokenizer.js new file mode 100644 index 00000000..ef302e9a --- /dev/null +++ b/plugins/node_modules/ace/tool/regexp_tokenizer.js @@ -0,0 +1,114 @@ +/***** regexp tokenizer */ +require("amd-loader"); +var lib = require("./lib"); + +var Tokenizer = require(lib.AceLib+ "ace/tokenizer").Tokenizer; +var Tokenizer = require(lib.AceLib + "ace/tokenizer_dev").Tokenizer; // todo can't use tokenizer because of max token count +var TextHighlightRules = require(lib.AceLib + "ace/mode/text_highlight_rules").TextHighlightRules; + +var r = new TextHighlightRules() +r.$rules = { + start: [ + {token: "anchor", regex: /[\^\$]|\\[bBAZzG]/, merge:false}, + {token: "backRef", regex: /\\([1-9]|k(<\w+\b[+-]?\d>|'\w+\b[+-]?\d'))/, merge:false}, + {include: "charTypes", merge:false}, + {token: "charclass", regex: /\[\^?/, push: "charclass", merge:false}, + {token: "alternation", regex: /\|/, merge:false}, + {include: "quantifiers", merge:false}, + {include: "groups", merge:false}, + {include: "xGroup", merge:true} + ], + charTypes: [ + {token: "char", regex: /\\([tvnrbfae]|[0-8]{1,3}|x[\dA-Fa-f]{2}|x7[\dA-Fa-f]{7})/, merge:false}, // todo \cx + {token: "charType", regex: /\.|\\[wWsSdDhH]/, merge:false}, + {token: "charProperty", regex: /\\p{\w+}/, merge:false}, + {token: "char", regex: /\\./, merge:false}, + ], + quantifiers: [ + {token: "quantifier", regex: /([?*+]|{\d+\b,?\d*}|{,\d+})[?+]?/, merge:false} + ], + charclass: [ + {include: "charTypes", merge:false}, + {token: "charclass.start", regex: /\[\^?/, push: "charclass", merge:false}, + {token: "charclass.end", regex: /\]/, next: "pop", merge:false} + ], + groups: [ + {token: "group", regex: /[(]([?](#|[imx\-]+:?|:|=|!|<=||<\w+>|'\w+'|))?|[)]/, + onMatch: function(val, state, stack) { + if (!stack.groupNumber) + stack.groupNumber = 1; + + var isStart = val !== ")"; + var t = {depth:0,type: isStart ? "group.start" : "group.end", value: val}; + t.groupType = val[2]; + + if (val == "(") { + t.number = stack.groupNumber++; + t.isGroup = true + } else if (t.groupType == "'" || (t.groupType == "<" && val.slice(-1) == ">")) { + t.name = val.slice(2, -1) + t.isGroup = true + } else if (t.groupType == ":") { + t.isGroup = true + } + + if (t.groupType && val.indexOf("x") != -1) { + var minus = val.indexOf("-"); + if (minus == -1 || minus > val.indexOf("x")) + stack.xGroup = t; + else + stack.xGroup = null; + } else if (!isStart && stack.xGroup && stack.xGroup == stack[0]) { + if (stack.xGroup.value.slice(-1) == ":") + stack.xGroup = null; + } + + if (isStart) { + if (stack.groupDepth) { + stack[0].hasChildren = true + } + stack.groupDepth = (stack.groupDepth||0)+1; + stack.unshift(t) + } else { + stack.groupDepth --; + t.start = stack.shift(t) + t.start.end = t + } + return [t] + }, merge:false + } + ], + xGroup: [ + {token: "text", regex:/\s+/, onMatch: function(val, state, stack) { + return stack.xGroup ? [] : "text" + }, merge: true}, + {token: "text", regex: /#/, onMatch: function(val, state, stack) { + if (stack.xGroup) { + this.next = "comment"; + stack.unshift(state); + return []; + } + this.next = ""; + return "text"; + }, merge: true} + ], + comment: [{ + regex: "[^\n\r]*|^", token: "", onMatch: function(val, state, stack) { + this.next = stack.shift(); + return []; + } + }] +} +r.normalizeRules() +var tmReTokenizer = new Tokenizer(r.getRules()); + +function tokenize(str) { + return tmReTokenizer.getLineTokens(str).tokens; +} + +function toStr(tokens) { return tokens.map(function(x){return x.value}).join("")} + + +exports.tokenize = tokenize; +exports.toStr = toStr; +exports.tmReTokenizer = tmReTokenizer; \ No newline at end of file diff --git a/plugins/node_modules/ace/tool/regexp_tokenizer_test.js b/plugins/node_modules/ace/tool/regexp_tokenizer_test.js new file mode 100644 index 00000000..aa09ff12 --- /dev/null +++ b/plugins/node_modules/ace/tool/regexp_tokenizer_test.js @@ -0,0 +1,30 @@ +require("amd-loader"); +var assert = require("assert"); + +var tk = require("./regexp_tokenizer"); +var tokenize = tk.tokenize; +var toStr = tk.toStr; + +var logTokens = function(tokens) { + tokens.forEach(function(x) { + delete x.end + delete x.start + }) + console.log(tokens) +} + +assert.equal(toStr( + tokenize("(?x)c + +\n\ + # comment\n\ + (?-x) # (?x: 1 \n\ + (2) [ ] # a \n\ + 3 4) c#" + )), + "(?x)c++(?-x) # (?x:1(2)[ ]34) c#" + ) +assert.equal(toStr( + tokenize("(?x)\n\ + u # comment\n\ + ")), + "(?x)u" + ) diff --git a/plugins/node_modules/ace/tool/release.sh b/plugins/node_modules/ace/tool/release.sh new file mode 100644 index 00000000..f588787d --- /dev/null +++ b/plugins/node_modules/ace/tool/release.sh @@ -0,0 +1,119 @@ +#!/bin/bash +set -e + +pause() { + while true; do + read -p "$1 " yn + case $yn in + [Yy]* ) break;; + [Nn]* ) exit;; + * ) echo "Please answer yes or no.";; + esac + done +} + + + +cd `dirname $0`/.. +SOURCE=`pwd` + +# check if build dir is clean +if ! [ -f build/.git/HEAD ]; then + git clone git@github.com:ajaxorg/ace-builds.git build +fi +pushd build +git fetch +if [ "$(git rev-parse --revs-only HEAD)" != "$(git rev-parse --revs-only refs/remotes/origin/master)" ]; then + echo build directory not clean; + exit 1 +fi +if [ "$(git ls-files --others --exclude-standard)" ]; + then echo untracked files; + git ls-files --others --exclude-standard + exit 1 +fi +popd + +# clean untracked files from modes and themes +while read line; do + if [ -f "$line" ]; then + mkdir -p "_$(dirname "$line")"; + echo "$line"; + mv "$line" "_$line"; + fi +done <<< "$(git ls-files --others --exclude-standard lib/ace)" + + +# show history +git checkout refs/remotes/origin/master -- package.json +CUR_VERSION=`node -e 'console.log(require("./package.json").version)'` +git --no-pager log --color --first-parent --oneline v$CUR_VERSION..master | + sed -e s"/^/https:\/\/github.com\/ajaxorg\/ace\/commit\//" +echo "current version is $CUR_VERSION" + +# get new version number +VERSION_NUM=; +until [[ "$VERSION_NUM" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; do + read -p "enter version number for the build " VERSION_NUM +done + +# update version number everywhere +node -e " + var fs = require('fs'); + var version = '$VERSION_NUM'; + function replaceVersion(str) { + return str.replace(/(['\"]?version['\"]?\s*[:=]\s*['\"])[\\d.\\w\\-]+(['\"])/, function(_, m1, m2) { + return m1 + version + m2; + }); + } + function update(path, replace) { + var pkg = fs.readFileSync(path, 'utf8'); + pkg = (replace || replaceVersion)(pkg); + fs.writeFileSync(path, pkg, 'utf8'); + } + update('package.json'); + update('build/package.json'); + update('./lib/ace/ace.js'); + update('ChangeLog.txt', function(str) { + var date='"`date +%Y.%m.%d`"'; + return date + ' Version ' + version + '\n' + str.replace(/^\d+.*/, '').replace(/^\n/, ''); + }); +" + +pause "versions updated. do you want to start build script? [y/n]" + +node Makefile.dryice.js full +cd build +git add . +git commit --all -m "package `date +%d.%m.%y`" + + +echo "build task completed." +pause "continue creating the tag for v$VERSION_NUM [y/n]" +if [[ ${VERSION_NUM} != *"-"* ]]; then + git tag "v"$VERSION_NUM +fi + +pause "continue pushing to github? [y/n]" + +git push --progress --tags "origin" HEAD:gh-pages HEAD:master + +echo "build repository updated" + +pause "continue update ace repo? [y/n]" +cd .. + +git commit -a -m "release v$VERSION_NUM" + +echo "new commit added" +pause "continue creating the tag for v$VERSION_NUM [y/n]" +if [[ ${VERSION_NUM} != *"-"* ]]; then + git tag "v"$VERSION_NUM +fi + +pause "continue pushing to github? [y/n]" + +git push --progress --tags "origin" HEAD:gh-pages HEAD:master +echo "All done!" +pause "May I go now? [y/n]" + diff --git a/plugins/node_modules/ace/tool/templates/dummy.JSON-tmLanguage b/plugins/node_modules/ace/tool/templates/dummy.JSON-tmLanguage new file mode 100644 index 00000000..cb58b29b --- /dev/null +++ b/plugins/node_modules/ace/tool/templates/dummy.JSON-tmLanguage @@ -0,0 +1,45 @@ +// [PackageDev] target_format: plist, ext: tmLanguage +{ + "name": "Dummy", + "scopeName": "source.dummy", + "fileTypes": ["dummy"], + "patterns": [ + { + "include": "#string" + }, { + "include": "#escapes" + } + ], + "repository": { + "escapes": { + "patterns": [ + { + "match": "\\\\[nrt\\\\\\$\\\"']", + "name": "keyword.dummy" + } + ] + }, + "string": { + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.dummy" + } + }, + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.dummy" + } + }, + "contentName": "meta.string-contents.quoted.double.dummy", + "name": "string.quoted.double.dummy", + "end": "'''", + "begin": "'''", + "patterns": [ + { + "include": "#escapes" + } + ], + "comment": "This is a comment" + } + } +} \ No newline at end of file diff --git a/plugins/node_modules/ace/tool/templates/highlight_rules.js b/plugins/node_modules/ace/tool/templates/highlight_rules.js new file mode 100644 index 00000000..db8f5630 --- /dev/null +++ b/plugins/node_modules/ace/tool/templates/highlight_rules.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* This file was autogenerated from %name% (uuid: %uuid%) */ +/**************************************************************************************** + * IT MIGHT NOT BE PERFECT ...But it's a good start from an existing *.tmlanguage file. * + * fileTypes * + ****************************************************************************************/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var %language%HighlightRules = function() { + // regexp must not have capturing parentheses. Use (?:) instead. + // regexps are ordered -> the first match is used + + this.$rules = %languageTokens% + + this.normalizeRules(); +}; + +%language%HighlightRules.metaData = %metaData% + + +oop.inherits(%language%HighlightRules, TextHighlightRules); + +exports.%language%HighlightRules = %language%HighlightRules; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/tool/templates/mode.js b/plugins/node_modules/ace/tool/templates/mode.js new file mode 100644 index 00000000..1cdabf15 --- /dev/null +++ b/plugins/node_modules/ace/tool/templates/mode.js @@ -0,0 +1,58 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var %language%HighlightRules = require("./%languageHighlightFilename%_highlight_rules").%language%HighlightRules; +// TODO: pick appropriate fold mode +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = %language%HighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + // this.lineCommentStart = "%lineCommentStart%"; + // this.blockComment = {start: "%blockCommentStart%", end: "%blockCommentEnd%"}; + // Extra logic goes here. + this.$id = "ace/mode/%languageHighlightFilename%" +}).call(Mode.prototype); + +exports.Mode = Mode; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace/tool/templates/snippets.js b/plugins/node_modules/ace/tool/templates/snippets.js new file mode 100644 index 00000000..6752d1db --- /dev/null +++ b/plugins/node_modules/ace/tool/templates/snippets.js @@ -0,0 +1,7 @@ +define(function(require, exports, module) { +"use strict"; + +exports.snippetText = require("../requirejs/text!./%modeName%.snippets"); +exports.scope = "%modeName%"; + +}); diff --git a/plugins/node_modules/ace/tool/templates/theme.css b/plugins/node_modules/ace/tool/templates/theme.css new file mode 100644 index 00000000..8515d0c3 --- /dev/null +++ b/plugins/node_modules/ace/tool/templates/theme.css @@ -0,0 +1,60 @@ +/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: %uuid%) */ + +.%cssClass% .ace_gutter { + background: %gutterBg%; + color: %gutterFg%; +} + +.%cssClass% .ace_print-margin { + width: 1px; + background: %printMargin%; +} + +.%cssClass% { + background-color: %background%; + color: %foreground%; +} + +.%cssClass% .ace_cursor { + color: %cursor%; +} + +.%cssClass% .ace_marker-layer .ace_selection { + background: %selection%; +} + +.%cssClass%.ace_multiselect .ace_selection.ace_start { + box-shadow: 0 0 3px 0px %background%; + border-radius: 2px; +} + +.%cssClass% .ace_marker-layer .ace_step { + background: %step%; +} + +.%cssClass% .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid %bracket%; +} + +.%cssClass% .ace_marker-layer .ace_active-line { + background: %active_line%; +} + +.%cssClass% .ace_gutter-active-line { + background-color: %active_line%; +} + +.%cssClass% .ace_marker-layer .ace_selected-word { + %selected_word_highlight% +} + +.%cssClass% .ace_fold { + background-color: %fold%; + border-color: %foreground%; +} + + + + + diff --git a/plugins/node_modules/ace/tool/templates/theme.js b/plugins/node_modules/ace/tool/templates/theme.js new file mode 100644 index 00000000..8e99f710 --- /dev/null +++ b/plugins/node_modules/ace/tool/templates/theme.js @@ -0,0 +1,39 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = %isDark%; +exports.cssClass = "%cssClass%"; +exports.cssText = %css%; + +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); +}); diff --git a/plugins/node_modules/ace/tool/tmlanguage.js b/plugins/node_modules/ace/tool/tmlanguage.js new file mode 100644 index 00000000..b5d8b851 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmlanguage.js @@ -0,0 +1,697 @@ +require("amd-loader"); + +var fs = require("fs"); +var util = require("util"); +var lib = require("./lib"); +var pathlib = require("path"); +var parseLanguage = lib.parsePlist; + +var tk = require("./regexp_tokenizer"); +var tokenize = tk.tokenize; +var toStr = tk.toStr; + +function last(array) {return array[array.length - 1]} + +function convertHexEscape(tokens) { + var inChClass = false; + tokens.forEach(function(t) { + if (t.type == "charclass") + inChClass = true; + else if (t.type == "charclass.end") + inChClass = false; + else if (t.type == "charType"){ + if (t.value == "\\h") { + t.type = "text"; + t.value = inChClass ? "\\da-fA-F" : "[\\da-fA-F]"; + } + else if (t.value == "\\H") { + if (inChClass) { + console.warn("can't convert \\H in charclass"); + return; + } + t.type = "text"; + t.value = "[^\\da-fA-F]"; + } + } + }); + return tokens; +} + +function convertNewLinesTo$(str) { + var tokens = tokenize(str); + for (var i = 0; i < tokens.length; i++) { + var t= tokens[i]; + if (t.type == "char" && t.value == "\\n") { + var p = tokens[i + 1] || {}; + if (p.type != "quantifier") { + t.value = "$"; + while (p.value == "\\n" || p.type == "quantifier") { + p.value = ""; + p = tokens[++i + 1] || {}; + } + } else if (/\?|\*|{,|{0,/.test(p.value)) { + t.value = p.value = ""; + } else + p.value = ""; + } + } + return toStr(tokens).replace(/[$]+/g, "$"); +} + +function convertCharacterTypes(str) { + var tokens = tokenize(str); + tokens = convertHexEscape(tokens); + + var warn = false; + tokens.forEach(function(t){ + if (t.type == "quantifier") { + var val = t.value; + if (val.slice(-1) == "+" && val.length > 1) { + t.value = val.slice(0, -1); + warn = val; + } + } + }); + if (warn) + console.log("converted possesive quantifier " + warn + " to *"); + return toStr(tokens); +} + +function removeInlineFlags(str, rule) { + var tokens = tokenize(str); + var caseInsensitive = false; + tokens.forEach(function(t, i) { + if (t.type == "group.start" && /[imsx]/.test(t.value)) { + if (/i/.test(t.value)) + caseInsensitive = true; + t.value = t.value.replace(/[imsx\-]/g, ""); + var next = tokens[i + 1]; + if (next && next.type == "group.end") { + t.value = next.value = ""; + } + } + }); + if (caseInsensitive && rule) + rule.caseInsensitive = true; + return toStr(tokens); +} + +function convertToNonCapturingGroups(str) { + var tokens = tokenize(str); + tokens.forEach(function(t, i) { + if (t.type == "group.start" && t.value == "(") + t.value += "?:"; + }); + return toStr(tokens); +} + +function simplifyNonCapturingGroups(str) { + var tokens = tokenize(str); + var t = tokens[0] || {}; + if (t.type == "group.start" && t.value == "(?:" + && t.end == last(tokens)) { + t.value = t.end.value = ""; + } + var i = 0; + function iter(f) { + for (i = 0; i < tokens.length; i++) + f(tokens[i]); + } + function iterGroup(end, f) { + for (var i1 = i + 1; i1 < tokens.length; i1++) { + var t = tokens[i1]; + if (t == end) + break; + var index = f && f(t); + if (index > i1) + i1 = index; + } + return i1; + } + + iter(function (t) { + if (t.type == "group.start" && t.value == "(?:") { + if (!t.end) + return console.error("malformed regex: " + str); + + var canRemove = true; + var next = tokens[tokens.indexOf(t.end, i) + 1]; + if (next && next.type == "quantifier") + return; + iterGroup(t.end, function(t) { + if (t.type == "alternation") + canRemove = false; + else if (t.type == "group.start" && t.end) + return iterGroup(t.end); + }); + if (canRemove) + t.value = t.end.value = ""; + } + }); + + return toStr(tokens); +} + +function removeLookBehinds(str) { + var tokens = tokenize(str); + var toRemove = null; + tokens.forEach(function(t, i) { + if (!toRemove && t.type == "group.start" && / i) + i = i1; + } + function lst(t) {return t[t.length - 1]} + function iter(f) { + for (i = 0; i < tokens.length; i++) + f(tokens[i]); + } + function iterGroup(end, f) { + for (var i1 = i + 1; i1 < tokens.length; i1++) { + var t = tokens[i1]; + if (t == end) + break; + f(t); + } + } + function peek() { return tokens[i + 1] || {}} + + // groupify + iter(function(t){ + if (t.type == "group.start") { + tryClose(); + isStart = true; + if (!t.hasChildren || t.isSpecial) + skip(t); + } else if (t.type == "group.end") { + isStart = true; + tryClose(); + } else if (t.type == "alternation") { + isStart = true; + tryClose(); + } else if (t.type != "anchor" && t.type != "quantifier"){ + tryOpen(); + } + }); + tryClose(); + + // remove redundand groups + var names = [defaultName]; + iter(function(t){ + if (t.type == "group.start" && !t.isSpecial) { + var captureName = captures[t.number]; + + if (!t.hasChildren) { + t.tokenName = captureName || lst(names); + skip(t); + } else { + var hasCapture = false; + iterGroup(t.end, function(t1) { + if (t1.type == "group.start" && captures[t1.number]) + hasCapture = true; + }); + if (hasCapture) { + t.value = "(?:"; + if (captureName) { + names.push(captureName); + t.isTokenGroup = true; + } + } else { + t.tokenName = captureName || lst(names); + iterGroup(t.end, function(t1) { + if (t1.value == "(") + t1.value = "(?:"; + }); + } + } + } else if (t.type == "group.end") { + if (t.start.isTokenGroup) + names.pop(); + } + }); + + // wrap capturing groups with quantifier + iter(function(t){ + if (t.type == "group.end" && t.start.value == "(" && peek().type == "quantifier") { + peek().value += ")"; + t.start.value += "(?:"; + } + }); + + names = []; + tokens.forEach(function(t) { + if (t.value == "(" || t.value == "((?:" ) + t.tokenName && names.push(t.tokenName); + }); + return { + names: names, + regex: toStr(tokens) + }; +} + +/***** converter */ + +function logDebug(string, obj) { + console.log(string, obj); +} + + +// tmLanguage processor + +// for tracking token states +var states = {start: []}; + +function processRules(rules){ + if (rules.patterns) + states.start = processPatterns(rules.patterns); + if (rules.repository) + processRepository(rules.repository); + return states; +} +function processRepository(r) { + for (var key in r) { + var p = r[key]; + if (p.begin) + var stateObj = [processPattern(r[key])]; + else if (p.patterns && !p.repository) + var stateObj = processPatterns(p.patterns); + else + var stateObj = [processPattern(r[key])]; + + if (stateObj) + states["#" + key] = stateObj; + } +} +function processPatterns(pl) { + return pl.map(processPattern); +} +function processPattern(p) { + if (p.end == "(?!\\G)" && p.patterns && p.patterns.length == 1) { + var rule = processPattern(p.patterns[0]); + } + else if (p.begin != null && p.end != null) { + convertBeginEndBackrefs(p); + + var rule = simpleRule(p.begin, p.name, p.beginCaptures || p.captures); + + var next = processPatterns(p.patterns || []); + var endRule = simpleRule(p.end, p.name, p.endCaptures || p.captures); + endRule.next = "pop"; + if (p.applyEndPatternLast) + next.push(endRule); + else + next.unshift(endRule); + + if (p.name || p.contentName) + next.push({defaultToken: p.name || p.contentName}); + + rule.push = next; + + rule = removeIncludeSelf(rule); + } + else if (p.match) { + var rule = simpleRule(p.match, p.name, p.captures); + } + else if (p.include) { + var rule = {include: p.include}; + } + else { + var rule = {todo: p}; + } + + if (p.comment) + rule.comment = (rule.comment || "") + p.comment; + + if (p.repository) + processRepository(p.repository); + return rule; +} +function simpleRule(regex, name, captures) { + name = name || "text"; + var rule = {token: "", regex: ""}; + + var origRegex = regex; + regex = transformRegExp(origRegex, rule); + if (captures) { + var tokenArray = []; + Object.keys(captures).forEach(function(x){ + tokenArray[x] = captures[x] && captures[x].name; + }); + + if (tokenArray.length == 1) { + name = tokenArray[0]; + } else { + var fixed = fixGroups(tokenArray, name, regex); + name = fixed.names; + regex = fixed.regex; + if (name.length == 1) + name = name[0]; + } + } + + if (typeof name == "string") + regex = convertToNonCapturingGroups(regex); + + regex = simplifyNonCapturingGroups(regex); + + try {new RegExp(regex);} catch(e) { + rule.TODO = "FIXME: regexp doesn't have js equivalent"; + rule.originalRegex = origRegex; + + // lookbehinds are mostly used to force ordering + // regex = removeLookBehinds(regex); + } + rule.token = name; + rule.regex = regex; + return rule; +} + +function removeIncludeSelf(rule) { + if (!rule.push) + return rule; + var hasSelfInclude = false; + var escapeRule = null; + var complexSelfInclude = false; + rule.push.forEach(function(sub) { + if (sub.include == "$self") { + hasSelfInclude = true; + } else if (sub.defaultToken) { + return; + } else if (sub.next == "pop") { + escapeRule = sub; + } else + complexSelfInclude = true; + }); + + if (hasSelfInclude) { + console.warn("can't convert include $self"); + return {todo: rule}; + + if (complexSelfInclude) { + console.warn("can't convert include $self"); + rule.toDo = "include $self not fully supported"; + return rule; + } + console.warn("include $self not fully supported"); + delete rule.push; + delete escapeRule.next; + rule.includeSelf = true; + escapeRule.includeSelf = true; + return [rule, escapeRule]; + } + return rule; +} + +// regex transformation + +function removeXFlag(str) { + var tokens = tokenize(str); + return toStr(tokens); +} + +function transformRegExp(str, rule) { + str = convertNewLinesTo$(str); + + str = removeInlineFlags(str, rule); + + str = str.replace(/(\\[xu]){([a-fA-F\d]+)}/g, '$1$2'); + + str = convertCharacterTypes(str, rule); + + checkForNamedCaptures(str); + + return str; +} + +// +function extractPatterns(tmRules) { + return processRules(tmRules); +} + + +function detectLoops(states) { + var data = {}; + var keys = Object.keys(states); + var flattenedStates = {}; + function addRef(item, name) { + if (item.refs.indexOf(name) == -1) + item.refs.push(name); + } + function anonStateId(name, next) { + var i = 0, old = name; + while (flattenedStates[name] || states[name]) { + name = old + "_" + i++; + } + // console.log(old, name) + return name; + } + function addState(key, rules) { + if (rules && !flattenedStates[key]) + flattenedStates[key] = rules; + return rules || flattenedStates[key]; + } + + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var state = addState(key, states[key]); + + var item = data[key] || (data[key] = {/* name: key, */ refs: []}); + state.forEach(function(rule) { + var next = rule.push || rule.next; + if (next == "pop") { + // nothing + } else if (typeof next == "string") { + addRef(item, next); + } else if (next) { + var anonId = anonStateId(key, next); + addState(anonId, next); + if (rule.push) + addRef(item, anonId); + keys.push(anonId); + } else if (rule.include) { + addRef(item, rule.include); + } + }); + } + + + var cycles = []; + function addPath(start, path) { + var node = data[start]; + path.push(start); + if (!node || !node.refs) + console.log(start); + var i = path.indexOf(start); + if (i > -1 && i != path.length - 1 || start == "$self" || start == "$base") { + if (i != -1) + path = path.slice(i); + for (var j = 0; j < cycles.length; j++) { + if (cycles[j] + "" == path + "") + return; + } + return cycles.push(path); + } + + if (!node || !node.refs || !node.refs.length || path.length>30) + return; + node.refs.forEach(function(x) { + addPath(x, path.concat()); + }); + } + addPath("start", []); + + console.error(cycles.join("\n")); +} + + +function test(fileName) { + console.log("testing highlighter"); + try { + var module = require(fileName); + var Mode = module[Object.keys(module)[0]]; + var mode = new Mode(); + mode.getTokenizer().getLineTokens("hello world"); + } catch(e) { + console.log(e); + } +} + +function guessComment(patterns) { + var comment = {}; + for (var i in patterns) { + var state = patterns[i]; + state.forEach(function(r) { + if (typeof r.token == "string") { + if (/\bcomment\b/.test(r.token)) { + comment.line = r.regex; + } + } + }); + } + + return comment; +} + +// cli stuff +var modeTemplate = fs.readFileSync(__dirname + "/templates/mode.js", "utf8"); +var modeHighlightTemplate = fs.readFileSync(__dirname + "/templates/highlight_rules.js", "utf8"); + +function fetchAndConvert(name) { + console.log("Converting " + name); + if (/^http/.test(name)) { + if (/:\/\/github.com/.test(name)) { + name = name.replace(/\/blob\//, "/").replace("github.com", "raw.github.com"); + } + return lib.download(name, function(data) { + convertTmLanguage(name, data); + }); + } + var path = /^(\/|\w:)/.test(name) ? name : process.cwd() + "/" + name; + var langStr = fs.readFileSync(path, "utf8"); + convertTmLanguage(name, langStr); +} + + +function convertTmLanguage(name, langStr) { + parseLanguage(langStr, function(language) { + var highlighterFilename = lib.snakeCase(language.name).replace(/[^\w]/g, ""); + var languageNameSanitized = lib.camelCase(language.name).replace(/[^\w]/g, ""); + + require("./add_mode")(languageNameSanitized, (language.fileTypes || []).join("|")); + + var highlighterFile = pathlib.normalize(lib.AceLib + "ace/mode/" + highlighterFilename + "_highlight_rules.js"); + var modeFile = pathlib.normalize(lib.AceLib + "ace/mode/" + highlighterFilename + ".js"); + + if (devMode) { + console.log(util.inspect(language.patterns, false, 4)); + console.log(util.inspect(language.repository, false, 4)); + } + + var patterns = extractPatterns(language); + detectLoops(patterns); + + // var uuid = language.uuid + delete language.uuid; + delete language.patterns; + delete language.repository; + + var comment = guessComment(patterns); + var languageMode = lib.fillTemplate(modeTemplate, { + language: languageNameSanitized, + languageHighlightFilename: highlighterFilename, + lineCommentStart: JSON.stringify(comment.line || "//"), + blockCommentStart: JSON.stringify(comment.start || "/*"), + blockCommentEnd: JSON.stringify(comment.end || "*/") + }); + + var languageHighlightRules = lib.fillTemplate(modeHighlightTemplate, { + language: languageNameSanitized, + languageTokens: lib.formatJS(patterns, " ").trim(), + uuid: language.uuid, + name: name, + metaData: lib.formatJS(language, "").trim() + }); + + if (devMode) { + console.log(languageMode); + console.log(languageHighlightRules); + console.log("Not writing, 'cause we're in dev mode, baby."); + } + else { + fs.writeFileSync(highlighterFile, languageHighlightRules); + fs.writeFileSync(modeFile, languageMode); + console.log("created file " + highlighterFile); + test(modeFile); + } + }); +} + +if (!module.parent) { + var args = process.argv.splice(2); + var devMode = args[0] == "--dev"; + if (devMode) + args.shift(); + if (args.length < 1) { + console.error("Usage: node tmlanguage.js [--dev] path/or/url/to/syntax.file ..."); + process.exit(1); + } + args.forEach(fetchAndConvert); +} else { + exports.fetchAndConvert = fetchAndConvert; +} diff --git a/plugins/node_modules/ace/tool/tmsnippets.js b/plugins/node_modules/ace/tool/tmsnippets.js new file mode 100644 index 00000000..febc7946 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmsnippets.js @@ -0,0 +1,82 @@ +var fs = require('fs') +var plist = require('plist') + +var snippets = []; +var path = process.argv[2] || process.cwd(); +function readSnippet(path, name) { + if (name) + path += name + console.log(name) + if (!/\.(tmSnippet|sublime-snippet|plist)$/i.test(path)) + return + console.log(name) + var plistString = fs.readFileSync(path, "utf8"); + plist.parseString(plistString, function(_, plist){ + snippets.push(plist) + }) +} + +// read +function readDir(path) { + if (fs.statSync(path).isDirectory()) { + path += "/" + fs.readdirSync(path).forEach(function(name) { + if (/snippets/i.test(name)) + readSnippetsInDir(path + name) + else + readDir(path + name) + }) + } +} +function readSnippetsInDir(path) { + if (fs.statSync(path).isDirectory()) { + path += "/" + snippets.push(path) + fs.readdirSync(path).forEach(function(name) { + readSnippet(path, name) + }) + } else { + readSnippet(path) + } +} +readDir(path) +// transform +snippets = snippets.map(function(s) { + if (s.length == 1) + s = s[0] + if (s.scope) + s.scope = s.scope.replace(/source\./g, "") + delete s.uuid + return s +}) + +// stringify +var indent = "" +var text = JSON.stringify(snippets, null, 1) + // .replace(/(\n\s*)"(\w+)"\:/g, "$1$2:") + .replace(/(\n\s*)\},\n\s*{/g, "$1}, {") + .replace(/\[\n\s*\{\n/g, "[{\n").replace(/(\n\s*)\}\n\s*\]/g, "$1}]") + .replace(/\[\n\s*[^\[\{\}\]]{0,100}\]/g, function(x){return x.replace(/\n\s*/g, " ")}) + .replace(/\:\s*\{\n\s*(.*)\n\s*\}/g, ": {$1}") + .split(/\n\s*/).map(function(x){ + if (x[0] == "}" || x[0] == "]") + indent = indent.substr(1) + + if (x.slice(-1) == "{" || x.slice(-1) == "[") { + indent += "\t" + return indent.substr(1) + x + } + return indent +x + }).join("\n") + .replace(/\\[\\tnr]/g, function(a){ + if (a[1] == "\\") + return a + else if (a[1] == "t") + return "\t" + else + return "\\n"+"\\" + "\n" + }) + +fs.writeFileSync(path += "/./ace.snippets.js", text) + +console.log(path) \ No newline at end of file diff --git a/plugins/node_modules/ace/tool/tmtheme.js b/plugins/node_modules/ace/tool/tmtheme.js new file mode 100644 index 00000000..c3b5ef16 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmtheme.js @@ -0,0 +1,430 @@ +var fs = require("fs"); +var path = require("path"); +var util = require("util"); +var cssParse = require("css-parse"); +var cssStringify = require("css-stringify"); + +var parseString = require("plist").parseString; +function parseTheme(themeXml, callback) { + parseString(themeXml, function(_, theme) { + callback(theme[0]) + }); +} + +var unsupportedScopes = { }; + +var supportedScopes = { + "keyword": "keyword", + "keyword.operator": "keyword.operator", + "keyword.other.unit": "keyword.other.unit", + + "constant": "constant", + "constant.language": "constant.language", + "constant.library": "constant.library", + "constant.numeric": "constant.numeric", + "constant.character" : "constant.character", + "constant.character.escape" : "constant.character.escape", + "constant.character.entity": "constant.character.entity", + "constant.other" : "constant.other", + + "support": "support", + "support.function": "support.function", + "support.function.dom": "support.function.dom", + "support.function.firebug": "support.firebug", + "support.function.constant": "support.function.constant", + "support.constant": "support.constant", + "support.constant.property-value": "support.constant.property-value", + "support.class": "support.class", + "support.type": "support.type", + "support.other": "support.other", + + "function": "function", + "function.buildin": "function.buildin", + + "storage": "storage", + "storage.type": "storage.type", + + "invalid": "invalid", + "invalid.illegal": "invalid.illegal", + "invalid.deprecated": "invalid.deprecated", + + "string": "string", + "string.regexp": "string.regexp", + + "comment": "comment", + "comment.documentation": "comment.doc", + "comment.documentation.tag": "comment.doc.tag", + + "variable": "variable", + "variable.language": "variable.language", + "variable.parameter": "variable.parameter", + + "meta": "meta", + "meta.tag.sgml.doctype": "xml-pe", + "meta.tag": "meta.tag", + "meta.selector": "meta.selector", + + "entity.other.attribute-name": "entity.other.attribute-name", + "entity.name.function": "entity.name.function", + "entity.name": "entity.name", + "entity.name.tag": "entity.name.tag", + + "markup.heading": "markup.heading", + "markup.heading.1": "markup.heading.1", + "markup.heading.2": "markup.heading.2", + "markup.heading.3": "markup.heading.3", + "markup.heading.4": "markup.heading.4", + "markup.heading.5": "markup.heading.5", + "markup.heading.6": "markup.heading.6", + "markup.list": "markup.list", + + "collab.user1": "collab.user1" +}; + +var fallbackScopes = { + "keyword": "meta", + "support.type": "storage.type", + "variable": "entity.name.function" +}; + +// Taken from .ace-tm +var defaultGlobals = { + "printMargin": "#e8e8e8", + "background": "#ffffff", + "foreground": "#000000", + "gutter": "#f0f0f0", + "selection": "rgb(181, 213, 255)", + "step": "rgb(198, 219, 174)", + "bracket": "rgb(192, 192, 192)", + "active_line": "rgba(0, 0, 0, 0.07)", + "cursor": "#000000", + "invisible": "rgb(191, 191, 191)", + "fold": "#6b72e6" +}; + +function extractStyles(theme) { + var globalSettings = theme.settings[0].settings; + + var colors = { + "printMargin": defaultGlobals.printMargin, + "background": parseColor(globalSettings.background) || defaultGlobals.background, + "foreground": parseColor(globalSettings.foreground) || defaultGlobals.foreground, + "gutter": defaultGlobals.gutter, + "selection": parseColor(globalSettings.selection) || defaultGlobals.selection, + "step": defaultGlobals.step, + "bracket": parseColor(globalSettings.invisibles) || defaultGlobals.bracket, + "active_line": parseColor(globalSettings.lineHighlight) || defaultGlobals.active_line, + "cursor": parseColor(globalSettings.caret) || defaultGlobals.cursor, + "invisible": "color: " + (parseColor(globalSettings.invisibles) || defaultGlobals.invisible) + ";" + }; + + for (var i=1; i.css rules, + // (because some exist, for collab1 and ace_indentation_guide + try { + var outThemeCss = fs.readFileSync(outputDirectory + "/" + name + ".css"); + var oldRules = cssParse(outThemeCss).stylesheet.rules; + var newRules = cssParse(css).stylesheet.rules; + + + for (var i = 0; i < newRules.length; i++) { + var newSelectors = newRules[i].selectors; + + for (var j = 0; j < oldRules.length; j++) { + var oldSelectors = oldRules[j].selectors; + newSelectors = newSelectors.filter(function(s) { + return oldSelectors.indexOf(s) == -1; + }) + if (!newSelectors.length) + break; + } + if (newSelectors.length) { + newRules[i].selectors = newSelectors; + console.log("Adding NEW rule: ", newRules[i]) + oldRules.splice(i, 0, newRules[i]); + } + } + + oldRules = normalizeStylesheet(oldRules); + + css = cssStringify({stylesheet: {rules: oldRules}}, { compress: false }); + } catch(e) { + console.log("Creating new file: " + name + ".css") + css = cssStringify(cssParse(css), { compress: false }); + } + + var js = fillTemplate(jsTemplate, { + name: name, + css: 'require("../requirejs/text!./' + name + '.css")', // quoteString(css), // + cssClass: "ace-" + hyphenate(name), + isDark: styles.isDark + }); + + fs.writeFileSync(outputDirectory + "/" + name + ".js", js); + fs.writeFileSync(outputDirectory + "/" + name + ".css", css); + }) +} + +if (process.argv.length > 2) { + var args = process.argv.splice(2); + if (args.length < 3) { + console.error("Usage: node tmtheme.js [theme_name, path/to/theme.tmTheme path/to/output/directory]"); + process.exit(1); + } + var name = args[0]; + var themePath = args[1]; + var outputDirectory = args[2]; + convertTheme(name, themePath, outputDirectory); +} else { + for (var name in themes) { + convertBuiltinTheme(name); + } +} + +if (Object.keys(unsupportedScopes).length > 0) { + var sortedUnsupportedScopes = {}; + for (var u in unsupportedScopes) { + var value = unsupportedScopes[u]; + if (sortedUnsupportedScopes[value] === undefined) { + sortedUnsupportedScopes[value] = []; + } + sortedUnsupportedScopes[value].push(u); + } + console.log("I found these unsupported scopes:"); + console.log(sortedUnsupportedScopes); + console.log("It's safe to ignore these, but they may affect your syntax highlighting if your mode depends on any of these rules."); + console.log("Refer to the docs on ace.ajax.org for information on how to add a scope to the CSS generator."); +} + + +/*** TODO: generate images for indent guides in node + +var indentGuideColor = "#2D2D2D" +var canvas = document.createElement("canvas") +canvas.width = 1; canvas.height = 2; +var ctx = canvas.getContext("2d") +imageData = ctx.getImageData(0,0,1,2) + +function getColor(color) { + ctx.fillStyle = color; + ctx.fillRect(0,0,1,2); + return Array.slice(ctx.getImageData(0,0,1,2).data).slice(0,4) +} +bgColor = getComputedStyle(ace.renderer.scroller).backgroundColor +var a = [].concat(getColor(bgColor), getColor(indentGuideColor)); +a.forEach(function(val,i){imageData.data[i] = val}) + +ctx.putImageData(imageData,0,0) +image = canvas.toDataURL("png") + +var rule = "."+ace.renderer.$theme +" .ace_indent-guide {\n\ + background: url(" + image +") right repeat-y;\n\ +}" +console.log(rule) +require("ace/lib/dom").importCssString(rule) + +*/ diff --git a/plugins/node_modules/ace/tool/tmthemes/Active4D.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Active4D.tmTheme new file mode 100644 index 00000000..4ffa60d9 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Active4D.tmTheme @@ -0,0 +1,407 @@ + + + + + name + Active4D + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #3B3B3B + invisibles + #BFBFBF + lineHighlight + #00000012 + selection + #BAD6FD + + + + name + Embedded source + scope + text.html source.active4d + settings + + background + #E2E9FF5E + + + + name + Plain XML text + scope + text.xml + settings + + foreground + #000000 + + + + name + Line comment + scope + comment.line + settings + + fontStyle + + foreground + #AF82D4 + + + + name + Block comment + scope + comment.block + settings + + foreground + #AF82D4 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #666666 + + + + name + Interpolated entity + scope + string.interpolated variable + settings + + fontStyle + bold + foreground + #66CCFF + + + + name + Number + scope + constant.numeric + settings + + foreground + #A8017E + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + + + name + Date/time literal + scope + constant.other.date, constant.other.time + settings + + fontStyle + bold + foreground + #66CCFF + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #A535AE + + + + name + Local variable + scope + variable.other.local + settings + + fontStyle + bold + foreground + #6392FF + + + + name + Variable + scope + variable + settings + + fontStyle + bold + foreground + #0053FF + + + + name + Table/field + scope + variable.other.table-field + settings + + foreground + #6988AE + + + + name + Keyword + scope + keyword + settings + + fontStyle + bold + foreground + #006699 + + + + name + Operator + scope + keyword.operator + settings + + + + name + Storage + scope + storage + settings + + foreground + #FF5600 + + + + name + Type name + scope + entity.name.type + settings + + foreground + #21439C + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + + + name + Function name + scope + entity.name.function + settings + + foreground + #21439C + + + + name + Function argument + scope + variable.parameter + settings + + + + name + Tag container + scope + meta.tag + settings + + foreground + #7A7A7A + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #016CFF + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + foreground + #963DFF + + + + name + Command/method + scope + support.function + settings + + fontStyle + bold + foreground + #45AE34 + + + + name + Named constant + scope + support.constant + settings + + foreground + #B7734C + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #A535AE + + + + name + Library variable + scope + support.variable + settings + + foreground + #A535AE + + + + name + Invalid + scope + invalid + settings + + background + #990000 + foreground + #FFFFFF + + + + name + diff header + scope + meta.diff + settings + + background + #656565 + foreground + #FFFFFF + + + + name + diff line range + scope + meta.diff.range + settings + + background + #1B63FF + foreground + #FFFFFF + + + + name + diff deleted line + scope + markup.deleted.diff + settings + + background + #FF7880 + foreground + #000000 + + + + name + diff inserted line + scope + markup.inserted.diff + settings + + background + #98FF9A + foreground + #000000 + + + + name + diff unchanged line + scope + source.diff + settings + + foreground + #5E5E5E + + + + uuid + 7D2863D0-473C-47A0-B03B-92880559EBA9 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/All Hallows Eve.tmTheme b/plugins/node_modules/ace/tool/tmthemes/All Hallows Eve.tmTheme new file mode 100644 index 00000000..47a67978 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/All Hallows Eve.tmTheme @@ -0,0 +1,277 @@ + + + + + author + David Heinemeier Hansson + name + All Hallow's Eve + settings + + + settings + + background + #000000 + caret + #FFFFFF + foreground + #FFFFFF + invisibles + #404040 + lineHighlight + #333300 + selection + #73597EE0 + + + + name + Text base + scope + text + settings + + background + #434242 + foreground + #FFFFFF + + + + name + Source base + scope + source + settings + + background + #000000 + foreground + #FFFFFF + + + + name + Comment + scope + comment + settings + + foreground + #9933CC + + + + name + Constant + scope + constant + settings + + foreground + #3387CC + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #CC7833 + + + + name + Pre-processor Line + scope + meta.preprocessor.c + settings + + fontStyle + + foreground + #D0D0FF + + + + name + Pre-processor Directive + scope + keyword.control.import + settings + + fontStyle + + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + + + + name + Function argument + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Block comment + scope + source comment.block + settings + + background + #9B9B9B + foreground + #FFFFFF + + + + name + String + scope + string + settings + + foreground + #66CC33 + + + + name + String escapes + scope + string constant.character.escape + settings + + foreground + #AAAAAA + + + + name + String (executed) + scope + string.interpolated + settings + + background + #CCCC33 + foreground + #000000 + + + + name + Regular expression + scope + string.regexp + settings + + foreground + #CCCC33 + + + + name + String (literal) + scope + string.literal + settings + + foreground + #CCCC33 + + + + name + String escapes (executed) + scope + string.interpolated constant.character.escape + settings + + foreground + #555555 + + + + name + Type name + scope + entity.name.type + settings + + fontStyle + underline + + + + name + Class inheritance + scope + entity.other.inherited-class + settings + + fontStyle + italic underline + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + underline + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + + + + name + Support function + scope + support.function + settings + + fontStyle + + foreground + #C83730 + + + + uuid + 37F22BDC-B2F4-11D9-850C-000A95A89C98 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Amy.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Amy.tmTheme new file mode 100644 index 00000000..b3258c46 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Amy.tmTheme @@ -0,0 +1,557 @@ + + + + + name + Amy + author + William D. Neumann + settings + + + settings + + background + #200020 + caret + #7070FF + foreground + #D0D0FF + invisibles + #BFBFBF + lineHighlight + #80000040 + selection + #80000080 + + + + name + Comment + scope + comment.block + settings + + background + #200020 + fontStyle + italic + foreground + #404080 + + + + name + String + scope + string + settings + + foreground + #999999 + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #707090 + + + + name + Integer + scope + constant.numeric + settings + + foreground + #7090B0 + + + + name + Int32 constant + scope + constant.numeric.integer.int32 + settings + + fontStyle + bold + + + + name + Int64 constant + scope + constant.numeric.integer.int64 + settings + + fontStyle + italic + + + + name + Nativeint constant + scope + constant.numeric.integer.nativeint + settings + + fontStyle + bold italic + + + + name + Floating-point constant + scope + constant.numeric.floating-point.ocaml + settings + + fontStyle + underline + + + + name + Character constant + scope + constant.character + settings + + fontStyle + + foreground + #666666 + + + + name + Boolean constant + scope + constant.language.boolean + settings + + foreground + #8080A0 + + + + name + Built-in constant + scope + constant.language + settings + + + + name + User-defined constant + scope + constant.other + settings + + + + name + Variable + scope + variable.language, variable.other + settings + + fontStyle + + foreground + #008080 + + + + name + Keyword + scope + keyword + settings + + foreground + #A080FF + + + + name + Keyword operator + scope + keyword.operator + settings + + foreground + #A0A0FF + + + + name + Keyword decorator + scope + keyword.other.decorator + settings + + foreground + #D0D0FF + + + + name + Floating-point infix operator + scope + keyword.operator.infix.floating-point.ocaml + settings + + fontStyle + underline + + + + name + Floating-point prefix operator + scope + keyword.operator.prefix.floating-point.ocaml + settings + + fontStyle + underline + + + + name + Compiler directives + scope + keyword.other.directive + settings + + fontStyle + + foreground + #C080C0 + + + + name + Line-number directives + scope + keyword.other.directive.line-number + settings + + fontStyle + underline + foreground + #C080C0 + + + + name + Control keyword + scope + keyword.control + settings + + foreground + #80A0FF + + + + name + Storage + scope + storage + settings + + foreground + #B0FFF0 + + + + name + Variants + scope + entity.name.type.variant + settings + + foreground + #60B0FF + + + + name + Polymorphic variants + scope + storage.type.variant.polymorphic, entity.name.type.variant.polymorphic + settings + + fontStyle + italic + foreground + #60B0FF + + + + name + Module definitions + scope + entity.name.type.module + settings + + foreground + #B000B0 + + + + name + Module type definitions + scope + entity.name.type.module-type.ocaml + settings + + fontStyle + underline + foreground + #B000B0 + + + + name + Support modules + scope + support.other + settings + + foreground + #A00050 + + + + name + Class name + scope + entity.name.type.class + settings + + foreground + #70E080 + + + + name + Class type + scope + entity.name.type.class-type + settings + + fontStyle + + foreground + #70E0A0 + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + + + name + Function name + scope + entity.name.function + settings + + foreground + #50A0A0 + + + + name + Function argument + scope + variable.parameter + settings + + foreground + #80B0B0 + + + + name + Token definition (ocamlyacc) + scope + entity.name.type.token + settings + + fontStyle + + foreground + #3080A0 + + + + name + Token reference (ocamlyacc) + scope + entity.name.type.token.reference + settings + + fontStyle + + foreground + #3CB0D0 + + + + name + Non-terminal definition (ocamlyacc) + scope + entity.name.function.non-terminal + settings + + foreground + #90E0E0 + + + + name + Non-terminal reference (ocamlyacc) + scope + entity.name.function.non-terminal.reference + settings + + foreground + #C0F0F0 + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #009090 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + + + name + Library function + settings + + background + #200020 + + + + name + Library constant + scope + support.constant + settings + + background + #200020 + + + + name + Library class/type + scope + support.type, support.class + settings + + + + name + Library variable + scope + support.other.variable + settings + + + + name + Invalid - illegal + scope + invalid.illegal + settings + + background + #FFFF00 + fontStyle + bold + foreground + #400080 + + + + name + Invalid - depricated + scope + invalid.deprecated + settings + + background + #CC66FF + foreground + #200020 + + + + name + Camlp4 code + scope + source.camlp4.embedded + settings + + background + #40008054 + + + + name + Camlp4 temp (parser) + scope + source.camlp4.embedded.parser.ocaml + settings + + fontStyle + + + + + name + Punctuation + scope + punctuation + settings + + foreground + #805080 + + + + uuid + 3C01FADD-7592-49DD-B7A5-1B82CA4E57B5 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Blackboard.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Blackboard.tmTheme new file mode 100644 index 00000000..18bb72e3 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Blackboard.tmTheme @@ -0,0 +1,350 @@ + + + + + name + Blackboard + author + Domenico Carbotta + settings + + + settings + + background + #0C1021 + caret + #FFFFFFA6 + foreground + #F8F8F8 + invisibles + #FFFFFF40 + lineHighlight + #FFFFFF0F + selection + #253B76 + + + + name + Comment + scope + comment + settings + + fontStyle + + foreground + #AEAEAE + + + + name + Constant + scope + constant + settings + + fontStyle + + foreground + #D8FA3C + + + + name + Entity + scope + entity + settings + + fontStyle + + foreground + #FF6400 + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #FBDE2D + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #FBDE2D + + + + name + String + scope + string, meta.verbatim + settings + + fontStyle + + foreground + #61CE3C + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #8DA6CE + + + + name + Variable + scope + variable + settings + + fontStyle + + + + + name + Invalid – Deprecated + scope + invalid.deprecated + settings + + fontStyle + italic + foreground + #AB2A1D + + + + name + Invalid – Illegal + scope + invalid.illegal + settings + + background + #9D1E15 + foreground + #F8F8F8 + + + + name + Superclass + scope + entity.other.inherited-class + settings + + fontStyle + italic + foreground + #FF6400 + + + + name + String interpolation + scope + string constant.other.placeholder + settings + + fontStyle + + foreground + #FF6400 + + + + name + meta.function-call.py + scope + meta.function-call.py + settings + + fontStyle + + foreground + #BECDE6 + + + + name + meta.tag + scope + meta.tag, meta.tag entity + settings + + foreground + #7F90AA + + + + name + entity.name.section + scope + entity.name.section + settings + + fontStyle + + foreground + #FFFFFF + + + + name + OCaml variant + scope + keyword.type.variant + settings + + foreground + #D5E0F3 + + + + name + OCaml operator + scope + source.ocaml keyword.operator.symbol + settings + + foreground + #F8F8F8 + + + + name + OCaml infix operator + scope + source.ocaml keyword.operator.symbol.infix + settings + + fontStyle + + foreground + #8DA6CE + + + + name + OCaml prefix operator + scope + source.ocaml keyword.operator.symbol.prefix + settings + + fontStyle + + foreground + #8DA6CE + + + + name + OCaml f-p infix operator + scope + source.ocaml keyword.operator.symbol.infix.floating-point + settings + + fontStyle + underline + + + + name + OCaml f-p prefix operator + scope + source.ocaml keyword.operator.symbol.prefix.floating-point + settings + + fontStyle + underline + + + + name + OCaml f-p constant + scope + source.ocaml constant.numeric.floating-point + settings + + fontStyle + underline + + + + name + LaTeX environment + scope + text.tex.latex meta.function.environment + settings + + background + #FFFFFF08 + + + + name + LaTeX environment (nested) + scope + text.tex.latex meta.function.environment meta.function.environment + settings + + background + #7A96FA08 + + + + name + Latex support + scope + text.tex.latex support.function + settings + + fontStyle + + foreground + #FBDE2D + + + + name + PList unquoted string + scope + source.plist string.unquoted, source.plist keyword.operator + settings + + foreground + #FFFFFF + + + + uuid + A2C6BAA7-90D0-4147-BBF5-96B0CD92D109 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Brilliance Black.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Brilliance Black.tmTheme new file mode 100644 index 00000000..560c825b --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Brilliance Black.tmTheme @@ -0,0 +1,2619 @@ + + + + + author + Thomas Aylott + comment + Thomas Aylott ㊷ subtleGradient.com + name + Brilliance Black + settings + + + settings + + background + #0D0D0DFA + caret + #3333FF + foreground + #EEEEEE + invisibles + #CCCCCC1A + lineHighlight + #00008033 + selection + #0010B499 + + + + name + Thomas Aylott ㊷ + scope + meta.thomas_aylott + settings + + background + #FFFFFF + fontStyle + bold + foreground + #000000 + + + + name + subtleGradient.com + scope + meta.subtlegradient + settings + + background + #FFFFFF + fontStyle + underline + foreground + #555555 + + + + name + ~ String + scope + string -meta.tag -meta.doctype -string.regexp -string.literal -string.interpolated -string.quoted.literal -string.unquoted, variable.parameter.misc.css, text string source string, string.unquoted string, string.regexp string, string.interpolated string, meta.tag source string + settings + + background + #803D0033 + foreground + #FFFC80 + + + + name + ~ String Punctuation + scope + punctuation.definition.string -meta.tag + settings + + foreground + #803D00 + + + + name + ~ String Punctuation II + scope + string.regexp punctuation.definition.string, string.quoted.literal punctuation.definition.string, string.quoted.double.ruby.mod punctuation.definition.string + settings + + foreground + #FFF80033 + + + + name + ~ String Literal + scope + string.quoted.literal, string.quoted.double.ruby.mod + settings + + background + #43800033 + foreground + #FFF800 + + + + name + ~ String Unquoted + scope + string.unquoted -string.unquoted.embedded, string.quoted.double.multiline, meta.scope.heredoc + settings + + foreground + #FFBC80 + + + + name + ~ String Interpolated + scope + string.interpolated + settings + + background + #1A1A1A + foreground + #FFFC80 + + + + name + ~ String RegEx + scope + string.regexp + settings + + background + #43800033 + foreground + #FFF800 + + + + name + ~ String RegEx Group 1 + scope + string.regexp.group + settings + + background + #43800033 + + + + name + ~ String RegEx Group 2 + scope + string.regexp.group string.regexp.group + settings + + background + #43800033 + foreground + #FFFFFF66 + + + + name + ~ String RegEx Group 3 + scope + string.regexp.group string.regexp.group string.regexp.group + settings + + background + #43800033 + foreground + #FFFFFF66 + + + + name + ~ String RegEx Group 4 + scope + string.regexp.group string.regexp.group string.regexp.group string.regexp.group + settings + + background + #43800033 + foreground + #FFFFFF66 + + + + name + ~ String RegEx Character-Class + scope + string.regexp.character-class + settings + + background + #43800033 + foreground + #86FF00 + + + + name + ~ String RegEx Arbitrary-Repitition + scope + string.regexp.arbitrary-repitition + settings + + background + #43800033 + foreground + #00FFF8 + + + + name + ~ String RegEx Definition Keyword + scope + string.regexp punctuation.definition.string keyword.other + settings + + fontStyle + + foreground + #803D00 + + + + name + ~ Meta Group Assertion Regexp + scope + meta.group.assertion.regexp + settings + + background + #0086FF33 + + + + name + ~ Meta Assertion + scope + meta.assertion, meta.group.assertion keyword.control.group.regexp, meta.group.assertion punctuation.definition.group + settings + + foreground + #0086FF + + + + name + ~ Number + scope + constant.numeric + settings + + foreground + #C6FF00 + + + + name + ~ Character constant + scope + constant.character + settings + + foreground + #86FF00 + + + + name + ~ Built-in constant + scope + constant.language, keyword.other.unit, constant.other.java, constant.other.unit + settings + + foreground + #07FF00 + + + + name + ~ Built-in constant+ + scope + constant.language.pseudo-variable + settings + + background + #04800033 + foreground + #07FF00 + + + + name + ~ User-defined constant + scope + constant.other, constant.block + settings + + foreground + #00FF79 + + + + name + ~ Library constant + scope + support.constant, constant.name + settings + + foreground + #00FFF8 + + + + name + ————————————————— + settings + + + + name + √ pre-defined variable + scope + variable.other.readwrite.global.pre-defined, variable.language + settings + + background + #00807C33 + foreground + #00FF79 + + + + name + √ Constant Variable + scope + variable.other.constant + settings + + foreground + #00FFF8 + + + + name + √ Library variable + scope + support.variable + settings + + background + #00807C33 + foreground + #00FFF8 + + + + name + √ global Variable + scope + variable.other.readwrite.global + settings + + background + #00438033 + foreground + #00807C + + + + name + √ Variable + scope + variable.other, variable.js, punctuation.separator.variable + settings + + foreground + #31A6FF + + + + name + √ class Variable + scope + variable.other.readwrite.class + settings + + background + #0008FF33 + foreground + #0086FF + + + + name + √ instance Variable + scope + variable.other.readwrite.instance + settings + + foreground + #406180 + + + + name + √ Normal Variables + scope + variable.other.php, variable.other.normal + settings + + foreground + #406180 + + + + name + √ Variable Punctuation + scope + punctuation.definition, punctuation.separator.variable + settings + + foreground + #00000080 + + + + name + ————————————————— + settings + + + + name + ¢ Storage + scope + storage -storage.modifier + settings + + foreground + #7E0080 + + + + name + ¢ Entity Name Preprocessor + scope + other.preprocessor, entity.name.preprocessor + settings + + background + #803D0033 + + + + name + ~ variable.language.this.js.prototype + scope + variable.language.this.js + settings + + foreground + #666666 + + + + name + ¢ Storage Modifier + scope + storage.modifier + settings + + foreground + #803D00 + + + + name + ¢ Class name + scope + entity.name.class, entity.name.type.class, entity.name.type.module + settings + + foreground + #FF0000 + + + + name + ¢ Class + scope + meta.class -meta.class.instance, declaration.class, meta.definition.class, declaration.module + settings + + background + #FF000033 + foreground + #870000 + + + + name + ¢ Library class/type + scope + support.type, support.class + settings + + background + #87000033 + foreground + #FF0000 + + + + name + ¢ Instance + scope + entity.name.instance, entity.name.type.instance + settings + + foreground + #FF3D44 + + + + name + ¢ Instance.constructor + scope + meta.class.instance.constructor + settings + + background + #831E5133 + + + + name + ¢ Inherited class + scope + entity.other.inherited-class, entity.name.module + settings + + background + #80000433 + foreground + #FF0086 + + + + name + ¢ Class Method + scope + meta.definition.method + settings + + foreground + #FF0086 + + + + name + ¢ Function Declaration + scope + meta.function, meta.property.function, declaration.function + settings + + + + name + ¢ Function Declaration Name + scope + entity.name.function, entity.name.preprocessor + settings + + foreground + #FF0086 + + + + name + ¢ Function Declaration Parameters + scope + variable.parameter.function + settings + + foreground + #9799FF + + + + name + ¢ Function Declaration Parameters + scope + variable.parameter -variable.parameter.misc.css, meta.definition.method meta.definition.param-list, meta.function.method.with-arguments variable.parameter.function + settings + + foreground + #9799FF + + + + name + ¢ Function Declaration Parameters Punctuation + scope + punctuation.definition.parameters, variable.parameter.function punctuation.separator.object + settings + + foreground + #800004 + + + + name + â„¢ Function Call + scope + keyword.other.special-method, meta.function-call entity.name.function -(meta.function-call meta.function), support.function - variable + settings + + foreground + #782EC1 + + + + name + â„¢ Library Function Call + scope + meta.function-call support.function - variable + settings + + fontStyle + + foreground + #9D3EFF + + + + name + â„¢ Library Function Name + scope + support.function + settings + + background + #603F8033 + foreground + #603F80 + + + + name + â„¢ Function Call Arguments Punctuation + scope + punctuation.section.function, meta.brace.curly.function, meta.function-call punctuation.section.scope.ruby, meta.function-call punctuation.separator.object + settings + + fontStyle + + foreground + #BC80FF + + + + name + â„¢ Function Punctuation + scope + meta.group.braces.round punctuation.section.scope, +meta.group.braces.round meta.delimiter.object.comma, +meta.group.braces.curly.function meta.delimiter.object.comma, +meta.brace.round + settings + + fontStyle + bold + foreground + #BC80FF + + + + name + â„¢ Function Call Without Arguments + scope + meta.function-call.method.without-arguments, meta.function-call.method.without-arguments entity.name.function + settings + + foreground + #A88FC0 + + + + name + ————————————————— + settings + + + + name + â„¢ Keyword Control + scope + keyword.control + settings + + foreground + #F800FF + + + + name + â„¢ Keyword + scope + keyword + settings + + + + name + â„¢ Keyword other + scope + keyword.other + settings + + foreground + #7900FF + + + + name + â„¢ Regex Keyword + scope + source.regexp keyword.operator + settings + + + + name + â„¢ Keyword Operator + scope + keyword.operator, declaration.function.operator, meta.preprocessor.c.include, punctuation.separator.operator + settings + + foreground + #0000CE + + + + name + â„¢ Keyword Operator Assignment + scope + keyword.operator.assignment + settings + + background + #00009A33 + foreground + #0000CE + + + + name + â„¢ Keyword Operator Arithmetic + scope + keyword.operator.arithmetic + settings + + foreground + #2136CE + + + + name + â„¢ Keyword Operator Logical + scope + keyword.operator.logical + settings + + background + #00009A33 + foreground + #3759FF + + + + name + â„¢ Keyword Operator Comparison + scope + keyword.operator.comparison + settings + + foreground + #7C88FF + + + + name + meta.class.instance.constructor keyword.operator.new + scope + meta.class.instance.constructor keyword.operator.new + settings + + foreground + #800043 + + + + name + ————————————————— + settings + + + + name + ✘ HTML + settings + + + + name + ✘ Tag Doctype + scope + meta.doctype, meta.tag.sgml-declaration.doctype, meta.tag.sgml.doctype + settings + + background + #333333 + foreground + #CCCCCC + + + + name + ✘ Tag + scope + meta.tag + settings + + foreground + #333333 + + + + name + ✘ Tag Structure + scope + meta.tag.structure, meta.tag.segment + settings + + background + #333333BF + foreground + #666666 + + + + name + ✘ Tag Block + scope + meta.tag.block, meta.tag.xml, meta.tag.key + settings + + background + #4C4C4C33 + foreground + #4C4C4C + + + + name + ✘ Tag Inline + scope + meta.tag.inline + settings + + background + #803D0033 + foreground + #FF7900 + + + + name + meta.tag.inline source + scope + meta.tag.inline source + settings + + background + #803D0033 + + + + name + ✘ Tag Other + scope + meta.tag.other, entity.name.tag.style, entity.name.tag.script, meta.tag.block.script, source.js.embedded punctuation.definition.tag.html, source.css.embedded punctuation.definition.tag.html + settings + + background + #80000433 + foreground + #FF0007 + + + + name + ✘ Tag Form + scope + meta.tag.form, meta.tag.block.form + settings + + background + #00438033 + foreground + #0086FF + + + + name + ✘ Tag Meta + scope + meta.tag.meta + settings + + background + #3C008033 + foreground + #F800FF + + + + name + ✘ Tag Block Head + scope + meta.section.html.head + settings + + background + #121212 + + + + name + ✘ Tag Block Form + scope + meta.section.html.form + settings + + background + #0043801A + + + + name + ✘ XML Tag + scope + meta.tag.xml + settings + + foreground + #666666 + + + + name + ✘ Tag name + scope + entity.name.tag + settings + + foreground + #FFFFFF4D + + + + name + ✘ Tag attribute + scope + entity.other.attribute-name, meta.tag punctuation.definition.string + settings + + foreground + #FFFFFF33 + + + + name + ✘ Tag value + scope + meta.tag string -source -punctuation, text source text meta.tag string -punctuation + settings + + foreground + #FFFFFF66 + + + + name + ————————————————— + settings + + + + name + text meta.paragraph + scope + text meta.paragraph + settings + + foreground + #999999 + + + + name + M markup + scope + markup markup -(markup meta.paragraph.list) + settings + + background + #33333333 + foreground + #FFF800 + + + + name + M HR + scope + markup.hr + settings + + background + #FFFFFF + foreground + #000000 + + + + name + M heading + scope + markup.heading + settings + + fontStyle + + foreground + #FFFFFF + + + + name + M bold + scope + markup.bold + settings + + fontStyle + bold + foreground + #95D4FF80 + + + + name + M italic + scope + markup.italic + settings + + fontStyle + italic + + + + name + M strike + settings + + + + name + M add + settings + + + + name + M del + settings + + + + name + M underline + scope + markup.underline + settings + + fontStyle + underline + + + + name + M reference + scope + meta.reference, markup.underline.link + settings + + fontStyle + + foreground + #0086FF + + + + name + M reference name + scope + entity.name.reference + settings + + background + #00438033 + foreground + #00FFF8 + + + + name + M underline link + scope + meta.reference.list markup.underline.link, text.html.textile markup.underline.link + settings + + fontStyle + underline + foreground + #00FFF8 + + + + name + M raw block + scope + markup.raw.block + settings + + background + #80808040 + + + + name + M quote block + scope + markup.quote + settings + + background + #FFFFFF1A + + + + name + M list + scope + markup.list meta.paragraph + settings + + fontStyle + + foreground + #FFFFFF + + + + name + ————————————————— + settings + + + + name + Markdown + scope + text.html.markdown + settings + + background + #FFFFFF + foreground + #000000 + + + + name + text.html.markdown meta.paragraph + scope + text.html.markdown meta.paragraph + settings + + foreground + #000000 + + + + name + text.html.markdown markup.list meta.paragraph + scope + text.html.markdown markup.list meta.paragraph + settings + + foreground + #555555 + + + + name + text.html.markdown markup.heading + scope + text.html.markdown markup.heading + settings + + fontStyle + bold + foreground + #000000 + + + + name + text.html.markdown string + scope + text.html.markdown string + settings + + foreground + #8A5420 + + + + name + ————————————————— + settings + + + + name + § CSS + scope + source.css + settings + + + + name + § Selector + scope + meta.selector + settings + + foreground + #666666 + + + + name + Property Value Parens + scope + source.css meta.scope.property-list meta.property-value punctuation.definition.arguments, +source.css meta.scope.property-list meta.property-value punctuation.separator.arguments + settings + + fontStyle + + foreground + #006680 + + + + name + § Pseudo-Element + scope + entity.other.attribute-name.pseudo-element + settings + + foreground + #4F00FF + + + + name + § Pseudo-Class + scope + entity.other.attribute-name.pseudo-class, entity.other.attribute-name.tag.pseudo-class + settings + + foreground + #7900FF + + + + name + § Class + scope + meta.selector entity.other.attribute-name.class + settings + + foreground + #F800FF + + + + name + § ID + scope + meta.selector entity.other.attribute-name.id + settings + + foreground + #FF0086 + + + + name + § Tag + scope + meta.selector entity.name.tag + settings + + fontStyle + + foreground + #FF0007 + + + + name + § Tag Wildcard + scope + entity.name.tag.wildcard, entity.other.attribute-name.universal + settings + + fontStyle + bold + foreground + #FF7900 + + + + name + § Attribute + scope + source.css entity.other.attribute-name.attribute + settings + + foreground + #C25A00 + + + + name + § Attribute-Match + scope + source.css meta.attribute-selector keyword.operator.comparison + settings + + foreground + #673000 + + + + name + § meta.scope.property-list + scope + meta.scope.property-list + settings + + fontStyle + bold + foreground + #333333 + + + + name + § meta.property-name + scope + meta.property-name + settings + + fontStyle + + foreground + #999999 + + + + name + § support.type.property-name + scope + support.type.property-name + settings + + background + #0D0D0D + fontStyle + + foreground + #FFFFFF + + + + name + § meta.property-value + scope + meta.property-value + settings + + background + #19191980 + fontStyle + + foreground + #999999 + + + + name + ————————————————— + settings + + + + name + LaTeX + scope + text.latex + settings + + + + name + L Markup Raw + scope + text.latex markup.raw + settings + + background + #000000 + + + + name + L support.function + scope + text.latex support.function -support.function.textit -support.function.emph + settings + + foreground + #BC80FF + + + + name + L support.function.section + scope + text.latex support.function.section + settings + + foreground + #FFFFFFBF + + + + name + L entity.name.section + scope + text.latex entity.name.section -meta.group -keyword.operator.braces + settings + + background + #FFFFFF + fontStyle + + foreground + #000000 + + + + name + L constant.language.general + scope + text.latex constant.language.general + settings + + + + name + L keyword.operator.delimiter + scope + text.latex keyword.operator.delimiter + settings + + background + #00000080 + + + + name + L keyword.operator.brackets + scope + text.latex keyword.operator.brackets + settings + + foreground + #999999 + + + + name + L keyword.operator.braces + scope + text.latex keyword.operator.braces + settings + + fontStyle + + foreground + #666666 + + + + name + L meta.footnote + scope + meta.footnote + settings + + background + #00008033 + foreground + #0008FF4D + + + + name + L meta.label.reference + scope + text.latex meta.label.reference + settings + + background + #FFFFFF0D + fontStyle + + + + + name + L keyword.control.ref + scope + text.latex keyword.control.ref + settings + + background + #260001 + foreground + #FF0007 + + + + name + L variable.parameter.label.reference + scope + text.latex variable.parameter.label.reference + settings + + background + #400002 + foreground + #FFBC80 + + + + name + L keyword.control.cite + scope + text.latex keyword.control.cite + settings + + background + #260014 + foreground + #FF0086 + + + + name + L variable.parameter.cite + scope + variable.parameter.cite + settings + + background + #400022 + foreground + #FFBFE1 + + + + name + L variable.parameter.label + scope + text.latex variable.parameter.label + settings + + foreground + #FFFFFF80 + + + + name + L markup + scope + meta.function markup + settings + + foreground + #CDCDCD + + + + name + L meta.group.braces + scope + text.latex meta.group.braces + settings + + foreground + #33333333 + + + + name + L meta.environment.list + scope + text.latex meta.environment.list + settings + + background + #00000080 + fontStyle + + foreground + #33333333 + + + + name + L meta.environment.list 2 + scope + text.latex meta.environment.list meta.environment.list + settings + + background + #00000080 + foreground + #33333333 + + + + name + L meta.environment.list 3 + scope + text.latex meta.environment.list meta.environment.list meta.environment.list + settings + + background + #000000 + foreground + #33333333 + + + + name + L meta.environment.list 4 + scope + text.latex meta.environment.list meta.environment.list meta.environment.list meta.environment.list + settings + + foreground + #33333333 + + + + name + L meta.environment.list 5 + scope + text.latex meta.environment.list meta.environment.list meta.environment.list meta.environment.list meta.environment.list + settings + + foreground + #33333333 + + + + name + L meta.environment.list 6 + scope + text.latex meta.environment.list meta.environment.list meta.environment.list meta.environment.list meta.environment.list meta.environment.list + settings + + foreground + #33333333 + + + + name + L meta.end-document + scope + text.latex meta.end-document, text.latex meta.begin-document, meta.end-document.latex support.function, meta.end-document.latex variable.parameter, meta.begin-document.latex support.function, meta.begin-document.latex variable.parameter + settings + + background + #CCCCCC + foreground + #000000 + + + + name + ————————————————— + settings + + + + name + meta.brace.erb.return-value + scope + meta.brace.erb.return-value + settings + + background + #00805533 + foreground + #00FFAA + + + + name + source.ruby.rails.embedded.return-value.one-line + scope + source.ruby.rails.embedded.return-value.one-line + settings + + background + #8080801A + + + + name + meta.brace.erb + scope + punctuation.section.embedded -(source string source punctuation.section.embedded), meta.brace.erb.html + settings + + background + #00FFF81A + foreground + #00FFF8 + + + + name + source.ruby.rails.embedded.one-line + scope + source.ruby.rails.embedded.one-line + settings + + background + #00FFF81A + + + + name + String Embedded Source + scope + source string source punctuation.section.embedded + settings + + foreground + #406180 + + + + name + source.js.embedded + scope + source.js.embedded + settings + + background + #0D0D0D + + + + name + â—Š Source + scope + source + settings + + fontStyle + + + + + name + â—Š meta.brace.erb + scope + meta.brace.erb + settings + + background + #000000 + + + + name + â—Š Source String Source + scope + source string source + settings + + background + #33333380 + foreground + #FFFFFF + + + + name + â—Š Source String Interpolated Source + scope + source string.interpolated source + settings + + background + #00000099 + foreground + #999999 + + + + name + â—Š Source Embeded Source + scope + source source, source.java.embedded + settings + + background + #3333331A + + + + name + â—Š Text + scope + text -text.xml.strict + settings + + foreground + #FFFFFF + + + + name + â—Š Text Source + scope + text source, meta.scope.django.template + settings + + background + #000000 + foreground + #CCCCCC + + + + name + â—Š Text Source Text String + settings + + + + name + â—Š Text String Source + scope + text string source + settings + + foreground + #999999 + + + + name + â—Š Text Source String Source + settings + + + + name + â—Š Text String Source String Source + scope + text string source string source + settings + + + + name + ————————————————— + settings + + + + name + Invalid + scope + invalid -invalid.SOMETHING + settings + + background + #FF0007 + fontStyle + bold + foreground + #330004 + + + + name + Invalid Value + scope + invalid.SOMETHING + settings + + fontStyle + underline + foreground + #FF3600 + + + + name + Syntax + scope + meta.syntax + settings + + foreground + #333333 + + + + name + comment + scope + comment -comment.line + settings + + background + #33333333 + foreground + #4C4C4C + + + + name + comment.line + scope + comment.line + settings + + fontStyle + italic + foreground + #4C4C4C + + + + name + Comment Punctuation + scope + comment punctuation + settings + + + + name + ✘ HTML Comment + scope + text comment.block -source + settings + + fontStyle + italic + + + + name + ————————————————— + settings + + + + name + D Diff Add + scope + markup.inserted + settings + + background + #00401E + foreground + #40FF9A + + + + name + D Diff Delete + scope + markup.deleted + settings + + background + #400022 + foreground + #FF40A3 + + + + name + D Diff Changed + scope + markup.changed + settings + + background + #803D00 + foreground + #FFFF55 + + + + name + text.subversion-commit meta.scope.changed-files + scope + text.subversion-commit meta.scope.changed-files, text.subversion-commit meta.scope.changed-files.svn meta.diff.separator + settings + + background + #000000 + foreground + #FFFFFF + + + + name + text.subversion-commit + scope + text.subversion-commit + settings + + background + #FFFFFF + foreground + #000000 + + + + name + ————————————————— + settings + + + + name + meta.delimiter + scope + punctuation.terminator, meta.delimiter, punctuation.separator.method + settings + + background + #FFFFFF03 + fontStyle + bold + foreground + #7F7F7F + + + + name + meta.delimiter.statement.js + scope + punctuation.terminator.statement, meta.delimiter.statement.js + settings + + background + #00000080 + + + + name + meta.delimiter.object.js + scope + meta.delimiter.object.js + settings + + background + #00000040 + + + + name + Bold String Quotes + scope + string.quoted.single.brace, string.quoted.double.brace + settings + + fontStyle + bold + foreground + #803D00 + + + + name + ————————————————— + settings + + + + name + ß Blog Post / Email Message + scope + text.blog, text.mail + settings + + background + #DCDCDC + foreground + #333333 + + + + name + ß Post Content + scope + text.blog text, text.mail text + settings + + background + #000000 + foreground + #CCCCCC + + + + name + ß Post Header Keys + scope + meta.header.blog keyword.other, meta.header.mail keyword.other + settings + + background + #00FFF81A + fontStyle + + foreground + #06403E + + + + name + ß Post Header Values + scope + meta.header.blog string.unquoted.blog, meta.header.mail string.unquoted + settings + + background + #FFFF551A + foreground + #803D00 + + + + name + ————————————————— + settings + + + + name + OCAML + settings + + + + name + entity.name.type.module + scope + source.ocaml entity.name.type.module + settings + + foreground + #FF0000 + + + + name + support.other.module + scope + source.ocaml support.other.module + settings + + background + #83000033 + foreground + #FF0000 + + + + name + entity.name.type.variant + scope + entity.name.type.variant + settings + + foreground + #00FFF8 + + + + name + entity.name.tag, meta.record.definition + scope + source.ocaml entity.name.tag, source.ocaml meta.record.definition + settings + + foreground + #00FF79 + + + + name + ———————— PUNCTUATION ———————— + settings + + + + name + punctuation.separator.parameters + scope + punctuation.separator.parameters + settings + + fontStyle + bold + foreground + #FFFFFF + + + + name + meta.brace.pipe + scope + meta.brace.pipe + settings + + background + #33333333 + fontStyle + + foreground + #4C4C4C + + + + name + Misc Punctuation + scope + meta.brace.erb, source.ruby.embedded.source.brace, punctuation.section.dictionary, punctuation.terminator.dictionary, punctuation.separator.object, punctuation.separator.statement, punctuation.separator.key-value.css + settings + + fontStyle + bold + foreground + #666666 + + + + name + Curly Punctuation + scope + punctuation.section.scope.curly, punctuation.section.scope + settings + + fontStyle + bold + foreground + #999999 + + + + name + Object Punctuation + scope + punctuation.separator.objects, +meta.group.braces.curly meta.delimiter.object.comma, +punctuation.separator.key-value -meta.tag, +source.ocaml punctuation.separator.match-definition + + settings + + fontStyle + bold + foreground + #0C823B + + + + name + Function Punctuation + scope + punctuation.separator.parameters.function.js,punctuation.definition.function, punctuation.separator.function-return, punctuation.separator.function-definition, punctuation.definition.arguments, punctuation.separator.arguments + settings + + foreground + #800043 + + + + name + Array Punctuation + scope + meta.group.braces.square punctuation.section.scope, meta.group.braces.square meta.delimiter.object.comma, meta.brace.square, punctuation.separator.array, punctuation.section.array, punctuation.definition.array, punctuation.definition.constant.range + settings + + background + #803D001A + fontStyle + bold + foreground + #7F5E40 + + + + name + Array, Range + scope + meta.structure.array -punctuation.definition.array, meta.definition.range -punctuation.definition.constant.range + settings + + background + #803D001A + + + + name + meta.brace.curly meta.group + scope + meta.brace.curly meta.group.css + settings + + background + #00000080 + fontStyle + + + + + name + º meta.source.embedded + scope + meta.source.embedded, entity.other.django.tagbraces + settings + + background + #00000080 + foreground + #666666 + + + + name + º meta.group.braces.round JS + scope + source.js meta.group.braces.round, meta.scope.heredoc + settings + + + + name + º Even + scope + source.ruby meta.even-tab, source.ruby meta.even-tab.group2, source.ruby meta.even-tab.group4, source.ruby meta.even-tab.group6, source.ruby meta.even-tab.group8, source.ruby meta.even-tab.group10, source.ruby meta.even-tab.group12 + + settings + + background + #00000080 + + + + name + º meta.block.slate + scope + meta.block.slate + settings + + foreground + #666666 + + + + name + º meta.block.content.slate + scope + meta.block.content.slate + settings + + foreground + #CCCCCC + + + + name + Function Group1 + scope + meta.function meta.group.braces.curly.function -(meta.group meta.group), meta.function meta.odd-tab.group1 + settings + + + + name + Group1 + scope + meta.odd-tab.group1, meta.group.braces, meta.block.slate, text.xml.strict meta.tag, meta.paren-group, meta.section + settings + + background + #0A0A0A + + + + name + Group2 + scope + meta.even-tab.group2, meta.group.braces meta.group.braces, meta.block.slate meta.block.slate, text.xml.strict meta.tag meta.tag, meta.group.braces meta.group.braces, meta.paren-group meta.paren-group, meta.section meta.section + settings + + background + #0E0E0E + + + + name + Group3 + scope + meta.odd-tab.group3, meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces, meta.paren-group meta.paren-group meta.paren-group, meta.section meta.section meta.section + settings + + background + #111111 + + + + name + Group4 + scope + meta.even-tab.group4, meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.paren-group meta.paren-group meta.paren-group meta.paren-group, meta.section meta.section meta.section meta.section + settings + + background + #151515 + + + + name + Group5 + scope + meta.odd-tab.group5, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group, meta.section meta.section meta.section meta.section meta.section + settings + + background + #191919 + + + + name + Group6 + scope + meta.even-tab.group6, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group, meta.section meta.section meta.section meta.section meta.section meta.section + settings + + background + #1C1C1C + + + + name + Group7 + scope + meta.odd-tab.group7, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group, meta.section meta.section meta.section meta.section meta.section meta.section meta.section + settings + + background + #1F1F1F + + + + name + Group8 + scope + meta.even-tab.group8, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group, meta.section meta.section meta.section meta.section meta.section meta.section meta.section meta.section + settings + + background + #212121 + + + + name + Group9 + scope + meta.odd-tab.group9, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group meta.paren-group, meta.section meta.section meta.section meta.section meta.section meta.section meta.section meta.section meta.section + settings + + background + #242424 + + + + name + Group10 + scope + meta.even-tab.group10 + settings + + background + #1F1F1F + + + + name + Group11 + scope + meta.odd-tab.group11 + settings + + background + #151515 + + + + name + ———————— END ———————— + settings + + + + name + IE6 + scope + meta.property.vendor.microsoft.trident.4, +meta.property.vendor.microsoft.trident.4 support.type.property-name, +meta.property.vendor.microsoft.trident.4 punctuation.terminator.rule + settings + + fontStyle + + foreground + #1B95E2 + + + + name + IE7 + scope + meta.property.vendor.microsoft.trident.5, +meta.property.vendor.microsoft.trident.5 support.type.property-name, +meta.property.vendor.microsoft.trident.5 punctuation.separator.key-value, +meta.property.vendor.microsoft.trident.5 punctuation.terminator.rule + settings + + fontStyle + + foreground + #F5C034 + + + + uuid + 24847CB3-23BC-4BF9-861B-E39661A6DA71 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Brilliance Dull.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Brilliance Dull.tmTheme new file mode 100644 index 00000000..39f90ae2 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Brilliance Dull.tmTheme @@ -0,0 +1,2243 @@ + + + + + author + Thomas Aylott + comment + by Thomas Aylott subtleGradient.com + name + Brilliance Dull + settings + + + settings + + background + #050505FA + caret + #7979B7 + foreground + #CDCDCD + invisibles + #CDCDCD1A + lineHighlight + #0000801A + selection + #2E2EE64D + + + + name + Thomas Aylott ㊷ + scope + meta.thomas_aylott + settings + + background + #FFFFFF + fontStyle + bold + foreground + #000000 + + + + name + subtleGradient.com + scope + meta.subtlegradient + settings + + background + #FFFFFF + fontStyle + underline + foreground + #555555 + + + + name + —————————————————— + scope + meta.subtlegradient + settings + + background + #FFFFFF + foreground + #E6E6E6 + + + + name + ~ String + scope + string -meta.tag -meta.doctype -string.regexp -string.literal -string.interpolated -string.quoted.literal -string.unquoted, variable.parameter.misc.css, text string source string, string.unquoted string, string.regexp string + settings + + background + #803D0033 + foreground + #D2D1AB + + + + name + ~ String Punctuation + scope + punctuation.definition.string -meta.tag + settings + + foreground + #533F2C + + + + name + ~ String Punctuation II + scope + string.regexp punctuation.definition.string, string.quoted.literal punctuation.definition.string, string.quoted.double.ruby.mod punctuation.definition.string + settings + + foreground + #FFF80033 + + + + name + ~ String Literal + scope + string.quoted.literal, string.quoted.double.ruby.mod + settings + + background + #43800033 + foreground + #A6A458 + + + + name + ~ String Unquoted + scope + string.unquoted -string.unquoted.embedded, string.quoted.double.multiline, meta.scope.heredoc + settings + + foreground + #D2BEAB + + + + name + ~ String Interpolated + scope + string.interpolated + settings + + background + #1A1A1A + foreground + #D2D1AB + + + + name + ~ String RegEx + scope + string.regexp + settings + + background + #43800033 + foreground + #A6A458 + + + + name + ~ String RegEx Group 1 + scope + string.regexp.group + settings + + background + #43800033 + + + + name + ~ String RegEx Group 2 + scope + string.regexp.group string.regexp.group + settings + + background + #43800033 + foreground + #FFFFFF66 + + + + name + ~ String RegEx Group 3 + scope + string.regexp.group string.regexp.group string.regexp.group + settings + + background + #43800033 + foreground + #FFFFFF66 + + + + name + ~ String RegEx Group 4 + scope + string.regexp.group string.regexp.group string.regexp.group string.regexp.group + settings + + background + #43800033 + foreground + #FFFFFF66 + + + + name + ~ String RegEx Character-Class + scope + string.regexp.character-class + settings + + background + #43800033 + foreground + #80A659 + + + + name + ~ String RegEx Arbitrary-Repitition + scope + string.regexp.arbitrary-repitition + settings + + background + #43800033 + foreground + #56A5A4 + + + + name + source.regexp keyword + scope + source.regexp keyword.operator + settings + + foreground + #A75980 + + + + name + ~ String RegEx Comment + scope + string.regexp comment + settings + + fontStyle + italic + foreground + #FFFFFF + + + + name + ~ Meta Group Assertion Regexp + scope + meta.group.assertion.regexp + settings + + background + #0086FF33 + + + + name + ~ Meta Assertion + scope + meta.assertion, meta.group.assertion keyword.control.group.regexp + settings + + foreground + #5780A6 + + + + name + ~ Number + scope + constant.numeric + settings + + foreground + #95A658 + + + + name + ~ Character constant + scope + constant.character + settings + + foreground + #80A659 + + + + name + ~ Built-in constant + scope + constant.language, keyword.other.unit, constant.other.java, constant.other.unit + settings + + foreground + #59A559 + + + + name + ~ Built-in constant+ + scope + constant.language.pseudo-variable + settings + + background + #04800033 + foreground + #59A559 + + + + name + ~ User-defined constant + scope + constant.other, constant.block + settings + + foreground + #57A57D + + + + name + ~ Library constant + scope + support.constant, constant.name + settings + + foreground + #56A5A4 + + + + name + ————————————————— + settings + + + + name + √ pre-defined variable + scope + variable.language, variable.other.readwrite.global.pre-defined + settings + + foreground + #5E6B6B + + + + name + √ Constant Variable + scope + variable.other.constant + settings + + foreground + #56A5A4 + + + + name + √ Library variable + scope + support.variable + settings + + background + #00807C33 + foreground + #56A5A4 + + + + name + √ global Variable + scope + variable.other.readwrite.global + settings + + background + #00438033 + foreground + #2B5252 + + + + name + √ Variable + scope + variable.other, variable.js + settings + + foreground + #5780A6 + + + + name + √ class Variable + scope + variable.other.readwrite.class + settings + + background + #0007FF33 + foreground + #5780A6 + + + + name + √ instance Variable + scope + variable.other.readwrite.instance + settings + + foreground + #555F69 + + + + name + √ Normal Variables + scope + variable.other.php, variable.other.normal + settings + + foreground + #555F69 + + + + name + √ Variable Punctuation + scope + punctuation.definition -punctuation.definition.comment, punctuation.separator.variable + settings + + foreground + #00000080 + + + + name + ————————————————— + settings + + + + name + ¢ Storage + scope + storage -storage.modifier + settings + + foreground + #A77D58 + + + + name + ¢ Entity Name Preprocessor + scope + other.preprocessor, entity.name.preprocessor + settings + + background + #803D0033 + + + + name + ~ variable.language.this.js.prototype + scope + variable.language.this.js + settings + + foreground + #666666 + + + + name + ¢ Storage Modifier + scope + storage.modifier + settings + + foreground + #533F2C + + + + name + ¢ Class name + scope + entity.name.class, entity.name.type.class, entity.name.type.module + settings + + foreground + #A7595A + + + + name + ¢ Class + scope + meta.class -meta.class.instance, declaration.class, meta.definition.class, declaration.module + settings + + background + #29161780 + foreground + #532D2D + + + + name + ¢ Library class/type + scope + support.type, support.class + settings + + background + #80000433 + foreground + #A7595A + + + + name + ¢ Instance + scope + entity.name.instance + settings + + foreground + #A7595A + + + + name + ¢ Instance.constructor + scope + meta.class.instance.constructor + settings + + background + #80004333 + + + + name + ¢ Inherited class + scope + entity.other.inherited-class, entity.name.module + settings + + background + #80000433 + foreground + #A75980 + + + + name + ¢ Class Method + scope + object.property.function, meta.definition.method + settings + + foreground + #A75980 + + + + name + ¢ Function + scope + meta.function -(meta.tell-block), meta.property.function, declaration.function + settings + + background + #80004333 + foreground + #532D40 + + + + name + ¢ Function name + scope + entity.name.function, entity.name.preprocessor + settings + + foreground + #A75980 + + + + name + ————————————————— + settings + + + + name + â„¢ Keyword + scope + keyword + settings + + foreground + #A459A5 + + + + name + â„¢ Keyword.control + scope + keyword.control + settings + + background + #3C008033 + foreground + #A459A5 + + + + name + â„¢ Special Function + scope + keyword.other.special-method, meta.function-call entity.name.function -(meta.function-call meta.function), support.function - variable + settings + + foreground + #8D809D + + + + name + â„¢ Library function + scope + support.function - variable + settings + + foreground + #634683 + + + + name + â„¢ Keyword.operator + scope + keyword.operator, declaration.function.operator, meta.preprocessor.c.include + settings + + fontStyle + bold + foreground + #7979B7 + + + + name + â„¢ keyword.operator.comparison + scope + keyword.operator.comparison + settings + + fontStyle + + foreground + #9899C8 + + + + name + â„¢ Function argument + scope + variable.parameter -variable.parameter.misc.css, meta.definition.method meta.definition.param-list, meta.function.method.with-arguments variable.parameter.function + settings + + background + #3C008033 + foreground + #ABACD2 + + + + name + ————————————————— + settings + + + + name + ✘ HTML + settings + + + + name + ✘ Tag Doctype + scope + meta.doctype, meta.tag.sgml-declaration.doctype, meta.tag.sgml.doctype + settings + + background + #333333 + foreground + #CDCDCD + + + + name + ✘ Tag + scope + meta.tag + settings + + foreground + #333333 + + + + name + ✘ Tag Structure + scope + meta.tag.structure, meta.tag.segment + settings + + background + #333333BF + foreground + #666666 + + + + name + ✘ Tag Block + scope + meta.tag.block, meta.tag.xml, meta.tag.key + settings + + background + #4C4C4C33 + foreground + #4C4C4C + + + + name + ✘ Tag Inline + scope + meta.tag.inline + settings + + background + #803D0033 + foreground + #A77D58 + + + + name + meta.tag.inline source + scope + meta.tag.inline source + settings + + background + #803D0033 + + + + name + ✘ Tag Other + scope + meta.tag.other, entity.name.tag.style, source entity.other.attribute-name -text.html.basic.embedded , entity.name.tag.script, meta.tag.block.script + settings + + background + #80000433 + foreground + #A7595A + + + + name + ✘ Tag Form + scope + meta.tag.form, meta.tag.block.form + settings + + background + #00438033 + foreground + #5780A6 + + + + name + ✘ Tag Meta + scope + meta.tag.meta + settings + + background + #3C008033 + foreground + #A459A5 + + + + name + ✘ Tag Block Head + scope + meta.section.html.head + settings + + background + #121212 + + + + name + ✘ Tag Block Form + scope + meta.section.html.form + settings + + background + #0043801A + + + + name + ✘ XML Tag + scope + meta.tag.xml + settings + + foreground + #666666 + + + + name + ✘ Tag name + scope + entity.name.tag + settings + + foreground + #FFFFFF4D + + + + name + ✘ Tag attribute + scope + entity.other.attribute-name, meta.tag punctuation.definition.string + settings + + foreground + #FFFFFF33 + + + + name + ✘ Tag value + scope + meta.tag string -source -punctuation, text source text meta.tag string -punctuation + settings + + foreground + #FFFFFF66 + + + + name + ————————————————— + settings + + + + name + M markdown + settings + + + + name + M markup + scope + markup markup -(markup meta.paragraph.list) + settings + + background + #33333333 + foreground + #A6A458 + + + + name + M HR + scope + markup.hr + settings + + background + #FFFFFF + foreground + #000000 + + + + name + M heading + scope + markup.heading + settings + + background + #33333380 + foreground + #666666 + + + + name + M bold + scope + markup.bold + settings + + fontStyle + bold + + + + name + M italic + scope + markup.italic + settings + + fontStyle + italic + + + + name + M strike + settings + + + + name + M add + settings + + + + name + M del + settings + + + + name + M underline + scope + markup.underline + settings + + fontStyle + underline + + + + name + M reference + scope + meta.reference, markup.underline.link + settings + + fontStyle + + foreground + #5780A6 + + + + name + M reference name + scope + entity.name.reference + settings + + background + #00438033 + foreground + #56A5A4 + + + + name + M underline link + scope + meta.reference.list markup.underline.link, text.html.textile markup.underline.link + settings + + fontStyle + underline + foreground + #56A5A4 + + + + name + M raw block + scope + markup.raw.block + settings + + background + #000000 + foreground + #999999 + + + + name + M quote block + scope + markup.quote + settings + + background + #FFFFFF1A + + + + name + ————————————————— + settings + + + + name + § CSS + scope + source.css + settings + + + + name + § Selector + scope + meta.selector + settings + + background + #00000080 + foreground + #666666 + + + + name + § Attribute-Match + scope + meta.attribute-match.css + settings + + background + #00048033 + foreground + #575AA6 + + + + name + § Pseudo-Class + scope + entity.other.attribute-name.pseudo-class, entity.other.attribute-name.tag.pseudo-class + settings + + foreground + #7C58A5 + + + + name + § Class + scope + meta.selector entity.other.attribute-name.class + settings + + foreground + #A459A5 + + + + name + § ID + scope + meta.selector entity.other.attribute-name.id + settings + + foreground + #A75980 + + + + name + § Tag + scope + meta.selector entity.name.tag + settings + + fontStyle + + foreground + #A7595A + + + + name + § Tag Wildcard + scope + entity.name.tag.wildcard, entity.other.attribute-name.universal + settings + + fontStyle + bold + foreground + #A77D58 + + + + name + § meta.scope.property-list + scope + meta.scope.property-list + settings + + fontStyle + bold + foreground + #333333 + + + + name + § meta.property-name + scope + meta.property-name + settings + + fontStyle + + foreground + #999999 + + + + name + § support.type.property-name + scope + support.type.property-name + settings + + background + #000000 + fontStyle + + foreground + #FFFFFF + + + + name + § meta.property-value + scope + meta.property-value + settings + + background + #0D0D0D + fontStyle + + foreground + #999999 + + + + name + ————————————————— + settings + + + + name + LaTeX + scope + text.latex + settings + + + + name + L Markup Raw + scope + text.latex markup.raw + settings + + background + #000000 + + + + name + L support.function + scope + text.latex support.function -support.function.textit -support.function.emph + settings + + foreground + #BDABD1 + + + + name + L support.function.section + scope + text.latex support.function.section + settings + + foreground + #FFFFFFBF + + + + name + L entity.name.section + scope + text.latex entity.name.section -meta.group -keyword.operator.braces + settings + + background + #FFFFFF + fontStyle + + foreground + #000000 + + + + name + L constant.language.general + scope + text.latex constant.language.general + settings + + + + name + L keyword.operator.delimiter + scope + text.latex keyword.operator.delimiter + settings + + background + #00000080 + + + + name + L keyword.operator.brackets + scope + text.latex keyword.operator.brackets + settings + + foreground + #999999 + + + + name + L keyword.operator.braces + scope + text.latex keyword.operator.braces + settings + + fontStyle + + foreground + #666666 + + + + name + L meta.footnote + scope + meta.footnote + settings + + background + #00048033 + foreground + #0008FF4D + + + + name + L meta.label.reference + scope + text.latex meta.label.reference + settings + + background + #FFFFFF0D + fontStyle + + + + + name + L keyword.control.ref + scope + text.latex keyword.control.ref + settings + + background + #180D0C + foreground + #A7595A + + + + name + L variable.parameter.label.reference + scope + text.latex variable.parameter.label.reference + settings + + background + #291616 + foreground + #D2BEAB + + + + name + L keyword.control.cite + scope + text.latex keyword.control.cite + settings + + background + #180D12 + foreground + #A75980 + + + + name + L variable.parameter.cite + scope + variable.parameter.cite + settings + + background + #29161F + foreground + #E8D5DE + + + + name + L variable.parameter.label + scope + text.latex variable.parameter.label + settings + + foreground + #FFFFFF80 + + + + name + L meta.group.braces + scope + text.latex meta.group.braces + settings + + foreground + #33333333 + + + + name + L meta.environment.list + scope + text.latex meta.environment.list + settings + + background + #00000080 + fontStyle + + foreground + #33333333 + + + + name + L meta.environment.list 2 + scope + text.latex meta.environment.list meta.environment.list + settings + + background + #00000080 + foreground + #33333333 + + + + name + L meta.environment.list 3 + scope + text.latex meta.environment.list meta.environment.list meta.environment.list + settings + + background + #000000 + foreground + #33333333 + + + + name + L meta.environment.list 4 + scope + text.latex meta.environment.list meta.environment.list meta.environment.list meta.environment.list + settings + + foreground + #33333333 + + + + name + L meta.environment.list 5 + scope + text.latex meta.environment.list meta.environment.list meta.environment.list meta.environment.list meta.environment.list + settings + + foreground + #33333333 + + + + name + L meta.environment.list 6 + scope + text.latex meta.environment.list meta.environment.list meta.environment.list meta.environment.list meta.environment.list meta.environment.list + settings + + foreground + #33333333 + + + + name + L meta.end-document + scope + text.latex meta.end-document, text.latex meta.begin-document, meta.end-document.latex support.function, meta.end-document.latex variable.parameter, meta.begin-document.latex support.function, meta.begin-document.latex variable.parameter + settings + + background + #CDCDCD + foreground + #000000 + + + + name + ————————————————— + settings + + + + name + meta.brace.erb.return-value + scope + meta.brace.erb.return-value + settings + + background + #45815D33 + foreground + #596B61 + + + + name + source.ruby.rails.embedded.return-value.one-line + scope + source.ruby.rails.embedded.return-value.one-line + settings + + background + #66666633 + + + + name + meta.brace.erb + scope + punctuation.section.embedded -(source string source punctuation.section.embedded), meta.brace.erb.html + settings + + background + #00FFF81A + foreground + #56A5A4 + + + + name + source.ruby.rails.embedded.one-line + scope + source.ruby.rails.embedded.one-line + settings + + background + #00FFF81A + + + + name + String Embedded Source + scope + source string source punctuation.section.embedded + settings + + foreground + #555F69 + + + + name + â—Š Source + scope + source + settings + + background + #000000 + fontStyle + + + + + name + â—Š meta.brace.erb + scope + meta.brace.erb + settings + + background + #000000 + + + + name + â—Š Source String Source + scope + source string source + settings + + background + #33333380 + foreground + #FFFFFF + + + + name + â—Š Source String Interpolated Source + scope + source string.interpolated source + settings + + background + #00000099 + foreground + #999999 + + + + name + â—Š Source Embeded Source + scope + source.java.embedded + settings + + background + #3333331A + + + + name + â—Š Text + scope + text -text.xml.strict + settings + + foreground + #FFFFFF + + + + name + â—Š Text Source + scope + text source, meta.scope.django.template + settings + + background + #000000 + foreground + #CCCCCC + + + + name + â—Š Text Source Text String + settings + + + + name + â—Š Text String Source + scope + text string source + settings + + foreground + #999999 + + + + name + â—Š Text Source String Source + settings + + + + name + â—Š Text String Source String Source + scope + text string source string source + settings + + + + name + ————————————————— + settings + + + + name + Syntax + scope + meta.syntax + settings + + foreground + #333333 + + + + name + Invalid + scope + invalid + settings + + background + #A7595A + fontStyle + bold + foreground + #211211 + + + + name + Comment + scope + 0comment + settings + + background + #0000FF1A + fontStyle + italic + foreground + #8F8FC3 + + + + name + Comment Punctuation + scope + comment punctuation + settings + + fontStyle + bold + foreground + #0000FF1A + + + + name + comment + scope + comment + settings + + foreground + #333333 + + + + name + Comment Punctuation + scope + comment punctuation + settings + + background + #8080800D + fontStyle + bold italic + foreground + #262626 + + + + name + ✘ HTML Comment + scope + text comment.block -source + settings + + fontStyle + italic + + + + name + ————————————————— + settings + + + + name + D Diff Add + scope + markup.inserted + settings + + background + #15281F + foreground + #81BB9E + + + + name + D Diff Delete + scope + markup.deleted + settings + + background + #400021 + foreground + #BC839F + + + + name + D Diff Changed + scope + markup.changed + settings + + background + #533F2C + foreground + #C3C38F + + + + name + text.subversion-commit meta.scope.changed-files + scope + text.subversion-commit meta.scope.changed-files, text.subversion-commit meta.scope.changed-files.svn meta.diff.separator + settings + + background + #000000 + foreground + #FFFFFF + + + + name + text.subversion-commit + scope + text.subversion-commit + settings + + background + #FFFFFF + foreground + #000000 + + + + name + ————————————————— + settings + + + + name + meta.delimiter + scope + punctuation.terminator, meta.delimiter, punctuation.separator.method + settings + + background + #FFFFFF03 + fontStyle + bold + foreground + #FFFFFF + + + + name + meta.delimiter.statement.js + scope + punctuation.terminator.statement, meta.delimiter.statement.js + settings + + background + #000000BF + + + + name + meta.delimiter.object.js + scope + meta.delimiter.object.js + settings + + background + #00000040 + + + + name + Bold String Quotes + scope + string.quoted.single.brace, string.quoted.double.brace + settings + + fontStyle + bold + foreground + #533F2C + + + + name + ————————————————— + settings + + + + name + meta.headers.blog + scope + text.blog -(text.blog text) + settings + + background + #FFFFFF + + + + name + meta.headers.blog + scope + meta.headers.blog + settings + + background + #FFFFFF + foreground + #666666 + + + + name + meta.headers.blog keyword.other.blog + scope + meta.headers.blog keyword.other.blog + settings + + background + #00FFF81A + fontStyle + + foreground + #192B2A + + + + name + meta.headers.blog string.unquoted.blog + scope + meta.headers.blog string.unquoted.blog + settings + + background + #FFFF551A + foreground + #533F2C + + + + name + ————————————————— + settings + + + + name + meta.brace.pipe + scope + meta.brace.pipe + settings + + background + #33333333 + fontStyle + + foreground + #4C4C4C + + + + name + Misc Punctuation + scope + meta.brace.erb, source.ruby.embedded.source.brace, punctuation.section.dictionary, punctuation.terminator.dictionary, punctuation.separator.object + settings + + fontStyle + bold + foreground + #4C4C4C + + + + name + Curly Punctuation + scope + meta.group.braces.curly punctuation.section.scope, meta.brace.curly + settings + + fontStyle + bold + foreground + #FFFFFF + + + + name + Object Punctuation + scope + punctuation.separator.objects, meta.group.braces.curly meta.delimiter.object.comma, punctuation.separator.key-value -meta.tag + settings + + fontStyle + bold + foreground + #345743 + + + + name + Array Punctuation + scope + meta.group.braces.square punctuation.section.scope, meta.group.braces.square meta.delimiter.object.comma, meta.brace.square, punctuation.separator.array, punctuation.section.array + settings + + background + #803D001A + fontStyle + bold + foreground + #695F55 + + + + name + meta.brace.curly meta.group + scope + meta.brace.curly meta.group + settings + + background + #00000080 + fontStyle + + foreground + #CDCDCD + + + + name + Function Punctuation + scope + meta.group.braces.round punctuation.section.scope, meta.group.braces.round meta.delimiter.object.comma, meta.brace.round + settings + + fontStyle + bold + foreground + #532D40 + + + + name + meta.brace.curly.function + scope + punctuation.section.function, meta.brace.curly.function, meta.function-call punctuation.section.scope.ruby + settings + + background + #3C008033 + fontStyle + + foreground + #ABACD2 + + + + name + º meta.source.embedded + scope + meta.source.embedded, entity.other.django.tagbraces + settings + + background + #00000080 + foreground + #666666 + + + + name + º meta.group.braces.round JS + scope + source.js meta.group.braces.round, meta.scope.heredoc + settings + + + + name + º meta.group.braces 1 + scope + meta.odd-tab.group1, meta.group.braces, meta.block.slate, text.xml.strict meta.tag, meta.tell-block meta.tell-block + settings + + background + #0A0A0A + + + + name + º meta.group.braces 2 + scope + meta.even-tab.group2, meta.group.braces meta.group.braces, meta.block.slate meta.block.slate, text.xml.strict meta.tag meta.tag, meta.group.braces meta.group.braces, meta.tell-block meta.tell-block + settings + + background + #0E0E0E + + + + name + º meta.group.braces 3 + scope + meta.odd-tab.group3, meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces, meta.tell-block meta.tell-block meta.tell-block + settings + + background + #111111 + + + + name + º meta.group.braces 4 + scope + meta.even-tab.group4, meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.tell-block meta.tell-block meta.tell-block meta.tell-block + settings + + background + #151515 + + + + name + º meta.group.braces 5 + scope + meta.odd-tab.group5, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block + settings + + background + #191919 + + + + name + º meta.group.braces 6 + scope + meta.even-tab.group6, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block + settings + + background + #1C1C1C + + + + name + º meta.group.braces 7 + scope + meta.odd-tab.group7, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block + settings + + background + #1F1F1F + + + + name + º meta.group.braces 8 + scope + meta.even-tab.group8, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block + settings + + background + #212121 + + + + name + º meta.group.braces 9 + scope + meta.odd-tab.group11, meta.odd-tab.group10, meta.odd-tab.group9, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces , meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate meta.block.slate , text.xml.strict meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag meta.tag, meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces meta.group.braces, meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block meta.tell-block + settings + + background + #242424 + + + + name + º meta.block.slate + scope + meta.block.slate + settings + + foreground + #666666 + + + + name + º meta.block.content.slate + scope + meta.block.content.slate + settings + + foreground + #CDCDCD + + + + name + ————————————————— + settings + + + + uuid + 4535004C-927A-401A-A6D5-1C9AC89E24C6 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Chrome DevTools.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Chrome DevTools.tmTheme new file mode 100644 index 00000000..8f14e4fa --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Chrome DevTools.tmTheme @@ -0,0 +1,294 @@ + + + + + author + Austin Cummings + name + Chrome DevTools + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #000000 + invisibles + #B3B3B3F4 + lineHighlight + #0000001A + selection + #BAD6FD + + + + name + String + scope + string + settings + + foreground + #C41A16 + + + + name + Number + scope + constant.numeric + settings + + foreground + #1C00CF + + + + name + Keyword + scope + keyword + settings + + foreground + #AA0D91 + + + + name + Operator + scope + keyword.operator + settings + + foreground + #000000 + + + + name + Identifier + scope + constant.language + settings + + foreground + #AA0D91 + + + + name + Exception + scope + support.class.exception + settings + + foreground + #990000 + + + + name + Function name + scope + entity.name.function + settings + + foreground + #000000 + + + + + name + Type name + scope + entity.name.type + settings + + fontStyle + bold underline + + + + name + Arguments + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Comment + scope + comment + settings + + + foreground + #007400 + + + + name + Invalid + scope + invalid + settings + + + foreground + #FF0000 + + + + name + Trailing whitespace + scope + invalid.deprecated.trailing-whitespace + settings + + background + #E71A1100 + + + + name + Embedded source + scope + text source + settings + + background + #FAFAFAFC + foreground + #000000 + + + + name + Tag + scope + meta.tag, declaration.tag + settings + + foreground + #AA0D91 + + + + + name + Support + scope + support + settings + + fontStyle + bold + foreground + #000000 + + + + name + Storage + scope + storage + settings + + + foreground + #AA0D91 + + + + name + Section name + scope + entity.name.section + settings + + fontStyle + bold underline + + + + name + Frame title + scope + entity.name.function.frame + settings + + fontStyle + bold + foreground + #000000 + + + + + name + XML Declaration + scope + meta.tag.preprocessor.xml + settings + + foreground + #333333 + + + + name + Tag Attribute + scope + entity.other.attribute-name + settings + + fontStyle + italic + foreground + + #994500 + + + + name + Tag Name + scope + entity.name.tag + settings + + foreground + #881280 + + + + + uuid + 4FCFA210-B247-11D9-9D00-000D93347A42 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Clouds Midnight.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Clouds Midnight.tmTheme new file mode 100644 index 00000000..1859deba --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Clouds Midnight.tmTheme @@ -0,0 +1,361 @@ + + + + + name + Clouds Midnight + settings + + + settings + + background + #191919 + caret + #7DA5DC + foreground + #929292 + invisibles + #BFBFBF + lineHighlight + #D7D7D708 + selection + #000000 + + + + name + Comment + scope + comment + settings + + fontStyle + + foreground + #3C403B + + + + name + String + scope + string + settings + + fontStyle + + foreground + #5D90CD + + + + name + Number + scope + constant.numeric + settings + + foreground + #46A609 + + + + name + Built-in constant + scope + constant.language + settings + + fontStyle + + foreground + #39946A + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + + + name + Variable + scope + variable.language, variable.other + settings + + fontStyle + + + + + name + Keyword + scope + keyword, support.constant.property-value, constant.other.color + settings + + fontStyle + + foreground + #927C5D + + + + name + Keyword -> Unit + scope + keyword.other.unit + settings + + foreground + #366F1A + + + + name + HTML Attribute + scope + entity.other.attribute-name.html + settings + + foreground + #A46763 + + + + name + Keyword -> Operator + scope + keyword.operator + settings + + foreground + #4B4B4B + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #E92E2E + + + + name + Class name + scope + entity.name.class + settings + + fontStyle + + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + fontStyle + + foreground + #858585 + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + + + + name + Function argument + scope + variable.parameter + settings + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #606060 + + + + name + HTML Entity + scope + constant.character.entity + settings + + foreground + #A165AC + + + + name + JS Support Class + scope + support.class.js + settings + + foreground + #A165AC + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #606060 + + + + name + CSS Selector + scope + meta.selector.css, entity.name.tag.css, entity.other.attribute-name.id.css, entity.other.attribute-name.class.css + settings + + fontStyle + + foreground + #E92E2E + + + + name + CSS Property + scope + meta.property-name.css + settings + + foreground + #616161 + + + + name + Library function + scope + support.function + settings + + foreground + #E92E2E + + + + name + Library constant + scope + support.constant + settings + + + + name + Library class/type + scope + support.type, support.class + settings + + + + name + Library variable + scope + support.other.variable + settings + + fontStyle + + + + + name + Invalid + scope + invalid + settings + + background + #E92E2E + foreground + #FFFFFF + + + + name + Punctuation/Widgets + scope + punctuation.section.embedded + settings + + fontStyle + + foreground + #E92E2E + + + + name + Punctuation (Tags) + scope + punctuation.definition.tag + settings + + fontStyle + + foreground + #606060 + + + + name + Keyword -> CSS + scope + constant.other.color.rgb-value.css, support.constant.property-value.css + settings + + foreground + #A165AC + + + + uuid + E5304455-0AC7-4082-8E62-5FD1B3313EEC + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Clouds.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Clouds.tmTheme new file mode 100644 index 00000000..821476be --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Clouds.tmTheme @@ -0,0 +1,348 @@ + + + + + name + Clouds + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #000000 + invisibles + #BFBFBF + lineHighlight + #FFFBD1 + selection + #BDD5FC + + + + name + Comment + scope + comment + settings + + fontStyle + + foreground + #BCC8BA + + + + name + String + scope + string + settings + + fontStyle + + foreground + #5D90CD + + + + name + Number + scope + constant.numeric + settings + + foreground + #46A609 + + + + name + Built-in constant + scope + constant.language + settings + + fontStyle + + foreground + #39946A + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + + + name + Variable + scope + variable.language, variable.other + settings + + fontStyle + + + + + name + Keyword + scope + keyword, support.constant.property-value, constant.other.color + settings + + fontStyle + + foreground + #AF956F + + + + name + Keyword -> Unit + scope + keyword.other.unit + settings + + foreground + #96DC5F + + + + name + Keyword -> Operator + scope + keyword.operator + settings + + foreground + #484848 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #C52727 + + + + name + Class name + scope + entity.name.class + settings + + fontStyle + + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + fontStyle + + foreground + #858585 + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + + + + name + Function argument + scope + variable.parameter + settings + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #606060 + + + + name + HTML Entity + scope + constant.character.entity + settings + + foreground + #BF78CC + + + + name + JS Support Class + scope + support.class.js + settings + + foreground + #BF78CC + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #606060 + + + + name + CSS Selector + scope + meta.selector.css, entity.name.tag.css, entity.other.attribute-name.id.css, entity.other.attribute-name.class.css + settings + + fontStyle + + foreground + #C52727 + + + + name + CSS Property + scope + meta.property-name.css + settings + + foreground + #484848 + + + + name + Library function + scope + support.function + settings + + foreground + #C52727 + + + + name + Library constant + scope + support.constant + settings + + + + name + Library class/type + scope + support.type, support.class + settings + + + + name + Library variable + scope + support.other.variable + settings + + fontStyle + + + + + name + Invalid + scope + invalid + settings + + background + #FF002A + + + + name + Punctuation/Widgets + scope + punctuation.section.embedded + settings + + fontStyle + + foreground + #C52727 + + + + name + Punctuation (Tags) + scope + punctuation.definition.tag + settings + + fontStyle + + foreground + #606060 + + + + name + Keyword -> CSS + scope + constant.other.color.rgb-value.css, support.constant.property-value.css + settings + + foreground + #BF78CC + + + + uuid + 47536290-6FC1-4B09-A08F-B219909E1A69 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Cobalt.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Cobalt.tmTheme new file mode 100644 index 00000000..3c685f25 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Cobalt.tmTheme @@ -0,0 +1,559 @@ + + + + + author + Jacob Rus + comment + Created by Jacob Rus. Based on ‘Slate’ by Wilson Miner + name + Cobalt + settings + + + settings + + background + #002240 + caret + #FFFFFF + foreground + #FFFFFF + invisibles + #FFFFFF26 + lineHighlight + #00000059 + selection + #B36539BF + + + + name + Punctuation + scope + punctuation - (punctuation.definition.string | punctuation.definition.comment) + settings + + fontStyle + + foreground + #E1EFFF + + + + name + Constant + scope + constant + settings + + fontStyle + + foreground + #FF628C + + + + name + Entity + scope + entity + settings + + fontStyle + + foreground + #FFDD00 + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #FF9D00 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #FFEE80 + + + + name + String + scope + string -string.unquoted.old-plist -string.unquoted.heredoc, string.unquoted.heredoc string + settings + + fontStyle + + foreground + #3AD900 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #0088FF + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #80FFBB + + + + name + Variable + scope + variable + settings + + fontStyle + + foreground + #CCCCCC + + + + name + Lang Variable + scope + variable.language + settings + + fontStyle + + foreground + #FF80E1 + + + + name + Function Call + scope + meta.function-call + settings + + foreground + #FFEE80 + + + + name + Invalid + scope + invalid + settings + + background + #800F00 + foreground + #F8F8F8 + + + + name + Embedded Source + scope + text source, string.unquoted.heredoc, source source + settings + + background + #223545 + fontStyle + + foreground + #FFFFFF + + + + name + Entity inherited-class + scope + entity.other.inherited-class + settings + + fontStyle + italic + foreground + #80FCFF + + + + name + String embedded-source + scope + string.quoted source + settings + + fontStyle + + foreground + #9EFF80 + + + + name + String constant + scope + string constant + settings + + foreground + #80FF82 + + + + name + String.regexp + scope + string.regexp + settings + + foreground + #80FFC2 + + + + name + String variable + scope + string variable + settings + + foreground + #EDEF7D + + + + name + Support.function + scope + support.function + settings + + fontStyle + + foreground + #FFB054 + + + + name + Support.constant + scope + support.constant + settings + + fontStyle + + foreground + #EB939A + + + + name + Exception + scope + support.type.exception + settings + + foreground + #FF1E00 + + + + name + C/C++ Preprocessor Line + scope + meta.preprocessor.c + settings + + foreground + #8996A8 + + + + name + C/C++ Preprocessor Directive + scope + meta.preprocessor.c keyword + settings + + foreground + #AFC4DB + + + + name + Doctype/XML Processing + scope + meta.sgml.html meta.doctype, meta.sgml.html meta.doctype entity, meta.sgml.html meta.doctype string, meta.xml-processing, meta.xml-processing entity, meta.xml-processing string + settings + + foreground + #73817D + + + + name + Meta.tag.A + scope + meta.tag, meta.tag entity + settings + + foreground + #9EFFFF + + + + name + css tag-name + scope + meta.selector.css entity.name.tag + settings + + foreground + #9EFFFF + + + + name + css#id + scope + meta.selector.css entity.other.attribute-name.id + settings + + foreground + #FFB454 + + + + name + css.class + scope + meta.selector.css entity.other.attribute-name.class + settings + + foreground + #5FE461 + + + + name + css property-name: + scope + support.type.property-name.css + settings + + foreground + #9DF39F + + + + name + css property-value; + scope + meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css + settings + + foreground + #F6F080 + + + + name + css @at-rule + scope + meta.preprocessor.at-rule keyword.control.at-rule + settings + + foreground + #F6AA11 + + + + name + css additional-constants + scope + meta.property-value support.constant.named-color.css, meta.property-value constant + settings + + foreground + #EDF080 + + + + name + css constructor.argument + scope + meta.constructor.argument.css + settings + + foreground + #EB939A + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + background + #000E1A + fontStyle + + foreground + #F8F8F8 + + + + name + diff.deleted + scope + markup.deleted + settings + + background + #4C0900 + foreground + #F8F8F8 + + + + name + diff.changed + scope + markup.changed + settings + + background + #806F00 + foreground + #F8F8F8 + + + + name + diff.inserted + scope + markup.inserted + settings + + background + #154F00 + foreground + #F8F8F8 + + + + name + Raw Markup + scope + markup.raw + settings + + background + #8FDDF630 + + + + name + Block Quote + scope + markup.quote + settings + + background + #004480 + + + + name + List + scope + markup.list + settings + + background + #130D26 + + + + name + Bold Markup + scope + markup.bold + settings + + fontStyle + bold + foreground + #C1AFFF + + + + name + Italic Markup + scope + markup.italic + settings + + fontStyle + italic + foreground + #B8FFD9 + + + + name + Heading Markup + scope + markup.heading + settings + + background + #001221 + fontStyle + bold + foreground + #C8E4FD + + + + uuid + 06CD1FB2-A00A-4F8C-97B2-60E131980454 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Dawn.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Dawn.tmTheme new file mode 100644 index 00000000..12cff9b6 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Dawn.tmTheme @@ -0,0 +1,437 @@ + + + + + author + David Powers + comment + Dawn + name + Dawn + settings + + + settings + + background + #F9F9F9 + caret + #000000 + foreground + #080808 + invisibles + #4B4B7E80 + lineHighlight + #2463B41F + selection + #275FFF4D + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #5A525F + + + + name + Constant + scope + constant + settings + + fontStyle + bold + foreground + #811F24 + + + + name + Entity + scope + entity + settings + + fontStyle + + foreground + #BF4F24 + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #794938 + + + + name + Storage + scope + storage + settings + + fontStyle + italic + foreground + #A71D5D + + + + name + String + scope + string | punctuation.definition.string + settings + + fontStyle + + foreground + #0B6125 + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #691C97 + + + + name + Variable + scope + variable + settings + + fontStyle + + foreground + #234A97 + + + + name + Punctuation.separator + scope + punctuation.separator + settings + + foreground + #794938 + + + + name + Invalid – Deprecated + scope + invalid.deprecated + settings + + fontStyle + bold italic underline + foreground + #B52A1D + + + + name + Invalid – Illegal + scope + invalid.illegal + settings + + background + #B52A1D + fontStyle + italic underline + foreground + #F8F8F8 + + + + name + String embedded-source + scope + string source + settings + + background + #6F8BBA26 + fontStyle + + foreground + #080808 + + + + name + String constant + scope + string constant + settings + + fontStyle + bold + foreground + #696969 + + + + name + String variable + scope + string variable + settings + + fontStyle + + foreground + #234A97 + + + + name + String.regexp + scope + string.regexp + settings + + fontStyle + + foreground + #CF5628 + + + + name + String.regexp.«special» + scope + string.regexp.character-class, string.regexp constant.character.escaped, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition + settings + + fontStyle + bold italic + foreground + #CF5628 + + + + name + String.regexp constant.character.escape + scope + string.regexp constant.character.escape + settings + + fontStyle + bold + foreground + #811F24 + + + + name + Embedded Source + scope + text source + settings + + background + #6F8BBA26 + + + + name + Support.function + scope + support.function + settings + + fontStyle + + foreground + #693A17 + + + + name + Support.constant + scope + support.constant + settings + + fontStyle + + foreground + #B4371F + + + + name + Support.variable + scope + support.variable + settings + + foreground + #234A97 + + + + name + Markup.list + scope + markup.list + settings + + foreground + #693A17 + + + + name + Markup.heading + scope + markup.heading | markup.heading entity.name + settings + + fontStyle + bold + foreground + #19356D + + + + name + Markup.quote + scope + markup.quote + settings + + background + #BBBBBB30 + fontStyle + italic + foreground + #0B6125 + + + + name + Markup.italic + scope + markup.italic + settings + + fontStyle + italic + foreground + #080808 + + + + name + Markup.bold + scope + markup.bold + settings + + fontStyle + bold + foreground + #080808 + + + + name + Markup.underline + scope + markup.underline + settings + + fontStyle + underline + foreground + #080808 + + + + name + Markup.link + scope + markup.link + settings + + fontStyle + italic underline + foreground + #234A97 + + + + name + Markup.raw + scope + markup.raw + settings + + background + #BBBBBB30 + fontStyle + + foreground + #234A97 + + + + name + Markup.deleted + scope + markup.deleted + settings + + foreground + #59140E + + + + name + Meta.separator + scope + meta.separator + settings + + background + #DCDCDC + fontStyle + bold + foreground + #19356D + + + + uuid + E7E82498-F9EA-49A6-A0D8-12327EA46B01 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Dreamweaver.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Dreamweaver.tmTheme new file mode 100644 index 00000000..466863af --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Dreamweaver.tmTheme @@ -0,0 +1,521 @@ + + + + + comment + By Jim Isaacs - jimisaacs.com + name + Dreamweaver + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #000000 + invisibles + #BFBFBF + lineHighlight + #00000012 + selection + #5EA0FF + + + + name + text + scope + text + settings + + foreground + #000000 + + + + name + constant numeric + scope + constant.numeric - source.css + settings + + fontStyle + + foreground + #EE000B + + + + name + comment general + scope + comment + settings + + fontStyle + + foreground + #9A9A9A + + + + name + html meta + scope + text.html meta.tag + settings + + fontStyle + + foreground + #00359E + + + + name + html string + scope + text.html.basic meta.tag string.quoted - source + settings + + foreground + #001EFF + + + + name + html contstant + scope + text.html.basic constant.character.entity.html + settings + + fontStyle + bold + foreground + #000000 + + + + name + html a tag + scope + text.html meta.tag.a - string + settings + + fontStyle + + foreground + #106800 + + + + name + html img tag + scope + text.html meta.tag.img - string + settings + + foreground + #6D232E + + + + name + html form tag + scope + text.html meta.tag.form - string + settings + + foreground + #FF9700 + + + + name + html table + scope + text.html meta.tag.table - string + settings + + foreground + #009079 + + + + name + js embedded + scope + source.js.embedded.html punctuation.definition.tag - source.php, source.js.embedded.html entity.name.tag.script, source.js.embedded entity.other.attribute-name - source.js string + settings + + fontStyle + + foreground + #842B44 + + + + name + js comment + scope + source.js comment - source.php + settings + + foreground + #9A9A9A + + + + name + js meta function + scope + source.js meta.function - source.php + settings + + fontStyle + + foreground + #000000 + + + + name + js instance / support.function + scope + source.js meta.class - source.php, source.js support.function - source.php + settings + + foreground + #24C696 + + + + name + js string + scope + source.js string - source.php, source.js keyword.operator + settings + + fontStyle + + foreground + #0035FF + + + + name + js support + scope + source.js support.class + settings + + foreground + #7E00B7 + + + + name + js storage + scope + source.js storage + settings + + fontStyle + bold + foreground + #000000 + + + + name + js storage (not function) / bool / new / braces + scope + source.js storage - storage.type.function - source.php, source.js constant - source.php, source.js keyword - source.php, source.js variable.language, source.js meta.brace, source.js punctuation.definition.parameters.begin, source.js punctuation.definition.parameters.end + settings + + fontStyle + bold + foreground + #05208C + + + + name + js regexp + scope + source.js string.regexp, source.js string.regexp constant + settings + + foreground + #106800 + + + + name + css embedded + scope + source.css.embedded.html punctuation.definition.tag, source.css.embedded.html entity.name.tag.style, source.css.embedded entity.other.attribute-name - meta.selector + settings + + foreground + #8D00B7 + + + + name + css @import + scope + source.css meta.at-rule.import.css + settings + + fontStyle + bold + foreground + #009C7F + + + + name + css @important + scope + source.css keyword.other.important + settings + + fontStyle + bold + foreground + #EE000B + + + + name + css @media + scope + source.css meta.at-rule.media + settings + + fontStyle + bold + foreground + #430303 + + + + name + css string + scope + source.css string + settings + + foreground + #106800 + + + + name + css selector/prop-list + scope + source.css meta.selector, source.css meta.property-list, source.css meta.at-rule + settings + + foreground + #DA29FF + + + + name + css punctuation + scope + source.css punctuation.separator - source.php, source.css punctuation.terminator - source.php + settings + + fontStyle + bold + foreground + #DA29FF + + + + name + css property name + scope + source.css meta.property-name + settings + + foreground + #05208C + + + + name + css property value + scope + source.css meta.property-value + settings + + foreground + #0035FF + + + + name + php begin/end block + scope + source.php punctuation.section.embedded.begin, source.php punctuation.section.embedded.end + settings + + fontStyle + bold + foreground + #EE000B + + + + name + php + scope + source.php - punctuation.section + settings + + fontStyle + + foreground + #000000 + + + + name + php varaible + scope + source.php variable, source.php meta.function.arguments + settings + + foreground + #000000 + + + + name + php punctuation + scope + source.php punctuation - string - variable - meta.function + settings + + foreground + #05208C + + + + name + php storage.type + scope + source.php storage.type + settings + + foreground + #24BF96 + + + + name + php keyword general / storage misc + scope + source.php keyword - comment, source.php storage.type.class, source.php storage.type.interface, source.php storage.modifier, source.php constant.language + settings + + foreground + #009714 + + + + name + php support / storage / operator + scope + source.php support , source.php storage, source.php keyword.operator, source.php storage.type.function + settings + + foreground + #0035FF + + + + name + php varaible global + scope + source.php variable.other.global + settings + + foreground + #0092F2 + + + + name + php support constant + scope + source.php support.constant, source.php constant.language.php + settings + + foreground + #551D02 + + + + name + php string + scope + source.php string, source.php string keyword.operator + settings + + fontStyle + + foreground + #E20000 + + + + name + php string variable + scope + source.php string.quoted.double variable + settings + + foreground + #FF6200 + + + + name + php comment general + scope + source.php comment + settings + + foreground + #FF9404 + + + + name + Invalid + scope + invalid + settings + + background + #EFFF8A + fontStyle + bold + foreground + #EE000B + + + + uuid + 4C43099A-C325-4F56-BACB-F332209207B0 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Eiffel.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Eiffel.tmTheme new file mode 100644 index 00000000..1e8160c6 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Eiffel.tmTheme @@ -0,0 +1,439 @@ + + + + + name + Eiffel + author + Ian Joyner + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #000000 + invisibles + #BFBFBF + lineHighlight + #00000012 + selection + #C3DCFF + + + + name + Comment + scope + comment + settings + + fontStyle + + foreground + #00B418 + + + + name + Variable + scope + variable + settings + + fontStyle + italic + foreground + #0206FF + + + + name + Keyword + scope + keyword + settings + + fontStyle + bold + foreground + #0100B6 + + + + name + Number + scope + constant.numeric + settings + + fontStyle + italic + foreground + #CD0000 + + + + name + User-defined constant + scope + constant + settings + + fontStyle + italic + foreground + #C5060B + + + + name + Built-in constant + scope + constant.language + settings + + fontStyle + italic + foreground + #585CF6 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #D80800 + + + + name + String interpolation + scope + constant.character.escape, string source + settings + + fontStyle + + foreground + #26B31A + + + + name + Preprocessor line + scope + meta.preprocessor + settings + + fontStyle + + foreground + #1A921C + + + + name + Preprocessor directive + scope + keyword.control.import + settings + + fontStyle + bold + foreground + #0C450D + + + + name + Function name + scope + entity.name.function, keyword.other.name-of-parameter.objc + settings + + fontStyle + bold + foreground + #0000A2 + + + + name + Type name + scope + entity.name.type + settings + + fontStyle + italic + + + + name + Inherited class name + scope + entity.other.inherited-class + settings + + fontStyle + italic + + + + name + Function parameter + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Function argument and result types + scope + storage.type.method + settings + + fontStyle + + foreground + #70727E + + + + name + Section + scope + meta.section entity.name.section, declaration.section entity.name.section + settings + + fontStyle + italic + + + + name + Library function + scope + support.function + settings + + fontStyle + bold + foreground + #3C4C72 + + + + name + Library object + scope + support.class, support.type + settings + + fontStyle + bold + foreground + #6D79DE + + + + name + Library constant + scope + support.constant + settings + + fontStyle + bold + foreground + #06960E + + + + name + Library variable + scope + support.variable + settings + + fontStyle + bold + foreground + #21439C + + + + name + JS: Operator + scope + keyword.operator.js + settings + + foreground + #687687 + + + + name + Invalid + scope + invalid + settings + + background + #990000 + foreground + #FFFFFF + + + + name + Invalid trailing whitespace + scope + invalid.deprecated.trailing-whitespace + settings + + background + #FFD0D0 + + + + name + Embedded source + scope + text source, string.unquoted + settings + + background + #427FF530 + + + + name + Markup XML declaration + scope + meta.xml-processing, declaration.xml-processing + settings + + fontStyle + + foreground + #68685B + + + + name + Markup DOCTYPE + scope + meta.doctype, declaration.doctype + settings + + fontStyle + + foreground + #888888 + + + + name + Markup DTD + scope + meta.doctype.DTD, declaration.doctype.DTD + settings + + fontStyle + italic + + + + name + Markup tag + scope + meta.tag, declaration.tag + settings + + fontStyle + + foreground + #1C02FF + + + + name + Markup name of tag + scope + entity.name.tag + settings + + fontStyle + bold + + + + name + Markup tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + italic + + + + name + Markup: Heading + scope + markup.heading + settings + + fontStyle + bold + foreground + #0C07FF + + + + name + Markup: Quote + scope + markup.quote + settings + + fontStyle + italic + foreground + #000000 + + + + name + Markup: List + scope + markup.list + settings + + foreground + #B90690 + + + + uuid + ADD7FDE7-C6BE-454B-A71A-7951ED54FB04 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Espresso Libre.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Espresso Libre.tmTheme new file mode 100644 index 00000000..2ccae644 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Espresso Libre.tmTheme @@ -0,0 +1,402 @@ + + + + + author + Chris Thomas + name + Espresso Libre + settings + + + settings + + background + #2A211C + caret + #889AFF + foreground + #BDAE9D + invisibles + #BFBFBF + lineHighlight + #3A312C + selection + #C3DCFF + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #0066FF + + + + name + Keyword + scope + keyword, storage + settings + + fontStyle + bold + foreground + #43A8ED + + + + name + Number + scope + constant.numeric + settings + + fontStyle + + foreground + #44AA43 + + + + name + User-defined constant + scope + constant + settings + + fontStyle + bold + foreground + #C5656B + + + + name + Built-in constant + scope + constant.language + settings + + fontStyle + bold + foreground + #585CF6 + + + + name + Variable + scope + variable.language, variable.other + settings + + fontStyle + + foreground + #318495 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #049B0A + + + + name + String interpolation + scope + constant.character.escape, string source + settings + + fontStyle + + foreground + #2FE420 + + + + name + Preprocessor line + scope + meta.preprocessor + settings + + fontStyle + + foreground + #1A921C + + + + name + Preprocessor directive + scope + keyword.control.import + settings + + fontStyle + bold + foreground + #9AFF87 + + + + name + Function name + scope + entity.name.function, keyword.other.name-of-parameter.objc + settings + + fontStyle + bold + foreground + #FF9358 + + + + name + Type name + scope + entity.name.type + settings + + fontStyle + underline + + + + name + Inherited class name + scope + entity.other.inherited-class + settings + + fontStyle + italic + + + + name + Function parameter + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Function argument and result types + scope + storage.type.method + settings + + fontStyle + + foreground + #8B8E9C + + + + name + Section + scope + meta.section entity.name.section, declaration.section entity.name.section + settings + + fontStyle + italic + + + + name + Library function + scope + support.function + settings + + fontStyle + bold + foreground + #7290D9 + + + + name + Library object + scope + support.class, support.type + settings + + fontStyle + bold + foreground + #6D79DE + + + + name + Library constant + scope + support.constant + settings + + fontStyle + bold + foreground + #00AF0E + + + + name + Library variable + scope + support.variable + settings + + fontStyle + bold + foreground + #2F5FE0 + + + + name + JS: Operator + scope + keyword.operator.js + settings + + foreground + #687687 + + + + name + Invalid + scope + invalid + settings + + background + #990000 + foreground + #FFFFFF + + + + name + Invalid trailing whitespace + scope + invalid.deprecated.trailing-whitespace + settings + + background + #FFD0D0 + + + + name + Embedded source + scope + text source, string.unquoted + settings + + background + #F5AA7730 + + + + name + Markup XML declaration + scope + meta.tag.preprocessor.xml + settings + + fontStyle + + foreground + #8F7E65 + + + + name + Markup DOCTYPE + scope + meta.tag.sgml.doctype + settings + + fontStyle + + foreground + #888888 + + + + name + Markup DTD + scope + string.quoted.docinfo.doctype.DTD + settings + + fontStyle + italic + + + + name + Markup tag + scope + meta.tag, declaration.tag + settings + + fontStyle + + foreground + #43A8ED + + + + name + Markup name of tag + scope + entity.name.tag + settings + + fontStyle + bold + + + + name + Markup tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + italic + + + + uuid + 6B90703E-4E4B-43C8-9D32-921BEDF6D725 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/GitHub.tmTheme b/plugins/node_modules/ace/tool/tmthemes/GitHub.tmTheme new file mode 100644 index 00000000..aa21abce --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/GitHub.tmTheme @@ -0,0 +1,573 @@ + + + + + author + Martin Kühl + comment + A theme based on the GitHub code stylesheet. + name + GitHub + settings + + + comment + +background #files .file .data background-color +caret #files .file .meta color +invisibles .syntax .w +lineHighlight #FFFEEB #files .file .private background-color + alt: #FFFFCC colour that gets added via javascript +selection #B4D5FE handmade :-) + alt: #FFFFCC colour that gets added via javascript + #EAF2F5 #header .userbox background-color + #EAEAEA #files .file background-color + #DEDEDE #files .file border-color + #F9EA86 Mac OS X system selection colour “Gold†+ + settings + + background + #F8F8FF + caret + #666666 + foreground + #000000 + invisibles + #BBBBBB + lineHighlight + #FFFEEB + selection + #B4D5FE + + + + comment + .syntax .c, .syntax .c[ml] + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #999988 + + + + name + Comment.Preproc + scope + comment.block.preprocessor + settings + + comment + .syntax .cp + fontStyle + bold + foreground + #999999 + + + + name + Comment.Special + scope + comment.documentation, comment.block.documentation + settings + + comment + .syntax .cs + fontStyle + bold italic + foreground + #999999 + + + + name + Error + scope + invalid.illegal + settings + + background + #E3D2D2 + comment + .syntax .err + foreground + #A61717 + + + + comment + .syntax .k, .syntax .k[dpr] + name + Keyword + scope + keyword, storage + settings + + fontStyle + bold + + + + comment + .syntax .o, .syntax .ow + name + Operator + scope + keyword.operator + settings + + fontStyle + bold + + + + name + Keyword.Constant + scope + constant.language, support.constant + settings + + comment + .style .kc + fontStyle + bold + + + + name + Keyword.Type + scope + storage.type, support.type + settings + + comment + .style .kt + fontStyle + bold + foreground + #445588 + + + + name + Name.Attribute + scope + entity.other.attribute-name + settings + + comment + .style .na + foreground + #008080 + + + + name + Name.Builtin + scope + variable.other + settings + + comment + .style .nb + foreground + #0086B3 + + + + name + Name.Builtin.Pseudo + scope + variable.language + settings + + comment + .style .bp + foreground + #999999 + + + + comment + TODO: support.class is styled as Name.Constant on GitHub. + name + Name.Class + scope + entity.name.type, entity.other.inherited-class, support.class + settings + + comment + .style .nc + fontStyle + bold + foreground + #445588 + + + + name + Name.Constant + scope + variable.other.constant + settings + + comment + .style .no + foreground + #008080 + + + + name + Name.Entity + scope + constant.character.entity + settings + + comment + .style .ni + foreground + #800080 + + + + name + Name.Exception + scope + entity.name.exception + settings + + comment + .style .ne + foreground + #990000 + + + + name + Name.Function + scope + entity.name.function, support.function, keyword.other.name-of-parameter + settings + + comment + .style .nf + foreground + #990000 + + + + name + Name.Namespace + scope + entity.name.section + settings + + comment + .style .nn + foreground + #555555 + + + + name + Name.Tag + scope + entity.name.tag + settings + + comment + .style .nt + foreground + #000080 + + + + name + Name.Variable + scope + variable.parameter, support.variable + settings + + comment + .style .nv, .style .v[cgi] + foreground + #008080 + + + + name + Literal.Number + scope + constant.numeric, constant.other + settings + + comment + .style .m, .style .m[fhio], .style .il + foreground + #009999 + + + + name + Literal.String + scope + string - string source, constant.character + settings + + comment + .style .s[bcd2ehixl] + fontStyle + + foreground + #DD1144 + + + + name + Literal.String.Regex + scope + string.regexp + settings + + comment + .style .sr + foreground + #009926 + + + + name + Literal.String.Symbol + scope + constant.other.symbol + settings + + comment + .style .ss + foreground + #990073 + + + + name + Punctuation + scope + punctuation + settings + + fontStyle + bold + + + + name + Generic.Deleted + scope + markup.deleted + settings + + background + #FFDDDD + comment + .syntax .gd + foreground + #000000 + + + + name + Generic.Emph + scope + markup.italic + settings + + comment + .syntax .ge + fontStyle + italic + + + + name + Generic.Error + scope + markup.error + settings + + comment + .syntax .gr + foreground + #AA0000 + + + + name + Generic.Heading + scope + markup.heading.1 + settings + + comment + .syntax .gh + foreground + #999999 + + + + name + Generic.Inserted + scope + markup.inserted + settings + + background + #DDFFDD + comment + .syntax .gi + foreground + #000000 + + + + name + Generic.Output + scope + markup.output, markup.raw + settings + + comment + .syntax .go + foreground + #888888 + + + + name + Generic.Prompt + scope + markup.prompt + settings + + comment + .syntax .gp + foreground + #555555 + + + + name + Generic.Strong + scope + markup.bold + settings + + comment + .syntax .gs + fontStyle + bold + + + + name + Generic.Subheading + scope + markup.heading + settings + + comment + .syntax .gu + foreground + #AAAAAA + + + + name + Generic.Traceback + scope + markup.traceback + settings + + comment + .syntax .gt + foreground + #AA0000 + + + + name + Generic.Underline + scope + markup.underline + settings + + fontStyle + underline + + + + name + Extra: Diff Range + scope + meta.diff.range, meta.diff.index, meta.separator + settings + + background + #EAF2F5 + comment + .syntax .gc + foreground + #999999 + + + + name + Extra: Diff From + scope + meta.diff.header.from-file + settings + + background + #FFDDDD + foreground + #999999 + + + + name + Extra: Diff To + scope + meta.diff.header.to-file + settings + + background + #DDFFDD + foreground + #999999 + + + + name + Extra: Link + scope + meta.link + settings + + fontStyle + + foreground + #4183C4 + + + + uuid + FDD6F02A-74F7-4B6C-97F1-857D792EC90E + + diff --git a/plugins/node_modules/ace/tool/tmthemes/IDLE.tmTheme b/plugins/node_modules/ace/tool/tmthemes/IDLE.tmTheme new file mode 100644 index 00000000..704296f5 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/IDLE.tmTheme @@ -0,0 +1,235 @@ + + + + + author + Domenico Carbotta + name + IDLE + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #000000 + invisibles + #BFBFBF + lineHighlight + #00000012 + selection + #BAD6FD + + + + name + Comment + scope + comment + settings + + foreground + #919191 + + + + name + String + scope + string + settings + + foreground + #00A33F + + + + name + Number + scope + constant.numeric + settings + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #A535AE + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + + + name + Variable + scope + variable.language, variable.other + settings + + + + name + Keyword + scope + keyword + settings + + foreground + #FF5600 + + + + name + Storage + scope + storage + settings + + foreground + #FF5600 + + + + name + Type name + scope + entity.name.type + settings + + foreground + #21439C + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + + + name + Function name + scope + entity.name.function + settings + + foreground + #21439C + + + + name + Function argument + scope + variable.parameter + settings + + + + name + Tag name + scope + entity.name.tag + settings + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + + + name + Library function + scope + support.function + settings + + foreground + #A535AE + + + + name + Library constant + scope + support.constant + settings + + foreground + #A535AE + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #A535AE + + + + name + Library variable + scope + support.variable + settings + + foreground + #A535AE + + + + name + Invalid + scope + invalid + settings + + background + #990000 + foreground + #FFFFFF + + + + name + String interpolation + scope + constant.other.placeholder.py + settings + + fontStyle + + foreground + #990000 + + + + uuid + DDC0CBE1-442B-4CB5-80E4-26E4CFB3A277 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Katzenmilch.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Katzenmilch.tmTheme new file mode 100644 index 00000000..3878ffe9 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Katzenmilch.tmTheme @@ -0,0 +1,399 @@ + + + + + name + Katzen-Milch + comment + Those silly germans and their cat milk! Ghee wizz! + settings + + + settings + + background + #f3f2f3 + caret + #100011 + foreground + #0f0009ff + invisibles + #000000 + lineHighlight + #ffffff + selection + #6405D044 + selectionBorder + #8425f0 + bracketContentsOptions + underline + tagsForeground + #0f0009ff + tagsOptions + underline + + + + name + Parenthesis + scope + punctuation.definition.list + settings + + fontStyle + + foreground + #940494 + background + #4444940a + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #404f50aa + background + #5f0fff02 + + + + name + String + scope + string + settings + + foreground + #5a5f9b + background + #aaafdb09 + + + + name + Number + scope + constant.numeric + settings + + foreground + #4f827bee + background + #77c2bb0f + + + + name + User-defined Constant + scope + constant.character, constant.other + settings + + foreground + #025f69ff + background + #7f229910 + + + + name + Built-in Constant + scope + constant.language + settings + + fontStyle + + foreground + #7D7e52 + background + #bDbe820f + + + + name + Storage Modifier + scope + storage.modifier + settings + + fontStyle + bold + foreground + #7B5D8f + background + #9B9FfD0a + + + + name + Storage + scope + storage + settings + + fontStyle + bold + foreground + #7B5cbfff + background + #8B5Ddf0d + + + + name + Function Name + scope + entity.name.function + settings + + fontStyle + + foreground + #025f49f7 + background + #22ff491f + + + + name + Support Function + scope + support.function + settings + + foreground + #9D7e62 + background + #bDbe820a + + + + name + Misc Function + scope + entity.name.function.misc + settings + + foreground + #939469 + background + #E3E4A90a + + + + name + Predicate Function + scope + entity.name.function.predicate + settings + + foreground + #856F63 + background + #A5DF930a + + + + name + Input/Output Function + scope + entity.name.function.io + settings + + foreground + #aF938C + background + #DFB3AC0a + + + + name + External Symbol + scope + variable.other.external-symbol + settings + + foreground + #7BaFaD + background + #BBDFDD0a + + + + name + Variable + scope + variable.language, variable.other + settings + + foreground + #316fcf + background + #3aafff0a + + + + name + Parameter Variable + scope + variable.parameter + settings + + fontStyle + italic + foreground + #33969fdd + background + #05d6f90b + + + + name + Keyword + scope + keyword + settings + + foreground + #674Aa8 + background + #A3AAD80e + + + + name + Class Name + scope + entity.name.class + settings + + fontStyle + bold + foreground + #B9986F + background + #B998DF22 + + + + name + Structure Name + scope + entity.name.structure + settings + + foreground + #22af9d + background + #B998DF0a + + + + name + Type Name + scope + entity.name.type + settings + + foreground + #af47a9 + background + #af77a90d + + + + name + Class name + scope + entity.name.class, entity.name.type.class + settings + + foreground + #cc4357 + background + #ffddff92 + + + + name + Support Class + scope + support.class + settings + + foreground + #ef6aa7ff + background + #ef6aa710 + + + + name + Invalid + scope + invalid + settings + + background + #CC1B27 + foreground + #DFDFD5 + + + + + name + ♦ String embedded-source + scope + string source + settings + + fontStyle + italic + foreground + #13499fdd + background + #0099ff0a + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #3976a2 + background + #49a6d20a + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #4946c2ee + background + #4986c209 + + + + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Kuroir Theme.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Kuroir Theme.tmTheme new file mode 100644 index 00000000..36acd588 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Kuroir Theme.tmTheme @@ -0,0 +1,916 @@ + + + + + author + Stanley Rost + comment + Kuroir + name + Kuroir Theme + settings + + + settings + + background + #E8E9E8 + caret + #202020 + foreground + #363636 + invisibles + #0000004A + lineHighlight + #CBDC2F38 + selection + #F5AA0091 + + bracketsForeground + #C41717 + bracketsOptions + foreground underline + + bracketContentsForeground + #C41717 + bracketContentsOptions + foreground underline background + + guide + #8F8F8F + activeGuide + #FA2828 + + tagsOptions + stippled_underline + + + + name + Comment + scope + comment + settings + + background + #DCDCDC8F + fontStyle + + foreground + #949494E8 + + + + name + Regions + scope + comment.line.region + settings + + background + #E9D6DC85 + fontStyle + + foreground + #A54776 + + + + name + Line Marker + scope + comment.line.marker.php + settings + + background + #E9E4BE + foreground + #668D68 + + + + name + Todo + scope + comment.line.todo.php + settings + + background + #D9EAB8 + fontStyle + + foreground + #456E48 + + + + name + FIXME + scope + comment.line.fixme.php + settings + + background + #E1D0CA + fontStyle + + foreground + #880006 + + + + name + Constant + scope + constant + settings + + foreground + #CD6839 + + + + name + Entity + scope + entity + settings + + background + #E8E9E8 + fontStyle + + foreground + #8B4726 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #A52A2A + + + + name + Keyword Control + scope + keyword.control + settings + + foreground + #CD3700 + + + + name + Library Function + scope + support.function - variable, keyword.other.special-method.ruby + settings + + foreground + #B03060 + + + + name + Comparison + scope + keyword.operator.comparison,keyword.operator.logical + settings + + foreground + #B83126 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #639300 + + + + name + R Interpolation + scope + string.quoted.double.ruby source.ruby.embedded.source + settings + + foreground + #007E69 + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #104E8B + + + + name + Variable + scope + variable + settings + + foreground + #009ACD + + + + name + Invalid Deprecated + scope + invalid.deprecated + settings + + background + #E8E9E8 + fontStyle + italic underline + foreground + #FD1732 + + + + name + Invalid Illegal + scope + invalid.illegal + settings + + background + #FF060026 + foreground + #FD1224 + + + + name + Embedded Source (Bright) + scope + text source + settings + + background + #77ADE900 + foreground + #7B211A + + + + name + Entity inherited-class + scope + entity.other.inherited-class + settings + + fontStyle + italic + foreground + #005273 + + + + name + String.regexp + scope + string.regexp + settings + + background + #C9D4BE + foreground + #417E00 + + + + name + Support.function + scope + support.function + settings + + fontStyle + + foreground + #005273 + + + + name + Support.constant + scope + support.constant + settings + + fontStyle + + foreground + #CF6A4C + + + + name + j Entity Name Type + scope + entity.name.type + settings + + fontStyle + underline + + + + name + j Cast + scope + meta.cast + settings + + fontStyle + italic + foreground + #676767 + + + + name + Doctype/XML Processing + scope + meta.sgml.html meta.doctype, meta.sgml.html meta.doctype entity, meta.sgml.html meta.doctype string, meta.xml-processing, meta.xml-processing entity, meta.xml-processing string + settings + + foreground + #494949 + + + + name + Meta.tag.all + scope + meta.tag, meta.tag entity + settings + + foreground + #005273 + + + + name + Meta.tag.inline + scope + source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity + settings + + foreground + #005273 + + + + name + Namespaces + scope + entity.name.tag.namespace, entity.other.attribute-name.namespace + settings + + foreground + #B85423 + + + + name + css tag-name + scope + entity.name.tag.css + settings + + foreground + #B83126 + + + + name + css:pseudo-class + scope + meta.selector.css entity.other.attribute-name.tag.pseudo-class + settings + + foreground + #B12E25 + + + + name + css#id + scope + meta.selector.css entity.other.attribute-name.id,entity.other.attribute-name.id.css + settings + + foreground + #B8002D + + + + name + css.class + scope + meta.selector.css entity.other.attribute-name.class, entity.other.attribute-name.class.css + settings + + foreground + #B8012D + + + + name + css property-name: + scope + support.type.property-name.css, meta.property-name + settings + + foreground + #005273 + + + + name + css @at-rule + scope + meta.preprocessor.at-rule keyword.control.at-rule + settings + + foreground + #8693A5 + + + + name + css property-value; + scope + meta.property-value + settings + + foreground + #417E00 + + + + name + css property-value color + scope + constant.other.color + settings + + foreground + #B8860B + + + + name + css !important / !default + scope + keyword.other.important,keyword.other.default + settings + + foreground + #EE3A8C + + + + name + css additional-constants + scope + meta.property-value support.constant.named-color.css, meta.property-value constant + settings + + foreground + #417E00 + + + + + + name + css constructor.argument + scope + meta.constructor.argument.css + settings + + foreground + #417E00 + + + + name + css constant.numeric + scope + constant.numeric + settings + + foreground + #9A5925 + + + + name + css keyword.unit + scope + keyword.other + settings + + foreground + #9F5E3D + + + + name + css keyword.unit + scope + source.scss support.function.misc + settings + + foreground + #1B76B0 + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + background + #82000E + fontStyle + italic + foreground + #F8BEBE + + + + name + diff.deleted + scope + markup.deleted + settings + + background + #420E09 + foreground + #F8F8F8 + + + + name + diff.changed + scope + markup.changed + settings + + background + #4A410D + foreground + #F8F8F8 + + + + name + diff.inserted + scope + markup.inserted + settings + + background + #253B22 + foreground + #F8F8F8 + + + + name + Markup: Italic + scope + markup.italic + settings + + fontStyle + italic + foreground + #CD2626 + + + + name + Markup: Bold + scope + markup.bold + settings + + fontStyle + bold + foreground + #8B1A1A + + + + name + Markup: Underline + scope + markup.underline + settings + + fontStyle + underline + foreground + #E18964 + + + + name + Markup: Quote + scope + markup.quote + settings + + background + #FEE09C12 + fontStyle + italic + foreground + #8B7765 + + + + name + Markup: Heading + scope + markup.heading, markup.heading entity + settings + + background + #BF61330D + fontStyle + + foreground + #B8012D + + + + name + Markup: List + scope + markup.list + settings + + foreground + #8F5B26 + + + + name + Markup: Raw + scope + markup.raw + settings + + background + #B1B3BA08 + fontStyle + + foreground + #578BB3 + + + + name + Markup: Comment + scope + markup comment + settings + + fontStyle + italic + foreground + #F67B37 + + + + name + Markup: Separator + scope + meta.separator + settings + + background + #242424 + foreground + #60A633 + + + + name + Markup: Other + scope + markup.other + settings + + background + #B1B3BA08 + fontStyle + + foreground + #578BB3 + + + + name + Log Entry + scope + meta.line.entry.logfile, meta.line.exit.logfile + settings + + background + #EEEEEE29 + + + + name + Log Entry Error + scope + meta.line.error.logfile + settings + + background + #751012 + + + + name + SCSS Punctuation End Comments + scope + punctuation.definition.end + settings + + background + #DCDCDC8F + fontStyle + + + + + name + -------------------------------- + settings + + + + name + HTML Attribute name + scope + entity.other.attribute-name.html + settings + + foreground + #629F9E + + + + name + JS String + scope + string.quoted.double.js, string.quoted.single.js + settings + + foreground + #79A316 + + + + name + JS Function + scope + entity.name.function.js + settings + + foreground + #488C45 + fontStyle + italic + + + + name + JS Embedded code general + scope + source.js.embedded.html + settings + + foreground + #666 + + + + name + JS Storage Type + scope + storage.type.js + settings + + foreground + #BB3182 + + + + name + JS Support Class + scope + support.class.js + settings + + foreground + #338FD5 + + + + name + JS Control Keyword + scope + keyword.control.js, keyword.operator.js + settings + + foreground + #A99904 + fontStyle + italic + + + + + name + Matching Pairs + scope + entity.name.class + settings + + background + #D7D7A7 + foreground + #616838 + fontStyle + + + + + name + Active Guide + scope + active_guide + settings + + background + #968F96 + fontStyle + + + + + name + Highlight Matching Word + scope + highlight_matching_word + settings + + background + #CBDC2F38 + fontStyle + + + + + uuid + 467560D0-6ACE-4409-82FD-4791420837AC + + diff --git a/plugins/node_modules/ace/tool/tmthemes/LAZY.tmTheme b/plugins/node_modules/ace/tool/tmthemes/LAZY.tmTheme new file mode 100644 index 00000000..09ff5111 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/LAZY.tmTheme @@ -0,0 +1,291 @@ + + + + + author + Domenico Carbotta + name + LAZY + settings + + + settings + + background + #FFFFFF + caret + #7C7C7C + foreground + #000000 + invisibles + #B6B6B6 + lineHighlight + #EFFCA68F + selection + #E3FC8D + + + + name + Comment + scope + comment + settings + + fontStyle + + foreground + #8C868F + + + + name + Constant + scope + constant + settings + + fontStyle + + foreground + #3B5BB5 + + + + name + Entity + scope + entity + settings + + fontStyle + + foreground + #3B5BB5 + + + + name + Latex Entity + scope + text.tex.latex entity + settings + + fontStyle + + foreground + #D62A28 + + + + name + Keyword + scope + keyword, storage + settings + + fontStyle + + foreground + #FF7800 + + + + name + String + scope + string, meta.verbatim + settings + + fontStyle + + foreground + #409B1C + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #3B5BB5 + + + + name + Variable + scope + variable + settings + + fontStyle + + + + + name + Invalid – Deprecated + scope + invalid.deprecated + settings + + fontStyle + italic + foreground + #990000 + + + + name + Invalid – Illegal + scope + invalid.illegal + settings + + background + #9D1E15 + foreground + #F8F8F8 + + + + name + Superclass + scope + entity.other.inherited-class + settings + + fontStyle + italic + foreground + #3B5BB5 + + + + name + String interpolation + scope + string constant.other.placeholder + settings + + fontStyle + + foreground + #671EBB + + + + name + meta.function-call.py + scope + meta.function-call.py + settings + + fontStyle + + foreground + #3E4558 + + + + name + meta.tag + scope + meta.tag, meta.tag entity + settings + + foreground + #3A4A64 + + + + name + OCaml variant + scope + keyword.type.variant + settings + + fontStyle + + foreground + #7F90AA + + + + name + OCaml operator + scope + source.ocaml keyword.operator + settings + + foreground + #000000 + + + + name + OCaml infix operator + scope + source.ocaml keyword.operator.symbol.infix + settings + + fontStyle + + foreground + #3B5BB5 + + + + name + OCaml prefix operator + scope + source.ocaml keyword.operator.symbol.prefix + settings + + foreground + #3B5BB5 + + + + name + OCaml infix f-p operator + scope + source.ocaml keyword.operator.symbol.infix.floating-point + settings + + fontStyle + underline + + + + name + OCaml prefix f-p operator + scope + source.ocaml keyword.operator.symbol.prefix.floating-point + settings + + fontStyle + underline + + + + name + OCaml f-p constant + scope + source.ocaml constant.numeric.floating-point + settings + + fontStyle + underline + + + + uuid + A1E55FCB-3CD2-4811-9E73-D9B87419443A + + diff --git a/plugins/node_modules/ace/tool/tmthemes/LICENSE b/plugins/node_modules/ace/tool/tmthemes/LICENSE new file mode 100644 index 00000000..08f1380f --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/LICENSE @@ -0,0 +1,8 @@ +If not otherwise specified (see below), files in this directory fall under the following license: + + Permission to copy, use, modify, sell and distribute this + software is granted. This software is provided "as is" without + express or implied warranty, and with no claim as to its + suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license†suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy†is accompanied by “tidy-license.txtâ€. \ No newline at end of file diff --git a/plugins/node_modules/ace/tool/tmthemes/MagicWB (Amiga).tmTheme b/plugins/node_modules/ace/tool/tmthemes/MagicWB (Amiga).tmTheme new file mode 100644 index 00000000..7897886b --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/MagicWB (Amiga).tmTheme @@ -0,0 +1,376 @@ + + + + + author + Allan Odgaard + comment + Inspired by the original 8 MagicWB colors from Martin Huttenloher + name + MagicWB (Amiga) + settings + + + settings + + background + #969696 + caret + #FFFFFF + foreground + #000000 + invisibles + #FF38FF + lineHighlight + #00000012 + selection + #B1B1B1 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #8D2E75 + + + + name + String + scope + string + settings + + background + #FF000033 + fontStyle + + foreground + #FFFFFF + + + + name + Number + scope + constant.numeric + settings + + foreground + #FFFFFF + + + + name + Constant: Built-in + scope + constant.language + settings + + fontStyle + bold + foreground + #FFA995 + + + + name + Constant: User-defined + scope + constant.character, constant.other + settings + + background + #0000FF33 + fontStyle + + foreground + #FFA995 + + + + name + Variable + scope + variable.language, variable.other + settings + + foreground + #FFA995 + + + + name + Keyword + scope + keyword + settings + + fontStyle + bold + + + + name + Storage + scope + storage + settings + + fontStyle + bold + foreground + #3A68A3 + + + + name + Type Name + scope + entity.name.type + settings + + fontStyle + underline + + + + name + Inherited Class + scope + entity.other.inherited-class + settings + + fontStyle + italic + + + + name + Function Name + scope + entity.name.function + settings + + fontStyle + + foreground + #FFA995 + + + + name + Function Argument + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Entity Name + scope + entity.name + settings + + fontStyle + bold + foreground + #0000FF + + + + name + Tag Attribute + scope + entity.other.attribute-name + settings + + fontStyle + italic + foreground + #3A68A3 + + + + name + Library Function + scope + support.function + settings + + foreground + #E5B3FF + + + + name + Objective-C Method Call + scope + support.function.any-method + settings + + fontStyle + + foreground + #000000 + + + + name + Objective-C Method Call - : + scope + support.function.any-method - punctuation + settings + + fontStyle + italic + + + + name + Library Constant + scope + support.constant + settings + + foreground + #FFFFFF + + + + name + Library Class/Type + scope + support.type, support.class + settings + + foreground + #FFA995 + + + + name + Library Variable + scope + support.variable + settings + + foreground + #3A68A3 + + + + name + Invalid + scope + invalid + settings + + background + #797979 + foreground + #FFFFFF + + + + name + Include <system> + scope + string.quoted.other.lt-gt.include + settings + + background + #969696 + fontStyle + italic + foreground + #FFA995 + + + + name + Include "user" + scope + string.quoted.double.include + settings + + background + #969696 + foreground + #FFA995 + + + + name + Markup: List Item + scope + markup.list + settings + + foreground + #4D4E60 + + + + name + Markup: Raw + scope + markup.raw + settings + + background + #0000FF + foreground + #FFFFFF + + + + name + Markup: Quote (Email) + scope + markup.quote + settings + + foreground + #00F0C9 + + + + name + Markup: Quote Double (Email) + scope + markup.quote markup.quote + settings + + fontStyle + + foreground + #4C457E + + + + name + Embedded Source + scope + text.html source + settings + + background + #8A9ECB + + + + uuid + B0A18BAA-6220-481C-9914-F6D3E51B5410 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Merbivore Soft.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Merbivore Soft.tmTheme new file mode 100644 index 00000000..60c4cc94 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Merbivore Soft.tmTheme @@ -0,0 +1,322 @@ + + + + + name + Merbivore Soft + settings + + + settings + + background + #1C1C1C + caret + #FFFFFF + foreground + #E6E1DC + invisibles + #404040 + lineHighlight + #333435 + selection + #494949 + + + + name + Source + scope + source + settings + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #AC4BB8 + + + + name + Deprecated + scope + invalid.deprecated + settings + + foreground + #FFFFFF + background + #FE3838 + + + + name + Keyword + scope + keyword, storage + settings + + fontStyle + + foreground + #FC803A + + + + name + Function (definition) + scope + entity.name.function, keyword.other.name-of-parameter.objc + settings + + fontStyle + + + + + name + Class (definition) + scope + entity.name + settings + + + + name + Class inheritence + scope + entity.other.inherited-class + settings + + foreground + #C984CD + + + + name + Number + scope + constant.numeric + settings + + fontStyle + + foreground + #7FC578 + + + + name + Variable + scope + variable.language, variable.other + settings + + fontStyle + + + + + name + Constant + scope + constant + settings + + fontStyle + + foreground + #68C1D8 + + + + name + Constant (other variable) + scope + variable.other.constant + settings + + + + name + Constant (built-in) + scope + constant.language + settings + + fontStyle + + foreground + #E1C582 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #8EC65F + + + + name + Library function + scope + support.function + settings + + fontStyle + + + + + name + Library constant + scope + constant.library + settings + + foreground + #8EC65F + + + + name + Library type + scope + support.type + settings + + foreground + #68C1D8 + + + + name + Library constant + scope + support.constant + settings + + foreground + #8EC65F + + + + name + Markup tag + scope + meta.tag, declaration.tag, entity.name.tag + settings + + fontStyle + + foreground + #FC803A + + + + name + Markup tag + scope + meta + settings + + fontStyle + italic + foreground + #AC4BB8 + + + + name + Markup tag attribute + scope + entity.other.attribute-name + settings + + foreground + #EAF1A3 + + + + name + Invalid + scope + invalid + settings + + background + #FE3838 + foreground + #FFFFFF + + + + name + String interpolation + scope + constant.character.escaped, constant.character.escape, string source, string source.ruby + settings + + fontStyle + + foreground + #B3E5B4 + + + + name + Diff Add + scope + markup.inserted + settings + + background + #6FC58B + foreground + #E6E1DC + + + + name + Diff Remove + scope + markup.deleted + settings + + background + #AC3735 + foreground + #E6E1DC + + + + name + Diff Header + scope + meta.diff.header, meta.separator.diff, meta.diff.index, meta.diff.range + settings + + background + #5A9EE1 + + + + uuid + B3517E4B-5243-46CF-AB04-9AE7B41DE3F2 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Merbivore.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Merbivore.tmTheme new file mode 100644 index 00000000..41afeb81 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Merbivore.tmTheme @@ -0,0 +1,296 @@ + + + + + name + Merbivore + settings + + + settings + + background + #161616 + caret + #FFFFFF + foreground + #E6E1DC + invisibles + #404040 + lineHighlight + #333435 + selection + #454545 + + + + name + Source + scope + source + settings + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #AD2EA4 + + + + name + Keyword + scope + keyword, storage + settings + + fontStyle + + foreground + #FC6F09 + + + + name + Function (definition) + scope + entity.name.function, keyword.other.name-of-parameter.objc + settings + + fontStyle + + + + + name + Class (definition) + scope + entity.name + settings + + + + name + Class inheritence + scope + entity.other.inherited-class + settings + + foreground + #FC83FF + + + + name + Number + scope + constant.numeric + settings + + fontStyle + + foreground + #58C554 + + + + name + Variable + scope + variable.language, variable.other + settings + + fontStyle + + + + + name + Constant + scope + constant + settings + + fontStyle + + foreground + #1EDAFB + + + + name + Constant (other variable) + scope + variable.other.constant + settings + + + + name + Constant lib + scope + constant.library + settings + + foreground + #8DFF0A + + + + name + support function + scope + support.function + settings + + foreground + #FC6F09 + + + + name + Constant (built-in) + scope + constant.language + settings + + fontStyle + + foreground + #FDC251 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #8DFF0A + + + + name + Library type + scope + support.type + settings + + foreground + #1EDAFB + + + + name + Library constant + scope + support.constant + settings + + foreground + #8DFF0A + + + + name + Markup tag + scope + meta.tag, declaration.tag, entity.name.tag + settings + + fontStyle + + foreground + #FC6F09 + + + + name + Markup tag attribute + scope + entity.other.attribute-name + settings + + foreground + #FFFF89 + + + + name + Invalid + scope + invalid + settings + + background + #990000 + foreground + #FFFFFF + + + + name + String interpolation + scope + constant.character.escaped, constant.character.escape, string source, string source.ruby + settings + + fontStyle + + foreground + #519F50 + + + + name + Diff Add + scope + markup.inserted + settings + + background + #144212 + foreground + #E6E1DC + + + + name + Diff Remove + scope + markup.deleted + settings + + background + #660000 + foreground + #E6E1DC + + + + name + Diff Header + scope + meta.diff.header, meta.separator.diff, meta.diff.index, meta.diff.range + settings + + background + #2F33AB + + + + uuid + 2ABC646D-06F3-48A5-94E9-18EF34474C97 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Monokai.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Monokai.tmTheme new file mode 100644 index 00000000..c179cbe2 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Monokai.tmTheme @@ -0,0 +1,387 @@ + + + + + name + Monokai + settings + + + settings + + background + #272822 + caret + #F8F8F0 + foreground + #F8F8F2 + invisibles + #3B3A32 + lineHighlight + #3E3D32 + selection + #49483E + findHighlight + #FFE792 + findHighlightForeground + #000000 + selectionBorder + #222218 + activeGuide + #9D550FB0 + + bracketsForeground + #F8F8F2A5 + bracketsOptions + underline + + bracketContentsForeground + #F8F8F2A5 + bracketContentsOptions + underline + + tagsOptions + stippled_underline + + + + name + Comment + scope + comment + settings + + foreground + #75715E + + + + name + String + scope + string + settings + + foreground + #E6DB74 + + + + name + Number + scope + constant.numeric + settings + + foreground + #AE81FF + + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #AE81FF + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #AE81FF + + + + name + Variable + scope + variable + settings + + fontStyle + + + + + name + Keyword + scope + keyword + settings + + foreground + #F92672 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #F92672 + + + + name + Storage type + scope + storage.type + settings + + fontStyle + italic + foreground + #66D9EF + + + + name + Class name + scope + entity.name.class + settings + + fontStyle + underline + foreground + #A6E22E + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + fontStyle + italic underline + foreground + #A6E22E + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + foreground + #A6E22E + + + + name + Function argument + scope + variable.parameter + settings + + fontStyle + italic + foreground + #FD971F + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #F92672 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #A6E22E + + + + name + Library function + scope + support.function + settings + + fontStyle + + foreground + #66D9EF + + + + name + Library constant + scope + support.constant + settings + + fontStyle + + foreground + #66D9EF + + + + name + Library class/type + scope + support.type, support.class + settings + + fontStyle + italic + foreground + #66D9EF + + + + name + Library variable + scope + support.other.variable + settings + + fontStyle + + + + + name + Invalid + scope + invalid + settings + + background + #F92672 + fontStyle + + foreground + #F8F8F0 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + background + #AE81FF + foreground + #F8F8F0 + + + + name + JSON String + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #CFCFC2 + + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #75715E + + + + name + diff.deleted + scope + markup.deleted + settings + + foreground + #F92672 + + + + name + diff.inserted + scope + markup.inserted + settings + + foreground + #A6E22E + + + + name + diff.changed + scope + markup.changed + settings + + foreground + #E6DB74 + + + + + scope + constant.numeric.line-number.find-in-files - match + settings + + foreground + #AE81FFA0 + + + + scope + entity.name.filename.find-in-files + settings + + foreground + #E6DB74 + + + + + uuid + D8D5E82E-3D5B-46B5-B38E-8C841C21347D + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Pastels on Dark.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Pastels on Dark.tmTheme new file mode 100644 index 00000000..47b83631 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Pastels on Dark.tmTheme @@ -0,0 +1,727 @@ + + + + + author + Mats Persson + name + Pastels on Dark + settings + + + settings + + background + #2C2828 + caret + #A7A7A7 + foreground + #8F938F + invisibles + #FFFFFF40 + lineHighlight + #FFFFFF08 + selection + #DDF0FF33 + + + + name + Comments + scope + comment + settings + + fontStyle + + foreground + #A6C6FF + + + + name + Comments Block + scope + comment.block + settings + + fontStyle + + foreground + #A6C6FF + + + + name + Strings + scope + string + settings + + foreground + #66A968 + + + + name + Numbers + scope + constant.numeric + settings + + fontStyle + + foreground + #CCCCCC + + + + name + Keywords + scope + keyword + settings + + fontStyle + + foreground + #757aD8 + + + + name + Preprocessor Line + scope + meta.preprocessor + settings + + fontStyle + + foreground + #2F006E + + + + name + Preprocessor Directive + scope + keyword.control.import + settings + + fontStyle + bold + + + + name + Functions + scope + support.function + settings + + fontStyle + + foreground + #AEB2F8 + + + + name + Function result + scope + declaration.function function-result + settings + + foreground + #0000FF + + + + name + Function name + scope + declaration.function function-name + settings + + fontStyle + bold + + + + name + Function argument name + scope + declaration.function argument-name + settings + + fontStyle + bold + + + + name + Function argument type + scope + declaration.function function-arg-type + settings + + foreground + #0000FF + + + + name + Function argument variable + scope + declaration.function function-argument + settings + + fontStyle + italic + + + + name + Class name + scope + declaration.class class-name + settings + + fontStyle + underline + + + + name + Class inheritance + scope + declaration.class class-inheritance + settings + + fontStyle + italic underline + + + + name + Invalid + scope + invalid, invalid.illegal + settings + + background + #562D56BF + fontStyle + bold + foreground + #F8F8F8 + + + + name + Invalid + scope + invalid.deprecated + settings + + fontStyle + italic, underline + foreground + #D2A8A1 + + + + name + Invalid Trailing Whitespace + scope + invalid.deprecated.trailing-whitespace + settings + + fontStyle + bold + background + #FFD0D0 + + + + name + Section + scope + declaration.section section-name + settings + + fontStyle + italic + + + + name + Interpolation + scope + string.interpolation + settings + + foreground + #C10006 + + + + name + Regular Expressions + scope + string.regexp + settings + + fontStyle + + foreground + #E9C062 + + + + name + Variables + scope + variable + settings + + foreground + #BEBF55 + + + + name + Variables + scope + variable.language + settings + + foreground + #C1C144 + + + + name + Constants + scope + constant + settings + + foreground + #4FB7C5 + + + + name + Character Constants + scope + constant.character + settings + + fontStyle + + foreground + #AFA472 + + + + name + Language Constants + scope + constant.language + settings + + fontStyle + bold + foreground + #DE8E30 + + + + name + Embedded Code + scope + embedded + settings + + fontStyle + underline + + + + name + Tag name + scope + keyword.markup.element-name + settings + + fontStyle + + foreground + #858EF4 + + + + name + Attribute name + scope + keyword.markup.attribute-name + settings + + fontStyle + + foreground + #9B456F + + + + name + Attribute with Value + scope + meta.attribute-with-value + settings + + fontStyle + + foreground + #9B456F + + + + name + Exceptions + scope + keyword.exception + settings + + fontStyle + bold + foreground + #C82255 + + + + name + Operators + scope + keyword.operator + settings + + fontStyle + + foreground + #797878 + + + + name + Control Structures + scope + keyword.control + settings + + fontStyle + bold + foreground + #6969FA + + + + name + HTML: DocInfo XML + scope + meta.tag.preprocessor.xml + settings + + foreground + #68685B + + + + name + HTML: DocType + scope + meta.tag.sgml.doctype + settings + + foreground + #494949 + + + + name + HTML: DocInfo DTD + scope + string.quoted.docinfo.doctype.DTD + settings + + fontStyle + italic + + + + name + HTML: ServerSide Includes + scope + comment.other.server-side-include.xhtml, comment.other.server-side-include.html + settings + + foreground + #909090 + + + + name + HTML: Tag + scope + text.html declaration.tag, text.html meta.tag, text.html entity.name.tag.xhtml + settings + + foreground + #858EF4 + + + + name + HTML: attribute="" + scope + keyword.markup.attribute-name + settings + + foreground + #9B456F + + + + name + PHP: PHPdocs + scope + keyword.other.phpdoc.php + settings + + foreground + #777777 + + + + name + PHP: Include() & Require() + scope + keyword.other.include.php + settings + + foreground + #C82255 + + + + name + PHP: Constants Core Predefined + scope + support.constant.core.php + settings + + fontStyle + bold + foreground + #DE8E20 + + + + name + PHP: Constants Standard Predefined + scope + support.constant.std.php + settings + + fontStyle + bold + foreground + #DE8E10 + + + + name + PHP: Variables Globals + scope + variable.other.global.php + settings + + foreground + #B72E1D + + + + name + PHP: Variables Safer Globals + scope + variable.other.global.safer.php + settings + + foreground + #00FF00 + + + + name + PHP: Strings Single-Quoted + scope + string.quoted.single.php + settings + + foreground + #BFA36D + + + + name + PHP: Keywords Storage + scope + keyword.storage.php + settings + + foreground + #6969FA + + + + name + PHP: Strings Double-Quoted + scope + string.quoted.double.php + settings + + foreground + #AD9361 + + + + name + CSS: Selectors #ID + scope + entity.other.attribute-name.id.css + settings + + foreground + #EC9E00 + + + + name + CSS: Selectors <Elements> + scope + entity.name.tag.css + settings + + fontStyle + bold + foreground + #B8CD06 + + + + name + CSS: Selectors .ClassName + scope + entity.other.attribute-name.class.css + settings + + foreground + #EDCA06 + + + + name + CSS: Selectors :PseudoClass + scope + entity.other.attribute-name.pseudo-class.css + settings + + foreground + #2E759C + + + + name + CSS: Invalid Comma + scope + invalid.bad-comma.css + settings + + background + #FF0000 + foreground + #FFFFFF + + + + name + CSS: Property Value + scope + support.constant.property-value.css + settings + + foreground + #9B2E4D + + + + name + CSS: Property Keyword + scope + support.type.property-name.css + settings + + foreground + #E1C96B + + + + name + CSS: Property Colours + scope + constant.other.rgb-value.css + settings + + foreground + #666633 + + + + name + CSS: Font Names + scope + support.constant.font-name.css + settings + + foreground + #666633 + + + + name + TMLangDef: Keys + scope + support.constant.tm-language-def, support.constant.name.tm-language-def + settings + + foreground + #7171F3 + + + + name + CSS: Units + scope + keyword.other.unit.css + settings + + foreground + #6969FA + + + + uuid + 343011CC-B7DF-11D9-B5C6-000D93C8BE28 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Slush and Poppies.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Slush and Poppies.tmTheme new file mode 100644 index 00000000..02ecbcbe --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Slush and Poppies.tmTheme @@ -0,0 +1,336 @@ + + + + + author + William D. Neumann + name + Slush & Poppies + settings + + + settings + + background + #F1F1F1 + caret + #000000 + foreground + #000000 + invisibles + #BFBFBF + lineHighlight + #00000026 + selection + #B0B0FF + + + + name + Comment + scope + comment + settings + + fontStyle + + foreground + #406040 + + + + name + String + scope + string + settings + + foreground + #C03030 + + + + name + Number + scope + constant.numeric + settings + + foreground + #0080A0 + + + + name + OCaml floating-point constants + scope + source.ocaml constant.numeric.floating-point + settings + + fontStyle + underline + + + + name + Character constants + scope + constant.character + settings + + foreground + #800000 + + + + name + Built-in constant + scope + constant.language + settings + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + + + name + Variable + scope + variable.parameter, variable.other + settings + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #2060A0 + + + + name + Operators + scope + keyword.operator + settings + + fontStyle + + foreground + #2060A0 + + + + name + OCaml prefix f-p operators + scope + source.ocaml keyword.operator.symbol.prefix.floating-point + settings + + fontStyle + underline + + + + name + OCaml infix f-p operators + scope + source.ocaml keyword.operator.symbol.infix.floating-point + settings + + fontStyle + underline + + + + name + Module Keyword + scope + entity.name.module, support.other.module + settings + + fontStyle + + foreground + #0080FF + + + + name + Storage types + scope + storage.type + settings + + foreground + #A08000 + + + + name + Storage + scope + storage + settings + + foreground + #008080 + + + + name + Variant types + scope + entity.name.class.variant + settings + + foreground + #C08060 + + + + name + Directives + scope + keyword.other.directive + settings + + fontStyle + bold + + + + name + Line-number directives + scope + source.ocaml keyword.other.directive.line-number + settings + + fontStyle + + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + foreground + #800000 + + + + name + Type name + scope + storage.type.user-defined + settings + + foreground + #800080 + + + + name + Class type name + scope + entity.name.type.class.type + settings + + foreground + #8000C0 + + + + name + Function argument + scope + variable.parameter + settings + + + + name + Tag name + scope + entity.name.tag + settings + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + + + name + Library function + scope + support.function + settings + + + + name + Library constant + scope + support.constant + settings + + + + name + Library class/type + scope + support.type, support.class + settings + + + + name + Library variable + scope + support.variable + settings + + + + name + Invalid + scope + invalid + settings + + + + uuid + D68685B8-1CFE-4C10-99C4-E21CBC892376 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Solarized-dark.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Solarized-dark.tmTheme new file mode 100644 index 00000000..4efdabdb --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Solarized-dark.tmTheme @@ -0,0 +1,312 @@ + + + + + name + Solarized (dark) + settings + + + settings + + background + #002B36 + caret + #D30102 + foreground + #93A1A1 + invisibles + #93A1A180 + lineHighlight + #073642 + selection + #073642 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #657B83 + + + + name + String + scope + string + settings + + foreground + #2AA198 + + + + name + Regexp + scope + string.regexp + settings + + foreground + #D30102 + + + + name + Number + scope + constant.numeric + settings + + foreground + #D33682 + + + + name + Variable + scope + variable.language, variable.other + settings + + foreground + #268BD2 + + + + name + Keyword + scope + keyword + settings + + foreground + #859900 + + + + name + Storage + scope + storage + settings + + fontStyle + bold + foreground + #93A1A1 + + + + name + Class name + scope + entity.name.class, entity.name.type.class + settings + + fontStyle + + foreground + #CB4B16 + + + + name + Function name + scope + entity.name.function + settings + + foreground + #268BD2 + + + + name + Variable start + scope + punctuation.definition.variable + settings + + foreground + #859900 + + + + name + Embedded code markers + scope + punctuation.section.embedded.begin, punctuation.section.embedded.end + settings + + foreground + #D30102 + + + + name + Built-in constant + scope + constant.language, meta.preprocessor + settings + + foreground + #B58900 + + + + name + Support.construct + scope + support.function.construct, keyword.other.new + settings + + foreground + #CB4B16 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #CB4B16 + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + foreground + #6C71C4 + + + + name + Function argument + scope + variable.parameter + settings + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + bold + foreground + #268BD2 + + + + name + Tag start/end + scope + punctuation.definition.tag + settings + + foreground + #657B83 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + foreground + #93A1A1 + + + + name + Library function + scope + support.function + settings + + foreground + #268BD2 + + + + name + Continuation + scope + punctuation.separator.continuation + settings + + foreground + #D30102 + + + + name + Library constant + scope + support.constant + settings + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #859900 + + + + name + Library Exception + scope + support.type.exception + settings + + foreground + #CB4B16 + + + + name + Library variable + scope + support.other.variable + settings + + + + name + Invalid + scope + invalid + settings + + + + uuid + F930B0BF-AA03-4232-A30F-CEF749FF8E72 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Solarized-light.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Solarized-light.tmTheme new file mode 100644 index 00000000..9db72b86 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Solarized-light.tmTheme @@ -0,0 +1,305 @@ + + + + + name + Solarized (light) + settings + + + settings + + background + #FDF6E3 + caret + #000000 + foreground + #586E75 + invisibles + #93A1A180 + lineHighlight + #EEE8D5 + selection + #073642 + + + + name + Comment + scope + comment + settings + + foreground + #93A1A1 + + + + name + String + scope + string + settings + + foreground + #2AA198 + + + + name + Regexp + scope + string.regexp + settings + + foreground + #D30102 + + + + name + Number + scope + constant.numeric + settings + + foreground + #D33682 + + + + name + Variable + scope + variable.language, variable.other + settings + + foreground + #268BD2 + + + + name + Keyword + scope + keyword + settings + + foreground + #859900 + + + + name + Storage + scope + storage + settings + + fontStyle + bold + foreground + #073642 + + + + name + Class name + scope + entity.name.class, entity.name.type.class + settings + + foreground + #268BD2 + + + + name + Function name + scope + entity.name.function + settings + + foreground + #268BD2 + + + + name + Variable start + scope + punctuation.definition.variable + settings + + foreground + #859900 + + + + name + Embedded code markers + scope + punctuation.section.embedded.begin, punctuation.section.embedded.end + settings + + foreground + #D30102 + + + + name + Built-in constant + scope + constant.language, meta.preprocessor + settings + + foreground + #B58900 + + + + name + Support.construct + scope + support.function.construct, keyword.other.new + settings + + foreground + #D30102 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #CB4B16 + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + + + name + Function argument + scope + variable.parameter + settings + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + bold + foreground + #268BD2 + + + + name + Tag start/end + scope + punctuation.definition.tag.begin, punctuation.definition.tag.end + settings + + foreground + #93A1A1 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + foreground + #93A1A1 + + + + name + Library function + scope + support.function + settings + + foreground + #268BD2 + + + + name + Continuation + scope + punctuation.separator.continuation + settings + + foreground + #D30102 + + + + name + Library constant + scope + support.constant + settings + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #859900 + + + + name + Library Exception + scope + support.type.exception + settings + + foreground + #CB4B16 + + + + name + Library variable + scope + support.other.variable + settings + + + + name + Invalid + scope + invalid + settings + + + + uuid + 38E819D9-AE02-452F-9231-ECC3B204AFD7 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/SpaceCadet.tmTheme b/plugins/node_modules/ace/tool/tmthemes/SpaceCadet.tmTheme new file mode 100644 index 00000000..156f43de --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/SpaceCadet.tmTheme @@ -0,0 +1,212 @@ + + + + + author + Alex Ross + comment + Created by Alex Ross + name + SpaceCadet + settings + + + settings + + background + #0D0D0D + caret + #7F005D + foreground + #DDE6CF + invisibles + #BFBFBF + lineHighlight + #00000012 + selection + #40002F + + + + name + Comment + scope + comment + settings + + foreground + #473C45 + + + + name + String + scope + string + settings + + foreground + #805978 + + + + name + Constant + scope + constant + settings + + foreground + #A8885A + + + + name + Variable + scope + variable.parameter, variable.other + settings + + foreground + #596380 + + + + name + Keyword + scope + keyword - keyword.operator, keyword.operator.logical + settings + + foreground + #728059 + + + + name + Storage + scope + storage + settings + + foreground + #9EBF60 + + + + name + Entity + scope + entity + settings + + foreground + #6078BF + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + fontStyle + italic + + + + name + Support + scope + support + settings + + foreground + #8A4B66 + + + + name + Exception + scope + support.type.exception + settings + + foreground + #893062 + + + + name + Tag name + scope + entity.name.tag + settings + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + + + name + Library constant + scope + support.constant + settings + + + + name + Library class/type + scope + support.type, support.class + settings + + + + name + Library variable + scope + support.other.variable + settings + + + + name + Invalid + scope + invalid + settings + + background + #5F0047 + + + + name + - Meta + settings + + + + name + function.section + scope + meta.function.section + settings + + background + #371D28 + + + + uuid + 2C24E84F-F9FE-4C2E-92D2-F52198BA7E41 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Sunburst.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Sunburst.tmTheme new file mode 100644 index 00000000..694c2c8c --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Sunburst.tmTheme @@ -0,0 +1,665 @@ + + + + + author + Stanley Rost + comment + (Ï€) Soryu, 2005 + name + Sunburst + settings + + + settings + + background + #000000 + caret + #A7A7A7 + foreground + #F8F8F8 + invisibles + #CAE2FB3D + lineHighlight + #FFFFFF1A + selection + #DDF0FF33 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #AEAEAE + + + + name + Constant + scope + constant + settings + + foreground + #3387CC + + + + name + Entity + scope + entity + settings + + fontStyle + + foreground + #89BDFF + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #E28964 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #99CF50 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #65B042 + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #9B859D + + + + name + Variable + scope + variable + settings + + foreground + #3E87E3 + + + + name + Invalid – Deprecated + scope + invalid.deprecated + settings + + fontStyle + italic underline + foreground + #FD5FF1 + + + + name + Invalid – Illegal + scope + invalid.illegal + settings + + background + #562D56BF + foreground + #FD5FF1 + + + + name + ----------------------------------- + settings + + + + name + ♦ Embedded Source (Bright) + scope + text source + settings + + background + #B1B3BA08 + + + + name + ♦ Entity inherited-class + scope + entity.other.inherited-class + settings + + fontStyle + italic + foreground + #9B5C2E + + + + name + ♦ String embedded-source + scope + string.quoted source + settings + + fontStyle + + foreground + #DAEFA3 + + + + name + ♦ String constant + scope + string constant + settings + + foreground + #DDF2A4 + + + + name + ♦ String.regexp + scope + string.regexp + settings + + foreground + #E9C062 + + + + name + ♦ String.regexp.«special» + scope + string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition + settings + + foreground + #CF7D34 + + + + name + ♦ String variable + scope + string variable + settings + + foreground + #8A9A95 + + + + name + ♦ Support.function + scope + support.function + settings + + fontStyle + + foreground + #DAD085 + + + + name + ♦ Support.constant + scope + support.constant + settings + + fontStyle + + foreground + #CF6A4C + + + + name + c C/C++ Preprocessor Line + scope + meta.preprocessor.c + settings + + foreground + #8996A8 + + + + name + c C/C++ Preprocessor Directive + scope + meta.preprocessor.c keyword + settings + + foreground + #AFC4DB + + + + name + j Entity Name Type + scope + entity.name.type + settings + + fontStyle + underline + + + + name + j Cast + scope + meta.cast + settings + + fontStyle + italic + foreground + #676767 + + + + name + ✘ Doctype/XML Processing + scope + meta.sgml.html meta.doctype, meta.sgml.html meta.doctype entity, meta.sgml.html meta.doctype string, meta.xml-processing, meta.xml-processing entity, meta.xml-processing string + settings + + foreground + #494949 + + + + name + ✘ Meta.tag.«all» + scope + meta.tag, meta.tag entity + settings + + foreground + #89BDFF + + + + name + ✘ Meta.tag.inline + scope + source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity + settings + + foreground + #E0C589 + + + + name + ✘ Namespaces + scope + entity.name.tag.namespace, entity.other.attribute-name.namespace + settings + + foreground + #E18964 + + + + name + § css tag-name + scope + meta.selector.css entity.name.tag + settings + + foreground + #CDA869 + + + + name + § css:pseudo-class + scope + meta.selector.css entity.other.attribute-name.tag.pseudo-class + settings + + foreground + #8F9D6A + + + + name + § css#id + scope + meta.selector.css entity.other.attribute-name.id + settings + + foreground + #8B98AB + + + + name + § css.class + scope + meta.selector.css entity.other.attribute-name.class + settings + + foreground + #9B703F + + + + name + § css property-name: + scope + support.type.property-name.css + settings + + foreground + #C5AF75 + + + + name + § css property-value; + scope + meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css + settings + + foreground + #F9EE98 + + + + name + § css @at-rule + scope + meta.preprocessor.at-rule keyword.control.at-rule + settings + + foreground + #8693A5 + + + + name + § css additional-constants + scope + meta.property-value support.constant.named-color.css, meta.property-value constant + settings + + foreground + #DD7B3B + + + + name + § css constructor.argument + scope + meta.constructor.argument.css + settings + + foreground + #8F9D6A + + + + name + ⎇ diff.header + scope + meta.diff, meta.diff.header + settings + + background + #0E2231 + fontStyle + italic + foreground + #F8F8F8 + + + + name + ⎇ diff.deleted + scope + markup.deleted + settings + + background + #420E09 + foreground + #F8F8F8 + + + + name + ⎇ diff.changed + scope + markup.changed + settings + + background + #4A410D + foreground + #F8F8F8 + + + + name + ⎇ diff.inserted + scope + markup.inserted + settings + + background + #253B22 + foreground + #F8F8F8 + + + + name + -------------------------------- + settings + + + + name + Markup: Italic + scope + markup.italic + settings + + fontStyle + italic + foreground + #E9C062 + + + + name + Markup: Bold + scope + markup.bold + settings + + fontStyle + bold + foreground + #E9C062 + + + + name + Markup: Underline + scope + markup.underline + settings + + fontStyle + underline + foreground + #E18964 + + + + name + Markup: Quote + scope + markup.quote + settings + + background + #FEE09C12 + fontStyle + italic + foreground + #E1D4B9 + + + + name + Markup: Heading + scope + markup.heading, markup.heading entity + settings + + background + #632D04 + fontStyle + + foreground + #FEDCC5 + + + + name + Markup: List + scope + markup.list + settings + + foreground + #E1D4B9 + + + + name + Markup: Raw + scope + markup.raw + settings + + background + #B1B3BA08 + fontStyle + + foreground + #578BB3 + + + + name + Markup: Comment + scope + markup comment + settings + + fontStyle + italic + foreground + #F67B37 + + + + name + Markup: Separator + scope + meta.separator + settings + + background + #242424 + foreground + #60A633 + + + + name + Log Entry + scope + meta.line.entry.logfile, meta.line.exit.logfile + settings + + background + #EEEEEE29 + + + + name + Log Entry Error + scope + meta.line.error.logfile + settings + + background + #751012 + + + + uuid + C8C58F9A-35FE-44A4-9BC2-2F3C343DC81D + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Textmate (Mac Classic).tmTheme b/plugins/node_modules/ace/tool/tmthemes/Textmate (Mac Classic).tmTheme new file mode 100644 index 00000000..4b789dfe --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Textmate (Mac Classic).tmTheme @@ -0,0 +1,450 @@ + + + + + author + Chris Thomas + name + Mac Classic + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #000000 + invisibles + #BFBFBF + lineHighlight + #00000012 + selection + #4D97FF54 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #0066FF + + + + name + Keyword + scope + keyword, storage + settings + + fontStyle + bold + foreground + #0000FF + + + + name + Number + scope + constant.numeric + settings + + fontStyle + + foreground + #0000CD + + + + name + User-defined constant + scope + constant + settings + + fontStyle + bold + foreground + #C5060B + + + + name + Built-in constant + scope + constant.language + settings + + fontStyle + bold + foreground + #585CF6 + + + + name + Variable + scope + variable.language, variable.other + settings + + fontStyle + + foreground + #318495 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #036A07 + + + + name + String interpolation + scope + constant.character.escape, string source + settings + + fontStyle + + foreground + #26B31A + + + + name + Preprocessor line + scope + meta.preprocessor + settings + + fontStyle + + foreground + #1A921C + + + + name + Preprocessor directive + scope + keyword.control.import + settings + + fontStyle + bold + foreground + #0C450D + + + + name + Function name + scope + entity.name.function, support.function.any-method + settings + + fontStyle + bold + foreground + #0000A2 + + + + name + Type name + scope + entity.name.type + settings + + fontStyle + underline + + + + name + Inherited class name + scope + entity.other.inherited-class + settings + + fontStyle + italic + + + + name + Function parameter + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Function argument and result types + scope + storage.type.method + settings + + fontStyle + + foreground + #70727E + + + + name + Section + scope + meta.section entity.name.section, declaration.section entity.name.section + settings + + fontStyle + italic + + + + name + Library function + scope + support.function + settings + + fontStyle + bold + foreground + #3C4C72 + + + + name + Library object + scope + support.class, support.type + settings + + fontStyle + bold + foreground + #6D79DE + + + + name + Library constant + scope + support.constant + settings + + fontStyle + bold + foreground + #06960E + + + + name + Library variable + scope + support.variable + settings + + fontStyle + bold + foreground + #21439C + + + + name + JS: Operator + scope + keyword.operator.js + settings + + foreground + #687687 + + + + name + Invalid + scope + invalid + settings + + background + #990000 + foreground + #FFFFFF + + + + name + Invalid trailing whitespace + scope + invalid.deprecated.trailing-whitespace + settings + + background + #FFD0D0 + + + + name + Embedded source + scope + text source, string.unquoted + settings + + background + #0000000D + + + + name + Embedded embedded source + scope + text source string.unquoted, text source text source + settings + + background + #0000000F + + + + name + Markup XML declaration + scope + meta.tag.preprocessor.xml + settings + + fontStyle + + foreground + #68685B + + + + name + Markup DOCTYPE + scope + meta.tag.sgml.doctype, meta.tag.sgml.doctype entity, meta.tag.sgml.doctype string, meta.tag.preprocessor.xml, meta.tag.preprocessor.xml entity, meta.tag.preprocessor.xml string + settings + + fontStyle + + foreground + #888888 + + + + name + Markup DTD + scope + string.quoted.docinfo.doctype.DTD + settings + + fontStyle + italic + + + + name + Markup tag + scope + meta.tag, declaration.tag + settings + + fontStyle + + foreground + #1C02FF + + + + name + Markup name of tag + scope + entity.name.tag + settings + + fontStyle + bold + + + + name + Markup tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + italic + + + + name + Markup: Heading + scope + markup.heading + settings + + fontStyle + bold + foreground + #0C07FF + + + + name + Markup: Quote + scope + markup.quote + settings + + fontStyle + italic + foreground + #000000 + + + + name + Markup: List + scope + markup.list + settings + + foreground + #B90690 + + + + uuid + 71D40D9D-AE48-11D9-920A-000D93589AF6 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Blue.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Blue.tmTheme new file mode 100644 index 00000000..b1669a27 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Blue.tmTheme @@ -0,0 +1,186 @@ + + + + + comment + http://chriskempson.com + name + Tomorrow Night - Blue + settings + + + settings + + background + #002451 + caret + #FFFFFF + foreground + #FFFFFF + invisibles + #404F7D + lineHighlight + #00346E + selection + #003F8E + + + + name + Comment + scope + comment + settings + + foreground + #7285B7 + + + + name + Foreground, Operator + scope + keyword.operator.class, keyword.operator, constant.other, source.php.embedded.line + settings + + fontStyle + + foreground + #FFFFFF + + + + name + Variable, String Link, Regular Expression, Tag Name + scope + variable, support.other.variable, string.other.link, string.regexp, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag + settings + + foreground + #FF9DA4 + + + + name + Number, Constant, Function Argument, Tag Attribute, Embedded + scope + constant.numeric, constant.language, support.constant, constant.character, variable.parameter, punctuation.section.embedded, keyword.other.unit + settings + + fontStyle + + foreground + #FFC58F + + + + name + Class, Support + scope + entity.name.class, entity.name.type.class, support.type, support.class + settings + + fontStyle + + foreground + #FFEEAD + + + + name + String, Symbols, Inherited Class, Markup Heading + scope + string, constant.other.symbol, entity.other.inherited-class, markup.heading + settings + + fontStyle + + foreground + #D1F1A9 + + + + name + Operator, Misc + scope + keyword.operator, constant.other.color + settings + + foreground + #99FFFF + + + + name + Function, Special Method, Block Level + scope + entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level + settings + + fontStyle + + foreground + #BBDAFF + + + + name + Keyword, Storage + scope + keyword, storage, storage.type, entity.name.tag.css + settings + + fontStyle + + foreground + #EBBBFF + + + + name + Invalid + scope + invalid + settings + + background + #F99DA5 + fontStyle + + foreground + #FFFFFF + + + + name + Separator + scope + meta.separator + settings + + background + #BBDAFE + foreground + #FFFFFF + + + + name + Deprecated + scope + invalid.deprecated + settings + + background + #EBBBFF + fontStyle + + foreground + #FFFFFF + + + + uuid + 3F4BB232-3C3A-4396-99C0-06A9573715E9 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Bright.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Bright.tmTheme new file mode 100644 index 00000000..15d40106 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Bright.tmTheme @@ -0,0 +1,186 @@ + + + + + comment + http://chriskempson.com + name + Tomorrow Night - Bright + settings + + + settings + + background + #000000 + caret + #9F9F9F + foreground + #DEDEDE + invisibles + #343434 + lineHighlight + #2A2A2A + selection + #424242 + + + + name + Comment + scope + comment + settings + + foreground + #969896 + + + + name + Foreground + scope + keyword.operator.class, constant.other, source.php.embedded.line + settings + + fontStyle + + foreground + #EEEEEE + + + + name + Variable, String Link, Regular Expression, Tag Name + scope + variable, support.other.variable, string.other.link, string.regexp, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag + settings + + foreground + #D54E53 + + + + name + Number, Constant, Function Argument, Tag Attribute, Embedded + scope + constant.numeric, constant.language, support.constant, constant.character, variable.parameter, punctuation.section.embedded, keyword.other.unit + settings + + fontStyle + + foreground + #E78C45 + + + + name + Class, Support + scope + entity.name.class, entity.name.type.class, support.type, support.class + settings + + fontStyle + + foreground + #E7C547 + + + + name + String, Symbols, Inherited Class, Markup Heading + scope + string, constant.other.symbol, entity.other.inherited-class, markup.heading + settings + + fontStyle + + foreground + #B9CA4A + + + + name + Operator, Misc + scope + keyword.operator, constant.other.color + settings + + foreground + #70C0B1 + + + + name + Function, Special Method, Block Level + scope + entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level + settings + + fontStyle + + foreground + #7AA6DA + + + + name + Keyword, Storage + scope + keyword, storage, storage.type, entity.name.tag.css + settings + + fontStyle + + foreground + #C397D8 + + + + name + Invalid + scope + invalid + settings + + background + #DF5F5F + fontStyle + + foreground + #CED2CF + + + + name + Separator + scope + meta.separator + settings + + background + #82A3BF + foreground + #CED2CF + + + + name + Deprecated + scope + invalid.deprecated + settings + + background + #B798BF + fontStyle + + foreground + #CED2CF + + + + uuid + 33D8C715-AD3A-455B-8DF2-56F708909FFE + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Eighties.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Eighties.tmTheme new file mode 100644 index 00000000..33dabddf --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night-Eighties.tmTheme @@ -0,0 +1,186 @@ + + + + + comment + http://chriskempson.com + name + Tomorrow Night - Eighties + settings + + + settings + + background + #2D2D2D + caret + #CCCCCC + foreground + #CCCCCC + invisibles + #6A6A6A + lineHighlight + #393939 + selection + #515151 + + + + name + Comment + scope + comment + settings + + foreground + #999999 + + + + name + Foreground + scope + keyword.operator.class, constant.other, source.php.embedded.line + settings + + fontStyle + + foreground + #CCCCCC + + + + name + Variable, String Link, Tag Name + scope + variable, support.other.variable, string.other.link, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag + settings + + foreground + #F2777A + + + + name + Number, Constant, Function Argument, Tag Attribute, Embedded + scope + constant.numeric, constant.language, support.constant, constant.character, variable.parameter, punctuation.section.embedded, keyword.other.unit + settings + + fontStyle + + foreground + #F99157 + + + + name + Class, Support + scope + entity.name.class, entity.name.type.class, support.type, support.class + settings + + fontStyle + + foreground + #FFCC66 + + + + name + String, Symbols, Inherited Class, Markup Heading + scope + string, constant.other.symbol, entity.other.inherited-class, markup.heading + settings + + fontStyle + + foreground + #99CC99 + + + + name + Operator, Misc + scope + keyword.operator, constant.other.color + settings + + foreground + #66CCCC + + + + name + Function, Special Method, Block Level + scope + entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level + settings + + fontStyle + + foreground + #6699CC + + + + name + Keyword, Storage + scope + keyword, storage, storage.type, entity.name.tag.css + settings + + fontStyle + + foreground + #CC99CC + + + + name + Invalid + scope + invalid + settings + + background + #F2777A + fontStyle + + foreground + #CDCDCD + + + + name + Separator + scope + meta.separator + settings + + background + #99CCCC + foreground + #CDCDCD + + + + name + Deprecated + scope + invalid.deprecated + settings + + background + #CC99CC + fontStyle + + foreground + #CDCDCD + + + + uuid + DE477E5B-BD4D-46B0-BF80-2EA32A2814D5 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night.tmTheme new file mode 100644 index 00000000..bb1efaf0 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Tomorrow-Night.tmTheme @@ -0,0 +1,186 @@ + + + + + comment + http://chriskempson.com + name + Tomorrow Night + settings + + + settings + + background + #1D1F21 + caret + #AEAFAD + foreground + #C5C8C6 + invisibles + #4B4E55 + lineHighlight + #282A2E + selection + #373B41 + + + + name + Comment + scope + comment + settings + + foreground + #969896 + + + + name + Foreground + scope + keyword.operator.class, constant.other, source.php.embedded.line + settings + + fontStyle + + foreground + #CED1CF + + + + name + Variable, String Link, Regular Expression, Tag Name + scope + variable, support.other.variable, string.other.link, string.regexp, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag + settings + + foreground + #CC6666 + + + + name + Number, Constant, Function Argument, Tag Attribute, Embedded + scope + constant.numeric, constant.language, support.constant, constant.character, variable.parameter, punctuation.section.embedded, keyword.other.unit + settings + + fontStyle + + foreground + #DE935F + + + + name + Class, Support + scope + entity.name.class, entity.name.type.class, support.type, support.class + settings + + fontStyle + + foreground + #F0C674 + + + + name + String, Symbols, Inherited Class, Markup Heading + scope + string, constant.other.symbol, entity.other.inherited-class, markup.heading + settings + + fontStyle + + foreground + #B5BD68 + + + + name + Operator, Misc + scope + keyword.operator, constant.other.color + settings + + foreground + #8ABEB7 + + + + name + Function, Special Method, Block Level + scope + entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level + settings + + fontStyle + + foreground + #81A2BE + + + + name + Keyword, Storage + scope + keyword, storage, storage.type, entity.name.tag.css + settings + + fontStyle + + foreground + #B294BB + + + + name + Invalid + scope + invalid + settings + + background + #DF5F5F + fontStyle + + foreground + #CED2CF + + + + name + Separator + scope + meta.separator + settings + + background + #82A3BF + foreground + #CED2CF + + + + name + Deprecated + scope + invalid.deprecated + settings + + background + #B798BF + fontStyle + + foreground + #CED2CF + + + + uuid + F96223EB-1A60-4617-92F3-D24D4F13DB09 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Tomorrow.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Tomorrow.tmTheme new file mode 100644 index 00000000..8c98c226 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Tomorrow.tmTheme @@ -0,0 +1,186 @@ + + + + + comment + http://chriskempson.com + name + Tomorrow + settings + + + settings + + background + #FFFFFF + caret + #AEAFAD + foreground + #4D4D4C + invisibles + #D1D1D1 + lineHighlight + #EFEFEF + selection + #D6D6D6 + + + + name + Comment + scope + comment + settings + + foreground + #8E908C + + + + name + Foreground + scope + keyword.operator.class, constant.other, source.php.embedded.line + settings + + fontStyle + + foreground + #666969 + + + + name + Variable, String Link, Regular Expression, Tag Name + scope + variable, support.other.variable, string.other.link, string.regexp, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag + settings + + foreground + #C82829 + + + + name + Number, Constant, Function Argument, Tag Attribute, Embedded + scope + constant.numeric, constant.language, support.constant, constant.character, variable.parameter, punctuation.section.embedded, keyword.other.unit + settings + + fontStyle + + foreground + #F5871F + + + + name + Class, Support + scope + entity.name.class, entity.name.type.class, support.type, support.class + settings + + fontStyle + + foreground + #C99E00 + + + + name + String, Symbols, Inherited Class, Markup Heading + scope + string, constant.other.symbol, entity.other.inherited-class, markup.heading + settings + + fontStyle + + foreground + #718C00 + + + + name + Operator, Misc + scope + keyword.operator, constant.other.color + settings + + foreground + #3E999F + + + + name + Function, Special Method, Block Level + scope + entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level + settings + + fontStyle + + foreground + #4271AE + + + + name + Keyword, Storage + scope + keyword, storage, storage.type + settings + + fontStyle + + foreground + #8959A8 + + + + name + Invalid + scope + invalid + settings + + background + #C82829 + fontStyle + + foreground + #FFFFFF + + + + name + Separator + scope + meta.separator + settings + + background + #4271AE + foreground + #FFFFFF + + + + name + Deprecated + scope + invalid.deprecated + settings + + background + #8959A8 + fontStyle + + foreground + #FFFFFF + + + + uuid + 82CCD69C-F1B1-4529-B39E-780F91F07604 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Twilight.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Twilight.tmTheme new file mode 100644 index 00000000..a5984e82 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Twilight.tmTheme @@ -0,0 +1,527 @@ + + + + + author + Michael Sheets + name + Twilight + settings + + + settings + + background + #141414 + caret + #A7A7A7 + foreground + #F8F8F8 + invisibles + #FFFFFF40 + lineHighlight + #FFFFFF08 + selection + #DDF0FF33 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #5F5A60 + + + + name + Constant + scope + constant + settings + + foreground + #CF6A4C + + + + name + Entity + scope + entity + settings + + fontStyle + + foreground + #9B703F + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #CDA869 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #F9EE98 + + + + name + String + scope + string + settings + + fontStyle + + foreground + #8F9D6A + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #9B859D + + + + name + Variable + scope + variable + settings + + foreground + #7587A6 + + + + name + Invalid – Deprecated + scope + invalid.deprecated + settings + + fontStyle + italic underline + foreground + #D2A8A1 + + + + name + Invalid – Illegal + scope + invalid.illegal + settings + + background + #562D56BF + foreground + #F8F8F8 + + + + name + ----------------------------------- + settings + + + + name + ♦ Embedded Source + scope + text source + settings + + background + #B0B3BA14 + + + + name + ♦ Embedded Source (Bright) + scope + text.html.ruby source + settings + + background + #B1B3BA21 + + + + name + ♦ Entity inherited-class + scope + entity.other.inherited-class + settings + + fontStyle + italic + foreground + #9B5C2E + + + + name + ♦ String embedded-source + scope + string source + settings + + fontStyle + + foreground + #DAEFA3 + + + + name + ♦ String constant + scope + string constant + settings + + foreground + #DDF2A4 + + + + name + ♦ String.regexp + scope + string.regexp + settings + + fontStyle + + foreground + #E9C062 + + + + name + ♦ String.regexp.«special» + scope + string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition + settings + + foreground + #CF7D34 + + + + name + ♦ String variable + scope + string variable + settings + + foreground + #8A9A95 + + + + name + ♦ Support.function + scope + support.function + settings + + fontStyle + + foreground + #DAD085 + + + + name + ♦ Support.constant + scope + support.constant + settings + + fontStyle + + foreground + #CF6A4C + + + + name + c C/C++ Preprocessor Line + scope + meta.preprocessor.c + settings + + foreground + #8996A8 + + + + name + c C/C++ Preprocessor Directive + scope + meta.preprocessor.c keyword + settings + + foreground + #AFC4DB + + + + name + ✘ Doctype/XML Processing + scope + meta.tag.sgml.doctype, meta.tag.sgml.doctype entity, meta.tag.sgml.doctype string, meta.tag.preprocessor.xml, meta.tag.preprocessor.xml entity, meta.tag.preprocessor.xml string + settings + + foreground + #494949 + + + + name + ✘ Meta.tag.«all» + scope + declaration.tag, declaration.tag entity, meta.tag, meta.tag entity + settings + + foreground + #AC885B + + + + name + ✘ Meta.tag.inline + scope + declaration.tag.inline, declaration.tag.inline entity, source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity + settings + + foreground + #E0C589 + + + + name + § css tag-name + scope + meta.selector.css entity.name.tag + settings + + foreground + #CDA869 + + + + name + Function name + scope + entity.name.function, support.function.any-method + settings + + fontStyle + bold + foreground + #AC885B + + + + name + § css:pseudo-class + scope + meta.selector.css entity.other.attribute-name.tag.pseudo-class + settings + + foreground + #8F9D6A + + + + name + § css#id + scope + meta.selector.css entity.other.attribute-name.id + settings + + foreground + #8B98AB + + + + name + § css.class + scope + meta.selector.css entity.other.attribute-name.class + settings + + foreground + #9B703F + + + + name + § css property-name: + scope + support.type.property-name.css + settings + + foreground + #C5AF75 + + + + name + § css property-value; + scope + meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css + settings + + foreground + #F9EE98 + + + + name + § css @at-rule + scope + meta.preprocessor.at-rule keyword.control.at-rule + settings + + foreground + #8693A5 + + + + name + § css additional-constants + scope + meta.property-value support.constant.named-color.css, meta.property-value constant + settings + + foreground + #CA7840 + + + + name + § css constructor.argument + scope + meta.constructor.argument.css + settings + + foreground + #8F9D6A + + + + name + ⎇ diff.header + scope + meta.diff, meta.diff.header, meta.separator + settings + + background + #0E2231 + fontStyle + italic + foreground + #F8F8F8 + + + + name + ⎇ diff.deleted + scope + markup.deleted + settings + + background + #420E09 + foreground + #F8F8F8 + + + + name + ⎇ diff.changed + scope + markup.changed + settings + + background + #4A410D + foreground + #F8F8F8 + + + + name + ⎇ diff.inserted + scope + markup.inserted + settings + + background + #253B22 + foreground + #F8F8F8 + + + + name + Markup: List + scope + markup.list + settings + + foreground + #F9EE98 + + + + name + Markup: Heading + scope + markup.heading + settings + + foreground + #CF6A4C + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Vibrant Ink.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Vibrant Ink.tmTheme new file mode 100644 index 00000000..a1e5cf28 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Vibrant Ink.tmTheme @@ -0,0 +1,460 @@ + + + + + name + Vibrant Ink + settings + + + settings + + background + #0F0F0F + caret + #FFFFFF + foreground + #FFFFFF + invisibles + #404040 + lineHighlight + #333333 + selection + #6699CC + + + + name + Text base + scope + text + settings + + background + #0F0F0F + foreground + #FFFFFF + + + + name + Inline Ruby Html + scope + source.ruby.rails.embedded.html + settings + + background + #000000 + + + + name + Ruby Html + scope + text.html.ruby + settings + + background + #101010 + foreground + #FFFFFF + + + + name + Invalid + scope + invalid, invalid.deprecated + settings + + background + #000000 + foreground + #CCFF33 + + + + name + Number + scope + constant.numeric + settings + + foreground + #99CC99 + + + + name + Ruby source + scope + source.ruby + settings + + + + name + Source base + scope + source + settings + + background + #000000 + foreground + #FFFFFF + + + + name + Comment + scope + comment + settings + + foreground + #9933CC + + + + name + Constant + scope + constant + settings + + foreground + #339999 + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #FF6600 + + + + name + Pre-processor Line + scope + keyword.preprocessor + settings + + fontStyle + + foreground + #EDF8F9 + + + + name + Pre-processor Directive + scope + keyword.preprocessor directive + settings + + fontStyle + + foreground + #FFFFFF + + + + name + Function name + scope + entity.name.function, storage.type.function.js + settings + + fontStyle + + foreground + #FFCC00 + + + + name + Function argument + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Block comment + scope + source comment.block + settings + + background + #070707 + foreground + #772CB7 + + + + name + Variable + scope + variable.other + settings + + fontStyle + + foreground + #FFFFFF + + + + name + Support Function + scope + support.function + settings + + foreground + #FFCC00 + + + + name + String + scope + string + settings + + foreground + #66FF00 + + + + name + String escapes + scope + string constant.character.escape + settings + + foreground + #AAAAAA + + + + name + String (executed) + scope + string.interpolated + settings + + background + #CCCC33 + foreground + #000000 + + + + name + Regular expression + scope + string.regexp + settings + + foreground + #44B4CC + + + + name + String (literal) + scope + string.literal + settings + + foreground + #CCCC33 + + + + name + String escapes (executed) + scope + string.interpolated constant.character.escape + settings + + foreground + #555555 + + + + name + Class name + scope + entity.name.class, support.class.js + settings + + fontStyle + underline + + + + name + Class inheritance + scope + entity.other.inherited-class + settings + + fontStyle + italic underline + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + + + + name + Html Meta + scope + meta.tag.inline.any.html, meta.tag.block.any.html + settings + + fontStyle + + foreground + #FF6600 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + italic + foreground + #99CC99 + + + + name + Other Keywords + scope + keyword.other + settings + + foreground + #DDE93D + + + + name + CSS Selector + scope + meta.selector.css, entity.other.attribute-name.pseudo-class.css, entity.name.tag.wildcard.css, entity.other.attribute-name.id.css, entity.other.attribute-name.class.css + settings + + foreground + #FF6600 + + + + name + CSS Property + scope + support.type.property-name.css + settings + + foreground + #999966 + + + + name + CSS Other + scope + keyword.other.unit.css, constant.other.rgb-value.css, constant.numeric.css + settings + + foreground + #FFFFFF + + + + name + Javascript Events + scope + support.function.event-handler.js + settings + + foreground + #FFFFFF + + + + name + Javascript Operators + scope + keyword.operator.js + settings + + foreground + #FFFFFF + + + + name + Javascript Keywords + scope + keyword.control.js + settings + + foreground + #CCCC66 + + + + name + Prototype Objects + scope + support.class.prototype.js + settings + + foreground + #FFFFFF + + + + name + Prototype Methods + scope + object.property.function.prototype.js + settings + + foreground + #FF6600 + + + + uuid + 4B7A9AA6-C472-4460-BA48-199E2624956B + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Xcode_default.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Xcode_default.tmTheme new file mode 100644 index 00000000..c7b5072c --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Xcode_default.tmTheme @@ -0,0 +1,240 @@ + + + + + comment + Carmine Paolino + name + Xcode default + settings + + + settings + + background + #FFFFFF + caret + #000000 + foreground + #000000 + invisibles + #BFBFBF + lineHighlight + #00000012 + selection + #B5D5FF + + + + name + Comment + scope + comment + settings + + foreground + #008E00 + + + + name + Preprocessor Statements + scope + meta.preprocessor, keyword.control.import + settings + + foreground + #7D4726 + + + + name + String + scope + string + settings + + foreground + #DF0002 + + + + name + Number + scope + constant.numeric + settings + + foreground + #3A00DC + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #C800A4 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #275A5E + + + + name + Variable + scope + variable.language, variable.other + settings + + foreground + #C800A4 + + + + name + Keyword + scope + keyword + settings + + foreground + #C800A4 + + + + name + Storage + scope + storage + settings + + foreground + #C900A4 + + + + name + Class name + scope + entity.name.class + settings + + foreground + #438288 + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + + + name + Function name + scope + entity.name.function + settings + + + + name + Function argument + scope + variable.parameter + settings + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #790EAD + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + foreground + #450084 + + + + name + Library function + scope + support.function + settings + + foreground + #450084 + + + + name + Library constant + scope + support.constant + settings + + foreground + #450084 + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #790EAD + + + + name + Library variable + scope + support.other.variable + settings + + foreground + #790EAD + + + + name + Invalid + scope + invalid + settings + + + + uuid + EE3AD170-2B7F-4DE1-B724-C75F13FE0085 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/Zenburnesque.tmTheme b/plugins/node_modules/ace/tool/tmthemes/Zenburnesque.tmTheme new file mode 100644 index 00000000..8631f986 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/Zenburnesque.tmTheme @@ -0,0 +1,343 @@ + + + + + author + William D. Neumann + name + Zenburnesque + settings + + + settings + + background + #404040 + caret + #FFFF66 + foreground + #DEDEDE + invisibles + #A8A8A8 + lineHighlight + #A0804026 + selection + #A0A0C0 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #709070 + + + + name + Directive + scope + keyword.other.directive + settings + + fontStyle + bold + + + + name + Line-number directives + scope + keyword.other.directive.line-number + settings + + fontStyle + underline + + + + name + Characters + scope + constant.character + settings + + foreground + #FF8080 + + + + name + String + scope + string + settings + + foreground + #FF2020 + + + + name + Number + scope + constant.numeric + settings + + foreground + #22C0FF + + + + name + Floating-point numbers + scope + constant.numeric.floating-point + settings + + fontStyle + underline + + + + name + Built-in constant + scope + constant.language + settings + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + + + name + Variable + scope + variable.parameter, variable.other + settings + + + + name + Language Keyword + scope + keyword + settings + + foreground + #FFFFA0 + + + + name + Module Keyword + scope + entity.name.module, support.other.module + settings + + fontStyle + bold + foreground + #FF8000 + + + + name + Operators + scope + keyword.operator + settings + + foreground + #FFFFA0 + + + + name + Floating-point infix operators + scope + source.ocaml keyword.operator.symbol.infix.floating-point + settings + + fontStyle + underline + + + + name + Floating-point prefix operators + scope + source.ocaml keyword.operator.symbol.prefix.floating-point + settings + + fontStyle + underline + + + + name + Storage Types + scope + storage.type + settings + + foreground + #6080FF + + + + name + Variant Types + scope + entity.name.class.variant + settings + + foreground + #4080A0 + + + + name + Storage + scope + storage + settings + + + + name + Type name + scope + entity.name.type + settings + + foreground + #F09040 + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + bold + foreground + #FFCC66 + + + + name + Type name + scope + storage.type.user-defined + settings + + foreground + #FFE000 + + + + name + Class type name + scope + entity.name.type.class.type + settings + + foreground + #F4A020 + + + + name + Function argument + scope + variable.parameter + settings + + fontStyle + + + + + name + Tag name + scope + entity.name.tag + settings + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + + + name + Library function + scope + support.function + settings + + + + name + Library constant + scope + support.constant + settings + + + + name + Library class/type + scope + support.type, support.class + settings + + + + name + Library variable + scope + support.variable + settings + + + + name + Invalid + scope + invalid + settings + + + + uuid + 8D4988B9-ADD8-436F-B388-BC1360F8504B + + diff --git a/plugins/node_modules/ace/tool/tmthemes/iPlastic.tmTheme b/plugins/node_modules/ace/tool/tmthemes/iPlastic.tmTheme new file mode 100644 index 00000000..7253df6a --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/iPlastic.tmTheme @@ -0,0 +1,286 @@ + + + + + author + Jeroen van der Ham + name + iPlastic + settings + + + settings + + background + #EEEEEEEB + caret + #000000 + foreground + #000000 + invisibles + #B3B3B3F4 + lineHighlight + #0000001A + selection + #BAD6FD + + + + name + String + scope + string + settings + + foreground + #009933 + + + + name + Number + scope + constant.numeric + settings + + foreground + #0066FF + + + + name + Regular expression + scope + string.regexp + settings + + foreground + #FF0080 + + + + name + Keyword + scope + keyword + settings + + foreground + #0000FF + + + + name + Identifier + scope + constant.language + settings + + foreground + #9700CC + + + + name + Exception + scope + support.class.exception + settings + + foreground + #990000 + + + + name + Function name + scope + entity.name.function + settings + + foreground + #FF8000 + + + + name + Type name + scope + entity.name.type + settings + + fontStyle + bold underline + + + + name + Arguments + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #0066FF + + + + name + Invalid + scope + invalid + settings + + background + #E71A114D + foreground + #FF0000 + + + + name + Trailing whitespace + scope + invalid.deprecated.trailing-whitespace + settings + + background + #E71A1100 + + + + name + Embedded source + scope + text source + settings + + background + #FAFAFAFC + foreground + #000000 + + + + name + Tag + scope + meta.tag, declaration.tag + settings + + foreground + #0033CC + + + + name + Constant + scope + constant, support.constant + settings + + foreground + #6782D3 + + + + name + Support + scope + support + settings + + fontStyle + bold + foreground + #3333FF + + + + name + Storage + scope + storage + settings + + fontStyle + bold + + + + name + Section name + scope + entity.name.section + settings + + fontStyle + bold underline + + + + name + Frame title + scope + entity.name.function.frame + settings + + fontStyle + bold + foreground + #000000 + + + + name + XML Declaration + scope + meta.tag.preprocessor.xml + settings + + foreground + #333333 + + + + name + Tag Attribute + scope + entity.other.attribute-name + settings + + fontStyle + italic + foreground + #3366CC + + + + name + Tag Name + scope + entity.name.tag + settings + + fontStyle + bold + + + + uuid + 4FCFA210-B247-11D9-9D00-000D93347A42 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/idleFingers.tmTheme b/plugins/node_modules/ace/tool/tmthemes/idleFingers.tmTheme new file mode 100644 index 00000000..d86a0edd --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/idleFingers.tmTheme @@ -0,0 +1,393 @@ + + + + + name + idleFingers + settings + + + settings + + background + #323232 + caret + #91FF00 + foreground + #FFFFFF + invisibles + #404040 + lineHighlight + #353637 + selection + #5A647EE0 + + + + name + text + scope + text + settings + + foreground + #FFFFFF + + + + name + Source base + scope + source + settings + + background + #282828 + foreground + #CDCDCD + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #BC9458 + + + + name + Html Tags + scope + meta.tag, declaration.tag, meta.doctype + settings + + foreground + #FFE5BB + + + + name + Function Name + scope + entity.name + settings + + foreground + #FFC66D + + + + name + Ruby Function Name + scope + source.ruby entity.name + settings + + foreground + #FFF980 + + + + name + Other Variable + scope + variable.other + settings + + foreground + #B7DFF8 + + + + name + Ruby Class Name + scope + support.class.ruby + settings + + foreground + #CCCC33 + + + + name + Constant + scope + constant, support.constant + settings + + foreground + #6C99BB + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #CC7833 + + + + name + Pre-processor Line + scope + other.preprocessor.c + settings + + fontStyle + + foreground + #D0D0FF + + + + name + Pre-processor Directive + scope + entity.name.preprocessor + settings + + fontStyle + + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + + + + name + Function argument + scope + variable.parameter + settings + + fontStyle + italic + + + + name + Block comment + scope + source comment.block + settings + + background + #575757 + foreground + #FFFFFF + + + + name + String + scope + string + settings + + foreground + #A5C261 + + + + name + String escapes + scope + string constant.character.escape + settings + + foreground + #AAAAAA + + + + name + String (executed) + scope + string.interpolated + settings + + background + #CCCC33 + foreground + #000000 + + + + name + Regular expression + scope + string.regexp + settings + + foreground + #CCCC33 + + + + name + String (literal) + scope + string.literal + settings + + foreground + #CCCC33 + + + + name + String escapes (executed) + scope + string.interpolated constant.character.escape + settings + + foreground + #787878 + + + + name + Class name + scope + entity.name.class + settings + + fontStyle + underline + + + + name + Class inheritance + scope + entity.other.inherited-class + settings + + fontStyle + italic underline + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + + + + name + Support function + scope + support.function + settings + + fontStyle + + foreground + #B83426 + + + + name + Textile List + scope + markup.list.unnumbered.textile + settings + + foreground + #6EA533 + + + + name + Textile Numbered list + scope + markup.list.numbered.textile + settings + + foreground + #6EA533 + + + + name + Textile Bold + scope + markup.bold.textile + settings + + fontStyle + bold + foreground + #C2C2C2 + + + + name + Invalid + scope + invalid + settings + + background + #FF0000 + fontStyle + + foreground + #FFFFFF + + + + name + User1 + scope + collab.user1 + settings + + background + #FFF980 + foreground + #323232 + + + + uuid + 95BEF169-A2E5-4041-A84A-AAFC1DD61558 + + diff --git a/plugins/node_modules/ace/tool/tmthemes/krTheme.tmTheme b/plugins/node_modules/ace/tool/tmthemes/krTheme.tmTheme new file mode 100644 index 00000000..65c5c9b6 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/krTheme.tmTheme @@ -0,0 +1,551 @@ + + + + + comment + Created by Kenneth Reitz, inspired by minimal design + name + krTheme + settings + + + settings + + background + #0B0A09 + caret + #FF9900 + foreground + #FCFFE0 + invisibles + #FFB16F52 + lineHighlight + #38403D + selection + #AA00FF73 + + + + name + Constant + scope + constant + settings + + fontStyle + + foreground + #D27518C2 + + + + name + Entity + scope + entity + settings + + fontStyle + + foreground + #A89100B5 + + + + name + Entity Other + scope + entity.other + settings + + foreground + #BA6912 + + + + name + Keyword + scope + keyword + settings + + fontStyle + + foreground + #949C8B + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #FFEE80 + + + + name + String + scope + string -string.unquoted.old-plist -string.unquoted.heredoc, string.unquoted.heredoc string + settings + + foreground + #C7A4A1B5 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #706D5B + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #9FC28A + + + + name + Variable + scope + variable + settings + + fontStyle + + foreground + #D1A796 + + + + name + Lang Variable + scope + variable.language + settings + + fontStyle + + foreground + #FF80E1 + + + + name + Function Call + scope + meta.function-call + settings + + foreground + #FFEE80 + + + + name + Invalid + scope + invalid + settings + + background + #A41300 + foreground + #F8F8F8 + + + + name + Embedded Source + scope + text source, string.unquoted.heredoc, source source + settings + + background + #24231D4D + fontStyle + + foreground + #D9D59F + + + + name + Entity inherited-class + scope + entity.other.inherited-class + settings + + fontStyle + + foreground + #7EFCFF + + + + name + String embedded-source + scope + string.quoted source + settings + + fontStyle + + foreground + #439740BA + + + + name + String constant + scope + string constant + settings + + foreground + #60DB5DBA + + + + name + String.regexp + scope + string.regexp + settings + + foreground + #7DFFC0A6 + + + + name + String variable + scope + string variable + settings + + fontStyle + + foreground + #B8B960 + + + + name + Support.function + scope + support.function + settings + + fontStyle + + foreground + #85873A + + + + name + Support.constant + scope + support.constant + settings + + fontStyle + + foreground + #C27E66 + + + + name + Exception + scope + support.class.exception + settings + + foreground + #FF1E00 + + + + name + C/C++ Preprocessor Line + scope + meta.preprocessor.c + settings + + foreground + #8996A8 + + + + name + C/C++ Preprocessor Directive + scope + meta.preprocessor.c keyword + settings + + foreground + #AFC4DB + + + + name + Doctype/XML Processing + scope + meta.sgml.html meta.doctype, meta.sgml.html meta.doctype entity, meta.sgml.html meta.doctype string, meta.xml-processing, meta.xml-processing entity, meta.xml-processing string + settings + + foreground + #73817D + + + + name + Meta.tag.A + scope + meta.tag, meta.tag entity + settings + + foreground + #BABD9C + + + + name + css tag-name + scope + meta.selector.css entity.name.tag + settings + + foreground + #99A190 + + + + name + css#id + scope + meta.selector.css entity.other.attribute-name.id + settings + + foreground + #CC8844 + + + + name + css.class + scope + meta.selector.css entity.other.attribute-name.class + settings + + foreground + #CFB958 + + + + name + css property-name: + scope + support.type.property-name.css + settings + + foreground + #E0DDAD + + + + name + css property-value; + scope + meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css + settings + + foreground + #AEB14B + + + + name + css @at-rule + scope + meta.preprocessor.at-rule keyword.control.at-rule + settings + + foreground + #FFB010 + + + + name + css additional-constants + scope + meta.property-value support.constant.named-color.css, meta.property-value constant + settings + + foreground + #999179 + + + + name + css constructor.argument + scope + meta.constructor.argument.css + settings + + foreground + #EB939A + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + background + #000E1A + fontStyle + + foreground + #F8F8F8 + + + + name + diff.deleted + scope + markup.deleted + settings + + background + #800F00 + foreground + #F8F8F8 + + + + name + diff.changed + scope + markup.changed + settings + + background + #806F00 + foreground + #F8F8F8 + + + + name + diff.inserted + scope + markup.inserted + settings + + background + #228000 + foreground + #F8F8F8 + + + + name + Raw Markup + scope + markup.raw + settings + + background + #8FDDF630 + + + + name + Block Quote + scope + markup.quote + settings + + background + #005BAA + + + + name + List + scope + markup.list + settings + + background + #0F0040 + + + + name + Bold Markup + scope + markup.bold + settings + + fontStyle + bold + foreground + #9D80FF + + + + name + Italic Markup + scope + markup.italic + settings + + fontStyle + italic + foreground + #80FFBB + + + + name + Heading Markup + scope + markup.heading + settings + + fontStyle + bold + + + + uuid + 87F051F7-B6FB-408C-96F9-467B66C14E9F + + diff --git a/plugins/node_modules/ace/tool/tmthemes/monoindustrial.tmTheme b/plugins/node_modules/ace/tool/tmthemes/monoindustrial.tmTheme new file mode 100644 index 00000000..81f8eb70 --- /dev/null +++ b/plugins/node_modules/ace/tool/tmthemes/monoindustrial.tmTheme @@ -0,0 +1,451 @@ + + + + + name + monoindustrial + settings + + + settings + + background + #222C28 + caret + #FFFFFF + foreground + #FFFFFF + invisibles + #666C6880 + lineHighlight + #0C0D0C40 + selection + #91999466 + + + + name + Comment + scope + comment + settings + + background + #151C19 + fontStyle + + foreground + #666C68 + + + + name + Type + scope + storage, support.type + settings + + foreground + #C23B00 + + + + name + Embedded code + scope + string.unquoted.embedded, text source, string.unquoted + settings + + background + #151C19 + foreground + #FFFFFF + + + + name + String interpolation + scope + constant.character.escaped, string source - string.unquoted.embedded, string string source + settings + + background + #1A0700 + foreground + #E9470000 + + + + name + String + scope + string - string source, string source string, meta.scope.heredoc + settings + + background + #1A0700 + fontStyle + + foreground + #C23800 + + + + name + Number + scope + constant.numeric + settings + + foreground + #E98800 + + + + name + Variable + scope + variable.language, variable.other + settings + + fontStyle + + foreground + #648BD2 + + + + name + Constant + scope + constant + settings + + foreground + #E98800 + + + + name + Preprocessor line + scope + other.preprocessor + settings + + background + #161D1A + fontStyle + + foreground + #A8B3AB + + + + name + Preprocessor directive + scope + entity.name.preprocessor + settings + + background + #161D1A + fontStyle + + foreground + #A8B3AB + + + + name + Function name + scope + entity.name.function, keyword.operator, keyword.other.name-of-parameter + settings + + fontStyle + + foreground + #A8B3AB + + + + name + Class name + scope + entity.name.class + settings + + fontStyle + + foreground + #9A2F00 + + + + name + Function parameter + scope + variable.parameter + settings + + fontStyle + + foreground + #648BD2 + + + + name + Function argument and result types + scope + storage.type.method + settings + + fontStyle + + foreground + #666C68 + + + + name + Keyword + scope + keyword, storage.type.function.php + settings + + fontStyle + + foreground + #A39E64 + + + + name + Invalid + scope + invalid + settings + + background + #990000AD + foreground + #FFFFFF + + + + name + Invalid trailing whitespace + scope + invalid.trailing-whitespace + settings + + background + #FFD0D0 + foreground + #000000 + + + + name + Library function + scope + support.function + settings + + fontStyle + + foreground + #588E60 + + + + name + Library object + scope + support.class, support.type, entity.name + settings + + fontStyle + + foreground + #5778B6 + + + + name + Library constant + scope + support.constant + settings + + foreground + #C87500 + + + + name + Library variable + scope + support.other.variable + settings + + fontStyle + + foreground + #5879B7 + + + + name + Markup XML declaration + scope + declaration.xml-processing + settings + + fontStyle + + foreground + #68685B + + + + name + Markup DOCTYPE + scope + declaration.doctype + settings + + fontStyle + + foreground + #888888 + + + + name + Markup DTD + scope + declaration.doctype.DTD + settings + + fontStyle + + foreground + #888888 + + + + name + Markup tag + scope + declaration.tag + settings + + fontStyle + + foreground + #A65EFF + + + + name + Markup name of tag + scope + entity.name.tag + settings + + foreground + #A65EFF + + + + name + Markup tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #909993 + + + + name + Punctuation + scope + punctuation + settings + + foreground + #90999380 + + + + name + Inherited class name + scope + entity.other.inherited-class + settings + + fontStyle + + foreground + #7642B7 + + + + name + Changed files (Subversion) + scope + meta.scope.changed-files.svn, markup.inserted.svn, markup.changed.svn, markup.deleted.svn + settings + + background + #00000059 + fontStyle + + foreground + #FFFFFF + + + + name + Blocks, Expressions 1 + scope + meta.section + settings + + background + #78807B0A + + + + name + Blocks, Expressions 2 + scope + meta.section meta.section + settings + + background + #78807B0A + + + + name + Blocks, Expressions 3 + scope + meta.section meta.section meta.section + settings + + background + #78807B0A + + + + uuid + EEA328BA-54E5-49DC-81F3-1F25BF8AF163 + + diff --git a/plugins/node_modules/ace/tool/update_deps.js b/plugins/node_modules/ace/tool/update_deps.js new file mode 100644 index 00000000..5b2f2c49 --- /dev/null +++ b/plugins/node_modules/ace/tool/update_deps.js @@ -0,0 +1,307 @@ +var https = require("https"); +var http = require("http"); +var url = require("url"); +var fs = require("fs"); + +var Path = require("path"); +var spawn = require("child_process").spawn; +var async = require("asyncjs"); +var rootDir = __dirname + "/../lib/ace/"; + +var SKIP_NPM = false; + +var deps = { + csslint: { + path: "mode/css/csslint.js", + // url: "https://raw.github.com/stubbornella/csslint/master/release/csslint.js", + browserify: { + npmModule: "git+https://github.com/CSSLint/csslint.git#master", + path: "jshint/src/jshint.js", + exports: "jshint" + }, + fetch: browserify, + wrapAmd: true + }, + requirejs: { + path: "../../demo/kitchen-sink/require.js", + url: "https://raw.github.com/jrburke/requirejs/master/require.js", + wrapAmd: false + }, + luaparse: { + path: "mode/lua/luaparse.js", + url: "https://raw.github.com/oxyc/luaparse/master/luaparse.js", + wrapAmd: true, + postProcess: function(src) { + return src.replace( + /\(function\s*\(root,\s*name,\s*factory\)\s*{[\s\S]*?}\(this,\s*'luaparse',/, + "(function (root, name, factory) {\n factory(exports)\n}(this, 'luaparse'," + ) + } + }, + html5: { + path: "mode/html/saxparser.js", + browserify: { + npmModule: "git+https://github.com/aredridel/html5.git#master", + path: "html5/lib/sax/SAXParser.js", + exports: "SAXParser" + }, + fetch: browserify, + wrapAmd: true, + postProcess: function(src) { + return src; + } + }, + xquery: { + path: "mode/xquery/xquery_lexer.js", + browserify: { + npmModule: "git+https://github.com/wcandillon/xqlint.git#master", + path: "xqlint/lib/lexers/xquery_lexer.js", + exports: "XQueryLexer" + }, + fetch: browserify, + wrapAmd: true, + postProcess: function(src){ + return src; + } + }, + jsoniq: { + path: "mode/xquery/jsoniq_lexer.js", + browserify: { + npmModule: "git+https://github.com/wcandillon/xqlint.git#master", + path: "xqlint/lib/lexers/jsoniq_lexer.js", + exports: "JSONiqLexer" + }, + fetch: browserify, + wrapAmd: true, + postProcess: function(src){ + return src; + } + }, + xqlint: { + path: "mode/xquery/xqlint.js", + browserify: { + npmModule: "git+https://github.com/wcandillon/xqlint.git#master", + path: "xqlint/lib/xqlint.js", + exports: "XQLint" + }, + fetch: browserify, + wrapAmd: true, + postProcess: function(src){ + return src; + } + }, + jshint: { + path: "mode/javascript/jshint.js", + browserify: { + npmModule: "git+https://github.com/ajaxorg/jshint.git#master", + path: "jshint/src/jshint.js", + exports: "jshint" + }, + fetch: browserify, + wrapAmd: true, + postProcess: function(src) { + src = src.replace( + /"Expected a conditional expression and instead saw an assignment."/g, + '"Assignment in conditional expression"' + ); + src = src.replace(/var defaultMaxListeners = 10;/, function(a) {return a.replace("10", "200")}); + return src; + } + }, + emmet: { + path: "ext/emmet core.js", + url: [ + "https://raw.github.com/sergeche/emmet-sublime/master/emmet/emmet-app.js", + "https://raw.github.com/sergeche/emmet-sublime/master/emmet/snippets.json" + ], + postProcess: function(data) { + return data[0] + .replace("define(emmet)", "define('emmet', [], emmet)") + .replace(/(emmet.define\('bootstrap'.*)[\s\S]*$/, function(_, x) { + return x + "\n" + + "var snippets = " + data[1] + ";\n" + + "var res = require('resources');\n" + + "var userData = res.getVocabulary('user') || {};\n" + + "res.setVocabulary(require('utils').deepMerge(userData, snippets), 'user');\n" + + "});"; + }); + } + }, + vim: { + fetch: function(){ + var rootHref = "https://raw.githubusercontent.com/codemirror/CodeMirror/master/" + var fileMap = {"keymap/vim.js": "keyboard/vim.js", "test/vim_test.js": "keyboard/vim_test.js"}; + async.forEach(Object.keys(fileMap), function(x, next) { + download(rootHref + x, function(e, d) { + d = d.replace(/^\(function.*{[^{}]+^}[^{}]+{/m, "define(function(require, exports, module) {"); + d = d.replace(/^\s*return vimApi;\s*};/gm, " //};") + .replace("var Vim = function() {", "$& return vimApi; } //{") + fs.writeFile(rootDir + fileMap[x], d, next) + }) + }, function() { + console.log("done") + }); + } + }, + liveScript: { + path: "mode/livescript.js", + url: "https://raw.githubusercontent.com/gkz/LiveScript/master/lib/mode-ls.js" + }, + coffee: { + path: "mode/coffee/coffee.js", + url: "https://raw.githubusercontent.com/jashkenas/coffeescript/master/extras/coffee-script.js", + wrapAmd: true, + postProcess: function(src){ + return "function define(f) { module.exports = f() }; define.amd = {};\n" + + dereqire(src); + } + }, + xmldom: { + fetch: function() { + var rootHref = "https://raw.githubusercontent.com/iDeBugger/xmldom/master/" + var fileMap = { + "sax.js": "mode/xml/sax.js", + "dom-parser.js": "mode/xml/dom-parser.js", + "dom.js": "mode/xml/dom.js" + }; + async.forEach(Object.keys(fileMap), function(x, next) { + download(rootHref + x, function(e, d) { + fs.writeFile(rootDir + fileMap[x], d, next) + }) + }, function() { + console.log("XmlDOM updating done") + }); + } + }, +}; + +var download = function(href, callback) { + if (Array.isArray(href)) + return async.map(href, download, callback); + + var options = url.parse(href); + var protocol = options.protocol === "https:" ? https : http; + console.log("connecting to " + options.host + " " + options.path); + protocol.get(options, function(res) { + var data = ""; + res.setEncoding("utf-8"); + + res.on("data", function(chunk){ + data += chunk; + }); + + res.on("end", function(){ + callback(null, data); + }); + }); +}; + +var getDep = function(dep) { + if (!dep.fetch) + dep.fetch = download + dep.fetch(dep.url, function(err, data) { + if (dep.postProcess) + data = dep.postProcess(data); + if (dep.wrapAmd) + data = "define(function(require, exports, module) {\n" + + data + + "\n});"; + + fs.writeFile(rootDir + dep.path, data, "utf-8", function(err){ + if (err) throw err; + console.log("File " + dep.path + " saved."); + }); + }); +}; + +function run(cmd, cb) { + var proc = process.platform == "win32" + ? spawn("cmd", ["/c", cmd], {cwd: __dirname}) + : spawn("bash", ["-c", cmd], {cwd: __dirname}); + + var result = "", err = ""; + proc.stderr.setEncoding("utf8"); + proc.stderr.on('data', function (data) { + err += data; + }); + + proc.stdout.setEncoding("utf8"); + proc.stdout.on('data', function (data) { + result += data; + }); + + proc.on('close', done); + function done(code) { + if (code !== 0) { + console.error(cmd + '::: process exited with code :::' + code); + console.error(err) + } + cb(err, result) + } +} + +function unquote(str) { + return str.replace(/\\(.)/g, function(x, a) { + return a == "n" ? "\n" + : a == "t" ? "\t" + : a == "r" ? "\r" + : a + }); +} + +function dereqire(src) { + return require("derequire")(src, [ + {from: 'require', to: '_dereq_'}, + {from: 'define', to: '_defi_'} + ]); +} + +function browserify(_, cb) { + var br = this.browserify; + var path = Path.join("node_modules", br.path) + process.chdir(__dirname); + if (Path.sep == "\\" && !Path._relative) { + Path._relative = Path.relative; + Path.relative = function() { + var v = Path._relative.apply(this, arguments); + return v.replace(/\\/g, "/"); + } + } + function done() { + var browserify = require('browserify'); + var absPath = require.resolve(__dirname + "/" + path); + var defaultPreludePath = Path.join(require.resolve("browser-pack"), "../prelude.js"); + var defaultPrelude = "module.exports = " + fs.readFileSync(defaultPreludePath, 'utf8') + .replace(/^[ \t]*\/\/.*/gm, "") + .replace(/^\s*\n\r?/gm, "") + .replace(/return newRequire;/, "return newRequire(entry[0]);") + var opts = { + expose: br.exports, + prelude: defaultPrelude, + exposeAll: true + } + var b = browserify(opts); + b.plugin(require("deps-sort"), opts); + b.add(absPath); + var p = b.bundle(); + var buffer = ""; + p.on("data", function(e) { buffer += e; }); + p.on("end", function() { + var src = dereqire(buffer); + cb(null, src); + }); + } + if (SKIP_NPM) return done(); + run("npm install " + br.npmModule, done); +} + +var args = process.argv.slice(2); +SKIP_NPM = args.indexOf("--skip-npm") != -1; +args = args.filter(function(x) {return x[0] != "-" }); +if (!args.length) + args = Object.keys(deps); + +args.forEach(function(key) { + getDep(deps[key]) +}); + diff --git a/plugins/node_modules/ace/tool/wrap_keyword_regexp.js b/plugins/node_modules/ace/tool/wrap_keyword_regexp.js new file mode 100644 index 00000000..d1e1508a --- /dev/null +++ b/plugins/node_modules/ace/tool/wrap_keyword_regexp.js @@ -0,0 +1,21 @@ +// a little script to turn giant keyword regexps into +// something that ace can use; for example: +// +// \b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol))\b +// +// into +// +// (?:\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol))(?:\b) + +var inputString = process.argv.splice(2)[0]; + +// solve word boundaries +var outputString = inputString.replace(/\\b/g, "(?:\\\\b)"); + +// I apparently need to do this, instead of something clever, because the regexp +// lastIndex is screwing up my positional +outputString = outputString.split("b)("); + +outputString = outputString[0] + "b)(" + outputString[1].replace(/\(([^\?])/g, "(?:$1"); + +console.log("\n\n" + outputString + "\n\n"); \ No newline at end of file diff --git a/plugins/node_modules/ace/version.js b/plugins/node_modules/ace/version.js new file mode 100644 index 00000000..eaf1e5fe --- /dev/null +++ b/plugins/node_modules/ace/version.js @@ -0,0 +1,4 @@ +#!/usr/bin/env node +var x; +x = require('./package'); +console.log(x.version) diff --git a/plugins/node_modules/ace_tree/LICENSE b/plugins/node_modules/ace_tree/LICENSE new file mode 100644 index 00000000..d188c3e4 --- /dev/null +++ b/plugins/node_modules/ace_tree/LICENSE @@ -0,0 +1,15 @@ + +Copyright (C) 2015, Ajax.org B.V. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +See . + diff --git a/plugins/node_modules/ace_tree/demo.html b/plugins/node_modules/ace_tree/demo.html new file mode 100644 index 00000000..d415983f --- /dev/null +++ b/plugins/node_modules/ace_tree/demo.html @@ -0,0 +1,25 @@ + + + + + + Ace Tree + + + + +
    +
    + + + + + + + diff --git a/plugins/node_modules/ace_tree/demo/demo.js b/plugins/node_modules/ace_tree/demo/demo.js new file mode 100644 index 00000000..70f609f2 --- /dev/null +++ b/plugins/node_modules/ace_tree/demo/demo.js @@ -0,0 +1,117 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/*global editor:true, txt:true, tree:true, datagrid:true*/ +define(function(require, exports, module) { + +// var ace = require("ace/ace"); +// editor = ace.edit("editor-container"); + +var Tooltip = require("ace_tree/tooltip"); + +txt = require("ace/requirejs/text!root/list.txt").trim().replace(/\r/g, ""); + +var root = {}; +txt.split(/[\r\n]+/).forEach(function(x) { + var parts = x.split(":"); + var node = root; + parts.forEach(function(p, i) { + var map = node.map || (node.map = {}); + node = map[p] || (map[p] = {label: p, $depth: i}); + }); +}); + + + +var Tree = require("ace_tree/tree"); +var DataProvider = require("ace_tree/data_provider"); + +var treeEl = document.getElementById("tree"); +tree = new Tree(treeEl); +tree.setDataProvider(new DataProvider(root)); + + +DataProvider.variableHeightRowMixin.call(tree.provider); +tree.provider.getItemHeight = function(node, i) { + return this.rowHeight; // * (i%2 + 1); +}; + +new Tooltip(tree); + +var datagridEl = document.getElementById("datagrid"); +datagrid = new Tree(datagridEl); +var gridData = new DataProvider(); +gridData.getChildrenFromMap = gridData.getChildren; +gridData.getChildren = function(node) { + node.children = node.map && Object.keys(node.map).map(function(key) { + var child = node.map[key]; + return { + label: key.toUpperCase(), + key: key, + length: key.length, + childCount: Object.keys(child.map || child), + map: child.map + }; + }); + return this.getChildrenFromMap(node); +}; + +gridData.setRoot({map: root.map}); + + + +gridData.columns = [{ + caption: "Key", + getText: function(node) { return node.key }, + width: "60%", + className: "main", + type: "tree" +}, { + caption: "Len", + getText: function(node) { return node.length }, + width: "50px", + className: "red" +}, { + caption: "Child Count", + getText: function(node) { return node.childCount }, + width: "40%" +}]; + + +datagrid.setDataProvider(gridData); + + +window.addEventListener("resize", function() { + tree.resize(); + datagrid.resize(); +}); + + +}); diff --git a/plugins/node_modules/ace_tree/demo/layout.js b/plugins/node_modules/ace_tree/demo/layout.js new file mode 100644 index 00000000..4729af44 --- /dev/null +++ b/plugins/node_modules/ace_tree/demo/layout.js @@ -0,0 +1,134 @@ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("ace/lib/dom"); +var event = require("ace/lib/event"); + +var EditSession = require("ace/edit_session").EditSession; +var UndoManager = require("ace/undomanager").UndoManager; +var Renderer = require("ace/virtual_renderer").VirtualRenderer; +var Editor = require("ace/editor").Editor; +var MultiSelect = require("ace/multi_select").MultiSelect; + +dom.importCssString("\ +splitter {\ + border: 1px solid #C6C6D2;\ + width: 0px;\ + cursor: ew-resize;\ + z-index:10}\ +splitter:hover {\ + margin-left: -2px;\ + width:3px;\ + border-color: #B5B4E0;\ +}\ +", "splitEditor"); + +exports.edit = function(el) { + if (typeof(el) == "string") + el = document.getElementById(el); + + var editor = new Editor(new Renderer(el, require("ace/theme/textmate"))); + + editor.resize(); + event.addListener(window, "resize", function() { + editor.resize(); + }); + return editor; +}; + + +var SplitRoot = function(el, theme, position, getSize) { + el.style.position = position || "relative"; + this.container = el; + this.getSize = getSize || this.getSize; + this.resize = this.$resize.bind(this); + + event.addListener(el.ownerDocument.defaultView, "resize", this.resize); + this.editor = this.createEditor(); +}; + +(function(){ + this.createEditor = function() { + var el = document.createElement("div"); + el.className = this.$editorCSS; + el.style.cssText = "position: absolute; top:0px; bottom:0px"; + this.$container.appendChild(el); + var session = new EditSession(""); + var editor = new Editor(new Renderer(el, this.$theme)); + + /*editor.on("focus", function() { + this._emit("focus", editor); + }.bind(this));*/ + + this.$editors.push(editor); + editor.setFontSize(this.$fontSize); + return editor; + }; + this.$resize = function() { + var size = this.getSize(this.container); + this.rect = { + x: size.left, + y: size.top, + w: size.width, + h: size.height + }; + this.item.resize(this.rect); + }; + this.getSize = function(el) { + return el.getBoundingClientRect(); + }; + this.destroy = function() { + var win = this.container.ownerDocument.defaultView; + event.removeListener(win, "resize", this.resize); + }; + + +}).call(SplitRoot.prototype); + + + +var Split = function(){ + +}; +(function(){ + this.execute = function(options) { + this.$u.execute(options); + }; + +}).call(Split.prototype); + + + +exports.singleLineEditor = function(el) { + var renderer = new Renderer(el); + el.style.overflow = "hidden"; + + renderer.screenToTextCoordinates = function(x, y) { + var pos = this.pixelToScreenCoordinates(x, y); + return this.session.screenToDocumentPosition( + Math.min(this.session.getScreenLength() - 1, Math.max(pos.row, 0)), + Math.max(pos.column, 0) + ); + }; + + renderer.$maxLines = 4; + + renderer.setStyle("ace_one-line"); + var editor = new Editor(renderer); + new MultiSelect(editor); + editor.session.setUndoManager(new UndoManager()); + + editor.setHighlightActiveLine(false); + editor.setShowPrintMargin(false); + editor.renderer.setShowGutter(false); + editor.renderer.setHighlightGutterLine(false); + editor.$mouseHandler.$focusWaitTimout = 0; + + return editor; +}; + + + +}); + diff --git a/plugins/node_modules/ace_tree/demo/styles.css b/plugins/node_modules/ace_tree/demo/styles.css new file mode 100644 index 00000000..3265e4bc --- /dev/null +++ b/plugins/node_modules/ace_tree/demo/styles.css @@ -0,0 +1,75 @@ +html { + height: 100%; + width: 100%; + overflow: hidden; +} + +body { + overflow: hidden; + margin: 0; + padding: 0; + height: 100%; + width: 100%; + font-family: Arial, Helvetica, sans-serif, Tahoma, Verdana, sans-serif; + font-size: 12px; + background: rgb(14, 98, 165); +} + +#tree { + position: absolute; + top: 0px; + left: 0px; + bottom: 0px; + right: 80%; +} + +#datagrid { + position: absolute; + top: 0px; + left: 20%; + bottom: 0px; + right: 0px; +} + +#controls { + padding: 5px; +} + +#controls td { + text-align: right; +} + +#controls td + td { + text-align: left; +} +.loading { + color: gray; + position: absolute; + right: 0; + border-left: 1px solid; +} + +.ace_tree-light .toggler { + overflow: visible; + width: 10px; + height: 10px; + background-image: url(../lib/ace_tree/css/tree_close_arrow_small.png); + background-repeat: no-repeat; + background-position: 0px 0px; + background-repeat: no-repeat; +} + + +.ace_tree-light { + background-image: url(../lib/ace_tree/css/tree_background.png); +} + +.ace_tree_focus.ace_tree-light .tree-row.selected { + border-top: 1px solid #3A9BEC; + border-bottom: 1px solid #185F97; + background: linear-gradient(center bottom, #1f82d2 0%, #2890e5 100%) repeat scroll 0 0 transparent; + color: #f8f8f8; +} +.ace_tree_focus.ace_tree-light .tree-row.selected .tree-column{ + border-bottom-color: transparent; +} \ No newline at end of file diff --git a/plugins/node_modules/ace_tree/demo/util.js b/plugins/node_modules/ace_tree/demo/util.js new file mode 100644 index 00000000..d2e32524 --- /dev/null +++ b/plugins/node_modules/ace_tree/demo/util.js @@ -0,0 +1,238 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("ace/lib/dom"); +var event = require("ace/lib/event"); + +var EditSession = require("ace/edit_session").EditSession; +var UndoManager = require("ace/undomanager").UndoManager; +var Renderer = require("ace/virtual_renderer").VirtualRenderer; +var Editor = require("ace/editor").Editor; +var MultiSelect = require("ace/multi_select").MultiSelect; + +exports.createEditor = function(el) { + return new Editor(new Renderer(el)); +} + +exports.createSplitEditor = function(el) { + if (typeof(el) == "string") + el = document.getElementById(el); + + var e0 = document.createElement("div"); + var s = document.createElement("splitter"); + var e1 = document.createElement("div"); + el.appendChild(e0); + el.appendChild(e1); + el.appendChild(s); + e0.style.position = e1.style.position = s.style.position = "absolute"; + el.style.position = "relative"; + var split = {$container: el}; + + split.editor0 = split[0] = new Editor(new Renderer(e0)); + split.editor1 = split[1] = new Editor(new Renderer(e1)); + split.splitter = s; + + MultiSelect(split.editor0); + MultiSelect(split.editor1); + + s.ratio = 0.5; + + split.resize = function resize(){ + var height = el.parentNode.clientHeight - el.offsetTop; + var total = el.clientWidth; + var w1 = total * s.ratio; + var w2 = total * (1- s.ratio); + s.style.left = w1 - 1 + "px"; + s.style.height = el.style.height = height + "px"; + + var st0 = split[0].container.style; + var st1 = split[1].container.style; + st0.width = w1 + "px"; + st1.width = w2 + "px"; + st0.left = 0 + "px"; + st1.left = w1 + "px"; + + st0.top = st1.top = "0px"; + st0.height = st1.height = height + "px"; + + split[0].resize(); + split[1].resize(); + }; + + split.onMouseDown = function(e) { + var rect = el.getBoundingClientRect(); + var x = e.clientX; + var y = e.clientY; + + var button = e.button; + if (button !== 0) { + return; + } + + var onMouseMove = function(e) { + x = e.clientX; + y = e.clientY; + }; + var onResizeEnd = function(e) { + clearInterval(timerId); + }; + + var onResizeInterval = function() { + s.ratio = (x - rect.left) / rect.width + split.resize() + }; + + event.capture(s, onMouseMove, onResizeEnd); + var timerId = setInterval(onResizeInterval, 40); + + return e.preventDefault(); + }; + + + + event.addListener(s, "mousedown", split.onMouseDown); + event.addListener(window, "resize", split.resize); + split.resize(); + return split; +}; + +/***************************/ +exports.stripLeadingComments = function(str) { + if(str.slice(0,2)=='/*') { + var j = str.indexOf('*/')+2; + str = str.substr(j); + } + return str.trim() + "\n"; +}; + +/***************************/ +exports.saveOption = function(el, val) { + if (!el.onchange && !el.onclick) + return; + + if ("checked" in el) { + if (val !== undefined) + el.checked = val; + + localStorage && localStorage.setItem(el.id, el.checked ? 1 : 0); + } + else { + if (val !== undefined) + el.value = val; + + localStorage && localStorage.setItem(el.id, el.value); + } +}; + +exports.bindCheckbox = function(id, callback, noInit) { + if (typeof id == "string") + var el = document.getElementById(id); + else { + var el = id; + id = el.id; + } + var el = document.getElementById(id); + if (localStorage && localStorage.getItem(id)) + el.checked = localStorage.getItem(id) == "1"; + + var onCheck = function() { + callback(!!el.checked); + exports.saveOption(el); + }; + el.onclick = onCheck; + noInit || onCheck(); + return el; +}; + +exports.bindDropdown = function(id, callback, noInit) { + if (typeof id == "string") + var el = document.getElementById(id); + else { + var el = id; + id = el.id; + } + if (localStorage && localStorage.getItem(id)) + el.value = localStorage.getItem(id); + + var onChange = function() { + callback(el.value); + exports.saveOption(el); + }; + + el.onchange = onChange; + noInit || onChange(); +}; + +exports.fillDropdown = function(el, values) { + if (typeof el == "string") + el = document.getElementById(el); + + dropdown(values).forEach(function(e) { + el.appendChild(e); + }); +}; + +function elt(tag, attributes, content) { + var el = dom.createElement(tag); + if (typeof content == "string") { + el.appendChild(document.createTextNode(content)); + } else if (content) { + content.forEach(function(ch) { + el.appendChild(ch); + }); + } + + for (var i in attributes) + el.setAttribute(i, attributes[i]); + return el; +} + +function optgroup(values) { + return values.map(function(item) { + if (typeof item == "string") + item = {name: item, caption: item}; + return elt("option", {value: item.name}, item.caption || item.desc); + }); +} + +function dropdown(values) { + if (Array.isArray(values)) + return optgroup(values); + + return Object.keys(values).map(function(i) { + return elt("optgroup", {"label": i}, optgroup(values[i])); + }); +} + + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/anchor.js b/plugins/node_modules/ace_tree/lib/ace_tree/anchor.js new file mode 100644 index 00000000..827d83a2 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/anchor.js @@ -0,0 +1,242 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("ace/lib/oop"); +var EventEmitter = require("ace/lib/event_emitter").EventEmitter; + +/** + * + * Defines the floating pointer in the document. Whenever text is inserted or deleted before the cursor, the position of the cursor is updated. + * + * @class Anchor + **/ + +/** + * Creates a new `Anchor` and associates it with a document. + * + * @param {Document} doc The document to associate with the anchor + * @param {Number} row The starting row position + * @param {Number} column The starting column position + * + * @constructor + **/ + +var Anchor = exports.Anchor = function(doc, row, column) { + this.document = doc; + + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); + + this.$onChange = this.onChange.bind(this); + doc.on("change", this.$onChange); +}; + +(function() { + + oop.implement(this, EventEmitter); + + /** + * Returns an object identifying the `row` and `column` position of the current anchor. + * @returns {Object} + **/ + + this.getPosition = function() { + return this.$clipPositionToDocument(this.row, this.column); + }; + + /** + * + * Returns the current document. + * @returns {Document} + **/ + + this.getDocument = function() { + return this.document; + }; + + /** + * Fires whenever the anchor position changes. + * + * Both of these objects have a `row` and `column` property corresponding to the position. + * + * Events that can trigger this function include [[Anchor.setPosition `setPosition()`]]. + * + * @event change + * @param {Object} e An object containing information about the anchor position. It has two properties: + * - `old`: An object describing the old Anchor position + * - `value`: An object describing the new Anchor position + * + * + **/ + + this.onChange = function(e) { + var delta = e.data; + var range = delta.range; + + if (range.start.row == range.end.row && range.start.row != this.row) + return; + + if (range.start.row > this.row) + return; + + if (range.start.row == this.row && range.start.column > this.column) + return; + + var row = this.row; + var column = this.column; + var start = range.start; + var end = range.end; + + if (delta.action === "insertText") { + if (start.row === row && start.column <= column) { + if (start.row === end.row) { + column += end.column - start.column; + } else { + column -= start.column; + row += end.row - start.row; + } + } else if (start.row !== end.row && start.row < row) { + row += end.row - start.row; + } + } else if (delta.action === "insertLines") { + if (start.row <= row) { + row += end.row - start.row; + } + } else if (delta.action === "removeText") { + if (start.row === row && start.column < column) { + if (end.column >= column) + column = start.column; + else + column = Math.max(0, column - (end.column - start.column)); + + } else if (start.row !== end.row && start.row < row) { + if (end.row === row) + column = Math.max(0, column - end.column) + start.column; + row -= (end.row - start.row); + } else if (end.row === row) { + row -= end.row - start.row; + column = Math.max(0, column - end.column) + start.column; + } + } else if (delta.action == "removeLines") { + if (start.row <= row) { + if (end.row <= row) + row -= end.row - start.row; + else { + row = start.row; + column = 0; + } + } + } + + this.setPosition(row, column, true); + }; + + /** + * Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped. + * @param {Number} row The row index to move the anchor to + * @param {Number} column The column index to move the anchor to + * @param {Boolean} noClip Identifies if you want the position to be clipped + * + * + * + **/ + + this.setPosition = function(row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } else { + pos = this.$clipPositionToDocument(row, column); + } + + if (this.row == pos.row && this.column == pos.column) + return; + + var old = { + row: this.row, + column: this.column + }; + + this.row = pos.row; + this.column = pos.column; + this._emit("change", { + old: old, + value: pos + }); + }; + + /** + * When called, the `'change'` event listener is removed. + * + **/ + + this.detach = function() { + this.document.removeEventListener("change", this.$onChange); + }; + + /** + * Clips the anchor position to the specified row and column. + * @param {Number} row The row index to clip the anchor to + * @param {Number} column The column index to clip the anchor to + * + **/ + this.$clipPositionToDocument = function(row, column) { + var pos = {}; + + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + + if (column < 0) + pos.column = 0; + + return pos; + }; + +}).call(Anchor.prototype); + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/commands/default_commands.js b/plugins/node_modules/ace_tree/lib/ace_tree/commands/default_commands.js new file mode 100644 index 00000000..e7918244 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/commands/default_commands.js @@ -0,0 +1,159 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +function bindKey(win, mac) { + return {win: win, mac: mac}; +} + +exports.commands = [{ + name: "selectAll", + bindKey: bindKey("Ctrl-A", "Command-A"), + exec: function(editor) { editor.selectAll(); } +}, { + name: "centerselection", + bindKey: bindKey(null, "Ctrl-L"), + exec: function(editor) { editor.centerSelection(); } +}, { + name: "closeOrlevelUp", + bindKey: bindKey("Left", "Left|Ctrl-B"), + exec: function(editor) { editor.navigateLevelUp(true); } +}, , { + name: "levelUp", + bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-B"), + exec: function(editor) { editor.navigateLevelUp(); } +}, { + name: "levelDown", + bindKey: bindKey("Right", "Right|Ctrl-F"), + exec: function(editor) { editor.navigateLevelDown(); } +}, { + name: "goToStart", + editorKey: bindKey("Ctrl-Home", "Ctrl-Home"), + bindKey: bindKey("Home|Ctrl-Home", "Home|Ctrl-Home"), + exec: function(editor) { editor.navigateStart(); } +}, { + name: "goToEnd", + editorKey: bindKey("Ctrl-End", "Ctrl-End"), + bindKey: bindKey("End|Ctrl-End", "End|Ctrl-End"), + exec: function(editor) { editor.navigateEnd(); } +}, { + name: "closeAllFromSelected", + bindKey: bindKey("Ctrl-Left", "Ctrl-Left"), + exec: function(ed) { ed.provider.close(ed.selection.getCursor(), true); } +}, { + name: "openAllFromSelected", + bindKey: bindKey("Ctrl-Right", "Ctrl-Right"), + exec: function(ed) { ed.provider.open(ed.selection.getCursor(), true); } +}, { + name: "pageup", + bindKey: "Option-PageUp", + exec: function(editor) { editor.scrollPageUp(); } +}, { + name: "gotopageup", + bindKey: "PageUp", + exec: function(editor) { editor.gotoPageUp(); } +}, { + name: "pagedown", + bindKey: "Option-PageDown", + exec: function(editor) { editor.scrollPageDown(); } +}, { + name: "gotopageDown", + bindKey: "PageDown", + exec: function(editor) { editor.gotoPageDown(); } +}, { + name: "scrollup", + bindKey: bindKey("Ctrl-Up", null), + exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); } +}, { + name: "scrolldown", + bindKey: bindKey("Ctrl-Down", null), + exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); } +}, { + name: "insertstring", + exec: function(e, args) { e.insertSting(args) } +}, { + name: "goUp", + bindKey: bindKey("Up", "Up|Ctrl-P"), + exec: function(editor) { editor.selection.moveSelection(-1); } +}, { + name: "goDown", + bindKey: bindKey("Down", "Down|Ctrl-N"), + exec: function(editor) { editor.selection.moveSelection(1); } +}, { + name: "selectUp", + bindKey: bindKey("Shift-Up", "Shift-Up"), + exec: function(editor) { editor.selection.moveSelection(-1, true); } +}, { + name: "selectDown", + bindKey: bindKey("Shift-Down", "Shift-Down"), + exec: function(editor) { editor.selection.moveSelection(1, true); } +}, { + name: "selectToUp", + bindKey: bindKey("Ctrl-Up", "Ctrl-Up"), + exec: function(editor) { editor.selection.moveSelection(-1, false, true); } +}, { + name: "selectToDown", + bindKey: bindKey("Ctrl-Down", "Ctrl-Down"), + exec: function(editor) { editor.selection.moveSelection(1, false, true); } +}, { + name: "selectMoreUp", + bindKey: bindKey("Ctrl-Shift-Up", "Ctrl-Shift-Up"), + exec: function(editor) { editor.selection.moveSelection(-1, true, true); } +}, { + name: "selectMoreDown", + bindKey: bindKey("Ctrl-Shift-Down", "Ctrl-Shift-Down"), + exec: function(editor) { editor.selection.moveSelection(1, true, true); } +}, { + name: "rename", + bindKey: "F2", + exec: function(tree) { tree.edit && tree.edit.startRename(); } +}, { + name: "chose", + bindKey: "Enter", + exec: function(tree) { tree._emit("afterChoose"); } +}, { + name: "delete", + bindKey: "Delete", + exec: function(tree) { tree._emit("delete"); } +}, { + name: "foldOther", + bindKey: bindKey("Alt-0", "Command-Option-0"), + exec: function(tree) { + tree.provider.close(tree.provider.root, true); + tree.reveal(tree.selection.getCursor()); + } +} + + +]; + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/config.js b/plugins/node_modules/ace_tree/lib/ace_tree/config.js new file mode 100644 index 00000000..2fb4ba1b --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/config.js @@ -0,0 +1,134 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"no use strict"; + +var lang = require("ace/lib/lang"); +var oop = require("ace/lib/oop"); +var net = require("ace/lib/net"); +var AppConfig = require("ace/lib/app_config").AppConfig; + +module.exports = exports = new AppConfig(); + +var global = (function() { + return this; +})(); + +var options = { + packaged: false, + workerPath: null, + modePath: null, + themePath: null, + basePath: "", + suffix: ".js", + $moduleUrls: {} +}; + +exports.get = function(key) { + if (!options.hasOwnProperty(key)) + throw new Error("Unknown config key: " + key); + + return options[key]; +}; + +exports.set = function(key, value) { + if (!options.hasOwnProperty(key)) + throw new Error("Unknown config key: " + key); + + options[key] = value; +}; + +exports.all = function() { + return lang.copyObject(options); +}; + +exports.moduleUrl = function(name, component) { + if (options.$moduleUrls[name]) + return options.$moduleUrls[name]; + + var parts = name.split("/"); + component = component || parts[parts.length - 2] || ""; + var base = parts[parts.length - 1].replace(component, "").replace(/(^[\-_])|([\-_]$)/, ""); + + if (!base && parts.length > 1) + base = parts[parts.length - 2]; + var path = options[component + "Path"]; + if (path == null) + path = options.basePath; + if (path && path.slice(-1) != "/") + path += "/"; + return path + component + "-" + base + this.get("suffix"); +}; + +exports.setModuleUrl = function(name, subst) { + return options.$moduleUrls[name] = subst; +}; + +exports.$loading = {}; +exports.loadModule = function(moduleName, onLoad) { + var module, moduleType; + if (Array.isArray(moduleName)) { + moduleType = moduleName[0]; + moduleName = moduleName[1]; + } + + try { + module = require(moduleName); + } catch (e) {}; + // require(moduleName) can return empty object if called after require([moduleName], callback) + if (module && !exports.$loading[moduleName]) + return onLoad && onLoad(module); + + if (!exports.$loading[moduleName]) + exports.$loading[moduleName] = []; + + exports.$loading[moduleName].push(onLoad); + + if (exports.$loading[moduleName].length > 1) + return; + + var afterLoad = function() { + require([moduleName], function(module) { + exports._emit("load.module", {name: moduleName, module: module}); + var listeners = exports.$loading[moduleName]; + exports.$loading[moduleName] = null; + listeners.forEach(function(onLoad) { + onLoad && onLoad(module); + }); + }); + }; + + if (!exports.get("packaged")) + return afterLoad(); + net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); +}; + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/config_test.js b/plugins/node_modules/ace_tree/lib/ace_tree/config_test.js new file mode 100644 index 00000000..0e4f5449 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/config_test.js @@ -0,0 +1,118 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var config = require("./config"); +var assert = require("./test/assertions"); + +module.exports = { + + "test: path resolution" : function() { + config.set("packaged", "true"); + var url = config.moduleUrl("kr_theme", "theme"); + assert.equal(url, "theme-kr.js"); + + config.set("basePath", "a/b"); + url = config.moduleUrl("m/theme", "theme"); + assert.equal(url, "a/b/theme-m.js"); + + url = config.moduleUrl("m/theme", "ext"); + assert.equal(url, "a/b/ext-theme.js"); + + config.set("workerPath", "c/"); + url = config.moduleUrl("foo/1", "worker"); + assert.equal(url, "c/worker-1.js"); + + config.setModuleUrl("foo/1", "a/b1.js"); + url = config.moduleUrl("foo/1", "theme"); + assert.equal(url, "a/b1.js"); + + assert.equal(); + }, + "test: define options" : function() { + var o = {}; + config.defineOptions(o, "test_object", { + opt1: { + set: function(val) { + this.x = val; + }, + value: 7, + }, + initialValue: { + set: function(val) { + this.x = val; + }, + initialValue: 8, + }, + opt2: { + get: function(val) { + return this.x; + } + }, + forwarded: "model" + }); + o.model = {}; + config.defineOptions(o.model, "model", { + forwarded: {value: 1} + }); + + config.resetOptions(o); + config.resetOptions(o.model); + assert.equal(o.getOption("opt1"), 7); + assert.equal(o.getOption("opt2"), 7); + o.setOption("opt1", 8); + assert.equal(o.getOption("opt1"), 8); + assert.equal(o.getOption("opt2"), 8); + + assert.equal(o.getOption("forwarded"), 1); + + assert.equal(o.getOption("new"), undefined); + o.setOption("new", 0); + assert.equal(o.getOption("new"), undefined); + + + assert.equal(o.getOption("initialValue"), 8); + o.setOption("initialValue", 7); + assert.equal(o.getOption("opt2"), 7); + + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec() +} diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/css/light_theme.css b/plugins/node_modules/ace_tree/lib/ace_tree/css/light_theme.css new file mode 100644 index 00000000..e4b3e5aa --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/css/light_theme.css @@ -0,0 +1,75 @@ +.ace_tree-light.ace_tree{ + font: 12px Arial; +} + +.ace_tree_selection_range{ + background : rgba(0, 110, 255, 0.2); + border : 1px solid rgba(0,0,0,0.1); +} +.ace_tree_focus .ace_tree_selection_range{ + +} + +.ace_tree-light .toggler { + overflow: visible; + width: 10px; + height: 10px; +} + +.ace_tree-light .tree-row .caption { + padding : 4px 5px; +} +.ace_tree-light .tree-row > .caption { + overflow: visible; + display: inline-block; +} +.ace_tree-light .tree-row { + border: 1px solid transparent; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.ace_tree-light .tree-row:hover, +.ace_tree-light .tree-row.hover{ + background: rgba(0, 0, 0, 0.03); +} +.ace_tree-light .tree-row.selected { + background: rgba(0, 0, 0, 0.04); +} + +.ace_tree_focus.ace_tree-light .tree-row.selected { + background: -webkit-gradient(linear, left top, left bottom, from(#2890E5), color-stop(1, #1F82D2)); + background: -moz-linear-gradient(center bottom, #1f82d2 0%, #2890e5 100%) repeat scroll 0 0 transparent; + background: linear-gradient(center bottom, #1f82d2 0%, #2890e5 100%) repeat scroll 0 0 transparent; + color: #f8f8f8; +} + + +/* datagrid */ + +.ace_tree-light .tree-row>.tree-column { + border: 1px solid rgb(204, 204, 204); + border-width: 0 1px 1px 0; + padding: 4px 5px; +} + +.ace_tree-light .tree-row.selected>.tree-column { + background: transparent; +} +.ace_tree-light .tree-headings { + background: rgb(253, 253, 253); +} +.ace_tree-light .tree-headings>.tree-column { + background: transparent; + padding: 5px 3px; +} + +.ace_tree-light .tree-headings>.tree-column-resizer { + height: 100%; + background: rgb(182, 182, 182); + display: inline-block; + width: 1px; + z-index: 1000; + position: absolute; + margin-left: -1px; + border-left: 1px solid rgba(0, 0, 0, 0); +} diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/css/light_theme.js b/plugins/node_modules/ace_tree/lib/ace_tree/css/light_theme.js new file mode 100644 index 00000000..1a3838f7 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/css/light_theme.js @@ -0,0 +1,33 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright 2011 Irakli Gozalishvili. All rights reserved. + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { + +exports.isDark = false; +exports.cssClass = "ace_tree-light"; +exports.cssText = require("ace/requirejs/text!./light_theme.css"); + +var dom = require("ace/lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/css/tree.css b/plugins/node_modules/ace_tree/lib/ace_tree/css/tree.css new file mode 100644 index 00000000..ab21e51f --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/css/tree.css @@ -0,0 +1,190 @@ +.ace_tree{ + overflow : hidden; + font : 12px Tahoma, Arial; + cursor: default; + position: relative; + white-space: pre; +} + +.ace_tree textarea{ + position : absolute; + z-index : 0; +} + +.ace_tree_scroller { + position: absolute; + overflow: hidden; + top: 0; + bottom: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.ace_tree_content { + position: absolute; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.ace_scrollbar { + position: absolute; + overflow-x: hidden; + overflow-y: auto; + right: 0; + bottom: 0; +} + +.ace_scrollbar-inner { + position: absolute; + cursor: text; + left: 0; + top: 0; +} + +.ace_scrollbar-h { + position: absolute; + overflow-x: auto; + overflow-y: hidden; + right: 0; + left: 0; + bottom: 0; +} + +.ace_tree_horheading { + position : absolute; +} + +.ace_tree_verheading{ + bottom : 0; + position : absolute; +} + +.ace_tree_heading { + z-index: 10; + position: relative; + white-space: nowrap; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + pointer-events: none; +} + +.ace_tree_layer { + z-index: 1; + position: absolute; + overflow: hidden; + white-space: nowrap; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + pointer-events: none; +} + +.ace_tree .tree-indent { + display : inline-block; +} + +.ace_tree_selection_range{ + position : absolute; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.ace_tree_focus .ace_tree_selection_range{ + +} + +.ace_tree-editor { + position : absolute; + z-index : 10000; + background : white; + padding : 3px 4px 3px 4px; + -moz-box-sizing : border-box; + box-sizing : border-box; + border : 1px dotted green; + left: 0; + right: 0 +} + + + +.ace_tree .toggler { + width: 10px; + height: 10px; + background-repeat: no-repeat; + background-position: 0px 0px; + background-repeat: no-repeat; + cursor: pointer; + display: inline-block; + pointer-events: auto; +} + +.ace_tree .toggler.empty { + pointer-events: none; +} + +.ace_tree .toggler.open { + background-position: -10px 0px; +} + +.ace_tree .toggler.empty { + background-position: 50px 0px; + cursor: default; +} + +.ace_tree_cells, .ace_tree_cell-layer { + width: 100%; +} +.ace_tree_selection-layer { + width: 100%; + height: 110%; +} +.ace_tree_cells .message.empty { + text-align: center; + opacity: 0.9; + cursor : default; +} + +/* datagrid */ + +.ace_tree .tree-row>.tree-column { + display: inline-block; + overflow: hidden; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + + +.tree-headings { + white-space: nowrap; + position: absolute; + overflow: hidden; + top: 0; + left: 0; + right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.tree-headings>.tree-column { + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.tree-headings>.tree-column-resizer { + height: 100%; + background: rgb(182, 182, 182); + display: inline-block; + width: 2px; + z-index: 1000; + position: absolute; + margin-left: -2px; + border-left: 1px solid rgba(0, 0, 0, 0); +} diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/css/tree_background.png b/plugins/node_modules/ace_tree/lib/ace_tree/css/tree_background.png new file mode 100644 index 0000000000000000000000000000000000000000..a97a2340d764dd5e9d9d1e1d073ba88eced60afd GIT binary patch literal 3676 zcmaJ^c{r49`$oJmHDrkp#@K~f7|Ud0n6Z>W$Qqeu1`{*G7_w8Mgd)p3mO@&{mOX?L zg`u)$3CUJjBO$79^uE2{?~nKUJ;(7p_kG>Rd7jsKU-xzY@x)nMngRh501gfgpt%{w zhCN2@zPx+b-!Jcyx7dR?1MA4JrFk&UgQU;Fu?I}H zb7VN;ERX~mMFYQ!(FmgWve_IQ`UXM1c!D>H0Xj?aBvVn~<%VW3h)hI*9S}Gu&exda zMK%kelWapQ?Fb>>1U(|y;220h2+0HV z6FrbN7?Zzqu_F}Ni^1?kLLleQpVv6AsX?QALSTA&db=8MxH=o5?jKBL;Dgku{&K$+ zFeHBho$SjX)2N_bMf_P>00RYPJN;`56yJYjss4YLiCr*A5Z)I8(}3=7={FFE`~RU7 z%0Fm-h7IYze*ab2-!9mf1hFCc(*o!O_Q83`?WXcY8q-O5290hZ!U&L2%wOtjNe@1f4PYN$=z)QiZ44ehD0X^l87dB8U^%g%SiIS zcrk(_5EyL}6HRR+oqzZ87nk@iUVd?PpwR!xg|N*)b`SRd9Q5xccK7T~|7lxx@K58D zsO)a1v)fwqWXf0em5{Wyu*1H8KRq=yGdug?!-r2ZGjkt5&d<$#oSvTj^l2e1<|3Gb z15jv=LE8n5bh*Uc$Vcu^g$)1v*=99%LsnCkyUT8IbY!f9dquX|`EpDZ%w%%n&e!}u zdp@THZkN4J`T2Btc6&eYXxJO?k6)u)CDljYRKH6B zs#I6^FbV{0&(`Z}4c>O9I0YruR<(vQvJQ!*e0Pg2$yJFhaiz#+M@}Q_yN@AhZ3NYT z&9`6c3fxg+(#r?XM@C;$hQi5N5579PKmg`ilS6@m#={2X4HAkK@iz!dEoBQ-$ttg5 z(S(7((NnLo9elViELhY8$Y&8&U=N<9Uvt6b-ewjKNvQzU`Y?oe)xwb-#C7?%4wp+U zPNU{-ywE1+7+mFR3Iya#45zG~$m;$%LR8oe32o^{Y?lT{{vjWz&Sa{bG`=$CAXH0( z4=nTzE_HT4GA}<^K9MOzG;$(ZkZT`6%9)HsPKeZ~LS7Nwz;M<60YwN+FHo z&lI&datW3iS6<|(vp*B+(BoKb_$}~4XzS{Gs~C}ez^*6xcT<_C$z)-qD@YqS~GN~lj|%G+~dFSTEqlkenEwM8#Z5n(0IQzt!r~PCWG{) z)3eCj`LM&i>?R;rX{&v%u%~yXBQMw%{4ao&_k(w^b3%8l;TABb^^#6&L{X4=re6R zH>2jvZmq;2tPi(`UWvH8!1YauIMZ${uIA_Dos?$|n|#U}PtSiemN-0%78?_@YA!es zS2S2a?DbePN1nCcK@rz#) z6kg-*&tD-A`3LYQeJHU1)bsEh-JF~)A)(-&Rg+OM2n4pZo_@CKTs>x;Z6?f1uf1@< zWw@BuR#uNHJ=PdJGkh*Sg9VP4f*QYd^1~wOCWF z6~BZjRj((9ZQ%h0>EfvpqY}AvHH6-J=+F>noezJpPtC^D`N$5*{_5F?!RQ(J>OXjE z^(k}F@JjLK>5&yrpna3N+o{=f%{B5y@Tnd1kxQ>!vhfLdHozNOnMd8JwxKu6PaRrr zdML;WdnGk}_7edOJN00!gI~Me)ZtIP2BCuonV|3%E8eqAz^eDP*%*tT_8JhPOJb^J z#04QiM@_o=?B0+hhM8zz0!LsF^LR-9t0mFd(I-z*%5u1hEF|9A+NsJ*G48MahgaKK$X{e&|W?=NTI&!!fK* zR55NJ9H#c_78)Tk4z)Mw;(GShszzB@z{ui5Y6f{VeZFfc^K3L+y47DYNV*kn<9rjQ z5G!XoVOfn5!@D8l=0EXWlH7^TU2R*3h-CPk8?4cKUD91bemreoTy?jw>LZ*fvp4Kz zeoUXHV4dxo?}x!>R>dyMR_Jq0*xS4E-pMak6>RbQBpT*>lqDemX01i3B=R2A6kY0h zy<=t8(?wbC7mB!P%Q80j&=lSw5Hf?dv@$A{mVaAXy37rc;eSs*p=MR5l&~sN?z!jd zs*TjDcC^gi!qJa+qJ1_etv%cZ3-2Cdg<{=$_dRfpLfY-`n(`2}NA@*ZTO1E&p#tBX z(>iK~nHn13ZW7fN%1}E#?()vi^d1)r(KxpGV{%~Tvem74Ln{I zLMDv}ztjAO$2lP^PwuiSkAqECuA0>ypoY<6>%^Ykt4NOYaDF_}TH8$6ZZp~ z>{TolXWyH&v9m>&SiNPyTAStTo=@_ILKr@HYeQySG61D)X4MyVq8naKiM z7dN^oe(Pce=R+#O$HCxzX_L{hTLFBXE$BDsF^|T*m|Hj8WkS(g|xa~2Jeh@G>p?oxd=vs$^+Hp)XNuEloBXl>kw4W1BLjVUOdb!O2X z>G0>{!i%AZMH8X*%1lLpZSvIIaRW-?(l@1nx{}m}ac+fI{6!vQYGbGB zdDh9xJ$;F_=!h3NtDn;@jDHE?q~0`{u@_#sAHf>U=!y_hj_i5XEAu#eMNGX!t-Q3l z3a*R_7KiFqfw9bmkp4?yw`%ix&Vi+PfAm~Zo05@{=;+LX?S-CsSt{RW)oUMKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0003nNkl1nipY_OEKY`bp5H5_ zs2dH#crVNHp>cBKKa`sDJa0LQqWY3FO$Wa3KkL3Q42N+XKLP+q*5x?P8Gr&n;ks_G z-|rugTqoJmePvnh8isKTps+0KrmCv;WY+-Nwte00c8^JJk~H 0) { + this.open(childNode, deep - 1, silent); + } + } + + this.rows = items.length; + silent || this._signal("expand", node); + }; + + this.close = + this.collapse = function(node, deep, silent) { + if (typeof deep != "number") + deep = deep ? 1000 : 0; + var items = this.visibleItems; + var isRoot = node === this.root; + if (isRoot) { + this.setOpen(node, false); + if (deep) { + for (var i = 0; i < items.length; i++) { + var ch = items[i]; + if (!ch.isRoot) + if (this.isOpen(ch) && ch.$depth - node.$depth < deep) { + this.setOpen(ch, false); + silent || this._signal("collapse", ch); + } + } + } + items.length = 0; + if (isRoot) + this.open(this.root, 0, silent); + return; + } + + if (!node || !this.isOpen(node)) + return; + var i = items.indexOf(node); + if (i === -1) + return; + var thisDepth = node.$depth; + var deletecount = 0; + for (var t = i + 1; t < items.length; t++) { + if (items[t].$depth > thisDepth) + deletecount++; + else + break; + } + + if (deep) { + for (var j = 0; j < deletecount; j++) { + var ch = items[j + i]; + if (this.isOpen(ch) && ch.$depth - node.$depth < deep) { + this.setOpen(ch, false); + silent || this._signal("collapse", ch); + } + } + } + items.splice(i + 1, deletecount); + this.setOpen(node, false); + silent || this._signal("collapse", node); + + if (isRoot) + this.open(this.root, 0, silent); + }; + + this.toggleNode = function(node, deep, silent) { + if (node && this.isOpen(node)) + this.close(node, deep, silent); + else + this.open(node, deep, silent); + }; + + this.sort = function(children, compare) { + if (!compare) { + compare = alphanumCompare; + } + return children.sort(function(a, b) { + var aChildren = a.children || a.map; + var bChildren = b.children || b.map; + if (aChildren && !bChildren) return -1; + if (!aChildren && bChildren) return 1; + + return compare(a.label || "", b.label || ""); + }); + }; + + this.setFilter = function(fn) { + this.$filterFn = fn; + this.setRoot(this.root); + }; + this.getChildren = function(node) { + var children = node.children; + if (!children) { + if (node.status === "pending") + return; + if (node.map) { + children = Object.keys(node.map).map(function(key) { + var ch = node.map[key]; + ch.parent = node; + return ch; + }); + } else if (node.items) { + children = node.items; + } + if (children) { + node.children = children; + } + } + var ch = children && children[0] && children[0]; + if (ch) { + var d = (node.$depth + 1) || 0; + children.forEach(function(n) { + n.$depth = d; + n.parent = node; + }); + } + + if (this.$filterFn) { + children = children && children.filter(this.$filterFn); + } + + if (this.$sortNodes && !node.$sorted) { + children && this.sort(children); + } + return children; + }; + this.loadChildren = null; + this.shouldLoadChildren = function(node, ch) { + return node.status === "pending"; + }; + + this.hasChildren = function(node) { + if (node.children) + return node.children.length !== 0; + return node.map || node.status === "pending" + || node.items && node.items.length; + }; + + this.findNodeByPath = function() { + + }; + + this.getSibling = function(node, dir) { + if (!dir) dir = 1; + var parent = node.parent; + var ch = this.getChildren(parent); + var pos = ch.indexOf(node); + return ch[pos + dir]; + }; + + this.getNodeAtIndex = function(i) { + return this.visibleItems[i]; + }; + + this.getIndexForNode = function(node) { + return this.visibleItems.indexOf(node); + }; + + this.getMinIndex = function() {return 0}; + this.getMaxIndex = function() {return this.visibleItems.length - 1}; + + this.setOpen = function(node, val) { + return node.isOpen = val; + }; + this.isOpen = function(node) { + return node.isOpen; + }; + this.isVisible = function(node) { + return this.visibleItems.indexOf(node) !== -1; + }; + this.isSelected = function(node) { + return node.isSelected; + }; + this.setSelected = function(node, val) { + return node.isSelected = !!val; + }; + this.isSelectable = function(node) { + return !node || !(node.noSelect || node.$depth < 0); + }; + + this.isAncestor = function(node, child) { + do { + if (child == node) + return true; + } while (child = child.parent); + return false; + }; + + this.setAttribute = function(node, name, value) { + node[name] = value; + this._signal("change", node); + }; + + this.getDataRange = function(rows, columns, callback) { + var view = this.visibleItems.slice(rows.start, rows.start + rows.length); + callback(null, view, false); + return view; + }; + + this.getRange = function(top, bottom) { + var start = Math.floor(top / this.rowHeight); + var end = Math.ceil(bottom / this.rowHeight) + 1; + var range = this.visibleItems.slice(start, end); + range.count = start; + range.size = this.rowHeight * range.count; + return range; + }; + this.getTotalHeight = function(top, bottom) { + return this.rowHeight * this.visibleItems.length; + }; + + this.getNodePosition = function(node) { + var i = this.visibleItems.indexOf(node); + if (i == -1 && node && node.parent) { + i = this.visibleItems.indexOf(node.parent); + } + var top = i * this.rowHeight; + var height = this.rowHeight; + return {top: top, height: height}; + }; + + this.findItemAtOffset = function(offset, clip) { + var index = Math.floor(offset / this.rowHeight); + if (clip) + index = Math.min(Math.max(0, index), this.visibleItems.length - 1); + return this.visibleItems[index]; + }; + this.getIconHTML = function(node) { + return ""; + }; + this.getClassName = function(node) { + return (node.className || "") + (node.status == "loading" ? " loading" : ""); + }; + this.setClass = function(node, name, include) { + node.className = node.className || ""; + dom.setCssClass(node, name, include); + this._signal("changeClass"); + }; + this.redrawNode = null; + this.getCaptionHTML = function(node) { + return escapeHTML(node.label || node.name || (typeof node == "string" ? node : "")); + }; + this.getContentHTML = null; + this.getEmptyMessage = function() { return this.emptyMessage || "" }; + this.getText = function(node) { + return node.label || node.name || ""; + }; + this.getRowIndent = function(node){ + return node.$depth; + }; + this.hideAllNodes = function(){ + this.visibleItems = []; + this.forceEmpty = true; + this.setRoot(this.root); + }; + this.showAllNodes = function(){ + this.forceEmpty = false; + this.setRoot(this.root); + }; + +}).call(DataProvider.prototype); + +function alphanumCompare(a, b) { + var caseOrder = 0; + for (var x = 0, l = Math.min(a.length, b.length); x < l; x++) { + var ch1 = a.charCodeAt(x); + var ch2 = b.charCodeAt(x); + + if (ch1 < 58 && ch2 < 58 && ch1 > 47 && ch2 > 47) { + var num1 = 0, num2 = 0; + var n = x; + do { + num1 = 10 * num1 + (ch1 - 48); + ch1 = a.charCodeAt(++n); + } while(ch1 > 47 && ch1 < 58); + n = x; + do { + num2 = 10 * num2 + (ch2 - 48); + ch2 = b.charCodeAt(++n); + } while(ch2 > 47 && ch2 < 58); + + if (num1 === num2) + x = n - 1; + else + return num1 - num2; + } else if (ch1 !== ch2) { + var ch1L = a[x].toLowerCase(); + var ch2L = b[x].toLowerCase(); + if (ch1L < ch2L) return -1; + if (ch1L > ch2L) return 1; + if (!caseOrder) caseOrder = ch2 - ch1; + } + } + return caseOrder || a.length - b.length; +} + +DataProvider.alphanumCompare = alphanumCompare; +DataProvider.prototype.alphanumCompare = alphanumCompare; +DataProvider.variableHeightRowMixin = function() { + var reset = function () { + this.$cachedTotalHeight = 0; + }.bind(this); + this.on("collapse", reset); + this.on("expand", reset); + // this.rowCache + this.getNodePosition = function(node) { + var i = this.visibleItems.indexOf(node); + if (i == -1 && node && node.parent) { + i = this.visibleItems.indexOf(node.parent); + } + + var items = this.visibleItems; + var top = 0, height = 0; + for (var index = 0; index < i; index++) { + height = this.getItemHeight(items[index], index); + top += height; + } + height = this.getItemHeight(items[i], i); + return {top: top, height: height}; + }; + + this.findIndexAtOffset = function(offset, clip) { + var items = this.visibleItems; + var top = 0, index = 0, l = items.length; + while (index < l) { + var height = this.getItemHeight(items[index], index); + top += height; + index++; + if (top >= offset) { + index--; + top -= height; + break; + } + } + + if (clip) + index = Math.min(Math.max(0, index), items.length - 1); + return index; + }; + + this.findItemAtOffset = function(offset, clip) { + var index = this.findIndexAtOffset(offset, clip); + return this.visibleItems[index]; + }; + + this.getItemHeight = function(node, index) { + return node.height || this.rowHeight; + }; + + this.getRange = function(top, bottom) { + var items = this.visibleItems; + var startH = 0, index = 0, l = items.length; + while (index < l) { + var height = this.getItemHeight(items[index], index); + startH += height; + index++; + if (startH >= top) { + index--; + startH -= height; + break; + } + } + index = Math.min(Math.max(0, index), items.length - 1); + + var start = index; + var end = this.findIndexAtOffset(bottom, true) + 1; + var range = this.visibleItems.slice(start, end); + range.count = start; + range.size = startH; + return range; + }; + + this.getTotalHeight = function () { + if (!this.$cachedTotalHeight) { + var items = this.visibleItems; + var height = 0; + for (var index = 0; index < items.length; index++) { + height += this.getItemHeight(items[index], index); + } + this.$cachedTotalHeight = height; + } + return this.$cachedTotalHeight; + }; +}; +module.exports = DataProvider; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/data_provider_mirror.js b/plugins/node_modules/ace_tree/lib/ace_tree/data_provider_mirror.js new file mode 100644 index 00000000..c294c750 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/data_provider_mirror.js @@ -0,0 +1,71 @@ +/** + * The main class required to set up a Tree instance in the browser. + * + * @class Tree + **/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("ace/lib/oop"); +var DataProvider = require("./data_provider"); + +var Mirror = function(source) { + this.source = source; + this.rowHeight = 25; + this.expandedList = Object.create(null); + this.selectedList = Object.create(null); + + source && this.setRoot(source.root); +}; + +oop.inherits(Mirror, DataProvider); + +(function() { + + this.setRoot = function(root){ + if (Array.isArray(root)) + root = {items: root}; + + this.root = root || {}; + + if (this.root.$depth == undefined) { + this.root.$depth = -1; + } + if (this.root.$depth < 0) { + this.visibleItems = []; + this.root.isOpen = false; + this.open(this.root); + this.visibleItems.unshift(); + } else { + this.visibleItems = [this.root]; + } + this.$selectedNode = this.root; + + this._signal("setRoot"); + this._signal("change"); + }; + + this.setOpen = function(node, val) { + if (val) + this.expandedList[node.path] = val; + else + delete this.expandedList[node.path]; + }; + this.isOpen = function(node) { + return this.expandedList[node.path]; + }; + this.isSelected = function(node) { + return this.selectedList[node.path]; + }; + this.setSelected = function(node, val) { + if (val) + this.selectedList[node.path] = !!val; + else + delete this.selectedList[node.path]; + }; + +}).call(Mirror.prototype); + +module.exports = Mirror; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/data_provider_test.js b/plugins/node_modules/ace_tree/lib/ace_tree/data_provider_test.js new file mode 100644 index 00000000..701d0d06 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/data_provider_test.js @@ -0,0 +1,96 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/setup_paths"); +} + +define(function(require, exports, module) { +"use strict"; + +var TreeData = require("./data_provider"); +var assert = require("ace/test/assertions"); + +module.exports = { + "test: simple expand/collapse" : function() { + var model = new TreeData([{label: "a"}]); + assert.equal(model.visibleItems.length, 1); + var first = model.visibleItems[0]; + assert.equal(first.$depth, 0); + + first.items = [{label: "x"}]; + + model.expand(first); + assert.equal(model.visibleItems.length, 2); + var second = model.visibleItems[1]; + assert.equal(second.$depth, 1); + model.collapse(first); + + assert.equal(model.visibleItems.length, 1); + assert.equal(model.visibleItems[0], first); + + // console.log(model.visibleItems); + }, + + "test: async expand/collapse" : function() { + var model = new TreeData([{label: "a"}]); + assert.equal(model.visibleItems.length, 1); + var first = model.visibleItems[0]; + assert.equal(first.$depth, 0); + + first.status = "pending"; + model.loadChildren = function(node, cb) { + node.map = {x : {label: "x"}}; + cb(null); + }; + + model.expand(first); + assert.equal(model.visibleItems.length, 2); + var second = model.visibleItems[1]; + assert.equal(second.$depth, 1); + + // console.log(model.visibleItems); + }, + + "test alphanum sort" : function() { + var alphanumCompare = TreeData.alphanumCompare + assert.equal( + ["w4y", "w4x", "a14", "a2", "A2"].sort(alphanumCompare) + "", + ["a2","A2","a14","w4x","w4y"] + "" + ); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec(); +} diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/edit.js b/plugins/node_modules/ace_tree/lib/ace_tree/edit.js new file mode 100644 index 00000000..a76f115f --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/edit.js @@ -0,0 +1,407 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var Range = require("ace/range").Range; + +var UndoManager = require("ace/undomanager").UndoManager; +var Renderer = require("ace/virtual_renderer").VirtualRenderer; +var Editor = require("ace/editor").Editor; +var FontMetrics = require("ace/layer/font_metrics").FontMetrics; +require("ace/multi_select"); + +var EditableTree = function(tree) { + this.tree = tree; + this.tree.on("click", this.onClick = this.onClick.bind(this)); + this.tree.on("blur", this.onTreeBlur = this.onTreeBlur.bind(this)); + this.tree.on("focus", this.onTreeFocus = this.waitForRename.bind(this)); + this.tree.on("mousedown", this.onMouseDown = this.onMouseDown.bind(this)); + this.tree.on("dblclick", this.onDoubleClick = this.onDoubleClick.bind(this)); + this.tree.on("startDrag", this.onTreeBlur); + this.timer = null; +}; + +(function() { + this.RENAME_DELAY = 400; + this.onTreeBlur = function(e) { this.cancel() }; + + this.onDoubleClick = function(e) { + var node = e.getNode(); + if (this.tree.provider.columns) { + if (e.domEvent.detail == 2 && node) { + var columnData = this.tree.renderer.$headingLayer.findColumn(e.getDocumentPosition().x); + var column = columnData && columnData.column; + if (column.editor) { + this.startRename(node, column); + e.stop(); + } + } + return; + } + }; + this.onMouseDown = function(e) { + this.cancel(); + if (e.domEvent.detail > 1 || e.getButton() !== 0) { + return; + } + var sel = this.tree.selection.getSelectedNodes(); + if (sel.length == 1 && e.editor.isFocused() && !this.afterRename) { + this.lastNode = sel[0]; + } + }; + this.cancel = function() { + if (this.timer) + clearTimeout(this.timer); + this.lastNode = null; + }; + this.waitForRename = function() { + this.afterRename = setTimeout(function() { + this.afterRename = null; + }.bind(this), 10); + }; + this.onClick = function(e) { + var node = e.getNode(); + if (this.tree.provider.columns) + return; + var lastNode = this.lastNode; + this.cancel(); + var sel = this.tree.selection.getSelectedNodes(); + if (sel.length != 1) + return; + + if (!node || !lastNode || node != sel[0] || node != lastNode) + return; + this.timer = setTimeout(function() { + this.cancel(); + var sel = this.tree.selection.getSelectedNodes(); + if (lastNode === sel[0] && sel.length == 1) { + this.startRename(lastNode); + } + }.bind(this), this.RENAME_DELAY); + }; + this.createEditor = function(el) { + var renderer = new Renderer(el); + var wrapper = document.createElement("div"); + wrapper.className = "ace_wrapper"; + wrapper.appendChild(renderer.container); + wrapper.style.position = "absolute"; + + renderer.screenToTextCoordinates = function(x, y) { + var pos = this.pixelToScreenCoordinates(x, y); + return this.session.screenToDocumentPosition( + Math.min(this.session.getScreenLength() - 1, Math.max(pos.row, 0)), + Math.max(pos.column, 0) + ); + }; + renderer.setStyle("ace_one-line"); + renderer.setStyle("ace_tree-editor"); + var editor = new Editor(renderer); + editor.session.setUndoManager(new UndoManager()); + editor.wrapper = wrapper; + + editor.setHighlightActiveLine(false); + editor.setShowPrintMargin(false); + editor.renderer.setShowGutter(false); + editor.renderer.setHighlightGutterLine(false); + editor.$mouseHandler.$focusWaitTimout = 0; + editor.renderer.setPadding(2); + editor.container.style.font = "inherit"; + editor.renderer.$markerBack.element.style.marginTop = + editor.renderer.$cursorLayer.element.style.marginTop = "1px"; + if (this.column) + editor.renderer.scroller.style.paddingTop = "1px"; + + var tree = this.tree; + if (!tree.renderer.fontMetrics) { + tree.renderer.fontMetrics = new FontMetrics(tree.renderer.container); + } + tree.renderer.fontMetrics.checkForSizeChanges(); + + editor.session.$setFontMetrics(tree.renderer.fontMetrics); + + return editor; + }; + + this._initEditor = function() { + this.ace = this.createEditor(); + this.ace.treeEditor = this; + this.ace.commands.bindKeys({ + "Esc": function(ace) { + ace.treeEditor.endRename(true); + }, + "Enter": function(ace) { + ace.treeEditor.endRename(); + }, + "ctrl-s|cmd-s": function(ace) { + ace.treeEditor.endRename(); + }, + "Tab": function(ace) { + ace.treeEditor.editNext(1); + }, + "Shift-Tab": function(ace) { + ace.treeEditor.editNext(-1); + } + }); + this.tree.container.appendChild(this.ace.wrapper); + + // make sure no one can steal focus from us + setTimeout(function() { + if (this.ace) { + this.ace.focus(); + this.ace.on("blur", this._onBlur = this._onBlur.bind(this)); + } + }.bind(this), 20); + this.tree.renderer.on("afterRender", this._onAfterRender = this._onAfterRender.bind(this)); + this.ace.renderer.on("afterRender", this._onAfterRender); + this.ace.on("execCommand", function() { + this.tree.reveal(this.renaming, false); + }.bind(this)); + this.ace.focus(); + this._onAfterRender(); + + this.tree._emit("createEditor", {ace: this.ace}); + }; + + this._onBlur = function() { + if (!this.ace || !this.ace.textInput || !this.renaming) + return; + if (this.ace.$mouseHandler.isMousePressed) + return; + // for debugging + // console.log("comment me out when you are done!") + // if (document.activeElement === this.ace.textInput.getElement()) + // return; + this.endRename(); + }; + + this._onAfterRender = function() { + var i = this.tree.provider.getIndexForNode(this.renaming); + var domNode = this.tree.renderer.$cellLayer.getDomNodeAtIndex(i); + var style = this.ace.wrapper.style; + if (!domNode || !domNode.lastChild) + return style.top = "-100px"; + + var renameNode = this.column + ? domNode.children[this.column.index] + : domNode.lastChild; + // empty nodes will have wrong height + if (!renameNode.textContent) + renameNode.textContent = "\xa0"; + + if (this.column && this.renaming.fullWidth) + renameNode = renameNode.parentNode; + var rect = renameNode.getBoundingClientRect(); + var treeRect = this.tree.container.getBoundingClientRect(); + + if (this.column) { + var child = renameNode.lastChild; + var left = rect.left; + var offset = this.column.type === "tree" && !this.renaming.fullWidth + ? (child.nodeType == 1 ? child.getBoundingClientRect() : rect).left - left - 2 + : 0; + style.top = rect.top - treeRect.top + "px"; + style.left = rect.left - treeRect.left + offset + "px"; + style.width = rect.width - offset + "px"; + style.height = rect.height + "px"; + } else { + var nodeRect = domNode.getBoundingClientRect(); + var maxWidth = Math.max(nodeRect.right - rect.left, 10); + var chars = this.ace.session.$getStringScreenWidth(this.ace.session.getLine(0))[0]; + var minWidth = Math.max(chars*this.tree.renderer.fontMetrics.$characterSize.width + 6, 15); + style.top = rect.top - treeRect.top + 2 + "px"; + style.left = rect.left - treeRect.left - 2 + "px"; + style.width = Math.min(minWidth, maxWidth) + "px"; + style.height = rect.height - 4 + "px"; + domNode.style.color = "transparent"; + this.ace.renderer.onResize(!this.lastDomNode, 0, Math.min(minWidth, maxWidth), this.ace.renderer.$size.height); + this.lastDomNode = domNode; + } + }; + + this._destroyEditor = function() { + if (this.lastDomNode) { + this.lastDomNode.style.color = ""; + this.lastDomNode; + } + this.ace.off("blur", this._onBlur); + + this.tree.renderer.off("afterRender", this._onAfterRender); + + var ace = this.ace; + this.ace = null; + this.$lastAce = ace; + ace.renderer.freeze(); + setTimeout(function() { + // doing this after timeout to allow rename event focus something else + var wasFocused = ace.isFocused(); + ace.destroy(); + if (ace.wrapper.parentNode) + ace.wrapper.parentNode.removeChild(ace.wrapper); + if (wasFocused) + this.tree.focus(); + this.$lastAce = null; + }.bind(this)); + }; + + this.findNextEditPoint = function(dir, node, col, keepColumn) { + if (col == null) + col = this.column ? this.column.index : 0; + if (node == null) + node = this.renaming; + var provider = this.tree.provider; + var columns = provider.columns; + + if (columns && !keepColumn) { + var i = col + dir; + if (columns[i]) + return {node: node, column: i}; + else + col = dir < 0 ? columns.length - 1 : 0; + } + + var nodeIndex = provider.getIndexForNode(node); + var newNode = provider.getNodeAtIndex(nodeIndex + dir); + + return newNode && {node: newNode, column: col}; + }; + + this.editNext = function(dir, keepColumn) { + var p = this.findNextEditPoint(dir, this.renaming, null, keepColumn); + if (p) { + if (this.renaming) { + var node = this.renaming; + if (p.node == node && p.column == (this.column && this.column.index) + dir) + p = null; + this.stopRename(); // save current change + var model = this.tree.provider; + if (model.updateNodeAfterChange) { + node = model.updateNodeAfterChange(node); + if (p) + p.node = model.updateNodeAfterChange(p.node); + } + p = p || this.findNextEditPoint(dir, node); + } + if (p && p.node) + this.startRename(p.node, p.column); + } + }; + + + this.startRename = function(node, column) { + var model = this.tree.provider; + node = node || this.tree.selection.getCursor(); + if (!node) + return false; + if (typeof column == "number" && model.columns) + column = model.columns[column]; + if (model.columns && node.fullWidth) + column = model.columns[0]; + if (this.renaming === node && this.column == column || node.noSelect) + return false; + + if (this.renaming) + this.endRename(true); + + if (model.isEditable && !model.isEditable(node) || node.isEditable === false) + return false; + + this.column = column; + var val = (column || model).getText(node); + var e = { + node: node, + column: column, + value: val + }; + this.tree._emit("beforeRename", e); + + if (e.defaultPrevented || !e.node) + return; + this.renaming = e.node; + this._initEditor(); + + this.tree._emit("renameStart", e); + + if (e.node != node && e.value == val) + e.value = (column || model).getText(node); + + this.tree.renderer.scrollCaretIntoView(this.renaming); + this.tree.renderer.visualizeFocus(); + var endCol = -1; + if (this.renaming.isNew) { + val = ""; + } else { + val = e.value; + // todo move this to c9.ide.tree? + if (!column && !node.isFolder) + endCol = val.lastIndexOf("."); + } + if (endCol < 0) + endCol = val.length; + this.origVal = val; + this.ace.setValue(val); + this.ace.selection.setRange(endCol + ? new Range(0, 0, 0, endCol) + : new Range(0, 1, 0, val.length) + ); + }; + + this.stopRename = + this.endRename = function(cancel) { + var node = this.renaming; + this.renaming = null; + this.cancel(); + this.waitForRename(); + if (!this.tree.isFocused()) + this.tree.renderer.visualizeBlur(); + + if (!node) + return; + + var val = this.ace.getValue(); + + this._destroyEditor(); + + if (!cancel && this.origVal !== val) { + this.tree._emit("rename", { + node: node, + value: val, + oldValue: this.origVal, + column: this.column + }); + this.tree.provider._signal("change"); + } + }; + +}).call(EditableTree.prototype); + +module.exports = EditableTree; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/filter.js b/plugins/node_modules/ace_tree/lib/ace_tree/filter.js new file mode 100644 index 00000000..d34e978c --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/filter.js @@ -0,0 +1,140 @@ +define(function(require, exports, module) { +"use strict"; + +var Editor = require("ace/editor").Editor; +var UndoManager = require("ace/undomanager").UndoManager; +var Renderer = require("ace/virtual_renderer").VirtualRenderer; +var lang = require("ace/lib/lang"); + +exports.treeSearch = function treeSearch(tree, keyword, caseInsensitive, results, head) { + if (caseInsensitive) + keyword = keyword.toLowerCase(); + results = results || []; + head = head || 0; + for (var i = 0; i < tree.length; i++) { + var node = tree[i]; + var name = node.name || node.label || ""; + if (caseInsensitive) + name = name.toLowerCase(); + var index = name.indexOf(keyword); + var items = node.items || node.children; + if (index === -1) { + if (items) + results = treeSearch(items, keyword, caseInsensitive, results, head); + continue; + } + var result = { + items: items ? treeSearch(items, keyword, caseInsensitive) : [] + }; + for (var p in node) { + if (node.hasOwnProperty(p) && p !== "items" && p !== "children") + result[p] = node[p]; + } + if (index === 0) { + results.splice(head, 0, result); + head++; + } + else { + results.push(result); + } + } + return results; +}; + +exports.getCaptionHTML = function(node){ + var value = node.name || node.label || ""; + + if (this.reFilter) { + var re = new RegExp("(" + this.reFilter + ")", 'i'); + value = value.replace(re, "$1"); + } + + return value; +}; + +exports.setFilter = function(str){ + if (!str && this.filterString) { + if (this.unfilteredRoot && this.unfilteredRoot != this.root) { + this.setRoot(this.unfilteredRoot); + } + } else { + if (!this.unfilteredRoot) + this.unfilteredRoot = this.root; + + var root = this.unfilteredRoot; + if (str.lastIndexOf(this.filterString, 0) == 0) + this.root = root; + + this.setRoot(exports.treeSearch(root.children, str, true)); + this.filterString = str; + this.getCaptionHTML = exports.getCaptionHTML; + } + + this.filterString = str; + this.reFilter = lang.escapeRegExp(this.filterString); +}; + + +exports.$createFilterInputBox = function(tree) { + if (!tree.filterEditor) { + tree.filterEditor = new Editor(new Renderer()); + tree.filterEditor.setOptions({ + maxLines: 1, + showGutter: false, + highlightActiveLine: false + }); + tree.filterEditor.session.setUndoManager(new UndoManager()); + + tree.filterEditor.on("input", function(e, editor) { + var val = editor.getValue(); + if (tree.provider) { + if (!tree.provider.setFilter) + tree.provider.setFilter = exports.setFilter; + tree.provider.setFilter(val); + } + if (!val) + tree.focus(); + }); + + tree.filterEditor.commands.bindKeys({ + "Return": function(editor) {tree.focus()}, + "Esc": function(editor) {editor.setValue(""); tree.focus(); } + }); + tree.on("focus", function() { + if (!tree.filterEditor.getValue()) + tree.filterEditor.hide(); + }); + tree.filterEditor.hide = function() { + if (this.container.parentNode && tree.$autoShowFilter) + this.container.parentNode.removeChild(this.container); + }; + + var forwardToTree = function() { + tree.execCommand(this.name); + }; + tree.filterEditor.commands.addCommands([ + "centerselection", + "goToStart", + "goToEnd", + "pageup", + "gotopageup", + "scrollup", + "scrolldown", + "goUp", + "goDown", + "selectUp", + "selectDown", + "selectMoreUp", + "selectMoreDown" + ].map(function(name) { + var command = tree.commands.byName[name]; + return { + name: command.name, + bindKey: command.editorKey || command.bindKey, + exec: forwardToTree + }; + })); + } +}; + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/layer/cells.js b/plugins/node_modules/ace_tree/lib/ace_tree/layer/cells.js new file mode 100644 index 00000000..c0eeffeb --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/layer/cells.js @@ -0,0 +1,200 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("ace/lib/oop"); +var dom = require("ace/lib/dom"); +var lang = require("ace/lib/lang"); +var escapeHTML = lang.escapeHTML; +var EventEmitter = require("ace/lib/event_emitter").EventEmitter; + +var Cells = function(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_tree_layer ace_tree_cell-layer"; + parentEl.appendChild(this.element); +}; + +(function() { + + oop.implement(this, EventEmitter); + + this.config = {}, + + this.setDataProvider = function(provider) { + this.provider = provider; + if (provider) + this.update = provider.renderRow ? this.$customUpdate : this.$treeModeUpdate; + }; + + this.update = function (config) { + }; + + this.measureSizes = function() { + var domNode = this.element.firstChild; + if (domNode) { + this.provider.rowHeight = domNode.offsetHeight; + this.provider.rowHeightInner = domNode.clientHeight; + } + }; + + this.$treeModeUpdate = function (config) { + this.config = config; + + var provider = this.provider; + var row, html = [], view = config.view, datarow; + var firstRow = config.firstRow, lastRow = config.lastRow + 1; + var hsize = "auto;", vsize = provider.rowHeightInner || provider.rowHeight; + + for (row = firstRow; row < lastRow; row++) { + datarow = view[row - firstRow]; + if (provider.getItemHeight) + vsize = provider.getItemHeight(datarow, row); + this.$renderRow(html, datarow, vsize, hsize, row); + } + + if (firstRow <= 0 && lastRow <= 0) { + this.renderPlaceHolder(provider, html, config); + } + + this.element = dom.setInnerHtml(this.element, html.join("")); + + if (!vsize) { + this.measureSizes(); + } + }; + + this.columnNode = function(datarow, column) { + return ""; + }; + + this.getRowClass = function(datarow, row) { + var provider = this.provider; + return "tree-row " + + (provider.isSelected(datarow) ? "selected ": '') + + (provider.getClassName(datarow) || "") + (row & 1 ? " odd" : " even"); + }; + + this.$renderRow = function(html, datarow, vsize, hsize, row) { + var provider = this.provider; + var columns = provider.columns; + var indent = provider.$indentSize;// provider.getIndent(datarow); + html.push("
    "); + + if (!columns || columns[0].type == "tree") { + if (columns) { + html.push(this.columnNode(datarow, columns[0], row)); + } + var depth = provider.getRowIndent(datarow); + html.push( + (depth ? "" : "" ) + + "" + + (provider.getCheckboxHTML ? provider.getCheckboxHTML(datarow) : "") + + provider.getIconHTML(datarow) + + ( provider.getContentHTML ? provider.getContentHTML(datarow) + : "" + + provider.getCaptionHTML(datarow) + + "" + ) + ); + } + if (columns) { + for (var col = columns[0].type == "tree" ? 1 : 0; col < columns.length; col++) { + var column = columns[col]; + var rowStr = (column.getHTML) ? column.getHTML(datarow) : escapeHTML(column.getText(datarow) + ""); + html.push("" + this.columnNode(datarow, column, row) + rowStr); + } + html.push(""); + } + + html.push("
    "); + }; + + this.$customUpdate = function(config) { + this.config = config; + + var provider = this.provider; + var html = []; + var firstRow = config.firstRow, lastRow = config.lastRow + 1; + + for (var row = firstRow; row < lastRow; row++) { + provider.renderRow(row, html, config); + } + + if (firstRow <= 0 && lastRow <= 0) { + this.renderPlaceHolder(provider, html, config); + } + + this.element = dom.setInnerHtml(this.element, html.join("")); + }; + + this.updateClasses = function(config) { + // fallback to full redraw for customUpdate + if (this.update == this.$customUpdate && !this.provider.updateNode) + return this.update(config); + + this.config = config; + + var provider = this.provider; + var row, view = config.view, datarow; + var firstRow = config.firstRow, lastRow = config.lastRow + 1; + var children = this.element.children; + + if (children.length != lastRow - firstRow) + return this.update(config); + + for (row = firstRow; row < lastRow; row++) { + datarow = view[row - firstRow]; + var el = children[row - firstRow]; + el.className = this.getRowClass(datarow, row); + if (provider.redrawNode) + provider.redrawNode(el, datarow); + } + }; + + this.scroll = function(config) { + // not implemented + return this.update(config); + + this.element.insertAdjacentHTML("afterBegin", "ar"); + this.element.insertAdjacentHTML("beforeEnd", "ar"); + }; + + this.updateRows = function(config, firstRow, lastRow) { + // not implemented + }; + + this.destroy = function() { + + }; + + this.getDomNodeAtIndex = function(i) { + return this.element.children[i - this.config.firstRow]; + }; + + this.renderPlaceHolder = function(provider, html, config) { + if (provider.renderEmptyMessage) { + provider.renderEmptyMessage(html, config); + } else if (provider.getEmptyMessage) { + html.push( + "
    ", + escapeHTML(provider.getEmptyMessage()), + "
    " + ); + } + }; + +}).call(Cells.prototype); + +exports.Cells = Cells; + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/layer/heading.js b/plugins/node_modules/ace_tree/lib/ace_tree/layer/heading.js new file mode 100644 index 00000000..60256532 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/layer/heading.js @@ -0,0 +1,195 @@ +define(function(require, exports, module) { +"use strict"; +var oop = require("ace/lib/oop"); +var dom = require("ace/lib/dom"); +var lang = require("ace/lib/lang"); +var EventEmitter = require("ace/lib/event_emitter").EventEmitter; + +var RESIZER_WIDTH = 3; + +function getColumnText(node) { + return node[this.value] || this.defaultValue || ""; +} + +function ColumnHeader(parentEl, renderer) { + this.element = dom.createElement("div"); + parentEl.appendChild(this.element); + this.element.className = "tree-headings"; + this.visible = false; +} +(function() { + + this.minWidth = 25; + + this.update = function() { + if (!this.provider || !this.visible) + return; + var columns = this.provider.columns; + var html = []; + for (var i = 0; i < columns.length; i++) { + var col = columns[i]; + html.push("" + + col.caption + + "" + + "" + + "" + ); + } + this.element.style.paddingRight = columns.$fixedWidth; + this.element.innerHTML = html.join(""); + }; + + this.setDataProvider = function(provider) { + this.provider = provider; + if (!provider) + return; + var columns = this.provider.columns; + if (!columns) { + this.visible = false; + return; + } + this.visible = true; + var fixedWidth = 0; + + columns.forEach(function(col, i) { + col.index = i; + if (col.value && !col.getText) + col.getText = getColumnText; + var w = col.width; + if (typeof w == "string" && w.slice(-1) == "%") { + col.flex = parseInt(w, 10) / 100; + col.$width = col.width; + } else { + col.width = parseInt(w, 10) || this.minWidth; + fixedWidth += col.width; + col.$width = col.width + "px"; + } + col.pixelWidth = 0; + }, this); + columns.fixedWidth = fixedWidth; + columns.$fixedWidth = fixedWidth + "px"; + columns.width = null; + provider.columns = columns; + }; + + this.updateWidth = function(width) { + if (!this.provider || !this.visible) + return; + + var columns = this.provider.columns; + var fixedWidth = 0; + + columns.width = width; + + + columns.forEach(function(col) { + if (!col.flex) { + fixedWidth += col.width; + } + }); + + var flexWidth = width - fixedWidth; + + columns.forEach(function(col) { + if (col.flex) { + col.pixelWidth = flexWidth * col.flex; + col.$width = col.flex * 100 + "%"; + } else { + col.pixelWidth = col.width; + col.$width = col.width + "px"; + } + }); + columns.fixedWidth = fixedWidth; + columns.$fixedWidth = fixedWidth + "px"; + }; + + this.changeColumnWidth = function(changedColumn, dw, total) { + this.updateWidth(total); + + var columns = this.provider.columns; + var minWidth = this.minWidth; + + if (!dw) + return; + + var index = columns.indexOf(changedColumn); + var col, nextCol, prevCol; + for (var i = index + 1; i < columns.length; i++) { + col = columns[i]; + if (Math.floor(col.pixelWidth) > minWidth || dw < 0) { + if (col.flex) { + nextCol = col; + break; + } else if (!nextCol) { + nextCol = col; + } + } + } + for (var i = index; i >= 0; i--) { + col = columns[i]; + if (Math.floor(col.pixelWidth) > minWidth || dw > 0) { + if (col.flex) { + prevCol = col; + break; + } else if (!prevCol) { + prevCol = col; + if (col == changedColumn) + break; + } + } + } + if (!prevCol || !nextCol) + return; + + if (nextCol.pixelWidth - dw < minWidth) + dw = nextCol.pixelWidth - minWidth; + + if (prevCol.pixelWidth + dw < minWidth) + dw = minWidth - prevCol.pixelWidth; + + nextCol.pixelWidth -= dw; + prevCol.pixelWidth += dw; + + if (!nextCol.flex) + columns.fixedWidth -= dw; + if (!prevCol.flex) + columns.fixedWidth += dw; + var flexWidth = total - columns.fixedWidth; + + columns.forEach(function(col) { + if (col.flex) { + col.flex = col.pixelWidth / flexWidth; + } else { + col.width = col.pixelWidth; + } + }); + + this.updateWidth(total); + }; + + this.findColumn = function(x) { + var columns = this.provider.columns; + if (this.element.offsetWidth != columns.width) + this.updateWidth(this.element.offsetWidth); + var w = 0; + for (var i = 0; i < columns.length; i++) { + var column = columns[i]; + w += column.pixelWidth; + if (x < w + RESIZER_WIDTH) { + return { + index: i, + column: column, + overResizer: x > w - RESIZER_WIDTH + }; + } + } + }; + +}).call(ColumnHeader.prototype); + + +exports.ColumnHeader = ColumnHeader; + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/layer/markers.js b/plugins/node_modules/ace_tree/lib/ace_tree/layer/markers.js new file mode 100644 index 00000000..e6c22f18 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/layer/markers.js @@ -0,0 +1,153 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("ace/lib/dom"); + +var Selection = function(parentEl, renderer) { + this.element = dom.createElement("div"); + this.element.className = "ace_tree_layer ace_tree_selection-layer"; + parentEl.appendChild(this.element); + + this.renderer = renderer; + this.markerEl = null; + this.arrowEl = null; +}; + +(function() { + + this.setDataProvider = function(provider) { + this.provider = provider; + }; + + this.update = function(config) { + // markedFolderType: 0: folder, -1: before, 1: after + if (!this.provider.markedFolder || this.provider.markedFolderType) { + this.markerEl && this.clearFolderMarker(); + } else { + this.showFolderMarker(config); + } + + if (!this.provider.markedFolder || !this.provider.markedFolderType) { + this.arrowEl && this.clearInsertionMarker(); + } else { + this.showInsertionMarker(config); + } + }; + + this.showFolderMarker = function(config) { + this.config = config; + var provider = this.provider; + var node = provider.markedFolder; + + var start = provider.getIndexForNode(node); + var items = provider.visibleItems; + var end = start + 1; + var depth = node.$depth; + while (items[end] && items[end].$depth > depth) { + end++; + } + end --; + + if (start > config.lastRow || end < config.firstRow || start === end) { + return this.clearFolderMarker(); + } + start++; + end++; + var top = Math.max(start - config.firstRow, - 1) * provider.rowHeight; + var left = (depth + 1) * provider.$indentSize; + var bottom = Math.min(end - config.firstRow, config.lastRow - config.firstRow + 2) * provider.rowHeight; + + if (!this.markerEl) { + this.markerEl = dom.createElement("div"); + this.markerEl.className = "dragHighlight"; + this.element.appendChild(this.markerEl); + } + this.markerEl.style.top = top + "px"; + this.markerEl.style.left = left + "px"; + this.markerEl.style.right = "7px"; + this.markerEl.style.height = bottom - top + "px"; + }; + this.showInsertionMarker = function(config) { + this.config = config; + var provider = this.provider; + var node = provider.markedFolder; + + var type = this.provider.markedFolderType; + + var start = provider.getIndexForNode(node); + var depth = node.$depth; + + if (start > config.lastRow || start < config.firstRow) { + return this.clearInsertionMarker(); + } + + if (type == 1) + start++; + + var top = Math.max(start - config.firstRow, - 1) * provider.rowHeight; + var left = (depth + 1) * provider.$indentSize; + + if (!this.arrowEl) { + this.arrowEl = dom.createElement("div"); + this.arrowEl.className = "dragArrow"; + this.element.appendChild(this.arrowEl); + } + this.arrowEl.style.top = top + "px"; + this.arrowEl.style.left = left + "px"; + this.arrowEl.style.right = "7px"; + }; + this.clearFolderMarker = function() { + if (this.markerEl) { + this.markerEl.parentNode.removeChild(this.markerEl); + this.markerEl = null; + } + }; + this.clearInsertionMarker = function() { + if (this.arrowEl) { + this.arrowEl.parentNode.removeChild(this.arrowEl); + this.arrowEl = null; + } + }; + this.clear = function() { + this.clearFolderMarker(); + this.clearInsertMarker(); + }; + this.destroy = function() { + + }; + +}).call(Selection.prototype); + +exports.Selection = Selection; + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/lib/btree.js b/plugins/node_modules/ace_tree/lib/ace_tree/lib/btree.js new file mode 100644 index 00000000..763e29b3 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/lib/btree.js @@ -0,0 +1,501 @@ +define(function(require, exports, module) { + +function BTree(maxChilds){ + this.maxChilds = maxChilds; + this.minChilds = Math.floor(maxChilds / 2); + + this.root = []; +} +BTree.prototype = { + get length() { + return this.root.count; + }, + + get size() { + return this.root.size; + }, + + /** + * Loads a data set efficiently into the tree + */ + load : function(data){ + var btree = this; + btree.root = null; + + function checkParents(nodes){ + var p, c; + if (nodes.length == max + 1) { //instead of .length it could calc based on i + if (!nodes.parent) { + c = nodes.pop(); + nodes.count -= c.count; //this could be optimized to not set and unset this + nodes.size -= c.size; //this could be optimized to not set and unset this + p = nodes.parent = btree.root = [nodes, c]; + c.parent = p; + p.size = nodes.size + c.size; + p.count = nodes.count + c.count; + p.push(nodes = []); + nodes.count = nodes.size = 0; + } + else { + c = nodes.pop(); + nodes.count -= c.count; //this could be optimized to not set and unset this + nodes.size -= c.size; //this could be optimized to not set and unset this + p = nodes.parent; + p.size += nodes.size + c.size; + p.count += nodes.count + c.count; + p.push(c, nodes = []); + c.parent = p; + nodes.count = nodes.size = 0; + checkParents(p); + } + nodes.parent = p; + } + return nodes; + } + + var leaf = [], leafs = [leaf], max = this.maxChilds; + leafs.size = leafs.count = leaf.size = leaf.count = 0; + leaf.parent = leafs; + for (var d, i = 0, l = data.length; i < l; i++) { + d = data[i]; + d.count = 1; + + if ((i + 1) % (max + 1) === 0) { + leafs.push(d); + d.parent = leafs; + leafs.size += leaf.size + d.size; + leafs.count += leaf.count + d.count; //always 1 + + if ((i / (max + 1)) % (max + 1)) + leafs = checkParents(leafs); + + leafs.push(leaf = []); + leaf.parent = leafs; + leaf.size = leaf.count = 0; + } + else { + leaf.push(d); + d.parent = leaf; + leaf.size += d.size; + leaf.count += d.count; + } + } + + if (leaf.length) { + var p = leaf; + do { + p.parent.count += p.count; + p.parent.size += p.size; + } while((p = p.parent).parent); + } + + if (!btree.root) + btree.root = leafs; + }, + + /** + * + */ + loadHumongousSet : function(count, size){ + var billion = 1000000000; + var parts = Math.ceil(count / billion); + if (parts > this.maxChilds) + throw new Error("Exceeded maximum size of 25 billion"); + + if (parts > 1) { + this.root = []; + for (var n, i = 0; i < parts - 1; i++) { + this.root.push(n = Array(billion)); + n.size = billion * size; + n.count = billion; + n.parent = this.root; + } + var last = count % billion || billion; + this.root.push(n = Array(last)); + n.size = last * size; + n.count = last; + n.parent = this.root; + } + else { + this.root = [Array(count)]; + this.root[0].size = size * count; + this.root[0].count = count; + this.root[0].parent = this.root; + } + + this.defaultSize = size; + + this.root.size = size * count; + this.root.count = count; + }, + + /** + * Add an object to the tree + * @param afterIndex {Number} the index of the node to insert after. Null to append as last child. + * @param size {Number} the size of the node (usually stands for pixels) + * @param value {Mixed} the value of the node + */ + add : function(afterIndex, size, value){ + if (typeof size != "number" || isNaN(size)) + throw new Error("Incorrect size specified: " + size); + + // Find parent + var after = (afterIndex + ? this.findNodeByIndex(afterIndex) + : this.findLastNode()); + var parent = after.parent || this.root; + + // Add new leaf node + var node = {}; + node.size = size; + node.value = value; + node.count = 1; + node.parent = parent; + + if (!afterIndex) + parent.push(node); + else { + var idx = parent.indexOf(idx) + 1; + idx && parent.splice(idx, 0, node) || parent.push(node); + } + + this.checkParents(parent); + }, + + checkParents : function(parent){ + // Update a set + function update(parent){ + var total = 0, count = 0; + for (var i = 0; i < parent.length; i++) { + total += parent[i].size; + count += parent[i].count; + parent[i].parent = parent; + } + parent.size = total; + parent.count = count; + } + + var max = this.maxChilds, min = this.minChilds, btree = this; + (function recur(parent) { + // End of recursion + if (!parent){ + return; + } + + // There is still room + else if (parent.length <= max) { + update(parent); + recur(parent.parent); + } + + // Split the parent into two nodes + else { + var right = parent.splice(min + 1); + var median = parent.pop(); + + // Update left set + update(parent); + + // Update right set + update(right); + + // Find grandpa or create a new root + var grandpa = parent.parent || (btree.root = [parent]); + + // Insert new children in grandpa + var idx = grandpa.indexOf(parent); + grandpa.splice(idx + 1, 0, median, right); + + // Check if grandpa needs to be split + recur(grandpa); + } + })(parent); + }, + + /** + * Updates the size of nodes + */ + updateNodes : function(nodes){ + var n, p, i, l, parents = [], right, grandpa, idx, empty = []; + + for (n, p, i = nodes.length - 1; i >= 0; i--) { + n = nodes[i]; + if (n.empty) { + right = n.parent.splice(n.index); + right.shift(); + + n.parent.count = n.parent.length; + n.parent.size = n.parent.length * this.defaultSize; + + grandpa = n.parent.parent; + idx = grandpa.indexOf(n.parent); + + var args = [idx + (n.parent.length ? 1 : 0), n.parent.length ? 0 : 1, n]; + if (right.length) { + args.push(right); + + right.count = right.length; + right.size = right.length * this.defaultSize; + } + grandpa.splice.apply(grandpa, args); + + delete n.index; + delete n.empty; + + if (empty.indexOf(grandpa) == -1) + empty.push(grandpa); + + continue; + } + + p = n.parent; + if (parents.indexOf(p) == -1) + parents.push(p); + } + + for (i = 0, l = empty.length; i < l; i++) { + this.checkParents(empty[i]); //@todo this could be done more efficiently + } + + var size, count; + for (i = 0, l = parents.length; i < l; i++) { + p = parents[i]; + + do { + size = 0, count = 0; + for (var j = 0, lj = p.length; j < lj; j++) { + size += p[j].size; + count += p[j].count; + } + p.size = size; + p.count = count; + } while((p = p.parent)); + } + }, + + remove : function(index){ + + }, + + findSizeAtIndex : function(index){ + var count = 0, size = 0; + + var defSize = this.defaultSize; + return (function recur(node){ + for (var n, i = 0, l = node.length; i < l; i++) { + if ((n = node[i]).count + count > index) { + if (n.length) { + // Empty set + if (!n[0]) { + size += (index - count) * defSize; + return size; + } + // Find in filled set + return recur(n); + } + else return size; + } + else { + count += n.count; + size += n.size; + } + } + })(this.root); + }, + + /** + * Returns an array of nodes that are within the viewport specified + * @todo should return the start index of the first node as well + */ + getRange : function(start, end, compIndex){ + if (!this.root.length) return false; + + var count = 0, size = 0, nodes = [], found, fsize, fcount; + + var defSize = this.defaultSize; + (function recur(node){ + var n, i, l; + + if (!node[0]) { + i = found ? 0 : (compIndex + ? start - count + : Math.floor((start - size) / defSize)); + + var offset = compIndex ? end - count : end - size; + + if (i !== 0) { + size += i * defSize; + count += i; + } + + l = compIndex + ? Math.min(node.length, offset + (found ? 0 : start - count)) + : Math.min(node.length, Math.ceil((offset + (found ? 0 : start - size)) / defSize)); + + // It's in this set + if (node.length >= i + 1) { + for (;i < l; i++) { + nodes.push({ + size : defSize, + empty : true, + parent : node, + count : 1, + index : i + }); + + if (!found) { + fcount = count; + fsize = size;// + (i * defSize); + found = true; + } + + size += defSize; + count += 1; + } + return; + } + else { + return; + } + } + + for (i = 0, l = node.length; i < l; i++) { + if (compIndex ? count >= end : size >= end) + return; + + n = node[i]; + // Empty set + if (found || (compIndex ? n.count + count : n.size + size) >= start) { + if (n.length) { + recur(n); + continue; + } + + nodes.push(n); + + if (!found) { + fcount = count; + fsize = size; + found = true; + } + } + + size += n.size; + count += n.count; + } + })(this.root); + + nodes.size = fsize || 0; + nodes.count = fcount || 0; + + return nodes; + }, + + /** + * Returns the node at some arbitrary total position + * @param start {Number} the start position from where to find the node + */ + findNodeAtStart : function(start){ + var size = 0; + + var defSize = this.defaultSize; + return (function recur(node){ + for (var n, i = 0, l = node.length; i < l; i++) { + if ((n = node[i]).size + size > start) { + if (n.length) { + // Empty set + if (!n[0]) { + return { + size : defSize, + empty : true, + count : 1, + parent : n, + index : Math.ceil((start - size) / defSize) - 1 + }; + } + return recur(n); + } + else return n; + } + else + size += n.size; + } + })(this.root); + }, + + /** + * Returns the node at some index + * @param index {Number} the zero based index of the node, calculated sequentially. + */ + findNodeByIndex : function(index){ + var count = 0; + + var defSize = this.defaultSize; + return (function recur(node){ + for (var n, i = 0, l = node.length; i < l; i++) { + if ((n = node[i]).count + count > index) { + if (n.length) { + // Empty set + if (!n[0]) { + return { + size : defSize, + empty : true, + count : 1, + parent : n, + index : index - count - 1 + }; + } + // Find in filled set + return recur(n); + } + else return n; + } + else + count += n.count; + } + })(this.root); + }, + + /** + * Returns the last node in the tree, sequentially + */ + findLastNode : function(){ + return (function recur(node){ + if (node.length) return recur(node[node.length - 1]); + else return node; + })(this.root); + }, + + /** + * Returns the first node in the tree, sequentially + */ + findFirstNode : function(){ + return (function recur(node){ + if (node.length) return recur(node[0]); + else return node; + })(this.root); + }, + + /** + * Return an array of all objects in tree, sequentially. + * Each object has a size and value property + */ + toArray : function(){ + var list = []; + + (function recur(node){ + for (var n, i = 0, l = node.length; i < l; i++) { + if ((n = node[i]).length) + recur(n); + else + list.push({size: n.size, value: n.value}); + } + })(this.root); + + return list; + } +}; + +module.exports = BTree; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/lib/btree_test.js b/plugins/node_modules/ace_tree/lib/ace_tree/lib/btree_test.js new file mode 100644 index 00000000..2ca1b55e --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/lib/btree_test.js @@ -0,0 +1,266 @@ +/*global describe it before */ + +var isBrowser = true; +if (typeof module !== "undefined") { + var isBrowser = false; + require("amd-loader"); +} + +define(function(require, exports, module) { + "use strict"; + + var expect = (isBrowser ? require("../../node_modules/chai/chai") : global["require"]("chai")).expect; + var BTree = isBrowser ? require("./btree") : global["require"]("experiments/btree"); + + describe("BTree", function(){ + var btree, expected = [], data; + before(function(done){ + btree = new BTree(25); + done(); + }); + + describe("add()", function(){ + it('should add a single node to the tree', function(done) { + btree.add(null, 90, {"root": 1}); + + expected.push({size: 90, value: {"root": 1}}); + expect(btree.toArray()).deep.equal(expected); + done(); + }); + it('should add a multiple nodes to the tree and create a new level', function(done) { + var size; + for (var i = 0; i < 25; i++) { + size = Math.round(90 * Math.random()); + btree.add(null, size, {"first": i}); + expected.push({size: size, value: {"first": i}}); + } + + expect(btree.toArray()).deep.equal(expected); + done(); + }); + it('should add create more levels as each time the max nodes is reached', function(done) { + var size; + for (var i = 0; i < 150; i++) { + size = Math.round(90 * Math.random()); + btree.add(null, size, {"second": i}); + expected.push({size: size, value: {"second": i}}); + } + + expect(btree.toArray()).deep.equal(expected); + done(); + }); + }); + describe("findNodeAtStart(), findNodeByIndex()", function() { + it('should find a node based on a start position', function(done) { + var node = btree.findNodeAtStart(0); + expect(node.value, "node at 0px").to.deep.equal(expected[0].value); + + node = btree.findNodeAtStart(80); + expect(node.value, "node at 80px").to.deep.equal(expected[0].value); + + node = btree.findNodeAtStart(500); + var total = 0, found, i = 0; do { + found = expected[i]; + total += expected[i++].size; + } while(total < 500); + expect(node.value, "node at 500px").to.deep.equal(found.value); + + total = 0, found, i = 0; do { + total += expected[i++].size; + found = expected[i]; + } while(i == 100); + node = btree.findNodeAtStart(total); + expect(node.value, "node at 500px").to.deep.equal(found.value); + + done(); + }); + it('should find a node based on an index', function(done) { + var node = btree.findNodeByIndex(0); + expect(node.value, "node at index 0").to.deep.equal(expected[0].value); + + node = btree.findNodeByIndex(80); + expect(node.value, "node at index 80").to.deep.equal(expected[80].value); + done(); + }); + }); + describe("load()", function() { + it('should load 10 records', function(done) { + expected = [], data = []; + for (var size, i = 0; i < 10; i++) { + size = Math.round(90 * Math.random()); + expected.push({size: size, value: {"first": i}}); + data.push({size: size, value: {"first": i}}); + } + + btree.load(data); + expect(btree.toArray()).to.deep.equal(expected); + expect(btree.root.count).equal(10); + done(); + }); + it('should load 100 records', function(done) { + expected = [], data = []; + for (var size, i = 0; i < 100; i++) { + size = Math.round(90 * Math.random()); + expected.push({size: size, value: {"first": i}}); + data.push({size: size, value: {"first": i}}); + } + + btree.load(data); + expect(btree.toArray()).to.deep.equal(expected); + expect(btree.root.count).equal(100); + done(); + }); + it('should load 1000 records', function(done) { + expected = [], data = []; + for (var size, i = 0; i < 1000; i++) { + size = Math.round(90 * Math.random()); + expected.push({size: size, value: {"first": i}}); + data.push({size: size, value: {"first": i}}); + } + + btree.load(data); + expect(btree.toArray()).to.deep.equal(expected); + expect(btree.root.count).equal(1000); + done(); + }); + it('should find a node based on a start position', function(done) { + var node = btree.findNodeAtStart(0); + expect(node.value, "node at 0px").to.deep.equal(expected[0].value); + + node = btree.findNodeAtStart(500); + var total = 0, found, i = 0; do { + found = expected[i]; + total += expected[i++].size; + } while(total < 500); + expect(node.value, "node at 500px").to.deep.equal(found.value); + + total = 0, found, i = 0; do { + total += expected[i++].size; + found = expected[i]; + } while(i == 100); + node = btree.findNodeAtStart(total); + expect(node.value, "node at 500px").to.deep.equal(found.value); + + done(); + }); + it('should find a node based on an index', function(done) { + var node = btree.findNodeByIndex(0); + expect(node.value, "node at index 0").to.deep.equal(expected[0].value); + + node = btree.findNodeByIndex(800); + expect(node.value, "node at index 800").to.deep.equal(expected[800].value); + done(); + }); + }); + + function getRange(start, end){ + var total = 0, nodes = [], i = 0; do { + total += expected[i].size; + if (total > start) + nodes.push(expected[i]); + i++; + } while(total < end); + + return nodes; + } + + describe("getRange()", function() { + it('should return nodes within a viewport starting at 0', function(done) { + var nodes = btree.getRange(0, 500); + var range = getRange(0, 500); + + expect(nodes, "length").length(range.length); + expect(nodes[0].value, "first").deep.equal(range[0].value); + expect(nodes[nodes.length - 1].value, "last").deep.equal(range[range.length - 1].value); + done(); + }); + it('should return nodes within a viewport starting at 4000', function(done) { + var nodes = btree.getRange(4000, 5600); + var range = getRange(4000, 5600); + + expect(nodes, "length").length(range.length); + expect(nodes[0].value, "first").deep.equal(range[0].value); + expect(nodes[nodes.length - 1].value, "last").deep.equal(range[range.length - 1].value); + done(); + }); + }); + describe("updateNodes()", function() { + /* + @todo + - remove left node + - remove right node + - remove node in the middle + + same, but with 2 nodes in the middle + + for humongous set and normal set and mixed + */ + it('should update a set of nodes', function(done) { + var viewport = btree.getRange(3000, 5000); + + var start = Math.round(viewport.length / 4); + var end = Math.round(viewport.length * 3 / 4); + + var changed = []; + for (var node, i = start; i < end; i++) { + node = viewport[i]; + node.oldsize = node.size; + node.size = 0; + changed.push(node); + }; + + btree.updateNodes(changed); + + var viewport2 = btree.getRange(3000, 5000); + expect(viewport2.length).gt(viewport.length); + done(); + }); + }); + describe("Scalability Tests", function() { + it('should load 25 billion records', function(done) { + btree.loadHumongousSet(25000000000, 90); + + expect(btree.root.count).equal(25000000000); + expect(btree.root.size).equal(25000000000 * 90); + done(); + }); + it('should update a set of nodes', function(done) { + var viewport = btree.getRange(3000, 5000); + + viewport.forEach(function(n){ + expect(n).not.instanceOf(Array); + }); + + var start = Math.round(viewport.length / 4); + var end = Math.round(viewport.length * 3 / 4); + + var changed = []; + for (var node, i = start; i < end; i++) { + node = viewport[i]; + node.oldsize = node.size; + node.size = 0; + changed.push(node); + }; + btree.updateNodes(changed); + + var viewport2 = btree.getRange(3000, 5000); + + viewport2.forEach(function(n){ + expect(n).not.instanceOf(Array); + }); + + expect(viewport2.length).gt(viewport.length); + expect(btree.root.count).equal(25000000000); + expect(btree.root.size).equal((25000000000 - changed.length) * 90); + + done(); + }); + }); + }); + + (typeof onload == "function") && onload(); +}); + +// if (typeof module !== "undefined" && module === require.main) { +// mocha.run(); +// } \ No newline at end of file diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/list_data.js b/plugins/node_modules/ace_tree/lib/ace_tree/list_data.js new file mode 100644 index 00000000..6f9b45c0 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/list_data.js @@ -0,0 +1,90 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("ace/lib/oop"); +var DataProvider = require("./data_provider"); + +var ListData = function(array) { + this.visibleItems = array || []; + this._selectStore = Object.create(null); +}; + +oop.inherits(ListData, DataProvider); + +(function() { + + this.setRoot = function(array) { + this.visibleItems = array || []; + this._signal("change"); + }; + + this.getDataRange = function(rows, columns, callback) { + var view = this.visibleItems.slice(rows.start, rows.start + rows.length); + callback(null, view, false); + return view; + }; + + this.getRange = function(top, bottom) { + var start = Math.floor(top / this.rowHeight); + var end = Math.ceil(bottom / this.rowHeight) + 1; + var range = this.visibleItems.slice(start, end); + range.count = start; + range.size = this.rowHeight * range.count; + return range; + }; + + this.getTotalHeight = function(top, bottom) { + return this.rowHeight * this.visibleItems.length; + }; + + this.getNodePosition = function(node) { + var i = node ? node.index : 0; + var top = i * this.rowHeight; + var height = this.rowHeight; + return {top: top, height: height}; + }; + + this.findItemAtOffset = function(offset) { + var index = Math.floor(offset / this.rowHeight); + return this.getNodeAtIndex(index); + }; + this.getNodeAtIndex = function(index) { + var id = this.visibleItems[index]; + return this._selectStore[id] || { + id: id, + index: index, + isSelected: this.isSelected(id) + }; + }; + + this.getIndexForNode = function(node) { + if (typeof node == "string") + return this.visibleItems.indexOf(node); + if (!node) + return -1; + if (this.visibleItems[node.index] === node.id) + return node.index; + return this.visibleItems.indexOf(node.id); + }; + + this.isSelected = function(node) { + if (typeof node == "object") + var id = node.id; + else if (typeof node == "number") + var id = this.visibleItems[node]; + else + var id = node; + return !!this._selectStore[id]; + }; + this.setSelected = function(node, val) { + if (val) + this._selectStore[node.id] = node; + else + delete this._selectStore[node.id]; + node.isSelected = val; + }; + +}).call(ListData.prototype); + +return ListData; +}); \ No newline at end of file diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js new file mode 100644 index 00000000..54247f61 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js @@ -0,0 +1,265 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var dom = require("ace/lib/dom"); + +var DRAG_OFFSET = 5; // pixels +function DefaultHandlers(mouseHandler) { + mouseHandler.$clickSelection = null; + + var editor = mouseHandler.editor; + editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); + editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); + // editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); + // editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); + editor.setDefaultHandler("mouseleave", this.onMouseLeave.bind(mouseHandler)); + editor.setDefaultHandler("mousemove", this.onMouseMove.bind(mouseHandler)); + editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); + editor.setDefaultHandler("mouseup", this.onMouseUp.bind(mouseHandler)); + editor.setDefaultHandler("click", this.onClick.bind(mouseHandler)); + + var exports = ["dragMoveSelection", "dragWait", "dragWaitEnd", "getRegion", "updateHoverState"]; + + exports.forEach(function(x) { + mouseHandler[x] = this[x]; + }, this); +} + +(function() { + + function isTogglerClick(target) { + return dom.hasCssClass(target, "toggler") && !dom.hasCssClass(target, "empty"); + } + + this.onMouseMove = function(e) { + var editor = this.editor; + var node = e.getNode(); + + var title, provider = editor.provider; + if (!node) { + title = ""; + } else if (provider.columns) { + var pos = e.getDocumentPosition(); + var columnData = editor.renderer.$headingLayer.findColumn(pos.x); + title = columnData ? columnData.column.getText(node) : ""; + } else { + title = provider.getTooltipText ? provider.getTooltipText(node) : provider.getText(node); + } + + if (!editor.tooltip && editor.container.title != title) + editor.container.title = title; + this.updateHoverState(node); + }; + + this.onMouseLeave = function() { + this.updateHoverState(null); + }; + + this.updateHoverState = function(node) { + var provider = this.editor.provider; + if (node !== this.node && provider) { + if (this.node) + provider.setClass(this.node, "hover", false); + this.node = node; + if (this.node) + provider.setClass(this.node, "hover", true); + } + }; + + this.onMouseDown = function(ev) { + var editor = this.editor; + var provider = editor.provider; + + ev.detail = 1; + this.mousedownEvent = ev; + this.delayedSelect = false; + this.isMousePressed = true; + + var button = ev.getButton(); + var selectedNodes = editor.selection.getSelectedNodes(); + var isMultiSelect = selectedNodes.length > 1; + if (button !== 0 && isMultiSelect) { + return; // stopping event here breaks contextmenu on ff mac + } + + var node = ev.getNode(); + this.$clickNode = node; + if (!node) return; // Click outside cells + + var inSelection = provider.isSelected(node); + + var target = ev.domEvent.target; + this.region = null; + if (isTogglerClick(target) || node.clickAction == "toggle") { + this.region = "toggler"; + var toggleChildren = ev.getShiftKey(); + var deep = ev.getAccelKey(); + if (button === 0) { + if (toggleChildren) { + if (deep) { + node = node.parent; + } + provider.close(node, true); + provider.open(node); + } else { + provider.toggleNode(node, deep); + } + } + this.$clickNode = null; + } else if (dom.hasCssClass(target, "checkbox")) { + var nodes = inSelection && editor.selection.getSelectedNodes(); + provider._signal("toggleCheckbox", { target: node, selectedNodes: nodes }); + // consider deprecating this + node.isChecked = !node.isChecked; + if (nodes) { + nodes.forEach(function(n) { n.isChecked = node.isChecked }); + } + provider._signal(node.isChecked ? "check" : "uncheck", nodes || [node]); + provider._signal("change"); + } else if (dom.hasCssClass(target, "icon-ok")) { + if (ev.getShiftKey()) { + editor.selection.expandSelection(node, null, true); + } else { + editor.selection.toggleSelect(node); + } + } else if (ev.getAccelKey()) { + if (inSelection && isMultiSelect) + this.delayedSelect = "toggle"; + else if (!inSelection || isMultiSelect) + editor.selection.toggleSelect(node); + } else if (ev.getShiftKey()) { + editor.selection.expandSelection(node); + } else if (inSelection && isMultiSelect) { + if (!editor.isFocused()) + this.$clickNode = null; + else + this.delayedSelect = true; + } else { + editor.selection.setSelection(node); + } + if (this.$clickNode) + editor.$mouseHandler.captureMouse(ev, "dragWait"); + + return ev.preventDefault(); + }; + + this.onMouseUp = function(ev) { + if (this.isMousePressed == 2) return; // wait until release capture + this.isMousePressed = false; + var pos = ev.getDocumentPosition(); + var node = this.editor.provider.findItemAtOffset(pos.y); + if (node && this.$clickNode && this.$clickNode == node) { + ev.button = ev.getButton(); + ev.target = ev.domEvent.target; + ev.detail = this.mousedownEvent.detail; + this.onMouseEvent("click", ev); + } + this.$clickNode = this.mouseEvent = null; + }; + + this.onClick = function(ev) { + if (this.mousedownEvent.detail === 2) { + this.editor._emit("afterChoose"); + } + }; + + this.onDoubleClick = function(ev) { + var provider = this.editor.provider; + if (provider.toggleNode && !isTogglerClick(ev.domEvent.target)) { + var node = ev.getNode(); + if (node) + provider.toggleNode(node); + } + if (this.mousedownEvent) + this.mousedownEvent.detail = 2; + }; + + this.dragMoveSelection = function() { + var editor = this.editor; + var ev = this.mouseEvent; + ev.$pos = ev.node = null; + var node = ev.getNode(true); + if (node != editor.selection.getCursor() && node) { + if (ev.getShiftKey()) { + editor.selection.expandSelection(node, null, true); + } else { + editor.selection.selectNode(node); + } + editor.renderer.scrollCaretIntoView(); + } + }; + + this.dragWait = function() { + var ev = this.mousedownEvent; + if (Math.abs(this.x - ev.x) + Math.abs(this.y - ev.y) > DRAG_OFFSET) { + this.delayedSelect = false; + this.editor._emit("startDrag", ev); + if (this.state == "dragWait" && ev.getButton() === 0) + this.setState("dragMoveSelection"); + } + }; + + this.dragWaitEnd = function() { + if (this.delayedSelect) { + var selection = this.editor.selection; + if (this.$clickNode) { + if (this.delayedSelect == "toggle") + selection.toggleSelect(this.$clickNode); + else + selection.setSelection(this.$clickNode); + } + this.delayedSelect = false; + } + }; + + + this.onMouseWheel = function(ev) { + if (ev.getShiftKey() || ev.getAccelKey()) + return; + var t = ev.domEvent.timeStamp; + var dt = t - (this.$lastScrollTime || 0); + + var editor = this.editor; + var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); + if (isScrolable || dt < 200) { + this.$lastScrollTime = t; + editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); + return ev.stop(); + } + }; + +}).call(DefaultHandlers.prototype); + +exports.DefaultHandlers = DefaultHandlers; + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/mouse/drag_handler.js b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/drag_handler.js new file mode 100644 index 00000000..d9254640 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/drag_handler.js @@ -0,0 +1,298 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("ace/lib/event"); +var useragent = require("ace/lib/useragent"); +var DefaultHandlers = require("./default_handlers").DefaultHandlers; +var MouseEvent = require("./mouse_event").MouseEvent; +var config = require("../config"); +var dom = require("ace/lib/dom"); + +function initDragHandlers(mouseHandler) { + var tree = mouseHandler.editor; + var UNFOLD_TIMEOUT = 500; + var WIDGET_UNFOLD_TIMEOUT = 500; + var AUTOSCROLL_DELAY = 300; + var MIN_DRAG_T = 500; + var dragInfo, x, y, dx, dy; + var scrollerRect; + + mouseHandler.drag = function() { + var ev = this.mouseEvent; + if (!dragInfo || !ev) return; + var node = ev.getNode(); + dx = ev.x - x; + dy = ev.y - y; + x = ev.x; + y = ev.y; + var isInTree = isInRect(x, y, scrollerRect); + if (!isInTree) { + node = null; + } + + if (dragInfo.isInTree != isInTree && dragInfo.selectedNodes) { + dragInfo.isInTree = isInTree; + ev.dragInfo = dragInfo; + tree._signal(isInTree ? "dragIn" : "dragOut" , ev); + } + if (!isInTree) { + ev.dragInfo = dragInfo; + tree._signal("dragMoveOutside", ev); + } + + if (dragInfo.el) { + dragInfo.el.style.top = ev.y - dragInfo.offsetY + "px"; + dragInfo.el.style.left = ev.x - dragInfo.offsetX + "px"; + } + + var hoverNode = node; + if (hoverNode) { + var xOffset = x - scrollerRect.left; + + var depth = Math.max(0, Math.floor(xOffset / tree.provider.$indentSize)); + var depthDiff = hoverNode.$depth - depth; + while (depthDiff > 0 && hoverNode.parent) { + depthDiff--; + hoverNode = hoverNode.parent; + } + + if (!hoverNode.isFolder && dragInfo.mode != "sort") { + hoverNode = hoverNode.parent; + } + } + + if (dragInfo.hoverNode !== hoverNode) { + if (dragInfo.hoverNode) { + tree.provider.setClass(dragInfo.hoverNode, "dropTarget", false); + tree._signal("folderDragLeave", dragInfo); + } + if (hoverNode && dragInfo.selectedNodes && dragInfo.selectedNodes.indexOf(hoverNode) != -1) { + hoverNode = null; + } + dragInfo.hoverNode = hoverNode; + if (dragInfo.hoverNode) { + tree._signal("folderDragEnter", dragInfo); + if (dragInfo.mode !== "sort") + tree.provider.setClass(dragInfo.hoverNode, "dropTarget", true); + } + highlightFolder(tree, dragInfo.hoverNode, dragInfo.insertPos); + } + + var now = Date.now(); + + var target = ev.domEvent.target; + var isFoldWidget = target && (dom.hasCssClass(target, "toggler") + && !dom.hasCssClass(target, "empty")); + + var distance = Math.abs(dx) + Math.abs(dy); + + var pos = ev.y - scrollerRect.top; + var rowHeight = tree.provider.rowHeight; + var renderer = tree.renderer; + var autoScrollMargin = 1.5 * rowHeight; + var scroll = pos - autoScrollMargin; + if (scroll > 0) { + scroll += -renderer.$size.scrollerHeight + 2 * autoScrollMargin; + if (scroll < 0) + scroll = 0; + } + if (!scroll || !isInTree) + dragInfo.autoScroll = false; + + if (distance <= 2) { + if (!dragInfo.stopTime) + dragInfo.stopTime = now; + } else { + if (!isFoldWidget) + dragInfo.stopTime = undefined; + } + var dt = now - dragInfo.stopTime; + + if (scroll && isInTree) { + if (dt > AUTOSCROLL_DELAY || dragInfo.autoScroll) { + tree.renderer.scrollBy(0, scroll / 2); + dragInfo.autoScroll = true; + } + } + else if (node && dragInfo.mode === "move") { + if (node.parent === tree.provider.root || node.isRoot || node.parent && node.parent.isRoot) + isFoldWidget = false; + + if (isFoldWidget && dt > WIDGET_UNFOLD_TIMEOUT && dt < 2 * WIDGET_UNFOLD_TIMEOUT) { + tree.provider.toggleNode(node); + dragInfo.stopTime = Infinity; + } + else if (!isFoldWidget && dt > UNFOLD_TIMEOUT && dt < 2 * UNFOLD_TIMEOUT) { + tree.provider.open(node); + dragInfo.stopTime = Infinity; + } + } + }; + + mouseHandler.dragEnd = function(e, cancel) { + if (dragInfo) { + window.removeEventListener("mousedown", keyHandler, true); + window.removeEventListener("keydown", keyHandler, true); + window.removeEventListener("keyup", keyHandler, true); + if (dragInfo.el && dragInfo.el.parentNode) + dragInfo.el.parentNode.removeChild(dragInfo.el); + if (dragInfo.hoverNode) { + tree.provider.setClass(dragInfo.hoverNode, "dropTarget", false); + tree._signal("folderDragLeave", dragInfo); + } + highlightFolder(tree, null); + + if (tree.isFocused()) + tree.renderer.visualizeFocus(); + tree.renderer.setStyle("dragOver", false); + + dragInfo.target = dragInfo.hoverNode; + + if (!cancel && dragInfo.selectedNodes && Date.now() - dragInfo.startT > MIN_DRAG_T) + tree._emit("drop", dragInfo); + + if (!dragInfo.isInTree) { + if (cancel) + dragInfo.selectedNodes = null; + tree._signal("dropOutside" , {dragInfo: dragInfo}); + } + dragInfo = null; + } + }; + + mouseHandler.dragStart = function() { + if (dragInfo) + this.dragEnd(null, true); + mouseHandler.setState("drag"); + tree.renderer.visualizeBlur(); + tree.renderer.setStyle("dragOver", true); + scrollerRect = tree.renderer.scroller.getBoundingClientRect(); + dragInfo = {}; + }; + + tree.on("startDrag", function(ev) { + if (!tree.getOption("enableDragDrop")) + return; + var node = ev.getNode(); + if (!node || ev.getButton()) + return; + mouseHandler.dragStart(); + + window.addEventListener("mousedown", keyHandler, true); + window.addEventListener("keydown", keyHandler, true); + window.addEventListener("keyup", keyHandler, true); + + var selectedNodes = tree.selection.getSelectedNodes(); + var el = constructDragNode(node); + + dragInfo = { + el: el, + node: node, + selectedNodes: selectedNodes, + offsetX: 10, + offsetY: 10, + target: node, + startT: Date.now(), + isInTree: true, + mode: "move" + }; + + ev.dragInfo = dragInfo; + tree._signal("dragStarted", ev); + + if (mouseHandler.state == "drag") + mouseHandler.drag(); + }); + + function constructDragNode(node) { + var i = tree.provider.getIndexForNode(node); + var domNode = tree.renderer.$cellLayer.getDomNodeAtIndex(i); + if (!domNode) return; + + var offset = domNode.offsetHeight; + + var selectedNodes = tree.selection.getSelectedNodes(); + var el = document.createElement("div"); + el.className = tree.container.className + " dragImage"; + var ch = el.appendChild(domNode.cloneNode(true)); + ch.removeChild(ch.firstChild); + ch.style.paddingRight = "5px"; + ch.style.opacity = "0.8"; + + el.style.position = "absolute"; + el.style.zIndex = "1000000"; + el.style.pointerEvents = "none"; + el.style.overflow = "visible"; + + if (selectedNodes.length > 1) { + ch.style.color = "transparent"; + ch = el.appendChild(domNode.cloneNode(true)); + ch.removeChild(ch.firstChild); + ch.style.paddingRight = "5px"; + ch.style.top = - offset + 2 + "px"; + ch.style.left = "2px"; + ch.style.position = "relative"; + ch.style.opacity = "0.8"; + } + + document.body.appendChild(el); + return el; + } + + function keyHandler(e){ + if (dragInfo) { + if (e.keyCode === 27 || e.type == "mousedown") { + mouseHandler.dragEnd(null, true); + event.stopEvent(e); + } else if (dragInfo && e.keyCode == 17 || e.keyCode == 18) { + dragInfo.isCopy = e.type == "keydown"; + dom.setCssClass(dragInfo.el, "copy", dragInfo.isCopy); + } + } + + } +} + +function highlightFolder(tree, node, type) { + tree.provider.markedFolder = node; + tree.provider.markedFolderType = type; + tree.renderer.$loop.schedule(tree.renderer.CHANGE_MARKER); +} + +function isInRect(x, y, rect) { + if (x < rect.right && x > rect.left && y > rect.top && y < rect.bottom) + return true; +} + +module.exports = initDragHandlers; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/mouse/heading_handler.js b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/heading_handler.js new file mode 100644 index 00000000..b8012b76 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/heading_handler.js @@ -0,0 +1,74 @@ +define(function(require, exports, module) { +"use strict"; +var event = require("ace/lib/event"); + +function HeadingHandler(mouseHandler) { + var editor = mouseHandler.editor; + var headingLayer = editor.renderer.$headingLayer; + + + event.addListener(headingLayer.element, + "mousedown", + mouseHandler.onMouseEvent.bind(mouseHandler, "headerMouseDown")); + + event.addListener(headingLayer.element, + "mousemove", + mouseHandler.onMouseEvent.bind(mouseHandler, "headerMouseMove")); + + var overResizer, dragStartPos, columnData; + editor.setDefaultHandler("headerMouseMove", function(e) { + if (dragStartPos || !editor.provider || !editor.provider.columns) + return; + var pos = e.getDocumentPosition(); + var width = editor.renderer.$size.scrollerWidth; + if (width != editor.provider.columns.width) + headingLayer.updateWidth(width); + columnData = headingLayer.findColumn(pos.x); + + overResizer = columnData && columnData.overResizer; + headingLayer.element.style.cursor = overResizer + ? "ew-resize" + : "default"; + }); + + + editor.setDefaultHandler("headerMouseDown", function(e) { + if (overResizer) { + var pos = e.getDocumentPosition(); + dragStartPos = {x: pos.x}; + mouseHandler.setState("headerResize"); + mouseHandler.captureMouse(e); + mouseHandler.mouseEvent = e; + } + e.stop(); + }); + + mouseHandler.headerResize = function() { + if (this.mouseEvent && dragStartPos) { + var pos = this.mouseEvent.getDocumentPosition(); + var dx = pos.x // - dragStartPos.x; + var columns = editor.renderer.provider.columns; + for (var i = 0; i < columns.length; i++) { + var col = columns[i]; + dx -= col.pixelWidth; + if (col === columnData.column) + break; + } + var total = editor.renderer.$size.scrollerWidth; + headingLayer.changeColumnWidth(columnData.column, dx, total); + + var renderer = editor.renderer; + renderer.updateFull(); + } + }; + mouseHandler.headerResizeEnd = function() { + dragStartPos = null; + headingLayer.element.style.cursor = ""; + overResizer = false; + }; + +} + +exports.HeadingHandler = HeadingHandler; + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/mouse/mouse_event.js b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/mouse_event.js new file mode 100644 index 00000000..c68c528a --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/mouse_event.js @@ -0,0 +1,129 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("ace/lib/event"); +var useragent = require("ace/lib/useragent"); + +/* + * Custom Ace mouse event + */ +var MouseEvent = exports.MouseEvent = function(domEvent, editor) { + this.domEvent = domEvent; + this.editor = editor; + + this.x = this.clientX = domEvent.clientX; + this.y = this.clientY = domEvent.clientY; + + this.$pos = null; + this.$inSelection = null; + + this.propagationStopped = false; + this.defaultPrevented = false; +}; + +(function() { + + this.stopPropagation = function() { + event.stopPropagation(this.domEvent); + this.propagationStopped = true; + }; + + this.preventDefault = function() { + event.preventDefault(this.domEvent); + this.defaultPrevented = true; + }; + + this.stop = function() { + this.stopPropagation(); + this.preventDefault(); + }; + + /* + * Get the document position below the mouse cursor + * + * @return {Object} 'row' and 'column' of the document position + */ + this.getDocumentPosition = function() { + if (this.$pos) + return this.$pos; + + this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); + return this.$pos; + }; + + /* + * Check if the mouse cursor is inside of the text selection + * + * @return {Boolean} whether the mouse cursor is inside of the selection + */ + this.inSelection = function() { + if (this.$inSelection !== null) + return this.$inSelection; + + var node = this.getNode(); + this.$inSelection = !!(node && node.isSelected); + return this.$inSelection; + }; + + this.node = null; + this.getNode = function(clip) { + if (this.node) + return this.node; + var pos = this.getDocumentPosition(clip); + if (!pos || !this.editor.provider) return; // Click outside cells + return this.node = this.editor.provider.findItemAtOffset(pos.y, clip); + }; + + /* + * Get the clicked mouse button + * + * @return {Number} 0 for left button, 1 for middle button, 2 for right button + */ + this.getButton = function() { + return event.getButton(this.domEvent); + }; + + /* + * @return {Boolean} whether the shift key was pressed when the event was emitted + */ + this.getShiftKey = function() { + return this.domEvent.shiftKey; + }; + + this.getAccelKey = useragent.isMac + ? function() { return this.domEvent.metaKey; } + : function() { return this.domEvent.ctrlKey; }; + +}).call(MouseEvent.prototype); + +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/mouse/mouse_handler.js b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/mouse_handler.js new file mode 100644 index 00000000..acaf0b49 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/mouse/mouse_handler.js @@ -0,0 +1,144 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var event = require("ace/lib/event"); +var useragent = require("ace/lib/useragent"); +var DefaultHandlers = require("./default_handlers").DefaultHandlers; +var initDragHandlers = require("./drag_handler"); +var HeadingHandler = require("./heading_handler").HeadingHandler; +var MouseEvent = require("./mouse_event").MouseEvent; +var config = require("../config"); + +var MouseHandler = function(editor) { + this.editor = editor; + + new DefaultHandlers(this); + new HeadingHandler(this); + initDragHandlers(this); + + + var mouseTarget = editor.renderer.getMouseEventTarget(); + event.addListener(mouseTarget, "mousedown", function(e) { + editor.focus(true); + return event.preventDefault(e); + }); + + event.addListener(mouseTarget, "mousemove", this.onMouseEvent.bind(this, "mousemove")); + event.addListener(mouseTarget, "mouseup", this.onMouseEvent.bind(this, "mouseup")); + event.addMultiMouseDownListener(mouseTarget, [300, 300, 250], this, "onMouseEvent"); + event.addMultiMouseDownListener(editor.renderer.scrollBarV.inner, [300, 300, 250], this, "onMouseEvent"); + event.addMultiMouseDownListener(editor.renderer.scrollBarH.inner, [300, 300, 250], this, "onMouseEvent"); + event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel")); + event.addListener(mouseTarget, "mouseout", this.onMouseEvent.bind(this, "mouseleave")); +}; + +(function() { + this.onMouseEvent = function(name, e) { + this.editor._emit(name, new MouseEvent(e, this.editor)); + }; + + this.onMouseWheel = function(name, e) { + var mouseEvent = new MouseEvent(e, this.editor); + mouseEvent.speed = this.$scrollSpeed * 2; + mouseEvent.wheelX = e.wheelX; + mouseEvent.wheelY = e.wheelY; + + this.editor._emit(name, mouseEvent); + }; + + this.setState = function(state) { + this.state = state; + }; + + this.captureMouse = function(ev, state) { + if (state) + this.setState(state); + + this.x = ev.x; + this.y = ev.y; + + this.isMousePressed = 2; + + // do not move textarea during selection + var renderer = this.editor.renderer; + if (renderer.$keepTextAreaAtCursor) + renderer.$keepTextAreaAtCursor = null; + + var self = this; + var onMouseMove = function(e) { + self.x = e.clientX; + self.y = e.clientY; + self.mouseEvent = new MouseEvent(e, self.editor); + self.$mouseMoved = true; + }; + + var onCaptureEnd = function(e) { + clearInterval(timerId); + onCaptureInterval(); + self[self.state + "End"] && self[self.state + "End"](e); + self.$clickSelection = null; + if (renderer.$keepTextAreaAtCursor == null) { + renderer.$keepTextAreaAtCursor = true; + renderer.$moveTextAreaToCursor(); + } + self.isMousePressed = false; + e && self.onMouseEvent("mouseup", e); + self.$onCaptureMouseMove = self.releaseMouse = null; + }; + + var onCaptureInterval = function() { + self[self.state] && self[self.state](); + self.$mouseMoved = false; + }; + + if (useragent.isOldIE && ev.domEvent.type == "dblclick") { + return setTimeout(function() {onCaptureEnd(ev.domEvent);}); + } + + self.$onCaptureMouseMove = onMouseMove; + self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd); + var timerId = setInterval(onCaptureInterval, 20); + }; + this.releaseMouse = null; +}).call(MouseHandler.prototype); + +config.defineOptions(MouseHandler.prototype, "mouseHandler", { + scrollSpeed: {initialValue: 2}, + dragDelay: {initialValue: 150}, + focusTimout: {initialValue: 0}, + enableDragDrop: {initialValue: false} +}); + + +exports.MouseHandler = MouseHandler; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/quicksearch.js b/plugins/node_modules/ace_tree/lib/ace_tree/quicksearch.js new file mode 100644 index 00000000..8d9ca33b --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/quicksearch.js @@ -0,0 +1,40 @@ +define(function(require, exports, module) { +"use strict"; + +var quickSearch = function(tree, str) { + var node = tree.selection.getCursor() + var siblings = tree.provider.getChildren(node.parent); + + if (!siblings || siblings.length == 1) { + return; + } + + var index = siblings.indexOf(node); + var newNode + for (var i = index + 1; i < siblings.length; i++) { + node = siblings[i]; + var label = node.label || node.name || ""; + if (label[0] == str) { + newNode = node; + break; + } + } + if (!newNode) { + for (var i = 0; i < index; i++) { + node = siblings[i]; + var label = node.label || node.name || ""; + if (label[0] == str) { + newNode = node; + break; + } + } + } + + if (newNode) { + tree.selection.selectNode(newNode); + tree.renderer.scrollCaretIntoView(newNode, 0.5); + } +}; + +module.exports = quickSearch; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/scrollable.js b/plugins/node_modules/ace_tree/lib/ace_tree/scrollable.js new file mode 100644 index 00000000..a17f5dbe --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/scrollable.js @@ -0,0 +1,45 @@ +/** + * The main class required to set up a Tree instance in the browser. + * + * @class Tree + **/ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("ace/lib/oop"); +var EventEmitter = require("ace/lib/event_emitter").EventEmitter; + + +var scrollable = {}; + +(function() { + oop.implement(this, EventEmitter); + + this.$scrollTop = 0; + this.getScrollTop = function() { return this.$scrollTop; }; + this.setScrollTop = function(scrollTop) { + scrollTop = Math.round(scrollTop); + if (this.$scrollTop === scrollTop || isNaN(scrollTop)) + return; + + this.$scrollTop = scrollTop; + this._signal("changeScrollTop", scrollTop); + }; + + this.$scrollLeft = 0; + this.getScrollLeft = function() { return this.$scrollLeft; }; + this.setScrollLeft = function(scrollLeft) { + scrollLeft = Math.round(scrollLeft); + if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) + return; + + this.$scrollLeft = scrollLeft; + this._signal("changeScrollLeft", scrollLeft); + }; + + +}).call(scrollable); + +module.exports = scrollable; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/selection.js b/plugins/node_modules/ace_tree/lib/ace_tree/selection.js new file mode 100644 index 00000000..325864bf --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/selection.js @@ -0,0 +1,269 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +var oop = require("ace/lib/oop"); +var EventEmitter = require("ace/lib/event_emitter").EventEmitter; + +var Selection = function(provider) { + this.provider = provider; + if (this.provider && !this.provider.selectedItems) + this.provider.selectedItems = []; + this.provider.on("remove", this.unselectRemoved = this.unselectRemoved.bind(this)); +}; + +(function() { + + oop.implement(this, EventEmitter); + + this.$wrapAround = false; + this.getRange = function() {}; + + this.selectAll = function() { + var sel = this.provider.selectedItems; + this.expandSelection(sel[0], sel[sel.length -1]); + + this._signal("change"); + }; + + this.moveSelection = function(dir, select, add) { + var provider = this.provider; + var cursor = this.getCursor(); + var anchor = this.getAnchor(); + var i = provider.getIndexForNode(cursor); + if (!add) { + this.clear(true); + } else if (add && !select) { + this.unselectNode(cursor); + } + + var min = provider.getMinIndex(); + var max = provider.getMaxIndex(); + var wrapped = false; + var newI = i; + do { + newI += dir; + if (newI < min) { + newI = this.$wrapAround ? max : min; + wrapped = true; + } else if (newI > max) { + newI = this.$wrapAround ? min : max; + wrapped = true; + } + var newNode = provider.getNodeAtIndex(newI); + + } while (!wrapped && newNode && !provider.isSelectable(newNode)); + + if (!newNode || !provider.isSelectable(newNode)) + newNode = cursor; + + if (select) { + this.expandSelection(newNode, anchor, add); + } else { + this.selectNode(newNode, add); + } + }; + + this.getCursor = function() { + var sel = this.provider.selectedItems; + return sel.cursor || sel[sel.length - 1]; + }; + this.getAnchor = function() { + var sel = this.provider.selectedItems; + return sel.anchor || sel.cursor || sel[0]; + }; + this.getSelectedNodes = function() { + var sel = this.provider.selectedItems; + return sel.slice(); + }; + this.getVisibleSelectedNodes = function() { + var provider = this.provider; + var sel = provider.selectedItems; + return sel.filter(function(node) { + return provider.isVisible(node); + }); + }; + + this.isEmpty = function() { + var sel = this.provider.selectedItems; + return sel.length === 0; + }; + this.isMultiRow = function() { + var sel = this.provider.selectedItems; + return sel.length > 1; + }; + this.toggleSelect = function(node) { + var provider = this.provider; + var sel = provider.selectedItems; + var i = sel.indexOf(node); + if (i != -1) + sel.splice(i, 1); + provider.setSelected(node, !provider.isSelected(node)); + if (provider.isSelected(node)) { + sel.push(node); + sel.anchor = sel.cursor = node; + } else + sel.anchor = sel.cursor = sel[sel.length - 1]; + + this._signal("change"); + }; + this.selectNode = function(node, add, silent) { + var provider = this.provider; + var sel = provider.selectedItems; + if (!provider.isSelectable(node)) + return; + if (!add) + this.clear(true); + if (node) { + var i = sel.indexOf(node); + if (i != -1) + sel.splice(i, 1); + provider.setSelected(node, true); + if (provider.isSelected(node)) + sel.push(node); + } + sel.anchor = sel.cursor = node; + this._signal("change"); + }; + this.add = function(node) { + this.selectNode(node, true); + }; + this.remove = function(node) { + if (this.provider.isSelected(node)) + this.toggleSelect(node); + }; + this.clear = + this.clearSelection = function(silent) { + var provider = this.provider; + var sel = provider.selectedItems; + sel.forEach(function(node) { provider.setSelected(node, false); }); + sel.splice(0, sel.length); + sel.anchor = sel.cursor; + + silent || this._signal("change"); + }; + this.unselectNode = function(node, silent) { + var provider = this.provider; + var sel = provider.selectedItems; + var i = sel.indexOf(node); + if (i != -1) { + sel.splice(i, 1); + provider.setSelected(node, false); + if (sel.anchor == node) + sel.anchor = sel[i-1] || sel[i]; + if (sel.cursor == node) + sel.cursor = sel[i] || sel[i-1]; + silent || this._signal("change"); + } + }; + this.setSelection = function(nodes) { + if (Array.isArray(nodes)) { + this.clear(true); + nodes.forEach(function(node) { + this.selectNode(node, true, true); + }, this); + } else + this.selectNode(nodes, false, true); + }; + this.expandSelection = function(cursor, anchor, additive) { + anchor = anchor || this.getAnchor(); + + if (!additive) + this.clear(true); + var provider = this.provider; + var sel = provider.selectedItems; + + var end = provider.getIndexForNode(cursor); + var start = provider.getIndexForNode(anchor || cursor); + + if (end > start) { + for (var i = start; i <= end; i++) { + var node = provider.getNodeAtIndex(i); + var index = sel.indexOf(node); + if (index != -1) + sel.splice(index, 1); + if (provider.isSelectable(node)) + provider.setSelected(node, true); + sel.push(node); + } + } else { + for (var i = start; i >= end; i--) { + var node = provider.getNodeAtIndex(i); + var index = sel.indexOf(node); + if (index != -1) + sel.splice(index, 1); + if (provider.isSelectable(node)) + provider.setSelected(node, true); + sel.push(node); + } + } + + sel.cursor = cursor; + sel.anchor = anchor; + + this._signal("change"); + }; + + this.unselectRemoved = function(toRemove) { + var sel = this.getSelectedNodes(); + var provider = this.provider; + var changed, cursor = this.getCursor(); + sel.forEach(function(n) { + if (provider.isAncestor(toRemove, n)) { + changed = true; + this.unselectNode(n, true); + } + }, this); + if (changed && !provider.isSelected(cursor)) { + var parent = toRemove.parent; + var ch = []; + if (parent && provider.isOpen(parent)) { + ch = provider.getChildren(parent); + var i = ch.indexOf(toRemove); + } + if (i == -1) { + i = toRemove.index; + var node = ch[i] || ch[i - 1] || parent; + } else { + node = ch[i + 1] || ch[i - 1] || parent; + } + if (node == provider.root) + node = ch[0] || node; + if (node) + this.selectNode(node, true); + this._signal("change"); + } + }; +}).call(Selection.prototype); + +exports.Selection = Selection; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/selection_test.js b/plugins/node_modules/ace_tree/lib/ace_tree/selection_test.js new file mode 100644 index 00000000..b69fd6dd --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/selection_test.js @@ -0,0 +1,465 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var assert = require("./test/assertions"); + +module.exports = { + createSession : function(rows, cols) { + var line = new Array(cols + 1).join("a"); + var text = new Array(rows).join(line + "\n") + line; + return new EditSession(text); + }, + + "test: move cursor to end of file should place the cursor on last row and column" : function() { + var session = this.createSession(200, 10); + var selection = session.getSelection(); + + selection.moveCursorFileEnd(); + assert.position(selection.getCursor(), 199, 10); + }, + + "test: moveCursor to start of file should place the cursor on the first row and column" : function() { + var session = this.createSession(200, 10); + var selection = session.getSelection(); + + selection.moveCursorFileStart(); + assert.position(selection.getCursor(), 0, 0); + }, + + "test: move selection lead to end of file" : function() { + var session = this.createSession(200, 10); + var selection = session.getSelection(); + + selection.moveCursorTo(100, 5); + selection.selectFileEnd(); + + var range = selection.getRange(); + + assert.position(range.start, 100, 5); + assert.position(range.end, 199, 10); + }, + + "test: move selection lead to start of file" : function() { + var session = this.createSession(200, 10); + var selection = session.getSelection(); + + selection.moveCursorTo(100, 5); + selection.selectFileStart(); + + var range = selection.getRange(); + + assert.position(range.start, 0, 0); + assert.position(range.end, 100, 5); + }, + + "test: move cursor word right" : function() { + var session = new EditSession([ + "ab", + " Juhu Kinners (abc, 12)", + " cde" + ].join("\n")); + + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorDown(); + assert.position(selection.getCursor(), 1, 0); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 1, 5); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 1, 13); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 1, 18); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 1, 22); + + // wrap line + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 2, 4); + + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 2, 4); + }, + + "test: select word right if cursor in word" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 2); + selection.moveCursorWordRight(); + + assert.position(selection.getCursor(), 0, 4); + }, + + "test: moveCursor word left" : function() { + var session = new EditSession([ + "ab", + " Juhu Kinners (abc, 12)", + " cde" + ].join("\n")); + + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorDown(); + selection.moveCursorLineEnd(); + assert.position(selection.getCursor(), 1, 23); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 1, 20); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 1, 15); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 1, 6); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 1, 1); + + // wrap line + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 0); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 0); + }, + + "test: moveCursor word left with umlauts" : function() { + var session = new EditSession(" Fuß Füße"); + session.$selectLongWords = true; + + var selection = session.getSelection(); + selection.moveCursorTo(0, 9) + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 5); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 1); + }, + + "test: select word left if cursor in word" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 8); + + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 5); + }, + + "test: select word right and select" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 0); + selection.selectWordRight(); + + var range = selection.getRange(); + + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 4); + }, + + "test: select word left and select" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 3); + selection.selectWordLeft(); + + var range = selection.getRange(); + + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 3); + }, + + "test: select word with cursor in word should select the word" : function() { + var session = new EditSession("Juhu Kinners 123"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 8); + selection.selectWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 12); + }, + + "test: select word with cursor in word including right whitespace should select the word" : function() { + var session = new EditSession("Juhu Kinners 123"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 8); + selection.selectAWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 18); + }, + + "test: select word with cursor betwen white space and word should select the word" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 4); + selection.selectWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 0); + assert.position(range.end, 0, 4); + + selection.moveCursorTo(0, 5); + selection.selectWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 5); + assert.position(range.end, 0, 12); + }, + + "test: select word with cursor in white space should select white space" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 5); + selection.selectWord(); + + var range = selection.getRange(); + assert.position(range.start, 0, 4); + assert.position(range.end, 0, 6); + }, + + "test: moving cursor should fire a 'changeCursor' event" : function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 5); + + var called = false; + selection.addEventListener("changeCursor", function() { + called = true; + }); + + selection.moveCursorTo(0, 6); + assert.ok(called); + }, + + "test: calling setCursor with the same position should not fire an event": function() { + var session = new EditSession("Juhu Kinners"); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 5); + + var called = false; + selection.addEventListener("changeCursor", function() { + called = true; + }); + + selection.moveCursorTo(0, 5); + assert.notOk(called); + }, + + "test: moveWordright should move past || and [": function() { + var session = new EditSession("||foo["); + var selection = session.getSelection(); + session.$selectLongWords = true; + + // Move behind ||foo + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 0, 5); + + // Move behind [ + selection.moveCursorWordRight(); + assert.position(selection.getCursor(), 0, 6); + }, + + "test: moveWordLeft should move past || and [": function() { + var session = new EditSession("||foo["); + var selection = session.getSelection(); + session.$selectLongWords = true; + + selection.moveCursorTo(0, 6); + + // Move behind [foo + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 2); + + // Move behind || + selection.moveCursorWordLeft(); + assert.position(selection.getCursor(), 0, 0); + }, + + "test: move cursor to line start should move cursor to end of the indentation first": function() { + var session = new EditSession("12\n Juhu\n12"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 6); + selection.moveCursorLineStart(); + + assert.position(selection.getCursor(), 1, 4); + }, + + "test: move cursor to line start when the cursor is at the end of the indentation should move cursor to column 0": function() { + var session = new EditSession("12\n Juhu\n12"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 4); + selection.moveCursorLineStart(); + + assert.position(selection.getCursor(), 1, 0); + }, + + "test: move cursor to line start when the cursor is at column 0 should move cursor to the end of the indentation": function() { + var session = new EditSession("12\n Juhu\n12"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 0); + selection.moveCursorLineStart(); + + assert.position(selection.getCursor(), 1, 4); + }, + + // Eclipse style + "test: move cursor to line start when the cursor is before the initial indentation should move cursor to the end of the indentation": function() { + var session = new EditSession("12\n Juhu\n12"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 2); + selection.moveCursorLineStart(); + + assert.position(selection.getCursor(), 1, 4); + }, + + "test go line up when in the middle of the first line should go to document start": function() { + var session = new EditSession("juhu kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 4); + selection.moveCursorUp(); + + assert.position(selection.getCursor(), 0, 0); + }, + + "test: (wrap) go line up when in the middle of the first line should go to document start": function() { + var session = new EditSession("juhu kinners"); + session.setWrapLimitRange(5, 5); + session.adjustWrapLimit(80); + + var selection = session.getSelection(); + + selection.moveCursorTo(0, 4); + selection.moveCursorUp(); + + assert.position(selection.getCursor(), 0, 0); + }, + + + "test go line down when in the middle of the last line should go to document end": function() { + var session = new EditSession("juhu kinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 4); + selection.moveCursorDown(); + + assert.position(selection.getCursor(), 0, 12); + }, + + "test (wrap) go line down when in the middle of the last line should go to document end": function() { + var session = new EditSession("juhu kinners"); + session.setWrapLimitRange(8, 8); + session.adjustWrapLimit(80); + + var selection = session.getSelection(); + + selection.moveCursorTo(0, 10); + selection.moveCursorDown(); + + assert.position(selection.getCursor(), 0, 12); + }, + + "test go line up twice and then once down when in the second should go back to the previous column": function() { + var session = new EditSession("juhu\nkinners"); + var selection = session.getSelection(); + + selection.moveCursorTo(1, 4); + selection.moveCursorUp(); + selection.moveCursorUp(); + selection.moveCursorDown(); + + assert.position(selection.getCursor(), 1, 4); + }, + + "test (keyboard navigation) when curLine is not EOL and targetLine is all whitespace new column should be current column": function() { + var session = new EditSession("function (a) {\n\ + \n\ +}"); + var selection = session.getSelection(); + + selection.moveCursorTo(2, 0); + selection.moveCursorUp(); + + assert.position(selection.getCursor(), 1, 0); + }, + + "test (keyboard navigation) when curLine is EOL and targetLine is shorter dan current column, new column should be targetLine's EOL": function() { + var session = new EditSession("function (a) {\n\ + \n\ +}"); + var selection = session.getSelection(); + + selection.moveCursorTo(0, 14); + selection.moveCursorDown(); + + assert.position(selection.getCursor(), 1, 4); + } +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec() +} diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/tooltip.js b/plugins/node_modules/ace_tree/lib/ace_tree/tooltip.js new file mode 100644 index 00000000..5b1bd7fe --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/tooltip.js @@ -0,0 +1,105 @@ +define(function(require, exports, module) { +"use strict"; +var dom = require("ace/lib/dom"); +var lang = require("ace/lib/lang"); +var MouseEvent = require("./mouse/mouse_event").MouseEvent; +dom.importCssString(".no-events * {pointer-events:none!important}"); +function Tooltip(tree) { + this.tree = tree; + this.tree.on("mousemove", this.onMouseMove.bind(this)); + this.tree.on("mousewheel", this.onMouseMove.bind(this, null)); + this.tree.renderer.scroller.addEventListener("mouseout", this.onMouseOut.bind(this)); + this.setUp(); + this.update = this.update.bind(this); + this.tree.renderer.on("afterRender", this.updateNodeClass.bind(this)); + this.clearDelayed = lang.delayedCall(this.onMouseMove.bind(this), 50); +} + +(function() { + this.setUp = function() { + var container = this.tree.container; + this.root = document.createElement("div"); + this.root.className = container.className + " no-events"; + this.root.style.cssText = "border: 0px;margin: 0px;" + + "position: absolute; bottom: initial; right: initial; width: auto; height: auto;" + + "overflow: visible;z-index: 190000; white-space: pre;" + + "pointer-events: none"; + // var color = dom.computedStyle(container).backgroundColor; + // if (!color) + this.root.style.backgroundColor = "rgb(48, 49, 48)"; + document.body.appendChild(this.root); + + }; + this.updateNode = function(treeDomNode) { + if (this.node) { + this.node.parentNode.removeChild(this.node); + this.node = null; + } + this.treeDomNode = treeDomNode; + var rect = treeDomNode && treeDomNode.getBoundingClientRect(); + var maxW = this.tree.renderer.layerConfig.width; + if (!rect || treeDomNode.lastChild.getBoundingClientRect().right <= maxW) { + this.root.style.display = "none"; + return; + } + // if (rect.width ) + + this.root.className = this.tree.container.className + " no-events"; + this.root.style.display = ""; + + this.node = treeDomNode.cloneNode(true); + this.node.style.margin = "0px"; + + this.root.appendChild(this.node); + this.root.style.top = rect.top + "px"; + this.root.style.left = rect.left + "px"; + }; + + this.updateNodeClass = function() { + if (this.node && this.treeDomNode) { + if (this.treeDomNode.parentNode == this.tree.renderer.$cellLayer.element) { + this.node.className = this.treeDomNode.className; + this.root.className = this.tree.container.className + " no-events"; + } else + this.updateNode(null); + } + }; + + this.dettach = function() { + + }; + + this.attach = function() { + + }; + + this.onMouseMove = function(ev) { + var node = ev && ev.getNode && ev.getNode(); + if (node == this.treeNode) + return; + this.treeNode = node; + if (node) + this.clearDelayed.cancel(); + this.tree.renderer.on("afterRender", this.update); + }; + + this.update = function() { + var renderer = this.tree.renderer; + renderer.off("afterRender", this.update); + var i = renderer.layerConfig.vRange.indexOf(this.treeNode); + var domNode = renderer.$cellLayer.getDomNodeAtIndex(i + renderer.layerConfig.firstRow); + this.updateNode(domNode, this.treeNode); + }; + + this.onMouseOut = function(e) { + this.onMouseMove(); + }; + this.onMouseOver = function(ev) { + this.clearDelayed.schedule(); + }; + +}).call(Tooltip.prototype); + +module.exports = Tooltip; + +}); \ No newline at end of file diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/tree.js b/plugins/node_modules/ace_tree/lib/ace_tree/tree.js new file mode 100644 index 00000000..4392dca7 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/tree.js @@ -0,0 +1,727 @@ +/** + * The main class required to set up a Tree instance in the browser. + * + * @class Tree + **/ + +define(function(require, exports, module) { +"use strict"; + +// var UndoManager = require("./undomanager").UndoManager; +var Renderer = require("./virtual_renderer").VirtualRenderer; +// var MultiSelect = require("./multi_select").MultiSelect; + +exports.config = require("./config"); + +var oop = require("ace/lib/oop"); +var lang = require("ace/lib/lang"); +var useragent = require("ace/lib/useragent"); +var TextInput = require("ace/keyboard/textinput").TextInput; +var MouseHandler = require("./mouse/mouse_handler").MouseHandler; +var KeyBinding = require("ace/keyboard/keybinding").KeyBinding; +var Selection = require("./selection").Selection; +var EventEmitter = require("ace/lib/event_emitter").EventEmitter; +var CommandManager = require("ace/commands/command_manager").CommandManager; +var defaultCommands = require("./commands/default_commands").commands; +var config = require("./config"); + +var quickSearch = require("./quicksearch"); +/** + * @class Tree + **/ + +/** + * Creates a new `Tree` object. + * @param {Object} element The html element the Tree table renders in. + * + * + * @constructor + **/ +var Tree = function(element, cellWidth, cellHeight) { + this.cellWidth = cellWidth || 80; + this.cellHeight = cellHeight || 24; + + this.renderer = new Renderer(element, this.cellWidth, this.cellHeight); + this.container = this.renderer.container; + + this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); + this.textInput = new TextInput(this.container, this); + this.keyBinding = new KeyBinding(this); + + // TODO detect touch event support + this.$mouseHandler = new MouseHandler(this); + + this.$blockScrolling = 0; + + var _self = this; + this.renderer.on("edit", function(e){ + _self._emit("edit", e); + }); + + this.commands.on("exec", function() { + this.selectionChanged = false; + }.bind(this)); + this.commands.on("afterExec", function() { + if (this.selectionChanged) { + this.selectionChanged = false; + this.renderer.scrollCaretIntoView(); + this._signal("userSelect"); + } + }.bind(this)); + this.on("changeSelection", function() { + if (this.$mouseHandler.isMousePressed) + this._signal("userSelect"); + }.bind(this)); + + + // var Tooltip = require("./tooltip") + // new Tooltip(this) + + config.resetOptions(this); + config._emit("Tree", this); +}; + +(function(){ + + oop.implement(this, EventEmitter); + + /** + * + **/ + this.setDataProvider = function(provider) { + if (this.provider) { + var oldProvider = this.provider; + // this.session.off("changeScrollLeft", this.$onScrollLeftChange); + + this.selection.off("changeCaret", this.$onCaretChange); + this.selection.off("change", this.$onSelectionChange); + + oldProvider.off("changeClass", this.$onChangeClass); + oldProvider.off("expand", this.$redraw); + oldProvider.off("collapse", this.$redraw); + oldProvider.off("change", this.$redraw); + oldProvider.off("changeScrollTop", this.$onScrollTopChange); + oldProvider.off("changeScrollLeft", this.$onScrollLeftChange); + } + + this.provider = provider; + this.model = provider; // TODO remove provider in favor of model + if (provider) { + this.renderer.setDataProvider(provider); + + // this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); + // this.session.on("changeScrollLeft", this.$onScrollLeftChange); + + if (!this.$redraw) this.$redraw = this.redraw.bind(this); + + this.provider.on("expand", this.$redraw); + this.provider.on("collapse", this.$redraw); + this.provider.on("change", this.$redraw); + + // FIXME + if (!this.provider.selection) { + this.provider.selection = new Selection(this.provider); + } + + this.selection = this.provider.selection; + + this.$onCaretChange = this.onCaretChange.bind(this); + this.selection.on("changeCaret", this.$onCaretChange); + this.$onChangeClass = this.$onChangeClass.bind(this); + this.provider.on("changeClass", this.$onChangeClass); + + this.$onSelectionChange = this.onSelectionChange.bind(this); + this.selection.on("change", this.$onSelectionChange); + + + this.$onScrollTopChange = this.onScrollTopChange.bind(this); + this.provider.on("changeScrollTop", this.$onScrollTopChange); + + this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); + this.provider.on("changeScrollLeft", this.$onScrollLeftChange); + + this.$blockScrolling += 1; + this.onCaretChange(); + this.$blockScrolling -= 1; + + this.onScrollTopChange(); + this.onScrollLeftChange(); + this.onSelectionChange(); + this.renderer.updateFull(); + } + + this._emit("changeDataProvider", { + provider: provider, + oldProvider: oldProvider + }); + }; + + this.redraw = function() { + this.renderer.updateFull(); + }; + + this.getLength = function(){ + return 0; // this.renderer.$treeLayer.length; + }; + + this.getLine = function(row){ + return { + length : 0 // this.renderer.$horHeadingLayer.length - 1 + }; + }; + + /** + * Returns the current session being used. + **/ + this.getDataProvider = function() { + return this.provider; + }; + + /** + * + * Returns the currently highlighted selection. + * @returns {String} The highlighted selection + **/ + this.getSelection = function() { + return this.selection; + }; + + /** + * {:VirtualRenderer.onResize} + * @param {Boolean} force If `true`, recomputes the size, even if the height and width haven't changed + * + * + * @related VirtualRenderer.onResize + **/ + this.resize = function(force) { + this.renderer.onResize(force); + }; + + /** + * + * Brings the current `textInput` into focus. + **/ + this.focus = function(once) { + // Safari needs the timeout + // iOS and Firefox need it called immediately + // to be on the save side we do both + var _self = this; + once || setTimeout(function() { + _self.textInput.focus(); + }); + this.textInput.focus(); + }; + + /** + * Returns `true` if the current `textInput` is in focus. + * @return {Boolean} + **/ + this.isFocused = function() { + return this.textInput.isFocused(); + }; + + /** + * + * Blurs the current `textInput`. + **/ + this.blur = function() { + this.textInput.blur(); + }; + + /** + * Emitted once the editor comes into focus. + * @event focus + * + * + **/ + this.onFocus = function() { + if (this.$isFocused) + return; + this.$isFocused = true; + this.renderer.visualizeFocus(); + this._emit("focus"); + }; + + /** + * Emitted once the editor has been blurred. + * @event blur + * + * + **/ + this.onBlur = function() { + if (!this.$isFocused) + return; + this.$isFocused = false; + this.renderer.visualizeBlur(); + this._emit("blur"); + }; + + this.onScrollTopChange = function() { + this.renderer.scrollToY(this.provider.getScrollTop()); + }; + + this.onScrollLeftChange = function() { + this.renderer.scrollToX(this.renderer.getScrollLeft()); + }; + + this.$onChangeClass = function() { + this.renderer.updateCaret(); + }; + + /** + * Emitted when the selection changes. + * + **/ + this.onCaretChange = function() { + this.$onChangeClass(); + + if (!this.$blockScrolling) + this.selectionChanged = true; + + this._emit("changeSelection"); + }; + + this.onSelectionChange = function(e) { + this.onCaretChange(); + }; + + this.execCommand = function(command, args) { + this.commands.exec(command, this, args); + }; + + this.onTextInput = function(text) { + this.keyBinding.onTextInput(text); + }; + + this.onCommandKey = function(e, hashId, keyCode) { + this.keyBinding.onCommandKey(e, hashId, keyCode); + }; + + this.insertSting = function(str) { + if (this.startFilter) + return this.startFilter(str); + + quickSearch(this, str); + }; + + this.setTheme = function(theme) { + this.renderer.setTheme(theme); + }; + + /** + * Returns an object indicating the currently selected rows. The object looks like this: + * + * ```json + * { first: range.start.row, last: range.end.row } + * ``` + * + * @returns {Object} + **/ + this.$getSelectedRows = function() { + var range = this.getSelectionRange().collapseRows(); + + return { + first: range.start.row, + last: range.end.row + }; + }; + + /** + * {:VirtualRenderer.getVisibleNodes} + * @param {Number} tolerance fraction of the node allowed to be hidden while node still considered visible (default 1/3) + * @returns {Array} + * @related VirtualRenderer.getVisibleNodes + **/ + this.getVisibleNodes = function(tolerance) { + return this.renderer.getVisibleNodes(tolerance); + }; + /** + * Indicates if the node is currently visible on the screen. + * @param {Object} node The node to check + * @param {Number} tolerance fraction of the node allowed to be hidden while node still considered visible (default 1/3) + * + * @returns {Boolean} + **/ + this.isNodeVisible = function(node, tolerance) { + return this.renderer.isNodeVisible(node, tolerance); + }; + + this.$moveByPage = function(dir, select) { + var renderer = this.renderer; + var config = this.renderer.layerConfig; + config.lineHeight = this.provider.rowHeight; + var rows = dir * Math.floor(config.height / config.lineHeight); + + this.$blockScrolling++; + this.selection.moveSelection(rows, select); + this.$blockScrolling--; + + var scrollTop = renderer.scrollTop; + + renderer.scrollBy(0, rows * config.lineHeight); + if (select != null) + renderer.scrollCaretIntoView(null, 0.5); + + renderer.animateScrolling(scrollTop); + }; + + /** + * Selects the text from the current position of the document until where a "page down" finishes. + **/ + this.selectPageDown = function() { + this.$moveByPage(1, true); + }; + + /** + * Selects the text from the current position of the document until where a "page up" finishes. + **/ + this.selectPageUp = function() { + this.$moveByPage(-1, true); + }; + + /** + * Shifts the document to wherever "page down" is, as well as moving the cursor position. + **/ + this.gotoPageDown = function() { + this.$moveByPage(1, false); + }; + + /** + * Shifts the document to wherever "page up" is, as well as moving the cursor position. + **/ + this.gotoPageUp = function() { + this.$moveByPage(-1, false); + }; + + /** + * Scrolls the document to wherever "page down" is, without changing the cursor position. + **/ + this.scrollPageDown = function() { + this.$moveByPage(1); + }; + + /** + * Scrolls the document to wherever "page up" is, without changing the cursor position. + **/ + this.scrollPageUp = function() { + this.$moveByPage(-1); + }; + + /** + * Scrolls to a row. If `center` is `true`, it puts the row in middle of screen (or attempts to). + * @param {Number} row The row to scroll to + * @param {Boolean} center If `true` + * @param {Boolean} animate If `true` animates scrolling + * @param {Function} callback Function to be called when the animation has finished + * + * + * @related VirtualRenderer.scrollToRow + **/ + this.scrollToRow = function(row, center, animate, callback) { + this.renderer.scrollToRow(row, center, animate, callback); + }; + + /** + * Attempts to center the current selection on the screen. + **/ + this.centerSelection = function() { + var range = this.getSelectionRange(); + var pos = { + row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), + column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2) + }; + this.renderer.alignCaret(pos, 0.5); + }; + + /** + * Gets the current position of the Caret. + * @returns {Object} An object that looks something like this: + * + * ```json + * { row: currRow, column: currCol } + * ``` + * + * @related Selection.getCursor + **/ + this.getCursorPosition = function() { + return this.selection.getCursor(); + }; + + /** + * Returns the screen position of the Caret. + * @returns {Number} + **/ + this.getCursorPositionScreen = function() { + return this.session.documentToScreenPosition(this.getCursorPosition()); + }; + + /** + * {:Selection.getRange} + * @returns {Range} + * @related Selection.getRange + **/ + this.getSelectionRange = function() { + return this.selection.getRange(); + }; + + + /** + * Selects all the text in editor. + * @related Selection.selectAll + **/ + this.selectAll = function() { + this.$blockScrolling += 1; + this.selection.selectAll(); + this.$blockScrolling -= 1; + }; + + /** + * {:Selection.clearSelection} + * @related Selection.clearSelection + **/ + this.clearSelection = function() { + this.selection.clearSelection(); + }; + + /** + * Moves the Caret to the specified row and column. Note that this does not de-select the current selection. + * @param {Number} row The new row number + * @param {Number} column The new column number + * + * + * @related Selection.moveCaretTo + **/ + this.moveCaretTo = function(row, column) { + this.selection.moveCaretTo(row, column); + }; + + /** + * Moves the Caret to the position indicated by `pos.row` and `pos.column`. + * @param {Object} pos An object with two properties, row and column + * + * + * @related Selection.moveCaretToPosition + **/ + this.moveCaretToPosition = function(pos) { + this.selection.moveCaretToPosition(pos); + }; + + /** + * Moves the Caret to the specified row number, and also into the indiciated column. + * @param {Number} rowNumber The row number to go to + * @param {Number} column A column number to go to + * @param {Boolean} animate If `true` animates scolling + * + **/ + this.gotoRow = function(rowNumber, column, animate) { + this.selection.clearSelection(); + + if (column === undefined) + column = this.selection.getCursor().column; + + this.$blockScrolling += 1; + this.moveCaretTo(rowNumber - 1, column || 0); + this.$blockScrolling -= 1; + + if (!this.isRowFullyVisible(rowNumber - 1)) + this.scrollToRow(rowNumber - 1, true, animate); + }; + + /** + * Moves the Caret to the specified row and column. Note that this does de-select the current selection. + * @param {Number} row The new row number + * @param {Number} column The new column number + * + * + * @related Editor.moveCaretTo + **/ + this.navigateTo = function(row, column) { + this.clearSelection(); + this.moveCaretTo(row, column); + }; + + /** + * Moves the Caret up in the document the specified number of times. Note that this does de-select the current selection. + * @param {Number} times The number of times to change navigation + * + * + **/ + this.navigateUp = function() { + var node = this.provider.navigate("up"); + node && this.selection.setSelection(node); + this.$scrollIntoView(); + }; + + /** + * Moves the Caret down in the document the specified number of times. Note that this does de-select the current selection. + * @param {Number} times The number of times to change navigation + * + * + **/ + this.navigateDown = function() { + var node = this.provider.navigate("down"); + node && this.selection.setSelection(node); + }; + + /** + * Moves the Caret left in the document the specified number of times. Note that this does de-select the current selection. + **/ + this.navigateLevelUp = function(toggleNode) { + var node = this.selection.getCursor(); + if (!node) { + // continue + } else if (toggleNode && this.provider.isOpen(node)) { + this.provider.close(node); + } else { + this.selection.setSelection(node.parent); + } + }; + + /** + * Moves the Caret right in the document the specified number of times. Note that this does de-select the current selection. + **/ + this.navigateLevelDown = function() { + var node = this.selection.getCursor(); + var hasChildren = this.provider.hasChildren(node); + if (!hasChildren || this.provider.isOpen(node)) + return this.selection.moveSelection(1); + + this.provider.open(node); + }; + + this.navigateStart = function() { + var node = this.getFirstNode(); + this.selection.setSelection(node); + }; + + this.navigateEnd = function() { + var node = this.getLastNode(); + this.selection.setSelection(node); + }; + this.getFirstNode = function() { + var index = this.provider.getMinIndex(); + return this.provider.getNodeAtIndex(index); + }; + this.getLastNode = function() { + var index = this.provider.getMaxIndex(); + return this.provider.getNodeAtIndex(index); + }; + + this.$scrollIntoView = function(node) { + this.renderer.scrollCaretIntoView(); + }; + + this.select = function(node) { + this.selection.setSelection(node); + }; + + this.getCopyText = function(node) { + return ""; + }; + this.onPaste = function(node) { + return ""; + }; + + this.reveal = function(node, animate) { + var provider = this.provider; + var parent = node.parent; + while (parent) { + if (!provider.isOpen(parent)) + provider.expand(parent); + parent = parent.parent; + } + + this.select(node); + var scrollTop = this.renderer.scrollTop; + this.renderer.scrollCaretIntoView(node, 0.5); + if (animate !== false) + this.renderer.animateScrolling(scrollTop); + }; + + /** + * {:UndoManager.undo} + * @related UndoManager.undo + **/ + this.undo = function() { + this.$blockScrolling++; + this.session.getUndoManager().undo(); + this.$blockScrolling--; + this.renderer.scrollCaretIntoView(null, 0.5); + }; + + /** + * {:UndoManager.redo} + * @related UndoManager.redo + **/ + this.redo = function() { + this.$blockScrolling++; + this.session.getUndoManager().redo(); + this.$blockScrolling--; + this.renderer.scrollCaretIntoView(null, 0.5); + }; + + /** + * Returns `true` if the editor is set to read-only mode. + * @returns {Boolean} + **/ + this.getReadOnly = function() { + return this.getOption("readOnly"); + }; + + /** + * + * Cleans up the entire editor. + **/ + this.destroy = function() { + this.renderer.destroy(); + this._emit("destroy", this); + }; + + this.setHorHeadingVisible = function(value){ + this.renderer.setHorHeadingVisible(value); + }; + + this.setVerHeadingVisible = function(value){ + this.renderer.setVerHeadingVisible(value); + }; + + this.enable = function() { + this.$disabled = false; + this.container.style.pointerEvents = ""; + this.container.style.opacity = ""; + }; + + this.disable = function() { + this.$disabled = true; + this.container.style.pointerEvents = "none"; + this.container.style.opacity = "0.9"; + if (this.isFocused()) + this.blur(); + }; + +}).call(Tree.prototype); + +config.defineOptions(Tree.prototype, "Tree", { + toggle: { + set: function(toggle) { + + }, + initialValue: false + }, + readOnly: { + set: function(readOnly) { + this.textInput.setReadOnly(readOnly); + }, + initialValue: false + }, + + animatedScroll: "renderer", + maxLines: "renderer", + minLines: "renderer", + + scrollSpeed: "$mouseHandler", + enableDragDrop: "$mouseHandler" +}); + +module.exports = Tree; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/undomanager.js b/plugins/node_modules/ace_tree/lib/ace_tree/undomanager.js new file mode 100644 index 00000000..b20bd7d8 --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/undomanager.js @@ -0,0 +1,135 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +define(function(require, exports, module) { +"use strict"; + +/** + * + * + * This object maintains the undo stack for a Pivot Table. + * @class UndoManager + **/ + +/** + * + * + * Resets the current undo state and creates a new `UndoManager`. + * + * @constructor + **/ +var UndoManager = function() { + this.reset(); +}; + +(function() { + + /** + * Provides a means for implementing your own undo manager. `options` has one property, `args`, an [[Array `Array`]], with two elements: + * + * - `args[0]` is an array of deltas + * - `args[1]` is the document to associate with + * + * @param {Object} options Contains additional properties + * + **/ + this.execute = function(options) { + var deltas = options.args[0]; + this.$doc = options.args[1]; + this.$undoStack.push(deltas); + this.$redoStack = []; + }; + + /** + * [Perform an undo operation on the document, reverting the last change.]{: #UndoManager.undo} + * @param {Boolean} dontSelect + * + * + * @returns {Range} The range of the undo. + **/ + this.undo = function(dontSelect) { + var deltas = this.$undoStack.pop(); + var undoSelectionRange = null; + if (deltas) { + undoSelectionRange = + this.$doc.undoChanges(deltas, dontSelect); + this.$redoStack.push(deltas); + } + return undoSelectionRange; + }; + + /** + * [Perform a redo operation on the document, reimplementing the last change.]{: #UndoManager.redo} + * @param {Boolean} dontSelect + * + * + **/ + this.redo = function(dontSelect) { + var deltas = this.$redoStack.pop(); + var redoSelectionRange = null; + if (deltas) { + redoSelectionRange = + this.$doc.redoChanges(deltas, dontSelect); + this.$undoStack.push(deltas); + } + return redoSelectionRange; + }; + + /** + * + * Destroys the stack of undo and redo redo operations. + **/ + this.reset = function() { + this.$undoStack = []; + this.$redoStack = []; + }; + + /** + * + * Returns `true` if there are undo operations left to perform. + * @returns {Boolean} + **/ + this.hasUndo = function() { + return this.$undoStack.length > 0; + }; + + /** + * + * Returns `true` if there are redo operations left to perform. + * @returns {Boolean} + **/ + this.hasRedo = function() { + return this.$redoStack.length > 0; + }; + +}).call(UndoManager.prototype); + +exports.UndoManager = UndoManager; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/virtual_renderer.js b/plugins/node_modules/ace_tree/lib/ace_tree/virtual_renderer.js new file mode 100644 index 00000000..fb683b4e --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/virtual_renderer.js @@ -0,0 +1,1204 @@ +define(function(require, exports, module) { +"use strict"; + +var oop = require("ace/lib/oop"); +var dom = require("ace/lib/dom"); +var config = require("./config"); + +var CellLayer = require("./layer/cells").Cells; +var MarkerLayer = require("./layer/markers").Selection; +var HeaderLayer = require("./layer/heading").ColumnHeader; + +var ScrollBarH = require("ace/scrollbar").ScrollBarH; +var ScrollBarV = require("ace/scrollbar").ScrollBarV; +var RenderLoop = require("ace/renderloop").RenderLoop; +var EventEmitter = require("ace/lib/event_emitter").EventEmitter; +var pivotCss = require("ace/requirejs/text!./css/tree.css"); + +dom.importCssString(pivotCss, "ace_tree"); + +var defaultTheme = require("./css/light_theme"); +/** + * The class that is responsible for drawing everything you see on the screen! + * @class VirtualRenderer + **/ + +/** + * Constructs a new `VirtualRenderer` within the `container` specified, applying the given `theme`. + * @param {DOMElement} container The root element of the editor + * @param {Number} cellWidth The default width of a cell in pixels + * @param {Number} cellHeight The default height of a cell in pixels + * + * @constructor + **/ + +var VirtualRenderer = function(container, cellWidth, cellHeight) { + var _self = this; + + this.container = container || dom.createElement("div"); + + dom.addCssClass(this.container, "ace_tree"); + dom.addCssClass(this.container, "ace_tree"); + + this.setTheme(this.$theme); + this.scroller = dom.createElement("div"); + this.scroller.className = "ace_tree_scroller"; + this.container.appendChild(this.scroller); + + this.cells = dom.createElement("div"); + this.cells.className = "ace_tree_cells"; + this.scroller.appendChild(this.cells); + + this.$headingLayer = new HeaderLayer(this.container, this); + this.$markerLayer = new MarkerLayer(this.cells, this); + + this.$cellLayer = new CellLayer(this.cells); + this.canvas = this.$cellLayer.element; + + // Indicates whether the horizontal scrollbarscrollbar is visible + this.$horizScroll = false; + + this.scrollBarV = new ScrollBarV(this.container, this); + this.scrollBarV.setVisible(true); + this.scrollBarV.addEventListener("scroll", function(e) { + if (!_self.$inScrollAnimation) + _self.setScrollTop(e.data - _self.scrollMargin.top); + }); + + this.scrollBarH = new ScrollBarH(this.container, this); + this.scrollBarH.addEventListener("scroll", function(e) { + if (!_self.$inScrollAnimation) + _self.setScrollLeft(e.data); + }); + + this.scrollTop = 0; + this.scrollLeft = 0; + + this.caretPos = { + row : 0, + column : 0 + }; + + this.$size = { + width: 0, + height: 0, + scrollerHeight: 0, + scrollerWidth: 0, + headingHeight: 0 + }; + + this.layerConfig = { + width : 1, + padding : 0, + firstRow : 0, + firstRowScreen: 0, + lastRow : 0, + lineHeight : 1, + characterWidth : 1, + minHeight : 1, + maxHeight : 1, + offset : 0, + height : 1 + }; + + this.scrollMargin = { + left: 0, + right: 0, + top: 0, + bottom: 0, + v: 0, + h: 0 + }; + + this.$scrollIntoView = null; + + this.$loop = new RenderLoop( + this.$renderChanges.bind(this), + this.container.ownerDocument.defaultView + ); + this.$loop.schedule(this.CHANGE_FULL); + this.setTheme(defaultTheme); + + this.$windowFocus = this.$windowFocus.bind(this); + window.addEventListener("focus", this.$windowFocus); +}; + +(function() { + this.CHANGE_SCROLL = 1; + this.CHANGE_COLUMN = 2; + this.CHANGE_ROW = 4; + this.CHANGE_CELLS = 8; + this.CHANGE_SIZE = 16; + this.CHANGE_CLASS = 32; + this.CHANGE_MARKER = 64; + this.CHANGE_FULL = 128; + + this.CHANGE_H_SCROLL = 1024; + + oop.implement(this, EventEmitter); + + /** + * + * Associates the renderer with an DataProvider. + **/ + this.setDataProvider = function(provider) { + this.provider = provider; + this.model = provider; + + if (this.scrollMargin.top && provider && provider.getScrollTop() <= 0) + provider.setScrollTop(-this.scrollMargin.top); + + this.scroller.className = "ace_tree_scroller"; + + this.$cellLayer.setDataProvider(provider); + this.$markerLayer.setDataProvider(provider); + this.$headingLayer.setDataProvider(provider); + + this.$size.headingHeight = provider && provider.columns + ? provider.headerHeight || provider.rowHeight + : 0; + + this.$loop.schedule(this.CHANGE_FULL); + }; + + /** + * Triggers a partial update of the text, from the range given by the two parameters. + * @param {Number} firstRow The first row to update + * @param {Number} lastRow The last row to update + * + * + **/ + this.updateRows = function(firstRow, lastRow) { + if (lastRow === undefined) + lastRow = Infinity; + + if (!this.$changedLines) { + this.$changedLines = { + firstRow: firstRow, + lastRow: lastRow + }; + } + else { + if (this.$changedLines.firstRow > firstRow) + this.$changedLines.firstRow = firstRow; + + if (this.$changedLines.lastRow < lastRow) + this.$changedLines.lastRow = lastRow; + } + + if (this.$changedLines.firstRow > this.layerConfig.lastRow || + this.$changedLines.lastRow < this.layerConfig.firstRow) + return; + this.$loop.schedule(this.CHANGE_ROW); + }; + + this.updateCaret = function() { + this.$loop.schedule(this.CHANGE_CLASS); + }; + + /** + * Triggers a full update of the text, for all the rows. + **/ + this.updateCells = function() { + this.$loop.schedule(this.CHANGE_CELLS); + }; + + /** + * Triggers a full update of all the layers, for all the rows. + * @param {Boolean} force If `true`, forces the changes through + * + * + **/ + this.updateFull = function(force) { + if (force) + this.$renderChanges(this.CHANGE_FULL, true); + else + this.$loop.schedule(this.CHANGE_FULL); + }; + + this.updateHorizontalHeadings = function(){ + this.$loop.schedule(this.CHANGE_COLUMN); + }; + + this.updateVerticalHeadings = function(){ + this.$loop.schedule(this.CHANGE_ROW); + }; + + + this.$changes = 0; + /** + * [Triggers a resize of the editor.]{: #VirtualRenderer.onResize} + * @param {Boolean} force If `true`, recomputes the size, even if the height and width haven't changed + * @param {Number} width The width of the editor in pixels + * @param {Number} height The hiehgt of the editor, in pixels + * + * + **/ + this.onResize = function(force, width, height) { + if (this.resizing > 2) + return; + else if (this.resizing > 0) + this.resizing++; + else + this.resizing = force ? 1 : 0; + // `|| el.scrollHeight` is required for outosizing editors on ie + // where elements with clientHeight = 0 alsoe have clientWidth = 0 + var el = this.container; + if (!height) + height = el.clientHeight || el.scrollHeight; + if (!width) + width = el.clientWidth || el.scrollWidth; + var changes = this.$updateCachedSize(force, width, height); + + if (!this.$size.scrollerHeight || (!width && !height)) + return this.resizing = 0; + + if (force) + this.$renderChanges(changes, true); + else + this.$loop.schedule(changes | this.$changes); + + if (this.resizing) + this.resizing = 0; + }; + + this.$windowFocus = function(){ + this.onResize(); + }; + + this.$updateCachedSize = function(force, width, height) { + var changes = 0; + var size = this.$size; + var provider = this.provider; + if (provider) { + var headingHeight = provider.columns + ? provider.headerHeight || provider.rowHeight + : 0; + if (headingHeight != size.headingHeight) { + size.headingHeight = headingHeight; + changes |= this.CHANGE_SIZE; + } + } + + if (height && (force || size.height != height)) { + size.height = height; + changes |= this.CHANGE_SIZE; + + size.scrollerHeight = size.height; + if (this.$horizScroll) + size.scrollerHeight -= this.scrollBarH.getHeight(); + + //if (this.heading) { + size.scrollerHeight -= size.headingHeight; + // } + + this.$headingLayer.element.style.height = + this.scroller.style.top = + this.scrollBarV.element.style.top = size.headingHeight + "px"; + // this.scrollBarV.setHeight(size.scrollerHeight); + this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; + + if (provider && provider.setScrollTop) { + // provider.setScrollTop(this.getScrollTop()); + changes |= this.CHANGE_SCROLL; + } + + if (this.$scrollIntoView) + if (this.$scrollIntoView.model == this.model) { + this.scrollCaretIntoView(this.$scrollIntoView.caret, this.$scrollIntoView.offset); + this.$scrollIntoView = null; + } + } + + if (width && (force || size.width != width)) { + changes |= this.CHANGE_SIZE; + size.width = width; + + this.scrollBarH.element.style.left = + this.scroller.style.left = 0 + "px"; + size.scrollerWidth = Math.max(0, width - this.scrollBarV.getWidth()); + + this.$headingLayer.element.style.right = + this.scrollBarH.element.style.right = + this.scroller.style.right = this.scrollBarV.getWidth() + "px"; + this.scroller.style.bottom = this.scrollBarH.getHeight() + "px"; + + // this.scrollBarH.element.style.setWidth(size.scrollerWidth); + + this.$headingLayer.updateWidth(size.scrollerWidth); + + if (provider && provider.columns) + changes |= this.CHANGE_FULL; + } + + if (changes) + this._signal("resize"); + + return changes; + }; + + this.setVerHeadingVisible = function(value){ + this.$treeLayer.visible = value; + if (this.layerConfig.vRange && this.layerConfig.hRange) { + this.$renderChanges(this.CHANGE_FULL, true); + this.onResize(true); + } + }; + + /** + * + * Returns the root element containing this renderer. + * @returns {DOMElement} + **/ + this.getContainerElement = function() { + return this.container; + }; + + /** + * + * Returns the element that the mouse events are attached to + * @returns {DOMElement} + **/ + this.getMouseEventTarget = function() { + return this.scroller; + }; + /** + * [Returns array of nodes currently visible on the screen]{: #VirtualRenderer.getVisibleNodes} + * @param {Object} node Tree node + * @param {Number} tolerance fraction of the node allowed to be hidden while node still considered visible (default 1/3) + * @returns {Array} + **/ + this.getVisibleNodes = function(tolerance) { + var nodes = this.layerConfig.vRange; + var first = 0; + var last = nodes.length - 1; + while (this.isNodeVisible(nodes[first], tolerance) && first < last) + first++; + while (!this.isNodeVisible(nodes[last], tolerance) && last > first) + last--; + return nodes.slice(first, last + 1); + }; + /** + * [Indicates if the node is currently visible on the screen]{: #VirtualRenderer.isNodeVisible} + * @param {Object} node Tree node + * @param {Number} tolerance fraction of the node allowed to be hidden while node still considered visible (default 1/3) + * @returns {Boolean} + **/ + this.isNodeVisible = function(node, tolerance) { + var layerConfig = this.layerConfig; + if (!layerConfig.vRange) return; + var provider = this.provider; + var i = layerConfig.vRange.indexOf(node); + + if (i == -1) return false; + var nodePos = provider.getNodePosition(node); + + var top = nodePos.top; + var height = nodePos.height; + if (tolerance === undefined) + tolerance = 1 / 3; + if (this.scrollTop > top + tolerance * height) + return false; + if (this.scrollTop + this.$size.scrollerHeight <= top + (1 - tolerance) * height) + return false; + return true; + }; + + this.$updateScrollBar = function() { + // todo separate event for h v scroll + this.$updateScrollBarH(); + this.$updateScrollBarV(); + }; + + this.setScrollMargin = function(top, bottom, left, right) { + var sm = this.scrollMargin; + sm.top = top|0; + sm.bottom = bottom|0; + sm.right = right|0; + sm.left = left|0; + sm.v = sm.top + sm.bottom; + sm.h = sm.left + sm.right; + if (sm.top && this.scrollTop <= 0 && this.provider) + this.provider.setScrollTop(-sm.top); + this.updateFull(); + }; + this.$updateScrollBarV = function() { + this.scrollBarV.setInnerHeight(this.layerConfig.maxHeight + this.scrollMargin.v); + this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); + }; + this.$updateScrollBarH = function() { + this.scrollBarH.setInnerWidth(this.layerConfig.maxWidth + this.scrollMargin.h); + this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); + }; + + this.$frozen = false; + this.freeze = function() { + this.$frozen = true; + }; + + this.unfreeze = function() { + this.$frozen = false; + }; + + this.$renderChanges = function(changes, force) { + if (this.$changes) { + changes |= this.$changes; + this.$changes = 0; + } + if ((!this.provider || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { + this.$changes |= changes; + return; + } + if (!this.$size.width) { + this.$changes |= changes; + return this.onResize(true); + } + + // this.$logChanges(changes); + + this._signal("beforeRender"); + var config = this.layerConfig; + // text, scrolling and resize changes can cause the view port size to change + if (changes & this.CHANGE_FULL || + changes & this.CHANGE_SIZE || + changes & this.CHANGE_SCROLL || + changes & this.CHANGE_H_SCROLL || + changes & this.CHANGE_COLUMN || + changes & this.CHANGE_ROW || + changes & this.CHANGE_CELLS + ) { + changes |=this.$computeLayerConfig(); + + config = this.layerConfig; + // update scrollbar first to not lose scroll position when gutter calls resize + this.$updateScrollBar(); + this.cells.style.marginTop = -config.vOffset + "px"; + this.cells.style.marginLeft = -config.hOffset + "px"; + this.cells.style.width = config.width + "px"; + this.cells.style.height = config.height + config.rowHeight + "px"; + } + // full + if (changes & this.CHANGE_FULL) { + this.$headingLayer.update(this.layerConfig); + this.$cellLayer.update(this.layerConfig); + this.$markerLayer.update(this.layerConfig); + this._signal("afterRender"); + return; + } + + // scrolling + if (changes & this.CHANGE_SCROLL) { + if (changes & this.CHANGE_ROW || + changes & this.CHANGE_COLUMN || + changes & this.CHANGE_CELLS + ) { + this.$headingLayer.update(this.layerConfig); + this.$cellLayer.update(this.layerConfig); + } + else { + this.$headingLayer.update(this.layerConfig); + this.$cellLayer.scroll(this.layerConfig); + } + + this.$markerLayer.update(this.layerConfig); + this.$updateScrollBar(); + this._signal("afterRender"); + return; + } + + if (changes & this.CHANGE_CLASS) + this.$cellLayer.updateClasses(this.layerConfig); + + if (changes & this.CHANGE_MARKER || changes & this.CHANGE_CELLS) + this.$markerLayer.update(this.layerConfig); + + // if (changes & this.CHANGE_ROW) + // this.$treeLayer.update(this.layerConfig); + // this.$updateRows(); + //@todo analog to updateRows? + if (changes & this.CHANGE_COLUMN) + this.$horHeadingLayer.update(this.layerConfig); + if (changes & this.CHANGE_CELLS) + this.$cellLayer.update(this.layerConfig); + + if (changes & this.CHANGE_SIZE) + this.$updateScrollBar(); + + this._signal("afterRender"); + + if (this.$scrollIntoView) + this.$scrollIntoView = null; + }; + + + this.$autosize = function() { + var headingHeight = this.$size.headingHeight; + var height = this.provider.getTotalHeight() + headingHeight; + var maxHeight = this.getMaxHeight + ? this.getMaxHeight() + : this.$maxLines * this.provider.rowHeight + headingHeight; + var desiredHeight = Math.max( + (this.$minLines || 1) * this.provider.rowHeight + headingHeight, + Math.min(maxHeight, height) + ) + this.scrollMargin.v; + var vScroll = height > maxHeight; + + if (desiredHeight != this.desiredHeight || + this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { + if (vScroll != this.$vScroll) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } + + var w = this.container.clientWidth; + this.container.style.height = desiredHeight + "px"; + this.$updateCachedSize(true, w, desiredHeight); + // this.$loop.changes = 0; + this.desiredHeight = desiredHeight; + this._signal("autoresize"); + } + }; + + this.$computeLayerConfig = function() { + if (this.$maxLines) + this.$autosize(); + + var provider = this.provider; + var vertical = this.$treeLayer; + var horizontal = this.$horHeadingLayer; + + var minHeight = this.$size.scrollerHeight; + var maxHeight = provider.getTotalHeight(); + + var minWidth = this.$size.scrollerWidth; + var maxWidth = 0 //horizontal.size; + + var hideScrollbars = this.$size.height <= 2 * 10; + var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || + this.$size.scrollerWidth - maxWidth < 0); + + var hScrollChanged = this.$horizScroll !== horizScroll; + if (hScrollChanged) { + this.$horizScroll = horizScroll; + this.scrollBarH.setVisible(horizScroll); + } + + var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || + this.$size.scrollerHeight - maxHeight < 0); + var vScrollChanged = this.$vScroll !== vScroll; + if (vScrollChanged) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } + + this.provider.setScrollTop(Math.max(-this.scrollMargin.top, + Math.min(this.scrollTop, maxHeight - this.$size.scrollerHeight + this.scrollMargin.bottom))); + + this.provider.setScrollLeft(Math.max(-this.scrollMargin.left, Math.min(this.scrollLeft, + maxWidth - this.$size.scrollerWidth + this.scrollMargin.right))); + + + if (this.provider.getScrollTop() != this.scrollTop) + this.scrollTop = this.provider.getScrollTop(); + + var top = Math.max(this.scrollTop, 0); + var vRange = provider.getRange(top, top + this.$size.height); + var hRange = { size: 0 };// horizontal.getRange(this.scrollLeft, this.scrollLeft + this.$size.width); + + + var vOffset = this.scrollTop - vRange.size; + var hOffset = this.scrollLeft - hRange.size; + + var rowCount = vRange.length; + var firstRow = vRange.count; + var lastRow = firstRow + rowCount - 1; + + var colCount = hRange.length; + var firstCol = hRange.count; + var lastCol = firstCol + colCount - 1; + + if (this.layerConfig) + this.layerConfig.discard = true; + + var changes = 0; + // Horizontal scrollbar visibility may have changed, which changes + // the client height of the scroller + if (hScrollChanged || vScrollChanged) { + changes = this.$updateCachedSize(true, this.$size.width, this.$size.height); + this._signal("scrollbarVisibilityChanged"); + //if (vScrollChanged) + // longestLine = this.$getLongestLine(); + } + + this.layerConfig = { + vRange : vRange, + hRange : hRange, + width : minWidth, + height : minHeight, + firstRow : firstRow, + lastRow : lastRow, + firstCol : firstCol, + lastCol : lastCol, + minHeight : minHeight, + maxHeight : maxHeight, + minWidth : minWidth, + maxWidth : maxWidth, + vOffset : vOffset, + hOffset : hOffset, + rowHeight: provider.rowHeight + }; + + var config = this.layerConfig, renderer = this; + if (vRange) { + config.view = provider.getDataRange( + {start: vRange.count, length: vRange.length}, + {start: hRange.count, length: hRange.length}, + function(err, view, update){ + if (err) return false; //@todo + config.view = view; + + if (update) + renderer.$loop.schedule(renderer.CHANGE_CELLS); + }); + } + + // For debugging. + // console.log(JSON.stringify(this.layerConfig)); + + return changes; + }; + + this.$updateRows = function() { + var firstRow = this.$changedLines.firstRow; + var lastRow = this.$changedLines.lastRow; + this.$changedLines = null; + + var layerConfig = this.layerConfig; + + if (firstRow > layerConfig.lastRow + 1) { return; } + if (lastRow < layerConfig.firstRow) { return; } + + // if the last row is unknown -> redraw everything + if (lastRow === Infinity) { + this.$cellLayer.update(layerConfig); + return; + } + + // else update only the changed rows + this.$cellLayer.updateRows(layerConfig, firstRow, lastRow); + return true; + }; + + this.scrollSelectionIntoView = function(anchor, lead, offset) { + // first scroll anchor into view then scroll lead into view + this.scrollCaretIntoView(anchor, offset); + this.scrollCaretIntoView(lead, offset); + }; + + /** + * + * Scrolls the Caret into the first visible area of the editor + **/ + this.scrollCaretIntoView = function(caret, offset) { + this.$scrollIntoView = { + caret: caret, + offset: offset, + scrollTop: this.scrollTop, + model: this.model, + height: this.$size.scrollerHeight + }; + + // the editor is not visible + if (this.$size.scrollerHeight === 0) + return; + + var provider = this.provider; + var node = caret || provider.selection.getCursor(); + if (!node) + return; + + var nodePos = provider.getNodePosition(node); + + var top = nodePos.top; + var height = nodePos.height; + var left = 0; + var width = 0; + + if (this.scrollTop > top) { + if (offset) + top -= offset * this.$size.scrollerHeight; + if (top === 0) + top = -this.scrollMargin.top; + this.provider.setScrollTop(top); + } else if (this.scrollTop + this.$size.scrollerHeight < top + height) { + if (offset) + top += offset * this.$size.scrollerHeight; + this.provider.setScrollTop(top + height - this.$size.scrollerHeight); + } + + var scrollLeft = this.scrollLeft; + + if (scrollLeft > left) { + if (left < 0) + left = 0; + this.provider.setScrollLeft(left); + } else if (scrollLeft + this.$size.scrollerWidth < left + width) { + this.provider.setScrollLeft(Math.round(left + width - this.$size.scrollerWidth)); + } + + this.$scrollIntoView.scrollTop = this.scrollTop; + }; + + /** + * @returns {Number} + **/ + this.getScrollTop = function() { + return this.scrollTop; + }; + + /** + * @returns {Number} + **/ + this.getScrollLeft = function() { + return this.scrollLeft; + }; + + /** + * This function sets the scroll top value. It also emits the `'changeScrollTop'` event. + * @param {Number} scrollTop The new scroll top value + * + **/ + this.setScrollTop = function(scrollTop) { + scrollTop = Math.round(scrollTop); + if (this.scrollTop === scrollTop || isNaN(scrollTop)) + return; + + this.scrollToY(scrollTop); + }; + + /** + * This function sets the scroll top value. It also emits the `'changeScrollLeft'` event. + * @param {Number} scrollLeft The new scroll left value + * + **/ + this.setScrollLeft = function(scrollLeft) { + scrollLeft = Math.round(scrollLeft); + if (this.scrollLeft === scrollLeft || isNaN(scrollLeft)) + return; + + this.scrollToX(scrollLeft); + }; + + /** + * + * Returns the first visible row, regardless of whether it's fully visible or not. + * @returns {Number} + **/ + this.getScrollTopRow = function() { + return this.layerConfig.firstRow; + }; + + /** + * + * Returns the last visible row, regardless of whether it's fully visible or not. + * @returns {Number} + **/ + this.getScrollBottomRow = function() { + return this.layerConfig.lastRow; + //return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); + }; + + this.alignCaret = function(cursor, alignment) { + if (typeof cursor == "number") + cursor = {row: cursor, column: 0}; + + var node = this.provider.findNodeByIndex(cursor.row); + var pos = this.provider.findSizeAtIndex(cursor.row); + var h = this.$size.scrollerHeight; + var offset = pos - ((h - node.size) * (alignment || 0)); + + this.setScrollTop(offset); + return offset; + }; + + this.STEPS = 8; + this.$calcSteps = function(fromValue, toValue){ + var i = 0; + var l = this.STEPS; + var steps = []; + + var func = function(t, x_min, dx) { + return dx * (Math.pow(t - 1, 3) + 1) + x_min; + }; + + for (i = 0; i < l; ++i) + steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); + + return steps; + }; + + /** + * Gracefully scrolls the editor to the row indicated. + * @param {Number} line A line number + * @param {Boolean} center If `true`, centers the editor the to indicated line + * @param {Boolean} animate If `true` animates scrolling + * @param {Function} callback Function to be called after the animation has finished + * + * + **/ + this.scrollToRow = function(row, center, animate, callback) { + var node = this.provider.findNodeByIndex(row); + var offset = this.provider.findSizeAtIndex(row); + if (center) + offset -= (this.$size.scrollerHeight - node.size) / 2; + + var initialScroll = this.scrollTop; + this.setScrollTop(offset); + if (animate !== false) + this.animateScrolling(initialScroll, callback); + }; + + this.animateScrolling = function(fromValue, callback) { + var toValue = this.scrollTop; + if (!this.$animatedScroll) + return; + var _self = this; + + if (fromValue == toValue) + return; + + if (this.$scrollAnimation) { + var oldSteps = this.$scrollAnimation.steps; + if (oldSteps.length) { + fromValue = oldSteps[0]; + if (fromValue == toValue) + return; + } + } + + var steps = _self.$calcSteps(fromValue, toValue); + this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps}; + + clearInterval(this.$timer); + + _self.provider.setScrollTop(steps.shift()); + // trick provider to think it's already scrolled to not loose toValue + _self.provider.$scrollTop = toValue; + this.$timer = setInterval(function() { + if (steps.length) { + _self.provider.setScrollTop(steps.shift()); + _self.provider.$scrollTop = toValue; + } else if (toValue != null) { + _self.provider.$scrollTop = -1; + _self.provider.setScrollTop(toValue); + toValue = null; + } else { + // do this on separate step to not get spurious scroll event from scrollbar + _self.$timer = clearInterval(_self.$timer); + _self.$scrollAnimation = null; + callback && callback(); + } + }, 10); + }; + + /** + * Scrolls the editor to the y pixel indicated. + * @param {Number} scrollTop The position to scroll to + * + * + * @returns {Number} + **/ + this.scrollToY = function(scrollTop) { + // after calling scrollBar.setScrollTop + // scrollbar sends us event with same scrollTop. ignore it + if (this.scrollTop !== scrollTop) { + this.$loop.schedule(this.CHANGE_SCROLL); + this.scrollTop = scrollTop; + } + }; + + /** + * Scrolls the editor across the x-axis to the pixel indicated. + * @param {Number} scrollLeft The position to scroll to + * + * + * @returns {Number} + **/ + this.scrollToX = function(scrollLeft) { + if (scrollLeft < 0) + scrollLeft = 0; + + if (this.scrollLeft !== scrollLeft) { + this.$loop.schedule(this.CHANGE_SCROLL); + this.scrollLeft = scrollLeft; + } + }; + + /** + * Scrolls the editor across both x- and y-axes. + * @param {Number} deltaX The x value to scroll by + * @param {Number} deltaY The y value to scroll by + * + * + **/ + this.scrollBy = function(deltaX, deltaY) { + deltaY && this.provider.setScrollTop(this.provider.getScrollTop() + deltaY); + deltaX && this.provider.setScrollLeft(this.provider.getScrollLeft() + deltaX); + }; + + /** + * Returns `true` if you can still scroll by either parameter; in other words, you haven't reached the end of the file or line. + * @param {Number} deltaX The x value to scroll by + * @param {Number} deltaY The y value to scroll by + * + * + * @returns {Boolean} + **/ + this.isScrollableBy = function(deltaX, deltaY) { + if (deltaY < 0 && this.getScrollTop() >= 1 - this.scrollMargin.top) + return true; + if (deltaY > 0 && this.getScrollTop() + this.$size.scrollerHeight - this.layerConfig.maxHeight + < -1 + this.scrollMargin.bottom) + return true; + if (deltaX < 0 && this.getScrollLeft() >= 1) + return true; + if (deltaX > 0 && this.getScrollLeft() + this.$size.scrollerWidth - this.layerConfig.maxWidth < -1) + return true; + }; + + // @todo this code can be compressed + this.screenToTextCoordinates = function(x, y) { + var canvasPos = this.scroller.getBoundingClientRect(); + y -= canvasPos.top; + x -= canvasPos.left; + + return { + x : x + this.scrollLeft, + y : y + this.scrollTop + }; + }; + + /** + * Returns an object containing the `pageX` and `pageY` coordinates of the document position. + * @param {Number} row The document row position + * @param {Number} column The document column position + * + * + * + * @returns {Object} + **/ + this.textToScreenCoordinates = function(row, column) { + throw new Error(); + + }; + + this.findNodeAt = function(x, y, coords) { + + }; + + this.$moveTextAreaToCursor = function(){}; + + /** + * + * Focuses the current container. + **/ + this.visualizeFocus = function() { + dom.addCssClass(this.container, "ace_tree_focus"); + }; + + /** + * + * Blurs the current container. + **/ + this.visualizeBlur = function() { + dom.removeCssClass(this.container, "ace_tree_focus"); + }; + + /** + * [Sets a new theme for the editor. `theme` should exist, and be a directory path, like `ace/theme/textmate`.]{: #VirtualRenderer.setTheme} + * @param {String} theme The path to a theme + * @param {Function} cb optional callback + * + **/ + this.setTheme = function(theme, cb) { + var _self = this; + this.$themeValue = theme; + _self._dispatchEvent('themeChange',{theme:theme}); + + if (!theme || typeof theme == "string") { + var moduleName = theme || "ace/theme/textmate"; + config.loadModule(["theme", moduleName], afterLoad); + } else { + afterLoad(theme); + } + + function afterLoad(module) { + if (_self.$themeValue != theme) + return cb && cb(); + if (!module.cssClass) + return; + dom.importCssString( + module.cssText, + module.cssClass, + _self.container.ownerDocument + ); + + if (_self.theme) + dom.removeCssClass(_self.container, _self.theme.cssClass); + + // this is kept only for backwards compatibility + _self.$theme = module.cssClass; + + _self.theme = module; + dom.addCssClass(_self.container, module.cssClass); + dom.setCssClass(_self.container, "ace_dark", module.isDark); + + var padding = module.padding || 4; + if (_self.$padding && padding != _self.$padding) + _self.setPadding(padding); + + // force re-measure of the gutter width + if (_self.$size) { + _self.$size.width = 0; + _self.onResize(); + } + + _self._dispatchEvent('themeLoaded', {theme:module}); + cb && cb(); + } + }; + + /** + * [Returns the path of the current theme.]{: #VirtualRenderer.getTheme} + * @returns {String} + **/ + this.getTheme = function() { + return this.$themeValue; + }; + + // Methods allows to add / remove CSS classnames to the editor element. + // This feature can be used by plug-ins to provide a visual indication of + // a certain mode that editor is in. + + /** + * [Adds a new class, `style`, to the editor.]{: #VirtualRenderer.setStyle} + * @param {String} style A class name + * + * + **/ + this.setStyle = function setStyle(style, include) { + dom.setCssClass(this.container, style, include !== false); + }; + + /** + * [Removes the class `style` from the editor.]{: #VirtualRenderer.unsetStyle} + * @param {String} style A class name + * + * + **/ + this.unsetStyle = function unsetStyle(style) { + dom.removeCssClass(this.container, style); + }; + + /** + * + * Destroys the text and Caret layers for this renderer. + **/ + this.destroy = function() { + window.removeEventListener("focus", this.$windowFocus); + + this.$cellLayer.destroy(); + }; + +}).call(VirtualRenderer.prototype); + +config.defineOptions(VirtualRenderer.prototype, "renderer", { + animatedScroll: {initialValue: true}, + showInvisibles: { + set: function(value) { + if (this.$cellLayer.setShowInvisibles(value)) + this.$loop.schedule(this.CHANGE_TEXT); + }, + initialValue: false + }, + showPrintMargin: { + set: function() { this.$updatePrintMargin(); }, + initialValue: true + }, + printMarginColumn: { + set: function() { this.$updatePrintMargin(); }, + initialValue: 80 + }, + printMargin: { + set: function(val) { + if (typeof val == "number") + this.$printMarginColumn = val; + this.$showPrintMargin = !!val; + this.$updatePrintMargin(); + }, + get: function() { + return this.$showPrintMargin && this.$printMarginColumn; + } + }, + displayIndentGuides: { + set: function(show) { + if (this.$cellLayer.setDisplayIndentGuides(show)) + this.$loop.schedule(this.CHANGE_TEXT); + }, + initialValue: true + }, + hScrollBarAlwaysVisible: { + set: function(alwaysVisible) { + this.$hScrollBarAlwaysVisible = alwaysVisible; + if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: false + }, + vScrollBarAlwaysVisible: { + set: function(val) { + if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: false + }, + fontSize: { + set: function(size) { + if (typeof size == "number") + size = size + "px"; + this.container.style.fontSize = size; + this.updateFontSize(); + }, + initialValue: 12 + }, + fontFamily: { + set: function(name) { + this.container.style.fontFamily = name; + this.updateFontSize(); + } + }, + maxLines: { + set: function(val) { + this.updateFull(); + } + }, + minLines: { + set: function(val) { + this.updateFull(); + } + }, + scrollPastEnd: { + set: function(val) { + val = +val || 0; + if (this.$scrollPastEnd == val) + return; + this.$scrollPastEnd = val; + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: 0, + handlesSet: true + } +}); + +exports.VirtualRenderer = VirtualRenderer; +}); diff --git a/plugins/node_modules/ace_tree/lib/ace_tree/virtual_renderer_test.js b/plugins/node_modules/ace_tree/lib/ace_tree/virtual_renderer_test.js new file mode 100644 index 00000000..e8a8fcbd --- /dev/null +++ b/plugins/node_modules/ace_tree/lib/ace_tree/virtual_renderer_test.js @@ -0,0 +1,86 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +if (typeof process !== "undefined") { + require("amd-loader"); + require("./test/mockdom"); +} + +define(function(require, exports, module) { +"use strict"; + +var EditSession = require("./edit_session").EditSession; +var VirtualRenderer = require("./virtual_renderer").VirtualRenderer; +var assert = require("./test/assertions"); + +module.exports = { + "test: screen2text the column should be rounded to the next character edge" : function() { + var el = document.createElement("div"); + + if (!el.getBoundingClientRect) { + console.log("Skipping test: This test only runs in the browser"); + return; + } + + el.style.left = "20px"; + el.style.top = "30px"; + el.style.width = "300px"; + el.style.height = "100px"; + document.body.appendChild(el); + + var renderer = new VirtualRenderer(el); + renderer.setPadding(0); + renderer.setSession(new EditSession("1234")); + + var r = renderer.scroller.getBoundingClientRect(); + function testPixelToText(x, y, row, column) { + assert.position(renderer.screenToTextCoordinates(x+r.left, y+r.top), row, column); + } + + renderer.characterWidth = 10; + renderer.lineHeight = 15; + + testPixelToText(4, 0, 0, 0); + testPixelToText(5, 0, 0, 1); + testPixelToText(9, 0, 0, 1); + testPixelToText(10, 0, 0, 1); + testPixelToText(14, 0, 0, 1); + testPixelToText(15, 0, 0, 2); + document.body.removeChild(el); + } + + // change tab size after setDocument (for text layer) +}; + +}); + +if (typeof module !== "undefined" && module === require.main) { + require("asyncjs").test.testcase(module.exports).exec() +} diff --git a/plugins/node_modules/ace_tree/list.txt b/plugins/node_modules/ace_tree/list.txt new file mode 100644 index 00000000..8d0dcff1 --- /dev/null +++ b/plugins/node_modules/ace_tree/list.txt @@ -0,0 +1,1318 @@ +system:Predicate +system:Predicate:fullName +system:RefModePredicate +system:RefModePredicate:$_none +system:Entity +system:Entity:$_none +system:NameSpace +system:NameSpace:name +system:TypeSpace +system:TypeSpace:name +system:MappingPredicate +system:MappingPredicate:$_none +system:PulsePredicate +system:PulsePredicate:$_none +system:TypeHierarchy +system:TypeHierarchy:name +system:PredicateDerivationType +system:PredicateDerivationType:name +system:CompositionType +system:CompositionType:name +system:StorageStructure +system:StorageStructure:name +system:StorageSpace +system:StorageSpace:name +system:PartitioningState +system:PartitioningState:name +system:LockingPolicy +system:LockingPolicy:name +system:TypeOrder +system:TypeOrder:id +system:NativeType +system:NativeType:name +system:TypeMapNode +system:TypeMapNode:id +system:AggMethod +system:AggMethod:name +system:SpreadMethod +system:SpreadMethod:name +system:RecalcAggMode +system:RecalcAggMode:name +system:HorizontalAlignment +system:HorizontalAlignment:name +system:Alignment +system:Alignment:name +system:CompositeAggMethod +system:CompositeAggMethod:$_none +system:CompositeSpreadMethod +system:CompositeSpreadMethod:$_none +system:Replication +system:Replication:name +system:TaskTiming +system:TaskTiming:id +system:WorkSpaceProperties +system:WorkSpaceProperties:name +system:ExternalWorkSpace +system:ExternalWorkSpace:url +system:RegisteredLibraries +system:RegisteredLibraries:path +system:TypeMapSignature +system:TypeMapSignature:name +system:AggSignature +system:AggSignature:name +system:InstalledProjects +system:InstalledProjects:name +system:Predicate:name +system:Predicate:label +system:Predicate:storageSpace +system:Predicate:storage +system:Predicate:chunkSize +system:Predicate:partitioning +system:Predicate:numPartitions +system:Predicate:lockingPolicy +system:Predicate:key +system:Predicate:value +system:Predicate:isOrdered +system:Predicate:capacity +system:Predicate:maxIndex +system:Predicate:maxRefMode +system:Predicate:defaultValue +system:Predicate:defaultValueIndex +system:Predicate:format +system:Predicate:cellStyleName +system:Predicate:valueConstraint +system:Predicate:displayWidth +system:Predicate:readOnly +system:Predicate:allowsNulls +system:Predicate:horizontalAlignment +system:Predicate:nameSpace +system:Predicate:description +system:Predicate:displayName +system:Predicate:isOneToOneMapping +system:Predicate:isDisjoint +system:Predicate:allowMissingData +system:Predicate:procedure +system:Predicate:derivationType +system:Predicate:compositionType +system:Predicate:recalcAggMode +system:Predicate:allowedAggMethods +system:Predicate:defaultAggMethod +system:Predicate:allowedSpreadMethods +system:Predicate:defaultSpreadMethod +system:Predicate:lastUpdate +system:Predicate:lastGC +system:Predicate:isSkolem +system:Predicate:isAutoNumbered +system:Predicate:remoteRef +system:Predicate:percentAggDimension +system:Predicate:percentAggBase +system:Entity:refMode +system:Entity:baseType +system:Entity:subtypes +system:Entity:labelPredicate +system:Entity:securityPredicate +system:Entity:kind +system:Entity:lockingPriority +system:TypeSpace:types +system:TypeSpace:roles +system:TypeSpace:labels +system:NameSpace:label +system:NameSpace:parent +system:TypeHierarchy:label +system:TypeHierarchy:root +system:TypeHierarchy:mapNames +system:TypeHierarchy:typeNames +system:TypeMapNode:mappingPredicate +system:TypeMapNode:nextNodePredicate +system:MappingPredicate:fromType +system:MappingPredicate:toType +system:CompositeAggMethod:aggMethod +system:CompositeAggMethod:kind +system:CompositeAggMethod:role +system:CompositeSpreadMethod:spreadMethod +system:CompositeSpreadMethod:kind +system:CompositeSpreadMethod:role +system:deltaBackup +system:float32Precision +system:float64Precision +system:decimal64Precision +system:decimal128Precision +system:Replication:url +system:Replication:portRange +system:Replication:version +system:Replication:active +system:TaskTiming:wallTime +system:workSpaceInfo +system:ExternalWorkSpace:localPath +system:nameSpaceToWorkSpaceMap +system:TypeMapSignature:typeMappingPredicates +system:AggMethod:types +system:AggSignature:blockName +system:AggSignature:sig +system:AggSignature:resultPredName +system:AggSignature:description +system:AggSignature:basePredName +system:AggSignature:refMeasureName +system:AggSignature:instantiate +system:AggSignature:error +system:AggSignature:isRecalc +system:AggSignature:aggMethods +system:AggSignature:spreadMethods +system:AggSignature:hierarchies +system:AggSignature:sequence +system:AggSignature:levelTargetIndices +system:InstalledProjects:hash +system:logic:Block:ExecutionMode +system:logic:Block:ExecutionMode:name +system:logic:Block:FetchMode +system:logic:Block:FetchMode:name +system:logic:Block:Lifetime +system:logic:Block:Lifetime:name +system:logic:Block:SortType +system:logic:Block:SortType:name +system:logic:LogicBlock +system:logic:LogicBlockId +system:logic:ActiveBlock +system:logic:ActiveBlock:$_none +system:logic:DerivedPredicate +system:logic:DerivedPredicate:$_none +system:logic:MetaPredicate +system:logic:MetaPredicate:$_none +system:logic:NamedProgram +system:logic:namedProgramName +system:logic:WatchPred +system:logic:WatchPred:$_none +system:counter:counters +system:counter:counters_name +system:protoagg:predicateName +system:logic:Block:defaultFetchMode +system:logic:Block:defaultPageSize +system:logic:Block:executionMode +system:logic:Block:lifetime +system:logic:Block:localPredicateNames +system:logic:Block:sortOrder +system:logic:Block:sortType +system:logic:executableProgram +system:logic:firstMapFor +system:logic:historicalLocks +system:logic:lastMapFor +system:logic:logicBlockHasPredicates +system:logic:logicBlockLB0Text +system:logic:logicBlockName +system:logic:logicBlockProtoExecutableProgram +system:logic:logicBlockSourceText +system:logic:namedProgramLB0Source +system:logic:namedProgramSource +system:logic:programVersion +system:versionedType +system:counter:counter_values +system:Predicate:isBuiltIn +system:Predicate:isRemote +system:Predicate:isDerivedOnly +system:Predicate:isDisplayable +system:Predicate:isDisplayableAppPredicate +system:Predicate:useMultiLineEditor +system:Predicate:isRefMode +system:Predicate:keyArity +system:Predicate:_keyArity +system:Entity:appAttributes +system:Predicate:isMeasureBase +system:Predicate:_keyArity:_derivationCounts +system:logic:Block:displayName +system:InstalledProjects:timeStamp +system:InstalledProjects:blocks +system:Predicate:remoteRefMap +system:MessageProtocol +system:MessageProtocol:name +system:MessageProtocol:descriptor +$__protocol_GetDescriptor:_name +$__protocol_GetDescriptor:_descriptor +$__protocol_AddDescriptor:_name +$__protocol_AddDescriptor:_descriptor +bloxweb:MessageProtocol +bloxweb:MessageProtocolId +bloxweb:MessageProtocol:name +bloxweb:MessageProtocol:descriptor_bytes +bloxweb:MessageProtocolId:_$inverse +bloxweb:internal:Encoding +bloxweb:internal:Service +bloxweb:internal:ServiceId +bloxweb:internal:CORSRule +bloxweb:internal:CORSRuleId +bloxweb:internal:ServiceParameter +bloxweb:internal:ServiceParameterId +bloxweb:internal:ServiceInstance +bloxweb:internal:ServiceInstanceId +bloxweb:internal:HandlerConfig +bloxweb:internal:HandlerConfigId +bloxweb:internal:ProxyHandler +bloxweb:internal:ProxyHandlerId +bloxweb:internal:GlobalProtoBufHandler +bloxweb:internal:GlobalProtoBufHandlerId +bloxweb:internal:SQSS3ProxyHandler +bloxweb:internal:SQSS3ProxyHandlerId +bloxweb:internal:TransferProtocol +bloxweb:internal:TransferProtocolId +bloxweb:internal:SQS_S3 +bloxweb:internal:SQS_S3Id +bloxweb:internal:SQSHeader +bloxweb:internal:SQSHeaderId +bloxweb:internal:StatusService +bloxweb:internal:StatusServiceId +bloxweb:internal:Realm +bloxweb:internal:RealmId +bloxweb:internal:Mechanism +bloxweb:internal:MechanismId +bloxweb:internal:Option +bloxweb:internal:OptionId +bloxweb:internal:ServiceClient +bloxweb:internal:ServiceClientId +bloxweb:internal:Transport +bloxweb:internal:TransportId +bloxweb:internal:TCPTransport +bloxweb:internal:TCPTransportId +bloxweb:internal:SQSTransport +bloxweb:internal:SQSTransportId +bloxweb:internal:Encoding:value +bloxweb:internal:Service:prefix +bloxweb:internal:Service:handler +bloxweb:internal:Service:handler_config +bloxweb:internal:Service:block_name +bloxweb:internal:Service:request_protocol +bloxweb:internal:Service:request_message +bloxweb:internal:Service:response_protocol +bloxweb:internal:Service:response_message +bloxweb:internal:Service:file_binding +bloxweb:internal:Service:request_encoding +bloxweb:internal:Service:response_encoding +bloxweb:internal:Service:transfer_protocol +bloxweb:internal:Service:status_service +bloxweb:internal:Service:authenticator +bloxweb:internal:Service:readonly +bloxweb:internal:Service:exclusive +bloxweb:internal:Service:parameter +bloxweb:internal:Service:group +bloxweb:internal:Service:disabled_status +bloxweb:internal:Service:cors_rule +bloxweb:internal:Service:ignore_authentication_requirement +bloxweb:internal:CORSRule:allowed_origin +bloxweb:internal:CORSRule:allowed_method +bloxweb:internal:CORSRule:allowed_header +bloxweb:internal:ServiceParameter:key +bloxweb:internal:ServiceParameter:value +bloxweb:internal:ServiceInstance:workspace +bloxweb:internal:ServiceInstance:service +bloxweb:internal:HandlerConfig:proxy +bloxweb:internal:HandlerConfig:global_protobuf +bloxweb:internal:HandlerConfig:sqs_s3_proxy +bloxweb:internal:ProxyHandler:target +bloxweb:internal:ProxyHandler:host +bloxweb:internal:ProxyHandler:prefix +bloxweb:internal:GlobalProtoBufHandler:target +bloxweb:internal:GlobalProtoBufHandler:accept_failure +bloxweb:internal:SQSS3ProxyHandler:request_queue +bloxweb:internal:SQSS3ProxyHandler:response_queue +bloxweb:internal:SQSS3ProxyHandler:bucket +bloxweb:internal:SQSS3ProxyHandler:enc_key_name +bloxweb:internal:TransferProtocol:http +bloxweb:internal:TransferProtocol:sqs_s3 +bloxweb:internal:SQS_S3:queue_name +bloxweb:internal:SQS_S3:bucket_name +bloxweb:internal:SQS_S3:sqs_endpoint +bloxweb:internal:SQS_S3:s3_endpoint +bloxweb:internal:SQS_S3:s3_region +bloxweb:internal:SQS_S3:delete_from_sqs +bloxweb:internal:SQS_S3:delete_from_s3 +bloxweb:internal:SQS_S3:access_key +bloxweb:internal:SQS_S3:secret_key +bloxweb:internal:SQSHeader:message_key +bloxweb:internal:SQSHeader:tenant +bloxweb:internal:StatusService:primary_queue_name +bloxweb:internal:StatusService:backup_queue_name +bloxweb:internal:StatusService:access_key +bloxweb:internal:StatusService:secret_key +bloxweb:internal:Realm:name +bloxweb:internal:Realm:config +bloxweb:internal:Realm:stateful +bloxweb:internal:Realm:session_key +bloxweb:internal:Realm:mechanism +bloxweb:internal:Realm:options +bloxweb:internal:Mechanism:clazz +bloxweb:internal:Mechanism:options +bloxweb:internal:Option:key +bloxweb:internal:Option:value +bloxweb:internal:ServiceClient:uri +bloxweb:internal:ServiceClient:transport +bloxweb:internal:Transport:tcp +bloxweb:internal:Transport:sqs +bloxweb:internal:ServiceId:_$inverse +bloxweb:internal:CORSRuleId:_$inverse +bloxweb:internal:ServiceParameterId:_$inverse +bloxweb:internal:ServiceInstanceId:_$inverse +bloxweb:internal:HandlerConfigId:_$inverse +bloxweb:internal:ProxyHandlerId:_$inverse +bloxweb:internal:GlobalProtoBufHandlerId:_$inverse +bloxweb:internal:SQSS3ProxyHandlerId:_$inverse +bloxweb:internal:TransferProtocolId:_$inverse +bloxweb:internal:SQS_S3Id:_$inverse +bloxweb:internal:SQSHeaderId:_$inverse +bloxweb:internal:StatusServiceId:_$inverse +bloxweb:internal:RealmId:_$inverse +bloxweb:internal:MechanismId:_$inverse +bloxweb:internal:OptionId:_$inverse +bloxweb:internal:ServiceClientId:_$inverse +bloxweb:internal:TransportId:_$inverse +bloxweb:internal:TCPTransportId:_$inverse +bloxweb:internal:SQSTransportId:_$inverse +bloxweb:ProtoBufMetaRequest +bloxweb:ProtoBufMetaRequestId +bloxweb:ProtoBufProtocolRequest +bloxweb:ProtoBufProtocolRequestId +bloxweb:ProtoBufMetaResponse +bloxweb:ProtoBufMetaResponseId +bloxweb:ProtoBufProtocolResponse +bloxweb:ProtoBufProtocolResponseId +bloxweb:ProtoBufMetaRequest:protocol +bloxweb:ProtoBufMetaResponse:protocol +bloxweb:ProtoBufProtocolResponse:request_message_name +bloxweb:ProtoBufProtocolResponse:request_descriptor +bloxweb:ProtoBufProtocolResponse:response_message_name +bloxweb:ProtoBufProtocolResponse:response_descriptor +bloxweb:ProtoBufMetaRequestId:_$inverse +bloxweb:ProtoBufProtocolRequestId:_$inverse +bloxweb:ProtoBufMetaResponseId:_$inverse +bloxweb:ProtoBufProtocolResponseId:_$inverse +bloxweb:http:Request +bloxweb:http:RequestId +bloxweb:http:Response +bloxweb:http:ResponseId +bloxweb:http:Field +bloxweb:http:FieldId +bloxweb:http:RequestURI +bloxweb:http:RequestURIId +bloxweb:http:Request:method +bloxweb:http:Request:uri +bloxweb:http:Request:header +bloxweb:http:Response:status_code +bloxweb:http:Response:header +bloxweb:http:Field:name +bloxweb:http:Field:value +bloxweb:http:RequestURI:full +bloxweb:http:RequestURI:service_prefix +bloxweb:http:RequestURI:extra_path +bloxweb:http:RequestURI:parameter +bloxweb:http:RequestId:_$inverse +bloxweb:http:ResponseId:_$inverse +bloxweb:http:FieldId:_$inverse +bloxweb:http:RequestURIId:_$inverse +bloxweb:authenticationKey +bloxweb:auth:username +$bloxweb_service_query:_services +$bloxweb_service_query:_realms +$bloxweb_service_query:_protocols +bloxweb:delim:EntityCreation +bloxweb:delim:FileBinding +bloxweb:delim:FileBindingId +bloxweb:delim:FileDefinition +bloxweb:delim:FileDefinitionId +bloxweb:delim:FileColumn +bloxweb:delim:FileColumnId +bloxweb:delim:PredicateBinding +bloxweb:delim:PredicateBindingId +bloxweb:delim:ColumnBinding +bloxweb:delim:ColumnBindingId +bloxweb:delim:Transform +bloxweb:delim:TransformId +bloxweb:delim:Format +bloxweb:delim:FormatId +bloxweb:delim:EntityCreation:value +bloxweb:delim:FileBinding:name +bloxweb:delim:FileBinding:file +bloxweb:delim:FileBinding:predicate +bloxweb:delim:FileDefinition:name +bloxweb:delim:FileDefinition:delimiter +bloxweb:delim:FileDefinition:column +bloxweb:delim:FileColumn:header +bloxweb:delim:FileColumn:format +bloxweb:delim:FileColumn:required +bloxweb:delim:FileColumn:can_be_absent +bloxweb:delim:PredicateBinding:predicate_name +bloxweb:delim:PredicateBinding:column +bloxweb:delim:PredicateBinding:export +bloxweb:delim:PredicateBinding:filter +bloxweb:delim:PredicateBinding:incremental +bloxweb:delim:PredicateBinding:negated +bloxweb:delim:ColumnBinding:header +bloxweb:delim:ColumnBinding:entity_creation +bloxweb:delim:ColumnBinding:import_function +bloxweb:delim:ColumnBinding:import_function_inverse +bloxweb:delim:ColumnBinding:export_function +bloxweb:delim:ColumnBinding:export_function_inverse +bloxweb:delim:ColumnBinding:transform +bloxweb:delim:Transform:id +bloxweb:delim:Transform:param +bloxweb:delim:Format:id +bloxweb:delim:Format:param +bloxweb:delim:FileBindingId:_$inverse +bloxweb:delim:FileDefinitionId:_$inverse +bloxweb:delim:FileColumnId:_$inverse +bloxweb:delim:PredicateBindingId:_$inverse +bloxweb:delim:ColumnBindingId:_$inverse +bloxweb:delim:TransformId:_$inverse +bloxweb:delim:FormatId:_$inverse +bloxweb:delim:runtime:has_import_errors +bloxweb:delim:runtime:checked_read_string +bloxweb:delim:runtime:checked_read_alphanum +bloxweb:delim:runtime:checked_read_integer +bloxweb:delim:runtime:checked_read_float +bloxweb:delim:runtime:checked_read_nonnegative_integer +bloxweb:delim:runtime:checked_read_positive_integer +bloxweb:delim:schema:file_definition +bloxweb:delim:schema:column +bloxweb:delim:schema:format +bloxweb:delim:schema:format_datetime +bloxweb:delim:schema:format_date +bloxweb:delim:schema:format_boolean +bloxweb:delim:schema:file_definition_by_name +bloxweb:delim:schema:file_delimiter +bloxweb:delim:schema:file_column +bloxweb:delim:schema:column_header +bloxweb:delim:schema:column_format +bloxweb:delim:schema:column_optional +bloxweb:delim:schema:column_can_be_absent +bloxweb:delim:schema:datetime_format +bloxweb:delim:schema:date_format +bloxweb:delim:schema:boolean_format +bloxweb:delim:schema:format_alphanumeric +bloxweb:delim:schema:format_empty_string +bloxweb:delim:schema:format_string +bloxweb:delim:schema:format_integer +bloxweb:delim:schema:format_nonnegative_integer +bloxweb:delim:schema:format_positive_integer +bloxweb:delim:schema:format_float +bloxweb:delim:schema:file_definition_name +bloxweb:delim:schema:column_by_name +bloxweb:delim:schema:file_columns +bloxweb:delim:schema:column_file_definition +bloxweb:delim:binding:file_binding +bloxweb:delim:binding:predicate_binding +bloxweb:delim:binding:column_binding +bloxweb:delim:binding:transformation +bloxweb:delim:binding:file_binding_by_name +bloxweb:delim:binding:file_binding_definition_name +bloxweb:delim:binding:predicate_binding_name +bloxweb:delim:binding:predicate_binding_by_name +bloxweb:delim:binding:predicate_binding_by_name_index +bloxweb:delim:binding:predicate_binding_export +bloxweb:delim:binding:predicate_binding_filter +bloxweb:delim:binding:predicate_binding_negated +bloxweb:delim:binding:predicate_binding_incremental +bloxweb:delim:binding:column_binding_by_arg +bloxweb:delim:binding:column_binding_header +bloxweb:delim:binding:column_binding_entity_creation +bloxweb:delim:binding:column_binding_transformation +bloxweb:delim:binding:transformation_id +bloxweb:delim:binding:transformation_param +bloxweb:delim:binding:column_binding_function +bloxweb:delim:binding:column_binding_function_inverse +bloxweb:delim:binding:column_binding_import_function +bloxweb:delim:binding:column_binding_import_function_inverse +bloxweb:delim:binding:column_binding_export_function +bloxweb:delim:binding:column_binding_export_function_inverse +bloxweb:delim:binding:predicate_binding_file_binding +bloxweb:delim:binding:file_binding_name +bloxweb:delim:binding:file_binding_definition +bloxweb:delim:binding:predicate_bindings +bloxweb:delim:binding:column_binding_column +bloxweb:delim:binding:entity_creation +bloxweb:delim:binding:column_binding_file_definition +bloxweb:delim:binding:predicate_binding_file_definition +bloxweb:delim:query:bindings +bloxweb:delim:query:proto_file_binding +bloxweb:delim:query:proto_file_definition +bloxweb:delim:query:proto_file_column +bloxweb:delim:query:proto_predicate_binding +bloxweb:delim:query:proto_column_binding +bloxweb:delim:query:proto_format +bloxweb:delim:query:format_to_string +bloxweb:delim:query:proto_transformation +bloxweb:delim:binding_abbr:file_binding_predicate +bloxweb:delim:binding_abbr:file_binding_predicate_columns +bloxweb:delim:binding_abbr:predicate_binding_columns +bloxweb:delim:binding_abbr:column_binding_headers +bloxweb:delim:binding_abbr:column_binding_transform +bloxweb:delim:binding_abbr:file_binding_entity_creation +bloxweb:delim:binding_abbr:file_binding_column_entity_creation +bloxweb:delim:binding_abbr:predicate_binding_entity_creation +bloxweb:delim:binding_abbr:cons_transformation +bloxweb:delim:binding_abbr:transform_id +bloxweb:delim:binding_abbr:transform_arg +bloxweb:delim:binding_abbr:str_transform_args +bloxweb:delim:binding_abbr:str_transform +bloxweb:delim:binding_abbr:char_at +bloxweb:delim:filter:filter_by_columns +bloxweb:delim:schema_abbr:column_headers +bloxweb:delim:schema_abbr:column_formats +bloxweb:delim:schema_abbr:file_column_format +bloxweb:delim:schema_abbr:column_format_str +bloxweb:delim:schema_abbr:file_columns_required +bloxweb:delim:schema_abbr:file_column_required +bloxweb:delim:schema_abbr:file_columns_optional +bloxweb:delim:schema_abbr:file_column_optional +bloxweb:delim:schema_abbr:file_columns_can_be_absent +bloxweb:delim:schema_abbr:file_column_can_be_absent +bloxweb:delim:schema_abbr:column_required +bloxweb:delim:schema_abbr:cons_format_datetime +bloxweb:delim:schema_abbr:cons_format_date +bloxweb:delim:schema_abbr:cons_format_boolean +bloxweb:delim:schema_abbr:file_has_column_required +bloxweb:delim:schema_abbr:format_lookup +bloxweb:config:service:service +bloxweb:config:service:workspace_service +bloxweb:config:service:custom_handler +bloxweb:config:service:default_handler +bloxweb:config:service:service_prefix +bloxweb:config:service:auth_realm +bloxweb:config:service:readonly +bloxweb:config:service:exclusive +bloxweb:config:service:inactive_block_name +bloxweb:config:service:disabled_status +bloxweb:config:service:service_parameter +bloxweb:config:service:group +bloxweb:config:service:ignore_authentication_requirement +bloxweb:config:service:handler +bloxweb:config:protobuf:protobuf_service +bloxweb:config:protobuf:default_protobuf_service +bloxweb:config:protobuf:protobuf_request_encoding +bloxweb:config:protobuf:protobuf_request_protocol +bloxweb:config:protobuf:protobuf_request_message +bloxweb:config:protobuf:protobuf_response_encoding +bloxweb:config:protobuf:protobuf_response_protocol +bloxweb:config:protobuf:protobuf_response_message +bloxweb:config:protobuf:auto_encoding +bloxweb:config:protobuf:json_encoding +bloxweb:config:protobuf:binary_encoding +bloxweb:config:protobuf:supported_encoding +bloxweb:config:global_protobuf:global_protobuf_service +bloxweb:config:global_protobuf:service_client +bloxweb:config:global_protobuf:global_protobuf_target +bloxweb:config:global_protobuf:service_client_uri +bloxweb:config:global_protobuf:accept_failure +bloxweb:config:global_protobuf_abbr:global_protobuf_target_uri +bloxweb:config:global_protobuf_abbr:service_client_by_uri +bloxweb:config:query_protocols:_result +bloxweb:config:query_protocols:cons +bloxweb:config:proxy:proxy_service +bloxweb:config:proxy:exact_proxy +bloxweb:config:proxy:transparent_proxy +bloxweb:config:proxy:proxy_target +bloxweb:config:proxy:proxy_host +bloxweb:config:proxy:proxy_prefix +bloxweb:config:cors:rule +bloxweb:config:cors:rule_by_name +bloxweb:config:cors:allowed_origin +bloxweb:config:cors:allowed_method +bloxweb:config:cors:allowed_header +bloxweb:config:cors:with_rule +bloxweb:config:cors:with_rule_by_name +bloxweb:config:protobuf_abbr:protobuf_encoding +bloxweb:config:protobuf_abbr:protobuf_protocol +bloxweb:config:protobuf_abbr:protobuf_message +bloxweb:config:auth:realm +bloxweb:config:auth:realm_name +bloxweb:config:auth:realm_config +bloxweb:config:auth:realm_option +bloxweb:config:auth:realm_mechanism_class +bloxweb:config:auth:realm_mechanism_option +bloxweb:config:auth:realm_session_key +bloxweb:config:query_realms:_result +bloxweb:config:query_realms:cons_realm +bloxweb:config:query_realms:options +bloxweb:config:query_realms:cons_option +bloxweb:config:query_realms:mechanism_options +bloxweb:config:query_realms:cons_mechanism_option +bloxweb:config:query_realms:cons_mechanism +bloxweb:config:version:version +bloxweb:config:user:current_user_service +bloxweb:config:service_abbr:service_by_prefix +bloxweb:config:service_abbr:service_by_group +bloxweb:config:delim:delim_service +bloxweb:config:delim:delim_txn_service +bloxweb:config:delim:delim_file_binding +bloxweb:config:delim:abort_on_error +bloxweb:config:query_services:_result +bloxweb:config:query_services:cons_service +bloxweb:config:query_services:cons_handler_config +bloxweb:config:query_services:cons_parameter +bloxweb:config:query_services:cons_group +bloxweb:config:query_services:cons_global_config +bloxweb:config:query_services:cons_service_client +bloxweb:config:query_services:cons_proxy_config +bloxweb:config:query_services:_cons_cors_rule +bloxweb:config:query_services:_cons_allowed_origin +bloxweb:config:query_services:_cons_allowed_method +bloxweb:config:query_services:_cons_allowed_header +bloxweb:config:auth_abbr:realm_by_name +bloxweb:measure:Op:Kind +bloxweb:measure:Term:Kind +bloxweb:measure:Comparison:Kind +bloxweb:measure:AggExpr:Grouping:Kind +bloxweb:measure:AggExpr:Grouping +bloxweb:measure:AggExpr:GroupingId +bloxweb:measure:AggExpr:Method +bloxweb:measure:Request:Kind +bloxweb:measure:Dimension:Hierarchy:Path +bloxweb:measure:Dimension:Hierarchy:PathId +bloxweb:measure:ModelRequest:Kind +bloxweb:measure:MeasureExpr:Kind +bloxweb:measure:CompositeExpr:Kind +bloxweb:measure:Dimension:Hierarchy +bloxweb:measure:Dimension:HierarchyId +bloxweb:measure:Dimension:Edge +bloxweb:measure:Dimension:EdgeId +bloxweb:measure:Dimension:Level +bloxweb:measure:Dimension:LevelId +bloxweb:measure:Dimension:Kind +bloxweb:measure:Type +bloxweb:measure:MeasureModel +bloxweb:measure:MeasureModelId +bloxweb:measure:OpDef +bloxweb:measure:OpDefId +bloxweb:measure:Hypercube +bloxweb:measure:HypercubeId +bloxweb:measure:MetricGroup +bloxweb:measure:MetricGroupId +bloxweb:measure:Dimensionality +bloxweb:measure:DimensionalityId +bloxweb:measure:Metric +bloxweb:measure:MetricId +bloxweb:measure:Predicate +bloxweb:measure:PredicateId +bloxweb:measure:Dialogue +bloxweb:measure:DialogueId +bloxweb:measure:MultiDimensionalLevelMap +bloxweb:measure:MultiDimensionalLevelMapId +bloxweb:measure:Dimension +bloxweb:measure:DimensionId +bloxweb:measure:Attribute +bloxweb:measure:AttributeId +bloxweb:measure:QualifiedLevel +bloxweb:measure:QualifiedLevelId +bloxweb:measure:Intersection +bloxweb:measure:IntersectionId +bloxweb:measure:Binding +bloxweb:measure:BindingId +bloxweb:measure:ModelRequest +bloxweb:measure:ModelRequestId +bloxweb:measure:ModelResponse +bloxweb:measure:ModelResponseId +bloxweb:measure:Request +bloxweb:measure:RequestId +bloxweb:measure:InstallRequest +bloxweb:measure:InstallRequestId +bloxweb:measure:QueryRequest +bloxweb:measure:QueryRequestId +bloxweb:measure:KeyRequest +bloxweb:measure:KeyRequestId +bloxweb:measure:ParamBinding +bloxweb:measure:ParamBindingId +bloxweb:measure:Response +bloxweb:measure:ResponseId +bloxweb:measure:Column +bloxweb:measure:ColumnId +bloxweb:measure:BoolColumn +bloxweb:measure:BoolColumnId +bloxweb:measure:IntColumn +bloxweb:measure:IntColumnId +bloxweb:measure:FloatColumn +bloxweb:measure:FloatColumnId +bloxweb:measure:StringColumn +bloxweb:measure:StringColumnId +bloxweb:measure:DecimalColumn +bloxweb:measure:DecimalColumnId +bloxweb:measure:MeasureExpr +bloxweb:measure:MeasureExprId +bloxweb:measure:WidenExpr +bloxweb:measure:WidenExprId +bloxweb:measure:DiceExpr +bloxweb:measure:DiceExprId +bloxweb:measure:AttributeExpr +bloxweb:measure:AttributeExprId +bloxweb:measure:Op +bloxweb:measure:OpId +bloxweb:measure:OpExpr +bloxweb:measure:OpExprId +bloxweb:measure:CompositeExpr +bloxweb:measure:CompositeExprId +bloxweb:measure:MetricExpr +bloxweb:measure:MetricExprId +bloxweb:measure:FilterExpr +bloxweb:measure:FilterExprId +bloxweb:measure:Comparison +bloxweb:measure:ComparisonId +bloxweb:measure:AggExpr +bloxweb:measure:AggExprId +bloxweb:measure:Term +bloxweb:measure:TermId +bloxweb:measure:ParamTerm +bloxweb:measure:ParamTermId +bloxweb:measure:ConstantTerm +bloxweb:measure:ConstantTermId +bloxweb:measure:PartitionResponse +bloxweb:measure:PartitionResponseId +bloxweb:measure:Op:Kind_value +bloxweb:measure:Term:Kind_value +bloxweb:measure:Comparison:Kind_value +bloxweb:measure:AggExpr:Grouping:Kind_value +bloxweb:measure:AggExpr:Grouping_kind +bloxweb:measure:AggExpr:Grouping_dimension +bloxweb:measure:AggExpr:Grouping_hierarchy +bloxweb:measure:AggExpr:Grouping_level +bloxweb:measure:AggExpr:Grouping_multi_dim_map +bloxweb:measure:AggExpr:Method_value +bloxweb:measure:Request:Kind_value +bloxweb:measure:Dimension:Hierarchy:Path_level +bloxweb:measure:Dimension:Hierarchy:Path_map_pred +bloxweb:measure:ModelRequest:Kind_value +bloxweb:measure:MeasureExpr:Kind_value +bloxweb:measure:CompositeExpr:Kind_value +bloxweb:measure:Dimension:Hierarchy_name +bloxweb:measure:Dimension:Hierarchy_path +bloxweb:measure:Dimension:Edge_source_level +bloxweb:measure:Dimension:Edge_target_level +bloxweb:measure:Dimension:Edge_map_pred +bloxweb:measure:Dimension:Level_name +bloxweb:measure:Dimension:Level_impl +bloxweb:measure:Dimension:Level_attribute +bloxweb:measure:Dimension:Kind_value +bloxweb:measure:Type_value +bloxweb:measure:MeasureModel_name +bloxweb:measure:MeasureModel_dimension +bloxweb:measure:MeasureModel_metric +bloxweb:measure:MeasureModel_multi_dim_level_map +bloxweb:measure:MeasureModel_operator +bloxweb:measure:MeasureModel_hypercube +bloxweb:measure:MeasureModel_metric_group +bloxweb:measure:MeasureModel_binding +bloxweb:measure:OpDef_name +bloxweb:measure:OpDef_impl +bloxweb:measure:OpDef_domain +bloxweb:measure:OpDef_range +bloxweb:measure:Hypercube_name +bloxweb:measure:Hypercube_default_metric +bloxweb:measure:Hypercube_default_metric_group +bloxweb:measure:Hypercube_metric_group +bloxweb:measure:Hypercube_caption +bloxweb:measure:MetricGroup_name +bloxweb:measure:MetricGroup_dim +bloxweb:measure:MetricGroup_metric +bloxweb:measure:MetricGroup_caption +bloxweb:measure:Dimensionality_dimension +bloxweb:measure:Metric_name +bloxweb:measure:Metric_inter +bloxweb:measure:Metric_type +bloxweb:measure:Metric_predicate +bloxweb:measure:Metric_dialogue +bloxweb:measure:Metric_caption +bloxweb:measure:Predicate_name +bloxweb:measure:Predicate_is_disjunctive_view +bloxweb:measure:Dialogue_domain +bloxweb:measure:Dialogue_request_pred +bloxweb:measure:Dialogue_response_pred +bloxweb:measure:MultiDimensionalLevelMap_name +bloxweb:measure:MultiDimensionalLevelMap_level_map_pred +bloxweb:measure:MultiDimensionalLevelMap_source_inter +bloxweb:measure:MultiDimensionalLevelMap_target_level +bloxweb:measure:Dimension_name +bloxweb:measure:Dimension_level +bloxweb:measure:Dimension_edge +bloxweb:measure:Dimension_hierarchy +bloxweb:measure:Dimension_default_hierarchy +bloxweb:measure:Dimension_top_level +bloxweb:measure:Dimension_unwinds +bloxweb:measure:Dimension_caption +bloxweb:measure:Dimension_kind +bloxweb:measure:Attribute_name +bloxweb:measure:Attribute_impl +bloxweb:measure:Attribute_type +bloxweb:measure:QualifiedLevel_dimension +bloxweb:measure:QualifiedLevel_hierarchy +bloxweb:measure:QualifiedLevel_level +bloxweb:measure:Intersection_qualified_level +bloxweb:measure:Binding_pred +bloxweb:measure:Binding_measure_text +bloxweb:measure:Binding_measure_expr +bloxweb:measure:ModelRequest_kind +bloxweb:measure:ModelResponse_exception +bloxweb:measure:ModelResponse_model +bloxweb:measure:Request_kind +bloxweb:measure:Request_query_request +bloxweb:measure:Request_install_request +bloxweb:measure:InstallRequest_measure_expr +bloxweb:measure:InstallRequest_measure_text +bloxweb:measure:QueryRequest_report_name +bloxweb:measure:QueryRequest_argument +bloxweb:measure:QueryRequest_row_limit +bloxweb:measure:QueryRequest_return_row_numbers +bloxweb:measure:QueryRequest_key +bloxweb:measure:QueryRequest_measure +bloxweb:measure:KeyRequest_qualified_level +bloxweb:measure:KeyRequest_attribute +bloxweb:measure:ParamBinding_param +bloxweb:measure:ParamBinding_constant +bloxweb:measure:Response_report_column +bloxweb:measure:Response_exception +bloxweb:measure:Column_bool_column +bloxweb:measure:Column_int_column +bloxweb:measure:Column_float_column +bloxweb:measure:Column_string_column +bloxweb:measure:Column_decimal_column +bloxweb:measure:BoolColumn_value +bloxweb:measure:IntColumn_value +bloxweb:measure:FloatColumn_value +bloxweb:measure:StringColumn_value +bloxweb:measure:DecimalColumn_value +bloxweb:measure:MeasureExpr_kind +bloxweb:measure:MeasureExpr_metric +bloxweb:measure:MeasureExpr_aggregation +bloxweb:measure:MeasureExpr_filter +bloxweb:measure:MeasureExpr_composite +bloxweb:measure:MeasureExpr_attribute +bloxweb:measure:MeasureExpr_term +bloxweb:measure:MeasureExpr_op +bloxweb:measure:MeasureExpr_widen +bloxweb:measure:MeasureExpr_dice +bloxweb:measure:WidenExpr_expr +bloxweb:measure:WidenExpr_inter +bloxweb:measure:DiceExpr_expr +bloxweb:measure:DiceExpr_dicer +bloxweb:measure:DiceExpr_is_disjunction +bloxweb:measure:AttributeExpr_qualified_level +bloxweb:measure:AttributeExpr_attribute +bloxweb:measure:Op_kind +bloxweb:measure:Op_name +bloxweb:measure:OpExpr_op +bloxweb:measure:OpExpr_expr +bloxweb:measure:CompositeExpr_kind +bloxweb:measure:CompositeExpr_expr +bloxweb:measure:MetricExpr_name +bloxweb:measure:MetricExpr_argument +bloxweb:measure:FilterExpr_expr +bloxweb:measure:FilterExpr_comparison +bloxweb:measure:FilterExpr_is_disjunction +bloxweb:measure:Comparison_op +bloxweb:measure:Comparison_term +bloxweb:measure:AggExpr_method +bloxweb:measure:AggExpr_expr +bloxweb:measure:AggExpr_grouping +bloxweb:measure:Term_kind +bloxweb:measure:Term_param +bloxweb:measure:Term_constant +bloxweb:measure:ParamTerm_name +bloxweb:measure:ParamTerm_type +bloxweb:measure:ConstantTerm_string_constant +bloxweb:measure:ConstantTerm_int_constant +bloxweb:measure:ConstantTerm_float_constant +bloxweb:measure:ConstantTerm_decimal_constant +bloxweb:measure:ConstantTerm_boolean_constant +bloxweb:measure:PartitionResponse_broadcast +bloxweb:measure:PartitionResponse_partitionID +bloxweb:measure:AggExpr:GroupingId:_$inverse +bloxweb:measure:Dimension:Hierarchy:PathId:_$inverse +bloxweb:measure:Dimension:HierarchyId:_$inverse +bloxweb:measure:Dimension:EdgeId:_$inverse +bloxweb:measure:Dimension:LevelId:_$inverse +bloxweb:measure:MeasureModelId:_$inverse +bloxweb:measure:OpDefId:_$inverse +bloxweb:measure:HypercubeId:_$inverse +bloxweb:measure:MetricGroupId:_$inverse +bloxweb:measure:DimensionalityId:_$inverse +bloxweb:measure:MetricId:_$inverse +bloxweb:measure:PredicateId:_$inverse +bloxweb:measure:DialogueId:_$inverse +bloxweb:measure:MultiDimensionalLevelMapId:_$inverse +bloxweb:measure:DimensionId:_$inverse +bloxweb:measure:AttributeId:_$inverse +bloxweb:measure:QualifiedLevelId:_$inverse +bloxweb:measure:IntersectionId:_$inverse +bloxweb:measure:BindingId:_$inverse +bloxweb:measure:ModelRequestId:_$inverse +bloxweb:measure:ModelResponseId:_$inverse +bloxweb:measure:RequestId:_$inverse +bloxweb:measure:InstallRequestId:_$inverse +bloxweb:measure:QueryRequestId:_$inverse +bloxweb:measure:KeyRequestId:_$inverse +bloxweb:measure:ParamBindingId:_$inverse +bloxweb:measure:ResponseId:_$inverse +bloxweb:measure:ColumnId:_$inverse +bloxweb:measure:BoolColumnId:_$inverse +bloxweb:measure:IntColumnId:_$inverse +bloxweb:measure:FloatColumnId:_$inverse +bloxweb:measure:StringColumnId:_$inverse +bloxweb:measure:DecimalColumnId:_$inverse +bloxweb:measure:MeasureExprId:_$inverse +bloxweb:measure:WidenExprId:_$inverse +bloxweb:measure:DiceExprId:_$inverse +bloxweb:measure:AttributeExprId:_$inverse +bloxweb:measure:OpId:_$inverse +bloxweb:measure:OpExprId:_$inverse +bloxweb:measure:CompositeExprId:_$inverse +bloxweb:measure:MetricExprId:_$inverse +bloxweb:measure:FilterExprId:_$inverse +bloxweb:measure:ComparisonId:_$inverse +bloxweb:measure:AggExprId:_$inverse +bloxweb:measure:TermId:_$inverse +bloxweb:measure:ParamTermId:_$inverse +bloxweb:measure:ConstantTermId:_$inverse +bloxweb:measure:PartitionResponseId:_$inverse +measure:schema:dimension +measure:schema:dimension_hasName +measure:schema:hierarchy +measure:schema:hierarchy_id +measure:schema:edge +measure:schema:edge_id +measure:schema:level +measure:schema:level_id +measure:schema:attribute +measure:schema:attribute_id +measure:schema:dimensionality +measure:schema:dimensionality_hasStrRep +measure:schema:intersection +measure:schema:intersection_hasStrRep +measure:schema:metric +measure:schema:metric_hasName +measure:schema:predicate +measure:schema:predicate_id +measure:schema:dialogue +measure:schema:dialogue_id +measure:schema:binding +measure:schema:binding_id +measure:schema:multiDimLevelMap +measure:schema:multiDimLevelMap_hasName +measure:schema:hypercube +measure:schema:hypercube_hasName +measure:schema:metricGroup +measure:schema:metricGroup_hasName +measure:schema:name +measure:schema:dimension_unwinds +measure:schema:hierarchy_fromDimensionName +measure:schema:edge_fromDimensionLevels +measure:schema:level_fromDimensionName +measure:schema:predicate_fromName +measure:schema:dialogue_fromPredPred +measure:schema:attribute_fromLevelName +measure:schema:dimension_hasCaption +measure:schema:dimension_hasKind +measure:schema:dimension_hasDefaultHierarchy +measure:schema:hierarchy_hasLevel +measure:schema:level_hasImplPredicate +measure:schema:level_hasAttribute +measure:schema:attribute_hasImplPredicate +measure:schema:attribute_hasType +measure:schema:level_map +measure:schema:metric_hasIntersection +measure:schema:metric_hasCaption +measure:schema:metric_hasType +measure:schema:metric_usesPredicate +measure:schema:metric_usesDialogue +measure:schema:binding_hasExpression +measure:schema:binding_hasPredicateName +measure:schema:multiDimLevelMap_hasPredicateName +measure:schema:multiDimLevelMap_hasSourceIntersection +measure:schema:multiDimLevelMap_hasTargetLevel +measure:schema:hypercube_hasCaption +measure:schema:hypercube_hasDefaultMetric +measure:schema:hypercube_hasDefaultMetricGroup +measure:schema:hypercube_hasMetricGroups +measure:schema:metricGroup_hasCaption +measure:schema:metricGroup_hasDimensionality +measure:schema:metricGroup_hasMetrics +measure:schema:dialogue_hasRequestPredName +measure:schema:dialogue_hasResponsePredName +measure:schema:dialogue_hasParam +measure:schema:hierarchy_hasName +measure:schema:hierarchy_levelAtIndex +measure:schema:level_hasName +measure:schema:attribute_hasName +measure:schema:dimension_hasHierarchy +measure:schema:dimension_hasLevel +measure:schema:dimension_hasEdge +measure:schema:dimensionality_hasDimension +measure:schema:intersection_hasLevel +measure:schema:predicate_hasName +measure:schema:dimension_hasName:_$inverse +measure:schema:hierarchy_id:_$inverse +measure:schema:edge_id:_$inverse +measure:schema:level_id:_$inverse +measure:schema:attribute_id:_$inverse +measure:schema:predicate_id:_$inverse +measure:schema:dialogue_id:_$inverse +measure:schema:binding_id:_$inverse +measure:schema:multiDimLevelMap_hasName:_$inverse +$measure_schema:_projection_t_YNCexcn_IHi +$measure_schema:_projection_t_YNCexcn_IHj +$measure_schema:_projection_t_YNCexcn_IHk +$measure_schema:_projection_t_YNCexcn_IHl +$measure_schema:_projection_t_YNCexcn_IHm +$measure_schema:_projection_t_YNCexcn_IHn +measure:schema:nonExistentMemberException +measure:schema:dimensionality_hasDimensionName +measure:schema:exn +measure:schema:intersection_hasName +measure:schema:dimLevelSeparator +measure:schema:intersectionSplit +measure:schema:intersection_hasLevelName +measure:schema:intersection_hasLevelName2 +measure:schema:intersection_hasDimName2 +measure:schema:intersection_levelDimOk +measure:config:dimension +measure:config:dimension_hasName +measure:config:hierarchy +measure:config:metric +measure:config:metric_hasName +measure:config:binding +measure:config:multiDimLevelMap +measure:config:multiDimLevelMap_hasName +measure:config:hypercube +measure:config:hypercube_hasName +measure:config:metricGroup +measure:config:metricGroup_hasName +measure:config:enable +measure:config:name +measure:config:dimension_hasCaption +measure:config:dimension_hasKind +measure:config:dimension_hasDefaultHierarchy +measure:config:dimension_unwinds +measure:config:dimension_hasEdge +measure:config:hierarchy_byDimName +measure:config:level +measure:config:attribute +measure:config:levelMap +measure:config:metric_hasCaption +measure:config:metric_hasIntersection +measure:config:metric_hasType +measure:config:metric_usesPredicate +measure:config:metric_usesDialogue +measure:config:metric_hasParam +measure:config:binding_hasExpression +measure:config:binding_hasPredicateName +measure:config:multiDimLevelMap_hasPredicateName +measure:config:multiDimLevelMap_hasSourceLevels +measure:config:multiDimLevelMap_hasTargetLevel +measure:config:hypercube_hasCaption +measure:config:hypercube_hasDefaultMetric +measure:config:hypercube_hasDefaultMetricGroup +measure:config:hypercube_hasMetricGroup +measure:config:metricGroup_hasCaption +measure:config:metricGroup_hasDimensionality +measure:config:metricGroup_hasMetric +$measure_config:_projection_t_YNCexcn_IIT +$measure_config:_projection_t_YNCexcn_IIU +measure:config:configMetric2schemaMetric +measure:config:configHier2schemaHier +measure:config:configDimension2schemaDimension +measure:config:configBinding2schemaBinding +measure:config:configMDMap2schemaMDMap +measure:config:configHypercube2schemaHypercube +measure:config:configMetricGroup2schemaMetricGroup +measure:schema2MetricMsg:dimensionalityAutoIndex +measure:schema2MetricMsg:dimensionalityAutoIndex_id +measure:schema2MetricMsg:measureModel +measure:schema2MetricMsg:_metricConstr +measure:schema2MetricMsg:_typeConstr +measure:schema2MetricMsg:_qlevelConstr +measure:schema2MetricMsg:dimensionality_hasAutoIndex +measure:schema2MetricMsg:schemaMetric2msgMetric +measure:schema2MetricMsg:schemaDimensionality2msgDimensionality +measure:schema2MetricMsg:schemaIntersection2msgIntersection +measure:schema2MetricMsg:schemaPred2msgPred +measure:schema2MetricMsg:schemaBinding2msgBinding +measure:schema2MetricMsg:schemaMDMap2msgMDMap +measure:schema2MetricMsg:schemaHypercube2msgHypercube +measure:schema2MetricMsg:_hyperConstr +measure:schema2MetricMsg:schemaMetricGroup2msgMetricGroup +measure:schema2MetricMsg:_groupConstr +measure:schema2MetricMsg:schemaDialogue2msgDialogue +measure:schema2MetricMsg:_dConstr +measure:schema2MetricMsg:dimensionalityAutoIndex_id:_$inverse +measure:schema2DimensionMsg:levelAttributeIndex +measure:schema2DimensionMsg:levelAttributeIndex_id +measure:schema2DimensionMsg:dimLevelIndex +measure:schema2DimensionMsg:dimLevelIndex_id +$measure_schema2DimensionMsg:_projection_t_YNCexcn_IMF +measure:schema2DimensionMsg:_levelConstr +measure:schema2DimensionMsg:_edgeConstr +measure:schema2DimensionMsg:_kindConstr +measure:schema2DimensionMsg:_attrConstr +measure:schema2DimensionMsg:_typeConstr +measure:schema2DimensionMsg:_pathConstr +measure:schema2DimensionMsg:schemaHier2msgHier +measure:schema2DimensionMsg:schemaDim2msgDim +measure:schema2DimensionMsg:schemaLevel2msgLevel +measure:schema2DimensionMsg:schemaAttribute2msgAttribute +measure:schema2DimensionMsg:levelAttributeIndex_fromLevelAttribute +measure:schema2DimensionMsg:dimLevelIndex_fromDimLevel +measure:schema2DimensionMsg:levelAttributeIndex_id:_$inverse +measure:schema2DimensionMsg:dimLevelIndex_id:_$inverse +$util_printSchema:_ +$util_printSchema:_hierarchy_pp +$util_printSchema:_agg_map_pp +$util_printSchema:_map_ppstring +pdx:prod:sku +pdx:prod:sku_id +pdx:prod:class +pdx:prod:class_id +pdx:prod:department +pdx:prod:department_id +pdx:loc:store +pdx:loc:store_id +pdx:loc:region +pdx:loc:region_id +pdx:loc:district +pdx:loc:district_id +pdx:loc:allloc +pdx:loc:allloc_id +pdx:cal:week +pdx:cal:week_id +pdx:cal:month +pdx:cal:month_id +pdx:cal:year +pdx:cal:year_id +pdx:cal:season +pdx:cal:season_id +auth:user +auth:user_id +distr +distr_id +pdx:prod:sku:class +pdx:prod:class:department +pdx:loc:store:region +pdx:loc:region:district +pdx:loc:district:allloc +pdx:cal:week:month +pdx:cal:month:year +pdx:cal:week:season +pdx:cal:season:year +pdx:sku:store:week:sales +pdx:class:store:week:sales +pdx:sku:region:week:sales +pdx:sku:allloc:week:sales +pdx:sku:store:week:returns +pdx:sku:store:week:netSales +pdx:sku:store:week:user +pdx:sku:region:week:returns +distr:sku +distr:store +distr:week +pdx:cal:week:offset +pdx:sku:store:week:sku_id +pdx:class:store:week:class_id +pdx:sku:store:week:store_id +pdx:sku:region:week:region_id +pdx:sku:store:week:store +pdx:sku:region:week:region +pdx:sku:store:store +pdx:sku:region:region +pdx:sku:store:week:week_id +pdx:sku:store:month:month_id +pdx:sku:week:sku_id +pdx:class:week:class_id +distrID_req +distrID_resp +distrStoreID_req +distrStoreID_resp +pdx:sku:store:week:distr +pdx:sku:store:distr +my_sales_response_predicate +my_filtered_sales_response +my_filtered_sales_request +my_user_predicate +userResponsibility +superUser +vendorResponsibility +vendorAuth_req +vendorAuth_resp +superUser_req +superUser_resp +userAuth_req +userAuth_resp +fm:subscription +pdx:week:distr:week_id +pdx:sku:store:activeProduct +pdx:sku:store:basicItem +pdx:sku:store:nonBillings +pdx:sku:region:week:returns:_derivationCounts +my_sales_response_predicate:_derivationCounts +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_row +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_row_nr +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_column_Calendar_week_id +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_column_Location_store_id +pred_a27640d55b0e3a684cdd9bec2ae279029534b01106b7bee4e4e03a383f4322980c7879035322e6dcef7f035f1e7976806a74581d48b1dd2684d4b4a5175543fe +pred_af19f40a4daf9ecb879db46a77e7243c5e0325464e478f2fb77a5d02686d3518b7b6e6b0110b86caca6a77f4fb8ff12cfe8bc67e99e7a640b6f5f35e2ea3f527 +pred_e0e7f493d26c622b1830d21c5b7bf375d521810bffc13248ef3d884698a0fb0a0ab2bc4b121f194e31b8d5b7d3791cf0b1675b2f5577acdd1ddb8d0e6ef1c069 +pred_59138dc1c7d57a62a1fef6daafed65707e116fbe2cc3fb359a81aeb323d22a50c2e29ac5a21006979da5493d573b9d298b8bb6d60b831e44c61679ba63202006 +pred_0ce084ea29ef5d30959063f7ef6c05f54cf83b90302de5620e4f1aaeb5d3ce686731b0d4c969faa3a221d47381ca978e0051beee399f94dc94c1d7a056f02dd7 +pred_9c7c8da88ad0ea15b54237e006ebd38273a8cf024cb639ed7d6ef1b01fcd5392973dc2a25b4e0d3b0d656370e4b19a5d2f407d9961af2696fbb22a49ece95cee +pred_e399c30cb5e220d7d15963101503f269b25a6c17bd3c9d79e50026a26da94a6242506e6787758be6fb4b306d0ff062e4ce40d0150b5d3e129a70e73a38ac17e3 +pred_263ffffd7e5d4e8dd640d335be26c8f89bc9e309d042ad8f9840a8ef7a06b46023ecee535ff4fceadd1efa2c651b2d4b380f2dbf13b49d5cd1e890dfecbbbfb1 +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097 +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_tupleset +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_rsk +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_column_pred_a27640d55b0e3a684cdd9bec2ae279029534b01106b7bee4e4e03a383f4322980c7879035322e6dcef7f035f1e7976806a74581d48b1dd2684d4b4a5175543fe +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_column_pred_9c7c8da88ad0ea15b54237e006ebd38273a8cf024cb639ed7d6ef1b01fcd5392973dc2a25b4e0d3b0d656370e4b19a5d2f407d9961af2696fbb22a49ece95cee +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_column_pred_e0e7f493d26c622b1830d21c5b7bf375d521810bffc13248ef3d884698a0fb0a0ab2bc4b121f194e31b8d5b7d3791cf0b1675b2f5577acdd1ddb8d0e6ef1c069 +measureService:Report_cloudpivot_reportGenPred_35a45c161ecfe2f1e6978870c6bd37a6f98d20d931d938c099e0a4908f2097_row_nr:_$inverse +pred_59138dc1c7d57a62a1fef6daafed65707e116fbe2cc3fb359a81aeb323d22a50c2e29ac5a21006979da5493d573b9d298b8bb6d60b831e44c61679ba63202006:_derivationCounts +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_row +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_row_nr +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_column_Calendar_week_id +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_column_Location_store_id +pred_b88d3c5844a03a1a70a11cdf71b3b2525a81a422b94b3e8ae92871936af9dc244044c4a1f3a1be76750a5709e75cefcb4987fe4a6c0070381128e7f4016e39fa +pred_33379248fd05c744eb9cdb3d253c22773db2d5add5df8f5e021760375c3d4b9c085e5107549993fbff7e2740dc552aad89c000651612492e494472bacc036e45 +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_tupleset +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_rsk +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_column_pred_a27640d55b0e3a684cdd9bec2ae279029534b01106b7bee4e4e03a383f4322980c7879035322e6dcef7f035f1e7976806a74581d48b1dd2684d4b4a5175543fe +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_column_pred_9c7c8da88ad0ea15b54237e006ebd38273a8cf024cb639ed7d6ef1b01fcd5392973dc2a25b4e0d3b0d656370e4b19a5d2f407d9961af2696fbb22a49ece95cee +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_column_pred_b88d3c5844a03a1a70a11cdf71b3b2525a81a422b94b3e8ae92871936af9dc244044c4a1f3a1be76750a5709e75cefcb4987fe4a6c0070381128e7f4016e39fa +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_column_pred_e0e7f493d26c622b1830d21c5b7bf375d521810bffc13248ef3d884698a0fb0a0ab2bc4b121f194e31b8d5b7d3791cf0b1675b2f5577acdd1ddb8d0e6ef1c069 +measureService:Report_cloudpivot_reportGenPred_a7b5a186481a4581496afe1ec18174ba3391cbfe9d84ca9a0c1ecec680aa_row_nr:_$inverse +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_row +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_row_nr +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_column_Calendar_month_id +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_column_Location_store_id +pred_77ea5d0798c88e5e4d2f08f071b55d9f187261d0f42b2eef7c3a972688e757fab7d4878db04222d027266dbd985c1ce13fa1f10276d6b3d5503e0ff9e65ce0e5 +pred_6fc809bd7068ea05a01c601c83d52194778c835df5e533bb6bd7f9f585d2acb2c82af67afd3ecd404ac8fc3cd956684a59cf151174521372280b626ef5ff4635 +pred_614b7991028f078078b92ff6bc42fa6ea4ef52c174b6b66325df59e909da6f276e5a84d7b2fe304215d5219471513c4988baae7ae7f0c0b45c6029bc3687957d +pred_62a9d14b089be552764abdb8d0ad35fc135c256daf61b6de3c5430d2420cba9010fe5d9a80d3de17eff5c3865e1438efe94c369ca211bc4221e7b6e93914c1fc +pred_1e238b8c1133181ebb31e3d6f1f159641b65c39ce09063b02411a44924ab76ea4c4d5ac2ea6f1762d7600036de85a7602a15b0d7d00fea2450157867531170f9 +pred_81477c573226073cc0055f555bf047a9daf4524c73cd0a25c5cb5651e9c13288e0b79d3aef61f5515822cb5b57d5f0a214187ea523de01ec401381a075fb3d36 +pred_6f0508d436d154af425455c7af8d8e10c318e2053f60bb09e68369e24a83a0301f168081fcbd9d96ddb43bbedffa6bd5753377a6029301cf2097767917c20640 +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0 +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_tupleset +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_rsk +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_column_pred_77ea5d0798c88e5e4d2f08f071b55d9f187261d0f42b2eef7c3a972688e757fab7d4878db04222d027266dbd985c1ce13fa1f10276d6b3d5503e0ff9e65ce0e5 +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_column_pred_81477c573226073cc0055f555bf047a9daf4524c73cd0a25c5cb5651e9c13288e0b79d3aef61f5515822cb5b57d5f0a214187ea523de01ec401381a075fb3d36 +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_column_pred_614b7991028f078078b92ff6bc42fa6ea4ef52c174b6b66325df59e909da6f276e5a84d7b2fe304215d5219471513c4988baae7ae7f0c0b45c6029bc3687957d +measureService:Report_cloudpivot_reportGenPred_1c7032e4f6478d62dcf1ea70e4707dd575b4a6ade7d3d228c88707878ddd5c0_row_nr:_$inverse +pred_62a9d14b089be552764abdb8d0ad35fc135c256daf61b6de3c5430d2420cba9010fe5d9a80d3de17eff5c3865e1438efe94c369ca211bc4221e7b6e93914c1fc:_derivationCounts +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_row +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_row_nr +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_column_Calendar_month_id +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_column_Location_store_id +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_column_Product_sku_id +pred_0daddca72eebe8abb7370c5a7ff694085451cd78505810e155847305d1380254eb329cf5105ed8ab612dd0bfbdb0dde8ed8c02f94be164d44388a12730d8cb9a +pred_05e6dbb75f5a5763f246c838ef8ced1e7455ef028390c75778cfbdc2badf927d3ffd3679c332b6fff1c0b78d2e3c5a3beaca5dc963f4b7adb74a7904a43b21a2 +pred_20059ca79106a6b7e81bb256ce57828915519e454ea5834d221350ad7d8d1729a58bd74cd2fc0ecb9e39ef8fcbb37ec175f6dab2fa5bf4a5140db3f217bff374 +pred_01f26ebf800a3f2c49548e751b1eabf47ed0d34bed50346c77e5aec2627ace2940162bedd3b72f4bc7ed3c40e739d5de32db7fa4a01c9b05c37d5671e69971ea +pred_c1fdad41a73545a735245970f7e87ed12d50688dbe3b00545a357160bdc6fea6c6b169492002931f67f1bc80f90cb921e2021464feae5ac014fef57e9b352ea3 +pred_dd0a89cd8da02202e64a74b4f6f7aa821150864e10dda7163d8352a18f032653c45e2b4ec3e408b08d53d7b9176e62ffd999a160e3eb3b3a3c0a160799c64110 +pred_1f20e48e13774d80810342d35b292422ce164883739d5e6b36edfd9b43009de327f56b073c59f0423a1f5181ced1770e8ea35baa8b70bdffff01ced8cba853d7 +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1 +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_tupleset +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_rsk +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_column_pred_0daddca72eebe8abb7370c5a7ff694085451cd78505810e155847305d1380254eb329cf5105ed8ab612dd0bfbdb0dde8ed8c02f94be164d44388a12730d8cb9a +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_column_pred_dd0a89cd8da02202e64a74b4f6f7aa821150864e10dda7163d8352a18f032653c45e2b4ec3e408b08d53d7b9176e62ffd999a160e3eb3b3a3c0a160799c64110 +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_column_pred_20059ca79106a6b7e81bb256ce57828915519e454ea5834d221350ad7d8d1729a58bd74cd2fc0ecb9e39ef8fcbb37ec175f6dab2fa5bf4a5140db3f217bff374 +measureService:Report_cloudpivot_reportGenPred_e6191c9673dad9a6701451b9318697ad7155da5251fa579bc070a73f7514c2d1_row_nr:_$inverse +pred_01f26ebf800a3f2c49548e751b1eabf47ed0d34bed50346c77e5aec2627ace2940162bedd3b72f4bc7ed3c40e739d5de32db7fa4a01c9b05c37d5671e69971ea:_derivationCounts \ No newline at end of file diff --git a/plugins/node_modules/ace_tree/list_demo.html b/plugins/node_modules/ace_tree/list_demo.html new file mode 100644 index 00000000..5fb5d962 --- /dev/null +++ b/plugins/node_modules/ace_tree/list_demo.html @@ -0,0 +1,71 @@ + + + + + + Ace Tree + + + + +
    +
    + + + + + + + diff --git a/plugins/node_modules/ace_tree/package.json b/plugins/node_modules/ace_tree/package.json new file mode 100644 index 00000000..f25821e7 --- /dev/null +++ b/plugins/node_modules/ace_tree/package.json @@ -0,0 +1,6 @@ +{ + "name": "ace_tree", + "version": "0.1.0", + "devDependencies": { + } +} \ No newline at end of file diff --git a/node_modules/architect-build/LICENSE b/plugins/node_modules/architect-build/LICENSE similarity index 100% rename from node_modules/architect-build/LICENSE rename to plugins/node_modules/architect-build/LICENSE diff --git a/node_modules/architect-build/build.js b/plugins/node_modules/architect-build/build.js similarity index 100% rename from node_modules/architect-build/build.js rename to plugins/node_modules/architect-build/build.js diff --git a/node_modules/architect-build/build_support/mini_require.js b/plugins/node_modules/architect-build/build_support/mini_require.js similarity index 100% rename from node_modules/architect-build/build_support/mini_require.js rename to plugins/node_modules/architect-build/build_support/mini_require.js diff --git a/node_modules/architect-build/build_support/node_require.js b/plugins/node_modules/architect-build/build_support/node_require.js similarity index 100% rename from node_modules/architect-build/build_support/node_require.js rename to plugins/node_modules/architect-build/build_support/node_require.js diff --git a/node_modules/architect-build/compress.js b/plugins/node_modules/architect-build/compress.js similarity index 100% rename from node_modules/architect-build/compress.js rename to plugins/node_modules/architect-build/compress.js diff --git a/node_modules/architect-build/compress_folder.js b/plugins/node_modules/architect-build/compress_folder.js similarity index 100% rename from node_modules/architect-build/compress_folder.js rename to plugins/node_modules/architect-build/compress_folder.js diff --git a/node_modules/architect-build/copy.js b/plugins/node_modules/architect-build/copy.js similarity index 100% rename from node_modules/architect-build/copy.js rename to plugins/node_modules/architect-build/copy.js diff --git a/node_modules/architect-build/module-deps.js b/plugins/node_modules/architect-build/module-deps.js similarity index 100% rename from node_modules/architect-build/module-deps.js rename to plugins/node_modules/architect-build/module-deps.js diff --git a/node_modules/architect-build/npm_build.js b/plugins/node_modules/architect-build/npm_build.js similarity index 100% rename from node_modules/architect-build/npm_build.js rename to plugins/node_modules/architect-build/npm_build.js diff --git a/node_modules/architect-build/npm_freeze.js b/plugins/node_modules/architect-build/npm_freeze.js similarity index 100% rename from node_modules/architect-build/npm_freeze.js rename to plugins/node_modules/architect-build/npm_freeze.js diff --git a/node_modules/architect-build/package.json b/plugins/node_modules/architect-build/package.json similarity index 100% rename from node_modules/architect-build/package.json rename to plugins/node_modules/architect-build/package.json diff --git a/node_modules/vfs-child/LICENSE b/plugins/node_modules/vfs-child/LICENSE similarity index 100% rename from node_modules/vfs-child/LICENSE rename to plugins/node_modules/vfs-child/LICENSE diff --git a/node_modules/vfs-child/child.js b/plugins/node_modules/vfs-child/child.js similarity index 100% rename from node_modules/vfs-child/child.js rename to plugins/node_modules/vfs-child/child.js diff --git a/node_modules/vfs-child/package.json b/plugins/node_modules/vfs-child/package.json similarity index 100% rename from node_modules/vfs-child/package.json rename to plugins/node_modules/vfs-child/package.json diff --git a/node_modules/vfs-child/parent.js b/plugins/node_modules/vfs-child/parent.js similarity index 97% rename from node_modules/vfs-child/parent.js rename to plugins/node_modules/vfs-child/parent.js index d51fca64..a723b2b1 100644 --- a/node_modules/vfs-child/parent.js +++ b/plugins/node_modules/vfs-child/parent.js @@ -16,7 +16,7 @@ function Parent(fsOptions) { options.uid = fsOptions.uid; delete fsOptions.uid; } - options.stdio = options.customFds = [-1, -1, 2]; + options.stdio = [-1, -1, 2]; var args = [require.resolve('./child.js'), JSON.stringify(fsOptions)]; var nodeBin = fsOptions.nodeBin || [process.execPath]; var child; diff --git a/node_modules/vfs-http-adapter/LICENSE b/plugins/node_modules/vfs-http-adapter/LICENSE similarity index 100% rename from node_modules/vfs-http-adapter/LICENSE rename to plugins/node_modules/vfs-http-adapter/LICENSE diff --git a/node_modules/vfs-http-adapter/multipart.js b/plugins/node_modules/vfs-http-adapter/multipart.js similarity index 100% rename from node_modules/vfs-http-adapter/multipart.js rename to plugins/node_modules/vfs-http-adapter/multipart.js diff --git a/node_modules/vfs-http-adapter/package.json b/plugins/node_modules/vfs-http-adapter/package.json similarity index 100% rename from node_modules/vfs-http-adapter/package.json rename to plugins/node_modules/vfs-http-adapter/package.json diff --git a/node_modules/vfs-http-adapter/restful.js b/plugins/node_modules/vfs-http-adapter/restful.js similarity index 100% rename from node_modules/vfs-http-adapter/restful.js rename to plugins/node_modules/vfs-http-adapter/restful.js diff --git a/node_modules/vfs-http-adapter/test-multipart.js b/plugins/node_modules/vfs-http-adapter/test-multipart.js similarity index 100% rename from node_modules/vfs-http-adapter/test-multipart.js rename to plugins/node_modules/vfs-http-adapter/test-multipart.js diff --git a/plugins/node_modules/vfs-lint/lint.js b/plugins/node_modules/vfs-lint/lint.js new file mode 100644 index 00000000..97aa3192 --- /dev/null +++ b/plugins/node_modules/vfs-lint/lint.js @@ -0,0 +1,73 @@ +var data = { + // File management + resolve: [ "path", "string", "options", "object" ], + stat: [ "path", "string", "options", "object" ], + readfile: [ "path", "string", "options", "object" ], + readdir: [ "path", "string", "options", "object" ], + mkfile: [ "path", "string", "options", "object" ], + mkdir: [ "path", "string", "options", "object" ], + rmfile: [ "path", "string", "options", "object" ], + rmdir: [ "path", "string", "options", "object" ], + rename: [ "path", "string", "options", "object" ], + copy: [ "path", "string", "options", "object" ], + symlink: [ "path", "string", "options", "object" ], + + // Wrapper around fs.watch or fs.watchFile + watch: [ "path", "string", "options", "object" ], + + // Network connection + connect: [ "port", "number", "options", "object" ], + + // Process Management + spawn: [ "executablePath", "string", "options", "object" ], + execFile: [ "executablePath", "string", "options", "object" ], + + // Basic async event emitter style API + on: [ "name", "string", "handler", "function" ], + off: [ "name", "string", "handler", "function" ], + emit: [ "name", "string", "value", "*" ], + + // Extending the API + extend: [ "name", "string", "options", "object" ], + use: [ "name", "string", "options", "object" ] +}; + +module.exports = function lint(vfs) { + Object.keys(data).forEach(function (key) { + var vars = data[key]; + var fn = vfs[key]; + + if (!fn) throw new TypeError("Missing " + key + " function"); + if (typeof fn !== "function") throw new TypeError(key + " is not a function"); + + vfs[key] = function (path, options, callback) { + + if (typeof arguments[2] !== "function") { + throw new TypeError(key + ": Please pass in a function for the callback"); + } + + var errors = []; + for (var i = 0; i < 2; i++) { + var name = vars[i * 2]; + var value = arguments[i]; + var expectedType = vars[i * 2 + 1]; + if (expectedType === "*") continue; + var actualType = value === null ? "null" : Array.isArray(value) ? "array" : typeof value; + if (actualType !== expectedType) { + errors.push("Expected " + name + " to be " + expectedType + " but was " + actualType); + } + } + + if (errors.length) { + return callback (new TypeError(key + ": " + errors.join(", "))); + } + try { + return fn.apply(this, arguments); + } + catch (err) { + return callback(err); + } + }; + }); + return vfs; +}; diff --git a/plugins/node_modules/vfs-lint/package.json b/plugins/node_modules/vfs-lint/package.json new file mode 100644 index 00000000..9e5ae4aa --- /dev/null +++ b/plugins/node_modules/vfs-lint/package.json @@ -0,0 +1,15 @@ +{ + "name": "vfs-lint", + "version": "0.0.1", + "description": "A simple API lint wrapper for vfs instances.", + "main": "lint.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git://github.com/c9/vfs-lint.git" + }, + "author": "Tim Caswell", + "license": "MIT" +} diff --git a/node_modules/vfs-local/LICENSE b/plugins/node_modules/vfs-local/LICENSE similarity index 100% rename from node_modules/vfs-local/LICENSE rename to plugins/node_modules/vfs-local/LICENSE diff --git a/node_modules/vfs-local/localfs.js b/plugins/node_modules/vfs-local/localfs.js similarity index 100% rename from node_modules/vfs-local/localfs.js rename to plugins/node_modules/vfs-local/localfs.js diff --git a/node_modules/vfs-local/package.json b/plugins/node_modules/vfs-local/package.json similarity index 100% rename from node_modules/vfs-local/package.json rename to plugins/node_modules/vfs-local/package.json diff --git a/node_modules/vfs-socket/LICENSE b/plugins/node_modules/vfs-nodefs-adapter/LICENSE similarity index 100% rename from node_modules/vfs-socket/LICENSE rename to plugins/node_modules/vfs-nodefs-adapter/LICENSE diff --git a/plugins/node_modules/vfs-nodefs-adapter/nodefs.js b/plugins/node_modules/vfs-nodefs-adapter/nodefs.js new file mode 100644 index 00000000..be309c0f --- /dev/null +++ b/plugins/node_modules/vfs-nodefs-adapter/nodefs.js @@ -0,0 +1,233 @@ +( // Module boilerplate to support browser globals, node.js and AMD. + (typeof module !== "undefined" && function (m) { module.exports = m(require('stream'), require('events'), require('smith')); }) || + (typeof define === "function" && function (m) { define(["smith", "stream"], m); }) || + (function (m) { window.consumer = m(window.stream, window.events, window.smith); }) +)(function (stream, events, smith) { +"use strict"; + +var PATH = { + join : function(){ + return Array.prototype.join.apply(arguments, ["/"]).replace(/\/\/+/, "/"); + } +}; + +var Stream = stream.Stream; + +var exports = function(vfs, base, baseProc) { + + var resolvePath = function(path, basePath) { + if (!basePath) + basePath = base; + + if (!basePath) return path; + + if (path.substring(0, basePath.length) === basePath) { + return path; + } + return PATH.join(basePath, path); + }; + + function readFile(path, encoding, callback) { + if (!callback) { + callback = encoding; + encoding = null; + } + + var options = {}; + if (encoding) + options.encoding = encoding; + + vfs.readfile(resolvePath(path), options, function(err, meta) { + if (err) + return callback(err); + + var data = ""; + meta.stream.on("data", function(d) { + data += d; + }); + + var done; + meta.stream.on("error", function(e) { + if (done) return; + done = true; + callback(e); + }); + + meta.stream.on("end", function() { + if (done) return; + done = true; + callback(null, data); + }); + }); + } + + function writeFile(path, data, encoding, callback) { + if (!callback) { + callback = encoding; + encoding = null; + } + + var options = {}; + if (encoding) + options.encoding = encoding; + + var stream = options.stream = new Stream(); + stream.readable = true; + + vfs.mkfile(resolvePath(path), options, function(err, meta) { + if (err) + return callback(err); + callback(null); + }); + + stream.emit("data", data); + stream.emit("end"); + } + + function readdir(path, callback) { + vfs.readdir(resolvePath(path), {encoding: null}, function(err, meta) { + if (err) + return callback(err); + + var stream = meta.stream; + var files = []; + + stream.on("data", function(stat) { + files.push(stat); + }); + + var called; + stream.on("error", function(err) { + if (called) return; + called = true; + callback(err); + }); + + stream.on("end", function() { + if (called) return; + called = true; + callback(null, files); + }); + }); + } + + function exists(path, callback) { + vfs.stat(resolvePath(path), {}, function(err, stat) { + return callback(stat && !stat.err ? true : false, stat); + }); + } + + function stat(path, callback) { + vfs.stat(resolvePath(path), {}, callback); + } + + function rename(from, to, options, callback) { + vfs.rename(resolvePath(to), { + from : resolvePath(from), + overwrite : (options || 0).overwrite + }, callback); + } + + function mkdirHandler(callback){ + return function(err){ + if (err && err.message.indexOf("exists") > -1) + callback({"code": "EEXIST", "message": err.message}); + else + callback(); + }; + } + + function mkdirP(path, mode, callback) { + if (!callback) { + callback = mode; + mode = null; + } + vfs.execFile("mkdir", {args: ["-p", resolvePath(path, baseProc)]}, + mkdirHandler(callback)); + } + + function mkdir(path, callback) { + vfs.execFile("mkdir", {args: [resolvePath(path, baseProc)]}, + mkdirHandler(callback)); + } + + function rmfile(path, callback) { + vfs.rmfile(resolvePath(path), {}, callback || function(){}); // shouldn't vfs handle callback == null? + } + + function rmdir(path, options, callback) { + if (typeof options == "function") { + callback = options; + options = {}; + } + vfs.rmdir(resolvePath(path), options, callback || function(){}); + } + + function copy(path, to, options, callback){ + if (typeof options == "function") { + callback = options; + options = {}; + } + + vfs.copy(resolvePath(path), { + to : resolvePath(to), + overwrite : (options.overwrite !== undefined + ? options.overwrite + : true), + recursive : options.recursive + }, callback); + } + + function symlink(path, target, callback){ + vfs.symlink(resolvePath(path), {target: resolvePath(target)}, callback); + } + + function watch(path, callback) { + vfs.watch(resolvePath(path), {}, function (err, meta) { + if (err) return callback(err); + + var watcher = meta.watcher; + watcher.on("change", function (event, filename) { + callback(null, event, filename); + }); + watcher.on("error", function(err){ + callback(err || true); + }); + + if (callback[path]) callback[path](); + callback[path] = function(){ + watcher.removeAllListeners(); + watcher.close(); + }; + + callback(null, "init", path); + }); + } + + function unwatch(path, callback) { + if (callback[path]) callback[path](); + } + + return { + readFile: readFile, + writeFile: writeFile, + readdir: readdir, + exists: exists, + stat: stat, + rename: rename, + mkdirP: mkdirP, + mkdir: mkdir, + unlink: rmfile, + rmfile: rmfile, + rmdir: rmdir, + copy: copy, + symlink: symlink, + watch: watch, + unwatch: unwatch, + vfs: vfs + }; +}; + +return exports; + +}); diff --git a/plugins/node_modules/vfs-nodefs-adapter/package.json b/plugins/node_modules/vfs-nodefs-adapter/package.json new file mode 100644 index 00000000..c7fde884 --- /dev/null +++ b/plugins/node_modules/vfs-nodefs-adapter/package.json @@ -0,0 +1,21 @@ +{ + "author": "Ajax.org B.V. ", + "contributors": [ + { "name": "Faian Jakobs", "email": "fabian@c9.io>" } + ], + "name": "vfs-nodefs-adapter", + "description": "Wraps a vfs instance in a node fs style interface", + "version": "0.3.0", + "repository": { + "type": "git", + "url": "git://github.com/c9/vfs-nodefs-adapter.git" + }, + "main": "nodefs.js", + "dependencies": {}, + "licenses" : [{ + "type" : "MIT" + }], + "engines": { + "node": "*" + } +} diff --git a/plugins/node_modules/vfs-socket/LICENSE b/plugins/node_modules/vfs-socket/LICENSE new file mode 100644 index 00000000..9e077f64 --- /dev/null +++ b/plugins/node_modules/vfs-socket/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2012 Ajax.org B.V + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/vfs-socket/component.json b/plugins/node_modules/vfs-socket/component.json similarity index 100% rename from node_modules/vfs-socket/component.json rename to plugins/node_modules/vfs-socket/component.json diff --git a/node_modules/vfs-socket/consumer.js b/plugins/node_modules/vfs-socket/consumer.js similarity index 100% rename from node_modules/vfs-socket/consumer.js rename to plugins/node_modules/vfs-socket/consumer.js diff --git a/node_modules/vfs-socket/package.json b/plugins/node_modules/vfs-socket/package.json similarity index 100% rename from node_modules/vfs-socket/package.json rename to plugins/node_modules/vfs-socket/package.json diff --git a/node_modules/vfs-socket/worker.js b/plugins/node_modules/vfs-socket/worker.js similarity index 100% rename from node_modules/vfs-socket/worker.js rename to plugins/node_modules/vfs-socket/worker.js diff --git a/version b/version index 3f76d931..9f27f869 100644 --- a/version +++ b/version @@ -1 +1 @@ -1518235307 +1519940533